iommu/amd: Indicate whether DMA remap support is enabled
Bit 1 of the IVFS IVInfo field indicates that IOMMU has been used for pre-boot DMA protection. Export this capability to allow other places in the kernel to be able to check for it on AMD systems. Link: https://www.amd.com/system/files/TechDocs/48882_IOMMU.pdf Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Link: https://lore.kernel.org/r/ce7627fa1c596878ca6515dd9d4381a45b6ee38c.1650878781.git.robin.murphy@arm.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
86eaf4a5b4
commit
f1ca70717b
|
@ -407,6 +407,7 @@
|
|||
/* IOMMU IVINFO */
|
||||
#define IOMMU_IVINFO_OFFSET 36
|
||||
#define IOMMU_IVINFO_EFRSUP BIT(0)
|
||||
#define IOMMU_IVINFO_DMA_REMAP BIT(1)
|
||||
|
||||
/* IOMMU Feature Reporting Field (for IVHD type 10h */
|
||||
#define IOMMU_FEAT_GASUP_SHIFT 6
|
||||
|
@ -449,6 +450,9 @@ extern struct irq_remap_table **irq_lookup_table;
|
|||
/* Interrupt remapping feature used? */
|
||||
extern bool amd_iommu_irq_remap;
|
||||
|
||||
/* IVRS indicates that pre-boot remapping was enabled */
|
||||
extern bool amdr_ivrs_remap_support;
|
||||
|
||||
/* kmem_cache to get tables with 128 byte alignement */
|
||||
extern struct kmem_cache *amd_iommu_irq_cache;
|
||||
|
||||
|
|
|
@ -182,6 +182,7 @@ u32 amd_iommu_max_pasid __read_mostly = ~0;
|
|||
|
||||
bool amd_iommu_v2_present __read_mostly;
|
||||
static bool amd_iommu_pc_present __read_mostly;
|
||||
bool amdr_ivrs_remap_support __read_mostly;
|
||||
|
||||
bool amd_iommu_force_isolation __read_mostly;
|
||||
|
||||
|
@ -326,6 +327,8 @@ static void __init early_iommu_features_init(struct amd_iommu *iommu,
|
|||
{
|
||||
if (amd_iommu_ivinfo & IOMMU_IVINFO_EFRSUP)
|
||||
iommu->features = h->efr_reg;
|
||||
if (amd_iommu_ivinfo & IOMMU_IVINFO_DMA_REMAP)
|
||||
amdr_ivrs_remap_support = true;
|
||||
}
|
||||
|
||||
/* Access to l1 and l2 indexed register spaces */
|
||||
|
|
|
@ -2155,6 +2155,8 @@ static bool amd_iommu_capable(enum iommu_cap cap)
|
|||
return (irq_remapping_enabled == 1);
|
||||
case IOMMU_CAP_NOEXEC:
|
||||
return false;
|
||||
case IOMMU_CAP_PRE_BOOT_PROTECTION:
|
||||
return amdr_ivrs_remap_support;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue