aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/amd_iommu.c
Commit message (Collapse)AuthorAge
* x86: Mark device_nb as static and fix NULL noiseJaswinder Singh Rajput2009-07-01
| | | | | | | | | | | | | | | | | | | | | | | This sparse warning: arch/x86/kernel/amd_iommu.c:1195:23: warning: symbol 'device_nb' was not declared. Should it be static? triggers because device_nb is global but is only used in a single .c file. change device_nb to static to fix that - this also addresses the sparse warning. This sparse warning: arch/x86/kernel/amd_iommu.c:1766:10: warning: Using plain integer as NULL pointer triggers because plain integer 0 is used in place of a NULL pointer. change 0 to NULL to fix that - this also address the sparse warning. Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> Cc: Joerg Roedel <joerg.roedel@amd.com> LKML-Reference: <1246458194.6940.20.camel@hpdv5.satnam> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* amd-iommu: flush domain tlb when attaching a new deviceChris Wright2009-06-15
| | | | | | | | | | | | When kexec'ing to a new kernel (for example, when crashing and launching a kdump session), the AMD IOMMU may have cached translations. The kexec'd kernel, during initialization, will invalidate the IOMMU device table entries, but not the domain translations. These stale entries can cause a device's DMA to fail, makes it rough to write a dump to disk when the disk controller can't DMA ;-) Signed-off-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* amd-iommu: remove unnecessary "AMD IOMMU: " prefixJoerg Roedel2009-06-09
| | | | | | | That prefix is already included in the DUMP_printk macro. So there is no need to repeat it in the format string. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* amd-iommu: detach device explicitly before attaching it to a new domainJoerg Roedel2009-06-09
| | | | | | | | | | | This fixes a bug with a device that could not be assigned to a KVM guest because it is still assigned to a dma_ops protection domain. [chrisw: simply remove WARN_ON(), will always fire since dev->driver will be pci-sub] Signed-off-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* amd-iommu: remove BUS_NOTIFY_BOUND_DRIVER handlingJoerg Roedel2009-06-09
| | | | | | | | Handling this event causes device assignment in KVM to fail because the device gets re-attached as soon as the pci-stub registers as the driver for the device. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* Merge commit 'tip/core/iommu' into amd-iommu/fixesJoerg Roedel2009-06-09
|\
| *---. Merge branches 'amd-iommu/fixes', 'amd-iommu/debug', ↵Joerg Roedel2009-05-28
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'amd-iommu/suspend-resume' and 'amd-iommu/extended-allocator' into amd-iommu/2.6.31 Conflicts: arch/x86/kernel/amd_iommu.c arch/x86/kernel/amd_iommu_init.c
| | | | * amd-iommu: don't free dma adresses below 512MB with CONFIG_IOMMU_STRESSJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will test the automatic aperture enlargement code. This is important because only very few devices will ever trigger this code path. So force it under CONFIG_IOMMU_STRESS. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: don't preallocate page tables with CONFIG_IOMMU_STRESSJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This forces testing of on-demand page table allocation code. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: disable round-robin allocator for CONFIG_IOMMU_STRESSJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disabling the round-robin allocator results in reusing the same dma-addresses again very fast. This is a good test if the iotlb flushing is working correctly. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: remove amd_iommu_size kernel parameterJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This parameter is not longer necessary when aperture increases dynamically. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: enlarge the aperture dynamicallyJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By dynamically increasing the aperture the extended allocator is now ready for use. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: handle exlusion ranges and unity mappings in alloc_new_rangeJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes sure no reserved addresses are allocated in an dma_ops domain when the aperture is increased dynamically. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: move aperture_range allocation code to seperate functionJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch prepares the dynamic increasement of dma_ops domain apertures. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: change dma_dom->next_bit to dma_dom->next_addressJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify the code a little bit by using the same unit for all address space related state in the dma_ops domain structure. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: make address allocator aware of multiple aperture rangesJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes the AMD IOMMU address allocator to allow up to 32 aperture ranges per dma_ops domain. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: handle page table allocation failures in dma_ops codeJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code will be required when the aperture size increases dynamically in the extended address allocator. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: move page table allocation code to seperate functionJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes page table allocation usable for dma_ops code. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | | * amd-iommu: introduce aperture_range structureJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a preperation for extended address allocator. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | * | amd-iommu: add function to flush tlb for all devicesJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function is required for suspend/resume support with AMD IOMMU enabled. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | * | amd-iommu: add function to flush tlb for all domainsJoerg Roedel2009-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function is required for suspend/resume support with AMD IOMMU enabled. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| | | * | amd-iommu: introduce for_each_iommu* macrosJoerg Roedel2009-05-28
| | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| | * / amd-iommu: move protection domain printk to dump codeJoerg Roedel2009-05-28
| | |/ | | | | | | | | | | | | | | | | | | This information is only helpful for debugging. Don't print it anymore unless explicitly requested. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* | / amd_iommu: fix lock imbalanceJiri Slaby2009-06-03
|/ / | | | | | | | | | | | | | | | | | | | | In alloc_coherent there is an omitted unlock on the path where mapping fails. Add the unlock. [ Impact: fix lock imbalance in alloc_coherent ] Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* / amd iommu: properly detach from protection domain on ->removeChris Wright2009-05-28
|/ | | | | | | | | | | | | 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>
* Merge git://git.infradead.org/iommu-2.6Linus Torvalds2009-04-03
|\ | | | | | | | | | | | | | | | | | | | | | | * 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
| * iommu: Add domain_has_cap iommu_opsSheng Yang2009-03-24
| | | | | | | | | | | | | | | | | | 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>
* | Merge branch 'iommu/fixes-2.6.29' of ↵Ingo Molnar2009-03-05
|\ \ | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu
| * | AMD IOMMU: remove unnecessary ifdefFUJITA Tomonori2009-03-05
| |/ | | | | | | | | | | | | | | 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>
* | x86, ia64: convert to use generic dma_map_ops structFUJITA Tomonori2009-01-06
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | x86: remove map_single and unmap_single in struct dma_mapping_opsFUJITA Tomonori2009-01-06
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* | x86, AMD IOMMU: add map_page and unmap_pageFUJITA Tomonori2009-01-06
|/ | | | | | | | | | | 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>
* AMD IOMMU: remove now unnecessary #ifdefsJoerg Roedel2009-01-03
| | | | | | | 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>
* AMD IOMMU: prealloc_protection_domains should be staticJaswinder Singh Rajput2009-01-03
| | | | | | | | | | 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>
* AMD IOMMU: add statistics about total number of map requestsJoerg Roedel2009-01-03
| | | | | | Impact: see total number of map requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add statistics about allocated io memoryJoerg Roedel2009-01-03
| | | | | | Impact: see amount of allocated io memory in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for domain tlb flushesJoerg Roedel2009-01-03
| | | | | | Impact: see number of domain tlb flushes in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for single iommu domain tlb flushesJoerg Roedel2009-01-03
| | | | | | Impact: see number of single iommu domain tlb flushes in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for cross-page requestJoerg Roedel2009-01-03
| | | | | | Impact: see number of requests for more than one page in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for free_coherent requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of free_coherent requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for alloc_coherent requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of alloc_coherent requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for unmap_sg requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of unmap_sg requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for map_sg requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of map_sg requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for unmap_single requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of unmap_single requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for map_single requestsJoerg Roedel2009-01-03
| | | | | | Impact: see number of map_single requests in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add stats counter for completion wait eventsJoerg Roedel2009-01-03
| | | | | | Impact: see number of completion wait events in debugfs Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: add init code for statistic collectionJoerg Roedel2009-01-03
| | | | | | Impact: create a new debugfs directory Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: use calc_devid in prealloc_protection_domainsJoerg Roedel2009-01-03
| | | | | | Impact: cleanup Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: convert iommu->need_sync to boolJoerg Roedel2009-01-03
| | | | | | Impact: use bool instead of int for iommu->need_sync Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* AMD IOMMU: use dev_name instead of self-build print_devidJoerg Roedel2009-01-03
| | | | | | Impact: use generic dev_name instead of own function Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>