summaryrefslogtreecommitdiff
path: root/scripts/patch-kernel
diff options
context:
space:
mode:
authorJean-Philippe Brucker <jean-philippe@linaro.org>2020-11-06 16:50:49 +0100
committerWill Deacon <will@kernel.org>2020-11-23 14:16:55 +0000
commit32784a9562fb0518b12e9797ee2aec52214adf6f (patch)
treedde982dd0481b5ba75c84873d0f7c604565b5f2e /scripts/patch-kernel
parentcfc78dfd9b36dcda7c3ca9cdfca343f84c72252f (diff)
downloadkernel-32784a9562fb0518b12e9797ee2aec52214adf6f.tar.gz
iommu/arm-smmu-v3: Implement iommu_sva_bind/unbind()
The sva_bind() function allows devices to access process address spaces using a PASID (aka SSID). (1) bind() allocates or gets an existing MMU notifier tied to the (domain, mm) pair. Each mm gets one PASID. (2) Any change to the address space calls invalidate_range() which sends ATC invalidations (in a subsequent patch). (3) When the process address space dies, the release() notifier disables the CD to allow reclaiming the page tables. Since release() has to be light we do not instruct device drivers to stop DMA here, we just ignore incoming page faults from this point onwards. To avoid any event 0x0a print (C_BAD_CD) we disable translation without clearing CD.V. PCIe Translation Requests and Page Requests are silently denied. Don't clear the R bit because the S bit can't be cleared when STALL_MODEL==0b10 (forced), and clearing R without clearing S is useless. Faulting transactions will stall and will be aborted by the IOPF handler. (4) After stopping DMA, the device driver releases the bond by calling unbind(). We release the MMU notifier, free the PASID and the bond. Three structures keep track of bonds: * arm_smmu_bond: one per {device, mm} pair, the handle returned to the device driver for a bind() request. * arm_smmu_mmu_notifier: one per {domain, mm} pair, deals with ATS/TLB invalidations and clearing the context descriptor on mm exit. * arm_smmu_ctx_desc: one per mm, holds the pinned ASID and pgd. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Link: https://lore.kernel.org/r/20201106155048.997886-4-jean-philippe@linaro.org Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'scripts/patch-kernel')
0 files changed, 0 insertions, 0 deletions
cm/linux/kernel/git/netdev/netJakub Kicinski 2022-11-15net: ena: Fix error handling in ena_init()Yuan Can 2022-10-28net: Remove the obsolte u64_stats_fetch_*_irq() users (drivers).Thomas Gleixner 2022-09-28net: drop the weight argument from netif_napi_addJakub Kicinski 2022-08-31net: ethernet: move from strlcpy with unused retval to strscpyWolfram Sang 2022-04-30eth: remove remaining copies of the NAPI_POLL_WEIGHT defineJakub Kicinski 2022-01-31net: ena: Do not waste napi skb cacheHyeonggon Yoo 2022-01-07net: ena: Extract recurring driver reset code into a functionArthur Kiyanovski 2022-01-07net: ena: Change the name of bad_csum variableArthur Kiyanovski 2022-01-07net: ena: Add debug prints for invalid req_id resetsArthur Kiyanovski 2022-01-07net: ena: Remove ena_calc_queue_size_ctx structArthur Kiyanovski 2022-01-07net: ena: Move reset completion print to the reset functionArthur Kiyanovski 2022-01-07net: ena: Remove redundant return code checkArthur Kiyanovski 2022-01-07net: ena: Change ENI stats support check to use capabilities fieldArthur Kiyanovski 2022-01-07net: ena: Add capabilities field with support for ENI stats capabilityArthur Kiyanovski 2022-01-07net: ena: Change return value of ena_calc_io_queue_size() to voidArthur Kiyanovski 2022-01-05Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/netJakub Kicinski 2022-01-02net: ena: Fix error handling when calculating max IO queues numberArthur Kiyanovski 2022-01-02net: ena: Fix wrong rx request id by resetting deviceArthur Kiyanovski 2022-01-02net: ena: Fix undefined state when tx request id is out of boundsArthur Kiyanovski 2021-12-29net: Add includes masked by netdevice.h including uapi/bpf.hJakub Kicinski