• Lianbo Jiang's avatar
    x86/ioremap: Add an ioremap_encrypted() helper · c3a7a61c
    Lianbo Jiang authored
    When SME is enabled, the memory is encrypted in the first kernel. In
    this case, SME also needs to be enabled in the kdump kernel, and we have
    to remap the old memory with the memory encryption mask.
    
    The case of concern here is if SME is active in the first kernel,
    and it is active too in the kdump kernel. There are four cases to be
    considered:
    
    a. dump vmcore
       It is encrypted in the first kernel, and needs be read out in the
       kdump kernel.
    
    b. crash notes
       When dumping vmcore, the people usually need to read useful
       information from notes, and the notes is also encrypted.
    
    c. iommu device table
       It's encrypted in the first kernel, kdump kernel needs to access its
       content to analyze and get information it needs.
    
    d. mmio of AMD iommu
       not encrypted in both kernels
    
    Add a new bool parameter @encrypted to __ioremap_caller(). If set,
    memory will be remapped with the SME mask.
    
    Add a new function ioremap_encrypted() to explicitly pass in a true
    value for @encrypted. Use ioremap_encrypted() for the above a, b, c
    cases.
    
     [ bp: cleanup commit message, extern defs in io.h and drop forgotten
       include. ]
    Signed-off-by: default avatarLianbo Jiang <lijiang@redhat.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Reviewed-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
    Cc: kexec@lists.infradead.org
    Cc: tglx@linutronix.de
    Cc: mingo@redhat.com
    Cc: hpa@zytor.com
    Cc: akpm@linux-foundation.org
    Cc: dan.j.williams@intel.com
    Cc: bhelgaas@google.com
    Cc: baiyaowei@cmss.chinamobile.com
    Cc: tiwai@suse.de
    Cc: brijesh.singh@amd.com
    Cc: dyoung@redhat.com
    Cc: bhe@redhat.com
    Cc: jroedel@suse.de
    Link: https://lkml.kernel.org/r/20180927071954.29615-2-lijiang@redhat.com
    c3a7a61c
ioremap.c 22.2 KB