aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* x86/amd-iommu: Cleanup attach/detach_device codeJoerg Roedel2009-11-271-44/+58
| | | | | | | This patch cleans up the attach_device and detach_device paths and fixes reference counting while at it. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Keep devices per domain in a listJoerg Roedel2009-11-272-0/+13
| | | | | | | | | This patch introduces a list to each protection domain which keeps all devices associated with the domain. This can be used later to optimize certain functions and to completly remove the amd_iommu_pd_table. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Add device bind reference countingJoerg Roedel2009-11-272-8/+30
| | | | | | | | | | | This patch adds a reference count to each device to count how often the device was bound to that domain. This is important for single devices that act as an alias for a number of others. These devices must stay bound to their domains until all devices that alias to it are unbound from the same domain. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Use dev->arch->iommu to store iommu related informationJoerg Roedel2009-11-273-24/+95
| | | | | | | | | | This patch changes IOMMU code to use dev->archdata->iommu to store information about the alias device and the domain the device is attached to. This allows the driver to get rid of the amd_iommu_pd_table in the future. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove support for domain sharingJoerg Roedel2009-11-273-28/+2
| | | | | | | | This patch makes device isolation mandatory and removes support for the amd_iommu=share option. This simplifies the code in several places. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Rearrange dma_ops related functionsJoerg Roedel2009-11-271-47/+42
| | | | | | | This patch rearranges two dma_ops related functions so that their forward declarations are not longer necessary. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Move some pte allocation functions in the right sectionJoerg Roedel2009-11-271-99/+94
| | | | | | | | This patch moves alloc_pte() and fetch_pte() into the page table handling code section so that the forward declarations for them could be removed. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove iommu parameter from dma_ops_domain_allocJoerg Roedel2009-11-271-8/+4
| | | | | | | This function doesn't use the parameter anymore so it can be removed. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Use get_device_id and check_device where appropriateJoerg Roedel2009-11-271-61/+49
| | | | | | | | | | The logic of these two functions is reimplemented (at least in parts) in places in the code. This patch removes these code duplications and uses the functions instead. As a side effect it moves check_device() to the helper function code section. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Move find_protection_domain to helper functionsJoerg Roedel2009-11-271-29/+28
| | | | | | | This is a helper function and when its placed in the helper function section we can remove its forward declaration. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Simplify get_device_resources()Joerg Roedel2009-11-271-50/+36
| | | | | | | | | | With the previous changes the get_device_resources function can be simplified even more. The only important information for the callers is the protection domain. This patch renames the function to get_domain() and let it only return the protection domain for a device. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Let domain_for_device handle aliasesJoerg Roedel2009-11-271-92/+135
| | | | | | | | | | | | If there is no domain associated to a device yet and the device has an alias device which already has a domain, the original device needs to have the same domain as the alias device. This patch changes domain_for_device to handle this situation and directly assigns the alias device domain to the device in this situation. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove iommu specific handling from dma_ops pathJoerg Roedel2009-11-271-17/+11
| | | | | | | This patch finishes the removal of all iommu specific handling code in the dma_ops path. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove iommu parameter from __(un)map_singleJoerg Roedel2009-11-271-10/+8
| | | | | | | | With the prior changes this parameter is not longer required. This patch removes it from the function and all callers. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Make alloc_new_range aware of multiple IOMMUsJoerg Roedel2009-11-271-12/+15
| | | | | | | | Since the assumption that an dma_ops domain is only bound to one IOMMU was given up we need to make alloc_new_range aware of it. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove iommu parameter from dma_ops_domain_(un)mapJoerg Roedel2009-11-271-7/+5
| | | | | | | The parameter is unused in these function so remove it from the parameter list. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Use check_device in get_device_resourcesJoerg Roedel2009-11-271-58/+28
| | | | | | | | Every call-place of get_device_resources calls check_device before it. So call it from get_device_resources directly and simplify the code. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Use check_device for amd_iommu_dma_supportedJoerg Roedel2009-11-271-16/+19
| | | | | | | | The check_device logic needs to include the dma_supported checks to be really sure. Merge the dma_supported logic into check_device and use it to implement dma_supported. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Make np-cache a global flagJoerg Roedel2009-11-273-7/+10
| | | | | | | | The non-present cache flag was IOMMU local until now which doesn't make sense. Make this a global flag so we can remove the lase user of 'struct iommu' in the map/unmap path. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Reimplement flush_all_domains_on_iommu()Joerg Roedel2009-11-271-19/+24
| | | | | | | | This patch reimplements the function flush_all_domains_on_iommu to use the global protection domain list. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Reimplement amd_iommu_flush_all_domains()Joerg Roedel2009-11-271-3/+5
| | | | | | | | This patch reimplementes the amd_iommu_flush_all_domains function to use the global protection domain list instead of flushing every domain on every IOMMU. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Implement protection domain listJoerg Roedel2009-11-273-0/+48
| | | | | | | This patch adds code to keep a global list of all protection domains. This allows to simplify the resume code. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Remove iommu_flush_domain functionJoerg Roedel2009-11-271-16/+2
| | | | | | | | This iommu_flush_tlb_pde function does essentially the same. So the iommu_flush_domain function is redundant and can be removed. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Use __iommu_flush_pages for tlb flushesJoerg Roedel2009-11-271-15/+7
| | | | | | | This patch re-implements iommu_flush_tlb functions to use the __iommu_flush_pages logic. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Make iommu_flush_pages aware of multiple IOMMUsJoerg Roedel2009-11-271-7/+24
| | | | | | | | | | | | | | This patch extends the iommu_flush_pages function to flush the TLB entries on all IOMMUs the domain has devices on. This basically gives up the former assumption that dma_ops domains are only bound to one IOMMU in the system. For dma_ops domains this is still true but not for IOMMU-API managed domains. Giving this assumption up for dma_ops domains too allows code simplification. Further it splits out the main logic into a generic function which can be used by iommu_flush_tlb too. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Add function to complete a tlb flushJoerg Roedel2009-11-271-6/+22
| | | | | | | | | This patch adds a function to the AMD IOMMU driver which completes all queued commands an all IOMMUs a specific domain has devices attached on. This is required in a later patch when per-domain flushing is implemented. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Add per IOMMU reference countingJoerg Roedel2009-11-272-3/+11
| | | | | | | This patch adds reference counting for protection domains per IOMMU. This allows a smarter TLB flushing strategy. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Add an index field to struct amd_iommuJoerg Roedel2009-11-272-0/+32
| | | | | | | | | This patch adds an index field to struct amd_iommu which can be used to lookup it up in an array. This index will be used in struct protection_domain to keep track which protection domain has devices behind which IOMMU. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Update copyright headersJoerg Roedel2009-11-274-4/+4
| | | | | | | This patch updates the copyright headers in the relevant AMD IOMMU driver files to match the date of the latest changes. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: Separate internal interface definitionsJoerg Roedel2009-11-275-11/+44
| | | | | | | This patch moves all function declarations which are only used inside the driver code to a seperate header file. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86: Fix iommu=soft boot optionFUJITA Tomonori2009-11-251-1/+3
| | | | | | | | | | | | | | iommu=soft boot option forces the kernel to use swiotlb. ( This has the side-effect of enabling the swiotlb over the GART if this boot option is provided. This is the desired behavior of the swiotlb boot option and works like that for all other hw-IOMMU drivers. ) Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: yinghai@kernel.org LKML-Reference: <20091125084611O.fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* x86/amd-iommu: attach devices to pre-allocated domains earlyJoerg Roedel2009-11-231-2/+6
| | | | | | | | | | | | | | For some devices the ACPI table may define unity map requirements which must me met when the IOMMU is enabled. So we need to attach devices to their domains as early as possible so that these mappings are in place when needed. This patch assigns the domains right after they are allocated. Otherwise this can result in I/O page faults before a driver binds to a device and BIOS is still using it. Cc: stable@kernel.org Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86/amd-iommu: un__init iommu_setup_msiJoerg Roedel2009-11-231-1/+1
| | | | | | | | This function may be called on the resume path and can not be dropped after booting. Cc: stable@kernel.org Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
* x86: gart: Clean up the code a bitIngo Molnar2009-11-171-55/+61
| | | | | | | | | | | | Clean up various small stylistic details in the GART code. No functionality changed. Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: muli@il.ibm.com Cc: joerg.roedel@amd.com LKML-Reference: <1258287594-8777-2-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* x86: Calgary: Remove unnecessary DMA_ERROR_CODE usageFUJITA Tomonori2009-11-171-9/+6
| | | | | | | | | | | | This cleans up iommu_alloc() a bit and removes unnecessary DMA_ERROR_CODE usage. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: muli@il.ibm.com Cc: joerg.roedel@amd.com LKML-Reference: <1258287594-8777-4-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* x86: Kill bad_dma_address variableFUJITA Tomonori2009-11-175-29/+24
| | | | | | | | | | | | | | | | | | | | | | | | This kills bad_dma_address variable, the old mechanism to enable IOMMU drivers to make dma_mapping_error() work in IOMMU's specific way. bad_dma_address variable was introduced to enable IOMMU drivers to make dma_mapping_error() work in IOMMU's specific way. However, it can't handle systems that use both swiotlb and HW IOMMU. SO we introduced dma_map_ops->mapping_error to solve that case. Intel VT-d, GART, and swiotlb already use dma_map_ops->mapping_error. Calgary, AMD IOMMU, and nommu use zero for an error dma address. This adds DMA_ERROR_CODE and converts them to use it (as SPARC and POWER does). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: muli@il.ibm.com Cc: joerg.roedel@amd.com LKML-Reference: <1258287594-8777-3-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* x86: gart: Add own dma_mapping_error functionFUJITA Tomonori2009-11-171-5/+13
| | | | | | | | | | | | | | | GART IOMMU is the only user of bad_dma_address variable. This patch converts GART to use the newer mechanism, fill in ->mapping_error() in struct dma_map_ops, to make dma_mapping_error() work in IOMMU specific way. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: muli@il.ibm.com Cc: joerg.roedel@amd.com LKML-Reference: <1258287594-8777-2-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* Merge commit 'v2.6.32-rc7' into core/iommuIngo Molnar2009-11-17330-3313/+6171
|\ | | | | | | | | | | Merge reason: Add fixes we'll depend on. Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * Linux 2.6.32-rc7Linus Torvalds2009-11-121-1/+1
| |
| * Merge branch 'omap-fixes-for-linus' of ↵Linus Torvalds2009-11-129-56/+126
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 * 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: omap3: Decrease cpufreq transition latency omap3: update Pandora defconfig omap3: 3430sdp: Enable Linux Regulator framework omap3: beagle: Fix USB host port power control omap3: pandora: Fix keypad keymap omap1: Amstrad Delta defconfig fixes omap: Fix omapfb/lcdc on OMAP1510 broken when PM set omap: Use resource_size omap: Fix race condition in omap dma driver
| | * omap3: Decrease cpufreq transition latencyMike Turquette2009-11-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adjust OMAP3 frequency transition latency from 10,000,000uS to a more reasonable 300,000uS. This causes ondemand and conservative governors to sample CPU load more often resulting in more responsive behavior. Tested on Android 2.6.29; using this value and conservative governor, CORE power consumption on Zoom2 was comparable to the old and unresponsive 10,000,000uS value while UI responsiveness was greatly improved. Signed-off-by: Mike Turquette <mturquette@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap3: update Pandora defconfigGrazvydas Ignotas2009-11-111-5/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch updates defconfig to enable options needed to properly boot OMAP3 pandora board. It also enables MMC, OTG, GPIO LEDs, TWL4030 GPIO and sound drivers. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap3: 3430sdp: Enable Linux Regulator frameworkSergio Aguirre2009-11-111-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Some drivers have dependencies on this, and therefore should be enabled. Signed-off-by: Sergio Aguirre <saaguirre@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap3: beagle: Fix USB host port power controlJarkko Nikula2009-11-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The host port power is enabled by driving the nEN_USB_PWR low as stated in the comment. This fix is originally from Steve Sakoman <steve@sakoman.com>. Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> Cc: Steve Sakoman <steve@sakoman.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap3: pandora: Fix keypad keymapGrazvydas Ignotas2009-11-111-39/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original TWL4030 keypad driver from linux-omap used KEY() macro defined as (col, row), but while it was merged upstream it was changed to use matrix keypad infrastructure, which uses (row, col) format. Update the keymap in board file to match layout of mainline driver. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap1: Amstrad Delta defconfig fixesJanusz Krzysztofik2009-11-111-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch provides the following fixes: - keep kernel small enough to boot with standard tools, - ensure compatibility with both new and legacy distros, - turn on support for recently added or fixed hardware features. Created and tested against linux-2.6.32-rc5. Signed-off-by: Janusz Krzysztofik <jkrzysz@tis.icnet.pl> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap: Fix omapfb/lcdc on OMAP1510 broken when PM setJanusz Krzysztofik2009-11-111-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With CONFIG_PM=y, the omapfb/lcdc device on Amstrad Delta, after initially starting correctly, breaks with the following error messages: omapfb omapfb: resetting (status 0xffffff96,reset count 1) ... omapfb omapfb: resetting (status 0xffffff96,reset count 100) omapfb omapfb: too many reset attempts, giving up. Looking closer at this I have found that it had been broken almost 2 years ago with commit 2418996e3b100114edb2ae110d5d4acb928909d2, PM fixes for OMAP1. The definite reason for broken omapfb/lcdc behavoiur in PM mode appeared to be ARM_IDLECT1:IDLIF_ARM (bit 6) put into idle regardless of LCD DMA possibly running. The bit were set based on return value of the omap_dma_running() function that did not check for dedicated LCD DMA channel status. The patch below fixes this. Note that the hardcoded register value will be fixed during the next merge cycle to use OMAP_LCDC_ defines. Currently the OMAP_LCDC_ defines are local to drivers/video/omap/lcdc.c, so let's not start moving those right now. Created against linux-2.6.32-rc6 Tested on Amstrad Delta Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap: Use resource_sizeTobias Klauser2009-11-102-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use the resource_size function instead of manually calculating the resource size. This reduces the chance of introducing off-by-one errors and actually fixes one in mailbox.c. Signed-off-by: Tobias Klauser <tklauser@distanz.ch> Signed-off-by: Tony Lindgren <tony@atomide.com>
| | * omap: Fix race condition in omap dma driverTao Hu2009-11-101-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug could cause irq enable bit of one DMA channel is cleared/set unexpectedly when 2 (or more) drivers are calling omap_request_dma()/omap_free_dma() simultaneously Signed-off-by: Fei Yang <AFY095@motorola.com> Signed-off-by: Tao Hu <taohu@motorola.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
| * | __generic_block_fiemap(): fix for files bigger than 4GBMike Hommey2009-11-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because of an integer overflow on start_blk, various kind of wrong results would be returned by the generic_block_fiemap() handler, such as no extents when there is a 4GB+ hole at the beginning of the file, or wrong fe_logical when an extent starts after the first 4GB. Signed-off-by: Mike Hommey <mh@glandium.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: Theodore Ts'o <tytso@mit.edu> Cc: Eric Sandeen <sandeen@sgi.com> Cc: Josef Bacik <jbacik@redhat.com> Cc: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>