Skip to content
Permalink
Robin-Murphy/i…
Switch branches/tags

Commits on Jul 21, 2021

  1. iommu/arm-smmu: Allow non-strict in pgtable_quirks interface

    To make io-pgtable aware of a flush queue being dynamically enabled,
    allow IO_PGTABLE_QUIRK_NON_STRICT to be set even after a domain has been
    attached to, and hook up the final piece of the puzzle in iommu-dma.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  2. iommu: Allow enabling non-strict mode dynamically

    Allocating and enabling a flush queue is in fact something we can
    reasonably do while a DMA domain is active, without having to rebuild it
    from scratch. Thus we can allow a strict -> non-strict transition from
    sysfs without requiring to unbind the device's driver, which is of
    particular interest to users who want to make selective relaxations to
    critical devices like the one serving their root filesystem.
    
    Disabling and draining a queue also seems technically possible to
    achieve without rebuilding the whole domain, but would certainly be more
    involved. Furthermore there's not such a clear use-case for tightening
    up security *after* the device may already have done whatever it is that
    you don't trust it not to do, so we only consider the relaxation case.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  3. iommu/dma: Factor out flush queue init

    Factor out flush queue setup from the initial domain init so that we
    can potentially trigger it from sysfs later on in a domain's lifetime.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  4. iommu: Allow choosing DMA strictness at build time

    To parallel the sysfs behaviour, extend the build-time configuration
    for default domains to include the new type as well.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  5. iommu: Expose DMA domain strictness via sysfs

    The sysfs interface for default domain types exists primarily so users
    can choose the performance/security tradeoff relevant to their own
    workload. As such, the choice between the policies for DMA domains fits
    perfectly as an additional point on that scale - downgrading a
    particular device from a strict default to non-strict may be enough to
    let it reach the desired level of performance, while still retaining
    more peace of mind than with a wide-open identity domain. Now that we've
    abstracted non-strict mode as a distinct type of DMA domain, allow it to
    be chosen through the user interface as well.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  6. iommu: Express DMA strictness via the domain type

    Eliminate the iommu_get_dma_strict() indirection and pipe the
    information through the domain type from the beginning. Besides
    the flow simplification this also has several nice side-effects:
    
     - Automatically implies strict mode for untrusted devices by
       virtue of their IOMMU_DOMAIN_DMA override.
     - Ensures that we only ends up using flush queues for drivers
       which are aware of them and can actually benefit.
     - Allows us to handle flush queue init failure by falling back
       to strict mode instead of leaving it to possibly blow up later.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  7. iommu/vt-d: Prepare for multiple DMA domain types

    In preparation for the strict vs. non-strict decision for DMA domains to
    be expressed in the domain type, make sure we expose our flush queue
    awareness by accepting the new domain type, and test the specific
    feature flag where we want to identify DMA domains in general. The DMA
    ops setup can simply be made unconditional, since iommu-dma already
    knows not to touch identity domains.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  8. iommu/arm-smmu: Prepare for multiple DMA domain types

    In preparation for the strict vs. non-strict decision for DMA domains to
    be expressed in the domain type, make sure we expose our flush queue
    awareness by accepting the new domain type, and test the specific
    feature flag where we want to identify DMA domains in general.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  9. iommu/amd: Prepare for multiple DMA domain types

    The DMA ops setup can simply be unconditional, since iommu-dma
    already knows not to touch identity domains.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  10. iommu: Introduce explicit type for non-strict DMA domains

    Promote the difference between strict and non-strict DMA domains from an
    internal detail to a distinct domain feature and type, to pave the road
    for exposing it through the sysfs default domain interface.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  11. iommu/dma: Remove redundant "!dev" checks

    iommu_dma_init_domain() is now only called from iommu_setup_dma_ops(),
    which has already assumed dev to be non-NULL.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  12. iommu/dma: Unexport IOVA cookie management

    IOVA cookies are now got and put by core code, so we no longer need to
    export these to modular drivers. The export for getting MSI cookies
    stays, since VFIO can still be a module, but it was already relying on
    someone else putting them, so that aspect is unaffected.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  13. iommu/virtio: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  14. iommu/sun50i: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  15. iommu/sprd: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  16. iommu/rockchip: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  17. iommu/mtk: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  18. iommu/ipmmu-vmsa: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  19. iommu/exynos: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  20. iommu/vt-d: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  21. iommu/arm-smmu: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  22. iommu/amd: Drop IOVA cookie management

    The core code bakes its own cookies now.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021
  23. iommu: Pull IOVA cookie management into the core

    Now that everyone has converged on iommu-dma for IOMMU_DOMAIN_DMA
    support, we can abandon the notion of drivers being responsible for the
    cookie type, and consolidate all the management into the core code.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    rmurphy-arm authored and intel-lab-lkp committed Jul 21, 2021

Commits on Jul 15, 2021

  1. MAINTAINERS: Add Suravee Suthikulpanit as Reviewer for AMD IOMMU (AMD…

    …-Vi)
    
    To help review changes related to AMD IOMMU.
    
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Link: https://lore.kernel.org/r/1626296542-30454-1-git-send-email-suravee.suthikulpanit@amd.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    ssuthiku-amd authored and joergroedel committed Jul 15, 2021

Commits on Jul 14, 2021

  1. iommu/rockchip: Fix physical address decoding

    Restore bits 39 to 32 at correct position.
    It reverses the operation done in rk_dma_addr_dte_v2().
    
    Fixes: c55356c ("iommu: rockchip: Add support for iommu v2")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
    Link: https://lore.kernel.org/r/20210712101232.318589-1-benjamin.gaignard@collabora.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Benjamin Gaignard authored and joergroedel committed Jul 14, 2021
  2. iommu/vt-d: Fix clearing real DMA device's scalable-mode context entries

    The commit 2b0140c ("iommu/vt-d: Use pci_real_dma_dev() for mapping")
    fixes an issue of "sub-device is removed where the context entry is cleared
    for all aliases". But this commit didn't consider the PASID entry and PASID
    table in VT-d scalable mode. This fix increases the coverage of scalable
    mode.
    
    Suggested-by: Sanjay Kumar <sanjay.k.kumar@intel.com>
    Fixes: 8038bdb ("iommu/vt-d: Only clear real DMA device's context entries")
    Fixes: 2b0140c ("iommu/vt-d: Use pci_real_dma_dev() for mapping")
    Cc: stable@vger.kernel.org # v5.6+
    Cc: Jon Derrick <jonathan.derrick@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20210712071712.3416949-1-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    LuBaolu authored and joergroedel committed Jul 14, 2021
  3. iommu/vt-d: Global devTLB flush when present context entry changed

    This fixes a bug in context cache clear operation. The code was not
    following the correct invalidation flow. A global device TLB invalidation
    should be added after the IOTLB invalidation. At the same time, it
    uses the domain ID from the context entry. But in scalable mode, the
    domain ID is in PASID table entry, not context entry.
    
    Fixes: 7373a8c ("iommu/vt-d: Setup context and enable RID2PASID support")
    Cc: stable@vger.kernel.org # v5.0+
    Signed-off-by: Sanjay Kumar <sanjay.k.kumar@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20210712071315.3416543-1-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    skuma24 authored and joergroedel committed Jul 14, 2021
  4. iommu/qcom: Revert "iommu/arm: Cleanup resources in case of probe err…

    …or path"
    
    QCOM IOMMU driver calls bus_set_iommu() for every IOMMU device controller,
    what fails for the second and latter IOMMU devices. This is intended and
    must be not fatal to the driver registration process. Also the cleanup
    path should take care of the runtime PM state, what is missing in the
    current patch. Revert relevant changes to the QCOM IOMMU driver until
    a proper fix is prepared.
    
    This partially reverts commit 249c9dc.
    
    Fixes: 249c9dc ("iommu/arm: Cleanup resources in case of probe error path")
    Suggested-by: Will Deacon <will@kernel.org>
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210705065657.30356-1-m.szyprowski@samsung.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    mszyprow authored and joergroedel committed Jul 14, 2021

