Joerg Roedel
90008ee4b8
AMD IOMMU: add event handling code
...
This patch adds code for polling and printing out events generated by
the AMD IOMMU.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:16 +02:00
Joerg Roedel
a80dc3e0e0
AMD IOMMU: add MSI interrupt support
...
The AMD IOMMU can generate interrupts for various reasons. This patch
adds the basic interrupt enabling infrastructure to the driver.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:15 +02:00
Joerg Roedel
3eaf28a1cd
AMD IOMMU: save pci_dev instead of devid
...
We need the pci_dev later anyways to enable MSI for the IOMMU hardware.
So remove the devid pointing to the BDF and replace it with the pci_dev
structure where the IOMMU is implemented.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:13 +02:00
Joerg Roedel
ee893c24ed
AMD IOMMU: save pci segment from ACPI tables
...
This patch adds the pci_seg field to the amd_iommu structure and fills
it with the corresponding value from the ACPI table.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:12 +02:00
Joerg Roedel
335503e57b
AMD IOMMU: add event buffer allocation
...
This patch adds the allocation of a event buffer for each AMD IOMMU in
the system. The hardware will log events like device page faults or
other errors to this buffer once this is enabled.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:11 +02:00
Joerg Roedel
1c65577398
AMD IOMMU: implement lazy IO/TLB flushing
...
The IO/TLB flushing on every unmaping operation is the most expensive
part in AMD IOMMU code and not strictly necessary. It is sufficient to
do the flush before any entries are reused. This is patch implements
lazy IO/TLB flushing which does exactly this.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:07 +02:00
Joerg Roedel
129d6aba44
x86, AMD IOMMU: initialize dma_ops after sysfs registration
...
If sysfs registration fails all memory used by IOMMU is freed. This
happens after dma_ops initialization and the functions will access the
freed memory then.
Fix this by initializing dma_ops after the sysfs registration.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-08-15 13:56:56 +02:00
Joerg Roedel
9f5f5fb35d
x86, AMD IOMMU: initialize device table properly
...
This patch adds device table initializations which forbids memory accesses
for devices per default and disables all page faults.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-08-15 13:56:54 +02:00
Joerg Roedel
3a61ec387c
x86, AMD IOMMU: include amd_iommu_last_bdf in device initialization
...
All the values read while searching for amd_iommu_last_bdf are defined as
inclusive. Let the code handle this value as such. Found by Wei Wang. Thanks
Wei.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Cc: Wei Wang <wei.wang2@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-26 15:45:57 +02:00
Ingo Molnar
acee709cab
Merge branches 'x86/urgent', 'x86/amd-iommu', 'x86/apic', 'x86/cleanups', 'x86/core', 'x86/cpu', 'x86/fixmap', 'x86/gart', 'x86/kprobes', 'x86/memtest', 'x86/modules', 'x86/nmi', 'x86/pat', 'x86/reboot', 'x86/setup', 'x86/step', 'x86/unify-pci', 'x86/uv', 'x86/xen' and 'xen-64bit' into x86/for-linus
2008-07-21 16:37:17 +02:00
Joerg Roedel
5ff4789d04
AMD IOMMU: set iommu for device from ACPI code too
...
The device<->iommu relationship has to be set from the information in the ACPI
table too. This patch adds this logic to the driver.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-18 18:43:32 +02:00
Joerg Roedel
d591b0a3ae
x86, AMD IOMMU: replace DEVID macro with a function
...
This patch replaces the DEVID macro with a function and uses them where
apropriate (also in the core code).
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:18 +02:00
Joerg Roedel
0906372e6c
x86, AMD IOMMU: replace self made size parsing with memparse call
...
This patch replaces the self-made parsing of the amd_iommu_size option with the
generic memparse function call.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:16 +02:00
Joerg Roedel
5dc8bff0f6
x86, AMD IOMMU: replace memset with __GFP_ZERO for table allocation
...
This patch removes the memset from the data structure initialization code and
allocate the structures with the __GFP_ZERO flag.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:16 +02:00
Joerg Roedel
2e22847fbe
x86, AMD IOMMU: do runtime list initialization at compile time
...
This patch changes the list initialization for the iommu list and the unity map
list from runtime to compile time.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:15 +02:00
Joerg Roedel
58a3bee567
x86, AMD IOMMU: use true/false instead of 0/1 for bool value
...
This patch replaces the integer values used for the bool variable in ACPI
scanning code with true and false.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:15 +02:00
Joerg Roedel
d0312b2142
x86, AMD IOMMU: remove unneeded initializations from command buffer allocation
...
This patch removes an unneeded initialization from the alloc_command_buffer
function and replaces a memset with __GFP_ZERO.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:14 +02:00
Joerg Roedel
9a836de0c9
x86, AMD IOMMU: remove unnecessary free checks from init code
...
This patch removes unnecessary checks before memory is released.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:12 +02:00
Joerg Roedel
c571484e53
x86, AMD IOMMU: replace TBL_SIZE macro with a function
...
This patch converts the TBL_SIZE macro in the init code to a function.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:12 +02:00
Joerg Roedel
208ec8c94d
x86, AMD IOMMU: replace UPDATE_LAST_BDF macro with a function
...
This patch replaces the UPDATE_LAST_BDF macro in the init code with the
update_last_devid function.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:11 +02:00
Joerg Roedel
b65233a9c1
x86, AMD IOMMU: add comments to the initialization code
...
This patch adds some comments to the AMD IOMMU initialization code to increase
its readability.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 18:01:09 +02:00
FUJITA Tomonori
46a7fa270a
x86: make only GART code include gart.h
...
gart.h has only GART-specific stuff. Only GART code needs it. Other
IOMMU stuff should include iommu.h instead of gart.h.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp >
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-11 11:00:54 +02:00
Joerg Roedel
299a140dac
x86, AMD IOMMU: ignore detection of GART IOMMU
...
One of the last IOMMU updates covered a bug in the AMD IOMMU code. The early
detection code does not succeed if the GART is already detected. This patch
fixes this.
Cc: Robert Richter <robert.richter@amd.com >
Cc: Bhavna Sarathy <Bhavna.Sarathy@amd.com >
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: Joerg Roedel <joerg.roedel@amd.com >
Cc: Robert Richter <robert.richter@amd.com >
Cc: Bhavna Sarathy <Bhavna.Sarathy@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-09 10:56:49 +02:00
Joerg Roedel
fb339690a0
x86, AMD IOMMU: remove unnecessary code from the iommu_enable function
...
This code removes a leftover from the iommu_enable function. The ctrl variable
is assigned but never used.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Cc: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-04 11:44:44 +02:00
Joerg Roedel
c1cbebeec4
x86, AMD IOMMU: don't try to init IOMMU if early detect code did not detect one
...
This patch adds a check if the early detect code has found AMD IOMMU hardware
descriptions and does not try to initialize hardware if the check failed.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: robert.richter@amd.com
Cc: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-07-04 11:44:43 +02:00