]> xenbits.xensource.com Git - people/aperard/xen-unstable.git/commitdiff
x86/APIC: Drop APIC_BASE and use fix_to_virt()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 30 Jul 2024 10:54:43 +0000 (11:54 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 30 Jul 2024 16:36:51 +0000 (17:36 +0100)
Right now the apic_mem_*() helpers only compile because sizeof(void *) ==
sizeof(long long).  Switch to using fix_to_virt() which is a void *type.

Also adjust the two places where the APIC/IO-APIC virtual address is rendered
in a printk().

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/apic.c
xen/arch/x86/include/asm/apic.h
xen/arch/x86/include/asm/apicdef.h
xen/arch/x86/io_apic.c

index 6567af685a1b07bedfcdcf77c000cdd24bb39c02..7869c30e83f6c9f145fb36930df2b5b171b3b826 100644 (file)
@@ -938,8 +938,8 @@ void __init init_apic_mappings(void)
         apic_phys = mp_lapic_addr;
 
     set_fixmap_nocache(FIX_APIC_BASE, apic_phys);
-    apic_printk(APIC_VERBOSE, "mapped APIC to %08Lx (%08lx)\n", APIC_BASE,
-                apic_phys);
+    apic_printk(APIC_VERBOSE, "mapped APIC to %p (%08lx)\n",
+                fix_to_virt(FIX_APIC_BASE), apic_phys);
 
 __next:
     /*
index a7798de02993338365b80c8b0f0e42988ff8778b..d8eda6df6d8686cf4c6109c6f2e98ab6f99280e5 100644 (file)
@@ -51,12 +51,16 @@ const struct genapic *apic_x2apic_probe(void);
 
 static inline void apic_mem_write(unsigned int reg, uint32_t v)
 {
-       *((volatile u32 *)(APIC_BASE+reg)) = v;
+    volatile uint32_t *addr = fix_to_virt(FIX_APIC_BASE) + reg;
+
+    *addr = v;
 }
 
-static inline u32 apic_mem_read(unsigned int reg)
+static inline uint32_t apic_mem_read(unsigned int reg)
 {
-       return *((volatile u32 *)(APIC_BASE+reg));
+    const volatile uint32_t *addr = fix_to_virt(FIX_APIC_BASE) + reg;
+
+    return *addr;
 }
 
 /* NOTE: in x2APIC mode, we should use apic_icr_write()/apic_icr_read() to
index b0790fad1cdbee7cbc6678e529885565455325dd..49e29ec8015664f0ff191c3ede452f3e2dc65d72 100644 (file)
 /* Applicable to vectors, TPR, and PPR. */
 #define                APIC_PRIO_CLASS(v)      ((v) & 0xF0)
 
-#define APIC_BASE __fix_to_virt(FIX_APIC_BASE)
-
 #define MAX_IO_APICS 128
 
 extern bool x2apic_enabled;
index 7744b43f2414df24adad3dae525c7632545d377f..7727005846394d9b13818a4162d6d2ffdc6c1733 100644 (file)
@@ -2596,8 +2596,8 @@ static void __init ioapic_init_mappings(void)
         }
 
         set_fixmap_nocache(idx, ioapic_phys);
-        apic_printk(APIC_VERBOSE, "mapped IOAPIC to %08Lx (%08lx)\n",
-                    __fix_to_virt(idx), ioapic_phys);
+        apic_printk(APIC_VERBOSE, "mapped IOAPIC to %p (%08lx)\n",
+                    fix_to_virt(idx), ioapic_phys);
 
         if ( bad_ioapic_register(i) )
         {