]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.20-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Mar 2019 12:06:42 +0000 (05:06 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Mar 2019 12:06:42 +0000 (05:06 -0700)
added patches:
media-revert-media-rc-some-events-are-dropped-by-userspace.patch
revert-pci-pme-implement-runtime-pm-callbacks.patch

queue-4.20/media-revert-media-rc-some-events-are-dropped-by-userspace.patch [new file with mode: 0644]
queue-4.20/revert-pci-pme-implement-runtime-pm-callbacks.patch [new file with mode: 0644]

diff --git a/queue-4.20/media-revert-media-rc-some-events-are-dropped-by-userspace.patch b/queue-4.20/media-revert-media-rc-some-events-are-dropped-by-userspace.patch
new file mode 100644 (file)
index 0000000..9d88f2c
--- /dev/null
@@ -0,0 +1,70 @@
+From 05f0edadcc5fccdfc0676825b3e70e75dc0a8a84 Mon Sep 17 00:00:00 2001
+From: Sean Young <sean@mess.org>
+Date: Fri, 22 Feb 2019 04:08:05 -0500
+Subject: media: Revert "media: rc: some events are dropped by userspace"
+
+From: Sean Young <sean@mess.org>
+
+commit 05f0edadcc5fccdfc0676825b3e70e75dc0a8a84 upstream.
+
+When an rc device is created, we do not know what key codes it will
+support, since a new keymap might be loaded at some later point. So,
+we set all keybit in the input device.
+
+The uevent for the input device includes all the key codes, of which
+there are now 768. This overflows the size of the uevent
+(UEVENT_BUFFER_SIZE) and no event is generated.
+
+Revert for now until we figure out a different solution.
+
+This reverts commit fec225a04330d0f222d24feb5bea045526031675.
+
+Cc: <stable@vger.kernel.org> # 4.20+
+Reported-by: Christian Holpert <christian@holpert.de>
+Signed-off-by: Sean Young <sean@mess.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/rc/rc-main.c |   13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/media/rc/rc-main.c
++++ b/drivers/media/rc/rc-main.c
+@@ -274,6 +274,7 @@ static unsigned int ir_update_mapping(st
+                                     unsigned int new_keycode)
+ {
+       int old_keycode = rc_map->scan[index].keycode;
++      int i;
+       /* Did the user wish to remove the mapping? */
+       if (new_keycode == KEY_RESERVED || new_keycode == KEY_UNKNOWN) {
+@@ -288,9 +289,20 @@ static unsigned int ir_update_mapping(st
+                       old_keycode == KEY_RESERVED ? "New" : "Replacing",
+                       rc_map->scan[index].scancode, new_keycode);
+               rc_map->scan[index].keycode = new_keycode;
++              __set_bit(new_keycode, dev->input_dev->keybit);
+       }
+       if (old_keycode != KEY_RESERVED) {
++              /* A previous mapping was updated... */
++              __clear_bit(old_keycode, dev->input_dev->keybit);
++              /* ... but another scancode might use the same keycode */
++              for (i = 0; i < rc_map->len; i++) {
++                      if (rc_map->scan[i].keycode == old_keycode) {
++                              __set_bit(old_keycode, dev->input_dev->keybit);
++                              break;
++                      }
++              }
++
+               /* Possibly shrink the keytable, failure is not a problem */
+               ir_resize_table(dev, rc_map, GFP_ATOMIC);
+       }
+@@ -1750,7 +1762,6 @@ static int rc_prepare_rx_device(struct r
+       set_bit(EV_REP, dev->input_dev->evbit);
+       set_bit(EV_MSC, dev->input_dev->evbit);
+       set_bit(MSC_SCAN, dev->input_dev->mscbit);
+-      bitmap_fill(dev->input_dev->keybit, KEY_CNT);
+       /* Pointer/mouse events */
+       set_bit(EV_REL, dev->input_dev->evbit);
diff --git a/queue-4.20/revert-pci-pme-implement-runtime-pm-callbacks.patch b/queue-4.20/revert-pci-pme-implement-runtime-pm-callbacks.patch
new file mode 100644 (file)
index 0000000..aafc1b2
--- /dev/null
@@ -0,0 +1,76 @@
+From c528f7bd362b097eeeafa6fbbeccd9750b79c7ba Mon Sep 17 00:00:00 2001
+From: Mika Westerberg <mika.westerberg@linux.intel.com>
+Date: Thu, 31 Jan 2019 20:07:45 +0300
+Subject: Revert "PCI/PME: Implement runtime PM callbacks"
+
+From: Mika Westerberg <mika.westerberg@linux.intel.com>
+
+commit c528f7bd362b097eeeafa6fbbeccd9750b79c7ba upstream.
+
+This reverts commit 0e157e52860441cb26051f131dd0b5ae3187a07b.
+
+Heiner reported that the commit in question prevents his network adapter
+from triggering PME and waking up when network cable is plugged.
+
+The commit tried to prevent root port waking up from D3cold immediately but
+looks like disabing root port PME interrupt is not the right way to fix
+that issue so revert it now.  The patch following proposes an alternative
+solution to that issue.
+
+Link: https://bugzilla.kernel.org/show_bug.cgi?id=202103
+Fixes: 0e157e528604 ("PCI/PME: Implement runtime PM callbacks")
+Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
+Tested-by: Heiner Kallweit <hkallweit1@gmail.com>
+Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+CC: stable@vger.kernel.org     # v4.20+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pci/pcie/pme.c |   27 ---------------------------
+ 1 file changed, 27 deletions(-)
+
+--- a/drivers/pci/pcie/pme.c
++++ b/drivers/pci/pcie/pme.c
+@@ -432,31 +432,6 @@ static void pcie_pme_remove(struct pcie_
+       kfree(get_service_data(srv));
+ }
+-static int pcie_pme_runtime_suspend(struct pcie_device *srv)
+-{
+-      struct pcie_pme_service_data *data = get_service_data(srv);
+-
+-      spin_lock_irq(&data->lock);
+-      pcie_pme_interrupt_enable(srv->port, false);
+-      pcie_clear_root_pme_status(srv->port);
+-      data->noirq = true;
+-      spin_unlock_irq(&data->lock);
+-
+-      return 0;
+-}
+-
+-static int pcie_pme_runtime_resume(struct pcie_device *srv)
+-{
+-      struct pcie_pme_service_data *data = get_service_data(srv);
+-
+-      spin_lock_irq(&data->lock);
+-      pcie_pme_interrupt_enable(srv->port, true);
+-      data->noirq = false;
+-      spin_unlock_irq(&data->lock);
+-
+-      return 0;
+-}
+-
+ static struct pcie_port_service_driver pcie_pme_driver = {
+       .name           = "pcie_pme",
+       .port_type      = PCI_EXP_TYPE_ROOT_PORT,
+@@ -464,8 +439,6 @@ static struct pcie_port_service_driver p
+       .probe          = pcie_pme_probe,
+       .suspend        = pcie_pme_suspend,
+-      .runtime_suspend = pcie_pme_runtime_suspend,
+-      .runtime_resume = pcie_pme_runtime_resume,
+       .resume         = pcie_pme_resume,
+       .remove         = pcie_pme_remove,
+ };