|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] linux-4.7.* under xen-4.6.* gives "unhandled page fault (ec=0000)" at boot. -- Root cause found.
Den 17. aug. 2016 21:56, I wrote (to xen-users, as I am no developer):
> I'm on gentoo, running gentoo-sources kernel for dom0.
>
> I am unable to run gentoo-sources-4.7.{0,1}. I'm running under xen,
> currently at 4.6.3-r1
I am now on linux gentoo-sources-4.7.2, and the bug is stil present.
I have done some digging on my own, and found that protecting two instances of
" for_each_efi_memory_desc(md) {" with something like "if( efi.memmap.map !=
NULL) {" will allow my dom0 to boot and run.
My line-numbers may be a bit off due to copious use of pr_info.
The locations are:
- linux/arch/x86/platform/efi/efi.c line 121 in function efi_find_mirror()
- /usr/src/linux/arch/x86/platform/efi/quirks.c line 253 in function
efi_free_boot_services(void)
Searching the web lead me first to a solution which I believe to be
wrong, changing the comparison operator in for_each_efi_memory_desc. It
also lead me to someone mentioning that efi.memmap.map is not used when
running under xen. That info may also be bogus for all I know.
As an example, the latter function now (correct ? ) looks like this
after my mis-treatment:
void __init efi_free_boot_services(void)
{
efi_memory_desc_t *md;
if( efi.memmap.map != NULL) {
pr_info("efi_free_boot_services: efi.memmap.map is
%p\n",efi.memmap.map);
for_each_efi_memory_desc(md) {
unsigned long long start = md->phys_addr;
unsigned long long size = md->num_pages << EFI_PAGE_SHIFT;
if (md->type != EFI_BOOT_SERVICES_CODE &&
md->type != EFI_BOOT_SERVICES_DATA)
continue;
/* Do not free, someone else owns it: */
if (md->attribute & EFI_MEMORY_RUNTIME)
continue;
free_bootmem_late(start, size);
}
} else {
pr_info("efi_free_boot_services: efi.memmap.map is (null)\n");
}
efi_unmap_memmap();
}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |