--- /dev/null
+From 93d68841a23a5779cef6fb9aa0ef32e7c5bd00da Mon Sep 17 00:00:00 2001
+From: Prarit Bhargava <prarit@redhat.com>
+Date: Wed, 4 May 2016 13:48:56 +0800
+Subject: ACPICA: Dispatcher: Update thread ID for recursive method calls
+
+From: Prarit Bhargava <prarit@redhat.com>
+
+commit 93d68841a23a5779cef6fb9aa0ef32e7c5bd00da upstream.
+
+ACPICA commit 7a3bd2d962f221809f25ddb826c9e551b916eb25
+
+Set the mutex owner thread ID.
+Original patch from: Prarit Bhargava <prarit@redhat.com>
+
+Link: https://bugzilla.kernel.org/show_bug.cgi?id=115121
+Link: https://github.com/acpica/acpica/commit/7a3bd2d9
+Signed-off-by: Prarit Bhargava <prarit@redhat.com>
+Tested-by: Andy Lutomirski <luto@kernel.org> # On a Dell XPS 13 9350
+Signed-off-by: Bob Moore <robert.moore@intel.com>
+Signed-off-by: Lv Zheng <lv.zheng@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/acpica/dsmethod.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/acpi/acpica/dsmethod.c
++++ b/drivers/acpi/acpica/dsmethod.c
+@@ -267,6 +267,9 @@ acpi_ds_begin_method_execution(struct ac
+ obj_desc->method.mutex->mutex.
+ original_sync_level =
+ obj_desc->method.mutex->mutex.sync_level;
++
++ obj_desc->method.mutex->mutex.thread_id =
++ acpi_os_get_thread_id();
+ }
+ }
+
--- /dev/null
+From c10fcb14c7afd6688c7b197a814358fecf244222 Mon Sep 17 00:00:00 2001
+From: Wang YanQing <udknight@gmail.com>
+Date: Thu, 5 May 2016 14:14:21 +0100
+Subject: x86/sysfb_efi: Fix valid BAR address range check
+
+From: Wang YanQing <udknight@gmail.com>
+
+commit c10fcb14c7afd6688c7b197a814358fecf244222 upstream.
+
+The code for checking whether a BAR address range is valid will break
+out of the loop when a start address of 0x0 is encountered.
+
+This behaviour is wrong since by breaking out of the loop we may miss
+the BAR that describes the EFI frame buffer in a later iteration.
+
+Because of this bug I can't use video=efifb: boot parameter to get
+efifb on my new ThinkPad E550 for my old linux system hard disk with
+3.10 kernel. In 3.10, efifb is the only choice due to DRM/I915 not
+supporting the GPU.
+
+This patch also add a trivial optimization to break out after we find
+the frame buffer address range without testing later BARs.
+
+Signed-off-by: Wang YanQing <udknight@gmail.com>
+[ Rewrote changelog. ]
+Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
+Reviewed-by: Peter Jones <pjones@redhat.com>
+Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Cc: David Herrmann <dh.herrmann@gmail.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
+Cc: linux-efi@vger.kernel.org
+Link: http://lkml.kernel.org/r/1462454061-21561-2-git-send-email-matt@codeblueprint.co.uk
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/sysfb_efi.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/sysfb_efi.c
++++ b/arch/x86/kernel/sysfb_efi.c
+@@ -106,14 +106,24 @@ static int __init efifb_set_system(const
+ continue;
+ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
+ resource_size_t start, end;
++ unsigned long flags;
++
++ flags = pci_resource_flags(dev, i);
++ if (!(flags & IORESOURCE_MEM))
++ continue;
++
++ if (flags & IORESOURCE_UNSET)
++ continue;
++
++ if (pci_resource_len(dev, i) == 0)
++ continue;
+
+ start = pci_resource_start(dev, i);
+- if (start == 0)
+- break;
+ end = pci_resource_end(dev, i);
+ if (screen_info.lfb_base >= start &&
+ screen_info.lfb_base < end) {
+ found_bar = 1;
++ break;
+ }
+ }
+ }