Commits on Jul 11, 2021

  1. Linux 5.14-rc1

    torvalds committed Jul 11, 2021
  2. mm/rmap: try_to_migrate() skip zone_device !device_private

    I know nothing about zone_device pages and !device_private pages; but if
    try_to_migrate_one() will do nothing for them, then it's better that
    try_to_migrate() filter them first, than trawl through all their vmas.
    
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Alistair Popple <apopple@nvidia.com>
    Link: https://lore.kernel.org/lkml/1241d356-8ec9-f47b-a5ec-9b2bf66d242@google.com/
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Hugh Dickins authored and torvalds committed Jul 11, 2021
  3. mm/rmap: fix new bug: premature return from page_mlock_one()

    In the unlikely race case that page_mlock_one() finds VM_LOCKED has been
    cleared by the time it got page table lock, page_vma_mapped_walk_done()
    must be called before returning, either explicitly, or by a final call
    to page_vma_mapped_walk() - otherwise the page table remains locked.
    
    Fixes: cd62734 ("mm/rmap: split try_to_munlock from try_to_unmap")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reviewed-by: Alistair Popple <apopple@nvidia.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Link: https://lore.kernel.org/lkml/20210711151446.GB4070@xsang-OptiPlex-9020/
    Link: https://lore.kernel.org/lkml/f71f8523-cba7-3342-40a7-114abc5d1f51@google.com/
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Hugh Dickins authored and torvalds committed Jul 11, 2021
  4. mm/rmap: fix old bug: munlocking THP missed other mlocks

    The kernel recovers in due course from missing Mlocked pages: but there
    was no point in calling page_mlock() (formerly known as
    try_to_munlock()) on a THP, because nothing got done even when it was
    found to be mapped in another VM_LOCKED vma.
    
    It's true that we need to be careful: Mlocked accounting of pte-mapped
    THPs is too difficult (so consistently avoided); but Mlocked accounting
    of only-pmd-mapped THPs is supposed to work, even when multiple mappings
    are mlocked and munlocked or munmapped.  Refine the tests.
    
    There is already a VM_BUG_ON_PAGE(PageDoubleMap) in page_mlock(), so
    page_mlock_one() does not even have to worry about that complication.
    
    (I said the kernel recovers: but would page reclaim be likely to split
    THP before rediscovering that it's VM_LOCKED? I've not followed that up)
    
    Fixes: 9a73f61 ("thp, mlock: do not mlock PTE-mapped file huge pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Link: https://lore.kernel.org/lkml/cfa154c-d595-406-eb7d-eb9df730f944@google.com/
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Hugh Dickins authored and torvalds committed Jul 11, 2021
  5. mm/rmap: fix comments left over from recent changes

    Parallel developments in mm/rmap.c have left behind some out-of-date
    comments: try_to_migrate_one() also accepts TTU_SYNC (already commented
    in try_to_migrate() itself), and try_to_migrate() returns nothing at
    all.
    
    TTU_SPLIT_FREEZE has just been deleted, so reword the comment about it
    in mm/huge_memory.c; and TTU_IGNORE_ACCESS was removed in 5.11, so
    delete the "recently referenced" comment from try_to_unmap_one() (once
    upon a time the comment was near the removed codeblock, but they drifted
    apart).
    
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Alistair Popple <apopple@nvidia.com>
    Link: https://lore.kernel.org/lkml/563ce5b2-7a44-5b4d-1dfd-59a0e65932a9@google.com/
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Hugh Dickins authored and torvalds committed Jul 11, 2021
  6. Merge tag 'irq-urgent-2021-07-11' of git://git.kernel.org/pub/scm/lin…

    …ux/kernel/git/tip/tip
    
    Pull irq fixes from Ingo Molnar:
     "Two fixes:
    
       - Fix a MIPS IRQ handling RCU bug
    
       - Remove a DocBook annotation for a parameter that doesn't exist
         anymore"
    
    * tag 'irq-urgent-2021-07-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry
      genirq/irqdesc: Drop excess kernel-doc entry @lookup
    torvalds committed Jul 11, 2021
  7. Merge tag 'sched-urgent-2021-07-11' of git://git.kernel.org/pub/scm/l…

    …inux/kernel/git/tip/tip
    
    Pull scheduler fixes from Ingo Molnar:
     "Three fixes:
    
       - Fix load tracking bug/inconsistency
    
       - Fix a sporadic CFS bandwidth constraints enforcement bug
    
       - Fix a uclamp utilization tracking bug for newly woken tasks"
    
    * tag 'sched-urgent-2021-07-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      sched/uclamp: Ignore max aggregation if rq is idle
      sched/fair: Fix CFS bandwidth hrtimer expiry type
      sched/fair: Sync load_sum with load_avg after dequeue
    torvalds committed Jul 11, 2021
Older