aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/intel-iommu.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index a8f7ae0eb7a4..238ad3447712 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -4730,11 +4730,16 @@ static int intel_iommu_cpu_dead(unsigned int cpu)
4730 return 0; 4730 return 0;
4731} 4731}
4732 4732
4733static inline struct intel_iommu *dev_to_intel_iommu(struct device *dev)
4734{
4735 return container_of(dev, struct intel_iommu, iommu.dev);
4736}
4737
4733static ssize_t intel_iommu_show_version(struct device *dev, 4738static ssize_t intel_iommu_show_version(struct device *dev,
4734 struct device_attribute *attr, 4739 struct device_attribute *attr,
4735 char *buf) 4740 char *buf)
4736{ 4741{
4737 struct intel_iommu *iommu = dev_get_drvdata(dev); 4742 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4738 u32 ver = readl(iommu->reg + DMAR_VER_REG); 4743 u32 ver = readl(iommu->reg + DMAR_VER_REG);
4739 return sprintf(buf, "%d:%d\n", 4744 return sprintf(buf, "%d:%d\n",
4740 DMAR_VER_MAJOR(ver), DMAR_VER_MINOR(ver)); 4745 DMAR_VER_MAJOR(ver), DMAR_VER_MINOR(ver));
@@ -4745,7 +4750,7 @@ static ssize_t intel_iommu_show_address(struct device *dev,
4745 struct device_attribute *attr, 4750 struct device_attribute *attr,
4746 char *buf) 4751 char *buf)
4747{ 4752{
4748 struct intel_iommu *iommu = dev_get_drvdata(dev); 4753 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4749 return sprintf(buf, "%llx\n", iommu->reg_phys); 4754 return sprintf(buf, "%llx\n", iommu->reg_phys);
4750} 4755}
4751static DEVICE_ATTR(address, S_IRUGO, intel_iommu_show_address, NULL); 4756static DEVICE_ATTR(address, S_IRUGO, intel_iommu_show_address, NULL);
@@ -4754,7 +4759,7 @@ static ssize_t intel_iommu_show_cap(struct device *dev,
4754 struct device_attribute *attr, 4759 struct device_attribute *attr,
4755 char *buf) 4760 char *buf)
4756{ 4761{
4757 struct intel_iommu *iommu = dev_get_drvdata(dev); 4762 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4758 return sprintf(buf, "%llx\n", iommu->cap); 4763 return sprintf(buf, "%llx\n", iommu->cap);
4759} 4764}
4760static DEVICE_ATTR(cap, S_IRUGO, intel_iommu_show_cap, NULL); 4765static DEVICE_ATTR(cap, S_IRUGO, intel_iommu_show_cap, NULL);
@@ -4763,7 +4768,7 @@ static ssize_t intel_iommu_show_ecap(struct device *dev,
4763 struct device_attribute *attr, 4768 struct device_attribute *attr,
4764 char *buf) 4769 char *buf)
4765{ 4770{
4766 struct intel_iommu *iommu = dev_get_drvdata(dev); 4771 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4767 return sprintf(buf, "%llx\n", iommu->ecap); 4772 return sprintf(buf, "%llx\n", iommu->ecap);
4768} 4773}
4769static DEVICE_ATTR(ecap, S_IRUGO, intel_iommu_show_ecap, NULL); 4774static DEVICE_ATTR(ecap, S_IRUGO, intel_iommu_show_ecap, NULL);
@@ -4772,7 +4777,7 @@ static ssize_t intel_iommu_show_ndoms(struct device *dev,
4772 struct device_attribute *attr, 4777 struct device_attribute *attr,
4773 char *buf) 4778 char *buf)
4774{ 4779{
4775 struct intel_iommu *iommu = dev_get_drvdata(dev); 4780 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4776 return sprintf(buf, "%ld\n", cap_ndoms(iommu->cap)); 4781 return sprintf(buf, "%ld\n", cap_ndoms(iommu->cap));
4777} 4782}
4778static DEVICE_ATTR(domains_supported, S_IRUGO, intel_iommu_show_ndoms, NULL); 4783static DEVICE_ATTR(domains_supported, S_IRUGO, intel_iommu_show_ndoms, NULL);
@@ -4781,7 +4786,7 @@ static ssize_t intel_iommu_show_ndoms_used(struct device *dev,
4781 struct device_attribute *attr, 4786 struct device_attribute *attr,
4782 char *buf) 4787 char *buf)
4783{ 4788{
4784 struct intel_iommu *iommu = dev_get_drvdata(dev); 4789 struct intel_iommu *iommu = dev_to_intel_iommu(dev);
4785 return sprintf(buf, "%d\n", bitmap_weight(iommu->domain_ids, 4790 return sprintf(buf, "%d\n", bitmap_weight(iommu->domain_ids,
4786 cap_ndoms(iommu->cap))); 4791 cap_ndoms(iommu->cap)));
4787} 4792}