iommu/amd: Replace two consecutive readl calls with one readq
authorAdrian Huang <ahuang12@lenovo.com>
Thu, 9 Jan 2020 03:02:50 +0000 (11:02 +0800)
committerJoerg Roedel <jroedel@suse.de>
Fri, 17 Jan 2020 10:05:56 +0000 (11:05 +0100)
Optimize the reigster reading by using readq instead of the two
consecutive readl calls.

Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd_iommu_init.c

index c5167fe0bd5fd394e1116f4891be1f0068d83518..cfdc4b60ccbef4a1ac1bcc6b7f7f2bc0889e8daf 100644 (file)
@@ -1718,7 +1718,6 @@ static const struct attribute_group *amd_iommu_groups[] = {
 static int __init iommu_init_pci(struct amd_iommu *iommu)
 {
        int cap_ptr = iommu->cap_ptr;
-       u32 low, high;
        int ret;
 
        iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
@@ -1736,10 +1735,7 @@ static int __init iommu_init_pci(struct amd_iommu *iommu)
                amd_iommu_iotlb_sup = false;
 
        /* read extended feature bits */
-       low  = readl(iommu->mmio_base + MMIO_EXT_FEATURES);
-       high = readl(iommu->mmio_base + MMIO_EXT_FEATURES + 4);
-
-       iommu->features = ((u64)high << 32) | low;
+       iommu->features = readq(iommu->mmio_base + MMIO_EXT_FEATURES);
 
        if (iommu_feature(iommu, FEATURE_GT)) {
                int glxval;