vserver 1.9.5.x5
[linux-2.6.git] / drivers / acpi / numa.c
index 1f63b4d..9bfce46 100644 (file)
@@ -22,7 +22,7 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  *
  */
-
+#include <linux/module.h>
 #include <linux/config.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
@@ -184,18 +184,30 @@ acpi_numa_init()
                result = acpi_table_parse_srat(ACPI_SRAT_MEMORY_AFFINITY,
                                               acpi_parse_memory_affinity,
                                               NR_NODE_MEMBLKS);        // IA64 specific
-       } else {
-               /* FIXME */
-               printk("Warning: acpi_table_parse(ACPI_SRAT) returned %d!\n",result);
        }
 
        /* SLIT: System Locality Information Table */
        result = acpi_table_parse(ACPI_SLIT, acpi_parse_slit);
-       if (result < 1) {
-               /* FIXME */
-               printk("Warning: acpi_table_parse(ACPI_SLIT) returned %d!\n",result);
-       }
 
        acpi_numa_arch_fixup();
        return 0;
 }
+
+int
+acpi_get_pxm(acpi_handle h)
+{
+       unsigned long pxm;
+       acpi_status status;
+       acpi_handle handle;
+       acpi_handle phandle = h;
+
+       do {
+               handle = phandle;
+               status = acpi_evaluate_integer(handle, "_PXM", NULL, &pxm);
+               if (ACPI_SUCCESS(status))
+                       return (int)pxm;
+               status = acpi_get_parent(handle, &phandle);
+       } while(ACPI_SUCCESS(status));
+       return -1;
+}
+EXPORT_SYMBOL(acpi_get_pxm);