summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2017-11-30 14:52:07 +0100
committerThorsten Leemhuis <fedora@leemhuis.info>2017-11-30 14:52:07 +0100
commit03d1f473cf69a0421564512d846a9dd09949b070 (patch)
treee7c95a4d184a0325b05ee814110547f3f44965dc
parent6f1cbf5656501dbba09c0bd727cc1967a18af068 (diff)
parentc33b7ad1f27be960d497119ac3662d700e3456d2 (diff)
downloadkernel-03d1f473cf69a0421564512d846a9dd09949b070.tar.gz
kernel-03d1f473cf69a0421564512d846a9dd09949b070.tar.xz
kernel-03d1f473cf69a0421564512d846a9dd09949b070.zip
Merge remote-tracking branch 'origin/master' into rawhide-user-thl-vanilla-fedora
-rw-r--r--0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch163
-rw-r--r--0002-Input-soc_button_array-Suppress-power-button-presses.patch62
-rw-r--r--drm-ttm-don-t-attempt-to-use-hugepages-if-dma32-requested.mbox125
-rw-r--r--gitrev2
-rw-r--r--kernel.spec19
-rw-r--r--rpi-graphics-fix.patch46
-rw-r--r--sources1
7 files changed, 10 insertions, 408 deletions
diff --git a/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch b/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
deleted file mode 100644
index 1f03d710b..000000000
--- a/0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 25bb14c1e78e641049fd1ee0c404a9ccd2755e44 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Sat, 22 Jul 2017 13:00:05 +0200
-Subject: [PATCH 1/2] Input: gpio_keys - Allow suppression of input events for
- wakeup button presses
-
-In some cases it is undesirable for a wakeup button to send input events
-to userspace if pressed to wakeup the system (if pressed during suspend).
-
-A typical example of this is the power-button on laptops / tablets,
-sending a KEY_POWER event to userspace when woken up with the power-button
-will cause userspace to immediately suspend the system again which is
-undesirable.
-
-For power-buttons attached to a PMIC, or handled by e.g. ACPI, not sending
-an input event in this case is take care of by the PMIC / ACPI hardware /
-code. But in the case of a GPIO button we need to explicitly suppress the
-sending of the input event.
-
-This commit adds support for this by adding a no_wakeup_events bool to
-struct gpio_keys_button, which platform code can set to suppress the
-input events for presses of wakeup keys during suspend.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
-Changes in v2:
--This is a rewrite if my "Input: gpio_keys - Do not report wake button
- presses as evdev events" patch.
--Instead of unconditionally ignoring presses of all wake-up buttons during
- suspend, this rewrite makes this configurable per button
--This version uses a timer to delay clearing the suspended flag for software
- debouncing, rather then jiffy compare magic
----
- drivers/input/keyboard/gpio_keys.c | 33 +++++++++++++++++++++++++++++++--
- include/linux/gpio_keys.h | 3 +++
- 2 files changed, 34 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
-index a047b9af8369..fa3a58620407 100644
---- a/drivers/input/keyboard/gpio_keys.c
-+++ b/drivers/input/keyboard/gpio_keys.c
-@@ -38,6 +38,7 @@ struct gpio_button_data {
-
- unsigned short *code;
-
-+ struct timer_list unsuspend_timer;
- struct timer_list release_timer;
- unsigned int release_delay; /* in msecs, for IRQ-only buttons */
-
-@@ -371,6 +372,9 @@ static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata)
- return;
- }
-
-+ if (state && bdata->button->no_wakeup_events && bdata->suspended)
-+ return;
-+
- if (type == EV_ABS) {
- if (state)
- input_event(input, type, button->code, button->value);
-@@ -400,6 +404,9 @@ static irqreturn_t gpio_keys_gpio_isr(int irq, void *dev_id)
- if (bdata->button->wakeup) {
- const struct gpio_keys_button *button = bdata->button;
-
-+ if (bdata->button->no_wakeup_events && bdata->suspended)
-+ return IRQ_HANDLED;
-+
- pm_stay_awake(bdata->input->dev.parent);
- if (bdata->suspended &&
- (button->type == 0 || button->type == EV_KEY)) {
-@@ -445,9 +452,13 @@ static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id)
- spin_lock_irqsave(&bdata->lock, flags);
-
- if (!bdata->key_pressed) {
-- if (bdata->button->wakeup)
-+ if (bdata->button->wakeup) {
- pm_wakeup_event(bdata->input->dev.parent, 0);
-
-+ if (bdata->button->no_wakeup_events && bdata->suspended)
-+ goto out;
-+ }
-+
- input_event(input, EV_KEY, *bdata->code, 1);
- input_sync(input);
-
-@@ -468,6 +479,13 @@ static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id)
- return IRQ_HANDLED;
- }
-
-+static void gpio_keys_unsuspend_timer(unsigned long _data)
-+{
-+ struct gpio_button_data *bdata = (struct gpio_button_data *)_data;
-+
-+ bdata->suspended = false;
-+}
-+
- static void gpio_keys_quiesce_key(void *data)
- {
- struct gpio_button_data *bdata = data;
-@@ -476,6 +494,8 @@ static void gpio_keys_quiesce_key(void *data)
- cancel_delayed_work_sync(&bdata->work);
- else
- del_timer_sync(&bdata->release_timer);
-+
-+ del_timer_sync(&bdata->unsuspend_timer);
- }
-
- static int gpio_keys_setup_key(struct platform_device *pdev,
-@@ -496,6 +516,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
- bdata->input = input;
- bdata->button = button;
- spin_lock_init(&bdata->lock);
-+ setup_timer(&bdata->unsuspend_timer, gpio_keys_unsuspend_timer,
-+ (unsigned long)bdata);
-
- if (child) {
- bdata->gpiod = devm_fwnode_get_gpiod_from_child(dev, NULL,
-@@ -868,6 +890,7 @@ static int __maybe_unused gpio_keys_suspend(struct device *dev)
- struct gpio_button_data *bdata = &ddata->data[i];
- if (bdata->button->wakeup)
- enable_irq_wake(bdata->irq);
-+ del_timer_sync(&bdata->unsuspend_timer);
- bdata->suspended = true;
- }
- } else {
-@@ -892,7 +915,13 @@ static int __maybe_unused gpio_keys_resume(struct device *dev)
- struct gpio_button_data *bdata = &ddata->data[i];
- if (bdata->button->wakeup)
- disable_irq_wake(bdata->irq);
-- bdata->suspended = false;
-+ if (bdata->button->no_wakeup_events) {
-+ mod_timer(&bdata->unsuspend_timer, jiffies +
-+ msecs_to_jiffies(
-+ bdata->software_debounce));
-+ } else {
-+ bdata->suspended = false;
-+ }
- }
- } else {
- mutex_lock(&input->mutex);
-diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h
-index 0b71024c082c..d8a85e52b6bb 100644
---- a/include/linux/gpio_keys.h
-+++ b/include/linux/gpio_keys.h
-@@ -15,6 +15,8 @@ struct device;
- * @debounce_interval: debounce ticks interval in msecs
- * @can_disable: %true indicates that userspace is allowed to
- * disable button via sysfs
-+ * @no_wakeup_events: For wake-up source buttons only, if %true then no input
-+ * events will be generated if pressed while suspended
- * @value: axis value for %EV_ABS
- * @irq: Irq number in case of interrupt keys
- */
-@@ -27,6 +29,7 @@ struct gpio_keys_button {
- int wakeup;
- int debounce_interval;
- bool can_disable;
-+ bool no_wakeup_events;
- int value;
- unsigned int irq;
- };
---
-2.13.4
-
diff --git a/0002-Input-soc_button_array-Suppress-power-button-presses.patch b/0002-Input-soc_button_array-Suppress-power-button-presses.patch
deleted file mode 100644
index d95aeb36c..000000000
--- a/0002-Input-soc_button_array-Suppress-power-button-presses.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d561f0543506bc12e7b3355efddb0bfd7ca83c74 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Sat, 22 Jul 2017 13:17:36 +0200
-Subject: [PATCH 2/2] Input: soc_button_array - Suppress power button presses
- during suspend
-
-If the power-button is pressed to wakeup the laptop/tablet from suspend
-and we report a KEY_POWER event to userspace when woken up this will cause
-userspace to immediately suspend the system again which is undesirable.
-
-This commit sets the new no_wakeup_events flag in the gpio_keys_button
-struct for the power-button suppressing the undesirable KEY_POWER input
-events on wake-up.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
-Changes in v2:
--New patch in v2 of this patch-set
----
- drivers/input/misc/soc_button_array.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
-index f600f3a7a3c6..27b99831cb97 100644
---- a/drivers/input/misc/soc_button_array.c
-+++ b/drivers/input/misc/soc_button_array.c
-@@ -27,6 +27,7 @@ struct soc_button_info {
- unsigned int event_code;
- bool autorepeat;
- bool wakeup;
-+ bool no_wakeup_events;
- };
-
- /*
-@@ -100,6 +101,7 @@ soc_button_device_create(struct platform_device *pdev,
- gpio_keys[n_buttons].active_low = 1;
- gpio_keys[n_buttons].desc = info->name;
- gpio_keys[n_buttons].wakeup = info->wakeup;
-+ gpio_keys[n_buttons].no_wakeup_events = info->no_wakeup_events;
- /* These devices often use cheap buttons, use 50 ms debounce */
- gpio_keys[n_buttons].debounce_interval = 50;
- n_buttons++;
-@@ -185,6 +187,7 @@ static int soc_button_parse_btn_desc(struct device *dev,
- info->name = "power";
- info->event_code = KEY_POWER;
- info->wakeup = true;
-+ info->no_wakeup_events = true;
- } else if (upage == 0x07 && usage == 0xe3) {
- info->name = "home";
- info->event_code = KEY_LEFTMETA;
-@@ -369,7 +372,7 @@ static int soc_button_probe(struct platform_device *pdev)
- * Platforms"
- */
- static struct soc_button_info soc_button_PNP0C40[] = {
-- { "power", 0, EV_KEY, KEY_POWER, false, true },
-+ { "power", 0, EV_KEY, KEY_POWER, false, true, true },
- { "home", 1, EV_KEY, KEY_LEFTMETA, false, true },
- { "volume_up", 2, EV_KEY, KEY_VOLUMEUP, true, false },
- { "volume_down", 3, EV_KEY, KEY_VOLUMEDOWN, true, false },
---
-2.13.4
-
diff --git a/drm-ttm-don-t-attempt-to-use-hugepages-if-dma32-requested.mbox b/drm-ttm-don-t-attempt-to-use-hugepages-if-dma32-requested.mbox
deleted file mode 100644
index fad495a97..000000000
--- a/drm-ttm-don-t-attempt-to-use-hugepages-if-dma32-requested.mbox
+++ /dev/null
@@ -1,125 +0,0 @@
-From patchwork Thu Nov 23 02:41:54 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: drm/ttm: don't attempt to use hugepages if dma32 requested (v2)
-From: Dave Airlie <airlied@gmail.com>
-X-Patchwork-Id: 189812
-Message-Id: <20171123024154.10023-1-airlied@gmail.com>
-To: dri-devel@lists.freedesktop.org
-Date: Thu, 23 Nov 2017 12:41:54 +1000
-
-From: Dave Airlie <airlied@redhat.com>
-
-The commit below introduced thp support for ttm allocations, however it didn't
-take into account the case where dma32 was requested. Some drivers always request
-dma32, and the bochs driver is one of those.
-
-This fixes an oops:
-
-[ 30.108507] ------------[ cut here ]------------
-[ 30.108920] kernel BUG at ./include/linux/gfp.h:408!
-[ 30.109356] invalid opcode: 0000 [#1] SMP
-[ 30.109700] Modules linked in: fuse nf_conntrack_netbios_ns nf_conntrack_broadcast xt_CT ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack devlink ip_set nfnetlink ebtable_nat ebtable_broute bridge ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack libcrc32c iptable_mangle iptable_raw iptable_security ebtable_filter ebtables ip6table_filter ip6_tables snd_hda_codec_generic kvm_intel kvm snd_hda_intel snd_hda_codec irqbypass ppdev snd_hda_core snd_hwdep snd_seq snd_seq_device snd_pcm bochs_drm ttm joydev drm_kms_helper virtio_balloon snd_timer snd parport_pc drm soundcore parport i2c_piix4 nls_utf8 isofs squashfs zstd_decompress xxhash 8021q garp mrp stp llc virtio_net
-[ 30.115605] virtio_console virtio_scsi crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel serio_raw virtio_pci virtio_ring virtio ata_generic pata_acpi qemu_fw_cfg sunrpc scsi_transport_iscsi loop
-[ 30.117425] CPU: 0 PID: 1347 Comm: gnome-shell Not tainted 4.15.0-0.rc0.git6.1.fc28.x86_64 #1
-[ 30.118141] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014
-[ 30.118866] task: ffff923a77e03380 task.stack: ffffa78182228000
-[ 30.119366] RIP: 0010:__alloc_pages_nodemask+0x35e/0x430
-[ 30.119810] RSP: 0000:ffffa7818222bba8 EFLAGS: 00010202
-[ 30.120250] RAX: 0000000000000001 RBX: 00000000014382c6 RCX: 0000000000000006
-[ 30.120840] RDX: 0000000000000000 RSI: 0000000000000009 RDI: 0000000000000000
-[ 30.121443] RBP: ffff923a760d6000 R08: 0000000000000000 R09: 0000000000000006
-[ 30.122039] R10: 0000000000000040 R11: 0000000000000300 R12: ffff923a729273c0
-[ 30.122629] R13: 0000000000000000 R14: 0000000000000000 R15: ffff923a7483d400
-[ 30.123223] FS: 00007fe48da7dac0(0000) GS:ffff923a7cc00000(0000) knlGS:0000000000000000
-[ 30.123896] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-[ 30.124373] CR2: 00007fe457b73000 CR3: 0000000078313000 CR4: 00000000000006f0
-[ 30.124968] Call Trace:
-[ 30.125186] ttm_pool_populate+0x19b/0x400 [ttm]
-[ 30.125578] ttm_bo_vm_fault+0x325/0x570 [ttm]
-[ 30.125964] __do_fault+0x19/0x11e
-[ 30.126255] __handle_mm_fault+0xcd3/0x1260
-[ 30.126609] handle_mm_fault+0x14c/0x310
-[ 30.126947] __do_page_fault+0x28c/0x530
-[ 30.127282] do_page_fault+0x32/0x270
-[ 30.127593] async_page_fault+0x22/0x30
-[ 30.127922] RIP: 0033:0x7fe48aae39a8
-[ 30.128225] RSP: 002b:00007ffc21c4d928 EFLAGS: 00010206
-[ 30.128664] RAX: 00007fe457b73000 RBX: 000055cd4c1041a0 RCX: 00007fe457b73040
-[ 30.129259] RDX: 0000000000300000 RSI: 0000000000000000 RDI: 00007fe457b73000
-[ 30.129855] RBP: 0000000000000300 R08: 000000000000000c R09: 0000000100000000
-[ 30.130457] R10: 0000000000000001 R11: 0000000000000246 R12: 000055cd4c1041a0
-[ 30.131054] R13: 000055cd4bdfe990 R14: 000055cd4c104110 R15: 0000000000000400
-[ 30.131648] Code: 11 01 00 0f 84 a9 00 00 00 65 ff 0d 6d cc dd 44 e9 0f ff ff ff 40 80 cd 80 e9 99 fe ff ff 48 89 c7 e8 e7 f6 01 00 e9 b7 fe ff ff <0f> 0b 0f ff e9 40 fd ff ff 65 48 8b 04 25 80 d5 00 00 8b 40 4c
-[ 30.133245] RIP: __alloc_pages_nodemask+0x35e/0x430 RSP: ffffa7818222bba8
-[ 30.133836] ---[ end trace d4f1deb60784f40a ]---
-
-v2: handle free path as well.
-
-Reported-by: Laura Abbott <labbott@redhat.com>
-Reported-by: Adam Williamson <awilliam@redhat.com>
-Fixes: 0284f1ead87463bc17cf5e81a24fc65c052486f3 (drm/ttm: add transparent huge page support for cached allocations v2)
-Signed-off-by: Dave Airlie <airlied@redhat.com>
----
- drivers/gpu/drm/ttm/ttm_page_alloc.c | 36 ++++++++++++++++++++----------------
- 1 file changed, 20 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
-index 316f831..b0551aa 100644
---- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
-+++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
-@@ -744,12 +744,14 @@ static void ttm_put_pages(struct page **pages, unsigned npages, int flags,
- }
-
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-- for (j = 0; j < HPAGE_PMD_NR; ++j)
-- if (p++ != pages[i + j])
-- break;
-+ if (!(flags & TTM_PAGE_FLAG_DMA32)) {
-+ for (j = 0; j < HPAGE_PMD_NR; ++j)
-+ if (p++ != pages[i + j])
-+ break;
-
-- if (j == HPAGE_PMD_NR)
-- order = HPAGE_PMD_ORDER;
-+ if (j == HPAGE_PMD_NR)
-+ order = HPAGE_PMD_ORDER;
-+ }
- #endif
-
- if (page_count(pages[i]) != 1)
-@@ -865,20 +867,22 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
-
- i = 0;
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-- while (npages >= HPAGE_PMD_NR) {
-- gfp_t huge_flags = gfp_flags;
-+ if (!(gfp_flags & GFP_DMA32)) {
-+ while (npages >= HPAGE_PMD_NR) {
-+ gfp_t huge_flags = gfp_flags;
-
-- huge_flags |= GFP_TRANSHUGE;
-- huge_flags &= ~__GFP_MOVABLE;
-- huge_flags &= ~__GFP_COMP;
-- p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
-- if (!p)
-- break;
-+ huge_flags |= GFP_TRANSHUGE;
-+ huge_flags &= ~__GFP_MOVABLE;
-+ huge_flags &= ~__GFP_COMP;
-+ p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
-+ if (!p)
-+ break;
-
-- for (j = 0; j < HPAGE_PMD_NR; ++j)
-- pages[i++] = p++;
-+ for (j = 0; j < HPAGE_PMD_NR; ++j)
-+ pages[i++] = p++;
-
-- npages -= HPAGE_PMD_NR;
-+ npages -= HPAGE_PMD_NR;
-+ }
- }
- #endif
-
diff --git a/gitrev b/gitrev
index 30fbb7917..c929b9393 100644
--- a/gitrev
+++ b/gitrev
@@ -1 +1 @@
-0c86a6bd85ff0629cd2c5141027fc1c8bb6cde9c
+43570f0383d6d5879ae585e6c3cf027ba321546f
diff --git a/kernel.spec b/kernel.spec
index 01afb32ac..f0d482f0d 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -77,7 +77,7 @@ Summary: The Linux kernel
# The rc snapshot level
%global rcrev 1
# The git snapshot level
-%define gitrev 0
+%define gitrev 1
# Set rpm version accordingly
%define rpmversion 4.%{upstream_sublevel}.0
%endif
@@ -133,7 +133,7 @@ Summary: The Linux kernel
# Set debugbuildsenabled to 1 for production (build separate debug kernels)
# and 0 for rawhide (all kernels are debug kernels).
# See also 'make debug' and 'make release'.
-%define debugbuildsenabled 1
+%define debugbuildsenabled 0
# Want to build a vanilla kernel build without any non-upstream patches?
%define with_vanilla %{?_without_vanilla: 0} %{?!_without_vanilla: 1}
@@ -632,9 +632,6 @@ Patch332: arm64-socionext-96b-enablement.patch
# 600 - Patches for improved Bay and Cherry Trail device support
# Below patches are submitted upstream, awaiting review / merging
-# This one needs to be rebased
-# Patch601: 0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
-Patch602: 0002-Input-soc_button_array-Suppress-power-button-presses.patch
Patch610: 0010-Input-silead-Add-support-for-capactive-home-button-f.patch
# rhbz 1476467
@@ -646,16 +643,10 @@ Patch619: input-rmi4-remove-the-need-for-artifical-IRQ.patch
# rhbz 1509461
Patch625: v3-2-2-Input-synaptics---Lenovo-X1-Carbon-5-should-use-SMBUS-RMI.patch
-# Pointed to by Eric Anholt
-Patch627: rpi-graphics-fix.patch
-
# For https://fedoraproject.org/wiki/Changes/ImprovedLaptopBatteryLife
# Queued in bluetooth-next for merging into 4.16
Patch628: 0001-Bluetooth-btusb-Add-a-Kconfig-option-to-enable-USB-a.patch
-# rhbz 1516584
-Patch629: drm-ttm-don-t-attempt-to-use-hugepages-if-dma32-requested.mbox
-
# Fix left-button not working with some hid-multitouch touchpads
# Adding these suggested by Benjamin Tissoires
# Queued in hid.git/for-4.16/hid-quirks-cleanup/multitouch for merging into 4.16
@@ -2216,6 +2207,12 @@ fi
#
#
%changelog
+* Wed Nov 29 2017 Laura Abbott <labbott@redhat.com> - 4.15.0-0.rc1.git1.1
+- Linux v4.15-rc1-24-g43570f0383d6
+
+* Wed Nov 29 2017 Laura Abbott <labbott@redhat.com>
+- Reenable debugging options.
+
* Mon Nov 27 2017 Laura Abbott <labbott@redhat.com> - 4.15.0-0.rc1.git0.1
- Linux v4.15-rc1
diff --git a/rpi-graphics-fix.patch b/rpi-graphics-fix.patch
deleted file mode 100644
index 89bfaf9a5..000000000
--- a/rpi-graphics-fix.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 253696ccd613fbdaa5aba1de44c461a058e0a114 Mon Sep 17 00:00:00 2001
-From: Stefan Schake <stschake@gmail.com>
-Date: Fri, 10 Nov 2017 02:05:06 +0100
-Subject: drm/vc4: Account for interrupts in flight
-
-Synchronously disable the IRQ to make the following cancel_work_sync
-invocation effective.
-
-An interrupt in flight could enqueue further overflow mem work. As we
-free the binner BO immediately following vc4_irq_uninstall this caused
-a NULL pointer dereference in the work callback vc4_overflow_mem_work.
-
-Link: https://github.com/anholt/linux/issues/114
-Signed-off-by: Stefan Schake <stschake@gmail.com>
-Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Link: https://patchwork.freedesktop.org/patch/msgid/1510275907-993-2-git-send-email-stschake@gmail.com
-
-diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c
-index 7d7af3a..61b2e53 100644
---- a/drivers/gpu/drm/vc4/vc4_irq.c
-+++ b/drivers/gpu/drm/vc4/vc4_irq.c
-@@ -208,6 +208,9 @@ vc4_irq_postinstall(struct drm_device *dev)
- {
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-
-+ /* Undo the effects of a previous vc4_irq_uninstall. */
-+ enable_irq(dev->irq);
-+
- /* Enable both the render done and out of memory interrupts. */
- V3D_WRITE(V3D_INTENA, V3D_DRIVER_IRQS);
-
-@@ -225,6 +228,9 @@ vc4_irq_uninstall(struct drm_device *dev)
- /* Clear any pending interrupts we might have left. */
- V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);
-
-+ /* Finish any interrupt handler still in flight. */
-+ disable_irq(dev->irq);
-+
- cancel_work_sync(&vc4->overflow_mem_work);
- }
-
---
-cgit v0.10.2
-
diff --git a/sources b/sources
index 72ea1203d..5a4c18029 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,4 @@
SHA512 (linux-4.14.tar.xz) = 77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8
SHA512 (perf-man-4.14.tar.gz) = 76a9d8adc284cdffd4b3fbb060e7f9a14109267707ce1d03f4c3239cd70d8d164f697da3a0f90a363fbcac42a61d3c378afbcc2a86f112c501b9cb5ce74ef9f8
SHA512 (patch-4.15-rc1.xz) = 00cb666d762e46b2a965ce27a06272240e9dc375dc92644ade1a512f27ccea615ae609e3b685a0061614859acbdf28fd3d6bfb137e2208f2acc04114ff9fff46
+SHA512 (patch-4.15-rc1-git1.xz) = be5d998166f0f3dc4b2474e5a6914050f18acc2823a179934fbf651f5f487ee97ab9a5196b20b43bf985121c9c5e44441dab8759cbee31686a39ab79bf5e7a9a