Merge branches 'apple/dart', 'arm/mediatek', 'arm/renesas', 'arm/rockchip', 'arm...
authorJoerg Roedel <jroedel@suse.de>
Mon, 21 Aug 2023 12:18:43 +0000 (14:18 +0200)
committerJoerg Roedel <jroedel@suse.de>
Mon, 21 Aug 2023 12:18:43 +0000 (14:18 +0200)
1  2  3  4  5  6  7  8  9  10 
MAINTAINERS
drivers/acpi/scan.c
drivers/dma/idxd/device.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/arm/arm-smmu/qcom_iommu.c
drivers/iommu/intel/iommu.c
drivers/iommu/iommu.c
drivers/iommu/ipmmu-vmsa.c
drivers/iommu/sprd-iommu.c
include/linux/iommu.h

diff --cc MAINTAINERS
index d590ce31aa7266755a754a82230b99e14867e49e,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f,3eec0065be9d98c880a63fa84e0bacec7b1b4bac,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f,d516295978a4cb5f669fa7b7f686f82db39a5c87,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f,0f966f05fb0d400cdb64266cd9fa5217712cba7a,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f,3be1bdfe8ecc7f9169df3657b4344c9ef1b8dc6f..416e0e7599d8c020da4b9f5957f523625b2a0e8e
@@@@@@@@@@@ -21628,16 -21625,14 -21626,14 -21625,14 -21625,14 -21638,14 -21625,14 -21636,20 -21625,14 -21625,14 +21629,16 @@@@@@@@@@@ W:        https://github.com/srcres258/linux-d
          T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
          F:    Documentation/translations/zh_TW/
          
 ---------TTY LAYER
 +++++++++TTY LAYER AND SERIAL DRIVERS
          M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
          M:    Jiri Slaby <jirislaby@kernel.org>
 ++++++ ++L:    linux-kernel@vger.kernel.org
 ++++++ ++L:    linux-serial@vger.kernel.org
          S:    Supported
          T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
 +++++++++F:    Documentation/devicetree/bindings/serial/
          F:    Documentation/driver-api/serial/
          F:    drivers/tty/
       -  F:    drivers/tty/serial/serial_base.h
       -  F:    drivers/tty/serial/serial_base_bus.c
 ---------F:    drivers/tty/serial/serial_core.c
       -  F:    drivers/tty/serial/serial_ctrl.c
       -  F:    drivers/tty/serial/serial_port.c
          F:    include/linux/selection.h
          F:    include/linux/serial.h
          F:    include/linux/serial_core.h
Simple merge
Simple merge
Simple merge
index caaf563d38ae090246c602a0b982fbe4d5a9ccf1,da340f11c5f5b6e9bc03824594c4a78f18067f1f,da340f11c5f5b6e9bc03824594c4a78f18067f1f,da340f11c5f5b6e9bc03824594c4a78f18067f1f,da340f11c5f5b6e9bc03824594c4a78f18067f1f,caaf563d38ae090246c602a0b982fbe4d5a9ccf1,da340f11c5f5b6e9bc03824594c4a78f18067f1f,e385a99e25e1afae8e8284945859b4a0c9098a47,da340f11c5f5b6e9bc03824594c4a78f18067f1f,c53a4942f7457f3eb46b089720456c3a70ed0964..39601fbfd0e0ca82162f7dff6c747dec9d53acdf
@@@@@@@@@@@ -500,44 -500,44 -500,44 -500,44 -500,44 -500,44 -500,44 -501,44 -500,44 -561,39 +562,39 @@@@@@@@@@@ static void __iommu_group_remove_device
          {
                struct iommu_group *group = dev->iommu_group;
                struct group_device *device;
---------       const struct iommu_ops *ops;
--------- 
---------       if (!dev->iommu || !group)
---------               return;
--------- 
---------       iommu_device_unlink(dev->iommu->iommu_dev, dev);
          
                mutex_lock(&group->mutex);
---------       device = __iommu_group_remove_device(group, dev);
+++++++++       for_each_group_device(group, device) {
+++++++++               if (device->dev != dev)
+++++++++                       continue;
          
---------       /*
---------        * If the group has become empty then ownership must have been released,
---------        * and the current domain must be set back to NULL or the default
---------        * domain.
---------        */
---------       if (list_empty(&group->devices))
---------               WARN_ON(group->owner_cnt ||
---------                       group->domain != group->default_domain);
+++++++++               list_del(&device->list);
+++++++++               __iommu_group_free_device(group, device);
+++++++++               if (dev->iommu && dev->iommu->iommu_dev)
+++++++++                       iommu_deinit_device(dev);
+++++++++               else
+++++++++                       dev->iommu_group = NULL;
+++++++++               break;
+++++++++       }
+++++++++       mutex_unlock(&group->mutex);
          
                /*
---------        * release_device() must stop using any attached domain on the device.
---------        * If there are still other devices in the group they are not effected
---------        * by this callback.
---------        *
---------        * The IOMMU driver must set the device to either an identity or
---------        * blocking translation and stop using any domain pointer, as it is
---------        * going to be freed.
+++++++++        * Pairs with the get in iommu_init_device() or
+++++++++        * iommu_group_add_device()
                 */
---------       ops = dev_iommu_ops(dev);
---------       if (ops->release_device)
---------               ops->release_device(dev);
---------       mutex_unlock(&group->mutex);
+++++++++       iommu_group_put(group);
+++++++++ }
 ++++ + + 
-    - -        if (device)
-    - -                __iommu_group_release_device(group, device);
+++++++++ static void iommu_release_device(struct device *dev)
+++++++++ {
+++++++++       struct iommu_group *group = dev->iommu_group;
          
-    - -        module_put(ops->owner);
-    - -        dev_iommu_free(dev);
 ---- - -       if (device)
 ---- - -               __iommu_group_release_device(group, device);
+++++++++       if (group)
+++++++++               __iommu_group_remove_device(dev);
+    + +  
 ---- - -       module_put(ops->owner);
 ---- - -       dev_iommu_free(dev);
+++++++++       /* Free any fwspec if no iommu_driver was ever attached */
+++++++++       if (dev->iommu)
+++++++++               dev_iommu_free(dev);
          }
          
          static int __init iommu_set_def_domain_type(char *str)
index 9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,c31552d6a5fadf874c092d09f57c2aa5fa2a0a60,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,9f64c5c9f5b90ace00aff6ec7b7281bfd68d22eb,0aeedd3e14941714d4b0054975fd7b93cea97b55..65ff69477c43e41b270f504b4f0434c2145c7c69
          #include <linux/io-pgtable.h>
          #include <linux/iommu.h>
          #include <linux/of.h>
--------- #include <linux/of_device.h>
          #include <linux/of_platform.h>
+++ ++++++#include <linux/pci.h>
          #include <linux/platform_device.h>
          #include <linux/sizes.h>
          #include <linux/slab.h>
Simple merge
index d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,d3164259667599679673cf45226f82b25b4018ad,54bae452975f83f8bfcae21e70358c7df5e51b1f,d3164259667599679673cf45226f82b25b4018ad,b1dcb1b9b170404d3e2f2ef5977b0d55e6065c6f..389fffc0b3a2df5f770c142ff6c757304627883a
@@@@@@@@@@@ -409,6 -409,6 -409,6 -409,6 -409,6 -409,6 -409,6 -411,7 -409,6 -409,7 +411,8 @@@@@@@@@@@ struct iommu_fault_param 
           * @priv:      IOMMU Driver private data
           * @max_pasids:  number of PASIDs this device can consume
           * @attach_deferred: the dma domain attachment is deferred
+++++++++  * @pci_32bit_workaround: Limit DMA allocations to 32-bit IOVAs
+++++++ ++ * @require_direct: device requires IOMMU_RESV_DIRECT regions
           *
           * TODO: migrate other per device data pointers under iommu_dev_data, e.g.
           *    struct iommu_group      *iommu_group;
@@@@@@@@@@@ -422,6 -422,6 -422,6 -422,6 -422,6 -422,6 -422,6 -425,7 -422,6 -423,7 +426,8 @@@@@@@@@@@ struct dev_iommu 
                void                            *priv;
                u32                             max_pasids;
                u32                             attach_deferred:1;
+++++++++       u32                             pci_32bit_workaround:1;
+++++++ ++      u32                             require_direct:1;
          };
          
          int iommu_device_register(struct iommu_device *iommu,