summaryrefslogtreecommitdiff
path: root/kexec/arch/i386/x86-linux-setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'kexec/arch/i386/x86-linux-setup.c')
-rw-r--r--kexec/arch/i386/x86-linux-setup.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c
index 6cda12c..1bd408b 100644
--- a/kexec/arch/i386/x86-linux-setup.c
+++ b/kexec/arch/i386/x86-linux-setup.c
@@ -158,10 +158,15 @@ static int setup_linux_vesafb(struct x86_linux_param_header *real_mode)
real_mode->lfb_width = var.xres;
real_mode->lfb_height = var.yres;
real_mode->lfb_depth = var.bits_per_pixel;
- real_mode->lfb_base = fix.smem_start;
+ real_mode->lfb_base = fix.smem_start & 0xffffffffUL;
real_mode->lfb_linelength = fix.line_length;
real_mode->vesapm_seg = 0;
+ if (fix.smem_start > 0xffffffffUL) {
+ real_mode->ext_lfb_base = fix.smem_start >> 32;
+ real_mode->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
+ }
+
/* FIXME: better get size from the file returned by proc_iomem() */
real_mode->lfb_size = (fix.smem_len + 65535) / 65536;
real_mode->pages = (fix.smem_len + 4095) / 4096;