Messages in this thread | | | Date | Sun, 01 Mar 2009 18:32:01 -0800 | From | Yinghai Lu <> | Subject | Re: [PATCH] Fix e820 end address with EFI |
| |
Huang Ying wrote: > On Mon, 2009-03-02 at 10:16 +0800, Yinghai Lu wrote: >> Huang Ying wrote: >>> On Mon, 2009-03-02 at 09:39 +0800, Brian Maly wrote: >>>> Huang Ying wrote: >>>>> Hi, Brian, >>>>> >>>>> On Mon, 2009-03-02 at 04:13 +0800, Brian Maly wrote: >>>>> >>>>>> I was able verify the kernel that does not boot on the MacBook (vanilla >>>>>> 2.6.29-rc4) does call efi_ioremap() which bails out early returning >>>>>> NULL. So no remapping happens in this case. I have no idea if >>>>>> efi_ioremap ever does succeed in mapping any ranges though being I have >>>>>> no video or console this early in the boot and have to rely on triple >>>>>> faulting as a means of debugging. >>>>>> >>>>> Please attach your dmesg of successful boot, so we can take a look at >>>>> the EFI memory map. >>>>> >>>>> Best Regards, >>>>> Huang Ying >>>>> >>>> This dmesg is from a 2.6.25 kernel which works fine. I can gather >>>> other debugging info from the booting kernels if needed. But its a >>>> challenge to debug the bad kernel being efifb is initialized very late >>>> (so you never even get to the video initialization and cant see any >>>> logged messages) and since its a MacBook I dont have a real serial >>>> port for serial console. The efi map is for MacBook has a different >>>> layout from other EFI systems I have to test on. 2.6.29 kernel works >>>> on every EFI system I have except MacBook. >>> It seems that you have an EFI system which has too big runtime area. >>> >>> EFI: mem44: type=0, attr=0x8000000000000000, range=[0x000000007ff00000-0x0000000080000000) (1MB) >>> >>> efi_ioremap() can map only memory range < 400k now. >>> >>> It seems that efi_ioremap is the bottle net now. Can we just use >>> init_memory_mapping() instead of efi_ioremap() for EFI runtime area? >>> >>> Yinghai, how about your opinion? >> you could call init_memory_maping() in that efi_ioremap position? >> >> problems is how about 32bit? > > efi_ioremap() is defined as ioremap_cache() on 32bit system. As that in > arch/x86/include/asm/efi.h. > > On 64bit system, efi_ioremap() can be a wrapper for > init_memory_mapping(). Do you think it is appropriate?
so 64bit could use ioremap_cache() too? we may keep 32bit and 64bit a bit consistent.
YH
| |