Re: [tip:x86/urgent] x86, efi: Delete efi_ioremap() and fix CONFIG_X86_32 oops
From: Yinghai Lu <yinghai@kernel.org>
Date: 2012-03-16 19:01:43
Also in:
lkml
On Fri, Mar 16, 2012 at 11:36 AM, Matt Fleming [off-list ref] wrote:
On Thu, 2012-03-15 at 10:54 -0700, Yinghai Lu wrote:quoted
quoted
� � � � � � � �if (end <= max_low_pfn << PAGE_SHIFT) � � � � � � � � � � � �max_low_pfn_mapped = last_pfn_mapped;why max_low_pfn is used here?The idea is that we only want to update max_low_pfn_mapped when we've mapped a region at or below max_low_pfn. This maintains compatibility with behaviour prior to this patch.quoted
quoted
The max_low_pfn checks are only for CONFIG_X86_32 so that the behaviour is the same as before this patch, i.e. we don't try to map above max_low_pfn.ok, to simplify the code, in setup.c you could move #ifdef CONFIG_X86_64 � � � � if (max_pfn > max_low_pfn) { � � � � � � � � /* can we preseve max_low_pfn ?*/ � � � � � � � � max_low_pfn = max_pfn; � � � � } #endif before calling new init_memory_mapping()... so you could remove the #idef. in init_memory_mapping.Hmm.. if we do this then max_low_pfn_mapped will be set to max_pfn on CONFIG_X86_64 by the time we've finished looping in init_memory_mapping(). This is not how things work currently. Will that cause a problem?
oh, before this patch could be applied, you need to make sure all max_low_pfn_mapped reference is removed. current assumption is under max_low_pfn_mapped all mem is mapped. now with this patch, that assumption is not right anymore. Yinghai