Merge tag 'iommu-updates-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
Pull IOMMU updates from Joerg Roedel: - Debugfs support for the Intel VT-d driver. When enabled, it now also exposes some of its internal data structures to user-space for debugging purposes. - ARM-SMMU driver now uses the generic deferred flushing and fast-path iova allocation code. This is expected to be a major performance improvement, as this allocation path scales a lot better. - Support for r8a7744 in the Renesas iommu driver - Couple of minor fixes and improvements all over the place * tag 'iommu-updates-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (39 commits) iommu/arm-smmu-v3: Remove unnecessary wrapper function iommu/arm-smmu-v3: Add SPDX header iommu/amd: Add default branch in amd_iommu_capable() dt-bindings: iommu: ipmmu-vmsa: Add r8a7744 support iommu/amd: Move iommu_init_pci() to .init section iommu/arm-smmu: Support non-strict mode iommu/io-pgtable-arm-v7s: Add support for non-strict mode iommu/arm-smmu-v3: Add support for non-strict mode iommu/io-pgtable-arm: Add support for non-strict mode iommu: Add "iommu.strict" command line option iommu/dma: Add support for non-strict mode iommu/arm-smmu: Ensure that page-table updates are visible before TLBI iommu/arm-smmu-v3: Implement flush_iotlb_all hook iommu/arm-smmu-v3: Avoid back-to-back CMD_SYNC operations iommu/arm-smmu-v3: Fix unexpected CMD_SYNC timeout iommu/io-pgtable-arm: Fix race handling in split_blk_unmap() iommu/arm-smmu-v3: Fix a couple of minor comment typos iommu: Fix a typo iommu: Remove .domain_{get,set}_windows iommu: Tidy up window attributes ...
This commit is contained in:
@@ -185,16 +185,6 @@ static int rwbf_quirk;
|
||||
static int force_on = 0;
|
||||
int intel_iommu_tboot_noforce;
|
||||
|
||||
/*
|
||||
* 0: Present
|
||||
* 1-11: Reserved
|
||||
* 12-63: Context Ptr (12 - (haw-1))
|
||||
* 64-127: Reserved
|
||||
*/
|
||||
struct root_entry {
|
||||
u64 lo;
|
||||
u64 hi;
|
||||
};
|
||||
#define ROOT_ENTRY_NR (VTD_PAGE_SIZE/sizeof(struct root_entry))
|
||||
|
||||
/*
|
||||
@@ -220,21 +210,6 @@ static phys_addr_t root_entry_uctp(struct root_entry *re)
|
||||
|
||||
return re->hi & VTD_PAGE_MASK;
|
||||
}
|
||||
/*
|
||||
* low 64 bits:
|
||||
* 0: present
|
||||
* 1: fault processing disable
|
||||
* 2-3: translation type
|
||||
* 12-63: address space root
|
||||
* high 64 bits:
|
||||
* 0-2: address width
|
||||
* 3-6: aval
|
||||
* 8-23: domain id
|
||||
*/
|
||||
struct context_entry {
|
||||
u64 lo;
|
||||
u64 hi;
|
||||
};
|
||||
|
||||
static inline void context_clear_pasid_enable(struct context_entry *context)
|
||||
{
|
||||
@@ -261,7 +236,7 @@ static inline bool __context_present(struct context_entry *context)
|
||||
return (context->lo & 1);
|
||||
}
|
||||
|
||||
static inline bool context_present(struct context_entry *context)
|
||||
bool context_present(struct context_entry *context)
|
||||
{
|
||||
return context_pasid_enabled(context) ?
|
||||
__context_present(context) :
|
||||
@@ -788,8 +763,8 @@ static void domain_update_iommu_cap(struct dmar_domain *domain)
|
||||
domain->iommu_superpage = domain_update_iommu_superpage(NULL);
|
||||
}
|
||||
|
||||
static inline struct context_entry *iommu_context_addr(struct intel_iommu *iommu,
|
||||
u8 bus, u8 devfn, int alloc)
|
||||
struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
|
||||
u8 devfn, int alloc)
|
||||
{
|
||||
struct root_entry *root = &iommu->root_entry[bus];
|
||||
struct context_entry *context;
|
||||
@@ -4860,6 +4835,7 @@ int __init intel_iommu_init(void)
|
||||
cpuhp_setup_state(CPUHP_IOMMU_INTEL_DEAD, "iommu/intel:dead", NULL,
|
||||
intel_iommu_cpu_dead);
|
||||
intel_iommu_enabled = 1;
|
||||
intel_iommu_debugfs_init();
|
||||
|
||||
return 0;
|
||||
|
||||
|
Reference in New Issue
Block a user