]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Nov 2020 09:20:55 +0000 (10:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Nov 2020 09:20:55 +0000 (10:20 +0100)
added patches:
ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch
iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch
iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch
regulator-avoid-resolve_supply-infinite-recursion.patch
regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch
regulator-workaround-self-referent-regulators.patch

queue-4.14/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch [new file with mode: 0644]
queue-4.14/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch [new file with mode: 0644]
queue-4.14/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch [new file with mode: 0644]
queue-4.14/regulator-avoid-resolve_supply-infinite-recursion.patch [new file with mode: 0644]
queue-4.14/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch [new file with mode: 0644]
queue-4.14/regulator-workaround-self-referent-regulators.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch b/queue-4.14/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch
new file mode 100644 (file)
index 0000000..b8a831d
--- /dev/null
@@ -0,0 +1,40 @@
+From f902b216501094495ff75834035656e8119c537f Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Wed, 18 Nov 2020 16:30:32 +0100
+Subject: ext4: fix bogus warning in ext4_update_dx_flag()
+
+From: Jan Kara <jack@suse.cz>
+
+commit f902b216501094495ff75834035656e8119c537f upstream.
+
+The idea of the warning in ext4_update_dx_flag() is that we should warn
+when we are clearing EXT4_INODE_INDEX on a filesystem with metadata
+checksums enabled since after clearing the flag, checksums for internal
+htree nodes will become invalid. So there's no need to warn (or actually
+do anything) when EXT4_INODE_INDEX is not set.
+
+Link: https://lore.kernel.org/r/20201118153032.17281-1-jack@suse.cz
+Fixes: 48a34311953d ("ext4: fix checksum errors with indexed dirs")
+Reported-by: Eric Biggers <ebiggers@kernel.org>
+Reviewed-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Cc: stable@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ext4/ext4.h |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/ext4/ext4.h
++++ b/fs/ext4/ext4.h
+@@ -2406,7 +2406,8 @@ void ext4_insert_dentry(struct inode *in
+                       struct ext4_filename *fname);
+ static inline void ext4_update_dx_flag(struct inode *inode)
+ {
+-      if (!ext4_has_feature_dir_index(inode->i_sb)) {
++      if (!ext4_has_feature_dir_index(inode->i_sb) &&
++          ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) {
+               /* ext4_iget() should have caught this... */
+               WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb));
+               ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
diff --git a/queue-4.14/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch b/queue-4.14/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch
new file mode 100644 (file)
index 0000000..2c6d2d1
--- /dev/null
@@ -0,0 +1,113 @@
+From e5b1032a656e9aa4c7a4df77cb9156a2a651a5f9 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Tue, 10 Nov 2020 14:38:35 +0100
+Subject: iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet-mode
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit e5b1032a656e9aa4c7a4df77cb9156a2a651a5f9 upstream.
+
+Some 360 degree hinges (yoga) style 2-in-1 devices use 2 KXCJ91008-s
+to allow the OS to determine the angle between the display and the base
+of the device, so that the OS can determine if the 2-in-1 is in laptop
+or in tablet-mode.
+
+On Windows both accelerometers are read by a special HingeAngleService
+process; and this process calls a DSM (Device Specific Method) on the
+ACPI KIOX010A device node for the sensor in the display, to let the
+embedded-controller (EC) know about the mode so that it can disable the
+kbd and touchpad to avoid spurious input while folded into tablet-mode.
+
+This notifying of the EC is problematic because sometimes the EC comes up
+thinking that device is in tablet-mode and the kbd and touchpad do not
+work. This happens for example on Irbis NB111 devices after a suspend /
+resume cycle (after a complete battery drain / hard reset without having
+booted Windows at least once). Other 2-in-1s which are likely affected
+too are e.g. the Teclast F5 and F6 series.
+
+The kxcjk-1013 driver may seem like a strange place to deal with this,
+but since it is *the* driver for the ACPI KIOX010A device, it is also
+the driver which has access to the ACPI handle needed by the DSM.
+
+Add support for calling the DSM and on probe unconditionally tell the
+EC that the device is laptop mode, fixing the kbd and touchpad sometimes
+not working.
+
+Fixes: 7f6232e69539 ("iio: accel: kxcjk1013: Add KIOX010A ACPI Hardware-ID")
+Reported-and-tested-by: russianneuromancer <russianneuromancer@ya.ru>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Cc: <Stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20201110133835.129080-3-hdegoede@redhat.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/accel/kxcjk-1013.c |   36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+--- a/drivers/iio/accel/kxcjk-1013.c
++++ b/drivers/iio/accel/kxcjk-1013.c
+@@ -94,6 +94,7 @@ enum kx_chipset {
+ enum kx_acpi_type {
+       ACPI_GENERIC,
+       ACPI_SMO8500,
++      ACPI_KIOX010A,
+ };
+ struct kxcjk1013_data {
+@@ -220,6 +221,32 @@ static const struct {
+                                {800, 0, 0x06},
+                                {1600, 0, 0x06} };
++#ifdef CONFIG_ACPI
++enum kiox010a_fn_index {
++      KIOX010A_SET_LAPTOP_MODE = 1,
++      KIOX010A_SET_TABLET_MODE = 2,
++};
++
++static int kiox010a_dsm(struct device *dev, int fn_index)
++{
++      acpi_handle handle = ACPI_HANDLE(dev);
++      guid_t kiox010a_dsm_guid;
++      union acpi_object *obj;
++
++      if (!handle)
++              return -ENODEV;
++
++      guid_parse("1f339696-d475-4e26-8cad-2e9f8e6d7a91", &kiox010a_dsm_guid);
++
++      obj = acpi_evaluate_dsm(handle, &kiox010a_dsm_guid, 1, fn_index, NULL);
++      if (!obj)
++              return -EIO;
++
++      ACPI_FREE(obj);
++      return 0;
++}
++#endif
++
+ static int kxcjk1013_set_mode(struct kxcjk1013_data *data,
+                             enum kxcjk1013_mode mode)
+ {
+@@ -297,6 +324,13 @@ static int kxcjk1013_chip_init(struct kx
+ {
+       int ret;
++#ifdef CONFIG_ACPI
++      if (data->acpi_type == ACPI_KIOX010A) {
++              /* Make sure the kbd and touchpad on 2-in-1s using 2 KXCJ91008-s work */
++              kiox010a_dsm(&data->client->dev, KIOX010A_SET_LAPTOP_MODE);
++      }
++#endif
++
+       ret = i2c_smbus_read_byte_data(data->client, KXCJK1013_REG_WHO_AM_I);
+       if (ret < 0) {
+               dev_err(&data->client->dev, "Error reading who_am_i\n");
+@@ -1159,6 +1193,8 @@ static const char *kxcjk1013_match_acpi_
+       if (strcmp(id->id, "SMO8500") == 0)
+               *acpi_type = ACPI_SMO8500;
++      else if (strcmp(id->id, "KIOX010A") == 0)
++              *acpi_type = ACPI_KIOX010A;
+       *chipset = (enum kx_chipset)id->driver_data;
diff --git a/queue-4.14/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch b/queue-4.14/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch
new file mode 100644 (file)
index 0000000..9b8402a
--- /dev/null
@@ -0,0 +1,87 @@
+From 11e94f28c3de35d5ad1ac6a242a5b30f4378991a Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Tue, 10 Nov 2020 14:38:34 +0100
+Subject: iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 11e94f28c3de35d5ad1ac6a242a5b30f4378991a upstream.
+
+Replace the boolean is_smo8500_device variable with an acpi_type enum.
+
+For now this can be either ACPI_GENERIC or ACPI_SMO8500, this is a
+preparation patch for adding special handling for the KIOX010A ACPI HID,
+which will add a ACPI_KIOX010A acpi_type to the introduced enum.
+
+For stable as needed as precursor for next patch.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Fixes: 7f6232e69539 ("iio: accel: kxcjk1013: Add KIOX010A ACPI Hardware-ID")
+Cc: <Stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20201110133835.129080-2-hdegoede@redhat.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/accel/kxcjk-1013.c |   15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/drivers/iio/accel/kxcjk-1013.c
++++ b/drivers/iio/accel/kxcjk-1013.c
+@@ -91,6 +91,11 @@ enum kx_chipset {
+       KX_MAX_CHIPS /* this must be last */
+ };
++enum kx_acpi_type {
++      ACPI_GENERIC,
++      ACPI_SMO8500,
++};
++
+ struct kxcjk1013_data {
+       struct i2c_client *client;
+       struct iio_trigger *dready_trig;
+@@ -107,7 +112,7 @@ struct kxcjk1013_data {
+       bool motion_trigger_on;
+       int64_t timestamp;
+       enum kx_chipset chipset;
+-      bool is_smo8500_device;
++      enum kx_acpi_type acpi_type;
+ };
+ enum kxcjk1013_axis {
+@@ -1144,7 +1149,7 @@ static irqreturn_t kxcjk1013_data_rdy_tr
+ static const char *kxcjk1013_match_acpi_device(struct device *dev,
+                                              enum kx_chipset *chipset,
+-                                             bool *is_smo8500_device)
++                                             enum kx_acpi_type *acpi_type)
+ {
+       const struct acpi_device_id *id;
+@@ -1153,7 +1158,7 @@ static const char *kxcjk1013_match_acpi_
+               return NULL;
+       if (strcmp(id->id, "SMO8500") == 0)
+-              *is_smo8500_device = true;
++              *acpi_type = ACPI_SMO8500;
+       *chipset = (enum kx_chipset)id->driver_data;
+@@ -1189,7 +1194,7 @@ static int kxcjk1013_probe(struct i2c_cl
+       } else if (ACPI_HANDLE(&client->dev)) {
+               name = kxcjk1013_match_acpi_device(&client->dev,
+                                                  &data->chipset,
+-                                                 &data->is_smo8500_device);
++                                                 &data->acpi_type);
+       } else
+               return -ENODEV;
+@@ -1207,7 +1212,7 @@ static int kxcjk1013_probe(struct i2c_cl
+       indio_dev->modes = INDIO_DIRECT_MODE;
+       indio_dev->info = &kxcjk1013_info;
+-      if (client->irq > 0 && !data->is_smo8500_device) {
++      if (client->irq > 0 && data->acpi_type != ACPI_SMO8500) {
+               ret = devm_request_threaded_irq(&client->dev, client->irq,
+                                               kxcjk1013_data_rdy_trig_poll,
+                                               kxcjk1013_event_handler,
diff --git a/queue-4.14/regulator-avoid-resolve_supply-infinite-recursion.patch b/queue-4.14/regulator-avoid-resolve_supply-infinite-recursion.patch
new file mode 100644 (file)
index 0000000..17e468d
--- /dev/null
@@ -0,0 +1,45 @@
+From 4b639e254d3d4f15ee4ff2b890a447204cfbeea9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux@rere.qmqm.pl>
+Date: Fri, 13 Nov 2020 01:20:28 +0100
+Subject: regulator: avoid resolve_supply() infinite recursion
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+
+commit 4b639e254d3d4f15ee4ff2b890a447204cfbeea9 upstream.
+
+When a regulator's name equals its supply's name the
+regulator_resolve_supply() recurses indefinitely. Add a check
+so that debugging the problem is easier. The "fixed" commit
+just exposed the problem.
+
+Fixes: aea6cb99703e ("regulator: resolve supply after creating regulator")
+Cc: stable@vger.kernel.org
+Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> # stpmic1
+Link: https://lore.kernel.org/r/c6171057cfc0896f950c4d8cb82df0f9f1b89ad9.1605226675.git.mirq-linux@rere.qmqm.pl
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/core.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -1544,6 +1544,12 @@ static int regulator_resolve_supply(stru
+               }
+       }
++      if (r == rdev) {
++              dev_err(dev, "Supply for %s (%s) resolved to itself\n",
++                      rdev->desc->name, rdev->supply_name);
++              return -EINVAL;
++      }
++
+       /*
+        * If the supply's parent device is not the same as the
+        * regulator's parent device, then ensure the parent device
diff --git a/queue-4.14/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch b/queue-4.14/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch
new file mode 100644 (file)
index 0000000..b6e5cde
--- /dev/null
@@ -0,0 +1,105 @@
+From 57a6ad482af256b2a13de14194fb8f67c1a65f10 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux@rere.qmqm.pl>
+Date: Fri, 13 Nov 2020 01:20:27 +0100
+Subject: regulator: fix memory leak with repeated set_machine_constraints()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+
+commit 57a6ad482af256b2a13de14194fb8f67c1a65f10 upstream.
+
+Fixed commit introduced a possible second call to
+set_machine_constraints() and that allocates memory for
+rdev->constraints. Move the allocation to the caller so
+it's easier to manage and done once.
+
+Fixes: aea6cb99703e ("regulator: resolve supply after creating regulator")
+Cc: stable@vger.kernel.org
+Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> # stpmic1
+Link: https://lore.kernel.org/r/78c3d4016cebc08d441aad18cb924b4e4d9cf9df.1605226675.git.mirq-linux@rere.qmqm.pl
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/core.c |   29 +++++++++++++----------------
+ 1 file changed, 13 insertions(+), 16 deletions(-)
+
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -1026,7 +1026,6 @@ static int _regulator_do_enable(struct r
+ /**
+  * set_machine_constraints - sets regulator constraints
+  * @rdev: regulator source
+- * @constraints: constraints to apply
+  *
+  * Allows platform initialisation code to define and constrain
+  * regulator circuits e.g. valid voltage/current ranges, etc.  NOTE:
+@@ -1034,21 +1033,11 @@ static int _regulator_do_enable(struct r
+  * regulator operations to proceed i.e. set_voltage, set_current_limit,
+  * set_mode.
+  */
+-static int set_machine_constraints(struct regulator_dev *rdev,
+-      const struct regulation_constraints *constraints)
++static int set_machine_constraints(struct regulator_dev *rdev)
+ {
+       int ret = 0;
+       const struct regulator_ops *ops = rdev->desc->ops;
+-      if (constraints)
+-              rdev->constraints = kmemdup(constraints, sizeof(*constraints),
+-                                          GFP_KERNEL);
+-      else
+-              rdev->constraints = kzalloc(sizeof(*constraints),
+-                                          GFP_KERNEL);
+-      if (!rdev->constraints)
+-              return -ENOMEM;
+-
+       ret = machine_constraints_voltage(rdev, rdev->constraints);
+       if (ret != 0)
+               return ret;
+@@ -3985,7 +3974,6 @@ struct regulator_dev *
+ regulator_register(const struct regulator_desc *regulator_desc,
+                  const struct regulator_config *cfg)
+ {
+-      const struct regulation_constraints *constraints = NULL;
+       const struct regulator_init_data *init_data;
+       struct regulator_config *config = NULL;
+       static atomic_t regulator_no = ATOMIC_INIT(-1);
+@@ -4085,14 +4073,23 @@ regulator_register(const struct regulato
+       /* set regulator constraints */
+       if (init_data)
+-              constraints = &init_data->constraints;
++              rdev->constraints = kmemdup(&init_data->constraints,
++                                          sizeof(*rdev->constraints),
++                                          GFP_KERNEL);
++      else
++              rdev->constraints = kzalloc(sizeof(*rdev->constraints),
++                                          GFP_KERNEL);
++      if (!rdev->constraints) {
++              ret = -ENOMEM;
++              goto wash;
++      }
+       if (init_data && init_data->supply_regulator)
+               rdev->supply_name = init_data->supply_regulator;
+       else if (regulator_desc->supply_name)
+               rdev->supply_name = regulator_desc->supply_name;
+-      ret = set_machine_constraints(rdev, constraints);
++      ret = set_machine_constraints(rdev);
+       if (ret == -EPROBE_DEFER) {
+               /* Regulator might be in bypass mode and so needs its supply
+                * to set the constraints */
+@@ -4101,7 +4098,7 @@ regulator_register(const struct regulato
+                * that is just being created */
+               ret = regulator_resolve_supply(rdev);
+               if (!ret)
+-                      ret = set_machine_constraints(rdev, constraints);
++                      ret = set_machine_constraints(rdev);
+               else
+                       rdev_dbg(rdev, "unable to resolve supply early: %pe\n",
+                                ERR_PTR(ret));
diff --git a/queue-4.14/regulator-workaround-self-referent-regulators.patch b/queue-4.14/regulator-workaround-self-referent-regulators.patch
new file mode 100644 (file)
index 0000000..d1cbe70
--- /dev/null
@@ -0,0 +1,44 @@
+From f5c042b23f7429e5c2ac987b01a31c69059a978b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux@rere.qmqm.pl>
+Date: Fri, 13 Nov 2020 01:20:28 +0100
+Subject: regulator: workaround self-referent regulators
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+
+commit f5c042b23f7429e5c2ac987b01a31c69059a978b upstream.
+
+Workaround regulators whose supply name happens to be the same as its
+own name. This fixes boards that used to work before the early supply
+resolving was removed. The error message is left in place so that
+offending drivers can be detected.
+
+Fixes: aea6cb99703e ("regulator: resolve supply after creating regulator")
+Cc: stable@vger.kernel.org
+Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> # stpmic1
+Link: https://lore.kernel.org/r/d703acde2a93100c3c7a81059d716c50ad1b1f52.1605226675.git.mirq-linux@rere.qmqm.pl
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/core.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -1547,7 +1547,10 @@ static int regulator_resolve_supply(stru
+       if (r == rdev) {
+               dev_err(dev, "Supply for %s (%s) resolved to itself\n",
+                       rdev->desc->name, rdev->supply_name);
+-              return -EINVAL;
++              if (!have_full_constraints())
++                      return -EINVAL;
++              r = dummy_regulator_rdev;
++              get_device(&r->dev);
+       }
+       /*
index cadf863c271f84e54d53eca871298f2b28ac5a0b..1ccf9acd8380d068f433227c11a2a2771633380f 100644 (file)
@@ -45,3 +45,9 @@ alsa-mixart-fix-mutex-deadlock.patch
 tty-serial-imx-keep-console-clocks-always-on.patch
 efivarfs-fix-memory-leak-in-efivarfs_create.patch
 staging-rtl8723bs-add-024c-0627-to-the-list-of-sdio-device-ids.patch
+ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch
+iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch
+iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch
+regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch
+regulator-avoid-resolve_supply-infinite-recursion.patch
+regulator-workaround-self-referent-regulators.patch