Re: [PATCH] iommu: Constify struct iommu_ops

2014-06-27 Thread Thierry Reding
On Thu, Jun 26, 2014 at 09:04:54PM +0200, Thierry Reding wrote:
 From: Thierry Reding tred...@nvidia.com
 
 This structure is read-only data and should never be modified.
 
 Signed-off-by: Thierry Reding tred...@nvidia.com
 ---
  drivers/iommu/amd_iommu.c   |  4 ++--
  drivers/iommu/arm-smmu.c|  2 +-
  drivers/iommu/exynos-iommu.c|  2 +-
  drivers/iommu/fsl_pamu_domain.c |  2 +-
  drivers/iommu/intel-iommu.c |  4 ++--
  drivers/iommu/iommu.c   | 19 ++-
  drivers/iommu/ipmmu-vmsa.c  |  2 +-
  drivers/iommu/msm_iommu.c   |  2 +-
  drivers/iommu/omap-iommu.c  |  2 +-
  drivers/iommu/shmobile-iommu.c  |  2 +-
  drivers/iommu/tegra-gart.c  |  2 +-
  drivers/iommu/tegra-smmu.c  |  2 +-
  include/linux/iommu.h   |  4 ++--
  13 files changed, 29 insertions(+), 20 deletions(-)

I noticed that this patch is missing a hunk to include/linux/device.h
and I've sent a v2 to address this. Apologies for the noise.

Thierry


pgpRMyn4BDG3V.pgp
Description: PGP signature
___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

[PATCH] iommu: Constify struct iommu_ops

2014-06-26 Thread Thierry Reding
From: Thierry Reding tred...@nvidia.com

This structure is read-only data and should never be modified.

Signed-off-by: Thierry Reding tred...@nvidia.com
---
 drivers/iommu/amd_iommu.c   |  4 ++--
 drivers/iommu/arm-smmu.c|  2 +-
 drivers/iommu/exynos-iommu.c|  2 +-
 drivers/iommu/fsl_pamu_domain.c |  2 +-
 drivers/iommu/intel-iommu.c |  4 ++--
 drivers/iommu/iommu.c   | 19 ++-
 drivers/iommu/ipmmu-vmsa.c  |  2 +-
 drivers/iommu/msm_iommu.c   |  2 +-
 drivers/iommu/omap-iommu.c  |  2 +-
 drivers/iommu/shmobile-iommu.c  |  2 +-
 drivers/iommu/tegra-gart.c  |  2 +-
 drivers/iommu/tegra-smmu.c  |  2 +-
 include/linux/iommu.h   |  4 ++--
 13 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 4aec6a29e316..7eb0e4246a79 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -81,7 +81,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;
@@ -3473,7 +3473,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,
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 1599354e974d..67727294e6b5 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -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,
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index 99054d2c040d..d037e87a1fe5 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -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,
diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domain.c
index 93072ba44b1d..5b47c5495873 100644
--- a/drivers/iommu/fsl_pamu_domain.c
+++ b/drivers/iommu/fsl_pamu_domain.c
@@ -1140,7 +1140,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,
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 51b6b77dc3e5..9aab7963f424 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -451,7 +451,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)
 {
@@ -4465,7 +4465,7 @@ static void intel_iommu_remove_device(struct device *dev)
iommu_group_remove_device(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,
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 896ce352d88e..5e9e82c73bbf 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -39,6 +39,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;
@@ -520,7 +524,8 @@ EXPORT_SYMBOL_GPL(iommu_group_id);
 
 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;
@@ -536,7 +541,7 @@ static int iommu_bus_notifier(struct notifier_block *nb,
  unsigned long action, void *data)
 {
struct device *dev = data;
-   struct