Joerg Roedel
8bda3092bc
amd-iommu: move page table allocation code to seperate function
...
This patch makes page table allocation usable for dma_ops code.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:13:20 +02:00
Joerg Roedel
c3239567a2
amd-iommu: introduce aperture_range structure
...
This is a preperation for extended address allocator.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:12:52 +02:00
Joerg Roedel
7d7a110c61
amd-iommu: add function to flush tlb for all devices
...
This function is required for suspend/resume support with AMD IOMMU
enabled.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:10:43 +02:00
Joerg Roedel
bfd1be1857
amd-iommu: add function to flush tlb for all domains
...
This function is required for suspend/resume support with AMD IOMMU
enabled.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:10:12 +02:00
Joerg Roedel
3bd221724a
amd-iommu: introduce for_each_iommu* macros
...
This patch introduces the for_each_iommu and for_each_iommu_safe macros
to simplify the developers life when having to iterate over all AMD
IOMMUs in the system.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:08:50 +02:00
Chris Wright
c1eee67b2d
amd iommu: properly detach from protection domain on ->remove
...
Some drivers may use the dma api during ->remove which will
cause a protection domain to get reattached to a device. Delay the
detach until after the driver is completely unbound.
[ joro: added a little merge helper ]
[ Impact: fix too early device<->domain removal ]
Signed-off-by: Chris Wright <chrisw@redhat.com >
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 18:06:54 +02:00
Joerg Roedel
b3b99ef8b4
amd-iommu: move protection domain printk to dump code
...
This information is only helpful for debugging. Don't print it anymore
unless explicitly requested.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-05-28 17:55:08 +02:00
Linus Torvalds
ca1ee219c0
Merge git://git.infradead.org/iommu-2.6
...
* git://git.infradead.org/iommu-2.6:
intel-iommu: Fix address wrap on 32-bit kernel.
intel-iommu: Enable DMAR on 32-bit kernel.
intel-iommu: fix PCI device detach from virtual machine
intel-iommu: VT-d page table to support snooping control bit
iommu: Add domain_has_cap iommu_ops
intel-iommu: Snooping control support
Fixed trivial conflicts in arch/x86/Kconfig and drivers/pci/intel-iommu.c
2009-04-03 10:36:57 -07:00
Sheng Yang
dbb9fd8630
iommu: Add domain_has_cap iommu_ops
...
This iommu_op can tell if domain have a specific capability, like snooping
control for Intel IOMMU, which can be used by other components of kernel to
adjust the behaviour.
Signed-off-by: Sheng Yang <sheng@linux.intel.com >
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com >
2009-03-24 09:42:51 +00:00
Ingo Molnar
0bd5c4f7c8
Merge branch 'iommu/fixes-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu
2009-03-05 12:47:34 +01:00
FUJITA Tomonori
5f812de63c
AMD IOMMU: remove unnecessary ifdef
...
We try to avoid this type of ifdef and we can safely remove this
ifdef.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp >
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-03-05 12:09:41 +01:00
FUJITA Tomonori
160c1d8e40
x86, ia64: convert to use generic dma_map_ops struct
...
This converts X86 and IA64 to use include/linux/dma-mapping.h.
It's a bit large but pretty boring. The major change for X86 is
converting 'int dir' to 'enum dma_data_direction dir' in DMA mapping
operations. The major changes for IA64 is using map_page and
unmap_page instead of map_single and unmap_single.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp >
Acked-by: Tony Luck <tony.luck@intel.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-01-06 14:06:57 +01:00
FUJITA Tomonori
d7dff84053
x86: remove map_single and unmap_single in struct dma_mapping_ops
...
This patch converts dma_map_single and dma_unmap_single to use
map_page and unmap_page respectively and removes unnecessary
map_single and unmap_single in struct dma_mapping_ops.
This leaves intel-iommu's dma_map_single and dma_unmap_single since
IA64 uses them. They will be removed after the unification.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-01-06 14:06:56 +01:00
FUJITA Tomonori
51491367c2
x86, AMD IOMMU: add map_page and unmap_page
...
This is a preparation of struct dma_mapping_ops unification. We use
map_page and unmap_page instead of map_single and unmap_single.
We will remove map_single and unmap_single hooks in the last patch in
this patchset.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-01-06 14:06:55 +01:00
Joerg Roedel
065a6d68c7
AMD IOMMU: remove now unnecessary #ifdefs
...
The #ifdef's are no longer necessary when the iommu-api and the amd
iommu updates are merged together.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 16:44:15 +01:00
Jaswinder Singh Rajput
0e93dd8835
AMD IOMMU: prealloc_protection_domains should be static
...
Impact: cleanup, reduce kernel size a bit, avoid sparse warning
Fixes sparse warning:
arch/x86/kernel/amd_iommu.c:1299:6: warning: symbol 'prealloc_protection_domains' was not declared. Should it be static?
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com >
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 16:41:18 +01:00
Joerg Roedel
8ecaf8f19f
AMD IOMMU: add statistics about total number of map requests
...
Impact: see total number of map requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:12:00 +01:00
Joerg Roedel
5774f7c5fe
AMD IOMMU: add statistics about allocated io memory
...
Impact: see amount of allocated io memory in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:12:00 +01:00
Joerg Roedel
18811f55d4
AMD IOMMU: add stats counter for domain tlb flushes
...
Impact: see number of domain tlb flushes in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
f57d98ae69
AMD IOMMU: add stats counter for single iommu domain tlb flushes
...
Impact: see number of single iommu domain tlb flushes in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
c1858976f5
AMD IOMMU: add stats counter for cross-page request
...
Impact: see number of requests for more than one page in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
5d31ee7e08
AMD IOMMU: add stats counter for free_coherent requests
...
Impact: see number of free_coherent requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
c8f0fb36bf
AMD IOMMU: add stats counter for alloc_coherent requests
...
Impact: see number of alloc_coherent requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
55877a6bcd
AMD IOMMU: add stats counter for unmap_sg requests
...
Impact: see number of unmap_sg requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
d03f067a9d
AMD IOMMU: add stats counter for map_sg requests
...
Impact: see number of map_sg requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
146a6917fc
AMD IOMMU: add stats counter for unmap_single requests
...
Impact: see number of unmap_single requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
0f2a86f200
AMD IOMMU: add stats counter for map_single requests
...
Impact: see number of map_single requests in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:59 +01:00
Joerg Roedel
da49f6df72
AMD IOMMU: add stats counter for completion wait events
...
Impact: see number of completion wait events in debugfs
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:58 +01:00
Joerg Roedel
7f26508bbb
AMD IOMMU: add init code for statistic collection
...
Impact: create a new debugfs directory
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:58 +01:00
Joerg Roedel
edcb34da25
AMD IOMMU: use calc_devid in prealloc_protection_domains
...
Impact: cleanup
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:57 +01:00
Joerg Roedel
0cfd7aa90b
AMD IOMMU: convert iommu->need_sync to bool
...
Impact: use bool instead of int for iommu->need_sync
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:57 +01:00
Joerg Roedel
ab89672286
AMD IOMMU: use dev_name instead of self-build print_devid
...
Impact: use generic dev_name instead of own function
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
1ac4cbbc5e
AMD IOMMU: allocate a new protection for hotplugged devices
...
Impact: also hotplug devices benefit from device isolation
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
e2dc14a2a6
AMD IOMMU: add a domain flag for default domains
...
Impact: adds a new protection domain flag
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
26961efe0d
AMD IOMMU: register functions for the IOMMU API
...
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
645c4c8d72
AMD IOMMU: add domain address lookup function for IOMMU API
...
Impact: add a generic function to lockup addresses in protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
eb74ff6cc0
AMD IOMMU: add domain unmap function for IOMMU API
...
Impact: add a generic function to unmap pages into protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
c6229ca649
AMD IOMMU: add domain map function for IOMMU API
...
Impact: add a generic function to map pages into protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
01106066a6
AMD IOMMU: add device attach function for IOMMU API
...
Impact: add a generic function to attach devices to protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:56 +01:00
Joerg Roedel
684f288884
AMD IOMMU: add device detach function for IOMMU API
...
Impact: add a generic function to detach devices from protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
98383fc301
AMD IOMMU: add domain destroy function for IOMMU API
...
Impact: add a generic function for releasing protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
c156e347d6
AMD IOMMU: add domain init function for IOMMU API
...
Impact: add a generic function for allocation protection domains
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
6d98cd8043
AMD IOMMU: add domain cleanup helper function
...
Impact: add a function to remove all devices from a domain
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
e275a2a0fc
AMD IOMMU: add device notifier callback
...
Impact: inform IOMMU about state change of a device in the driver core
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
355bf553ed
AMD IOMMU: add device detach helper functions
...
Impact: add helper functions to detach a device from a domain
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:55 +01:00
Joerg Roedel
f1179dc005
AMD IOMMU: rename set_device_domain function
...
Impact: rename set_device_domain() to attach_device()
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:54 +01:00
Joerg Roedel
863c74ebd0
AMD IOMMU: add device reference counting for protection domains
...
Impact: know how many devices are assigned to a domain
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:54 +01:00
Joerg Roedel
5b28df6f43
AMD IOMMU: add checks for dma_ops domain to dma_ops functions
...
Impact: detect when a driver uses a device assigned otherwise
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:54 +01:00
Joerg Roedel
9fdb19d64c
AMD IOMMU: add protection domain flags
...
Imapct: add a new struct member to 'struct protection_domain'
When using protection domains for dma_ops and KVM its better to know for
which subsystem it was allocated. Add a flags member to struct
protection domain for that purpose.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:54 +01:00
Joerg Roedel
43f4960983
AMD IOMMU: add iommu_flush_domain function
...
Impact: add a function to flush a domain id on every IOMMU
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com >
2009-01-03 14:11:54 +01:00