WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] to fix ACPI slit table access at runtime

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] to fix ACPI slit table access at runtime
From: "Kamble, Nitin A" <nitin.a.kamble@xxxxxxxxx>
Date: Wed, 24 Feb 2010 16:06:46 -0800
Accept-language: en-US
Acceptlanguage: en-US
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 24 Feb 2010 16:07:37 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acq1rmsyjyldpDGeT+ivAyknVofFzQ==
Thread-topic: [PATCH] to fix ACPI slit table access at runtime

Hi Keir,

  I was noticing that the current Xen code was not able to access the ACPI SLIT data (node to node distance) at runtime. And I found root cause of it being the acpi_slit pointer not being valid at runtime.

I have fixed the issue by saving the slit table data at boot time, and using the saved data for runtime access as follows.

 

Please accept or comment.

Thanks & Regards,

Nitin

 

Signed-Off-By: Nitin A Kamble <nitin.a.kamble@xxxxxxxxx>

 

diff -r b474725a242b xen/arch/x86/srat.c

--- a/xen/arch/x86/srat.c             Thu Feb 25 07:50:38 2010 -0800

+++ b/xen/arch/x86/srat.c          Thu Feb 25 08:02:36 2010 -0800

@@ -20,13 +20,15 @@

 #include <asm/e820.h>

 #include <asm/page.h>

 

-static struct acpi_table_slit *__read_mostly acpi_slit;

-

 static nodemask_t nodes_parsed __initdata;

 static nodemask_t nodes_found __initdata;

 static struct node nodes[MAX_NUMNODES] __initdata;

 static u8 __read_mostly pxm2node[256] = { [0 ... 255] = 0xff };

 

+static struct {

+             struct acpi_table_slit slit_table;

+             u8 entries[MAX_NUMNODES * MAX_NUMNODES];

+} acpi_slit;

 

 static int num_node_memblks;

 static struct node node_memblk_range[NR_NODE_MEMBLKS];

@@ -144,7 +146,8 @@

                                printk(KERN_INFO "ACPI: SLIT table looks invalid. Not used.\n");

                                return;

                }

-              acpi_slit = slit;

+

+             memcpy(&acpi_slit, slit, slit->header.length);

 }

 

 /* Callback for Proximity Domain -> LAPIC mapping */

@@ -424,10 +427,10 @@

 {

                int index;

 

-              if (!acpi_slit)

+             if (!acpi_slit.slit_table.header.length)

                                return a == b ? 10 : 20;

-              index = acpi_slit->locality_count * node_to_pxm(a);

-              return acpi_slit->entry[index + node_to_pxm(b)];

+             index = acpi_slit.slit_table.locality_count * node_to_pxm(a);

+             return  acpi_slit.slit_table.entry[index + node_to_pxm(b)];

 }

 

 EXPORT_SYMBOL(__node_distance);

diff -r b474725a242b xen/include/acpi/actbl1.h

--- a/xen/include/acpi/actbl1.h Thu Feb 25 07:50:38 2010 -0800

+++ b/xen/include/acpi/actbl1.h              Thu Feb 25 08:02:36 2010 -0800

@@ -573,7 +573,7 @@

 struct acpi_table_slit {

                struct acpi_table_header header;            /* Common ACPI table header */

                u64 locality_count;

-              u8 entry[1];                        /* Real size = localities^2 */

+             u8 entry[0];                        /* Real size = localities^2 */

 };

 

 /*******************************************************************************

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel