]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.16-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Aug 2025 07:33:12 +0000 (09:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Aug 2025 07:33:12 +0000 (09:33 +0200)
added patches:
devlink-let-driver-opt-out-of-automatic-phys_port_name-generation.patch
i2c-rtl9300-add-missing-count-byte-for-smbus-block-ops.patch
i2c-rtl9300-fix-multi-byte-i2c-write.patch
i2c-rtl9300-fix-out-of-bounds-bug-in-rtl9300_i2c_smbus_xfer.patch
i2c-rtl9300-increase-timeout-for-transfer-polling.patch
iio-imu-inv_icm42600-change-invalid-data-error-to-ebusy.patch
iio-imu-inv_icm42600-convert-to-uxx-and-sxx-integer-types.patch
iio-imu-inv_icm42600-use-instead-of-memset.patch
ixgbe-prevent-from-unwanted-interface-name-changes.patch
x86-cpu-amd-ignore-invalid-reset-reason-value.patch
x86-cpu-hygon-add-missing-resctrl_cpu_detect-in-bsp_init-helper.patch

12 files changed:
queue-6.16/devlink-let-driver-opt-out-of-automatic-phys_port_name-generation.patch [new file with mode: 0644]
queue-6.16/i2c-rtl9300-add-missing-count-byte-for-smbus-block-ops.patch [new file with mode: 0644]
queue-6.16/i2c-rtl9300-fix-multi-byte-i2c-write.patch [new file with mode: 0644]
queue-6.16/i2c-rtl9300-fix-out-of-bounds-bug-in-rtl9300_i2c_smbus_xfer.patch [new file with mode: 0644]
queue-6.16/i2c-rtl9300-increase-timeout-for-transfer-polling.patch [new file with mode: 0644]
queue-6.16/iio-imu-inv_icm42600-change-invalid-data-error-to-ebusy.patch [new file with mode: 0644]
queue-6.16/iio-imu-inv_icm42600-convert-to-uxx-and-sxx-integer-types.patch [new file with mode: 0644]
queue-6.16/iio-imu-inv_icm42600-use-instead-of-memset.patch [new file with mode: 0644]
queue-6.16/ixgbe-prevent-from-unwanted-interface-name-changes.patch [new file with mode: 0644]
queue-6.16/series
queue-6.16/x86-cpu-amd-ignore-invalid-reset-reason-value.patch [new file with mode: 0644]
queue-6.16/x86-cpu-hygon-add-missing-resctrl_cpu_detect-in-bsp_init-helper.patch [new file with mode: 0644]

diff --git a/queue-6.16/devlink-let-driver-opt-out-of-automatic-phys_port_name-generation.patch b/queue-6.16/devlink-let-driver-opt-out-of-automatic-phys_port_name-generation.patch
new file mode 100644 (file)
index 0000000..71981f0
--- /dev/null
@@ -0,0 +1,70 @@
+From stable+bounces-172772-greg=kroah.com@vger.kernel.org Mon Aug 25 05:30:59 2025
+From: Calvin Owens <calvin@wbinvd.org>
+Date: Sun, 24 Aug 2025 20:30:13 -0700
+Subject: devlink: let driver opt out of automatic phys_port_name generation
+To: stable@vger.kernel.org
+Cc: jedrzej.jagielski@intel.com, anthony.l.nguyen@intel.com, David.Kaplan@amd.com, dhowells@redhat.com, kyle.leet@gmail.com
+Message-ID: <20597f81c1439569e34d026542365aef1cedfb00.1756088250.git.calvin@wbinvd.org>
+
+From: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
+
+[ Upstream commit c5ec7f49b480db0dfc83f395755b1c2a7c979920 ]
+
+Currently when adding devlink port, phys_port_name is automatically
+generated within devlink port initialization flow. As a result adding
+devlink port support to driver may result in forced changes of interface
+names, which breaks already existing network configs.
+
+This is an expected behavior but in some scenarios it would not be
+preferable to provide such limitation for legacy driver not being able to
+keep 'pre-devlink' interface name.
+
+Add flag no_phys_port_name to devlink_port_attrs struct which indicates
+if devlink should not alter name of interface.
+
+Suggested-by: Jiri Pirko <jiri@resnulli.us>
+Link: https://lore.kernel.org/all/nbwrfnjhvrcduqzjl4a2jafnvvud6qsbxlvxaxilnryglf4j7r@btuqrimnfuly/
+Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
+Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
+Cc: stable@vger.kernel.org # 6.16
+Tested-By: Calvin Owens <calvin@wbinvd.org>
+Signed-off-by: Calvin Owens <calvin@wbinvd.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/net/devlink.h |    6 +++++-
+ net/devlink/port.c    |    2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+--- a/include/net/devlink.h
++++ b/include/net/devlink.h
+@@ -78,6 +78,9 @@ struct devlink_port_pci_sf_attrs {
+  * @flavour: flavour of the port
+  * @split: indicates if this is split port
+  * @splittable: indicates if the port can be split.
++ * @no_phys_port_name: skip automatic phys_port_name generation; for
++ *                   compatibility only, newly added driver/port instance
++ *                   should never set this.
+  * @lanes: maximum number of lanes the port supports. 0 value is not passed to netlink.
+  * @switch_id: if the port is part of switch, this is buffer with ID, otherwise this is NULL
+  * @phys: physical port attributes
+@@ -87,7 +90,8 @@ struct devlink_port_pci_sf_attrs {
+  */
+ struct devlink_port_attrs {
+       u8 split:1,
+-         splittable:1;
++         splittable:1,
++         no_phys_port_name:1;
+       u32 lanes;
+       enum devlink_port_flavour flavour;
+       struct netdev_phys_item_id switch_id;
+--- a/net/devlink/port.c
++++ b/net/devlink/port.c
+@@ -1519,7 +1519,7 @@ static int __devlink_port_phys_port_name
+       struct devlink_port_attrs *attrs = &devlink_port->attrs;
+       int n = 0;
+-      if (!devlink_port->attrs_set)
++      if (!devlink_port->attrs_set || devlink_port->attrs.no_phys_port_name)
+               return -EOPNOTSUPP;
+       switch (attrs->flavour) {
diff --git a/queue-6.16/i2c-rtl9300-add-missing-count-byte-for-smbus-block-ops.patch b/queue-6.16/i2c-rtl9300-add-missing-count-byte-for-smbus-block-ops.patch
new file mode 100644 (file)
index 0000000..e586d2b
--- /dev/null
@@ -0,0 +1,61 @@
+From 82b350dd8185ce790e61555c436f90b6501af23c Mon Sep 17 00:00:00 2001
+From: Sven Eckelmann <sven@narfation.org>
+Date: Sun, 10 Aug 2025 20:05:16 +0200
+Subject: i2c: rtl9300: Add missing count byte for SMBus Block Ops
+
+From: Sven Eckelmann <sven@narfation.org>
+
+commit 82b350dd8185ce790e61555c436f90b6501af23c upstream.
+
+The expected on-wire format of an SMBus Block Write is
+
+  S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P
+
+Everything starting from the Count byte is provided by the I2C subsystem in
+the array data->block. But the driver was skipping the Count byte
+(data->block[0]) when sending it to the RTL93xx I2C controller.
+
+Only the actual data could be seen on the wire:
+
+  S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
+
+This wire format is not SMBus Block Write compatible but matches the format
+of an I2C Block Write. Simply adding the count byte to the buffer for the
+I2C controller is enough to fix the transmission.
+
+This also affects read because the I2C controller must receive the count
+byte + $count * data bytes.
+
+Fixes: c366be720235 ("i2c: Add driver for the RTL9300 I2C controller")
+Signed-off-by: Sven Eckelmann <sven@narfation.org>
+Cc: <stable@vger.kernel.org> # v6.13+
+Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
+Link: https://lore.kernel.org/r/20250810-i2c-rtl9300-multi-byte-v5-4-cd9dca0db722@narfation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i2c/busses/i2c-rtl9300.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/i2c/busses/i2c-rtl9300.c
++++ b/drivers/i2c/busses/i2c-rtl9300.c
+@@ -285,15 +285,15 @@ static int rtl9300_i2c_smbus_xfer(struct
+                       ret = -EINVAL;
+                       goto out_unlock;
+               }
+-              ret = rtl9300_i2c_config_xfer(i2c, chan, addr, data->block[0]);
++              ret = rtl9300_i2c_config_xfer(i2c, chan, addr, data->block[0] + 1);
+               if (ret)
+                       goto out_unlock;
+               if (read_write == I2C_SMBUS_WRITE) {
+-                      ret = rtl9300_i2c_write(i2c, &data->block[1], data->block[0]);
++                      ret = rtl9300_i2c_write(i2c, &data->block[0], data->block[0] + 1);
+                       if (ret)
+                               goto out_unlock;
+               }
+-              len = data->block[0];
++              len = data->block[0] + 1;
+               break;
+       default:
diff --git a/queue-6.16/i2c-rtl9300-fix-multi-byte-i2c-write.patch b/queue-6.16/i2c-rtl9300-fix-multi-byte-i2c-write.patch
new file mode 100644 (file)
index 0000000..434c031
--- /dev/null
@@ -0,0 +1,83 @@
+From d67b740b9edfa46310355e2b68050f79ebf05a4c Mon Sep 17 00:00:00 2001
+From: Harshal Gohel <hg@simonwunderlich.de>
+Date: Sun, 10 Aug 2025 20:05:14 +0200
+Subject: i2c: rtl9300: Fix multi-byte I2C write
+
+From: Harshal Gohel <hg@simonwunderlich.de>
+
+commit d67b740b9edfa46310355e2b68050f79ebf05a4c upstream.
+
+The RTL93xx I2C controller has 4 32 bit registers to store the bytes for
+the upcoming I2C transmission. The first byte is stored in the
+least-significant byte of the first register. And the last byte in the most
+significant byte of the last register. A map of the transferred bytes to
+their order in the registers is:
+
+reg 0: 0x04_03_02_01
+reg 1: 0x08_07_06_05
+reg 2: 0x0c_0b_0a_09
+reg 3: 0x10_0f_0e_0d
+
+The i2c_read() function basically demonstrates how the hardware would pick
+up bytes from this register set. But the i2c_write() function was just
+pushing bytes one after another to the least significant byte of a register
+AFTER shifting the last one to the next more significant byte position.
+
+If you would then have tried to send a buffer with numbers 1-11 using
+i2c_write(), you would have ended up with following register content:
+
+reg 0: 0x01_02_03_04
+reg 1: 0x05_06_07_08
+reg 2: 0x00_09_0a_0b
+reg 3: 0x00_00_00_00
+
+On the wire, you would then have seen:
+
+  Sr Addr Wr [A] 04 A 03 A 02 A 01 A 08 A 07 A 06 A 05 A 0b A 0a A 09 A P
+
+But the correct data transmission was expected to be
+
+  Sr Addr Wr [A] 01 A 02 A 03 A 04 A 05 A 06 A 07 A 08 A 09 A 0a A 0b A P
+
+Because of this multi-byte ordering problem, only single byte i2c_write()
+operations were executed correctly (on the wire).
+
+By shifting the byte directly to the correct end position in the register,
+it is possible to avoid this incorrect byte ordering and fix multi-byte
+transmissions.
+
+The second initialization (to 0) of vals was also be dropped because this
+array is initialized to 0 on the stack by using `= {};`. This makes the
+fix a lot more readable.
+
+Fixes: c366be720235 ("i2c: Add driver for the RTL9300 I2C controller")
+Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
+Cc: <stable@vger.kernel.org> # v6.13+
+Co-developed-by: Sven Eckelmann <sven@narfation.org>
+Signed-off-by: Sven Eckelmann <sven@narfation.org>
+Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
+Link: https://lore.kernel.org/r/20250810-i2c-rtl9300-multi-byte-v5-2-cd9dca0db722@narfation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i2c/busses/i2c-rtl9300.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/i2c/busses/i2c-rtl9300.c
++++ b/drivers/i2c/busses/i2c-rtl9300.c
+@@ -143,10 +143,10 @@ static int rtl9300_i2c_write(struct rtl9
+               return -EIO;
+       for (i = 0; i < len; i++) {
+-              if (i % 4 == 0)
+-                      vals[i/4] = 0;
+-              vals[i/4] <<= 8;
+-              vals[i/4] |= buf[i];
++              unsigned int shift = (i % 4) * 8;
++              unsigned int reg = i / 4;
++
++              vals[reg] |= buf[i] << shift;
+       }
+       return regmap_bulk_write(i2c->regmap, i2c->reg_base + RTL9300_I2C_MST_DATA_WORD0,
diff --git a/queue-6.16/i2c-rtl9300-fix-out-of-bounds-bug-in-rtl9300_i2c_smbus_xfer.patch b/queue-6.16/i2c-rtl9300-fix-out-of-bounds-bug-in-rtl9300_i2c_smbus_xfer.patch
new file mode 100644 (file)
index 0000000..3a7a88a
--- /dev/null
@@ -0,0 +1,46 @@
+From 57f312b955938fc4663f430cb57a71f2414f601b Mon Sep 17 00:00:00 2001
+From: Alex Guo <alexguo1023@gmail.com>
+Date: Sun, 10 Aug 2025 20:05:13 +0200
+Subject: i2c: rtl9300: Fix out-of-bounds bug in rtl9300_i2c_smbus_xfer
+
+From: Alex Guo <alexguo1023@gmail.com>
+
+commit 57f312b955938fc4663f430cb57a71f2414f601b upstream.
+
+The data->block[0] variable comes from user. Without proper check,
+the variable may be very large to cause an out-of-bounds bug.
+
+Fix this bug by checking the value of data->block[0] first.
+
+1. commit 39244cc75482 ("i2c: ismt: Fix an out-of-bounds bug in
+   ismt_access()")
+2. commit 92fbb6d1296f ("i2c: xgene-slimpro: Fix out-of-bounds bug in
+   xgene_slimpro_i2c_xfer()")
+
+Fixes: c366be720235 ("i2c: Add driver for the RTL9300 I2C controller")
+Signed-off-by: Alex Guo <alexguo1023@gmail.com>
+Cc: <stable@vger.kernel.org> # v6.13+
+Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
+Signed-off-by: Sven Eckelmann <sven@narfation.org>
+Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
+Link: https://lore.kernel.org/r/20250810-i2c-rtl9300-multi-byte-v5-1-cd9dca0db722@narfation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i2c/busses/i2c-rtl9300.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/i2c/busses/i2c-rtl9300.c
++++ b/drivers/i2c/busses/i2c-rtl9300.c
+@@ -281,6 +281,10 @@ static int rtl9300_i2c_smbus_xfer(struct
+               ret = rtl9300_i2c_reg_addr_set(i2c, command, 1);
+               if (ret)
+                       goto out_unlock;
++              if (data->block[0] < 1 || data->block[0] > I2C_SMBUS_BLOCK_MAX) {
++                      ret = -EINVAL;
++                      goto out_unlock;
++              }
+               ret = rtl9300_i2c_config_xfer(i2c, chan, addr, data->block[0]);
+               if (ret)
+                       goto out_unlock;
diff --git a/queue-6.16/i2c-rtl9300-increase-timeout-for-transfer-polling.patch b/queue-6.16/i2c-rtl9300-increase-timeout-for-transfer-polling.patch
new file mode 100644 (file)
index 0000000..5baa4ed
--- /dev/null
@@ -0,0 +1,50 @@
+From ceee7776c010c5f09d30985c9e5223b363a6172a Mon Sep 17 00:00:00 2001
+From: Sven Eckelmann <sven@narfation.org>
+Date: Sun, 10 Aug 2025 20:05:15 +0200
+Subject: i2c: rtl9300: Increase timeout for transfer polling
+
+From: Sven Eckelmann <sven@narfation.org>
+
+commit ceee7776c010c5f09d30985c9e5223b363a6172a upstream.
+
+The timeout for transfers was only set to 2ms. Because of this relatively
+low limit, 12-byte read operations to the frontend MCU of a RTL8239 POE PSE
+chip cluster was consistently resulting in a timeout.
+
+The original OpenWrt downstream driver [1] was not using any timeout limit
+at all. This is also possible by setting the timeout_us parameter of
+regmap_read_poll_timeout() to 0. But since the driver currently implements
+the ETIMEDOUT error, it is more sensible to increase the timeout in such a
+way that communication with the (quite common) Realtek I2C-connected POE
+management solution is possible.
+
+[1] https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=target/linux/realtek/files-6.12/drivers/i2c/busses/i2c-rtl9300.c;h=c4d973195ef39dc56d6207e665d279745525fcac#l202
+
+Fixes: c366be720235 ("i2c: Add driver for the RTL9300 I2C controller")
+Signed-off-by: Sven Eckelmann <sven@narfation.org>
+Cc: <stable@vger.kernel.org> # v6.13+
+Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
+Link: https://lore.kernel.org/r/20250810-i2c-rtl9300-multi-byte-v5-3-cd9dca0db722@narfation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i2c/busses/i2c-rtl9300.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/i2c/busses/i2c-rtl9300.c b/drivers/i2c/busses/i2c-rtl9300.c
+index 4a538b266080..4a282d57e2c1 100644
+--- a/drivers/i2c/busses/i2c-rtl9300.c
++++ b/drivers/i2c/busses/i2c-rtl9300.c
+@@ -175,7 +175,7 @@ static int rtl9300_i2c_execute_xfer(struct rtl9300_i2c *i2c, char read_write,
+               return ret;
+       ret = regmap_read_poll_timeout(i2c->regmap, i2c->reg_base + RTL9300_I2C_MST_CTRL1,
+-                                     val, !(val & RTL9300_I2C_MST_CTRL1_I2C_TRIG), 100, 2000);
++                                     val, !(val & RTL9300_I2C_MST_CTRL1_I2C_TRIG), 100, 100000);
+       if (ret)
+               return ret;
+-- 
+2.50.1
+
diff --git a/queue-6.16/iio-imu-inv_icm42600-change-invalid-data-error-to-ebusy.patch b/queue-6.16/iio-imu-inv_icm42600-change-invalid-data-error-to-ebusy.patch
new file mode 100644 (file)
index 0000000..0526f91
--- /dev/null
@@ -0,0 +1,49 @@
+From stable+bounces-172723-greg=kroah.com@vger.kernel.org Sun Aug 24 15:02:14 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 24 Aug 2025 09:01:36 -0400
+Subject: iio: imu: inv_icm42600: change invalid data error to -EBUSY
+To: stable@vger.kernel.org
+Cc: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>, Andy Shevchenko <andy@kernel.org>, Sean Nyekjaer <sean@geanix.com>, Jonathan Cameron <Jonathan.Cameron@huawei.com>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20250824130136.2747952-3-sashal@kernel.org>
+
+From: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
+
+[ Upstream commit dfdc31e7ccf3ac1d5ec01d5120c71e14745e3dd8 ]
+
+Temperature sensor returns the temperature of the mechanical parts
+of the chip. If both accel and gyro are off, the temperature sensor is
+also automatically turned off and returns invalid data.
+
+In this case, returning -EBUSY error code is better then -EINVAL and
+indicates userspace that it needs to retry reading temperature in
+another context.
+
+Fixes: bc3eb0207fb5 ("iio: imu: inv_icm42600: add temperature sensor support")
+Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
+Cc: stable@vger.kernel.org
+Reviewed-by: Andy Shevchenko <andy@kernel.org>
+Reviewed-by: Sean Nyekjaer <sean@geanix.com>
+Link: https://patch.msgid.link/20250808-inv-icm42600-change-temperature-error-code-v1-1-986fbf63b77d@tdk.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
+@@ -32,8 +32,12 @@ static int inv_icm42600_temp_read(struct
+               goto exit;
+       *temp = (s16)be16_to_cpup(raw);
++      /*
++       * Temperature data is invalid if both accel and gyro are off.
++       * Return -EBUSY in this case.
++       */
+       if (*temp == INV_ICM42600_DATA_INVALID)
+-              ret = -EINVAL;
++              ret = -EBUSY;
+ exit:
+       mutex_unlock(&st->lock);
diff --git a/queue-6.16/iio-imu-inv_icm42600-convert-to-uxx-and-sxx-integer-types.patch b/queue-6.16/iio-imu-inv_icm42600-convert-to-uxx-and-sxx-integer-types.patch
new file mode 100644 (file)
index 0000000..3cc1121
--- /dev/null
@@ -0,0 +1,423 @@
+From stable+bounces-172722-greg=kroah.com@vger.kernel.org Sun Aug 24 15:02:14 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 24 Aug 2025 09:01:35 -0400
+Subject: iio: imu: inv_icm42600: Convert to uXX and sXX integer types
+To: stable@vger.kernel.org
+Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>, Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>, Jonathan Cameron <Jonathan.Cameron@huawei.com>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20250824130136.2747952-2-sashal@kernel.org>
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+[ Upstream commit a4135386fa49c2a170b89296da12c4a3be2089d9 ]
+
+The driver code is full of intXX_t and uintXX_t types which is
+not the pattern we use in the IIO subsystem. Switch the driver
+to use kernel internal types for that. No functional changes.
+
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Acked-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
+Link: https://patch.msgid.link/20250616090423.575736-1-andriy.shevchenko@linux.intel.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Stable-dep-of: dfdc31e7ccf3 ("iio: imu: inv_icm42600: change invalid data error to -EBUSY")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/imu/inv_icm42600/inv_icm42600.h        |    8 ++--
+ drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c  |   26 +++++++--------
+ drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c |   22 ++++++------
+ drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h |   10 ++---
+ drivers/iio/imu/inv_icm42600/inv_icm42600_core.c   |    6 +--
+ drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c   |   36 ++++++++++-----------
+ drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c   |    6 +--
+ 7 files changed, 57 insertions(+), 57 deletions(-)
+
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600.h
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600.h
+@@ -164,11 +164,11 @@ struct inv_icm42600_state {
+       struct inv_icm42600_suspended suspended;
+       struct iio_dev *indio_gyro;
+       struct iio_dev *indio_accel;
+-      uint8_t buffer[2] __aligned(IIO_DMA_MINALIGN);
++      u8 buffer[2] __aligned(IIO_DMA_MINALIGN);
+       struct inv_icm42600_fifo fifo;
+       struct {
+-              int64_t gyro;
+-              int64_t accel;
++              s64 gyro;
++              s64 accel;
+       } timestamp;
+ };
+@@ -410,7 +410,7 @@ const struct iio_mount_matrix *
+ inv_icm42600_get_mount_matrix(const struct iio_dev *indio_dev,
+                             const struct iio_chan_spec *chan);
+-uint32_t inv_icm42600_odr_to_period(enum inv_icm42600_odr odr);
++u32 inv_icm42600_odr_to_period(enum inv_icm42600_odr odr);
+ int inv_icm42600_set_accel_conf(struct inv_icm42600_state *st,
+                               struct inv_icm42600_sensor_conf *conf,
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
+@@ -177,7 +177,7 @@ static const struct iio_chan_spec inv_ic
+  */
+ struct inv_icm42600_accel_buffer {
+       struct inv_icm42600_fifo_sensor_data accel;
+-      int16_t temp;
++      s16 temp;
+       aligned_s64 timestamp;
+ };
+@@ -241,7 +241,7 @@ out_unlock:
+ static int inv_icm42600_accel_read_sensor(struct iio_dev *indio_dev,
+                                         struct iio_chan_spec const *chan,
+-                                        int16_t *val)
++                                        s16 *val)
+ {
+       struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
+       struct inv_icm42600_sensor_state *accel_st = iio_priv(indio_dev);
+@@ -284,7 +284,7 @@ static int inv_icm42600_accel_read_senso
+       if (ret)
+               goto exit;
+-      *val = (int16_t)be16_to_cpup(data);
++      *val = (s16)be16_to_cpup(data);
+       if (*val == INV_ICM42600_DATA_INVALID)
+               ret = -EINVAL;
+ exit:
+@@ -492,11 +492,11 @@ static int inv_icm42600_accel_read_offse
+                                         int *val, int *val2)
+ {
+       struct device *dev = regmap_get_device(st->map);
+-      int64_t val64;
+-      int32_t bias;
++      s64 val64;
++      s32 bias;
+       unsigned int reg;
+-      int16_t offset;
+-      uint8_t data[2];
++      s16 offset;
++      u8 data[2];
+       int ret;
+       if (chan->type != IIO_ACCEL)
+@@ -550,7 +550,7 @@ static int inv_icm42600_accel_read_offse
+        * result in micro (1000000)
+        * (offset * 5 * 9.806650 * 1000000) / 10000
+        */
+-      val64 = (int64_t)offset * 5LL * 9806650LL;
++      val64 = (s64)offset * 5LL * 9806650LL;
+       /* for rounding, add + or - divisor (10000) divided by 2 */
+       if (val64 >= 0)
+               val64 += 10000LL / 2LL;
+@@ -568,10 +568,10 @@ static int inv_icm42600_accel_write_offs
+                                          int val, int val2)
+ {
+       struct device *dev = regmap_get_device(st->map);
+-      int64_t val64;
+-      int32_t min, max;
++      s64 val64;
++      s32 min, max;
+       unsigned int reg, regval;
+-      int16_t offset;
++      s16 offset;
+       int ret;
+       if (chan->type != IIO_ACCEL)
+@@ -596,7 +596,7 @@ static int inv_icm42600_accel_write_offs
+             inv_icm42600_accel_calibbias[1];
+       max = inv_icm42600_accel_calibbias[4] * 1000000L +
+             inv_icm42600_accel_calibbias[5];
+-      val64 = (int64_t)val * 1000000LL + (int64_t)val2;
++      val64 = (s64)val * 1000000LL + (s64)val2;
+       if (val64 < min || val64 > max)
+               return -EINVAL;
+@@ -671,7 +671,7 @@ static int inv_icm42600_accel_read_raw(s
+                                      int *val, int *val2, long mask)
+ {
+       struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
+-      int16_t data;
++      s16 data;
+       int ret;
+       switch (chan->type) {
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
+@@ -26,28 +26,28 @@
+ #define INV_ICM42600_FIFO_HEADER_ODR_GYRO     BIT(0)
+ struct inv_icm42600_fifo_1sensor_packet {
+-      uint8_t header;
++      u8 header;
+       struct inv_icm42600_fifo_sensor_data data;
+-      int8_t temp;
++      s8 temp;
+ } __packed;
+ #define INV_ICM42600_FIFO_1SENSOR_PACKET_SIZE         8
+ struct inv_icm42600_fifo_2sensors_packet {
+-      uint8_t header;
++      u8 header;
+       struct inv_icm42600_fifo_sensor_data accel;
+       struct inv_icm42600_fifo_sensor_data gyro;
+-      int8_t temp;
++      s8 temp;
+       __be16 timestamp;
+ } __packed;
+ #define INV_ICM42600_FIFO_2SENSORS_PACKET_SIZE                16
+ ssize_t inv_icm42600_fifo_decode_packet(const void *packet, const void **accel,
+-                                      const void **gyro, const int8_t **temp,
++                                      const void **gyro, const s8 **temp,
+                                       const void **timestamp, unsigned int *odr)
+ {
+       const struct inv_icm42600_fifo_1sensor_packet *pack1 = packet;
+       const struct inv_icm42600_fifo_2sensors_packet *pack2 = packet;
+-      uint8_t header = *((const uint8_t *)packet);
++      u8 header = *((const u8 *)packet);
+       /* FIFO empty */
+       if (header & INV_ICM42600_FIFO_HEADER_MSG) {
+@@ -100,7 +100,7 @@ ssize_t inv_icm42600_fifo_decode_packet(
+ void inv_icm42600_buffer_update_fifo_period(struct inv_icm42600_state *st)
+ {
+-      uint32_t period_gyro, period_accel, period;
++      u32 period_gyro, period_accel, period;
+       if (st->fifo.en & INV_ICM42600_SENSOR_GYRO)
+               period_gyro = inv_icm42600_odr_to_period(st->conf.gyro.odr);
+@@ -204,8 +204,8 @@ int inv_icm42600_buffer_update_watermark
+ {
+       size_t packet_size, wm_size;
+       unsigned int wm_gyro, wm_accel, watermark;
+-      uint32_t period_gyro, period_accel, period;
+-      uint32_t latency_gyro, latency_accel, latency;
++      u32 period_gyro, period_accel, period;
++      u32 latency_gyro, latency_accel, latency;
+       bool restore;
+       __le16 raw_wm;
+       int ret;
+@@ -459,7 +459,7 @@ int inv_icm42600_buffer_fifo_read(struct
+       __be16 *raw_fifo_count;
+       ssize_t i, size;
+       const void *accel, *gyro, *timestamp;
+-      const int8_t *temp;
++      const s8 *temp;
+       unsigned int odr;
+       int ret;
+@@ -550,7 +550,7 @@ int inv_icm42600_buffer_hwfifo_flush(str
+       struct inv_icm42600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
+       struct inv_icm42600_sensor_state *accel_st = iio_priv(st->indio_accel);
+       struct inv_sensors_timestamp *ts;
+-      int64_t gyro_ts, accel_ts;
++      s64 gyro_ts, accel_ts;
+       int ret;
+       gyro_ts = iio_get_time_ns(st->indio_gyro);
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
+@@ -28,7 +28,7 @@ struct inv_icm42600_state;
+ struct inv_icm42600_fifo {
+       unsigned int on;
+       unsigned int en;
+-      uint32_t period;
++      u32 period;
+       struct {
+               unsigned int gyro;
+               unsigned int accel;
+@@ -41,7 +41,7 @@ struct inv_icm42600_fifo {
+               size_t accel;
+               size_t total;
+       } nb;
+-      uint8_t data[2080] __aligned(IIO_DMA_MINALIGN);
++      u8 data[2080] __aligned(IIO_DMA_MINALIGN);
+ };
+ /* FIFO data packet */
+@@ -52,7 +52,7 @@ struct inv_icm42600_fifo_sensor_data {
+ } __packed;
+ #define INV_ICM42600_FIFO_DATA_INVALID                -32768
+-static inline int16_t inv_icm42600_fifo_get_sensor_data(__be16 d)
++static inline s16 inv_icm42600_fifo_get_sensor_data(__be16 d)
+ {
+       return be16_to_cpu(d);
+ }
+@@ -60,7 +60,7 @@ static inline int16_t inv_icm42600_fifo_
+ static inline bool
+ inv_icm42600_fifo_is_data_valid(const struct inv_icm42600_fifo_sensor_data *s)
+ {
+-      int16_t x, y, z;
++      s16 x, y, z;
+       x = inv_icm42600_fifo_get_sensor_data(s->x);
+       y = inv_icm42600_fifo_get_sensor_data(s->y);
+@@ -75,7 +75,7 @@ inv_icm42600_fifo_is_data_valid(const st
+ }
+ ssize_t inv_icm42600_fifo_decode_packet(const void *packet, const void **accel,
+-                                      const void **gyro, const int8_t **temp,
++                                      const void **gyro, const s8 **temp,
+                                       const void **timestamp, unsigned int *odr);
+ extern const struct iio_buffer_setup_ops inv_icm42600_buffer_ops;
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
+@@ -103,7 +103,7 @@ const struct regmap_config inv_icm42600_
+ EXPORT_SYMBOL_NS_GPL(inv_icm42600_spi_regmap_config, "IIO_ICM42600");
+ struct inv_icm42600_hw {
+-      uint8_t whoami;
++      u8 whoami;
+       const char *name;
+       const struct inv_icm42600_conf *conf;
+ };
+@@ -188,9 +188,9 @@ inv_icm42600_get_mount_matrix(const stru
+       return &st->orientation;
+ }
+-uint32_t inv_icm42600_odr_to_period(enum inv_icm42600_odr odr)
++u32 inv_icm42600_odr_to_period(enum inv_icm42600_odr odr)
+ {
+-      static uint32_t odr_periods[INV_ICM42600_ODR_NB] = {
++      static u32 odr_periods[INV_ICM42600_ODR_NB] = {
+               /* reserved values */
+               0, 0, 0,
+               /* 8kHz */
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
+@@ -77,7 +77,7 @@ static const struct iio_chan_spec inv_ic
+  */
+ struct inv_icm42600_gyro_buffer {
+       struct inv_icm42600_fifo_sensor_data gyro;
+-      int16_t temp;
++      s16 temp;
+       aligned_s64 timestamp;
+ };
+@@ -139,7 +139,7 @@ out_unlock:
+ static int inv_icm42600_gyro_read_sensor(struct inv_icm42600_state *st,
+                                        struct iio_chan_spec const *chan,
+-                                       int16_t *val)
++                                       s16 *val)
+ {
+       struct device *dev = regmap_get_device(st->map);
+       struct inv_icm42600_sensor_conf conf = INV_ICM42600_SENSOR_CONF_INIT;
+@@ -179,7 +179,7 @@ static int inv_icm42600_gyro_read_sensor
+       if (ret)
+               goto exit;
+-      *val = (int16_t)be16_to_cpup(data);
++      *val = (s16)be16_to_cpup(data);
+       if (*val == INV_ICM42600_DATA_INVALID)
+               ret = -EINVAL;
+ exit:
+@@ -399,11 +399,11 @@ static int inv_icm42600_gyro_read_offset
+                                        int *val, int *val2)
+ {
+       struct device *dev = regmap_get_device(st->map);
+-      int64_t val64;
+-      int32_t bias;
++      s64 val64;
++      s32 bias;
+       unsigned int reg;
+-      int16_t offset;
+-      uint8_t data[2];
++      s16 offset;
++      u8 data[2];
+       int ret;
+       if (chan->type != IIO_ANGL_VEL)
+@@ -457,7 +457,7 @@ static int inv_icm42600_gyro_read_offset
+        * result in nano (1000000000)
+        * (offset * 64 * Pi * 1000000000) / (2048 * 180)
+        */
+-      val64 = (int64_t)offset * 64LL * 3141592653LL;
++      val64 = (s64)offset * 64LL * 3141592653LL;
+       /* for rounding, add + or - divisor (2048 * 180) divided by 2 */
+       if (val64 >= 0)
+               val64 += 2048 * 180 / 2;
+@@ -475,9 +475,9 @@ static int inv_icm42600_gyro_write_offse
+                                         int val, int val2)
+ {
+       struct device *dev = regmap_get_device(st->map);
+-      int64_t val64, min, max;
++      s64 val64, min, max;
+       unsigned int reg, regval;
+-      int16_t offset;
++      s16 offset;
+       int ret;
+       if (chan->type != IIO_ANGL_VEL)
+@@ -498,11 +498,11 @@ static int inv_icm42600_gyro_write_offse
+       }
+       /* inv_icm42600_gyro_calibbias: min - step - max in nano */
+-      min = (int64_t)inv_icm42600_gyro_calibbias[0] * 1000000000LL +
+-            (int64_t)inv_icm42600_gyro_calibbias[1];
+-      max = (int64_t)inv_icm42600_gyro_calibbias[4] * 1000000000LL +
+-            (int64_t)inv_icm42600_gyro_calibbias[5];
+-      val64 = (int64_t)val * 1000000000LL + (int64_t)val2;
++      min = (s64)inv_icm42600_gyro_calibbias[0] * 1000000000LL +
++            (s64)inv_icm42600_gyro_calibbias[1];
++      max = (s64)inv_icm42600_gyro_calibbias[4] * 1000000000LL +
++            (s64)inv_icm42600_gyro_calibbias[5];
++      val64 = (s64)val * 1000000000LL + (s64)val2;
+       if (val64 < min || val64 > max)
+               return -EINVAL;
+@@ -577,7 +577,7 @@ static int inv_icm42600_gyro_read_raw(st
+                                     int *val, int *val2, long mask)
+ {
+       struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
+-      int16_t data;
++      s16 data;
+       int ret;
+       switch (chan->type) {
+@@ -803,9 +803,9 @@ int inv_icm42600_gyro_parse_fifo(struct
+       ssize_t i, size;
+       unsigned int no;
+       const void *accel, *gyro, *timestamp;
+-      const int8_t *temp;
++      const s8 *temp;
+       unsigned int odr;
+-      int64_t ts_val;
++      s64 ts_val;
+       /* buffer is copied to userspace, zeroing it to avoid any data leak */
+       struct inv_icm42600_gyro_buffer buffer = { };
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
+@@ -13,7 +13,7 @@
+ #include "inv_icm42600.h"
+ #include "inv_icm42600_temp.h"
+-static int inv_icm42600_temp_read(struct inv_icm42600_state *st, int16_t *temp)
++static int inv_icm42600_temp_read(struct inv_icm42600_state *st, s16 *temp)
+ {
+       struct device *dev = regmap_get_device(st->map);
+       __be16 *raw;
+@@ -31,7 +31,7 @@ static int inv_icm42600_temp_read(struct
+       if (ret)
+               goto exit;
+-      *temp = (int16_t)be16_to_cpup(raw);
++      *temp = (s16)be16_to_cpup(raw);
+       if (*temp == INV_ICM42600_DATA_INVALID)
+               ret = -EINVAL;
+@@ -48,7 +48,7 @@ int inv_icm42600_temp_read_raw(struct ii
+                              int *val, int *val2, long mask)
+ {
+       struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
+-      int16_t temp;
++      s16 temp;
+       int ret;
+       if (chan->type != IIO_TEMP)
diff --git a/queue-6.16/iio-imu-inv_icm42600-use-instead-of-memset.patch b/queue-6.16/iio-imu-inv_icm42600-use-instead-of-memset.patch
new file mode 100644 (file)
index 0000000..e4b58be
--- /dev/null
@@ -0,0 +1,70 @@
+From stable+bounces-172721-greg=kroah.com@vger.kernel.org Sun Aug 24 15:03:07 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 24 Aug 2025 09:01:34 -0400
+Subject: iio: imu: inv_icm42600: use = { } instead of memset()
+To: stable@vger.kernel.org
+Cc: "David Lechner" <dlechner@baylibre.com>, "Nuno Sá" <nuno.sa@analog.com>, "Andy Shevchenko" <andriy.shevchenko@linux.intel.com>, "Jonathan Cameron" <Jonathan.Cameron@huawei.com>, "Sasha Levin" <sashal@kernel.org>
+Message-ID: <20250824130136.2747952-1-sashal@kernel.org>
+
+From: David Lechner <dlechner@baylibre.com>
+
+[ Upstream commit 352112e2d9aab6a156c2803ae14eb89a9fd93b7d ]
+
+Use { } instead of memset() to zero-initialize stack memory to simplify
+the code.
+
+Signed-off-by: David Lechner <dlechner@baylibre.com>
+Reviewed-by: Nuno Sá <nuno.sa@analog.com>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Link: https://patch.msgid.link/20250611-iio-zero-init-stack-with-instead-of-memset-v1-16-ebb2d0a24302@baylibre.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Stable-dep-of: dfdc31e7ccf3 ("iio: imu: inv_icm42600: change invalid data error to -EBUSY")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c |    5 ++---
+ drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c  |    5 ++---
+ 2 files changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
+@@ -902,7 +902,8 @@ int inv_icm42600_accel_parse_fifo(struct
+       const int8_t *temp;
+       unsigned int odr;
+       int64_t ts_val;
+-      struct inv_icm42600_accel_buffer buffer;
++      /* buffer is copied to userspace, zeroing it to avoid any data leak */
++      struct inv_icm42600_accel_buffer buffer = { };
+       /* parse all fifo packets */
+       for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
+@@ -921,8 +922,6 @@ int inv_icm42600_accel_parse_fifo(struct
+                       inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
+                                                       st->fifo.nb.total, no);
+-              /* buffer is copied to userspace, zeroing it to avoid any data leak */
+-              memset(&buffer, 0, sizeof(buffer));
+               memcpy(&buffer.accel, accel, sizeof(buffer.accel));
+               /* convert 8 bits FIFO temperature in high resolution format */
+               buffer.temp = temp ? (*temp * 64) : 0;
+--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
+@@ -806,7 +806,8 @@ int inv_icm42600_gyro_parse_fifo(struct
+       const int8_t *temp;
+       unsigned int odr;
+       int64_t ts_val;
+-      struct inv_icm42600_gyro_buffer buffer;
++      /* buffer is copied to userspace, zeroing it to avoid any data leak */
++      struct inv_icm42600_gyro_buffer buffer = { };
+       /* parse all fifo packets */
+       for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
+@@ -825,8 +826,6 @@ int inv_icm42600_gyro_parse_fifo(struct
+                       inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
+                                                       st->fifo.nb.total, no);
+-              /* buffer is copied to userspace, zeroing it to avoid any data leak */
+-              memset(&buffer, 0, sizeof(buffer));
+               memcpy(&buffer.gyro, gyro, sizeof(buffer.gyro));
+               /* convert 8 bits FIFO temperature in high resolution format */
+               buffer.temp = temp ? (*temp * 64) : 0;
diff --git a/queue-6.16/ixgbe-prevent-from-unwanted-interface-name-changes.patch b/queue-6.16/ixgbe-prevent-from-unwanted-interface-name-changes.patch
new file mode 100644 (file)
index 0000000..4734f31
--- /dev/null
@@ -0,0 +1,46 @@
+From stable+bounces-172773-greg=kroah.com@vger.kernel.org Mon Aug 25 05:31:04 2025
+From: Calvin Owens <calvin@wbinvd.org>
+Date: Sun, 24 Aug 2025 20:30:14 -0700
+Subject: ixgbe: prevent from unwanted interface name changes
+To: stable@vger.kernel.org
+Cc: jedrzej.jagielski@intel.com, anthony.l.nguyen@intel.com, David.Kaplan@amd.com, dhowells@redhat.com, kyle.leet@gmail.com
+Message-ID: <00196d6ecf9781d8bf5526cb0d992d3a0653167c.1756088250.git.calvin@wbinvd.org>
+
+From: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
+
+[ upstream commit e67a0bc3ed4fd8ee1697cb6d937e2b294ec13b5e ]
+
+Users of the ixgbe driver report that after adding devlink support by
+the commit a0285236ab93 ("ixgbe: add initial devlink support") their
+configs got broken due to unwanted changes of interface names. It's
+caused by automatic phys_port_name generation during devlink port
+initialization flow.
+
+To prevent from that set no_phys_port_name flag for ixgbe devlink ports.
+
+Reported-by: David Howells <dhowells@redhat.com>
+Closes: https://lore.kernel.org/netdev/3452224.1745518016@warthog.procyon.org.uk/
+Reported-by: David Kaplan <David.Kaplan@amd.com>
+Closes: https://lore.kernel.org/netdev/LV3PR12MB92658474624CCF60220157199470A@LV3PR12MB9265.namprd12.prod.outlook.com/
+Fixes: a0285236ab93 ("ixgbe: add initial devlink support")
+Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
+Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
+Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
+Cc: stable@vger.kernel.org # 6.16
+Tested-By: Calvin Owens <calvin@wbinvd.org>
+Signed-off-by: Calvin Owens <calvin@wbinvd.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/intel/ixgbe/devlink/devlink.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
++++ b/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
+@@ -543,6 +543,7 @@ int ixgbe_devlink_register_port(struct i
+       attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
+       attrs.phys.port_number = adapter->hw.bus.func;
++      attrs.no_phys_port_name = 1;
+       ixgbe_devlink_set_switch_id(adapter, &attrs.switch_id);
+       devlink_port_attrs_set(devlink_port, &attrs);
index 429465083e379bda2b736c0ca643f5fff7e2a932..85cce3c2bd152e3298b5271cd6ed7d1f2fabe982 100644 (file)
@@ -331,3 +331,14 @@ tracing-limit-access-to-parser-buffer-when-trace_get_user-failed.patch
 ovl-use-i_mutex_parent-when-locking-parent-in-ovl_create_temp.patch
 pci-dwc-ensure-that-dw_pcie_wait_for_link-waits-100-ms-after-link-up.patch
 tls-fix-handling-of-zero-length-records-on-the-rx_list.patch
+x86-cpu-amd-ignore-invalid-reset-reason-value.patch
+x86-cpu-hygon-add-missing-resctrl_cpu_detect-in-bsp_init-helper.patch
+i2c-rtl9300-fix-out-of-bounds-bug-in-rtl9300_i2c_smbus_xfer.patch
+i2c-rtl9300-fix-multi-byte-i2c-write.patch
+i2c-rtl9300-increase-timeout-for-transfer-polling.patch
+i2c-rtl9300-add-missing-count-byte-for-smbus-block-ops.patch
+devlink-let-driver-opt-out-of-automatic-phys_port_name-generation.patch
+ixgbe-prevent-from-unwanted-interface-name-changes.patch
+iio-imu-inv_icm42600-use-instead-of-memset.patch
+iio-imu-inv_icm42600-convert-to-uxx-and-sxx-integer-types.patch
+iio-imu-inv_icm42600-change-invalid-data-error-to-ebusy.patch
diff --git a/queue-6.16/x86-cpu-amd-ignore-invalid-reset-reason-value.patch b/queue-6.16/x86-cpu-amd-ignore-invalid-reset-reason-value.patch
new file mode 100644 (file)
index 0000000..8a64396
--- /dev/null
@@ -0,0 +1,62 @@
+From e9576e078220c50ace9e9087355423de23e25fa5 Mon Sep 17 00:00:00 2001
+From: Yazen Ghannam <yazen.ghannam@amd.com>
+Date: Mon, 21 Jul 2025 18:11:54 +0000
+Subject: x86/CPU/AMD: Ignore invalid reset reason value
+
+From: Yazen Ghannam <yazen.ghannam@amd.com>
+
+commit e9576e078220c50ace9e9087355423de23e25fa5 upstream.
+
+The reset reason value may be "all bits set", e.g. 0xFFFFFFFF. This is a
+commonly used error response from hardware. This may occur due to a real
+hardware issue or when running in a VM.
+
+The user will see all reset reasons reported in this case.
+
+Check for an error response value and return early to avoid decoding
+invalid data.
+
+Also, adjust the data variable type to match the hardware register size.
+
+Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
+Reported-by: Libing He <libhe@redhat.com>
+Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
+Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
+Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
+Cc: stable@vger.kernel.org
+Link: https://lore.kernel.org/20250721181155.3536023-1-yazen.ghannam@amd.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/cpu/amd.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -1324,8 +1324,8 @@ static const char * const s5_reset_reaso
+ static __init int print_s5_reset_status_mmio(void)
+ {
+-      unsigned long value;
+       void __iomem *addr;
++      u32 value;
+       int i;
+       if (!cpu_feature_enabled(X86_FEATURE_ZEN))
+@@ -1338,12 +1338,16 @@ static __init int print_s5_reset_status_
+       value = ioread32(addr);
+       iounmap(addr);
++      /* Value with "all bits set" is an error response and should be ignored. */
++      if (value == U32_MAX)
++              return 0;
++
+       for (i = 0; i < ARRAY_SIZE(s5_reset_reason_txt); i++) {
+               if (!(value & BIT(i)))
+                       continue;
+               if (s5_reset_reason_txt[i]) {
+-                      pr_info("x86/amd: Previous system reset reason [0x%08lx]: %s\n",
++                      pr_info("x86/amd: Previous system reset reason [0x%08x]: %s\n",
+                               value, s5_reset_reason_txt[i]);
+               }
+       }
diff --git a/queue-6.16/x86-cpu-hygon-add-missing-resctrl_cpu_detect-in-bsp_init-helper.patch b/queue-6.16/x86-cpu-hygon-add-missing-resctrl_cpu_detect-in-bsp_init-helper.patch
new file mode 100644 (file)
index 0000000..9b197cb
--- /dev/null
@@ -0,0 +1,55 @@
+From d8df126349dad855cdfedd6bbf315bad2e901c2f Mon Sep 17 00:00:00 2001
+From: Tianxiang Peng <txpeng@tencent.com>
+Date: Mon, 23 Jun 2025 17:31:53 +0800
+Subject: x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper
+
+From: Tianxiang Peng <txpeng@tencent.com>
+
+commit d8df126349dad855cdfedd6bbf315bad2e901c2f upstream.
+
+Since
+
+  923f3a2b48bd ("x86/resctrl: Query LLC monitoring properties once during boot")
+
+resctrl_cpu_detect() has been moved from common CPU initialization code to
+the vendor-specific BSP init helper, while Hygon didn't put that call in their
+code.
+
+This triggers a division by zero fault during early booting stage on our
+machines with X86_FEATURE_CQM* supported, where get_rdt_mon_resources() tries
+to calculate mon_l3_config with uninitialized boot_cpu_data.x86_cache_occ_scale.
+
+Add the missing resctrl_cpu_detect() in the Hygon BSP init helper.
+
+  [ bp: Massage commit message. ]
+
+Fixes: 923f3a2b48bd ("x86/resctrl: Query LLC monitoring properties once during boot")
+Signed-off-by: Tianxiang Peng <txpeng@tencent.com>
+Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
+Reviewed-by: Hui Li <caelli@tencent.com>
+Cc: <stable@kernel.org>
+Link: https://lore.kernel.org/20250623093153.3016937-1-txpeng@tencent.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/cpu/hygon.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/arch/x86/kernel/cpu/hygon.c
++++ b/arch/x86/kernel/cpu/hygon.c
+@@ -16,6 +16,7 @@
+ #include <asm/spec-ctrl.h>
+ #include <asm/delay.h>
+ #include <asm/msr.h>
++#include <asm/resctrl.h>
+ #include "cpu.h"
+@@ -117,6 +118,8 @@ static void bsp_init_hygon(struct cpuinf
+                       x86_amd_ls_cfg_ssbd_mask = 1ULL << 10;
+               }
+       }
++
++      resctrl_cpu_detect(c);
+ }
+ static void early_init_hygon(struct cpuinfo_x86 *c)