]> Git Repo - linux.git/commitdiff
Merge tag 'iommu-updates-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <[email protected]>
Sat, 23 Nov 2024 03:55:10 +0000 (19:55 -0800)
committerLinus Torvalds <[email protected]>
Sat, 23 Nov 2024 03:55:10 +0000 (19:55 -0800)
Pull iommu updates from Joerg Roedel:
 "Core Updates:
   - Convert call-sites using iommu_domain_alloc() to more specific
     versions and remove function
   - Introduce iommu_paging_domain_alloc_flags()
   - Extend support for allocating PASID-capable domains to more drivers
   - Remove iommu_present()
   - Some smaller improvements

  New IOMMU driver for RISC-V

  Intel VT-d Updates:
   - Add domain_alloc_paging support
   - Enable user space IOPFs in non-PASID and non-svm cases
   - Small code refactoring and cleanups
   - Add domain replacement support for pasid

  AMD-Vi Updates:
   - Adapt to iommu_paging_domain_alloc_flags() interface and alloc V2
     page-tables by default
   - Replace custom domain ID allocator with IDA allocator
   - Add ops->release_domain() support
   - Other improvements to device attach and domain allocation code
     paths

  ARM-SMMU Updates:
   - SMMUv2:
      - Return -EPROBE_DEFER for client devices probing before their
        SMMU
      - Devicetree binding updates for Qualcomm MMU-500 implementations
   - SMMUv3:
      - Minor fixes and cleanup for NVIDIA's virtual command queue
        driver
   - IO-PGTable:
      - Fix indexing of concatenated PGDs and extend selftest coverage
      - Remove unused block-splitting support

  S390 IOMMU:
   - Implement support for blocking domain

  Mediatek IOMMU:
   - Enable 35-bit physical address support for mt8186

  OMAP IOMMU driver:
   - Adapt to recent IOMMU core changes and unbreak driver"

* tag 'iommu-updates-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux: (92 commits)
  iommu/tegra241-cmdqv: Fix alignment failure at max_n_shift
  iommu: Make set_dev_pasid op support domain replacement
  iommu/arm-smmu-v3: Make set_dev_pasid() op support replace
  iommu/vt-d: Add set_dev_pasid callback for nested domain
  iommu/vt-d: Make identity_domain_set_dev_pasid() to handle domain replacement
  iommu/vt-d: Make intel_svm_set_dev_pasid() support domain replacement
  iommu/vt-d: Limit intel_iommu_set_dev_pasid() for paging domain
  iommu/vt-d: Make intel_iommu_set_dev_pasid() to handle domain replacement
  iommu/vt-d: Add iommu_domain_did() to get did
  iommu/vt-d: Consolidate the struct dev_pasid_info add/remove
  iommu/vt-d: Add pasid replace helpers
  iommu/vt-d: Refactor the pasid setup helpers
  iommu/vt-d: Add a helper to flush cache for updating present pasid entry
  iommu: Pass old domain to set_dev_pasid op
  iommu/iova: Fix typo 'adderss'
  iommu: Add a kdoc to iommu_unmap()
  iommu/io-pgtable-arm-v7s: Remove split on unmap behavior
  iommu/io-pgtable-arm: Remove split on unmap behavior
  iommu/vt-d: Drain PRQs when domain removed from RID
  iommu/vt-d: Drop pasid requirement for prq initialization
  ...

1  2 
MAINTAINERS
arch/s390/include/asm/pci.h
arch/s390/pci/pci.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
drivers/iommu/io-pgtable-arm.c
drivers/iommu/iommufd/hw_pagetable.c
include/linux/iommu.h
include/uapi/linux/iommufd.h

diff --combined MAINTAINERS
index 41fcaa4d972bd05e378c0a8f6484d326f88e39f6,24a45561ccb83f8225fff86134bab1f9cd244c96..8a33ba0e92f522e20f901c839a9a68abd87e03d0
@@@ -701,7 -701,7 +701,7 @@@ M: Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-aimslab*
  
  AIO
@@@ -786,7 -786,6 +786,7 @@@ F: drivers/perf/alibaba_uncore_drw_pmu.
  ALIENWARE WMI DRIVER
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/wmi/devices/alienware-wmi.rst
  F:    drivers/platform/x86/dell/alienware-wmi.c
  
  ALLEGRO DVT VIDEO IP CORE DRIVER
@@@ -810,7 -809,7 +810,7 @@@ ALLWINNER A10 CSI DRIVE
  M:    Maxime Ripard <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
  F:    drivers/media/platform/sunxi/sun4i-csi/
  
@@@ -819,7 -818,7 +819,7 @@@ M: Yong Deng <[email protected]
  M:    Paul Kocialkowski <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
  F:    drivers/media/platform/sunxi/sun6i-csi/
  
@@@ -827,7 -826,7 +827,7 @@@ ALLWINNER A31 ISP DRIVE
  M:    Paul Kocialkowski <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
  F:    drivers/staging/media/sunxi/sun6i-isp/
  F:    drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h
@@@ -836,7 -835,7 +836,7 @@@ ALLWINNER A31 MIPI CSI-2 BRIDGE DRIVE
  M:    Paul Kocialkowski <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-mipi-csi2.yaml
  F:    drivers/media/platform/sunxi/sun6i-mipi-csi2/
  
@@@ -966,14 -965,6 +966,14 @@@ Q:       https://patchwork.kernel.org/project
  F:    drivers/infiniband/hw/efa/
  F:    include/uapi/rdma/efa-abi.h
  
 +AMD 3D V-CACHE PERFORMANCE OPTIMIZER DRIVER
 +M:    Basavaraj Natikar <[email protected]>
 +R:    Mario Limonciello <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/ABI/testing/sysfs-bus-platform-drivers-amd_x3d_vcache
 +F:    drivers/platform/x86/amd/x3d_vcache.c
 +
  AMD ADDRESS TRANSLATION LIBRARY (ATL)
  M:    Yazen Ghannam <[email protected]>
  L:    [email protected]
@@@ -1083,7 -1074,7 +1083,7 @@@ S:      Maintaine
  F:    Documentation/arch/x86/amd_hsmp.rst
  F:    arch/x86/include/asm/amd_hsmp.h
  F:    arch/x86/include/uapi/asm/amd_hsmp.h
 -F:    drivers/platform/x86/amd/hsmp.c
 +F:    drivers/platform/x86/amd/hsmp/
  
  AMD IOMMU (AMD-VI)
  M:    Joerg Roedel <[email protected]>
  S:    Maintained
  F:    drivers/i2c/busses/i2c-amd-mp2*
  
 +AMD ASF I2C DRIVER
 +M:    Shyam Sundar S K <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-amd-asf-plat.c
 +
  AMD PDS CORE DRIVER
  M:    Shannon Nelson <[email protected]>
  M:    Brett Creeley <[email protected]>
@@@ -1139,7 -1124,7 +1139,7 @@@ F:      drivers/platform/x86/amd/pmc
  AMD PMF DRIVER
  M:    Shyam Sundar S K <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    Documentation/ABI/testing/sysfs-amd-pmf
  F:    drivers/platform/x86/amd/pmf/
  
@@@ -1530,7 -1515,6 +1530,7 @@@ L:      [email protected]
  S:    Supported
  W:    http://wiki.analog.com/
  W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/sound/adi,*
  F:    sound/soc/codecs/ad1*
  F:    sound/soc/codecs/ad7*
  F:    sound/soc/codecs/adau*
