x86: Move find_smp_config() earlier and avoid bootmem usage
[safe/jmp/linux-2.6] / arch / x86 / kernel / bios_uv.c
index 7cf6fc3..63a88e1 100644 (file)
@@ -25,7 +25,7 @@
 #include <asm/uv/bios.h>
 #include <asm/uv/uv_hub.h>
 
-struct uv_systab uv_systab;
+static struct uv_systab uv_systab;
 
 s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
 {
@@ -101,15 +101,13 @@ s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
 }
 
 int
-uv_bios_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size,
+uv_bios_mq_watchlist_alloc(int blade, unsigned long addr, unsigned int mq_size,
                           unsigned long *intr_mmr_offset)
 {
        union uv_watchlist_u size_blade;
-       unsigned long addr;
        u64 watchlist;
        s64 ret;
 
-       addr = (unsigned long)mq;
        size_blade.size = mq_size;
        size_blade.blade = blade;
 
@@ -142,6 +140,17 @@ uv_bios_change_memprotect(u64 paddr, u64 len, enum uv_memprotect perms)
 }
 EXPORT_SYMBOL_GPL(uv_bios_change_memprotect);
 
+s64
+uv_bios_reserved_page_pa(u64 buf, u64 *cookie, u64 *addr, u64 *len)
+{
+       s64 ret;
+
+       ret = uv_bios_call_irqsave(UV_BIOS_GET_PARTITION_ADDR, (u64)cookie,
+                                       (u64)addr, buf, (u64)len, 0);
+       return ret;
+}
+EXPORT_SYMBOL_GPL(uv_bios_reserved_page_pa);
+
 s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second)
 {
        return uv_bios_call(UV_BIOS_FREQ_BASE, clock_type,
@@ -173,7 +182,8 @@ void uv_bios_init(void)
        memcpy(&uv_systab, tab, sizeof(struct uv_systab));
        iounmap(tab);
 
-       printk(KERN_INFO "EFI UV System Table Revision %d\n", tab->revision);
+       printk(KERN_INFO "EFI UV System Table Revision %d\n",
+                                       uv_systab.revision);
 }
 #else  /* !CONFIG_EFI */