diff options
| author | Thomas Gleixner <[email protected]> | 2019-05-06 12:04:12 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <[email protected]> | 2019-05-06 12:04:12 +0200 | 
| commit | fb4e0592654adb31bc6f3a738d6499b816a655d6 (patch) | |
| tree | e6edaf18cf3a7f49e93fb51de5a47f4b9e786f53 /drivers/iommu/amd_iommu_init.c | |
| parent | 471ba0e686cb13752bc1ff3216c54b69a2d250ea (diff) | |
| parent | 16e32c3cde7763ab875b9030b443ecbc8e352d8a (diff) | |
Merge tag 'irqchip-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/core
Pull irqchip updates from Marc Zyngier
- The huge (and terrifying) TI INTR/INTA set of drivers
- Rewrite of the stm32mp1-exti driver as a platform driver
- Update the IOMMU MSI mapping API to be RT friendly
- A number of cleanups and other low impact fixes
Diffstat (limited to 'drivers/iommu/amd_iommu_init.c')
| -rw-r--r-- | drivers/iommu/amd_iommu_init.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index f773792d77fd..ff40ba758cf3 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -359,7 +359,7 @@ static void iommu_write_l2(struct amd_iommu *iommu, u8 address, u32 val)  static void iommu_set_exclusion_range(struct amd_iommu *iommu)  {  	u64 start = iommu->exclusion_start & PAGE_MASK; -	u64 limit = (start + iommu->exclusion_length) & PAGE_MASK; +	u64 limit = (start + iommu->exclusion_length - 1) & PAGE_MASK;  	u64 entry;  	if (!iommu->exclusion_start) @@ -2013,6 +2013,9 @@ static int __init init_unity_map_range(struct ivmd_header *m)  	if (e == NULL)  		return -ENOMEM; +	if (m->flags & IVMD_FLAG_EXCL_RANGE) +		init_exclusion_range(m); +  	switch (m->type) {  	default:  		kfree(e); @@ -2059,9 +2062,7 @@ static int __init init_memory_definitions(struct acpi_table_header *table)  	while (p < end) {  		m = (struct ivmd_header *)p; -		if (m->flags & IVMD_FLAG_EXCL_RANGE) -			init_exclusion_range(m); -		else if (m->flags & IVMD_FLAG_UNITY_MAP) +		if (m->flags & (IVMD_FLAG_UNITY_MAP | IVMD_FLAG_EXCL_RANGE))  			init_unity_map_range(m);  		p += m->length;  |