All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org
Cc: Bob Moore <robert.moore@intel.com>,
	Lin Ming <ming.m.lin@intel.com>, Len Brown <len.brown@intel.com>
Subject: [PATCH 82/94] ACPICA: FADT parsing changes and fixes
Date: Fri, 09 Jan 2009 04:27:24 -0500	[thread overview]
Message-ID: <06f5541960d02d5e0ddd8fd5c9a1554d85d94fa9.1231492614.git.len.brown@intel.com> (raw)
In-Reply-To: <1231493256-11678-1-git-send-email-lenb@kernel.org>
In-Reply-To: <c5279dee26c0e8d7c4200993bfc4b540d2469598.1231492606.git.len.brown@intel.com>

From: Bob Moore <robert.moore@intel.com>

1) Update the register lengths for the PM1 event blocks. The
length must be divided by two in order to use these to access
the status registers.
2) Add run-time option to use default register lengths to override a
faulty FADT.
3) Add warning message if any of the X64 address structures contain a length
that does not match the legacy length earlier in the FADT.
4) Move all FADT warning messages into the ValidateFadt function.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/tables/tbfadt.c |  125 +++++++++++++++++++++++++++++++++++-------
 include/acpi/acglobal.h      |    6 ++
 include/acpi/actypes.h       |    8 ++-
 3 files changed, 118 insertions(+), 21 deletions(-)

diff --git a/drivers/acpi/tables/tbfadt.c b/drivers/acpi/tables/tbfadt.c
index 57e089f..b4ce207 100644
--- a/drivers/acpi/tables/tbfadt.c
+++ b/drivers/acpi/tables/tbfadt.c
@@ -51,7 +51,7 @@ ACPI_MODULE_NAME("tbfadt")
 /* Local prototypes */
 static inline void
 acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
-			     u8 byte_width, u64 address);
+			     u8 space_id, u8 byte_width, u64 address);
 
 static void acpi_tb_convert_fadt(void);
 
@@ -125,7 +125,7 @@ static struct acpi_fadt_info fadt_info_table[] = {
 
 static inline void
 acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
-			     u8 byte_width, u64 address)
+			     u8 space_id, u8 byte_width, u64 address)
 {
 
 	/*
@@ -136,10 +136,10 @@ acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
 
 	/* All other fields are byte-wide */
 
-	generic_address->space_id = ACPI_ADR_SPACE_SYSTEM_IO;
-	generic_address->bit_width = byte_width << 3;
+	generic_address->space_id = space_id;
+	generic_address->bit_width = (u8)ACPI_MUL_8(byte_width);
 	generic_address->bit_offset = 0;
-	generic_address->access_width = 0;
+	generic_address->access_width = 0;	/* Access width ANY */
 }
 
 /*******************************************************************************
@@ -226,7 +226,8 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length)
 	 */
 	if (length > sizeof(struct acpi_table_fadt)) {
 		ACPI_WARNING((AE_INFO,
-			      "FADT (revision %u) is longer than ACPI 2.0 version, truncating length 0x%X to 0x%zX",
+			      "FADT (revision %u) is longer than ACPI 2.0 version, "
+			      "truncating length 0x%X to 0x%zX",
 			      table->revision, (unsigned)length,
 			      sizeof(struct acpi_table_fadt)));
 	}
@@ -245,7 +246,6 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length)
 	 * 2) Validate some of the important values within the FADT
 	 */
 	acpi_tb_convert_fadt();
