在 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) {
> 
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to