All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org
Cc: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>,
	Len Brown <len.brown@intel.com>
Subject: [PATCH 99/140] ACPICA: Remove duplicate table manager
Date: Wed,  7 Feb 2007 13:51:53 -0500	[thread overview]
Message-ID: <11708745132350-git-send-email-lenb@kernel.org> (raw)
In-Reply-To: <1170874512441-git-send-email-lenb@kernel.org>
In-Reply-To: <9e89dde2b063ca73fcdc9244fe68e2dea32c5088.1170873816.git.len.brown@intel.com>

From: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>

Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/i386/kernel/acpi/boot.c       |   40 ++--
 arch/i386/kernel/acpi/earlyquirk.c |    4 +-
 arch/i386/mach-es7000/es7000.h     |    9 -
 arch/i386/mach-es7000/es7000plat.c |   53 +----
 arch/i386/pci/mmconfig.c           |    2 +-
 drivers/acpi/tables.c              |  396 ++----------------------------------
 include/linux/acpi.h               |    7 +-
 7 files changed, 50 insertions(+), 461 deletions(-)

diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 9adabc4..543eac5 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -169,16 +169,16 @@ char *__acpi_map_table(unsigned long phys, unsigned long size)
 struct acpi_table_mcfg_config *pci_mmcfg_config;
 int pci_mmcfg_config_num;
 
-int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
+int __init acpi_parse_mcfg(struct acpi_table_header *header)
 {
 	struct acpi_table_mcfg *mcfg;
 	unsigned long i;
 	int config_size;
 
-	if (!phys_addr || !size)
+	if (!header)
 		return -EINVAL;
 
-	mcfg = (struct acpi_table_mcfg *)__acpi_map_table(phys_addr, size);
+	mcfg = (struct acpi_table_mcfg *)header;
 	if (!mcfg) {
 		printk(KERN_WARNING PREFIX "Unable to map MCFG\n");
 		return -ENODEV;
@@ -186,7 +186,7 @@ int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
 
 	/* how many config structures do we have */
 	pci_mmcfg_config_num = 0;
-	i = size - sizeof(struct acpi_table_mcfg);
+	i = header->length - sizeof(struct acpi_table_mcfg);
 	while (i >= sizeof(struct acpi_table_mcfg_config)) {
 		++pci_mmcfg_config_num;
 		i -= sizeof(struct acpi_table_mcfg_config);
@@ -220,14 +220,14 @@ int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
 #endif				/* CONFIG_PCI_MMCONFIG */
 
 #ifdef CONFIG_X86_LOCAL_APIC
-static int __init acpi_parse_madt(unsigned long phys_addr, unsigned long size)
+static int __init acpi_parse_madt(struct acpi_table_header *header)
 {
 	struct acpi_table_madt *madt = NULL;
 
-	if (!phys_addr || !size || !cpu_has_apic)
+	if (!header|| !cpu_has_apic)
 		return -EINVAL;
 
-	madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
+	madt = (struct acpi_table_madt *)header;
 	if (!madt) {
 		printk(KERN_WARNING PREFIX "Unable to map MADT\n");
 		return -ENODEV;
@@ -619,14 +619,14 @@ acpi_scan_rsdp(unsigned long start, unsigned long length)
 	return 0;
 }
 
-static int __init acpi_parse_sbf(unsigned long phys_addr, unsigned long size)
+static int __init acpi_parse_sbf(struct acpi_table_header *header)
 {
 	struct acpi_table_sbf *sb;
 
-	if (!phys_addr || !size)
+	if (!header)
 		return -EINVAL;
 
-	sb = (struct acpi_table_sbf *)__acpi_map_table(phys_addr, size);
+	sb = (struct acpi_table_sbf *)header;
 	if (!sb) {
 		printk(KERN_WARNING PREFIX "Unable to map SBF\n");
 		return -ENODEV;
@@ -639,16 +639,16 @@ static int __init acpi_parse_sbf(unsigned long phys_addr, unsigned long size)
 
 #ifdef CONFIG_HPET_TIMER
 
-static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
+static int __init acpi_parse_hpet(struct acpi_table_header *header)
 {
 	struct acpi_table_hpet *hpet_tbl;
 	struct resource *hpet_res;
 	resource_size_t res_start;
 
-	if (!phys || !size)
+	if (!header)
 		return -EINVAL;
 
-	hpet_tbl = (struct acpi_table_hpet *)__acpi_map_table(phys, size);
+	hpet_tbl = (struct acpi_table_hpet *)header;
 	if (!hpet_tbl) {
 		printk(KERN_WARNING PREFIX "Unable to map HPET\n");
 		return -ENODEV;
@@ -707,11 +707,11 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
 extern u32 pmtmr_ioport;
 #endif
 
-static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
+static int __init acpi_parse_fadt(struct acpi_table_header *header)
 {
 	struct fadt_descriptor *fadt = NULL;
 
-	fadt = (struct fadt_descriptor *)__acpi_map_table(phys, size);
+	fadt = (struct fadt_descriptor *)header;
 	if (!fadt) {
 		printk(KERN_WARNING PREFIX "Unable to map FADT\n");
 		return 0;
@@ -901,7 +901,7 @@ static void __init acpi_process_madt(void)
 #ifdef CONFIG_X86_LOCAL_APIC
 	int count, error;
 
-	count = acpi_table_parse(ACPI_APIC, acpi_parse_madt);
+	count = acpi_table_parse("APIC", acpi_parse_madt);
 	if (count >= 1) {
 
 		/*
@@ -1197,7 +1197,7 @@ int __init acpi_boot_table_init(void)
 		return error;
 	}
 
-	acpi_table_parse(ACPI_BOOT, acpi_parse_sbf);
+	acpi_table_parse("BOOT", acpi_parse_sbf);
 
 	/*
 	 * blacklist may disable ACPI entirely
@@ -1225,19 +1225,19 @@ int __init acpi_boot_init(void)
 	if (acpi_disabled && !acpi_ht)
 		return 1;
 
-	acpi_table_parse(ACPI_BOOT, acpi_parse_sbf);
+	acpi_table_parse("BOOT", acpi_parse_sbf);
 
 	/*
 	 * set sci_int and PM timer address
 	 */
-	acpi_table_parse(ACPI_FADT, acpi_parse_fadt);
+	acpi_table_parse(ACPI_SIG_FADT, acpi_parse_fadt);
 
 	/*
 	 * Process the Multiple APIC Description Table (MADT), if present
 	 */
 	acpi_process_madt();
 
-	acpi_table_parse(ACPI_HPET, acpi_parse_hpet);
+	acpi_table_parse("HPET", acpi_parse_hpet);
 
 	return 0;
 }
diff --git a/arch/i386/kernel/acpi/earlyquirk.c b/arch/i386/kernel/acpi/earlyquirk.c
index 4b60af7..4261c85 100644
--- a/arch/i386/kernel/acpi/earlyquirk.c
+++ b/arch/i386/kernel/acpi/earlyquirk.c
@@ -16,7 +16,7 @@
 
 static int nvidia_hpet_detected __initdata;
 
-static int __init nvidia_hpet_check(unsigned long phys, unsigned long size)
+static int __init nvidia_hpet_check(struct acpi_table_header *header)
 {
 	nvidia_hpet_detected = 1;
 	return 0;
@@ -30,7 +30,7 @@ static int __init check_bridge(int vendor, int device)
 	   is enabled. */
 	if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) {
 		nvidia_hpet_detected = 0;
-		acpi_table_parse(ACPI_HPET, nvidia_hpet_check);
+		acpi_table_parse("HPET", nvidia_hpet_check);
 		if (nvidia_hpet_detected == 0) {
 			acpi_skip_timer_override = 1;
 			  printk(KERN_INFO "Nvidia board "
diff --git a/arch/i386/mach-es7000/es7000.h b/arch/i386/mach-es7000/es7000.h
index 80566ca..c8d5aa1 100644
--- a/arch/i386/mach-es7000/es7000.h
+++ b/arch/i386/mach-es7000/es7000.h
@@ -84,15 +84,6 @@ struct es7000_oem_table {
 };
 
 #ifdef CONFIG_ACPI
-struct acpi_table_sdt {
-	unsigned long pa;
-	unsigned long count;
-	struct {
-		unsigned long pa;
-		enum acpi_table_id id;
-		unsigned long size;
-	}	entry[50];
-};
 
 struct oem_table {
 	struct acpi_table_header Header;
diff --git a/arch/i386/mach-es7000/es7000plat.c b/arch/i386/mach-es7000/es7000plat.c
index 3d0fc85..9be6cea 100644
--- a/arch/i386/mach-es7000/es7000plat.c
+++ b/arch/i386/mach-es7000/es7000plat.c
@@ -160,51 +160,14 @@ parse_unisys_oem (char *oemptr)
 int __init
 find_unisys_acpi_oem_table(unsigned long *oem_addr)
 {
-	struct acpi_table_rsdp		*rsdp = NULL;
-	unsigned long			rsdp_phys = 0;
-	struct acpi_table_header 	*header = NULL;
-	int				i;
-	struct acpi_table_sdt		sdt;
-
-	rsdp_phys = acpi_find_rsdp();
-	rsdp = __va(rsdp_phys);
-	if (rsdp->rsdt_address) {
-		struct acpi_table_rsdt	*mapped_rsdt = NULL;
-		sdt.pa = rsdp->rsdt_address;
-
-		header = (struct acpi_table_header *)
-			__acpi_map_table(sdt.pa, sizeof(struct acpi_table_header));
-		if (!header)
-			return -ENODEV;
-
-		sdt.count = (header->length - sizeof(struct acpi_table_header)) >> 3;
-		mapped_rsdt = (struct acpi_table_rsdt *)
-			__acpi_map_table(sdt.pa, header->length);
-		if (!mapped_rsdt)
-			return -ENODEV;
-
-		header = &mapped_rsdt->header;
-
-		for (i = 0; i < sdt.count; i++)
-			sdt.entry[i].pa = (unsigned long) mapped_rsdt->entry[i];
-	};
-	for (i = 0; i < sdt.count; i++) {
-
-		header = (struct acpi_table_header *)
-			__acpi_map_table(sdt.entry[i].pa,
-				sizeof(struct acpi_table_header));
-		if (!header)
-			continue;
-		if (!strncmp((char *) &header->signature, "OEM1", 4)) {
-			if (!strncmp((char *) &header->oem_id, "UNISYS", 6)) {
-				void *addr;
-				struct oem_table *t;
-				acpi_table_print(header, sdt.entry[i].pa);
-				t = (struct oem_table *) __acpi_map_table(sdt.entry[i].pa, header->length);
-				addr = (void *) __acpi_map_table(t->OEMTableAddr, t->OEMTableSize);
-				*oem_addr = (unsigned long) addr;
-				return 0;
-			}
+	struct acpi_table_header *header = NULL;
+	int i = 0;
+	while (ACPI_SUCCESS(acpi_get_table("OEM1", i++, &header))) {
+		if (!memcmp((char *) &header->oem_id, "UNISYS", 6)) {
+			struct oem_table *t = (struct oem_table *)header;
+			*oem_addr = (unsigned long)__acpi_map_table(t->OEMTableAddr,
+								    t->OEMTableSize);
+			return 0;
 		}
 	}
 	return -1;
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c
index e2616a2..80522e3 100644
--- a/arch/i386/pci/mmconfig.c
+++ b/arch/i386/pci/mmconfig.c
@@ -199,7 +199,7 @@ void __init pci_mmcfg_init(int type)
 	if ((pci_probe & PCI_PROBE_MMCONF) == 0)
 		return;
 
-	acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg);
+	acpi_table_parse("MCFG", acpi_parse_mcfg);
 	if ((pci_mmcfg_config_num == 0) ||
 	    (pci_mmcfg_config == NULL) ||
 	    (pci_mmcfg_config[0].base_address == 0))
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index 5bb1431..962ff29 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -38,71 +38,11 @@
 
 #define ACPI_MAX_TABLES		128
 
-static char *acpi_table_signatures[ACPI_TABLE_COUNT] = {
-	[ACPI_TABLE_UNKNOWN] = "????",
-	[ACPI_APIC] = "APIC",
-	[ACPI_BOOT] = "BOOT",
-	[ACPI_DBGP] = "DBGP",
-	[ACPI_DSDT] = "DSDT",
-	[ACPI_ECDT] = "ECDT",
-	[ACPI_ETDT] = "ETDT",
-	[ACPI_FADT] = "FACP",
-	[ACPI_FACS] = "FACS",
-	[ACPI_OEMX] = "OEM",
-	[ACPI_PSDT] = "PSDT",
-	[ACPI_SBST] = "SBST",
-	[ACPI_SLIT] = "SLIT",
-	[ACPI_SPCR] = "SPCR",
-	[ACPI_SRAT] = "SRAT",
-	[ACPI_SSDT] = "SSDT",
-	[ACPI_SPMI] = "SPMI",
-	[ACPI_HPET] = "HPET",
-	[ACPI_MCFG] = "MCFG",
-};
-
 static char *mps_inti_flags_polarity[] = { "dfl", "high", "res", "low" };
 static char *mps_inti_flags_trigger[] = { "dfl", "edge", "res", "level" };
 
-/* System Description Table (RSDT/XSDT) */
-struct acpi_table_sdt {
-	unsigned long pa;
-	enum acpi_table_id id;
-	unsigned long size;
-} __attribute__ ((packed));
-
-static unsigned long sdt_pa;	/* Physical Address */
-static unsigned long sdt_count;	/* Table count */
-
-static struct acpi_table_sdt sdt_entry[ACPI_MAX_TABLES] __initdata;
 static struct acpi_table_desc initial_tables[ACPI_MAX_TABLES] __initdata;
 
-void acpi_table_print(struct acpi_table_header *header, unsigned long phys_addr)
-{
-	char *name = NULL;
-
-	if (!header)
-		return;
-
-	/* Some table signatures aren't good table names */
-
-	if (!strncmp((char *)&header->signature,
-		     acpi_table_signatures[ACPI_APIC],
-		     sizeof(header->signature))) {
-		name = "MADT";
-	} else if (!strncmp((char *)&header->signature,
-			    acpi_table_signatures[ACPI_FADT],
-			    sizeof(header->signature))) {
-		name = "FADT";
-	} else
-		name = header->signature;
-
-	printk(KERN_DEBUG PREFIX
-	       "%.4s (v%3.3d %6.6s %8.8s 0x%08x %.4s 0x%08x) @ 0x%p\n", name,
-	       header->revision, header->oem_id, header->oem_table_id,
-	       header->oem_revision, header->asl_compiler_id,
-	       header->asl_compiler_revision, (void *)phys_addr);
-}
-
 void acpi_table_print_madt_entry(acpi_table_entry_header * header)
 {
 	if (!header)
@@ -226,123 +166,32 @@ void acpi_table_print_madt_entry(acpi_table_entry_header * header)
 	}
 }
 
-static int
-acpi_table_compute_checksum(void *table_pointer, unsigned long length)
-{
-	u8 *p = table_pointer;
-	unsigned long remains = length;
-	unsigned long sum = 0;
-
-	if (!p || !length)
-		return -EINVAL;
-
-	while (remains--)
-		sum += *p++;
-
-	return (sum & 0xFF);
-}
-
-/*
- * acpi_get_table_header_early()
- * for acpi_blacklisted(), acpi_table_get_sdt()
- */
-int __init
-acpi_get_table_header_early(enum acpi_table_id id,
-			    struct acpi_table_header **header)
-{
-	unsigned int i;
-	enum acpi_table_id temp_id;
-
-	/* DSDT is different from the rest */
-	if (id == ACPI_DSDT)
-		temp_id = ACPI_FADT;
-	else
-		temp_id = id;
-
-	/* Locate the table. */
-
-	for (i = 0; i < sdt_count; i++) {
-		if (sdt_entry[i].id != temp_id)
-			continue;
-		*header = (void *)
-		    __acpi_map_table(sdt_entry[i].pa, sdt_entry[i].size);
-		if (!*header) {
-			printk(KERN_WARNING PREFIX "Unable to map %s\n",
-			       acpi_table_signatures[temp_id]);
-			return -ENODEV;
-		}
-		break;
-	}
-
-	if (!*header) {
-		printk(KERN_WARNING PREFIX "%s not present\n",
-		       acpi_table_signatures[id]);
-		return -ENODEV;
-	}
-
-	/* Map the DSDT header via the pointer in the FADT */
-	if (id == ACPI_DSDT) {
-		struct fadt_descriptor *fadt =
-		    (struct fadt_descriptor *)*header;
-
-		if (fadt->header.revision == 3 && fadt->Xdsdt) {
-			*header = (void *)__acpi_map_table(fadt->Xdsdt,
-							   sizeof(struct
-								  acpi_table_header));
-		} else if (fadt->dsdt) {
-			*header = (void *)__acpi_map_table(fadt->dsdt,
-							   sizeof(struct
-								  acpi_table_header));
-		} else
-			*header = NULL;
-
-		if (!*header) {
-			printk(KERN_WARNING PREFIX "Unable to map DSDT\n");
-			return -ENODEV;
-		}
-	}
-
-	return 0;
-}
 
 int __init
-acpi_table_parse_madt_family(enum acpi_table_id id,
+acpi_table_parse_madt_family(char *id,
 			     unsigned long madt_size,
 			     int entry_id,
 			     acpi_madt_entry_handler handler,
 			     unsigned int max_entries)
 {
-	void *madt = NULL;
+	struct acpi_table_header *madt = NULL;
 	acpi_table_entry_header *entry;
 	unsigned int count = 0;
 	unsigned long madt_end;
-	unsigned int i;
 
 	if (!handler)
 		return -EINVAL;
 
 	/* Locate the MADT (if exists). There should only be one. */
 
-	for (i = 0; i < sdt_count; i++) {
-		if (sdt_entry[i].id != id)
-			continue;
-		madt = (void *)
-		    __acpi_map_table(sdt_entry[i].pa, sdt_entry[i].size);
-		if (!madt) {
-			printk(KERN_WARNING PREFIX "Unable to map %s\n",
-			       acpi_table_signatures[id]);
-			return -ENODEV;
-		}
-		break;
-	}
+	acpi_get_table(id, 0, &madt);
 
 	if (!madt) {
-		printk(KERN_WARNING PREFIX "%s not present\n",
-		       acpi_table_signatures[id]);
+		printk(KERN_WARNING PREFIX "%4.4s not present\n", id);
 		return -ENODEV;
 	}
 
-	madt_end = (unsigned long)madt + sdt_entry[i].size;
+	madt_end = (unsigned long)madt + madt->length;
 
 	/* Parse all entries looking for a match. */
 
@@ -360,9 +209,8 @@ acpi_table_parse_madt_family(enum acpi_table_id id,
 		    ((unsigned long)entry + entry->length);
 	}
 	if (max_entries && count > max_entries) {
-		printk(KERN_WARNING PREFIX "[%s:0x%02x] ignored %i entries of "
-		       "%i found\n", acpi_table_signatures[id], entry_id,
-		       count - max_entries, count);
+		printk(KERN_WARNING PREFIX "[%4.4s:0x%02x] ignored %i entries of "
+		       "%i found\n", id, entry_id, count - max_entries, count);
 	}
 
 	return count;
@@ -372,195 +220,24 @@ int __init
 acpi_table_parse_madt(enum acpi_madt_entry_id id,
 		      acpi_madt_entry_handler handler, unsigned int max_entries)
 {
-	return acpi_table_parse_madt_family(ACPI_APIC,
+	return acpi_table_parse_madt_family("APIC",
 					    sizeof(struct acpi_table_madt), id,
 					    handler, max_entries);
 }
 
-int __init acpi_table_parse(enum acpi_table_id id, acpi_table_handler handler)
+int __init acpi_table_parse(char *id, acpi_table_handler handler)
 {
-	int count = 0;
-	unsigned int i = 0;
+	struct acpi_table_header *table = NULL;
 
 	if (!handler)
 		return -EINVAL;
 
-	for (i = 0; i < sdt_count; i++) {
-		if (sdt_entry[i].id != id)
-			continue;
-		count++;
-		if (count == 1)
-			handler(sdt_entry[i].pa, sdt_entry[i].size);
-
-		else
-			printk(KERN_WARNING PREFIX
-			       "%d duplicate %s table ignored.\n", count,
-			       acpi_table_signatures[id]);
-	}
-
-	return count;
-}
-
-static int __init acpi_table_get_sdt(struct acpi_table_rsdp *rsdp)
-{
-	struct acpi_table_header *header = NULL;
-	unsigned int i, id = 0;
-
-	if (!rsdp)
-		return -EINVAL;
-
-	/* First check XSDT (but only on ACPI 2.0-compatible systems) */
-
-	if ((rsdp->revision >= 2) && rsdp->xsdt_physical_address) {
-
-		struct acpi_table_xsdt *mapped_xsdt = NULL;
-
-		sdt_pa = rsdp->xsdt_physical_address;
-
-		/* map in just the header */
-		header = (struct acpi_table_header *)
-		    __acpi_map_table(sdt_pa, sizeof(struct acpi_table_header));
-
-		if (!header) {
-			printk(KERN_WARNING PREFIX
-			       "Unable to map XSDT header\n");
-			return -ENODEV;
-		}
-
-		/* remap in the entire table before processing */
-		mapped_xsdt = (struct acpi_table_xsdt *)
-		    __acpi_map_table(sdt_pa, header->length);
-		if (!mapped_xsdt) {
-			printk(KERN_WARNING PREFIX "Unable to map XSDT\n");
-			return -ENODEV;
-		}
-		header = &mapped_xsdt->header;
-
-		if (strncmp(header->signature, "XSDT", 4)) {
-			printk(KERN_WARNING PREFIX
-			       "XSDT signature incorrect\n");
-			return -ENODEV;
-		}
-
-		if (acpi_table_compute_checksum(header, header->length)) {
-			printk(KERN_WARNING PREFIX "Invalid XSDT checksum\n");
-			return -ENODEV;
-		}
-
-		sdt_count =
-		    (header->length - sizeof(struct acpi_table_header)) >> 3;
-		if (sdt_count > ACPI_MAX_TABLES) {
-			printk(KERN_WARNING PREFIX
-			       "Truncated %lu XSDT entries\n",
-			       (sdt_count - ACPI_MAX_TABLES));
-			sdt_count = ACPI_MAX_TABLES;
-		}
-
-		for (i = 0; i < sdt_count; i++)
-			sdt_entry[i].pa = (unsigned long)mapped_xsdt->table_offset_entry[i];
-	}
-
-	/* Then check RSDT */
-
-	else if (rsdp->rsdt_physical_address) {
-
-		struct acpi_table_rsdt *mapped_rsdt = NULL;
-
-		sdt_pa = rsdp->rsdt_physical_address;
-
-		/* map in just the header */
-		header = (struct acpi_table_header *)
-		    __acpi_map_table(sdt_pa, sizeof(struct acpi_table_header));
-		if (!header) {
-			printk(KERN_WARNING PREFIX
-			       "Unable to map RSDT header\n");
-			return -ENODEV;
-		}
-
-		/* remap in the entire table before processing */
-		mapped_rsdt = (struct acpi_table_rsdt *)
-		    __acpi_map_table(sdt_pa, header->length);
-		if (!mapped_rsdt) {
-			printk(KERN_WARNING PREFIX "Unable to map RSDT\n");
-			return -ENODEV;
-		}
-		header = &mapped_rsdt->header;
-
-		if (strncmp(header->signature, "RSDT", 4)) {
-			printk(KERN_WARNING PREFIX
-			       "RSDT signature incorrect\n");
-			return -ENODEV;
-		}
-
-		if (acpi_table_compute_checksum(header, header->length)) {
-			printk(KERN_WARNING PREFIX "Invalid RSDT checksum\n");
-			return -ENODEV;
-		}
-
-		sdt_count =
-		    (header->length - sizeof(struct acpi_table_header)) >> 2;
-		if (sdt_count > ACPI_MAX_TABLES) {
-			printk(KERN_WARNING PREFIX
-			       "Truncated %lu RSDT entries\n",
-			       (sdt_count - ACPI_MAX_TABLES));
-			sdt_count = ACPI_MAX_TABLES;
-		}
-
-		for (i = 0; i < sdt_count; i++)
-			sdt_entry[i].pa = (unsigned long)mapped_rsdt->table_offset_entry[i];
-	}
-
-	else {
-		printk(KERN_WARNING PREFIX
-		       "No System Description Table (RSDT/XSDT) specified in RSDP\n");
-		return -ENODEV;
-	}
-
-	acpi_table_print(header, sdt_pa);
-
-	for (i = 0; i < sdt_count; i++) {
-
-		/* map in just the header */
-		header = (struct acpi_table_header *)
-		    __acpi_map_table(sdt_entry[i].pa,
-				     sizeof(struct acpi_table_header));
-		if (!header)
-			continue;
-
-		/* remap in the entire table before processing */
-		header = (struct acpi_table_header *)
-		    __acpi_map_table(sdt_entry[i].pa, header->length);
-		if (!header)
-			continue;
-
-		acpi_table_print(header, sdt_entry[i].pa);
-
-		if (acpi_table_compute_checksum(header, header->length)) {
-			printk(KERN_WARNING "  >>> ERROR: Invalid checksum\n");
-			continue;
-		}
-
-		sdt_entry[i].size = header->length;
-
-		for (id = 0; id < ACPI_TABLE_COUNT; id++) {
-			if (!strncmp((char *)&header->signature,
-				     acpi_table_signatures[id],
-				     sizeof(header->signature))) {
-				sdt_entry[i].id = id;
-			}
-		}
-	}
-
-	/* 
-	 * The DSDT is *not* in the RSDT (why not? no idea.) but we want
-	 * to print its info, because this is what people usually blacklist
-	 * against. Unfortunately, we don't know the phys_addr, so just
-	 * print 0. Maybe no one will notice.
-	 */
-	if (!acpi_get_table_header_early(ACPI_DSDT, &header))
-		acpi_table_print(header, 0);
-
-	return 0;
+	acpi_get_table(id, 0, &table);
+	if (table) {
+		handler(table);
+		return 1;
+	} else
+		return 0;
 }
 
 /*
@@ -574,47 +251,6 @@ static int __init acpi_table_get_sdt(struct acpi_table_rsdp *rsdp)
 
 int __init acpi_table_init(void)
 {
-	struct acpi_table_rsdp *rsdp = NULL;
-	unsigned long rsdp_phys = 0;
-	int result = 0;
-
-	/* Locate and map the Root System Description Table (RSDP) */
-
-	rsdp_phys = acpi_find_rsdp();
-	if (!rsdp_phys) {
-		printk(KERN_ERR PREFIX "Unable to locate RSDP\n");
-		return -ENODEV;
-	}
-
-	rsdp = (struct acpi_table_rsdp *)__acpi_map_table(rsdp_phys,
-		sizeof(struct acpi_table_rsdp));
-	if (!rsdp) {
-		printk(KERN_WARNING PREFIX "Unable to map RSDP\n");
-		return -ENODEV;
-	}
-
-	printk(KERN_DEBUG PREFIX
-	       "RSDP (v%3.3d %6.6s                                ) @ 0x%p\n",
-	       rsdp->revision, rsdp->oem_id, (void *)rsdp_phys);
-
-	if (rsdp->revision < 2)
-		result =
-		    acpi_table_compute_checksum(rsdp, ACPI_RSDP_REV0_SIZE);
-	else
-		result =
-		    acpi_table_compute_checksum(rsdp, rsdp->length);
-
-	if (result) {
-		printk(KERN_WARNING "  >>> ERROR: Invalid checksum\n");
-		return -ENODEV;
-	}
-
-	/* Locate and map the System Description table (RSDT/XSDT) */
-
-	if (acpi_table_get_sdt(rsdp))
-		return -ENODEV;
-
 	acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
-
 	return 0;
 }
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index b3e8a26..88cb1fe 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -340,7 +340,7 @@ enum acpi_table_id {
 	ACPI_TABLE_COUNT
 };
 
-typedef int (*acpi_table_handler) (unsigned long phys_addr, unsigned long size);
+typedef int (*acpi_table_handler) (struct acpi_table_header *header);
 
 extern acpi_table_handler acpi_table_ops[ACPI_TABLE_COUNT];
 
@@ -353,11 +353,10 @@ int acpi_boot_table_init (void);
 int acpi_numa_init (void);
 
 int acpi_table_init (void);
-int acpi_table_parse (enum acpi_table_id id, acpi_table_handler handler);
-int acpi_get_table_header_early (enum acpi_table_id id, struct acpi_table_header **header);
+int acpi_table_parse (char *id, acpi_table_handler handler);
 int acpi_table_parse_madt (enum acpi_madt_entry_id id, acpi_madt_entry_handler handler, unsigned int max_entries);
 int acpi_table_parse_srat (enum acpi_srat_entry_id id, acpi_madt_entry_handler handler, unsigned int max_entries);
-int acpi_parse_mcfg (unsigned long phys_addr, unsigned long size);
+int acpi_parse_mcfg (struct acpi_table_header *header);
 void acpi_table_print (struct acpi_table_header *header, unsigned long phys_addr);
 void acpi_table_print_madt_entry (acpi_table_entry_header *madt);
 void acpi_table_print_srat_entry (acpi_table_entry_header *srat);
-- 
1.5.0.rc3.39.gec804

  parent reply	other threads:[~2007-02-07 18:55 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-07 18:50 ACPI patches for 2.6.21 Len Brown
2007-02-07 18:50 ` Len Brown
2007-02-07 18:50   ` Len Brown
2007-02-07 18:50     ` [PATCH 1/140] ACPI: clean up scan.c Len Brown
2007-02-07 18:50       ` Len Brown
2007-02-07 18:50       ` [PATCH 2/140] ACPI: rename some functions Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 3/140] ACPI: add device_driver and hepler functions Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 4/140] ACPI: add ACPI bus_type for driver model Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 5/140] ACPI: change registration interface to follow " Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 6/140] ACPI: adjust init order Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 7/140] ACPI: convert to sysfs framework Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 8/140] ACPI: add acpi_bus_ops in acpi_device Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 9/140] ACPI: add acpi_bus_removal_type " Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 10/140] ACPI: consolidate two motherboard drivers into one Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 11/140] ACPI: Convert ACPI PCI .bind/.unbind to use PCI bridge driver Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 12/140] ACPI: Set fake hid for non-PNPID ACPI devices Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 13/140] output: Add display output class support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 14/140] output: Add output class document Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 15/140] ACPI: Adds backlight sysfs support for acpi video driver Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 16/140] ACPI: use PNPID:instance_no as bus_id of ACPI device Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 17/140] ACPI: fix Supermicro X7DB8+ Boot regression Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 18/140] ACPI: video: fix LCD monitor seen as CRT Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 19/140] ACPI: use more understandable bus_id for ACPI devices Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 20/140] ACPI: Optimize acpi_get_pci_rootbridge_handle() to boot faster Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 21/140] ACPI: move FADT resource reservations from motherboard driver to osl Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 22/140] PNP: reserve system board iomem resources as well as ioport resources Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 23/140] PNP: system.c whitespace cleanup Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 24/140] i386: turn on CONFIG_PNP in defconfig Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 25/140] ACPI: remove motherboard driver (redundant with PNP system driver) Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 26/140] PNPACPI: remove EXPERIMENTAL dependency Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 27/140] ACPI: add a Kconfig option for ACPI procfs interface Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 28/140] ACPI: add ACPI debug attribute in sysfs Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 29/140] ACPI: add ACPICA version " Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 30/140] asus-laptop: add base driver Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 31/140] asus-laptop: add led support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 32/140] asus-laptop: add bluetooth and wlan support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 33/140] asus-laptop: add backlight support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 34/140] asus-laptop: add display switching support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 35/140] asus-laptop: add ledd support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 36/140] asus-laptop: add light sensor support Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 37/140] asus-laptop: Lindent Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 39/140] ACPI: delete unused acpi_device_get_debug_info() Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 40/140] ACPI: correct id for fixed buttons Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 41/140] ACPI: prevent build failure when CONFIG_X86_NUMAQ=y Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 42/140] ACPICA: Update function header Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 43/140] ACPICA: Handle mis-matched package length Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 44/140] ACPICA: Handle case NumElements > Package length Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:50       ` [PATCH 45/140] ACPICA: Delete recursive feature of ACPI Global Lock Len Brown
2007-02-07 18:50         ` Len Brown
2007-02-07 18:51       ` [PATCH 46/140] ACPICA: Release global lock from interrupt handler Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 47/140] ACPICA: Cast acpi_thread_id to UINT32 for debug output only Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 48/140] ACPICA: fix for object premature deletion Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 49/140] ACPICA: Temporary fix for BankValue parameter Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 50/140] ACPICA: Update version to 20060721 Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 51/140] ACPICA: Update debug output Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 53/140] ACPICA: misc fixes for new Table Manager: Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 54/140] ACPICA: Update comments for individual table fields Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 55/140] ACPICA: Fix for FADT conversion in 64-bit mode Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 56/140] ACPICA: Lint changes Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 57/140] ACPICA: minimal patch to integrate new tables into Linux Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 58/140] ACPICA: Add support for DMAR table Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 59/140] ACPICA: Add acpi_gpe_count global to track the number of GPE events Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 60/140] ACPICA: Disable all wake GPEs after first one recieved Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 61/140] ACPICA: Fix unalignment in acpi_ut_repair_name Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 62/140] ACPICA: Store GPE number instead of bitmask Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 63/140] ACPICA: Split acpi_format_exception into two parts Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 64/140] ACPICA: Update version to 20060831 Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 65/140] ACPICA: Cleanup of FADT verification function Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 66/140] ACPICA: Create tbfadt.c to hold all FADT-related functions Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 67/140] ACPICA: Re-implement interpreters' "serialized mode" Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 68/140] ACPICA: Delete stale FADT functions outside tbfadt.c Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 69/140] ACPICA: Update comments in tbfadt.c Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 70/140] ACPICA: add ASF comment Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 71/140] ACPICA: re-factor table init routines for benefit of iASL Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 72/140] ACPICA: Allow type ANY to be the target of the Scope operator Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 73/140] ACPICA: IsResourceTemplate now returns ACPI_STATUS Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 74/140] ACPICA: Add declarations for ASF! sub-tables Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 75/140] ACPICA: FADT verification is now table driven Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 76/140] ACPICA: Report error if method creates 2 objects with the same name Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 77/140] ACPICA: New common routine for creating and verifying a local FADT Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 78/140] ACPICA: Fix memory leak in table load error path Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 79/140] ACPICA: Fix trace output name and whitespace Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 80/140] ACPICA: Update version to 20060912 Len Brown
2007-02-07 18:51         ` Len Brown
     [not found]           ` <11708744951308-git-send-emailMessage-Id: <d41eb99bac4063aa3fac2dbb8ca01bedd9f0b3bf.1170873818.git.len.brown@intel.com>
2007-02-07 18:51       ` [PATCH 81/140] ACPICA: Add full table name to disassembler output Len Brown
2007-02-07 18:51         ` Len Brown
2007-02-07 18:51       ` [PATCH 82/140] ACPICA: Fix for Global Lock semaphore Len Brown
2007-02-07 18:51       ` [PATCH 83/140] ACPICA: Remove obsolete Flags parameter Len Brown
2007-02-07 18:51       ` [PATCH 84/140] ACPICA: Use faster ByIndex interface to get FACS Len Brown
2007-02-07 18:51       ` [PATCH 85/140] ACPICA: On AML mutex force-release, set depth to zero (was 1) Len Brown
2007-02-07 18:51       ` [PATCH 86/140] ACPICA: Update interpreter error paths to always report the error Len Brown
2007-02-07 18:51       ` [PATCH 87/140] ACPICA: Fix for possible memory leak and fault Len Brown
2007-02-07 18:51       ` [PATCH 88/140] ACPICA: Add new subsystem state bit that is set after SubsystemInitialize is called Len Brown
2007-02-07 18:51       ` [PATCH 89/140] ACPICA: Update version to 20060927 Len Brown
2007-02-07 18:51       ` [PATCH 90/140] ACPICA: Restructured module into multiple functions Len Brown
2007-02-07 18:51       ` [PATCH 91/140] ACPICA: Eliminate control method 2-pass parse/execute Len Brown
2007-02-07 18:51       ` [PATCH 92/140] ACPICA: Fix race condition with AcpiWalkNamespace Len Brown
2007-02-07 18:51       ` [PATCH 93/140] ACPICA: _CID support for PCI Root Bridge detection Len Brown
2007-02-07 18:51       ` [PATCH 94/140] ACPICA: Use manifest constants for parse pass number Len Brown
2007-02-07 18:51       ` [PATCH 95/140] ACPICA: Update comments Len Brown
2007-02-07 18:51       ` [PATCH 96/140] ACPICA: Abort downward walk on temporary node detection Len Brown
2007-02-07 18:51       ` [PATCH 97/140] ACPICA: Fixes for parameter validation Len Brown
2007-02-07 18:51       ` [PATCH 98/140] ACPICA: Update version to 20061011 Len Brown
2007-02-07 18:51       ` Len Brown [this message]
2007-02-07 18:51       ` [PATCH 100/140] ACPICA: use new ACPI headers Len Brown
2007-02-07 18:51       ` [PATCH 101/140] ACPICA: Remove duplicate table definitions Len Brown
2007-02-07 18:51       ` [PATCH 102/140] ACPICA: Remove duplicate table definitions (non-conflicting) Len Brown
2007-02-07 18:51       ` [PATCH 103/140] ACPICA: Remove duplicate table definitions (non-conflicting), cont Len Brown
2007-02-07 18:51       ` [PATCH 104/140] ACPICA: Update debug output routines for data structure changes Len Brown
2007-02-07 18:51       ` [PATCH 105/140] ACPICA: Miscellaneous table manager updates and optimizations Len Brown
2007-02-07 18:52       ` [PATCH 106/140] ACPICA: Fixes for load() operator Len Brown
2007-02-07 18:52       ` [PATCH 107/140] ACPICA: Remove global lock handler on AcpiTerminate Len Brown
2007-02-07 18:52       ` [PATCH 108/140] ACPICA: Ensure that all structures in acobject.h are aligned, via #pragma Len Brown
2007-02-07 18:52       ` [PATCH 109/140] ACPICA: Add ACPI_MAX macro Len Brown
2007-02-07 18:52       ` [PATCH 110/140] ACPICA: Fail AcpiEnable if ACPI tables not loaded Len Brown
2007-02-07 18:52       ` [PATCH 111/140] ACPICA: Add include of actables.h Len Brown
2007-02-07 18:52       ` [PATCH 112/140] ACPICA: Update version to 20061109 Len Brown
2007-02-07 18:52       ` [PATCH 113/140] ACPICA: Removed all 16-bit support Len Brown
2007-02-07 18:52       ` [PATCH 114/140] ACPICA: Debugger multithreading enhancements Len Brown
2007-02-07 18:52       ` [PATCH 115/140] ACPICA: Update a comment Len Brown
2007-02-07 18:52       ` [PATCH 117/140] ACPICA: Added option to display memory statistics upon termination Len Brown
2007-02-07 18:52       ` [PATCH 118/140] ACPICA: Update version to 20061215 Len Brown
2007-02-07 18:52       ` [PATCH 119/140] ACPICA: Allow ACPI id to be u32 instead of u8 Len Brown
2007-02-07 18:52       ` [PATCH 120/140] ACPICA: Allow processor to be declared with the Device() instead of Processor() Len Brown
2007-02-07 18:52       ` [PATCH 121/140] ACPICA: Update copyright to 2007 Len Brown
2007-02-07 18:52       ` [PATCH 122/140] ACPICA: Fix for incorrect parameter passed to AcpiTbDeleteTable during table load Len Brown
2007-02-07 18:52       ` [PATCH 123/140] ACPICA: Update version to 20070126 Len Brown
2007-02-07 18:52       ` [PATCH 124/140] ACPI: build fix for IBM x440 - CONFIG_X86_SUMMIT Len Brown
2007-02-07 18:52       ` [PATCH 125/140] ACPI: fix HP RX2600 IA64 boot Len Brown
2007-02-07 18:52       ` [PATCH 126/140] ACPI_NUMA: fix HP IA64 simulator issue with extended memory domain Len Brown
2007-02-07 18:52       ` [PATCH 127/140] ACPICA: reduce conflicts with Altix patch series Len Brown
2007-02-07 18:52       ` [PATCH 128/140] Altix: ACPI SSDT PCI device support Len Brown
2007-02-07 18:52       ` [PATCH 129/140] Altix: Add ACPI SSDT PCI device support (hotplug) Len Brown
2007-02-07 18:52       ` [PATCH 130/140] ACPICA: fix gcc build warnings Len Brown
2007-02-07 18:52       ` [PATCH 131/140] ACPI: dock: check if parent is on dock Len Brown
2007-02-07 18:52       ` [PATCH 132/140] ACPI: bay: new driver adding removable drive bay support Len Brown
2007-02-07 18:52       ` [PATCH 133/140] ACPI: bay: delete unused variable Len Brown
2007-02-07 18:52       ` [PATCH 134/140] ACPI: bay: remove prototype procfs code Len Brown
2007-02-07 18:52       ` [PATCH 135/140] ACPI: bay: make bay a platform driver Len Brown
2007-04-13 17:25         ` Bjorn Helgaas
2007-02-07 18:52       ` [PATCH 136/140] ACPI: bay: make drive_bays static Len Brown
2007-02-07 18:52       ` [PATCH 137/140] ACPI: bay: new driver is EXPERIMENTAL Len Brown
2007-02-07 18:52       ` [PATCH 138/140] ACPI: bay: Convert ACPI Bay driver to be compatible with sysfs update Len Brown
2007-02-07 18:52       ` [PATCH 139/140] asus-laptop: merge with ACPICA table update Len Brown
2007-02-07 18:52       ` [PATCH 140/140] ACPICA: reduce table header messages to fit within 80 columns Len Brown
2007-02-07 19:42   ` ACPI patches for 2.6.21 Mattia Dongili
2007-02-07 20:19     ` 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=11708745132350-git-send-email-lenb@kernel.org \
    --to=lenb@kernel.org \
    --cc=alexey.y.starikovskiy@intel.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    /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.