-	acpi_tb_validate_fadt();
 }
 
 /*******************************************************************************
@@ -337,7 +337,11 @@ static void acpi_tb_convert_fadt(void)
 		/* Expand only if the X target is null */
 
 		if (!target->address) {
+
+			/* The space_id is always I/O for the legacy address fields */
+
 			acpi_tb_init_generic_address(target,
+						     ACPI_ADR_SPACE_SYSTEM_IO,
 						     *ACPI_ADD_PTR(u8,
 								   &acpi_gbl_FADT,
 								   fadt_info_table
@@ -350,6 +354,25 @@ static void acpi_tb_convert_fadt(void)
 		}
 	}
 
+	/* Validate FADT values now, before we make any changes */
+
+	acpi_tb_validate_fadt();
+
+	/*
+	 * Get the length of the individual PM1 registers. Each register is
+	 * defined to be the event block length / 2.
+	 */
+	pm1_register_length = (u8)ACPI_DIV_2(acpi_gbl_FADT.pm1_event_length);
+
+	/*
+	 * Adjust the lengths of the PM1 Event Blocks so that they can be used to
+	 * access the PM1 status register(s).
+	 */
+	acpi_gbl_FADT.xpm1a_event_block.bit_width =
+	    (u8)ACPI_MUL_8(pm1_register_length);
+	acpi_gbl_FADT.xpm1b_event_block.bit_width =
+	    (u8)ACPI_MUL_8(pm1_register_length);
+
 	/*
 	 * Calculate separate GAS structs for the PM1 Enable registers.
 	 * These addresses do not appear (directly) in the FADT, so it is
@@ -370,11 +393,11 @@ static void acpi_tb_convert_fadt(void)
 		       " PM1_EVT_LEN (%u)\n",
 		       acpi_gbl_FADT.xpm1a_event_block.bit_width,
 		       acpi_gbl_FADT.pm1_event_length);
-	pm1_register_length = (u8) ACPI_DIV_2(acpi_gbl_FADT.pm1_event_length);
 
 	/* The PM1A register block is required */
 
 	acpi_tb_init_generic_address(&acpi_gbl_xpm1a_enable,
+				     acpi_gbl_FADT.xpm1a_event_block.space_id,
 				     pm1_register_length,
 				     (acpi_gbl_FADT.xpm1a_event_block.address +
 				      pm1_register_length));
@@ -393,6 +416,7 @@ static void acpi_tb_convert_fadt(void)
 			       acpi_gbl_FADT.xpm1b_event_block.bit_width,
 			       acpi_gbl_FADT.pm1_event_length);
 		acpi_tb_init_generic_address(&acpi_gbl_xpm1b_enable,
+					     acpi_gbl_FADT.xpm1b_event_block.space_id,
 					     pm1_register_length,
 					     (acpi_gbl_FADT.xpm1b_event_block.
 					      address + pm1_register_length));
@@ -401,6 +425,30 @@ static void acpi_tb_convert_fadt(void)
 		    acpi_gbl_FADT.xpm1b_event_block.space_id;
 
 	}
+
+	if (acpi_gbl_use_default_register_widths) {
+		/*
+		 * Optionally, use the default sizes for the ACPI registers.
+		 * Some FADTs do not have the correct length(s).
+		 *
+		 * Note: Xpm1a_event_block and Xpm1b_event_block are used to access the PM1
+		 * status registers. The PM1 enable registers are created above.
+		 */
+		acpi_gbl_xpm1a_enable.bit_width = ACPI_PM1_REGISTER_WIDTH;
+		acpi_gbl_xpm1b_enable.bit_width = ACPI_PM1_REGISTER_WIDTH;
+
+		acpi_gbl_FADT.xpm1a_event_block.bit_width =
+		    ACPI_PM1_REGISTER_WIDTH;
+		acpi_gbl_FADT.xpm1b_event_block.bit_width =
+		    ACPI_PM1_REGISTER_WIDTH;
+		acpi_gbl_FADT.xpm1a_control_block.bit_width =
+		    ACPI_PM1_REGISTER_WIDTH;
+		acpi_gbl_FADT.xpm1b_control_block.bit_width =
+		    ACPI_PM1_REGISTER_WIDTH;
+		acpi_gbl_FADT.xpm2_control_block.bit_width =
+		    ACPI_PM2_REGISTER_WIDTH;
+		acpi_gbl_FADT.xpm_timer_block.bit_width = ACPI_PM_TIMER_WIDTH;
+	}
 }
 
 /******************************************************************************
@@ -425,26 +473,63 @@ static void acpi_tb_convert_fadt(void)
 
 static void acpi_tb_validate_fadt(void)
 {
+	char *name;
 	u32 *address32;
 	struct acpi_generic_address *address64;
 	u8 length;
 	u32 i;
 
-	/* Examine all of the 64-bit extended address fields (X fields) */
+	/*
+	 * Check for FACS and DSDT address mismatches. An address mismatch between
+	 * the 32-bit and 64-bit address fields (FIRMWARE_CTRL/X_FIRMWARE_CTRL and
+	 * DSDT/X_DSDT) would indicate the presence of two FACS or two DSDT tables.
+	 */
+	if (acpi_gbl_FADT.facs &&
+	    (acpi_gbl_FADT.Xfacs != (u64) acpi_gbl_FADT.facs)) {
+		ACPI_WARNING((AE_INFO,
+			      "32/64 FACS address mismatch in FADT - "
+			      "two FACS tables! %8.8X/%8.8X%8.8X",
+			      acpi_gbl_FADT.facs,
+			      ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
+	}
 
-	for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) {
+	if (acpi_gbl_FADT.dsdt &&
+	    (acpi_gbl_FADT.Xdsdt != (u64) acpi_gbl_FADT.dsdt)) {
+		ACPI_WARNING((AE_INFO,
+			      "32/64 DSDT address mismatch in FADT - "
+			      "two DSDT tables! %8.8X/%8.8X%8.8X",
+			      acpi_gbl_FADT.dsdt,
+			      ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
+	}
 
-		/* Generate pointers to the 32-bit and 64-bit addresses and get the length */
+	/* Examine all of the 64-bit extended address fields (X fields) */
 
-		address64 =
-		    ACPI_ADD_PTR(struct acpi_generic_address, &acpi_gbl_FADT,
-				 fadt_info_table[i].target);
+	for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) {
+		/*
+		 * Generate pointers to the 32-bit and 64-bit addresses, get the
+		 * register length (width), and the register name
+		 */
+		address64 = ACPI_ADD_PTR(struct acpi_generic_address,
+					 &acpi_gbl_FADT,
+					 fadt_info_table[i].target);
 		address32 =
 		    ACPI_ADD_PTR(u32, &acpi_gbl_FADT,
 				 fadt_info_table[i].source);
 		length =
 		    *ACPI_ADD_PTR(u8, &acpi_gbl_FADT,
 				  fadt_info_table[i].length);
+		name = fadt_info_table[i].name;
+
+		/*
+		 * For each extended field, check for length mismatch between the
+		 * legacy length field and the corresonding 64-bit X length field.
+		 */
+		if (address64 && (address64->bit_width != ACPI_MUL_8(length))) {
+			ACPI_WARNING((AE_INFO,
+				      "32/64X bit length mismatch in %s: %d/%d",
+				      name, ACPI_MUL_8(length),
+				      address64->bit_width));
+		}
 
 		if (fadt_info_table[i].type & ACPI_FADT_REQUIRED) {
 			/*
@@ -453,8 +538,8 @@ static void acpi_tb_validate_fadt(void)
 			 */
 			if (!address64->address || !length) {
 				ACPI_ERROR((AE_INFO,
-					    "Required field \"%s\" has zero address and/or length: %8.8X%8.8X/%X",
-					    fadt_info_table[i].name,
+					    "Required field %s has zero address and/or length: %8.8X%8.8X/%X",
+					    name,
 					    ACPI_FORMAT_UINT64(address64->
 							       address),
 					    length));
@@ -467,8 +552,8 @@ static void acpi_tb_validate_fadt(void)
 			if ((address64->address && !length)
 			    || (!address64->address && length)) {
 				ACPI_WARNING((AE_INFO,
-					      "Optional field \"%s\" has zero address or length: %8.8X%8.8X/%X",
-					      fadt_info_table[i].name,
+					      "Optional field %s has zero address or length: %8.8X%8.8X/%X",
+					      name,
 					      ACPI_FORMAT_UINT64(address64->
 								 address),
 					      length));
@@ -480,8 +565,8 @@ static void acpi_tb_validate_fadt(void)
 		if (address64->address && *address32 &&
 		    (address64->address != (u64) * address32)) {
 			ACPI_ERROR((AE_INFO,
-				    "32/64X address mismatch in \"%s\": [%8.8X] [%8.8X%8.8X], using 64X",
-				    fadt_info_table[i].name, *address32,
+				    "32/64X address mismatch in %s: [%8.8X] [%8.8X%8.8X], using 64X",
+				    name, *address32,
 				    ACPI_FORMAT_UINT64(address64->address)));
 		}
 	}
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h
index 78f3c14..55eb5d6 100644
--- a/include/acpi/acglobal.h
+++ b/include/acpi/acglobal.h
@@ -102,6 +102,12 @@ ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_create_osi_method, TRUE);
  */
 ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_leave_wake_gpes_disabled, TRUE);
 
+/*
+ * Optionally use default values for the ACPI register widths. Set this to
+ * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
+ */
+ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, FALSE);
+
 /*****************************************************************************
  *
  * Debug support
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 24b2cef..03744d2 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -309,10 +309,16 @@ typedef u32 acpi_physical_address;
  *
  *****************************************************************************/
 
-/* Number of distinct GPE register blocks and register width */
+/* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */
 
 #define ACPI_MAX_GPE_BLOCKS             2
+
+/* Default ACPI register widths */
+
 #define ACPI_GPE_REGISTER_WIDTH         8
+#define ACPI_PM1_REGISTER_WIDTH         16
+#define ACPI_PM2_REGISTER_WIDTH         8
+#define ACPI_PM_TIMER_WIDTH             32
 
 /* Names within the namespace are 4 bytes long */
 
-- 
1.5.6.6


  parent reply	other threads:[~2009-01-09  9:28 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-09  9:26 ACPI & Suspend related patches for 2.6.29 Len Brown
2009-01-09  9:26 ` [PATCH 01/94] ACPI: EC: Add some basic check for ECDT data Len Brown
2009-01-09  9:26   ` [PATCH 02/94] ACPI: EC: fix compilation warning Len Brown
2009-01-09  9:26   ` [PATCH 03/94] /proc/acpi/alarm: handle day-of-month wraparound on readback Len Brown
2009-01-09  9:26   ` [PATCH 04/94] ACPI: video: Fix reversed brightness behavior on ThinkPad SL series Len Brown
2009-01-09  9:26   ` [PATCH 05/94] Hibernate: Call platform_begin before swsusp_shrink_memory Len Brown
2009-01-09  9:26   ` [PATCH 06/94] ACPI hibernate: Add a mechanism to save/restore ACPI NVS memory Len Brown
2009-01-09  9:26   ` [PATCH 07/94] x86 hibernate: Mark ACPI NVS memory region at startup Len Brown
2009-01-09  9:26   ` [PATCH 08/94] ACPI hibernate: Introduce new kernel parameter acpi_sleep=s4_nonvs Len Brown
2009-01-09  9:26   ` [PATCH 09/94] Hibernate: Do not oops on resume if image data are incorrect Len Brown
2009-01-09  9:26   ` [PATCH 10/94] Hibernate: Take overlapping zones into account (rev. 2) Len Brown
2009-01-09  9:26   ` [PATCH 11/94] Hibernate: Replace unnecessary evaluation of pfn_to_page() Len Brown
2009-01-09  9:26   ` [PATCH 12/94] drivers/misc/Makefile, Kconfig: cleanup Len Brown
2009-01-09  9:26   ` [PATCH 13/94] create drivers/platform/x86/ from drivers/misc/ Len Brown
2009-01-09  9:26   ` [PATCH 14/94] ACPI: move wmi, asus_acpi, toshiba_acpi to drivers/platform/x86 Len Brown
2009-01-09  9:26   ` [PATCH 15/94] doc: fix kernel-parameters.txt formatting Len Brown
2009-01-09  9:26   ` [PATCH 16/94] Newly inserted battery might differ from one just removed, so Len Brown
2009-01-09  9:26   ` [PATCH 17/94] ACPI: disable MPS when NO APIC-table found Len Brown
2009-01-09  9:26   ` [PATCH 18/94] eeepc-laptop: use select and not depends on Len Brown
2009-01-09  9:26   ` [PATCH 19/94] ACPICA: Fix several warnings under gcc 4 compiler Len Brown
2009-01-09  9:26   ` [PATCH 20/94] ACPICA: Update FACS waking vector interfaces Len Brown
2009-01-09  9:26   ` [PATCH 21/94] ACPICA: Fix possible memory leak on error in parser Len Brown
2009-01-09  9:26   ` [PATCH 22/94] ACPICA: Optimize execution of AML While loops Len Brown
2009-01-09  9:26   ` [PATCH 23/94] ACPICA: Add a mechanism to escape infinite AML While() loops Len Brown
2009-01-09  9:26   ` [PATCH 24/94] ACPICA: Update debug output for IndexField I/O Len Brown
2009-01-09  9:26   ` [PATCH 25/94] ACPICA: Fix namestring for the SystemCMOS address space Len Brown
2009-01-09  9:26   ` [PATCH 26/94] ACPICA: Emit warning if two FACS or DSDT tables found in the FADT Len Brown
2009-01-09  9:26   ` [PATCH 27/94] ACPICA: Add global pointer for FACS table to simplify FACS access Len Brown
2009-01-09  9:26   ` [PATCH 28/94] ACPICA: Reformat comments, no functional changes Len Brown
2009-01-09  9:26   ` [PATCH 29/94] ACPICA: Add support to externally execute _OSI method Len Brown
2009-01-09  9:26   ` [PATCH 30/94] ACPICA: Remove references to obsolete ACPI_DUMP_APP Len Brown
2009-01-09  9:26   ` [PATCH 31/94] ACPICA: Fix to allow aliases within ASL namepaths Len Brown
2009-01-09  9:26   ` [PATCH 32/94] ACPICA: Allow multiple backslash prefix in namepaths Len Brown
2009-01-09  9:26   ` [PATCH 33/94] ACPICA: Add Buffer->String conversion for predefined methods Len Brown
2009-01-09  9:26   ` [PATCH 34/94] ACPICA: Consolidate method arg count validation code Len Brown
2009-01-09  9:26   ` [PATCH 35/94] ACPICA: Enhance implicit return mechanism Len Brown
2009-01-09  9:26   ` [PATCH 36/94] ACPICA: Update version to 20081031 Len Brown
2009-01-09  9:26   ` [PATCH 37/94] cpuidle: Add decaying history logic to menu idle predictor Len Brown
2009-01-09  9:26   ` [PATCH 38/94] ACPI: Do not modify SCI_EN directly Len Brown
2009-01-09  9:26   ` [PATCH 39/94] ACPI: PCI: use conventional PCI address format Len Brown
2009-01-09  9:26   ` [PATCH 40/94] ACPI: PCI: remove unnecessary null pointer checks Len Brown
2009-01-09  9:26   ` [PATCH 41/94] ACPI: PCI: simplify buffer management for evaluating _PRT Len Brown
2009-01-09  9:26   ` [PATCH 42/94] ACPI: PCI: ignore _PRT function information Len Brown
2009-01-09  9:26   ` [PATCH 43/94] ACPI: PCI: fix GSI/IRQ naming confusion Len Brown
2009-01-09  9:26   ` [PATCH 44/94] ACPI: PCI: move struct acpi_prt_entry declaration out of public header file Len Brown
2009-01-09  9:26   ` [PATCH 45/94] ACPI: PCI: add a helper to convert _PRT INTx pin number to name Len Brown
2009-01-09  9:26   ` [PATCH 46/94] ACPI: PCI: always use the PCI INTx pin values, not the _PRT ones Len Brown
2009-01-09  9:26   ` [PATCH 47/94] ACPI: PCI: use 1-based encoding for _PRT quirks Len Brown
2009-01-09  9:26   ` [PATCH 48/94] ACPI: PCI: lookup _PRT entry by PCI dev and pin, not segment/bus/dev/pin Len Brown
2009-01-09  9:26   ` [PATCH 49/94] ACPI: PCI: tweak _PRT lookup debug Len Brown
2009-01-09  9:26   ` [PATCH 50/94] ACPI: PCI: remove callback from acpi_pci_irq_lookup & acpi_pci_irq_derive Len Brown
2009-01-09  9:26   ` [PATCH 51/94] ACPI: PCI: use positive logic to simplify code Len Brown
2009-01-09  9:26   ` [PATCH 52/94] ACPI: PCI: follow typical PCI INTx swizzling pattern Len Brown
2009-01-09  9:26   ` [PATCH 53/94] ACPI: PCI: combine lookup and derive Len Brown
2009-01-09  9:26   ` [PATCH 54/94] ACPI: PCI: simplify list of _PRT entries Len Brown
2009-01-09  9:26   ` [PATCH 55/94] ACPI: PCI: simplify struct acpi_prt_entry Len Brown
2009-01-09  9:26   ` [PATCH 56/94] ACPI: PCI: expand acpi_pci_allocate_irq() and acpi_pci_free_irq() inline Len Brown
2009-01-09  9:26   ` [PATCH 57/94] ACPI: PCI: whitespace and useless initialization cleanup Len Brown
2009-01-09  9:27   ` [PATCH 58/94] ACPI: PCI: add HP copyright Len Brown
2009-01-09  9:27   ` [PATCH 59/94] ACPI: simplify buffer management for acpi_pci_bind() etc Len Brown
2009-01-09  9:27   ` [PATCH 60/94] ACPI: ec.c, pci_link.c, video_detec.c: static Len Brown
2009-01-09  9:27   ` [PATCH 61/94] video: always update the brightness when poking "brightness" Len Brown
2009-01-09  9:27   ` [PATCH 62/94] ACPI: osl.c: replace return_ACPI_STATUS with return Len Brown
2009-01-09  9:27   ` [PATCH 63/94] ACPI: ec.c: call acpi_get_name to get node name Len Brown
2009-01-09  9:27   ` [PATCH 64/94] ACPI: proc.c: remove ACPI_FUNCTION_TRACE Len Brown
2009-01-09  9:27   ` [PATCH 65/94] ACPI: wakeup.c: " Len Brown
2009-01-09  9:27   ` [PATCH 66/94] ACPICA: New: acpi_get_gpe_device interface Len Brown
2009-01-09  9:27   ` [PATCH 67/94] ACPICA: New: Public GPE group enable/disable interfaces Len Brown
2009-01-09  9:27   ` [PATCH 68/94] ACPI: main.c: use new public " Len Brown
2009-01-09  9:27   ` [PATCH 69/94] ACPI: sony-laptop.c: call acpi_get_object_info to get node info Len Brown
2009-01-09  9:27   ` [PATCH 70/94] ACPI: power.c: call acpi_get_name to get node name Len Brown
2009-01-09  9:27   ` [PATCH 71/94] ACPI: panasonic-laptop.c: remove ACPI_FUNCTION_TRACE Len Brown
2009-01-09  9:27   ` [PATCH 72/94] ACPI: io_acpi_init.c: call acpi_get_name to get node fullname Len Brown
2009-01-09  9:27   ` [PATCH 73/94] ACPI: io_common.c: call acpi_get_table to avoid using ACPI_SIG_DSDT Len Brown
2009-01-09  9:27   ` [PATCH 74/94] ACPICA: New: acpi_read and acpi_write public interfaces Len Brown
2009-01-09  9:27   ` [PATCH 75/94] ACPICA: Move all public H/W interfaces to new hwxface Len Brown
2009-01-09  9:27   ` [PATCH 76/94] ACPICA: New: acpi_reset interface - write to reset register Len Brown
2009-01-09  9:27   ` [PATCH 77/94] ACPI: reboot.c: use new acpi_reset interface Len Brown
2009-01-09  9:27   ` [PATCH 78/94] ACPI: remove private acpica headers from driver files Len Brown
2009-01-09  9:27   ` [PATCH 80/94] ACPICA: Fixes for various ACPI data tables Len Brown
2009-01-09  9:27   ` [PATCH 81/94] ACPICA: Add ACPI_MUTEX_TYPE configuration option Len Brown
2009-01-09  9:27   ` Len Brown [this message]
2009-01-09  9:27   ` [PATCH 83/94] ACPICA: FADT: set acpi_gbl_use_default_register_widths to TRUE by default Len Brown
2009-01-09  9:27   ` [PATCH 84/94] ACPICA: FADT: Update error msgs for consistency Len Brown
2009-01-09  9:27   ` [PATCH 85/94] ACPICA: Update version to 20081204 Len Brown
2009-01-09  9:27   ` [PATCH 86/94] ACPICA: delete acdisasm.h Len Brown
2009-01-09  9:27   ` [PATCH 87/94] ACPICA: delete utcache.c Len Brown
2009-01-09  9:27   ` [PATCH 88/94] fujitsu-laptop: Add BL power, LED control and radio state information Len Brown
2009-01-09  9:27   ` [PATCH 89/94] fujitsu-laptop: Simplify SBLL/SBL2 backlight handling Len Brown
2009-01-09  9:27   ` [PATCH 90/94] ACPI: Avoid array address overflow when _CST MWAIT hint bits are set Len Brown
2009-01-09  9:27   ` [PATCH 91/94] ACPI : Use RSDT instead of XSDT by adding boot option of "acpi=rsdt" Len Brown
2009-01-09  9:27   ` [PATCH 92/94] ACPI: fix build warning Len Brown
2009-01-09  9:27   ` [PATCH 93/94] ACPICA: create acpica/ directory Len Brown
2009-01-09  9:27   ` [PATCH 94/94] ACPICA: hide private headers Len Brown
2009-01-09 12:06 ` ACPI & Suspend related patches for 2.6.29 Rafael J. Wysocki
2009-01-09 20:04   ` Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=06f5541960d02d5e0ddd8fd5c9a1554d85d94fa9.1231492614.git.len.brown@intel.com \
    --to=lenb@kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=ming.m.lin@intel.com \
    --cc=robert.moore@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.