Re: [PATCH 0/5] Laptop driver documentation changes for 2.6.25

2008-02-11 Thread Randy Dunlap
On Sat, 09 Feb 2008 01:31:57 + Carlos Corbacho wrote:

 The following series implements the proposed creation of 
 Documentation/laptops,
 and the movement of all the laptop driver documentation to this directory. 
 I've
 also taken the opportunity to tack on the acer-wmi documentation in the final
 patch of this series.
 
 Because all the drivers in question go through the ACPI tree anyway, it's
 probably easiest if this change goes through the ACPI tree as well.
 
 This should all be 2.6.25 material, since there is no code change here, just
 rearranging the Documentation files, and updating Kconfig entries where
 required. I've also tested this series against Linus' latest git tree, with no
 problems applying it there.
 

Hi,
so should we also move Documentation/laptop-mode.txt to laptops/ dir?

 
 Carlos Corbacho (5):
   acer-wmi - Add documentation
   sonypi - Move sonypi.txt to Documentation/laptops
   sony-laptop - Move sony-laptop.txt to Documentation/laptops
   thinkpad-acpi - Move thinkpad-acpi.txt to Documentation/laptops
   Documentation - Create laptops sub-directory
 
 
  Documentation/00-INDEX  |8 
  Documentation/laptops/00-INDEX  |   10 
  Documentation/laptops/acer-wmi.txt  |  202 +
  Documentation/laptops/sony-laptop.txt   |  117 +++
  Documentation/laptops/sonypi.txt|  152 +++
  Documentation/laptops/thinkpad-acpi.txt | 1365 
 +++
  Documentation/sony-laptop.txt   |  117 ---
  Documentation/sonypi.txt|  152 ---
  Documentation/thinkpad-acpi.txt | 1365 
 ---
  drivers/char/Kconfig|2 
  drivers/misc/Kconfig|   10 
  11 files changed, 1856 insertions(+), 1644 deletions(-)
  create mode 100644 Documentation/laptops/00-INDEX
  create mode 100644 Documentation/laptops/acer-wmi.txt
  create mode 100644 Documentation/laptops/sony-laptop.txt
  create mode 100644 Documentation/laptops/sonypi.txt
  create mode 100644 Documentation/laptops/thinkpad-acpi.txt
  delete mode 100644 Documentation/sony-laptop.txt
  delete mode 100644 Documentation/sonypi.txt
  delete mode 100644 Documentation/thinkpad-acpi.txt

---
~Randy
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: BIOS _OSI(Linux) query ignored - PowerEdge 1950

2008-02-11 Thread Krzysztof Oledzki



On Mon, 11 Feb 2008, Krzysztof Oledzki wrote:




On Sun, 10 Feb 2008, Len Brown wrote:


On Sunday 10 February 2008 17:09, Krzysztof Oledzki wrote:

Hello,

ACPI: EC: Look up EC in DSDT
ACPI: BIOS _OSI(Linux) query ignored
ACPI: DMI System Vendor: Dell Inc.
ACPI: DMI Product Name: PowerEdge 1950
ACPI: DMI Product Version:
ACPI: DMI Board Name: 0TT740
ACPI: DMI BIOS Vendor: Dell Inc.
ACPI: DMI BIOS Date: 10/27/2007
ACPI: Please send DMI info above to linux-acpi@vger.kernel.org



please send me the output from acpidump.


Attached.


Strange. I have one more identical server but acpidump is for unknown 
reason different. Also attached.


Best regards,

Krzysztof Olędzki

acpidump-dell1950-v2.gz
Description: Binary data


Re: [Bug-fix]:2.6.25-rc0 Generic thermal management [Patch 1/2]: validating input parameters

2008-02-11 Thread Andrew Morton
On Mon, 11 Feb 2008 15:57:06 +0530
Thomas, Sujith [EMAIL PROTECTED] wrote:

 From: Thomas Sujith [EMAIL PROTECTED]
 
 Added sanity checks for interface functions in thermal with
 other modules such as fan, processor, video etc..
 
 Signed-off-by: Thomas Sujith [EMAIL PROTECTED]
 ---
 drivers/thermal/thermal.c |   69
 +-

The patch is fairly seriously wordwrapped.

  1 files changed, 44 insertions(+), 25 deletions(-)
 
 Index: linux-2.6.24-rc3/drivers/thermal/thermal.c
 ===
 --- linux-2.6.24-rc3.orig/drivers/thermal/thermal.c
 +++ linux-2.6.24-rc3/drivers/thermal/thermal.c
 @@ -301,13 +301,27 @@ int thermal_zone_bind_cooling_device(str
  {
   struct thermal_cooling_device_instance *dev;
   struct thermal_cooling_device_instance *pos;
 + struct thermal_zone_device *pos1;
 + struct thermal_cooling_device *pos2;
   int result;
  
 + if (!tz || !cdev)
 + return -EINVAL;

Is this change actually needed?  It's sloppy for a caller to be passing
invalid arguments into a callee, and it's not good for the callee to just
hide that sloppiness.

 - return NULL;
 + return  ERR_PTR(-EINVAL);

the patch adds several spaces like this in places where we don't normally
put them.


-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/5] Provide acpi_check_{mem_}region.

2008-02-11 Thread Jean Delvare
On Mon, 11 Feb 2008 11:55:46 -0800, Andrew Morton wrote:
 On Sun, 10 Feb 2008 13:25:36 +0100 Jean Delvare wrote:
  Andrew, both patches are
  
  Acked-by: Jean Delvare [EMAIL PROTECTED]
 
 We already have Signed-off-by:you, which I figure outranks acked-by: ;)

Yeah but that wasn't the same me. That was me-developer-at-suse,
who doesn't yet have the same aura as
me-maintainer-of-i2c-and-former-maintainer-of-hwmon ;)

  and I am totally fine with you pushing them to Linus now. But of course
  having Mark's ack would be good too.
 
 That would be nice.  But I'll merge them mid-week anyway unless Mark actually
 nacks them:
 
 http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-hwmon-drivers.patch
 
 http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch

Yeah, sounds like a good plan, thanks for taking care.

-- 
Jean Delvare
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PATCH] ACPI patches for 2.6.25-rc0 (#2)

2008-02-11 Thread Carlos Corbacho
On Monday 11 February 2008 09:17:43 Ingo Molnar wrote:
 no, it does not help - see the attached .config and the crash.log.

Thanks Ingo - the cause of the crash is ACPI being disabled on your system for 
some reason. I can reproduce your crash every time here with acpi=off.

The two WMI based drivers (acer-wmi, tc1100-wmi) in the kernel both need a 
simple patch each to fix this - patches to follow.

-Carlos
-- 
E-Mail: [EMAIL PROTECTED]
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Exposing WMI on Linux

2008-02-11 Thread Anas Nashif
Len,
Ok, I will take a deep dive into this and try to provide answers to the
questions below, including how to use the data in management frameworks such as
CIMOMs.

Anas

Len Brown wrote:
 On Wednesday 30 May 2007 16:12, you wrote:
 Here are some pointers as promised:

 http://developer.novell.com/wiki/index.php/OMC

 This is a Novell project with many providers dealing will many aspects
 of the OS. They also provide RPMs for OpenSUSE and is the main source
 for the OpenWBEM CIMOM binaries for SUSE.

 http://sblim.wiki.sourceforge.net/

 Is the IBM project dealing with instrumentation and home of the SFCB
 CIMOM targeting embedded environments and only supports CMPI providers.

 http://sblim.wiki.sourceforge.net/ProviderCmpiSysfs is a sysfs provider.
 Seems to be old but is a good example.

 http://openpegasus.org/

 This is the home of the OpenPeagsus CIMOM, supported by multiple
 vendors.

 http://www.dmtf.org/standards/wbem/ is about the WBEM protocol. Also the
 tutorial is good: http://www.wbemsolutions.com/tutorials/CIM/wbem.html

 http://cimple.org/ tries to make writing providers easy.

 
 Anas,
 We could use some help on how to expose WMI to user-space in Linux.
 (Then we could use some help on user-space using that interface:-)
 
 Carlos has cooked up an ACPI-WMI mapping driver for Linux,
 and has two in-kernel platform specific drivers that want
 to talk to it (acer-laptop and HP Compaq TC1100 Tablets),
 and Matthew has been poking at an HP driver to use WMI
 to access some laptop functionas as well.
 
 But nobody is thinking about how to hook this up
 to the user-space management infrastructure in Linux,
 and what the kernel/user interface to to best do
 that would be.
 
 Carlos prototyped a sysfs I/F, but that doesn't seem to fit
 the WMI transaction model, so he's wondering if an ioctl
 I/F would be more appropriate where transaction consistency
 can be enforced by the driver, perhaps with a library
 on top of it.
 
 Please advise.
 
 thanks,
 -Len
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH][drivers/pnp/pnpacpi/core.c] __initdata is not an identifier

2008-02-11 Thread Roel Kluin
sparse complains at drivers/pnp/pnpacpi/core.c:39 with the error:
Trying to use reserved word '__attribute__' as identifier
Expected ) in function declarator, got .init.data

and at drivers/pnp/pnpacpi/core.c:49:38 with the error: 
undefined identifier 'excluded_id_list'

With the patch below these sparse complaints do not occur
---
__initdata is not an identifier

Signed-off-by: Roel Kluin [EMAIL PROTECTED]
---
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
index 662b4c2..c283a9a 100644
--- a/drivers/pnp/pnpacpi/core.c
+++ b/drivers/pnp/pnpacpi/core.c
@@ -36,7 +36,7 @@ static int num = 0;
  * have irqs (PIC, Timer) because we call acpi_register_gsi.
  * Finally, only devices that have a CRS method need to be in this list.
  */
-static struct __initdata acpi_device_id excluded_id_list[] = {
+static struct acpi_device_id excluded_id_list[] __initdata = {
{PNP0C09, 0}, /* EC */
{PNP0C0F, 0}, /* Link device */
{PNP, 0}, /* PIC */
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


power comsumption low and raise then

2008-02-11 Thread Baeckham
I am running kernel 2.6.24.1 on my Core2Duo Laptop. I trying to measure and 
lower the power consumption.

I noticed that after I logged in and started KDE (3.5.8) the system needs only 
little power (about 9 W, measured with an external power meter, no battery 
plugged in). But then usually after 10-15 minutes the power consumption 
raises to 22-25 W. I did not start any extra programs, I do not touch the 
system at all just watching the powermeter ... The system is idle all the 
time and I do not see any significant output in syslog.

I trying to find out what might cause this behavior. But I am at a loss.
Can anyone help me to find out what is causing this behavior? 

Steffen
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: 2.6.25-rc1 regression - suspend to ram

2008-02-11 Thread Venki Pallipadi
On Tue, Feb 12, 2008 at 12:10:54AM +0100, R. J. Wysocki wrote:
 On Monday, 11 of February 2008, Lukas Hejtmanek wrote:
  Hello,
 
 Hi,
  
  2.6.25-rc1 takes really long time till it suspends (about 30-40secs, used to
  be about 5 secs at all) and it is resuming about few minutes.  While 
  resuming,
  capslock toggles the capslock led but with few secs delay.
  
  2.6.24-git15 was OK. 2.6.24 is OK.
  
  I have Lenovo ThinkPad T61.
 
 If you have CONFIG_CPU_IDLE set, please try to boot with idle=poll and see if
 that helps.
 

Just sent this patch to fix a regression in acpi processor_idle.c on another
thread. Can you try the patch below and check whether that helps.

Thanks,
Venki


Earlier patch (bc71bec91f9875ef825d12104acf3bf4ca215fa4) broke
suspend resume on many laptops. The problem was reported by
Carlos R. Mafra and Calvin Walton, who bisected the issue to above patch.

The problem was because, C2 and C3 code were calling acpi_idle_enter_c1
directly, with C2 or C3 as state parameter, while suspend/resume was in
progress. The patch bc71bec started making use of that state information,
assuming that it would always be referring to C1 state. This caused the
problem with suspend-resume as we ended up using C2/C3 state indirectly.

Fix this by adding acpi_idle_suspend check in enter_c1.

Signed-off-by: Venkatesh Pallipadi [EMAIL PROTECTED]

Index: linux-2.6.25-rc1/drivers/acpi/processor_idle.c
===
--- linux-2.6.25-rc1.orig/drivers/acpi/processor_idle.c
+++ linux-2.6.25-rc1/drivers/acpi/processor_idle.c
@@ -1420,6 +1420,14 @@ static int acpi_idle_enter_c1(struct cpu
return 0;
 
local_irq_disable();
+
+   /* Do not access any ACPI IO ports in suspend path */
+   if (acpi_idle_suspend) {
+   acpi_safe_halt();
+   local_irq_enable();
+   return 0;
+   }
+
if (pr-flags.bm_check)
acpi_idle_update_bm_rld(pr, cx);
 
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


acpi_apic_instance=2

2008-02-11 Thread Cacy Rodney

Hi,
I ran the kernel with the acpi_apic_instance=2 option and I found that 
the fan works different. The power supplier was attached to my laptop at 
the time which means that the fan should rotate continuously like 
usually, but it starts to work only when the cooling is needed. The 
computer with default instance works in that way only when the power 
comes from battery. So it seems that the default acpi table depends on 
the power state.
The benefit of using acpi_apic_instance=2 is the quiet work of the 
plugged machine. I did not try to change the acpi instance without power 
supplier.

cacy
I have sony vaio SZ series
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: BIOS _OSI(Linux) query ignored - PowerEdge 1950

2008-02-11 Thread Len Brown
On Monday 11 February 2008 12:27, Krzysztof Oledzki wrote:
 
 On Sun, 10 Feb 2008, Len Brown wrote:
 
  On Sunday 10 February 2008 17:09, Krzysztof Oledzki wrote:
  Hello,
 
  ACPI: EC: Look up EC in DSDT
  ACPI: BIOS _OSI(Linux) query ignored
  ACPI: DMI System Vendor: Dell Inc.
  ACPI: DMI Product Name: PowerEdge 1950
  ACPI: DMI Product Version:
  ACPI: DMI Board Name: 0TT740
  ACPI: DMI BIOS Vendor: Dell Inc.
  ACPI: DMI BIOS Date: 10/27/2007
  ACPI: Please send DMI info above to linux-acpi@vger.kernel.org
 

Thanks for the acpidiump output.
acpi_osi=Linux is a NOP on this box.

cheers,
-Len

It looks like Dell went out of their way to make Linux a recognized OS,
but the code that actually accesses TOOS makes Linux a synonym for Vista,
which we have w/o OSI(Linux).  The exception is the PCI root bridge HID/CID
exchange, where only Vista gets PCIe native.


Name (TOOS, 0x00)
Method (INIC, 0, NotSerialized)
{
If (CondRefOf (_OSI, Local0))
{
If (\_OSI (Windows 2001))
{
Store (0x05, TOOS)
}

If (\_OSI (Windows 2001.1))
{
Store (0x06, TOOS)
}

If (\_OSI (Windows 2001.1 SP1))
{
Store (0x07, TOOS)
}

If (\_OSI (Windows 2006))
{
Store (0x08, TOOS)
}

If (\_OSI (Windows 2006.1))
{
Store (0x08, TOOS)
}

If (\_OSI (Linux))
{
Store (0x01, TOOS)
# The windows compatible value of TOOS gets overwritten
# to 1 on OSI(Linux)

}
}
Else
{
Store (\_OS, Local0)
Store (SCMP (Local0, Microsoft Windows NT), Local1)
If (Not (Local1))
{
Store (0x04, TOOS)
}
Else
{
Store (SCMP (Local0, Microsoft Windows), Local2)
If (Not (Local2))
{
Store (0x02, TOOS)
}
Else
{
Store (SCMP (Local0, Microsoft WindowsME:Millennium 
Edition), Local3)
If (Not (Local3))
{
Store (0x03, TOOS)
}
}
}
}
}

If (LGreaterEqual (\_SB.TOOS, 0x08))
{
Store (0x080AD041, \_SB.PCI0._HID)
Store (0x030AD041, \_SB.PCI0._CID)
}
Else
{
Store (0x030AD041, \_SB.PCI0._HID)
Store (0x080AD041, \_SB.PCI0._CID)
}
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] acer-wmi - Fail gracefully if ACPI is disabled

2008-02-11 Thread Linus Torvalds


On Mon, 11 Feb 2008, Carlos Corbacho wrote:
 
 WMI drivers, like their ACPI counterparts, should also check if ACPI is
 disabled or not, and bail out if so, otherwise we cause a crash.

Shouldn't wmi_has_guid() just return false if ACPI isn't enabled, and 
the drivers should just then always give up?

The proper way to get there would seem to be to just do this instead..

We should *not* add some random ACPI workarounds to individual drivers, we 
should just make the wmi subsystem so robust that nobody *cares* if acpi 
exists or is enabled on that machine.

Linus

---
 drivers/acpi/wmi.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/wmi.c b/drivers/acpi/wmi.c
index 36b84ab..457ed3d 100644
--- a/drivers/acpi/wmi.c
+++ b/drivers/acpi/wmi.c
@@ -673,11 +673,11 @@ static int __init acpi_wmi_init(void)
 {
acpi_status result;
 
+   INIT_LIST_HEAD(wmi_blocks.list);
+
if (acpi_disabled)
return -ENODEV;
 
-   INIT_LIST_HEAD(wmi_blocks.list);
-
result = acpi_bus_register_driver(acpi_wmi_driver);
 
if (result  0) {
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] tc1100-wmi - Fail gracefully if ACPI is disabled

2008-02-11 Thread Carlos Corbacho
tc1100-wmi - Fail gracefully if ACPI is disabled

From: Carlos Corbacho [EMAIL PROTECTED]

WMI drivers, like their ACPI counterparts, should also check if ACPI is
disabled or not, and bail out if so, otherwise we cause a crash.

Spotted by Ingo Molnar.

Signed-off-by: Carlos Corbacho [EMAIL PROTECTED]
CC: Ingo Molnar [EMAIL PROTECTED]
CC: Linus Torvalds [EMAIL PROTECTED]
CC: Andrew Morton [EMAIL PROTECTED]
CC: Len Brown [EMAIL PROTECTED]
---

 drivers/misc/tc1100-wmi.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)


diff --git a/drivers/misc/tc1100-wmi.c b/drivers/misc/tc1100-wmi.c
index f25e4c9..cb8f79f 100644
--- a/drivers/misc/tc1100-wmi.c
+++ b/drivers/misc/tc1100-wmi.c
@@ -263,6 +263,9 @@ static int __init tc1100_init(void)
 {
int result = 0;
 
+   if (acpi_disabled)
+   return -ENODEV;
+
if (!wmi_has_guid(GUID))
return -ENODEV;
 
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/5] Laptop driver documentation changes for 2.6.25

2008-02-11 Thread Carlos Corbacho
On Monday 11 February 2008 19:23:39 Randy Dunlap wrote:
 On Sat, 09 Feb 2008 01:31:57 + Carlos Corbacho wrote:
  The following series implements the proposed creation of
  Documentation/laptops, and the movement of all the laptop driver
  documentation to this directory. I've also taken the opportunity to tack
  on the acer-wmi documentation in the final patch of this series.
 
  Because all the drivers in question go through the ACPI tree anyway, it's
  probably easiest if this change goes through the ACPI tree as well.
 
  This should all be 2.6.25 material, since there is no code change here,
  just rearranging the Documentation files, and updating Kconfig entries
  where required. I've also tested this series against Linus' latest git
  tree, with no problems applying it there.

 Hi,
 so should we also move Documentation/laptop-mode.txt to laptops/ dir?

[CC'ing Bart Samwel on this, as he wrote Documentation/laptop-mode.txt]

Yes, we probably should.

-Carlos
-- 
E-Mail: [EMAIL PROTECTED]
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: BIOS _OSI(Linux) query ignored - PowerEdge 1950

2008-02-11 Thread Krzysztof Oledzki



On Sun, 10 Feb 2008, Len Brown wrote:


On Sunday 10 February 2008 17:09, Krzysztof Oledzki wrote:

Hello,

ACPI: EC: Look up EC in DSDT
ACPI: BIOS _OSI(Linux) query ignored
ACPI: DMI System Vendor: Dell Inc.
ACPI: DMI Product Name: PowerEdge 1950
ACPI: DMI Product Version:
ACPI: DMI Board Name: 0TT740
ACPI: DMI BIOS Vendor: Dell Inc.
ACPI: DMI BIOS Date: 10/27/2007
ACPI: Please send DMI info above to linux-acpi@vger.kernel.org



please send me the output from acpidump.


Attached.

Best regards,

Krzysztof Olędzki

acpidump-dell1950.gz
Description: Binary data


[PATCH] CPU_IDLE: Documentation for CPU_IDLE

2008-02-11 Thread Venki Pallipadi

Documentation for cpuidle infrastructure. This patch was submitted once
a while back. But, somehow got dropped or never made it upstream.

Resending with updates.

Signed-off-by: Venkatesh Pallipadi [EMAIL PROTECTED]

Index: linux-2.6.25-rc/Documentation/cpuidle/core.txt
===
--- /dev/null
+++ linux-2.6.25-rc/Documentation/cpuidle/core.txt
@@ -0,0 +1,17 @@
+
+   Supporting multiple CPU idle levels in kernel
+
+   cpuidle
+
+General Information:
+
+Various CPUs today support multiple idle levels that are differentiated
+by varying exit latencies and power consumption during idle.
+cpuidle is a generic in-kernel infrastructure that separates
+idle policy (governor) from idle mechanism (driver) and provides a
+standardized infrastructure to support independent development of
+governors and drivers.
+
+cpuidle resides under drivers/cpuidle.
+
+
Index: linux-2.6.25-rc/Documentation/cpuidle/driver.txt
===
--- /dev/null
+++ linux-2.6.25-rc/Documentation/cpuidle/driver.txt
@@ -0,0 +1,32 @@
+
+
+   Supporting multiple CPU idle levels in kernel
+
+   cpuidle drivers
+
+
+
+
+cpuidle driver hooks into the cpuidle infrastructure and handles the
+architecture/platform dependent part of CPU idle states. Driver
+provides the platform idle state detection capability and also
+has mechanisms in place to support actual entry-exit into CPU idle states.
+
+cpuidle driver initializes the cpuidle_device structure for each CPU device
+and registers with cpuidle using cpuidle_register_device.
+
+It can also support the dynamic changes (like battery - AC), by using
+cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device,
+cpuidle_resume_and_unlock.
+
+Interfaces:
+extern int cpuidle_register_driver(struct cpuidle_driver *drv);
+extern void cpuidle_unregister_driver(struct cpuidle_driver *drv);
+extern int cpuidle_register_device(struct cpuidle_device *dev);
+extern void cpuidle_unregister_device(struct cpuidle_device *dev);
+
+extern void cpuidle_pause_and_lock(void);
+extern void cpuidle_resume_and_unlock(void);
+extern int cpuidle_enable_device(struct cpuidle_device *dev);
+extern void cpuidle_disable_device(struct cpuidle_device *dev);
+
Index: linux-2.6.25-rc/Documentation/cpuidle/sysfs.txt
===
--- /dev/null
+++ linux-2.6.25-rc/Documentation/cpuidle/sysfs.txt
@@ -0,0 +1,81 @@
+
+
+   Supporting multiple CPU idle levels in kernel
+
+   cpuidle sysfs
+
+System global cpuidle related information and tunables are under
+/sys/devices/system/cpu/cpuidle
+
+The current interfaces in this directory has self-explanatory names:
+* current_driver
+* current_governor_ro
+
+With cpuidle_sysfs_switch boot option (meant for developer testing)
+following objects are visible instead.
+* current_driver
+* available_governors
+* current_governor
+In this case user can switch the governor at run time by writing
+onto current_governor.
+
+
+Per logical CPU specific cpuidle information are under
+/sys/devices/system/cpu/cpuX/cpuidle
+for each online cpu X
+
+
+# ls -lR /sys/devices/system/cpu/cpu0/cpuidle/
+/sys/devices/system/cpu/cpu0/cpuidle/:
+total 0
+drwxr-xr-x 2 root root 0 Feb  8 10:42 state0
+drwxr-xr-x 2 root root 0 Feb  8 10:42 state1
+drwxr-xr-x 2 root root 0 Feb  8 10:42 state2
+drwxr-xr-x 2 root root 0 Feb  8 10:42 state3
+
+/sys/devices/system/cpu/cpu0/cpuidle/state0:
+total 0
+-r--r--r-- 1 root root 4096 Feb  8 10:42 desc
+-r--r--r-- 1 root root 4096 Feb  8 10:42 latency
+-r--r--r-- 1 root root 4096 Feb  8 10:42 name
+-r--r--r-- 1 root root 4096 Feb  8 10:42 power
+-r--r--r-- 1 root root 4096 Feb  8 10:42 time
+-r--r--r-- 1 root root 4096 Feb  8 10:42 usage
+
+/sys/devices/system/cpu/cpu0/cpuidle/state1:
+total 0
+-r--r--r-- 1 root root 4096 Feb  8 10:42 desc
+-r--r--r-- 1 root root 4096 Feb  8 10:42 latency
+-r--r--r-- 1 root root 4096 Feb  8 10:42 name
+-r--r--r-- 1 root root 4096 Feb  8 10:42 power
+-r--r--r-- 1 root root 4096 Feb  8 10:42 time
+-r--r--r-- 1 root root 4096 Feb  8 10:42 usage
+
+/sys/devices/system/cpu/cpu0/cpuidle/state2:
+total 0
+-r--r--r-- 1 root root 4096 Feb  8 10:42 desc
+-r--r--r-- 1 root root 4096 Feb  8 10:42 latency
+-r--r--r-- 1 root root 4096 Feb  8 10:42 name
+-r--r--r-- 1 root root 4096 Feb  8 10:42 power
+-r--r--r-- 1 root root 4096 Feb  8 10:42 time
+-r--r--r-- 1 root root 4096 Feb  8 10:42 usage
+
+/sys/devices/system/cpu/cpu0/cpuidle/state3:
+total 0
+-r--r--r-- 1 root root 4096 Feb  8 10:42 desc
+-r--r--r-- 1 root root 4096 Feb  8 10:42 latency
+-r--r--r-- 1 root root 4096 Feb  8 10:42 name
+-r--r--r-- 1 root root 4096 Feb  8 10:42 power
+-r--r--r-- 1 root root 4096 Feb  8 10:42 time

Re: 2.6.25-rc1 regression - suspend to ram

2008-02-11 Thread R. J. Wysocki
On Monday, 11 of February 2008, Lukas Hejtmanek wrote:
 Hello,

Hi,
 
 2.6.25-rc1 takes really long time till it suspends (about 30-40secs, used to
 be about 5 secs at all) and it is resuming about few minutes.  While resuming,
 capslock toggles the capslock led but with few secs delay.
 
 2.6.24-git15 was OK. 2.6.24 is OK.
 
 I have Lenovo ThinkPad T61.

If you have CONFIG_CPU_IDLE set, please try to boot with idle=poll and see if
that helps.

Thanks,
Rafael
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: If acpi_osi=Linux works better, pleas e notify linux-acpi@vger.kernel.org

2008-02-11 Thread Dennis Jansen
On Feb 11, 2008 3:29 AM, Len Brown [EMAIL PROTECTED] wrote:
 In both BIOS V1.21 and V1.31 it appears to be a no-op.
 The only way I could imagine it could have an effect is if
 somethign in SMM is looking at the LINX variable.

 Based on past lack of Linux awareness from this particular vendor,
 the chances of that happening seem quite small.

 thanks,
 -Len

It was the suspend/resume process and the subsequent use of the C2
state that made the difference.
And the wireless stability is also another issue.
Sorry, guess it was wishful thinking.
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/5] Provide acpi_check_{mem_}region.

2008-02-11 Thread Andrew Morton
On Sun, 10 Feb 2008 13:25:36 +0100
Jean Delvare [EMAIL PROTECTED] wrote:

 Hi Andrew,
 
 On Thu, 7 Feb 2008 23:40:02 -0800, Andrew Morton wrote:
  On Wed, 24 Oct 2007 16:32:59 +0200 Thomas Renninger [EMAIL PROTECTED] 
  wrote:
  
   Provide acpi_check_{mem_}region.
   
   Drivers can additionally check against possible ACPI interference by also
   invoking this shortly before they call request_region.
   If -EBUSY is returned, the driver must not load.
   Use acpi_enforce_resources=strict/lax/no options to:
 - strict: let conflicting drivers fail to load with an error message
 - lax:let conflicting driver work normal with a warning message
 - no: no functional change at all
   
   
  
  OK, so Len has merged these into the acpi test tree.  My understanding is
  that once this work hits mainline, we can then merge
  check-for-acpi-resource-conflicts-in-hwmon-drivers.patch.
 
 Correct. Same applies to a second patch:
 check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch
 Both patches should be merged upstream at the same time.
 
  My normal approach would be to send
  check-for-acpi-resource-conflicts-in-hwmon-drivers.patch to Mark for
  inclusion in git-hwmon one Len has merged the prerequisites into mainline. 
  
  Problem is, if Len merges late in the 2.6.26 merge window, Mark might not
  have time to gets these changes into mainline before 2.6.27.  Which is all
  getting a bit dumb considering I first merged everything in October. 
  Fortunately things aren't mormally _this_ inefficient when one follows the
  rules - this was an unusual patchset.
  
  But still, I think we could afford to speed things up a bit more than that.
   We could ask Len to consider merging this work into 2.6.25 and then if
  Mark can ack check-for-acpi-resource-conflicts-in-hwmon-drivers.patch
  (below) for an akpm-merge, we're good to go.  But I do recall that people
  were a bit uncertain about it all back in October.
  
  Please share your thoughts with us.
 
 Len already merged all the acpi bits for 2.6.25 as far as I can see, so
 all that is missing now is these two patches:
 check-for-acpi-resource-conflicts-in-hwmon-drivers.patch
 check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch
 Both have been in -mm for quite some time.

Yup, the prerequisites appear to be in mainline now.

 In the default mode (acpi_enforce_resources=lax) these patches simply
 print warnings but still let the drivers load, so they are safe to
 merge, and the sooner, the better. The idea is to get feedback on how
 many systems out there have ACPI resource conflicts. Then we'll see how
 we can address them (if at all.)
 
 I don't remember anyone objecting to these patches, and anyway the
 problem has been there for years and nobody took care, so if anyone
 really isn't happy with the solution designed by Thomas, that person
 will have to do the work and submit something better later. That
 shouldn't delay the merge of what we have now.
 
 Andrew, both patches are
 
 Acked-by: Jean Delvare [EMAIL PROTECTED]

We already have Signed-off-by:you, which I figure outranks acked-by: ;)

 and I am totally fine with you pushing them to Linus now. But of course
 having Mark's ack would be good too.

That would be nice.  But I'll merge them mid-week anyway unless Mark actually
nacks them:

http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-hwmon-drivers.patch

http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch

Thanks.
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: 2.6.25-rc1 regression - suspend to ram

2008-02-11 Thread Jesse Barnes
On Monday, February 11, 2008 3:22 pm Venki Pallipadi wrote:
 On Tue, Feb 12, 2008 at 12:10:54AM +0100, R. J. Wysocki wrote:
  On Monday, 11 of February 2008, Lukas Hejtmanek wrote:
   Hello,
 
  Hi,
 
   2.6.25-rc1 takes really long time till it suspends (about 30-40secs,
   used to be about 5 secs at all) and it is resuming about few minutes. 
   While resuming, capslock toggles the capslock led but with few secs
   delay.
  
   2.6.24-git15 was OK. 2.6.24 is OK.
  
   I have Lenovo ThinkPad T61.
 
  If you have CONFIG_CPU_IDLE set, please try to boot with idle=poll and
  see if that helps.

 Just sent this patch to fix a regression in acpi processor_idle.c on
 another thread. Can you try the patch below and check whether that helps.

Excellent, that patch makes things work for me (including console restore).  
Thanks a lot Venki.

Jesse
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug-fix]:2.6.25-rc0 Generic thermal management [Patch 1/2]: validating input parameters

2008-02-11 Thread Thomas, Sujith
From: Thomas Sujith [EMAIL PROTECTED]

Added sanity checks for interface functions in thermal with
other modules such as fan, processor, video etc..

Signed-off-by: Thomas Sujith [EMAIL PROTECTED]
---
drivers/thermal/thermal.c |   69
+-
 1 files changed, 44 insertions(+), 25 deletions(-)

Index: linux-2.6.24-rc3/drivers/thermal/thermal.c
===
--- linux-2.6.24-rc3.orig/drivers/thermal/thermal.c
+++ linux-2.6.24-rc3/drivers/thermal/thermal.c
@@ -301,13 +301,27 @@ int thermal_zone_bind_cooling_device(str
 {
struct thermal_cooling_device_instance *dev;
struct thermal_cooling_device_instance *pos;
+   struct thermal_zone_device *pos1;
+   struct thermal_cooling_device *pos2;
int result;
 
+   if (!tz || !cdev)
+   return -EINVAL;
+
if (trip = tz-trips ||
(trip  0  trip != THERMAL_TRIPS_NONE))
return -EINVAL;
 
-   if (!tz || !cdev)
+   list_for_each_entry(pos1, thermal_tz_list, node) {
+   if (pos1 == tz)
+   break;
+   }
+   list_for_each_entry(pos2, thermal_cdev_list, node) {
+   if (pos2 == cdev)
+   break;
+   }
+
+   if (tz != pos1 || cdev != pos2)
return -EINVAL;
 
dev =
@@ -373,6 +387,9 @@ int thermal_zone_unbind_cooling_device(s
 {
struct thermal_cooling_device_instance *pos, *next;
 
+   if (!tz || !cdev)
+   return -EINVAL;
+
mutex_lock(tz-lock);
list_for_each_entry_safe(pos, next, tz-cooling_devices, node)
{
if (pos-tz == tz  pos-trip == trip
@@ -427,21 +444,24 @@ struct thermal_cooling_device *thermal_c
struct thermal_zone_device *pos;
int result;
 
+   if (!type)
+   return ERR_PTR(-EINVAL);
+
if (strlen(type) = THERMAL_NAME_LENGTH)
-   return NULL;
+   return ERR_PTR(-EINVAL);
 
if (!ops || !ops-get_max_state || !ops-get_cur_state ||
!ops-set_cur_state)
-   return NULL;
+   return ERR_PTR(-EINVAL);
 
cdev = kzalloc(sizeof(struct thermal_cooling_device),
GFP_KERNEL);
if (!cdev)
-   return NULL;
+   return ERR_PTR(-ENOMEM);
 
result = get_idr(thermal_cdev_idr, thermal_idr_lock,
cdev-id);
if (result) {
kfree(cdev);
-   return NULL;
+   return ERR_PTR(result);
}
 
strcpy(cdev-type, type);
@@ -453,16 +473,14 @@ struct thermal_cooling_device *thermal_c
if (result) {
release_idr(thermal_cdev_idr, thermal_idr_lock,
cdev-id);
kfree(cdev);
-   return NULL;
+   return  ERR_PTR(result);
}
 
/* sys I/F */
-   if (type) {
-   result = device_create_file(cdev-device,
-   dev_attr_cdev_type);
-   if (result)
-   goto unregister;
-   }
+   result = device_create_file(cdev-device,
+   dev_attr_cdev_type);
+   if (result)
+   goto unregister;
 
result = device_create_file(cdev-device, dev_attr_max_state);
if (result)
@@ -490,7 +508,7 @@ struct thermal_cooling_device *thermal_c
   unregister:
release_idr(thermal_cdev_idr, thermal_idr_lock, cdev-id);
device_unregister(cdev-device);
-   return NULL;
+   return ERR_PTR(result);
 }
 EXPORT_SYMBOL(thermal_cooling_device_register);
 
@@ -559,18 +577,21 @@ struct thermal_zone_device *thermal_zone
int result;
int count;
 
+   if (!type)
+   return ERR_PTR(-EINVAL);
+
if (strlen(type) = THERMAL_NAME_LENGTH)
-   return NULL;
+   return  ERR_PTR(-EINVAL);
 
if (trips  THERMAL_MAX_TRIPS || trips  0)
-   return NULL;
+   return  ERR_PTR(-EINVAL);
 
if (!ops || !ops-get_temp)
-   return NULL;
+   return  ERR_PTR(-EINVAL);
 
tz = kzalloc(sizeof(struct thermal_zone_device), GFP_KERNEL);
if (!tz)
-   return NULL;
+   return  ERR_PTR(-ENOMEM);
 
INIT_LIST_HEAD(tz-cooling_devices);
idr_init(tz-idr);
@@ -578,7 +599,7 @@ struct thermal_zone_device *thermal_zone
result = get_idr(thermal_tz_idr, thermal_idr_lock, tz-id);
if (result) {
kfree(tz);
-   return NULL;
+   return  ERR_PTR(result);
}
 
strcpy(tz-type, type);
@@ -591,15 +612,13 @@ struct thermal_zone_device *thermal_zone
if (result) {
release_idr(thermal_tz_idr, thermal_idr_lock, tz-id);
kfree(tz);
-   return NULL;
+   return  ERR_PTR(result);
}
 
/* sys I/F */
- 

[Bug-fix]:2.6.25-rc0 Generic thermal management:ACPI [Patch 2/2]: buildfix for CONFIG_THERMAL=n

2008-02-11 Thread Thomas, Sujith
From: Thomas Sujith [EMAIL PROTECTED]

Conditional dependency is being added for the generic thermal management
driver so that ACPI drivers can work without the presence of generic
thermal driver. Additional checks are added to fan,video,processor
and intel_menlow driver to have the right interpretation of
returned data.

Signed-off-by: Thomas Sujith [EMAIL PROTECTED]
---
 drivers/acpi/fan.c|   31 +++
 drivers/acpi/processor_core.c |   32 +++-
 drivers/acpi/video.c  |4 
 drivers/misc/intel_menlow.c   |   12 
 include/linux/thermal.h   |   25 -
 5 files changed, 70 insertions(+), 34 deletions(-)

Index: linux-2.6.24-rc3/drivers/acpi/fan.c
===
--- linux-2.6.24-rc3.orig/drivers/acpi/fan.c
+++ linux-2.6.24-rc3/drivers/acpi/fan.c
@@ -248,22 +248,29 @@ static int acpi_fan_add(struct acpi_devi
 
cdev = thermal_cooling_device_register(Fan, device,
fan_cooling_ops);
-   if (cdev)
+   if (IS_ERR(cdev)) {
+   result = PTR_ERR(cdev);
+   goto end;
+   }
+
+   if (cdev) {
printk(KERN_INFO PREFIX
%s is registered as cooling_device%d\n,
device-dev.bus_id, cdev-id);
-   else
-   goto end;
-   acpi_driver_data(device) = cdev;
-   result = sysfs_create_link(device-dev.kobj,
cdev-device.kobj,
-   thermal_cooling);
-   if (result)
-   return result;
 
-   result = sysfs_create_link(cdev-device.kobj,
device-dev.kobj,
-   device);
-if (result)
-return result;
+   acpi_driver_data(device) = cdev;
+   result = sysfs_create_link(device-dev.kobj,
+  cdev-device.kobj,
+  thermal_cooling);
+   if (result)
+   return result;
+
+   result = sysfs_create_link(cdev-device.kobj,
+  device-dev.kobj,
+  device);
+   if (result)
+   return result;
+   }
 
result = acpi_fan_add_fs(device);
if (result)
Index: linux-2.6.24-rc3/drivers/acpi/processor_core.c
===
--- linux-2.6.24-rc3.orig/drivers/acpi/processor_core.c
+++ linux-2.6.24-rc3/drivers/acpi/processor_core.c
@@ -670,21 +670,27 @@ static int __cpuinit acpi_processor_star
 
pr-cdev = thermal_cooling_device_register(Processor, device,
processor_cooling_ops);
-   if (pr-cdev)
-   printk(KERN_INFO PREFIX
-   %s is registered as cooling_device%d\n,
-   device-dev.bus_id, pr-cdev-id);
-   else
+   if (IS_ERR(pr-cdev)) {
+   result = PTR_ERR(pr-cdev);
goto end;
+   }
 
-   result = sysfs_create_link(device-dev.kobj,
pr-cdev-device.kobj,
-   thermal_cooling);
-   if (result)
-   return result;
-   result = sysfs_create_link(pr-cdev-device.kobj,
device-dev.kobj,
-   device);
-   if (result)
-   return result;
+   if (pr-cdev) {
+   printk(KERN_INFO PREFIX
+  %s is registered as cooling_device%d\n,
+  device-dev.bus_id, pr-cdev-id);
+
+   result = sysfs_create_link(device-dev.kobj,
+  pr-cdev-device.kobj,
+  thermal_cooling);
+   if (result)
+   return result;
+   result = sysfs_create_link(pr-cdev-device.kobj,
+  device-dev.kobj,
+  device);
+   if (result)
+   return result;
+   }
 
if (pr-flags.throttling) {
printk(KERN_INFO PREFIX %s [%s] (supports,
Index: linux-2.6.24-rc3/drivers/acpi/video.c
===
--- linux-2.6.24-rc3.orig/drivers/acpi/video.c
+++ linux-2.6.24-rc3/drivers/acpi/video.c
@@ -720,6 +720,10 @@ static void acpi_video_device_find_cap(s
 
device-cdev = thermal_cooling_device_register(LCD,
device-dev,
video_cooling_ops);
+
+   if (IS_ERR(device-cdev))
+   return;
+
if (device-cdev) {
printk(KERN_INFO PREFIX
%s is registered as
cooling_device%d\n,
Index: 

dmi info requested...

2008-02-11 Thread Linda Walsh
ACPI: DMI System Vendor: Dell Inc.   
ACPI: DMI Product Name: Precision WorkStation 690

ACPI: DMI Product Version:
ACPI: DMI Board Name: 0MY171
ACPI: DMI BIOS Vendor: Dell Inc.
ACPI: DMI BIOS Date: 08/20/2007

ACPI: Please send DMI info above to linux-acpi@vger.kernel.org

Note my 410 Workstation ID's DMI as 2.2, but doesn't
seem to provide any output.  Should it at least provide
the send DMI info line if it is enabled correctly?

What's this for, anyway?



-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ACPI, CPU_IDLE: Add more information about C-states

2008-02-11 Thread Venki Pallipadi
From: Venkatesh Pallipadi [EMAIL PROTECTED]

Add a new sysfs entry under cpuidle states. desc - can be used by driver to
communicate to userspace any specific information about the state.
This helps in identifying the exact hardware C-states behind the ACPI C-state
definition.

Idea is to export this through powertop, which will help to map the C-state
reported by powertop to actual hardware C-state.

Signed-off-by: Venkatesh Pallipadi [EMAIL PROTECTED]

Index: linux-2.6.25-rc/arch/x86/kernel/acpi/cstate.c
===
--- linux-2.6.25-rc.orig/arch/x86/kernel/acpi/cstate.c
+++ linux-2.6.25-rc/arch/x86/kernel/acpi/cstate.c
@@ -126,6 +126,8 @@ int acpi_processor_ffh_cstate_probe(unsi
printk(KERN_DEBUG Monitor-Mwait will be used to enter C-%d 
   state\n, cx-type);
}
+   snprintf(cx-desc, ACPI_CX_DESC_LEN, ACPI FFH INTEL MWAIT 0x%x,
+cx-address);
 
 out:
set_cpus_allowed(current, saved_mask);
Index: linux-2.6.25-rc/drivers/acpi/processor_idle.c
===
--- linux-2.6.25-rc.orig/drivers/acpi/processor_idle.c
+++ linux-2.6.25-rc/drivers/acpi/processor_idle.c
@@ -917,11 +917,16 @@ static int acpi_processor_get_power_info
 * Otherwise, ignore this info and continue.
 */
cx.entry_method = ACPI_CSTATE_HALT;
+   snprintf(cx.desc, ACPI_CX_DESC_LEN, ACPI HLT);
} else {
continue;
}
+   } else {
+   snprintf(cx.desc, ACPI_CX_DESC_LEN, ACPI IOPORT 0x%x,
+cx.address);
}
 
+
obj = (element-package.elements[2]);
if (obj-type != ACPI_TYPE_INTEGER)
continue;
@@ -1620,6 +1625,11 @@ static int acpi_processor_setup_cpuidle(
return -EINVAL;
}
 
+   for (i = 0; i  CPUIDLE_STATE_MAX; i++) {
+   dev-states[i].name[0] = '\0';
+   dev-states[i].desc[0] = '\0';
+   }
+
for (i = 1; i  ACPI_PROCESSOR_MAX_POWER  i = max_cstate; i++) {
cx = pr-power.states[i];
state = dev-states[count];
@@ -1636,6 +1646,7 @@ static int acpi_processor_setup_cpuidle(
cpuidle_set_statedata(state, cx);
 
snprintf(state-name, CPUIDLE_NAME_LEN, C%d, i);
+   strncpy(state-desc, cx-desc, CPUIDLE_DESC_LEN);
state-exit_latency = cx-latency;
state-target_residency = cx-latency * 6;
state-power_usage = cx-power;
Index: linux-2.6.25-rc/drivers/cpuidle/sysfs.c
===
--- linux-2.6.25-rc.orig/drivers/cpuidle/sysfs.c
+++ linux-2.6.25-rc/drivers/cpuidle/sysfs.c
@@ -218,16 +218,23 @@ static ssize_t show_state_##_name(struct
return sprintf(buf, %u\n, state-_name);\
 }
 
-static ssize_t show_state_name(struct cpuidle_state *state, char *buf)
-{
-   return sprintf(buf, %s\n, state-name);
+#define define_show_state_str_function(_name) \
+static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \
+{ \
+   if (state-_name[0] == '\0')\
+   return sprintf(buf, null\n);\
+   return sprintf(buf, %s\n, state-_name);\
 }
 
 define_show_state_function(exit_latency)
 define_show_state_function(power_usage)
 define_show_state_function(usage)
 define_show_state_function(time)
+define_show_state_str_function(name)
+define_show_state_str_function(desc)
+
 define_one_state_ro(name, show_state_name);
+define_one_state_ro(desc, show_state_desc);
 define_one_state_ro(latency, show_state_exit_latency);
 define_one_state_ro(power, show_state_power_usage);
 define_one_state_ro(usage, show_state_usage);
@@ -235,6 +242,7 @@ define_one_state_ro(time, show_state_tim
 
 static struct attribute *cpuidle_state_default_attrs[] = {
attr_name.attr,
+   attr_desc.attr,
attr_latency.attr,
attr_power.attr,
attr_usage.attr,
Index: linux-2.6.25-rc/include/acpi/processor.h
===
--- linux-2.6.25-rc.orig/include/acpi/processor.h
+++ linux-2.6.25-rc/include/acpi/processor.h
@@ -32,9 +32,11 @@
 #define DOMAIN_COORD_TYPE_SW_ANY   0xfd
 #define DOMAIN_COORD_TYPE_HW_ALL   0xfe
 
-#define ACPI_CSTATE_SYSTEMIO   (0)
-#define ACPI_CSTATE_FFH(1)
-#define ACPI_CSTATE_HALT   (2)
+#define ACPI_CSTATE_SYSTEMIO   0
+#define ACPI_CSTATE_FFH1
+#define ACPI_CSTATE_HALT   2
+
+#define ACPI_CX_DESC_LEN   32
 
 /* Power Management */
 
@@ -74,6 +76,7 @@ struct acpi_processor_cx {
u64 time;
struct acpi_processor_cx_policy promotion;
struct