From: Greg Kroah-Hartman Date: Mon, 23 Nov 2020 09:22:28 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.4.246~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d28462a2aefe11b66afc6a032ccde6f657152368;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches 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-pfuze100-limit-pfuze-support-disable-sw-to-pfuze-100-200.patch regulator-workaround-self-referent-regulators.patch --- diff --git a/queue-4.19/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch b/queue-4.19/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch new file mode 100644 index 00000000000..7788174bbb2 --- /dev/null +++ b/queue-4.19/ext4-fix-bogus-warning-in-ext4_update_dx_flag.patch @@ -0,0 +1,40 @@ +From f902b216501094495ff75834035656e8119c537f Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Wed, 18 Nov 2020 16:30:32 +0100 +Subject: ext4: fix bogus warning in ext4_update_dx_flag() + +From: Jan Kara + +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 +Reviewed-by: Eric Biggers +Signed-off-by: Jan Kara +Signed-off-by: Theodore Ts'o +Cc: stable@kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext4/ext4.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/fs/ext4/ext4.h ++++ b/fs/ext4/ext4.h +@@ -2427,7 +2427,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.19/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch b/queue-4.19/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch new file mode 100644 index 00000000000..32fc9263479 --- /dev/null +++ b/queue-4.19/iio-accel-kxcjk1013-add-support-for-kiox010a-acpi-dsm-for-setting-tablet-mode.patch @@ -0,0 +1,113 @@ +From e5b1032a656e9aa4c7a4df77cb9156a2a651a5f9 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +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 + +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 +Signed-off-by: Hans de Goede +Cc: +Link: https://lore.kernel.org/r/20201110133835.129080-3-hdegoede@redhat.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -137,6 +137,7 @@ enum kx_chipset { + enum kx_acpi_type { + ACPI_GENERIC, + ACPI_SMO8500, ++ ACPI_KIOX010A, + }; + + struct kxcjk1013_data { +@@ -282,6 +283,32 @@ static const struct { + {19163, 1, 0}, + {38326, 0, 1} }; + ++#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) + { +@@ -359,6 +386,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"); +@@ -1256,6 +1290,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.19/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch b/queue-4.19/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch new file mode 100644 index 00000000000..1a7dc7be803 --- /dev/null +++ b/queue-4.19/iio-accel-kxcjk1013-replace-is_smo8500_device-with-an-acpi_type-enum.patch @@ -0,0 +1,87 @@ +From 11e94f28c3de35d5ad1ac6a242a5b30f4378991a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +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 + +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 +Fixes: 7f6232e69539 ("iio: accel: kxcjk1013: Add KIOX010A ACPI Hardware-ID") +Cc: +Link: https://lore.kernel.org/r/20201110133835.129080-2-hdegoede@redhat.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -134,6 +134,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; +@@ -150,7 +155,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 { +@@ -1241,7 +1246,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; + +@@ -1250,7 +1255,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; + +@@ -1286,7 +1291,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; + +@@ -1304,7 +1309,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.19/regulator-avoid-resolve_supply-infinite-recursion.patch b/queue-4.19/regulator-avoid-resolve_supply-infinite-recursion.patch new file mode 100644 index 00000000000..080c8c2f693 --- /dev/null +++ b/queue-4.19/regulator-avoid-resolve_supply-infinite-recursion.patch @@ -0,0 +1,45 @@ +From 4b639e254d3d4f15ee4ff2b890a447204cfbeea9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= +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 + +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 +Signed-off-by: Michał Mirosław +Tested-by: Ahmad Fatoum # stpmic1 +Link: https://lore.kernel.org/r/c6171057cfc0896f950c4d8cb82df0f9f1b89ad9.1605226675.git.mirq-linux@rere.qmqm.pl +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/core.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/regulator/core.c ++++ b/drivers/regulator/core.c +@@ -1595,6 +1595,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.19/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch b/queue-4.19/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch new file mode 100644 index 00000000000..cccbf1f7d5c --- /dev/null +++ b/queue-4.19/regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch @@ -0,0 +1,105 @@ +From 57a6ad482af256b2a13de14194fb8f67c1a65f10 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= +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 + +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 +Tested-by: Ahmad Fatoum # stpmic1 +Link: https://lore.kernel.org/r/78c3d4016cebc08d441aad18cb924b4e4d9cf9df.1605226675.git.mirq-linux@rere.qmqm.pl +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/core.c | 29 +++++++++++++---------------- + 1 file changed, 13 insertions(+), 16 deletions(-) + +--- a/drivers/regulator/core.c ++++ b/drivers/regulator/core.c +@@ -1091,7 +1091,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: +@@ -1099,21 +1098,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; +@@ -4257,7 +4246,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); +@@ -4358,14 +4346,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 */ +@@ -4374,7 +4371,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.19/regulator-pfuze100-limit-pfuze-support-disable-sw-to-pfuze-100-200.patch b/queue-4.19/regulator-pfuze100-limit-pfuze-support-disable-sw-to-pfuze-100-200.patch new file mode 100644 index 00000000000..6a17318a227 --- /dev/null +++ b/queue-4.19/regulator-pfuze100-limit-pfuze-support-disable-sw-to-pfuze-100-200.patch @@ -0,0 +1,48 @@ +From 365ec8b61689bd64d6a61e129e0319bf71336407 Mon Sep 17 00:00:00 2001 +From: Sean Nyekjaer +Date: Tue, 10 Nov 2020 18:41:13 +0100 +Subject: regulator: pfuze100: limit pfuze-support-disable-sw to pfuze{100,200} + +From: Sean Nyekjaer + +commit 365ec8b61689bd64d6a61e129e0319bf71336407 upstream. + +Limit the fsl,pfuze-support-disable-sw to the pfuze100 and pfuze200 +variants. +When enabling fsl,pfuze-support-disable-sw and using a pfuze3000 or +pfuze3001, the driver would choose pfuze100_sw_disable_regulator_ops +instead of the newly introduced and correct pfuze3000_sw_regulator_ops. + +Signed-off-by: Sean Nyekjaer +Fixes: 6f1cf5257acc ("regualtor: pfuze100: correct sw1a/sw2 on pfuze3000") +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20201110174113.2066534-1-sean@geanix.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/pfuze100-regulator.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/drivers/regulator/pfuze100-regulator.c ++++ b/drivers/regulator/pfuze100-regulator.c +@@ -755,11 +755,14 @@ static int pfuze100_regulator_probe(stru + * the switched regulator till yet. + */ + if (pfuze_chip->flags & PFUZE_FLAG_DISABLE_SW) { +- if (pfuze_chip->regulator_descs[i].sw_reg) { +- desc->ops = &pfuze100_sw_disable_regulator_ops; +- desc->enable_val = 0x8; +- desc->disable_val = 0x0; +- desc->enable_time = 500; ++ if (pfuze_chip->chip_id == PFUZE100 || ++ pfuze_chip->chip_id == PFUZE200) { ++ if (pfuze_chip->regulator_descs[i].sw_reg) { ++ desc->ops = &pfuze100_sw_disable_regulator_ops; ++ desc->enable_val = 0x8; ++ desc->disable_val = 0x0; ++ desc->enable_time = 500; ++ } + } + } + diff --git a/queue-4.19/regulator-workaround-self-referent-regulators.patch b/queue-4.19/regulator-workaround-self-referent-regulators.patch new file mode 100644 index 00000000000..3362811a3bb --- /dev/null +++ b/queue-4.19/regulator-workaround-self-referent-regulators.patch @@ -0,0 +1,44 @@ +From f5c042b23f7429e5c2ac987b01a31c69059a978b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= +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 + +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 +Signed-off-by: Michał Mirosław +Tested-by: Ahmad Fatoum # stpmic1 +Link: https://lore.kernel.org/r/d703acde2a93100c3c7a81059d716c50ad1b1f52.1605226675.git.mirq-linux@rere.qmqm.pl +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/core.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/regulator/core.c ++++ b/drivers/regulator/core.c +@@ -1598,7 +1598,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); + } + + /* diff --git a/queue-4.19/series b/queue-4.19/series index e0e4c68cf87..86fa250030b 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -72,3 +72,10 @@ alsa-hda-realtek-add-some-clove-ssid-in-the-alc293-alc1220.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-pfuze100-limit-pfuze-support-disable-sw-to-pfuze-100-200.patch +regulator-fix-memory-leak-with-repeated-set_machine_constraints.patch +regulator-avoid-resolve_supply-infinite-recursion.patch +regulator-workaround-self-referent-regulators.patch