The 32-bit MSR interfaces rdmsr() and wrmsr() are planned to be
removed. Use the related 64-bit variants instead.

Signed-off-by: Juergen Gross <[email protected]>
---
 drivers/char/agp/nvidia-agp.c | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
index 4787391bb6b4..3e760bc00afa 100644
--- a/drivers/char/agp/nvidia-agp.c
+++ b/drivers/char/agp/nvidia-agp.c
@@ -65,22 +65,20 @@ static int nvidia_fetch_size(void)
 
 static int nvidia_init_iorr(u32 base, u32 size)
 {
-       u32 base_hi, base_lo;
-       u32 mask_hi, mask_lo;
-       u32 sys_hi, sys_lo;
+       struct msr base_msr, mask_msr, sys_msr;
        u32 iorr_addr, free_iorr_addr;
 
        /* Find the iorr that is already used for the base */
        /* If not found, determine the uppermost available iorr */
        free_iorr_addr = AMD_K7_NUM_IORR;
        for (iorr_addr = 0; iorr_addr < AMD_K7_NUM_IORR; iorr_addr++) {
-               rdmsr(IORR_BASE0 + 2 * iorr_addr, base_lo, base_hi);
-               rdmsr(IORR_MASK0 + 2 * iorr_addr, mask_lo, mask_hi);
+               rdmsrq(IORR_BASE0 + 2 * iorr_addr, base_msr.q);
+               rdmsrq(IORR_MASK0 + 2 * iorr_addr, mask_msr.q);
 
-               if ((base_lo & 0xfffff000) == (base & 0xfffff000))
+               if ((base_msr.l & 0xfffff000) == (base & 0xfffff000))
                        break;
 
-               if ((mask_lo & 0x00000800) == 0)
+               if ((mask_msr.l & 0x00000800) == 0)
                        free_iorr_addr = iorr_addr;
        }
 
@@ -89,16 +87,16 @@ static int nvidia_init_iorr(u32 base, u32 size)
                if (iorr_addr >= AMD_K7_NUM_IORR)
                        return -EINVAL;
        }
-    base_hi = 0x0;
-    base_lo = (base & ~0xfff) | 0x18;
-    mask_hi = 0xf;
-    mask_lo = ((~(size - 1)) & 0xfffff000) | 0x800;
-    wrmsr(IORR_BASE0 + 2 * iorr_addr, base_lo, base_hi);
-    wrmsr(IORR_MASK0 + 2 * iorr_addr, mask_lo, mask_hi);
-
-    rdmsr(SYSCFG, sys_lo, sys_hi);
-    sys_lo |= 0x00100000;
-    wrmsr(SYSCFG, sys_lo, sys_hi);
+    base_msr.h = 0x0;
+    base_msr.l = (base & ~0xfff) | 0x18;
+    mask_msr.h = 0xf;
+    mask_msr.l = ((~(size - 1)) & 0xfffff000) | 0x800;
+    wrmsrq(IORR_BASE0 + 2 * iorr_addr, base_msr.q);
+    wrmsrq(IORR_MASK0 + 2 * iorr_addr, mask_msr.q);
+
+    rdmsrq(SYSCFG, sys_msr.q);
+    sys_msr.l |= 0x00100000;
+    wrmsrq(SYSCFG, sys_msr.q);
 
        return 0;
 }
-- 
2.54.0

Reply via email to