Skip to contentSkip to conversation

check xpm2_control_block while setting bm_control

PATCH In review Venki Pallipadi 2 participants 4 messages Jun 8, 2007 – Jul 19, 2007 ACPI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 check xpm2_control_block while setting bm_control

Check both pm2_control_block and cpm2_control_block for bm_control. It should be better to do this with checking of address from consolidated fadt_info_table[]. But, that will need some changes in acpica tables code.

drivers/acpi/processor_core.c +12 -1
Index: linux-2.6.22-rc-mm/drivers/acpi/processor_core.c
===================================================================
@@ -521,11 +521,22 @@
 
 	acpi_processor_errata(pr);
 
+	if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) {
+		/* FADT rev. 2 */
+		if (acpi_gbl_FADT.xpm_timer_block.space_id !=
+		    ACPI_ADR_SPACE_SYSTEM_IO)
 	/*
 	 * Check to see if we have bus mastering arbitration control.  This
 	 * is required for proper C3 usage (to maintain cache coherency).
+	 * Check both pm2_control_block and xpm2_control_block
 	 */
-	if (acpi_gbl_FADT.pm2_control_block && acpi_gbl_FADT.pm2_control_length) {
+	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
+	     acpi_gbl_FADT.xpm2_control_block.space_id ==
+						 ACPI_ADR_SPACE_SYSTEM_IO &&
+	     acpi_gbl_FADT.xpm2_control_block.address &&
+	     acpi_gbl_FADT.xpm2_control_block.bit_width) ||
+	    (acpi_gbl_FADT.pm2_control_block &&
+	     acpi_gbl_FADT.pm2_control_length)) {
 		pr->flags.bm_control = 1;
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 				  "Bus mastering arbitration control present\n"));
#1 lore raw

Ooops. Sent the wrong/old version of the patch. Len - Please do not apply this I will send a new one.

Thanks,
Venki

Quoted 52 lines

-----Original Message-----
From: Pallipadi, Venkatesh
Sent: Friday, June 08, 2007 1:26 PM
To: Brown, Len
Cc: Moore, Robert; [email protected]
Subject: [PATCH] check xpm2_control_block while setting bm_control

Check both pm2_control_block and cpm2_control_block for bm_control. It should
be better to do this with checking of address from consolidated fadt_info_table[]. But, that will need some changes in acpica tables code.

Index: linux-2.6.22-rc-mm/drivers/acpi/processor_core.c
===================================================================
--- linux-2.6.22-rc-mm.orig/drivers/acpi/processor_core.c

2007-06-07 11:03:56.000000000 -0700
+++ linux-2.6.22-rc-mm/drivers/acpi/processor_core.c	
2007-06-07 11:20:53.000000000 -0700
drivers/acpi/processor_core.c +4 -0
@@ -521,11 +521,22 @@
 
 	acpi_processor_errata(pr);
 
