On Tue, Feb 18, 2014 at 11:18 PM, WANG Chao <chaowang at redhat.com> wrote: > Hi, All > > arch/x86/kernel/pci-calgary.c is the only user of saved_max_pfn today: > > int __init detect_calgary(void) > { > [..] > specified_table_size = determine_tce_table_size((is_kdump_kernel() ? > saved_max_pfn : max_pfn) * PAGE_SIZE); > [..] > } IIUC, the purpose of this code is to reuse the TCE table from the previous kernel. Thus, it needs to be of the same size as the pre-kdump kernel. It is using the max_pfn to determine the TCE table size in the non-kdump case. If there is another way to determine the size it used before, then I am fine making the change to use that way. Thanks, Jon > saved_max_pfn is the real mem size and is calculated by 1st kernel E820 > memmap which is passed in by 2nd kernel's boot_params (done by kexec): > > saved_max_pfn = e820_end_of_ram_pfn(); > > After saved_max_pfn has been set, memmap=exactmap will reset the E820 > provided by boot_params and use the user defined E820 instead. > > Now we want to get rid of memmap=exactmap and directly pass the E820 > memmap by boot_params for some reason (eg. exactmap may exceed the cmdline > size and also isn't compatible with kaslr). > > However saved_max_pfn becomes the obstacle for obsoleting exactmap. > Because it needs two conditions: first kernel's E820 map and > memmap=exactmap cmdline. > > So I'm wondering if it's possible to get rid of saved_max_pfn totally in > calgary code. Or we can get saved_max_pfn using a different way, for > example calculated in 1st kernel and passed in to 2nd kernel by cmdline. > > Thanks > WANG Chao