On 01/29/18 at 10:04am, Simon Horman wrote: > On Mon, Jan 29, 2018 at 03:59:54PM +0800, Dave Young wrote: > > On 01/29/18 at 08:21am, Simon Horman wrote: > > > On Sun, Jan 28, 2018 at 01:52:31PM +0800, Dave Young wrote: > > > > With modern drm/kms graphic driver kexec-tools does not setup screen_info > > > > correctly so one will only see screen output after those drm drivers > > > > reinitializing after rebooting. Copying the old screen info from original > > > > boot_params will help during my test, although it could not work for some > > > > potential cases, but it is not worse than before. This has been used in > > > > the kernel kexec_file_load. > > > > > > > > Signed-off-by: Dave Young <dyoung@xxxxxxxxxx> > > > > > > Thanks, applied. > > > > Hi Simon, > > > > Thanks for taking it. I tested the original version on my laptop with > > efi boot. either of below two changes work for me: > > > > a) use the setup_linux_vesafb() detected values and change the orig_video_isVGA > > to 0x70 (copy from boot params) > > > > b) copy all screen_info from boot params. > > > > I actually was hesitating which one is better and finally I sent the b). > > But maybe a) + b) will be better, since my case is a framebuffer, I'm > > not sure non-framebuffer case though it will be not worse with the > > patch. Could you consider an appending patch below? > > Sure, sorry for being a bit hasty. Instead, I should say that.. > > I've appended the change below. Simon, great, thank you! > > > > --- > > In current kexec-tools we have already vesafb detecting code, > > but in case unsupported vesa fb types it just return and do nothing > > During my test copying the old boot time screen info works for me with > > efi booted machine. And the vesa fb detected values also work even if the > > fb fix.id is "inteldrmfb", thus change the code to use those values > > detected with fb ioctl first for framebuffer systems. > > > > Signed-off-by: Dave Young <dyoung@xxxxxxxxxx> > > --- > > kexec/arch/i386/x86-linux-setup.c | 10 ++++++++-- > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > --- kexec-tools.orig/kexec/arch/i386/x86-linux-setup.c > > +++ kexec-tools/kexec/arch/i386/x86-linux-setup.c > > @@ -123,6 +123,7 @@ void setup_linux_bootloader_parameters_h > > cmdline_ptr[cmdline_len - 1] = '\0'; > > } > > > > +static int get_bootparam(void *buf, off_t offset, size_t size); > > static int setup_linux_vesafb(struct x86_linux_param_header *real_mode) > > { > > struct fb_fix_screeninfo fix; > > @@ -144,8 +145,13 @@ static int setup_linux_vesafb(struct x86 > > /* VIDEO_TYPE_EFI */ > > real_mode->orig_video_isVGA = 0x70; > > } else { > > - /* cannot handle and other types */ > > - goto out; > > + int err; > > + off_t offset = offsetof(typeof(*real_mode), orig_video_isVGA); > > + > > + /* blindly try old boot time video type */ > > + err = get_bootparam(&real_mode->orig_video_isVGA, offset, 1); > > + if (err) > > + goto out; > > } > > close(fd); > > > > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec