b39ba6ad00
AMD IOMMU: add dma_supported callback
...
This function determines if the AMD IOMMU implementation is responsible
for a given device. So the DMA layer can get this information from the
driver.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:20 +02:00
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
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
6d4f343f84
AMD IOMMU: align alloc_coherent addresses properly
...
The API definition for dma_alloc_coherent states that the bus address
has to be aligned to the next power of 2 boundary greater than the
allocation size. This is violated by AMD IOMMU so far and this patch
fixes it.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:10 +02:00
5507eef835
AMD IOMMU: add branch hints to completion wait checks
...
This patch adds branch hints to the cecks if a completion_wait is
necessary. The completion_waits in the mapping paths are unlikly because
they will only happen on software implementations of AMD IOMMU which
don't exists today or with lazy IO/TLB flushing when the allocator wraps
around the address space. With lazy IO/TLB flushing the completion_wait
in the unmapping path is unlikely too.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:08 +02:00
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
270cab2426
AMD IOMMU: move TLB flushing to the map/unmap helper functions
...
This patch moves the invocation of the flushing functions to the
map/unmap helpers because its common code in all dma_ops relevant
mapping/unmapping code.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:04 +02:00
dbcc112e3b
AMD IOMMU: check for invalid device pointers
...
Currently AMD IOMMU code triggers a BUG_ON if NULL is passed as the
device. This is inconsistent with other IOMMU implementations.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-19 12:59:03 +02:00
7e4f88da7b
AMD IOMMU: protect completion wait loop with iommu lock
...
The unlocked polling of the ComWaitInt bit in the IOMMU completion wait
path is racy. Protect it with the iommu lock.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-18 09:25:44 +02:00
ee2fa7435b
AMD IOMMU: set iommu sunc flag after command queuing
...
The iommu->need_sync flag must be set after the command is queued to
avoid race conditions.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-09-18 09:25:04 +02:00
e92b4fdacc
Merge commit 'v2.6.27-rc6' into x86/iommu
2008-09-10 11:32:52 +02:00
2cd54961ca
x86, AMD IOMMU: remove obsolete FIXME comment
...
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-08-22 08:34:52 +02:00
8a7c5ef3ba
x86 iommu: remove unneeded parenthesis
...
The parenthesis in __iommu_queue_command() are not needed when assigning
into 'target' variable.
Signed-off-by: Jiri Kosina <jkosina@suse.cz >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-08-19 02:16:24 +02:00
8a456695c5
x86m AMD IOMMU: cleanup: replace LOW_U32 macro with generic lower_32_bits
...
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
519c31bacf
x86, AMD IOMMU: use status bit instead of memory write-back for completion wait
...
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-08-15 13:56:46 +02:00
29111f579f
Merge branch 'x86/iommu' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into for-linus
2008-07-28 14:31:10 -07:00
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
a8132e5fe2
x86, AMD IOMMU: replace to_pages macro with iommu_num_pages
...
This patch removes the to_pages macro from AMD IOMMU code and calls the generic
iommu_num_pages function instead.
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-26 15:43:05 +02:00
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
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
d64495366f
x86, AMD IOMMU: rename struct command to iommu_cmd
...
This patch gives the struct command a more descriptive and not so generic name.
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
136f78a19c
x86, AMD IOMMU: add an emergency exit to the completion wait loop
...
To make the loop waiting for the completion wait command not wait forever this
patch adds a limit of cycles that loop.
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:13 +02:00
8ea80d783e
x86, AMD IOMMU: replace HIGH_U32 macro with upper_32_bits function
...
Removes a driver specific macro and replaces it with a generic function already
available in Linux.
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
431b2a2015
x86, AMD IOMMU: add comments to core code
...
This patch adds comments about how the AMD IOMMU core code works for the DMA
remapping functionality.
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:10 +02:00
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
999ba417cc
x86, AMD IOMMU: flush domain TLB when there is more than one page to flush
...
This patch changes the domain TLB flushing behavior of the driver. When there
is more than one page to flush it flushes the whole domain TLB instead of every
single page. So we send only a single command to the IOMMU in every case which
is faster to execute.
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:40 +02:00
5f6a59d8ad
x86, AMD IOMMU: remove unnecessary set_bit_string
...
The set_bit_string call in the address allocator is not necessary because its
already called in iommu_area_alloc().
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:39 +02:00
92af4e2902
x86, AMD IOMMU, build fix #2
...
fix:
arch/x86/kernel/amd_iommu.c: In function ‘amd_iommu_init_dma_ops':
arch/x86/kernel/amd_iommu.c:940: error: lvalue required as left operand of assignment
arch/x86/kernel/amd_iommu.c:941: error: lvalue required as left operand of assignment
due to !CONFIG_GART_IOMMU.
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:52:34 +02:00
c6da992e16
x86, AMD IOMMU: add amd_iommu.h to export functions to the generic x86 dma code
...
This patch adds the amd_iommu.h file which will be included in the generic
code.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:21 +02:00
6631ee9d00
x86, AMD IOMMU: add dma_ops initialization function
...
This patch adds the function to initialize the dma_ops for the AMD IOMMU.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:20 +02:00
c432f3df8e
x86, AMD IOMMU: add pre-allocation of protection domains
...
This patch adds a function to pre-allocate protection domains. So we don't have
to allocate it on the first request for a device (which can happen in atomic
mode).
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:20 +02:00
5d8b53cf3f
x86, AMD IOMMU: add mapping functions for coherent mappings
...
This patch adds the dma_ops functions for coherent mappings.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:19 +02:00
65b050adbf
x86, AMD IOMMU: add mapping functions for scatter gather lists
...
This patch adds the dma_ops functions for mapping and unmapping scatter gather
lists.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:19 +02:00
4da70b9e4f
x86, AMD IOMMU: add dma_ops mapping functions for single mappings
...
This patch adds the dma_ops specific mapping functions for single mappings.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:18 +02:00
cb76c32297
x86, AMD IOMMU: add generic dma_ops mapping functions
...
This patch adds the generic functions to map and unmap pages to a protection
domain for dma_ops usage.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:18 +02:00
b20ac0d4d6
x86, AMD IOMMU: add functions to find IOMMU device resources
...
This patch adds functions necessary to find the IOMMU resources for a specific
device.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:17 +02:00
ec487d1a11
x86, AMD IOMMU: add domain allocation and deallocation functions
...
This patch adds the functions to allocate and free protection domains for the
IOMMU.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:17 +02:00
d3086444b2
x86, AMD IOMMU: add address allocation and deallocation functions
...
This patch adds the address allocator to the AMD IOMMU code.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:16 +02:00
bd0e521158
x86, AMD IOMMU: add functions to initialize unity mappings
...
This patch adds the functions which will initialize the unity mappings in the
device page tables.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:16 +02:00
a19ae1eccf
x86, AMD IOMMU: add functions to send IOMMU commands
...
This patch adds generic handling function as well as all functions to send
specific commands to the IOMMU hardware as required by this driver.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:15 +02:00
b6c02715cf
x86, AMD IOMMU: add generic defines and structures for mapping code
...
This patch adds generic stuff used by the mapping and unmapping code for the
AMD IOMMU.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
Cc: iommu@lists.linux-foundation.org
Cc: bhavna.sarathy@amd.com
Cc: Sebastian.Biemueller@amd.com
Cc: robert.richter@amd.com
Cc: joro@8bytes.org
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-06-27 10:12:14 +02:00