aboutsummaryrefslogtreecommitdiff
path: root/drivers/iommu/amd_iommu_init.c
AgeCommit message (Collapse)AuthorFilesLines
2012-07-17iommu/amd: Introduce amd_iommu_init_dma routineJoerg Roedel1-7/+20
This function will initialize everthing necessary so that devices can do DMA. This includes dma_ops and iommu_ops. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Move unmap_flush message to amd_iommu_init_dma_ops()Joerg Roedel1-8/+0
The message belongs there anyway, so move it to that function. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Split enable_iommus() routineJoerg Roedel1-3/+18
Split the enable_iommus() routine so that a part of it can run in early code. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Introduce early_amd_iommu_init routineJoerg Roedel1-15/+23
Split out the code to parse the ACPI table and setup relevant data structures into a new function. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Move informational prinks out of iommu_enableJoerg Roedel1-17/+27
This function will be called before the PCI subsystem is initialized. Therefore dev_name doen't work and IOMMU information can't be printed to the klog as before. Move the code to print that information to a later point where PCI initializtion has already happened. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Split out PCI related parts of IOMMU initializationJoerg Roedel1-106/+118
For interrupt remapping the relevant IOMMU initialization needs to run earlier at boot when the PCI subsystem is not yet initialized. To support that this patch splits the parts of IOMMU initialization which need PCI accesses out of the initial setup path so that this can be done later. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Use acpi_get_table instead of acpi_table_parseJoerg Roedel1-52/+66
This makes it easier to propagate errors while parsing the IVRS table and makes the amd_iommu_init_err hack obsolete. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-17iommu/amd: Fix sparse warningsJoerg Roedel1-11/+5
A few sparse warnings fire in drivers/iommu/amd_iommu_init.c. Fix most of them with this patch. Also fix the sparse warnings in drivers/iommu/irq_remapping.c while at it. Signed-off-by: Joerg Roedel <[email protected]>
2012-07-02iommu/amd: fix type bug in flush codeDan Carpenter1-1/+1
write_file_bool() modifies 32 bits of data, so "amd_iommu_unmap_flush" needs to be 32 bits as well or we'll corrupt memory. Fortunately it looks like the data is aligned with a gap after the declaration so this is harmless in production. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
2012-06-07iommu/amd: Fix missing iommu_shutdown initialization in passthrough modeShuah Khan1-2/+2
The iommu_shutdown callback is not initialized when the AMD IOMMU driver runs in passthrough mode. Fix that by moving the callback initialization before the check for passthrough mode. Signed-off-by: Shuah Khan <[email protected]> Cc: [email protected] Signed-off-by: Joerg Roedel <[email protected]>
2012-06-04iommu/amd: Cache pdev pointer to root-bridgeJoerg Roedel1-8/+5
At some point pci_get_bus_and_slot started to enable interrupts. Since this function is used in the amd_iommu_resume path it will enable interrupts on resume which causes a warning. The fix will use a cached pointer to the root-bridge to re-enable the IOMMU in case the BIOS is broken. Cc: [email protected] Signed-off-by: Joerg Roedel <[email protected]>
2012-03-22Merge branches 'iommu/fixes', 'arm/tegra' and 'x86/amd' into nextJoerg Roedel1-64/+123
2012-03-22iommu/amd: Fix section mismatchGerard Snitselaar1-2/+2
amd_iommu_enable_interrupts() called in amd_iommu_resume(). Signed-off-by: Gerard Snitselaar <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
2012-03-15iommu/amd: Move interrupt setup code into seperate functionJoerg Roedel1-1/+23
For interrupt remapping the enablement of the IOMMU MSI interrupt needs to be deferred because the IOMMU itself will be initialized before the io-apics are up and running. So the code to setup the MSI is moved seperated from the hardware-setup routine now. Signed-off-by: Joerg Roedel <[email protected]>
2012-03-15iommu/amd: Make sure IOMMU interrupts are re-enabled on resumeJoerg Roedel1-10/+20
Unfortunatly the interrupts for the event log and the peripheral page-faults are only enabled at boot but not re-enabled at resume. Fix that. Cc: [email protected] Signed-off-by: Joerg Roedel <[email protected]>
2012-03-09iommu/amd: Fix double free of mem-region in error-pathJoerg Roedel1-9/+1
When ioremap_nocache fails in iommu initialization the code calls release_mem_region immediatly. But the function is called again when the propagates into the upper init functions leading to a double-free. Fix that. Reported-by: Don Dutile <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
2012-03-08x86/amd: iommu_set_device_table() must not be __initJan Beulich1-1/+1
This function is called from enable_iommus(), which in turn is used from amd_iommu_resume(). Cc: [email protected] Signed-off-by: Jan Beulich <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
2012-03-01iommu/amd: Split amd_iommu_init functionJoerg Roedel1-44/+79
The hardware-initializtion part of the AMD IOMMU driver is split out into a seperate function. This function can now be called either from amd_iommu_init() itself or any other place if the hardware needs to be ready earlier. This will be used to implement interrupt remapping for AMD. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-22iommu/amd: Set IOTLB invalidation timeoutJoerg Roedel1-0/+13
To protect the command buffer from hanging when a device does not respond to an IOTLB invalidation, set a timeout of 1s for outstanding IOTLB invalidations. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-22iommu/amd: Remove unnecessary cache flushes in amd_iommu_resumeJoerg Roedel1-7/+0
The caches are already flushed in enable_iommus(), so this flush is not necessary. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Add support for IOMMUv2 domain modeJoerg Roedel1-0/+9
This patch adds support for protection domains that implement two-level paging for devices. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Put IOMMUv2 capable devices in pt_domainJoerg Roedel1-0/+4
If the device starts to use IOMMUv2 features the dma handles need to stay valid. The only sane way to do this is to use a identity mapping for the device and not translate it by the iommu. This is implemented with this patch. Since this lifts the device-isolation there is also a new kernel parameter which allows to disable that feature. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Add iommuv2 flag to struct amd_iommuJoerg Roedel1-0/+15
In mixed IOMMU setups this flag inidicates whether an IOMMU supports the v2 features or not. This patch also adds a global flag together with a function to query that flag from other code. The flag shows if at least one IOMMUv2 is in the system. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Enable GT mode when supported by IOMMUJoerg Roedel1-0/+9
This feature needs to be enabled before IOMMUv2 DTEs can be set up. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Setup PPR log when supported by IOMMUJoerg Roedel1-0/+51
Allocate and enable a log buffer for peripheral page faults when the IOMMU supports this feature. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Get the maximum number of PASIDs supportedJoerg Roedel1-0/+13
Read the number of PASIDs supported by each IOMMU in the system and take the smallest number as the maximum value supported by the IOMMU driver. Signed-off-by: Joerg Roedel <[email protected]>
2011-12-12iommu/amd: Convert dev_table_entry to u64Joerg Roedel1-6/+6
Convert the contents of 'struct dev_table_entry' to u64 to allow updating the DTE wit 64bit writes as required by the spec. Signed-off-by: Joerg Roedel <[email protected]>
2011-06-21iommu/amd: Move missing parts to drivers/iommuJoerg Roedel1-0/+1574
A few parts of the driver were missing in drivers/iommu. Move them there to have the complete driver in that directory. Signed-off-by: Joerg Roedel <[email protected]>