On 10/23/13 at 02:25pm, Borislav Petkov wrote: > On Wed, Oct 23, 2013 at 10:17:31AM +0800, Dave Young wrote: > > The reason is that I only pass runtime regions from 1st kernel to > > kexec kernel, your efi mapping function uses the region size to > > determin the virtual address from top to down. Because the passed-in > > md ranges in kexec kernel are different from ranges booting from > > firmware so the virtual address will be different. > > Well, this shouldn't be because SetVirtualAddressMap has already fixed > the virtual addresses for us. And if they're different, then runtime > services won't work anyway. Or am I missing something...? Maybe I did not explain clear enough. Say first kernel mapping below regions: Region A (boot service):phys_start_a size_a -> virt_start_a size_a Region B (runtime): phys_start_b size_b -> virt_start_b size_b I will pass Range B into 2nd kernel (phys_start_b, size_b, virt_start_b) In kexed 2nd kernel, phys_start_b need to be mapped to virt_start_b Simply use efi_map_region from your patch does not work because it will map phys_start_b to a different virt address, isn't it? So I need simply map according to the kexec passed in mapping addr. Thanks Dave -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html