Patch "iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check()" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check()

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iommu-vt-d-allow-nvs-regions-in-arch_rmrr_sanity_che.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5f30223ca9cad85da94b6a369ce574ae98fcba78
Author: Charlotte Tan <charlotte@xxxxxxxxxxxx>
Date:   Wed Oct 19 08:44:46 2022 +0800

    iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check()
    
    [ Upstream commit 5566e68d829f5d87670d5984c1c2ccb4c518405f ]
    
    arch_rmrr_sanity_check() warns if the RMRR is not covered by an ACPI
    Reserved region, but it seems like it should accept an NVS region as
    well. The ACPI spec
    https://uefi.org/specs/ACPI/6.5/15_System_Address_Map_Interfaces.html
    uses similar wording for "Reserved" and "NVS" region types; for NVS
    regions it says "This range of addresses is in use or reserved by the
    system and must not be used by the operating system."
    
    There is an old comment on this mailing list that also suggests NVS
    regions should pass the arch_rmrr_sanity_check() test:
    
     The warnings come from arch_rmrr_sanity_check() since it checks whether
     the region is E820_TYPE_RESERVED. However, if the purpose of the check
     is to detect RMRR has regions that may be used by OS as free memory,
     isn't  E820_TYPE_NVS safe, too?
    
    This patch overlaps with another proposed patch that would add the region
    type to the log since sometimes the bug reporter sees this log on the
    console but doesn't know to include the kernel log:
    
    https://lore.kernel.org/lkml/20220611204859.234975-3-atomlin@xxxxxxxxxx/
    
    Here's an example of the "Firmware Bug" apparent false positive (wrapped
    for line length):
    
     DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR
           [0x000000006f760000-0x000000006f762fff], contact BIOS vendor for
           fixes
     DMAR: [Firmware Bug]: Your BIOS is broken; bad RMRR
           [0x000000006f760000-0x000000006f762fff]
    
    This is the snippet from the e820 table:
    
     BIOS-e820: [mem 0x0000000068bff000-0x000000006ebfefff] reserved
     BIOS-e820: [mem 0x000000006ebff000-0x000000006f9fefff] ACPI NVS
     BIOS-e820: [mem 0x000000006f9ff000-0x000000006fffefff] ACPI data
    
    Fixes: f036c7fa0ab6 ("iommu/vt-d: Check VT-d RMRR region in BIOS is reported as reserved")
    Cc: Will Mortensen <will@xxxxxxxxxxxx>
    Link: https://lore.kernel.org/linux-iommu/64a5843d-850d-e58c-4fc2-0a0eeeb656dc@xxxxxxx/
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216443
    Signed-off-by: Charlotte Tan <charlotte@xxxxxxxxxxxx>
    Reviewed-by: Aaron Tomlin <atomlin@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220929044449.32515-1-charlotte@xxxxxxxxxxxx
    Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
    Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/x86/include/asm/iommu.h b/arch/x86/include/asm/iommu.h
index bf1ed2ddc74b..7a983119bc40 100644
--- a/arch/x86/include/asm/iommu.h
+++ b/arch/x86/include/asm/iommu.h
@@ -17,8 +17,10 @@ arch_rmrr_sanity_check(struct acpi_dmar_reserved_memory *rmrr)
 {
 	u64 start = rmrr->base_address;
 	u64 end = rmrr->end_address + 1;
+	int entry_type;
 
-	if (e820__mapped_all(start, end, E820_TYPE_RESERVED))
+	entry_type = e820__get_entry_type(start, end);
+	if (entry_type == E820_TYPE_RESERVED || entry_type == E820_TYPE_NVS)
 		return 0;
 
 	pr_err(FW_BUG "No firmware reserved region can cover this RMRR [%#018Lx-%#018Lx], contact BIOS vendor for fixes\n",



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux