[PATCH] x86: do not enable efi boot for sgi uv machine

Borislav Petkov bp at suse.de
Fri May 23 08:54:11 PDT 2014


On Fri, May 23, 2014 at 09:47:08AM -0400, Dave Young wrote:
> Hi,
> 
> Vivek, replying with webmail, sorry for the formatting issue.
> 
> Another way is export the mapping scheme in sysfs. So if kernel boot
> with efi=old_map we can detect it as well. OTOH in future there's probably
> other quirk system.
> 
> So kexec-tools can switch to use old way if kernel use ioremap.
> 
> Adding Matt and Boris to cc, to see if they have idea.
> 
> Thanks
> Dave
> 
> ----- Original Message -----
> From: "Vivek Goyal" <vgoyal at redhat.com>
> To: "Dave Young" <dyoung at redhat.com>
> Cc: horms at verge.net.au, kexec at lists.infradead.org
> Sent: Friday, May 23, 2014 9:28:34 PM
> Subject: Re: [PATCH] x86: do not enable efi boot for sgi uv machine
> 
> On Fri, May 23, 2014 at 06:14:55PM +0800, Dave Young wrote:
> > 
> > kexec/kdump uefi support depends on the 1:1 mapping scheme
> > in 3.14 kernel but SGI reported that 1:1 mapping does not work on
> > their UV system. thus there's below commit to switch back to
> > old ioremap way for sgi uv machines.
> > 
> > So for kexec-tools before we got the 1:1 mapping support on those
> > machines we should also use old way that means boot 2nd kernel
> > without uefi.

Well, we did find the bug in a combined debug session and SGI will be
issuing a fix soon. I don't know whether any quirk will be needed for
systems which don't have the fix - I guess that's something for SGI
people to decide. CCed and leaving in the rest for reference.

@Alex, Russ: this is about using kexec on UEFI boxes.

> > 
> > Tested on a uv1 machine.
> > 
> > Here is the kernel commit to quirk out SGI UV:
> > commit a5d90c923bcfb9632d998ed06e9569216ad695f3
> > Author: Borislav Petkov <bp at suse.de>
> > Date:   Tue Mar 4 17:02:17 2014 +0100
> > 
> >     x86/efi: Quirk out SGI UV
> >     
> >     Alex reported hitting the following BUG after the EFI 1:1 virtual
> >     mapping work was merged,
> >     
> >      kernel BUG at arch/x86/mm/init_64.c:351!
> >      invalid opcode: 0000 [#1] SMP
> >      Call Trace:
> >       [<ffffffff818aa71d>] init_extra_mapping_uc+0x13/0x15
> >       [<ffffffff818a5e20>] uv_system_init+0x22b/0x124b
> >       [<ffffffff8108b886>] ? clockevents_register_device+0x138/0x13d
> >       [<ffffffff81028dbb>] ? setup_APIC_timer+0xc5/0xc7
> >       [<ffffffff8108b620>] ? clockevent_delta2ns+0xb/0xd
> >       [<ffffffff818a3a92>] ? setup_boot_APIC_clock+0x4a8/0x4b7
> >       [<ffffffff8153d955>] ? printk+0x72/0x74
> >       [<ffffffff818a1757>] native_smp_prepare_cpus+0x389/0x3d6
> >       [<ffffffff818957bc>] kernel_init_freeable+0xb7/0x1fb
> >       [<ffffffff81535530>] ? rest_init+0x74/0x74
> >       [<ffffffff81535539>] kernel_init+0x9/0xff
> >       [<ffffffff81541dfc>] ret_from_fork+0x7c/0xb0
> >       [<ffffffff81535530>] ? rest_init+0x74/0x74
> >     
> >     Getting this thing to work with the new mapping scheme would need more
> >     work, so automatically switch to the old memmap layout for SGI UV.
> > 
> > 
> > Signed-off-by: Dave Young <dyoung at redhat.com>
> > ---
> >  kexec/arch/i386/x86-linux-setup.c |   15 ++++++++++++++-
> >  1 file changed, 14 insertions(+), 1 deletion(-)
> > 
> > --- kexec-tools.orig/kexec/arch/i386/x86-linux-setup.c
> > +++ kexec-tools/kexec/arch/i386/x86-linux-setup.c
> > @@ -817,12 +817,25 @@ out:
> >  	return;
> >  }
> >  
> > +static int is_sgi_uv_machine(void)
> > +{
> > +	DIR *sgi_dir;
> > +
> > +	sgi_dir = opendir("/sys/firmware/sgi_uv");
> > +	if (sgi_dir) {
> > +		closedir(sgi_dir);
> > +		return 1;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >  void setup_linux_system_parameters(struct kexec_info *info,
> >  				   struct x86_linux_param_header *real_mode)
> >  {
> >  	/* get subarch from running kernel */
> >  	setup_subarch(real_mode);
> > -	if (bzImage_support_efi_boot)
> > +	if (bzImage_support_efi_boot && !is_sgi_uv_machine())
> >  		setup_efi_info(info, real_mode);
> 
> Hi Dave,
> 
> I think instead of always falling back to old "noefi" method for SGI UV
> machines, we should probably provide a config option to override default
> behavior. Something like "--nouefi". And let user/distributions decide
> in what cases to use that parameter.
> 
> Reason being, that at some point of time this limitation will be fixed.
> And at that point of time if we modify kexec-tools, then it will stop
> working with older kernels. And then same issue will arise that
> kexec-tools is not working with older kernels.
> 
> If we just provide a way to override default, then distributions in their
> scripts should know what kernels work what way and automatically use or
> not use option accordingly.
> 
> Thanks
> Vivek
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--



More information about the kexec mailing list