@@@ -2006,7 -1990,7 +2006,7 @@@ L:      [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/actions.yaml
 -F:    Documentation/devicetree/bindings/clock/actions,owl-cmu.txt
 +F:    Documentation/devicetree/bindings/clock/actions,owl-cmu.yaml
  F:    Documentation/devicetree/bindings/dma/owl-dma.yaml
  F:    Documentation/devicetree/bindings/i2c/i2c-owl.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/actions,owl-sirq.yaml
@@@ -2014,7 -1998,7 +2014,7 @@@ F:      Documentation/devicetree/bindings/mm
  F:    Documentation/devicetree/bindings/net/actions,owl-emac.yaml
  F:    Documentation/devicetree/bindings/pinctrl/actions,*
  F:    Documentation/devicetree/bindings/power/actions,owl-sps.txt
 -F:    Documentation/devicetree/bindings/timer/actions,owl-timer.txt
 +F:    Documentation/devicetree/bindings/timer/actions,owl-timer.yaml
  F:    arch/arm/boot/dts/actions/
  F:    arch/arm/mach-actions/
  F:    arch/arm64/boot/dts/actions/
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/adi,ssm3515.yaml
 +F:    Documentation/devicetree/bindings/sound/cirrus,cs42l84.yaml
  F:    Documentation/devicetree/bindings/sound/apple,*
  F:    sound/soc/apple/*
  F:    sound/soc/codecs/cs42l83-i2c.c
 +F:    sound/soc/codecs/cs42l84.*
  F:    sound/soc/codecs/ssm3515.c
  
  ARM/APPLE MACHINE SUPPORT
@@@ -2824,7 -2806,6 +2824,7 @@@ F:      arch/arm64/boot/dts/qcom/sdm845-chez
  
  ARM/QUALCOMM MAILING LIST
  L:    [email protected]
 +C:    irc://irc.oftc.net/linux-msm
  F:    Documentation/devicetree/bindings/*/qcom*
  F:    Documentation/devicetree/bindings/soc/qcom/
  F:    arch/arm/boot/dts/qcom/
@@@ -2866,7 -2847,6 +2866,7 @@@ M:      Bjorn Andersson <[email protected]
  M:    Konrad Dybcio <[email protected]>
  L:    [email protected]
  S:    Maintained
 +C:    irc://irc.oftc.net/linux-msm
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
  F:    Documentation/devicetree/bindings/arm/qcom-soc.yaml
  F:    Documentation/devicetree/bindings/arm/qcom.yaml
@@@ -3368,7 -3348,7 +3368,7 @@@ ASAHI KASEI AK7375 LENS VOICE COIL DRIV
  M:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/asahi-kasei,ak7375.yaml
  F:    drivers/media/i2c/ak7375.c
  
@@@ -3785,7 -3765,7 +3785,7 @@@ M:      Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
  
  AZTECH FM RADIO RECEIVER DRIVER
@@@ -3793,7 -3773,7 +3793,7 @@@ M:      Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-aztech*
  
  B43 WIRELESS DRIVER
@@@ -3812,7 -3792,7 +3812,7 @@@ F:      drivers/net/wireless/broadcom/b43leg
  
  BACKLIGHT CLASS/SUBSYSTEM
  M:    Lee Jones <[email protected]>
 -M:    Daniel Thompson <daniel.thompson@linaro.org>
 +M:    Daniel Thompson <danielt@kernel.org>
  M:    Jingoo Han <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -3877,7 -3857,7 +3877,7 @@@ M:      Fabien Dessenne <fabien.dessenne@fos
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/platform/st/sti/bdisp
  
  BECKHOFF CX5020 ETHERCAT MASTER DRIVER
@@@ -4885,7 -4865,7 +4885,7 @@@ M:      Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Odd fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/driver-api/media/drivers/bttv*
  F:    drivers/media/pci/bt8xx/bttv*
  
@@@ -4999,13 -4979,13 +4999,13 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-cadet*
  
  CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/cafe_ccic*
  F:    drivers/media/platform/marvell/
  
@@@ -5189,7 -5169,7 +5189,7 @@@ M:      Hans Verkuil <hverkuil-cisco@xs4all.
  L:    [email protected]
  S:    Supported
  W:    http://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/ABI/testing/debugfs-cec-error-inj
  F:    Documentation/devicetree/bindings/media/cec/cec-common.yaml
  F:    Documentation/driver-api/media/cec-core.rst
@@@ -5206,7 -5186,7 +5206,7 @@@ M:      Hans Verkuil <hverkuil-cisco@xs4all.
  L:    [email protected]
  S:    Supported
  W:    http://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/cec/cec-gpio.yaml
  F:    drivers/media/cec/platform/cec-gpio/
  
@@@ -5413,7 -5393,7 +5413,7 @@@ CHRONTEL CH7322 CEC DRIVE
  M:    Joe Tessler <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/chrontel,ch7322.yaml
  F:    drivers/media/cec/i2c/ch7322.c
  
@@@ -5602,7 -5582,7 +5602,7 @@@ M:      Hans Verkuil <hverkuil-cisco@xs4all.
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/cobalt/
  
  COCCINELLE/Semantic Patches (SmPL)
@@@ -5761,15 -5741,6 +5761,15 @@@ F:    fs/configfs
  F:    include/linux/configfs.h
  F:    samples/configfs/
  
 +CONGATEC BOARD CONTROLLER MFD DRIVER
 +M:    Thomas Richard <[email protected]>
 +S:    Maintained
 +F:    drivers/gpio/gpio-cgbc.c
 +F:    drivers/i2c/busses/i2c-cgbc.c
 +F:    drivers/mfd/cgbc-core.c
 +F:    drivers/watchdog/cgbc_wdt.c
 +F:    include/linux/mfd/cgbc.h
 +
  CONSOLE SUBSYSTEM
  M:    Greg Kroah-Hartman <[email protected]>
  S:    Supported
@@@ -5785,6 -5756,7 +5785,6 @@@ F:      kernel/context_tracking.
  
  CONTROL GROUP (CGROUP)
  M:    Tejun Heo <[email protected]>
 -M:    Zefan Li <[email protected]>
  M:    Johannes Weiner <[email protected]>
  M:    Michal Koutný <[email protected]>
  L:    [email protected]
@@@ -5813,6 -5785,7 +5813,6 @@@ F:      include/linux/blk-cgroup.
  
  CONTROL GROUP - CPUSET
  M:    Waiman Long <[email protected]>
 -M:    Zefan Li <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
@@@ -6053,7 -6026,7 +6053,7 @@@ M:      Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    http://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/cs3308.c
  
  CS5535 Audio ALSA driver
@@@ -6084,7 -6057,7 +6084,7 @@@ M:      Andy Walls <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/cx18/
  F:    include/uapi/linux/ivtv*
  
@@@ -6093,7 -6066,7 +6093,7 @@@ M:      Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/common/cx2341x*
  F:    include/media/drv-intf/cx2341x.h
  
@@@ -6111,7 -6084,7 +6111,7 @@@ M:      Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Odd fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/driver-api/media/drivers/cx88*
  F:    drivers/media/pci/cx88/
  
@@@ -6328,6 -6301,7 +6328,6 @@@ DECSTATION PLATFORM SUPPOR
  M:    "Maciej W. Rozycki" <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-mips.org/wiki/DECstation
  F:    arch/mips/dec/
  F:    arch/mips/include/asm/dec/
  F:    arch/mips/include/asm/mach-dec/
@@@ -6346,7 -6320,7 +6346,7 @@@ DEINTERLACE DRIVERS FOR ALLWINNER H
  M:    Jernej Skrabec <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun8i-h3-deinterlace.yaml
  F:    drivers/media/platform/sunxi/sun8i-di/
  
@@@ -6473,7 -6447,7 +6473,7 @@@ M:      Hugues Fruchet <hugues.fruchet@foss.
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/platform/st/sti/delta
  
  DENALI NAND DRIVER
@@@ -6881,7 -6855,7 +6881,7 @@@ DONGWOON DW9714 LENS VOICE COIL DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
  F:    drivers/media/i2c/dw9714.c
  
@@@ -6889,13 -6863,13 +6889,13 @@@ DONGWOON DW9719 LENS VOICE COIL DRIVE
  M:    Daniel Scally <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/dw9719.c
  
  DONGWOON DW9768 LENS VOICE COIL DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9768.yaml
  F:    drivers/media/i2c/dw9768.c
  
@@@ -6903,7 -6877,7 +6903,7 @@@ DONGWOON DW9807 LENS VOICE COIL DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
  F:    drivers/media/i2c/dw9807-vcm.c
  
@@@ -7103,10 -7077,12 +7103,10 @@@ M:   Javier Martinez Canillas <javierm@re
  L:    [email protected]
  S:    Maintained
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
 -F:    drivers/gpu/drm/drm_aperture.c
  F:    drivers/gpu/drm/tiny/ofdrm.c
  F:    drivers/gpu/drm/tiny/simpledrm.c
  F:    drivers/video/aperture.c
  F:    drivers/video/nomodeset.c
 -F:    include/drm/drm_aperture.h
  F:    include/linux/aperture.h
  F:    include/video/nomodeset.h
  
@@@ -7387,18 -7363,6 +7387,18 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/display/panel/samsung,s6d7aa0.yaml
  F:    drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c
  
 +DRM DRIVER FOR SAMSUNG S6E3HA8 PANELS
 +M:    Dzmitry Sankouski <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/samsung,s6e3ha8.yaml
 +F:    drivers/gpu/drm/panel/panel-samsung-s6e3ha8.c
 +
 +DRM DRIVER FOR SHARP MEMORY LCD
 +M:    Alex Lanzano <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/sharp,ls010b7dh04.yaml
 +F:    drivers/gpu/drm/tiny/sharp-memory.c
 +
  DRM DRIVER FOR SITRONIX ST7586 PANELS
  M:    David Lechner <[email protected]>
  S:    Maintained
@@@ -7476,7 -7440,8 +7476,7 @@@ T:      git https://gitlab.freedesktop.org/d
  F:    drivers/gpu/drm/udl/
  
  DRM DRIVER FOR VIRTUAL KERNEL MODESETTING (VKMS)
 -M:    Rodrigo Siqueira <[email protected]>
 -M:    Maíra Canal <[email protected]>
 +M:    Louis Chauvet <[email protected]>
  R:    Haneen Mohammed <[email protected]>
  R:    Simona Vetter <[email protected]>
  R:    Melissa Wen <[email protected]>
@@@ -7808,7 -7773,6 +7808,7 @@@ F:      include/uapi/drm/v3d_drm.
  DRM DRIVERS FOR VC4
  M:    Maxime Ripard <[email protected]>
  M:    Dave Stevenson <[email protected]>
 +R:    Maíra Canal <[email protected]>
  R:    Raspberry Pi Kernel Maintenance <[email protected]>
  S:    Supported
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
@@@ -7843,7 -7807,6 +7843,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
  F:    Documentation/devicetree/bindings/display/xlnx/
 +F:    Documentation/gpu/zynqmp.rst
  F:    drivers/gpu/drm/xlnx/
  
  DRM GPU SCHEDULER
@@@ -7894,10 -7857,10 +7894,10 @@@ F:   Documentation/gpu/automated_testing.
  F:    drivers/gpu/drm/ci/
  
  DSBR100 USB FM RADIO DRIVER
 -M:    Alexey Klimov <[email protected]>
 +M:    Alexey Klimov <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/dsbr100.c
  
  DT3155 MEDIA DRIVER
@@@ -7905,7 -7868,7 +7905,7 @@@ M:      Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/dt3155/
  
  DVB_USB_AF9015 MEDIA DRIVER
@@@ -7950,7 -7913,7 +7950,7 @@@ S:      Maintaine
  W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/dvb-usb/cxusb*
  
  DVB_USB_EC168 MEDIA DRIVER
@@@ -8098,10 -8061,10 +8098,10 @@@ S:   Maintaine
  F:    drivers/edac/highbank*
  
  EDAC-CAVIUM OCTEON
 -M:    Ralf Baechle <[email protected]>
 +M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -S:    Supported
 +S:    Maintained
  F:    drivers/edac/octeon_edac*
  
  EDAC-CAVIUM THUNDERX
@@@ -8141,8 -8104,7 +8141,8 @@@ S:      Maintaine
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-FSL_DDR
 -M:    York Sun <[email protected]>
 +R:    Frank Li <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/fsl_ddr_edac.*
@@@ -8320,7 -8282,7 +8320,7 @@@ M:      Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/em28xx*
  F:    drivers/media/usb/em28xx/
  
@@@ -8616,7 -8578,7 +8616,7 @@@ EXTRON DA HD 4K PLUS CEC DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/cec/usb/extron-da-hd-4k-plus/
  
  EXYNOS DP DRIVER
@@@ -9036,16 -8998,9 +9036,16 @@@ F:    drivers/dma/fsl-edma*.
  FREESCALE ENETC ETHERNET DRIVERS
  M:    Claudiu Manoil <[email protected]>
  M:    Vladimir Oltean <[email protected]>
 +M:    Wei Fang <[email protected]>
 +M:    Clark Wang <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/fsl,enetc*.yaml
 +F:    Documentation/devicetree/bindings/net/nxp,netc-blk-ctrl.yaml
  F:    drivers/net/ethernet/freescale/enetc/
 +F:    include/linux/fsl/enetc_mdio.h
 +F:    include/linux/fsl/netc_global.h
  
  FREESCALE eTSEC ETHERNET DRIVER (GIANFAR)
  M:    Claudiu Manoil <[email protected]>
@@@ -9056,7 -9011,6 +9056,7 @@@ F:      drivers/net/ethernet/freescale/gianf
  
  FREESCALE GPMI NAND DRIVER
  M:    Han Xu <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/mtd/nand/raw/gpmi-nand/*
@@@ -9446,7 -9400,7 +9446,7 @@@ GALAXYCORE GC2145 SENSOR DRIVE
  M:    Alain Volmat <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/galaxycore,gc2145.yaml
  F:    drivers/media/i2c/gc2145.c
  
@@@ -9494,7 -9448,7 +9494,7 @@@ M:      Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-gemtek*
  
  GENERIC ARCHITECTURE TOPOLOGY
@@@ -9876,56 -9830,56 +9876,56 @@@ GS1662 VIDEO SERIALIZE
  M:    Charles-Antoine Couret <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/spi/gs1662.c
  
  GSPCA FINEPIX SUBDRIVER
  M:    Frank Zago <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/finepix.c
  
  GSPCA GL860 SUBDRIVER
  M:    Olivier Lorin <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/gl860/
  
  GSPCA M5602 SUBDRIVER
  M:    Erik Andren <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/m5602/
  
  GSPCA PAC207 SONIXB SUBDRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/pac207.c
  
  GSPCA SN9C20X SUBDRIVER
  M:    Brian Johnson <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/sn9c20x.c
  
  GSPCA T613 SUBDRIVER
  M:    Leandro Costantino <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/t613.c
  
  GSPCA USB WEBCAM DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/gspca/
  
  GTP (GPRS Tunneling Protocol)
@@@ -10042,7 -9996,7 +10042,7 @@@ M:    Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/hdpvr/
  
  HEWLETT PACKARD ENTERPRISE ILO CHIF DRIVER
@@@ -10184,12 -10138,10 +10184,12 @@@ S:        Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  F:    Documentation/timers/
  F:    include/linux/clockchips.h
 +F:    include/linux/delay.h
  F:    include/linux/hrtimer.h
  F:    include/linux/timer.h
  F:    kernel/time/clockevents.c
  F:    kernel/time/hrtimer.c
 +F:    kernel/time/sleep_timeout.c
  F:    kernel/time/timer.c
  F:    kernel/time/timer_list.c
  F:    kernel/time/timer_migration.*
@@@ -10299,12 -10251,6 +10299,12 @@@ S: Maintaine
  W:    http://www.hisilicon.com
  F:    drivers/net/ethernet/hisilicon/hns3/
  
 +HISILICON NETWORK HIBMCGE DRIVER
 +M:    Jijie Shao <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/ethernet/hisilicon/hibmcge/
 +
  HISILICON NETWORK SUBSYSTEM DRIVER
  M:    Jian Shen <[email protected]>
  M:    Salil Mehta <[email protected]>
@@@ -10547,7 -10493,6 +10547,7 @@@ F:   Documentation/mm/hugetlbfs_reserv.rs
  F:    Documentation/mm/vmemmap_dedup.rst
  F:    fs/hugetlbfs/
  F:    include/linux/hugetlb.h
 +F:    include/trace/events/hugetlbfs.h
  F:    mm/hugetlb.c
  F:    mm/hugetlb_vmemmap.c
  F:    mm/hugetlb_vmemmap.h
@@@ -10558,7 -10503,7 +10558,7 @@@ M:   Jean-Christophe Trotin <jean-christo
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/platform/st/sti/hva
  
  HWPOISON MEMORY FAILURE HANDLING
@@@ -10586,7 -10531,7 +10586,7 @@@ HYNIX HI556 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/hi556.c
  
  HYNIX HI846 SENSOR DRIVER
@@@ -10771,12 -10716,14 +10771,12 @@@ F:        Documentation/i2c/busses/i2c-viapro.
  F:    drivers/i2c/busses/i2c-ali1535.c
  F:    drivers/i2c/busses/i2c-ali1563.c
  F:    drivers/i2c/busses/i2c-ali15x3.c
 -F:    drivers/i2c/busses/i2c-amd756-s4882.c
  F:    drivers/i2c/busses/i2c-amd756.c
  F:    drivers/i2c/busses/i2c-amd8111.c
  F:    drivers/i2c/busses/i2c-i801.c
  F:    drivers/i2c/busses/i2c-isch.c
 -F:    drivers/i2c/busses/i2c-nforce2-s4985.c
  F:    drivers/i2c/busses/i2c-nforce2.c
 -F:    drivers/i2c/busses/i2c-piix4.c
 +F:    drivers/i2c/busses/i2c-piix4.*
  F:    drivers/i2c/busses/i2c-sis5595.c
  F:    drivers/i2c/busses/i2c-sis630.c
  F:    drivers/i2c/busses/i2c-sis96x.c
@@@ -11500,7 -11447,7 +11500,7 @@@ Q:   https://patchwork.kernel.org/project
  F:    drivers/dma/ioat*
  
  INTEL IAA CRYPTO DRIVER
 -M:    Tom Zanussi <tom.zanussi@linux.intel.com>
 +M:    Kristen Accardi <kristen.c.accardi@intel.com>
  L:    [email protected]
  S:    Supported
  F:    Documentation/driver-api/crypto/iaa/iaa-crypto.rst
@@@ -11555,7 -11502,7 +11555,7 @@@ M:   Dan Scally <[email protected]
  R:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst
  F:    drivers/media/pci/intel/ipu3/
  
@@@ -11576,12 -11523,12 +11576,12 @@@ M:        Bingbu Cao <[email protected]
  R:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/ipu6-isys.rst
  F:    drivers/media/pci/intel/ipu6/
  
  INTEL ISHTP ECLITE DRIVER
 -M:    Sumesh K Naduvalath <sumesh.k.naduvalath@intel.com>
 +M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/platform/x86/intel/ishtp_eclite.c
@@@ -11814,7 -11761,7 +11814,7 @@@ M:   Srinivas Pandruvada <srinivas.pandru
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/debugfs-tpmi
 -F:    drivers/platform/x86/intel/tpmi.c
 +F:    drivers/platform/x86/intel/vsec_tpmi.c
  F:    include/linux/intel_tpmi.h
  
  INTEL UNCORE FREQUENCY CONTROL
@@@ -11938,7 -11885,7 +11938,7 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/gyro/mpu3050*
  
  IOC3 ETHERNET DRIVER
 -M:    Ralf Baechle <[email protected]>
 +M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/sgi/ioc3-eth.c
@@@ -12089,7 -12036,7 +12089,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-isa*
  
  ISAPNP
@@@ -12157,14 -12104,6 +12157,14 @@@ F: drivers/isdn/Makefil
  F:    drivers/isdn/hardware/
  F:    drivers/isdn/mISDN/
  
 +ISL28022 HARDWARE MONITORING DRIVER
 +M:    Carsten Spieß <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
 +F:    Documentation/hwmon/isl28022.rst
 +F:    drivers/hwmon/isl28022.c
 +
  ISOFS FILESYSTEM
  M:    Jan Kara <[email protected]>
  L:    [email protected]
@@@ -12186,14 -12125,6 +12186,14 @@@ W: https://linuxtv.or
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  F:    drivers/media/tuners/it913x*
  
 +ITE IT6263 LVDS TO HDMI BRIDGE DRIVER
 +M:    Liu Ying <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
 +F:    Documentation/devicetree/bindings/display/bridge/ite,it6263.yaml
 +F:    drivers/gpu/drm/bridge/ite-it6263.c
 +
  ITE IT66121 HDMI BRIDGE DRIVER
  M:    Phong LE <[email protected]>
  M:    Neil Armstrong <[email protected]>
@@@ -12207,7 -12138,7 +12207,7 @@@ M:   Andy Walls <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/ivtv*
  F:    drivers/media/pci/ivtv/
  F:    include/uapi/linux/ivtv*
@@@ -12355,7 -12286,7 +12355,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-keene*
  
  KERNEL AUTOMOUNTER
@@@ -12474,7 -12405,7 +12474,7 @@@ F:   fs/smb/common
  F:    fs/smb/server/
  
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
 -M:    Brendan Higgins <brendan[email protected]>
 +M:    Brendan Higgins <brendan[email protected]>
  M:    David Gow <[email protected]>
  R:    Rae Moar <[email protected]>
  L:    [email protected]
@@@ -12730,7 -12661,7 +12730,7 @@@ F:   samples/kfifo
  
  KGDB / KDB /debug_core
  M:    Jason Wessel <[email protected]>
 -M:    Daniel Thompson <daniel.thompson@linaro.org>
 +M:    Daniel Thompson <danielt@kernel.org>
  R:    Douglas Anderson <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -13639,10 -13570,10 +13639,10 @@@ Q:        http://patchwork.linuxtv.org/project
  F:    drivers/media/dvb-frontends/m88rs2000*
  
  MA901 MASTERKIT USB FM RADIO DRIVER
 -M:    Alexey Klimov <[email protected]>
 +M:    Alexey Klimov <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-ma901.c
  
  MAC80211
@@@ -13885,12 -13816,6 +13885,12 @@@ S: Supporte
  F:    Documentation/networking/device_drivers/ethernet/marvell/octeontx2.rst
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
 +MARVELL PEM PMU DRIVER
 +M:    Linu Cherian <[email protected]>
 +M:    Gowthami Thiagarajan <[email protected]>
 +S:    Supported
 +F:    drivers/perf/marvell_pem_pmu.c
 +
  MARVELL PRESTERA ETHERNET SWITCH DRIVER
  M:    Taras Chornyi <[email protected]>
  S:    Supported
@@@ -13943,7 -13868,7 +13943,7 @@@ MAX2175 SDR TUNER DRIVE
  M:    Ramesh Shanmugasundaram <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/max2175.txt
  F:    Documentation/userspace-api/media/drivers/max2175.rst
  F:    drivers/media/i2c/max2175*
@@@ -14123,7 -14048,7 +14123,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-maxiradio*
  
  MAXLINEAR ETHERNET PHY DRIVER
@@@ -14206,7 -14131,7 +14206,7 @@@ M:   Laurent Pinchart <laurent.pinchart@i
  L:    [email protected]
  S:    Supported
  W:    https://www.linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/mc/
  F:    include/media/media-*.h
  F:    include/uapi/linux/media.h
@@@ -14215,7 -14140,7 +14215,7 @@@ MEDIA DRIVER FOR FREESCALE IMX PX
  M:    Philipp Zabel <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/platform/nxp/imx-pxp.[ch]
  
  MEDIA DRIVERS FOR ASCOT2E
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/ascot2e*
  
  MEDIA DRIVERS FOR CXD2099AR CI CONTROLLERS
@@@ -14232,7 -14157,7 +14232,7 @@@ M:   Jasmin Jessich <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/cxd2099*
  
  MEDIA DRIVERS FOR CXD2841ER
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/cxd2841er*
  
  MEDIA DRIVERS FOR CXD2880
@@@ -14249,7 -14174,7 +14249,7 @@@ M:   Yasunari Takiguchi <Yasunari.Takiguc
  L:    [email protected]
  S:    Supported
  W:    http://linuxtv.org/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/cxd2880/*
  F:    drivers/media/spi/cxd2880*
  
@@@ -14257,7 -14182,7 +14257,7 @@@ MEDIA DRIVERS FOR DIGITAL DEVICES PCIE 
  L:    [email protected]
  S:    Orphan
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/ddbridge/*
  
  MEDIA DRIVERS FOR FREESCALE IMX
@@@ -14265,7 -14190,7 +14265,7 @@@ M:   Steve Longerbeam <slongerbeam@gmail.
  M:    Philipp Zabel <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/imx.rst
  F:    Documentation/devicetree/bindings/media/imx.txt
  F:    drivers/staging/media/imx/
@@@ -14279,7 -14204,7 +14279,7 @@@ M:   Martin Kepplinger <martin.kepplinger
  R:    Purism Kernel Team <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/imx7.rst
  F:    Documentation/devicetree/bindings/media/nxp,imx-mipi-csi2.yaml
  F:    Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/helene*
  
  MEDIA DRIVERS FOR HORUS3A
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/horus3a*
  
  MEDIA DRIVERS FOR LNBH25
@@@ -14312,14 -14237,14 +14312,14 @@@ L:        [email protected]
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/lnbh25*
  
  MEDIA DRIVERS FOR MXL5XX TUNER DEMODULATORS
  L:    [email protected]
  S:    Orphan
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/mxl5xx*
  
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  S:    Supported
  W:    https://linuxtv.org
  W:    http://netup.tv/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/netup_unidvb/*
  
  MEDIA DRIVERS FOR NVIDIA TEGRA - VDE
@@@ -14336,7 -14261,7 +14336,7 @@@ M:   Dmitry Osipenko <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/nvidia,tegra-vde.yaml
  F:    drivers/media/platform/nvidia/tegra-vde/
  
@@@ -14345,7 -14270,7 +14345,7 @@@ M:   Jacopo Mondi <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,ceu.yaml
  F:    drivers/media/platform/renesas/renesas-ceu.c
  F:    include/media/drv-intf/renesas-ceu.h
@@@ -14355,7 -14280,7 +14355,7 @@@ M:   Fabrizio Castro <fabrizio.castro.jz@
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,drif.yaml
  F:    drivers/media/platform/renesas/rcar_drif.c
  
@@@ -14364,7 -14289,7 +14364,7 @@@ M:   Laurent Pinchart <laurent.pinchart@i
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,fcp.yaml
  F:    drivers/media/platform/renesas/rcar-fcp.c
  F:    include/media/rcar-fcp.h
@@@ -14374,7 -14299,7 +14374,7 @@@ M:   Kieran Bingham <kieran.bingham+renes
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,fdp1.yaml
  F:    drivers/media/platform/renesas/rcar_fdp1.c
  
@@@ -14383,7 -14308,7 +14383,7 @@@ M:   Niklas Söderlund <niklas.soderlund@
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,csi2.yaml
  F:    Documentation/devicetree/bindings/media/renesas,isp.yaml
  F:    Documentation/devicetree/bindings/media/renesas,vin.yaml
@@@ -14397,7 -14322,7 +14397,7 @@@ M:   Kieran Bingham <kieran.bingham+renes
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/renesas,vsp1.yaml
  F:    drivers/media/platform/renesas/vsp1/
  
@@@ -14405,14 -14330,14 +14405,14 @@@ MEDIA DRIVERS FOR ST STV0910 DEMODULATO
  L:    [email protected]
  S:    Orphan
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/stv0910*
  
  MEDIA DRIVERS FOR ST STV6111 TUNER ICs
  L:    [email protected]
  S:    Orphan
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/dvb-frontends/stv6111*
  
  MEDIA DRIVERS FOR STM32 - DCMI / DCMIPP
@@@ -14420,7 -14345,7 +14420,7 @@@ M:   Hugues Fruchet <hugues.fruchet@foss.
  M:    Alain Volmat <[email protected]>
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml
  F:    Documentation/devicetree/bindings/media/st,stm32-dcmipp.yaml
  F:    drivers/media/platform/st/stm32/stm32-dcmi.c
  S:    Maintained
  W:    https://linuxtv.org
  Q:    http://patchwork.kernel.org/project/linux-media/list/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/admin-guide/media/
  F:    Documentation/devicetree/bindings/media/
  F:    Documentation/driver-api/media/
@@@ -14459,12 -14384,10 +14459,12 @@@ F:        Documentation/devicetree/bindings/ne
  F:    drivers/bluetooth/btmtkuart.c
  
  MEDIATEK BOARD LEVEL SHUTDOWN DRIVERS
 +M:    Sen Chu <[email protected]>
  M:    Sean Wang <[email protected]>
 +M:    Macpaul Lin <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/power/reset/mt6323-poweroff.txt
 +F:    Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
  F:    drivers/power/reset/mt6323-poweroff.c
  
  MEDIATEK CIR DRIVER
@@@ -14504,10 -14427,8 +14504,10 @@@ M: Qingfang Deng <[email protected]
  M:    SkyLake Huang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/net/phy/mediatek-ge-soc.c
 -F:    drivers/net/phy/mediatek-ge.c
 +F:    drivers/net/phy/mediatek/mtk-ge-soc.c
 +F:    drivers/net/phy/mediatek/mtk-phy-lib.c
 +F:    drivers/net/phy/mediatek/mtk-ge.c
 +F:    drivers/net/phy/mediatek/mtk.h
  F:    drivers/phy/mediatek/phy-mtk-xfi-tphy.c
  
  MEDIATEK I2C CONTROLLER DRIVER
@@@ -14571,32 -14492,6 +14571,32 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/mmc/mtk-sd.yaml
  F:    drivers/mmc/host/mtk-sd.c
  
 +MEDIATEK MT6735 CLOCK & RESET DRIVERS
 +M:    Yassine Oudjana <[email protected]>
 +L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/clk/mediatek/clk-mt6735-apmixedsys.c
 +F:    drivers/clk/mediatek/clk-mt6735-imgsys.c
 +F:    drivers/clk/mediatek/clk-mt6735-infracfg.c
 +F:    drivers/clk/mediatek/clk-mt6735-mfgcfg.c
 +F:    drivers/clk/mediatek/clk-mt6735-pericfg.c
 +F:    drivers/clk/mediatek/clk-mt6735-topckgen.c
 +F:    drivers/clk/mediatek/clk-mt6735-vdecsys.c
 +F:    drivers/clk/mediatek/clk-mt6735-vencsys.c
 +F:    include/dt-bindings/clock/mediatek,mt6735-apmixedsys.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-imgsys.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-infracfg.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-mfgcfg.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-pericfg.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-topckgen.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-vdecsys.h
 +F:    include/dt-bindings/clock/mediatek,mt6735-vencsys.h
 +F:    include/dt-bindings/reset/mediatek,mt6735-infracfg.h
 +F:    include/dt-bindings/reset/mediatek,mt6735-mfgcfg.h
 +F:    include/dt-bindings/reset/mediatek,mt6735-pericfg.h
 +F:    include/dt-bindings/reset/mediatek,mt6735-vdecsys.h
 +
  MEDIATEK MT76 WIRELESS LAN DRIVER
  M:    Felix Fietkau <[email protected]>
  M:    Lorenzo Bianconi <[email protected]>
@@@ -14653,11 -14548,9 +14653,11 @@@ F: Documentation/devicetree/bindings/mt
  F:    drivers/mtd/nand/raw/mtk_*
  
  MEDIATEK PMIC LED DRIVER
 +M:    Sen Chu <[email protected]>
  M:    Sean Wang <[email protected]>
 +M:    Macpaul Lin <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/leds/leds-mt6323.txt
 +F:    Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
  F:    drivers/leds/leds-mt6323.c
  
  MEDIATEK RANDOM NUMBER GENERATOR SUPPORT
  L:    [email protected]
  S:    Supported
  W:    http://linux-meson.com/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/cec/amlogic,meson-gx-ao-cec.yaml
  F:    drivers/media/cec/platform/meson/ao-cec-g12a.c
  F:    drivers/media/cec/platform/meson/ao-cec.c
@@@ -15050,7 -14943,7 +15050,7 @@@ M:   Neil Armstrong <neil.armstrong@linar
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/amlogic,axg-ge2d.yaml
  F:    drivers/media/platform/amlogic/meson-ge2d/
  
@@@ -15066,7 -14959,7 +15066,7 @@@ M:   Neil Armstrong <neil.armstrong@linar
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
  F:    drivers/staging/media/meson/vdec/
  
@@@ -15250,19 -15143,6 +15250,19 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/interrupt-controller/microchip,lan966x-oic.yaml
  F:    drivers/irqchip/irq-lan966x-oic.c
  
 +MICROCHIP LAN966X PCI DRIVER
 +M:    Herve Codina <[email protected]>
 +S:    Maintained
 +F:    drivers/misc/lan966x_pci.c
 +F:    drivers/misc/lan966x_pci.dtso
 +
 +MICROCHIP LAN969X ETHERNET DRIVER
 +M:    Daniel Machon <[email protected]>
 +M:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/ethernet/microchip/lan969x/*
 +
  MICROCHIP LCDFB DRIVER
  M:    Nicolas Ferre <[email protected]>
  L:    [email protected]
  M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-mips.org/
  Q:    https://patchwork.kernel.org/project/linux-mips/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git
  F:    Documentation/devicetree/bindings/mips/
@@@ -15676,7 -15557,7 +15676,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-miropcm20*
  
  MITSUMI MM8013 FG DRIVER
@@@ -15825,10 -15706,10 +15825,10 @@@ F:        Documentation/hwmon/mp9941.rs
  F:    drivers/hwmon/pmbus/mp9941.c
  
  MR800 AVERMEDIA USB FM RADIO DRIVER
 -M:    Alexey Klimov <[email protected]>
 +M:    Alexey Klimov <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-mr800.c
  
  MRF24J40 IEEE 802.15.4 RADIO DRIVER
@@@ -15895,7 -15776,7 +15895,7 @@@ MT9M114 ONSEMI SENSOR DRIVE
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
  F:    drivers/media/i2c/mt9m114.c
  
@@@ -15903,15 -15784,16 +15903,15 @@@ MT9P031 APTINA CAMERA SENSO
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9p031.yaml
  F:    drivers/media/i2c/mt9p031.c
 -F:    include/media/i2c/mt9p031.h
  
  MT9T112 APTINA CAMERA SENSOR
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/mt9t112.c
  F:    include/media/i2c/mt9t112.h
  
@@@ -15919,7 -15801,7 +15919,7 @@@ MT9V032 APTINA CAMERA SENSO
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/mt9v032.txt
  F:    drivers/media/i2c/mt9v032.c
  F:    include/media/i2c/mt9v032.h
@@@ -15928,7 -15810,7 +15928,7 @@@ MT9V111 APTINA CAMERA SENSO
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
  F:    drivers/media/i2c/mt9v111.c
  
@@@ -16060,14 -15942,6 +16060,14 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/hwmon/nuvoton,nct6775.yaml
  F:    drivers/hwmon/nct6775-i2c.c
  
 +NCT7363 HARDWARE MONITOR DRIVER
 +M:    Ban Feng <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/nuvoton,nct7363.yaml
 +F:    Documentation/hwmon/nct7363.rst
 +F:    drivers/hwmon/nct7363.c
 +
  NETCONSOLE
  M:    Breno Leitao <[email protected]>
  S:    Maintained
@@@ -16119,8 -15993,9 +16119,8 @@@ F:   net/netfilter
  F:    tools/testing/selftests/net/netfilter/
  
  NETROM NETWORK LAYER
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  W:    https://linux-ax25.in-berlin.de
  F:    include/net/netrom.h
  F:    include/uapi/linux/netrom.h
@@@ -16190,13 -16065,10 +16190,13 @@@ F:        include/linux/platform_data/wiznet.
  F:    include/uapi/linux/cn_proc.h
  F:    include/uapi/linux/ethtool_netlink.h
  F:    include/uapi/linux/if_*
 +F:    include/uapi/linux/net_shaper.h
  F:    include/uapi/linux/netdev*
  F:    tools/testing/selftests/drivers/net/
  X:    Documentation/devicetree/bindings/net/bluetooth/
 +X:    Documentation/devicetree/bindings/net/can/
  X:    Documentation/devicetree/bindings/net/wireless/
 +X:    drivers/net/can/
  X:    drivers/net/wireless/
  
  NETWORKING DRIVERS (WIRELESS)
@@@ -16285,7 -16157,6 +16285,7 @@@ X:   include/net/mac80211.
  X:    include/net/wext.h
  X:    net/9p/
  X:    net/bluetooth/
 +X:    net/can/
  X:    net/mac80211/
  X:    net/rfkill/
  X:    net/wireless/
@@@ -16374,7 -16245,7 +16374,7 @@@ F:   include/net/mptcp.
  F:    include/trace/events/mptcp.h
  F:    include/uapi/linux/mptcp*.h
  F:    net/mptcp/
 -F:    tools/testing/selftests/bpf/*/*mptcp*.c
 +F:    tools/testing/selftests/bpf/*/*mptcp*.[ch]
  F:    tools/testing/selftests/net/mptcp/
  
  NETWORKING [TCP]
@@@ -16868,6 -16739,13 +16868,6 @@@ S:  Maintaine
  F:    Documentation/hwmon/nzxt-kraken3.rst
  F:    drivers/hwmon/nzxt-kraken3.c
  
 -NZXT-SMART2 HARDWARE MONITORING DRIVER
 -M:    Aleksandr Mezin <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/nzxt-smart2.rst
 -F:    drivers/hwmon/nzxt-smart2.c
 -
  OBJAGG
  M:    Jiri Pirko <[email protected]>
  L:    [email protected]
@@@ -17009,6 -16887,14 +17009,6 @@@ S:  Maintaine
  F:    Documentation/devicetree/bindings/i2c/ti,omap4-i2c.yaml
  F:    drivers/i2c/busses/i2c-omap.c
  
 -OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
 -M:    Laurent Pinchart <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/media/ti,omap3isp.txt
 -F:    drivers/media/platform/ti/omap3isp/
 -F:    drivers/staging/media/omap4iss/
 -
  OMAP MMC SUPPORT
  M:    Aaro Koskinen <[email protected]>
  L:    [email protected]
@@@ -17119,13 -17005,13 +17119,13 @@@ OMNIVISION OV01A10 SENSOR DRIVE
  M:    Bingbu Cao <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov01a10.c
  
  OMNIVISION OV02A10 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
  F:    drivers/media/i2c/ov02a10.c
  
@@@ -17133,29 -17019,28 +17133,29 @@@ OMNIVISION OV08D10 SENSOR DRIVE
  M:    Jimmy Su <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov08d10.c
  
  OMNIVISION OV08X40 SENSOR DRIVER
  M:    Jason Chen <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov08x40.c
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov08x40.yaml
  
  OMNIVISION OV13858 SENSOR DRIVER
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov13858.c
  
  OMNIVISION OV13B10 SENSOR DRIVER
  M:    Arec Kao <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov13b10.c
  
  OMNIVISION OV2680 SENSOR DRIVER
@@@ -17163,7 -17048,7 +17163,7 @@@ M:   Rui Miguel Silva <[email protected]
  M:    Hans de Goede <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
  F:    drivers/media/i2c/ov2680.c
  
@@@ -17171,7 -17056,7 +17171,7 @@@ OMNIVISION OV2685 SENSOR DRIVE
  M:    Shunqian Zheng <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov2685.yaml
  F:    drivers/media/i2c/ov2685.c
  
@@@ -17181,14 -17066,14 +17181,14 @@@ R:        Sakari Ailus <[email protected]
  R:    Bingbu Cao <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov2740.c
  
  OMNIVISION OV4689 SENSOR DRIVER
  M:    Mikhail Rudenko <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
  F:    drivers/media/i2c/ov4689.c
  
@@@ -17196,7 -17081,7 +17196,7 @@@ OMNIVISION OV5640 SENSOR DRIVE
  M:    Steve Longerbeam <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov5640.c
  
  OMNIVISION OV5647 SENSOR DRIVER
@@@ -17204,7 -17089,7 +17204,7 @@@ M:   Dave Stevenson <dave.stevenson@raspb
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml
  F:    drivers/media/i2c/ov5647.c
  
@@@ -17212,7 -17097,7 +17212,7 @@@ OMNIVISION OV5670 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5670.yaml
  F:    drivers/media/i2c/ov5670.c
  
@@@ -17220,7 -17105,7 +17220,7 @@@ OMNIVISION OV5675 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5675.yaml
  F:    drivers/media/i2c/ov5675.c
  
@@@ -17228,7 -17113,7 +17228,7 @@@ OMNIVISION OV5693 SENSOR DRIVE
  M:    Daniel Scally <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
  F:    drivers/media/i2c/ov5693.c
  
@@@ -17236,21 -17121,21 +17236,21 @@@ OMNIVISION OV5695 SENSOR DRIVE
  M:    Shunqian Zheng <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov5695.c
  
  OMNIVISION OV64A40 SENSOR DRIVER
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml
  F:    drivers/media/i2c/ov64a40.c
  
  OMNIVISION OV7670 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ov7670.txt
  F:    drivers/media/i2c/ov7670.c
  
@@@ -17258,7 -17143,7 +17258,7 @@@ OMNIVISION OV772x SENSOR DRIVE
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Odd fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
  F:    drivers/media/i2c/ov772x.c
  F:    include/media/i2c/ov772x.h
  OMNIVISION OV7740 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ov7740.txt
  F:    drivers/media/i2c/ov7740.c
  
@@@ -17274,7 -17159,7 +17274,7 @@@ OMNIVISION OV8856 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov8856.yaml
  F:    drivers/media/i2c/ov8856.c
  
@@@ -17283,7 -17168,7 +17283,7 @@@ M:   Jacopo Mondi <jacopo.mondi@ideasonbo
  M:    Nicholas Roth <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov8858.yaml
  F:    drivers/media/i2c/ov8858.c
  
@@@ -17291,7 -17176,7 +17291,7 @@@ OMNIVISION OV9282 SENSOR DRIVE
  M:    Dave Stevenson <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov9282.yaml
  F:    drivers/media/i2c/ov9282.c
  
@@@ -17307,7 -17192,7 +17307,7 @@@ R:   Akinobu Mita <[email protected]
  R:    Sylwester Nawrocki <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/ov9650.txt
  F:    drivers/media/i2c/ov9650.c
  
@@@ -17316,7 -17201,7 +17316,7 @@@ M:   Tianshu Qiu <[email protected]
  R:    Bingbu Cao <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov9734.c
  
  ONBOARD USB HUB DRIVER
@@@ -17541,7 -17426,6 +17541,7 @@@ S:   Supporte
  F:    Documentation/core-api/packing.rst
  F:    include/linux/packing.h
  F:    lib/packing.c
 +F:    lib/packing_test.c
  
  PADATA PARALLEL EXECUTION MECHANISM
  M:    Steffen Klassert <[email protected]>
@@@ -18379,7 -18263,6 +18379,7 @@@ PIN CONTROLLER - QUALCOM
  M:    Bjorn Andersson <[email protected]>
  L:    [email protected]
  S:    Maintained
 +C:    irc://irc.oftc.net/linux-msm
  F:    Documentation/devicetree/bindings/pinctrl/qcom,*
  F:    drivers/pinctrl/qcom/
  
@@@ -18747,13 -18630,6 +18747,13 @@@ S: Maintaine
  F:    drivers/ptp/ptp_vclock.c
  F:    net/ethtool/phc_vclocks.c
  
 +PTP VMCLOCK SUPPORT
 +M:    David Woodhouse <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/ptp/ptp_vmclock.c
 +F:    include/uapi/linux/vmclock-abi.h
 +
  PTRACE SUPPORT
  M:    Oleg Nesterov <[email protected]>
  S:    Maintained
@@@ -18770,7 -18646,7 +18770,7 @@@ PULSE8-CEC DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/cec/usb/pulse8/
  
  PURELIFI PLFXLC DRIVER
@@@ -18785,7 -18661,7 +18785,7 @@@ L:   [email protected]       (subscribers-only
  L:    [email protected]
  S:    Maintained
  W:    http://www.isely.net/pvrusb2/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/driver-api/media/drivers/pvrusb2*
  F:    drivers/media/usb/pvrusb2/
  
@@@ -18793,7 -18669,7 +18793,7 @@@ PWC WEBCAM DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/pwc/*
  F:    include/trace/events/pwc.h
  
@@@ -19297,7 -19173,7 +19297,7 @@@ R:   Bryan O'Donoghue <bryan.odonoghue@li
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/*venus*
  F:    drivers/media/platform/qcom/venus/
  
@@@ -19342,14 -19218,14 +19342,14 @@@ RADIOSHARK RADIO DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-shark.c
  
  RADIOSHARK2 RADIO DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-shark2.c
  F:    drivers/media/radio/radio-tea5777.c
  
@@@ -19373,7 -19249,7 +19373,7 @@@ RAINSHADOW-CEC DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/cec/usb/rainshadow/
  
  RALINK MIPS ARCHITECTURE
@@@ -19452,19 -19328,12 +19452,19 @@@ F:        Documentation/devicetree/bindings/me
  F:    drivers/media/platform/raspberrypi/pisp_be/
  F:    include/uapi/linux/media/raspberrypi/
  
 +RASPBERRY PI PISP CAMERA FRONT END
 +M:    Tomi Valkeinen <[email protected]>
 +M:    Raspberry Pi Kernel Maintenance <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/raspberrypi,rp1-cfe.yaml
 +F:    drivers/media/platform/raspberrypi/rp1-cfe/
 +
  RC-CORE / LIRC FRAMEWORK
  M:    Sean Young <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    http://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/driver-api/media/rc-core.rst
  F:    Documentation/userspace-api/media/rc/
  F:    drivers/media/rc/
@@@ -19621,12 -19490,6 +19621,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/net/dsa/realtek.yaml
  F:    drivers/net/dsa/realtek/*
  
 +REALTEK SPI-NAND
 +M:    Chris Packham <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/realtek,rtl9301-snand.yaml
 +F:    drivers/spi/spi-realtek-rtl-snand.c
 +
  REALTEK WIRELESS DRIVER (rtlwifi family)
  M:    Ping-Ke Shih <[email protected]>
  L:    [email protected]
@@@ -19662,6 -19525,11 +19662,6 @@@ F:  Documentation/devicetree/bindings/re
  F:    drivers/base/regmap/
  F:    include/linux/regmap.h
  
 -REISERFS FILE SYSTEM
 -L:    [email protected]
 -S:    Obsolete
 -F:    fs/reiserfs/
 -
  REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
  M:    Bjorn Andersson <[email protected]>
  M:    Mathieu Poirier <[email protected]>
@@@ -19711,17 -19579,6 +19711,17 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
  F:    drivers/i2c/busses/i2c-emev2.c
  
 +RENESAS ETHERNET AVB DRIVER
 +M:    Paul Barker <[email protected]>
 +M:    Niklas Söderlund <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/net/renesas,etheravb.yaml
 +F:    drivers/net/ethernet/renesas/Kconfig
 +F:    drivers/net/ethernet/renesas/Makefile
 +F:    drivers/net/ethernet/renesas/ravb*
 +
  RENESAS ETHERNET SWITCH DRIVER
  R:    Yoshihiro Shimoda <[email protected]>
  L:    [email protected]
@@@ -19747,17 -19604,6 +19747,17 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/sound/renesas,idt821034.yaml
  F:    sound/soc/codecs/idt821034.c
  
 +RENESAS R-CAR & FSI AUDIO (ASoC) DRIVERS
 +M:    Kuninori Morimoto <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/sound/renesas,rsnd.*
 +F:    Documentation/devicetree/bindings/sound/renesas,fsi.yaml
 +F:    sound/soc/renesas/rcar/
 +F:    sound/soc/renesas/fsi.c
 +F:    include/sound/sh_fsi.h
 +
  RENESAS R-CAR GEN3 & RZ/N1 NAND CONTROLLER DRIVER
  M:    Miquel Raynal <[email protected]>
  L:    [email protected]
@@@ -19782,14 -19628,6 +19782,14 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-rcar.c
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
 +RENESAS R-CAR SATA DRIVER
 +M:    Geert Uytterhoeven <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/ata/renesas,rcar-sata.yaml
 +F:    drivers/ata/sata_rcar.c
 +
  RENESAS R-CAR THERMAL DRIVERS
  M:    Niklas Söderlund <[email protected]>
  L:    [email protected]
@@@ -19806,15 -19644,6 +19806,15 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/i2c/renesas,riic.yaml
  F:    drivers/i2c/busses/i2c-riic.c
  
 +RENESAS RZ AUDIO (ASoC) DRIVER
 +M:    Biju Das <[email protected]>
 +M:    Lad Prabhakar <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/sound/renesas,rz-ssi.yaml
 +F:    sound/soc/renesas/rz-ssi.c
 +
  RENESAS RZ/G2L A/D DRIVER
  M:    Lad Prabhakar <[email protected]>
  L:    [email protected]
@@@ -19874,17 -19703,6 +19874,17 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/i2c/renesas,rzv2m.yaml
  F:    drivers/i2c/busses/i2c-rzv2m.c
  
 +RENESAS SUPERH ETHERNET DRIVER
 +M:    Niklas Söderlund <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/net/renesas,ether.yaml
 +F:    drivers/net/ethernet/renesas/Kconfig
 +F:    drivers/net/ethernet/renesas/Makefile
 +F:    drivers/net/ethernet/renesas/sh_eth*
 +F:    include/linux/sh_eth.h
 +
  RENESAS USB PHY DRIVER
  M:    Yoshihiro Shimoda <[email protected]>
  L:    [email protected]
@@@ -19992,6 -19810,15 +19992,15 @@@ F: arch/riscv
  N:    riscv
  K:    riscv
  
+ RISC-V IOMMU
+ M:    Tomasz Jeznach <[email protected]>
+ L:    [email protected]
+ L:    [email protected]
+ S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
+ F:    Documentation/devicetree/bindings/iommu/riscv,iommu.yaml
+ F:    drivers/iommu/riscv/
  RISC-V MICROCHIP FPGA SUPPORT
  M:    Conor Dooley <[email protected]>
  M:    Daire McNamara <[email protected]>
@@@ -20011,7 -19838,6 +20020,7 @@@ F:   arch/riscv/boot/dts/microchip
  F:    drivers/char/hw_random/mpfs-rng.c
  F:    drivers/clk/microchip/clk-mpfs*.c
  F:    drivers/firmware/microchip/mpfs-auto-update.c
 +F:    drivers/gpio/gpio-mpfs.c
  F:    drivers/i2c/busses/i2c-microchip-corei2c.c
  F:    drivers/mailbox/mailbox-mpfs.c
  F:    drivers/pci/controller/plda/pcie-microchip-host.c
  S:    Maintained
  T:    git https://github.com/pdp7/linux.git
  F:    Documentation/devicetree/bindings/clock/thead,th1520-clk-ap.yaml
 +F:    Documentation/devicetree/bindings/net/thead,th1520-gmac.yaml
  F:    arch/riscv/boot/dts/thead/
  F:    drivers/clk/thead/clk-th1520-ap.c
 +F:    drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c
  F:    include/dt-bindings/clock/thead,th1520-clk-ap.h
  
  RNBD BLOCK DRIVERS
@@@ -20220,8 -20044,9 +20229,8 @@@ F:   include/linux/mfd/rohm-generic.
  F:    include/linux/mfd/rohm-shared.h
  
  ROSE NETWORK LAYER
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  W:    https://linux-ax25.in-berlin.de
  F:    include/net/rose.h
  F:    include/uapi/linux/rose.h
@@@ -20231,7 -20056,7 +20240,7 @@@ ROTATION DRIVER FOR ALLWINNER A83
  M:    Jernej Skrabec <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/allwinner,sun8i-a83t-de2-rotate.yaml
  F:    drivers/media/platform/sunxi/sun8i-rotate/
  
@@@ -20295,13 -20120,6 +20304,13 @@@ S: Maintaine
  T:    git https://github.com/pkshih/rtw.git
  F:    drivers/net/wireless/realtek/rtl8xxxu/
  
 +RTL9300 I2C DRIVER (rtl9300-i2c)
 +M:    Chris Packham <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/realtek,rtl9301-i2c.yaml
 +F:    drivers/i2c/busses/i2c-rtl9300.c
 +
  RTRS TRANSPORT DRIVERS
  M:    Md. Haris Iqbal <[email protected]>
  M:    Jack Wang <[email protected]>
  S:    Supported
  F:    drivers/s390/cio/
  
 +S390 CRYPTO MODULES, PRNG DRIVER, ARCH RANDOM
 +M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    arch/s390/crypto/
 +F:    arch/s390/include/asm/archrandom.h
 +F:    arch/s390/include/asm/cpacf.h
 +
  S390 DASD DRIVER
  M:    Stefan Haberland <[email protected]>
  M:    Jan Hoeppner <[email protected]>
@@@ -20403,14 -20211,6 +20412,14 @@@ F: block/partitions/ibm.
  F:    drivers/s390/block/dasd*
  F:    include/linux/dasd_mod.h
  
 +S390 HWRANDOM TRNG DRIVER
 +M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/char/hw_random/s390-trng.c
 +
  S390 IOMMU (PCI)
  M:    Niklas Schnelle <[email protected]>
  M:    Matthew Rosato <[email protected]>
@@@ -20455,12 -20255,6 +20464,12 @@@ F: Documentation/arch/s390/pci.rs
  F:    arch/s390/pci/
  F:    drivers/pci/hotplug/s390_pci_hpc.c
  
 +S390 PTP DRIVER
 +M:    Sven Schnelle <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/ptp/ptp_s390.c
 +
  S390 SCM DRIVER
  M:    Vineeth Vijayan <[email protected]>
  L:    [email protected]
@@@ -20498,16 -20292,10 +20507,16 @@@ F:        arch/s390/kvm/pci
  F:    drivers/vfio/pci/vfio_pci_zdev.c
  F:    include/uapi/linux/vfio_zdev.h
  
 -S390 ZCRYPT DRIVER
 +S390 ZCRYPT AND PKEY DRIVER AND AP BUS
  M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    arch/s390/include/asm/ap.h
 +F:    arch/s390/include/asm/pkey.h
 +F:    arch/s390/include/asm/trace/zcrypt.h
 +F:    arch/s390/include/uapi/asm/pkey.h
 +F:    arch/s390/include/uapi/asm/zcrypt.h
  F:    drivers/s390/crypto/
  
  S390 ZFCP DRIVER
@@@ -20522,7 -20310,7 +20531,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
@@@ -20530,7 -20318,7 +20539,7 @@@ M:   Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Odd fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/driver-api/media/drivers/saa7134*
  F:    drivers/media/pci/saa7134/
  
@@@ -20538,7 -20326,7 +20547,7 @@@ SAA7146 VIDEO4LINUX-2 DRIVE
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/common/saa7146/
  F:    drivers/media/pci/saa7146/
  F:    include/media/drv-intf/saa7146*
  S:    Maintained
  B:    mailto:[email protected]
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.yaml
 -F:    Documentation/devicetree/bindings/mfd/samsung,s2m*.yaml
 +F:    Documentation/devicetree/bindings/mfd/samsung,s2*.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,s5m*.yaml
  F:    Documentation/devicetree/bindings/regulator/samsung,s2m*.yaml
  F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.yaml
@@@ -20994,7 -20782,6 +21003,7 @@@ Q:   https://patchwork.kernel.org/project
  B:    mailto:[email protected]
  P:    https://github.com/LinuxSecurityModule/kernel/blob/main/README.md
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
 +F:    include/linux/lsm/
  F:    include/linux/lsm_audit.h
  F:    include/linux/lsm_hook_defs.h
  F:    include/linux/lsm_hooks.h
@@@ -21141,7 -20928,6 +21150,7 @@@ M:   Jan Karcher <[email protected]
  R:    D. Wythe <[email protected]>
  R:    Tony Lu <[email protected]>
  R:    Wen Gu <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    net/smc/
@@@ -21158,7 -20944,7 +21167,7 @@@ SHARP RJ54N1CB0C SENSOR DRIVE
  M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Odd fixes
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/rj54n1cb0c.c
  F:    include/media/i2c/rj54n1cb0c.h
  
@@@ -21208,7 -20994,7 +21217,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/silabs,si470x.yaml
  F:    drivers/media/radio/si470x/radio-si470x-i2c.c
  
@@@ -21217,7 -21003,7 +21226,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/si470x/radio-si470x-common.c
  F:    drivers/media/radio/si470x/radio-si470x-usb.c
  F:    drivers/media/radio/si470x/radio-si470x.h
@@@ -21227,7 -21013,7 +21236,7 @@@ M:   Eduardo Valentin <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/si4713/si4713.?
  
  SI4713 FM RADIO TRANSMITTER PLATFORM DRIVER
@@@ -21235,7 -21021,7 +21244,7 @@@ M:   Eduardo Valentin <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/si4713/radio-platform-si4713.c
  
  SI4713 FM RADIO TRANSMITTER USB DRIVER
@@@ -21243,7 -21029,7 +21252,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
@@@ -21251,23 -21037,23 +21260,23 @@@ M:        Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Odd fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/common/siano/
  F:    drivers/media/mmc/siano/
  F:    drivers/media/usb/siano/
  F:    drivers/media/usb/siano/
  
  SIEMENS IPC LED DRIVERS
 -M:    Gerd Haeussler <gerd.haeussler.ext@siemens.com>
 -M:    Xing Tong Wu <xingtong.wu@siemens.com>
 +M:    Bao Cheng Su <baocheng.su@siemens.com>
 +M:    Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
  M:    Tobias Schaffner <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/leds/simple/
  
  SIEMENS IPC PLATFORM DRIVERS
 -M:    Gerd Haeussler <gerd.haeussler.ext@siemens.com>
 -M:    Xing Tong Wu <xingtong.wu@siemens.com>
 +M:    Bao Cheng Su <baocheng.su@siemens.com>
 +M:    Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
  M:    Tobias Schaffner <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -21276,8 -21062,8 +21285,8 @@@ F:   include/linux/platform_data/x86/sima
  F:    include/linux/platform_data/x86/simatic-ipc.h
  
  SIEMENS IPC WATCHDOG DRIVERS
 -M:    Gerd Haeussler <gerd.haeussler.ext@siemens.com>
 -M:    Xing Tong Wu <xingtong.wu@siemens.com>
 +M:    Bao Cheng Su <baocheng.su@siemens.com>
 +M:    Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
  M:    Tobias Schaffner <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -21585,11 -21371,11 +21594,11 @@@ F:        include/linux/property.
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Song Liu <[email protected]>
 -R:    Yu Kuai <[email protected]>
 +M:    Yu Kuai <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-raid/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux.git
  F:    drivers/md/Kconfig
  F:    drivers/md/Makefile
  F:    drivers/md/md*
@@@ -21627,14 -21413,14 +21636,14 @@@ SONY IMX208 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/imx208.c
  
  SONY IMX214 SENSOR DRIVER
  M:    Ricardo Ribalda <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
  F:    drivers/media/i2c/imx214.c
  
@@@ -21642,7 -21428,7 +21651,7 @@@ SONY IMX219 SENSOR DRIVE
  M:    Dave Stevenson <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/imx219.yaml
  F:    drivers/media/i2c/imx219.c
  
@@@ -21650,7 -21436,7 +21659,7 @@@ SONY IMX258 SENSOR DRIVE
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx258.yaml
  F:    drivers/media/i2c/imx258.c
  
@@@ -21658,7 -21444,7 +21667,7 @@@ SONY IMX274 SENSOR DRIVE
  M:    Leon Luo <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml
  F:    drivers/media/i2c/imx274.c
  
@@@ -21667,7 -21453,7 +21676,7 @@@ M:   Kieran Bingham <kieran.bingham@ideas
  M:    Umang Jain <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx283.yaml
  F:    drivers/media/i2c/imx283.c
  
@@@ -21675,7 -21461,7 +21684,7 @@@ SONY IMX290 SENSOR DRIVE
  M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx290.yaml
  F:    drivers/media/i2c/imx290.c
  
@@@ -21684,7 -21470,7 +21693,7 @@@ M:   Laurent Pinchart <laurent.pinchart@i
  M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx296.yaml
  F:    drivers/media/i2c/imx296.c
  
@@@ -21692,20 -21478,20 +21701,20 @@@ SONY IMX319 SENSOR DRIVE
  M:    Bingbu Cao <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/imx319.c
  
  SONY IMX334 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml
  F:    drivers/media/i2c/imx334.c
  
  SONY IMX335 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx335.yaml
  F:    drivers/media/i2c/imx335.c
  
@@@ -21713,13 -21499,13 +21722,13 @@@ SONY IMX355 SENSOR DRIVE
  M:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/imx355.c
  
  SONY IMX412 SENSOR DRIVER
  L:    [email protected]
  S:    Orphan
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
  F:    drivers/media/i2c/imx412.c
  
@@@ -21727,7 -21513,7 +21736,7 @@@ SONY IMX415 SENSOR DRIVE
  M:    Michael Riesch <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml
  F:    drivers/media/i2c/imx415.c
  
@@@ -22016,7 -21802,7 +22025,7 @@@ M:   Benjamin Mugnier <benjamin.mugnier@f
  M:    Sylvain Petinot <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
  F:    drivers/media/i2c/st-mipid02.c
  
@@@ -22052,7 -21838,7 +22061,7 @@@ M:   Benjamin Mugnier <benjamin.mugnier@f
  M:    Sylvain Petinot <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/st,st-vgxy61.yaml
  F:    Documentation/userspace-api/media/drivers/vgxy61.rst
  F:    drivers/media/i2c/vgxy61.c
@@@ -22342,7 -22128,7 +22351,7 @@@ STK1160 USB VIDEO CAPTURE DRIVE
  M:    Ezequiel Garcia <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/stk1160/
  
  STM32 AUDIO (ASoC) DRIVERS
@@@ -22402,6 -22188,12 +22411,6 @@@ S:  Maintaine
  F:    Documentation/devicetree/bindings/input/allwinner,sun4i-a10-lradc-keys.yaml
  F:    drivers/input/keyboard/sun4i-lradc-keys.c
  
 -SUNDANCE NETWORK DRIVER
 -M:    Denis Kirjanov <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/net/ethernet/dlink/sundance.c
 -
  SUNPLUS ETHERNET DRIVER
  M:    Wells Lu <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/tuners/tda18250*
  
  TDA18271 MEDIA DRIVER
@@@ -22819,7 -22611,7 +22828,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
@@@ -22827,7 -22619,7 +22836,7 @@@ M:   Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Odd fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/tuners/tea5761.*
  
  TEA5767 TUNER DRIVER
@@@ -22835,7 -22627,7 +22844,7 @@@ M:   Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/tuners/tea5767.*
  
  TEA6415C MEDIA DRIVER
@@@ -22843,7 -22635,7 +22852,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/tea6415c*
  
  TEA6420 MEDIA DRIVER
@@@ -22851,7 -22643,7 +22860,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/tea6420*
  
  TEAM DRIVER
@@@ -23087,12 -22879,6 +23096,12 @@@ F: include/linux/dma/k3-udma-glue.
  F:    include/linux/dma/ti-cppi5.h
  X:    drivers/dma/ti/cppi41.c
  
 +TEXAS INSTRUMENTS TPS25990 HARDWARE MONITOR DRIVER
 +M:    Jerome Brunet <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/pmbus/ti,tps25990.yaml
 +
  TEXAS INSTRUMENTS TPS23861 PoE PSE DRIVER
  M:    Robert Marko <[email protected]>
  M:    Luka Perkov <[email protected]>
@@@ -23145,7 -22931,7 +23154,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/radio/radio-raremono.c
  
  THERMAL
@@@ -23221,7 -23007,7 +23230,7 @@@ M:   Laurent Pinchart <laurent.pinchart@i
  M:    Paul Elder <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/i2c/thine,thp7312.yaml
  F:    Documentation/userspace-api/media/drivers/thp7312.rst
  F:    drivers/media/i2c/thp7312.c
@@@ -23400,7 -23186,7 +23409,7 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/ti/icssg/*
  
  TI J721E CSI2RX DRIVER
 -M:    Jai Luthra <j[email protected]>
 +M:    Jai Luthra <j[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/ti,j721e-csi2rx-shim.yaml
@@@ -23778,9 -23564,10 +23787,9 @@@ F:  drivers/net/tun.
  
  TURBOCHANNEL SUBSYSTEM
  M:    "Maciej W. Rozycki" <[email protected]>
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
  S:    Maintained
 -Q:    http://patchwork.linux-mips.org/project/linux-mips/list/
 +Q:    https://patchwork.kernel.org/project/linux-mips/list/
  F:    drivers/tc/
  F:    include/linux/tc.h
  
@@@ -23807,7 -23594,7 +23816,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Odd Fixes
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/tw68/
  
  TW686X VIDEO4LINUX DRIVER
@@@ -23815,7 -23602,7 +23824,7 @@@ M:   Ezequiel Garcia <ezequiel@vanguardia
  L:    [email protected]
  S:    Maintained
  W:    http://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/pci/tw686x/
  
  U-BOOT ENVIRONMENT VARIABLES
@@@ -24295,11 -24082,10 +24304,11 @@@ F:        drivers/usb/host/uhci
  
  USB VIDEO CLASS
  M:    Laurent Pinchart <[email protected]>
 +M:    Hans de Goede <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    http://www.ideasonboard.org/uvc/
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/usb/uvc/
  F:    include/uapi/linux/uvcvideo.h
  
@@@ -24351,7 -24137,6 +24360,7 @@@ F:   lib/iov_iter.
  
  USERSPACE DMA BUFFER DRIVER
  M:    Gerd Hoffmann <[email protected]>
 +M:    Vivek Kasireddy <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
@@@ -24406,7 -24191,7 +24415,7 @@@ V4L2 ASYNC AND FWNODE FRAMEWORK
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/v4l2-core/v4l2-async.c
  F:    drivers/media/v4l2-core/v4l2-fwnode.c
  F:    include/media/v4l2-async.h
@@@ -24572,7 -24357,7 +24581,7 @@@ M:   Hans Verkuil <hverkuil-cisco@xs4all.
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/test-drivers/vicodec/*
  
  VIDEO I2C POLLING DRIVER
@@@ -24600,7 -24385,7 +24609,7 @@@ M:   Daniel W. S. Almeida <dwlsalmeida@gm
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/test-drivers/vidtv/*
  
  VIMC VIRTUAL MEDIA CONTROLLER DRIVER
@@@ -24609,7 -24394,7 +24618,7 @@@ R:   Kieran Bingham <kieran.bingham@ideas
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/test-drivers/vimc/*
  
  VIRT LIB
@@@ -24857,7 -24642,7 +24866,7 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/test-drivers/vivid/*
  
  VM SOCKETS (AF_VSOCK)
@@@ -25411,7 -25196,7 +25420,7 @@@ M:   Mauro Carvalho Chehab <mchehab@kerne
  L:    [email protected]
  S:    Maintained
  W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    drivers/media/tuners/xc2028.*
  
  XDP (eXpress Data Path)
@@@ -25635,7 -25420,7 +25644,7 @@@ XILINX VIDEO IP CORE
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
  S:    Supported
 -T:    git git://linuxtv.org/media_tree.git
 +T:    git git://linuxtv.org/media.git
  F:    Documentation/devicetree/bindings/media/xilinx/
  F:    drivers/media/platform/xilinx/
  F:    include/uapi/linux/xilinx-v4l2-controls.h
index 5013a690837ecf963e4658479dd0577e7ea16200,30b20ce9a70033cc7c1bc8c3b35c82444cb53a2e..474e1f8d1d3c2fc5685b459cc68b67ac651ea3e9
@@@ -96,7 -96,6 +96,6 @@@ struct zpci_bar_struct 
        u8              size;           /* order 2 exponent */
  };
  
