LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
@ 2011-01-20 11:26 Rafael J. Wysocki
  2011-01-20 11:27 ` [PATCH 1/11] ACPI: Introduce acpi_os_ioremap() Rafael J. Wysocki
                   ` (12 more replies)
  0 siblings, 13 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:26 UTC (permalink / raw)
  To: Len Brown, Jeff Chua
  Cc: LKML, ACPI Devel Maling List, Linux-pm mailing list, Matthew Garrett

Hi Len,

The following series of patches implements some fixes of the ACPI iomaps
management.  I found the problems trying to resolve the issue of creating
iomaps of regions that have been mapped already when we save the NVS region.

The first two patches are the same as https://patchwork.kernel.org/patch/490071/
(except for the changelog) and https://patchwork.kernel.org/patch/490061/,
respectively, and they are 2.6.38 regression fix material.  The other patches
are not that urgent, because the related issues are generally long-standing,
but some bugs addressed by them (especially [3/11]) may be actively hurting
people right now, so the patches look suitable for .38 to me as well, but this
is your call.

[1/11] - Introduce acpi_os_ioremap() to be called by ACPI code creating
         iomaps, so that they are mapped in the consistent way.

[2/11] - Move the call to suspend_nvs_free() to acpi_pm_finish() so that it's
         executed before device drivers' resume routines to avoid possible
         iomaps conflicts.

[3/11] - Fix routines for reading and writing iomem (RCU bug and mapping
         regions on the fly).

[4/11] - (cleanup) Do not export local functions in osl.c.

[5/11] - Use a mutex (instead of a spinlock) for the locking of iomap
         manipulations in osl.c.

[6/11] - Avoid unnecessary walks of the list of iomaps in osl.c.

[7/11] - Avoid creating iomaps for regions that have been mapped already.

[8/11] - Replace krefs used for iomap refcounting with simple reference
         counters (they are manipulated under a lock anyway).

[9/11] - Introduce function for getting a reference to an ACPI iomap (to be
         used by the NVS save/restore code).

[10/11] - Make the NVS code use existing iomaps if possible.

[11/11] - (cleanup) Remove an unnecessary field from struct nvs_page.

The patches have been tested on HP nx6325, Toshiba Portege R500 and Acer
Ferrari One without causing any visible problems to happen.  Also Jeff has
tested [1/11] and [2/11] and he reports that they fix the synchronize_rcu()
problem for him.  [Jeff, can you test the whole series, please, and see if
it doesn't introduce any new issues, [10/11] in particular?]

Thanks,
Rafael


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 1/11] ACPI: Introduce acpi_os_ioremap()
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
@ 2011-01-20 11:27 ` Rafael J. Wysocki
  2011-01-20 11:28 ` [PATCH 2/11] ACPI / PM: Call suspend_nvs_free() earlier during resume Rafael J. Wysocki
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:27 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Commit ca9b600 (ACPI / PM: Make suspend_nvs_save() use
acpi_os_map_memory()) attempted to prevent the code in osl.c and
nvs.c from using different ioremap() variants by making the latter
use acpi_os_map_memory() for mapping the NVS pages.  However, that
also requires acpi_os_unmap_memory() to be used for unmapping them,
which causes synchronize_rcu() to be executed many times in a row
unnecessarily and introduces substantial delays during resume on
some systems.

Instead of using acpi_os_map_memory() for mapping the NVS pages in
nvs.c introduce acpi_os_ioremap() calling ioremap_cache() and make
the code in both osl.c and nvs.c use it.

Reported-and-tested-by: Jeff Chua <jeff.chua.linux@gmail.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/nvs.c      |    7 ++++---
 drivers/acpi/osl.c      |   12 +++++++-----
 include/linux/acpi.h    |    3 ---
 include/linux/acpi_io.h |   16 ++++++++++++++++
 4 files changed, 27 insertions(+), 11 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -38,6 +38,7 @@
 #include <linux/workqueue.h>
 #include <linux/nmi.h>
 #include <linux/acpi.h>
+#include <linux/acpi_io.h>
 #include <linux/efi.h>
 #include <linux/ioport.h>
 #include <linux/list.h>
@@ -302,9 +303,10 @@ void __iomem *__init_refok
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 {
 	struct acpi_ioremap *map, *tmp_map;
-	unsigned long flags, pg_sz;
+	unsigned long flags;
 	void __iomem *virt;
-	phys_addr_t pg_off;
+	acpi_physical_address pg_off;
+	acpi_size pg_sz;
 
 	if (phys > ULONG_MAX) {
 		printk(KERN_ERR PREFIX "Cannot map memory that high\n");
@@ -320,7 +322,7 @@ acpi_os_map_memory(acpi_physical_address
 
 	pg_off = round_down(phys, PAGE_SIZE);
 	pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
-	virt = ioremap_cache(pg_off, pg_sz);
+	virt = acpi_os_ioremap(pg_off, pg_sz);
 	if (!virt) {
 		kfree(map);
 		return NULL;
@@ -642,7 +644,7 @@ acpi_os_read_memory(acpi_physical_addres
 	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
 	rcu_read_unlock();
 	if (!virt_addr) {
-		virt_addr = ioremap_cache(phys_addr, size);
+		virt_addr = acpi_os_ioremap(phys_addr, size);
 		unmap = 1;
 	}
 	if (!value)
@@ -678,7 +680,7 @@ acpi_os_write_memory(acpi_physical_addre
 	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
 	rcu_read_unlock();
 	if (!virt_addr) {
-		virt_addr = ioremap_cache(phys_addr, size);
+		virt_addr = acpi_os_ioremap(phys_addr, size);
 		unmap = 1;
 	}
 
Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -12,6 +12,7 @@
 #include <linux/mm.h>
 #include <linux/slab.h>
 #include <linux/acpi.h>
+#include <linux/acpi_io.h>
 #include <acpi/acpiosxf.h>
 
 /*
@@ -80,7 +81,7 @@ void suspend_nvs_free(void)
 			free_page((unsigned long)entry->data);
 			entry->data = NULL;
 			if (entry->kaddr) {
-				acpi_os_unmap_memory(entry->kaddr, entry->size);
+				iounmap(entry->kaddr);
 				entry->kaddr = NULL;
 			}
 		}
@@ -114,8 +115,8 @@ int suspend_nvs_save(void)
 
 	list_for_each_entry(entry, &nvs_list, node)
 		if (entry->data) {
-			entry->kaddr = acpi_os_map_memory(entry->phys_start,
-							  entry->size);
+			entry->kaddr = acpi_os_ioremap(entry->phys_start,
+						    entry->size);
 			if (!entry->kaddr) {
 				suspend_nvs_free();
 				return -ENOMEM;
Index: linux-2.6/include/linux/acpi.h
===================================================================
--- linux-2.6.orig/include/linux/acpi.h
+++ linux-2.6/include/linux/acpi.h
@@ -306,9 +306,6 @@ extern acpi_status acpi_pci_osc_control_
 					     u32 *mask, u32 req);
 extern void acpi_early_init(void);
 
-int acpi_os_map_generic_address(struct acpi_generic_address *addr);
-void acpi_os_unmap_generic_address(struct acpi_generic_address *addr);
-
 #else	/* !CONFIG_ACPI */
 
 #define acpi_disabled 1
Index: linux-2.6/include/linux/acpi_io.h
===================================================================
--- /dev/null
+++ linux-2.6/include/linux/acpi_io.h
@@ -0,0 +1,16 @@
+#ifndef _ACPI_IO_H_
+#define _ACPI_IO_H_
+
+#include <linux/io.h>
+#include <acpi/acpi.h>
+
+static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys,
+					    acpi_size size)
+{
+       return ioremap_cache(phys, size);
+}
+
+int acpi_os_map_generic_address(struct acpi_generic_address *addr);
+void acpi_os_unmap_generic_address(struct acpi_generic_address *addr);
+
+#endif


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 2/11] ACPI / PM: Call suspend_nvs_free() earlier during resume
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
  2011-01-20 11:27 ` [PATCH 1/11] ACPI: Introduce acpi_os_ioremap() Rafael J. Wysocki
@ 2011-01-20 11:28 ` Rafael J. Wysocki
  2011-01-20 11:30 ` [PATCH 3/11] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() Rafael J. Wysocki
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:28 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

It turns out that some device drivers map pages from the ACPI NVS
region during resume using ioremap(), which conflicts with the
ioremap_cache() used for mapping those pages by the NVS save/restore
code in nvs.c.

Make the NVS pages mapped by the code in nvs.c be unmapped before
device drivers' resume routines run.

Tested-by: Jeff Chua <jeff.chua.linux@gmail.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/sleep.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/drivers/acpi/sleep.c
===================================================================
--- linux-2.6.orig/drivers/acpi/sleep.c
+++ linux-2.6/drivers/acpi/sleep.c
@@ -166,6 +166,7 @@ static void acpi_pm_finish(void)
 	u32 acpi_state = acpi_target_sleep_state;
 
 	acpi_ec_unblock_transactions();
+	suspend_nvs_free();
 
 	if (acpi_state == ACPI_STATE_S0)
 		return;
@@ -186,7 +187,6 @@ static void acpi_pm_finish(void)
  */
 static void acpi_pm_end(void)
 {
-	suspend_nvs_free();
 	/*
 	 * This is necessary in case acpi_pm_finish() is not called during a
 	 * failing transition to a sleep state.


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 3/11] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory()
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
  2011-01-20 11:27 ` [PATCH 1/11] ACPI: Introduce acpi_os_ioremap() Rafael J. Wysocki
  2011-01-20 11:28 ` [PATCH 2/11] ACPI / PM: Call suspend_nvs_free() earlier during resume Rafael J. Wysocki
@ 2011-01-20 11:30 ` Rafael J. Wysocki
  2011-01-20 11:30 ` [PATCH 4/11] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:30 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The functions acpi_os_read_memory() and acpi_os_write_memory() do
two wrong things.  First, they shouldn't call rcu_read_unlock()
before the looked up address is actually used for I/O, because in
that case the mapping it belongs to may be removed before the I/O
is done.  Second, they shouldn't use the physical address if
there's no mapping for it, because that may lead to problems (at
least for the "write" case it's like sending data to a random
physical address in the hope it's going to work).

Make the rcu_read_unlock() be called by these functions when the I/O
is complete and modify them to dump stack and return error code if
the requested physical address is not present in the ACPI iomaps.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -638,17 +638,17 @@ acpi_os_read_memory(acpi_physical_addres
 {
 	u32 dummy;
 	void __iomem *virt_addr;
-	int size = width / 8, unmap = 0;
+
+	if (!value)
+		value = &dummy;
 
 	rcu_read_lock();
-	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
-	rcu_read_unlock();
+	virt_addr = acpi_map_vaddr_lookup(phys_addr, width / 8);
 	if (!virt_addr) {
-		virt_addr = acpi_os_ioremap(phys_addr, size);
-		unmap = 1;
+		rcu_read_unlock();
+		WARN(true, "Address not mapped: %llx\n", phys_addr);
+		return AE_BAD_ADDRESS;
 	}
-	if (!value)
-		value = &dummy;
 
 	switch (width) {
 	case 8:
@@ -663,9 +663,7 @@ acpi_os_read_memory(acpi_physical_addres
 	default:
 		BUG();
 	}
-
-	if (unmap)
-		iounmap(virt_addr);
+	rcu_read_unlock();
 
 	return AE_OK;
 }
@@ -674,14 +672,13 @@ acpi_status
 acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
 {
 	void __iomem *virt_addr;
-	int size = width / 8, unmap = 0;
 
 	rcu_read_lock();
-	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
-	rcu_read_unlock();
+	virt_addr = acpi_map_vaddr_lookup(phys_addr, width / 8);
 	if (!virt_addr) {
-		virt_addr = acpi_os_ioremap(phys_addr, size);
-		unmap = 1;
+		rcu_read_unlock();
+		WARN(true, "Address not mapped: %llx\n", phys_addr);
+		return AE_BAD_ADDRESS;
 	}
 
 	switch (width) {
@@ -697,9 +694,7 @@ acpi_os_write_memory(acpi_physical_addre
 	default:
 		BUG();
 	}
-
-	if (unmap)
-		iounmap(virt_addr);
+	rcu_read_unlock();
 
 	return AE_OK;
 }


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 4/11] ACPI: Do not export functions that are only used in osl.c
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (2 preceding siblings ...)
  2011-01-20 11:30 ` [PATCH 3/11] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() Rafael J. Wysocki
@ 2011-01-20 11:30 ` Rafael J. Wysocki
  2011-01-20 11:31 ` [PATCH 5/11] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:30 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The functions acpi_os_map_generic_address() and
acpi_os_unmap_generic_address() are only used in drivers/acpi/osl.c,
so make them static and remove the extern definitions of them from
include/linux/acpi_io.h.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c      |    6 ++----
 include/linux/acpi_io.h |    3 ---
 2 files changed, 2 insertions(+), 7 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -397,7 +397,7 @@ void __init early_acpi_os_unmap_memory(v
 		__acpi_unmap_table(virt, size);
 }
 
-int acpi_os_map_generic_address(struct acpi_generic_address *addr)
+static int acpi_os_map_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
 
@@ -413,9 +413,8 @@ int acpi_os_map_generic_address(struct a
 
 	return 0;
 }
-EXPORT_SYMBOL_GPL(acpi_os_map_generic_address);
 
-void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
+static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
 	unsigned long flags;
@@ -433,7 +432,6 @@ void acpi_os_unmap_generic_address(struc
 
 	acpi_os_unmap_memory(virt, size);
 }
-EXPORT_SYMBOL_GPL(acpi_os_unmap_generic_address);
 
 #ifdef ACPI_FUTURE_USAGE
 acpi_status
Index: linux-2.6/include/linux/acpi_io.h
===================================================================
--- linux-2.6.orig/include/linux/acpi_io.h
+++ linux-2.6/include/linux/acpi_io.h
@@ -10,7 +10,4 @@ static inline void __iomem *acpi_os_iore
        return ioremap_cache(phys, size);
 }
 
-int acpi_os_map_generic_address(struct acpi_generic_address *addr);
-void acpi_os_unmap_generic_address(struct acpi_generic_address *addr);
-
 #endif


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 5/11] ACPI: Change acpi_ioremap_lock into a mutex
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (3 preceding siblings ...)
  2011-01-20 11:30 ` [PATCH 4/11] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
@ 2011-01-20 11:31 ` Rafael J. Wysocki
  2011-01-20 11:32 ` [PATCH 6/11] ACPI: Avoid walking the list of iomaps in osl.c twice in a row Rafael J. Wysocki
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:31 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

There's no reason why acpi_ioremap_lock has to be a spinlock,
because all of the functions it is used in may sleep anyway and
there's no reason why it should be locked with interrupts off.
Use a mutex instead (that's going to allow us to put some more
operations under the lock later).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -109,7 +109,7 @@ struct acpi_ioremap {
 };
 
 static LIST_HEAD(acpi_ioremaps);
-static DEFINE_SPINLOCK(acpi_ioremap_lock);
+static DEFINE_MUTEX(acpi_ioremap_lock);
 
 static void __init acpi_osi_setup_late(void);
 
@@ -303,7 +303,6 @@ void __iomem *__init_refok
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 {
 	struct acpi_ioremap *map, *tmp_map;
-	unsigned long flags;
 	void __iomem *virt;
 	acpi_physical_address pg_off;
 	acpi_size pg_sz;
@@ -334,18 +333,18 @@ acpi_os_map_memory(acpi_physical_address
 	map->size = pg_sz;
 	kref_init(&map->ref);
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	/* Check if page has already been mapped. */
 	tmp_map = acpi_map_lookup(phys, size);
 	if (tmp_map) {
 		kref_get(&tmp_map->ref);
-		spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+		mutex_unlock(&acpi_ioremap_lock);
 		iounmap(map->virt);
 		kfree(map);
 		return tmp_map->virt + (phys - tmp_map->phys);
 	}
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	return map->virt + (phys - map->phys);
 }
@@ -362,7 +361,6 @@ static void acpi_kref_del_iomap(struct k
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
-	unsigned long flags;
 	int del;
 
 	if (!acpi_gbl_permanent_mmap) {
@@ -370,17 +368,17 @@ void __ref acpi_os_unmap_memory(void __i
 		return;
 	}
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	map = acpi_map_lookup_virt(virt, size);
 	if (!map) {
-		spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+		mutex_unlock(&acpi_ioremap_lock);
 		printk(KERN_ERR PREFIX "%s: bad address %p\n", __func__, virt);
 		dump_stack();
 		return;
 	}
 
 	del = kref_put(&map->ref, acpi_kref_del_iomap);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	if (!del)
 		return;
@@ -417,7 +415,6 @@ static int acpi_os_map_generic_address(s
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
-	unsigned long flags;
 	acpi_size size = addr->bit_width / 8;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
@@ -426,9 +423,9 @@ static void acpi_os_unmap_generic_addres
 	if (!addr->address || !addr->bit_width)
 		return;
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	virt = acpi_map_vaddr_lookup(addr->address, size);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	acpi_os_unmap_memory(virt, size);
 }


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 6/11] ACPI: Avoid walking the list of iomaps in osl.c twice in a row
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (4 preceding siblings ...)
  2011-01-20 11:31 ` [PATCH 5/11] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
@ 2011-01-20 11:32 ` Rafael J. Wysocki
  2011-01-20 11:33 ` [PATCH 7/11] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:32 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Make acpi_os_unmap_generic_address() use acpi_map_lookup() to find
the desired iomap and drop the reference to it directly (and
eventually remove it if necessary) instead of calling
acpi_os_unmap_memory(), which requires us to walk the list of ACPI
iomaps twice in a row (first, to get the virtual address associated
with the iomap and second, to get the iomap itself).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -358,6 +358,13 @@ static void acpi_kref_del_iomap(struct k
 	list_del_rcu(&map->list);
 }
 
+static void acpi_os_remove_map(struct acpi_ioremap *map)
+{
+	synchronize_rcu();
+	iounmap(map->virt);
+	kfree(map);
+}
+
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
@@ -372,20 +379,14 @@ void __ref acpi_os_unmap_memory(void __i
 	map = acpi_map_lookup_virt(virt, size);
 	if (!map) {
 		mutex_unlock(&acpi_ioremap_lock);
-		printk(KERN_ERR PREFIX "%s: bad address %p\n", __func__, virt);
-		dump_stack();
+		WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
 		return;
 	}
-
 	del = kref_put(&map->ref, acpi_kref_del_iomap);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (!del)
-		return;
-
-	synchronize_rcu();
-	iounmap(map->virt);
-	kfree(map);
+	if (del)
+		acpi_os_remove_map(map);
 }
 EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
 
@@ -414,8 +415,8 @@ static int acpi_os_map_generic_address(s
 
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
-	void __iomem *virt;
-	acpi_size size = addr->bit_width / 8;
+	struct acpi_ioremap *map;
+	int del;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		return;
@@ -424,10 +425,16 @@ static void acpi_os_unmap_generic_addres
 		return;
 
 	mutex_lock(&acpi_ioremap_lock);
-	virt = acpi_map_vaddr_lookup(addr->address, size);
+	map = acpi_map_lookup(addr->address, addr->bit_width / 8);
+	if (!map) {
+		mutex_unlock(&acpi_ioremap_lock);
+		return;
+	}
+	del = kref_put(&map->ref, acpi_kref_del_iomap);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	acpi_os_unmap_memory(virt, size);
+	if (del)
+		acpi_os_remove_map(map);
 }
 
 #ifdef ACPI_FUTURE_USAGE


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 7/11] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (5 preceding siblings ...)
  2011-01-20 11:32 ` [PATCH 6/11] ACPI: Avoid walking the list of iomaps in osl.c twice in a row Rafael J. Wysocki
@ 2011-01-20 11:33 ` Rafael J. Wysocki
  2011-01-20 11:34 ` [PATCH 8/11] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:33 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Modify acpi_os_map_memory() so that it doesn't call acpi_os_ioremap()
unconditionally every time it is executed (except when
acpi_gbl_permanent_mmap is unset), which pretty much defeats the
purpose of maintaining the list of ACPI iomaps in osl.c.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -302,7 +302,7 @@ acpi_map_lookup_virt(void __iomem *virt,
 void __iomem *__init_refok
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 {
-	struct acpi_ioremap *map, *tmp_map;
+	struct acpi_ioremap *map;
 	void __iomem *virt;
 	acpi_physical_address pg_off;
 	acpi_size pg_sz;
@@ -315,14 +315,25 @@ acpi_os_map_memory(acpi_physical_address
 	if (!acpi_gbl_permanent_mmap)
 		return __acpi_map_table((unsigned long)phys, size);
 
+	mutex_lock(&acpi_ioremap_lock);
+	/* Check if there's a suitable mapping already. */
+	map = acpi_map_lookup(phys, size);
+	if (map) {
+		kref_get(&map->ref);
+		goto out;
+	}
+
 	map = kzalloc(sizeof(*map), GFP_KERNEL);
-	if (!map)
+	if (!map) {
+		mutex_unlock(&acpi_ioremap_lock);
 		return NULL;
+	}
 
 	pg_off = round_down(phys, PAGE_SIZE);
 	pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
 	virt = acpi_os_ioremap(pg_off, pg_sz);
 	if (!virt) {
+		mutex_unlock(&acpi_ioremap_lock);
 		kfree(map);
 		return NULL;
 	}
@@ -333,19 +344,10 @@ acpi_os_map_memory(acpi_physical_address
 	map->size = pg_sz;
 	kref_init(&map->ref);
 
-	mutex_lock(&acpi_ioremap_lock);
-	/* Check if page has already been mapped. */
-	tmp_map = acpi_map_lookup(phys, size);
-	if (tmp_map) {
-		kref_get(&tmp_map->ref);
-		mutex_unlock(&acpi_ioremap_lock);
-		iounmap(map->virt);
-		kfree(map);
-		return tmp_map->virt + (phys - tmp_map->phys);
-	}
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
-	mutex_unlock(&acpi_ioremap_lock);
 
+ out:
+	mutex_unlock(&acpi_ioremap_lock);
 	return map->virt + (phys - map->phys);
 }
 EXPORT_SYMBOL_GPL(acpi_os_map_memory);


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 8/11] ACPI: Do not use krefs under a mutex in osl.c
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (6 preceding siblings ...)
  2011-01-20 11:33 ` [PATCH 7/11] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
@ 2011-01-20 11:34 ` Rafael J. Wysocki
  2011-01-20 11:35 ` [PATCH 9/11] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:34 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The reference counting of ACPI iomaps is carried out entirely under
acpi_ioremap_lock, so it is sufficient to use simple counters instead
of krefs for this purpose.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   36 ++++++++++++++++--------------------
 1 file changed, 16 insertions(+), 20 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -105,7 +105,7 @@ struct acpi_ioremap {
 	void __iomem *virt;
 	acpi_physical_address phys;
 	acpi_size size;
-	struct kref ref;
+	unsigned long refcount;
 };
 
 static LIST_HEAD(acpi_ioremaps);
@@ -319,7 +319,7 @@ acpi_os_map_memory(acpi_physical_address
 	/* Check if there's a suitable mapping already. */
 	map = acpi_map_lookup(phys, size);
 	if (map) {
-		kref_get(&map->ref);
+		map->refcount++;
 		goto out;
 	}
 
@@ -342,7 +342,7 @@ acpi_os_map_memory(acpi_physical_address
 	map->virt = virt;
 	map->phys = pg_off;
 	map->size = pg_sz;
-	kref_init(&map->ref);
+	map->refcount = 1;
 
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
 
@@ -352,25 +352,24 @@ acpi_os_map_memory(acpi_physical_address
 }
 EXPORT_SYMBOL_GPL(acpi_os_map_memory);
 
-static void acpi_kref_del_iomap(struct kref *ref)
+static void acpi_os_drop_map_ref(struct acpi_ioremap *map)
 {
-	struct acpi_ioremap *map;
-
-	map = container_of(ref, struct acpi_ioremap, ref);
-	list_del_rcu(&map->list);
+	if (!--map->refcount)
+		list_del_rcu(&map->list);
 }
 
-static void acpi_os_remove_map(struct acpi_ioremap *map)
+static void acpi_os_map_cleanup(struct acpi_ioremap *map)
 {
-	synchronize_rcu();
-	iounmap(map->virt);
-	kfree(map);
+	if (!map->refcount) {
+		synchronize_rcu();
+		iounmap(map->virt);
+		kfree(map);
+	}
 }
 
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
-	int del;
 
 	if (!acpi_gbl_permanent_mmap) {
 		__acpi_unmap_table(virt, size);
@@ -384,11 +383,10 @@ void __ref acpi_os_unmap_memory(void __i
 		WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
 		return;
 	}
-	del = kref_put(&map->ref, acpi_kref_del_iomap);
+	acpi_os_drop_map_ref(map);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (del)
-		acpi_os_remove_map(map);
+	acpi_os_map_cleanup(map);
 }
 EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
 
@@ -418,7 +416,6 @@ static int acpi_os_map_generic_address(s
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	struct acpi_ioremap *map;
-	int del;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		return;
@@ -432,11 +429,10 @@ static void acpi_os_unmap_generic_addres
 		mutex_unlock(&acpi_ioremap_lock);
 		return;
 	}
-	del = kref_put(&map->ref, acpi_kref_del_iomap);
+	acpi_os_drop_map_ref(map);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (del)
-		acpi_os_remove_map(map);
+	acpi_os_map_cleanup(map);
 }
 
 #ifdef ACPI_FUTURE_USAGE


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 9/11] ACPI: Introduce acpi_os_get_iomem()
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (7 preceding siblings ...)
  2011-01-20 11:34 ` [PATCH 8/11] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
@ 2011-01-20 11:35 ` Rafael J. Wysocki
  2011-01-20 11:36 ` [PATCH 10/11] ACPI / PM: Use existing ACPI iomaps for NVS save/restore Rafael J. Wysocki
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:35 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Introduce function acpi_os_get_iomem() that may be used by its callers
to get a reference to an ACPI iomap.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c      |   16 ++++++++++++++++
 include/linux/acpi_io.h |    2 ++
 2 files changed, 18 insertions(+)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -285,6 +285,22 @@ acpi_map_vaddr_lookup(acpi_physical_addr
 	return NULL;
 }
 
+void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size)
+{
+	struct acpi_ioremap *map;
+	void __iomem *virt = NULL;
+
+	mutex_lock(&acpi_ioremap_lock);
+	map = acpi_map_lookup(phys, size);
+	if (map) {
+		virt = map->virt + (phys - map->phys);
+		map->refcount++;
+	}
+	mutex_unlock(&acpi_ioremap_lock);
+	return virt;
+}
+EXPORT_SYMBOL_GPL(acpi_os_get_iomem);
+
 /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
 static struct acpi_ioremap *
 acpi_map_lookup_virt(void __iomem *virt, acpi_size size)
Index: linux-2.6/include/linux/acpi_io.h
===================================================================
--- linux-2.6.orig/include/linux/acpi_io.h
+++ linux-2.6/include/linux/acpi_io.h
@@ -10,4 +10,6 @@ static inline void __iomem *acpi_os_iore
        return ioremap_cache(phys, size);
 }
 
+void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size);
+
 #endif


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 10/11] ACPI / PM: Use existing ACPI iomaps for NVS save/restore
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (8 preceding siblings ...)
  2011-01-20 11:35 ` [PATCH 9/11] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
@ 2011-01-20 11:36 ` Rafael J. Wysocki
  2011-01-20 11:37 ` [PATCH 11/11] ACPI / PM: Make NVS save/restore code use slightly less memory Rafael J. Wysocki
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:36 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Modify the NVS save/restore code to use acpi_os_get_iomem() and
acpi_os_unmap_memory() to acquire and release references to ACPI
iomaps, respectively.  If there's no ACPI iomap corresponding to the
given NVS page, acpi_os_ioremap() is used to map that page and
iounmap() is used to unmap it during resume.  [If the page is not
present in the ACPI iomaps already, it doesn't make sense to add its
mapping to the list of ACPI iomaps, because it's going to be thrown
away during the subsequent resume anyway.]

Testing on my HP nx6325 shows that approx. 90% of the NVS pages
have already been mapped by ACPI before suspend and are present in
the ACPI iomaps, so this change appears to be the right thing to do
in general.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/nvs.c |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -26,6 +26,7 @@ struct nvs_page {
 	unsigned int size;
 	void *kaddr;
 	void *data;
+	bool unmap;
 	struct list_head node;
 };
 
@@ -81,7 +82,13 @@ void suspend_nvs_free(void)
 			free_page((unsigned long)entry->data);
 			entry->data = NULL;
 			if (entry->kaddr) {
-				iounmap(entry->kaddr);
+				if (entry->unmap) {
+					iounmap(entry->kaddr);
+					entry->unmap = false;
+				} else {
+					acpi_os_unmap_memory(entry->kaddr,
+							     entry->size);
+				}
 				entry->kaddr = NULL;
 			}
 		}
@@ -115,8 +122,14 @@ int suspend_nvs_save(void)
 
 	list_for_each_entry(entry, &nvs_list, node)
 		if (entry->data) {
-			entry->kaddr = acpi_os_ioremap(entry->phys_start,
-						    entry->size);
+			unsigned long phys = entry->phys_start;
+			unsigned int size = entry->size;
+
+			entry->kaddr = acpi_os_get_iomem(phys, size);
+			if (!entry->kaddr) {
+				entry->kaddr = acpi_os_ioremap(phys, size);
+				entry->unmap = true;
+			}
 			if (!entry->kaddr) {
 				suspend_nvs_free();
 				return -ENOMEM;


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 11/11] ACPI / PM: Make NVS save/restore code use slightly less memory
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (9 preceding siblings ...)
  2011-01-20 11:36 ` [PATCH 10/11] ACPI / PM: Use existing ACPI iomaps for NVS save/restore Rafael J. Wysocki
@ 2011-01-20 11:37 ` Rafael J. Wysocki
  2011-01-20 16:06 ` [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Jeff Chua
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
  12 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 11:37 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Remove the unnecessary field phys_start from struct nvs_page and
rework the code in nvs.c to reflect that change.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/nvs.c |   45 ++++++++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 17 deletions(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -22,7 +22,6 @@
  */
 
 struct nvs_page {
-	unsigned long phys_start;
 	unsigned int size;
 	void *kaddr;
 	void *data;
@@ -31,6 +30,8 @@ struct nvs_page {
 };
 
 static LIST_HEAD(nvs_list);
+static unsigned long nvs_start;
+static unsigned int nvs_offset;
 
 /**
  *	suspend_nvs_register - register platform NVS memory region to save
@@ -44,25 +45,28 @@ static LIST_HEAD(nvs_list);
 int suspend_nvs_register(unsigned long start, unsigned long size)
 {
 	struct nvs_page *entry, *next;
+	unsigned int offset;
 
+	nvs_start = round_down(start, PAGE_SIZE);
+	nvs_offset = start - nvs_start;
+	offset = nvs_offset;
 	while (size > 0) {
-		unsigned int nr_bytes;
+		unsigned int nr_bytes = PAGE_SIZE - offset;
 
 		entry = kzalloc(sizeof(struct nvs_page), GFP_KERNEL);
 		if (!entry)
-			goto Error;
+			goto err_out;
 
 		list_add_tail(&entry->node, &nvs_list);
-		entry->phys_start = start;
-		nr_bytes = PAGE_SIZE - (start & ~PAGE_MASK);
 		entry->size = (size < nr_bytes) ? size : nr_bytes;
 
 		start += entry->size;
 		size -= entry->size;
+		offset -= offset;
 	}
 	return 0;
 
- Error:
+ err_out:
 	list_for_each_entry_safe(entry, next, &nvs_list, node) {
 		list_del(&entry->node);
 		kfree(entry);
@@ -117,25 +121,32 @@ int suspend_nvs_alloc(void)
 int suspend_nvs_save(void)
 {
 	struct nvs_page *entry;
+	unsigned long page_addr = nvs_start;
+	unsigned int offset = nvs_offset;
 
 	printk(KERN_INFO "PM: Saving platform NVS memory\n");
 
-	list_for_each_entry(entry, &nvs_list, node)
-		if (entry->data) {
-			unsigned long phys = entry->phys_start;
-			unsigned int size = entry->size;
+	list_for_each_entry(entry, &nvs_list, node) {
+		unsigned long phys = page_addr + offset;
+		unsigned int size = entry->size;
 
-			entry->kaddr = acpi_os_get_iomem(phys, size);
-			if (!entry->kaddr) {
-				entry->kaddr = acpi_os_ioremap(phys, size);
-				entry->unmap = true;
-			}
+		if (!entry->data)
+			return -ENOMEM;
+
+		entry->kaddr = acpi_os_get_iomem(phys, size);
+		if (!entry->kaddr) {
+			entry->kaddr = acpi_os_ioremap(phys, size);
 			if (!entry->kaddr) {
 				suspend_nvs_free();
-				return -ENOMEM;
+				return -EIO;
 			}
-			memcpy(entry->data, entry->kaddr, entry->size);
+			entry->unmap = true;
 		}
+		memcpy(entry->data, entry->kaddr, entry->size);
+
+		page_addr += PAGE_SIZE;
+		offset -= offset;
+	}
 
 	return 0;
 }


^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (10 preceding siblings ...)
  2011-01-20 11:37 ` [PATCH 11/11] ACPI / PM: Make NVS save/restore code use slightly less memory Rafael J. Wysocki
@ 2011-01-20 16:06 ` Jeff Chua
  2011-01-20 20:57   ` Rafael J. Wysocki
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
  12 siblings, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-20 16:06 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Thu, Jan 20, 2011 at 7:26 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:

> [10/11] - Make the NVS code use existing iomaps if possible.

Seems ok.

> [11/11] - (cleanup) Remove an unnecessary field from struct nvs_page.

This seems to have an issue. Notebook tries to suspend ... then resume
immediately.

> The patches have been tested on HP nx6325, Toshiba Portege R500 and Acer
> Ferrari One without causing any visible problems to happen.  Also Jeff has
> tested [1/11] and [2/11] and he reports that they fix the synchronize_rcu()
> problem for him.  [Jeff, can you test the whole series, please, and see if
> it doesn't introduce any new issues, [10/11] in particular?]

So, everything seems ok except 11/11.


Jeff.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-20 16:06 ` [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Jeff Chua
@ 2011-01-20 20:57   ` Rafael J. Wysocki
  2011-01-20 21:46     ` Jeff Chua
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-20 20:57 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Thursday, January 20, 2011, Jeff Chua wrote:
> On Thu, Jan 20, 2011 at 7:26 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> 
> > [10/11] - Make the NVS code use existing iomaps if possible.
> 
> Seems ok.
> 
> > [11/11] - (cleanup) Remove an unnecessary field from struct nvs_page.
> 
> This seems to have an issue. Notebook tries to suspend ... then resume
> immediately.

That's unexpected.  Please apply the debug patch below in addition to the
whole series and send a dmesg output containing a (failing) suspend attempt
(with the patch applied).

Thanks,
Rafael


---
 drivers/acpi/nvs.c |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -87,9 +87,15 @@ void suspend_nvs_free(void)
 			entry->data = NULL;
 			if (entry->kaddr) {
 				if (entry->unmap) {
+					pr_info("%s: Unmapping %p\n", __func__,
+						entry->kaddr);
+
 					iounmap(entry->kaddr);
 					entry->unmap = false;
 				} else {
+					pr_info("%s: Dropping %p\n", __func__,
+						entry->kaddr);
+
 					acpi_os_unmap_memory(entry->kaddr,
 							     entry->size);
 				}
@@ -139,9 +145,17 @@ int suspend_nvs_save(void)
 			if (!entry->kaddr) {
 				suspend_nvs_free();
 				return -EIO;
+			} else {
+				pr_info("%s: Mapped %p\n", __func__,
+					entry->kaddr);
 			}
 			entry->unmap = true;
+		} else {
+			pr_info("%s: Got address %p\n", __func__, entry->kaddr);
 		}
+		pr_info("%s: Saving %p <- %p\n", __func__,
+			entry->data, entry->kaddr);
+
 		memcpy(entry->data, entry->kaddr, entry->size);
 
 		page_addr += PAGE_SIZE;
@@ -164,6 +178,10 @@ void suspend_nvs_restore(void)
 	printk(KERN_INFO "PM: Restoring platform NVS memory\n");
 
 	list_for_each_entry(entry, &nvs_list, node)
-		if (entry->data)
+		if (entry->data) {
+			pr_info("%s: Restoring %p -> %p\n", __func__,
+				entry->data, entry->kaddr);
+
 			memcpy(entry->kaddr, entry->data, entry->size);
+		}
 }

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-20 20:57   ` Rafael J. Wysocki
@ 2011-01-20 21:46     ` Jeff Chua
  2011-01-21  0:04       ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-20 21:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

[-- Attachment #1: Type: text/plain, Size: 683 bytes --]

On Fri, Jan 21, 2011 at 4:57 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Thursday, January 20, 2011, Jeff Chua wrote:
>> On Thu, Jan 20, 2011 at 7:26 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>>
>> > [10/11] - Make the NVS code use existing iomaps if possible.
>>
>> Seems ok.
>>
>> > [11/11] - (cleanup) Remove an unnecessary field from struct nvs_page.
>>
>> This seems to have an issue. Notebook tries to suspend ... then resume
>> immediately.
>
> That's unexpected.  Please apply the debug patch below in addition to the
> whole series and send a dmesg output containing a (failing) suspend attempt
> (with the patch applied).

Attached.

Thanks,
Jeff

[-- Attachment #2: dmesg --]
[-- Type: application/octet-stream, Size: 30935 bytes --]

NXSYSTM:00/LNXPWRBN:00/input/input2
ACPI: Power Button [PWRF]
ACPI: acpi_idle registered with cpuidle
Monitor-Mwait will be used to enter C-1 state
Monitor-Mwait will be used to enter C-2 state
Monitor-Mwait will be used to enter C-3 state
thermal LNXTHERM:00: registered as thermal_zone0
ACPI: Thermal Zone [THM0] (54 C)
ERST: Table is not found!
GHES: HEST is not enabled!
ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: Battery Slot [BAT0] (battery present)
Non-volatile memory driver v1.3
Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset
agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable
agpgart-intel 0000:00:00.0: detected 32768K stolen memory
agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
brd: module loaded
loop: module loaded
megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST 2006)
megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006)
megasas: 00.00.05.29-rc1 Tue. Dec. 7 17:00:00 PDT 2010
mpt2sas version 07.100.00.00 loaded
ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: PCI INT B -> GSI 16 (level, low) -> IRQ 16
ahci 0000:00:1f.2: irq 40 for MSI/MSI-X
ahci: SSS flag set, parallel bus scan disabled
ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x31 impl SATA mode
ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ems sxs apst 
ahci 0000:00:1f.2: setting latency timer to 64
scsi0 : ahci
scsi1 : ahci
scsi2 : ahci
scsi3 : ahci
scsi4 : ahci
scsi5 : ahci
ata1: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727100 irq 40
ata2: DUMMY
ata3: DUMMY
ata4: DUMMY
ata5: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727300 irq 40
ata6: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727380 irq 40
Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2
Copyright (c) 2007-2009 Intel Corporation.
ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 3.0.12-k2
ixgbe: Copyright (c) 1999-2010 Intel Corporation.
pcnet32: pcnet32.c:v1.35 21.Apr.2008 tsbogend@alpha.franken.de
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Fusion MPT base driver 3.04.17
Copyright (c) 1999-2008 LSI Corporation
Fusion MPT SPI Host driver 3.04.17
Fusion MPT SAS Host driver 3.04.17
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
ehci_hcd 0000:00:1a.0: setting latency timer to 64
ehci_hcd 0000:00:1a.0: EHCI Host Controller
ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1
Refined TSC clocksource calibration: 2127.999 MHz.
Switching to clocksource tsc
ehci_hcd 0000:00:1a.0: debug port 2
ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported
ehci_hcd 0000:00:1a.0: irq 23, io mem 0xf2728000
ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 3 ports detected
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:1d.0: setting latency timer to 64
ehci_hcd 0000:00:1d.0: EHCI Host Controller
ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
ehci_hcd 0000:00:1d.0: debug port 2
ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported
ehci_hcd 0000:00:1d.0: irq 19, io mem 0xf2728400
ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
uhci_hcd: USB Universal Host Controller Interface driver
i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mousedev: PS/2 mouse device common for all mice
input: PC Speaker as /devices/platform/pcspkr/input/input3
rtc_cmos 00:08: RTC can wake from S4
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
lirc_dev: IR Remote Control driver registered, major 251 
IR RC5 (streamzap) protocol handler initialized
IR LIRC bridge handler initialized
Linux video capture interface: v2.00
coretemp coretemp.0: TjMax is 105 C.
coretemp coretemp.2: TjMax is 105 C.
device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com
EDAC MC: Ver: 2.1.0 Jan 20 2011
cpuidle: using governor ladder
cpuidle: using governor menu
thinkpad_acpi: ThinkPad ACPI Extras v0.24
thinkpad_acpi: http://ibm-acpi.sf.net/
thinkpad_acpi: ThinkPad BIOS 6QET62WW (1.32 ), EC 6QHT31WW-1.12
thinkpad_acpi: Lenovo ThinkPad X201s, model 5413FGA
thinkpad_acpi: detected a 8-level brightness capable ThinkPad
thinkpad_acpi: radio switch found; radios are enabled
thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is blocked
Registered led device: tpacpi::thinklight
Registered led device: tpacpi::power
Registered led device: tpacpi:orange:batt
Registered led device: tpacpi:green:batt
Registered led device: tpacpi::dock_active
Registered led device: tpacpi::bay_active
Registered led device: tpacpi::dock_batt
Registered led device: tpacpi::unknown_led
Registered led device: tpacpi::standby
Registered led device: tpacpi::dock_status1
Registered led device: tpacpi::dock_status2
Registered led device: tpacpi::unknown_led2
Registered led device: tpacpi::unknown_led3
Registered led device: tpacpi::thinkvantage
thinkpad_acpi: warning: userspace override of important firmware LEDs is enabled
thinkpad_acpi: volume: disabled as there is no ALSA support in this kernel
input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input5
hdaps: supported laptop not found!
hdaps: driver init failed (ret=-19)!
HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
HDA Intel 0000:00:1b.0: setting latency timer to 64
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: ATA-7: SAMSUNG SSD PM800 2.5" 256GB, VBM25D1Q, max UDMA/100
ata1.00: 500118192 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: configured for UDMA/100
scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG SSD PM80 VBM2 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: Attached scsi generic sg0 type 0
 sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 >
sd 0:0:0:0: [sda] Attached SCSI disk
hda-codec: No codec parser is available
ALSA device list:
  #0: HDA Intel at 0xf2520000 irq 41
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
ctnetlink v0.93: registering with nfnetlink.
ip_tables: (C) 2000-2006 Netfilter Core Team
arp_tables: (C) 2002 David S. Miller
TCP bic registered
TCP cubic registered
TCP highspeed registered
NET: Registered protocol family 17
lib80211: common routines for IEEE802.11 drivers
lib80211_crypt: registered algorithm 'NULL'
rtc_cmos 00:08: setting system clock to 2011-01-20 21:42:49 UTC (1295559769)
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 6 ports detected
ata5: SATA link down (SStatus 0 SControl 300)
IBM TrackPoint firmware: 0x0e, buttons: 3/3
input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/input/input6
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 8 ports detected
ata6: SATA link down (SStatus 0 SControl 300)
VFS: Mounted root (reiserfs filesystem) readonly on device 8:2.
Freeing unused kernel memory: 588k freed
Adding 8290300k swap on /dev/sda3.  Priority:-1 extents:1 across:8290300k SS
[drm] Initialized drm 1.1.0 20060810
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
i915 0000:00:02.0: setting latency timer to 64
i915 0000:00:02.0: irq 42 for MSI/MSI-X
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] Driver supports precise vblank timestamp query.
vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
Console: switching to colour frame buffer device 180x56
fb0: inteldrmfb frame buffer device
drm: registered panic notifier
No ACPI video bus found
[drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
ehci_hcd 0000:00:1d.0: PCI INT D disabled
ehci_hcd 0000:00:1a.0: PCI INT D disabled
HDA Intel 0000:00:1b.0: PCI INT B disabled
i915 0000:00:02.0: power state changed by ACPI to D3
PM: suspend of devices complete after 3089.535 msecs
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D3
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D3
PM: late suspend of devices complete after 90.098 msecs
ACPI: Preparing to enter system sleep state S3
PM: Saving platform NVS memory
suspend_nvs_save: Mapped ffffc900018e8000
suspend_nvs_save: Saving ffff880234122000 <- ffffc900018e8000
suspend_nvs_save: Mapped ffffc900018c0000
suspend_nvs_save: Saving ffff88023723b000 <- ffffc900018c0000
suspend_nvs_save: Mapped ffffc900018c4000
suspend_nvs_save: Saving ffff880234053000 <- ffffc900018c4000
suspend_nvs_save: Mapped ffffc900018c8000
suspend_nvs_save: Saving ffff88023496c000 <- ffffc900018c8000
suspend_nvs_save: Mapped ffffc900018cc000
suspend_nvs_save: Saving ffff88023714d000 <- ffffc900018cc000
suspend_nvs_save: Mapped ffffc900018d0000
suspend_nvs_save: Saving ffff880234060000 <- ffffc900018d0000
suspend_nvs_save: Mapped ffffc900018d4000
suspend_nvs_save: Saving ffff88023499a000 <- ffffc900018d4000
suspend_nvs_save: Mapped ffffc900018d8000
suspend_nvs_save: Saving ffff880234061000 <- ffffc900018d8000
suspend_nvs_save: Mapped ffffc900018dc000
suspend_nvs_save: Saving ffff8802340bd000 <- ffffc900018dc000
suspend_nvs_save: Mapped ffffc900018e0000
suspend_nvs_save: Saving ffff880234042000 <- ffffc900018e0000
suspend_nvs_save: Mapped ffffc900018ec000
suspend_nvs_save: Saving ffff880234a55000 <- ffffc900018ec000
suspend_nvs_save: Mapped ffffc900018f0000
suspend_nvs_save: Saving ffff88023407d000 <- ffffc900018f0000
suspend_nvs_save: Mapped ffffc900018f4000
suspend_nvs_save: Saving ffff880234bad000 <- ffffc900018f4000
suspend_nvs_save: Mapped ffffc900018f8000
suspend_nvs_save: Saving ffff880234a5a000 <- ffffc900018f8000
suspend_nvs_save: Mapped ffffc90001bc6000
suspend_nvs_save: Saving ffff8802340e1000 <- ffffc90001bc6000
suspend_nvs_save: Mapped ffffc90001bca000
suspend_nvs_save: Saving ffff8802349ee000 <- ffffc90001bca000
suspend_nvs_save: Mapped ffffc90001bce000
suspend_nvs_save: Saving ffff88023720d000 <- ffffc90001bce000
suspend_nvs_save: Mapped ffffc90001bd2000
suspend_nvs_save: Saving ffff880234abf000 <- ffffc90001bd2000
suspend_nvs_save: Mapped ffffc90001bd6000
suspend_nvs_save: Saving ffff8802354c8000 <- ffffc90001bd6000
suspend_nvs_save: Mapped ffffc90001bda000
suspend_nvs_save: Saving ffff8802371a9000 <- ffffc90001bda000
suspend_nvs_save: Mapped ffffc90001bde000
suspend_nvs_save: Saving ffff88023727b000 <- ffffc90001bde000
suspend_nvs_save: Mapped ffffc90001be2000
suspend_nvs_save: Saving ffff8802370a2000 <- ffffc90001be2000
suspend_nvs_save: Mapped ffffc90001be6000
suspend_nvs_save: Saving ffff8802340b1000 <- ffffc90001be6000
suspend_nvs_save: Mapped ffffc90001bea000
suspend_nvs_save: Saving ffff880234048000 <- ffffc90001bea000
suspend_nvs_save: Mapped ffffc90001bee000
suspend_nvs_save: Saving ffff88023550d000 <- ffffc90001bee000
suspend_nvs_save: Mapped ffffc90001bf2000
suspend_nvs_save: Saving ffff880234a54000 <- ffffc90001bf2000
suspend_nvs_save: Mapped ffffc90001bf6000
suspend_nvs_save: Saving ffff88023413a000 <- ffffc90001bf6000
suspend_nvs_save: Mapped ffffc90001bfa000
suspend_nvs_save: Saving ffff880234123000 <- ffffc90001bfa000
suspend_nvs_save: Mapped ffffc90001bfe000
suspend_nvs_save: Saving ffff880234acb000 <- ffffc90001bfe000
suspend_nvs_save: Mapped ffffc90001c02000
suspend_nvs_save: Saving ffff880234987000 <- ffffc90001c02000
suspend_nvs_save: Mapped ffffc90001c06000
suspend_nvs_save: Saving ffff880234062000 <- ffffc90001c06000
suspend_nvs_save: Mapped ffffc90001c0a000
suspend_nvs_save: Saving ffff880234a8e000 <- ffffc90001c0a000
suspend_nvs_save: Mapped ffffc90001c0e000
suspend_nvs_save: Saving ffff880234076000 <- ffffc90001c0e000
suspend_nvs_save: Mapped ffffc90001c12000
suspend_nvs_save: Saving ffff88023728a000 <- ffffc90001c12000
suspend_nvs_save: Mapped ffffc90001c16000
suspend_nvs_save: Saving ffff880237092000 <- ffffc90001c16000
suspend_nvs_save: Mapped ffffc90001c1a000
suspend_nvs_save: Saving ffff880235537000 <- ffffc90001c1a000
suspend_nvs_save: Mapped ffffc90001c1e000
suspend_nvs_save: Saving ffff880234077000 <- ffffc90001c1e000
suspend_nvs_save: Mapped ffffc90001c22000
suspend_nvs_save: Saving ffff8802354c6000 <- ffffc90001c22000
suspend_nvs_save: Mapped ffffc90001c26000
suspend_nvs_save: Saving ffff88023413b000 <- ffffc90001c26000
suspend_nvs_save: Mapped ffffc90001c2a000
suspend_nvs_save: Saving ffff8802370cd000 <- ffffc90001c2a000
suspend_nvs_save: Mapped ffffc90001c2e000
suspend_nvs_save: Saving ffff8802340c1000 <- ffffc90001c2e000
suspend_nvs_save: Mapped ffffc90001c32000
suspend_nvs_save: Saving ffff88023b143000 <- ffffc90001c32000
suspend_nvs_save: Mapped ffffc90001c36000
suspend_nvs_save: Saving ffff880234984000 <- ffffc90001c36000
suspend_nvs_save: Mapped ffffc90001c3a000
suspend_nvs_save: Saving ffff88023713a000 <- ffffc90001c3a000
suspend_nvs_save: Mapped ffffc90001c3e000
suspend_nvs_save: Saving ffff8802372d7000 <- ffffc90001c3e000
suspend_nvs_save: Mapped ffffc90001c42000
suspend_nvs_save: Saving ffff880234b29000 <- ffffc90001c42000
suspend_nvs_save: Mapped ffffc90001c46000
suspend_nvs_save: Saving ffff88023498e000 <- ffffc90001c46000
suspend_nvs_save: Mapped ffffc90001c4a000
suspend_nvs_save: Saving ffff880234118000 <- ffffc90001c4a000
suspend_nvs_save: Mapped ffffc90001c4e000
suspend_nvs_save: Saving ffff880235560000 <- ffffc90001c4e000
suspend_nvs_save: Mapped ffffc90001c52000
suspend_nvs_save: Saving ffff880234a64000 <- ffffc90001c52000
suspend_nvs_save: Mapped ffffc90001c56000
suspend_nvs_save: Saving ffff880234991000 <- ffffc90001c56000
suspend_nvs_save: Mapped ffffc90001c5a000
suspend_nvs_save: Saving ffff880234b63000 <- ffffc90001c5a000
suspend_nvs_save: Mapped ffffc90001c5e000
suspend_nvs_save: Saving ffff8802340dd000 <- ffffc90001c5e000
suspend_nvs_save: Mapped ffffc90001c62000
suspend_nvs_save: Saving ffff880234945000 <- ffffc90001c62000
suspend_nvs_save: Mapped ffffc90001c66000
suspend_nvs_save: Saving ffff880234030000 <- ffffc90001c66000
suspend_nvs_save: Mapped ffffc90001c6a000
suspend_nvs_save: Saving ffff88023403a000 <- ffffc90001c6a000
suspend_nvs_save: Mapped ffffc90001c6e000
suspend_nvs_save: Saving ffff8802340d3000 <- ffffc90001c6e000
suspend_nvs_save: Mapped ffffc90001c72000
suspend_nvs_save: Saving ffff8802349d3000 <- ffffc90001c72000
suspend_nvs_save: Mapped ffffc90001c76000
suspend_nvs_save: Saving ffff88023494a000 <- ffffc90001c76000
suspend_nvs_save: Mapped ffffc90001c7a000
suspend_nvs_save: Saving ffff8802348ea000 <- ffffc90001c7a000
suspend_nvs_save: Mapped ffffc90001c7e000
suspend_nvs_save: Saving ffff880234b75000 <- ffffc90001c7e000
suspend_nvs_save: Mapped ffffc90001c82000
suspend_nvs_save: Saving ffff88023723f000 <- ffffc90001c82000
suspend_nvs_save: Mapped ffffc90001c86000
suspend_nvs_save: Saving ffff880234064000 <- ffffc90001c86000
suspend_nvs_save: Mapped ffffc90001c8a000
suspend_nvs_save: Saving ffff880234966000 <- ffffc90001c8a000
suspend_nvs_save: Mapped ffffc90001c8e000
suspend_nvs_save: Saving ffff88023404b000 <- ffffc90001c8e000
suspend_nvs_save: Mapped ffffc90001c92000
suspend_nvs_save: Saving ffff88023410e000 <- ffffc90001c92000
suspend_nvs_save: Mapped ffffc90001c96000
suspend_nvs_save: Saving ffff8802372aa000 <- ffffc90001c96000
suspend_nvs_save: Mapped ffffc90001c9a000
suspend_nvs_save: Saving ffff880234b36000 <- ffffc90001c9a000
suspend_nvs_save: Mapped ffffc90001c9e000
suspend_nvs_save: Saving ffff8802348fc000 <- ffffc90001c9e000
suspend_nvs_save: Mapped ffffc90001ca2000
suspend_nvs_save: Saving ffff88023549c000 <- ffffc90001ca2000
suspend_nvs_save: Mapped ffffc90001ca6000
suspend_nvs_save: Saving ffff880234917000 <- ffffc90001ca6000
suspend_nvs_save: Mapped ffffc90001caa000
suspend_nvs_save: Saving ffff8802371a2000 <- ffffc90001caa000
suspend_nvs_save: Mapped ffffc90001cae000
suspend_nvs_save: Saving ffff880234964000 <- ffffc90001cae000
suspend_nvs_save: Mapped ffffc90001cb2000
suspend_nvs_save: Saving ffff880234a3c000 <- ffffc90001cb2000
suspend_nvs_save: Mapped ffffc90001cb6000
suspend_nvs_save: Saving ffff88023402a000 <- ffffc90001cb6000
suspend_nvs_save: Mapped ffffc90001cba000
suspend_nvs_save: Saving ffff8802348fb000 <- ffffc90001cba000
suspend_nvs_save: Mapped ffffc90001cbe000
suspend_nvs_save: Saving ffff880234063000 <- ffffc90001cbe000
suspend_nvs_save: Mapped ffffc90001cc2000
suspend_nvs_save: Saving ffff880234b76000 <- ffffc90001cc2000
suspend_nvs_save: Mapped ffffc90001cc6000
suspend_nvs_save: Saving ffff8802349b9000 <- ffffc90001cc6000
suspend_nvs_save: Mapped ffffc90001cca000
suspend_nvs_save: Saving ffff8802348c1000 <- ffffc90001cca000
suspend_nvs_save: Mapped ffffc90001cce000
suspend_nvs_save: Saving ffff880237147000 <- ffffc90001cce000
suspend_nvs_save: Mapped ffffc90001cd2000
suspend_nvs_save: Saving ffff880234089000 <- ffffc90001cd2000
suspend_nvs_save: Mapped ffffc90001cd6000
suspend_nvs_save: Saving ffff880239ef4000 <- ffffc90001cd6000
suspend_nvs_save: Mapped ffffc90001cda000
suspend_nvs_save: Saving ffff880234aad000 <- ffffc90001cda000
suspend_nvs_save: Mapped ffffc90001cde000
suspend_nvs_save: Saving ffff880234052000 <- ffffc90001cde000
suspend_nvs_save: Mapped ffffc90001ce2000
suspend_nvs_save: Saving ffff8802349e9000 <- ffffc90001ce2000
suspend_nvs_save: Mapped ffffc90001ce6000
suspend_nvs_save: Saving ffff880234aa8000 <- ffffc90001ce6000
suspend_nvs_save: Mapped ffffc90001cea000
suspend_nvs_save: Saving ffff880234bc6000 <- ffffc90001cea000
suspend_nvs_save: Mapped ffffc90001cee000
suspend_nvs_save: Saving ffff8802349dc000 <- ffffc90001cee000
suspend_nvs_save: Mapped ffffc90001cf2000
suspend_nvs_save: Saving ffff8802340e4000 <- ffffc90001cf2000
suspend_nvs_save: Mapped ffffc90001cf6000
suspend_nvs_save: Saving ffff880234b0c000 <- ffffc90001cf6000
suspend_nvs_save: Mapped ffffc90001cfa000
suspend_nvs_save: Saving ffff880234b0d000 <- ffffc90001cfa000
suspend_nvs_save: Mapped ffffc90001cfe000
suspend_nvs_save: Saving ffff8802349ea000 <- ffffc90001cfe000
suspend_nvs_save: Mapped ffffc90001d02000
suspend_nvs_save: Saving ffff8802349eb000 <- ffffc90001d02000
suspend_nvs_save: Mapped ffffc90001d06000
suspend_nvs_save: Saving ffff880234038000 <- ffffc90001d06000
suspend_nvs_save: Mapped ffffc90001d0a000
suspend_nvs_save: Saving ffff880234039000 <- ffffc90001d0a000
suspend_nvs_save: Mapped ffffc90001d0e000
suspend_nvs_save: Saving ffff880234102000 <- ffffc90001d0e000
suspend_nvs_save: Mapped ffffc90001d12000
suspend_nvs_save: Saving ffff880234103000 <- ffffc90001d12000
suspend_nvs_save: Mapped ffffc90001d16000
suspend_nvs_save: Saving ffff880234066000 <- ffffc90001d16000
suspend_nvs_save: Mapped ffffc90001d1a000
suspend_nvs_save: Saving ffff880234067000 <- ffffc90001d1a000
suspend_nvs_save: Got address ffffc90000c20000
suspend_nvs_save: Saving ffff880234b06000 <- ffffc90000c20000
suspend_nvs_save: Got address ffffc90000c21000
suspend_nvs_save: Saving ffff880234b07000 <- ffffc90000c21000
suspend_nvs_save: Got address ffffc90000c22000
suspend_nvs_save: Saving ffff8802340de000 <- ffffc90000c22000
suspend_nvs_save: Got address ffffc90000c23000
suspend_nvs_save: Saving ffff8802340df000 <- ffffc90000c23000
suspend_nvs_save: Got address ffffc90000c24000
suspend_nvs_save: Saving ffff880234032000 <- ffffc90000c24000
suspend_nvs_save: Got address ffffc90000c25000
suspend_nvs_save: Saving ffff880234033000 <- ffffc90000c25000
suspend_nvs_save: Got address ffffc90000c26000
suspend_nvs_save: Saving ffff88023410c000 <- ffffc90000c26000
suspend_nvs_save: Got address ffffc90000c27000
suspend_nvs_save: Saving ffff88023410d000 <- ffffc90000c27000
suspend_nvs_save: Got address ffffc90000c28000
suspend_nvs_save: Saving ffff880239ee6000 <- ffffc90000c28000
suspend_nvs_save: Got address ffffc90000c29000
suspend_nvs_save: Saving ffff880239ee7000 <- ffffc90000c29000
suspend_nvs_save: Got address ffffc90000c2a000
suspend_nvs_save: Saving ffff8802349d0000 <- ffffc90000c2a000
suspend_nvs_save: Got address ffffc90000c2b000
suspend_nvs_save: Saving ffff8802349d1000 <- ffffc90000c2b000
suspend_nvs_save: Got address ffffc90000c2c000
suspend_nvs_save: Saving ffff880234998000 <- ffffc90000c2c000
suspend_nvs_save: Got address ffffc90000c2d000
suspend_nvs_save: Saving ffff880234999000 <- ffffc90000c2d000
suspend_nvs_save: Got address ffffc90000c2e000
suspend_nvs_save: Saving ffff8802349b0000 <- ffffc90000c2e000
suspend_nvs_free: Unmapping ffffc900018e8000
suspend_nvs_free: Unmapping ffffc900018c0000
suspend_nvs_free: Unmapping ffffc900018c4000
suspend_nvs_free: Unmapping ffffc900018c8000
suspend_nvs_free: Unmapping ffffc900018cc000
suspend_nvs_free: Unmapping ffffc900018d0000
suspend_nvs_free: Unmapping ffffc900018d4000
suspend_nvs_free: Unmapping ffffc900018d8000
suspend_nvs_free: Unmapping ffffc900018dc000
suspend_nvs_free: Unmapping ffffc900018e0000
suspend_nvs_free: Unmapping ffffc900018ec000
suspend_nvs_free: Unmapping ffffc900018f0000
suspend_nvs_free: Unmapping ffffc900018f4000
suspend_nvs_free: Unmapping ffffc900018f8000
suspend_nvs_free: Unmapping ffffc90001bc6000
suspend_nvs_free: Unmapping ffffc90001bca000
suspend_nvs_free: Unmapping ffffc90001bce000
suspend_nvs_free: Unmapping ffffc90001bd2000
suspend_nvs_free: Unmapping ffffc90001bd6000
suspend_nvs_free: Unmapping ffffc90001bda000
suspend_nvs_free: Unmapping ffffc90001bde000
suspend_nvs_free: Unmapping ffffc90001be2000
suspend_nvs_free: Unmapping ffffc90001be6000
suspend_nvs_free: Unmapping ffffc90001bea000
suspend_nvs_free: Unmapping ffffc90001bee000
suspend_nvs_free: Unmapping ffffc90001bf2000
suspend_nvs_free: Unmapping ffffc90001bf6000
suspend_nvs_free: Unmapping ffffc90001bfa000
suspend_nvs_free: Unmapping ffffc90001bfe000
suspend_nvs_free: Unmapping ffffc90001c02000
suspend_nvs_free: Unmapping ffffc90001c06000
suspend_nvs_free: Unmapping ffffc90001c0a000
suspend_nvs_free: Unmapping ffffc90001c0e000
suspend_nvs_free: Unmapping ffffc90001c12000
suspend_nvs_free: Unmapping ffffc90001c16000
suspend_nvs_free: Unmapping ffffc90001c1a000
suspend_nvs_free: Unmapping ffffc90001c1e000
suspend_nvs_free: Unmapping ffffc90001c22000
suspend_nvs_free: Unmapping ffffc90001c26000
suspend_nvs_free: Unmapping ffffc90001c2a000
suspend_nvs_free: Unmapping ffffc90001c2e000
suspend_nvs_free: Unmapping ffffc90001c32000
suspend_nvs_free: Unmapping ffffc90001c36000
suspend_nvs_free: Unmapping ffffc90001c3a000
suspend_nvs_free: Unmapping ffffc90001c3e000
suspend_nvs_free: Unmapping ffffc90001c42000
suspend_nvs_free: Unmapping ffffc90001c46000
suspend_nvs_free: Unmapping ffffc90001c4a000
suspend_nvs_free: Unmapping ffffc90001c4e000
suspend_nvs_free: Unmapping ffffc90001c52000
suspend_nvs_free: Unmapping ffffc90001c56000
suspend_nvs_free: Unmapping ffffc90001c5a000
suspend_nvs_free: Unmapping ffffc90001c5e000
suspend_nvs_free: Unmapping ffffc90001c62000
suspend_nvs_free: Unmapping ffffc90001c66000
suspend_nvs_free: Unmapping ffffc90001c6a000
suspend_nvs_free: Unmapping ffffc90001c6e000
suspend_nvs_free: Unmapping ffffc90001c72000
suspend_nvs_free: Unmapping ffffc90001c76000
suspend_nvs_free: Unmapping ffffc90001c7a000
suspend_nvs_free: Unmapping ffffc90001c7e000
suspend_nvs_free: Unmapping ffffc90001c82000
suspend_nvs_free: Unmapping ffffc90001c86000
suspend_nvs_free: Unmapping ffffc90001c8a000
suspend_nvs_free: Unmapping ffffc90001c8e000
suspend_nvs_free: Unmapping ffffc90001c92000
suspend_nvs_free: Unmapping ffffc90001c96000
suspend_nvs_free: Unmapping ffffc90001c9a000
suspend_nvs_free: Unmapping ffffc90001c9e000
suspend_nvs_free: Unmapping ffffc90001ca2000
suspend_nvs_free: Unmapping ffffc90001ca6000
suspend_nvs_free: Unmapping ffffc90001caa000
suspend_nvs_free: Unmapping ffffc90001cae000
suspend_nvs_free: Unmapping ffffc90001cb2000
suspend_nvs_free: Unmapping ffffc90001cb6000
suspend_nvs_free: Unmapping ffffc90001cba000
suspend_nvs_free: Unmapping ffffc90001cbe000
suspend_nvs_free: Unmapping ffffc90001cc2000
suspend_nvs_free: Unmapping ffffc90001cc6000
suspend_nvs_free: Unmapping ffffc90001cca000
suspend_nvs_free: Unmapping ffffc90001cce000
suspend_nvs_free: Unmapping ffffc90001cd2000
suspend_nvs_free: Unmapping ffffc90001cd6000
suspend_nvs_free: Unmapping ffffc90001cda000
suspend_nvs_free: Unmapping ffffc90001cde000
suspend_nvs_free: Unmapping ffffc90001ce2000
suspend_nvs_free: Unmapping ffffc90001ce6000
suspend_nvs_free: Unmapping ffffc90001cea000
suspend_nvs_free: Unmapping ffffc90001cee000
suspend_nvs_free: Unmapping ffffc90001cf2000
suspend_nvs_free: Unmapping ffffc90001cf6000
suspend_nvs_free: Unmapping ffffc90001cfa000
suspend_nvs_free: Unmapping ffffc90001cfe000
suspend_nvs_free: Unmapping ffffc90001d02000
suspend_nvs_free: Unmapping ffffc90001d06000
suspend_nvs_free: Unmapping ffffc90001d0a000
suspend_nvs_free: Unmapping ffffc90001d0e000
suspend_nvs_free: Unmapping ffffc90001d12000
suspend_nvs_free: Unmapping ffffc90001d16000
suspend_nvs_free: Unmapping ffffc90001d1a000
suspend_nvs_free: Dropping ffffc90000c20000
suspend_nvs_free: Dropping ffffc90000c21000
suspend_nvs_free: Dropping ffffc90000c22000
suspend_nvs_free: Dropping ffffc90000c23000
suspend_nvs_free: Dropping ffffc90000c24000
suspend_nvs_free: Dropping ffffc90000c25000
suspend_nvs_free: Dropping ffffc90000c26000
suspend_nvs_free: Dropping ffffc90000c27000
suspend_nvs_free: Dropping ffffc90000c28000
suspend_nvs_free: Dropping ffffc90000c29000
suspend_nvs_free: Dropping ffffc90000c2a000
suspend_nvs_free: Dropping ffffc90000c2b000
suspend_nvs_free: Dropping ffffc90000c2c000
suspend_nvs_free: Dropping ffffc90000c2d000
suspend_nvs_free: Dropping ffffc90000c2e000
ACPI: Waking up from system sleep state S3
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: BAR 0: set to [mem 0xf2000000-0xf23fffff 64bit] (PCI address [0xf2000000-0xf23fffff])
i915 0000:00:02.0: BAR 2: set to [mem 0xd0000000-0xdfffffff 64bit pref] (PCI address [0xd0000000-0xdfffffff])
i915 0000:00:02.0: BAR 4: set to [io  0x1800-0x1807] (PCI address [0x1800-0x1807])
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900403, writing 0x900407)
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: BAR 0: set to [mem 0xf2728000-0xf27283ff] (PCI address [0xf2728000-0xf27283ff])
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
ehci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
HDA Intel 0000:00:1b.0: BAR 0: set to [mem 0xf2520000-0xf2523fff 64bit] (PCI address [0xf2520000-0xf2523fff])
HDA Intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
HDA Intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x10)
HDA Intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100102)
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: BAR 0: set to [mem 0xf2728400-0xf27287ff] (PCI address [0xf2728400-0xf27287ff])
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
ehci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ahci 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00403, writing 0x2b00407)
PM: early resume of devices complete after 150.373 msecs
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
i915 0000:00:02.0: setting latency timer to 64
HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
HDA Intel 0000:00:1b.0: setting latency timer to 64
ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
ehci_hcd 0000:00:1a.0: setting latency timer to 64
HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:1d.0: setting latency timer to 64
pci 0000:00:1e.0: setting latency timer to 64
ahci 0000:00:1f.2: setting latency timer to 64
sd 0:0:0:0: [sda] Starting disk
ioremap error for 0xbb77e000-0xbb781000, requested 0x10, got 0x0
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: configured for UDMA/100
PM: resume of devices complete after 361.972 msecs
ata6: SATA link down (SStatus 0 SControl 300)
ata5: SATA link down (SStatus 0 SControl 300)
Restarting tasks ... done.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-20 21:46     ` Jeff Chua
@ 2011-01-21  0:04       ` Rafael J. Wysocki
  2011-01-21  2:51         ` Jeff Chua
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-21  0:04 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Thursday, January 20, 2011, Jeff Chua wrote:
> On Fri, Jan 21, 2011 at 4:57 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Thursday, January 20, 2011, Jeff Chua wrote:
> >> On Thu, Jan 20, 2011 at 7:26 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> >>
> >> > [10/11] - Make the NVS code use existing iomaps if possible.
> >>
> >> Seems ok.
> >>
> >> > [11/11] - (cleanup) Remove an unnecessary field from struct nvs_page.
> >>
> >> This seems to have an issue. Notebook tries to suspend ... then resume
> >> immediately.
> >
> > That's unexpected.  Please apply the debug patch below in addition to the
> > whole series and send a dmesg output containing a (failing) suspend attempt
> > (with the patch applied).
> 
> Attached.

Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
output containing a (failing) suspend attempt.

Please attach full dmesg, so that I can see the size and address of your
system's NVS region.

Thanks,
Rafael


---
 drivers/acpi/nvs.c |   27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -87,9 +87,15 @@ void suspend_nvs_free(void)
 			entry->data = NULL;
 			if (entry->kaddr) {
 				if (entry->unmap) {
+					pr_info("%s: Unmapping %p\n", __func__,
+						entry->kaddr);
+
 					iounmap(entry->kaddr);
 					entry->unmap = false;
 				} else {
+					pr_info("%s: Dropping %p\n", __func__,
+						entry->kaddr);
+
 					acpi_os_unmap_memory(entry->kaddr,
 							     entry->size);
 				}
@@ -130,6 +136,8 @@ int suspend_nvs_save(void)
 		unsigned long phys = page_addr + offset;
 		unsigned int size = entry->size;
 
+		pr_info("%s: phys = %lx, size = %d\n", __func__, phys, size);
+
 		if (!entry->data)
 			return -ENOMEM;
 
@@ -137,11 +145,24 @@ int suspend_nvs_save(void)
 		if (!entry->kaddr) {
 			entry->kaddr = acpi_os_ioremap(phys, size);
 			if (!entry->kaddr) {
+
+				pr_info("%s: acpi_os_ioremap() failed\n",
+					__func__);
+
 				suspend_nvs_free();
 				return -EIO;
+			} else {
+				pr_info("%s: Mapped %p\n", __func__,
+					entry->kaddr);
 			}
 			entry->unmap = true;
+		} else {
+			pr_info("%s: Got address %p\n", __func__, entry->kaddr);
 		}
+
+		pr_info("%s: Saving %p <- %p\n", __func__,
+			entry->data, entry->kaddr);
+
 		memcpy(entry->data, entry->kaddr, entry->size);
 
 		page_addr += PAGE_SIZE;
@@ -164,6 +185,10 @@ void suspend_nvs_restore(void)
 	printk(KERN_INFO "PM: Restoring platform NVS memory\n");
 
 	list_for_each_entry(entry, &nvs_list, node)
-		if (entry->data)
+		if (entry->data) {
+			pr_info("%s: Restoring %p -> %p\n", __func__,
+				entry->data, entry->kaddr);
+
 			memcpy(entry->kaddr, entry->data, entry->size);
+		}
 }

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-21  0:04       ` Rafael J. Wysocki
@ 2011-01-21  2:51         ` Jeff Chua
  2011-01-21 12:01           ` Rafael J. Wysocki
  2011-01-21 21:06           ` Rafael J. Wysocki
  0 siblings, 2 replies; 47+ messages in thread
From: Jeff Chua @ 2011-01-21  2:51 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
> Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
> instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> output containing a (failing) suspend attempt.
>
> Please attach full dmesg, so that I can see the size and address of your
> system's NVS region.

Attached.

Jeff

[-- Attachment #2: k1 --]
[-- Type: application/octet-stream, Size: 56347 bytes --]

Booting paravirtualized kernel on bare hardware
setup_percpu: NR_CPUS:16 nr_cpumask_bits:16 nr_cpu_ids:4 nr_node_ids:1
PERCPU: Embedded 26 pages/cpu @ffff8800bb000000 s75392 r8192 d22912 u524288
pcpu-alloc: s75392 r8192 d22912 u524288 alloc=1*2097152
pcpu-alloc: [0] 0 1 2 3 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 2012790
Policy zone: Normal
Kernel command line: BOOT_IMAGE=(hd0,14)/linux/bzc1 root=/dev/sda2 ro resume=/dev/sda3 reboot=bios mce x11 snd-hda-intel.model=lenovo-x200 nf_conntrack_sip.sip_direct_signalling=0 nf_conntrack_sip.sip_direct_media=0 testing_only=\"this is got to be good. Now I can send in a very long line just like 2.4 and need not worry about the line being too long. What a great way to start a great year!!! Cool!\"
PID hash table entries: 4096 (order: 3, 32768 bytes)
Checking aperture...
No AGP bridge found
Memory: 7989576k/9371648k available (4738k kernel code, 1192336k absent, 189736k reserved, 2573k data, 588k init)
SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptable hierarchical RCU implementation.
	CONFIG_RCU_FANOUT set to non-default value of 32
	RCU-based detection of stalled CPUs is disabled.
	Verbose stalled-CPUs detection is disabled.
NR_IRQS:768
Extended CMOS year: 2000
Console: colour dummy device 80x25
console [tty0] enabled
hpet clockevent registered
Fast TSC calibration using PIT
Detected 2127.820 MHz processor.
Calibrating delay loop (skipped), value calculated using timer frequency.. 4255.64 BogoMIPS (lpj=21278200)
pid_max: default: 32768 minimum: 301
Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
Mount-cache hash table entries: 256
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 0
mce: CPU supports 9 MCE banks
CPU0: Thermal monitoring enabled (TM1)
using mwait in idle threads.
ACPI: Core revision 20101209
Setting APIC routing to flat
..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
CPU0: Intel(R) Core(TM) i7 CPU       L 640  @ 2.13GHz stepping 02
Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver.
... version:                3
... bit width:              48
... generic registers:      4
... value mask:             0000ffffffffffff
... max period:             000000007fffffff
... fixed-purpose events:   3
... event mask:             000000070000000f
Booting Node   0, Processors  #1 #2 #3 Ok.
Brought up 4 CPUs
Total of 4 processors activated (17023.57 BogoMIPS).
NET: Registered protocol family 16
ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
ACPI: bus type pci registered
PCI: Using configuration type 1 for base access
bio: create slab <bio-0> at 0
ACPI: EC: EC description table is found, configuring boot EC
[Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
ACPI: SSDT 00000000bb71a918 003EB (v01  PmRef  Cpu0Ist 00003000 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT           (null) 003EB (v01  PmRef  Cpu0Ist 00003000 INTL 20050513)
ACPI: SSDT 00000000bb718718 006B2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT           (null) 006B2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050513)
ACPI: SSDT 00000000bb719a98 00303 (v01  PmRef    ApIst 00003000 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT           (null) 00303 (v01  PmRef    ApIst 00003000 INTL 20050513)
ACPI: SSDT 00000000bb717d98 00119 (v01  PmRef    ApCst 00003000 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT           (null) 00119 (v01  PmRef    ApCst 00003000 INTL 20050513)
ACPI: Interpreter enabled
ACPI: (supports S0 S3 S4 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: Power Resource [PUBS] (on)
ACPI: EC: GPE = 0x11, I/O: command/status = 0x66, data = 0x62
ACPI: ACPI Dock Station Driver: 3 docks/bays found
HEST: Table not found.
PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
ACPI: PCI Root Bridge [UNCR] (domain 0000 [bus ff])
pci 0000:ff:00.0: [8086:2c62] type 0 class 0x000600
pci 0000:ff:00.1: [8086:2d01] type 0 class 0x000600
pci 0000:ff:02.0: [8086:2d10] type 0 class 0x000600
pci 0000:ff:02.1: [8086:2d11] type 0 class 0x000600
pci 0000:ff:02.2: [8086:2d12] type 0 class 0x000600
pci 0000:ff:02.3: [8086:2d13] type 0 class 0x000600
ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
pci_root PNP0A08:00: host bridge window [io  0x0000-0x0cf7]
pci_root PNP0A08:00: host bridge window [io  0x0d00-0xffff]
pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff]
pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff]
pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff]
pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff]
pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff]
pci 0000:00:00.0: [8086:0044] type 0 class 0x000600
pci 0000:00:02.0: [8086:0046] type 0 class 0x000300
pci 0000:00:02.0: reg 10: [mem 0xf2000000-0xf23fffff 64bit]
pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref]
pci 0000:00:02.0: reg 20: [io  0x1800-0x1807]
pci 0000:00:16.0: [8086:3b64] type 0 class 0x000780
pci 0000:00:16.0: reg 10: [mem 0xf2727800-0xf272780f 64bit]
pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
pci 0000:00:16.0: PME# disabled
pci 0000:00:19.0: [8086:10ea] type 0 class 0x000200
pci 0000:00:19.0: reg 10: [mem 0xf2500000-0xf251ffff]
pci 0000:00:19.0: reg 14: [mem 0xf2525000-0xf2525fff]
pci 0000:00:19.0: reg 18: [io  0x1820-0x183f]
pci 0000:00:19.0: PME# supported from D0 D3hot D3cold
pci 0000:00:19.0: PME# disabled
pci 0000:00:1a.0: [8086:3b3c] type 0 class 0x000c03
pci 0000:00:1a.0: reg 10: [mem 0xf2728000-0xf27283ff]
pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1a.0: PME# disabled
pci 0000:00:1b.0: [8086:3b56] type 0 class 0x000403
pci 0000:00:1b.0: reg 10: [mem 0xf2520000-0xf2523fff 64bit]
pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1b.0: PME# disabled
pci 0000:00:1c.0: [8086:3b42] type 1 class 0x000604
pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.0: PME# disabled
pci 0000:00:1c.3: [8086:3b48] type 1 class 0x000604
pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.3: PME# disabled
pci 0000:00:1c.4: [8086:3b4a] type 1 class 0x000604
pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.4: PME# disabled
pci 0000:00:1d.0: [8086:3b34] type 0 class 0x000c03
pci 0000:00:1d.0: reg 10: [mem 0xf2728400-0xf27287ff]
pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1d.0: PME# disabled
pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604
pci 0000:00:1f.0: [8086:3b07] type 0 class 0x000601
pci 0000:00:1f.2: [8086:3b2f] type 0 class 0x000106
pci 0000:00:1f.2: reg 10: [io  0x1860-0x1867]
pci 0000:00:1f.2: reg 14: [io  0x1814-0x1817]
pci 0000:00:1f.2: reg 18: [io  0x1818-0x181f]
pci 0000:00:1f.2: reg 1c: [io  0x1810-0x1813]
pci 0000:00:1f.2: reg 20: [io  0x1840-0x185f]
pci 0000:00:1f.2: reg 24: [mem 0xf2727000-0xf27277ff]
pci 0000:00:1f.2: PME# supported from D3hot
pci 0000:00:1f.2: PME# disabled
pci 0000:00:1f.3: [8086:3b30] type 0 class 0x000c05
pci 0000:00:1f.3: reg 10: [mem 0xf2728800-0xf27288ff 64bit]
pci 0000:00:1f.3: reg 20: [io  0x1880-0x189f]
pci 0000:00:1f.6: [8086:3b32] type 0 class 0x001180
pci 0000:00:1f.6: reg 10: [mem 0xf2526000-0xf2526fff 64bit]
pci 0000:00:1c.0: PCI bridge to [bus 0d-0d]
pci 0000:00:1c.0:   bridge window [io  0xf000-0x0000] (disabled)
pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff] (disabled)
pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:00:1c.3: PCI bridge to [bus 05-0c]
pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
pci 0000:00:1c.3:   bridge window [mem 0xf0000000-0xf1ffffff]
pci 0000:00:1c.3:   bridge window [mem 0xf2800000-0xf28fffff 64bit pref]
pci 0000:02:00.0: [8086:4239] type 0 class 0x000280
pci 0000:02:00.0: reg 10: [mem 0xf2400000-0xf2401fff 64bit]
pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
pci 0000:02:00.0: PME# disabled
pci 0000:00:1c.4: PCI bridge to [bus 02-02]
pci 0000:00:1c.4:   bridge window [io  0xf000-0x0000] (disabled)
pci 0000:00:1c.4:   bridge window [mem 0xf2400000-0xf24fffff]
pci 0000:00:1c.4:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:00:1e.0: PCI bridge to [bus 0e-0e] (subtractive decode)
pci 0000:00:1e.0:   bridge window [io  0xf000-0x0000] (disabled)
pci 0000:00:1e.0:   bridge window [mem 0xfff00000-0x000fffff] (disabled)
pci 0000:00:1e.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:00:1e.0:   bridge window [io  0x0000-0x0cf7] (subtractive decode)
pci 0000:00:1e.0:   bridge window [io  0x0d00-0xffff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0xc0000000-0xfebfffff] (subtractive decode)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP4._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP5._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.23.
PCI: Using ACPI for IRQ routing
PCI: pci_cache_line_size set to 64 bytes
reserve RAM buffer: 000000000009e800 - 000000000009ffff 
reserve RAM buffer: 00000000bb27c000 - 00000000bbffffff 
reserve RAM buffer: 00000000bb35f000 - 00000000bbffffff 
reserve RAM buffer: 00000000bb46f000 - 00000000bbffffff 
reserve RAM buffer: 00000000bb717000 - 00000000bbffffff 
reserve RAM buffer: 00000000bb76b000 - 00000000bbffffff 
reserve RAM buffer: 00000000bb800000 - 00000000bbffffff 
Switching to clocksource hpet
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp 00:00: [mem 0x00000000-0x0009ffff]
pnp 00:00: [mem 0x000c0000-0x000c3fff]
pnp 00:00: [mem 0x000c4000-0x000c7fff]
pnp 00:00: [mem 0x000c8000-0x000cbfff]
pnp 00:00: [mem 0x000cc000-0x000cffff]
pnp 00:00: [mem 0x000d0000-0x000cffff disabled]
pnp 00:00: [mem 0x000d4000-0x000d3fff disabled]
pnp 00:00: [mem 0x000d8000-0x000d7fff disabled]
pnp 00:00: [mem 0x000dc000-0x000dffff]
pnp 00:00: [mem 0x000e0000-0x000e3fff]
pnp 00:00: [mem 0x000e4000-0x000e7fff]
pnp 00:00: [mem 0x000e8000-0x000ebfff]
pnp 00:00: [mem 0x000ec000-0x000effff]
pnp 00:00: [mem 0x000f0000-0x000fffff]
pnp 00:00: [mem 0x00100000-0xbfffffff]
pnp 00:00: [mem 0xfec00000-0xfed3ffff]
pnp 00:00: [mem 0xfed4c000-0xffffffff]
system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
system 00:00: [mem 0x000c0000-0x000c3fff] has been reserved
system 00:00: [mem 0x000c4000-0x000c7fff] has been reserved
system 00:00: [mem 0x000c8000-0x000cbfff] has been reserved
system 00:00: [mem 0x000cc000-0x000cffff] has been reserved
system 00:00: [mem 0x000dc000-0x000dffff] could not be reserved
system 00:00: [mem 0x000e0000-0x000e3fff] could not be reserved
system 00:00: [mem 0x000e4000-0x000e7fff] could not be reserved
system 00:00: [mem 0x000e8000-0x000ebfff] could not be reserved
system 00:00: [mem 0x000ec000-0x000effff] could not be reserved
system 00:00: [mem 0x000f0000-0x000fffff] could not be reserved
system 00:00: [mem 0x00100000-0xbfffffff] could not be reserved
system 00:00: [mem 0xfec00000-0xfed3ffff] could not be reserved
system 00:00: [mem 0xfed4c000-0xffffffff] could not be reserved
system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
pnp 00:01: [bus ff]
pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active)
pnp 00:02: [bus 00-fe]
pnp 00:02: [io  0x0cf8-0x0cff]
pnp 00:02: [io  0x0000-0x0cf7 window]
pnp 00:02: [io  0x0d00-0xffff window]
pnp 00:02: [mem 0x000a0000-0x000bffff window]
pnp 00:02: [mem 0x000c0000-0x000c3fff window]
pnp 00:02: [mem 0x000c4000-0x000c7fff window]
pnp 00:02: [mem 0x000c8000-0x000cbfff window]
pnp 00:02: [mem 0x000cc000-0x000cffff window]
pnp 00:02: [mem 0x000d0000-0x000d3fff window]
pnp 00:02: [mem 0x000d4000-0x000d7fff window]
pnp 00:02: [mem 0x000d8000-0x000dbfff window]
pnp 00:02: [mem 0x000dc000-0x000dffff window]
pnp 00:02: [mem 0x000e0000-0x000e3fff window]
pnp 00:02: [mem 0x000e4000-0x000e7fff window]
pnp 00:02: [mem 0x000e8000-0x000ebfff window]
pnp 00:02: [mem 0x000ec000-0x000effff window]
pnp 00:02: [mem 0xc0000000-0xfebfffff window]
pnp 00:02: [mem 0xfed40000-0xfed4bfff window]
pnp 00:02: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active)
pnp 00:03: [io  0x0010-0x001f]
pnp 00:03: [io  0x0090-0x009f]
pnp 00:03: [io  0x0024-0x0025]
pnp 00:03: [io  0x0028-0x0029]
pnp 00:03: [io  0x002c-0x002d]
pnp 00:03: [io  0x0030-0x0031]
pnp 00:03: [io  0x0034-0x0035]
pnp 00:03: [io  0x0038-0x0039]
pnp 00:03: [io  0x003c-0x003d]
pnp 00:03: [io  0x00a4-0x00a5]
pnp 00:03: [io  0x00a8-0x00a9]
pnp 00:03: [io  0x00ac-0x00ad]
pnp 00:03: [io  0x00b0-0x00b5]
pnp 00:03: [io  0x00b8-0x00b9]
pnp 00:03: [io  0x00bc-0x00bd]
pnp 00:03: [io  0x0050-0x0053]
pnp 00:03: [io  0x0072-0x0077]
pnp 00:03: [io  0x164e-0x164f]
pnp 00:03: [io  0x002e-0x002f]
pnp 00:03: [io  0x1000-0x107f]
pnp 00:03: [io  0x1180-0x11ff]
pnp 00:03: [io  0x0800-0x080f]
pnp 00:03: [io  0x15e0-0x15ef]
pnp 00:03: [io  0x1600-0x1641]
pnp 00:03: [io  0x1644-0x167f]
pnp 00:03: [mem 0xe0000000-0xefffffff]
pnp 00:03: [mem 0xfeaff000-0xfeafffff]
pnp 00:03: [mem 0xfed1c000-0xfed1ffff]
pnp 00:03: [mem 0xfed10000-0xfed13fff]
pnp 00:03: [mem 0xfed18000-0xfed18fff]
pnp 00:03: [mem 0xfed19000-0xfed19fff]
pnp 00:03: [mem 0xfed45000-0xfed4bfff]
system 00:03: [io  0x164e-0x164f] has been reserved
system 00:03: [io  0x1000-0x107f] has been reserved
system 00:03: [io  0x1180-0x11ff] has been reserved
system 00:03: [io  0x0800-0x080f] has been reserved
system 00:03: [io  0x15e0-0x15ef] has been reserved
system 00:03: [io  0x1600-0x1641] has been reserved
system 00:03: [io  0x1644-0x167f] could not be reserved
system 00:03: [mem 0xe0000000-0xefffffff] has been reserved
system 00:03: [mem 0xfeaff000-0xfeafffff] has been reserved
system 00:03: [mem 0xfed1c000-0xfed1ffff] has been reserved
system 00:03: [mem 0xfed10000-0xfed13fff] has been reserved
system 00:03: [mem 0xfed18000-0xfed18fff] has been reserved
system 00:03: [mem 0xfed19000-0xfed19fff] has been reserved
system 00:03: [mem 0xfed45000-0xfed4bfff] has been reserved
system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:04: [mem 0xfed00000-0xfed003ff]
pnp 00:04: Plug and Play ACPI device, IDs PNP0103 (active)
pnp 00:05: [io  0x0000-0x000f]
pnp 00:05: [io  0x0080-0x008f]
pnp 00:05: [io  0x00c0-0x00df]
pnp 00:05: [dma 4]
pnp 00:05: Plug and Play ACPI device, IDs PNP0200 (active)
pnp 00:06: [io  0x0061]
pnp 00:06: Plug and Play ACPI device, IDs PNP0800 (active)
pnp 00:07: [io  0x00f0]
pnp 00:07: [irq 13]
pnp 00:07: Plug and Play ACPI device, IDs PNP0c04 (active)
pnp 00:08: [io  0x0070-0x0071]
pnp 00:08: [irq 8]
pnp 00:08: Plug and Play ACPI device, IDs PNP0b00 (active)
pnp 00:09: [io  0x0060]
pnp 00:09: [io  0x0064]
pnp 00:09: [irq 1]
pnp 00:09: Plug and Play ACPI device, IDs PNP0303 (active)
pnp 00:0a: [irq 12]
pnp 00:0a: Plug and Play ACPI device, IDs LEN0018 PNP0f13 (active)
pnp 00:0b: [mem 0xfed40000-0xfed44fff]
pnp 00:0b: Plug and Play ACPI device, IDs SMO1200 PNP0c31 (active)
pnp: PnP ACPI: found 12 devices
ACPI: ACPI bus type pnp unregistered
pci 0000:00:1c.0: PCI bridge to [bus 0d-0d]
pci 0000:00:1c.0:   bridge window [io  disabled]
pci 0000:00:1c.0:   bridge window [mem disabled]
pci 0000:00:1c.0:   bridge window [mem pref disabled]
pci 0000:00:1c.3: PCI bridge to [bus 05-0c]
pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
pci 0000:00:1c.3:   bridge window [mem 0xf0000000-0xf1ffffff]
pci 0000:00:1c.3:   bridge window [mem 0xf2800000-0xf28fffff 64bit pref]
pci 0000:00:1c.4: PCI bridge to [bus 02-02]
pci 0000:00:1c.4:   bridge window [io  disabled]
pci 0000:00:1c.4:   bridge window [mem 0xf2400000-0xf24fffff]
pci 0000:00:1c.4:   bridge window [mem pref disabled]
pci 0000:00:1e.0: PCI bridge to [bus 0e-0e]
pci 0000:00:1e.0:   bridge window [io  disabled]
pci 0000:00:1e.0:   bridge window [mem disabled]
pci 0000:00:1e.0:   bridge window [mem pref disabled]
pci 0000:00:1c.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
pci 0000:00:1c.0: setting latency timer to 64
pci 0000:00:1c.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23
pci 0000:00:1c.3: setting latency timer to 64
pci 0000:00:1c.4: PCI INT A -> GSI 20 (level, low) -> IRQ 20
pci 0000:00:1c.4: setting latency timer to 64
pci 0000:00:1e.0: setting latency timer to 64
pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000d3fff]
pci_bus 0000:00: resource 8 [mem 0x000d4000-0x000d7fff]
pci_bus 0000:00: resource 9 [mem 0x000d8000-0x000dbfff]
pci_bus 0000:00: resource 10 [mem 0xc0000000-0xfebfffff]
pci_bus 0000:05: resource 0 [io  0x2000-0x2fff]
pci_bus 0000:05: resource 1 [mem 0xf0000000-0xf1ffffff]
pci_bus 0000:05: resource 2 [mem 0xf2800000-0xf28fffff 64bit pref]
pci_bus 0000:02: resource 1 [mem 0xf2400000-0xf24fffff]
pci_bus 0000:0e: resource 4 [io  0x0000-0x0cf7]
pci_bus 0000:0e: resource 5 [io  0x0d00-0xffff]
pci_bus 0000:0e: resource 6 [mem 0x000a0000-0x000bffff]
pci_bus 0000:0e: resource 7 [mem 0x000d0000-0x000d3fff]
pci_bus 0000:0e: resource 8 [mem 0x000d4000-0x000d7fff]
pci_bus 0000:0e: resource 9 [mem 0x000d8000-0x000dbfff]
pci_bus 0000:0e: resource 10 [mem 0xc0000000-0xfebfffff]
NET: Registered protocol family 2
IP route cache hash table entries: 262144 (order: 9, 2097152 bytes)
TCP established hash table entries: 524288 (order: 11, 8388608 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 524288 bind 65536)
TCP reno registered
UDP hash table entries: 4096 (order: 5, 131072 bytes)
UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
NET: Registered protocol family 1
pci 0000:00:02.0: Boot video device
PCI: CLS 64 bytes, default 64
PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Placing 64MB software IO TLB between ffff8800b6e7a000 - ffff8800bae7a000
software IO TLB at phys 0xb6e7a000 - 0xbae7a000
Simple Boot Flag at 0x35 set to 0x1
NTFS driver 2.1.30 [Flags: R/W].
fuse init (API version 7.16)
Btrfs loaded
msgmni has been set to 15604
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered (default)
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
pciehp: PCI Express Hot Plug Controller Driver version: 0.4
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
acpiphp: Slot [1] registered
ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: AC Adapter [AC] (on-line)
input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0
ACPI: Lid Switch [LID]
input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input1
ACPI: Sleep Button [SLPB]
input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
ACPI: Power Button [PWRF]
ACPI: acpi_idle registered with cpuidle
Monitor-Mwait will be used to enter C-1 state
Monitor-Mwait will be used to enter C-2 state
Monitor-Mwait will be used to enter C-3 state
thermal LNXTHERM:00: registered as thermal_zone0
ACPI: Thermal Zone [THM0] (54 C)
ERST: Table is not found!
GHES: HEST is not enabled!
ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: Battery Slot [BAT0] (battery present)
Non-volatile memory driver v1.3
Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset
agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable
agpgart-intel 0000:00:00.0: detected 32768K stolen memory
agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
Refined TSC clocksource calibration: 2127.999 MHz.
Switching to clocksource tsc
brd: module loaded
loop: module loaded
megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST 2006)
megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006)
megasas: 00.00.05.29-rc1 Tue. Dec. 7 17:00:00 PDT 2010
mpt2sas version 07.100.00.00 loaded
ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: PCI INT B -> GSI 16 (level, low) -> IRQ 16
ahci 0000:00:1f.2: irq 40 for MSI/MSI-X
ahci: SSS flag set, parallel bus scan disabled
ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x31 impl SATA mode
ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ems sxs apst 
ahci 0000:00:1f.2: setting latency timer to 64
scsi0 : ahci
scsi1 : ahci
scsi2 : ahci
scsi3 : ahci
scsi4 : ahci
scsi5 : ahci
ata1: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727100 irq 40
ata2: DUMMY
ata3: DUMMY
ata4: DUMMY
ata5: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727300 irq 40
ata6: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727380 irq 40
Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2
Copyright (c) 2007-2009 Intel Corporation.
ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 3.0.12-k2
ixgbe: Copyright (c) 1999-2010 Intel Corporation.
pcnet32: pcnet32.c:v1.35 21.Apr.2008 tsbogend@alpha.franken.de
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Fusion MPT base driver 3.04.17
Copyright (c) 1999-2008 LSI Corporation
Fusion MPT SPI Host driver 3.04.17
Fusion MPT SAS Host driver 3.04.17
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
ehci_hcd 0000:00:1a.0: setting latency timer to 64
ehci_hcd 0000:00:1a.0: EHCI Host Controller
ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:1a.0: debug port 2
ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported
ehci_hcd 0000:00:1a.0: irq 23, io mem 0xf2728000
ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 3 ports detected
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:1d.0: setting latency timer to 64
ehci_hcd 0000:00:1d.0: EHCI Host Controller
ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
ehci_hcd 0000:00:1d.0: debug port 2
ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported
ehci_hcd 0000:00:1d.0: irq 19, io mem 0xf2728400
ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
uhci_hcd: USB Universal Host Controller Interface driver
i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mousedev: PS/2 mouse device common for all mice
input: PC Speaker as /devices/platform/pcspkr/input/input3
rtc_cmos 00:08: RTC can wake from S4
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
lirc_dev: IR Remote Control driver registered, major 251 
IR RC5 (streamzap) protocol handler initialized
IR LIRC bridge handler initialized
Linux video capture interface: v2.00
coretemp coretemp.0: TjMax is 105 C.
coretemp coretemp.2: TjMax is 105 C.
device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com
EDAC MC: Ver: 2.1.0 Jan 20 2011
cpuidle: using governor ladder
cpuidle: using governor menu
thinkpad_acpi: ThinkPad ACPI Extras v0.24
thinkpad_acpi: http://ibm-acpi.sf.net/
thinkpad_acpi: ThinkPad BIOS 6QET62WW (1.32 ), EC 6QHT31WW-1.12
thinkpad_acpi: Lenovo ThinkPad X201s, model 5413FGA
thinkpad_acpi: detected a 8-level brightness capable ThinkPad
thinkpad_acpi: radio switch found; radios are enabled
thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is blocked
Registered led device: tpacpi::thinklight
Registered led device: tpacpi::power
Registered led device: tpacpi:orange:batt
Registered led device: tpacpi:green:batt
Registered led device: tpacpi::dock_active
Registered led device: tpacpi::bay_active
Registered led device: tpacpi::dock_batt
Registered led device: tpacpi::unknown_led
Registered led device: tpacpi::standby
Registered led device: tpacpi::dock_status1
Registered led device: tpacpi::dock_status2
Registered led device: tpacpi::unknown_led2
Registered led device: tpacpi::unknown_led3
Registered led device: tpacpi::thinkvantage
thinkpad_acpi: warning: userspace override of important firmware LEDs is enabled
thinkpad_acpi: volume: disabled as there is no ALSA support in this kernel
input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input5
hdaps: supported laptop not found!
hdaps: driver init failed (ret=-19)!
HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
HDA Intel 0000:00:1b.0: setting latency timer to 64
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: ATA-7: SAMSUNG SSD PM800 2.5" 256GB, VBM25D1Q, max UDMA/100
ata1.00: 500118192 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: configured for UDMA/100
scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG SSD PM80 VBM2 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: Attached scsi generic sg0 type 0
sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 >
sd 0:0:0:0: [sda] Attached SCSI disk
hda-codec: No codec parser is available
ALSA device list:
 #0: HDA Intel at 0xf2520000 irq 41
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
ctnetlink v0.93: registering with nfnetlink.
ip_tables: (C) 2000-2006 Netfilter Core Team
arp_tables: (C) 2002 David S. Miller
TCP bic registered
TCP cubic registered
TCP highspeed registered
NET: Registered protocol family 17
lib80211: common routines for IEEE802.11 drivers
lib80211_crypt: registered algorithm 'NULL'
rtc_cmos 00:08: setting system clock to 2011-01-21 02:41:55 UTC (1295577715)
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 6 ports detected
ata5: SATA link down (SStatus 0 SControl 300)
IBM TrackPoint firmware: 0x0e, buttons: 3/3
input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/input/input6
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 8 ports detected
ata6: SATA link down (SStatus 0 SControl 300)
VFS: Mounted root (reiserfs filesystem) readonly on device 8:2.
Freeing unused kernel memory: 588k freed
Adding 8290300k swap on /dev/sda3.  Priority:-1 extents:1 across:8290300k SS
[drm] Initialized drm 1.1.0 20060810
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
i915 0000:00:02.0: setting latency timer to 64
i915 0000:00:02.0: irq 42 for MSI/MSI-X
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] Driver supports precise vblank timestamp query.
vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
Console: switching to colour frame buffer device 180x56
fb0: inteldrmfb frame buffer device
drm: registered panic notifier
No ACPI video bus found
[drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
ehci_hcd 0000:00:1d.0: PCI INT D disabled
ehci_hcd 0000:00:1a.0: PCI INT D disabled
HDA Intel 0000:00:1b.0: PCI INT B disabled
i915 0000:00:02.0: power state changed by ACPI to D3
PM: suspend of devices complete after 3089.533 msecs
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D3
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D3
PM: late suspend of devices complete after 90.101 msecs
ACPI: Preparing to enter system sleep state S3
PM: Saving platform NVS memory
suspend_nvs_save: phys = bb78c000, size = 4096
suspend_nvs_save: Mapped ffffc90001be8000
suspend_nvs_save: Saving ffff88023490c000 <- ffffc90001be8000
suspend_nvs_save: phys = bb78d000, size = 4096
suspend_nvs_save: Mapped ffffc900018c0000
suspend_nvs_save: Saving ffff880234042000 <- ffffc900018c0000
suspend_nvs_save: phys = bb78e000, size = 4096
suspend_nvs_save: Mapped ffffc900018c4000
suspend_nvs_save: Saving ffff880234a68000 <- ffffc900018c4000
suspend_nvs_save: phys = bb78f000, size = 4096
suspend_nvs_save: Mapped ffffc900018c8000
suspend_nvs_save: Saving ffff88023408d000 <- ffffc900018c8000
suspend_nvs_save: phys = bb790000, size = 4096
suspend_nvs_save: Mapped ffffc900018cc000
suspend_nvs_save: Saving ffff88023734c000 <- ffffc900018cc000
suspend_nvs_save: phys = bb791000, size = 4096
suspend_nvs_save: Mapped ffffc900018d0000
suspend_nvs_save: Saving ffff880237379000 <- ffffc900018d0000
suspend_nvs_save: phys = bb792000, size = 4096
suspend_nvs_save: Mapped ffffc900018d4000
suspend_nvs_save: Saving ffff88023723f000 <- ffffc900018d4000
suspend_nvs_save: phys = bb793000, size = 4096
suspend_nvs_save: Mapped ffffc900018d8000
suspend_nvs_save: Saving ffff880234978000 <- ffffc900018d8000
suspend_nvs_save: phys = bb794000, size = 4096
suspend_nvs_save: Mapped ffffc900018dc000
suspend_nvs_save: Saving ffff8802348c4000 <- ffffc900018dc000
suspend_nvs_save: phys = bb795000, size = 4096
suspend_nvs_save: Mapped ffffc900018e0000
suspend_nvs_save: Saving ffff88023491b000 <- ffffc900018e0000
suspend_nvs_save: phys = bb796000, size = 4096
suspend_nvs_save: Mapped ffffc90001bdc000
suspend_nvs_save: Saving ffff88023505a000 <- ffffc90001bdc000
suspend_nvs_save: phys = bb797000, size = 4096
suspend_nvs_save: Mapped ffffc90001be0000
suspend_nvs_save: Saving ffff8802340b9000 <- ffffc90001be0000
suspend_nvs_save: phys = bb798000, size = 4096
suspend_nvs_save: Mapped ffffc90001bec000
suspend_nvs_save: Saving ffff88023490d000 <- ffffc90001bec000
suspend_nvs_save: phys = bb799000, size = 4096
suspend_nvs_save: Mapped ffffc90001bf0000
suspend_nvs_save: Saving ffff88023737f000 <- ffffc90001bf0000
suspend_nvs_save: phys = bb79a000, size = 4096
suspend_nvs_save: Mapped ffffc90001bf4000
suspend_nvs_save: Saving ffff88023403c000 <- ffffc90001bf4000
suspend_nvs_save: phys = bb79b000, size = 4096
suspend_nvs_save: Mapped ffffc90001bf8000
suspend_nvs_save: Saving ffff8802371eb000 <- ffffc90001bf8000
suspend_nvs_save: phys = bb79c000, size = 4096
suspend_nvs_save: Mapped ffffc90001bfc000
suspend_nvs_save: Saving ffff880234026000 <- ffffc90001bfc000
suspend_nvs_save: phys = bb79d000, size = 4096
suspend_nvs_save: Mapped ffffc90001c00000
suspend_nvs_save: Saving ffff880234027000 <- ffffc90001c00000
suspend_nvs_save: phys = bb79e000, size = 4096
suspend_nvs_save: Mapped ffffc90001c04000
suspend_nvs_save: Saving ffff880234ab9000 <- ffffc90001c04000
suspend_nvs_save: phys = bb79f000, size = 4096
suspend_nvs_save: Mapped ffffc90001c08000
suspend_nvs_save: Saving ffff880237217000 <- ffffc90001c08000
suspend_nvs_save: phys = bb7a0000, size = 4096
suspend_nvs_save: Mapped ffffc90001c0c000
suspend_nvs_save: Saving ffff880234030000 <- ffffc90001c0c000
suspend_nvs_save: phys = bb7a1000, size = 4096
suspend_nvs_save: Mapped ffffc90001c10000
suspend_nvs_save: Saving ffff8802350bd000 <- ffffc90001c10000
suspend_nvs_save: phys = bb7a2000, size = 4096
suspend_nvs_save: Mapped ffffc90001c14000
suspend_nvs_save: Saving ffff8802348cb000 <- ffffc90001c14000
suspend_nvs_save: phys = bb7a3000, size = 4096
suspend_nvs_save: Mapped ffffc90001c18000
suspend_nvs_save: Saving ffff8802349dc000 <- ffffc90001c18000
suspend_nvs_save: phys = bb7a4000, size = 4096
suspend_nvs_save: Mapped ffffc90001c1c000
suspend_nvs_save: Saving ffff8802350bc000 <- ffffc90001c1c000
suspend_nvs_save: phys = bb7a5000, size = 4096
suspend_nvs_save: Mapped ffffc90001c20000
suspend_nvs_save: Saving ffff880234919000 <- ffffc90001c20000
suspend_nvs_save: phys = bb7a6000, size = 4096
suspend_nvs_save: Mapped ffffc90001c24000
suspend_nvs_save: Saving ffff8802350ed000 <- ffffc90001c24000
suspend_nvs_save: phys = bb7a7000, size = 4096
suspend_nvs_save: Mapped ffffc90001c28000
suspend_nvs_save: Saving ffff880237253000 <- ffffc90001c28000
suspend_nvs_save: phys = bb7a8000, size = 4096
suspend_nvs_save: Mapped ffffc90001c2c000
suspend_nvs_save: Saving ffff880237183000 <- ffffc90001c2c000
suspend_nvs_save: phys = bb7a9000, size = 4096
suspend_nvs_save: Mapped ffffc90001c30000
suspend_nvs_save: Saving ffff880234b6c000 <- ffffc90001c30000
suspend_nvs_save: phys = bb7aa000, size = 4096
suspend_nvs_save: Mapped ffffc90001c34000
suspend_nvs_save: Saving ffff880234b4b000 <- ffffc90001c34000
suspend_nvs_save: phys = bb7ab000, size = 4096
suspend_nvs_save: Mapped ffffc90001c38000
suspend_nvs_save: Saving ffff880234959000 <- ffffc90001c38000
suspend_nvs_save: phys = bb7ac000, size = 4096
suspend_nvs_save: Mapped ffffc90001c3c000
suspend_nvs_save: Saving ffff8802348d2000 <- ffffc90001c3c000
suspend_nvs_save: phys = bb7ad000, size = 4096
suspend_nvs_save: Mapped ffffc90001c40000
suspend_nvs_save: Saving ffff880234b39000 <- ffffc90001c40000
suspend_nvs_save: phys = bb7ae000, size = 4096
suspend_nvs_save: Mapped ffffc90001c44000
suspend_nvs_save: Saving ffff880238093000 <- ffffc90001c44000
suspend_nvs_save: phys = bb7af000, size = 4096
suspend_nvs_save: Mapped ffffc90001c48000
suspend_nvs_save: Saving ffff8802349dd000 <- ffffc90001c48000
suspend_nvs_save: phys = bb7b0000, size = 4096
suspend_nvs_save: Mapped ffffc90001c4c000
suspend_nvs_save: Saving ffff880234972000 <- ffffc90001c4c000
suspend_nvs_save: phys = bb7b1000, size = 4096
suspend_nvs_save: Mapped ffffc90001c50000
suspend_nvs_save: Saving ffff880234b4a000 <- ffffc90001c50000
suspend_nvs_save: phys = bb7b2000, size = 4096
suspend_nvs_save: Mapped ffffc90001c54000
suspend_nvs_save: Saving ffff880234a1d000 <- ffffc90001c54000
suspend_nvs_save: phys = bb7b3000, size = 4096
suspend_nvs_save: Mapped ffffc90001c58000
suspend_nvs_save: Saving ffff88023495d000 <- ffffc90001c58000
suspend_nvs_save: phys = bb7b4000, size = 4096
suspend_nvs_save: Mapped ffffc90001c5c000
suspend_nvs_save: Saving ffff880234051000 <- ffffc90001c5c000
suspend_nvs_save: phys = bb7b5000, size = 4096
suspend_nvs_save: Mapped ffffc90001c60000
suspend_nvs_save: Saving ffff88023495c000 <- ffffc90001c60000
suspend_nvs_save: phys = bb7b6000, size = 4096
suspend_nvs_save: Mapped ffffc90001c64000
suspend_nvs_save: Saving ffff880234955000 <- ffffc90001c64000
suspend_nvs_save: phys = bb7b7000, size = 4096
suspend_nvs_save: Mapped ffffc90001c68000
suspend_nvs_save: Saving ffff88023712c000 <- ffffc90001c68000
suspend_nvs_save: phys = bb7b8000, size = 4096
suspend_nvs_save: Mapped ffffc90001c6c000
suspend_nvs_save: Saving ffff880237703000 <- ffffc90001c6c000
suspend_nvs_save: phys = bb7b9000, size = 4096
suspend_nvs_save: Mapped ffffc90001c70000
suspend_nvs_save: Saving ffff88023513a000 <- ffffc90001c70000
suspend_nvs_save: phys = bb7ba000, size = 4096
suspend_nvs_save: Mapped ffffc90001c74000
suspend_nvs_save: Saving ffff880234013000 <- ffffc90001c74000
suspend_nvs_save: phys = bb7bb000, size = 4096
suspend_nvs_save: Mapped ffffc90001c78000
suspend_nvs_save: Saving ffff880234b9d000 <- ffffc90001c78000
suspend_nvs_save: phys = bb7bc000, size = 4096
suspend_nvs_save: Mapped ffffc90001c7c000
suspend_nvs_save: Saving ffff8802372a3000 <- ffffc90001c7c000
suspend_nvs_save: phys = bb7bd000, size = 4096
suspend_nvs_save: Mapped ffffc90001c80000
suspend_nvs_save: Saving ffff8802348db000 <- ffffc90001c80000
suspend_nvs_save: phys = bb7be000, size = 4096
suspend_nvs_save: Mapped ffffc90001c84000
suspend_nvs_save: Saving ffff8802349b9000 <- ffffc90001c84000
suspend_nvs_save: phys = bb7bf000, size = 4096
suspend_nvs_save: Mapped ffffc90001c88000
suspend_nvs_save: Saving ffff880238442000 <- ffffc90001c88000
suspend_nvs_save: phys = bb7c0000, size = 4096
suspend_nvs_save: Mapped ffffc90001c8c000
suspend_nvs_save: Saving ffff880234900000 <- ffffc90001c8c000
suspend_nvs_save: phys = bb7c1000, size = 4096
suspend_nvs_save: Mapped ffffc90001c90000
suspend_nvs_save: Saving ffff8802349e2000 <- ffffc90001c90000
suspend_nvs_save: phys = bb7c2000, size = 4096
suspend_nvs_save: Mapped ffffc90001c94000
suspend_nvs_save: Saving ffff880234a0d000 <- ffffc90001c94000
suspend_nvs_save: phys = bb7c3000, size = 4096
suspend_nvs_save: Mapped ffffc90001c98000
suspend_nvs_save: Saving ffff880234a1c000 <- ffffc90001c98000
suspend_nvs_save: phys = bb7c4000, size = 4096
suspend_nvs_save: Mapped ffffc90001c9c000
suspend_nvs_save: Saving ffff8802372de000 <- ffffc90001c9c000
suspend_nvs_save: phys = bb7c5000, size = 4096
suspend_nvs_save: Mapped ffffc90001ca0000
suspend_nvs_save: Saving ffff880237373000 <- ffffc90001ca0000
suspend_nvs_save: phys = bb7c6000, size = 4096
suspend_nvs_save: Mapped ffffc90001ca4000
suspend_nvs_save: Saving ffff88023491a000 <- ffffc90001ca4000
suspend_nvs_save: phys = bb7c7000, size = 4096
suspend_nvs_save: Mapped ffffc90001ca8000
suspend_nvs_save: Saving ffff8802386ca000 <- ffffc90001ca8000
suspend_nvs_save: phys = bb7c8000, size = 4096
suspend_nvs_save: Mapped ffffc90001cac000
suspend_nvs_save: Saving ffff8802370c2000 <- ffffc90001cac000
suspend_nvs_save: phys = bb7c9000, size = 4096
suspend_nvs_save: Mapped ffffc90001cb0000
suspend_nvs_save: Saving ffff880235092000 <- ffffc90001cb0000
suspend_nvs_save: phys = bb7ca000, size = 4096
suspend_nvs_save: Mapped ffffc90001cb4000
suspend_nvs_save: Saving ffff88023723e000 <- ffffc90001cb4000
suspend_nvs_save: phys = bb7cb000, size = 4096
suspend_nvs_save: Mapped ffffc90001cb8000
suspend_nvs_save: Saving ffff88023405e000 <- ffffc90001cb8000
suspend_nvs_save: phys = bb7cc000, size = 4096
suspend_nvs_save: Mapped ffffc90001cbc000
suspend_nvs_save: Saving ffff88023402b000 <- ffffc90001cbc000
suspend_nvs_save: phys = bb7cd000, size = 4096
suspend_nvs_save: Mapped ffffc90001cc0000
suspend_nvs_save: Saving ffff880234918000 <- ffffc90001cc0000
suspend_nvs_save: phys = bb7ce000, size = 4096
suspend_nvs_save: Mapped ffffc90001cc4000
suspend_nvs_save: Saving ffff8802348f3000 <- ffffc90001cc4000
suspend_nvs_save: phys = bb7cf000, size = 4096
suspend_nvs_save: Mapped ffffc90001cc8000
suspend_nvs_save: Saving ffff880235010000 <- ffffc90001cc8000
suspend_nvs_save: phys = bb7d0000, size = 4096
suspend_nvs_save: Mapped ffffc90001ccc000
suspend_nvs_save: Saving ffff8802373d8000 <- ffffc90001ccc000
suspend_nvs_save: phys = bb7d1000, size = 4096
suspend_nvs_save: Mapped ffffc90001cd0000
suspend_nvs_save: Saving ffff880234a6b000 <- ffffc90001cd0000
suspend_nvs_save: phys = bb7d2000, size = 4096
suspend_nvs_save: Mapped ffffc90001cd4000
suspend_nvs_save: Saving ffff880234b2a000 <- ffffc90001cd4000
suspend_nvs_save: phys = bb7d3000, size = 4096
suspend_nvs_save: Mapped ffffc90001cd8000
suspend_nvs_save: Saving ffff880234b60000 <- ffffc90001cd8000
suspend_nvs_save: phys = bb7d4000, size = 4096
suspend_nvs_save: Mapped ffffc90001cdc000
suspend_nvs_save: Saving ffff880234011000 <- ffffc90001cdc000
suspend_nvs_save: phys = bb7d5000, size = 4096
suspend_nvs_save: Mapped ffffc90001ce0000
suspend_nvs_save: Saving ffff880234b28000 <- ffffc90001ce0000
suspend_nvs_save: phys = bb7d6000, size = 4096
suspend_nvs_save: Mapped ffffc90001ce4000
suspend_nvs_save: Saving ffff88023402a000 <- ffffc90001ce4000
suspend_nvs_save: phys = bb7d7000, size = 4096
suspend_nvs_save: Mapped ffffc90001ce8000
suspend_nvs_save: Saving ffff880234b3a000 <- ffffc90001ce8000
suspend_nvs_save: phys = bb7d8000, size = 4096
suspend_nvs_save: Mapped ffffc90001cec000
suspend_nvs_save: Saving ffff8802349ba000 <- ffffc90001cec000
suspend_nvs_save: phys = bb7d9000, size = 4096
suspend_nvs_save: Mapped ffffc90001cf0000
suspend_nvs_save: Saving ffff8802348c9000 <- ffffc90001cf0000
suspend_nvs_save: phys = bb7da000, size = 4096
suspend_nvs_save: Mapped ffffc90001cf4000
suspend_nvs_save: Saving ffff880234b63000 <- ffffc90001cf4000
suspend_nvs_save: phys = bb7db000, size = 4096
suspend_nvs_save: Mapped ffffc90001cf8000
suspend_nvs_save: Saving ffff88023403f000 <- ffffc90001cf8000
suspend_nvs_save: phys = bb7dc000, size = 4096
suspend_nvs_save: Mapped ffffc90001cfc000
suspend_nvs_save: Saving ffff880234104000 <- ffffc90001cfc000
suspend_nvs_save: phys = bb7dd000, size = 4096
suspend_nvs_save: Mapped ffffc90001d00000
suspend_nvs_save: Saving ffff8802349c8000 <- ffffc90001d00000
suspend_nvs_save: phys = bb7de000, size = 4096
suspend_nvs_save: Mapped ffffc90001d04000
suspend_nvs_save: Saving ffff880234103000 <- ffffc90001d04000
suspend_nvs_save: phys = bb7df000, size = 4096
suspend_nvs_save: Mapped ffffc90001d08000
suspend_nvs_save: Saving ffff880234b0f000 <- ffffc90001d08000
suspend_nvs_save: phys = bb7e0000, size = 4096
suspend_nvs_save: Mapped ffffc90001d0c000
suspend_nvs_save: Saving ffff88023408c000 <- ffffc90001d0c000
suspend_nvs_save: phys = bb7e1000, size = 4096
suspend_nvs_save: Mapped ffffc90001d10000
suspend_nvs_save: Saving ffff880237235000 <- ffffc90001d10000
suspend_nvs_save: phys = bb7e2000, size = 4096
suspend_nvs_save: Mapped ffffc90001d14000
suspend_nvs_save: Saving ffff880234a34000 <- ffffc90001d14000
suspend_nvs_save: phys = bb7e3000, size = 4096
suspend_nvs_save: Mapped ffffc90001d18000
suspend_nvs_save: Saving ffff88023408f000 <- ffffc90001d18000
suspend_nvs_save: phys = bb7e4000, size = 4096
suspend_nvs_save: Mapped ffffc90001d1c000
suspend_nvs_save: Saving ffff880234b6d000 <- ffffc90001d1c000
suspend_nvs_save: phys = bb7e5000, size = 4096
suspend_nvs_save: Mapped ffffc90001d20000
suspend_nvs_save: Saving ffff880234999000 <- ffffc90001d20000
suspend_nvs_save: phys = bb7e6000, size = 4096
suspend_nvs_save: Mapped ffffc90001d24000
suspend_nvs_save: Saving ffff880234b09000 <- ffffc90001d24000
suspend_nvs_save: phys = bb7e7000, size = 4096
suspend_nvs_save: Mapped ffffc90001d28000
suspend_nvs_save: Saving ffff880234089000 <- ffffc90001d28000
suspend_nvs_save: phys = bb7e8000, size = 4096
suspend_nvs_save: Mapped ffffc90001d2c000
suspend_nvs_save: Saving ffff880237378000 <- ffffc90001d2c000
suspend_nvs_save: phys = bb7e9000, size = 4096
suspend_nvs_save: Mapped ffffc90001d30000
suspend_nvs_save: Saving ffff8802348d8000 <- ffffc90001d30000
suspend_nvs_save: phys = bb7ea000, size = 4096
suspend_nvs_save: Mapped ffffc90001d34000
suspend_nvs_save: Saving ffff880235123000 <- ffffc90001d34000
suspend_nvs_save: phys = bb7eb000, size = 4096
suspend_nvs_save: Mapped ffffc90001d38000
suspend_nvs_save: Saving ffff880234a32000 <- ffffc90001d38000
suspend_nvs_save: phys = bb7ec000, size = 4096
suspend_nvs_save: Mapped ffffc90001d3c000
suspend_nvs_save: Saving ffff880234bb7000 <- ffffc90001d3c000
suspend_nvs_save: phys = bb7ed000, size = 4096
suspend_nvs_save: Mapped ffffc90001d40000
suspend_nvs_save: Saving ffff8802350dd000 <- ffffc90001d40000
suspend_nvs_save: phys = bb7ee000, size = 4096
suspend_nvs_save: Mapped ffffc90001d44000
suspend_nvs_save: Saving ffff880237326000 <- ffffc90001d44000
suspend_nvs_save: phys = bb7ef000, size = 4096
suspend_nvs_save: Mapped ffffc90001d48000
suspend_nvs_save: Saving ffff880234083000 <- ffffc90001d48000
suspend_nvs_save: phys = bb7f0000, size = 4096
suspend_nvs_save: Got address ffffc90000c20000
suspend_nvs_save: Saving ffff880234b29000 <- ffffc90000c20000
suspend_nvs_save: phys = bb7f1000, size = 4096
suspend_nvs_save: Got address ffffc90000c21000
suspend_nvs_save: Saving ffff880234b77000 <- ffffc90000c21000
suspend_nvs_save: phys = bb7f2000, size = 4096
suspend_nvs_save: Got address ffffc90000c22000
suspend_nvs_save: Saving ffff8802349ce000 <- ffffc90000c22000
suspend_nvs_save: phys = bb7f3000, size = 4096
suspend_nvs_save: Got address ffffc90000c23000
suspend_nvs_save: Saving ffff880234970000 <- ffffc90000c23000
suspend_nvs_save: phys = bb7f4000, size = 4096
suspend_nvs_save: Got address ffffc90000c24000
suspend_nvs_save: Saving ffff880234bd0000 <- ffffc90000c24000
suspend_nvs_save: phys = bb7f5000, size = 4096
suspend_nvs_save: Got address ffffc90000c25000
suspend_nvs_save: Saving ffff880234abd000 <- ffffc90000c25000
suspend_nvs_save: phys = bb7f6000, size = 4096
suspend_nvs_save: Got address ffffc90000c26000
suspend_nvs_save: Saving ffff880234903000 <- ffffc90000c26000
suspend_nvs_save: phys = bb7f7000, size = 4096
suspend_nvs_save: Got address ffffc90000c27000
suspend_nvs_save: Saving ffff88023405c000 <- ffffc90000c27000
suspend_nvs_save: phys = bb7f8000, size = 4096
suspend_nvs_save: Got address ffffc90000c28000
suspend_nvs_save: Saving ffff8802349d2000 <- ffffc90000c28000
suspend_nvs_save: phys = bb7f9000, size = 4096
suspend_nvs_save: Got address ffffc90000c29000
suspend_nvs_save: Saving ffff88023503c000 <- ffffc90000c29000
suspend_nvs_save: phys = bb7fa000, size = 4096
suspend_nvs_save: Got address ffffc90000c2a000
suspend_nvs_save: Saving ffff8802350fa000 <- ffffc90000c2a000
suspend_nvs_save: phys = bb7fb000, size = 4096
suspend_nvs_save: Got address ffffc90000c2b000
suspend_nvs_save: Saving ffff880234bf0000 <- ffffc90000c2b000
suspend_nvs_save: phys = bb7fc000, size = 4096
suspend_nvs_save: Got address ffffc90000c2c000
suspend_nvs_save: Saving ffff8802349de000 <- ffffc90000c2c000
suspend_nvs_save: phys = bb7fd000, size = 4096
suspend_nvs_save: Got address ffffc90000c2d000
suspend_nvs_save: Saving ffff880234032000 <- ffffc90000c2d000
suspend_nvs_save: phys = bb7fe000, size = 4096
suspend_nvs_save: Got address ffffc90000c2e000
suspend_nvs_save: Saving ffff880234be6000 <- ffffc90000c2e000
suspend_nvs_save: phys = bb7ff000, size = 4096
suspend_nvs_save: acpi_os_ioremap() failed
suspend_nvs_free: Unmapping ffffc90001be8000
suspend_nvs_free: Unmapping ffffc900018c0000
suspend_nvs_free: Unmapping ffffc900018c4000
suspend_nvs_free: Unmapping ffffc900018c8000
suspend_nvs_free: Unmapping ffffc900018cc000
suspend_nvs_free: Unmapping ffffc900018d0000
suspend_nvs_free: Unmapping ffffc900018d4000
suspend_nvs_free: Unmapping ffffc900018d8000
suspend_nvs_free: Unmapping ffffc900018dc000
suspend_nvs_free: Unmapping ffffc900018e0000
suspend_nvs_free: Unmapping ffffc90001bdc000
suspend_nvs_free: Unmapping ffffc90001be0000
suspend_nvs_free: Unmapping ffffc90001bec000
suspend_nvs_free: Unmapping ffffc90001bf0000
suspend_nvs_free: Unmapping ffffc90001bf4000
suspend_nvs_free: Unmapping ffffc90001bf8000
suspend_nvs_free: Unmapping ffffc90001bfc000
suspend_nvs_free: Unmapping ffffc90001c00000
suspend_nvs_free: Unmapping ffffc90001c04000
suspend_nvs_free: Unmapping ffffc90001c08000
suspend_nvs_free: Unmapping ffffc90001c0c000
suspend_nvs_free: Unmapping ffffc90001c10000
suspend_nvs_free: Unmapping ffffc90001c14000
suspend_nvs_free: Unmapping ffffc90001c18000
suspend_nvs_free: Unmapping ffffc90001c1c000
suspend_nvs_free: Unmapping ffffc90001c20000
suspend_nvs_free: Unmapping ffffc90001c24000
suspend_nvs_free: Unmapping ffffc90001c28000
suspend_nvs_free: Unmapping ffffc90001c2c000
suspend_nvs_free: Unmapping ffffc90001c30000
suspend_nvs_free: Unmapping ffffc90001c34000
suspend_nvs_free: Unmapping ffffc90001c38000
suspend_nvs_free: Unmapping ffffc90001c3c000
suspend_nvs_free: Unmapping ffffc90001c40000
suspend_nvs_free: Unmapping ffffc90001c44000
suspend_nvs_free: Unmapping ffffc90001c48000
suspend_nvs_free: Unmapping ffffc90001c4c000
suspend_nvs_free: Unmapping ffffc90001c50000
suspend_nvs_free: Unmapping ffffc90001c54000
suspend_nvs_free: Unmapping ffffc90001c58000
suspend_nvs_free: Unmapping ffffc90001c5c000
suspend_nvs_free: Unmapping ffffc90001c60000
suspend_nvs_free: Unmapping ffffc90001c64000
suspend_nvs_free: Unmapping ffffc90001c68000
suspend_nvs_free: Unmapping ffffc90001c6c000
suspend_nvs_free: Unmapping ffffc90001c70000
suspend_nvs_free: Unmapping ffffc90001c74000
suspend_nvs_free: Unmapping ffffc90001c78000
suspend_nvs_free: Unmapping ffffc90001c7c000
suspend_nvs_free: Unmapping ffffc90001c80000
suspend_nvs_free: Unmapping ffffc90001c84000
suspend_nvs_free: Unmapping ffffc90001c88000
suspend_nvs_free: Unmapping ffffc90001c8c000
suspend_nvs_free: Unmapping ffffc90001c90000
suspend_nvs_free: Unmapping ffffc90001c94000
suspend_nvs_free: Unmapping ffffc90001c98000
suspend_nvs_free: Unmapping ffffc90001c9c000
suspend_nvs_free: Unmapping ffffc90001ca0000
suspend_nvs_free: Unmapping ffffc90001ca4000
suspend_nvs_free: Unmapping ffffc90001ca8000
suspend_nvs_free: Unmapping ffffc90001cac000
suspend_nvs_free: Unmapping ffffc90001cb0000
suspend_nvs_free: Unmapping ffffc90001cb4000
suspend_nvs_free: Unmapping ffffc90001cb8000
suspend_nvs_free: Unmapping ffffc90001cbc000
suspend_nvs_free: Unmapping ffffc90001cc0000
suspend_nvs_free: Unmapping ffffc90001cc4000
suspend_nvs_free: Unmapping ffffc90001cc8000
suspend_nvs_free: Unmapping ffffc90001ccc000
suspend_nvs_free: Unmapping ffffc90001cd0000
suspend_nvs_free: Unmapping ffffc90001cd4000
suspend_nvs_free: Unmapping ffffc90001cd8000
suspend_nvs_free: Unmapping ffffc90001cdc000
suspend_nvs_free: Unmapping ffffc90001ce0000
suspend_nvs_free: Unmapping ffffc90001ce4000
suspend_nvs_free: Unmapping ffffc90001ce8000
suspend_nvs_free: Unmapping ffffc90001cec000
suspend_nvs_free: Unmapping ffffc90001cf0000
suspend_nvs_free: Unmapping ffffc90001cf4000
suspend_nvs_free: Unmapping ffffc90001cf8000
suspend_nvs_free: Unmapping ffffc90001cfc000
suspend_nvs_free: Unmapping ffffc90001d00000
suspend_nvs_free: Unmapping ffffc90001d04000
suspend_nvs_free: Unmapping ffffc90001d08000
suspend_nvs_free: Unmapping ffffc90001d0c000
suspend_nvs_free: Unmapping ffffc90001d10000
suspend_nvs_free: Unmapping ffffc90001d14000
suspend_nvs_free: Unmapping ffffc90001d18000
suspend_nvs_free: Unmapping ffffc90001d1c000
suspend_nvs_free: Unmapping ffffc90001d20000
suspend_nvs_free: Unmapping ffffc90001d24000
suspend_nvs_free: Unmapping ffffc90001d28000
suspend_nvs_free: Unmapping ffffc90001d2c000
suspend_nvs_free: Unmapping ffffc90001d30000
suspend_nvs_free: Unmapping ffffc90001d34000
suspend_nvs_free: Unmapping ffffc90001d38000
suspend_nvs_free: Unmapping ffffc90001d3c000
suspend_nvs_free: Unmapping ffffc90001d40000
suspend_nvs_free: Unmapping ffffc90001d44000
suspend_nvs_free: Unmapping ffffc90001d48000
suspend_nvs_free: Dropping ffffc90000c20000
suspend_nvs_free: Dropping ffffc90000c21000
suspend_nvs_free: Dropping ffffc90000c22000
suspend_nvs_free: Dropping ffffc90000c23000
suspend_nvs_free: Dropping ffffc90000c24000
suspend_nvs_free: Dropping ffffc90000c25000
suspend_nvs_free: Dropping ffffc90000c26000
suspend_nvs_free: Dropping ffffc90000c27000
suspend_nvs_free: Dropping ffffc90000c28000
suspend_nvs_free: Dropping ffffc90000c29000
suspend_nvs_free: Dropping ffffc90000c2a000
suspend_nvs_free: Dropping ffffc90000c2b000
suspend_nvs_free: Dropping ffffc90000c2c000
suspend_nvs_free: Dropping ffffc90000c2d000
suspend_nvs_free: Dropping ffffc90000c2e000
ACPI: Waking up from system sleep state S3
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: BAR 0: set to [mem 0xf2000000-0xf23fffff 64bit] (PCI address [0xf2000000-0xf23fffff])
i915 0000:00:02.0: BAR 2: set to [mem 0xd0000000-0xdfffffff 64bit pref] (PCI address [0xd0000000-0xdfffffff])
i915 0000:00:02.0: BAR 4: set to [io  0x1800-0x1807] (PCI address [0x1800-0x1807])
i915 0000:00:02.0: power state changed by ACPI to D0
i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900403, writing 0x900407)
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: BAR 0: set to [mem 0xf2728000-0xf27283ff] (PCI address [0xf2728000-0xf27283ff])
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
ehci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
HDA Intel 0000:00:1b.0: BAR 0: set to [mem 0xf2520000-0xf2523fff 64bit] (PCI address [0xf2520000-0xf2523fff])
HDA Intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
HDA Intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x10)
HDA Intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100102)
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: BAR 0: set to [mem 0xf2728400-0xf27287ff] (PCI address [0xf2728400-0xf27287ff])
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
ehci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ahci 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00403, writing 0x2b00407)
PM: early resume of devices complete after 150.365 msecs
i915 0000:00:02.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
i915 0000:00:02.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
i915 0000:00:02.0: setting latency timer to 64
ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
ehci_hcd 0000:00:1a.0: setting latency timer to 64
HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:00:1b.0: setting latency timer to 64
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:1d.0: setting latency timer to 64
HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
pci 0000:00:1e.0: setting latency timer to 64
ahci 0000:00:1f.2: setting latency timer to 64
sd 0:0:0:0: [sda] Starting disk
ioremap error for 0xbb77e000-0xbb781000, requested 0x10, got 0x0
ata6: SATA link down (SStatus 0 SControl 300)
ata5: SATA link down (SStatus 0 SControl 300)
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
ata1.00: configured for UDMA/100
PM: resume of devices complete after 402.780 msecs
Restarting tasks ... done.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-21  2:51         ` Jeff Chua
@ 2011-01-21 12:01           ` Rafael J. Wysocki
  2011-01-21 21:06           ` Rafael J. Wysocki
  1 sibling, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-21 12:01 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Friday, January 21, 2011, Jeff Chua wrote:
> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> > output containing a (failing) suspend attempt.
> >
> > Please attach full dmesg, so that I can see the size and address of your
> > system's NVS region.
> 
> Attached.

OK, I suspect the new code tries to map one page too many, but
I still don't know how many pages we are _supposed_ to map, because there's
no e820 information in your dmesg (I'm not sure exactly why).

Anyway, I'll have a replacement for [11/11] later today.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-21  2:51         ` Jeff Chua
  2011-01-21 12:01           ` Rafael J. Wysocki
@ 2011-01-21 21:06           ` Rafael J. Wysocki
  2011-01-22  5:54             ` Jeff Chua
  1 sibling, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-21 21:06 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Friday, January 21, 2011, Jeff Chua wrote:
> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> > output containing a (failing) suspend attempt.
> >
> > Please attach full dmesg, so that I can see the size and address of your
> > system's NVS region.
> 
> Attached.

So, below is a replacement for [11/11].  Please test it on top of
[1/11] - [10/11] (the current Linus' tree already contains [1/11] and [2/11])
and let me know if it works for you (in either case, please attach dmesg
output containing a suspend attempt).

If it works, I'll remove the diagnostic messages and submit along with the
rest of the patchset.

Thanks,
Rafael

---
Subject: ACPI / PM: Make NVS save/restore code use slightly less memory (test)

Remove the unnecessary field phys_start from struct nvs_page and
modify the code in nvs.c to use an array of struct nvs_page objects
instead of a list which makes it a bit more straightforward (in
addition to saving a little memory).

Not-signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/nvs.c |  125 +++++++++++++++++++++++++++++++++--------------------
 1 file changed, 79 insertions(+), 46 deletions(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -22,15 +22,15 @@
  */
 
 struct nvs_page {
-	unsigned long phys_start;
 	unsigned int size;
-	void *kaddr;
+	void __iomem *kaddr;
 	void *data;
 	bool unmap;
-	struct list_head node;
 };
 
-static LIST_HEAD(nvs_list);
+static struct nvs_page *nvs;
+static unsigned long nvs_start;
+static unsigned int nvs_span;
 
 /**
  *	suspend_nvs_register - register platform NVS memory region to save
@@ -43,31 +43,40 @@ static LIST_HEAD(nvs_list);
  */
 int suspend_nvs_register(unsigned long start, unsigned long size)
 {
-	struct nvs_page *entry, *next;
+	struct nvs_page *p, *p_end;
+	unsigned int head, tail;
 
-	while (size > 0) {
-		unsigned int nr_bytes;
+	pr_info("PM: Registering ACPI NVS region at %lx (%ld bytes)\n",
+		start, size);
 
-		entry = kzalloc(sizeof(struct nvs_page), GFP_KERNEL);
-		if (!entry)
-			goto Error;
-
-		list_add_tail(&entry->node, &nvs_list);
-		entry->phys_start = start;
-		nr_bytes = PAGE_SIZE - (start & ~PAGE_MASK);
-		entry->size = (size < nr_bytes) ? size : nr_bytes;
-
-		start += entry->size;
-		size -= entry->size;
+	nvs_start = start;
+	head = PAGE_SIZE - (start & ~PAGE_MASK);
+	if (head) {
+		nvs_span = 1;
+		size -= size > head ? head : size;
+	} else {
+		nvs_span = 0;
+		head = PAGE_SIZE;
 	}
-	return 0;
+	nvs_span += size >> PAGE_SHIFT;
+	tail = size & ~PAGE_MASK;
+	if (tail)
+		nvs_span++;
+	else
+		tail = PAGE_SIZE;
+
+	nvs = kzalloc(sizeof(*nvs) * nvs_span, GFP_KERNEL);
+	if (!nvs)
+		return -ENOMEM;
+
+	p = nvs;
+	p->size = head;
+	for (p++, p_end = nvs + nvs_span - 1; p < p_end; p++)
+		p->size = PAGE_SIZE;
+	if (p_end > nvs)
+		p_end->size = tail;
 
- Error:
-	list_for_each_entry_safe(entry, next, &nvs_list, node) {
-		list_del(&entry->node);
-		kfree(entry);
-	}
-	return -ENOMEM;
+	return 0;
 }
 
 /**
@@ -75,17 +84,23 @@ int suspend_nvs_register(unsigned long s
  */
 void suspend_nvs_free(void)
 {
-	struct nvs_page *entry;
+	struct nvs_page *entry, *end;
 
-	list_for_each_entry(entry, &nvs_list, node)
+	for (entry = nvs, end = nvs + nvs_span; entry < end; entry++)
 		if (entry->data) {
 			free_page((unsigned long)entry->data);
 			entry->data = NULL;
 			if (entry->kaddr) {
 				if (entry->unmap) {
+					pr_info("%s: Unmapping %p\n", __func__,
+						entry->kaddr);
+
 					iounmap(entry->kaddr);
 					entry->unmap = false;
 				} else {
+					pr_info("%s: Releasing %p\n", __func__,
+						entry->kaddr);
+
 					acpi_os_unmap_memory(entry->kaddr,
 							     entry->size);
 				}
@@ -99,9 +114,9 @@ void suspend_nvs_free(void)
  */
 int suspend_nvs_alloc(void)
 {
-	struct nvs_page *entry;
+	struct nvs_page *entry, *end;
 
-	list_for_each_entry(entry, &nvs_list, node) {
+	for (entry = nvs, end = nvs + nvs_span; entry < end; entry++) {
 		entry->data = (void *)__get_free_page(GFP_KERNEL);
 		if (!entry->data) {
 			suspend_nvs_free();
@@ -116,26 +131,44 @@ int suspend_nvs_alloc(void)
  */
 int suspend_nvs_save(void)
 {
-	struct nvs_page *entry;
+	struct nvs_page *entry, *end;
+	unsigned long phys = nvs_start;
 
 	printk(KERN_INFO "PM: Saving platform NVS memory\n");
 
-	list_for_each_entry(entry, &nvs_list, node)
-		if (entry->data) {
-			unsigned long phys = entry->phys_start;
-			unsigned int size = entry->size;
+	for (entry = nvs, end = nvs + nvs_span; entry < end; entry++) {
+		unsigned int size = entry->size;
+		void __iomem *kaddr;
 
-			entry->kaddr = acpi_os_get_iomem(phys, size);
-			if (!entry->kaddr) {
-				entry->kaddr = acpi_os_ioremap(phys, size);
-				entry->unmap = true;
-			}
-			if (!entry->kaddr) {
-				suspend_nvs_free();
-				return -ENOMEM;
-			}
-			memcpy(entry->data, entry->kaddr, entry->size);
+		if (!entry->data) {
+			suspend_nvs_free();
+			return -ENOMEM;
+		}
+
+		pr_info("%s: Trying to map %lx, %d\n", __func__, phys, size);
+
+		kaddr = acpi_os_get_iomem(phys, size);
+		if (!kaddr) {
+			kaddr = acpi_os_ioremap(phys, size);
+			entry->unmap = !!kaddr;
+		} else {
+			pr_info("%s: Got address %p\n", __func__, kaddr);
 		}
+		entry->kaddr = kaddr;
+
+		if (!entry->kaddr) {
+			pr_info("%s: Mapping failed\n", __func__);
+
+			suspend_nvs_free();
+			return -EIO;
+		} else {
+			pr_info("%s: Using address %p\n", __func__, entry->kaddr);
+		}
+
+		memcpy(entry->data, entry->kaddr, size);
+
+		phys += size;
+	}
 
 	return 0;
 }
@@ -148,11 +181,11 @@ int suspend_nvs_save(void)
  */
 void suspend_nvs_restore(void)
 {
-	struct nvs_page *entry;
+	struct nvs_page *entry, *end;
 
 	printk(KERN_INFO "PM: Restoring platform NVS memory\n");
 
-	list_for_each_entry(entry, &nvs_list, node)
+	for (entry = nvs, end = nvs + nvs_span; entry < end; entry++)
 		if (entry->data)
 			memcpy(entry->kaddr, entry->data, entry->size);
 }

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-21 21:06           ` Rafael J. Wysocki
@ 2011-01-22  5:54             ` Jeff Chua
  2011-01-22  5:58               ` Jeff Chua
  2011-01-22  9:13               ` Rafael J. Wysocki
  0 siblings, 2 replies; 47+ messages in thread
From: Jeff Chua @ 2011-01-22  5:54 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> On Friday, January 21, 2011, Jeff Chua wrote:
>> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
>> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
>> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> So, below is a replacement for [11/11].  Please test it on top of
> [1/11] - [10/11] (the current Linus' tree already contains [1/11] and [2/11])
> and let me know if it works for you (in either case, please attach dmesg
> output containing a suspend attempt).
>
> If it works, I'll remove the diagnostic messages and submit along with the
> rest of the patchset.

Rafael,

dmesg attached. This time, it worked!

I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
need the Thinkpad ACPI to control the fan and bluetooth. It looks like
the thinkpad acpi is trying acquire locks while suspending.  Disabling
cmos, light, led and hotkeys makes suspend-to-disk works again.

Thanks,
Jeff

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22  5:54             ` Jeff Chua
@ 2011-01-22  5:58               ` Jeff Chua
  2011-01-22  9:25                 ` Rafael J. Wysocki
  2011-01-22  9:13               ` Rafael J. Wysocki
  1 sibling, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-22  5:58 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

[-- Attachment #1: Type: text/plain, Size: 1148 bytes --]

On Sat, Jan 22, 2011 at 1:54 PM, Jeff Chua <jeff.chua.linux@gmail.com> wrote:
> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
>> On Friday, January 21, 2011, Jeff Chua wrote:
>>> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
>>> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
>>> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
>> So, below is a replacement for [11/11].  Please test it on top of
>> [1/11] - [10/11] (the current Linus' tree already contains [1/11] and [2/11])
>> and let me know if it works for you (in either case, please attach dmesg
>> output containing a suspend attempt).
>>
>> If it works, I'll remove the diagnostic messages and submit along with the
>> rest of the patchset.
>
> Rafael,
>
> dmesg attached. This time, it worked!
>
> I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> the thinkpad acpi is trying acquire locks while suspending.  Disabling
> cmos, light, led and hotkeys makes suspend-to-disk works again.

Here's the dmesg.

Jeff

[-- Attachment #2: s2r --]
[-- Type: application/octet-stream, Size: 76191 bytes --]

2011-01-22T11:32:56.423657+08:00 boston kernel: imklog 5.6.2, log source = /proc/kmsg started.
2011-01-22T11:32:56.423952+08:00 boston kernel: VR (bus 0 bus_irq 9 global_irq 9 high level)
2011-01-22T11:32:56.423958+08:00 boston kernel: ACPI: IRQ0 used by override.
2011-01-22T11:32:56.423960+08:00 boston kernel: ACPI: IRQ2 used by override.
2011-01-22T11:32:56.423964+08:00 boston kernel: ACPI: IRQ9 used by override.
2011-01-22T11:32:56.423966+08:00 boston kernel: Using ACPI (MADT) for SMP configuration information
2011-01-22T11:32:56.423968+08:00 boston kernel: ACPI: HPET id: 0x8086a701 base: 0xfed00000
2011-01-22T11:32:56.423969+08:00 boston kernel: SMP: Allowing 4 CPUs, 0 hotplug CPUs
2011-01-22T11:32:56.423970+08:00 boston kernel: nr_irqs_gsi: 40
2011-01-22T11:32:56.423972+08:00 boston kernel: PM: Registered nosave memory: 000000000009e000 - 000000000009f000
2011-01-22T11:32:56.423974+08:00 boston kernel: PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
2011-01-22T11:32:56.423977+08:00 boston kernel: PM: Registered nosave memory: 00000000000a0000 - 00000000000dc000
2011-01-22T11:32:56.423979+08:00 boston kernel: PM: Registered nosave memory: 00000000000dc000 - 0000000000100000
2011-01-22T11:32:56.423980+08:00 boston kernel: PM: Registered nosave memory: 00000000bb27c000 - 00000000bb282000
2011-01-22T11:32:56.423982+08:00 boston kernel: PM: Registered nosave memory: 00000000bb35f000 - 00000000bb371000
2011-01-22T11:32:56.423983+08:00 boston kernel: PM: Registered nosave memory: 00000000bb371000 - 00000000bb3f2000
2011-01-22T11:32:56.423985+08:00 boston kernel: PM: Registered nosave memory: 00000000bb3f2000 - 00000000bb40f000
2011-01-22T11:32:56.423986+08:00 boston kernel: PM: Registered nosave memory: 00000000bb46f000 - 00000000bb668000
2011-01-22T11:32:56.423988+08:00 boston kernel: PM: Registered nosave memory: 00000000bb668000 - 00000000bb6e8000
2011-01-22T11:32:56.423991+08:00 boston kernel: PM: Registered nosave memory: 00000000bb6e8000 - 00000000bb70f000
2011-01-22T11:32:56.423992+08:00 boston kernel: PM: Registered nosave memory: 00000000bb717000 - 00000000bb71f000
2011-01-22T11:32:56.423994+08:00 boston kernel: PM: Registered nosave memory: 00000000bb76b000 - 00000000bb777000
2011-01-22T11:32:56.423995+08:00 boston kernel: PM: Registered nosave memory: 00000000bb777000 - 00000000bb77a000
2011-01-22T11:32:56.423997+08:00 boston kernel: PM: Registered nosave memory: 00000000bb77a000 - 00000000bb781000
2011-01-22T11:32:56.423998+08:00 boston kernel: PM: Registered nosave memory: 00000000bb781000 - 00000000bb782000
2011-01-22T11:32:56.424000+08:00 boston kernel: PM: Registered nosave memory: 00000000bb782000 - 00000000bb78b000
2011-01-22T11:32:56.424003+08:00 boston kernel: PM: Registered nosave memory: 00000000bb78b000 - 00000000bb78c000
2011-01-22T11:32:56.424005+08:00 boston kernel: PM: Registered nosave memory: 00000000bb78c000 - 00000000bb79f000
2011-01-22T11:32:56.424006+08:00 boston kernel: PM: Registered nosave memory: 00000000bb79f000 - 00000000bb7ff000
2011-01-22T11:32:56.424008+08:00 boston kernel: PM: Registered nosave memory: 00000000bb800000 - 00000000c0000000
2011-01-22T11:32:56.424009+08:00 boston kernel: PM: Registered nosave memory: 00000000c0000000 - 00000000e0000000
2011-01-22T11:32:56.424011+08:00 boston kernel: PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000
2011-01-22T11:32:56.424012+08:00 boston kernel: PM: Registered nosave memory: 00000000f0000000 - 00000000feaff000
2011-01-22T11:32:56.424014+08:00 boston kernel: PM: Registered nosave memory: 00000000feaff000 - 00000000feb00000
2011-01-22T11:32:56.424017+08:00 boston kernel: PM: Registered nosave memory: 00000000feb00000 - 00000000fec00000
2011-01-22T11:32:56.424018+08:00 boston kernel: PM: Registered nosave memory: 00000000fec00000 - 00000000fec10000
2011-01-22T11:32:56.424020+08:00 boston kernel: PM: Registered nosave memory: 00000000fec10000 - 00000000fed00000
2011-01-22T11:32:56.424022+08:00 boston kernel: PM: Registered nosave memory: 00000000fed00000 - 00000000fed1c000
2011-01-22T11:32:56.424023+08:00 boston kernel: PM: Registered nosave memory: 00000000fed1c000 - 00000000fed90000
2011-01-22T11:32:56.424025+08:00 boston kernel: PM: Registered nosave memory: 00000000fed90000 - 00000000fee00000
2011-01-22T11:32:56.424026+08:00 boston kernel: PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000
2011-01-22T11:32:56.424030+08:00 boston kernel: PM: Registered nosave memory: 00000000fee01000 - 00000000ff000000
2011-01-22T11:32:56.424032+08:00 boston kernel: PM: Registered nosave memory: 00000000ff000000 - 0000000100000000
2011-01-22T11:32:56.424033+08:00 boston kernel: PM: Registered nosave memory: 00000001fc000000 - 0000000200000000
2011-01-22T11:32:56.424035+08:00 boston kernel: Allocating PCI resources starting at c0000000 (gap: c0000000:20000000)
2011-01-22T11:32:56.424036+08:00 boston kernel: Booting paravirtualized kernel on bare hardware
2011-01-22T11:32:56.424039+08:00 boston kernel: setup_percpu: NR_CPUS:16 nr_cpumask_bits:16 nr_cpu_ids:4 nr_node_ids:1
2011-01-22T11:32:56.424042+08:00 boston kernel: PERCPU: Embedded 26 pages/cpu @ffff8800bb000000 s75392 r8192 d22912 u524288
2011-01-22T11:32:56.424056+08:00 boston kernel: pcpu-alloc: s75392 r8192 d22912 u524288 alloc=1*2097152
2011-01-22T11:32:56.424060+08:00 boston kernel: pcpu-alloc: [0] 0 1 2 3 
2011-01-22T11:32:56.424063+08:00 boston kernel: Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 2012790
2011-01-22T11:32:56.424068+08:00 boston kernel: Policy zone: Normal
2011-01-22T11:32:56.424075+08:00 boston kernel: Kernel command line: BOOT_IMAGE=(hd0,14)/linux/bzc1 root=/dev/sda2 ro resume=/dev/sda3 reboot=bios mce x11 snd-hda-intel.model=lenovo-x200 nf_conntrack_sip.sip_direct_signalling=0 nf_conntrack_sip.sip_direct_media=0 testing_only=\"this is got to be good. Now I can send in a very long line just like 2.4 and need not worry about the line being too long. What a great way to start a great year!!! Cool!\"
2011-01-22T11:32:56.424079+08:00 boston kernel: PID hash table entries: 4096 (order: 3, 32768 bytes)
2011-01-22T11:32:56.424081+08:00 boston kernel: Checking aperture...
2011-01-22T11:32:56.424083+08:00 boston kernel: No AGP bridge found
2011-01-22T11:32:56.424088+08:00 boston kernel: Memory: 7989592k/9371648k available (4737k kernel code, 1192336k absent, 189720k reserved, 2574k data, 576k init)
2011-01-22T11:32:56.424093+08:00 boston kernel: SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
2011-01-22T11:32:56.424096+08:00 boston kernel: Preemptable hierarchical RCU implementation.
2011-01-22T11:32:56.424099+08:00 boston kernel: 	CONFIG_RCU_FANOUT set to non-default value of 32
2011-01-22T11:32:56.424101+08:00 boston kernel: 	RCU-based detection of stalled CPUs is disabled.
2011-01-22T11:32:56.424104+08:00 boston kernel: 	Verbose stalled-CPUs detection is disabled.
2011-01-22T11:32:56.424254+08:00 boston kernel: NR_IRQS:768
2011-01-22T11:32:56.424258+08:00 boston kernel: Extended CMOS year: 2000
2011-01-22T11:32:56.424260+08:00 boston kernel: Console: colour dummy device 80x25
2011-01-22T11:32:56.424264+08:00 boston kernel: console [tty0] enabled
2011-01-22T11:32:56.424267+08:00 boston kernel: hpet clockevent registered
2011-01-22T11:32:56.424268+08:00 boston kernel: Fast TSC calibration using PIT
2011-01-22T11:32:56.424270+08:00 boston kernel: Detected 2127.958 MHz processor.
2011-01-22T11:32:56.424272+08:00 boston kernel: Calibrating delay loop (skipped), value calculated using timer frequency.. 4255.91 BogoMIPS (lpj=21279580)
2011-01-22T11:32:56.424273+08:00 boston kernel: pid_max: default: 32768 minimum: 301
2011-01-22T11:32:56.424275+08:00 boston kernel: Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
2011-01-22T11:32:56.424278+08:00 boston kernel: Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
2011-01-22T11:32:56.424280+08:00 boston kernel: Mount-cache hash table entries: 256
2011-01-22T11:32:56.424281+08:00 boston kernel: CPU: Physical Processor ID: 0
2011-01-22T11:32:56.424282+08:00 boston kernel: CPU: Processor Core ID: 0
2011-01-22T11:32:56.424284+08:00 boston kernel: mce: CPU supports 9 MCE banks
2011-01-22T11:32:56.424285+08:00 boston kernel: CPU0: Thermal monitoring enabled (TM1)
2011-01-22T11:32:56.424286+08:00 boston kernel: using mwait in idle threads.
2011-01-22T11:32:56.424287+08:00 boston kernel: ACPI: Core revision 20101209
2011-01-22T11:32:56.424290+08:00 boston kernel: Setting APIC routing to flat
2011-01-22T11:32:56.424305+08:00 boston kernel: ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
2011-01-22T11:32:56.424308+08:00 boston kernel: CPU0: Intel(R) Core(TM) i7 CPU       L 640  @ 2.13GHz stepping 02
2011-01-22T11:32:56.424310+08:00 boston kernel: Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver.
2011-01-22T11:32:56.424311+08:00 boston kernel: ... version:                3
2011-01-22T11:32:56.424312+08:00 boston kernel: ... bit width:              48
2011-01-22T11:32:56.424314+08:00 boston kernel: ... generic registers:      4
2011-01-22T11:32:56.424319+08:00 boston kernel: ... value mask:             0000ffffffffffff
2011-01-22T11:32:56.424321+08:00 boston kernel: ... max period:             000000007fffffff
2011-01-22T11:32:56.424322+08:00 boston kernel: ... fixed-purpose events:   3
2011-01-22T11:32:56.424323+08:00 boston kernel: ... event mask:             000000070000000f
2011-01-22T11:32:56.424325+08:00 boston kernel: Booting Node   0, Processors  #1 #2 #3 Ok.
2011-01-22T11:32:56.424326+08:00 boston kernel: Brought up 4 CPUs
2011-01-22T11:32:56.424328+08:00 boston kernel: Total of 4 processors activated (17023.83 BogoMIPS).
2011-01-22T11:32:56.424329+08:00 boston kernel: PM: Registering ACPI NVS region at bb371000 (528384 bytes)
2011-01-22T11:32:56.424332+08:00 boston kernel: PM: Registering ACPI NVS region at bb668000 (524288 bytes)
2011-01-22T11:32:56.424334+08:00 boston kernel: PM: Registering ACPI NVS region at bb76b000 (49152 bytes)
2011-01-22T11:32:56.424335+08:00 boston kernel: PM: Registering ACPI NVS region at bb77a000 (28672 bytes)
2011-01-22T11:32:56.424337+08:00 boston kernel: PM: Registering ACPI NVS region at bb782000 (36864 bytes)
2011-01-22T11:32:56.424338+08:00 boston kernel: PM: Registering ACPI NVS region at bb78c000 (77824 bytes)
2011-01-22T11:32:56.424339+08:00 boston kernel: NET: Registered protocol family 16
2011-01-22T11:32:56.424341+08:00 boston kernel: ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
2011-01-22T11:32:56.424344+08:00 boston kernel: ACPI: bus type pci registered
2011-01-22T11:32:56.424346+08:00 boston kernel: PCI: Using configuration type 1 for base access
2011-01-22T11:32:56.424347+08:00 boston kernel: bio: create slab <bio-0> at 0
2011-01-22T11:32:56.424348+08:00 boston kernel: ACPI: EC: EC description table is found, configuring boot EC
2011-01-22T11:32:56.424350+08:00 boston kernel: [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
2011-01-22T11:32:56.424352+08:00 boston kernel: ACPI: SSDT 00000000bb71a918 003EB (v01  PmRef  Cpu0Ist 00003000 INTL 20050513)
2011-01-22T11:32:56.424353+08:00 boston kernel: ACPI: Dynamic OEM Table Load:
2011-01-22T11:32:56.424354+08:00 boston kernel: ACPI: SSDT           (null) 003EB (v01  PmRef  Cpu0Ist 00003000 INTL 20050513)
2011-01-22T11:32:56.424357+08:00 boston kernel: ACPI: SSDT 00000000bb718718 006B2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050513)
2011-01-22T11:32:56.424359+08:00 boston kernel: ACPI: Dynamic OEM Table Load:
2011-01-22T11:32:56.424361+08:00 boston kernel: ACPI: SSDT           (null) 006B2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050513)
2011-01-22T11:32:56.424362+08:00 boston kernel: ACPI: SSDT 00000000bb719a98 00303 (v01  PmRef    ApIst 00003000 INTL 20050513)
2011-01-22T11:32:56.424363+08:00 boston kernel: ACPI: Dynamic OEM Table Load:
2011-01-22T11:32:56.424365+08:00 boston kernel: ACPI: SSDT           (null) 00303 (v01  PmRef    ApIst 00003000 INTL 20050513)
2011-01-22T11:32:56.424367+08:00 boston kernel: ACPI: SSDT 00000000bb717d98 00119 (v01  PmRef    ApCst 00003000 INTL 20050513)
2011-01-22T11:32:56.424370+08:00 boston kernel: ACPI: Dynamic OEM Table Load:
2011-01-22T11:32:56.424371+08:00 boston kernel: ACPI: SSDT           (null) 00119 (v01  PmRef    ApCst 00003000 INTL 20050513)
2011-01-22T11:32:56.424373+08:00 boston kernel: ACPI: Interpreter enabled
2011-01-22T11:32:56.424374+08:00 boston kernel: ACPI: (supports S0 S3 S4 S5)
2011-01-22T11:32:56.424375+08:00 boston kernel: ACPI: Using IOAPIC for interrupt routing
2011-01-22T11:32:56.424377+08:00 boston kernel: ACPI: Power Resource [PUBS] (on)
2011-01-22T11:32:56.424378+08:00 boston kernel: ACPI: EC: GPE = 0x11, I/O: command/status = 0x66, data = 0x62
2011-01-22T11:32:56.424380+08:00 boston kernel: ACPI: ACPI Dock Station Driver: 3 docks/bays found
2011-01-22T11:32:56.424383+08:00 boston kernel: HEST: Table not found.
2011-01-22T11:32:56.424385+08:00 boston kernel: PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
2011-01-22T11:32:56.424386+08:00 boston kernel: ACPI: PCI Root Bridge [UNCR] (domain 0000 [bus ff])
2011-01-22T11:32:56.424388+08:00 boston kernel: pci 0000:ff:00.0: [8086:2c62] type 0 class 0x000600
2011-01-22T11:32:56.424389+08:00 boston kernel: pci 0000:ff:00.1: [8086:2d01] type 0 class 0x000600
2011-01-22T11:32:56.424391+08:00 boston kernel: pci 0000:ff:02.0: [8086:2d10] type 0 class 0x000600
2011-01-22T11:32:56.424392+08:00 boston kernel: pci 0000:ff:02.1: [8086:2d11] type 0 class 0x000600
2011-01-22T11:32:56.424394+08:00 boston kernel: pci 0000:ff:02.2: [8086:2d12] type 0 class 0x000600
2011-01-22T11:32:56.424397+08:00 boston kernel: pci 0000:ff:02.3: [8086:2d13] type 0 class 0x000600
2011-01-22T11:32:56.424399+08:00 boston kernel: ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
2011-01-22T11:32:56.424401+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [io  0x0000-0x0cf7]
2011-01-22T11:32:56.424402+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [io  0x0d00-0xffff]
2011-01-22T11:32:56.424404+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff]
2011-01-22T11:32:56.424405+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff]
2011-01-22T11:32:56.424407+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff]
2011-01-22T11:32:56.424410+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff]
2011-01-22T11:32:56.424544+08:00 boston kernel: pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff]
2011-01-22T11:32:56.424546+08:00 boston kernel: pci 0000:00:00.0: [8086:0044] type 0 class 0x000600
2011-01-22T11:32:56.424547+08:00 boston kernel: pci 0000:00:02.0: [8086:0046] type 0 class 0x000300
2011-01-22T11:32:56.424549+08:00 boston kernel: pci 0000:00:02.0: reg 10: [mem 0xf2000000-0xf23fffff 64bit]
2011-01-22T11:32:56.424550+08:00 boston kernel: pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref]
2011-01-22T11:32:56.424552+08:00 boston kernel: pci 0000:00:02.0: reg 20: [io  0x1800-0x1807]
2011-01-22T11:32:56.424570+08:00 boston kernel: pci 0000:00:16.0: [8086:3b64] type 0 class 0x000780
2011-01-22T11:32:56.424572+08:00 boston kernel: pci 0000:00:16.0: reg 10: [mem 0xf2727800-0xf272780f 64bit]
2011-01-22T11:32:56.424574+08:00 boston kernel: pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424575+08:00 boston kernel: pci 0000:00:16.0: PME# disabled
2011-01-22T11:32:56.424577+08:00 boston kernel: pci 0000:00:19.0: [8086:10ea] type 0 class 0x000200
2011-01-22T11:32:56.424579+08:00 boston kernel: pci 0000:00:19.0: reg 10: [mem 0xf2500000-0xf251ffff]
2011-01-22T11:32:56.424580+08:00 boston kernel: pci 0000:00:19.0: reg 14: [mem 0xf2525000-0xf2525fff]
2011-01-22T11:32:56.424582+08:00 boston kernel: pci 0000:00:19.0: reg 18: [io  0x1820-0x183f]
2011-01-22T11:32:56.424583+08:00 boston kernel: pci 0000:00:19.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424585+08:00 boston kernel: pci 0000:00:19.0: PME# disabled
2011-01-22T11:32:56.424586+08:00 boston kernel: pci 0000:00:1a.0: [8086:3b3c] type 0 class 0x000c03
2011-01-22T11:32:56.424588+08:00 boston kernel: pci 0000:00:1a.0: reg 10: [mem 0xf2728000-0xf27283ff]
2011-01-22T11:32:56.424589+08:00 boston kernel: pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424590+08:00 boston kernel: pci 0000:00:1a.0: PME# disabled
2011-01-22T11:32:56.424592+08:00 boston kernel: pci 0000:00:1b.0: [8086:3b56] type 0 class 0x000403
2011-01-22T11:32:56.424593+08:00 boston kernel: pci 0000:00:1b.0: reg 10: [mem 0xf2520000-0xf2523fff 64bit]
2011-01-22T11:32:56.424595+08:00 boston kernel: pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424596+08:00 boston kernel: pci 0000:00:1b.0: PME# disabled
2011-01-22T11:32:56.424600+08:00 boston kernel: pci 0000:00:1c.0: [8086:3b42] type 1 class 0x000604
2011-01-22T11:32:56.424602+08:00 boston kernel: pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424603+08:00 boston kernel: pci 0000:00:1c.0: PME# disabled
2011-01-22T11:32:56.424605+08:00 boston kernel: pci 0000:00:1c.3: [8086:3b48] type 1 class 0x000604
2011-01-22T11:32:56.424606+08:00 boston kernel: pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424607+08:00 boston kernel: pci 0000:00:1c.3: PME# disabled
2011-01-22T11:32:56.424609+08:00 boston kernel: pci 0000:00:1c.4: [8086:3b4a] type 1 class 0x000604
2011-01-22T11:32:56.424612+08:00 boston kernel: pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424613+08:00 boston kernel: pci 0000:00:1c.4: PME# disabled
2011-01-22T11:32:56.424615+08:00 boston kernel: pci 0000:00:1d.0: [8086:3b34] type 0 class 0x000c03
2011-01-22T11:32:56.424616+08:00 boston kernel: pci 0000:00:1d.0: reg 10: [mem 0xf2728400-0xf27287ff]
2011-01-22T11:32:56.424618+08:00 boston kernel: pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424619+08:00 boston kernel: pci 0000:00:1d.0: PME# disabled
2011-01-22T11:32:56.424620+08:00 boston kernel: pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604
2011-01-22T11:32:56.424622+08:00 boston kernel: pci 0000:00:1f.0: [8086:3b07] type 0 class 0x000601
2011-01-22T11:32:56.424625+08:00 boston kernel: pci 0000:00:1f.2: [8086:3b2f] type 0 class 0x000106
2011-01-22T11:32:56.424626+08:00 boston kernel: pci 0000:00:1f.2: reg 10: [io  0x1860-0x1867]
2011-01-22T11:32:56.424628+08:00 boston kernel: pci 0000:00:1f.2: reg 14: [io  0x1814-0x1817]
2011-01-22T11:32:56.424629+08:00 boston kernel: pci 0000:00:1f.2: reg 18: [io  0x1818-0x181f]
2011-01-22T11:32:56.424630+08:00 boston kernel: pci 0000:00:1f.2: reg 1c: [io  0x1810-0x1813]
2011-01-22T11:32:56.424632+08:00 boston kernel: pci 0000:00:1f.2: reg 20: [io  0x1840-0x185f]
2011-01-22T11:32:56.424633+08:00 boston kernel: pci 0000:00:1f.2: reg 24: [mem 0xf2727000-0xf27277ff]
2011-01-22T11:32:56.424636+08:00 boston kernel: pci 0000:00:1f.2: PME# supported from D3hot
2011-01-22T11:32:56.424638+08:00 boston kernel: pci 0000:00:1f.2: PME# disabled
2011-01-22T11:32:56.424639+08:00 boston kernel: pci 0000:00:1f.3: [8086:3b30] type 0 class 0x000c05
2011-01-22T11:32:56.424641+08:00 boston kernel: pci 0000:00:1f.3: reg 10: [mem 0xf2728800-0xf27288ff 64bit]
2011-01-22T11:32:56.424642+08:00 boston kernel: pci 0000:00:1f.3: reg 20: [io  0x1880-0x189f]
2011-01-22T11:32:56.424643+08:00 boston kernel: pci 0000:00:1f.6: [8086:3b32] type 0 class 0x001180
2011-01-22T11:32:56.424645+08:00 boston kernel: pci 0000:00:1f.6: reg 10: [mem 0xf2526000-0xf2526fff 64bit]
2011-01-22T11:32:56.424646+08:00 boston kernel: pci 0000:00:1c.0: PCI bridge to [bus 0d-0d]
2011-01-22T11:32:56.424649+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [io  0xf000-0x0000] (disabled)
2011-01-22T11:32:56.424651+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff] (disabled)
2011-01-22T11:32:56.424653+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
2011-01-22T11:32:56.424654+08:00 boston kernel: pci 0000:00:1c.3: PCI bridge to [bus 05-0c]
2011-01-22T11:32:56.424656+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
2011-01-22T11:32:56.424657+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [mem 0xf0000000-0xf1ffffff]
2011-01-22T11:32:56.424659+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [mem 0xf2800000-0xf28fffff 64bit pref]
2011-01-22T11:32:56.424662+08:00 boston kernel: pci 0000:02:00.0: [8086:4239] type 0 class 0x000280
2011-01-22T11:32:56.424664+08:00 boston kernel: pci 0000:02:00.0: reg 10: [mem 0xf2400000-0xf2401fff 64bit]
2011-01-22T11:32:56.424665+08:00 boston kernel: pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
2011-01-22T11:32:56.424666+08:00 boston kernel: pci 0000:02:00.0: PME# disabled
2011-01-22T11:32:56.424668+08:00 boston kernel: pci 0000:00:1c.4: PCI bridge to [bus 02-02]
2011-01-22T11:32:56.424669+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [io  0xf000-0x0000] (disabled)
2011-01-22T11:32:56.424671+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [mem 0xf2400000-0xf24fffff]
2011-01-22T11:32:56.424672+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
2011-01-22T11:32:56.424676+08:00 boston kernel: pci 0000:00:1e.0: PCI bridge to [bus 0e-0e] (subtractive decode)
2011-01-22T11:32:56.424677+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [io  0xf000-0x0000] (disabled)
2011-01-22T11:32:56.424680+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0xfff00000-0x000fffff] (disabled)
2011-01-22T11:32:56.424696+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
2011-01-22T11:32:56.424831+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [io  0x0000-0x0cf7] (subtractive decode)
2011-01-22T11:32:56.424833+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [io  0x0d00-0xffff] (subtractive decode)
2011-01-22T11:32:56.424835+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
2011-01-22T11:32:56.424837+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode)
2011-01-22T11:32:56.424839+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode)
2011-01-22T11:32:56.424840+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode)
2011-01-22T11:32:56.424842+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem 0xc0000000-0xfebfffff] (subtractive decode)
2011-01-22T11:32:56.424844+08:00 boston kernel: ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
2011-01-22T11:32:56.424845+08:00 boston kernel: ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP1._PRT]
2011-01-22T11:32:56.424847+08:00 boston kernel: ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP4._PRT]
2011-01-22T11:32:56.424848+08:00 boston kernel: ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP5._PRT]
2011-01-22T11:32:56.424850+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
2011-01-22T11:32:56.424852+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
2011-01-22T11:32:56.424853+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
2011-01-22T11:32:56.424855+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
2011-01-22T11:32:56.424856+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11)
2011-01-22T11:32:56.424858+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
2011-01-22T11:32:56.424859+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
2011-01-22T11:32:56.424861+08:00 boston kernel: ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
2011-01-22T11:32:56.424862+08:00 boston kernel: vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
2011-01-22T11:32:56.424864+08:00 boston kernel: vgaarb: loaded
2011-01-22T11:32:56.424865+08:00 boston kernel: SCSI subsystem initialized
2011-01-22T11:32:56.424866+08:00 boston kernel: libata version 3.00 loaded.
2011-01-22T11:32:56.424868+08:00 boston kernel: usbcore: registered new interface driver usbfs
2011-01-22T11:32:56.424869+08:00 boston kernel: usbcore: registered new interface driver hub
2011-01-22T11:32:56.424870+08:00 boston kernel: usbcore: registered new device driver usb
2011-01-22T11:32:56.424872+08:00 boston kernel: Advanced Linux Sound Architecture Driver Version 1.0.23.
2011-01-22T11:32:56.424873+08:00 boston kernel: PCI: Using ACPI for IRQ routing
2011-01-22T11:32:56.424875+08:00 boston kernel: PCI: pci_cache_line_size set to 64 bytes
2011-01-22T11:32:56.424876+08:00 boston kernel: reserve RAM buffer: 000000000009e800 - 000000000009ffff 
2011-01-22T11:32:56.424877+08:00 boston kernel: reserve RAM buffer: 00000000bb27c000 - 00000000bbffffff 
2011-01-22T11:32:56.424879+08:00 boston kernel: reserve RAM buffer: 00000000bb35f000 - 00000000bbffffff 
2011-01-22T11:32:56.424880+08:00 boston kernel: reserve RAM buffer: 00000000bb46f000 - 00000000bbffffff 
2011-01-22T11:32:56.424881+08:00 boston kernel: reserve RAM buffer: 00000000bb717000 - 00000000bbffffff 
2011-01-22T11:32:56.424883+08:00 boston kernel: reserve RAM buffer: 00000000bb76b000 - 00000000bbffffff 
2011-01-22T11:32:56.424884+08:00 boston kernel: reserve RAM buffer: 00000000bb800000 - 00000000bbffffff 
2011-01-22T11:32:56.424886+08:00 boston kernel: Switching to clocksource hpet
2011-01-22T11:32:56.424887+08:00 boston kernel: pnp: PnP ACPI init
2011-01-22T11:32:56.424888+08:00 boston kernel: ACPI: bus type pnp registered
2011-01-22T11:32:56.424889+08:00 boston kernel: pnp 00:00: [mem 0x00000000-0x0009ffff]
2011-01-22T11:32:56.424891+08:00 boston kernel: pnp 00:00: [mem 0x000c0000-0x000c3fff]
2011-01-22T11:32:56.424894+08:00 boston kernel: pnp 00:00: [mem 0x000c4000-0x000c7fff]
2011-01-22T11:32:56.424896+08:00 boston kernel: pnp 00:00: [mem 0x000c8000-0x000cbfff]
2011-01-22T11:32:56.424899+08:00 boston kernel: pnp 00:00: [mem 0x000cc000-0x000cffff]
2011-01-22T11:32:56.424901+08:00 boston kernel: pnp 00:00: [mem 0x000d0000-0x000cffff disabled]
2011-01-22T11:32:56.424904+08:00 boston kernel: pnp 00:00: [mem 0x000d4000-0x000d3fff disabled]
2011-01-22T11:32:56.424906+08:00 boston kernel: pnp 00:00: [mem 0x000d8000-0x000d7fff disabled]
2011-01-22T11:32:56.424909+08:00 boston kernel: pnp 00:00: [mem 0x000dc000-0x000dffff]
2011-01-22T11:32:56.424911+08:00 boston kernel: pnp 00:00: [mem 0x000e0000-0x000e3fff]
2011-01-22T11:32:56.424914+08:00 boston kernel: pnp 00:00: [mem 0x000e4000-0x000e7fff]
2011-01-22T11:32:56.424916+08:00 boston kernel: pnp 00:00: [mem 0x000e8000-0x000ebfff]
2011-01-22T11:32:56.424919+08:00 boston kernel: pnp 00:00: [mem 0x000ec000-0x000effff]
2011-01-22T11:32:56.424921+08:00 boston kernel: pnp 00:00: [mem 0x000f0000-0x000fffff]
2011-01-22T11:32:56.424924+08:00 boston kernel: pnp 00:00: [mem 0x00100000-0xbfffffff]
2011-01-22T11:32:56.424926+08:00 boston kernel: pnp 00:00: [mem 0xfec00000-0xfed3ffff]
2011-01-22T11:32:56.424929+08:00 boston kernel: pnp 00:00: [mem 0xfed4c000-0xffffffff]
2011-01-22T11:32:56.424932+08:00 boston kernel: system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
2011-01-22T11:32:56.424935+08:00 boston kernel: system 00:00: [mem 0x000c0000-0x000c3fff] has been reserved
2011-01-22T11:32:56.424953+08:00 boston kernel: system 00:00: [mem 0x000c4000-0x000c7fff] has been reserved
2011-01-22T11:32:56.424956+08:00 boston kernel: system 00:00: [mem 0x000c8000-0x000cbfff] has been reserved
2011-01-22T11:32:56.424959+08:00 boston kernel: system 00:00: [mem 0x000cc000-0x000cffff] has been reserved
2011-01-22T11:32:56.424962+08:00 boston kernel: system 00:00: [mem 0x000dc000-0x000dffff] could not be reserved
2011-01-22T11:32:56.424965+08:00 boston kernel: system 00:00: [mem 0x000e0000-0x000e3fff] could not be reserved
2011-01-22T11:32:56.424968+08:00 boston kernel: system 00:00: [mem 0x000e4000-0x000e7fff] could not be reserved
2011-01-22T11:32:56.424970+08:00 boston kernel: system 00:00: [mem 0x000e8000-0x000ebfff] could not be reserved
2011-01-22T11:32:56.424973+08:00 boston kernel: system 00:00: [mem 0x000ec000-0x000effff] could not be reserved
2011-01-22T11:32:56.424976+08:00 boston kernel: system 00:00: [mem 0x000f0000-0x000fffff] could not be reserved
2011-01-22T11:32:56.424979+08:00 boston kernel: system 00:00: [mem 0x00100000-0xbfffffff] could not be reserved
2011-01-22T11:32:56.424982+08:00 boston kernel: system 00:00: [mem 0xfec00000-0xfed3ffff] could not be reserved
2011-01-22T11:32:56.424985+08:00 boston kernel: system 00:00: [mem 0xfed4c000-0xffffffff] could not be reserved
2011-01-22T11:32:56.424987+08:00 boston kernel: system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
2011-01-22T11:32:56.424989+08:00 boston kernel: pnp 00:01: [bus ff]
2011-01-22T11:32:56.424992+08:00 boston kernel: pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active)
2011-01-22T11:32:56.424995+08:00 boston kernel: pnp 00:02: [bus 00-fe]
2011-01-22T11:32:56.425134+08:00 boston kernel: pnp 00:02: [io  0x0cf8-0x0cff]
2011-01-22T11:32:56.425138+08:00 boston kernel: pnp 00:02: [io  0x0000-0x0cf7 window]
2011-01-22T11:32:56.425139+08:00 boston kernel: pnp 00:02: [io  0x0d00-0xffff window]
2011-01-22T11:32:56.425141+08:00 boston kernel: pnp 00:02: [mem 0x000a0000-0x000bffff window]
2011-01-22T11:32:56.425142+08:00 boston kernel: pnp 00:02: [mem 0x000c0000-0x000c3fff window]
2011-01-22T11:32:56.425144+08:00 boston kernel: pnp 00:02: [mem 0x000c4000-0x000c7fff window]
2011-01-22T11:32:56.425145+08:00 boston kernel: pnp 00:02: [mem 0x000c8000-0x000cbfff window]
2011-01-22T11:32:56.425146+08:00 boston kernel: pnp 00:02: [mem 0x000cc000-0x000cffff window]
2011-01-22T11:32:56.425148+08:00 boston kernel: pnp 00:02: [mem 0x000d0000-0x000d3fff window]
2011-01-22T11:32:56.425149+08:00 boston kernel: pnp 00:02: [mem 0x000d4000-0x000d7fff window]
2011-01-22T11:32:56.425150+08:00 boston kernel: pnp 00:02: [mem 0x000d8000-0x000dbfff window]
2011-01-22T11:32:56.425152+08:00 boston kernel: pnp 00:02: [mem 0x000dc000-0x000dffff window]
2011-01-22T11:32:56.425153+08:00 boston kernel: pnp 00:02: [mem 0x000e0000-0x000e3fff window]
2011-01-22T11:32:56.425154+08:00 boston kernel: pnp 00:02: [mem 0x000e4000-0x000e7fff window]
2011-01-22T11:32:56.425156+08:00 boston kernel: pnp 00:02: [mem 0x000e8000-0x000ebfff window]
2011-01-22T11:32:56.425157+08:00 boston kernel: pnp 00:02: [mem 0x000ec000-0x000effff window]
2011-01-22T11:32:56.425159+08:00 boston kernel: pnp 00:02: [mem 0xc0000000-0xfebfffff window]
2011-01-22T11:32:56.425160+08:00 boston kernel: pnp 00:02: [mem 0xfed40000-0xfed4bfff window]
2011-01-22T11:32:56.425162+08:00 boston kernel: pnp 00:02: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active)
2011-01-22T11:32:56.425163+08:00 boston kernel: pnp 00:03: [io  0x0010-0x001f]
2011-01-22T11:32:56.425164+08:00 boston kernel: pnp 00:03: [io  0x0090-0x009f]
2011-01-22T11:32:56.425165+08:00 boston kernel: pnp 00:03: [io  0x0024-0x0025]
2011-01-22T11:32:56.425167+08:00 boston kernel: pnp 00:03: [io  0x0028-0x0029]
2011-01-22T11:32:56.425168+08:00 boston kernel: pnp 00:03: [io  0x002c-0x002d]
2011-01-22T11:32:56.425169+08:00 boston kernel: pnp 00:03: [io  0x0030-0x0031]
2011-01-22T11:32:56.425171+08:00 boston kernel: pnp 00:03: [io  0x0034-0x0035]
2011-01-22T11:32:56.425172+08:00 boston kernel: pnp 00:03: [io  0x0038-0x0039]
2011-01-22T11:32:56.425173+08:00 boston kernel: pnp 00:03: [io  0x003c-0x003d]
2011-01-22T11:32:56.425174+08:00 boston kernel: pnp 00:03: [io  0x00a4-0x00a5]
2011-01-22T11:32:56.425176+08:00 boston kernel: pnp 00:03: [io  0x00a8-0x00a9]
2011-01-22T11:32:56.425177+08:00 boston kernel: pnp 00:03: [io  0x00ac-0x00ad]
2011-01-22T11:32:56.425179+08:00 boston kernel: pnp 00:03: [io  0x00b0-0x00b5]
2011-01-22T11:32:56.425190+08:00 boston kernel: pnp 00:03: [io  0x00b8-0x00b9]
2011-01-22T11:32:56.425192+08:00 boston kernel: pnp 00:03: [io  0x00bc-0x00bd]
2011-01-22T11:32:56.425194+08:00 boston kernel: pnp 00:03: [io  0x0050-0x0053]
2011-01-22T11:32:56.425195+08:00 boston kernel: pnp 00:03: [io  0x0072-0x0077]
2011-01-22T11:32:56.425197+08:00 boston kernel: pnp 00:03: [io  0x164e-0x164f]
2011-01-22T11:32:56.425198+08:00 boston kernel: pnp 00:03: [io  0x002e-0x002f]
2011-01-22T11:32:56.425199+08:00 boston kernel: pnp 00:03: [io  0x1000-0x107f]
2011-01-22T11:32:56.425201+08:00 boston kernel: pnp 00:03: [io  0x1180-0x11ff]
2011-01-22T11:32:56.425202+08:00 boston kernel: pnp 00:03: [io  0x0800-0x080f]
2011-01-22T11:32:56.425203+08:00 boston kernel: pnp 00:03: [io  0x15e0-0x15ef]
2011-01-22T11:32:56.425205+08:00 boston kernel: pnp 00:03: [io  0x1600-0x1641]
2011-01-22T11:32:56.425206+08:00 boston kernel: pnp 00:03: [io  0x1644-0x167f]
2011-01-22T11:32:56.425207+08:00 boston kernel: pnp 00:03: [mem 0xe0000000-0xefffffff]
2011-01-22T11:32:56.425209+08:00 boston kernel: pnp 00:03: [mem 0xfeaff000-0xfeafffff]
2011-01-22T11:32:56.425210+08:00 boston kernel: pnp 00:03: [mem 0xfed1c000-0xfed1ffff]
2011-01-22T11:32:56.425211+08:00 boston kernel: pnp 00:03: [mem 0xfed10000-0xfed13fff]
2011-01-22T11:32:56.425213+08:00 boston kernel: pnp 00:03: [mem 0xfed18000-0xfed18fff]
2011-01-22T11:32:56.425214+08:00 boston kernel: pnp 00:03: [mem 0xfed19000-0xfed19fff]
2011-01-22T11:32:56.425215+08:00 boston kernel: pnp 00:03: [mem 0xfed45000-0xfed4bfff]
2011-01-22T11:32:56.425217+08:00 boston kernel: system 00:03: [io  0x164e-0x164f] has been reserved
2011-01-22T11:32:56.425218+08:00 boston kernel: system 00:03: [io  0x1000-0x107f] has been reserved
2011-01-22T11:32:56.425220+08:00 boston kernel: system 00:03: [io  0x1180-0x11ff] has been reserved
2011-01-22T11:32:56.425221+08:00 boston kernel: system 00:03: [io  0x0800-0x080f] has been reserved
2011-01-22T11:32:56.425223+08:00 boston kernel: system 00:03: [io  0x15e0-0x15ef] has been reserved
2011-01-22T11:32:56.425224+08:00 boston kernel: system 00:03: [io  0x1600-0x1641] has been reserved
2011-01-22T11:32:56.425226+08:00 boston kernel: system 00:03: [io  0x1644-0x167f] could not be reserved
2011-01-22T11:32:56.425227+08:00 boston kernel: system 00:03: [mem 0xe0000000-0xefffffff] has been reserved
2011-01-22T11:32:56.425229+08:00 boston kernel: system 00:03: [mem 0xfeaff000-0xfeafffff] has been reserved
2011-01-22T11:32:56.425230+08:00 boston kernel: system 00:03: [mem 0xfed1c000-0xfed1ffff] has been reserved
2011-01-22T11:32:56.425232+08:00 boston kernel: system 00:03: [mem 0xfed10000-0xfed13fff] has been reserved
2011-01-22T11:32:56.425233+08:00 boston kernel: system 00:03: [mem 0xfed18000-0xfed18fff] has been reserved
2011-01-22T11:32:56.425235+08:00 boston kernel: system 00:03: [mem 0xfed19000-0xfed19fff] has been reserved
2011-01-22T11:32:56.425237+08:00 boston kernel: system 00:03: [mem 0xfed45000-0xfed4bfff] has been reserved
2011-01-22T11:32:56.425238+08:00 boston kernel: system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
2011-01-22T11:32:56.425239+08:00 boston kernel: pnp 00:04: [mem 0xfed00000-0xfed003ff]
2011-01-22T11:32:56.425241+08:00 boston kernel: pnp 00:04: Plug and Play ACPI device, IDs PNP0103 (active)
2011-01-22T11:32:56.425242+08:00 boston kernel: pnp 00:05: [io  0x0000-0x000f]
2011-01-22T11:32:56.425243+08:00 boston kernel: pnp 00:05: [io  0x0080-0x008f]
2011-01-22T11:32:56.425245+08:00 boston kernel: pnp 00:05: [io  0x00c0-0x00df]
2011-01-22T11:32:56.425246+08:00 boston kernel: pnp 00:05: [dma 4]
2011-01-22T11:32:56.425247+08:00 boston kernel: pnp 00:05: Plug and Play ACPI device, IDs PNP0200 (active)
2011-01-22T11:32:56.425249+08:00 boston kernel: pnp 00:06: [io  0x0061]
2011-01-22T11:32:56.425250+08:00 boston kernel: pnp 00:06: Plug and Play ACPI device, IDs PNP0800 (active)
2011-01-22T11:32:56.425251+08:00 boston kernel: pnp 00:07: [io  0x00f0]
2011-01-22T11:32:56.425253+08:00 boston kernel: pnp 00:07: [irq 13]
2011-01-22T11:32:56.425254+08:00 boston kernel: pnp 00:07: Plug and Play ACPI device, IDs PNP0c04 (active)
2011-01-22T11:32:56.425255+08:00 boston kernel: pnp 00:08: [io  0x0070-0x0071]
2011-01-22T11:32:56.425256+08:00 boston kernel: pnp 00:08: [irq 8]
2011-01-22T11:32:56.425258+08:00 boston kernel: pnp 00:08: Plug and Play ACPI device, IDs PNP0b00 (active)
2011-01-22T11:32:56.425269+08:00 boston kernel: pnp 00:09: [io  0x0060]
2011-01-22T11:32:56.425271+08:00 boston kernel: pnp 00:09: [io  0x0064]
2011-01-22T11:32:56.425273+08:00 boston kernel: pnp 00:09: [irq 1]
2011-01-22T11:32:56.425274+08:00 boston kernel: pnp 00:09: Plug and Play ACPI device, IDs PNP0303 (active)
2011-01-22T11:32:56.425276+08:00 boston kernel: pnp 00:0a: [irq 12]
2011-01-22T11:32:56.425277+08:00 boston kernel: pnp 00:0a: Plug and Play ACPI device, IDs LEN0018 PNP0f13 (active)
2011-01-22T11:32:56.425278+08:00 boston kernel: pnp 00:0b: [mem 0xfed40000-0xfed44fff]
2011-01-22T11:32:56.425280+08:00 boston kernel: pnp 00:0b: Plug and Play ACPI device, IDs SMO1200 PNP0c31 (active)
2011-01-22T11:32:56.425281+08:00 boston kernel: pnp: PnP ACPI: found 12 devices
2011-01-22T11:32:56.425283+08:00 boston kernel: ACPI: ACPI bus type pnp unregistered
2011-01-22T11:32:56.425284+08:00 boston kernel: pci 0000:00:1c.0: PCI bridge to [bus 0d-0d]
2011-01-22T11:32:56.425286+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [io  disabled]
2011-01-22T11:32:56.425422+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [mem disabled]
2011-01-22T11:32:56.425426+08:00 boston kernel: pci 0000:00:1c.0:   bridge window [mem pref disabled]
2011-01-22T11:32:56.425427+08:00 boston kernel: pci 0000:00:1c.3: PCI bridge to [bus 05-0c]
2011-01-22T11:32:56.425429+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
2011-01-22T11:32:56.425431+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [mem 0xf0000000-0xf1ffffff]
2011-01-22T11:32:56.425432+08:00 boston kernel: pci 0000:00:1c.3:   bridge window [mem 0xf2800000-0xf28fffff 64bit pref]
2011-01-22T11:32:56.425433+08:00 boston kernel: pci 0000:00:1c.4: PCI bridge to [bus 02-02]
2011-01-22T11:32:56.425435+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [io  disabled]
2011-01-22T11:32:56.425436+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [mem 0xf2400000-0xf24fffff]
2011-01-22T11:32:56.425438+08:00 boston kernel: pci 0000:00:1c.4:   bridge window [mem pref disabled]
2011-01-22T11:32:56.425439+08:00 boston kernel: pci 0000:00:1e.0: PCI bridge to [bus 0e-0e]
2011-01-22T11:32:56.425441+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [io  disabled]
2011-01-22T11:32:56.425442+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem disabled]
2011-01-22T11:32:56.425444+08:00 boston kernel: pci 0000:00:1e.0:   bridge window [mem pref disabled]
2011-01-22T11:32:56.425445+08:00 boston kernel: pci 0000:00:1c.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
2011-01-22T11:32:56.425446+08:00 boston kernel: pci 0000:00:1c.0: setting latency timer to 64
2011-01-22T11:32:56.425448+08:00 boston kernel: pci 0000:00:1c.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23
2011-01-22T11:32:56.425449+08:00 boston kernel: pci 0000:00:1c.3: setting latency timer to 64
2011-01-22T11:32:56.425450+08:00 boston kernel: pci 0000:00:1c.4: PCI INT A -> GSI 20 (level, low) -> IRQ 20
2011-01-22T11:32:56.425452+08:00 boston kernel: pci 0000:00:1c.4: setting latency timer to 64
2011-01-22T11:32:56.425453+08:00 boston kernel: pci 0000:00:1e.0: setting latency timer to 64
2011-01-22T11:32:56.425454+08:00 boston kernel: pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
2011-01-22T11:32:56.425456+08:00 boston kernel: pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
2011-01-22T11:32:56.425457+08:00 boston kernel: pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
2011-01-22T11:32:56.425459+08:00 boston kernel: pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000d3fff]
2011-01-22T11:32:56.425460+08:00 boston kernel: pci_bus 0000:00: resource 8 [mem 0x000d4000-0x000d7fff]
2011-01-22T11:32:56.425462+08:00 boston kernel: pci_bus 0000:00: resource 9 [mem 0x000d8000-0x000dbfff]
2011-01-22T11:32:56.425463+08:00 boston kernel: pci_bus 0000:00: resource 10 [mem 0xc0000000-0xfebfffff]
2011-01-22T11:32:56.425464+08:00 boston kernel: pci_bus 0000:05: resource 0 [io  0x2000-0x2fff]
2011-01-22T11:32:56.425466+08:00 boston kernel: pci_bus 0000:05: resource 1 [mem 0xf0000000-0xf1ffffff]
2011-01-22T11:32:56.425467+08:00 boston kernel: pci_bus 0000:05: resource 2 [mem 0xf2800000-0xf28fffff 64bit pref]
2011-01-22T11:32:56.425469+08:00 boston kernel: pci_bus 0000:02: resource 1 [mem 0xf2400000-0xf24fffff]
2011-01-22T11:32:56.425470+08:00 boston kernel: pci_bus 0000:0e: resource 4 [io  0x0000-0x0cf7]
2011-01-22T11:32:56.425472+08:00 boston kernel: pci_bus 0000:0e: resource 5 [io  0x0d00-0xffff]
2011-01-22T11:32:56.425473+08:00 boston kernel: pci_bus 0000:0e: resource 6 [mem 0x000a0000-0x000bffff]
2011-01-22T11:32:56.425475+08:00 boston kernel: pci_bus 0000:0e: resource 7 [mem 0x000d0000-0x000d3fff]
2011-01-22T11:32:56.425476+08:00 boston kernel: pci_bus 0000:0e: resource 8 [mem 0x000d4000-0x000d7fff]
2011-01-22T11:32:56.425477+08:00 boston kernel: pci_bus 0000:0e: resource 9 [mem 0x000d8000-0x000dbfff]
2011-01-22T11:32:56.425479+08:00 boston kernel: pci_bus 0000:0e: resource 10 [mem 0xc0000000-0xfebfffff]
2011-01-22T11:32:56.425491+08:00 boston kernel: NET: Registered protocol family 2
2011-01-22T11:32:56.425494+08:00 boston kernel: IP route cache hash table entries: 262144 (order: 9, 2097152 bytes)
2011-01-22T11:32:56.425496+08:00 boston kernel: TCP established hash table entries: 524288 (order: 11, 8388608 bytes)
2011-01-22T11:32:56.425497+08:00 boston kernel: TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
2011-01-22T11:32:56.425499+08:00 boston kernel: TCP: Hash tables configured (established 524288 bind 65536)
2011-01-22T11:32:56.425500+08:00 boston kernel: TCP reno registered
2011-01-22T11:32:56.425502+08:00 boston kernel: UDP hash table entries: 4096 (order: 5, 131072 bytes)
2011-01-22T11:32:56.425503+08:00 boston kernel: UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
2011-01-22T11:32:56.425505+08:00 boston kernel: NET: Registered protocol family 1
2011-01-22T11:32:56.425506+08:00 boston kernel: pci 0000:00:02.0: Boot video device
2011-01-22T11:32:56.425507+08:00 boston kernel: PCI: CLS 64 bytes, default 64
2011-01-22T11:32:56.425509+08:00 boston kernel: PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
2011-01-22T11:32:56.425510+08:00 boston kernel: Placing 64MB software IO TLB between ffff8800b6e7a000 - ffff8800bae7a000
2011-01-22T11:32:56.425512+08:00 boston kernel: software IO TLB at phys 0xb6e7a000 - 0xbae7a000
2011-01-22T11:32:56.425513+08:00 boston kernel: Simple Boot Flag at 0x35 set to 0x1
2011-01-22T11:32:56.425514+08:00 boston kernel: NTFS driver 2.1.30 [Flags: R/W].
2011-01-22T11:32:56.425516+08:00 boston kernel: fuse init (API version 7.16)
2011-01-22T11:32:56.425517+08:00 boston kernel: Btrfs loaded
2011-01-22T11:32:56.425518+08:00 boston kernel: msgmni has been set to 15604
2011-01-22T11:32:56.425520+08:00 boston kernel: Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
2011-01-22T11:32:56.425521+08:00 boston kernel: io scheduler noop registered (default)
2011-01-22T11:32:56.425523+08:00 boston kernel: pci_hotplug: PCI Hot Plug PCI Core version: 0.5
2011-01-22T11:32:56.425524+08:00 boston kernel: pciehp: PCI Express Hot Plug Controller Driver version: 0.4
2011-01-22T11:32:56.425526+08:00 boston kernel: acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
2011-01-22T11:32:56.425527+08:00 boston kernel: acpiphp: Slot [1] registered
2011-01-22T11:32:56.425529+08:00 boston kernel: ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
2011-01-22T11:32:56.425530+08:00 boston kernel: ACPI: AC Adapter [AC] (off-line)
2011-01-22T11:32:56.425532+08:00 boston kernel: input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0
2011-01-22T11:32:56.425533+08:00 boston kernel: ACPI: Lid Switch [LID]
2011-01-22T11:32:56.425535+08:00 boston kernel: input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input1
2011-01-22T11:32:56.425536+08:00 boston kernel: ACPI: Sleep Button [SLPB]
2011-01-22T11:32:56.425538+08:00 boston kernel: input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
2011-01-22T11:32:56.425539+08:00 boston kernel: ACPI: Power Button [PWRF]
2011-01-22T11:32:56.425540+08:00 boston kernel: ACPI: acpi_idle registered with cpuidle
2011-01-22T11:32:56.425542+08:00 boston kernel: Monitor-Mwait will be used to enter C-1 state
2011-01-22T11:32:56.425543+08:00 boston kernel: Monitor-Mwait will be used to enter C-2 state
2011-01-22T11:32:56.425545+08:00 boston kernel: Monitor-Mwait will be used to enter C-3 state
2011-01-22T11:32:56.425678+08:00 boston kernel: thermal LNXTHERM:00: registered as thermal_zone0
2011-01-22T11:32:56.425680+08:00 boston kernel: ACPI: Thermal Zone [THM0] (58 C)
2011-01-22T11:32:56.425681+08:00 boston kernel: ERST: Table is not found!
2011-01-22T11:32:56.425682+08:00 boston kernel: GHES: HEST is not enabled!
2011-01-22T11:32:56.425684+08:00 boston kernel: ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
2011-01-22T11:32:56.425686+08:00 boston kernel: ACPI: Battery Slot [BAT0] (battery present)
2011-01-22T11:32:56.425687+08:00 boston kernel: Non-volatile memory driver v1.3
2011-01-22T11:32:56.425688+08:00 boston kernel: Linux agpgart interface v0.103
2011-01-22T11:32:56.425690+08:00 boston kernel: agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset
2011-01-22T11:32:56.425691+08:00 boston kernel: agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable
2011-01-22T11:32:56.425693+08:00 boston kernel: agpgart-intel 0000:00:00.0: detected 32768K stolen memory
2011-01-22T11:32:56.425694+08:00 boston kernel: agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
2011-01-22T11:32:56.425702+08:00 boston kernel: Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
2011-01-22T11:32:56.425704+08:00 boston kernel: Refined TSC clocksource calibration: 2127.999 MHz.
2011-01-22T11:32:56.425705+08:00 boston kernel: Switching to clocksource tsc
2011-01-22T11:32:56.425707+08:00 boston kernel: brd: module loaded
2011-01-22T11:32:56.425708+08:00 boston kernel: loop: module loaded
2011-01-22T11:32:56.425710+08:00 boston kernel: megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST 2006)
2011-01-22T11:32:56.425711+08:00 boston kernel: megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006)
2011-01-22T11:32:56.425713+08:00 boston kernel: megasas: 00.00.05.29-rc1 Tue. Dec. 7 17:00:00 PDT 2010
2011-01-22T11:32:56.425715+08:00 boston kernel: mpt2sas version 07.100.00.00 loaded
2011-01-22T11:32:56.425716+08:00 boston kernel: ahci 0000:00:1f.2: version 3.0
2011-01-22T11:32:56.425717+08:00 boston kernel: ahci 0000:00:1f.2: PCI INT B -> GSI 16 (level, low) -> IRQ 16
2011-01-22T11:32:56.425719+08:00 boston kernel: ahci 0000:00:1f.2: irq 40 for MSI/MSI-X
2011-01-22T11:32:56.425720+08:00 boston kernel: ahci: SSS flag set, parallel bus scan disabled
2011-01-22T11:32:56.425722+08:00 boston kernel: ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x31 impl SATA mode
2011-01-22T11:32:56.425724+08:00 boston kernel: ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ems sxs apst 
2011-01-22T11:32:56.425725+08:00 boston kernel: ahci 0000:00:1f.2: setting latency timer to 64
2011-01-22T11:32:56.425726+08:00 boston kernel: scsi0 : ahci
2011-01-22T11:32:56.425727+08:00 boston kernel: scsi1 : ahci
2011-01-22T11:32:56.425729+08:00 boston kernel: scsi2 : ahci
2011-01-22T11:32:56.425730+08:00 boston kernel: scsi3 : ahci
2011-01-22T11:32:56.425736+08:00 boston kernel: scsi4 : ahci
2011-01-22T11:32:56.425738+08:00 boston kernel: scsi5 : ahci
2011-01-22T11:32:56.425740+08:00 boston kernel: ata1: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727100 irq 40
2011-01-22T11:32:56.425741+08:00 boston kernel: ata2: DUMMY
2011-01-22T11:32:56.425742+08:00 boston kernel: ata3: DUMMY
2011-01-22T11:32:56.425744+08:00 boston kernel: ata4: DUMMY
2011-01-22T11:32:56.425745+08:00 boston kernel: ata5: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727300 irq 40
2011-01-22T11:32:56.425747+08:00 boston kernel: ata6: SATA max UDMA/133 abar m2048@0xf2727000 port 0xf2727380 irq 40
2011-01-22T11:32:56.425748+08:00 boston kernel: Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2
2011-01-22T11:32:56.425750+08:00 boston kernel: Copyright (c) 2007-2009 Intel Corporation.
2011-01-22T11:32:56.425751+08:00 boston kernel: ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 3.0.12-k2
2011-01-22T11:32:56.425753+08:00 boston kernel: ixgbe: Copyright (c) 1999-2010 Intel Corporation.
2011-01-22T11:32:56.425755+08:00 boston kernel: pcnet32: pcnet32.c:v1.35 21.Apr.2008 tsbogend@alpha.franken.de
2011-01-22T11:32:56.425756+08:00 boston kernel: PPP generic driver version 2.4.2
2011-01-22T11:32:56.425757+08:00 boston kernel: PPP Deflate Compression module registered
2011-01-22T11:32:56.425759+08:00 boston kernel: PPP BSD Compression module registered
2011-01-22T11:32:56.425760+08:00 boston kernel: tun: Universal TUN/TAP device driver, 1.6
2011-01-22T11:32:56.425762+08:00 boston kernel: tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
2011-01-22T11:32:56.425763+08:00 boston kernel: Fusion MPT base driver 3.04.17
2011-01-22T11:32:56.425764+08:00 boston kernel: Copyright (c) 1999-2008 LSI Corporation
2011-01-22T11:32:56.425766+08:00 boston kernel: Fusion MPT SPI Host driver 3.04.17
2011-01-22T11:32:56.425767+08:00 boston kernel: Fusion MPT SAS Host driver 3.04.17
2011-01-22T11:32:56.425769+08:00 boston kernel: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
2011-01-22T11:32:56.425770+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:32:56.425772+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:32:56.425773+08:00 boston kernel: ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
2011-01-22T11:32:56.425774+08:00 boston kernel: ehci_hcd 0000:00:1a.0: setting latency timer to 64
2011-01-22T11:32:56.425783+08:00 boston kernel: ehci_hcd 0000:00:1a.0: EHCI Host Controller
2011-01-22T11:32:56.425785+08:00 boston kernel: ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1
2011-01-22T11:32:56.425787+08:00 boston kernel: ehci_hcd 0000:00:1a.0: debug port 2
2011-01-22T11:32:56.425788+08:00 boston kernel: ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported
2011-01-22T11:32:56.425790+08:00 boston kernel: ehci_hcd 0000:00:1a.0: irq 23, io mem 0xf2728000
2011-01-22T11:32:56.425791+08:00 boston kernel: ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00
2011-01-22T11:32:56.425792+08:00 boston kernel: hub 1-0:1.0: USB hub found
2011-01-22T11:32:56.425794+08:00 boston kernel: hub 1-0:1.0: 3 ports detected
2011-01-22T11:32:56.425795+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:32:56.425797+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:32:56.425798+08:00 boston kernel: ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
2011-01-22T11:32:56.425799+08:00 boston kernel: ehci_hcd 0000:00:1d.0: setting latency timer to 64
2011-01-22T11:32:56.425801+08:00 boston kernel: ehci_hcd 0000:00:1d.0: EHCI Host Controller
2011-01-22T11:32:56.425802+08:00 boston kernel: ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
2011-01-22T11:32:56.425804+08:00 boston kernel: ehci_hcd 0000:00:1d.0: debug port 2
2011-01-22T11:32:56.425805+08:00 boston kernel: ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported
2011-01-22T11:32:56.425807+08:00 boston kernel: ehci_hcd 0000:00:1d.0: irq 19, io mem 0xf2728400
2011-01-22T11:32:56.425808+08:00 boston kernel: ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00
2011-01-22T11:32:56.425810+08:00 boston kernel: hub 2-0:1.0: USB hub found
2011-01-22T11:32:56.425811+08:00 boston kernel: hub 2-0:1.0: 3 ports detected
2011-01-22T11:32:56.425812+08:00 boston kernel: ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
2011-01-22T11:32:56.425814+08:00 boston kernel: uhci_hcd: USB Universal Host Controller Interface driver
2011-01-22T11:32:56.425816+08:00 boston kernel: i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
2011-01-22T11:32:56.425817+08:00 boston kernel: serio: i8042 KBD port at 0x60,0x64 irq 1
2011-01-22T11:32:56.425950+08:00 boston kernel: serio: i8042 AUX port at 0x60,0x64 irq 12
2011-01-22T11:32:56.425954+08:00 boston kernel: mousedev: PS/2 mouse device common for all mice
2011-01-22T11:32:56.425955+08:00 boston kernel: input: PC Speaker as /devices/platform/pcspkr/input/input3
2011-01-22T11:32:56.425957+08:00 boston kernel: rtc_cmos 00:08: RTC can wake from S4
2011-01-22T11:32:56.425959+08:00 boston kernel: input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
2011-01-22T11:32:56.425960+08:00 boston kernel: rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0
2011-01-22T11:32:56.425962+08:00 boston kernel: rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
2011-01-22T11:32:56.425964+08:00 boston kernel: lirc_dev: IR Remote Control driver registered, major 251 
2011-01-22T11:32:56.425965+08:00 boston kernel: IR RC5 (streamzap) protocol handler initialized
2011-01-22T11:32:56.425966+08:00 boston kernel: IR LIRC bridge handler initialized
2011-01-22T11:32:56.425968+08:00 boston kernel: Linux video capture interface: v2.00
2011-01-22T11:32:56.425969+08:00 boston kernel: coretemp coretemp.0: TjMax is 105 C.
2011-01-22T11:32:56.425983+08:00 boston kernel: coretemp coretemp.2: TjMax is 105 C.
2011-01-22T11:32:56.425985+08:00 boston kernel: device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com
2011-01-22T11:32:56.425987+08:00 boston kernel: EDAC MC: Ver: 2.1.0 Jan 22 2011
2011-01-22T11:32:56.425988+08:00 boston kernel: cpuidle: using governor ladder
2011-01-22T11:32:56.425989+08:00 boston kernel: cpuidle: using governor menu
2011-01-22T11:32:56.425991+08:00 boston kernel: thinkpad_acpi: ThinkPad ACPI Extras v0.24
2011-01-22T11:32:56.425992+08:00 boston kernel: thinkpad_acpi: http://ibm-acpi.sf.net/
2011-01-22T11:32:56.425994+08:00 boston kernel: thinkpad_acpi: ThinkPad BIOS 6QET62WW (1.32 ), EC 6QHT31WW-1.12
2011-01-22T11:32:56.425995+08:00 boston kernel: thinkpad_acpi: Lenovo ThinkPad X201s, model 5413FGA
2011-01-22T11:32:56.425997+08:00 boston kernel: thinkpad_acpi: detected a 8-level brightness capable ThinkPad
2011-01-22T11:32:56.425998+08:00 boston kernel: thinkpad_acpi: radio switch found; radios are enabled
2011-01-22T11:32:56.426000+08:00 boston kernel: thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
2011-01-22T11:32:56.426002+08:00 boston kernel: thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is blocked
2011-01-22T11:32:56.426004+08:00 boston kernel: Registered led device: tpacpi::thinklight
2011-01-22T11:32:56.426007+08:00 boston kernel: Registered led device: tpacpi::power
2011-01-22T11:32:56.426008+08:00 boston kernel: Registered led device: tpacpi::standby
2011-01-22T11:32:56.426014+08:00 boston kernel: Registered led device: tpacpi::thinkvantage
2011-01-22T11:32:56.426024+08:00 boston kernel: thinkpad_acpi: volume: disabled as there is no ALSA support in this kernel
2011-01-22T11:32:56.426026+08:00 boston kernel: input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input5
2011-01-22T11:32:56.426028+08:00 boston kernel: HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
2011-01-22T11:32:56.426029+08:00 boston kernel: HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
2011-01-22T11:32:56.426031+08:00 boston kernel: HDA Intel 0000:00:1b.0: setting latency timer to 64
2011-01-22T11:32:56.426033+08:00 boston kernel: ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
2011-01-22T11:32:56.426034+08:00 boston kernel: ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
2011-01-22T11:32:56.426036+08:00 boston kernel: ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
2011-01-22T11:32:56.426038+08:00 boston kernel: ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
2011-01-22T11:32:56.426039+08:00 boston kernel: ata1.00: ATA-7: SAMSUNG SSD PM800 2.5" 256GB, VBM25D1Q, max UDMA/100
2011-01-22T11:32:56.426041+08:00 boston kernel: ata1.00: 500118192 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
2011-01-22T11:32:56.426042+08:00 boston kernel: ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
2011-01-22T11:32:56.426044+08:00 boston kernel: ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
2011-01-22T11:32:56.426045+08:00 boston kernel: ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
2011-01-22T11:32:56.426047+08:00 boston kernel: ata1.00: configured for UDMA/100
2011-01-22T11:32:56.426048+08:00 boston kernel: scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG SSD PM80 VBM2 PQ: 0 ANSI: 5
2011-01-22T11:32:56.426050+08:00 boston kernel: sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
2011-01-22T11:32:56.426051+08:00 boston kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
2011-01-22T11:32:56.426053+08:00 boston kernel: sd 0:0:0:0: [sda] Write Protect is off
2011-01-22T11:32:56.426054+08:00 boston kernel: sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
2011-01-22T11:32:56.426056+08:00 boston kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
2011-01-22T11:32:56.426058+08:00 boston kernel: sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 >
2011-01-22T11:32:56.426059+08:00 boston kernel: sd 0:0:0:0: [sda] Attached SCSI disk
2011-01-22T11:32:56.426061+08:00 boston kernel: hda-codec: No codec parser is available
2011-01-22T11:32:56.426062+08:00 boston kernel: ALSA device list:
2011-01-22T11:32:56.426063+08:00 boston kernel:  #0: HDA Intel at 0xf2520000 irq 41
2011-01-22T11:32:56.426065+08:00 boston kernel: Netfilter messages via NETLINK v0.30.
2011-01-22T11:32:56.426066+08:00 boston kernel: nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
2011-01-22T11:32:56.426067+08:00 boston kernel: ctnetlink v0.93: registering with nfnetlink.
2011-01-22T11:32:56.426069+08:00 boston kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
2011-01-22T11:32:56.426070+08:00 boston kernel: arp_tables: (C) 2002 David S. Miller
2011-01-22T11:32:56.426071+08:00 boston kernel: TCP bic registered
2011-01-22T11:32:56.426073+08:00 boston kernel: TCP cubic registered
2011-01-22T11:32:56.426074+08:00 boston kernel: TCP highspeed registered
2011-01-22T11:32:56.426075+08:00 boston kernel: NET: Registered protocol family 17
2011-01-22T11:32:56.426077+08:00 boston kernel: lib80211: common routines for IEEE802.11 drivers
2011-01-22T11:32:56.426078+08:00 boston kernel: lib80211_crypt: registered algorithm 'NULL'
2011-01-22T11:32:56.426080+08:00 boston kernel: rtc_cmos 00:08: setting system clock to 2011-01-22 03:32:54 UTC (1295667174)
2011-01-22T11:32:56.426081+08:00 boston kernel: hub 1-1:1.0: USB hub found
2011-01-22T11:32:56.426082+08:00 boston kernel: hub 1-1:1.0: 6 ports detected
2011-01-22T11:32:56.426084+08:00 boston kernel: ata5: SATA link down (SStatus 0 SControl 300)
2011-01-22T11:32:56.426085+08:00 boston kernel: IBM TrackPoint firmware: 0x0e, buttons: 3/3
2011-01-22T11:32:56.426097+08:00 boston kernel: input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/input/input6
2011-01-22T11:32:56.426099+08:00 boston kernel: hub 2-1:1.0: USB hub found
2011-01-22T11:32:56.426101+08:00 boston kernel: hub 2-1:1.0: 8 ports detected
2011-01-22T11:32:56.426102+08:00 boston kernel: ata6: SATA link down (SStatus 0 SControl 300)
2011-01-22T11:32:56.426104+08:00 boston kernel: VFS: Mounted root (reiserfs filesystem) readonly on device 8:2.
2011-01-22T11:32:56.426106+08:00 boston kernel: Freeing unused kernel memory: 576k freed
2011-01-22T11:32:56.426109+08:00 boston kernel: Adding 8290300k swap on /dev/sda3.  Priority:-1 extents:1 across:8290300k SS
2011-01-22T11:32:56.977043+08:00 boston kernel: [drm] Initialized drm 1.1.0 20060810
2011-01-22T11:32:56.997017+08:00 boston kernel: i915 0000:00:02.0: power state changed by ACPI to D0
2011-01-22T11:32:56.997044+08:00 boston kernel: i915 0000:00:02.0: power state changed by ACPI to D0
2011-01-22T11:32:56.997048+08:00 boston kernel: i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
2011-01-22T11:32:56.997050+08:00 boston kernel: i915 0000:00:02.0: setting latency timer to 64
2011-01-22T11:32:57.087012+08:00 boston kernel: i915 0000:00:02.0: irq 42 for MSI/MSI-X
2011-01-22T11:32:57.087040+08:00 boston kernel: [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
2011-01-22T11:32:57.087045+08:00 boston kernel: [drm] Driver supports precise vblank timestamp query.
2011-01-22T11:32:57.167013+08:00 boston kernel: vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
2011-01-22T11:32:57.257011+08:00 boston kernel: Console: switching to colour frame buffer device 180x56
2011-01-22T11:32:57.257038+08:00 boston kernel: fb0: inteldrmfb frame buffer device
2011-01-22T11:32:57.257055+08:00 boston kernel: drm: registered panic notifier
2011-01-22T11:32:57.257060+08:00 boston kernel: No ACPI video bus found
2011-01-22T11:32:57.257063+08:00 boston kernel: [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
2011-01-22T11:33:17.277019+08:00 boston kernel: PM: Syncing filesystems ... done.
2011-01-22T11:33:28.359021+08:00 boston kernel: Freezing user space processes ... (elapsed 0.01 seconds) done.
2011-01-22T11:33:28.359042+08:00 boston kernel: Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
2011-01-22T11:33:28.359045+08:00 boston kernel: Suspending console(s) (use no_console_suspend to debug)
2011-01-22T11:33:28.359048+08:00 boston kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
2011-01-22T11:33:28.359051+08:00 boston kernel: sd 0:0:0:0: [sda] Stopping disk
2011-01-22T11:33:28.359053+08:00 boston kernel: ehci_hcd 0000:00:1d.0: PCI INT D disabled
2011-01-22T11:33:28.359056+08:00 boston kernel: ehci_hcd 0000:00:1a.0: PCI INT D disabled
2011-01-22T11:33:28.359058+08:00 boston kernel: HDA Intel 0000:00:1b.0: PCI INT B disabled
2011-01-22T11:33:28.359060+08:00 boston kernel: i915 0000:00:02.0: power state changed by ACPI to D3
2011-01-22T11:33:28.359063+08:00 boston kernel: PM: suspend of devices complete after 3089.574 msecs
2011-01-22T11:33:28.359065+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D3
2011-01-22T11:33:28.359067+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D3
2011-01-22T11:33:28.359070+08:00 boston kernel: PM: late suspend of devices complete after 90.108 msecs
2011-01-22T11:33:28.359072+08:00 boston kernel: ACPI: Preparing to enter system sleep state S3
2011-01-22T11:33:28.359074+08:00 boston kernel: PM: Saving platform NVS memory
2011-01-22T11:33:28.359076+08:00 boston kernel: suspend_nvs_save: Trying to map bb78c000, 4096
2011-01-22T11:33:28.359079+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018e8000
2011-01-22T11:33:28.359081+08:00 boston kernel: suspend_nvs_save: Trying to map bb78d000, 4096
2011-01-22T11:33:28.359083+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018c0000
2011-01-22T11:33:28.359086+08:00 boston kernel: suspend_nvs_save: Trying to map bb78e000, 4096
2011-01-22T11:33:28.359088+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018c4000
2011-01-22T11:33:28.359090+08:00 boston kernel: suspend_nvs_save: Trying to map bb78f000, 4096
2011-01-22T11:33:28.359092+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018c8000
2011-01-22T11:33:28.359095+08:00 boston kernel: suspend_nvs_save: Trying to map bb790000, 4096
2011-01-22T11:33:28.359097+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018cc000
2011-01-22T11:33:28.359099+08:00 boston kernel: suspend_nvs_save: Trying to map bb791000, 4096
2011-01-22T11:33:28.359102+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018d0000
2011-01-22T11:33:28.359104+08:00 boston kernel: suspend_nvs_save: Trying to map bb792000, 4096
2011-01-22T11:33:28.359106+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018d4000
2011-01-22T11:33:28.359109+08:00 boston kernel: suspend_nvs_save: Trying to map bb793000, 4096
2011-01-22T11:33:28.359111+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018d8000
2011-01-22T11:33:28.359113+08:00 boston kernel: suspend_nvs_save: Trying to map bb794000, 4096
2011-01-22T11:33:28.359116+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018dc000
2011-01-22T11:33:28.359118+08:00 boston kernel: suspend_nvs_save: Trying to map bb795000, 4096
2011-01-22T11:33:28.359121+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018e0000
2011-01-22T11:33:28.359123+08:00 boston kernel: suspend_nvs_save: Trying to map bb796000, 4096
2011-01-22T11:33:28.359126+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018ec000
2011-01-22T11:33:28.359128+08:00 boston kernel: suspend_nvs_save: Trying to map bb797000, 4096
2011-01-22T11:33:28.359131+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018f0000
2011-01-22T11:33:28.359134+08:00 boston kernel: suspend_nvs_save: Trying to map bb798000, 4096
2011-01-22T11:33:28.359136+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018f4000
2011-01-22T11:33:28.359139+08:00 boston kernel: suspend_nvs_save: Trying to map bb799000, 4096
2011-01-22T11:33:28.359142+08:00 boston kernel: suspend_nvs_save: Using address ffffc900018f8000
2011-01-22T11:33:28.359144+08:00 boston kernel: suspend_nvs_save: Trying to map bb79a000, 4096
2011-01-22T11:33:28.359146+08:00 boston kernel: suspend_nvs_save: Using address ffffc90001bc6000
2011-01-22T11:33:28.359148+08:00 boston kernel: suspend_nvs_save: Trying to map bb79b000, 4096
2011-01-22T11:33:28.359150+08:00 boston kernel: suspend_nvs_save: Using address ffffc90001bca000
2011-01-22T11:33:28.359152+08:00 boston kernel: suspend_nvs_save: Trying to map bb79c000, 4096
2011-01-22T11:33:28.359155+08:00 boston kernel: suspend_nvs_save: Using address ffffc90001bce000
2011-01-22T11:33:28.359157+08:00 boston kernel: suspend_nvs_save: Trying to map bb79d000, 4096
2011-01-22T11:33:28.359161+08:00 boston kernel: suspend_nvs_save: Using address ffffc90001bd2000
2011-01-22T11:33:28.359165+08:00 boston kernel: suspend_nvs_save: Trying to map bb79e000, 4096
2011-01-22T11:33:28.359176+08:00 boston kernel: suspend_nvs_save: Using address ffffc90001bd6000
2011-01-22T11:33:28.359178+08:00 boston kernel: Disabling non-boot CPUs ...
2011-01-22T11:33:28.359180+08:00 boston kernel: CPU 1 is now offline
2011-01-22T11:33:28.359183+08:00 boston kernel: CPU 2 is now offline
2011-01-22T11:33:28.359185+08:00 boston kernel: CPU 3 is now offline
2011-01-22T11:33:28.359188+08:00 boston kernel: Extended CMOS year: 2000
2011-01-22T11:33:28.359190+08:00 boston kernel: Back to C!
2011-01-22T11:33:28.359192+08:00 boston kernel: PM: Restoring platform NVS memory
2011-01-22T11:33:28.359194+08:00 boston kernel: Extended CMOS year: 2000
2011-01-22T11:33:28.359196+08:00 boston kernel: Enabling non-boot CPUs ...
2011-01-22T11:33:28.359198+08:00 boston kernel: Booting Node 0 Processor 1 APIC 0x1
2011-01-22T11:33:28.359200+08:00 boston kernel: CPU1 is up
2011-01-22T11:33:28.359202+08:00 boston kernel: Booting Node 0 Processor 2 APIC 0x4
2011-01-22T11:33:28.359204+08:00 boston kernel: CPU2 is up
2011-01-22T11:33:28.359206+08:00 boston kernel: Booting Node 0 Processor 3 APIC 0x5
2011-01-22T11:33:28.359207+08:00 boston kernel: CPU3 is up
2011-01-22T11:33:28.359210+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018e8000
2011-01-22T11:33:28.359212+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018c0000
2011-01-22T11:33:28.359214+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018c4000
2011-01-22T11:33:28.359216+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018c8000
2011-01-22T11:33:28.359218+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018cc000
2011-01-22T11:33:28.359219+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018d0000
2011-01-22T11:33:28.359222+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018d4000
2011-01-22T11:33:28.359224+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018d8000
2011-01-22T11:33:28.359226+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018dc000
2011-01-22T11:33:28.359229+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018e0000
2011-01-22T11:33:28.359232+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018ec000
2011-01-22T11:33:28.359234+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018f0000
2011-01-22T11:33:28.359237+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018f4000
2011-01-22T11:33:28.359239+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc900018f8000
2011-01-22T11:33:28.359241+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc90001bc6000
2011-01-22T11:33:28.359244+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc90001bca000
2011-01-22T11:33:28.359246+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc90001bce000
2011-01-22T11:33:28.359248+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc90001bd2000
2011-01-22T11:33:28.359250+08:00 boston kernel: suspend_nvs_free: Unmapping ffffc90001bd6000
2011-01-22T11:33:28.359252+08:00 boston kernel: ACPI: Waking up from system sleep state S3
2011-01-22T11:33:28.359386+08:00 boston kernel: agpgart-intel 0000:00:00.0: restoring config space at offset 0x1 (was 0x900006, writing 0x20900006)
2011-01-22T11:33:28.359398+08:00 boston kernel: i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
2011-01-22T11:33:28.359402+08:00 boston kernel: ehci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
2011-01-22T11:33:28.359405+08:00 boston kernel: ehci_hcd 0000:00:1a.0: restoring config space at offset 0x4 (was 0x0, writing 0xf2728000)
2011-01-22T11:33:28.359408+08:00 boston kernel: ehci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
2011-01-22T11:33:28.359411+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359413+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359416+08:00 boston kernel: pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0xf0, writing 0x200000f0)
2011-01-22T11:33:28.359420+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0xf (was 0x100, writing 0x4010b)
2011-01-22T11:33:28.359423+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
2011-01-22T11:33:28.359426+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0x8 (was 0x0, writing 0xf240f240)
2011-01-22T11:33:28.359429+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0x7 (was 0x0, writing 0x200000f0)
2011-01-22T11:33:28.359432+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0x3 (was 0x810000, writing 0x810010)
2011-01-22T11:33:28.359435+08:00 boston kernel: pcieport 0000:00:1c.4: restoring config space at offset 0x1 (was 0x100000, writing 0x100107)
2011-01-22T11:33:28.359438+08:00 boston kernel: ehci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x400, writing 0x40b)
2011-01-22T11:33:28.359441+08:00 boston kernel: ehci_hcd 0000:00:1d.0: restoring config space at offset 0x4 (was 0x0, writing 0xf2728400)
2011-01-22T11:33:28.359445+08:00 boston kernel: ehci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900102)
2011-01-22T11:33:28.359447+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359450+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359453+08:00 boston kernel: ahci 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00007, writing 0x2b00407)
2011-01-22T11:33:28.359456+08:00 boston kernel: pci 0000:00:1f.6: restoring config space at offset 0xf (was 0x400, writing 0x40b)
2011-01-22T11:33:28.359459+08:00 boston kernel: pci 0000:00:1f.6: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
2011-01-22T11:33:28.359462+08:00 boston kernel: PM: early resume of devices complete after 50.797 msecs
2011-01-22T11:33:28.359465+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359467+08:00 boston kernel: ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359470+08:00 boston kernel: i915 0000:00:02.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359472+08:00 boston kernel: ehci_hcd 0000:00:1a.0: PCI INT D -> GSI 23 (level, low) -> IRQ 23
2011-01-22T11:33:28.359475+08:00 boston kernel: i915 0000:00:02.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359478+08:00 boston kernel: ehci_hcd 0000:00:1a.0: setting latency timer to 64
2011-01-22T11:33:28.359480+08:00 boston kernel: i915 0000:00:02.0: setting latency timer to 64
2011-01-22T11:33:28.359483+08:00 boston kernel: HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
2011-01-22T11:33:28.359486+08:00 boston kernel: HDA Intel 0000:00:1b.0: setting latency timer to 64
2011-01-22T11:33:28.359488+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359491+08:00 boston kernel: ehci_hcd 0000:00:1d.0: power state changed by ACPI to D0
2011-01-22T11:33:28.359494+08:00 boston kernel: ehci_hcd 0000:00:1d.0: PCI INT D -> GSI 19 (level, low) -> IRQ 19
2011-01-22T11:33:28.359508+08:00 boston kernel: ehci_hcd 0000:00:1d.0: setting latency timer to 64
2011-01-22T11:33:28.359512+08:00 boston kernel: pci 0000:00:1e.0: setting latency timer to 64
2011-01-22T11:33:28.359515+08:00 boston kernel: ahci 0000:00:1f.2: setting latency timer to 64
2011-01-22T11:33:28.359517+08:00 boston kernel: HDA Intel 0000:00:1b.0: irq 41 for MSI/MSI-X
2011-01-22T11:33:28.359520+08:00 boston kernel: sd 0:0:0:0: [sda] Starting disk
2011-01-22T11:33:28.359523+08:00 boston kernel: ioremap error for 0xbb77e000-0xbb781000, requested 0x10, got 0x0
2011-01-22T11:33:28.359525+08:00 boston kernel: ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
2011-01-22T11:33:28.359528+08:00 boston kernel: ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
2011-01-22T11:33:28.359530+08:00 boston kernel: ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
2011-01-22T11:33:28.359533+08:00 boston kernel: ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
2011-01-22T11:33:28.359536+08:00 boston kernel: ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (unknown) succeeded
2011-01-22T11:33:28.359538+08:00 boston kernel: ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
2011-01-22T11:33:28.359541+08:00 boston kernel: ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (unknown) filtered out
2011-01-22T11:33:28.359543+08:00 boston kernel: ata1.00: configured for UDMA/100
2011-01-22T11:33:28.359546+08:00 boston kernel: ata6: SATA link down (SStatus 0 SControl 300)
2011-01-22T11:33:28.359548+08:00 boston kernel: ata5: SATA link down (SStatus 0 SControl 300)
2011-01-22T11:33:28.359551+08:00 boston kernel: PM: resume of devices complete after 407.564 msecs
2011-01-22T11:33:28.359553+08:00 boston kernel: Restarting tasks ... done.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22  5:54             ` Jeff Chua
  2011-01-22  5:58               ` Jeff Chua
@ 2011-01-22  9:13               ` Rafael J. Wysocki
  2011-01-23 18:20                 ` Henrique de Moraes Holschuh
  1 sibling, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-22  9:13 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett, Henrique de Moraes Holschuh,
	platform-driver-x86

On Saturday, January 22, 2011, Jeff Chua wrote:
> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> > On Friday, January 21, 2011, Jeff Chua wrote:
> >> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
> >> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
> >> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> > So, below is a replacement for [11/11].  Please test it on top of
> > [1/11] - [10/11] (the current Linus' tree already contains [1/11] and [2/11])
> > and let me know if it works for you (in either case, please attach dmesg
> > output containing a suspend attempt).
> >
> > If it works, I'll remove the diagnostic messages and submit along with the
> > rest of the patchset.
> 
> Rafael,
> 
> dmesg attached. This time, it worked!

Great, thanks a lot!

> I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> the thinkpad acpi is trying acquire locks while suspending.  Disabling
> cmos, light, led and hotkeys makes suspend-to-disk works again.

Well, we should tell the thinkpad_acpi maintainer about that, then (CCed).

It also would be good to file a Bugzilla report about that, if poss.

Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22  5:58               ` Jeff Chua
@ 2011-01-22  9:25                 ` Rafael J. Wysocki
  2011-01-22 17:24                   ` Jeff Chua
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-22  9:25 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Saturday, January 22, 2011, Jeff Chua wrote:
> On Sat, Jan 22, 2011 at 1:54 PM, Jeff Chua <jeff.chua.linux@gmail.com> wrote:
> > 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> >> On Friday, January 21, 2011, Jeff Chua wrote:
> >>> 2011/1/21 Rafael J. Wysocki <rjw@sisk.pl>:
> >>> > Thanks, but unfortunately this wasn't conclusive.  Please apply the patch below
> >>> > instead of the previous one (on top of [1/11] - [11/11]) and collect dmesg
> >> So, below is a replacement for [11/11].  Please test it on top of
> >> [1/11] - [10/11] (the current Linus' tree already contains [1/11] and [2/11])
> >> and let me know if it works for you (in either case, please attach dmesg
> >> output containing a suspend attempt).
> >>
> >> If it works, I'll remove the diagnostic messages and submit along with the
> >> rest of the patchset.
> >
> > Rafael,
> >
> > dmesg attached. This time, it worked!
> >
> > I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> > need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> > the thinkpad acpi is trying acquire locks while suspending.  Disabling
> > cmos, light, led and hotkeys makes suspend-to-disk works again.
> 
> Here's the dmesg.

Thanks!

Well, and this:

Brought up 4 CPUs
2011-01-22T11:32:56.424328+08:00 boston kernel: Total of 4 processors activated (17023.83 BogoMIPS).
2011-01-22T11:32:56.424329+08:00 boston kernel: PM: Registering ACPI NVS region at bb371000 (528384 bytes)
2011-01-22T11:32:56.424332+08:00 boston kernel: PM: Registering ACPI NVS region at bb668000 (524288 bytes)
2011-01-22T11:32:56.424334+08:00 boston kernel: PM: Registering ACPI NVS region at bb76b000 (49152 bytes)
2011-01-22T11:32:56.424335+08:00 boston kernel: PM: Registering ACPI NVS region at bb77a000 (28672 bytes)
2011-01-22T11:32:56.424337+08:00 boston kernel: PM: Registering ACPI NVS region at bb782000 (36864 bytes)
2011-01-22T11:32:56.424338+08:00 boston kernel: PM: Registering ACPI NVS region at bb78c000 (77824 bytes)
2011-01-22T11:32:56.424339+08:00 boston kernel: NET: Registered protocol family 16

means that my patch [11/11] _and_ the replacement are totally wrong, because you have
_multiple_ NVS regions.  That really helped, thanks a lot.

Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22  9:25                 ` Rafael J. Wysocki
@ 2011-01-22 17:24                   ` Jeff Chua
  2011-01-22 19:12                     ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-22 17:24 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> On Saturday, January 22, 2011, Jeff Chua wrote:

> means that my patch [11/11] _and_ the replacement are totally wrong, because you have
> _multiple_ NVS regions.  That really helped, thanks a lot.

Would it be different if I offline all CPUs before suspending to ram?
It seems to help with suspending to disk.

Thanks,
Jeff

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22 17:24                   ` Jeff Chua
@ 2011-01-22 19:12                     ` Rafael J. Wysocki
  2011-01-23  0:14                       ` Jeff Chua
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-22 19:12 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Saturday, January 22, 2011, Jeff Chua wrote:
> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> > On Saturday, January 22, 2011, Jeff Chua wrote:
> 
> > means that my patch [11/11] _and_ the replacement are totally wrong, because you have
> > _multiple_ NVS regions.  That really helped, thanks a lot.
> 
> Would it be different if I offline all CPUs before suspending to ram?
> It seems to help with suspending to disk.

No, that doesn't matter.  NVS regions are just sitting there regardless of
what happens at run time.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22 19:12                     ` Rafael J. Wysocki
@ 2011-01-23  0:14                       ` Jeff Chua
  2011-01-23 20:28                         ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-23  0:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Sun, Jan 23, 2011 at 3:12 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Saturday, January 22, 2011, Jeff Chua wrote:
>> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
>> > On Saturday, January 22, 2011, Jeff Chua wrote:
>>
>> > means that my patch [11/11] _and_ the replacement are totally wrong, because you have
>> > _multiple_ NVS regions.  That really helped, thanks a lot.
>>
>> Would it be different if I offline all CPUs before suspending to ram?
>> It seems to help with suspending to disk.
>
> No, that doesn't matter.  NVS regions are just sitting there regardless of
> what happens at run time.

Strange. If I didn't offline, it hanged during suspend even without
thinkpad_acpi. I could see that the suspend code does the offline
automatically, but executing the offline before calling suspend makes
it no hanging.

Jeff

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-22  9:13               ` Rafael J. Wysocki
@ 2011-01-23 18:20                 ` Henrique de Moraes Holschuh
  2011-01-23 20:35                   ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Henrique de Moraes Holschuh @ 2011-01-23 18:20 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jeff Chua, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett,
	Henrique de Moraes Holschuh, platform-driver-x86

On Sat, 22 Jan 2011, Rafael J. Wysocki wrote:
> > I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> > need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> > the thinkpad acpi is trying acquire locks while suspending.  Disabling
> > cmos, light, led and hotkeys makes suspend-to-disk works again.
> 
> Well, we should tell the thinkpad_acpi maintainer about that, then (CCed).

What are the requirements re. mutexes for sleep-to-disk versus sleep-to-ram?

Did something change in that area that caused the driver to hang?  A pointer
to the ML threads, documentation, or patchset/git commit with those changes
would be enough answer, and I will pursue it from there.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-23  0:14                       ` Jeff Chua
@ 2011-01-23 20:28                         ` Rafael J. Wysocki
  2011-01-24  1:13                           ` Jeff Chua
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-23 20:28 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Sunday, January 23, 2011, Jeff Chua wrote:
> On Sun, Jan 23, 2011 at 3:12 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Saturday, January 22, 2011, Jeff Chua wrote:
> >> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> >> > On Saturday, January 22, 2011, Jeff Chua wrote:
> >>
> >> > means that my patch [11/11] _and_ the replacement are totally wrong, because you have
> >> > _multiple_ NVS regions.  That really helped, thanks a lot.
> >>
> >> Would it be different if I offline all CPUs before suspending to ram?
> >> It seems to help with suspending to disk.
> >
> > No, that doesn't matter.  NVS regions are just sitting there regardless of
> > what happens at run time.
> 
> Strange. If I didn't offline, it hanged during suspend even without
> thinkpad_acpi. I could see that the suspend code does the offline
> automatically, but executing the offline before calling suspend makes
> it no hanging.

That means there's a problem in the CPU hotplug code that manifests itslef
during suspend.  Is this 100% reproducible?  Did it happen with 2.6.37?

Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-23 18:20                 ` Henrique de Moraes Holschuh
@ 2011-01-23 20:35                   ` Rafael J. Wysocki
  2011-01-23 23:15                     ` Henrique de Moraes Holschuh
  0 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-23 20:35 UTC (permalink / raw)
  To: Henrique de Moraes Holschuh
  Cc: Jeff Chua, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett,
	Henrique de Moraes Holschuh, platform-driver-x86

On Sunday, January 23, 2011, Henrique de Moraes Holschuh wrote:
> On Sat, 22 Jan 2011, Rafael J. Wysocki wrote:
> > > I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> > > need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> > > the thinkpad acpi is trying acquire locks while suspending.  Disabling
> > > cmos, light, led and hotkeys makes suspend-to-disk works again.
> > 
> > Well, we should tell the thinkpad_acpi maintainer about that, then (CCed).
> 
> What are the requirements re. mutexes for sleep-to-disk versus sleep-to-ram?

No difference.  Basically, there are two differences between suspend and
hibernation, as far as drivers are concerned:
(1) It's better to use the ->freeze()/->thaw() and ->poweroff()/->restore()
    callbacks for hibernation.
(2) It may be _much_ more difficult to get free memory during hibernation
    (so theoretically attempts to get memory during hibernation are more likely
    to block).

> Did something change in that area that caused the driver to hang?  A pointer
> to the ML threads, documentation, or patchset/git commit with those changes
> would be enough answer, and I will pursue it from there.

I'm not aware of any such changes.

Besides, the problem reported by Jeff seems to be caused by CPU hotplug.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-23 20:35                   ` Rafael J. Wysocki
@ 2011-01-23 23:15                     ` Henrique de Moraes Holschuh
  2011-01-24 21:37                       ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Henrique de Moraes Holschuh @ 2011-01-23 23:15 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jeff Chua, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett,
	Henrique de Moraes Holschuh, platform-driver-x86

On Sun, 23 Jan 2011, Rafael J. Wysocki wrote:
> On Sunday, January 23, 2011, Henrique de Moraes Holschuh wrote:
> > On Sat, 22 Jan 2011, Rafael J. Wysocki wrote:
> > > > I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> > > > need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> > > > the thinkpad acpi is trying acquire locks while suspending.  Disabling
> > > > cmos, light, led and hotkeys makes suspend-to-disk works again.
> > > 
> > > Well, we should tell the thinkpad_acpi maintainer about that, then (CCed).
> > 
> > What are the requirements re. mutexes for sleep-to-disk versus sleep-to-ram?
> 
> No difference.  Basically, there are two differences between suspend and
> hibernation, as far as drivers are concerned:
> (1) It's better to use the ->freeze()/->thaw() and ->poweroff()/->restore()
>     callbacks for hibernation.
> (2) It may be _much_ more difficult to get free memory during hibernation
>     (so theoretically attempts to get memory during hibernation are more likely
>     to block).

So, if there is nothing wrong with mutex use by itself...

Thinkpad-acpi calls the thinkpad firmware (using normal ACPI method calls),
which does SMI traps into the SMBIOS to do whatever it wants done.  And that
includes writing to the NVS (both the peecee RTC CMOS, and ACPI-backed
"NVS").

> Besides, the problem reported by Jeff seems to be caused by CPU hotplug.

Something weird going on with CPU hotplug could throw Lenovo's
way-too-complex-for-comfort SMM firmware out of wack alright.

That can be checked.  Lobotomize the driver so that it does not do the acpi
calls in the suspend path (but keep everything else).  If it still locks, it
is not the firmware.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-23 20:28                         ` Rafael J. Wysocki
@ 2011-01-24  1:13                           ` Jeff Chua
  2011-01-24 21:36                             ` Rafael J. Wysocki
  0 siblings, 1 reply; 47+ messages in thread
From: Jeff Chua @ 2011-01-24  1:13 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Mon, Jan 24, 2011 at 4:28 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Sunday, January 23, 2011, Jeff Chua wrote:
>> On Sun, Jan 23, 2011 at 3:12 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>> > On Saturday, January 22, 2011, Jeff Chua wrote:
>> >> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
>> >> > On Saturday, January 22, 2011, Jeff Chua wrote:
>> Strange. If I didn't offline, it hanged during suspend even without
>> thinkpad_acpi. I could see that the suspend code does the offline
>> automatically, but executing the offline before calling suspend makes
>> it no hanging.
>
> That means there's a problem in the CPU hotplug code that manifests itslef
> during suspend.  Is this 100% reproducible?  Did it happen with 2.6.37?

Quite reproducible. Once "something" trigger the hang,  no matter how
I reset the system, it'll still hang at suspend. And at other times,
it just worked. I tried many things, but it seems if I go back to use
an earlier version (2.6.37 works perfectly for suspend-to-disk/mem),
then switched back to the newer broken version, it'll work for a few
cycles before hanging at suspend-to-disk.

I guess it could be CPU hotplug, and may be that thinkpad-acpi is
triggering the broken cpu hotplug to fail.

Jeff

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-24  1:13                           ` Jeff Chua
@ 2011-01-24 21:36                             ` Rafael J. Wysocki
  0 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 21:36 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

On Monday, January 24, 2011, Jeff Chua wrote:
> On Mon, Jan 24, 2011 at 4:28 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Sunday, January 23, 2011, Jeff Chua wrote:
> >> On Sun, Jan 23, 2011 at 3:12 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> >> > On Saturday, January 22, 2011, Jeff Chua wrote:
> >> >> 2011/1/22 Rafael J. Wysocki <rjw@sisk.pl>:
> >> >> > On Saturday, January 22, 2011, Jeff Chua wrote:
> >> Strange. If I didn't offline, it hanged during suspend even without
> >> thinkpad_acpi. I could see that the suspend code does the offline
> >> automatically, but executing the offline before calling suspend makes
> >> it no hanging.
> >
> > That means there's a problem in the CPU hotplug code that manifests itslef
> > during suspend.  Is this 100% reproducible?  Did it happen with 2.6.37?
> 
> Quite reproducible. Once "something" trigger the hang,  no matter how
> I reset the system, it'll still hang at suspend. And at other times,
> it just worked. I tried many things, but it seems if I go back to use
> an earlier version (2.6.37 works perfectly for suspend-to-disk/mem),
> then switched back to the newer broken version, it'll work for a few
> cycles before hanging at suspend-to-disk.
> 
> I guess it could be CPU hotplug, and may be that thinkpad-acpi is
> triggering the broken cpu hotplug to fail.

So please try with this commit on top:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ec30f343d61391ab23705e50a525da1d55395780

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
  2011-01-23 23:15                     ` Henrique de Moraes Holschuh
@ 2011-01-24 21:37                       ` Rafael J. Wysocki
  0 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 21:37 UTC (permalink / raw)
  To: Henrique de Moraes Holschuh
  Cc: Jeff Chua, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett,
	Henrique de Moraes Holschuh, platform-driver-x86

On Monday, January 24, 2011, Henrique de Moraes Holschuh wrote:
> On Sun, 23 Jan 2011, Rafael J. Wysocki wrote:
> > On Sunday, January 23, 2011, Henrique de Moraes Holschuh wrote:
> > > On Sat, 22 Jan 2011, Rafael J. Wysocki wrote:
> > > > > I discovered CONFIG_THINKPAD_ACPI caused suspend-to-disk to hang. I
> > > > > need the Thinkpad ACPI to control the fan and bluetooth. It looks like
> > > > > the thinkpad acpi is trying acquire locks while suspending.  Disabling
> > > > > cmos, light, led and hotkeys makes suspend-to-disk works again.
> > > > 
> > > > Well, we should tell the thinkpad_acpi maintainer about that, then (CCed).
> > > 
> > > What are the requirements re. mutexes for sleep-to-disk versus sleep-to-ram?
> > 
> > No difference.  Basically, there are two differences between suspend and
> > hibernation, as far as drivers are concerned:
> > (1) It's better to use the ->freeze()/->thaw() and ->poweroff()/->restore()
> >     callbacks for hibernation.
> > (2) It may be _much_ more difficult to get free memory during hibernation
> >     (so theoretically attempts to get memory during hibernation are more likely
> >     to block).
> 
> So, if there is nothing wrong with mutex use by itself...
> 
> Thinkpad-acpi calls the thinkpad firmware (using normal ACPI method calls),
> which does SMI traps into the SMBIOS to do whatever it wants done.  And that
> includes writing to the NVS (both the peecee RTC CMOS, and ACPI-backed
> "NVS").
> 
> > Besides, the problem reported by Jeff seems to be caused by CPU hotplug.
> 
> Something weird going on with CPU hotplug could throw Lenovo's
> way-too-complex-for-comfort SMM firmware out of wack alright.
> 
> That can be checked.  Lobotomize the driver so that it does not do the acpi
> calls in the suspend path (but keep everything else).  If it still locks, it
> is not the firmware.

It turns out there's a bug in intel_idle causing people a lot of pain with CPU
hotplugging.  Should be fixed now it the Linus' tree.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2)
  2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
                   ` (11 preceding siblings ...)
  2011-01-20 16:06 ` [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Jeff Chua
@ 2011-01-24 23:25 ` Rafael J. Wysocki
  2011-01-24 23:26   ` [PATCH 1/8] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2) Rafael J. Wysocki
                     ` (7 more replies)
  12 siblings, 8 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:25 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

Hi Len,

The following series of patches implements some fixes of the ACPI iomaps
management.  I found the problems trying to resolve the issue of creating
iomaps of regions that have been mapped already when we save the NVS region.

To me, they are not extremely urgent, because the related issues are generally
long-standing, but some bugs addressed by them (especially [1/9]) may be
actively hurting people right now, so they look suitable for .38 as well.
This is your call, though.
 
[1/8] - Fix routines for reading and writing iomem (RCU bug; new version of the
        patch).

[2/8] - (cleanup) Do not export local functions in osl.c (this one is the same
        as https://patchwork.kernel.org/patch/491551/).

[3/8] - Use a mutex (instead of a spinlock) for the locking of iomap
        manipulations in osl.c (same as
        https://patchwork.kernel.org/patch/491751/).

[4/8] - Avoid unnecessary walks of the list of iomaps in osl.c (same as
        https://patchwork.kernel.org/patch/491671/).

[5/8] - Avoid creating iomaps for regions that have been mapped already (same
         as https://patchwork.kernel.org/patch/491741/).

[6/8] - Replace krefs used for iomap refcounting with simple reference
        counters (they are manipulated under a lock anyway; same as
        https://patchwork.kernel.org/patch/491681/).

[7/8] - Introduce function for getting a reference to an ACPI iomap (to be
        used by the NVS save/restore code; same as
        https://patchwork.kernel.org/patch/491701/).

[8/8] - Make the NVS code use existing iomaps if possible (new version).

The patches have been tested on HP nx6325, Toshiba Portege R500 and Acer
Ferrari One without causing any visible problems to happen.
 
Thanks,
Rafael


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 1/8] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2)
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
@ 2011-01-24 23:26   ` Rafael J. Wysocki
  2011-01-24 23:27   ` [PATCH 2/8] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:26 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The functions acpi_os_read_memory() and acpi_os_write_memory() do
two wrong things.  First, they shouldn't call rcu_read_unlock()
before the looked up address is actually used for I/O, because in
that case the iomap it belongs to may be removed before the I/O
is done.  Second, if they have to create a new mapping, they should
check the returned virtual address and tell the caller that the
operation failed if it is NULL (in fact, I think they even should not
attempt to map an address that's not present in one of the existing
ACPI iomaps, because that may cause problems to happen when they are
called from nonpreemptible context and their callers ought to know
what they are doing and map the requisite memory regions beforehand).

Make these functions call rcu_read_unlock() when the I/O is complete
(or if it's necessary to map the given address "on the fly") and
return an error code if the requested physical address is not present
in the existing ACPI iomaps and cannot be mapped.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -636,17 +636,21 @@ EXPORT_SYMBOL(acpi_os_write_port);
 acpi_status
 acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
 {
-	u32 dummy;
 	void __iomem *virt_addr;
-	int size = width / 8, unmap = 0;
+	unsigned int size = width / 8;
+	bool unmap = false;
+	u32 dummy;
 
 	rcu_read_lock();
 	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
-	rcu_read_unlock();
 	if (!virt_addr) {
+		rcu_read_unlock();
 		virt_addr = acpi_os_ioremap(phys_addr, size);
-		unmap = 1;
+		if (!virt_addr)
+			return AE_BAD_ADDRESS;
+		unmap = true;
 	}
+
 	if (!value)
 		value = &dummy;
 
@@ -666,6 +670,8 @@ acpi_os_read_memory(acpi_physical_addres
 
 	if (unmap)
 		iounmap(virt_addr);
+	else
+		rcu_read_unlock();
 
 	return AE_OK;
 }
@@ -674,14 +680,17 @@ acpi_status
 acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
 {
 	void __iomem *virt_addr;
-	int size = width / 8, unmap = 0;
+	unsigned int size = width / 8;
+	bool unmap = false;
 
 	rcu_read_lock();
 	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
-	rcu_read_unlock();
 	if (!virt_addr) {
+		rcu_read_unlock();
 		virt_addr = acpi_os_ioremap(phys_addr, size);
-		unmap = 1;
+		if (!virt_addr)
+			return AE_BAD_ADDRESS;
+		unmap = true;
 	}
 
 	switch (width) {
@@ -700,6 +709,8 @@ acpi_os_write_memory(acpi_physical_addre
 
 	if (unmap)
 		iounmap(virt_addr);
+	else
+		rcu_read_unlock();
 
 	return AE_OK;
 }


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 2/8] ACPI: Do not export functions that are only used in osl.c
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
  2011-01-24 23:26   ` [PATCH 1/8] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2) Rafael J. Wysocki
@ 2011-01-24 23:27   ` Rafael J. Wysocki
  2011-01-24 23:28   ` [PATCH 3/8] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:27 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The functions acpi_os_map_generic_address() and
acpi_os_unmap_generic_address() are only used in drivers/acpi/osl.c,
so make them static and remove the extern definitions of them from
include/linux/acpi_io.h.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c      |    6 ++----
 include/linux/acpi_io.h |    3 ---
 2 files changed, 2 insertions(+), 7 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -397,7 +397,7 @@ void __init early_acpi_os_unmap_memory(v
 		__acpi_unmap_table(virt, size);
 }
 
-int acpi_os_map_generic_address(struct acpi_generic_address *addr)
+static int acpi_os_map_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
 
@@ -413,9 +413,8 @@ int acpi_os_map_generic_address(struct a
 
 	return 0;
 }
-EXPORT_SYMBOL_GPL(acpi_os_map_generic_address);
 
-void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
+static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
 	unsigned long flags;
@@ -433,7 +432,6 @@ void acpi_os_unmap_generic_address(struc
 
 	acpi_os_unmap_memory(virt, size);
 }
-EXPORT_SYMBOL_GPL(acpi_os_unmap_generic_address);
 
 #ifdef ACPI_FUTURE_USAGE
 acpi_status
Index: linux-2.6/include/linux/acpi_io.h
===================================================================
--- linux-2.6.orig/include/linux/acpi_io.h
+++ linux-2.6/include/linux/acpi_io.h
@@ -10,7 +10,4 @@ static inline void __iomem *acpi_os_iore
        return ioremap_cache(phys, size);
 }
 
-int acpi_os_map_generic_address(struct acpi_generic_address *addr);
-void acpi_os_unmap_generic_address(struct acpi_generic_address *addr);
-
 #endif


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 3/8] ACPI: Change acpi_ioremap_lock into a mutex
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
  2011-01-24 23:26   ` [PATCH 1/8] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2) Rafael J. Wysocki
  2011-01-24 23:27   ` [PATCH 2/8] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
@ 2011-01-24 23:28   ` Rafael J. Wysocki
  2011-01-24 23:28   ` [PATCH 4/8] ACPI: Avoid walking the list of memory mappings in osl.c twice in a row Rafael J. Wysocki
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:28 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

There's no reason why acpi_ioremap_lock has to be a spinlock,
because all of the functions it is used in may sleep anyway and
there's no reason why it should be locked with interrupts off.
Use a mutex instead (that's going to allow us to put some more
operations under the lock later).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -109,7 +109,7 @@ struct acpi_ioremap {
 };
 
 static LIST_HEAD(acpi_ioremaps);
-static DEFINE_SPINLOCK(acpi_ioremap_lock);
+static DEFINE_MUTEX(acpi_ioremap_lock);
 
 static void __init acpi_osi_setup_late(void);
 
@@ -303,7 +303,6 @@ void __iomem *__init_refok
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 {
 	struct acpi_ioremap *map, *tmp_map;
-	unsigned long flags;
 	void __iomem *virt;
 	acpi_physical_address pg_off;
 	acpi_size pg_sz;
@@ -334,18 +333,18 @@ acpi_os_map_memory(acpi_physical_address
 	map->size = pg_sz;
 	kref_init(&map->ref);
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	/* Check if page has already been mapped. */
 	tmp_map = acpi_map_lookup(phys, size);
 	if (tmp_map) {
 		kref_get(&tmp_map->ref);
-		spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+		mutex_unlock(&acpi_ioremap_lock);
 		iounmap(map->virt);
 		kfree(map);
 		return tmp_map->virt + (phys - tmp_map->phys);
 	}
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	return map->virt + (phys - map->phys);
 }
@@ -362,7 +361,6 @@ static void acpi_kref_del_iomap(struct k
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
-	unsigned long flags;
 	int del;
 
 	if (!acpi_gbl_permanent_mmap) {
@@ -370,17 +368,17 @@ void __ref acpi_os_unmap_memory(void __i
 		return;
 	}
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	map = acpi_map_lookup_virt(virt, size);
 	if (!map) {
-		spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+		mutex_unlock(&acpi_ioremap_lock);
 		printk(KERN_ERR PREFIX "%s: bad address %p\n", __func__, virt);
 		dump_stack();
 		return;
 	}
 
 	del = kref_put(&map->ref, acpi_kref_del_iomap);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	if (!del)
 		return;
@@ -417,7 +415,6 @@ static int acpi_os_map_generic_address(s
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	void __iomem *virt;
-	unsigned long flags;
 	acpi_size size = addr->bit_width / 8;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
@@ -426,9 +423,9 @@ static void acpi_os_unmap_generic_addres
 	if (!addr->address || !addr->bit_width)
 		return;
 
-	spin_lock_irqsave(&acpi_ioremap_lock, flags);
+	mutex_lock(&acpi_ioremap_lock);
 	virt = acpi_map_vaddr_lookup(addr->address, size);
-	spin_unlock_irqrestore(&acpi_ioremap_lock, flags);
+	mutex_unlock(&acpi_ioremap_lock);
 
 	acpi_os_unmap_memory(virt, size);
 }


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 4/8] ACPI: Avoid walking the list of memory mappings in osl.c twice in a row
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
                     ` (2 preceding siblings ...)
  2011-01-24 23:28   ` [PATCH 3/8] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
@ 2011-01-24 23:28   ` Rafael J. Wysocki
  2011-01-24 23:29   ` [PATCH 5/8] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:28 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Make acpi_os_unmap_generic_address() use acpi_map_lookup() to find
the desired iomap and drop the reference to it directly (and
eventually remove it if necessary) instead of calling
acpi_os_unmap_memory(), which requires us to walk the list of ACPI
iomaps twice in a row (first, to get the virtual address associated
with the iomap and second, to get the iomap itself).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -358,6 +358,13 @@ static void acpi_kref_del_iomap(struct k
 	list_del_rcu(&map->list);
 }
 
+static void acpi_os_remove_map(struct acpi_ioremap *map)
+{
+	synchronize_rcu();
+	iounmap(map->virt);
+	kfree(map);
+}
+
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
@@ -372,20 +379,14 @@ void __ref acpi_os_unmap_memory(void __i
 	map = acpi_map_lookup_virt(virt, size);
 	if (!map) {
 		mutex_unlock(&acpi_ioremap_lock);
-		printk(KERN_ERR PREFIX "%s: bad address %p\n", __func__, virt);
-		dump_stack();
+		WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
 		return;
 	}
-
 	del = kref_put(&map->ref, acpi_kref_del_iomap);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (!del)
-		return;
-
-	synchronize_rcu();
-	iounmap(map->virt);
-	kfree(map);
+	if (del)
+		acpi_os_remove_map(map);
 }
 EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
 
@@ -414,8 +415,8 @@ static int acpi_os_map_generic_address(s
 
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
-	void __iomem *virt;
-	acpi_size size = addr->bit_width / 8;
+	struct acpi_ioremap *map;
+	int del;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		return;
@@ -424,10 +425,16 @@ static void acpi_os_unmap_generic_addres
 		return;
 
 	mutex_lock(&acpi_ioremap_lock);
-	virt = acpi_map_vaddr_lookup(addr->address, size);
+	map = acpi_map_lookup(addr->address, addr->bit_width / 8);
+	if (!map) {
+		mutex_unlock(&acpi_ioremap_lock);
+		return;
+	}
+	del = kref_put(&map->ref, acpi_kref_del_iomap);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	acpi_os_unmap_memory(virt, size);
+	if (del)
+		acpi_os_remove_map(map);
 }
 
 #ifdef ACPI_FUTURE_USAGE


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 5/8] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
                     ` (3 preceding siblings ...)
  2011-01-24 23:28   ` [PATCH 4/8] ACPI: Avoid walking the list of memory mappings in osl.c twice in a row Rafael J. Wysocki
@ 2011-01-24 23:29   ` Rafael J. Wysocki
  2011-01-24 23:30   ` [PATCH 6/8] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:29 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Modify acpi_os_map_memory() so that it doesn't call acpi_os_ioremap()
unconditionally every time it is executed (except when
acpi_gbl_permanent_mmap is unset), which pretty much defeats the
purpose of maintaining the list of ACPI iomaps in osl.c.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -302,7 +302,7 @@ acpi_map_lookup_virt(void __iomem *virt,
 void __iomem *__init_refok
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 {
-	struct acpi_ioremap *map, *tmp_map;
+	struct acpi_ioremap *map;
 	void __iomem *virt;
 	acpi_physical_address pg_off;
 	acpi_size pg_sz;
@@ -315,14 +315,25 @@ acpi_os_map_memory(acpi_physical_address
 	if (!acpi_gbl_permanent_mmap)
 		return __acpi_map_table((unsigned long)phys, size);
 
+	mutex_lock(&acpi_ioremap_lock);
+	/* Check if there's a suitable mapping already. */
+	map = acpi_map_lookup(phys, size);
+	if (map) {
+		kref_get(&map->ref);
+		goto out;
+	}
+
 	map = kzalloc(sizeof(*map), GFP_KERNEL);
-	if (!map)
+	if (!map) {
+		mutex_unlock(&acpi_ioremap_lock);
 		return NULL;
+	}
 
 	pg_off = round_down(phys, PAGE_SIZE);
 	pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
 	virt = acpi_os_ioremap(pg_off, pg_sz);
 	if (!virt) {
+		mutex_unlock(&acpi_ioremap_lock);
 		kfree(map);
 		return NULL;
 	}
@@ -333,19 +344,10 @@ acpi_os_map_memory(acpi_physical_address
 	map->size = pg_sz;
 	kref_init(&map->ref);
 
-	mutex_lock(&acpi_ioremap_lock);
-	/* Check if page has already been mapped. */
-	tmp_map = acpi_map_lookup(phys, size);
-	if (tmp_map) {
-		kref_get(&tmp_map->ref);
-		mutex_unlock(&acpi_ioremap_lock);
-		iounmap(map->virt);
-		kfree(map);
-		return tmp_map->virt + (phys - tmp_map->phys);
-	}
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
-	mutex_unlock(&acpi_ioremap_lock);
 
+ out:
+	mutex_unlock(&acpi_ioremap_lock);
 	return map->virt + (phys - map->phys);
 }
 EXPORT_SYMBOL_GPL(acpi_os_map_memory);


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 6/8] ACPI: Do not use krefs under a mutex in osl.c
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
                     ` (4 preceding siblings ...)
  2011-01-24 23:29   ` [PATCH 5/8] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
@ 2011-01-24 23:30   ` Rafael J. Wysocki
  2011-01-24 23:30   ` [PATCH 7/8] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
  2011-01-24 23:32   ` [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2) Rafael J. Wysocki
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:30 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

The reference counting of ACPI iomaps is carried out entirely under
acpi_ioremap_lock, so it is sufficient to use simple counters instead
of krefs for this purpose.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c |   36 ++++++++++++++++--------------------
 1 file changed, 16 insertions(+), 20 deletions(-)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -105,7 +105,7 @@ struct acpi_ioremap {
 	void __iomem *virt;
 	acpi_physical_address phys;
 	acpi_size size;
-	struct kref ref;
+	unsigned long refcount;
 };
 
 static LIST_HEAD(acpi_ioremaps);
@@ -319,7 +319,7 @@ acpi_os_map_memory(acpi_physical_address
 	/* Check if there's a suitable mapping already. */
 	map = acpi_map_lookup(phys, size);
 	if (map) {
-		kref_get(&map->ref);
+		map->refcount++;
 		goto out;
 	}
 
@@ -342,7 +342,7 @@ acpi_os_map_memory(acpi_physical_address
 	map->virt = virt;
 	map->phys = pg_off;
 	map->size = pg_sz;
-	kref_init(&map->ref);
+	map->refcount = 1;
 
 	list_add_tail_rcu(&map->list, &acpi_ioremaps);
 
@@ -352,25 +352,24 @@ acpi_os_map_memory(acpi_physical_address
 }
 EXPORT_SYMBOL_GPL(acpi_os_map_memory);
 
-static void acpi_kref_del_iomap(struct kref *ref)
+static void acpi_os_drop_map_ref(struct acpi_ioremap *map)
 {
-	struct acpi_ioremap *map;
-
-	map = container_of(ref, struct acpi_ioremap, ref);
-	list_del_rcu(&map->list);
+	if (!--map->refcount)
+		list_del_rcu(&map->list);
 }
 
-static void acpi_os_remove_map(struct acpi_ioremap *map)
+static void acpi_os_map_cleanup(struct acpi_ioremap *map)
 {
-	synchronize_rcu();
-	iounmap(map->virt);
-	kfree(map);
+	if (!map->refcount) {
+		synchronize_rcu();
+		iounmap(map->virt);
+		kfree(map);
+	}
 }
 
 void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 {
 	struct acpi_ioremap *map;
-	int del;
 
 	if (!acpi_gbl_permanent_mmap) {
 		__acpi_unmap_table(virt, size);
@@ -384,11 +383,10 @@ void __ref acpi_os_unmap_memory(void __i
 		WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
 		return;
 	}
-	del = kref_put(&map->ref, acpi_kref_del_iomap);
+	acpi_os_drop_map_ref(map);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (del)
-		acpi_os_remove_map(map);
+	acpi_os_map_cleanup(map);
 }
 EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
 
@@ -418,7 +416,6 @@ static int acpi_os_map_generic_address(s
 static void acpi_os_unmap_generic_address(struct acpi_generic_address *addr)
 {
 	struct acpi_ioremap *map;
-	int del;
 
 	if (addr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		return;
@@ -432,11 +429,10 @@ static void acpi_os_unmap_generic_addres
 		mutex_unlock(&acpi_ioremap_lock);
 		return;
 	}
-	del = kref_put(&map->ref, acpi_kref_del_iomap);
+	acpi_os_drop_map_ref(map);
 	mutex_unlock(&acpi_ioremap_lock);
 
-	if (del)
-		acpi_os_remove_map(map);
+	acpi_os_map_cleanup(map);
 }
 
 #ifdef ACPI_FUTURE_USAGE


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 7/8] ACPI: Introduce acpi_os_get_iomem()
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
                     ` (5 preceding siblings ...)
  2011-01-24 23:30   ` [PATCH 6/8] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
@ 2011-01-24 23:30   ` Rafael J. Wysocki
  2011-01-24 23:32   ` [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2) Rafael J. Wysocki
  7 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:30 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Introduce function acpi_os_get_iomem() that may be used by its callers
to get a reference to an ACPI iomap.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/osl.c      |   16 ++++++++++++++++
 include/linux/acpi_io.h |    2 ++
 2 files changed, 18 insertions(+)

Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -285,6 +285,22 @@ acpi_map_vaddr_lookup(acpi_physical_addr
 	return NULL;
 }
 
+void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size)
+{
+	struct acpi_ioremap *map;
+	void __iomem *virt = NULL;
+
+	mutex_lock(&acpi_ioremap_lock);
+	map = acpi_map_lookup(phys, size);
+	if (map) {
+		virt = map->virt + (phys - map->phys);
+		map->refcount++;
+	}
+	mutex_unlock(&acpi_ioremap_lock);
+	return virt;
+}
+EXPORT_SYMBOL_GPL(acpi_os_get_iomem);
+
 /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
 static struct acpi_ioremap *
 acpi_map_lookup_virt(void __iomem *virt, acpi_size size)
Index: linux-2.6/include/linux/acpi_io.h
===================================================================
--- linux-2.6.orig/include/linux/acpi_io.h
+++ linux-2.6/include/linux/acpi_io.h
@@ -10,4 +10,6 @@ static inline void __iomem *acpi_os_iore
        return ioremap_cache(phys, size);
 }
 
+void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size);
+
 #endif


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2)
  2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
                     ` (6 preceding siblings ...)
  2011-01-24 23:30   ` [PATCH 7/8] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
@ 2011-01-24 23:32   ` Rafael J. Wysocki
  2011-02-05 15:31     ` Jeff Chua
  7 siblings, 1 reply; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-01-24 23:32 UTC (permalink / raw)
  To: Len Brown
  Cc: Jeff Chua, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

From: Rafael J. Wysocki <rjw@sisk.pl>

Modify the NVS save/restore code to use acpi_os_get_iomem() and
acpi_os_unmap_memory() to acquire and release references to ACPI
iomaps, respectively.  If there's no ACPI iomap corresponding to the
given NVS page, acpi_os_ioremap() is used to map that page and
iounmap() is used to unmap it during resume.  [If the page is not
present in the ACPI iomaps already, it doesn't make sense to add its
mapping to the list of ACPI iomaps, because it's going to be thrown
away during the subsequent resume anyway.]

Testing on my HP nx6325 shows that approx. 90% of the NVS pages
have already been mapped by ACPI before suspend and are present in
the ACPI iomaps on this box, so this change appears to be the right
thing to do in general.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/nvs.c |   22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

Index: linux-2.6/drivers/acpi/nvs.c
===================================================================
--- linux-2.6.orig/drivers/acpi/nvs.c
+++ linux-2.6/drivers/acpi/nvs.c
@@ -26,6 +26,7 @@ struct nvs_page {
 	unsigned int size;
 	void *kaddr;
 	void *data;
+	bool unmap;
 	struct list_head node;
 };
 
@@ -44,6 +45,9 @@ int suspend_nvs_register(unsigned long s
 {
 	struct nvs_page *entry, *next;
 
+	pr_info("PM: Registering ACPI NVS region at %lx (%ld bytes)\n",
+		start, size);
+
 	while (size > 0) {
 		unsigned int nr_bytes;
 
@@ -81,7 +85,13 @@ void suspend_nvs_free(void)
 			free_page((unsigned long)entry->data);
 			entry->data = NULL;
 			if (entry->kaddr) {
-				iounmap(entry->kaddr);
+				if (entry->unmap) {
+					iounmap(entry->kaddr);
+					entry->unmap = false;
+				} else {
+					acpi_os_unmap_memory(entry->kaddr,
+							     entry->size);
+				}
 				entry->kaddr = NULL;
 			}
 		}
@@ -115,8 +125,14 @@ int suspend_nvs_save(void)
 
 	list_for_each_entry(entry, &nvs_list, node)
 		if (entry->data) {
-			entry->kaddr = acpi_os_ioremap(entry->phys_start,
-						    entry->size);
+			unsigned long phys = entry->phys_start;
+			unsigned int size = entry->size;
+
+			entry->kaddr = acpi_os_get_iomem(phys, size);
+			if (!entry->kaddr) {
+				entry->kaddr = acpi_os_ioremap(phys, size);
+				entry->unmap = !!entry->kaddr;
+			}
 			if (!entry->kaddr) {
 				suspend_nvs_free();
 				return -ENOMEM;


^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2)
  2011-01-24 23:32   ` [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2) Rafael J. Wysocki
@ 2011-02-05 15:31     ` Jeff Chua
  2011-02-05 18:20       ` Rafael J. Wysocki
                         ` (2 more replies)
  0 siblings, 3 replies; 47+ messages in thread
From: Jeff Chua @ 2011-02-05 15:31 UTC (permalink / raw)
  To: Rafael J. Wysocki, Linus Torvalds
  Cc: Len Brown, LKML, ACPI Devel Maling List, Linux-pm mailing list,
	Matthew Garrett

The suspend monster is back! The suspend-to-ram is fine, but upon
resume, screen is blank. Haven't bisected in case someone has also
done so.

It's very recent. ... between commit
831d52bc153971b70e64eccfbed2b232394f22f8 and
44f2c5c841da1b1e0864d768197ab1497b5c2cc1.

Thanks,
Jeff

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2)
  2011-02-05 15:31     ` Jeff Chua
@ 2011-02-05 18:20       ` Rafael J. Wysocki
  2011-02-05 18:24       ` Rafael J. Wysocki
  2011-02-05 18:51       ` Linus Torvalds
  2 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-02-05 18:20 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Linus Torvalds, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett

On Saturday, February 05, 2011, Jeff Chua wrote:
> The suspend monster is back! The suspend-to-ram is fine, but upon
> resume, screen is blank. Haven't bisected in case someone has also
> done so.
> 
> It's very recent. ... between commit
> 831d52bc153971b70e64eccfbed2b232394f22f8 and
> 44f2c5c841da1b1e0864d768197ab1497b5c2cc1.

No idea.  I bet on DRI.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2)
  2011-02-05 15:31     ` Jeff Chua
  2011-02-05 18:20       ` Rafael J. Wysocki
@ 2011-02-05 18:24       ` Rafael J. Wysocki
  2011-02-05 18:51       ` Linus Torvalds
  2 siblings, 0 replies; 47+ messages in thread
From: Rafael J. Wysocki @ 2011-02-05 18:24 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Linus Torvalds, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett

On Saturday, February 05, 2011, Jeff Chua wrote:
> The suspend monster is back! The suspend-to-ram is fine, but upon
> resume, screen is blank. Haven't bisected in case someone has also
> done so.
> 
> It's very recent. ... between commit
> 831d52bc153971b70e64eccfbed2b232394f22f8 and
> 44f2c5c841da1b1e0864d768197ab1497b5c2cc1.

BTW, please don't reply to messages containing patches with reports of problems
that aren't caused by those patches.  It's confusing at best and at worst it
may result in the patches being rejected.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2)
  2011-02-05 15:31     ` Jeff Chua
  2011-02-05 18:20       ` Rafael J. Wysocki
  2011-02-05 18:24       ` Rafael J. Wysocki
@ 2011-02-05 18:51       ` Linus Torvalds
  2 siblings, 0 replies; 47+ messages in thread
From: Linus Torvalds @ 2011-02-05 18:51 UTC (permalink / raw)
  To: Jeff Chua
  Cc: Rafael J. Wysocki, Len Brown, LKML, ACPI Devel Maling List,
	Linux-pm mailing list, Matthew Garrett

On Sat, Feb 5, 2011 at 7:31 AM, Jeff Chua <jeff.chua.linux@gmail.com> wrote:
>
> The suspend monster is back! The suspend-to-ram is fine, but upon
> resume, screen is blank. Haven't bisected in case someone has also
> done so.
>
> It's very recent. ... between commit
> 831d52bc153971b70e64eccfbed2b232394f22f8 and
> 44f2c5c841da1b1e0864d768197ab1497b5c2cc1.

Hmm. It's almost certainly one of the DRI patches, but which one? I
think bisection is the only way to figure it out. It shouldn't be too
bad, since there's only 120 commits in that range.

In fact, you can almost certainly just bisect from 89840966c579 to
bb5b583b5279, which is just 31 commits and should get you bisected in
just five tries or so.

                       Linus

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management
@ 2011-01-25  9:43 Jeff Chua
  0 siblings, 0 replies; 47+ messages in thread
From: Jeff Chua @ 2011-01-25  9:43 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Henrique de Moraes Holschuh, Len Brown, LKML,
	ACPI Devel Maling List, Linux-pm mailing list, Matthew Garrett,
	Henrique de Moraes Holschuh, platform-driver-x86


On Tue, Jan 25, 2011 at 5:37 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Monday, January 24, 2011, Henrique de Moraes Holschuh wrote:
> It turns out there's a bug in intel_idle causing people a lot of pain 
> with CPU hotplugging.  Should be fixed now it the Linus' tree.

Uh, I see the git fix now. Thanks. The workaround I did was to manually 
offline all CPUs before suspend and that fixed it too.

As for the thinkpad-acpi, here a little patch to disable all hotkeys so 
that Fn-F4 works natively to suspend-to-memory when 
CONFIG_THINKPAD_ACPI_HOTKEY_POLL is not set.

Thanks,
Jeff

--- lx/drivers/platform/x86/thinkpad_acpi.c.org	2011-01-22 21:48:05.000000000 +0800
+++ lx/drivers/platform/x86/thinkpad_acpi.c	2011-01-22 21:55:14.000000000 +0800
@@ -8776,10 +8776,12 @@
  	{
  		.data = &thinkpad_acpi_driver_data,
  	},
+#ifdef CONFIG_THINKPAD_ACPI_HOTKEY_POLL
  	{
  		.init = hotkey_init,
  		.data = &hotkey_driver_data,
  	},
+#endif
  	{
  		.init = bluetooth_init,



^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2011-02-05 18:52 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-20 11:26 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Rafael J. Wysocki
2011-01-20 11:27 ` [PATCH 1/11] ACPI: Introduce acpi_os_ioremap() Rafael J. Wysocki
2011-01-20 11:28 ` [PATCH 2/11] ACPI / PM: Call suspend_nvs_free() earlier during resume Rafael J. Wysocki
2011-01-20 11:30 ` [PATCH 3/11] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() Rafael J. Wysocki
2011-01-20 11:30 ` [PATCH 4/11] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
2011-01-20 11:31 ` [PATCH 5/11] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
2011-01-20 11:32 ` [PATCH 6/11] ACPI: Avoid walking the list of iomaps in osl.c twice in a row Rafael J. Wysocki
2011-01-20 11:33 ` [PATCH 7/11] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
2011-01-20 11:34 ` [PATCH 8/11] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
2011-01-20 11:35 ` [PATCH 9/11] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
2011-01-20 11:36 ` [PATCH 10/11] ACPI / PM: Use existing ACPI iomaps for NVS save/restore Rafael J. Wysocki
2011-01-20 11:37 ` [PATCH 11/11] ACPI / PM: Make NVS save/restore code use slightly less memory Rafael J. Wysocki
2011-01-20 16:06 ` [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Jeff Chua
2011-01-20 20:57   ` Rafael J. Wysocki
2011-01-20 21:46     ` Jeff Chua
2011-01-21  0:04       ` Rafael J. Wysocki
2011-01-21  2:51         ` Jeff Chua
2011-01-21 12:01           ` Rafael J. Wysocki
2011-01-21 21:06           ` Rafael J. Wysocki
2011-01-22  5:54             ` Jeff Chua
2011-01-22  5:58               ` Jeff Chua
2011-01-22  9:25                 ` Rafael J. Wysocki
2011-01-22 17:24                   ` Jeff Chua
2011-01-22 19:12                     ` Rafael J. Wysocki
2011-01-23  0:14                       ` Jeff Chua
2011-01-23 20:28                         ` Rafael J. Wysocki
2011-01-24  1:13                           ` Jeff Chua
2011-01-24 21:36                             ` Rafael J. Wysocki
2011-01-22  9:13               ` Rafael J. Wysocki
2011-01-23 18:20                 ` Henrique de Moraes Holschuh
2011-01-23 20:35                   ` Rafael J. Wysocki
2011-01-23 23:15                     ` Henrique de Moraes Holschuh
2011-01-24 21:37                       ` Rafael J. Wysocki
2011-01-24 23:25 ` [PATCH 0/8] ACPI: Fixes and cleanups related to iomaps management (v2) Rafael J. Wysocki
2011-01-24 23:26   ` [PATCH 1/8] ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2) Rafael J. Wysocki
2011-01-24 23:27   ` [PATCH 2/8] ACPI: Do not export functions that are only used in osl.c Rafael J. Wysocki
2011-01-24 23:28   ` [PATCH 3/8] ACPI: Change acpi_ioremap_lock into a mutex Rafael J. Wysocki
2011-01-24 23:28   ` [PATCH 4/8] ACPI: Avoid walking the list of memory mappings in osl.c twice in a row Rafael J. Wysocki
2011-01-24 23:29   ` [PATCH 5/8] ACPI: Make acpi_os_map_memory() avoid creating unnecessary mappings Rafael J. Wysocki
2011-01-24 23:30   ` [PATCH 6/8] ACPI: Do not use krefs under a mutex in osl.c Rafael J. Wysocki
2011-01-24 23:30   ` [PATCH 7/8] ACPI: Introduce acpi_os_get_iomem() Rafael J. Wysocki
2011-01-24 23:32   ` [PATCH 8/8] ACPI / PM: Use existing ACPI iomaps for NVS save/restore (v2) Rafael J. Wysocki
2011-02-05 15:31     ` Jeff Chua
2011-02-05 18:20       ` Rafael J. Wysocki
2011-02-05 18:24       ` Rafael J. Wysocki
2011-02-05 18:51       ` Linus Torvalds
2011-01-25  9:43 [PATCH 0/11] ACPI: Fixes and cleanups related to iomaps management Jeff Chua

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).