* "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s
@ 2014-04-10 10:43 Koen Kooi
[not found] ` <AF4406ED-6B0B-4E15-A329-04162E0ADC8A-QLwJDigV5abLmq1fohREcCpxlwaOVQ5f@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Koen Kooi @ 2014-04-10 10:43 UTC (permalink / raw)
To: Matt Fleming, H. Peter Anvin, Thomas Gleixner, Ingo Molnar,
x86-DgEjT+Ai2ygdnm+yROfE0A, Kees Cook, Zhang Yanfei,
linux-efi-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List
Hi,
After updating from 3.14-rc7 to a recent git the kernel fails to boot on my thinkpad t440s and displays:
Failed to get file info size
Failed to alloc highmem for files
After a morning of running git bisect and rebooting, the bad commit seems to be:
54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table
It doesn't revert cleanly, so I can't test current git without it to see if that fixes it or not. I'm using gummiboot as bootloader:
Boot Loader Binaries:
ESP: /dev/disk/by-partuuid/47cab2d9-0641-476c-bc74-166b122fca15
File: └─/EFI/gummiboot/gummibootx64.efi (gummiboot 44)
File: └─/EFI/Boot/BOOTX64.EFI (gummiboot 44)
Boot Loader Entries in EFI Variables:
Title: Linux Boot Manager
ID: 0x0016
Status: active, boot-order
Partition: /dev/disk/by-partuuid/b7b4fad3-3d19-40fd-b341-0ec7f2152b81
File: └─/EFI/gummiboot/gummibootx64.efi
Title: Linux Boot Manager
ID: 0x0015
Status: active, boot-order
Partition: /dev/disk/by-partuuid/47cab2d9-0641-476c-bc74-166b122fca15
File: └─/EFI/gummiboot/gummibootx64.efi
Title: Fedora
ID: 0x0014
Status: active, boot-order
Partition: /dev/disk/by-partuuid/47cab2d9-0641-476c-bc74-166b122fca15
File: └─/EFI/fedora/shim.efi
Title: Windows Boot Manager
ID: 0x0013
Status: active, boot-order
Partition: /dev/disk/by-partuuid/56dff960-86b5-4846-89d3-fed0620f471a
File: └─/EFI/Microsoft/Boot/bootmgfw.efi
thanks,
Koen
Bisect log:
git bisect start
# good: [dcb99fd9b08cfe1afe426af4d8d3cbc429190f15] Linux 3.14-rc7
git bisect good dcb99fd9b08cfe1afe426af4d8d3cbc429190f15
# bad: [39de65aa2c3eee901db020a4f1396998e09602a3] Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
git bisect bad 39de65aa2c3eee901db020a4f1396998e09602a3
# bad: [ec0159503ae74aeb834e78366bdf4b9663ca1129] hwmon: (k10temp) Add support for AMD F16 M30h processor
git bisect bad ec0159503ae74aeb834e78366bdf4b9663ca1129
# bad: [675c354a95d5375153b8bb80a0448cab916c7991] Merge tag 'char-misc-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
git bisect bad 675c354a95d5375153b8bb80a0448cab916c7991
# bad: [3786075b5ebc8c4eaefd9e3ebf72883934fb64b3] Merge tag 'regulator-v3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
git bisect bad 3786075b5ebc8c4eaefd9e3ebf72883934fb64b3
# bad: [1ce235faa8fefa4eb7199cad890944c1d2ba1b3e] Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
git bisect bad 1ce235faa8fefa4eb7199cad890944c1d2ba1b3e
# good: [8c292f11744297dfb3a69f4a0bccbe4a6417b50d] Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good 8c292f11744297dfb3a69f4a0bccbe4a6417b50d
# bad: [e06df6a7eae1ab1ef4deb076aeeaed90e948e5c0] Merge branch 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect bad e06df6a7eae1ab1ef4deb076aeeaed90e948e5c0
# good: [971eae7c99212dd67b425a603f1fe3b763359907] Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good 971eae7c99212dd67b425a603f1fe3b763359907
# bad: [204b0a1a4b92612c957a042df1a3be0e9cc79391] x86, efi: Abstract x86 efi_early calls
git bisect bad 204b0a1a4b92612c957a042df1a3be0e9cc79391
# bad: [3db4cafdfd05717dc939780134e53023a3c1f15f] x86/boot: Fix non-EFI build
git bisect bad 3db4cafdfd05717dc939780134e53023a3c1f15f
# bad: [0154416a71c2a84c3746c8dd8ed25287e36934d3] x86/efi: Add early thunk code to go from 64-bit to 32-bit
git bisect bad 0154416a71c2a84c3746c8dd8ed25287e36934d3
# good: [426e34cc4f6094cefe4f3175764cdf583128e7cd] x86/mm/pageattr: Always dump the right page table in an oops
git bisect good 426e34cc4f6094cefe4f3175764cdf583128e7cd
# good: [677703cef0a148ba07d37ced649ad25b1cda2f78] efi: Add separate 32-bit/64-bit definitions
git bisect good 677703cef0a148ba07d37ced649ad25b1cda2f78
Build command line:
cp defconfig-3.13 .config ; yes '' | make oldconfig ; make bzImage -j4 && sudo cp arch/x86_64/boot/bzImage /boot/vmlinuz-3.14 && sudo reboot--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread[parent not found: <AF4406ED-6B0B-4E15-A329-04162E0ADC8A-QLwJDigV5abLmq1fohREcCpxlwaOVQ5f@public.gmane.org>]
* Re: "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s [not found] ` <AF4406ED-6B0B-4E15-A329-04162E0ADC8A-QLwJDigV5abLmq1fohREcCpxlwaOVQ5f@public.gmane.org> @ 2014-04-10 12:11 ` Matt Fleming [not found] ` <20140410121146.GA17021-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Matt Fleming @ 2014-04-10 12:11 UTC (permalink / raw) To: Koen Kooi Cc: Matt Fleming, H. Peter Anvin, Thomas Gleixner, Ingo Molnar, x86-DgEjT+Ai2ygdnm+yROfE0A, Kees Cook, Zhang Yanfei, linux-efi-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Thu, 10 Apr, at 12:43:43PM, Koen Kooi wrote: > Hi, > > After updating from 3.14-rc7 to a recent git the kernel fails to boot on my thinkpad t440s and displays: > > Failed to get file info size > Failed to alloc highmem for files > > After a morning of running git bisect and rebooting, the bad commit seems to be: > > 54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table Thanks for the report. Can you try this patch against Linus' tree? diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index 1e6146137f8e..280165524ee4 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c @@ -112,7 +112,7 @@ __file_size64(void *__fh, efi_char16_t *filename_16, efi_file_info_t *info; efi_status_t status; efi_guid_t info_guid = EFI_FILE_INFO_ID; - u32 info_sz; + u64 info_sz; status = efi_early->call((unsigned long)fh->open, fh, &h, filename_16, EFI_FILE_MODE_READ, (u64)0); -- Matt Fleming, Intel Open Source Technology Center ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <20140410121146.GA17021-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>]
* Re: "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s [not found] ` <20140410121146.GA17021-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> @ 2014-04-10 12:24 ` Koen Kooi 2014-04-11 7:20 ` Ingo Molnar 1 sibling, 0 replies; 5+ messages in thread From: Koen Kooi @ 2014-04-10 12:24 UTC (permalink / raw) To: Matt Fleming Cc: Matt Fleming, H. Peter Anvin, Thomas Gleixner, Ingo Molnar, x86-DgEjT+Ai2ygdnm+yROfE0A, Kees Cook, Zhang Yanfei, linux-efi-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA Op 10 apr. 2014, om 14:11 heeft Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> het volgende geschreven: > On Thu, 10 Apr, at 12:43:43PM, Koen Kooi wrote: >> Hi, >> >> After updating from 3.14-rc7 to a recent git the kernel fails to boot on my thinkpad t440s and displays: >> >> Failed to get file info size >> Failed to alloc highmem for files >> >> After a morning of running git bisect and rebooting, the bad commit seems to be: >> >> 54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table > > Thanks for the report. Can you try this patch against Linus' tree? That indeed fixes it, so: Tested-by: Koen Kooi <koen-QLwJDigV5abLmq1fohREcCpxlwaOVQ5f@public.gmane.org> regards, Koen > > > diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c > index 1e6146137f8e..280165524ee4 100644 > --- a/arch/x86/boot/compressed/eboot.c > +++ b/arch/x86/boot/compressed/eboot.c > @@ -112,7 +112,7 @@ __file_size64(void *__fh, efi_char16_t *filename_16, > efi_file_info_t *info; > efi_status_t status; > efi_guid_t info_guid = EFI_FILE_INFO_ID; > - u32 info_sz; > + u64 info_sz; > > status = efi_early->call((unsigned long)fh->open, fh, &h, filename_16, > EFI_FILE_MODE_READ, (u64)0); > -- > Matt Fleming, Intel Open Source Technology Center > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s [not found] ` <20140410121146.GA17021-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> 2014-04-10 12:24 ` Koen Kooi @ 2014-04-11 7:20 ` Ingo Molnar [not found] ` <20140411072044.GA15418-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 1 sibling, 1 reply; 5+ messages in thread From: Ingo Molnar @ 2014-04-11 7:20 UTC (permalink / raw) To: Matt Fleming Cc: Koen Kooi, Matt Fleming, H. Peter Anvin, Thomas Gleixner, Ingo Molnar, x86-DgEjT+Ai2ygdnm+yROfE0A, Kees Cook, Zhang Yanfei, linux-efi-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA * Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> wrote: > On Thu, 10 Apr, at 12:43:43PM, Koen Kooi wrote: > > Hi, > > > > After updating from 3.14-rc7 to a recent git the kernel fails to boot on my thinkpad t440s and displays: > > > > Failed to get file info size > > Failed to alloc highmem for files > > > > After a morning of running git bisect and rebooting, the bad commit seems to be: > > > > 54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table > > Thanks for the report. Can you try this patch against Linus' tree? > > > diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c > index 1e6146137f8e..280165524ee4 100644 > --- a/arch/x86/boot/compressed/eboot.c > +++ b/arch/x86/boot/compressed/eboot.c > @@ -112,7 +112,7 @@ __file_size64(void *__fh, efi_char16_t *filename_16, > efi_file_info_t *info; > efi_status_t status; > efi_guid_t info_guid = EFI_FILE_INFO_ID; > - u32 info_sz; > + u64 info_sz; Might be prudent to do the same in __file_size32(), instead of truncating silently, especially is that function too has a u64 output AFAICS. Also, while reviewing the file I noticed that there's "u32 fb_base", which is recovered like: status = __gop_query64(gop64, &info, &size, &fb_base); but ->frame_buffer_base is u64. Is it always guaranteed u32? Thanks, Ingo ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20140411072044.GA15418-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s [not found] ` <20140411072044.GA15418-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2014-04-11 7:44 ` Matt Fleming 0 siblings, 0 replies; 5+ messages in thread From: Matt Fleming @ 2014-04-11 7:44 UTC (permalink / raw) To: Ingo Molnar Cc: Koen Kooi, Matt Fleming, H. Peter Anvin, Thomas Gleixner, Ingo Molnar, x86-DgEjT+Ai2ygdnm+yROfE0A, Kees Cook, Zhang Yanfei, linux-efi-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Fri, 11 Apr, at 09:20:44AM, Ingo Molnar wrote: > > Might be prudent to do the same in __file_size32(), instead of > truncating silently, especially is that function too has a u64 output > AFAICS. This change isn't required for __file_size32() because we only use that function if the firmware is 32-bit. The signature of EFI_FILE_PROTOCOL.GetInfo() looks like this, EFI_STATUS (*EFI_FILE_GET_INFO) ( EFI_FILE_PROTOCOL *This, EFI_GUID *InformationType, UINTN *BufferSize, void *Buffer ); UINTN translates to unsigned long, so for 32-bit firmware is u32. The firmware will never write 64-bits to &info_sz in __file_size32(). > Also, while reviewing the file I noticed that there's "u32 fb_base", > which is recovered like: > > status = __gop_query64(gop64, &info, &size, &fb_base); > > but ->frame_buffer_base is u64. Is it always guaranteed u32? Good catch. ->frame_buffer_base isn't always u32, but we only have u32 bits in which to store it (struct screen_info.lfb_base), so we implicitly truncate it, static efi_status_t __gop_query64(struct efi_graphics_output_protocol_64 *gop64, [...] *fb_base = mode->frame_buffer_base; But you raise a good point - it would probably make more sense to complain loudly if we get an address above 0xffffffff. -- Matt Fleming, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-04-11 7:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-10 10:43 "54b52d87268034859191d671505bb1cfce6bd74d - x86/efi: Build our own EFI services pointer table" breaks boot on thinkpad t440s Koen Kooi
[not found] ` <AF4406ED-6B0B-4E15-A329-04162E0ADC8A-QLwJDigV5abLmq1fohREcCpxlwaOVQ5f@public.gmane.org>
2014-04-10 12:11 ` Matt Fleming
[not found] ` <20140410121146.GA17021-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-04-10 12:24 ` Koen Kooi
2014-04-11 7:20 ` Ingo Molnar
[not found] ` <20140411072044.GA15418-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-04-11 7:44 ` Matt Fleming
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).