+	if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) {
+		/* FADT rev. 2 */
+		if (acpi_gbl_FADT.xpm_timer_block.space_id !=
+		    ACPI_ADR_SPACE_SYSTEM_IO)
 	/*
 	 * Check to see if we have bus mastering arbitration 

control. This
* is required for proper C3 usage (to maintain cache
coherency).

drivers/acpi/processor_core.c +1 -0
+	 * Check both pm2_control_block and xpm2_control_block
	 */
(quoted diff) +0 -1
-	if (acpi_gbl_FADT.pm2_control_block && 

acpi_gbl_FADT.pm2_control_length) {

drivers/acpi/processor_core.c +3 -0
+	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
+	     acpi_gbl_FADT.xpm2_control_block.space_id ==
+						 

ACPI_ADR_SPACE_SYSTEM_IO &&

drivers/acpi/processor_core.c +4 -0
+	     acpi_gbl_FADT.xpm2_control_block.address &&
+	     acpi_gbl_FADT.xpm2_control_block.bit_width) ||
+	    (acpi_gbl_FADT.pm2_control_block &&
+	     acpi_gbl_FADT.pm2_control_length)) {
		pr->flags.bm_control = 1;
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
				  "Bus mastering arbitration 

control present\n"));

#2 lore raw
Quoted 8 lines · Venkatesh

Ooops. Sent the wrong/old version of the patch. Len - Please do not apply this I will send a new one.

Thanks,
Venki

Below is the proper patch I wanted to send earlier. Thanks,
Venki

Check both pm2_control_block and cpm2_control_block for bm_control. It should be better to do this with checking of address from consolidated fadt_info_table[]. But, that will need some changes in acpica tables.

drivers/acpi/processor_core.c +8 -1
Index: linux-2.6.22-rc-mm/drivers/acpi/processor_core.c
===================================================================
@@ -524,8 +524,15 @@
 	/*
 	 * Check to see if we have bus mastering arbitration control.  This
 	 * is required for proper C3 usage (to maintain cache coherency).
+	 * Check both pm2_control_block and xpm2_control_block
 	 */
-	if (acpi_gbl_FADT.pm2_control_block && acpi_gbl_FADT.pm2_control_length) {
+	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
+	     acpi_gbl_FADT.xpm2_control_block.space_id ==
+						 ACPI_ADR_SPACE_SYSTEM_IO &&
+	     acpi_gbl_FADT.xpm2_control_block.address &&
+	     acpi_gbl_FADT.xpm2_control_block.bit_width) ||
+	    (acpi_gbl_FADT.pm2_control_block &&
+	     acpi_gbl_FADT.pm2_control_length)) {
 		pr->flags.bm_control = 1;
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 				  "Bus mastering arbitration control present\n"));
#3 lore raw

as fadt_info_table[] and acpi_tb_convert_fadt()
will always put the valid address at acpi_gbl_FADT.xpm2_control_block -- that is the only one you need to check, and you don't need to check FADT version.

thanks,
-Len

Quoted 58 lines

-----Original Message-----
From: Pallipadi, Venkatesh
Sent: Friday, June 08, 2007 6:16 PM
To: Pallipadi, Venkatesh
Cc: Brown, Len; Moore, Robert; [email protected]
Subject: Re: [PATCH] check xpm2_control_block while setting bm_control

Quoted 8 lines · Venkatesh

Ooops. Sent the wrong/old version of the patch. Len - Please do not apply this I will send a new one.

Thanks,
Venki

Below is the proper patch I wanted to send earlier. Thanks,
Venki

Check both pm2_control_block and cpm2_control_block for bm_control. It should
be better to do this with checking of address from consolidated fadt_info_table[]. But, that will need some changes in acpica tables.

Index: linux-2.6.22-rc-mm/drivers/acpi/processor_core.c
===================================================================
--- linux-2.6.22-rc-mm.orig/drivers/acpi/processor_core.c

2007-06-07 11:33:00.000000000 -0700
+++ linux-2.6.22-rc-mm/drivers/acpi/processor_core.c	
2007-06-08 14:26:32.000000000 -0700
(quoted diff) +0 -0
@@ -524,8 +524,15 @@
 	/*
 	 * Check to see if we have bus mastering arbitration 

control. This
* is required for proper C3 usage (to maintain cache
coherency).

drivers/acpi/processor_core.c +1 -0
+	 * Check both pm2_control_block and xpm2_control_block
	 */
(quoted diff) +0 -1
-	if (acpi_gbl_FADT.pm2_control_block && 

acpi_gbl_FADT.pm2_control_length) {

drivers/acpi/processor_core.c +3 -0
+	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
+	     acpi_gbl_FADT.xpm2_control_block.space_id ==
+						 

ACPI_ADR_SPACE_SYSTEM_IO &&

drivers/acpi/processor_core.c +4 -0
+	     acpi_gbl_FADT.xpm2_control_block.address &&
+	     acpi_gbl_FADT.xpm2_control_block.bit_width) ||
+	    (acpi_gbl_FADT.pm2_control_block &&
+	     acpi_gbl_FADT.pm2_control_length)) {
		pr->flags.bm_control = 1;
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
				  "Bus mastering arbitration 

control present\n"));