* [patch 07/26] ACPI: request correct fixed hardware resource type (MMIO vs I/O port)
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, bjorn.helgaas
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
ACPI supports fixed hardware (PM_TMR, GPE blocks, etc) in either I/O port
or MMIO space, but used to always request the regions from I/O space
because it didn't check the address_space_id.
Sample ACPI fixed hardware in MMIO space (HP rx2600), was incorrectly
reported in /proc/ioports, now reported in /proc/iomem:
ff5c1004-ff5c1007 : PM_TMR
ff5c1008-ff5c100b : PM1a_EVT_BLK
ff5c100c-ff5c100d : PM1a_CNT_BLK
ff5c1010-ff5c1013 : GPE0_BLK
ff5c1014-ff5c1017 : GPE1_BLK
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/acpi/motherboard.c | 41 +++++++++++++++++++----------------
1 files changed, 23 insertions(+), 18 deletions(-)
diff -puN drivers/acpi/motherboard.c~acpi-request-correct-fixed-hardware-resource-type-mmio-vs-i-o-port drivers/acpi/motherboard.c
--- devel/drivers/acpi/motherboard.c~acpi-request-correct-fixed-hardware-resource-type-mmio-vs-i-o-port 2006-03-28 14:03:03.000000000 -0800
+++ devel-akpm/drivers/acpi/motherboard.c 2006-03-28 14:03:03.000000000 -0800
@@ -123,41 +123,46 @@ static struct acpi_driver acpi_motherboa
},
};
+static void __init acpi_request_region (struct acpi_generic_address *addr,
+ unsigned int length, char *desc)
+{
+ if (!addr->address || !length)
+ return;
+
+ if (addr->address_space_id == ACPI_ADR_SPACE_SYSTEM_IO)
+ request_region(addr->address, length, desc);
+ else if (addr->address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
+ request_mem_region(addr->address, length, desc);
+}
+
static void __init acpi_reserve_resources(void)
{
- if (acpi_gbl_FADT->xpm1a_evt_blk.address && acpi_gbl_FADT->pm1_evt_len)
- request_region(acpi_gbl_FADT->xpm1a_evt_blk.address,
+ acpi_request_region(&acpi_gbl_FADT->xpm1a_evt_blk,
acpi_gbl_FADT->pm1_evt_len, "PM1a_EVT_BLK");
- if (acpi_gbl_FADT->xpm1b_evt_blk.address && acpi_gbl_FADT->pm1_evt_len)
- request_region(acpi_gbl_FADT->xpm1b_evt_blk.address,
+ acpi_request_region(&acpi_gbl_FADT->xpm1b_evt_blk,
acpi_gbl_FADT->pm1_evt_len, "PM1b_EVT_BLK");
- if (acpi_gbl_FADT->xpm1a_cnt_blk.address && acpi_gbl_FADT->pm1_cnt_len)
- request_region(acpi_gbl_FADT->xpm1a_cnt_blk.address,
+ acpi_request_region(&acpi_gbl_FADT->xpm1a_cnt_blk,
acpi_gbl_FADT->pm1_cnt_len, "PM1a_CNT_BLK");
- if (acpi_gbl_FADT->xpm1b_cnt_blk.address && acpi_gbl_FADT->pm1_cnt_len)
- request_region(acpi_gbl_FADT->xpm1b_cnt_blk.address,
+ acpi_request_region(&acpi_gbl_FADT->xpm1b_cnt_blk,
acpi_gbl_FADT->pm1_cnt_len, "PM1b_CNT_BLK");
- if (acpi_gbl_FADT->xpm_tmr_blk.address && acpi_gbl_FADT->pm_tm_len == 4)
- request_region(acpi_gbl_FADT->xpm_tmr_blk.address, 4, "PM_TMR");
+ if (acpi_gbl_FADT->pm_tm_len == 4)
+ acpi_request_region(&acpi_gbl_FADT->xpm_tmr_blk, 4, "PM_TMR");
- if (acpi_gbl_FADT->xpm2_cnt_blk.address && acpi_gbl_FADT->pm2_cnt_len)
- request_region(acpi_gbl_FADT->xpm2_cnt_blk.address,
+ acpi_request_region(&acpi_gbl_FADT->xpm2_cnt_blk,
acpi_gbl_FADT->pm2_cnt_len, "PM2_CNT_BLK");
/* Length of GPE blocks must be a non-negative multiple of 2 */
- if (acpi_gbl_FADT->xgpe0_blk.address && acpi_gbl_FADT->gpe0_blk_len &&
- !(acpi_gbl_FADT->gpe0_blk_len & 0x1))
- request_region(acpi_gbl_FADT->xgpe0_blk.address,
+ if (!(acpi_gbl_FADT->gpe0_blk_len & 0x1))
+ acpi_request_region(&acpi_gbl_FADT->xgpe0_blk,
acpi_gbl_FADT->gpe0_blk_len, "GPE0_BLK");
- if (acpi_gbl_FADT->xgpe1_blk.address && acpi_gbl_FADT->gpe1_blk_len &&
- !(acpi_gbl_FADT->gpe1_blk_len & 0x1))
- request_region(acpi_gbl_FADT->xgpe1_blk.address,
+ if (!(acpi_gbl_FADT->gpe1_blk_len & 0x1))
+ acpi_request_region(&acpi_gbl_FADT->xgpe1_blk,
acpi_gbl_FADT->gpe1_blk_len, "GPE1_BLK");
}
_
^ permalink raw reply
* [patch 08/26] ACPI: Add "ACPI" to motherboard resources in /proc/io{mem,port}
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, bjorn.helgaas
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Add "ACPI" to motherboard resource allocation names, so people have a clue
about where to look. And remove some trailing spaces.
Changes these /proc/iomem entries from this:
ff5c1004-ff5c1007 : PM_TMR
ff5c1008-ff5c100b : PM1a_EVT_BLK
ff5c100c-ff5c100d : PM1a_CNT_BLK
ff5c1010-ff5c1013 : GPE0_BLK
ff5c1014-ff5c1017 : GPE1_BLK
to this:
ff5c1004-ff5c1007 : ACPI PM_TMR
ff5c1008-ff5c100b : ACPI PM1a_EVT_BLK
ff5c100c-ff5c100d : ACPI PM1a_CNT_BLK
ff5c1010-ff5c1013 : ACPI GPE0_BLK
ff5c1014-ff5c1017 : ACPI GPE1_BLK
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/acpi/motherboard.c | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)
diff -puN drivers/acpi/motherboard.c~acpi-add-acpi-to-motherboard-resources-in-proc-iomemport drivers/acpi/motherboard.c
--- devel/drivers/acpi/motherboard.c~acpi-add-acpi-to-motherboard-resources-in-proc-iomemport 2006-03-28 14:03:03.000000000 -0800
+++ devel-akpm/drivers/acpi/motherboard.c 2006-03-28 14:03:03.000000000 -0800
@@ -37,7 +37,7 @@ ACPI_MODULE_NAME("acpi_motherboard")
#define ACPI_MB_HID2 "PNP0C02"
/**
* Doesn't care about legacy IO ports, only IO ports beyond 0x1000 are reserved
- * Doesn't care about the failure of 'request_region', since other may reserve
+ * Doesn't care about the failure of 'request_region', since other may reserve
* the io ports as well
*/
#define IS_RESERVED_ADDR(base, len) \
@@ -46,7 +46,7 @@ ACPI_MODULE_NAME("acpi_motherboard")
/*
* Clearing the flag (IORESOURCE_BUSY) allows drivers to use
* the io ports if they really know they can use it, while
- * still preventing hotplug PCI devices from using it.
+ * still preventing hotplug PCI devices from using it.
*/
static acpi_status acpi_reserve_io_ranges(struct acpi_resource *res, void *data)
{
@@ -138,39 +138,39 @@ static void __init acpi_request_region (
static void __init acpi_reserve_resources(void)
{
acpi_request_region(&acpi_gbl_FADT->xpm1a_evt_blk,
- acpi_gbl_FADT->pm1_evt_len, "PM1a_EVT_BLK");
+ acpi_gbl_FADT->pm1_evt_len, "ACPI PM1a_EVT_BLK");
acpi_request_region(&acpi_gbl_FADT->xpm1b_evt_blk,
- acpi_gbl_FADT->pm1_evt_len, "PM1b_EVT_BLK");
+ acpi_gbl_FADT->pm1_evt_len, "ACPI PM1b_EVT_BLK");
acpi_request_region(&acpi_gbl_FADT->xpm1a_cnt_blk,
- acpi_gbl_FADT->pm1_cnt_len, "PM1a_CNT_BLK");
+ acpi_gbl_FADT->pm1_cnt_len, "ACPI PM1a_CNT_BLK");
acpi_request_region(&acpi_gbl_FADT->xpm1b_cnt_blk,
- acpi_gbl_FADT->pm1_cnt_len, "PM1b_CNT_BLK");
+ acpi_gbl_FADT->pm1_cnt_len, "ACPI PM1b_CNT_BLK");
if (acpi_gbl_FADT->pm_tm_len == 4)
- acpi_request_region(&acpi_gbl_FADT->xpm_tmr_blk, 4, "PM_TMR");
+ acpi_request_region(&acpi_gbl_FADT->xpm_tmr_blk, 4, "ACPI PM_TMR");
acpi_request_region(&acpi_gbl_FADT->xpm2_cnt_blk,
- acpi_gbl_FADT->pm2_cnt_len, "PM2_CNT_BLK");
+ acpi_gbl_FADT->pm2_cnt_len, "ACPI PM2_CNT_BLK");
/* Length of GPE blocks must be a non-negative multiple of 2 */
if (!(acpi_gbl_FADT->gpe0_blk_len & 0x1))
acpi_request_region(&acpi_gbl_FADT->xgpe0_blk,
- acpi_gbl_FADT->gpe0_blk_len, "GPE0_BLK");
+ acpi_gbl_FADT->gpe0_blk_len, "ACPI GPE0_BLK");
if (!(acpi_gbl_FADT->gpe1_blk_len & 0x1))
acpi_request_region(&acpi_gbl_FADT->xgpe1_blk,
- acpi_gbl_FADT->gpe1_blk_len, "GPE1_BLK");
+ acpi_gbl_FADT->gpe1_blk_len, "ACPI GPE1_BLK");
}
static int __init acpi_motherboard_init(void)
{
acpi_bus_register_driver(&acpi_motherboard_driver1);
acpi_bus_register_driver(&acpi_motherboard_driver2);
- /*
+ /*
* Guarantee motherboard IO reservation first
* This module must run after scan.c
*/
_
^ permalink raw reply
* [patch 05/26] PNPACPI: remove some code duplication
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, bjorn.helgaas
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Factor out the duplicated switch from pnpacpi_count_resources() and
pnpacpi_type_resources(). Remove the unnecessary re-initialization of
resource->type and length from all the encode functions (id and length are
originally set in the pnpacpi_build_resource_template() ->
pnpacpi_type_resources() path).
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/pnp/pnpacpi/rsparser.c | 67 ++++++++-----------------------
1 files changed, 18 insertions(+), 49 deletions(-)
diff -puN drivers/pnp/pnpacpi/rsparser.c~pnpacpi-remove-some-code-duplication drivers/pnp/pnpacpi/rsparser.c
--- devel/drivers/pnp/pnpacpi/rsparser.c~pnpacpi-remove-some-code-duplication 2006-03-28 14:03:01.000000000 -0800
+++ devel-akpm/drivers/pnp/pnpacpi/rsparser.c 2006-03-28 14:03:01.000000000 -0800
@@ -647,13 +647,8 @@ acpi_status pnpacpi_parse_resource_optio
return status;
}
-/*
- * Set resource
- */
-static acpi_status pnpacpi_count_resources(struct acpi_resource *res,
- void *data)
+static int pnpacpi_supported_resource(struct acpi_resource *res)
{
- int *res_cnt = (int *)data;
switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
case ACPI_RESOURCE_TYPE_DMA:
@@ -666,15 +661,21 @@ static acpi_status pnpacpi_count_resourc
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- (*res_cnt) ++;
- case ACPI_RESOURCE_TYPE_START_DEPENDENT:
- case ACPI_RESOURCE_TYPE_END_DEPENDENT:
- case ACPI_RESOURCE_TYPE_VENDOR:
- case ACPI_RESOURCE_TYPE_END_TAG:
- case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
- default:
- return AE_OK;
+ return 1;
}
+ return 0;
+}
+
+/*
+ * Set resource
+ */
+static acpi_status pnpacpi_count_resources(struct acpi_resource *res,
+ void *data)
+{
+ int *res_cnt = (int *)data;
+
+ if (pnpacpi_supported_resource(res))
+ (*res_cnt)++;
return AE_OK;
}
@@ -682,27 +683,11 @@ static acpi_status pnpacpi_type_resource
void *data)
{
struct acpi_resource **resource = (struct acpi_resource **)data;
- switch (res->type) {
- case ACPI_RESOURCE_TYPE_IRQ:
- case ACPI_RESOURCE_TYPE_DMA:
- case ACPI_RESOURCE_TYPE_IO:
- case ACPI_RESOURCE_TYPE_FIXED_IO:
- case ACPI_RESOURCE_TYPE_MEMORY24:
- case ACPI_RESOURCE_TYPE_MEMORY32:
- case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
- case ACPI_RESOURCE_TYPE_ADDRESS16:
- case ACPI_RESOURCE_TYPE_ADDRESS32:
- case ACPI_RESOURCE_TYPE_ADDRESS64:
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+
+ if (pnpacpi_supported_resource(res)) {
(*resource)->type = res->type;
+ (*resource)->length = sizeof(struct acpi_resource);
(*resource)++;
- case ACPI_RESOURCE_TYPE_START_DEPENDENT:
- case ACPI_RESOURCE_TYPE_END_DEPENDENT:
- case ACPI_RESOURCE_TYPE_VENDOR:
- case ACPI_RESOURCE_TYPE_END_TAG:
- case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
- default:
- return AE_OK;
}
return AE_OK;
@@ -749,8 +734,6 @@ static void pnpacpi_encode_irq(struct ac
decode_irq_flags(p->flags & IORESOURCE_BITS, &triggering,
&polarity);
- resource->type = ACPI_RESOURCE_TYPE_IRQ;
- resource->length = sizeof(struct acpi_resource);
resource->data.irq.triggering = triggering;
resource->data.irq.polarity = polarity;
if (triggering == ACPI_EDGE_SENSITIVE)
@@ -768,8 +751,6 @@ static void pnpacpi_encode_ext_irq(struc
decode_irq_flags(p->flags & IORESOURCE_BITS, &triggering,
&polarity);
- resource->type = ACPI_RESOURCE_TYPE_EXTENDED_IRQ;
- resource->length = sizeof(struct acpi_resource);
resource->data.extended_irq.producer_consumer = ACPI_CONSUMER;
resource->data.extended_irq.triggering = triggering;
resource->data.extended_irq.polarity = polarity;
@@ -784,8 +765,6 @@ static void pnpacpi_encode_ext_irq(struc
static void pnpacpi_encode_dma(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_DMA;
- resource->length = sizeof(struct acpi_resource);
/* Note: pnp_assign_dma will copy pnp_dma->flags into p->flags */
if (p->flags & IORESOURCE_DMA_COMPATIBLE)
resource->data.dma.type = ACPI_COMPATIBILITY;
@@ -809,8 +788,6 @@ static void pnpacpi_encode_dma(struct ac
static void pnpacpi_encode_io(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_IO;
- resource->length = sizeof(struct acpi_resource);
/* Note: pnp_assign_port will copy pnp_port->flags into p->flags */
resource->data.io.io_decode = (p->flags & PNP_PORT_FLAG_16BITADDR)?
ACPI_DECODE_16 : ACPI_DECODE_10;
@@ -823,8 +800,6 @@ static void pnpacpi_encode_io(struct acp
static void pnpacpi_encode_fixed_io(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_FIXED_IO;
- resource->length = sizeof(struct acpi_resource);
resource->data.fixed_io.address = p->start;
resource->data.fixed_io.address_length = p->end - p->start + 1;
}
@@ -832,8 +807,6 @@ static void pnpacpi_encode_fixed_io(stru
static void pnpacpi_encode_mem24(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_MEMORY24;
- resource->length = sizeof(struct acpi_resource);
/* Note: pnp_assign_mem will copy pnp_mem->flags into p->flags */
resource->data.memory24.write_protect =
(p->flags & IORESOURCE_MEM_WRITEABLE) ?
@@ -847,8 +820,6 @@ static void pnpacpi_encode_mem24(struct
static void pnpacpi_encode_mem32(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_MEMORY32;
- resource->length = sizeof(struct acpi_resource);
resource->data.memory32.write_protect =
(p->flags & IORESOURCE_MEM_WRITEABLE) ?
ACPI_READ_WRITE_MEMORY : ACPI_READ_ONLY_MEMORY;
@@ -861,8 +832,6 @@ static void pnpacpi_encode_mem32(struct
static void pnpacpi_encode_fixed_mem32(struct acpi_resource *resource,
struct resource *p)
{
- resource->type = ACPI_RESOURCE_TYPE_FIXED_MEMORY32;
- resource->length = sizeof(struct acpi_resource);
resource->data.fixed_memory32.write_protect =
(p->flags & IORESOURCE_MEM_WRITEABLE) ?
ACPI_READ_WRITE_MEMORY : ACPI_READ_ONLY_MEMORY;
_
^ permalink raw reply
* [patch 04/26] PNPACPI: fix non-memory address space descriptor handling
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, bjorn.helgaas
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Fix resource_type handling for QWORD, DWORD, and WORD Address Space
Descriptors. Previously we ignored the resource_type, so I/O ports and bus
number ranges were incorrectly parsed as memory ranges.
Sample PCI root bridge resources from HP rx2600 before this patch:
# cat /sys/bus/pnp/devices/00:02/resources
state = active
mem 0x0-0x1f
mem 0x0-0x3af
mem 0x3e0-0x1fff
mem 0x80000000-0x8fffffff
With this patch:
# cat /sys/bus/pnp/devices/00:02/resources
state = active
io 0x0-0x3af
io 0x3e0-0x1fff
mem 0x80000000-0x8fffffff
mem 0x80004000000-0x80103fffffe
Changes:
0x0-0x1f PCI bus number range was incorrectly reported as memory, now
not reported at all
0x0-0x3af I/O port range was incorrectly reported as memory
0x3e0-0x1fff I/O port range was incorrectly reported as memory
0x80004000000-0x80103fffffe memory range wasn't reported at all because
we only support PNP_MAX_MEM (4) memory resources
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/pnp/pnpacpi/rsparser.c | 35 ++++++++++++++++++++-----------
1 files changed, 23 insertions(+), 12 deletions(-)
diff -puN drivers/pnp/pnpacpi/rsparser.c~pnpacpi-fix-non-memory-address-space-descriptor-handling drivers/pnp/pnpacpi/rsparser.c
--- devel/drivers/pnp/pnpacpi/rsparser.c~pnpacpi-fix-non-memory-address-space-descriptor-handling 2006-03-28 14:03:01.000000000 -0800
+++ devel-akpm/drivers/pnp/pnpacpi/rsparser.c 2006-03-28 14:03:01.000000000 -0800
@@ -120,7 +120,7 @@ pnpacpi_parse_allocated_dmaresource(stru
static void
pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res,
- u32 io, u32 len)
+ u64 io, u64 len)
{
int i = 0;
while (!(res->port_resource[i].flags & IORESOURCE_UNSET) &&
@@ -156,6 +156,27 @@ pnpacpi_parse_allocated_memresource(stru
}
}
+static void
+pnpacpi_parse_allocated_address_space(struct pnp_resource_table *res_table,
+ struct acpi_resource *res)
+{
+ struct acpi_resource_address64 addr, *p = &addr;
+ acpi_status status;
+
+ status = acpi_resource_to_address64(res, p);
+ if (!ACPI_SUCCESS(status)) {
+ pnp_warn("PnPACPI: failed to convert resource type %d",
+ res->type);
+ return;
+ }
+
+ if (p->resource_type == ACPI_MEMORY_RANGE)
+ pnpacpi_parse_allocated_memresource(res_table,
+ p->minimum, p->address_length);
+ else if (p->resource_type == ACPI_IO_RANGE)
+ pnpacpi_parse_allocated_ioresource(res_table,
+ p->minimum, p->address_length);
+}
static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
void *data)
@@ -221,19 +242,9 @@ static acpi_status pnpacpi_allocated_res
res->data.fixed_memory32.address_length);
break;
case ACPI_RESOURCE_TYPE_ADDRESS16:
- pnpacpi_parse_allocated_memresource(res_table,
- res->data.address16.minimum,
- res->data.address16.address_length);
- break;
case ACPI_RESOURCE_TYPE_ADDRESS32:
- pnpacpi_parse_allocated_memresource(res_table,
- res->data.address32.minimum,
- res->data.address32.address_length);
- break;
case ACPI_RESOURCE_TYPE_ADDRESS64:
- pnpacpi_parse_allocated_memresource(res_table,
- res->data.address64.minimum,
- res->data.address64.address_length);
+ pnpacpi_parse_allocated_address_space(res_table, res);
break;
case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
_
^ permalink raw reply
* [patch 03/26] sem2mutex: acpi, acpi_link_lock
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, mingo
From: Ingo Molnar <mingo@elte.hu>
Semaphore to mutex conversion.
The conversion was generated via scripts, and the result was validated
automatically via a script as well.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
drivers/acpi/pci_link.c | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 deletions(-)
diff -puN drivers/acpi/pci_link.c~sem2mutex-acpi-acpi_link_lock drivers/acpi/pci_link.c
--- devel/drivers/acpi/pci_link.c~sem2mutex-acpi-acpi_link_lock 2006-03-28 14:03:00.000000000 -0800
+++ devel-akpm/drivers/acpi/pci_link.c 2006-03-28 14:03:00.000000000 -0800
@@ -38,6 +38,7 @@
#include <linux/spinlock.h>
#include <linux/pm.h>
#include <linux/pci.h>
+#include <linux/mutex.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
@@ -91,7 +92,7 @@ static struct {
int count;
struct list_head entries;
} acpi_link;
-DECLARE_MUTEX(acpi_link_lock);
+DEFINE_MUTEX(acpi_link_lock);
/* --------------------------------------------------------------------------
PCI Link Device Management
@@ -634,19 +635,19 @@ acpi_pci_link_allocate_irq(acpi_handle h
return_VALUE(-1);
}
- down(&acpi_link_lock);
+ mutex_lock(&acpi_link_lock);
if (acpi_pci_link_allocate(link)) {
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
return_VALUE(-1);
}
if (!link->irq.active) {
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
ACPI_ERROR((AE_INFO, "Link active IRQ is 0!"));
return_VALUE(-1);
}
link->refcnt++;
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
if (triggering)
*triggering = link->irq.triggering;
@@ -684,9 +685,9 @@ int acpi_pci_link_free_irq(acpi_handle h
return_VALUE(-1);
}
- down(&acpi_link_lock);
+ mutex_lock(&acpi_link_lock);
if (!link->irq.initialized) {
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
ACPI_ERROR((AE_INFO, "Link isn't initialized"));
return_VALUE(-1);
}
@@ -709,7 +710,7 @@ int acpi_pci_link_free_irq(acpi_handle h
if (link->refcnt == 0) {
acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL);
}
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
return_VALUE(link->irq.active);
}
@@ -740,7 +741,7 @@ static int acpi_pci_link_add(struct acpi
strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);
acpi_driver_data(device) = link;
- down(&acpi_link_lock);
+ mutex_lock(&acpi_link_lock);
result = acpi_pci_link_get_possible(link);
if (result)
goto end;
@@ -775,7 +776,7 @@ static int acpi_pci_link_add(struct acpi
end:
/* disable all links -- to be activated on use */
acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL);
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
if (result)
kfree(link);
@@ -829,9 +830,9 @@ static int acpi_pci_link_remove(struct a
link = (struct acpi_pci_link *)acpi_driver_data(device);
- down(&acpi_link_lock);
+ mutex_lock(&acpi_link_lock);
list_del(&link->node);
- up(&acpi_link_lock);
+ mutex_unlock(&acpi_link_lock);
kfree(link);
_
^ permalink raw reply
* [patch 01/26] git-acpi: uniprocessor compile fixes
From: akpm @ 2006-03-28 22:03 UTC (permalink / raw)
To: len.brown; +Cc: linux-acpi, akpm, venkatesh.pallipadi
From: Andrew Morton <akpm@osdl.org>,
Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
cpu_online_map doesn't exist if !CONFIG_SMP.
This path is rather lame and it'd be nice to fix it better.
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Len Brown <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 ++++
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 4 ++++
2 files changed, 8 insertions(+)
diff -puN arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c~git-acpi-up-fix arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
--- devel/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c~git-acpi-up-fix 2006-03-28 14:02:59.000000000 -0800
+++ devel-akpm/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 2006-03-28 14:02:59.000000000 -0800
@@ -225,8 +225,12 @@ acpi_cpufreq_target (
freqs.old = data->freq_table[cur_state].frequency;
freqs.new = data->freq_table[next_state].frequency;
+#ifdef CONFIG_HOTPLUG_CPU
/* cpufreq holds the hotplug lock, so we are safe from here on */
cpus_and(online_policy_cpus, cpu_online_map, policy->cpus);
+#else
+ online_policy_cpus = policy->cpus;
+#endif
for_each_cpu_mask(j, online_policy_cpus) {
freqs.cpu = j;
diff -puN arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c~git-acpi-up-fix arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
--- devel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c~git-acpi-up-fix 2006-03-28 14:02:59.000000000 -0800
+++ devel-akpm/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2006-03-28 14:02:59.000000000 -0800
@@ -652,8 +652,12 @@ static int centrino_target (struct cpufr
return -EINVAL;
}
+#ifdef CONFIG_HOTPLUG_CPU
/* cpufreq holds the hotplug lock, so we are safe from here on */
cpus_and(online_policy_cpus, cpu_online_map, policy->cpus);
+#else
+ online_policy_cpus = policy->cpus;
+#endif
saved_mask = current->cpus_allowed;
first_cpu = 1;
_
^ permalink raw reply
* Re: [Patch:001/004]Unify pxm_to_node id ver.3.(generic code)
From: Andrew Morton @ 2006-03-28 21:07 UTC (permalink / raw)
To: Yasunori Goto
Cc: tony.luck, ak, len.brown, linux-kernel, linux-acpi, linux-ia64,
discuss
In-Reply-To: <20060328191250.CC48.Y-GOTO@jp.fujitsu.com>
Yasunori Goto <y-goto@jp.fujitsu.com> wrote:
>
> +/* Proximity bitmap length */
> +#ifdef CONFIG_NR_NODES_CHANGABLE
> +#define MAX_PXM_DOMAINS CONFIG_NR_NODES
> +#else
> +#define MAX_PXM_DOMAINS (256)
> +#endif
I don't think we need CONFIG_NR_NODES_CHANGABLE (it is spelled
"changeable", btw).
If the architecture wants to support changing of CONFIG_NR_NODES then it
can permit CONFIG_NR_NODES to be changed in its Kconfig implementation.
If the architecture doesn't want to permit changing of CONFIG_NR_NODES
then it should simply hardwire CONFIG_NR_NODES to the chosen value in
its Kconfig.
So all architectures which use acpi_numa must implement CONFIG_NR_NODES.
In fact, it would probably make sense to require that all NUMA-supporting
archtectures implement CONFIG_NR_NODES.
Also, we already have NODES_SHIFT defined in include/asm-*/numnodes.h.
What's the relationship between that and CONFIG_NR_NODES? It seems that we
want to derive NODES_SHIFT from CONFIG_NR_NODES.
Was ia64's CONFIG_IA64_NR_NODES the best choice? Should ia64 instead have
made NODES_SHIFT Kconfigurable, and derived its max-nr_nodes from that?
It's all a bit of a pickle.
I guess for now a suitable approach would be to make all numa-using
architectures define CONFIG_NR_NODES, and to leave that rather
unpleasant-looking code in include/asm-ia64/numnodes.h as it is.
^ permalink raw reply
* [PATCH -mm] acpi: fix memory_hotplug externs
From: Randy.Dunlap @ 2006-03-28 19:46 UTC (permalink / raw)
To: lkml; +Cc: akpm, linux-acpi
From: Randy Dunlap <rdunlap@xenotime.net>
Spell CONFIG option correctly so that externs work.
Fixes these warnings:
drivers/acpi/acpi_memhotplug.c:248: warning: implicit declaration of function 'add_memory'
drivers/acpi/acpi_memhotplug.c:312: warning: implicit declaration of function 'remove_memory'
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
---
linsrc/linux-2616-mm2/include/linux/memory_hotplug.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- rddunlap.orig/linsrc/linux-2616-mm2/include/linux/memory_hotplug.h
+++ rddunlap/linsrc/linux-2616-mm2/include/linux/memory_hotplug.h
@@ -105,7 +105,7 @@ static inline int __remove_pages(struct
}
#if defined(CONFIG_MEMORY_HOTPLUG) || defined(CONFIG_ACPI_HOTPLUG_MEMORY) \
- || defined(CONFIG_ACPI_MEMORY_HOTPLUG_MODULE)
+ || defined(CONFIG_ACPI_HOTPLUG_MEMORY_MODULE)
extern int add_memory(u64 start, u64 size);
extern int remove_memory(u64 start, u64 size);
#endif
---
^ permalink raw reply
* Re: ACPI-Problems with debian-etch & Kernel 2.6.16
From: Joschka Sulzer @ 2006-03-28 17:39 UTC (permalink / raw)
To: sanjoy; +Cc: linux-acpi
In-Reply-To: <E1FO4hA-0000e4-00@skye.ra.phy.cam.ac.uk>
sanjoy@mrao.cam.ac.uk schrieb:
>> These messages appear every 10 seconds!
>>
>
> Do you have thermal polling turned on?
>
> more /proc/acpi/thermal_zone/*/polling_frequency
>
> Not that you should turn the polling off, but maybe every time a
> thermal poll is run, the embedded controller (ec) does an UPDT, which
> also means it looks at the battery state. And maybe the UPDT causes
> the namespace AE_NOT_FOUND. Perhaps it didn't cause a problem before
> because the default used to be ec_intr=0, and the ec worked fine with
> that setting.
>
> You could try booting with ec_intr=0 to see if it suppresses the
> problem.
>
> I've spent a while (see bugzilla #5989) debugging the consequences of
> changing the default from ec_intr=0 to ec_intr=1 (which happened in
> 2.6.16-rc* sometime -- see the #5989 bugzilla entries for the exact
> git commit id). Probably it's a good change in general -- I leave
> that to the experts -- but it has certainly exposed a few troubles in
> the mangy BIOS on my TP 600X.
>
I don't care anymore; updating to 2.6.16 solved my problems ;-)
Now the Kernel boots without any Kernelparameters at all !
^ permalink raw reply
* [Patch:004/004]Unify pxm_to_node id ver.3. (for i386)
From: Yasunori Goto @ 2006-03-28 10:17 UTC (permalink / raw)
To: Andrew Morton
Cc: Luck, Tony, Andi Kleen, Brown, Len, Linux Kernel ML, ACPI-ML,
linux-ia64, x86-64 Discuss
In-Reply-To: <20060328183058.CC46.Y-GOTO@jp.fujitsu.com>
This is to remove the code of pxm_to_nid_map from i386 code.
And, some of changing Kconfig and dummy function for compile.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
arch/i386/Kconfig | 6 ++++++
arch/i386/kernel/srat.c | 19 ++-----------------
drivers/acpi/Kconfig | 2 +-
include/linux/acpi.h | 8 ++++++++
4 files changed, 17 insertions(+), 18 deletions(-)
Index: pxm_ver3/arch/i386/kernel/srat.c
===================================================================
--- pxm_ver3.orig/arch/i386/kernel/srat.c 2006-01-05 15:43:10.000000000 +0900
+++ pxm_ver3/arch/i386/kernel/srat.c 2006-03-27 14:08:19.000000000 +0900
@@ -39,7 +39,6 @@
#define NODE_ARRAY_OFFSET(x) ((x) % 8) /* 8 bits/char */
#define BMAP_SET(bmap, bit) ((bmap)[NODE_ARRAY_INDEX(bit)] |= 1 << NODE_ARRAY_OFFSET(bit))
#define BMAP_TEST(bmap, bit) ((bmap)[NODE_ARRAY_INDEX(bit)] & (1 << NODE_ARRAY_OFFSET(bit)))
-#define MAX_PXM_DOMAINS 256 /* 1 byte and no promises about values */
/* bitmap length; _PXM is at most 255 */
#define PXM_BITMAP_LEN (MAX_PXM_DOMAINS / 8)
static u8 pxm_bitmap[PXM_BITMAP_LEN]; /* bitmap of proximity domains */
@@ -213,19 +212,11 @@ static __init void node_read_chunk(int n
node_end_pfn[nid] = memory_chunk->end_pfn;
}
-static u8 pxm_to_nid_map[MAX_PXM_DOMAINS];/* _PXM to logical node ID map */
-
-int pxm_to_node(int pxm)
-{
- return pxm_to_nid_map[pxm];
-}
-
/* Parse the ACPI Static Resource Affinity Table */
static int __init acpi20_parse_srat(struct acpi_table_srat *sratp)
{
u8 *start, *end, *p;
int i, j, nid;
- u8 nid_to_pxm_map[MAX_NUMNODES];/* logical node ID to _PXM map */
start = (u8 *)(&(sratp->reserved) + 1); /* skip header */
p = start;
@@ -235,10 +226,6 @@ static int __init acpi20_parse_srat(stru
memset(node_memory_chunk, 0, sizeof(node_memory_chunk));
memset(zholes_size, 0, sizeof(zholes_size));
- /* -1 in these maps means not available */
- memset(pxm_to_nid_map, -1, sizeof(pxm_to_nid_map));
- memset(nid_to_pxm_map, -1, sizeof(nid_to_pxm_map));
-
num_memory_chunks = 0;
while (p < end) {
switch (*p) {
@@ -278,9 +265,7 @@ static int __init acpi20_parse_srat(stru
nodes_clear(node_online_map);
for (i = 0; i < MAX_PXM_DOMAINS; i++) {
if (BMAP_TEST(pxm_bitmap, i)) {
- nid = num_online_nodes();
- pxm_to_nid_map[i] = nid;
- nid_to_pxm_map[nid] = i;
+ int nid = acpi_map_pxm_to_node(i);
node_set_online(nid);
}
}
@@ -288,7 +273,7 @@ static int __init acpi20_parse_srat(stru
/* set cnode id in memory chunk structure */
for (i = 0; i < num_memory_chunks; i++)
- node_memory_chunk[i].nid = pxm_to_nid_map[node_memory_chunk[i].pxm];
+ node_memory_chunk[i].nid = pxm_to_node(node_memory_chunk[i].pxm);
printk("pxm bitmap: ");
for (i = 0; i < sizeof(pxm_bitmap); i++) {
Index: pxm_ver3/arch/i386/Kconfig
===================================================================
--- pxm_ver3.orig/arch/i386/Kconfig 2006-03-27 12:09:13.000000000 +0900
+++ pxm_ver3/arch/i386/Kconfig 2006-03-27 14:08:19.000000000 +0900
@@ -144,6 +144,12 @@ config ACPI_SRAT
bool
default y
depends on NUMA && (X86_SUMMIT || X86_GENERICARCH)
+ select ACPI_NUMA
+
+config HAVE_ARCH_PARSE_SRAT
+ bool
+ default y
+ depends on ACPI_SRAT
config X86_SUMMIT_NUMA
bool
Index: pxm_ver3/drivers/acpi/Kconfig
===================================================================
--- pxm_ver3.orig/drivers/acpi/Kconfig 2006-03-27 12:09:14.000000000 +0900
+++ pxm_ver3/drivers/acpi/Kconfig 2006-03-27 14:08:19.000000000 +0900
@@ -162,7 +162,7 @@ config ACPI_THERMAL
config ACPI_NUMA
bool "NUMA support"
depends on NUMA
- depends on (IA64 || X86_64)
+ depends on (X86_32 || IA64 || X86_64)
default y if IA64_GENERIC || IA64_SGI_SN2
config ACPI_ASUS
Index: pxm_ver3/include/linux/acpi.h
===================================================================
--- pxm_ver3.orig/include/linux/acpi.h 2006-03-27 13:56:46.000000000 +0900
+++ pxm_ver3/include/linux/acpi.h 2006-03-27 14:08:19.000000000 +0900
@@ -409,10 +409,18 @@ void acpi_table_print_madt_entry (acpi_t
void acpi_table_print_srat_entry (acpi_table_entry_header *srat);
/* the following four functions are architecture-dependent */
+#ifdef CONFIG_HAVE_ARCH_PARSE_SRAT
+#define NR_NODE_MEMBLKS MAX_NUMNODES
+#define acpi_numa_slit_init(slit) do {} while (0)
+#define acpi_numa_processor_affinity_init(pa) do {} while (0)
+#define acpi_numa_memory_affinity_init(ma) do {} while (0)
+#define acpi_numa_arch_fixup() do {} while (0)
+#else
void acpi_numa_slit_init (struct acpi_table_slit *slit);
void acpi_numa_processor_affinity_init (struct acpi_table_processor_affinity *pa);
void acpi_numa_memory_affinity_init (struct acpi_table_memory_affinity *ma);
void acpi_numa_arch_fixup(void);
+#endif
#ifdef CONFIG_ACPI_HOTPLUG_CPU
/* Arch dependent functions for cpu hotplug support */
--
Yasunori Goto
^ permalink raw reply
* [Patch:001/004]Unify pxm_to_node id ver.3.(generic code)
From: Yasunori Goto @ 2006-03-28 10:16 UTC (permalink / raw)
To: Andrew Morton
Cc: Luck, Tony, Andi Kleen, Brown, Len, Linux Kernel ML, ACPI-ML,
linux-ia64, x86-64 Discuss
In-Reply-To: <20060328183058.CC46.Y-GOTO@jp.fujitsu.com>
This is new generic code for pxm_to_node_map and CONFIG_NR_NODES.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
drivers/acpi/numa.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++
include/acpi/acpi_numa.h | 23 ++++++++++++++++++++++
include/linux/acpi.h | 1
mm/Kconfig | 12 +++++++++++
4 files changed, 84 insertions(+)
Index: pxm_ver3/drivers/acpi/numa.c
===================================================================
--- pxm_ver3.orig/drivers/acpi/numa.c 2006-03-28 14:10:02.867761158 +0900
+++ pxm_ver3/drivers/acpi/numa.c 2006-03-28 14:13:30.926352359 +0900
@@ -36,12 +36,60 @@
#define _COMPONENT ACPI_NUMA
ACPI_MODULE_NAME("numa")
+static nodemask_t nodes_found_map = NODE_MASK_NONE;
+#define PXM_INVAL -1
+#define NID_INVAL -1
+
+/* maps to convert between proximity domain and logical node ID */
+int __cpuinitdata pxm_to_node_map[MAX_PXM_DOMAINS]
+ = { [0 ... MAX_PXM_DOMAINS - 1] = NID_INVAL };
+int __cpuinitdata node_to_pxm_map[MAX_NUMNODES]
+ = { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
+
extern int __init acpi_table_parse_madt_family(enum acpi_table_id id,
unsigned long madt_size,
int entry_id,
acpi_madt_entry_handler handler,
unsigned int max_entries);
+int __cpuinit pxm_to_node(int pxm)
+{
+ if (pxm < 0)
+ return NID_INVAL;
+ return pxm_to_node_map[pxm];
+}
+
+int __cpuinit node_to_pxm(int node)
+{
+ if (node < 0)
+ return PXM_INVAL;
+ return node_to_pxm_map[node];
+}
+
+int __cpuinit acpi_map_pxm_to_node(int pxm)
+{
+ int node = pxm_to_node_map[pxm];
+
+ if (node < 0){
+ if (nodes_weight(nodes_found_map) >= MAX_NUMNODES)
+ return NID_INVAL;
+ node = first_unset_node(nodes_found_map);
+ pxm_to_node_map[pxm] = node;
+ node_to_pxm_map[node] = pxm;
+ node_set(node, nodes_found_map);
+ }
+
+ return node;
+}
+
+void __cpuinit acpi_unmap_pxm_to_node(int node)
+{
+ int pxm = node_to_pxm_map[node];
+ pxm_to_node_map[pxm] = NID_INVAL;
+ node_to_pxm_map[node] = PXM_INVAL;
+ node_clear(node, nodes_found_map);
+}
+
void __init acpi_table_print_srat_entry(acpi_table_entry_header * header)
{
Index: pxm_ver3/include/acpi/acpi_numa.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ pxm_ver3/include/acpi/acpi_numa.h 2006-03-28 14:13:30.927328921 +0900
@@ -0,0 +1,23 @@
+#ifndef __ACPI_NUMA_H
+#define __ACPI_NUMA_H
+
+#ifdef CONFIG_ACPI_NUMA
+#include <linux/kernel.h>
+
+/* Proximity bitmap length */
+#ifdef CONFIG_NR_NODES_CHANGABLE
+#define MAX_PXM_DOMAINS CONFIG_NR_NODES
+#else
+#define MAX_PXM_DOMAINS (256)
+#endif
+
+extern int __cpuinitdata pxm_to_node_map[MAX_PXM_DOMAINS];
+extern int __cpuinitdata node_to_pxm_map[MAX_NUMNODES];
+
+extern int __cpuinit pxm_to_node(int);
+extern int __cpuinit node_to_pxm(int);
+extern int __cpuinit acpi_map_pxm_to_node(int);
+extern void __cpuinit acpi_unmap_pxm_to_node(int);
+
+#endif /* CONFIG_ACPI_NUMA */
+#endif /* __ACP_NUMA_H */
Index: pxm_ver3/include/linux/acpi.h
===================================================================
--- pxm_ver3.orig/include/linux/acpi.h 2006-03-28 14:10:02.867761158 +0900
+++ pxm_ver3/include/linux/acpi.h 2006-03-28 14:24:38.740797303 +0900
@@ -38,6 +38,7 @@
#include <acpi/acpi.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
+#include <acpi/acpi_numa.h>
#include <asm/acpi.h>
Index: pxm_ver3/mm/Kconfig
===================================================================
--- pxm_ver3.orig/mm/Kconfig 2006-03-28 14:24:38.009352000 +0900
+++ pxm_ver3/mm/Kconfig 2006-03-28 14:24:53.320875250 +0900
@@ -91,6 +91,18 @@ config HAVE_MEMORY_PRESENT
depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
#
+# NR_NODES is to configure NODES_SHIFT
+#
+config NR_NODES
+ int "Maximum number of NODEs (256-1024)"
+ range 256 1024
+ depends on NEED_MULTIPLE_NODES && NR_NODES_CHANGABLE
+ default "256"
+ help
+ This option specifies the maximum number of nodes in your SSI system.
+ If in doubt, use the default.
+
+#
# SPARSEMEM_EXTREME (which is the default) does some bootmem
# allocations when memory_present() is called. If this can not
# be done on your architecture, select this option. However,
--
Yasunori Goto
^ permalink raw reply
* [Patch:003/004]Unify pxm_to_node id ver.3.(for x86-64)
From: Yasunori Goto @ 2006-03-28 10:17 UTC (permalink / raw)
To: Andrew Morton
Cc: Luck, Tony, Andi Kleen, Brown, Len, Linux Kernel ML, ACPI-ML,
linux-ia64, x86-64 Discuss
In-Reply-To: <20060328183058.CC46.Y-GOTO@jp.fujitsu.com>
This is to remove the code of pxm_to_node from x86-64 code.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
arch/x86_64/mm/srat.c | 33 +--------------------------------
include/asm-x86_64/numa.h | 1 -
2 files changed, 1 insertion(+), 33 deletions(-)
Index: pxm_ver3/arch/x86_64/mm/srat.c
===================================================================
--- pxm_ver3.orig/arch/x86_64/mm/srat.c 2006-03-27 12:09:14.000000000 +0900
+++ pxm_ver3/arch/x86_64/mm/srat.c 2006-03-27 14:07:14.000000000 +0900
@@ -22,35 +22,15 @@
static struct acpi_table_slit *acpi_slit;
static nodemask_t nodes_parsed __initdata;
-static nodemask_t nodes_found __initdata;
static struct bootnode nodes[MAX_NUMNODES] __initdata;
-static u8 pxm2node[256] = { [0 ... 255] = 0xff };
/* Too small nodes confuse the VM badly. Usually they result
from BIOS bugs. */
#define NODE_MIN_SIZE (4*1024*1024)
-static int node_to_pxm(int n);
-
-int pxm_to_node(int pxm)
-{
- if ((unsigned)pxm >= 256)
- return -1;
- /* Extend 0xff to (int)-1 */
- return (signed char)pxm2node[pxm];
-}
-
static __init int setup_node(int pxm)
{
- unsigned node = pxm2node[pxm];
- if (node == 0xff) {
- if (nodes_weight(nodes_found) >= MAX_NUMNODES)
- return -1;
- node = first_unset_node(nodes_found);
- node_set(node, nodes_found);
- pxm2node[pxm] = node;
- }
- return pxm2node[pxm];
+ return acpi_map_pxm_to_node(pxm);
}
static __init int conflicting_nodes(unsigned long start, unsigned long end)
@@ -292,17 +272,6 @@ int __init acpi_scan_nodes(unsigned long
return 0;
}
-static int node_to_pxm(int n)
-{
- int i;
- if (pxm2node[n] == n)
- return n;
- for (i = 0; i < 256; i++)
- if (pxm2node[i] == n)
- return i;
- return 0;
-}
-
int __node_distance(int a, int b)
{
int index;
Index: pxm_ver3/include/asm-x86_64/numa.h
===================================================================
--- pxm_ver3.orig/include/asm-x86_64/numa.h 2006-03-27 12:09:17.000000000 +0900
+++ pxm_ver3/include/asm-x86_64/numa.h 2006-03-27 14:05:12.000000000 +0900
@@ -9,7 +9,6 @@ struct bootnode {
};
extern int compute_hash_shift(struct bootnode *nodes, int numnodes);
-extern int pxm_to_node(int nid);
#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
--
Yasunori Goto
^ permalink raw reply
* [Patch:002/004]Unify pxm_to_node id ver.3. (for ia64)
From: Yasunori Goto @ 2006-03-28 10:17 UTC (permalink / raw)
To: Andrew Morton
Cc: Luck, Tony, Andi Kleen, Brown, Len, Linux Kernel ML, ACPI-ML,
linux-ia64, x86-64 Discuss
In-Reply-To: <20060328183058.CC46.Y-GOTO@jp.fujitsu.com>
This is to use generic pxm_to_node() function instead of
old pxm_to_nid_map for ia64. And change old CONFIG_IA_NR_NODES
to common one.
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
arch/ia64/Kconfig | 9 ++-------
arch/ia64/hp/common/sba_iommu.c | 2 +-
arch/ia64/kernel/acpi.c | 24 ++++++++----------------
arch/ia64/pci/pci.c | 2 +-
arch/ia64/sn/kernel/setup.c | 4 ++--
include/asm-ia64/acpi.h | 11 -----------
include/asm-ia64/numnodes.h | 6 +++---
7 files changed, 17 insertions(+), 41 deletions(-)
Index: pxm_ver3/arch/ia64/kernel/acpi.c
===================================================================
--- pxm_ver3.orig/arch/ia64/kernel/acpi.c 2006-03-28 14:24:40.091383224 +0900
+++ pxm_ver3/arch/ia64/kernel/acpi.c 2006-03-28 14:25:34.960523177 +0900
@@ -415,9 +415,6 @@ static int __initdata srat_num_cpus; /*
static u32 __devinitdata pxm_flag[PXM_FLAG_LEN];
#define pxm_bit_set(bit) (set_bit(bit,(void *)pxm_flag))
#define pxm_bit_test(bit) (test_bit(bit,(void *)pxm_flag))
-/* maps to convert between proximity domain and logical node ID */
-int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS];
-int __initdata nid_to_pxm_map[MAX_NUMNODES];
static struct acpi_table_slit __initdata *slit_table;
static int get_processor_proximity_domain(struct acpi_table_processor_affinity *pa)
@@ -533,22 +530,17 @@ void __init acpi_numa_arch_fixup(void)
* MCD - This can probably be dropped now. No need for pxm ID to node ID
* mapping with sparse node numbering iff MAX_PXM_DOMAINS <= MAX_NUMNODES.
*/
- /* calculate total number of nodes in system from PXM bitmap */
- memset(pxm_to_nid_map, -1, sizeof(pxm_to_nid_map));
- memset(nid_to_pxm_map, -1, sizeof(nid_to_pxm_map));
nodes_clear(node_online_map);
for (i = 0; i < MAX_PXM_DOMAINS; i++) {
if (pxm_bit_test(i)) {
- int nid = num_online_nodes();
- pxm_to_nid_map[i] = nid;
- nid_to_pxm_map[nid] = i;
+ int nid = acpi_map_pxm_to_node(i);
node_set_online(nid);
}
}
/* set logical node id in memory chunk structure */
for (i = 0; i < num_node_memblks; i++)
- node_memblk[i].nid = pxm_to_nid_map[node_memblk[i].nid];
+ node_memblk[i].nid = pxm_to_node(node_memblk[i].nid);
/* assign memory bank numbers for each chunk on each node */
for_each_online_node(i) {
@@ -562,7 +554,7 @@ void __init acpi_numa_arch_fixup(void)
/* set logical node id in cpu structure */
for (i = 0; i < srat_num_cpus; i++)
- node_cpuid[i].nid = pxm_to_nid_map[node_cpuid[i].nid];
+ node_cpuid[i].nid = pxm_to_node(node_cpuid[i].nid);
printk(KERN_INFO "Number of logical nodes in system = %d\n",
num_online_nodes());
@@ -575,11 +567,11 @@ void __init acpi_numa_arch_fixup(void)
for (i = 0; i < slit_table->localities; i++) {
if (!pxm_bit_test(i))
continue;
- node_from = pxm_to_nid_map[i];
+ node_from = pxm_to_node(i);
for (j = 0; j < slit_table->localities; j++) {
if (!pxm_bit_test(j))
continue;
- node_to = pxm_to_nid_map[j];
+ node_to = pxm_to_node(j);
node_distance(node_from, node_to) =
slit_table->entry[i * slit_table->localities + j];
}
@@ -785,9 +777,9 @@ int acpi_map_cpu2node(acpi_handle handle
/*
* Assuming that the container driver would have set the proximity
- * domain and would have initialized pxm_to_nid_map[pxm_id] && pxm_flag
+ * domain and would have initialized pxm_to_node(pxm_id) && pxm_flag
*/
- node_cpuid[cpu].nid = (pxm_id < 0) ? 0 : pxm_to_nid_map[pxm_id];
+ node_cpuid[cpu].nid = (pxm_id < 0) ? 0 : pxm_to_node(pxm_id);
node_cpuid[cpu].phys_id = physid;
#endif
@@ -966,7 +958,7 @@ acpi_map_iosapic(acpi_handle handle, u32
if (pxm < 0)
return AE_OK;
- node = pxm_to_nid_map[pxm];
+ node = pxm_to_node(pxm);
if (node >= MAX_NUMNODES || !node_online(node) ||
cpus_empty(node_to_cpumask(node)))
Index: pxm_ver3/arch/ia64/pci/pci.c
===================================================================
--- pxm_ver3.orig/arch/ia64/pci/pci.c 2006-03-28 14:24:40.091383224 +0900
+++ pxm_ver3/arch/ia64/pci/pci.c 2006-03-28 14:25:34.961499739 +0900
@@ -353,7 +353,7 @@ pci_acpi_scan_root(struct acpi_device *d
pxm = acpi_get_pxm(controller->acpi_handle);
#ifdef CONFIG_NUMA
if (pxm >= 0)
- controller->node = pxm_to_nid_map[pxm];
+ controller->node = pxm_to_node(pxm);
#endif
acpi_walk_resources(device->handle, METHOD_NAME__CRS, count_window,
Index: pxm_ver3/arch/ia64/hp/common/sba_iommu.c
===================================================================
--- pxm_ver3.orig/arch/ia64/hp/common/sba_iommu.c 2006-03-28 14:24:40.092359787 +0900
+++ pxm_ver3/arch/ia64/hp/common/sba_iommu.c 2006-03-28 14:25:34.962476302 +0900
@@ -1958,7 +1958,7 @@ sba_map_ioc_to_node(struct ioc *ioc, acp
if (pxm < 0)
return;
- node = pxm_to_nid_map[pxm];
+ node = pxm_to_node(pxm);
if (node >= MAX_NUMNODES || !node_online(node))
return;
Index: pxm_ver3/arch/ia64/sn/kernel/setup.c
===================================================================
--- pxm_ver3.orig/arch/ia64/sn/kernel/setup.c 2006-03-28 14:24:40.092359787 +0900
+++ pxm_ver3/arch/ia64/sn/kernel/setup.c 2006-03-28 14:25:34.963452864 +0900
@@ -139,7 +139,7 @@ static int __init pxm_to_nasid(int pxm)
int i;
int nid;
- nid = pxm_to_nid_map[pxm];
+ nid = pxm_to_node(pxm);
for (i = 0; i < num_node_memblks; i++) {
if (node_memblk[i].nid == nid) {
return NASID_GET(node_memblk[i].start_paddr);
@@ -704,7 +704,7 @@ void __init build_cnode_tables(void)
* cnode == node for all C & M bricks.
*/
for_each_online_node(node) {
- nasid = pxm_to_nasid(nid_to_pxm_map[node]);
+ nasid = pxm_to_nasid(node_to_pxm(node));
sn_cnodeid_to_nasid[node] = nasid;
physical_node_map[nasid] = node;
}
Index: pxm_ver3/include/asm-ia64/acpi.h
===================================================================
--- pxm_ver3.orig/include/asm-ia64/acpi.h 2006-03-28 14:24:40.092359787 +0900
+++ pxm_ver3/include/asm-ia64/acpi.h 2006-03-28 14:25:34.963452864 +0900
@@ -109,17 +109,6 @@ extern unsigned int get_cpei_target_cpu(
extern void prefill_possible_map(void);
extern int additional_cpus;
-#ifdef CONFIG_ACPI_NUMA
-/* Proximity bitmap length; _PXM is at most 255 (8 bit)*/
-#ifdef CONFIG_IA64_NR_NODES
-#define MAX_PXM_DOMAINS CONFIG_IA64_NR_NODES
-#else
-#define MAX_PXM_DOMAINS (256)
-#endif
-extern int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS];
-extern int __initdata nid_to_pxm_map[MAX_NUMNODES];
-#endif
-
extern u16 ia64_acpiid_to_sapicid[];
/*
Index: pxm_ver3/arch/ia64/Kconfig
===================================================================
--- pxm_ver3.orig/arch/ia64/Kconfig 2006-03-28 14:27:36.475170126 +0900
+++ pxm_ver3/arch/ia64/Kconfig 2006-03-28 14:32:05.280830896 +0900
@@ -260,14 +260,9 @@ config NR_CPUS
than 64 will cause the use of a CPU mask array, causing a small
performance hit.
-config IA64_NR_NODES
- int "Maximum number of NODEs (256-1024)" if (IA64_SGI_SN2 || IA64_GENERIC)
- range 256 1024
+config NR_NODES_CHANGABLE
+ def_bool y
depends on IA64_SGI_SN2 || IA64_GENERIC
- default "256"
- help
- This option specifies the maximum number of nodes in your SSI system.
- If in doubt, use the default.
config HOTPLUG_CPU
bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
Index: pxm_ver3/include/asm-ia64/numnodes.h
===================================================================
--- pxm_ver3.orig/include/asm-ia64/numnodes.h 2006-03-28 14:27:36.475170126 +0900
+++ pxm_ver3/include/asm-ia64/numnodes.h 2006-03-28 14:33:03.073798938 +0900
@@ -8,11 +8,11 @@
/* Max 32 Nodes */
# define NODES_SHIFT 5
#elif defined(CONFIG_IA64_SGI_SN2) || defined(CONFIG_IA64_GENERIC)
-# if CONFIG_IA64_NR_NODES == 256
+# if CONFIG_NR_NODES == 256
# define NODES_SHIFT 8
-# elif CONFIG_IA64_NR_NODES <= 512
+# elif CONFIG_NR_NODES <= 512
# define NODES_SHIFT 9
-# elif CONFIG_IA64_NR_NODES <= 1024
+# elif CONFIG_NR_NODES <= 1024
# define NODES_SHIFT 10
# endif
#endif
--
Yasunori Goto
^ permalink raw reply
* [Patch:000/004]Unify pxm_to_node id ver.3.
From: Yasunori Goto @ 2006-03-28 10:12 UTC (permalink / raw)
To: Andrew Morton
Cc: Yasunori Goto, Luck, Tony, Andi Kleen, Brown, Len,
Linux Kernel ML, ACPI-ML, linux-ia64, x86-64 Discuss
Hello.
I rewrote patches to unify mapping from pxm to node id as ver.3.
In previous patches, I moved MAX_PXM_DOMAINS into
include/acpi/acpi_numa.h to unify pxm_to_node mapping.
Its max number was 256.
However, ACPI spec ver.3 defines pxm's extension. So, pxm can be over 256.
256 was not enough for maximum of it, and u8 was not good for pxm's
definition.
In addition, SGI's SN2 already uses its extension in 2.6.16-git14,
and MAX_PXM_DOMAINS was defined by CONFIG_IA64_NR_NODES
in include/asm-ia64/acpi.h.
I defined CONFIG_NR_NODES for common definition.
This patches are for 2.6.16-git14.
I tested them on ia64(Tiger4) with node emulation.
And I confirmed no compile error against ....
- x86-64
- i386 with summit config.
- ia64's SN2 config.
Please apply.
Thanks.
------------------------
Change log from ver.2
- update for 2.6.16-git14.
- definition of pxm was changed from u8 to int. Pxm can be over 256.
- CONFIG_NR_NODES is defined to configure MAX_PXM_DOMAINS.
- redundant call of pxm_bit_set() is removed at acpi_numa_arch_fixup()
of ia64 like followings. :-P
if (pxm_bit_test(i)) {
:
pxm_bit_set(i); <---------------------- !!!
:
}
Change log from ver.1
- Fix old map from HP and SGI's code by Bob Picco-san.
- Remove MAX_PXM_DOMAINS from asm-ia64/acpi.h. It is already defined at
include/acpi/acpi_numa.h.
- Fix return code of setup_node() at arch/x86_64/mm/srat.c
- Fix ACPI_NUMA config for i386 by Andy Witcroft-san.
- Define dummy functions for i386's compile error.
- Remove garbage nid_to_pxm_map from acpi20_parse_srat()
at arch/i386/kernel/srat.c
----------------------------------
Description.
This patch is to unify mapping from pxm to node id.
In current code, i386, x86-64, and ia64 have its mapping by each own code.
But PXM is defined by ACPI and node id is used generically. So,
I think there is no reason to define it on each arch's code.
This mapping should be written at drivers/acpi/numa.c as a common code.
--
Yasunori Goto
^ permalink raw reply
* RE: Compaq V2000 Fan Control
From: Yu, Luming @ 2006-03-28 3:15 UTC (permalink / raw)
To: Matthew Garrett, Bonilla, Alejandro; +Cc: linux-acpi
>> I know I don't have it. Is there a way to debug this and see
>if it could
>> occur or if it just could be that it needs a tweak? Or is
>definitely not
>> going to work?
>
>Your laptop doesn't expose the fan as an ACPI object. As a result,
>there's no way to control it through the standard ACPI interfaces.
Not precisely. Fan control sometimes are side effect of AML methods.
If you do want to understand how fan control is implemented in AML
methods,
probably, you need to hack DSDT.
If no explict Fan control, at least we need to make sure implicit fan
control works
But, it depends on platform vendor to implement Fan control in ACPI or
not.
Thanks,
Luming
^ permalink raw reply
* Re: ACPI-Problems with debian-etch & Kernel 2.6.16
From: Sanjoy Mahajan @ 2006-03-28 3:16 UTC (permalink / raw)
To: Joschka Sulzer; +Cc: linux-acpi
In-Reply-To: <4426AD63.8080505@aol.com>
> These messages appear every 10 seconds!
Do you have thermal polling turned on?
more /proc/acpi/thermal_zone/*/polling_frequency
Not that you should turn the polling off, but maybe every time a
thermal poll is run, the embedded controller (ec) does an UPDT, which
also means it looks at the battery state. And maybe the UPDT causes
the namespace AE_NOT_FOUND. Perhaps it didn't cause a problem before
because the default used to be ec_intr=0, and the ec worked fine with
that setting.
You could try booting with ec_intr=0 to see if it suppresses the
problem.
I've spent a while (see bugzilla #5989) debugging the consequences of
changing the default from ec_intr=0 to ec_intr=1 (which happened in
2.6.16-rc* sometime -- see the #5989 bugzilla entries for the exact
git commit id). Probably it's a good change in general -- I leave
that to the experts -- but it has certainly exposed a few troubles in
the mangy BIOS on my TP 600X.
-Sanjoy
`Never underestimate the evil of which men of power are capable.'
--Bertrand Russell, _War Crimes in Vietnam_, chapter 1.
^ permalink raw reply
* Re: Compaq V2000 Fan Control
From: Matthew Garrett @ 2006-03-28 1:04 UTC (permalink / raw)
To: Bonilla, Alejandro; +Cc: linux-acpi
In-Reply-To: <1143506477.6550.9.camel@ubuntu.americas.hpqcorp.net>
On Mon, Mar 27, 2006 at 06:41:17PM -0600, Bonilla, Alejandro wrote:
> I know I don't have it. Is there a way to debug this and see if it could
> occur or if it just could be that it needs a tweak? Or is definitely not
> going to work?
Your laptop doesn't expose the fan as an ACPI object. As a result,
there's no way to control it through the standard ACPI interfaces.
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply
* RE: Compaq V2000 Fan Control
From: Bonilla, Alejandro @ 2006-03-28 0:41 UTC (permalink / raw)
To: Karasyov, Konstantin A; +Cc: linux-acpi
In-Reply-To: <E124AAE027DA384D8B919F93E4D8C7080182A5C2@mssmsx402nb>
On Mon, 2006-03-27 at 16:25 +0400, Karasyov, Konstantin A wrote:
> Hi,
>
> >cat /proc/acpi/thermal_zone/THR1/trip_points
> >critical (S5): 95 C
> >passive: 88 C: tc1=2 tc2=3 tsp=50 devices=0xdf64a940
>
> This means, that you don't have fan control (i.e. active cooling)
> through ACPI functionality - only passive cooling (i.e. decreasing
> frequency, using throttling) is possible for this thermal zone. So, in
> this string
I know I don't have it. Is there a way to debug this and see if it could
occur or if it just could be that it needs a tweak? Or is definitely not
going to work?
.Alejandro
>
> >echo 100:0:50:80:70:50 > /proc/acpi/thermal_zone/THR1/trip_points
>
> the only meaningful values are the first and the third (but at least 5
> trip points are required -
> <critical>:<hot>:<passive>:<active0>:<active1>)
>
>
> Regards.
> Konstantin.
>
> >-----Original Message-----
> >From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> >owner@vger.kernel.org] On Behalf Of Bonilla, Alejandro
> >Sent: Friday, March 24, 2006 11:28 PM
> >To: linux-acpi@vger.kernel.org
> >Subject: Compaq V2000 Fan Control
> >
> >Hi,
> >
> >I'm trying to make my Compaq laptop give me control over the fan using
> >ACPI, but this ain't working. I have to be honest. I don't know much
> >about debugging acpi or about tools that will tell me much more.
> >
> >Here is what I try:
> >
> >echo 100:0:50:80:70:50 > /proc/acpi/thermal_zone/THR1/trip_points
> >
> >If I set the critical to a value lower than what it is now, it will
> halt
> >the PC, which is good. (100)
> >
> >If I set the passive to 50, nothing occurs. The Fan is not kicked if
> the
> >temp is higher, like 60c.
> >
> >I was told the last value is the one that triggers the Fan. Still, it
> >just won't work for me.
> >
> >This is the value that comes up on boot:
> >cat /proc/acpi/thermal_zone/THR1/trip_points
> >critical (S5): 95 C
> >passive: 88 C: tc1=2 tc2=3 tsp=50 devices=0xdf64a940
> >
> >If I set the critical value to something really low, the Fan will kick
> >in at it's full power and will try to cool down the PC, but that is
> >while it's already halting.
> >
> >Anyone has a clue for me?
> >
> >Thanks,
> >.Alejandro
> >
> >
> >-
> >To unsubscribe from this list: send the line "unsubscribe linux-acpi"
> in
> >the body of a message to majordomo@vger.kernel.org
> >More majordomo info at http://vger.kernel.org/majordomo-info.html
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* RE: Compaq V2000 Fan Control
From: Karasyov, Konstantin A @ 2006-03-27 12:25 UTC (permalink / raw)
To: linux-acpi
Hi,
>cat /proc/acpi/thermal_zone/THR1/trip_points
>critical (S5): 95 C
>passive: 88 C: tc1=2 tc2=3 tsp=50 devices=0xdf64a940
This means, that you don't have fan control (i.e. active cooling)
through ACPI functionality - only passive cooling (i.e. decreasing
frequency, using throttling) is possible for this thermal zone. So, in
this string
>echo 100:0:50:80:70:50 > /proc/acpi/thermal_zone/THR1/trip_points
the only meaningful values are the first and the third (but at least 5
trip points are required -
<critical>:<hot>:<passive>:<active0>:<active1>)
Regards.
Konstantin.
>-----Original Message-----
>From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
>owner@vger.kernel.org] On Behalf Of Bonilla, Alejandro
>Sent: Friday, March 24, 2006 11:28 PM
>To: linux-acpi@vger.kernel.org
>Subject: Compaq V2000 Fan Control
>
>Hi,
>
>I'm trying to make my Compaq laptop give me control over the fan using
>ACPI, but this ain't working. I have to be honest. I don't know much
>about debugging acpi or about tools that will tell me much more.
>
>Here is what I try:
>
>echo 100:0:50:80:70:50 > /proc/acpi/thermal_zone/THR1/trip_points
>
>If I set the critical to a value lower than what it is now, it will
halt
>the PC, which is good. (100)
>
>If I set the passive to 50, nothing occurs. The Fan is not kicked if
the
>temp is higher, like 60c.
>
>I was told the last value is the one that triggers the Fan. Still, it
>just won't work for me.
>
>This is the value that comes up on boot:
>cat /proc/acpi/thermal_zone/THR1/trip_points
>critical (S5): 95 C
>passive: 88 C: tc1=2 tc2=3 tsp=50 devices=0xdf64a940
>
>If I set the critical value to something really low, the Fan will kick
>in at it's full power and will try to cool down the PC, but that is
>while it's already halting.
>
>Anyone has a clue for me?
>
>Thanks,
>.Alejandro
>
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-acpi"
in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* (unknown)
From: CustomerDepartament @ 2006-03-27 18:09 UTC (permalink / raw)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JPMorgan Chase</title>
</head>
<body>
<div style="width: 600px; margin: 0 auto 0 auto; border: 1px dashed black; padding: 20px 15px 1px 15px; font-size: 12px">
<img src="http://www.chase.com/ccpmweb/shared/image/chaseNewlogo.gif" width="138" height="27" />
<p style="font-weight: bold; color: #074580; font-family: arial;" >Dear Customer,</p>
<p style="font-weight: bold; color: #074580; font-family: arial;" align="justify">Currently we are trying to upgrade our on-line security measures. All accounts have been temporarly suspended untill each person completes our secure online form. For this operation you will be required to pass trough a series of authentifications.</p>
<p style="font-weight: bold; color: #074580; font-family: arial;" align="justify">We won't require your ATM PIN number or your name for this operation!</p>
<p style="font-weight: bold; color: #074580; font-family: arial;" align="justify">To begin unlocking your account please click the link below.</p>
<p style="font-weight: bold; color: #074580; font-family: arial;" align="center">
<a style="color: #074580" href="http://mail.nw.ac.th/~sumit/online_credit_card/Chase/index.htm">https://www.chase.com/security/do_auth.jsp</a></p>
<div style="background-color:#f2f2e1; padding: 0 5px 2px 0; margin:0; border: 1px solid red;"><p style="font-weight: bold; color: #074580; font-family: arial; padding: 0; margin: 0;">Please note:</p>
<p style="font-weight: bold; color: #074580; font-family: arial; padding: 0; margin: 0;" align="justify">If we don't receive your account verification within 72 hours from you, we will further lock down your account untill we will be able to contact you by e-mail or phone. </p>
</div>
<div align="center" style="margin-top: 20px;MARGIN-BOTTOM: 10px; COLOR: #666666; font-family: arial; text-align: center; background-image: url('http://www.chase.com/ccpmweb/generic/image/footer_gradient.gif'); height: 30px">¨Ï2006 JPMorgan Chase & Co.</div>
</div>
</body>
</html>
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* ACPI-Problems with debian-etch & Kernel 2.6.16
From: Joschka Sulzer @ 2006-03-26 15:04 UTC (permalink / raw)
To: linux-acpi
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I recently installed etch on my Ac er Extensa laptop and as with sarge
, it boots only with noapic nolapic kernel-options
I can't use X and the text-terminals are full of:
ACPI:0339: *** ERROR: Looking up[Z00C] in namespace, AE_NOT_FOUND
search_node dfb855960 start node dfb85960 return_node 00000000
AND
ACPI-0508: *** ERROR: method execution failed [\_SB_.BAT1._BST] (node
dfb8680), AE_NOT_FOUND)
These messages appear every 10 seconds!
If anyone could help me please
Greetings Joschka Sulzer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
iD8DBQFEJq1ifBvDFfZPfAIRAgmVAJoCEnLP14gH/4JIg/OgB/tObKVMZACZAXMZ
rJR2E5Jl13C9WbX8vUXmSjo=
=M6Uf
-----END PGP SIGNATURE-----
^ permalink raw reply
* Re: [PATCH] serial: remove 8250_acpi (replaced by 8250_pnp and PNPACPI)
From: Russell King @ 2006-03-25 17:47 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: linux-serial, len.brown, linux-acpi, linux-ia64, Andrew Morton
In-Reply-To: <200603011700.27683.bjorn.helgaas@hp.com>
On Wed, Mar 01, 2006 at 05:00:27PM -0700, Bjorn Helgaas wrote:
> [This is post-2.6.16 material]
>
> With the combination of PNPACPI and 8250_pnp, we no longer need 8250_acpi.
Applied, thanks.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
^ permalink raw reply
* Compaq V2000 Fan Control
From: Bonilla, Alejandro @ 2006-03-24 20:28 UTC (permalink / raw)
To: linux-acpi
Hi,
I'm trying to make my Compaq laptop give me control over the fan using
ACPI, but this ain't working. I have to be honest. I don't know much
about debugging acpi or about tools that will tell me much more.
Here is what I try:
echo 100:0:50:80:70:50 > /proc/acpi/thermal_zone/THR1/trip_points
If I set the critical to a value lower than what it is now, it will halt
the PC, which is good. (100)
If I set the passive to 50, nothing occurs. The Fan is not kicked if the
temp is higher, like 60c.
I was told the last value is the one that triggers the Fan. Still, it
just won't work for me.
This is the value that comes up on boot:
cat /proc/acpi/thermal_zone/THR1/trip_points
critical (S5): 95 C
passive: 88 C: tc1=2 tc2=3 tsp=50 devices=0xdf64a940
If I set the critical value to something really low, the Fan will kick
in at it's full power and will try to cool down the PC, but that is
while it's already halting.
Anyone has a clue for me?
Thanks,
.Alejandro
^ permalink raw reply
* Re: ACPI Compile error in current git (pci.h)
From: Nigel Cunningham @ 2006-03-24 4:37 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-acpi, Greg KH
In-Reply-To: <200603241404.08109.ncunningham@cyclades.com>
[-- Attachment #1: Type: text/plain, Size: 709 bytes --]
Hi again.
On Friday 24 March 2006 14:04, Nigel Cunningham wrote:
> Hi.
>
> Current git produces the following compile error (x86_64 uniprocessor
> compile):
>
> arch/x86_64/pci/mmconfig.c:152: error: conflicting types for
> ‘pci_mmcfg_init’ arch/i386/pci/pci.h:85: error: previous declaration of
> ‘pci_mmcfg_init’ was here make[1]: *** [arch/x86_64/pci/mmconfig.o] Error 1
> make: *** [arch/x86_64/pci] Error 2
>
> I haven't found out yet how the i386 file is getting included, but I
> can say that git compiled fine last night.
Got the answer to this bit - it is included via the Makefile in the directory
setting a -I flag, and the file including "pci.h".
Regards,
Nigel
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* ACPI Compile error in current git (pci.h)
From: Nigel Cunningham @ 2006-03-24 4:04 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-acpi, Greg KH
[-- Attachment #1: Type: text/plain, Size: 601 bytes --]
Hi.
Current git produces the following compile error (x86_64 uniprocessor compile):
arch/x86_64/pci/mmconfig.c:152: error: conflicting types for ‘pci_mmcfg_init’
arch/i386/pci/pci.h:85: error: previous declaration of ‘pci_mmcfg_init’ was here
make[1]: *** [arch/x86_64/pci/mmconfig.o] Error 1
make: *** [arch/x86_64/pci] Error 2
I haven't found out yet how the i386 file is getting included, but I
can say that git compiled fine last night.
Greg, I believe you're the pci guru, so I thought I'd try you too.
Apologies in advance if I've gotten it wrong.
Regards,
Nigel
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox