aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2014-12-16 06:25:38 -0500
committerThomas Gleixner <tglx@linutronix.de>2014-12-16 06:25:38 -0500
commit8ab7913675726e5ae23b91221c0b5442d986d44a (patch)
treef2673dcb25e864cc87abe3f2d58db9bf9730f148 /drivers/acpi
parent864b94adfcba752aa902ee34497bbe58b97aa8d3 (diff)
parent3a5dc1fafb016560315fe45bb4ef8bde259dd1bc (diff)
Merge branch 'x86/vt-d' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu into x86/apic-picks
Required to apply Jiangs x86 irq handling rework without creating a nightmare of conflicts. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/apei/ghes.c20
-rw-r--r--drivers/acpi/blacklist.c8
-rw-r--r--drivers/acpi/device_pm.c2
-rw-r--r--drivers/acpi/video.c3
4 files changed, 14 insertions, 19 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index fc5f780bb61d..1b6aa514848f 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -128,7 +128,7 @@ static DEFINE_SPINLOCK(ghes_ioremap_lock_irq);
128static struct gen_pool *ghes_estatus_pool; 128static struct gen_pool *ghes_estatus_pool;
129static unsigned long ghes_estatus_pool_size_request; 129static unsigned long ghes_estatus_pool_size_request;
130 130
131struct ghes_estatus_cache *ghes_estatus_caches[GHES_ESTATUS_CACHES_SIZE]; 131static struct ghes_estatus_cache *ghes_estatus_caches[GHES_ESTATUS_CACHES_SIZE];
132static atomic_t ghes_estatus_cache_alloced; 132static atomic_t ghes_estatus_cache_alloced;
133 133
134static int ghes_ioremap_init(void) 134static int ghes_ioremap_init(void)
@@ -738,20 +738,6 @@ static LIST_HEAD(ghes_nmi);
738 738
739static int ghes_panic_timeout __read_mostly = 30; 739static int ghes_panic_timeout __read_mostly = 30;
740 740
741static struct llist_node *llist_nodes_reverse(struct llist_node *llnode)
742{
743 struct llist_node *next, *tail = NULL;
744
745 while (llnode) {
746 next = llnode->next;
747 llnode->next = tail;
748 tail = llnode;
749 llnode = next;
750 }
751
752 return tail;
753}
754
755static void ghes_proc_in_irq(struct irq_work *irq_work) 741static void ghes_proc_in_irq(struct irq_work *irq_work)
756{ 742{
757 struct llist_node *llnode, *next; 743 struct llist_node *llnode, *next;
@@ -765,7 +751,7 @@ static void ghes_proc_in_irq(struct irq_work *irq_work)
765 * Because the time order of estatus in list is reversed, 751 * Because the time order of estatus in list is reversed,
766 * revert it back to proper order. 752 * revert it back to proper order.
767 */ 753 */
768 llnode = llist_nodes_reverse(llnode); 754 llnode = llist_reverse_order(llnode);
769 while (llnode) { 755 while (llnode) {
770 next = llnode->next; 756 next = llnode->next;
771 estatus_node = llist_entry(llnode, struct ghes_estatus_node, 757 estatus_node = llist_entry(llnode, struct ghes_estatus_node,
@@ -798,7 +784,7 @@ static void ghes_print_queued_estatus(void)
798 * Because the time order of estatus in list is reversed, 784 * Because the time order of estatus in list is reversed,
799 * revert it back to proper order. 785 * revert it back to proper order.
800 */ 786 */
801 llnode = llist_nodes_reverse(llnode); 787 llnode = llist_reverse_order(llnode);
802 while (llnode) { 788 while (llnode) {
803 estatus_node = llist_entry(llnode, struct ghes_estatus_node, 789 estatus_node = llist_entry(llnode, struct ghes_estatus_node,
804 llnode); 790 llnode);
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index ed122e17636e..7556e7c4a055 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -290,6 +290,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
290 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3446"), 290 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3446"),
291 }, 291 },
292 }, 292 },
293 {
294 .callback = dmi_disable_osi_win8,
295 .ident = "Dell Vostro 3546",
296 .matches = {
297 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
298 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3546"),
299 },
300 },
293 301
294 /* 302 /*
295 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. 303 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
index 143ec6ea1468..7db193160766 100644
--- a/drivers/acpi/device_pm.c
+++ b/drivers/acpi/device_pm.c
@@ -878,7 +878,7 @@ int acpi_dev_suspend_late(struct device *dev)
878 return 0; 878 return 0;
879 879
880 target_state = acpi_target_system_state(); 880 target_state = acpi_target_system_state();
881 wakeup = device_may_wakeup(dev); 881 wakeup = device_may_wakeup(dev) && acpi_device_can_wakeup(adev);
882 error = acpi_device_wakeup(adev, target_state, wakeup); 882 error = acpi_device_wakeup(adev, target_state, wakeup);
883 if (wakeup && error) 883 if (wakeup && error)
884 return error; 884 return error;
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 807a88a0f394..9d75ead2a1f9 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1164,7 +1164,8 @@ static bool acpi_video_device_in_dod(struct acpi_video_device *device)
1164 return true; 1164 return true;
1165 1165
1166 for (i = 0; i < video->attached_count; i++) { 1166 for (i = 0; i < video->attached_count; i++) {
1167 if (video->attached_array[i].bind_info == device) 1167 if ((video->attached_array[i].value.int_val & 0xfff) ==
1168 (device->device_id & 0xfff))
1168 return true; 1169 return true;
1169 } 1170 }
1170 1171