在 2018年07月02日 18:14, Borislav Petkov 写道: > On Mon, Jul 02, 2018 at 03:26:35PM +0800, Lianbo Jiang wrote: >> @@ -131,7 +132,8 @@ static void __ioremap_check_mem(resource_size_t addr, unsigned long size, >> * caller shouldn't need to know that small detail. >> */ >> static void __iomem *__ioremap_caller(resource_size_t phys_addr, >> - unsigned long size, enum page_cache_mode pcm, void *caller) >> + unsigned long size, enum page_cache_mode pcm, >> + void *caller, bool encrypted) > > So instead of sprinkling that @encrypted argument everywhere and then > setting it based on sme_active() ... > >> { >> unsigned long offset, vaddr; >> resource_size_t last_addr; >> @@ -199,7 +201,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, >> * resulting mapping. >> */ >> prot = PAGE_KERNEL_IO; >> - if (sev_active() && mem_flags.desc_other) >> + if ((sev_active() && mem_flags.desc_other) || encrypted) > > ... why can't you simply do your checks: > > sme_active() && is_kdump_kernel() > > here so that __ioremap_caller() can automatically choose the proper > pgprot value when ioremapping the memory in the kdump kernel? > > And this way the callers don't even have to care whether the memory is > encrypted or not? > Thank you, Boris. I'm very glad to read your comments. That's a good idea, but it has some unencrypted memory in kdump mode, for example, the elfcorehdr. In fact, the elfcorehdr and notes call the same function(read_from_oldmem->ioremap_cache), in this case, it is very difficult to properly remap the memory if the caller don't care whether the memory is encrypted. Regards, Lianbo >> prot = pgprot_encrypted(prot); >> >> switch (pcm) { > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec