Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses
       [not found] <1371141152-9468-1-git-send-email-jiang.liu@huawei.com>
@ 2013-06-13 16:32 ` Jiang Liu
  2013-06-13 18:22   ` Rafael J. Wysocki
  2013-06-13 18:24   ` Rafael J. Wysocki
  2013-06-13 16:32 ` [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification Jiang Liu
  1 sibling, 2 replies; 15+ messages in thread
From: Jiang Liu @ 2013-06-13 16:32 UTC (permalink / raw)
  To: Rafael J . Wysocki, Bjorn Helgaas, Yinghai Lu,
	Alexander E . Patrakov
  Cc: Jiang Liu, Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, linux-acpi, stable

Changeset "3b63aaa70e1 PCI: acpiphp: Do not use ACPI PCI subdriver
mechanism" causes a regression which breaks ACPI dock support,
please refer to https://bugzilla.kernel.org/show_bug.cgi?id=59501

The root cause is that changeset 3b63aaa70e1 changed the relative
initialization order of ACPI dock subsystem and acpiphp driver,
and acpiphp driver has dependency on ACPI dock subsystem's
initialization result, so that acpiphp can't correctly detect ACPI
dock stations now.

On the other hand, ACPI dock is a built-in driver, so we could
explicitly initialize it before the acpiphp driver is used.

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
Tested-by: Alexander E. Patrakov <patrakov@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: linux-acpi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: <stable@vger.kernel.org> # 3.9+
---
 drivers/acpi/dock.c     | 7 +------
 drivers/acpi/internal.h | 5 +++++
 drivers/acpi/scan.c     | 1 +
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 4fdea38..02b0563 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -1033,7 +1033,7 @@ find_dock_and_bay(acpi_handle handle, u32 lvl, void *context, void **rv)
 	return AE_OK;
 }
 
-static int __init dock_init(void)
+int __init acpi_dock_init(void)
 {
 	if (acpi_disabled)
 		return 0;
@@ -1062,9 +1062,4 @@ static void __exit dock_exit(void)
 		dock_remove(dock_station);
 }
 
-/*
- * Must be called before drivers of devices in dock, otherwise we can't know
- * which devices are in a dock
- */
-subsys_initcall(dock_init);
 module_exit(dock_exit);
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 297cbf4..c610a76 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -40,6 +40,11 @@ void acpi_container_init(void);
 #else
 static inline void acpi_container_init(void) {}
 #endif
+#ifdef CONFIG_ACPI_DOCK
+void acpi_dock_init(void);
+#else
+static inline void acpi_dock_init(void) {}
+#endif
 #ifdef CONFIG_ACPI_HOTPLUG_MEMORY
 void acpi_memory_hotplug_init(void);
 #else
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 44225cb..4148163 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -2045,6 +2045,7 @@ int __init acpi_scan_init(void)
 	acpi_lpss_init();
 	acpi_container_init();
 	acpi_memory_hotplug_init();
+	acpi_dock_init();
 
 	mutex_lock(&acpi_scan_lock);
 	/*
-- 
1.8.1.2


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

* [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
       [not found] <1371141152-9468-1-git-send-email-jiang.liu@huawei.com>
  2013-06-13 16:32 ` [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses Jiang Liu
@ 2013-06-13 16:32 ` Jiang Liu
  2013-06-13 19:59   ` Rafael J. Wysocki
  1 sibling, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2013-06-13 16:32 UTC (permalink / raw)
  To: Rafael J . Wysocki, Bjorn Helgaas, Yinghai Lu,
	Alexander E . Patrakov
  Cc: Jiang Liu, Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, Rafael J. Wysocki, stable

Current ACPI glue logic expects that physical devices are destroyed
before destroying companion ACPI devices, otherwise it will break the
ACPI unbind logic and cause following warning messages:
[  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
[  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
[  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
[  180.013656]  port1: Oops, 'acpi_handle' corrupt
Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
for full log message.

Above warning messages are caused by following scenario:
1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
   ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
3) hotplug_dock_devices() first invokes registered hotplug callbacks to
   destroy physical devices, then destroys all affected ACPI devices.
   Everything seems perfect until now. But the acpiphp dock notification
   handler will queue another task (T2) onto kacpi_hotplug_wq to really
   destroy affected physical devices.
4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
   been destroyed.
5) kacpi_hotplug_wq handles T2, which destroys all affected physical
   devices.

So it breaks ACPI glue logic's expection because ACPI devices are destroyed
in step 3 and physical devices are destroyed in step 5.

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: linux-pci@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
---
Hi Bjorn and Rafael,
     The recursive lock changes haven't been tested yet, need help
from Alexander for testing.
---
 drivers/acpi/dock.c                | 33 +++++++++++++++++++++++++++------
 drivers/pci/hotplug/acpiphp_glue.c | 32 ++++++++++++++++++--------------
 2 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 02b0563..79c8d9e 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -65,6 +65,7 @@ struct dock_station {
 	u32 flags;
 	spinlock_t dd_lock;
 	struct mutex hp_lock;
+	struct task_struct *owner;
 	struct list_head dependent_devices;
 	struct list_head hotplug_devices;
 
@@ -131,9 +132,13 @@ static void
 dock_add_hotplug_device(struct dock_station *ds,
 			struct dock_dependent_device *dd)
 {
-	mutex_lock(&ds->hp_lock);
-	list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
-	mutex_unlock(&ds->hp_lock);
+	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
+		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
+	} else {
+		mutex_lock(&ds->hp_lock);
+		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
+		mutex_unlock(&ds->hp_lock);
+	}
 }
 
 /**
@@ -147,9 +152,13 @@ static void
 dock_del_hotplug_device(struct dock_station *ds,
 			struct dock_dependent_device *dd)
 {
-	mutex_lock(&ds->hp_lock);
-	list_del(&dd->hotplug_list);
-	mutex_unlock(&ds->hp_lock);
+	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
+		list_del_init(&dd->hotplug_list);
+	} else {
+		mutex_lock(&ds->hp_lock);
+		list_del_init(&dd->hotplug_list);
+		mutex_unlock(&ds->hp_lock);
+	}
 }
 
 /**
@@ -355,7 +364,17 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
 {
 	struct dock_dependent_device *dd;
 
+	/*
+	 * There is a deadlock scenario as below:
+	 *	hotplug_dock_devices()
+	 *	    mutex_lock(&ds->hp_lock)
+	 *		dd->ops->handler()
+	 *		    register_hotplug_dock_device()
+	 *			mutex_lock(&ds->hp_lock)
+	 * So we need recursive lock scematics here, do it by ourselves.
+	 */
 	mutex_lock(&ds->hp_lock);
+	ds->owner = current;
 
 	/*
 	 * First call driver specific hotplug functions
@@ -376,6 +395,8 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
 		else
 			dock_create_acpi_device(dd->handle);
 	}
+
+	ds->owner = NULL;
 	mutex_unlock(&ds->hp_lock);
 }
 
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 716aa93..699b8ca 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -61,6 +61,8 @@ static DEFINE_MUTEX(bridge_mutex);
 static void handle_hotplug_event_bridge (acpi_handle, u32, void *);
 static void acpiphp_sanitize_bus(struct pci_bus *bus);
 static void acpiphp_set_hpp_values(struct pci_bus *bus);
+static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
+				       void *context);
 static void handle_hotplug_event_func(acpi_handle handle, u32 type, void *context);
 static void free_bridge(struct kref *kref);
 
@@ -147,7 +149,7 @@ static int post_dock_fixups(struct notifier_block *nb, unsigned long val,
 
 
 static const struct acpi_dock_ops acpiphp_dock_ops = {
-	.handler = handle_hotplug_event_func,
+	.handler = _handle_hotplug_event_func,
 };
 
 /* Check whether the PCI device is managed by native PCIe hotplug driver */
@@ -1065,22 +1067,13 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type,
 	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_bridge);
 }
 
-static void _handle_hotplug_event_func(struct work_struct *work)
+static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
+				       void *context)
 {
-	struct acpiphp_func *func;
+	struct acpiphp_func *func = context;
 	char objname[64];
 	struct acpi_buffer buffer = { .length = sizeof(objname),
 				      .pointer = objname };
-	struct acpi_hp_work *hp_work;
-	acpi_handle handle;
-	u32 type;
-
-	hp_work = container_of(work, struct acpi_hp_work, work);
-	handle = hp_work->handle;
-	type = hp_work->type;
-	func = (struct acpiphp_func *)hp_work->context;
-
-	acpi_scan_lock_acquire();
 
 	acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
 
@@ -1113,7 +1106,18 @@ static void _handle_hotplug_event_func(struct work_struct *work)
 		warn("notify_handler: unknown event type 0x%x for %s\n", type, objname);
 		break;
 	}
+}
+
+static void _handle_hotplug_event_cb(struct work_struct *work)
+{
+	struct acpiphp_func *func;
+	struct acpi_hp_work *hp_work;
 
+	hp_work = container_of(work, struct acpi_hp_work, work);
+	func = (struct acpiphp_func *)hp_work->context;
+	acpi_scan_lock_acquire();
+	_handle_hotplug_event_func(hp_work->handle, hp_work->type,
+				    hp_work->context);
 	acpi_scan_lock_release();
 	kfree(hp_work); /* allocated in handle_hotplug_event_func */
 	put_bridge(func->slot->bridge);
@@ -1141,7 +1145,7 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
 	 * don't deadlock on hotplug actions.
 	 */
 	get_bridge(func->slot->bridge);
-	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_func);
+	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_cb);
 }
 
 /*
-- 
1.8.1.2


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

* Re: [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses
  2013-06-13 16:32 ` [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses Jiang Liu
@ 2013-06-13 18:22   ` Rafael J. Wysocki
  2013-06-13 18:24   ` Rafael J. Wysocki
  1 sibling, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-13 18:22 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, linux-acpi, stable

On Friday, June 14, 2013 12:32:24 AM Jiang Liu wrote:
> Changeset "3b63aaa70e1 PCI: acpiphp: Do not use ACPI PCI subdriver
> mechanism" causes a regression which breaks ACPI dock support,
> please refer to https://bugzilla.kernel.org/show_bug.cgi?id=59501
> 
> The root cause is that changeset 3b63aaa70e1 changed the relative
> initialization order of ACPI dock subsystem and acpiphp driver,
> and acpiphp driver has dependency on ACPI dock subsystem's
> initialization result, so that acpiphp can't correctly detect ACPI
> dock stations now.
> 
> On the other hand, ACPI dock is a built-in driver, so we could
> explicitly initialize it before the acpiphp driver is used.
> 
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> Tested-by: Alexander E. Patrakov <patrakov@gmail.com>
> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
> Cc: linux-acpi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: <stable@vger.kernel.org> # 3.9+

Can you please send the whole series to linux-acpi next time?

First, because I believe it should go in through the ACPI tree.  Second,
because it is kind of useful to have all of the patches in context.


Thanks,
Rafael


> ---
>  drivers/acpi/dock.c     | 7 +------
>  drivers/acpi/internal.h | 5 +++++
>  drivers/acpi/scan.c     | 1 +
>  3 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 4fdea38..02b0563 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -1033,7 +1033,7 @@ find_dock_and_bay(acpi_handle handle, u32 lvl, void *context, void **rv)
>  	return AE_OK;
>  }
>  
> -static int __init dock_init(void)
> +int __init acpi_dock_init(void)
>  {
>  	if (acpi_disabled)
>  		return 0;
> @@ -1062,9 +1062,4 @@ static void __exit dock_exit(void)
>  		dock_remove(dock_station);
>  }
>  
> -/*
> - * Must be called before drivers of devices in dock, otherwise we can't know
> - * which devices are in a dock
> - */
> -subsys_initcall(dock_init);
>  module_exit(dock_exit);
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 297cbf4..c610a76 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -40,6 +40,11 @@ void acpi_container_init(void);
>  #else
>  static inline void acpi_container_init(void) {}
>  #endif
> +#ifdef CONFIG_ACPI_DOCK
> +void acpi_dock_init(void);
> +#else
> +static inline void acpi_dock_init(void) {}
> +#endif
>  #ifdef CONFIG_ACPI_HOTPLUG_MEMORY
>  void acpi_memory_hotplug_init(void);
>  #else
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 44225cb..4148163 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2045,6 +2045,7 @@ int __init acpi_scan_init(void)
>  	acpi_lpss_init();
>  	acpi_container_init();
>  	acpi_memory_hotplug_init();
> +	acpi_dock_init();
>  
>  	mutex_lock(&acpi_scan_lock);
>  	/*
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses
  2013-06-13 16:32 ` [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses Jiang Liu
  2013-06-13 18:22   ` Rafael J. Wysocki
@ 2013-06-13 18:24   ` Rafael J. Wysocki
  1 sibling, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-13 18:24 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, linux-acpi, stable

On Friday, June 14, 2013 12:32:24 AM Jiang Liu wrote:
> Changeset "3b63aaa70e1 PCI: acpiphp: Do not use ACPI PCI subdriver
> mechanism" causes a regression which breaks ACPI dock support,
> please refer to https://bugzilla.kernel.org/show_bug.cgi?id=59501
> 
> The root cause is that changeset 3b63aaa70e1 changed the relative
> initialization order of ACPI dock subsystem and acpiphp driver,
> and acpiphp driver has dependency on ACPI dock subsystem's
> initialization result, so that acpiphp can't correctly detect ACPI
> dock stations now.
> 
> On the other hand, ACPI dock is a built-in driver, so we could
> explicitly initialize it before the acpiphp driver is used.

This change makes sense to me.

Thanks,
Rafael


> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> Tested-by: Alexander E. Patrakov <patrakov@gmail.com>
> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
> Cc: linux-acpi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: <stable@vger.kernel.org> # 3.9+
> ---
>  drivers/acpi/dock.c     | 7 +------
>  drivers/acpi/internal.h | 5 +++++
>  drivers/acpi/scan.c     | 1 +
>  3 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 4fdea38..02b0563 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -1033,7 +1033,7 @@ find_dock_and_bay(acpi_handle handle, u32 lvl, void *context, void **rv)
>  	return AE_OK;
>  }
>  
> -static int __init dock_init(void)
> +int __init acpi_dock_init(void)
>  {
>  	if (acpi_disabled)
>  		return 0;
> @@ -1062,9 +1062,4 @@ static void __exit dock_exit(void)
>  		dock_remove(dock_station);
>  }
>  
> -/*
> - * Must be called before drivers of devices in dock, otherwise we can't know
> - * which devices are in a dock
> - */
> -subsys_initcall(dock_init);
>  module_exit(dock_exit);
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 297cbf4..c610a76 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -40,6 +40,11 @@ void acpi_container_init(void);
>  #else
>  static inline void acpi_container_init(void) {}
>  #endif
> +#ifdef CONFIG_ACPI_DOCK
> +void acpi_dock_init(void);
> +#else
> +static inline void acpi_dock_init(void) {}
> +#endif
>  #ifdef CONFIG_ACPI_HOTPLUG_MEMORY
>  void acpi_memory_hotplug_init(void);
>  #else
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 44225cb..4148163 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2045,6 +2045,7 @@ int __init acpi_scan_init(void)
>  	acpi_lpss_init();
>  	acpi_container_init();
>  	acpi_memory_hotplug_init();
> +	acpi_dock_init();
>  
>  	mutex_lock(&acpi_scan_lock);
>  	/*
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-13 16:32 ` [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification Jiang Liu
@ 2013-06-13 19:59   ` Rafael J. Wysocki
  2013-06-14 12:23     ` Rafael J. Wysocki
  2013-06-14 13:53     ` Jiang Liu
  0 siblings, 2 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-13 19:59 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, Rafael J. Wysocki, stable

On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
> Current ACPI glue logic expects that physical devices are destroyed
> before destroying companion ACPI devices, otherwise it will break the
> ACPI unbind logic and cause following warning messages:
> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
> for full log message.

So my question is, did we have this problem before commit 3b63aaa70e1?

If we did, then when did it start?  Or was it present forever?

> Above warning messages are caused by following scenario:
> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
>    destroy physical devices, then destroys all affected ACPI devices.
>    Everything seems perfect until now. But the acpiphp dock notification
>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
>    destroy affected physical devices.

Would not the solution be to modify it so that it didn't spawn the other
task (T2), but removed the affected physical devices synchronously?

> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
>    been destroyed.
> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
>    devices.
> 
> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
> in step 3 and physical devices are destroyed in step 5.
> 
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Yinghai Lu <yinghai@kernel.org>
> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> Cc: linux-pci@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org
> ---
> Hi Bjorn and Rafael,
>      The recursive lock changes haven't been tested yet, need help
> from Alexander for testing.

Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
here?

Rafael


> ---
>  drivers/acpi/dock.c                | 33 +++++++++++++++++++++++++++------
>  drivers/pci/hotplug/acpiphp_glue.c | 32 ++++++++++++++++++--------------
>  2 files changed, 45 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 02b0563..79c8d9e 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -65,6 +65,7 @@ struct dock_station {
>  	u32 flags;
>  	spinlock_t dd_lock;
>  	struct mutex hp_lock;
> +	struct task_struct *owner;
>  	struct list_head dependent_devices;
>  	struct list_head hotplug_devices;
>  
> @@ -131,9 +132,13 @@ static void
>  dock_add_hotplug_device(struct dock_station *ds,
>  			struct dock_dependent_device *dd)
>  {
> -	mutex_lock(&ds->hp_lock);
> -	list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
> -	mutex_unlock(&ds->hp_lock);
> +	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
> +		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
> +	} else {
> +		mutex_lock(&ds->hp_lock);
> +		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
> +		mutex_unlock(&ds->hp_lock);
> +	}
>  }
>  
>  /**
> @@ -147,9 +152,13 @@ static void
>  dock_del_hotplug_device(struct dock_station *ds,
>  			struct dock_dependent_device *dd)
>  {
> -	mutex_lock(&ds->hp_lock);
> -	list_del(&dd->hotplug_list);
> -	mutex_unlock(&ds->hp_lock);
> +	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
> +		list_del_init(&dd->hotplug_list);
> +	} else {
> +		mutex_lock(&ds->hp_lock);
> +		list_del_init(&dd->hotplug_list);
> +		mutex_unlock(&ds->hp_lock);
> +	}
>  }
>  
>  /**
> @@ -355,7 +364,17 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>  {
>  	struct dock_dependent_device *dd;
>  
> +	/*
> +	 * There is a deadlock scenario as below:
> +	 *	hotplug_dock_devices()
> +	 *	    mutex_lock(&ds->hp_lock)
> +	 *		dd->ops->handler()
> +	 *		    register_hotplug_dock_device()
> +	 *			mutex_lock(&ds->hp_lock)
> +	 * So we need recursive lock scematics here, do it by ourselves.
> +	 */
>  	mutex_lock(&ds->hp_lock);
> +	ds->owner = current;
>  
>  	/*
>  	 * First call driver specific hotplug functions
> @@ -376,6 +395,8 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>  		else
>  			dock_create_acpi_device(dd->handle);
>  	}
> +
> +	ds->owner = NULL;
>  	mutex_unlock(&ds->hp_lock);
>  }
>  
> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
> index 716aa93..699b8ca 100644
> --- a/drivers/pci/hotplug/acpiphp_glue.c
> +++ b/drivers/pci/hotplug/acpiphp_glue.c
> @@ -61,6 +61,8 @@ static DEFINE_MUTEX(bridge_mutex);
>  static void handle_hotplug_event_bridge (acpi_handle, u32, void *);
>  static void acpiphp_sanitize_bus(struct pci_bus *bus);
>  static void acpiphp_set_hpp_values(struct pci_bus *bus);
> +static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
> +				       void *context);
>  static void handle_hotplug_event_func(acpi_handle handle, u32 type, void *context);
>  static void free_bridge(struct kref *kref);
>  
> @@ -147,7 +149,7 @@ static int post_dock_fixups(struct notifier_block *nb, unsigned long val,
>  
>  
>  static const struct acpi_dock_ops acpiphp_dock_ops = {
> -	.handler = handle_hotplug_event_func,
> +	.handler = _handle_hotplug_event_func,
>  };
>  
>  /* Check whether the PCI device is managed by native PCIe hotplug driver */
> @@ -1065,22 +1067,13 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type,
>  	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_bridge);
>  }
>  
> -static void _handle_hotplug_event_func(struct work_struct *work)
> +static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
> +				       void *context)
>  {
> -	struct acpiphp_func *func;
> +	struct acpiphp_func *func = context;
>  	char objname[64];
>  	struct acpi_buffer buffer = { .length = sizeof(objname),
>  				      .pointer = objname };
> -	struct acpi_hp_work *hp_work;
> -	acpi_handle handle;
> -	u32 type;
> -
> -	hp_work = container_of(work, struct acpi_hp_work, work);
> -	handle = hp_work->handle;
> -	type = hp_work->type;
> -	func = (struct acpiphp_func *)hp_work->context;
> -
> -	acpi_scan_lock_acquire();
>  
>  	acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
>  
> @@ -1113,7 +1106,18 @@ static void _handle_hotplug_event_func(struct work_struct *work)
>  		warn("notify_handler: unknown event type 0x%x for %s\n", type, objname);
>  		break;
>  	}
> +}
> +
> +static void _handle_hotplug_event_cb(struct work_struct *work)
> +{
> +	struct acpiphp_func *func;
> +	struct acpi_hp_work *hp_work;
>  
> +	hp_work = container_of(work, struct acpi_hp_work, work);
> +	func = (struct acpiphp_func *)hp_work->context;
> +	acpi_scan_lock_acquire();
> +	_handle_hotplug_event_func(hp_work->handle, hp_work->type,
> +				    hp_work->context);
>  	acpi_scan_lock_release();
>  	kfree(hp_work); /* allocated in handle_hotplug_event_func */
>  	put_bridge(func->slot->bridge);
> @@ -1141,7 +1145,7 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
>  	 * don't deadlock on hotplug actions.
>  	 */
>  	get_bridge(func->slot->bridge);
> -	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_func);
> +	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_cb);
>  }
>  
>  /*
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-13 19:59   ` Rafael J. Wysocki
@ 2013-06-14 12:23     ` Rafael J. Wysocki
  2013-06-14 12:30       ` Alexander E. Patrakov
  2013-06-14 13:57       ` Jiang Liu
  2013-06-14 13:53     ` Jiang Liu
  1 sibling, 2 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-14 12:23 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, Jiang Liu, linux-pci,
	linux-kernel, Rafael J. Wysocki, stable

On Thursday, June 13, 2013 09:59:44 PM Rafael J. Wysocki wrote:
> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
> > Current ACPI glue logic expects that physical devices are destroyed
> > before destroying companion ACPI devices, otherwise it will break the
> > ACPI unbind logic and cause following warning messages:
> > [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
> > [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
> > [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
> > [  180.013656]  port1: Oops, 'acpi_handle' corrupt
> > Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
> > for full log message.
> 
> So my question is, did we have this problem before commit 3b63aaa70e1?
> 
> If we did, then when did it start?  Or was it present forever?
> 
> > Above warning messages are caused by following scenario:
> > 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
> > 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
> >    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
> > 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
> >    destroy physical devices, then destroys all affected ACPI devices.
> >    Everything seems perfect until now. But the acpiphp dock notification
> >    handler will queue another task (T2) onto kacpi_hotplug_wq to really
> >    destroy affected physical devices.
> 
> Would not the solution be to modify it so that it didn't spawn the other
> task (T2), but removed the affected physical devices synchronously?
> 
> > 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
> >    been destroyed.
> > 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
> >    devices.
> > 
> > So it breaks ACPI glue logic's expection because ACPI devices are destroyed
> > in step 3 and physical devices are destroyed in step 5.
> > 
> > Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> > Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: Yinghai Lu <yinghai@kernel.org>
> > Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> > Cc: linux-pci@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > Cc: stable@vger.kernel.org
> > ---
> > Hi Bjorn and Rafael,
> >      The recursive lock changes haven't been tested yet, need help
> > from Alexander for testing.
> 
> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
> here?

What about the appended patch (on top of [1/9], untested)?

Rafael


---
 drivers/pci/hotplug/acpiphp_glue.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
===================================================================
--- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
+++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
@@ -145,9 +145,20 @@ static int post_dock_fixups(struct notif
 	return NOTIFY_OK;
 }
 
+static void handle_dock_event_func(acpi_handle handle, u32 event, void *context)
+{
+	if (event == ACPI_NOTIFY_EJECT_REQUEST) {
+		struct acpiphp_func *func = context;
+
+		if (!acpiphp_disable_slot(func->slot))
+			acpiphp_eject_slot(func->slot);
+	} else {
+		handle_hotplug_event_func(handle, event, context);
+	}
+}
 
 static const struct acpi_dock_ops acpiphp_dock_ops = {
-	.handler = handle_hotplug_event_func,
+	.handler = handle_dock_event_func,
 };
 
 /* Check whether the PCI device is managed by native PCIe hotplug driver */


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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 12:23     ` Rafael J. Wysocki
@ 2013-06-14 12:30       ` Alexander E. Patrakov
  2013-06-14 12:53         ` Rafael J. Wysocki
  2013-06-14 13:57       ` Jiang Liu
  1 sibling, 1 reply; 15+ messages in thread
From: Alexander E. Patrakov @ 2013-06-14 12:30 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Greg Kroah-Hartman,
	Yijing Wang, Jiang Liu, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, Rafael J. Wysocki, stable

2013/6/14 Rafael J. Wysocki <rjw@sisk.pl>:

> What about the appended patch (on top of [1/9], untested)?
>
> Rafael

Sorry, I have lost the track of which patches, on top of 3.10-rc5, I
should include in my testing and which I shouldn't. Could you please
restore my understanding? I.e., please provide a full list of LKML or
Bugzilla links to patches which I should test during the next boot of
the laptop.

Thanks in advance.

> ---
>  drivers/pci/hotplug/acpiphp_glue.c |   13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
>
> Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> ===================================================================
> --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
> +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> @@ -145,9 +145,20 @@ static int post_dock_fixups(struct notif
>         return NOTIFY_OK;
>  }
>
> +static void handle_dock_event_func(acpi_handle handle, u32 event, void *context)
> +{
> +       if (event == ACPI_NOTIFY_EJECT_REQUEST) {
> +               struct acpiphp_func *func = context;
> +
> +               if (!acpiphp_disable_slot(func->slot))
> +                       acpiphp_eject_slot(func->slot);
> +       } else {
> +               handle_hotplug_event_func(handle, event, context);
> +       }
> +}
>
>  static const struct acpi_dock_ops acpiphp_dock_ops = {
> -       .handler = handle_hotplug_event_func,
> +       .handler = handle_dock_event_func,
>  };
>
>  /* Check whether the PCI device is managed by native PCIe hotplug driver */
>



--
Alexander E. Patrakov

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 12:30       ` Alexander E. Patrakov
@ 2013-06-14 12:53         ` Rafael J. Wysocki
  2013-06-14 16:58           ` Alexander E. Patrakov
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-14 12:53 UTC (permalink / raw)
  To: Alexander E. Patrakov
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Greg Kroah-Hartman,
	Yijing Wang, Jiang Liu, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, Rafael J. Wysocki, stable

On Friday, June 14, 2013 06:30:58 PM Alexander E. Patrakov wrote:
> 2013/6/14 Rafael J. Wysocki <rjw@sisk.pl>:
> 
> > What about the appended patch (on top of [1/9], untested)?
> >
> > Rafael
> 
> Sorry, I have lost the track of which patches, on top of 3.10-rc5, I
> should include in my testing and which I shouldn't. Could you please
> restore my understanding? I.e., please provide a full list of LKML or
> Bugzilla links to patches which I should test during the next boot of
> the laptop.
> 
> Thanks in advance.

As far as I'm concerned, please test these two for now:

https://patchwork.kernel.org/patch/2717851/
https://patchwork.kernel.org/patch/2721271/

They are targeted at the ordering problems only, however, so they won't address
the resource allocation issues you're seeing.

There are some other patches Jiang Liu and Yinghai are working on as far as
I can say, but I'm not sure what their status is at the moment.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-13 19:59   ` Rafael J. Wysocki
  2013-06-14 12:23     ` Rafael J. Wysocki
@ 2013-06-14 13:53     ` Jiang Liu
  2013-06-14 14:05       ` Rafael J. Wysocki
  1 sibling, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2013-06-14 13:53 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On 06/14/2013 03:59 AM, Rafael J. Wysocki wrote:
> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
>> Current ACPI glue logic expects that physical devices are destroyed
>> before destroying companion ACPI devices, otherwise it will break the
>> ACPI unbind logic and cause following warning messages:
>> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
>> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
>> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
>> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
>> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
>> for full log message.
> 
> So my question is, did we have this problem before commit 3b63aaa70e1?
> 
> If we did, then when did it start?  Or was it present forever?
I think this issue should exist before commit "PCI: acpiphp: Do not use
ACPI PCI subdriver mechanism". It may trace back to the changes to kill
acpi_pci_bind()/acpi_pci_unbind().

> 
>> Above warning messages are caused by following scenario:
>> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
>> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
>>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
>> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
>>    destroy physical devices, then destroys all affected ACPI devices.
>>    Everything seems perfect until now. But the acpiphp dock notification
>>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
>>    destroy affected physical devices.
> 
> Would not the solution be to modify it so that it didn't spawn the other
> task (T2), but removed the affected physical devices synchronously?
Yes, that's the way I'm going to fix this issue.

> 
>> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
>>    been destroyed.
>> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
>>    devices.
>>
>> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
>> in step 3 and physical devices are destroyed in step 5.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>> Cc: Yinghai Lu <yinghai@kernel.org>
>> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
>> Cc: linux-pci@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Cc: stable@vger.kernel.org
>> ---
>> Hi Bjorn and Rafael,
>>      The recursive lock changes haven't been tested yet, need help
>> from Alexander for testing.
> 
> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
> here?
Yeah, you are right, we encounter other deadlock issue here, as reported
by Alexander. So need to find new solution here.

> 
> Rafael
> 
> 
>> ---
>>  drivers/acpi/dock.c                | 33 +++++++++++++++++++++++++++------
>>  drivers/pci/hotplug/acpiphp_glue.c | 32 ++++++++++++++++++--------------
>>  2 files changed, 45 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
>> index 02b0563..79c8d9e 100644
>> --- a/drivers/acpi/dock.c
>> +++ b/drivers/acpi/dock.c
>> @@ -65,6 +65,7 @@ struct dock_station {
>>  	u32 flags;
>>  	spinlock_t dd_lock;
>>  	struct mutex hp_lock;
>> +	struct task_struct *owner;
>>  	struct list_head dependent_devices;
>>  	struct list_head hotplug_devices;
>>  
>> @@ -131,9 +132,13 @@ static void
>>  dock_add_hotplug_device(struct dock_station *ds,
>>  			struct dock_dependent_device *dd)
>>  {
>> -	mutex_lock(&ds->hp_lock);
>> -	list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
>> -	mutex_unlock(&ds->hp_lock);
>> +	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
>> +		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
>> +	} else {
>> +		mutex_lock(&ds->hp_lock);
>> +		list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
>> +		mutex_unlock(&ds->hp_lock);
>> +	}
>>  }
>>  
>>  /**
>> @@ -147,9 +152,13 @@ static void
>>  dock_del_hotplug_device(struct dock_station *ds,
>>  			struct dock_dependent_device *dd)
>>  {
>> -	mutex_lock(&ds->hp_lock);
>> -	list_del(&dd->hotplug_list);
>> -	mutex_unlock(&ds->hp_lock);
>> +	if (mutex_is_locked(&ds->hp_lock) && ds->owner == current) {
>> +		list_del_init(&dd->hotplug_list);
>> +	} else {
>> +		mutex_lock(&ds->hp_lock);
>> +		list_del_init(&dd->hotplug_list);
>> +		mutex_unlock(&ds->hp_lock);
>> +	}
>>  }
>>  
>>  /**
>> @@ -355,7 +364,17 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>>  {
>>  	struct dock_dependent_device *dd;
>>  
>> +	/*
>> +	 * There is a deadlock scenario as below:
>> +	 *	hotplug_dock_devices()
>> +	 *	    mutex_lock(&ds->hp_lock)
>> +	 *		dd->ops->handler()
>> +	 *		    register_hotplug_dock_device()
>> +	 *			mutex_lock(&ds->hp_lock)
>> +	 * So we need recursive lock scematics here, do it by ourselves.
>> +	 */
>>  	mutex_lock(&ds->hp_lock);
>> +	ds->owner = current;
>>  
>>  	/*
>>  	 * First call driver specific hotplug functions
>> @@ -376,6 +395,8 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>>  		else
>>  			dock_create_acpi_device(dd->handle);
>>  	}
>> +
>> +	ds->owner = NULL;
>>  	mutex_unlock(&ds->hp_lock);
>>  }
>>  
>> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
>> index 716aa93..699b8ca 100644
>> --- a/drivers/pci/hotplug/acpiphp_glue.c
>> +++ b/drivers/pci/hotplug/acpiphp_glue.c
>> @@ -61,6 +61,8 @@ static DEFINE_MUTEX(bridge_mutex);
>>  static void handle_hotplug_event_bridge (acpi_handle, u32, void *);
>>  static void acpiphp_sanitize_bus(struct pci_bus *bus);
>>  static void acpiphp_set_hpp_values(struct pci_bus *bus);
>> +static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
>> +				       void *context);
>>  static void handle_hotplug_event_func(acpi_handle handle, u32 type, void *context);
>>  static void free_bridge(struct kref *kref);
>>  
>> @@ -147,7 +149,7 @@ static int post_dock_fixups(struct notifier_block *nb, unsigned long val,
>>  
>>  
>>  static const struct acpi_dock_ops acpiphp_dock_ops = {
>> -	.handler = handle_hotplug_event_func,
>> +	.handler = _handle_hotplug_event_func,
>>  };
>>  
>>  /* Check whether the PCI device is managed by native PCIe hotplug driver */
>> @@ -1065,22 +1067,13 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type,
>>  	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_bridge);
>>  }
>>  
>> -static void _handle_hotplug_event_func(struct work_struct *work)
>> +static void _handle_hotplug_event_func(acpi_handle handle, u32 type,
>> +				       void *context)
>>  {
>> -	struct acpiphp_func *func;
>> +	struct acpiphp_func *func = context;
>>  	char objname[64];
>>  	struct acpi_buffer buffer = { .length = sizeof(objname),
>>  				      .pointer = objname };
>> -	struct acpi_hp_work *hp_work;
>> -	acpi_handle handle;
>> -	u32 type;
>> -
>> -	hp_work = container_of(work, struct acpi_hp_work, work);
>> -	handle = hp_work->handle;
>> -	type = hp_work->type;
>> -	func = (struct acpiphp_func *)hp_work->context;
>> -
>> -	acpi_scan_lock_acquire();
>>  
>>  	acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
>>  
>> @@ -1113,7 +1106,18 @@ static void _handle_hotplug_event_func(struct work_struct *work)
>>  		warn("notify_handler: unknown event type 0x%x for %s\n", type, objname);
>>  		break;
>>  	}
>> +}
>> +
>> +static void _handle_hotplug_event_cb(struct work_struct *work)
>> +{
>> +	struct acpiphp_func *func;
>> +	struct acpi_hp_work *hp_work;
>>  
>> +	hp_work = container_of(work, struct acpi_hp_work, work);
>> +	func = (struct acpiphp_func *)hp_work->context;
>> +	acpi_scan_lock_acquire();
>> +	_handle_hotplug_event_func(hp_work->handle, hp_work->type,
>> +				    hp_work->context);
>>  	acpi_scan_lock_release();
>>  	kfree(hp_work); /* allocated in handle_hotplug_event_func */
>>  	put_bridge(func->slot->bridge);
>> @@ -1141,7 +1145,7 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
>>  	 * don't deadlock on hotplug actions.
>>  	 */
>>  	get_bridge(func->slot->bridge);
>> -	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_func);
>> +	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_cb);
>>  }
>>  
>>  /*
>>


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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 12:23     ` Rafael J. Wysocki
  2013-06-14 12:30       ` Alexander E. Patrakov
@ 2013-06-14 13:57       ` Jiang Liu
  2013-06-14 14:12         ` Rafael J. Wysocki
  1 sibling, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2013-06-14 13:57 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On 06/14/2013 08:23 PM, Rafael J. Wysocki wrote:
> On Thursday, June 13, 2013 09:59:44 PM Rafael J. Wysocki wrote:
>> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
>>> Current ACPI glue logic expects that physical devices are destroyed
>>> before destroying companion ACPI devices, otherwise it will break the
>>> ACPI unbind logic and cause following warning messages:
>>> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
>>> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
>>> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
>>> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
>>> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
>>> for full log message.
>>
>> So my question is, did we have this problem before commit 3b63aaa70e1?
>>
>> If we did, then when did it start?  Or was it present forever?
>>
>>> Above warning messages are caused by following scenario:
>>> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
>>> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
>>>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
>>> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
>>>    destroy physical devices, then destroys all affected ACPI devices.
>>>    Everything seems perfect until now. But the acpiphp dock notification
>>>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
>>>    destroy affected physical devices.
>>
>> Would not the solution be to modify it so that it didn't spawn the other
>> task (T2), but removed the affected physical devices synchronously?
>>
>>> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
>>>    been destroyed.
>>> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
>>>    devices.
>>>
>>> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
>>> in step 3 and physical devices are destroyed in step 5.
>>>
>>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>>> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>> Cc: Yinghai Lu <yinghai@kernel.org>
>>> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
>>> Cc: linux-pci@vger.kernel.org
>>> Cc: linux-kernel@vger.kernel.org
>>> Cc: stable@vger.kernel.org
>>> ---
>>> Hi Bjorn and Rafael,
>>>      The recursive lock changes haven't been tested yet, need help
>>> from Alexander for testing.
>>
>> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
>> here?
> 
> What about the appended patch (on top of [1/9], untested)?
> 
> Rafael
It should have similar effect as patch 2/9, and it will encounter the
same deadlock scenario as 2/9 too.

> 
> 
> ---
>  drivers/pci/hotplug/acpiphp_glue.c |   13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> ===================================================================
> --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
> +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> @@ -145,9 +145,20 @@ static int post_dock_fixups(struct notif
>  	return NOTIFY_OK;
>  }
>  
> +static void handle_dock_event_func(acpi_handle handle, u32 event, void *context)
> +{
> +	if (event == ACPI_NOTIFY_EJECT_REQUEST) {
> +		struct acpiphp_func *func = context;
> +
> +		if (!acpiphp_disable_slot(func->slot))
> +			acpiphp_eject_slot(func->slot);
> +	} else {
> +		handle_hotplug_event_func(handle, event, context);
> +	}
> +}
>  
>  static const struct acpi_dock_ops acpiphp_dock_ops = {
> -	.handler = handle_hotplug_event_func,
> +	.handler = handle_dock_event_func,
>  };
>  
>  /* Check whether the PCI device is managed by native PCIe hotplug driver */
> 


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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 13:53     ` Jiang Liu
@ 2013-06-14 14:05       ` Rafael J. Wysocki
  0 siblings, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-14 14:05 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On Friday, June 14, 2013 09:53:57 PM Jiang Liu wrote:
> On 06/14/2013 03:59 AM, Rafael J. Wysocki wrote:
> > On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
> >> Current ACPI glue logic expects that physical devices are destroyed
> >> before destroying companion ACPI devices, otherwise it will break the
> >> ACPI unbind logic and cause following warning messages:
> >> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
> >> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
> >> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
> >> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
> >> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
> >> for full log message.
> > 
> > So my question is, did we have this problem before commit 3b63aaa70e1?
> > 
> > If we did, then when did it start?  Or was it present forever?
> I think this issue should exist before commit "PCI: acpiphp: Do not use
> ACPI PCI subdriver mechanism". It may trace back to the changes to kill
> acpi_pci_bind()/acpi_pci_unbind().

I thought so.

> >> Above warning messages are caused by following scenario:
> >> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
> >> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
> >>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
> >> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
> >>    destroy physical devices, then destroys all affected ACPI devices.
> >>    Everything seems perfect until now. But the acpiphp dock notification
> >>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
> >>    destroy affected physical devices.
> > 
> > Would not the solution be to modify it so that it didn't spawn the other
> > task (T2), but removed the affected physical devices synchronously?
> Yes, that's the way I'm going to fix this issue.
> 
> > 
> >> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
> >>    been destroyed.
> >> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
> >>    devices.
> >>
> >> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
> >> in step 3 and physical devices are destroyed in step 5.
> >>
> >> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> >> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> >> Cc: Bjorn Helgaas <bhelgaas@google.com>
> >> Cc: Yinghai Lu <yinghai@kernel.org>
> >> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> >> Cc: linux-pci@vger.kernel.org
> >> Cc: linux-kernel@vger.kernel.org
> >> Cc: stable@vger.kernel.org
> >> ---
> >> Hi Bjorn and Rafael,
> >>      The recursive lock changes haven't been tested yet, need help
> >> from Alexander for testing.
> > 
> > Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
> > here?
> Yeah, you are right, we encounter other deadlock issue here, as reported
> by Alexander. So need to find new solution here.

Can you please have a look at the patch I posted earlier in this thread?

Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 13:57       ` Jiang Liu
@ 2013-06-14 14:12         ` Rafael J. Wysocki
  2013-06-14 15:30           ` Jiang Liu
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-14 14:12 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On Friday, June 14, 2013 09:57:15 PM Jiang Liu wrote:
> On 06/14/2013 08:23 PM, Rafael J. Wysocki wrote:
> > On Thursday, June 13, 2013 09:59:44 PM Rafael J. Wysocki wrote:
> >> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
> >>> Current ACPI glue logic expects that physical devices are destroyed
> >>> before destroying companion ACPI devices, otherwise it will break the
> >>> ACPI unbind logic and cause following warning messages:
> >>> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
> >>> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
> >>> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
> >>> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
> >>> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
> >>> for full log message.
> >>
> >> So my question is, did we have this problem before commit 3b63aaa70e1?
> >>
> >> If we did, then when did it start?  Or was it present forever?
> >>
> >>> Above warning messages are caused by following scenario:
> >>> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
> >>> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
> >>>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
> >>> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
> >>>    destroy physical devices, then destroys all affected ACPI devices.
> >>>    Everything seems perfect until now. But the acpiphp dock notification
> >>>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
> >>>    destroy affected physical devices.
> >>
> >> Would not the solution be to modify it so that it didn't spawn the other
> >> task (T2), but removed the affected physical devices synchronously?
> >>
> >>> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
> >>>    been destroyed.
> >>> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
> >>>    devices.
> >>>
> >>> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
> >>> in step 3 and physical devices are destroyed in step 5.
> >>>
> >>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> >>> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> >>> Cc: Bjorn Helgaas <bhelgaas@google.com>
> >>> Cc: Yinghai Lu <yinghai@kernel.org>
> >>> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> >>> Cc: linux-pci@vger.kernel.org
> >>> Cc: linux-kernel@vger.kernel.org
> >>> Cc: stable@vger.kernel.org
> >>> ---
> >>> Hi Bjorn and Rafael,
> >>>      The recursive lock changes haven't been tested yet, need help
> >>> from Alexander for testing.
> >>
> >> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
> >> here?
> > 
> > What about the appended patch (on top of [1/9], untested)?
> > 
> > Rafael
> It should have similar effect as patch 2/9, and it will encounter the
> same deadlock scenario as 2/9 too.

And why exactly?

I'm looking at acpiphp_disable_slot() and I'm not seeing where the
problematic lock is taken.  Similarly for power_off_slot().

It should take the ACPI scan lock, but that's a different matter.

Thanks,
Rafael


> > ---
> >  drivers/pci/hotplug/acpiphp_glue.c |   13 ++++++++++++-
> >  1 file changed, 12 insertions(+), 1 deletion(-)
> > 
> > Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> > ===================================================================
> > --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
> > +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
> > @@ -145,9 +145,20 @@ static int post_dock_fixups(struct notif
> >  	return NOTIFY_OK;
> >  }
> >  
> > +static void handle_dock_event_func(acpi_handle handle, u32 event, void *context)
> > +{
> > +	if (event == ACPI_NOTIFY_EJECT_REQUEST) {
> > +		struct acpiphp_func *func = context;
> > +
> > +		if (!acpiphp_disable_slot(func->slot))
> > +			acpiphp_eject_slot(func->slot);
> > +	} else {
> > +		handle_hotplug_event_func(handle, event, context);
> > +	}
> > +}
> >  
> >  static const struct acpi_dock_ops acpiphp_dock_ops = {
> > -	.handler = handle_hotplug_event_func,
> > +	.handler = handle_dock_event_func,
> >  };
> >  
> >  /* Check whether the PCI device is managed by native PCIe hotplug driver */
> > 
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 14:12         ` Rafael J. Wysocki
@ 2013-06-14 15:30           ` Jiang Liu
  2013-06-14 23:12             ` Rafael J. Wysocki
  0 siblings, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2013-06-14 15:30 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On 06/14/2013 10:12 PM, Rafael J. Wysocki wrote:
> On Friday, June 14, 2013 09:57:15 PM Jiang Liu wrote:
>> On 06/14/2013 08:23 PM, Rafael J. Wysocki wrote:
>>> On Thursday, June 13, 2013 09:59:44 PM Rafael J. Wysocki wrote:
>>>> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
>>>>> Current ACPI glue logic expects that physical devices are destroyed
>>>>> before destroying companion ACPI devices, otherwise it will break the
>>>>> ACPI unbind logic and cause following warning messages:
>>>>> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
>>>>> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
>>>>> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
>>>>> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
>>>>> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
>>>>> for full log message.
>>>>
>>>> So my question is, did we have this problem before commit 3b63aaa70e1?
>>>>
>>>> If we did, then when did it start?  Or was it present forever?
>>>>
>>>>> Above warning messages are caused by following scenario:
>>>>> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
>>>>> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
>>>>>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
>>>>> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
>>>>>    destroy physical devices, then destroys all affected ACPI devices.
>>>>>    Everything seems perfect until now. But the acpiphp dock notification
>>>>>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
>>>>>    destroy affected physical devices.
>>>>
>>>> Would not the solution be to modify it so that it didn't spawn the other
>>>> task (T2), but removed the affected physical devices synchronously?
>>>>
>>>>> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
>>>>>    been destroyed.
>>>>> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
>>>>>    devices.
>>>>>
>>>>> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
>>>>> in step 3 and physical devices are destroyed in step 5.
>>>>>
>>>>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>>>>> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
>>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>>>> Cc: Yinghai Lu <yinghai@kernel.org>
>>>>> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
>>>>> Cc: linux-pci@vger.kernel.org
>>>>> Cc: linux-kernel@vger.kernel.org
>>>>> Cc: stable@vger.kernel.org
>>>>> ---
>>>>> Hi Bjorn and Rafael,
>>>>>      The recursive lock changes haven't been tested yet, need help
>>>>> from Alexander for testing.
>>>>
>>>> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
>>>> here?
>>>
>>> What about the appended patch (on top of [1/9], untested)?
>>>
>>> Rafael
>> It should have similar effect as patch 2/9, and it will encounter the
>> same deadlock scenario as 2/9 too.
> 
> And why exactly?
> 
> I'm looking at acpiphp_disable_slot() and I'm not seeing where the
> problematic lock is taken.  Similarly for power_off_slot().
> 
> It should take the ACPI scan lock, but that's a different matter.
> 
> Thanks,
> Rafael
The deadlock scenario is the same:
        hotplug_dock_devices()
                mutex_lock(&ds->hp_lock)
                        dd->ops->handler()
				destroy pci bus
                                	unregister_hotplug_dock_device()
                                        	mutex_lock(&ds->hp_lock)


> 
> 
>>> ---
>>>  drivers/pci/hotplug/acpiphp_glue.c |   13 ++++++++++++-
>>>  1 file changed, 12 insertions(+), 1 deletion(-)
>>>
>>> Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
>>> ===================================================================
>>> --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
>>> +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
>>> @@ -145,9 +145,20 @@ static int post_dock_fixups(struct notif
>>>  	return NOTIFY_OK;
>>>  }
>>>  
>>> +static void handle_dock_event_func(acpi_handle handle, u32 event, void *context)
>>> +{
>>> +	if (event == ACPI_NOTIFY_EJECT_REQUEST) {
>>> +		struct acpiphp_func *func = context;
>>> +
>>> +		if (!acpiphp_disable_slot(func->slot))
>>> +			acpiphp_eject_slot(func->slot);
>>> +	} else {
>>> +		handle_hotplug_event_func(handle, event, context);
>>> +	}
>>> +}
>>>  
>>>  static const struct acpi_dock_ops acpiphp_dock_ops = {
>>> -	.handler = handle_hotplug_event_func,
>>> +	.handler = handle_dock_event_func,
>>>  };
>>>  
>>>  /* Check whether the PCI device is managed by native PCIe hotplug driver */
>>>
>>


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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 12:53         ` Rafael J. Wysocki
@ 2013-06-14 16:58           ` Alexander E. Patrakov
  0 siblings, 0 replies; 15+ messages in thread
From: Alexander E. Patrakov @ 2013-06-14 16:58 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Greg Kroah-Hartman,
	Yijing Wang, Jiang Liu, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, Rafael J. Wysocki, stable

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

2013/6/14 Rafael J. Wysocki <rjw@sisk.pl>:
> As far as I'm concerned, please test these two for now:
>
> https://patchwork.kernel.org/patch/2717851/
> https://patchwork.kernel.org/patch/2721271/

Deadlocked on undocking, as already found by code inspection. Dmesg attached.

--
Alexander E. Patrakov

[-- Attachment #2: dmesg.txt --]
[-- Type: text/plain, Size: 88459 bytes --]

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-rc5-rafael (root@aep-vaio) (gcc version 4.6.3 (Gentoo 4.6.3 p1.11, pie-0.5.2) ) #1 SMP PREEMPT Fri Jun 14 22:46:04 YEKT 2013
[    0.000000] Command line: root=/dev/vaio/gentoo64a-root rd.luks.uuid=luks-54ed2bf3-fb3d-4442-b8be-2f0cfda6a521 acpiphp.debug=1 initrd=/boot/initramfs.img.bisect BOOT_IMAGE=/boot/vmlinuz.bisect 
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008f3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000009ae3efff] usable
[    0.000000] BIOS-e820: [mem 0x000000009ae3f000-0x000000009aebefff] reserved
[    0.000000] BIOS-e820: [mem 0x000000009aebf000-0x000000009afbefff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000009afbf000-0x000000009affefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000009afff000-0x000000009affffff] usable
[    0.000000] BIOS-e820: [mem 0x000000009b000000-0x000000009f9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feb00000-0x00000000feb03fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd80000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000025fdfffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.6 present.
[    0.000000] DMI: Sony Corporation VPCZ23A4R/VAIO, BIOS R1013H5 05/21/2012
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x25fe00 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-E7FFF write-protect
[    0.000000]   E8000-EFFFF write-combining
[    0.000000]   F0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask F80000000 write-back
[    0.000000]   1 base 080000000 mask FE0000000 write-back
[    0.000000]   2 base 09B000000 mask FFF000000 uncachable
[    0.000000]   3 base 09C000000 mask FFC000000 uncachable
[    0.000000]   4 base 0FFC00000 mask FFFC00000 write-protect
[    0.000000]   5 base 100000000 mask F00000000 write-back
[    0.000000]   6 base 200000000 mask FC0000000 write-back
[    0.000000]   7 base 240000000 mask FF0000000 write-back
[    0.000000]   8 base 250000000 mask FF0000000 write-back
[    0.000000]   9 base 25FE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] e820: last_pfn = 0x9b000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000fe1b0-0x000fe1bf] mapped at [ffff8800000fe1b0]
[    0.000000] Base memory trampoline at [ffff880000089000] 89000 size 24576
[    0.000000] reserving inaccessible SNB gfx pages
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x026ba000, 0x026bafff] PGTABLE
[    0.000000] BRK [0x026bb000, 0x026bbfff] PGTABLE
[    0.000000] BRK [0x026bc000, 0x026bcfff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x25fc00000-0x25fdfffff]
[    0.000000]  [mem 0x25fc00000-0x25fdfffff] page 2M
[    0.000000] BRK [0x026bd000, 0x026bdfff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x25c000000-0x25fbfffff]
[    0.000000]  [mem 0x25c000000-0x25fbfffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x200000000-0x25bffffff]
[    0.000000]  [mem 0x200000000-0x25bffffff] page 2M
[    0.000000] BRK [0x026be000, 0x026befff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x00100000-0x9ae3efff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x9adfffff] page 2M
[    0.000000]  [mem 0x9ae00000-0x9ae3efff] page 4k
[    0.000000] init_memory_mapping: [mem 0x9afff000-0x9affffff]
[    0.000000]  [mem 0x9afff000-0x9affffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x100000000-0x1ffffffff]
[    0.000000]  [mem 0x100000000-0x1ffffffff] page 2M
[    0.000000] RAMDISK: [mem 0x7fac3000-0x7fffefff]
[    0.000000] ACPI: RSDP 00000000000fe020 00024 (v02   Sony)
[    0.000000] ACPI: XSDT 000000009affe120 00094 (v01   Sony     VAIO 20120521      01000013)
[    0.000000] ACPI: FACP 000000009affc000 000F4 (v04   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: DSDT 000000009aff0000 08607 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: FACS 000000009af6e000 00040
[    0.000000] ACPI: ASF! 000000009affd000 000A5 (v32   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: HPET 000000009affb000 00038 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: APIC 000000009affa000 0008C (v02   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: MCFG 000000009aff9000 0003C (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SLIC 000000009afef000 00176 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: WDAT 000000009afee000 00224 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SSDT 000000009afed000 00CA6 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: BOOT 000000009afeb000 00028 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SSDT 000000009afe9000 0022B (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: ASPT 000000009afe6000 00034 (v07   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SSDT 000000009afe5000 00846 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SSDT 000000009afe4000 00996 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: SSDT 000000009afe3000 00EE8 (v01   Sony     VAIO 20120521 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000025fdfffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x25fdfffff]
[    0.000000]   NODE_DATA [mem 0x25fdf4000-0x25fdf8fff]
[    0.000000]  [ffffea0000000000-ffffea00097fffff] PMD -> [ffff880257400000-ffff88025f3fffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x25fdfffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00100000-0x9ae3efff]
[    0.000000]   node   0: [mem 0x9afff000-0x9affffff]
[    0.000000]   node   0: [mem 0x100000000-0x25fdfffff]
[    0.000000] On node 0 totalpages: 2075598
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 142 pages reserved
[    0.000000]   DMA zone: 3982 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 9849 pages used for memmap
[    0.000000]   DMA32 zone: 630336 pages, LIFO batch:31
[    0.000000]   Normal zone: 22520 pages used for memmap
[    0.000000]   Normal zone: 1441280 pages, LIFO batch:31
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled)
[    0.000000] ACPI: IOAPIC (id[0x00] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[    0.000000] nr_irqs_gsi: 40
[    0.000000] PM: Registered nosave memory: 000000000008f000 - 0000000000090000
[    0.000000] PM: Registered nosave memory: 0000000000090000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
[    0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
[    0.000000] PM: Registered nosave memory: 000000009ae3f000 - 000000009aebf000
[    0.000000] PM: Registered nosave memory: 000000009aebf000 - 000000009afbf000
[    0.000000] PM: Registered nosave memory: 000000009afbf000 - 000000009afff000
[    0.000000] PM: Registered nosave memory: 000000009b000000 - 000000009fa00000
[    0.000000] PM: Registered nosave memory: 000000009fa00000 - 00000000e0000000
[    0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000
[    0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000feb00000
[    0.000000] PM: Registered nosave memory: 00000000feb00000 - 00000000feb04000
[    0.000000] PM: Registered nosave memory: 00000000feb04000 - 00000000fec00000
[    0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000
[    0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000
[    0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed1a000
[    0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1c000
[    0.000000] PM: Registered nosave memory: 00000000fed1c000 - 00000000fed20000
[    0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000
[    0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000
[    0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffd80000
[    0.000000] PM: Registered nosave memory: 00000000ffd80000 - 0000000100000000
[    0.000000] e820: [mem 0x9fa00000-0xdfffffff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] PERCPU: Embedded 28 pages/cpu @ffff88025fa00000 s83904 r8192 d22592 u262144
[    0.000000] pcpu-alloc: s83904 r8192 d22592 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 2043023
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: root=/dev/vaio/gentoo64a-root rd.luks.uuid=luks-54ed2bf3-fb3d-4442-b8be-2f0cfda6a521 acpiphp.debug=1 initrd=/boot/initramfs.img.bisect BOOT_IMAGE=/boot/vmlinuz.bisect 
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] xsave: enabled xstate_bv 0x7, cntxt size 0x340
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000] Memory: 8074252k/9959424k available (6576k kernel code, 1657032k absent, 228140k reserved, 6466k data, 980k init)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	CONFIG_RCU_FANOUT set to non-default value of 32
[    0.000000] 	Additional per-CPU info printed with stalls.
[    0.000000] NR_IRQS:4352 nr_irqs:744 16
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
[    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
[    0.000000] ... CHAINHASH_SIZE:          16384
[    0.000000]  memory used by lock dependency info: 5855 kB
[    0.000000]  per task-struct memory footprint: 1920 bytes
[    0.000000] allocated 33554432 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] kmemleak: Kernel memory leak detector disabled
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.001000] tsc: Detected 2793.681 MHz processor
[    0.000002] Calibrating delay loop (skipped), value calculated using timer frequency.. 5587.36 BogoMIPS (lpj=2793681)
[    0.000123] pid_max: default: 32768 minimum: 301
[    0.000240] Security Framework initialized
[    0.000824] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
[    0.002404] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.003106] Mount-cache hash table entries: 256
[    0.003770] Initializing cgroup subsys memory
[    0.003850] Initializing cgroup subsys devices
[    0.003934] Initializing cgroup subsys freezer
[    0.004485] Initializing cgroup subsys blkio
[    0.004543] Initializing cgroup subsys net_prio
[    0.004602] Initializing cgroup subsys hugetlb
[    0.004704] CPU: Physical Processor ID: 0
[    0.004762] CPU: Processor Core ID: 0
[    0.004821] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.004917] mce: CPU supports 7 MCE banks
[    0.004983] CPU0: Thermal monitoring enabled (TM1)
[    0.005053] Last level iTLB entries: 4KB 512, 2MB 0, 4MB 0
Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32
tlb_flushall_shift: 5
[    0.005316] Freeing SMP alternatives: 24k freed
[    0.005381] ACPI: Core revision 20130328
[    0.016551] ACPI: All ACPI Tables successfully acquired
[    0.028796] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.038872] smpboot: CPU0: Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz (fam: 06, model: 2a, stepping: 07)
[    0.039077] TSC deadline timer enabled
[    0.039091] Performance Events: PEBS fmt1+, 16-deep LBR, SandyBridge events, Intel PMU driver.
[    0.039328] perf_event_intel: PEBS disabled due to CPU errata, please upgrade microcode
[    0.039410] ... version:                3
[    0.039468] ... bit width:              48
[    0.039526] ... generic registers:      4
[    0.039583] ... value mask:             0000ffffffffffff
[    0.039643] ... max period:             000000007fffffff
[    0.039702] ... fixed-purpose events:   3
[    0.039760] ... event mask:             000000070000000f
[    0.049455] SMP alternatives: lockdep: fixing up alternatives
[    0.063007] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.049534] smpboot: Booting Node   0, Processors  #1
[    0.064942] SMP alternatives: lockdep: fixing up alternatives
[    0.065054]  #2
[    0.080505] SMP alternatives: lockdep: fixing up alternatives
[    0.080620]  #3
[    0.093944] Brought up 4 CPUs
[    0.094053] smpboot: Total of 4 processors activated (22349.44 BogoMIPS)
[    0.097680] devtmpfs: initialized
[    0.100259] PM: Registering ACPI NVS region [mem 0x9aebf000-0x9afbefff] (1048576 bytes)
[    0.100594] xor: automatically using best checksumming function:
[    0.110038]    avx       : 20480.000 MB/sec
[    0.110274] NET: Registered protocol family 16
[    0.110693] ACPI: bus type PCI registered
[    0.110752] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.110885] dca service started, version 1.12.1
[    0.111003] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.111088] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[    0.133640] PCI: Using configuration type 1 for base access
[    0.135746] bio: create slab <bio-0> at 0
[    0.152215] raid6: sse2x1    7582 MB/s
[    0.169264] raid6: sse2x2    9378 MB/s
[    0.186315] raid6: sse2x4   10820 MB/s
[    0.186374] raid6: using algorithm sse2x4 (10820 MB/s)
[    0.186434] raid6: using ssse3x2 recovery algorithm
[    0.186569] ACPI: Added _OSI(Module Device)
[    0.186628] ACPI: Added _OSI(Processor Device)
[    0.186687] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.186747] ACPI: Added _OSI(Processor Aggregator Device)
[    0.191384] ACPI: EC: Look up EC in DSDT
[    0.195887] ACPI: Executed 1 blocks of module-level executable AML code
[    0.204544] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.212409] ACPI: SSDT 000000009ae70718 0067C (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.213729] ACPI: Dynamic OEM Table Load:
[    0.213865] ACPI: SSDT           (null) 0067C (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.218783] ACPI: SSDT 000000009ae71a98 00303 (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.220164] ACPI: Dynamic OEM Table Load:
[    0.220300] ACPI: SSDT           (null) 00303 (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.223695] ACPI: SSDT 000000009ae6fd98 00119 (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.225019] ACPI: Dynamic OEM Table Load:
[    0.225155] ACPI: SSDT           (null) 00119 (v01   Sony     VAIO 20120521 INTL 20100121)
[    0.636793] ACPI: Interpreter enabled
[    0.636856] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20130328/hwxface-568)
[    0.637017] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20130328/hwxface-568)
[    0.637205] ACPI: (supports S0 S3 S4 S5)
[    0.637264] ACPI: Using IOAPIC for interrupt routing
[    0.637357] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.638381] ACPI: ACPI Dock Station Driver: 1 docks/bays found
[    0.656417] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[    0.656595] \_SB_.PCI0:_OSC invalid UUID
[    0.656597] _OSC request data:1 8 0 
[    0.657641] PCI host bridge to bus 0000:00
[    0.657702] pci_bus 0000:00: root bus resource [bus 00-fe]
[    0.657763] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.657826] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.657889] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.657952] pci_bus 0000:00: root bus resource [mem 0x9fa00000-0xfeafffff]
[    0.658049] pci 0000:00:00.0: [8086:0104] type 00 class 0x060000
[    0.658258] pci 0000:00:02.0: [8086:0126] type 00 class 0x030000
[    0.658274] pci 0000:00:02.0: reg 10: [mem 0xd0000000-0xd03fffff 64bit]
[    0.658282] pci 0000:00:02.0: reg 18: [mem 0xa0000000-0xafffffff 64bit pref]
[    0.658289] pci 0000:00:02.0: reg 20: [io  0xa000-0xa03f]
[    0.658478] pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
[    0.658517] pci 0000:00:16.0: reg 10: [mem 0xd9404000-0xd940400f 64bit]
[    0.658650] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[    0.658830] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[    0.659124] pci 0000:00:1a.0: reg 10: [mem 0xd9409000-0xd94093ff]
[    0.660827] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.660921] pci 0000:00:1a.0: System wakeup disabled by ACPI
[    0.661095] pci 0000:00:1b.0: [8086:1c20] type 00 class 0x040300
[    0.661124] pci 0000:00:1b.0: reg 10: [mem 0xd9400000-0xd9403fff 64bit]
[    0.661264] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.661318] pci 0000:00:1b.0: System wakeup disabled by ACPI
[    0.661440] pci 0000:00:1c.0: [8086:1c10] type 01 class 0x060400
[    0.661582] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.661642] pci 0000:00:1c.0: System wakeup disabled by ACPI
[    0.661765] pci 0000:00:1c.1: [8086:1c12] type 01 class 0x060400
[    0.661910] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.661973] pci 0000:00:1c.1: System wakeup disabled by ACPI
[    0.662092] pci 0000:00:1c.2: [8086:1c14] type 01 class 0x060400
[    0.662233] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.662297] pci 0000:00:1c.2: System wakeup disabled by ACPI
[    0.662415] pci 0000:00:1c.3: [8086:1c16] type 01 class 0x060400
[    0.662556] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[    0.662623] pci 0000:00:1c.3: System wakeup disabled by ACPI
[    0.662747] pci 0000:00:1c.6: [8086:1c1c] type 01 class 0x060400
[    0.662898] pci 0000:00:1c.6: PME# supported from D0 D3hot D3cold
[    0.662971] pci 0000:00:1c.6: System wakeup disabled by ACPI
[    0.663103] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[    0.663398] pci 0000:00:1d.0: reg 10: [mem 0xd9408000-0xd94083ff]
[    0.665110] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.665176] pci 0000:00:1d.0: System wakeup disabled by ACPI
[    0.665296] pci 0000:00:1f.0: [8086:1c4b] type 00 class 0x060100
[    0.665537] pci 0000:00:1f.2: [8086:282a] type 00 class 0x010400
[    0.665575] pci 0000:00:1f.2: reg 10: [io  0xa088-0xa08f]
[    0.665591] pci 0000:00:1f.2: reg 14: [io  0xa094-0xa097]
[    0.665605] pci 0000:00:1f.2: reg 18: [io  0xa080-0xa087]
[    0.665620] pci 0000:00:1f.2: reg 1c: [io  0xa090-0xa093]
[    0.665635] pci 0000:00:1f.2: reg 20: [io  0xa060-0xa07f]
[    0.665650] pci 0000:00:1f.2: reg 24: [mem 0xd9407000-0xd94077ff]
[    0.665748] pci 0000:00:1f.2: PME# supported from D3hot
[    0.665863] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[    0.665891] pci 0000:00:1f.3: reg 10: [mem 0xd9405000-0xd94050ff 64bit]
[    0.665937] pci 0000:00:1f.3: reg 20: [io  0xa040-0xa05f]
[    0.666491] pci 0000:02:00.0: [8086:0091] type 00 class 0x028000
[    0.666815] pci 0000:02:00.0: reg 10: [mem 0xd8400000-0xd8401fff 64bit]
[    0.668322] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
[    0.668498] pci 0000:02:00.0: System wakeup disabled by ACPI
[    0.670137] pci 0000:00:1c.0: PCI bridge to [bus 02]
[    0.670202] pci 0000:00:1c.0:   bridge window [io  0x9000-0x9fff]
[    0.670208] pci 0000:00:1c.0:   bridge window [mem 0xd8400000-0xd93fffff]
[    0.670218] pci 0000:00:1c.0:   bridge window [mem 0xd0400000-0xd13fffff 64bit pref]
[    0.670370] pci 0000:03:00.0: [10ec:5209] type 00 class 0xff0000
[    0.670399] pci 0000:03:00.0: reg 10: [mem 0xd7400000-0xd7400fff]
[    0.670606] pci 0000:03:00.0: supports D1 D2
[    0.670607] pci 0000:03:00.0: PME# supported from D1 D2 D3hot
[    0.670659] pci 0000:03:00.0: System wakeup disabled by ACPI
[    0.672013] pci 0000:00:1c.1: PCI bridge to [bus 03]
[    0.672104] pci 0000:00:1c.1:   bridge window [io  0x8000-0x8fff]
[    0.672110] pci 0000:00:1c.1:   bridge window [mem 0xd7400000-0xd83fffff]
[    0.672120] pci 0000:00:1c.1:   bridge window [mem 0xd1400000-0xd23fffff 64bit pref]
[    0.672323] pci 0000:04:00.0: [1033:0194] type 00 class 0x0c0330
[    0.672360] pci 0000:04:00.0: reg 10: [mem 0xd6400000-0xd6401fff 64bit]
[    0.672568] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
[    0.672627] pci 0000:04:00.0: System wakeup disabled by ACPI
[    0.672767] pci 0000:00:1c.2: PCI bridge to [bus 04]
[    0.672831] pci 0000:00:1c.2:   bridge window [io  0x7000-0x7fff]
[    0.672837] pci 0000:00:1c.2:   bridge window [mem 0xd6400000-0xd73fffff]
[    0.672846] pci 0000:00:1c.2:   bridge window [mem 0xd2400000-0xd33fffff 64bit pref]
[    0.673056] pci 0000:05:00.0: [10ec:8168] type 00 class 0x020000
[    0.673131] pci 0000:05:00.0: reg 10: [io  0x6000-0x60ff]
[    0.673266] pci 0000:05:00.0: reg 18: [mem 0xd3404000-0xd3404fff 64bit pref]
[    0.673348] pci 0000:05:00.0: reg 20: [mem 0xd3400000-0xd3403fff 64bit pref]
[    0.673715] pci 0000:05:00.0: supports D1 D2
[    0.673717] pci 0000:05:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.673853] pci 0000:05:00.0: System wakeup disabled by ACPI
[    0.676069] pci 0000:00:1c.3: PCI bridge to [bus 05]
[    0.676149] pci 0000:00:1c.3:   bridge window [io  0x6000-0x6fff]
[    0.676155] pci 0000:00:1c.3:   bridge window [mem 0xd5400000-0xd63fffff]
[    0.676164] pci 0000:00:1c.3:   bridge window [mem 0xd3400000-0xd43fffff 64bit pref]
[    0.676318] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:08:00
[    0.676438] acpiphp: Slot [1] registered
[    0.676549] pci 0000:00:1c.6: PCI bridge to [bus 08-20]
[    0.676614] pci 0000:00:1c.6:   bridge window [io  0x3000-0x5fff]
[    0.676620] pci 0000:00:1c.6:   bridge window [mem 0xb0000000-0xcfffffff]
[    0.676630] pci 0000:00:1c.6:   bridge window [mem 0xd4400000-0xd53fffff 64bit pref]
[    0.676738] \_SB_.PCI0:_OSC invalid UUID
[    0.676739] _OSC request data:1 1f 0 
[    0.676743] acpi PNP0A08:00: ACPI _OSC support notification failed, disabling PCIe ASPM
[    0.676820] acpi PNP0A08:00: Unable to request _OSC control (_OSC support mask: 0x08)
[    0.678582] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 10 11 12 14 15) *7
[    0.679270] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.679899] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.680529] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.681158] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 10 11 12 14 15) *7
[    0.681834] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.682555] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.683184] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.684584] ACPI: Enabled 6 GPEs in block 00 to 3F
[    0.684727] acpi root: \_SB_.PCI0 notify handler is installed
[    0.684876] Found 1 acpi root devices
[    0.685004] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[    0.685404] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.685487] vgaarb: loaded
[    0.685542] vgaarb: bridge control possible 0000:00:02.0
[    0.685678] SCSI subsystem initialized
[    0.685737] ACPI: bus type ATA registered
[    0.685878] libata version 3.00 loaded.
[    0.685892] ACPI: bus type USB registered
[    0.685975] usbcore: registered new interface driver usbfs
[    0.686049] usbcore: registered new interface driver hub
[    0.686144] usbcore: registered new device driver usb
[    0.686249] PCI: Using ACPI for IRQ routing
[    0.694351] PCI: pci_cache_line_size set to 64 bytes
[    0.694539] e820: reserve RAM buffer [mem 0x0008f400-0x0008ffff]
[    0.694547] e820: reserve RAM buffer [mem 0x9ae3f000-0x9bffffff]
[    0.694549] e820: reserve RAM buffer [mem 0x9b000000-0x9bffffff]
[    0.694551] e820: reserve RAM buffer [mem 0x25fe00000-0x25fffffff]
[    0.694900] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.695320] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.697404] Switching to clocksource hpet
[    0.704037] pnp: PnP ACPI init
[    0.704123] ACPI: bus type PNP registered
[    0.704293] pnp 00:00: [dma 4]
[    0.704348] pnp 00:00: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.704386] pnp 00:01: Plug and Play ACPI device, IDs INT0800 (active)
[    0.704508] pnp 00:02: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.704561] pnp 00:03: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.704636] system 00:04: [io  0x0680-0x069f] has been reserved
[    0.704699] system 00:04: [io  0x1000-0x100f] has been reserved
[    0.704761] system 00:04: [io  0xffff] has been reserved
[    0.704822] system 00:04: [io  0xffff] has been reserved
[    0.704884] system 00:04: [io  0x0400-0x0453] has been reserved
[    0.704946] system 00:04: [io  0x0458-0x047f] has been reserved
[    0.705007] system 00:04: [io  0x0500-0x057f] has been reserved
[    0.705069] system 00:04: [io  0x164e-0x164f] has been reserved
[    0.705131] system 00:04: [io  0x2000] has been reserved
[    0.705192] system 00:04: [io  0x2004] has been reserved
[    0.705255] system 00:04: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.705299] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.705364] system 00:06: [io  0x0454-0x0457] has been reserved
[    0.705428] system 00:06: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[    0.705479] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.705538] pnp 00:08: Plug and Play ACPI device, IDs SNY9015 PNP0f13 (active)
[    0.705727] system 00:09: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.705792] system 00:09: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.705855] system 00:09: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.705919] system 00:09: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.705982] system 00:09: [mem 0xe0000000-0xefffffff] has been reserved
[    0.706045] system 00:09: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.706109] system 00:09: [mem 0xfed90000-0xfed93fff] has been reserved
[    0.706173] system 00:09: [mem 0xff000000-0xffffffff] could not be reserved
[    0.706239] system 00:09: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.706303] system 00:09: [mem 0x9fa00000-0x9fa00fff] has been reserved
[    0.706368] system 00:09: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.707160] system 00:0a: [mem 0x20000000-0x201fffff] could not be reserved
[    0.707231] system 00:0a: [mem 0x40000000-0x401fffff] could not be reserved
[    0.707302] system 00:0a: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.707323] pnp: PnP ACPI: found 11 devices
[    0.707382] ACPI: bus type PNP unregistered
[    0.715692] pci 0000:00:1c.0: PCI bridge to [bus 02]
[    0.715757] pci 0000:00:1c.0:   bridge window [io  0x9000-0x9fff]
[    0.715825] pci 0000:00:1c.0:   bridge window [mem 0xd8400000-0xd93fffff]
[    0.715892] pci 0000:00:1c.0:   bridge window [mem 0xd0400000-0xd13fffff 64bit pref]
[    0.715975] pci 0000:00:1c.1: PCI bridge to [bus 03]
[    0.716036] pci 0000:00:1c.1:   bridge window [io  0x8000-0x8fff]
[    0.716104] pci 0000:00:1c.1:   bridge window [mem 0xd7400000-0xd83fffff]
[    0.716659] pci 0000:00:1c.1:   bridge window [mem 0xd1400000-0xd23fffff 64bit pref]
[    0.716743] pci 0000:00:1c.2: PCI bridge to [bus 04]
[    0.716805] pci 0000:00:1c.2:   bridge window [io  0x7000-0x7fff]
[    0.716873] pci 0000:00:1c.2:   bridge window [mem 0xd6400000-0xd73fffff]
[    0.716940] pci 0000:00:1c.2:   bridge window [mem 0xd2400000-0xd33fffff 64bit pref]
[    0.717024] pci 0000:00:1c.3: PCI bridge to [bus 05]
[    0.717085] pci 0000:00:1c.3:   bridge window [io  0x6000-0x6fff]
[    0.717152] pci 0000:00:1c.3:   bridge window [mem 0xd5400000-0xd63fffff]
[    0.717218] pci 0000:00:1c.3:   bridge window [mem 0xd3400000-0xd43fffff 64bit pref]
[    0.717301] pci 0000:00:1c.6: PCI bridge to [bus 08-20]
[    0.717364] pci 0000:00:1c.6:   bridge window [io  0x3000-0x5fff]
[    0.717432] pci 0000:00:1c.6:   bridge window [mem 0xb0000000-0xcfffffff]
[    0.717499] pci 0000:00:1c.6:   bridge window [mem 0xd4400000-0xd53fffff 64bit pref]
[    0.718011] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.718013] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.718015] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.718017] pci_bus 0000:00: resource 7 [mem 0x9fa00000-0xfeafffff]
[    0.718019] pci_bus 0000:02: resource 0 [io  0x9000-0x9fff]
[    0.718020] pci_bus 0000:02: resource 1 [mem 0xd8400000-0xd93fffff]
[    0.718022] pci_bus 0000:02: resource 2 [mem 0xd0400000-0xd13fffff 64bit pref]
[    0.718024] pci_bus 0000:03: resource 0 [io  0x8000-0x8fff]
[    0.718026] pci_bus 0000:03: resource 1 [mem 0xd7400000-0xd83fffff]
[    0.718027] pci_bus 0000:03: resource 2 [mem 0xd1400000-0xd23fffff 64bit pref]
[    0.718029] pci_bus 0000:04: resource 0 [io  0x7000-0x7fff]
[    0.718031] pci_bus 0000:04: resource 1 [mem 0xd6400000-0xd73fffff]
[    0.718032] pci_bus 0000:04: resource 2 [mem 0xd2400000-0xd33fffff 64bit pref]
[    0.718034] pci_bus 0000:05: resource 0 [io  0x6000-0x6fff]
[    0.718036] pci_bus 0000:05: resource 1 [mem 0xd5400000-0xd63fffff]
[    0.718037] pci_bus 0000:05: resource 2 [mem 0xd3400000-0xd43fffff 64bit pref]
[    0.718039] pci_bus 0000:08: resource 0 [io  0x3000-0x5fff]
[    0.718041] pci_bus 0000:08: resource 1 [mem 0xb0000000-0xcfffffff]
[    0.718043] pci_bus 0000:08: resource 2 [mem 0xd4400000-0xd53fffff 64bit pref]
[    0.718089] NET: Registered protocol family 2
[    0.718605] TCP established hash table entries: 65536 (order: 8, 1048576 bytes)
[    0.719082] TCP bind hash table entries: 65536 (order: 10, 4194304 bytes)
[    0.722572] TCP: Hash tables configured (established 65536 bind 65536)
[    0.722689] TCP: reno registered
[    0.722794] UDP hash table entries: 4096 (order: 7, 655360 bytes)
[    0.723338] UDP-Lite hash table entries: 4096 (order: 7, 655360 bytes)
[    0.724049] NET: Registered protocol family 1
[    0.724123] pci 0000:00:02.0: Boot video device
[    0.758061] PCI: CLS 64 bytes, default 64
[    0.758218] Unpacking initramfs...
[    0.843018] Freeing initrd memory: 5360k freed
[    0.843798] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.843866] software IO TLB [mem 0x96e3f000-0x9ae3f000] (64MB) mapped at [ffff880096e3f000-ffff88009ae3efff]
[    0.843979] Simple Boot Flag at 0x44 set to 0x1
[    0.844647] audit: initializing netlink socket (disabled)
[    0.844755] type=2000 audit(1371228900.822:1): initialized
[    0.865363] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.868000] VFS: Disk quotas dquot_6.5.2
[    0.868112] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.868767] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.869134] NILFS version 2 loaded
[    0.869386] bio: create slab <bio-1> at 1
[    0.869722] Btrfs loaded
[    0.869784] msgmni has been set to 15780
[    0.870480] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.870568] io scheduler noop registered
[    0.870626] io scheduler deadline registered
[    0.870764] io scheduler cfq registered (default)
[    0.871328] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.871472] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.871534] cpcihp_zt5550: ZT5550 CompactPCI Hot Plug Driver version: 0.2
[    0.871617] cpcihp_generic: Generic port I/O CompactPCI Hot Plug Driver version: 0.1
[    0.871692] cpcihp_generic: not configured, disabling.
[    0.871788] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.874468] acpiphp_ibm: ibm_acpiphp_init: acpi_walk_namespace failed
[    0.874976] intel_idle: MWAIT substates: 0x21120
[    0.874978] intel_idle: v0.4 model 0x2A
[    0.874979] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.875138] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
[    0.875385] ACPI: AC Adapter [ADP1] (off-line)
[    0.875678] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0
[    0.875806] ACPI: Lid Switch [LID0]
[    0.875912] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1
[    0.876019] ACPI: Power Button [PWRB]
[    0.876182] ACPI: Requesting acpi_cpufreq
[    0.883717] thermal LNXTHERM:00: registered as thermal_zone0
[    0.883799] ACPI: Thermal Zone [TZ01] (64 C)
[    0.883981] ioatdma: Intel(R) QuickData Technology Driver 4.00
[    0.884163] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.888909] loop: module loaded
[    0.889346] mei_me 0000:00:16.0: setting latency timer to 64
[    0.889466] mei_me 0000:00:16.0: irq 40 for MSI/MSI-X
[    0.890358] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
[    0.890449] ACPI: Battery Slot [BAT1] (battery present)
[    0.890622] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
[    0.890710] ACPI: Battery Slot [BAT2] (battery absent)
[    0.895097] Loading iSCSI transport class v2.0-870.
[    0.895300] iscsi: registered transport (tcp)
[    0.895426] ahci 0000:00:1f.2: version 3.0
[    0.895602] ahci 0000:00:1f.2: irq 41 for MSI/MSI-X
[    0.895680] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 0x3 impl RAID mode
[    0.895769] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part apst 
[    0.895848] ahci 0000:00:1f.2: setting latency timer to 64
[    0.896842] scsi0 : ahci
[    0.897119] scsi1 : ahci
[    0.897275] scsi2 : ahci
[    0.897436] scsi3 : ahci
[    0.897593] scsi4 : ahci
[    0.897752] scsi5 : ahci
[    0.897868] ata1: SATA max UDMA/133 abar m2048@0xd9407000 port 0xd9407100 irq 41
[    0.897945] ata2: SATA max UDMA/133 abar m2048@0xd9407000 port 0xd9407180 irq 41
[    0.898020] ata3: DUMMY
[    0.898074] ata4: DUMMY
[    0.898147] ata5: DUMMY
[    0.898202] ata6: DUMMY
[    0.898471] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[    0.901277] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.901530] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.901790] mousedev: PS/2 mouse device common for all mice
[    0.902308] rtc_cmos 00:05: RTC can wake from S4
[    0.902614] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
[    0.902711] rtc_cmos 00:05: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    0.902858] Intel P-state driver initializing.
[    0.902937] Intel pstate controlling: cpu 0
[    0.903073] Intel pstate controlling: cpu 1
[    0.903151] Intel pstate controlling: cpu 2
[    0.903227] Intel pstate controlling: cpu 3
[    0.903513] cpuidle: using governor ladder
[    0.904053] cpuidle: using governor menu
[    0.904117] ledtrig-cpu: registered to indicate activity on CPUs
[    0.904194] hidraw: raw HID events driver (C) Jiri Kosina
[    0.904490] TCP: cubic registered
[    0.904549] Initializing XFRM netlink socket
[    0.904778] NET: Registered protocol family 10
[    0.905265] NET: Registered protocol family 17
[    0.905405] Key type dns_resolver registered
[    0.905888] PM: Hibernation image not present or could not be loaded.
[    0.905909] registered taskstats version 1
[    0.907132] rtc_cmos 00:05: setting system clock to 2013-06-14 16:55:01 UTC (1371228901)
[    0.921175] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
[    1.203290] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    1.203430] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    1.204240] ata2.00: ATA-8: SAMSUNG MZRPC256HADR-000SO, CXM05S1Q, max UDMA/133
[    1.204345] ata2.00: 250069680 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    1.204453] ata1.00: ATA-8: SAMSUNG MZRPC256HADR-000SO, CXM05S1Q, max UDMA/133
[    1.204564] ata1.00: 250069680 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    1.205102] ata1.00: configured for UDMA/133
[    1.205300] ata2.00: configured for UDMA/133
[    1.206248] scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG MZRPC256 CXM0 PQ: 0 ANSI: 5
[    1.207255] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
[    1.207681] sd 0:0:0:0: [sda] Write Protect is off
[    1.207750] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.207814] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.207843] scsi 1:0:0:0: Direct-Access     ATA      SAMSUNG MZRPC256 CXM0 PQ: 0 ANSI: 5
[    1.208061] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
[    1.208359] sd 1:0:0:0: [sdb] Write Protect is off
[    1.208429] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.208497] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.209317]  sda: sda1 sda2
[    1.209319]  sdb: unknown partition table
[    1.209885] sda: p2 size 489641984 extends beyond EOD, enabling native capacity
[    1.210414] sd 1:0:0:0: [sdb] Attached SCSI disk
[    1.211395]  sda: sda1 sda2
[    1.211652] sda: p2 size 489641984 extends beyond EOD, truncated
[    1.212312] sd 0:0:0:0: [sda] Attached SCSI disk
[    1.213331] Freeing unused kernel memory: 980k freed
[    1.213503] Write protecting the kernel read-only data: 12288k
[    1.216744] Freeing unused kernel memory: 1604k freed
[    1.219247] Freeing unused kernel memory: 1256k freed
[    1.246686] dracut: dracut-027-r3
[    1.269853] device-mapper: uevent: version 1.0.3
[    1.270037] device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: dm-devel@redhat.com
[    1.274051] systemd-udevd[168]: starting version 204
[    1.337371] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.337627] ehci-pci: EHCI PCI platform driver
[    1.337877] ehci-pci 0000:00:1a.0: setting latency timer to 64
[    1.337958] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    1.338250] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[    1.338520] ehci-pci 0000:00:1a.0: debug port 2
[    1.342571] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[    1.342620] ehci-pci 0000:00:1a.0: irq 23, io mem 0xd9409000
[    1.348367] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    1.350622] hub 1-0:1.0: USB hub found
[    1.350735] hub 1-0:1.0: 2 ports detected
[    1.351421] xhci_hcd 0000:04:00.0: xHCI Host Controller
[    1.351509] xhci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 2
[    1.351541] ehci-pci 0000:00:1d.0: setting latency timer to 64
[    1.351866] xhci_hcd 0000:04:00.0: irq 42 for MSI/MSI-X
[    1.351877] xhci_hcd 0000:04:00.0: irq 43 for MSI/MSI-X
[    1.351888] xhci_hcd 0000:04:00.0: irq 44 for MSI/MSI-X
[    1.351899] xhci_hcd 0000:04:00.0: irq 45 for MSI/MSI-X
[    1.351909] xhci_hcd 0000:04:00.0: irq 46 for MSI/MSI-X
[    1.352628] xHCI xhci_add_endpoint called for root hub
[    1.352632] xHCI xhci_check_bandwidth called for root hub
[    1.352784] hub 2-0:1.0: USB hub found
[    1.352900] hub 2-0:1.0: 2 ports detected
[    1.354454] xhci_hcd 0000:04:00.0: xHCI Host Controller
[    1.354470] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    1.354484] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 3
[    1.354514] ehci-pci 0000:00:1d.0: debug port 2
[    1.354857] xhci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 4
[    1.357416] xHCI xhci_add_endpoint called for root hub
[    1.357418] xHCI xhci_check_bandwidth called for root hub
[    1.357684] hub 4-0:1.0: USB hub found
[    1.357786] hub 4-0:1.0: 2 ports detected
[    1.358429] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[    1.358462] ehci-pci 0000:00:1d.0: irq 20, io mem 0xd9408000
[    1.364350] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    1.365795] hub 3-0:1.0: USB hub found
[    1.365857] hub 3-0:1.0: 2 ports detected
[    1.385053] md: bind<sdb>
[    1.595746] md: bind<sda>
[    1.605515] md: bind<sdb>
[    1.605940] md: bind<sda>
[    1.608001] md: raid0 personality registered for level 0
[    1.608491] md/raid0:md126: md_size is 500129792 sectors.
[    1.608553] md: RAID0 configuration for md126 - 1 zone
[    1.608613] md: zone0=[sda/sdb]
[    1.608844]       zone-offset=         0KB, device-offset=         0KB, size= 250065152KB

[    1.609032] md126: detected capacity change from 0 to 256066453504
[    1.610413]  md126: p1 p2
[    1.652732] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    1.684769] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd00123/0x840300/0x122c00, board id: 1690, fw id: 934878
[    1.720481] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input3
[    1.769049] hub 1-1:1.0: USB hub found
[    1.769279] hub 1-1:1.0: 6 ports detected
[    1.847164] tsc: Refined TSC clocksource calibration: 2793.653 MHz
[    1.847269] Switching to clocksource tsc
[    1.873020] usb 3-1: new high-speed USB device number 2 using ehci-pci
[    1.973280] dracut: luksOpen /dev/md126p2 luks-54ed2bf3-fb3d-4442-b8be-2f0cfda6a521  
[    1.987989] hub 3-1:1.0: USB hub found
[    1.988152] hub 3-1:1.0: 8 ports detected
[    2.063649] usb 1-1.1: new full-speed USB device number 3 using ehci-pci
[    2.205828] usb 1-1.2: new full-speed USB device number 4 using ehci-pci
[    2.371821] usb 1-1.3: new high-speed USB device number 5 using ehci-pci
[    2.553221] usb 1-1.4: new high-speed USB device number 6 using ehci-pci
[    2.642136] usb 1-1.4: config 1 has an invalid interface number: 8 but max is 3
[    2.642251] usb 1-1.4: config 1 has no interface number 1
[    8.867308] sha256_ssse3: Using AVX optimized SHA-256 implementation
[    8.868685] bio: create slab <bio-2> at 2
[    9.036970] dracut: Scanning devices dm-0  for LVM logical volumes vaio/gentoo64a-root
[    9.047835] dracut: inactive '/dev/vaio/gentoo64a-root' [16.00 GiB] inherit
[    9.047960] dracut: inactive '/dev/vaio/portage' [12.00 GiB] inherit
[    9.048083] dracut: inactive '/dev/vaio/home' [180.00 GiB] inherit
[    9.101472] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
[    9.114257] dracut: Checking ext4: /dev/vaio/gentoo64a-root
[    9.114351] dracut: issuing e2fsck -a  /dev/vaio/gentoo64a-root
[    9.164759] dracut: /dev/vaio/gentoo64a-root: clean, 575802/1048576 files, 3584508/4194304 blocks
[    9.166606] dracut: Mounting /dev/vaio/gentoo64a-root with -o noatime,ro
[    9.170110] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
[    9.177249] dracut: Mounted root filesystem /dev/mapper/vaio-gentoo64a--root
[    9.191434] dracut: Switching root
[    9.509572] systemd-udevd[629]: starting version 204
[    9.592305] ACPI Warning: 0x000000000000a040-0x000000000000a05f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20130328/utaddress-251)
[    9.592311] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    9.593059] ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 1 (20130328/utaddress-251)
[    9.593064] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    9.593068] ACPI Warning: 0x0000000000000540-0x000000000000054f SystemIO conflicts with Region \GPIO 1 (20130328/utaddress-251)
[    9.593073] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    9.593076] ACPI Warning: 0x0000000000000530-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20130328/utaddress-251)
[    9.593081] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    9.593083] ACPI Warning: 0x0000000000000500-0x000000000000052f SystemIO conflicts with Region \GPIO 1 (20130328/utaddress-251)
[    9.593088] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    9.593090] lpc_ich: Resource conflict(s) found affecting gpio_ich
[    9.593481] Linux agpgart interface v0.103
[    9.599250] [drm] Initialized drm 1.1.0 20060810
[    9.605848] snd_hda_intel 0000:00:1b.0: irq 47 for MSI/MSI-X
[    9.612414] sony_laptop: Sony Notebook Control Driver v0.6
[    9.612808] input: Sony Vaio Keys as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/SNY5001:00/input/input4
[    9.613294] input: Sony Vaio Jogdial as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/SNY5001:00/input/input5
[    9.621804] hda_codec: ALC275: SKU not ready 0x411111f0
[    9.624045] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input6
[    9.634637] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7
[    9.634769] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[    9.635768] sony_laptop: brightness ignored, must be controlled by ACPI video driver
[    9.640801] rtsx_pci 0000:03:00.0: irq 48 for MSI/MSI-X
[    9.640827] rtsx_pci 0000:03:00.0: rtsx_pci_acquire_irq: pcr->msi_en = 1, pci->irq = 48
[    9.646258] [drm] Memory usable by graphics device = 2048M
[    9.646327] i915 0000:00:02.0: setting latency timer to 64
[    9.651659] cfg80211: Calling CRDA to update world regulatory domain
[    9.654343] Intel(R) Wireless WiFi driver for Linux, in-tree:
[    9.654346] Copyright(c) 2003-2013 Intel Corporation
[    9.654781] iwlwifi 0000:02:00.0: irq 49 for MSI/MSI-X
[    9.655301] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    9.655694] r8169 0000:05:00.0: irq 50 for MSI/MSI-X
[    9.658833] r8169 0000:05:00.0 eth0: RTL8168evl/8111evl at 0xffffc90000c7a000, 54:42:49:9a:df:1e, XID 0c900800 IRQ 50
[    9.658837] r8169 0000:05:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    9.660934] iwlwifi 0000:02:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm
[    9.669285] Bluetooth: Core ver 2.16
[    9.669307] NET: Registered protocol family 31
[    9.669309] Bluetooth: HCI device and connection manager initialized
[    9.669893] Bluetooth: HCI socket layer initialized
[    9.669898] Bluetooth: L2CAP socket layer initialized
[    9.669912] Bluetooth: SCO socket layer initialized
[    9.679110] usbcore: registered new interface driver btusb
[    9.689730] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
[    9.689733] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUGFS disabled
[    9.689735] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TRACING disabled
[    9.689736] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TESTMODE disabled
[    9.689737] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_P2P disabled
[    9.689739] iwlwifi 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6230 AGN, REV=0xB0
[    9.689850] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[    9.691683] usbcore: registered new interface driver usbserial
[    9.694653] usbcore: registered new interface driver usbserial_generic
[    9.694836] usbserial: USB Serial support registered for generic
[    9.696052] i915 0000:00:02.0: irq 51 for MSI/MSI-X
[    9.696510] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[    9.696512] [drm] Driver supports precise vblank timestamp query.
[    9.697541] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    9.698632] usbcore: registered new interface driver qcserial
[    9.703698] usbserial: USB Serial support registered for Qualcomm USB modem
[    9.704816] qcserial 1-1.4:1.0: Qualcomm USB modem converter detected
[    9.706264] usb 1-1.4: Qualcomm USB modem converter now attached to ttyUSB0
[    9.707735] qcserial 1-1.4:1.2: Qualcomm USB modem converter detected
[    9.708783] usb 1-1.4: Qualcomm USB modem converter now attached to ttyUSB1
[    9.710406] qcserial 1-1.4:1.3: Qualcomm USB modem converter detected
[    9.711823] usb 1-1.4: Qualcomm USB modem converter now attached to ttyUSB2
[    9.714046] media: Linux media interface: v0.10
[    9.714367] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[    9.717923] Linux video capture interface: v2.00
[    9.724810] input: PC Speaker as /devices/platform/pcspkr/input/input9
[    9.727750] uvcvideo: Found UVC 1.00 device USB2.0 Camera (05c8:0318)
[    9.728323] Error: Driver 'pcspkr' is already registered, aborting...
[    9.732007] input: USB2.0 Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input10
[    9.732634] usbcore: registered new interface driver uvcvideo
[    9.732637] USB Video Class driver (1.1.1)
[    9.742513] [drm] Wrong MCH_SSKPD value: 0x16040307
[    9.742517] [drm] This can cause pipe underruns and display issues.
[    9.742519] [drm] Please upgrade your BIOS to fix this.
[    9.747659] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x14
[    9.748522] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x14
[    9.748947] microcode: CPU0 updated to revision 0x28, date = 2012-04-24
[    9.748961] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x14
[    9.749013] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x14
[    9.749246] microcode: CPU1 updated to revision 0x28, date = 2012-04-24
[    9.749257] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x14
[    9.749307] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x14
[    9.749570] microcode: CPU2 updated to revision 0x28, date = 2012-04-24
[    9.749581] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x14
[    9.749623] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x14
[    9.749897] microcode: CPU3 updated to revision 0x28, date = 2012-04-24
[    9.749999] perf_event_intel: PEBS enabled due to microcode update
[    9.750160] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    9.758713] fbcon: inteldrmfb (fb0) is primary device
[    9.794844] iTCO_vendor_support: vendor-support=0
[    9.795691] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10
[    9.795896] iTCO_wdt: unable to reset NO_REBOOT flag, device disabled by hardware/BIOS
[    9.843467] cfg80211: World regulatory domain updated:
[    9.843468] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[    9.843470] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.843472] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.843473] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[    9.843475] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.843476] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.849983] systemd-udevd[659]: renamed network interface eth0 to enp5s0
[    9.883014] systemd-udevd[654]: renamed network interface wlan0 to wlp2s0
[   11.554433] Console: switching to colour frame buffer device 240x67
[   11.557607] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[   11.557609] i915 0000:00:02.0: registered panic notifier
[   11.558105] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558115] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558125] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558135] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558144] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558153] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.558162] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   11.559676] acpi device:3e: registered as cooling_device5
[   11.559965] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[   11.560043] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:09/input/input11
[   11.560584] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[   11.739623] [drm] Enabling RC6 states: RC6 on, RC6p on, RC6pp on
[   12.811871] EXT4-fs (dm-1): re-mounted. Opts: (null)
[   12.888954] EXT4-fs (md126p1): mounted filesystem with ordered data mode. Opts: (null)
[   12.893881] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[   12.899494] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: (null)
[   13.312663] microcode: Microcode Update Driver: v2.00 removed.
[   13.798250] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[   13.805275] iwlwifi 0000:02:00.0: Radio type=0x1-0x2-0x0
[   14.190399] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[   14.197274] iwlwifi 0000:02:00.0: Radio type=0x1-0x2-0x0
[   14.407370] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
[   15.796584] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   15.796588] Bluetooth: BNEP filters: protocol multicast
[   15.796596] Bluetooth: BNEP socket layer initialized
[   15.961351] Bluetooth: RFCOMM TTY layer initialized
[   15.961369] Bluetooth: RFCOMM socket layer initialized
[   15.961371] Bluetooth: RFCOMM ver 1.11
[   16.313208] zram: module is from the staging directory, the quality is unknown, you have been warned.
[   16.317010] zram: Created 4 device(s) ...
[   16.328748] Adding 1572860k swap on /dev/zram0.  Priority:10 extents:1 across:1572860k SSFS
[   16.336492] Adding 1572860k swap on /dev/zram1.  Priority:10 extents:1 across:1572860k SSFS
[   16.343086] Adding 1572860k swap on /dev/zram2.  Priority:10 extents:1 across:1572860k SSFS
[   16.350064] Adding 1572860k swap on /dev/zram3.  Priority:10 extents:1 across:1572860k SSFS
[   17.719894] wlp2s0: authenticate with 08:60:6e:cc:a2:94
[   17.726106] wlp2s0: send auth to 08:60:6e:cc:a2:94 (try 1/3)
[   17.750124] wlp2s0: authenticated
[   17.750971] wlp2s0: associate with 08:60:6e:cc:a2:94 (try 1/3)
[   17.751869] wlp2s0: RX AssocResp from 08:60:6e:cc:a2:94 (capab=0x11 status=0 aid=1)
[   17.755176] wlp2s0: associated
[   17.755240] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
[   25.781326] ACPI: \_SB_.DOCK: docking
[   25.782919] acpiphp_glue: _handle_hotplug_event_func: Bus check notify on \_SB_.PCI0.RP07.LPMB
[   25.782981] acpiphp_glue: bus exists... trim
[   25.783664] ACPI: Device does not support D3cold
[   25.783814] ACPI: Device does not support D3cold
[   25.784108] ACPI: Device does not support D3cold
[   25.784260] ACPI: Device does not support D3cold
[   25.784402] ACPI: Device does not support D3cold
[   25.784578] ACPI: Device does not support D3cold
[   25.784759] ACPI: Device does not support D3cold
[   25.784845] ACPI: Device does not support D3cold
[   25.784926] ACPI: Device does not support D3cold
[   25.784985] ACPI: Device does not support D3cold
[   25.785031] ACPI: Device does not support D3cold
[   25.785108] ACPI: Device does not support D3cold
[   25.785349] ACPI: Device does not support D3cold
[   25.786114] ACPI: Device does not support D3cold
[   25.786193] ACPI: Device does not support D3cold
[   25.787583] ACPI: Device does not support D3cold
[   25.788548] ACPI: Device does not support D3cold
[   25.789912] ACPI: Device does not support D3cold
[   25.791193] ACPI: Device does not support D3cold
[   25.791312] ACPI: Device does not support D3cold
[   25.793253] ACPI: Device does not support D3cold
[   25.793868] ACPI: Device does not support D3cold
[   25.794678] ACPI: Device does not support D3cold
[   25.794858] ACPI: Device does not support D3cold
[   25.795102] ACPI: Device does not support D3cold
[   25.795761] ACPI: Device does not support D3cold
[   25.796386] ACPI: Device does not support D3cold
[   25.796907] ACPI: Device does not support D3cold
[   25.797320] ACPI: Device does not support D3cold
[   25.797669] ACPI: Device does not support D3cold
[   25.797984] ACPI: Device does not support D3cold
[   25.808038] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808060] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808077] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808095] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808112] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808129] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808146] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work.
[   25.808316] pci 0000:08:00.0: [8086:151b] type 01 class 0x060400
[   25.808494] pci 0000:08:00.0: supports D1 D2
[   25.808496] pci 0000:08:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.810088] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:0a:00
[   25.810399] acpiphp: Slot [1-1] registered
[   25.810440] acpiphp_glue: found ACPI PCI Hotplug slot 2 at PCI 0000:0a:03
[   25.810878] acpiphp: Slot [2] registered
[   25.810915] acpiphp_glue: found ACPI PCI Hotplug slot 3 at PCI 0000:0a:04
[   25.811000] acpiphp: Slot [3] registered
[   25.811044] pci 0000:0a:00.0: [8086:151b] type 01 class 0x060400
[   25.811201] pci 0000:0a:00.0: supports D1 D2
[   25.811202] pci 0000:0a:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.812688] pci 0000:0a:03.0: [8086:151b] type 01 class 0x060400
[   25.812858] pci 0000:0a:03.0: supports D1 D2
[   25.812859] pci 0000:0a:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.815661] pci 0000:0a:04.0: [8086:151b] type 01 class 0x060400
[   25.815833] pci 0000:0a:04.0: supports D1 D2
[   25.815834] pci 0000:0a:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.816008] pci 0000:08:00.0: PCI bridge to [bus 0a-1d]
[   25.816019] pci 0000:08:00.0:   bridge window [io  0x3000-0x5fff]
[   25.816025] pci 0000:08:00.0:   bridge window [mem 0xb0000000-0xc03fffff]
[   25.816035] pci 0000:08:00.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.817416] pci 0000:0a:00.0: PCI bridge to [bus 0b]
[   25.817432] pci 0000:0a:00.0:   bridge window [mem 0xc0300000-0xc03fffff]
[   25.820691] pci 0000:0a:03.0: PCI bridge to [bus 0c]
[   25.821446] pci 0000:14:00.0: [8086:151b] type 01 class 0x060400
[   25.821724] pci 0000:14:00.0: supports D1 D2
[   25.821726] pci 0000:14:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.822076] pci 0000:0a:04.0: PCI bridge to [bus 14-1d]
[   25.822087] pci 0000:0a:04.0:   bridge window [io  0x3000-0x5fff]
[   25.822092] pci 0000:0a:04.0:   bridge window [mem 0xb0000000-0xc02fffff]
[   25.822103] pci 0000:0a:04.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.822327] pci 0000:15:03.0: [8086:151b] type 01 class 0x060400
[   25.822563] pci 0000:15:03.0: supports D1 D2
[   25.822564] pci 0000:15:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.822737] pci 0000:15:04.0: [8086:151b] type 01 class 0x060400
[   25.822969] pci 0000:15:04.0: supports D1 D2
[   25.822971] pci 0000:15:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.823183] pci 0000:14:00.0: PCI bridge to [bus 15-1d]
[   25.823198] pci 0000:14:00.0:   bridge window [io  0x3000-0x5fff]
[   25.823206] pci 0000:14:00.0:   bridge window [mem 0xb0000000-0xc02fffff]
[   25.823221] pci 0000:14:00.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.823407] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:16:00
[   25.823432] acpiphp: Slot [1-2] registered
[   25.823460] acpiphp_glue: sibling found, but _SUN doesn't match!
[   25.823518] pci 0000:16:00.0: [1002:6740] type 00 class 0x030000
[   25.823583] pci 0000:16:00.0: reg 10: [mem 0x00000000-0x0fffffff 64bit pref]
[   25.823865] pci 0000:16:00.0: reg 18: [mem 0x00000000-0x0001ffff 64bit]
[   25.823902] pci 0000:16:00.0: reg 20: [io  0x0000-0x00ff]
[   25.823969] pci 0000:16:00.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[   25.824128] pci 0000:16:00.0: supports D1 D2
[   25.825147] vgaarb: device added: PCI:0000:16:00.0,decodes=io+mem,owns=none,locks=none
[   25.825152] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=none:owns=io+mem
[   25.825154] vgaarb: transferring owner from PCI:0000:00:02.0 to PCI:0000:16:00.0
[   25.825252] pci 0000:16:00.1: [1002:aa90] type 00 class 0x040300
[   25.825317] pci 0000:16:00.1: reg 10: [mem 0x00000000-0x00003fff 64bit]
[   25.825689] pci 0000:16:00.1: supports D1 D2
[   25.826312] pci 0000:15:03.0: PCI bridge to [bus 16]
[   25.826327] pci 0000:15:03.0:   bridge window [io  0x5000-0x5fff]
[   25.826335] pci 0000:15:03.0:   bridge window [mem 0xc0200000-0xc02fffff]
[   25.826350] pci 0000:15:03.0:   bridge window [mem 0xb0000000-0xbfffffff 64bit pref]
[   25.826588] pci 0000:17:00.0: [8086:151b] type 01 class 0x060400
[   25.826922] pci 0000:17:00.0: supports D1 D2
[   25.826924] pci 0000:17:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.828648] pci 0000:15:04.0: PCI bridge to [bus 17-1d]
[   25.828665] pci 0000:15:04.0:   bridge window [io  0x3000-0x4fff]
[   25.828673] pci 0000:15:04.0:   bridge window [mem 0xc0000000-0xc01fffff]
[   25.828688] pci 0000:15:04.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.829061] pci 0000:18:00.0: [8086:151b] type 01 class 0x060400
[   25.829392] pci 0000:18:00.0: supports D1 D2
[   25.829394] pci 0000:18:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.830132] pci 0000:18:01.0: [8086:151b] type 01 class 0x060400
[   25.830444] pci 0000:18:01.0: supports D1 D2
[   25.830446] pci 0000:18:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.831199] pci 0000:18:02.0: [8086:151b] type 01 class 0x060400
[   25.831515] pci 0000:18:02.0: supports D1 D2
[   25.831517] pci 0000:18:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.832244] pci 0000:18:03.0: [8086:151b] type 01 class 0x060400
[   25.832578] pci 0000:18:03.0: supports D1 D2
[   25.832580] pci 0000:18:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.834004] pci 0000:18:04.0: [8086:151b] type 01 class 0x060400
[   25.834364] pci 0000:18:04.0: supports D1 D2
[   25.834368] pci 0000:18:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.834891] pci 0000:17:00.0: PCI bridge to [bus 18-1d]
[   25.834915] pci 0000:17:00.0:   bridge window [io  0x3000-0x4fff]
[   25.834927] pci 0000:17:00.0:   bridge window [mem 0xc0000000-0xc01fffff]
[   25.834950] pci 0000:17:00.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.835707] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:19:00
[   25.835748] acpiphp: Slot [1-3] registered
[   25.835842] pci 0000:19:00.0: [10ec:8168] type 00 class 0x020000
[   25.835905] pci 0000:19:00.0: reg 10: [io  0x0000-0x00ff]
[   25.836011] pci 0000:19:00.0: reg 18: [mem 0x00000000-0x00000fff 64bit pref]
[   25.836101] pci 0000:19:00.0: reg 20: [mem 0x00000000-0x00003fff 64bit pref]
[   25.836376] pci 0000:19:00.0: supports D1 D2
[   25.836377] pci 0000:19:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   25.837450] pci 0000:18:00.0: PCI bridge to [bus 19]
[   25.837475] pci 0000:18:00.0:   bridge window [io  0x4000-0x4fff]
[   25.837507] pci 0000:18:00.0:   bridge window [mem 0xd4400000-0xd44fffff 64bit pref]
[   25.838467] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:1a:00
[   25.838493] acpiphp: Slot [1-4] registered
[   25.838577] pci 0000:1a:00.0: [11ab:6121] type 00 class 0x01018f
[   25.838635] pci 0000:1a:00.0: reg 10: [io  0x8000-0x8007]
[   25.838695] pci 0000:1a:00.0: reg 14: [io  0x8040-0x8043]
[   25.838736] pci 0000:1a:00.0: reg 18: [io  0x8200-0x8207]
[   25.838776] pci 0000:1a:00.0: reg 1c: [io  0x8800-0x8803]
[   25.838816] pci 0000:1a:00.0: reg 20: [io  0x900000-0x90000f]
[   25.838855] pci 0000:1a:00.0: reg 24: [mem 0x00800000-0x008003ff]
[   25.839102] pci 0000:1a:00.0: supports D1
[   25.839104] pci 0000:1a:00.0: PME# supported from D0 D1 D3hot
[   25.840376] pci 0000:18:01.0: PCI bridge to [bus 1a]
[   25.840402] pci 0000:18:01.0:   bridge window [io  0x3000-0x3fff]
[   25.840416] pci 0000:18:01.0:   bridge window [mem 0xc0100000-0xc01fffff]
[   25.840776] acpiphp_glue: found ACPI PCI Hotplug slot 1 at PCI 0000:1b:00
[   25.840805] acpiphp: Slot [1-5] registered
[   25.840901] pci 0000:1b:00.0: [1033:0194] type 00 class 0x0c0330
[   25.840980] pci 0000:1b:00.0: reg 10: [mem 0x00000000-0x00001fff 64bit]
[   25.841268] [drm] radeon kernel modesetting enabled.
[   25.841397] pci 0000:1b:00.0: PME# supported from D0 D3hot D3cold
[   25.841731] pci 0000:18:02.0: PCI bridge to [bus 1b]
[   25.841765] pci 0000:18:02.0:   bridge window [mem 0xc0000000-0xc00fffff]
[   25.842990] pci 0000:18:03.0: PCI bridge to [bus 1c]
[   25.843635] pci 0000:18:04.0: PCI bridge to [bus 1d]
[   25.844222] pci 0000:08:00.0: BAR 15: can't assign mem pref (size 0x28000000)
[   25.844225] pci 0000:08:00.0: BAR 14: assigned [mem 0xb0000000-0xc06fffff]
[   25.844227] pci 0000:08:00.0: BAR 13: can't assign io (size 0xb000)
[   25.844231] pci 0000:0a:04.0: BAR 15: can't assign mem pref (size 0x20000000)
[   25.844233] pci 0000:0a:00.0: BAR 14: assigned [mem 0xb0000000-0xb01fffff]
[   25.844235] pci 0000:0a:00.0: BAR 15: assigned [mem 0xb0200000-0xb03fffff 64bit pref]
[   25.844237] pci 0000:0a:03.0: BAR 14: assigned [mem 0xb0400000-0xb05fffff]
[   25.844239] pci 0000:0a:03.0: BAR 15: assigned [mem 0xb0600000-0xb07fffff 64bit pref]
[   25.844241] pci 0000:0a:04.0: BAR 14: can't assign mem (size 0x10300000)
[   25.844243] pci 0000:0a:00.0: BAR 13: can't assign io (size 0x1000)
[   25.844244] pci 0000:0a:03.0: BAR 13: can't assign io (size 0x1000)
[   25.844246] pci 0000:0a:04.0: BAR 13: can't assign io (size 0x8000)
[   25.844249] pci 0000:0a:00.0: PCI bridge to [bus 0b]
[   25.844257] pci 0000:0a:00.0:   bridge window [mem 0xb0000000-0xb01fffff]
[   25.844263] pci 0000:0a:00.0:   bridge window [mem 0xb0200000-0xb03fffff 64bit pref]
[   25.844273] pci 0000:0a:03.0: PCI bridge to [bus 0c]
[   25.844282] pci 0000:0a:03.0:   bridge window [mem 0xb0400000-0xb05fffff]
[   25.844288] pci 0000:0a:03.0:   bridge window [mem 0xb0600000-0xb07fffff 64bit pref]
[   25.844299] pci 0000:14:00.0: BAR 15: can't assign mem pref (size 0x20000000)
[   25.844301] pci 0000:14:00.0: BAR 14: can't assign mem (size 0x10300000)
[   25.844302] pci 0000:14:00.0: BAR 13: can't assign io (size 0x7000)
[   25.844305] pci 0000:15:03.0: BAR 15: can't assign mem pref (size 0x18000000)
[   25.844307] pci 0000:15:03.0: BAR 14: can't assign mem (size 0x200000)
[   25.844308] pci 0000:15:04.0: BAR 14: can't assign mem (size 0xa00000)
[   25.844310] pci 0000:15:04.0: BAR 15: can't assign mem pref (size 0xa00000)
[   25.844312] pci 0000:15:03.0: BAR 13: can't assign io (size 0x1000)
[   25.844313] pci 0000:15:04.0: BAR 13: can't assign io (size 0x6000)
[   25.844316] pci 0000:16:00.0: BAR 0: can't assign mem pref (size 0x10000000)
[   25.844318] pci 0000:16:00.0: BAR 2: can't assign mem (size 0x20000)
[   25.844319] pci 0000:16:00.0: BAR 6: can't assign mem pref (size 0x20000)
[   25.844321] pci 0000:16:00.1: BAR 0: can't assign mem (size 0x4000)
[   25.844323] pci 0000:16:00.0: BAR 4: can't assign io (size 0x100)
[   25.844325] pci 0000:15:03.0: PCI bridge to [bus 16]
[   25.844360] pci 0000:17:00.0: BAR 14: can't assign mem (size 0xa00000)
[   25.844362] pci 0000:17:00.0: BAR 15: can't assign mem pref (size 0xa00000)
[   25.844363] pci 0000:17:00.0: BAR 13: can't assign io (size 0x5000)
[   25.844368] pci 0000:18:00.0: BAR 14: can't assign mem (size 0x200000)
[   25.844369] pci 0000:18:00.0: BAR 15: can't assign mem pref (size 0x200000)
[   25.844371] pci 0000:18:01.0: BAR 14: can't assign mem (size 0x200000)
[   25.844372] pci 0000:18:01.0: BAR 15: can't assign mem pref (size 0x200000)
[   25.844374] pci 0000:18:02.0: BAR 14: can't assign mem (size 0x200000)
[   25.844376] pci 0000:18:02.0: BAR 15: can't assign mem pref (size 0x200000)
[   25.844377] pci 0000:18:03.0: BAR 14: can't assign mem (size 0x200000)
[   25.844379] pci 0000:18:03.0: BAR 15: can't assign mem pref (size 0x200000)
[   25.844380] pci 0000:18:04.0: BAR 14: can't assign mem (size 0x200000)
[   25.844382] pci 0000:18:04.0: BAR 15: can't assign mem pref (size 0x200000)
[   25.844383] pci 0000:18:00.0: BAR 13: can't assign io (size 0x1000)
[   25.844385] pci 0000:18:01.0: BAR 13: can't assign io (size 0x1000)
[   25.844386] pci 0000:18:02.0: BAR 13: can't assign io (size 0x1000)
[   25.844388] pci 0000:18:03.0: BAR 13: can't assign io (size 0x1000)
[   25.844390] pci 0000:18:04.0: BAR 13: can't assign io (size 0x1000)
[   25.844394] pci 0000:19:00.0: BAR 4: can't assign mem pref (size 0x4000)
[   25.844396] pci 0000:19:00.0: BAR 2: can't assign mem pref (size 0x1000)
[   25.844397] pci 0000:19:00.0: BAR 0: can't assign io (size 0x100)
[   25.844399] pci 0000:18:00.0: PCI bridge to [bus 19]
[   25.844443] pci 0000:1a:00.0: BAR 5: can't assign mem (size 0x400)
[   25.844445] pci 0000:1a:00.0: BAR 4: can't assign io (size 0x10)
[   25.844446] pci 0000:1a:00.0: BAR 0: can't assign io (size 0x8)
[   25.844448] pci 0000:1a:00.0: BAR 2: can't assign io (size 0x8)
[   25.844449] pci 0000:1a:00.0: BAR 1: can't assign io (size 0x4)
[   25.844450] pci 0000:1a:00.0: BAR 3: can't assign io (size 0x4)
[   25.844453] pci 0000:18:01.0: PCI bridge to [bus 1a]
[   25.844495] pci 0000:1b:00.0: BAR 0: can't assign mem (size 0x2000)
[   25.844497] pci 0000:18:02.0: PCI bridge to [bus 1b]
[   25.844540] pci 0000:18:03.0: PCI bridge to [bus 1c]
[   25.844582] pci 0000:18:04.0: PCI bridge to [bus 1d]
[   25.844625] pci 0000:17:00.0: PCI bridge to [bus 18-1d]
[   25.844677] pci 0000:15:04.0: PCI bridge to [bus 17-1d]
[   25.844713] pci 0000:14:00.0: PCI bridge to [bus 15-1d]
[   25.844749] pci 0000:0a:04.0: PCI bridge to [bus 14-1d]
[   25.844772] pci 0000:08:00.0: PCI bridge to [bus 0a-1d]
[   25.844782] pci 0000:08:00.0:   bridge window [mem 0xb0000000-0xc06fffff]
[   25.844811] pci 0000:08:00.0: no hotplug settings from platform
[   25.844827] pci 0000:0a:00.0: no hotplug settings from platform
[   25.844843] pci 0000:0a:03.0: no hotplug settings from platform
[   25.844859] pci 0000:0a:04.0: no hotplug settings from platform
[   25.844880] pci 0000:14:00.0: no hotplug settings from platform
[   25.844905] pci 0000:15:03.0: no hotplug settings from platform
[   25.844933] pci 0000:16:00.0: no hotplug settings from platform
[   25.844962] pci 0000:16:00.1: no hotplug settings from platform
[   25.844984] pci 0000:15:04.0: no hotplug settings from platform
[   25.845002] pci 0000:17:00.0: no hotplug settings from platform
[   25.845022] pci 0000:18:00.0: no hotplug settings from platform
[   25.845045] pci 0000:19:00.0: no hotplug settings from platform
[   25.845064] pci 0000:18:01.0: no hotplug settings from platform
[   25.845086] pci 0000:1a:00.0: no hotplug settings from platform
[   25.845106] pci 0000:18:02.0: no hotplug settings from platform
[   25.845128] pci 0000:1b:00.0: no hotplug settings from platform
[   25.845148] pci 0000:18:03.0: no hotplug settings from platform
[   25.845167] pci 0000:18:04.0: no hotplug settings from platform
[   25.846116] pcieport 0000:08:00.0: irq 52 for MSI/MSI-X
[   25.846820] pcieport 0000:0a:00.0: irq 53 for MSI/MSI-X
[   25.847131] pcieport 0000:0a:03.0: irq 54 for MSI/MSI-X
[   25.848599] pcieport 0000:0a:04.0: irq 55 for MSI/MSI-X
[   25.850171] pcieport 0000:14:00.0: irq 56 for MSI/MSI-X
[   25.850742] pcieport 0000:15:03.0: irq 57 for MSI/MSI-X
[   25.851088] pcieport 0000:15:04.0: irq 58 for MSI/MSI-X
[   25.852364] [drm] initializing kernel modesetting (TURKS 0x1002:0x6740 0x104D:0x9084).
[   25.852375] radeon 0000:16:00.0: Fatal error during GPU init
[   25.853140] radeon: probe of 0000:16:00.0 failed with error -12
[   25.853359] hda-intel 0000:16:00.1: Handle VGA-switcheroo audio client
[   25.853391] ------------[ cut here ]------------
[   25.853398] WARNING: at drivers/pci/pci.c:130 pci_ioremap_bar+0x69/0x70()
[   25.853400] Modules linked in: ata_generic pata_acpi pata_marvell radeon ttm zram(C) rfcomm bnep rtsx_pci_sdmmc rtsx_pci_ms mmc_core memstick iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm joydev uvcvideo pcspkr videobuf2_vmalloc videobuf2_memops videobuf2_core videodev media arc4 qcserial usb_wwan iwldvm usbserial mac80211 btusb bluetooth r8169 iwlwifi mii cfg80211 rtsx_pci snd_hda_codec_hdmi snd_hda_codec_realtek sony_laptop rfkill i915 snd_hda_intel intel_agp snd_hda_codec intel_gtt snd_hwdep i2c_algo_bit snd_pcm drm_kms_helper snd_page_alloc snd_timer drm snd agpgart lpc_ich mfd_core i2c_i801 sha256_ssse3 sha256_generic dm_crypt raid0 md_mod crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd xhci_hcd ehci_pci ehci_hcd dm_mirror
[   25.853475]  dm_region_hash dm_log dm_mod [last unloaded: microcode]
[   25.853482] CPU: 0 PID: 40 Comm: kworker/0:1 Tainted: G         C   3.10.0-rc5-rafael #1
[   25.853484] Hardware name: Sony Corporation VPCZ23A4R/VAIO, BIOS R1013H5 05/21/2012
[   25.853489] Workqueue: kacpi_hotplug _handle_hotplug_event_func
[   25.853492]  ffffffff81a2a38c ffff880253d3f858 ffffffff8165acc8 ffff880253d3f898
[   25.853497]  ffffffff8103c8cb ffff880253d3f878 ffff88025282c000 ffff8802537a0000
[   25.853502]  0000000000000000 ffff88025282b800 0000000000000001 ffff880253d3f8a8
[   25.853507] Call Trace:
[   25.853513]  [<ffffffff8165acc8>] dump_stack+0x19/0x1b
[   25.853518]  [<ffffffff8103c8cb>] warn_slowpath_common+0x6b/0xa0
[   25.853521]  [<ffffffff8103c915>] warn_slowpath_null+0x15/0x20
[   25.853525]  [<ffffffff81383269>] pci_ioremap_bar+0x69/0x70
[   25.853531]  [<ffffffffa0251bd6>] azx_first_init+0x56/0x600 [snd_hda_intel]
[   25.853535]  [<ffffffff8138696f>] ? pci_get_domain_bus_and_slot+0x2f/0x70
[   25.853540]  [<ffffffffa0253d25>] azx_probe+0x555/0x940 [snd_hda_intel]
[   25.853544]  [<ffffffff810a1a5d>] ? trace_hardirqs_on+0xd/0x10
[   25.853548]  [<ffffffff81384fe6>] local_pci_probe+0x46/0x80
[   25.853552]  [<ffffffff81385859>] pci_device_probe+0xf9/0x120
[   25.853558]  [<ffffffff8143c3f6>] driver_probe_device+0x76/0x220
[   25.853561]  [<ffffffff8143c69b>] __device_attach+0x4b/0x60
[   25.853564]  [<ffffffff8143c650>] ? __driver_attach+0xb0/0xb0
[   25.853568]  [<ffffffff8143a74c>] bus_for_each_drv+0x5c/0x90
[   25.853572]  [<ffffffff8143c348>] device_attach+0x98/0xb0
[   25.853576]  [<ffffffff8137d954>] pci_bus_add_device+0x34/0x60
[   25.853580]  [<ffffffff8137d9b9>] pci_bus_add_devices+0x39/0xa0
[   25.853583]  [<ffffffff8137da07>] pci_bus_add_devices+0x87/0xa0
[   25.853587]  [<ffffffff8137da07>] pci_bus_add_devices+0x87/0xa0
[   25.853591]  [<ffffffff8137da07>] pci_bus_add_devices+0x87/0xa0
[   25.853594]  [<ffffffff8137da07>] pci_bus_add_devices+0x87/0xa0
[   25.853598]  [<ffffffff816448c0>] enable_device+0x370/0x450
[   25.853601]  [<ffffffff813a0fba>] acpiphp_enable_slot+0xca/0x140
[   25.853603]  [<ffffffff813a1446>] _handle_hotplug_event_func+0xa6/0x1e0
[   25.853607]  [<ffffffff8105c212>] process_one_work+0x1c2/0x560
[   25.853610]  [<ffffffff8105c1a7>] ? process_one_work+0x157/0x560
[   25.853612]  [<ffffffff8105d126>] worker_thread+0x116/0x370
[   25.853616]  [<ffffffff8105d010>] ? manage_workers.isra.20+0x2d0/0x2d0
[   25.853620]  [<ffffffff81063986>] kthread+0xd6/0xe0
[   25.853624]  [<ffffffff81660edb>] ? _raw_spin_unlock_irq+0x2b/0x60
[   25.853629]  [<ffffffff810638b0>] ? __init_kthread_worker+0x70/0x70
[   25.853634]  [<ffffffff816682ac>] ret_from_fork+0x7c/0xb0
[   25.853638]  [<ffffffff810638b0>] ? __init_kthread_worker+0x70/0x70
[   25.853640] ---[ end trace 8851d86037e0cfe0 ]---
[   25.853643] hda-intel 0000:16:00.1: ioremap error
[   25.854390] pcieport 0000:17:00.0: irq 59 for MSI/MSI-X
[   25.854859] pcieport 0000:18:00.0: irq 60 for MSI/MSI-X
[   25.855275] pcieport 0000:18:01.0: irq 61 for MSI/MSI-X
[   25.855738] pcieport 0000:18:02.0: irq 62 for MSI/MSI-X
[   25.856524] pcieport 0000:18:03.0: irq 63 for MSI/MSI-X
[   25.856970] pcieport 0000:18:04.0: irq 64 for MSI/MSI-X
[   25.857852] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[   25.857944] r8169 0000:19:00.0 (unregistered net_device): region #2 not an MMIO resource, aborting
[   25.858182] pata_marvell 0000:1a:00.0: no available native port
[   25.858323] pata_acpi 0000:1a:00.0: no available native port
[   25.858765] xhci_hcd 0000:1b:00.0: init 0000:1b:00.0 fail, -16
[   25.858781] xhci_hcd: probe of 0000:1b:00.0 failed with error -16

[   30.969243] ======================================================
[   30.969283] [ INFO: possible circular locking dependency detected ]
[   30.969309] 3.10.0-rc5-rafael #1 Tainted: G        WC  
[   30.969331] -------------------------------------------------------
[   30.969356] kworker/0:1/40 is trying to acquire lock:
[   30.969378]  (&slot->crit_sect){+.+.+.}, at: [<ffffffff813a1050>] acpiphp_disable_slot+0x20/0x140
[   30.969429] 
but task is already holding lock:
[   30.969452]  (&dock_station->hp_lock){+.+.+.}, at: [<ffffffff813c730c>] hotplug_dock_devices+0x2c/0xda
[   30.969501] 
which lock already depends on the new lock.

[   30.969532] 
the existing dependency chain (in reverse order) is:
[   30.969574] 
-> #1 (&dock_station->hp_lock){+.+.+.}:
[   30.969618]        [<ffffffff810a0eb7>] lock_acquire+0x87/0x150
[   30.969653]        [<ffffffff8165da4e>] mutex_lock_nested+0x5e/0x3e0
[   30.969691]        [<ffffffff813c7707>] register_hotplug_dock_device+0x6a/0xbf
[   30.969731]        [<ffffffff813a06b7>] register_slot+0x467/0x5b0
[   30.969766]        [<ffffffff813de164>] acpi_ns_walk_namespace+0xbb/0x17b
[   30.969806]        [<ffffffff813de8e2>] acpi_walk_namespace+0x8e/0xc8
[   30.971389]        [<ffffffff813a0b8d>] acpiphp_enumerate_slots+0x1bd/0x320
[   30.972995]        [<ffffffff813a5aaf>] acpi_pci_add_bus+0x2f/0x40
[   30.974602]        [<ffffffff815333a9>] pcibios_add_bus+0x9/0x10
[   30.976190]        [<ffffffff81643338>] pci_add_new_bus+0x1c8/0x390
[   30.977776]        [<ffffffff813800f5>] pci_scan_bridge+0x5e5/0x620
[   30.979378]        [<ffffffff816446b9>] enable_device+0x169/0x450
[   30.980964]        [<ffffffff813a0fba>] acpiphp_enable_slot+0xca/0x140
[   30.982561]        [<ffffffff813a1446>] _handle_hotplug_event_func+0xa6/0x1e0
[   30.984132]        [<ffffffff8105c212>] process_one_work+0x1c2/0x560
[   30.985691]        [<ffffffff8105d126>] worker_thread+0x116/0x370
[   30.987208]        [<ffffffff81063986>] kthread+0xd6/0xe0
[   30.988708]        [<ffffffff816682ac>] ret_from_fork+0x7c/0xb0
[   30.990175] 
-> #0 (&slot->crit_sect){+.+.+.}:
[   30.993074]        [<ffffffff810a06d3>] __lock_acquire+0x1d23/0x1ee0
[   30.994572]        [<ffffffff810a0eb7>] lock_acquire+0x87/0x150
[   30.996055]        [<ffffffff8165da4e>] mutex_lock_nested+0x5e/0x3e0
[   30.997578]        [<ffffffff813a1050>] acpiphp_disable_slot+0x20/0x140
[   30.999047]        [<ffffffff813a1834>] handle_dock_event_func+0x24/0x40
[   31.000516]        [<ffffffff813c7337>] hotplug_dock_devices+0x57/0xda
[   31.001946]        [<ffffffff813c7a63>] handle_eject_request+0xaf/0xdf
[   31.003384]        [<ffffffff813c7c31>] acpi_dock_deferred_cb+0x163/0x1c8
[   31.004780]        [<ffffffff813bfc49>] acpi_os_execute_deferred+0x20/0x2d
[   31.006187]        [<ffffffff8105c212>] process_one_work+0x1c2/0x560
[   31.007549]        [<ffffffff8105d126>] worker_thread+0x116/0x370
[   31.008888]        [<ffffffff81063986>] kthread+0xd6/0xe0
[   31.010224]        [<ffffffff816682ac>] ret_from_fork+0x7c/0xb0
[   31.011547] 
other info that might help us debug this:

[   31.015593]  Possible unsafe locking scenario:

[   31.018350]        CPU0                    CPU1
[   31.019691]        ----                    ----
[   31.021002]   lock(&dock_station->hp_lock);
[   31.022327]                                lock(&slot->crit_sect);
[   31.023650]                                lock(&dock_station->hp_lock);
[   31.025010]   lock(&slot->crit_sect);
[   31.026342] 
 *** DEADLOCK ***

[   31.030353] 4 locks held by kworker/0:1/40:
[   31.031637]  #0:  (kacpi_hotplug){.+.+.+}, at: [<ffffffff8105c1a7>] process_one_work+0x157/0x560
[   31.032960]  #1:  ((&dpc->work)#3){+.+.+.}, at: [<ffffffff8105c1a7>] process_one_work+0x157/0x560
[   31.034307]  #2:  (acpi_scan_lock){+.+.+.}, at: [<ffffffff813c3997>] acpi_scan_lock_acquire+0x12/0x14
[   31.035630]  #3:  (&dock_station->hp_lock){+.+.+.}, at: [<ffffffff813c730c>] hotplug_dock_devices+0x2c/0xda
[   31.036993] 
stack backtrace:
[   31.039585] CPU: 0 PID: 40 Comm: kworker/0:1 Tainted: G        WC   3.10.0-rc5-rafael #1
[   31.040899] Hardware name: Sony Corporation VPCZ23A4R/VAIO, BIOS R1013H5 05/21/2012
[   31.042235] Workqueue: kacpi_hotplug acpi_os_execute_deferred
[   31.043541]  ffffffff820a4c00 ffff880253d3f998 ffffffff8165acc8 ffff880253d3f9e8
[   31.044878]  ffffffff81656a54 ffff880253d50798 ffff880253d3fa60 ffff880253d50000
[   31.046202]  ffff880253d50770 ffff880253d50000 ffffffff820a4c00 ffff880253d50798
[   31.047502] Call Trace:
[   31.048798]  [<ffffffff8165acc8>] dump_stack+0x19/0x1b
[   31.050086]  [<ffffffff81656a54>] print_circular_bug+0x2b0/0x2c1
[   31.051418]  [<ffffffff810a06d3>] __lock_acquire+0x1d23/0x1ee0
[   31.052720]  [<ffffffff81660e95>] ? _raw_spin_unlock_irqrestore+0x65/0x80
[   31.054022]  [<ffffffff8106d68d>] ? __wake_up+0x2d/0x70
[   31.055350]  [<ffffffff813a1050>] ? acpiphp_disable_slot+0x20/0x140
[   31.056651]  [<ffffffff810a0eb7>] lock_acquire+0x87/0x150
[   31.057978]  [<ffffffff813a1050>] ? acpiphp_disable_slot+0x20/0x140
[   31.059283]  [<ffffffff8115666f>] ? kfree+0xaf/0x250
[   31.060609]  [<ffffffff813a1050>] ? acpiphp_disable_slot+0x20/0x140
[   31.061908]  [<ffffffff8165da4e>] mutex_lock_nested+0x5e/0x3e0
[   31.063234]  [<ffffffff813a1050>] ? acpiphp_disable_slot+0x20/0x140
[   31.064542]  [<ffffffff810a1985>] ? trace_hardirqs_on_caller+0x105/0x1d0
[   31.065858]  [<ffffffff813a1050>] acpiphp_disable_slot+0x20/0x140
[   31.067202]  [<ffffffff813a1834>] handle_dock_event_func+0x24/0x40
[   31.068521]  [<ffffffff813c7337>] hotplug_dock_devices+0x57/0xda
[   31.069868]  [<ffffffff813c7a63>] handle_eject_request+0xaf/0xdf
[   31.071187]  [<ffffffff813c7c31>] acpi_dock_deferred_cb+0x163/0x1c8
[   31.072536]  [<ffffffff813bfc49>] acpi_os_execute_deferred+0x20/0x2d
[   31.073856]  [<ffffffff8105c212>] process_one_work+0x1c2/0x560
[   31.075201]  [<ffffffff8105c1a7>] ? process_one_work+0x157/0x560
[   31.076524]  [<ffffffff8105d126>] worker_thread+0x116/0x370
[   31.077838]  [<ffffffff8105d010>] ? manage_workers.isra.20+0x2d0/0x2d0
[   31.079191]  [<ffffffff81063986>] kthread+0xd6/0xe0
[   31.080508]  [<ffffffff81660edb>] ? _raw_spin_unlock_irq+0x2b/0x60
[   31.081865]  [<ffffffff810638b0>] ? __init_kthread_worker+0x70/0x70
[   31.083185]  [<ffffffff816682ac>] ret_from_fork+0x7c/0xb0
[   31.084532]  [<ffffffff810638b0>] ? __init_kthread_worker+0x70/0x70
[   31.089594] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=none,decodes=io+mem:owns=none
[   31.096378] pci_bus 0000:0b: busn_res: [bus 0b] is released
[   31.097528] pci_bus 0000:0c: busn_res: [bus 0c] is released
[   31.098487] pci_bus 0000:16: busn_res: [bus 16] is released
[   52.229446] fuse init (API version 7.22)
[   52.440061] ata1.00: configured for UDMA/133
[   52.440067] ata1: EH complete
[   52.444040] ata2.00: configured for UDMA/133
[   52.444046] ata2: EH complete
[   52.473608] EXT4-fs (dm-1): re-mounted. Opts: commit=0
[   52.477959] EXT4-fs (md126p1): re-mounted. Opts: commit=0
[   52.481721] EXT4-fs (dm-2): re-mounted. Opts: commit=0
[   52.492858] EXT4-fs (dm-3): re-mounted. Opts: commit=0
[   57.398831] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[   57.398844] Bluetooth: HIDP socket layer initialized
[   57.400870] elecom 0005:056E:0061.0001: unknown main item tag 0x0
[   57.400974] input: Laser  BTmouse as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/bluetooth/hci0/hci0:36/input12
[   57.401190] elecom 0005:056E:0061.0001: input,hidraw0: BLUETOOTH HID v0.1e Mouse [Laser  BTmouse] on 88:53:2e:c0:50:98

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

* Re: [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification
  2013-06-14 15:30           ` Jiang Liu
@ 2013-06-14 23:12             ` Rafael J. Wysocki
  0 siblings, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2013-06-14 23:12 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Jiang Liu, Bjorn Helgaas, Yinghai Lu, Alexander E . Patrakov,
	Greg Kroah-Hartman, Yijing Wang, linux-pci, linux-kernel,
	Rafael J. Wysocki, stable

On Friday, June 14, 2013 11:30:12 PM Jiang Liu wrote:
> On 06/14/2013 10:12 PM, Rafael J. Wysocki wrote:
> > On Friday, June 14, 2013 09:57:15 PM Jiang Liu wrote:
> >> On 06/14/2013 08:23 PM, Rafael J. Wysocki wrote:
> >>> On Thursday, June 13, 2013 09:59:44 PM Rafael J. Wysocki wrote:
> >>>> On Friday, June 14, 2013 12:32:25 AM Jiang Liu wrote:
> >>>>> Current ACPI glue logic expects that physical devices are destroyed
> >>>>> before destroying companion ACPI devices, otherwise it will break the
> >>>>> ACPI unbind logic and cause following warning messages:
> >>>>> [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
> >>>>> [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
> >>>>> [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
> >>>>> [  180.013656]  port1: Oops, 'acpi_handle' corrupt
> >>>>> Please refer to https://bugzilla.kernel.org/attachment.cgi?id=104321
> >>>>> for full log message.
> >>>>
> >>>> So my question is, did we have this problem before commit 3b63aaa70e1?
> >>>>
> >>>> If we did, then when did it start?  Or was it present forever?
> >>>>
> >>>>> Above warning messages are caused by following scenario:
> >>>>> 1) acpi_dock_notifier_call() queues a task (T1) onto kacpi_hotplug_wq
> >>>>> 2) kacpi_hotplug_wq handles T1, which invokes acpi_dock_deferred_cb()
> >>>>>    ->dock_notify()-> handle_eject_request()->hotplug_dock_devices()
> >>>>> 3) hotplug_dock_devices() first invokes registered hotplug callbacks to
> >>>>>    destroy physical devices, then destroys all affected ACPI devices.
> >>>>>    Everything seems perfect until now. But the acpiphp dock notification
> >>>>>    handler will queue another task (T2) onto kacpi_hotplug_wq to really
> >>>>>    destroy affected physical devices.
> >>>>
> >>>> Would not the solution be to modify it so that it didn't spawn the other
> >>>> task (T2), but removed the affected physical devices synchronously?
> >>>>
> >>>>> 4) kacpi_hotplug_wq finishes T1, and all affected ACPI devices have
> >>>>>    been destroyed.
> >>>>> 5) kacpi_hotplug_wq handles T2, which destroys all affected physical
> >>>>>    devices.
> >>>>>
> >>>>> So it breaks ACPI glue logic's expection because ACPI devices are destroyed
> >>>>> in step 3 and physical devices are destroyed in step 5.
> >>>>>
> >>>>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> >>>>> Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
> >>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
> >>>>> Cc: Yinghai Lu <yinghai@kernel.org>
> >>>>> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> >>>>> Cc: linux-pci@vger.kernel.org
> >>>>> Cc: linux-kernel@vger.kernel.org
> >>>>> Cc: stable@vger.kernel.org
> >>>>> ---
> >>>>> Hi Bjorn and Rafael,
> >>>>>      The recursive lock changes haven't been tested yet, need help
> >>>>> from Alexander for testing.
> >>>>
> >>>> Well, let's just say I'm not a fan of recursive locks.  Is that unavoidable
> >>>> here?
> >>>
> >>> What about the appended patch (on top of [1/9], untested)?
> >>>
> >>> Rafael
> >> It should have similar effect as patch 2/9, and it will encounter the
> >> same deadlock scenario as 2/9 too.
> > 
> > And why exactly?
> > 
> > I'm looking at acpiphp_disable_slot() and I'm not seeing where the
> > problematic lock is taken.  Similarly for power_off_slot().
> > 
> > It should take the ACPI scan lock, but that's a different matter.
> > 
> > Thanks,
> > Rafael
> The deadlock scenario is the same:

Well, you didn't answer my question.

>         hotplug_dock_devices()
>                 mutex_lock(&ds->hp_lock)
>                         dd->ops->handler()
> 				destroy pci bus

And this wasn't particularly helpful.

What about mentioning acpi_pci_remove_bus()?  I don't remember all changes
made recently, sorry.

>                                 	unregister_hotplug_dock_device()
>                                         	mutex_lock(&ds->hp_lock)

I see the problem.

ds->hp_lock is used to make both addition and removal of hotplug devices wait
for us to complete walking ds->hotplug_devices.  However, if we are in the
process of removing hotplug devices, we don't need removals to block on
ds->hp_lock (in fact, we don't even want them to block on it).  Conversely, if
we are in the process of adding hotplug devices, we don't want additions to
block on ds->hp_lock.

So, why don't we do the following:

(1) Introduce a 'hotplug_status' field into struct_dock station with possible
    values representing "removal", "addition" and "no action" and a wait queue
    associated with it.  We can use ds->dd_lock to protect that field.

(2) hotplug_status will be modified by hotplug_dock_devices() depending on the
    event.  For example, on eject it will set hotplug_status to "removal".
    Then, after completing the walk, it will reset hotplug_status to
    "no action" and wake up its wait queue.

(3) dock_del_hotplug_device() will check if hotplug_status is "removal" or
    "no_action" and if so, it will just do the removal under ds->dd_lock.  If
    it is "addition", though, it will go to sleep (in the hotplug_status' wait
    queue) until hotplug_dock_devices() wakes it up.

(4) Analogously for dock_add_hotplug_device().

For this to work the "addition" and "deletion" of hotplug devices should better
be implemented as setting and clearing a 'hotplug' flag in
struct dock_dependent_device (instead of using ds->hotplug_devices).

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

end of thread, other threads:[~2013-06-14 23:12 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1371141152-9468-1-git-send-email-jiang.liu@huawei.com>
2013-06-13 16:32 ` [BUGFIX 1/9] ACPI, DOCK: initialize dock subsystem before scanning PCI root buses Jiang Liu
2013-06-13 18:22   ` Rafael J. Wysocki
2013-06-13 18:24   ` Rafael J. Wysocki
2013-06-13 16:32 ` [BUGFIX 2/9] ACPIPHP: fix device destroying order issue when handling dock notification Jiang Liu
2013-06-13 19:59   ` Rafael J. Wysocki
2013-06-14 12:23     ` Rafael J. Wysocki
2013-06-14 12:30       ` Alexander E. Patrakov
2013-06-14 12:53         ` Rafael J. Wysocki
2013-06-14 16:58           ` Alexander E. Patrakov
2013-06-14 13:57       ` Jiang Liu
2013-06-14 14:12         ` Rafael J. Wysocki
2013-06-14 15:30           ` Jiang Liu
2013-06-14 23:12             ` Rafael J. Wysocki
2013-06-14 13:53     ` Jiang Liu
2013-06-14 14:05       ` Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox