|
@@ -4449,11 +4449,32 @@ static ssize_t intel_iommu_show_ecap(struct device *dev,
|
|
|
}
|
|
|
static DEVICE_ATTR(ecap, S_IRUGO, intel_iommu_show_ecap, NULL);
|
|
|
|
|
|
+static ssize_t intel_iommu_show_ndoms(struct device *dev,
|
|
|
+ struct device_attribute *attr,
|
|
|
+ char *buf)
|
|
|
+{
|
|
|
+ struct intel_iommu *iommu = dev_get_drvdata(dev);
|
|
|
+ return sprintf(buf, "%ld\n", cap_ndoms(iommu->cap));
|
|
|
+}
|
|
|
+static DEVICE_ATTR(domains_supported, S_IRUGO, intel_iommu_show_ndoms, NULL);
|
|
|
+
|
|
|
+static ssize_t intel_iommu_show_ndoms_used(struct device *dev,
|
|
|
+ struct device_attribute *attr,
|
|
|
+ char *buf)
|
|
|
+{
|
|
|
+ struct intel_iommu *iommu = dev_get_drvdata(dev);
|
|
|
+ return sprintf(buf, "%d\n", bitmap_weight(iommu->domain_ids,
|
|
|
+ cap_ndoms(iommu->cap)));
|
|
|
+}
|
|
|
+static DEVICE_ATTR(domains_used, S_IRUGO, intel_iommu_show_ndoms_used, NULL);
|
|
|
+
|
|
|
static struct attribute *intel_iommu_attrs[] = {
|
|
|
&dev_attr_version.attr,
|
|
|
&dev_attr_address.attr,
|
|
|
&dev_attr_cap.attr,
|
|
|
&dev_attr_ecap.attr,
|
|
|
+ &dev_attr_domains_supported.attr,
|
|
|
+ &dev_attr_domains_used.attr,
|
|
|
NULL,
|
|
|
};
|
|
|
|