- struct s390_domain;
  struct kvm_zdev;
  
  #define ZPCI_FUNCTIONS_PER_BUS 256
@@@ -107,10 -106,9 +106,10 @@@ struct zpci_bus 
        struct list_head        resources;
        struct list_head        bus_next;
        struct resource         bus_resource;
 -      int                     pchid;
 +      int                     topo;           /* TID if topo_is_tid, PCHID otherwise */
        int                     domain_nr;
 -      bool                    multifunction;
 +      u8                      multifunction   : 1;
 +      u8                      topo_is_tid     : 1;
        enum pci_bus_speed      max_bus_speed;
  };
  
@@@ -131,12 -129,9 +130,12 @@@ struct zpci_dev 
        u16             vfn;            /* virtual function number */
        u16             pchid;          /* physical channel ID */
        u16             maxstbl;        /* Maximum store block size */
 +      u16             rid;            /* RID as supplied by firmware */
 +      u16             tid;            /* Topology for which RID is valid */
        u8              pfgid;          /* function group ID */
        u8              pft;            /* pci function type */
        u8              port;
 +      u8              fidparm;
        u8              dtsm;           /* Supported DT mask */
        u8              rid_available   : 1;
        u8              has_hp_slot     : 1;
        u8              is_physfn       : 1;
        u8              util_str_avail  : 1;
        u8              irqs_registered : 1;
 -      u8              reserved        : 2;
 +      u8              tid_avail       : 1;
 +      u8              reserved        : 1;
        unsigned int    devfn;          /* DEVFN part of the RID*/
  
        u8 pfip[CLP_PFIP_NR_SEGMENTS];  /* pci function internal path */
        struct dentry   *debugfs_dev;
  
        /* IOMMU and passthrough */
-       struct s390_domain *s390_domain; /* s390 IOMMU domain data */
+       struct iommu_domain *s390_domain; /* attached IOMMU domain */
        struct kvm_zdev *kzdev;
        struct mutex kzdev_lock;
+       spinlock_t dom_lock;            /* protect s390_domain change */
  };
  
  static inline bool zdev_enabled(struct zpci_dev *zdev)
@@@ -215,14 -210,12 +215,14 @@@ extern struct airq_iv *zpci_aif_sbv
  ----------------------------------------------------------------------------- */
  /* Base stuff */
  struct zpci_dev *zpci_create_device(u32 fid, u32 fh, enum zpci_state state);
 +int zpci_add_device(struct zpci_dev *zdev);
  int zpci_enable_device(struct zpci_dev *);
  int zpci_disable_device(struct zpci_dev *);
  int zpci_scan_configured_device(struct zpci_dev *zdev, u32 fh);
  int zpci_deconfigure_device(struct zpci_dev *zdev);
  void zpci_device_reserved(struct zpci_dev *zdev);
  bool zpci_is_device_configured(struct zpci_dev *zdev);
 +int zpci_scan_devices(void);
  
  int zpci_hot_reset_device(struct zpci_dev *zdev);
  int zpci_register_ioat(struct zpci_dev *, u8, u64, u64, u64, u8 *);
@@@ -232,7 -225,7 +232,7 @@@ void zpci_update_fh(struct zpci_dev *zd
  
  /* CLP */
  int clp_setup_writeback_mio(void);
 -int clp_scan_pci_devices(void);
 +int clp_scan_pci_devices(struct list_head *scan_list);
  int clp_query_pci_fn(struct zpci_dev *zdev);
  int clp_enable_fh(struct zpci_dev *zdev, u32 *fh, u8 nr_dma_as);
  int clp_disable_fh(struct zpci_dev *zdev, u32 *fh);
diff --combined arch/s390/pci/pci.c
index b7efa96776eac28bb6b947082d64fca67cbe79ea,be3299609f9b6569506a216276c75f8d722565e4..cbff587dc4e31e22f69a1d1011e0b5d5cdd39408
@@@ -29,7 -29,6 +29,7 @@@
  #include <linux/pci.h>
  #include <linux/printk.h>
  #include <linux/lockdep.h>
 +#include <linux/list_sort.h>
  
  #include <asm/isc.h>
  #include <asm/airq.h>
@@@ -161,6 -160,7 +161,7 @@@ int zpci_fmb_enable_device(struct zpci_
        u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_SET_MEASURE);
        struct zpci_iommu_ctrs *ctrs;
        struct zpci_fib fib = {0};
+       unsigned long flags;
        u8 cc, status;
  
        if (zdev->fmb || sizeof(*zdev->fmb) < zdev->fmb_length)
        WARN_ON((u64) zdev->fmb & 0xf);
  
        /* reset software counters */
+       spin_lock_irqsave(&zdev->dom_lock, flags);
        ctrs = zpci_get_iommu_ctrs(zdev);
        if (ctrs) {
                atomic64_set(&ctrs->mapped_pages, 0);
                atomic64_set(&ctrs->sync_map_rpcits, 0);
                atomic64_set(&ctrs->sync_rpcits, 0);
        }
+       spin_unlock_irqrestore(&zdev->dom_lock, flags);
  
  
        fib.fmb_addr = virt_to_phys(zdev->fmb);
@@@ -786,6 -788,7 +789,6 @@@ struct zpci_dev *zpci_create_device(u3
        struct zpci_dev *zdev;
        int rc;
  
 -      zpci_dbg(1, "add fid:%x, fh:%x, c:%d\n", fid, fh, state);
        zdev = kzalloc(sizeof(*zdev), GFP_KERNEL);
        if (!zdev)
                return ERR_PTR(-ENOMEM);
        mutex_init(&zdev->fmb_lock);
        mutex_init(&zdev->kzdev_lock);
  
 +      return zdev;
 +
 +error:
 +      zpci_dbg(0, "crt fid:%x, rc:%d\n", fid, rc);
 +      kfree(zdev);
 +      return ERR_PTR(rc);
 +}
 +
 +int zpci_add_device(struct zpci_dev *zdev)
 +{
 +      int rc;
 +
 +      zpci_dbg(1, "add fid:%x, fh:%x, c:%d\n", zdev->fid, zdev->fh, zdev->state);
        rc = zpci_init_iommu(zdev);
        if (rc)
                goto error;
        spin_lock(&zpci_list_lock);
        list_add_tail(&zdev->entry, &zpci_list);
        spin_unlock(&zpci_list_lock);
 -
 -      return zdev;
 +      return 0;
  
  error_destroy_iommu:
        zpci_destroy_iommu(zdev);
  error:
 -      zpci_dbg(0, "add fid:%x, rc:%d\n", fid, rc);
 -      kfree(zdev);
 -      return ERR_PTR(rc);
 +      zpci_dbg(0, "add fid:%x, rc:%d\n", zdev->fid, rc);
 +      return rc;
  }
  
  bool zpci_is_device_configured(struct zpci_dev *zdev)
@@@ -1093,49 -1085,6 +1096,49 @@@ bool zpci_is_enabled(void
        return s390_pci_initialized;
  }
  
 +static int zpci_cmp_rid(void *priv, const struct list_head *a,
 +                      const struct list_head *b)
 +{
 +      struct zpci_dev *za = container_of(a, struct zpci_dev, entry);
 +      struct zpci_dev *zb = container_of(b, struct zpci_dev, entry);
 +
 +      /*
 +       * PCI functions without RID available maintain original order
 +       * between themselves but sort before those with RID.
 +       */
 +      if (za->rid == zb->rid)
 +              return za->rid_available > zb->rid_available;
 +      /*
 +       * PCI functions with RID sort by RID ascending.
 +       */
 +      return za->rid > zb->rid;
 +}
 +
 +static void zpci_add_devices(struct list_head *scan_list)
 +{
 +      struct zpci_dev *zdev, *tmp;
 +
 +      list_sort(NULL, scan_list, &zpci_cmp_rid);
 +      list_for_each_entry_safe(zdev, tmp, scan_list, entry) {
 +              list_del_init(&zdev->entry);
 +              zpci_add_device(zdev);
 +      }
 +}
 +
 +int zpci_scan_devices(void)
 +{
 +      LIST_HEAD(scan_list);
 +      int rc;
 +
 +      rc = clp_scan_pci_devices(&scan_list);
 +      if (rc)
 +              return rc;
 +
 +      zpci_add_devices(&scan_list);
 +      zpci_bus_scan_busses();
 +      return 0;
 +}
 +
  static int __init pci_base_init(void)
  {
        int rc;
        if (rc)
                goto out_irq;
  
 -      rc = clp_scan_pci_devices();
 +      rc = zpci_scan_devices();
        if (rc)
                goto out_find;
 -      zpci_bus_scan_busses();
  
        s390_pci_initialized = 1;
        return 0;
index 10b4dbc8d0270de104e479ca812768be76175b90,7ee3cbbe3744b3c12ea3ce37182744d1befc75dc..04630dbfedd92ab748dd64091532fd4174e974b4
@@@ -295,7 -295,6 +295,7 @@@ static int arm_smmu_cmdq_build_cmd(u64 
        case CMDQ_OP_TLBI_NH_ASID:
                cmd[0] |= FIELD_PREP(CMDQ_TLBI_0_ASID, ent->tlbi.asid);
                fallthrough;
 +      case CMDQ_OP_TLBI_NH_ALL:
        case CMDQ_OP_TLBI_S12_VMALL:
                cmd[0] |= FIELD_PREP(CMDQ_TLBI_0_VMID, ent->tlbi.vmid);
                break;
@@@ -766,9 -765,9 +766,9 @@@ static void arm_smmu_cmdq_write_entries
   *   insert their own list of commands then all of the commands from one
   *   CPU will appear before any of the commands from the other CPU.
   */
 -static int arm_smmu_cmdq_issue_cmdlist(struct arm_smmu_device *smmu,
 -                                     struct arm_smmu_cmdq *cmdq,
 -                                     u64 *cmds, int n, bool sync)
 +int arm_smmu_cmdq_issue_cmdlist(struct arm_smmu_device *smmu,
 +                              struct arm_smmu_cmdq *cmdq, u64 *cmds, int n,
 +                              bool sync)
  {
        u64 cmd_sync[CMDQ_ENT_DWORDS];
        u32 prod;
@@@ -1046,8 -1045,7 +1046,8 @@@ void arm_smmu_get_ste_used(const __le6
        /* S2 translates */
        if (cfg & BIT(1)) {
                used_bits[1] |=
 -                      cpu_to_le64(STRTAB_STE_1_EATS | STRTAB_STE_1_SHCFG);
 +                      cpu_to_le64(STRTAB_STE_1_S2FWB | STRTAB_STE_1_EATS |
 +                                  STRTAB_STE_1_SHCFG);
                used_bits[2] |=
                        cpu_to_le64(STRTAB_STE_2_S2VMID | STRTAB_STE_2_VTCR |
                                    STRTAB_STE_2_S2AA64 | STRTAB_STE_2_S2ENDI |
@@@ -1655,8 -1653,6 +1655,8 @@@ void arm_smmu_make_s2_domain_ste(struc
                FIELD_PREP(STRTAB_STE_1_EATS,
                           ats_enabled ? STRTAB_STE_1_EATS_TRANS : 0));
  
 +      if (pgtbl_cfg->quirks & IO_PGTABLE_QUIRK_ARM_S2FWB)
 +              target->data[1] |= cpu_to_le64(STRTAB_STE_1_S2FWB);
        if (smmu->features & ARM_SMMU_FEAT_ATTR_TYPES_OVR)
                target->data[1] |= cpu_to_le64(FIELD_PREP(STRTAB_STE_1_SHCFG,
                                                          STRTAB_STE_1_SHCFG_INCOMING));
@@@ -2107,16 -2103,7 +2107,16 @@@ int arm_smmu_atc_inv_domain(struct arm_
                if (!master->ats_enabled)
                        continue;
  
 -              arm_smmu_atc_inv_to_cmd(master_domain->ssid, iova, size, &cmd);
 +              if (master_domain->nested_ats_flush) {
 +                      /*
 +                       * If a S2 used as a nesting parent is changed we have
 +                       * no option but to completely flush the ATC.
 +                       */
 +                      arm_smmu_atc_inv_to_cmd(IOMMU_NO_PASID, 0, 0, &cmd);
 +              } else {
 +                      arm_smmu_atc_inv_to_cmd(master_domain->ssid, iova, size,
 +                                              &cmd);
 +              }
  
                for (i = 0; i < master->num_streams; i++) {
                        cmd.atc.sid = master->streams[i].id;
@@@ -2243,15 -2230,6 +2243,15 @@@ static void arm_smmu_tlb_inv_range_doma
        }
        __arm_smmu_tlb_inv_range(&cmd, iova, size, granule, smmu_domain);
  
 +      if (smmu_domain->nest_parent) {
 +              /*
 +               * When the S2 domain changes all the nested S1 ASIDs have to be
 +               * flushed too.
 +               */
 +              cmd.opcode = CMDQ_OP_TLBI_NH_ALL;
 +              arm_smmu_cmdq_issue_cmd_with_sync(smmu_domain->smmu, &cmd);
 +      }
 +
        /*
         * Unfortunately, this can't be leaf-only since we may have
         * zapped an entire table.
@@@ -2484,9 -2462,6 +2484,9 @@@ static int arm_smmu_domain_finalise(str
                pgtbl_cfg.oas = smmu->oas;
                fmt = ARM_64_LPAE_S2;
                finalise_stage_fn = arm_smmu_domain_finalise_s2;
 +              if ((smmu->features & ARM_SMMU_FEAT_S2FWB) &&
 +                  (flags & IOMMU_HWPT_ALLOC_NEST_PARENT))
 +                      pgtbl_cfg.quirks |= IO_PGTABLE_QUIRK_ARM_S2FWB;
                break;
        default:
                return -EINVAL;
@@@ -2640,7 -2615,7 +2640,7 @@@ static void arm_smmu_disable_pasid(stru
  static struct arm_smmu_master_domain *
  arm_smmu_find_master_domain(struct arm_smmu_domain *smmu_domain,
                            struct arm_smmu_master *master,
 -                          ioasid_t ssid)
 +                          ioasid_t ssid, bool nested_ats_flush)
  {
        struct arm_smmu_master_domain *master_domain;
  
        list_for_each_entry(master_domain, &smmu_domain->devices,
                            devices_elm) {
                if (master_domain->master == master &&
 -                  master_domain->ssid == ssid)
 +                  master_domain->ssid == ssid &&
 +                  master_domain->nested_ats_flush == nested_ats_flush)
                        return master_domain;
        }
        return NULL;
@@@ -2670,8 -2644,6 +2670,8 @@@ to_smmu_domain_devices(struct iommu_dom
        if ((domain->type & __IOMMU_DOMAIN_PAGING) ||
            domain->type == IOMMU_DOMAIN_SVA)
                return to_smmu_domain(domain);
 +      if (domain->type == IOMMU_DOMAIN_NESTED)
 +              return to_smmu_nested_domain(domain)->vsmmu->s2_parent;
        return NULL;
  }
  
@@@ -2681,18 -2653,13 +2681,18 @@@ static void arm_smmu_remove_master_doma
  {
        struct arm_smmu_domain *smmu_domain = to_smmu_domain_devices(domain);
        struct arm_smmu_master_domain *master_domain;
 +      bool nested_ats_flush = false;
        unsigned long flags;
  
        if (!smmu_domain)
                return;
  
 +      if (domain->type == IOMMU_DOMAIN_NESTED)
 +              nested_ats_flush = to_smmu_nested_domain(domain)->enable_ats;
 +
        spin_lock_irqsave(&smmu_domain->devices_lock, flags);
 -      master_domain = arm_smmu_find_master_domain(smmu_domain, master, ssid);
 +      master_domain = arm_smmu_find_master_domain(smmu_domain, master, ssid,
 +                                                  nested_ats_flush);
        if (master_domain) {
                list_del(&master_domain->devices_elm);
                kfree(master_domain);
@@@ -2749,8 -2716,7 +2749,8 @@@ int arm_smmu_attach_prepare(struct arm_
                 * enabled if we have arm_smmu_domain, those always have page
                 * tables.
                 */
 -              state->ats_enabled = arm_smmu_ats_supported(master);
 +              state->ats_enabled = !state->disable_ats &&
 +                                   arm_smmu_ats_supported(master);
        }
  
        if (smmu_domain) {
                        return -ENOMEM;
                master_domain->master = master;
                master_domain->ssid = state->ssid;
 +              if (new_domain->type == IOMMU_DOMAIN_NESTED)
 +                      master_domain->nested_ats_flush =
 +                              to_smmu_nested_domain(new_domain)->enable_ats;
  
                /*
                 * During prepare we want the current smmu_domain and new
@@@ -2911,7 -2874,8 +2911,8 @@@ static int arm_smmu_attach_dev(struct i
  }
  
  static int arm_smmu_s1_set_dev_pasid(struct iommu_domain *domain,
-                                     struct device *dev, ioasid_t id)
+                                    struct device *dev, ioasid_t id,
+                                    struct iommu_domain *old)
  {
        struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
        struct arm_smmu_master *master = dev_iommu_priv_get(dev);
         */
        arm_smmu_make_s1_cd(&target_cd, master, smmu_domain);
        return arm_smmu_set_pasid(master, to_smmu_domain(domain), id,
-                                 &target_cd);
+                                 &target_cd, old);
  }
  
  static void arm_smmu_update_ste(struct arm_smmu_master *master,
  
  int arm_smmu_set_pasid(struct arm_smmu_master *master,
                       struct arm_smmu_domain *smmu_domain, ioasid_t pasid,
-                      struct arm_smmu_cd *cd)
+                      struct arm_smmu_cd *cd, struct iommu_domain *old)
  {
        struct iommu_domain *sid_domain = iommu_get_domain_for_dev(master->dev);
        struct arm_smmu_attach_state state = {
                .master = master,
-               /*
-                * For now the core code prevents calling this when a domain is
-                * already attached, no need to set old_domain.
-                */
                .ssid = pasid,
+               .old_domain = old,
        };
        struct arm_smmu_cd *cdptr;
        int ret;
@@@ -3140,6 -3101,7 +3138,7 @@@ arm_smmu_domain_alloc_user(struct devic
  {
        struct arm_smmu_master *master = dev_iommu_priv_get(dev);
        const u32 PAGING_FLAGS = IOMMU_HWPT_ALLOC_DIRTY_TRACKING |
+                                IOMMU_HWPT_ALLOC_PASID |
                                 IOMMU_HWPT_ALLOC_NEST_PARENT;
        struct arm_smmu_domain *smmu_domain;
        int ret;
        if (parent || user_data)
                return ERR_PTR(-EOPNOTSUPP);
  
+       if (flags & IOMMU_HWPT_ALLOC_PASID)
+               return arm_smmu_domain_alloc_paging(dev);
        smmu_domain = arm_smmu_domain_alloc();
        if (IS_ERR(smmu_domain))
                return ERR_CAST(smmu_domain);
                        goto err_free;
                }
                smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
 +              smmu_domain->nest_parent = true;
        }
  
        smmu_domain->domain.type = IOMMU_DOMAIN_UNMANAGED;
@@@ -3555,8 -3519,6 +3557,8 @@@ static struct iommu_ops arm_smmu_ops = 
        .dev_disable_feat       = arm_smmu_dev_disable_feature,
        .page_response          = arm_smmu_page_response,
        .def_domain_type        = arm_smmu_def_domain_type,
 +      .viommu_alloc           = arm_vsmmu_alloc,
 +      .user_pasid_table       = 1,
        .pgsize_bitmap          = -1UL, /* Restricted during device attach */
        .owner                  = THIS_MODULE,
        .default_domain_ops = &(const struct iommu_domain_ops) {
index af25f092303f1090aba0eed57c0302c9d05a86a2,1e96d4af03f89d86d50e75f2577e65b690901fb6..0107d3f333a1cc2121ad5680d410199431f219a8
@@@ -10,7 -10,6 +10,7 @@@
  
  #include <linux/bitfield.h>
  #include <linux/iommu.h>
 +#include <linux/iommufd.h>
  #include <linux/kernel.h>
  #include <linux/mmzone.h>
  #include <linux/sizes.h>
@@@ -58,7 -57,6 +58,7 @@@ struct arm_smmu_device
  #define IDR1_SIDSIZE                  GENMASK(5, 0)
  
  #define ARM_SMMU_IDR3                 0xc
 +#define IDR3_FWB                      (1 << 8)
  #define IDR3_RIL                      (1 << 10)
  
  #define ARM_SMMU_IDR5                 0x14
@@@ -245,7 -243,6 +245,7 @@@ static inline u32 arm_smmu_strtab_l2_id
  #define STRTAB_STE_0_CFG_BYPASS               4
  #define STRTAB_STE_0_CFG_S1_TRANS     5
  #define STRTAB_STE_0_CFG_S2_TRANS     6
 +#define STRTAB_STE_0_CFG_NESTED               7
  
  #define STRTAB_STE_0_S1FMT            GENMASK_ULL(5, 4)
  #define STRTAB_STE_0_S1FMT_LINEAR     0
  #define STRTAB_STE_1_S1COR            GENMASK_ULL(5, 4)
  #define STRTAB_STE_1_S1CSH            GENMASK_ULL(7, 6)
  
 +#define STRTAB_STE_1_S2FWB            (1UL << 25)
  #define STRTAB_STE_1_S1STALLD         (1UL << 27)
  
  #define STRTAB_STE_1_EATS             GENMASK_ULL(29, 28)
  
  #define STRTAB_STE_3_S2TTB_MASK               GENMASK_ULL(51, 4)
  
 +/* These bits can be controlled by userspace for STRTAB_STE_0_CFG_NESTED */
 +#define STRTAB_STE_0_NESTING_ALLOWED                                         \
 +      cpu_to_le64(STRTAB_STE_0_V | STRTAB_STE_0_CFG | STRTAB_STE_0_S1FMT | \
 +                  STRTAB_STE_0_S1CTXPTR_MASK | STRTAB_STE_0_S1CDMAX)
 +#define STRTAB_STE_1_NESTING_ALLOWED                            \
 +      cpu_to_le64(STRTAB_STE_1_S1DSS | STRTAB_STE_1_S1CIR |   \
 +                  STRTAB_STE_1_S1COR | STRTAB_STE_1_S1CSH |   \
 +                  STRTAB_STE_1_S1STALLD | STRTAB_STE_1_EATS)
 +
  /*
   * Context descriptors.
   *
@@@ -526,10 -513,8 +526,10 @@@ struct arm_smmu_cmdq_ent 
                        };
                } cfgi;
  
 +              #define CMDQ_OP_TLBI_NH_ALL     0x10
                #define CMDQ_OP_TLBI_NH_ASID    0x11
                #define CMDQ_OP_TLBI_NH_VA      0x12
 +              #define CMDQ_OP_TLBI_NH_VAA     0x13
                #define CMDQ_OP_TLBI_EL2_ALL    0x20
                #define CMDQ_OP_TLBI_EL2_ASID   0x21
                #define CMDQ_OP_TLBI_EL2_VA     0x22
@@@ -743,7 -728,6 +743,7 @@@ struct arm_smmu_device 
  #define ARM_SMMU_FEAT_ATTR_TYPES_OVR  (1 << 20)
  #define ARM_SMMU_FEAT_HA              (1 << 21)
  #define ARM_SMMU_FEAT_HD              (1 << 22)
 +#define ARM_SMMU_FEAT_S2FWB           (1 << 23)
        u32                             features;
  
  #define ARM_SMMU_OPT_SKIP_PREFETCH    (1 << 0)
@@@ -830,19 -814,10 +830,19 @@@ struct arm_smmu_domain 
        struct list_head                devices;
        spinlock_t                      devices_lock;
        bool                            enforce_cache_coherency : 1;
 +      bool                            nest_parent : 1;
  
        struct mmu_notifier             mmu_notifier;
  };
  
 +struct arm_smmu_nested_domain {
 +      struct iommu_domain domain;
 +      struct arm_vsmmu *vsmmu;
 +      bool enable_ats : 1;
 +
 +      __le64 ste[2];
 +};
 +
  /* The following are exposed for testing purposes. */
  struct arm_smmu_entry_writer_ops;
  struct arm_smmu_entry_writer {
@@@ -880,7 -855,6 +880,7 @@@ struct arm_smmu_master_domain 
        struct list_head devices_elm;
        struct arm_smmu_master *master;
        ioasid_t ssid;
 +      bool nested_ats_flush : 1;
  };
  
  static inline struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom)
        return container_of(dom, struct arm_smmu_domain, domain);
  }
  
 +static inline struct arm_smmu_nested_domain *
 +to_smmu_nested_domain(struct iommu_domain *dom)
 +{
 +      return container_of(dom, struct arm_smmu_nested_domain, domain);
 +}
 +
  extern struct xarray arm_smmu_asid_xa;
  extern struct mutex arm_smmu_asid_lock;
  
@@@ -911,7 -879,7 +911,7 @@@ void arm_smmu_write_cd_entry(struct arm
  
  int arm_smmu_set_pasid(struct arm_smmu_master *master,
                       struct arm_smmu_domain *smmu_domain, ioasid_t pasid,
-                      struct arm_smmu_cd *cd);
+                      struct arm_smmu_cd *cd, struct iommu_domain *old);
  
  void arm_smmu_tlb_inv_asid(struct arm_smmu_device *smmu, u16 asid);
  void arm_smmu_tlb_inv_range_asid(unsigned long iova, size_t size, int asid,
@@@ -940,7 -908,6 +940,7 @@@ struct arm_smmu_attach_state 
        struct iommu_domain *old_domain;
        struct arm_smmu_master *master;
        bool cd_needs_ats;
 +      bool disable_ats;
        ioasid_t ssid;
        /* Resulting state */
        bool ats_enabled;
@@@ -952,10 -919,6 +952,10 @@@ void arm_smmu_attach_commit(struct arm_
  void arm_smmu_install_ste_for_dev(struct arm_smmu_master *master,
                                  const struct arm_smmu_ste *target);
  
 +int arm_smmu_cmdq_issue_cmdlist(struct arm_smmu_device *smmu,
 +                              struct arm_smmu_cmdq *cmdq, u64 *cmds, int n,
 +                              bool sync);
 +
  #ifdef CONFIG_ARM_SMMU_V3_SVA
  bool arm_smmu_sva_supported(struct arm_smmu_device *smmu);
  bool arm_smmu_master_sva_supported(struct arm_smmu_master *master);
@@@ -1013,22 -976,10 +1013,22 @@@ tegra241_cmdqv_probe(struct arm_smmu_de
  }
  #endif /* CONFIG_TEGRA241_CMDQV */
  
 +struct arm_vsmmu {
 +      struct iommufd_viommu core;
 +      struct arm_smmu_device *smmu;
 +      struct arm_smmu_domain *s2_parent;
 +      u16 vmid;
 +};
 +
  #if IS_ENABLED(CONFIG_ARM_SMMU_V3_IOMMUFD)
  void *arm_smmu_hw_info(struct device *dev, u32 *length, u32 *type);
 +struct iommufd_viommu *arm_vsmmu_alloc(struct device *dev,
 +                                     struct iommu_domain *parent,
 +                                     struct iommufd_ctx *ictx,
 +                                     unsigned int viommu_type);
  #else
  #define arm_smmu_hw_info NULL
 +#define arm_vsmmu_alloc NULL
  #endif /* CONFIG_ARM_SMMU_V3_IOMMUFD */
  
  #endif /* _ARM_SMMU_V3_H */
index 74f58c6ac30cbdf1486dd16a180bf8f5f2c6a72a,d045a76dbfdc80564e988695cbdea55dc08f2385..6b9bb58a414fb578788a50b4f841e3d784db3599
  #define ARM_LPAE_PTE_HAP_FAULT                (((arm_lpae_iopte)0) << 6)
  #define ARM_LPAE_PTE_HAP_READ         (((arm_lpae_iopte)1) << 6)
  #define ARM_LPAE_PTE_HAP_WRITE                (((arm_lpae_iopte)2) << 6)
 +/*
 + * For !FWB these code to:
 + *  1111 = Normal outer write back cachable / Inner Write Back Cachable
 + *         Permit S1 to override
 + *  0101 = Normal Non-cachable / Inner Non-cachable
 + *  0001 = Device / Device-nGnRE
 + * For S2FWB these code:
 + *  0110 Force Normal Write Back
 + *  0101 Normal* is forced Normal-NC, Device unchanged
 + *  0001 Force Device-nGnRE
 + */
 +#define ARM_LPAE_PTE_MEMATTR_FWB_WB   (((arm_lpae_iopte)0x6) << 2)
  #define ARM_LPAE_PTE_MEMATTR_OIWB     (((arm_lpae_iopte)0xf) << 2)
  #define ARM_LPAE_PTE_MEMATTR_NC               (((arm_lpae_iopte)0x5) << 2)
  #define ARM_LPAE_PTE_MEMATTR_DEV      (((arm_lpae_iopte)0x1) << 2)
@@@ -211,6 -199,18 +211,18 @@@ static phys_addr_t iopte_to_paddr(arm_l
        return (paddr | (paddr << (48 - 12))) & (ARM_LPAE_PTE_ADDR_MASK << 4);
  }
  
+ /*
+  * Convert an index returned by ARM_LPAE_PGD_IDX(), which can point into
+  * a concatenated PGD, into the maximum number of entries that can be
+  * mapped in the same table page.
+  */
+ static inline int arm_lpae_max_entries(int i, struct arm_lpae_io_pgtable *data)
+ {
+       int ptes_per_table = ARM_LPAE_PTES_PER_TABLE(data);
+       return ptes_per_table - (i & (ptes_per_table - 1));
+ }
  static bool selftest_running = false;
  
  static dma_addr_t __arm_lpae_dma_addr(void *pages)
@@@ -402,7 -402,7 +414,7 @@@ static int __arm_lpae_map(struct arm_lp
  
        /* If we can install a leaf entry at this level, then do so */
        if (size == block_size) {
-               max_entries = ARM_LPAE_PTES_PER_TABLE(data) - map_idx_start;
+               max_entries = arm_lpae_max_entries(map_idx_start, data);
                num_entries = min_t(int, pgcount, max_entries);
                ret = arm_lpae_init_pte(data, iova, paddr, prot, lvl, num_entries, ptep);
                if (!ret)
@@@ -470,16 -470,12 +482,16 @@@ static arm_lpae_iopte arm_lpae_prot_to_
         */
        if (data->iop.fmt == ARM_64_LPAE_S2 ||
            data->iop.fmt == ARM_32_LPAE_S2) {
 -              if (prot & IOMMU_MMIO)
 +              if (prot & IOMMU_MMIO) {
                        pte |= ARM_LPAE_PTE_MEMATTR_DEV;
 -              else if (prot & IOMMU_CACHE)
 -                      pte |= ARM_LPAE_PTE_MEMATTR_OIWB;
 -              else
 +              } else if (prot & IOMMU_CACHE) {
 +                      if (data->iop.cfg.quirks & IO_PGTABLE_QUIRK_ARM_S2FWB)
 +                              pte |= ARM_LPAE_PTE_MEMATTR_FWB_WB;
 +                      else
 +                              pte |= ARM_LPAE_PTE_MEMATTR_OIWB;
 +              } else {
                        pte |= ARM_LPAE_PTE_MEMATTR_NC;
 +              }
        } else {
                if (prot & IOMMU_MMIO)
                        pte |= (ARM_LPAE_MAIR_ATTR_IDX_DEV
@@@ -585,66 -581,6 +597,6 @@@ static void arm_lpae_free_pgtable(struc
        kfree(data);
  }
  
- static size_t arm_lpae_split_blk_unmap(struct arm_lpae_io_pgtable *data,
-                                      struct iommu_iotlb_gather *gather,
-                                      unsigned long iova, size_t size,
-                                      arm_lpae_iopte blk_pte, int lvl,
-                                      arm_lpae_iopte *ptep, size_t pgcount)
- {
-       struct io_pgtable_cfg *cfg = &data->iop.cfg;
-       arm_lpae_iopte pte, *tablep;
-       phys_addr_t blk_paddr;
-       size_t tablesz = ARM_LPAE_GRANULE(data);
-       size_t split_sz = ARM_LPAE_BLOCK_SIZE(lvl, data);
-       int ptes_per_table = ARM_LPAE_PTES_PER_TABLE(data);
-       int i, unmap_idx_start = -1, num_entries = 0, max_entries;
-       if (WARN_ON(lvl == ARM_LPAE_MAX_LEVELS))
-               return 0;
-       tablep = __arm_lpae_alloc_pages(tablesz, GFP_ATOMIC, cfg, data->iop.cookie);
-       if (!tablep)
-               return 0; /* Bytes unmapped */
-       if (size == split_sz) {
-               unmap_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
-               max_entries = ptes_per_table - unmap_idx_start;
-               num_entries = min_t(int, pgcount, max_entries);
-       }
-       blk_paddr = iopte_to_paddr(blk_pte, data);
-       pte = iopte_prot(blk_pte);
-       for (i = 0; i < ptes_per_table; i++, blk_paddr += split_sz) {
-               /* Unmap! */
-               if (i >= unmap_idx_start && i < (unmap_idx_start + num_entries))
-                       continue;
-               __arm_lpae_init_pte(data, blk_paddr, pte, lvl, 1, &tablep[i]);
-       }
-       pte = arm_lpae_install_table(tablep, ptep, blk_pte, data);
-       if (pte != blk_pte) {
-               __arm_lpae_free_pages(tablep, tablesz, cfg, data->iop.cookie);
-               /*
-                * We may race against someone unmapping another part of this
-                * block, but anything else is invalid. We can't misinterpret
-                * a page entry here since we're never at the last level.
-                */
-               if (iopte_type(pte) != ARM_LPAE_PTE_TYPE_TABLE)
-                       return 0;
-               tablep = iopte_deref(pte, data);
-       } else if (unmap_idx_start >= 0) {
-               for (i = 0; i < num_entries; i++)
-                       io_pgtable_tlb_add_page(&data->iop, gather, iova + i * size, size);
-               return num_entries * size;
-       }
-       return __arm_lpae_unmap(data, gather, iova, size, pgcount, lvl, tablep);
- }
  static size_t __arm_lpae_unmap(struct arm_lpae_io_pgtable *data,
                               struct iommu_iotlb_gather *gather,
                               unsigned long iova, size_t size, size_t pgcount,
  
        /* If the size matches this level, we're in the right place */
        if (size == ARM_LPAE_BLOCK_SIZE(lvl, data)) {
-               max_entries = ARM_LPAE_PTES_PER_TABLE(data) - unmap_idx_start;
+               max_entries = arm_lpae_max_entries(unmap_idx_start, data);
                num_entries = min_t(int, pgcount, max_entries);
  
                /* Find and handle non-leaf entries */
  
                return i * size;
        } else if (iopte_leaf(pte, lvl, iop->fmt)) {
-               /*
-                * Insert a table at the next level to map the old region,
-                * minus the part we want to unmap
-                */
-               return arm_lpae_split_blk_unmap(data, gather, iova, size, pte,
-                                               lvl + 1, ptep, pgcount);
+               WARN_ONCE(true, "Unmap of a partial large IOPTE is not allowed");
+               return 0;
        }
  
        /* Keep on walkin' */
@@@ -1051,7 -983,8 +999,7 @@@ arm_64_lpae_alloc_pgtable_s2(struct io_
        struct arm_lpae_io_pgtable *data;
        typeof(&cfg->arm_lpae_s2_cfg.vtcr) vtcr = &cfg->arm_lpae_s2_cfg.vtcr;
  
 -      /* The NS quirk doesn't apply at stage 2 */
 -      if (cfg->quirks)
 +      if (cfg->quirks & ~(IO_PGTABLE_QUIRK_ARM_S2FWB))
                return NULL;
  
        data = arm_lpae_alloc_pgtable(cfg);
@@@ -1362,19 -1295,6 +1310,6 @@@ static int __init arm_lpae_run_tests(st
                        iova += SZ_1G;
                }
  
-               /* Partial unmap */
-               size = 1UL << __ffs(cfg->pgsize_bitmap);
-               if (ops->unmap_pages(ops, SZ_1G + size, size, 1, NULL) != size)
-                       return __FAIL(ops, i);
-               /* Remap of partial unmap */
-               if (ops->map_pages(ops, SZ_1G + size, size, size, 1,
-                                  IOMMU_READ, GFP_KERNEL, &mapped))
-                       return __FAIL(ops, i);
-               if (ops->iova_to_phys(ops, SZ_1G + size + 42) != (size + 42))
-                       return __FAIL(ops, i);
                /* Full unmap */
                iova = 0;
                for_each_set_bit(j, &cfg->pgsize_bitmap, BITS_PER_LONG) {
                        iova += SZ_1G;
                }
  
+               /*
+                * Map/unmap the last largest supported page of the IAS, this can
+                * trigger corner cases in the concatednated page tables.
+                */
+               mapped = 0;
+               size = 1UL << __fls(cfg->pgsize_bitmap);
+               iova = (1UL << cfg->ias) - size;
+               if (ops->map_pages(ops, iova, iova, size, 1,
+                                  IOMMU_READ | IOMMU_WRITE |
+                                  IOMMU_NOEXEC | IOMMU_CACHE,
+                                  GFP_KERNEL, &mapped))
+                       return __FAIL(ops, i);
+               if (mapped != size)
+                       return __FAIL(ops, i);
+               if (ops->unmap_pages(ops, iova, size, 1, NULL) != size)
+                       return __FAIL(ops, i);
                free_io_pgtable_ops(ops);
        }
  
index 702057655a8136a5ba109661c3a9c36391a477a0,8f020bc0815f3587b4154e6f0d811c65cc586248..9236e8ca9aa8641aff3807f8998c0aeabb6afc2c
@@@ -57,10 -57,7 +57,10 @@@ void iommufd_hwpt_nested_destroy(struc
                container_of(obj, struct iommufd_hwpt_nested, common.obj);
  
        __iommufd_hwpt_destroy(&hwpt_nested->common);
 -      refcount_dec(&hwpt_nested->parent->common.obj.users);
 +      if (hwpt_nested->viommu)
 +              refcount_dec(&hwpt_nested->viommu->obj.users);
 +      else
 +              refcount_dec(&hwpt_nested->parent->common.obj.users);
  }
  
  void iommufd_hwpt_nested_abort(struct iommufd_object *obj)
@@@ -110,7 -107,8 +110,8 @@@ iommufd_hwpt_paging_alloc(struct iommuf
                          const struct iommu_user_data *user_data)
  {
        const u32 valid_flags = IOMMU_HWPT_ALLOC_NEST_PARENT |
-                               IOMMU_HWPT_ALLOC_DIRTY_TRACKING;
+                               IOMMU_HWPT_ALLOC_DIRTY_TRACKING |
+                               IOMMU_HWPT_FAULT_ID_VALID;
        const struct iommu_ops *ops = dev_iommu_ops(idev->dev);
        struct iommufd_hwpt_paging *hwpt_paging;
        struct iommufd_hw_pagetable *hwpt;
@@@ -251,7 -249,8 +252,7 @@@ iommufd_hwpt_nested_alloc(struct iommuf
        }
        hwpt->domain->owner = ops;
  
 -      if (WARN_ON_ONCE(hwpt->domain->type != IOMMU_DOMAIN_NESTED ||
 -                       !hwpt->domain->ops->cache_invalidate_user)) {
 +      if (WARN_ON_ONCE(hwpt->domain->type != IOMMU_DOMAIN_NESTED)) {
                rc = -EINVAL;
                goto out_abort;
        }
@@@ -262,58 -261,6 +263,58 @@@ out_abort
        return ERR_PTR(rc);
  }
  
 +/**
 + * iommufd_viommu_alloc_hwpt_nested() - Get a hwpt_nested for a vIOMMU
 + * @viommu: vIOMMU ojbect to associate the hwpt_nested/domain with
 + * @flags: Flags from userspace
 + * @user_data: user_data pointer. Must be valid
 + *
 + * Allocate a new IOMMU_DOMAIN_NESTED for a vIOMMU and return it as a NESTED
 + * hw_pagetable.
 + */
 +static struct iommufd_hwpt_nested *
 +iommufd_viommu_alloc_hwpt_nested(struct iommufd_viommu *viommu, u32 flags,
 +                               const struct iommu_user_data *user_data)
 +{
 +      struct iommufd_hwpt_nested *hwpt_nested;
 +      struct iommufd_hw_pagetable *hwpt;
 +      int rc;
 +
 +      if (!user_data->len)
 +              return ERR_PTR(-EOPNOTSUPP);
 +      if (!viommu->ops || !viommu->ops->alloc_domain_nested)
 +              return ERR_PTR(-EOPNOTSUPP);
 +
 +      hwpt_nested = __iommufd_object_alloc(
 +              viommu->ictx, hwpt_nested, IOMMUFD_OBJ_HWPT_NESTED, common.obj);
 +      if (IS_ERR(hwpt_nested))
 +              return ERR_CAST(hwpt_nested);
 +      hwpt = &hwpt_nested->common;
 +
 +      hwpt_nested->viommu = viommu;
 +      refcount_inc(&viommu->obj.users);
 +      hwpt_nested->parent = viommu->hwpt;
 +
 +      hwpt->domain =
 +              viommu->ops->alloc_domain_nested(viommu, flags, user_data);
 +      if (IS_ERR(hwpt->domain)) {
 +              rc = PTR_ERR(hwpt->domain);
 +              hwpt->domain = NULL;
 +              goto out_abort;
 +      }
 +      hwpt->domain->owner = viommu->iommu_dev->ops;
 +
 +      if (WARN_ON_ONCE(hwpt->domain->type != IOMMU_DOMAIN_NESTED)) {
 +              rc = -EINVAL;
 +              goto out_abort;
 +      }
 +      return hwpt_nested;
 +
 +out_abort:
 +      iommufd_object_abort_and_destroy(viommu->ictx, &hwpt->obj);
 +      return ERR_PTR(rc);
 +}
 +
  int iommufd_hwpt_alloc(struct iommufd_ucmd *ucmd)
  {
        struct iommu_hwpt_alloc *cmd = ucmd->cmd;
                        goto out_unlock;
                }
                hwpt = &hwpt_nested->common;
 +      } else if (pt_obj->type == IOMMUFD_OBJ_VIOMMU) {
 +              struct iommufd_hwpt_nested *hwpt_nested;
 +              struct iommufd_viommu *viommu;
 +
 +              viommu = container_of(pt_obj, struct iommufd_viommu, obj);
 +              if (viommu->iommu_dev != __iommu_get_iommu_dev(idev->dev)) {
 +                      rc = -EINVAL;
 +                      goto out_unlock;
 +              }
 +              hwpt_nested = iommufd_viommu_alloc_hwpt_nested(
 +                      viommu, cmd->flags, &user_data);
 +              if (IS_ERR(hwpt_nested)) {
 +                      rc = PTR_ERR(hwpt_nested);
 +                      goto out_unlock;
 +              }
 +              hwpt = &hwpt_nested->common;
        } else {
                rc = -EINVAL;
                goto out_put_pt;
@@@ -482,7 -413,7 +483,7 @@@ int iommufd_hwpt_invalidate(struct iomm
                .entry_len = cmd->entry_len,
                .entry_num = cmd->entry_num,
        };
 -      struct iommufd_hw_pagetable *hwpt;
 +      struct iommufd_object *pt_obj;
        u32 done_num = 0;
        int rc;
  
                goto out;
        }
  
 -      hwpt = iommufd_get_hwpt_nested(ucmd, cmd->hwpt_id);
 -      if (IS_ERR(hwpt)) {
 -              rc = PTR_ERR(hwpt);
 +      pt_obj = iommufd_get_object(ucmd->ictx, cmd->hwpt_id, IOMMUFD_OBJ_ANY);
 +      if (IS_ERR(pt_obj)) {
 +              rc = PTR_ERR(pt_obj);
                goto out;
        }
 +      if (pt_obj->type == IOMMUFD_OBJ_HWPT_NESTED) {
 +              struct iommufd_hw_pagetable *hwpt =
 +                      container_of(pt_obj, struct iommufd_hw_pagetable, obj);
 +
 +              if (!hwpt->domain->ops ||
 +                  !hwpt->domain->ops->cache_invalidate_user) {
 +                      rc = -EOPNOTSUPP;
 +                      goto out_put_pt;
 +              }
 +              rc = hwpt->domain->ops->cache_invalidate_user(hwpt->domain,
 +                                                            &data_array);
 +      } else if (pt_obj->type == IOMMUFD_OBJ_VIOMMU) {
 +              struct iommufd_viommu *viommu =
 +                      container_of(pt_obj, struct iommufd_viommu, obj);
 +
 +              if (!viommu->ops || !viommu->ops->cache_invalidate) {
 +                      rc = -EOPNOTSUPP;
 +                      goto out_put_pt;
 +              }
 +              rc = viommu->ops->cache_invalidate(viommu, &data_array);
 +      } else {
 +              rc = -EINVAL;
 +              goto out_put_pt;
 +      }
  
 -      rc = hwpt->domain->ops->cache_invalidate_user(hwpt->domain,
 -                                                    &data_array);
        done_num = data_array.entry_num;
  
 -      iommufd_put_object(ucmd->ictx, &hwpt->obj);
 +out_put_pt:
 +      iommufd_put_object(ucmd->ictx, pt_obj);
  out:
        cmd->entry_num = done_num;
        if (iommufd_ucmd_respond(ucmd, sizeof(*cmd)))
diff --combined include/linux/iommu.h
index 8b02adbd14f74c10b1275a7dec46bc521660157a,0c3bfb66dc7c3287c647a7a95f2c651cbe4cffea..d6aaaec3caf46291dca7e013d0e76b8df65c0ea8
@@@ -42,8 -42,6 +42,8 @@@ struct notifier_block
  struct iommu_sva;
  struct iommu_dma_cookie;
  struct iommu_fault_param;
 +struct iommufd_ctx;
 +struct iommufd_viommu;
  
  #define IOMMU_FAULT_PERM_READ (1 << 0) /* read */
  #define IOMMU_FAULT_PERM_WRITE        (1 << 1) /* write */
@@@ -493,9 -491,7 +493,9 @@@ static inline int __iommu_copy_struct_f
   * @index: Index to the location in the array to copy user data from
   * @min_last: The last member of the data structure @kdst points in the
   *            initial version.
 - * Return 0 for success, otherwise -error.
 + *
 + * Copy a single entry from a user array. Return 0 for success, otherwise
 + * -error.
   */
  #define iommu_copy_struct_from_user_array(kdst, user_array, data_type, index, \
                                          min_last)                           \
                kdst, user_array, data_type, index, sizeof(*(kdst)),          \
                offsetofend(typeof(*(kdst)), min_last))
  
 +/**
 + * iommu_copy_struct_from_full_user_array - Copy iommu driver specific user
 + *         space data from an iommu_user_data_array
 + * @kdst: Pointer to an iommu driver specific user data that is defined in
 + *        include/uapi/linux/iommufd.h
 + * @kdst_entry_size: sizeof(*kdst)
 + * @user_array: Pointer to a struct iommu_user_data_array for a user space
 + *              array
 + * @data_type: The data type of the @kdst. Must match with @user_array->type
 + *
 + * Copy the entire user array. kdst must have room for kdst_entry_size *
 + * user_array->entry_num bytes. Return 0 for success, otherwise -error.
 + */
 +static inline int
 +iommu_copy_struct_from_full_user_array(void *kdst, size_t kdst_entry_size,
 +                                     struct iommu_user_data_array *user_array,
 +                                     unsigned int data_type)
 +{
 +      unsigned int i;
 +      int ret;
 +
 +      if (user_array->type != data_type)
 +              return -EINVAL;
 +      if (!user_array->entry_num)
 +              return -EINVAL;
 +      if (likely(user_array->entry_len == kdst_entry_size)) {
 +              if (copy_from_user(kdst, user_array->uptr,
 +                                 user_array->entry_num *
 +                                         user_array->entry_len))
 +                      return -EFAULT;
 +      }
 +
 +      /* Copy item by item */
 +      for (i = 0; i != user_array->entry_num; i++) {
 +              ret = copy_struct_from_user(
 +                      kdst + kdst_entry_size * i, kdst_entry_size,
 +                      user_array->uptr + user_array->entry_len * i,
 +                      user_array->entry_len);
 +              if (ret)
 +                      return ret;
 +      }
 +      return 0;
 +}
 +
  /**
   * struct iommu_ops - iommu ops and capabilities
   * @capable: check capability
   *                the caller iommu_domain_alloc() returns.
   * @domain_alloc_user: Allocate an iommu domain corresponding to the input
   *                     parameters as defined in include/uapi/linux/iommufd.h.
-  *                     Unlike @domain_alloc, it is called only by IOMMUFD and
-  *                     must fully initialize the new domain before return.
   *                     Upon success, if the @user_data is valid and the @parent
   *                     points to a kernel-managed domain, the new domain must be
   *                     IOMMU_DOMAIN_NESTED type; otherwise, the @parent must be
   * @remove_dev_pasid: Remove any translation configurations of a specific
   *                    pasid, so that any DMA transactions with this pasid
   *                    will be blocked by the hardware.
 + * @viommu_alloc: Allocate an iommufd_viommu on a physical IOMMU instance behind
 + *                the @dev, as the set of virtualization resources shared/passed
 + *                to user space IOMMU instance. And associate it with a nesting
 + *                @parent_domain. The @viommu_type must be defined in the header
 + *                include/uapi/linux/iommufd.h
 + *                It is required to call iommufd_viommu_alloc() helper for
 + *                a bundled allocation of the core and the driver structures,
 + *                using the given @ictx pointer.
   * @pgsize_bitmap: bitmap of all possible supported page sizes
   * @owner: Driver module providing these ops
   * @identity_domain: An always available, always attachable identity
@@@ -647,10 -589,6 +645,10 @@@ struct iommu_ops 
        void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid,
                                 struct iommu_domain *domain);
  
 +      struct iommufd_viommu *(*viommu_alloc)(
 +              struct device *dev, struct iommu_domain *parent_domain,
 +              struct iommufd_ctx *ictx, unsigned int viommu_type);
 +
        const struct iommu_domain_ops *default_domain_ops;
        unsigned long pgsize_bitmap;
        struct module *owner;
   * * EBUSY    - device is attached to a domain and cannot be changed
   * * ENODEV   - device specific errors, not able to be attached
   * * <others> - treated as ENODEV by the caller. Use is discouraged
-  * @set_dev_pasid: set an iommu domain to a pasid of device
+  * @set_dev_pasid: set or replace an iommu domain to a pasid of device. The pasid of
+  *                 the device should be left in the old config in error case.
   * @map_pages: map a physically contiguous set of pages of the same size to
   *             an iommu domain.
   * @unmap_pages: unmap a number of pages of the same size from an iommu domain
  struct iommu_domain_ops {
        int (*attach_dev)(struct iommu_domain *domain, struct device *dev);
        int (*set_dev_pasid)(struct iommu_domain *domain, struct device *dev,
-                            ioasid_t pasid);
+                            ioasid_t pasid, struct iommu_domain *old);
  
        int (*map_pages)(struct iommu_domain *domain, unsigned long iova,
                         phys_addr_t paddr, size_t pgsize, size_t pgcount,
@@@ -842,12 -781,14 +841,14 @@@ static inline void iommu_iotlb_gather_i
        };
  }
  
- extern int bus_iommu_probe(const struct bus_type *bus);
  extern bool iommu_present(const struct bus_type *bus);
  extern bool device_iommu_capable(struct device *dev, enum iommu_cap cap);
  extern bool iommu_group_has_isolated_msi(struct iommu_group *group);
- extern struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus);
- struct iommu_domain *iommu_paging_domain_alloc(struct device *dev);
+ struct iommu_domain *iommu_paging_domain_alloc_flags(struct device *dev, unsigned int flags);
+ static inline struct iommu_domain *iommu_paging_domain_alloc(struct device *dev)
+ {
+       return iommu_paging_domain_alloc_flags(dev, 0);
+ }
  extern void iommu_domain_free(struct iommu_domain *domain);
  extern int iommu_attach_device(struct iommu_domain *domain,
                               struct device *dev);
@@@ -1140,19 -1081,15 +1141,15 @@@ struct iommu_iotlb_gather {}
  struct iommu_dirty_bitmap {};
  struct iommu_dirty_ops {};
  
- static inline bool iommu_present(const struct bus_type *bus)
- {
-       return false;
- }
  static inline bool device_iommu_capable(struct device *dev, enum iommu_cap cap)
  {
        return false;
  }
  
- static inline struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus)
+ static inline struct iommu_domain *iommu_paging_domain_alloc_flags(struct device *dev,
+                                                    unsigned int flags)
  {
-       return NULL;
+       return ERR_PTR(-ENODEV);
  }
  
  static inline struct iommu_domain *iommu_paging_domain_alloc(struct device *dev)
index 4ae8b1ee0444182179066b94237a029a4b3ac4b9,cc1b94f4353820ef0a69c1041dffb14c9369d763..059b6537f2b7bcba588a4290697874860fb7a233
@@@ -51,10 -51,6 +51,10 @@@ enum 
        IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP = 0x8c,
        IOMMUFD_CMD_HWPT_INVALIDATE = 0x8d,
        IOMMUFD_CMD_FAULT_QUEUE_ALLOC = 0x8e,
 +      IOMMUFD_CMD_IOAS_MAP_FILE = 0x8f,
 +      IOMMUFD_CMD_VIOMMU_ALLOC = 0x90,
 +      IOMMUFD_CMD_VDEVICE_ALLOC = 0x91,
 +      IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92,
  };
  
  /**
@@@ -217,30 -213,6 +217,30 @@@ struct iommu_ioas_map 
  };
  #define IOMMU_IOAS_MAP _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_MAP)
  
 +/**
 + * struct iommu_ioas_map_file - ioctl(IOMMU_IOAS_MAP_FILE)
 + * @size: sizeof(struct iommu_ioas_map_file)
 + * @flags: same as for iommu_ioas_map
 + * @ioas_id: same as for iommu_ioas_map
 + * @fd: the memfd to map
 + * @start: byte offset from start of file to map from
 + * @length: same as for iommu_ioas_map
 + * @iova: same as for iommu_ioas_map
 + *
 + * Set an IOVA mapping from a memfd file.  All other arguments and semantics
 + * match those of IOMMU_IOAS_MAP.
 + */
 +struct iommu_ioas_map_file {
 +      __u32 size;
 +      __u32 flags;
 +      __u32 ioas_id;
 +      __s32 fd;
 +      __aligned_u64 start;
 +      __aligned_u64 length;
 +      __aligned_u64 iova;
 +};
 +#define IOMMU_IOAS_MAP_FILE _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_MAP_FILE)
 +
  /**
   * struct iommu_ioas_copy - ioctl(IOMMU_IOAS_COPY)
   * @size: sizeof(struct iommu_ioas_copy)
@@@ -387,11 -359,19 +387,19 @@@ struct iommu_vfio_ioas 
   *                                   enforced on device attachment
   * @IOMMU_HWPT_FAULT_ID_VALID: The fault_id field of hwpt allocation data is
   *                             valid.
+  * @IOMMU_HWPT_ALLOC_PASID: Requests a domain that can be used with PASID. The
+  *                          domain can be attached to any PASID on the device.
+  *                          Any domain attached to the non-PASID part of the
+  *                          device must also be flaged, otherwise attaching a
+  *                          PASID will blocked.
+  *                          If IOMMU does not support PASID it will return
+  *                          error (-EOPNOTSUPP).
   */
  enum iommufd_hwpt_alloc_flags {
        IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0,
        IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1,
        IOMMU_HWPT_FAULT_ID_VALID = 1 << 2,
+       IOMMU_HWPT_ALLOC_PASID = 1 << 3,
  };
  
  /**
@@@ -422,36 -402,14 +430,36 @@@ struct iommu_hwpt_vtd_s1 
        __u32 __reserved;
  };
  
 +/**
 + * struct iommu_hwpt_arm_smmuv3 - ARM SMMUv3 nested STE
 + *                                (IOMMU_HWPT_DATA_ARM_SMMUV3)
 + *
 + * @ste: The first two double words of the user space Stream Table Entry for
 + *       the translation. Must be little-endian.
 + *       Allowed fields: (Refer to "5.2 Stream Table Entry" in SMMUv3 HW Spec)
 + *       - word-0: V, Cfg, S1Fmt, S1ContextPtr, S1CDMax
 + *       - word-1: EATS, S1DSS, S1CIR, S1COR, S1CSH, S1STALLD
 + *
 + * -EIO will be returned if @ste is not legal or contains any non-allowed field.
 + * Cfg can be used to select a S1, Bypass or Abort configuration. A Bypass
 + * nested domain will translate the same as the nesting parent. The S1 will
 + * install a Context Descriptor Table pointing at userspace memory translated
 + * by the nesting parent.
 + */
 +struct iommu_hwpt_arm_smmuv3 {
 +      __aligned_le64 ste[2];
 +};
 +
  /**
   * enum iommu_hwpt_data_type - IOMMU HWPT Data Type
   * @IOMMU_HWPT_DATA_NONE: no data
   * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table
 + * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table
   */
  enum iommu_hwpt_data_type {
        IOMMU_HWPT_DATA_NONE = 0,
        IOMMU_HWPT_DATA_VTD_S1 = 1,
 +      IOMMU_HWPT_DATA_ARM_SMMUV3 = 2,
  };
  
  /**
   * @size: sizeof(struct iommu_hwpt_alloc)
   * @flags: Combination of enum iommufd_hwpt_alloc_flags
   * @dev_id: The device to allocate this HWPT for
 - * @pt_id: The IOAS or HWPT to connect this HWPT to
 + * @pt_id: The IOAS or HWPT or vIOMMU to connect this HWPT to
   * @out_hwpt_id: The ID of the new HWPT
   * @__reserved: Must be 0
   * @data_type: One of enum iommu_hwpt_data_type
   * IOMMU_HWPT_DATA_NONE. The HWPT can be allocated as a parent HWPT for a
   * nesting configuration by passing IOMMU_HWPT_ALLOC_NEST_PARENT via @flags.
   *
 - * A user-managed nested HWPT will be created from a given parent HWPT via
 - * @pt_id, in which the parent HWPT must be allocated previously via the
 - * same ioctl from a given IOAS (@pt_id). In this case, the @data_type
 - * must be set to a pre-defined type corresponding to an I/O page table
 - * type supported by the underlying IOMMU hardware.
 + * A user-managed nested HWPT will be created from a given vIOMMU (wrapping a
 + * parent HWPT) or a parent HWPT via @pt_id, in which the parent HWPT must be
 + * allocated previously via the same ioctl from a given IOAS (@pt_id). In this
 + * case, the @data_type must be set to a pre-defined type corresponding to an
 + * I/O page table type supported by the underlying IOMMU hardware. The device
 + * via @dev_id and the vIOMMU via @pt_id must be associated to the same IOMMU
 + * instance.
   *
   * If the @data_type is set to IOMMU_HWPT_DATA_NONE, @data_len and
   * @data_uptr should be zero. Otherwise, both @data_len and @data_uptr
@@@ -714,11 -670,9 +722,11 @@@ struct iommu_hwpt_get_dirty_bitmap 
   * enum iommu_hwpt_invalidate_data_type - IOMMU HWPT Cache Invalidation
   *                                        Data Type
   * @IOMMU_HWPT_INVALIDATE_DATA_VTD_S1: Invalidation data for VTD_S1
 + * @IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3: Invalidation data for ARM SMMUv3
   */
  enum iommu_hwpt_invalidate_data_type {
        IOMMU_HWPT_INVALIDATE_DATA_VTD_S1 = 0,
 +      IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3 = 1,
  };
  
  /**
@@@ -757,32 -711,10 +765,32 @@@ struct iommu_hwpt_vtd_s1_invalidate 
        __u32 __reserved;
  };
  
 +/**
 + * struct iommu_viommu_arm_smmuv3_invalidate - ARM SMMUv3 cahce invalidation
 + *         (IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3)
 + * @cmd: 128-bit cache invalidation command that runs in SMMU CMDQ.
 + *       Must be little-endian.
 + *
 + * Supported command list only when passing in a vIOMMU via @hwpt_id:
 + *     CMDQ_OP_TLBI_NSNH_ALL
 + *     CMDQ_OP_TLBI_NH_VA
 + *     CMDQ_OP_TLBI_NH_VAA
 + *     CMDQ_OP_TLBI_NH_ALL
 + *     CMDQ_OP_TLBI_NH_ASID
 + *     CMDQ_OP_ATC_INV
 + *     CMDQ_OP_CFGI_CD
 + *     CMDQ_OP_CFGI_CD_ALL
 + *
 + * -EIO will be returned if the command is not supported.
 + */
 +struct iommu_viommu_arm_smmuv3_invalidate {
 +      __aligned_le64 cmd[2];
 +};
 +
  /**
   * struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE)
   * @size: sizeof(struct iommu_hwpt_invalidate)
 - * @hwpt_id: ID of a nested HWPT for cache invalidation
 + * @hwpt_id: ID of a nested HWPT or a vIOMMU, for cache invalidation
   * @data_uptr: User pointer to an array of driver-specific cache invalidation
   *             data.
   * @data_type: One of enum iommu_hwpt_invalidate_data_type, defining the data
   *             Output the number of requests successfully handled by kernel.
   * @__reserved: Must be 0.
   *
 - * Invalidate the iommu cache for user-managed page table. Modifications on a
 - * user-managed page table should be followed by this operation to sync cache.
 + * Invalidate iommu cache for user-managed page table or vIOMMU. Modifications
 + * on a user-managed page table should be followed by this operation, if a HWPT
 + * is passed in via @hwpt_id. Other caches, such as device cache or descriptor
 + * cache can be flushed if a vIOMMU is passed in via the @hwpt_id field.
 + *
   * Each ioctl can support one or more cache invalidation requests in the array
   * that has a total size of @entry_len * @entry_num.
   *
@@@ -911,88 -840,4 +919,88 @@@ struct iommu_fault_alloc 
        __u32 out_fault_fd;
  };
  #define IOMMU_FAULT_QUEUE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_FAULT_QUEUE_ALLOC)
 +
 +/**
 + * enum iommu_viommu_type - Virtual IOMMU Type
 + * @IOMMU_VIOMMU_TYPE_DEFAULT: Reserved for future use
 + * @IOMMU_VIOMMU_TYPE_ARM_SMMUV3: ARM SMMUv3 driver specific type
 + */
 +enum iommu_viommu_type {
 +      IOMMU_VIOMMU_TYPE_DEFAULT = 0,
 +      IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1,
 +};
 +
 +/**
 + * struct iommu_viommu_alloc - ioctl(IOMMU_VIOMMU_ALLOC)
 + * @size: sizeof(struct iommu_viommu_alloc)
 + * @flags: Must be 0
 + * @type: Type of the virtual IOMMU. Must be defined in enum iommu_viommu_type
 + * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU
 + * @hwpt_id: ID of a nesting parent HWPT to associate to
 + * @out_viommu_id: Output virtual IOMMU ID for the allocated object
 + *
 + * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's
 + * virtualization support that is a security-isolated slice of the real IOMMU HW
 + * that is unique to a specific VM. Operations global to the IOMMU are connected
 + * to the vIOMMU, such as:
 + * - Security namespace for guest owned ID, e.g. guest-controlled cache tags
 + * - Non-device-affiliated event reporting, e.g. invalidation queue errors
 + * - Access to a sharable nesting parent pagetable across physical IOMMUs
 + * - Virtualization of various platforms IDs, e.g. RIDs and others
 + * - Delivery of paravirtualized invalidation
 + * - Direct assigned invalidation queues
 + * - Direct assigned interrupts
 + */
 +struct iommu_viommu_alloc {
 +      __u32 size;
 +      __u32 flags;
 +      __u32 type;
 +      __u32 dev_id;
 +      __u32 hwpt_id;
 +      __u32 out_viommu_id;
 +};
 +#define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC)
 +
 +/**
 + * struct iommu_vdevice_alloc - ioctl(IOMMU_VDEVICE_ALLOC)
 + * @size: sizeof(struct iommu_vdevice_alloc)
 + * @viommu_id: vIOMMU ID to associate with the virtual device
 + * @dev_id: The physical device to allocate a virtual instance on the vIOMMU
 + * @out_vdevice_id: Object handle for the vDevice. Pass to IOMMU_DESTORY
 + * @virt_id: Virtual device ID per vIOMMU, e.g. vSID of ARM SMMUv3, vDeviceID
 + *           of AMD IOMMU, and vRID of a nested Intel VT-d to a Context Table
 + *
 + * Allocate a virtual device instance (for a physical device) against a vIOMMU.
 + * This instance holds the device's information (related to its vIOMMU) in a VM.
 + */
 +struct iommu_vdevice_alloc {
 +      __u32 size;
 +      __u32 viommu_id;
 +      __u32 dev_id;
 +      __u32 out_vdevice_id;
 +      __aligned_u64 virt_id;
 +};
 +#define IOMMU_VDEVICE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VDEVICE_ALLOC)
 +
 +/**
 + * struct iommu_ioas_change_process - ioctl(VFIO_IOAS_CHANGE_PROCESS)
 + * @size: sizeof(struct iommu_ioas_change_process)
 + * @__reserved: Must be 0
 + *
 + * This transfers pinned memory counts for every memory map in every IOAS
 + * in the context to the current process.  This only supports maps created
 + * with IOMMU_IOAS_MAP_FILE, and returns EINVAL if other maps are present.
 + * If the ioctl returns a failure status, then nothing is changed.
 + *
 + * This API is useful for transferring operation of a device from one process
 + * to another, such as during userland live update.
 + */
 +struct iommu_ioas_change_process {
 +      __u32 size;
 +      __u32 __reserved;
 +};
 +
 +#define IOMMU_IOAS_CHANGE_PROCESS \
 +      _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_CHANGE_PROCESS)
 +
  #endif
This page took 0.336898 seconds and 4 git commands to generate.