iommu: Constify struct iommu_ops
authorThierry Reding <treding@nvidia.com>
Fri, 27 Jun 2014 07:03:12 +0000 (09:03 +0200)
committerJoerg Roedel <jroedel@suse.de>
Mon, 7 Jul 2014 08:36:59 +0000 (10:36 +0200)
This structure is read-only data and should never be modified.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
14 files changed:
drivers/iommu/amd_iommu.c
drivers/iommu/arm-smmu.c
drivers/iommu/exynos-iommu.c
drivers/iommu/fsl_pamu_domain.c
drivers/iommu/intel-iommu.c
drivers/iommu/iommu.c
drivers/iommu/ipmmu-vmsa.c
drivers/iommu/msm_iommu.c
drivers/iommu/omap-iommu.c
drivers/iommu/shmobile-iommu.c
drivers/iommu/tegra-gart.c
drivers/iommu/tegra-smmu.c
include/linux/device.h
include/linux/iommu.h

index c8f87a6c9b90f10040bdf25088af8f40f01dc220..18405314168be35fb00640bbf1e7e05ba23a9466 100644 (file)
@@ -80,7 +80,7 @@ LIST_HEAD(hpet_map);
  */
 static struct protection_domain *pt_domain;
 
-static struct iommu_ops amd_iommu_ops;
+static const struct iommu_ops amd_iommu_ops;
 
 static ATOMIC_NOTIFIER_HEAD(ppr_notifier);
 int amd_iommu_max_glx_val = -1;
@@ -3395,7 +3395,7 @@ static int amd_iommu_domain_has_cap(struct iommu_domain *domain,
        return 0;
 }
 
-static struct iommu_ops amd_iommu_ops = {
+static const struct iommu_ops amd_iommu_ops = {
        .domain_init = amd_iommu_domain_init,
        .domain_destroy = amd_iommu_domain_destroy,
        .attach_dev = amd_iommu_attach_device,
index 1599354e974d200555218509ba87ed4a65647027..67727294e6b5fa3e00debb40c0b2b556bcb97218 100644 (file)
@@ -1609,7 +1609,7 @@ static void arm_smmu_remove_device(struct device *dev)
        iommu_group_remove_device(dev);
 }
 
-static struct iommu_ops arm_smmu_ops = {
+static const struct iommu_ops arm_smmu_ops = {
        .domain_init    = arm_smmu_domain_init,
        .domain_destroy = arm_smmu_domain_destroy,
        .attach_dev     = arm_smmu_attach_dev,
index 99054d2c040d6e2c3b20f85e4e1e5c5c36682fa5..d037e87a1fe53692543cb9e267200f4c9df5c19c 100644 (file)
@@ -1170,7 +1170,7 @@ static void exynos_iommu_remove_device(struct device *dev)
        iommu_group_remove_device(dev);
 }
 
-static struct iommu_ops exynos_iommu_ops = {
+static const struct iommu_ops exynos_iommu_ops = {
        .domain_init = exynos_iommu_domain_init,
        .domain_destroy = exynos_iommu_domain_destroy,
        .attach_dev = exynos_iommu_attach_device,
index d02d668c6ab1b9a15df4077daf64681af550d33f..fd5e9146aee6489a3ed5e2da95d740bd0cba4168 100644 (file)
@@ -1076,7 +1076,7 @@ static u32 fsl_pamu_get_windows(struct iommu_domain *domain)
        return dma_domain->win_cnt;
 }
 
-static struct iommu_ops fsl_pamu_ops = {
+static const struct iommu_ops fsl_pamu_ops = {
        .domain_init    = fsl_pamu_domain_init,
        .domain_destroy = fsl_pamu_domain_destroy,
        .attach_dev     = fsl_pamu_attach_device,
index f9e5f84ee952d82a30edf119bfd194d4efb28eed..41d9a2dcab2e448a36380482d9fbe007c081691b 100644 (file)
@@ -450,7 +450,7 @@ EXPORT_SYMBOL_GPL(intel_iommu_gfx_mapped);
 static DEFINE_SPINLOCK(device_domain_lock);
 static LIST_HEAD(device_domain_list);
 
-static struct iommu_ops intel_iommu_ops;
+static const struct iommu_ops intel_iommu_ops;
 
 static int __init intel_iommu_setup(char *str)
 {
@@ -4453,7 +4453,7 @@ static void intel_iommu_remove_device(struct device *dev)
        iommu_device_unlink(iommu->iommu_dev, dev);
 }
 
-static struct iommu_ops intel_iommu_ops = {
+static const struct iommu_ops intel_iommu_ops = {
        .domain_init    = intel_iommu_domain_init,
        .domain_destroy = intel_iommu_domain_destroy,
        .attach_dev     = intel_iommu_attach_device,
index d061c8677a81453540ecbf2e2412e54849c6017d..169836020208d1a8a5755f16b60f68a66fec6d43 100644 (file)
@@ -36,6 +36,10 @@ static struct kset *iommu_group_kset;
 static struct ida iommu_group_ida;
 static struct mutex iommu_group_mutex;
 
+struct iommu_callback_data {
+       const struct iommu_ops *ops;
+};
+
 struct iommu_group {
        struct kobject kobj;
        struct kobject *devices_kobj;
@@ -698,7 +702,8 @@ struct iommu_group *iommu_group_get_for_dev(struct device *dev)
 
 static int add_iommu_group(struct device *dev, void *data)
 {
-       struct iommu_ops *ops = data;
+       struct iommu_callback_data *cb = data;
+       const struct iommu_ops *ops = cb->ops;
 
        if (!ops->add_device)
                return -ENODEV;
@@ -714,7 +719,7 @@ static int iommu_bus_notifier(struct notifier_block *nb,
                              unsigned long action, void *data)
 {
        struct device *dev = data;
-       struct iommu_ops *ops = dev->bus->iommu_ops;
+       const struct iommu_ops *ops = dev->bus->iommu_ops;
        struct iommu_group *group;
        unsigned long group_action = 0;
 
@@ -767,10 +772,14 @@ static struct notifier_block iommu_bus_nb = {
        .notifier_call = iommu_bus_notifier,
 };
 
-static void iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops)
+static void iommu_bus_init(struct bus_type *bus, const struct iommu_ops *ops)
 {
+       struct iommu_callback_data cb = {
+               .ops = ops,
+       };
+
        bus_register_notifier(bus, &iommu_bus_nb);
-       bus_for_each_dev(bus, NULL, ops, add_iommu_group);
+       bus_for_each_dev(bus, NULL, &cb, add_iommu_group);
 }
 
 /**
@@ -786,7 +795,7 @@ static void iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops)
  * is set up. With this function the iommu-driver can set the iommu-ops
  * afterwards.
  */
-int bus_set_iommu(struct bus_type *bus, struct iommu_ops *ops)
+int bus_set_iommu(struct bus_type *bus, const struct iommu_ops *ops)
 {
        if (bus->iommu_ops != NULL)
                return -EBUSY;
index 53cde086e83bdca67c5b6efe362d5b2bcda8a360..7dab5cbcc775414e5d8e20b48cedf6fed439a7d3 100644 (file)
@@ -1120,7 +1120,7 @@ static void ipmmu_remove_device(struct device *dev)
        dev->archdata.iommu = NULL;
 }
 
-static struct iommu_ops ipmmu_ops = {
+static const struct iommu_ops ipmmu_ops = {
        .domain_init = ipmmu_domain_init,
        .domain_destroy = ipmmu_domain_destroy,
        .attach_dev = ipmmu_attach_device,
index f5ff657f49fa6c64e3c0d97f8eb533989c39e191..49f41d6e02f1de600e6be69afc4d195cc43ca3dd 100644 (file)
@@ -674,7 +674,7 @@ fail:
        return 0;
 }
 
-static struct iommu_ops msm_iommu_ops = {
+static const struct iommu_ops msm_iommu_ops = {
        .domain_init = msm_iommu_domain_init,
        .domain_destroy = msm_iommu_domain_destroy,
        .attach_dev = msm_iommu_attach_dev,
index 895af06a667fefc404967b1a83375727fb09d41f..031b2476bcc40aaff66df4a3a3b605032ea92742 100644 (file)
@@ -1291,7 +1291,7 @@ static void omap_iommu_remove_device(struct device *dev)
        kfree(arch_data);
 }
 
-static struct iommu_ops omap_iommu_ops = {
+static const struct iommu_ops omap_iommu_ops = {
        .domain_init    = omap_iommu_domain_init,
        .domain_destroy = omap_iommu_domain_destroy,
        .attach_dev     = omap_iommu_attach_dev,
index 464acda0bbc4bb3718a68c24f7568b4378261bb4..1333e6fb3405a34513068f1ca3f4be02d99d5120 100644 (file)
@@ -354,7 +354,7 @@ static int shmobile_iommu_add_device(struct device *dev)
        return 0;
 }
 
-static struct iommu_ops shmobile_iommu_ops = {
+static const struct iommu_ops shmobile_iommu_ops = {
        .domain_init = shmobile_iommu_domain_init,
        .domain_destroy = shmobile_iommu_domain_destroy,
        .attach_dev = shmobile_iommu_attach_device,
index dba1a9fd507058712114799dae1c0bfcf2b6a1a8..b10a8ecede8e5568deef8418c387ad815250f779 100644 (file)
@@ -309,7 +309,7 @@ static int gart_iommu_domain_has_cap(struct iommu_domain *domain,
        return 0;
 }
 
-static struct iommu_ops gart_iommu_ops = {
+static const struct iommu_ops gart_iommu_ops = {
        .domain_init    = gart_iommu_domain_init,
        .domain_destroy = gart_iommu_domain_destroy,
        .attach_dev     = gart_iommu_attach_dev,
index 605b5b46a90390b3b2f630b5b2bcee146b4ead13..792da5ea6d128fd1f9a63ddf9e6ab2df9ffa9145 100644 (file)
@@ -947,7 +947,7 @@ static void smmu_iommu_domain_destroy(struct iommu_domain *domain)
        dev_dbg(smmu->dev, "smmu_as@%p\n", as);
 }
 
-static struct iommu_ops smmu_iommu_ops = {
+static const struct iommu_ops smmu_iommu_ops = {
        .domain_init    = smmu_iommu_domain_init,
        .domain_destroy = smmu_iommu_domain_destroy,
        .attach_dev     = smmu_iommu_attach_dev,
index af424acd393db9ed02f8e9911b905003154bf702..75f5bcb8930b06a431695e2f0590cb03bb15d011 100644 (file)
@@ -124,7 +124,7 @@ struct bus_type {
 
        const struct dev_pm_ops *pm;
 
-       struct iommu_ops *iommu_ops;
+       const struct iommu_ops *iommu_ops;
 
        struct subsys_private *p;
        struct lock_class_key lock_key;
index 7fd16e3d1f25ca1661f20bbe42baed4a99863cf5..c7097d7f024c3b3094ddb932186838eabc7ab814 100644 (file)
@@ -50,7 +50,7 @@ struct iommu_domain_geometry {
 };
 
 struct iommu_domain {
-       struct iommu_ops *ops;
+       const struct iommu_ops *ops;
        void *priv;
        iommu_fault_handler_t handler;
        void *handler_token;
@@ -140,7 +140,7 @@ struct iommu_ops {
 #define IOMMU_GROUP_NOTIFY_UNBIND_DRIVER       5 /* Pre Driver unbind */
 #define IOMMU_GROUP_NOTIFY_UNBOUND_DRIVER      6 /* Post Driver unbind */
 
-extern int bus_set_iommu(struct bus_type *bus, struct iommu_ops *ops);
+extern int bus_set_iommu(struct bus_type *bus, const struct iommu_ops *ops);
 extern bool iommu_present(struct bus_type *bus);
 extern struct iommu_domain *iommu_domain_alloc(struct bus_type *bus);
 extern struct iommu_group *iommu_group_get_by_id(int id);
This page took 0.035056 seconds and 5 git commands to generate.