Re: [PATCH 1/5 V5] Add a function(ioremap_encrypted) for kdump when AMD sme enabled

From: lijiang
Date: Mon Jul 02 2018 - 22:17:35 EST


å 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) {
>