[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