From: Sasha Levin Date: Sat, 15 Mar 2025 13:34:19 +0000 (-0400) Subject: Fixes for 5.4 X-Git-Tag: v6.6.84~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5b65578f2de65798aa3e1afdd9b2e6bb692b25e7;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.4 Signed-off-by: Sasha Levin --- diff --git a/queue-5.4/acpi-resource-irq-override-for-eluktronics-mech-17.patch b/queue-5.4/acpi-resource-irq-override-for-eluktronics-mech-17.patch new file mode 100644 index 0000000000..645e86a42b --- /dev/null +++ b/queue-5.4/acpi-resource-irq-override-for-eluktronics-mech-17.patch @@ -0,0 +1,43 @@ +From ee186f797cd651dc02948ae7adfe224286515386 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 27 Jan 2025 02:39:02 -0700 +Subject: ACPI: resource: IRQ override for Eluktronics MECH-17 + +From: Gannon Kolding + +[ Upstream commit 607ab6f85f4194b644ea95ac5fe660ef575db3b4 ] + +The Eluktronics MECH-17 (GM7RG7N) needs IRQ overriding for the +keyboard to work. + +Adding a DMI_MATCH entry for this laptop model makes the internal +keyboard function normally. + +Signed-off-by: Gannon Kolding +Link: https://patch.msgid.link/20250127093902.328361-1-gannon.kolding@gmail.com +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/resource.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c +index 2750518a5d5e1..11264bb4061e7 100644 +--- a/drivers/acpi/resource.c ++++ b/drivers/acpi/resource.c +@@ -482,6 +482,12 @@ static const struct dmi_system_id asus_laptop[] = { + DMI_MATCH(DMI_BOARD_NAME, "RP-15"), + }, + }, ++ { ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Eluktronics Inc."), ++ DMI_MATCH(DMI_BOARD_NAME, "MECH-17"), ++ }, ++ }, + { + /* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ + .matches = { +-- +2.39.5 + diff --git a/queue-5.4/asoc-rsnd-don-t-indicate-warning-on-rsnd_kctrl_accep.patch b/queue-5.4/asoc-rsnd-don-t-indicate-warning-on-rsnd_kctrl_accep.patch new file mode 100644 index 0000000000..04c9c2af69 --- /dev/null +++ b/queue-5.4/asoc-rsnd-don-t-indicate-warning-on-rsnd_kctrl_accep.patch @@ -0,0 +1,125 @@ +From 33a37322066bd46e90a9ce0682389136b1a95a4a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 5 Feb 2025 00:20:42 +0000 +Subject: ASoC: rsnd: don't indicate warning on rsnd_kctrl_accept_runtime() + +From: Kuninori Morimoto + +[ Upstream commit c3fc002b206c6c83d1e3702b979733002ba6fb2c ] + +rsnd_kctrl_accept_runtime() (1) is used for runtime convert rate +(= Synchronous SRC Mode). Now, rsnd driver has 2 kctrls for it + +(A): "SRC Out Rate Switch" +(B): "SRC Out Rate" // it calls (1) + +(A): can be called anytime +(B): can be called only runtime, and will indicate warning if it was used + at non-runtime. + +To use runtime convert rate (= Synchronous SRC Mode), user might uses +command in below order. + +(X): > amixer set "SRC Out Rate" on + > aplay xxx.wav & +(Y): > amixer set "SRC Out Rate" 48010 // convert rate to 48010Hz + +(Y): calls B +(X): calls both A and B. + +In this case, when user calls (X), it calls both (A) and (B), but it is not +yet start running. So, (B) will indicate warning. + +This warning was added by commit b5c088689847 ("ASoC: rsnd: add warning +message to rsnd_kctrl_accept_runtime()"), but the message sounds like the +operation was not correct. Let's update warning message. + +The message is very SRC specific, implement it in src.c + +Signed-off-by: Kuninori Morimoto +Reviewed-by: Yoshihiro Shimoda +Link: https://patch.msgid.link/8734gt2qed.wl-kuninori.morimoto.gx@renesas.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/sh/rcar/core.c | 14 -------------- + sound/soc/sh/rcar/rsnd.h | 1 - + sound/soc/sh/rcar/src.c | 18 +++++++++++++++++- + 3 files changed, 17 insertions(+), 16 deletions(-) + +diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c +index df8d7b53b7600..1564809dff3c9 100644 +--- a/sound/soc/sh/rcar/core.c ++++ b/sound/soc/sh/rcar/core.c +@@ -1612,20 +1612,6 @@ int rsnd_kctrl_accept_anytime(struct rsnd_dai_stream *io) + return 1; + } + +-int rsnd_kctrl_accept_runtime(struct rsnd_dai_stream *io) +-{ +- struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); +- struct rsnd_priv *priv = rsnd_io_to_priv(io); +- struct device *dev = rsnd_priv_to_dev(priv); +- +- if (!runtime) { +- dev_warn(dev, "Can't update kctrl when idle\n"); +- return 0; +- } +- +- return 1; +-} +- + struct rsnd_kctrl_cfg *rsnd_kctrl_init_m(struct rsnd_kctrl_cfg_m *cfg) + { + cfg->cfg.val = cfg->val; +diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h +index d47608ff5facc..ea7a9939981b5 100644 +--- a/sound/soc/sh/rcar/rsnd.h ++++ b/sound/soc/sh/rcar/rsnd.h +@@ -737,7 +737,6 @@ struct rsnd_kctrl_cfg_s { + #define rsnd_kctrl_vals(x) ((x).val) /* = (x).cfg.val[0] */ + + int rsnd_kctrl_accept_anytime(struct rsnd_dai_stream *io); +-int rsnd_kctrl_accept_runtime(struct rsnd_dai_stream *io); + struct rsnd_kctrl_cfg *rsnd_kctrl_init_m(struct rsnd_kctrl_cfg_m *cfg); + struct rsnd_kctrl_cfg *rsnd_kctrl_init_s(struct rsnd_kctrl_cfg_s *cfg); + int rsnd_kctrl_new(struct rsnd_mod *mod, +diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c +index fd52e26a3808b..577d50e2cf8c6 100644 +--- a/sound/soc/sh/rcar/src.c ++++ b/sound/soc/sh/rcar/src.c +@@ -521,6 +521,22 @@ static irqreturn_t rsnd_src_interrupt(int irq, void *data) + return IRQ_HANDLED; + } + ++static int rsnd_src_kctrl_accept_runtime(struct rsnd_dai_stream *io) ++{ ++ struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); ++ ++ if (!runtime) { ++ struct rsnd_priv *priv = rsnd_io_to_priv(io); ++ struct device *dev = rsnd_priv_to_dev(priv); ++ ++ dev_warn(dev, "\"SRC Out Rate\" can use during running\n"); ++ ++ return 0; ++ } ++ ++ return 1; ++} ++ + static int rsnd_src_probe_(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, + struct rsnd_priv *priv) +@@ -584,7 +600,7 @@ static int rsnd_src_pcm_new(struct rsnd_mod *mod, + rsnd_io_is_play(io) ? + "SRC Out Rate" : + "SRC In Rate", +- rsnd_kctrl_accept_runtime, ++ rsnd_src_kctrl_accept_runtime, + rsnd_src_set_convert_rate, + &src->sync, 192000); + +-- +2.39.5 + diff --git a/queue-5.4/block-fix-kmem_cache-of-name-bio-108-already-exists.patch b/queue-5.4/block-fix-kmem_cache-of-name-bio-108-already-exists.patch new file mode 100644 index 0000000000..39511da28e --- /dev/null +++ b/queue-5.4/block-fix-kmem_cache-of-name-bio-108-already-exists.patch @@ -0,0 +1,41 @@ +From 2040f790729d898a28226f607ab3502f1a82dfd7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 28 Feb 2025 21:26:56 +0800 +Subject: block: fix 'kmem_cache of name 'bio-108' already exists' + +From: Ming Lei + +[ Upstream commit b654f7a51ffb386131de42aa98ed831f8c126546 ] + +Device mapper bioset often has big bio_slab size, which can be more than +1000, then 8byte can't hold the slab name any more, cause the kmem_cache +allocation warning of 'kmem_cache of name 'bio-108' already exists'. + +Fix the warning by extending bio_slab->name to 12 bytes, but fix output +of /proc/slabinfo + +Reported-by: Guangwu Zhang +Signed-off-by: Ming Lei +Link: https://lore.kernel.org/r/20250228132656.2838008-1-ming.lei@redhat.com +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + block/bio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/block/bio.c b/block/bio.c +index e3d3e75c97e03..239f6bd421a80 100644 +--- a/block/bio.c ++++ b/block/bio.c +@@ -53,7 +53,7 @@ struct bio_slab { + struct kmem_cache *slab; + unsigned int slab_ref; + unsigned int slab_size; +- char name[8]; ++ char name[12]; + }; + static DEFINE_MUTEX(bio_slab_lock); + static struct bio_slab *bio_slabs; +-- +2.39.5 + diff --git a/queue-5.4/drm-nouveau-do-not-override-forced-connector-status.patch b/queue-5.4/drm-nouveau-do-not-override-forced-connector-status.patch new file mode 100644 index 0000000000..c6bd9f384e --- /dev/null +++ b/queue-5.4/drm-nouveau-do-not-override-forced-connector-status.patch @@ -0,0 +1,35 @@ +From 99df562acc87389d15a6c464c2b8979e860b92d8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 14 Jan 2025 10:57:25 +0100 +Subject: drm/nouveau: Do not override forced connector status + +From: Thomas Zimmermann + +[ Upstream commit 01f1d77a2630e774ce33233c4e6723bca3ae9daa ] + +Keep user-forced connector status even if it cannot be programmed. Same +behavior as for the rest of the drivers. + +Signed-off-by: Thomas Zimmermann +Signed-off-by: Lyude Paul +Link: https://patchwork.freedesktop.org/patch/msgid/20250114100214.195386-1-tzimmermann@suse.de +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/nouveau/nouveau_connector.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c +index c49303ba30c80..6f2bf5e9992f8 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_connector.c ++++ b/drivers/gpu/drm/nouveau/nouveau_connector.c +@@ -759,7 +759,6 @@ nouveau_connector_force(struct drm_connector *connector) + if (!nv_encoder) { + NV_ERROR(drm, "can't find encoder to force %s on!\n", + connector->name); +- connector->status = connector_status_disconnected; + return; + } + +-- +2.39.5 + diff --git a/queue-5.4/fuse-don-t-truncate-cached-mutated-symlink.patch b/queue-5.4/fuse-don-t-truncate-cached-mutated-symlink.patch new file mode 100644 index 0000000000..b400b87ed1 --- /dev/null +++ b/queue-5.4/fuse-don-t-truncate-cached-mutated-symlink.patch @@ -0,0 +1,119 @@ +From d85c86bdd55005e88dccfc04a855e37d231c0d57 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 20 Feb 2025 11:02:58 +0100 +Subject: fuse: don't truncate cached, mutated symlink + +From: Miklos Szeredi + +[ Upstream commit b4c173dfbb6c78568578ff18f9e8822d7bd0e31b ] + +Fuse allows the value of a symlink to change and this property is exploited +by some filesystems (e.g. CVMFS). + +It has been observed, that sometimes after changing the symlink contents, +the value is truncated to the old size. + +This is caused by fuse_getattr() racing with fuse_reverse_inval_inode(). +fuse_reverse_inval_inode() updates the fuse_inode's attr_version, which +results in fuse_change_attributes() exiting before updating the cached +attributes + +This is okay, as the cached attributes remain invalid and the next call to +fuse_change_attributes() will likely update the inode with the correct +values. + +The reason this causes problems is that cached symlinks will be +returned through page_get_link(), which truncates the symlink to +inode->i_size. This is correct for filesystems that don't mutate +symlinks, but in this case it causes bad behavior. + +The solution is to just remove this truncation. This can cause a +regression in a filesystem that relies on supplying a symlink larger than +the file size, but this is unlikely. If that happens we'd need to make +this behavior conditional. + +Reported-by: Laura Promberger +Tested-by: Sam Lewis +Signed-off-by: Miklos Szeredi +Link: https://lore.kernel.org/r/20250220100258.793363-1-mszeredi@redhat.com +Reviewed-by: Bernd Schubert +Signed-off-by: Christian Brauner +Signed-off-by: Sasha Levin +--- + fs/fuse/dir.c | 2 +- + fs/namei.c | 24 +++++++++++++++++++----- + include/linux/fs.h | 2 ++ + 3 files changed, 22 insertions(+), 6 deletions(-) + +diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c +index b2f37809fa9bd..6b4bf30b0247e 100644 +--- a/fs/fuse/dir.c ++++ b/fs/fuse/dir.c +@@ -1275,7 +1275,7 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode, + goto out_err; + + if (fc->cache_symlinks) +- return page_get_link(dentry, inode, callback); ++ return page_get_link_raw(dentry, inode, callback); + + err = -ECHILD; + if (!dentry) +diff --git a/fs/namei.c b/fs/namei.c +index a4cba6991a4d1..038a9a4b99270 100644 +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -4859,10 +4859,9 @@ const char *vfs_get_link(struct dentry *dentry, struct delayed_call *done) + EXPORT_SYMBOL(vfs_get_link); + + /* get the link contents into pagecache */ +-const char *page_get_link(struct dentry *dentry, struct inode *inode, +- struct delayed_call *callback) ++static char *__page_get_link(struct dentry *dentry, struct inode *inode, ++ struct delayed_call *callback) + { +- char *kaddr; + struct page *page; + struct address_space *mapping = inode->i_mapping; + +@@ -4881,8 +4880,23 @@ const char *page_get_link(struct dentry *dentry, struct inode *inode, + } + set_delayed_call(callback, page_put_link, page); + BUG_ON(mapping_gfp_mask(mapping) & __GFP_HIGHMEM); +- kaddr = page_address(page); +- nd_terminate_link(kaddr, inode->i_size, PAGE_SIZE - 1); ++ return page_address(page); ++} ++ ++const char *page_get_link_raw(struct dentry *dentry, struct inode *inode, ++ struct delayed_call *callback) ++{ ++ return __page_get_link(dentry, inode, callback); ++} ++EXPORT_SYMBOL_GPL(page_get_link_raw); ++ ++const char *page_get_link(struct dentry *dentry, struct inode *inode, ++ struct delayed_call *callback) ++{ ++ char *kaddr = __page_get_link(dentry, inode, callback); ++ ++ if (!IS_ERR(kaddr)) ++ nd_terminate_link(kaddr, inode->i_size, PAGE_SIZE - 1); + return kaddr; + } + +diff --git a/include/linux/fs.h b/include/linux/fs.h +index c0967df137152..d3648a55590ca 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -3234,6 +3234,8 @@ extern const struct file_operations generic_ro_fops; + + extern int readlink_copy(char __user *, int, const char *); + extern int page_readlink(struct dentry *, char __user *, int); ++extern const char *page_get_link_raw(struct dentry *, struct inode *, ++ struct delayed_call *); + extern const char *page_get_link(struct dentry *, struct inode *, + struct delayed_call *); + extern void page_put_link(void *); +-- +2.39.5 + diff --git a/queue-5.4/hid-ignore-non-functional-sensor-in-hp-5mp-camera.patch b/queue-5.4/hid-ignore-non-functional-sensor-in-hp-5mp-camera.patch new file mode 100644 index 0000000000..1233e7d141 --- /dev/null +++ b/queue-5.4/hid-ignore-non-functional-sensor-in-hp-5mp-camera.patch @@ -0,0 +1,56 @@ +From 95fe247d9a61b991a2e000e6f7ba5ff28d35111c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 15 Jan 2025 15:00:20 +0800 +Subject: HID: ignore non-functional sensor in HP 5MP Camera + +From: Chia-Lin Kao (AceLan) + +[ Upstream commit 363236d709e75610b628c2a4337ccbe42e454b6d ] + +The HP 5MP Camera (USB ID 0408:5473) reports a HID sensor interface that +is not actually implemented. Attempting to access this non-functional +sensor via iio_info causes system hangs as runtime PM tries to wake up +an unresponsive sensor. + + [453] hid-sensor-hub 0003:0408:5473.0003: Report latency attributes: ffffffff:ffffffff + [453] hid-sensor-hub 0003:0408:5473.0003: common attributes: 5:1, 2:1, 3:1 ffffffff:ffffffff + +Add this device to the HID ignore list since the sensor interface is +non-functional by design and should not be exposed to userspace. + +Signed-off-by: Chia-Lin Kao (AceLan) +Acked-by: Srinivas Pandruvada +Signed-off-by: Jiri Kosina +Signed-off-by: Sasha Levin +--- + drivers/hid/hid-ids.h | 1 + + drivers/hid/hid-quirks.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index bc0115548a579..d5369577b4755 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -1005,6 +1005,7 @@ + #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001 + #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3003 0x3003 + #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 ++#define USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473 0x5473 + + #define I2C_VENDOR_ID_RAYDIUM 0x2386 + #define I2C_PRODUCT_ID_RAYDIUM_4B33 0x4b33 +diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c +index 99009fda7b80a..9b375ca53946e 100644 +--- a/drivers/hid/hid-quirks.c ++++ b/drivers/hid/hid-quirks.c +@@ -876,6 +876,7 @@ static const struct hid_device_id hid_ignore_list[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) }, + #endif + { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) }, + { } + }; + +-- +2.39.5 + diff --git a/queue-5.4/hid-intel-ish-hid-fix-the-length-of-mng_sync_fw_cloc.patch b/queue-5.4/hid-intel-ish-hid-fix-the-length-of-mng_sync_fw_cloc.patch new file mode 100644 index 0000000000..82fcf6306c --- /dev/null +++ b/queue-5.4/hid-intel-ish-hid-fix-the-length-of-mng_sync_fw_cloc.patch @@ -0,0 +1,56 @@ +From e91fdfc0a2738979adcc763a186324b833b53e45 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 22 Jan 2025 09:29:00 +0800 +Subject: HID: intel-ish-hid: fix the length of MNG_SYNC_FW_CLOCK in doorbell + +From: Zhang Lixu + +[ Upstream commit 4b54ae69197b9f416baa0fceadff7e89075f8454 ] + +The timestamps in the Firmware log and HID sensor samples are incorrect. +They show 1970-01-01 because the current IPC driver only uses the first +8 bytes of bootup time when synchronizing time with the firmware. The +firmware converts the bootup time to UTC time, which results in the +display of 1970-01-01. + +In write_ipc_from_queue(), when sending the MNG_SYNC_FW_CLOCK message, +the clock is updated according to the definition of ipc_time_update_msg. +However, in _ish_sync_fw_clock(), the message length is specified as the +size of uint64_t when building the doorbell. As a result, the firmware +only receives the first 8 bytes of struct ipc_time_update_msg. +This patch corrects the length in the doorbell to ensure the entire +ipc_time_update_msg is sent, fixing the timestamp issue. + +Signed-off-by: Zhang Lixu +Acked-by: Srinivas Pandruvada +Signed-off-by: Jiri Kosina +Signed-off-by: Sasha Levin +--- + drivers/hid/intel-ish-hid/ipc/ipc.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/hid/intel-ish-hid/ipc/ipc.c b/drivers/hid/intel-ish-hid/ipc/ipc.c +index 8f8dfdf64833e..871f043eeba1e 100644 +--- a/drivers/hid/intel-ish-hid/ipc/ipc.c ++++ b/drivers/hid/intel-ish-hid/ipc/ipc.c +@@ -549,14 +549,14 @@ static void fw_reset_work_fn(struct work_struct *unused) + static void _ish_sync_fw_clock(struct ishtp_device *dev) + { + static unsigned long prev_sync; +- uint64_t usec; ++ struct ipc_time_update_msg time = {}; + + if (prev_sync && jiffies - prev_sync < 20 * HZ) + return; + + prev_sync = jiffies; +- usec = ktime_to_us(ktime_get_boottime()); +- ipc_send_mng_msg(dev, MNG_SYNC_FW_CLOCK, &usec, sizeof(uint64_t)); ++ /* The fields of time would be updated while sending message */ ++ ipc_send_mng_msg(dev, MNG_SYNC_FW_CLOCK, &time, sizeof(time)); + } + + /** +-- +2.39.5 + diff --git a/queue-5.4/hrtimers-mark-is_migration_base-with-__always_inline.patch b/queue-5.4/hrtimers-mark-is_migration_base-with-__always_inline.patch new file mode 100644 index 0000000000..58edb5cbbf --- /dev/null +++ b/queue-5.4/hrtimers-mark-is_migration_base-with-__always_inline.patch @@ -0,0 +1,79 @@ +From 8a13291fa06ea672ccc628e9332f8a6c7d3e0e65 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 16 Jan 2025 18:07:45 +0200 +Subject: hrtimers: Mark is_migration_base() with __always_inline + +From: Andy Shevchenko + +[ Upstream commit 27af31e44949fa85550176520ef7086a0d00fd7b ] + +When is_migration_base() is unused, it prevents kernel builds +with clang, `make W=1` and CONFIG_WERROR=y: + +kernel/time/hrtimer.c:156:20: error: unused function 'is_migration_base' [-Werror,-Wunused-function] + 156 | static inline bool is_migration_base(struct hrtimer_clock_base *base) + | ^~~~~~~~~~~~~~~~~ + +Fix this by marking it with __always_inline. + +[ tglx: Use __always_inline instead of __maybe_unused and move it into the + usage sites conditional ] + +Signed-off-by: Andy Shevchenko +Signed-off-by: Thomas Gleixner +Link: https://lore.kernel.org/all/20250116160745.243358-1-andriy.shevchenko@linux.intel.com +Signed-off-by: Sasha Levin +--- + kernel/time/hrtimer.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c +index 539bc80787eeb..69713fa32437b 100644 +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -140,11 +140,6 @@ static struct hrtimer_cpu_base migration_cpu_base = { + + #define migration_base migration_cpu_base.clock_base[0] + +-static inline bool is_migration_base(struct hrtimer_clock_base *base) +-{ +- return base == &migration_base; +-} +- + /* + * We are using hashed locking: holding per_cpu(hrtimer_bases)[n].lock + * means that all timers which are tied to this base via timer->base are +@@ -269,11 +264,6 @@ switch_hrtimer_base(struct hrtimer *timer, struct hrtimer_clock_base *base, + + #else /* CONFIG_SMP */ + +-static inline bool is_migration_base(struct hrtimer_clock_base *base) +-{ +- return false; +-} +- + static inline struct hrtimer_clock_base * + lock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags) + { +@@ -1276,6 +1266,18 @@ static void hrtimer_sync_wait_running(struct hrtimer_cpu_base *cpu_base, + } + } + ++#ifdef CONFIG_SMP ++static __always_inline bool is_migration_base(struct hrtimer_clock_base *base) ++{ ++ return base == &migration_base; ++} ++#else ++static __always_inline bool is_migration_base(struct hrtimer_clock_base *base) ++{ ++ return false; ++} ++#endif ++ + /* + * This function is called on PREEMPT_RT kernels when the fast path + * deletion of a timer failed because the timer callback function was +-- +2.39.5 + diff --git a/queue-5.4/iscsi_ibft-fix-ubsan-shift-out-of-bounds-warning-in-.patch b/queue-5.4/iscsi_ibft-fix-ubsan-shift-out-of-bounds-warning-in-.patch new file mode 100644 index 0000000000..5b286775dd --- /dev/null +++ b/queue-5.4/iscsi_ibft-fix-ubsan-shift-out-of-bounds-warning-in-.patch @@ -0,0 +1,42 @@ +From c9894be296a25caaef1c3941ccfad85153514bfd Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 14 Jan 2025 12:12:34 +0800 +Subject: iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in + ibft_attr_show_nic() + +From: Chengen Du + +[ Upstream commit 07e0d99a2f701123ad3104c0f1a1e66bce74d6e5 ] + +When performing an iSCSI boot using IPv6, iscsistart still reads the +/sys/firmware/ibft/ethernetX/subnet-mask entry. Since the IPv6 prefix +length is 64, this causes the shift exponent to become negative, +triggering a UBSAN warning. As the concept of a subnet mask does not +apply to IPv6, the value is set to ~0 to suppress the warning message. + +Signed-off-by: Chengen Du +Signed-off-by: Konrad Rzeszutek Wilk +Signed-off-by: Sasha Levin +--- + drivers/firmware/iscsi_ibft.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/firmware/iscsi_ibft.c b/drivers/firmware/iscsi_ibft.c +index 7e12cbdf957cc..daf42b5319e89 100644 +--- a/drivers/firmware/iscsi_ibft.c ++++ b/drivers/firmware/iscsi_ibft.c +@@ -311,7 +311,10 @@ static ssize_t ibft_attr_show_nic(void *data, int type, char *buf) + str += sprintf_ipaddr(str, nic->ip_addr); + break; + case ISCSI_BOOT_ETH_SUBNET_MASK: +- val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1)); ++ if (nic->subnet_mask_prefix > 32) ++ val = cpu_to_be32(~0); ++ else ++ val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1)); + str += sprintf(str, "%pI4", &val); + break; + case ISCSI_BOOT_ETH_PREFIX_LEN: +-- +2.39.5 + diff --git a/queue-5.4/nvme-fc-go-straight-to-connecting-state-when-initial.patch b/queue-5.4/nvme-fc-go-straight-to-connecting-state-when-initial.patch new file mode 100644 index 0000000000..f969f7188d --- /dev/null +++ b/queue-5.4/nvme-fc-go-straight-to-connecting-state-when-initial.patch @@ -0,0 +1,43 @@ +From 5aaadb8716150dfcaead0181abcd886dca62154f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 9 Jan 2025 14:30:47 +0100 +Subject: nvme-fc: go straight to connecting state when initializing + +From: Daniel Wagner + +[ Upstream commit d3d380eded7ee5fc2fc53b3b0e72365ded025c4a ] + +The initial controller initialization mimiks the reconnect loop +behavior by switching from NEW to RESETTING and then to CONNECTING. + +The transition from NEW to CONNECTING is a valid transition, so there is +no point entering the RESETTING state. TCP and RDMA also transition +directly to CONNECTING state. + +Reviewed-by: Sagi Grimberg +Reviewed-by: Hannes Reinecke +Reviewed-by: Christoph Hellwig +Signed-off-by: Daniel Wagner +Signed-off-by: Keith Busch +Signed-off-by: Sasha Levin +--- + drivers/nvme/host/fc.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c +index 0d2c22cf12a08..f3c0bff714eba 100644 +--- a/drivers/nvme/host/fc.c ++++ b/drivers/nvme/host/fc.c +@@ -3164,8 +3164,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts, + list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list); + spin_unlock_irqrestore(&rport->lock, flags); + +- if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_RESETTING) || +- !nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) { ++ if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) { + dev_err(ctrl->ctrl.device, + "NVME-FC{%d}: failed to init ctrl state\n", ctrl->cnum); + goto fail_ctrl; +-- +2.39.5 + diff --git a/queue-5.4/nvme-only-allow-entering-live-from-connecting-state.patch b/queue-5.4/nvme-only-allow-entering-live-from-connecting-state.patch new file mode 100644 index 0000000000..b30ebd2dd7 --- /dev/null +++ b/queue-5.4/nvme-only-allow-entering-live-from-connecting-state.patch @@ -0,0 +1,38 @@ +From 12a4e60ad4e88e43bf57417069c294f3144698c0 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 14 Feb 2025 09:02:03 +0100 +Subject: nvme: only allow entering LIVE from CONNECTING state + +From: Daniel Wagner + +[ Upstream commit d2fe192348f93fe3a0cb1e33e4aba58e646397f4 ] + +The fabric transports and also the PCI transport are not entering the +LIVE state from NEW or RESETTING. This makes the state machine more +restrictive and allows to catch not supported state transitions, e.g. +directly switching from RESETTING to LIVE. + +Reviewed-by: Sagi Grimberg +Signed-off-by: Daniel Wagner +Signed-off-by: Keith Busch +Signed-off-by: Sasha Levin +--- + drivers/nvme/host/core.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c +index dd4b99ea956ac..9816debe5cb51 100644 +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -351,8 +351,6 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, + switch (new_state) { + case NVME_CTRL_LIVE: + switch (old_state) { +- case NVME_CTRL_NEW: +- case NVME_CTRL_RESETTING: + case NVME_CTRL_CONNECTING: + changed = true; + /* FALLTHRU */ +-- +2.39.5 + diff --git a/queue-5.4/nvmet-rdma-recheck-queue-state-is-live-in-state-lock.patch b/queue-5.4/nvmet-rdma-recheck-queue-state-is-live-in-state-lock.patch new file mode 100644 index 0000000000..3c298b674f --- /dev/null +++ b/queue-5.4/nvmet-rdma-recheck-queue-state-is-live-in-state-lock.patch @@ -0,0 +1,79 @@ +From 966fafdee569c36f043d742b7094bc226e7187de Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 16 Feb 2025 20:49:56 +0800 +Subject: nvmet-rdma: recheck queue state is LIVE in state lock in recv done + +From: Ruozhu Li + +[ Upstream commit 3988ac1c67e6e84d2feb987d7b36d5791174b3da ] + +The queue state checking in nvmet_rdma_recv_done is not in queue state +lock.Queue state can transfer to LIVE in cm establish handler between +state checking and state lock here, cause a silent drop of nvme connect +cmd. +Recheck queue state whether in LIVE state in state lock to prevent this +issue. + +Signed-off-by: Ruozhu Li +Reviewed-by: Sagi Grimberg +Signed-off-by: Keith Busch +Signed-off-by: Sasha Levin +--- + drivers/nvme/target/rdma.c | 33 +++++++++++++++++++++++---------- + 1 file changed, 23 insertions(+), 10 deletions(-) + +diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c +index ae41b6001c7e2..b6d84b6493e14 100644 +--- a/drivers/nvme/target/rdma.c ++++ b/drivers/nvme/target/rdma.c +@@ -777,6 +777,27 @@ static void nvmet_rdma_handle_command(struct nvmet_rdma_queue *queue, + nvmet_req_complete(&cmd->req, status); + } + ++static bool nvmet_rdma_recv_not_live(struct nvmet_rdma_queue *queue, ++ struct nvmet_rdma_rsp *rsp) ++{ ++ unsigned long flags; ++ bool ret = true; ++ ++ spin_lock_irqsave(&queue->state_lock, flags); ++ /* ++ * recheck queue state is not live to prevent a race condition ++ * with RDMA_CM_EVENT_ESTABLISHED handler. ++ */ ++ if (queue->state == NVMET_RDMA_Q_LIVE) ++ ret = false; ++ else if (queue->state == NVMET_RDMA_Q_CONNECTING) ++ list_add_tail(&rsp->wait_list, &queue->rsp_wait_list); ++ else ++ nvmet_rdma_put_rsp(rsp); ++ spin_unlock_irqrestore(&queue->state_lock, flags); ++ return ret; ++} ++ + static void nvmet_rdma_recv_done(struct ib_cq *cq, struct ib_wc *wc) + { + struct nvmet_rdma_cmd *cmd = +@@ -818,17 +839,9 @@ static void nvmet_rdma_recv_done(struct ib_cq *cq, struct ib_wc *wc) + rsp->req.port = queue->port; + rsp->n_rdma = 0; + +- if (unlikely(queue->state != NVMET_RDMA_Q_LIVE)) { +- unsigned long flags; +- +- spin_lock_irqsave(&queue->state_lock, flags); +- if (queue->state == NVMET_RDMA_Q_CONNECTING) +- list_add_tail(&rsp->wait_list, &queue->rsp_wait_list); +- else +- nvmet_rdma_put_rsp(rsp); +- spin_unlock_irqrestore(&queue->state_lock, flags); ++ if (unlikely(queue->state != NVMET_RDMA_Q_LIVE) && ++ nvmet_rdma_recv_not_live(queue, rsp)) + return; +- } + + nvmet_rdma_handle_command(queue, rsp); + } +-- +2.39.5 + diff --git a/queue-5.4/powercap-call-put_device-on-an-error-path-in-powerca.patch b/queue-5.4/powercap-call-put_device-on-an-error-path-in-powerca.patch new file mode 100644 index 0000000000..aeac7889e7 --- /dev/null +++ b/queue-5.4/powercap-call-put_device-on-an-error-path-in-powerca.patch @@ -0,0 +1,46 @@ +From cf0042d47195e2cc2123197da7567e0778168737 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 10 Jan 2025 10:05:54 +0900 +Subject: powercap: call put_device() on an error path in + powercap_register_control_type() + +From: Joe Hattori + +[ Upstream commit 93c66fbc280747ea700bd6199633d661e3c819b3 ] + +powercap_register_control_type() calls device_register(), but does not +release the refcount of the device when it fails. + +Call put_device() before returning an error to balance the refcount. + +Since the kfree(control_type) will be done by powercap_release(), remove +the lines in powercap_register_control_type() before returning the error. + +This bug was found by an experimental verifier that I am developing. + +Signed-off-by: Joe Hattori +Link: https://patch.msgid.link/20250110010554.1583411-1-joe@pf.is.s.u-tokyo.ac.jp +[ rjw: Changelog edits ] +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/powercap/powercap_sys.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/powercap/powercap_sys.c b/drivers/powercap/powercap_sys.c +index 7a3109a538813..fe5d05da7ce7a 100644 +--- a/drivers/powercap/powercap_sys.c ++++ b/drivers/powercap/powercap_sys.c +@@ -627,8 +627,7 @@ struct powercap_control_type *powercap_register_control_type( + dev_set_name(&control_type->dev, "%s", name); + result = device_register(&control_type->dev); + if (result) { +- if (control_type->allocated) +- kfree(control_type); ++ put_device(&control_type->dev); + return ERR_PTR(result); + } + idr_init(&control_type->idr); +-- +2.39.5 + diff --git a/queue-5.4/s390-cio-fix-chpid-configure-attribute-caching.patch b/queue-5.4/s390-cio-fix-chpid-configure-attribute-caching.patch new file mode 100644 index 0000000000..7bef29fd59 --- /dev/null +++ b/queue-5.4/s390-cio-fix-chpid-configure-attribute-caching.patch @@ -0,0 +1,60 @@ +From f6904b986a82e81b281e070cf5e4f6bbddf0fe54 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 31 Jan 2025 12:02:55 +0100 +Subject: s390/cio: Fix CHPID "configure" attribute caching + +From: Peter Oberparleiter + +[ Upstream commit 32ae4a2992529e2c7934e422035fad1d9b0f1fb5 ] + +In some environments, the SCLP firmware interface used to query a +CHPID's configured state is not supported. On these environments, +rapidly reading the corresponding sysfs attribute produces inconsistent +results: + + $ cat /sys/devices/css0/chp0.00/configure + cat: /sys/devices/css0/chp0.00/configure: Operation not supported + $ cat /sys/devices/css0/chp0.00/configure + 3 + +This occurs for example when Linux is run as a KVM guest. The +inconsistency is a result of CIO using cached results for generating +the value of the "configure" attribute while failing to handle the +situation where no data was returned by SCLP. + +Fix this by not updating the cache-expiration timestamp when SCLP +returns no data. With the fix applied, the system response is +consistent: + + $ cat /sys/devices/css0/chp0.00/configure + cat: /sys/devices/css0/chp0.00/configure: Operation not supported + $ cat /sys/devices/css0/chp0.00/configure + cat: /sys/devices/css0/chp0.00/configure: Operation not supported + +Reviewed-by: Vineeth Vijayan +Reviewed-by: Eric Farman +Tested-by: Eric Farman +Signed-off-by: Peter Oberparleiter +Signed-off-by: Vasily Gorbik +Signed-off-by: Sasha Levin +--- + drivers/s390/cio/chp.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c +index 1fd982b4d64bd..18b2fc50463ba 100644 +--- a/drivers/s390/cio/chp.c ++++ b/drivers/s390/cio/chp.c +@@ -646,7 +646,8 @@ static int info_update(void) + if (time_after(jiffies, chp_info_expires)) { + /* Data is too old, update. */ + rc = sclp_chp_read_info(&chp_info); +- chp_info_expires = jiffies + CHP_INFO_UPDATE_INTERVAL ; ++ if (!rc) ++ chp_info_expires = jiffies + CHP_INFO_UPDATE_INTERVAL; + } + mutex_unlock(&info_lock); + +-- +2.39.5 + diff --git a/queue-5.4/scsi-qla1280-fix-kernel-oops-when-debug-level-2.patch b/queue-5.4/scsi-qla1280-fix-kernel-oops-when-debug-level-2.patch new file mode 100644 index 0000000000..d81cedd195 --- /dev/null +++ b/queue-5.4/scsi-qla1280-fix-kernel-oops-when-debug-level-2.patch @@ -0,0 +1,38 @@ +From 85b40fe01d82e7d0e132842ea232b9e5cc2c9d18 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 25 Jan 2025 10:49:22 +0100 +Subject: scsi: qla1280: Fix kernel oops when debug level > 2 + +From: Magnus Lindholm + +[ Upstream commit 5233e3235dec3065ccc632729675575dbe3c6b8a ] + +A null dereference or oops exception will eventually occur when qla1280.c +driver is compiled with DEBUG_QLA1280 enabled and ql_debug_level > 2. I +think its clear from the code that the intention here is sg_dma_len(s) not +length of sg_next(s) when printing the debug info. + +Signed-off-by: Magnus Lindholm +Link: https://lore.kernel.org/r/20250125095033.26188-1-linmag7@gmail.com +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/qla1280.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c +index 832af42130467..a13db27b04ede 100644 +--- a/drivers/scsi/qla1280.c ++++ b/drivers/scsi/qla1280.c +@@ -2871,7 +2871,7 @@ qla1280_64bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp) + dprintk(3, "S/G Segment phys_addr=%x %x, len=0x%x\n", + cpu_to_le32(upper_32_bits(dma_handle)), + cpu_to_le32(lower_32_bits(dma_handle)), +- cpu_to_le32(sg_dma_len(sg_next(s)))); ++ cpu_to_le32(sg_dma_len(s))); + remseg--; + } + dprintk(5, "qla1280_64bit_start_scsi: Scatter/gather " +-- +2.39.5 + diff --git a/queue-5.4/sctp-fix-undefined-behavior-in-left-shift-operation.patch b/queue-5.4/sctp-fix-undefined-behavior-in-left-shift-operation.patch new file mode 100644 index 0000000000..8496bdca98 --- /dev/null +++ b/queue-5.4/sctp-fix-undefined-behavior-in-left-shift-operation.patch @@ -0,0 +1,43 @@ +From f431d4db4bee7f73aeb0345ac948176948b6c8ab Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 18 Feb 2025 16:12:16 +0800 +Subject: sctp: Fix undefined behavior in left shift operation + +From: Yu-Chun Lin + +[ Upstream commit 606572eb22c1786a3957d24307f5760bb058ca19 ] + +According to the C11 standard (ISO/IEC 9899:2011, 6.5.7): +"If E1 has a signed type and E1 x 2^E2 is not representable in the result +type, the behavior is undefined." + +Shifting 1 << 31 causes signed integer overflow, which leads to undefined +behavior. + +Fix this by explicitly using '1U << 31' to ensure the shift operates on +an unsigned type, avoiding undefined behavior. + +Signed-off-by: Yu-Chun Lin +Link: https://patch.msgid.link/20250218081217.3468369-1-eleanor15x@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Sasha Levin +--- + net/sctp/stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/net/sctp/stream.c b/net/sctp/stream.c +index ca8fdc9abca5f..08cd06078fab1 100644 +--- a/net/sctp/stream.c ++++ b/net/sctp/stream.c +@@ -736,7 +736,7 @@ struct sctp_chunk *sctp_process_strreset_tsnreq( + * value SHOULD be the smallest TSN not acknowledged by the + * receiver of the request plus 2^31. + */ +- init_tsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + (1 << 31); ++ init_tsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + (1U << 31); + sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL, + init_tsn, GFP_ATOMIC); + +-- +2.39.5 + diff --git a/queue-5.4/series b/queue-5.4/series index a9e6063c68..1946bacf1e 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -18,3 +18,20 @@ ipvs-prevent-integer-overflow-in-do_ip_vs_get_ctl.patch net_sched-prevent-creation-of-classes-with-tc_h_root.patch netfilter-nft_exthdr-fix-offset-with-ipv4_find_optio.patch net-mlx5e-prevent-bridge-link-show-failure-for-non-e.patch +nvme-fc-go-straight-to-connecting-state-when-initial.patch +hrtimers-mark-is_migration_base-with-__always_inline.patch +powercap-call-put_device-on-an-error-path-in-powerca.patch +iscsi_ibft-fix-ubsan-shift-out-of-bounds-warning-in-.patch +scsi-qla1280-fix-kernel-oops-when-debug-level-2.patch +acpi-resource-irq-override-for-eluktronics-mech-17.patch +hid-intel-ish-hid-fix-the-length-of-mng_sync_fw_cloc.patch +hid-ignore-non-functional-sensor-in-hp-5mp-camera.patch +s390-cio-fix-chpid-configure-attribute-caching.patch +asoc-rsnd-don-t-indicate-warning-on-rsnd_kctrl_accep.patch +nvmet-rdma-recheck-queue-state-is-live-in-state-lock.patch +sctp-fix-undefined-behavior-in-left-shift-operation.patch +nvme-only-allow-entering-live-from-connecting-state.patch +fuse-don-t-truncate-cached-mutated-symlink.patch +x86-irq-define-trace-events-conditionally.patch +drm-nouveau-do-not-override-forced-connector-status.patch +block-fix-kmem_cache-of-name-bio-108-already-exists.patch diff --git a/queue-5.4/x86-irq-define-trace-events-conditionally.patch b/queue-5.4/x86-irq-define-trace-events-conditionally.patch new file mode 100644 index 0000000000..6579c523dd --- /dev/null +++ b/queue-5.4/x86-irq-define-trace-events-conditionally.patch @@ -0,0 +1,48 @@ +From 01122d0627dbe95f3c5e0ae33196351c2397acfc Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 25 Feb 2025 22:32:33 +0100 +Subject: x86/irq: Define trace events conditionally + +From: Arnd Bergmann + +[ Upstream commit 9de7695925d5d2d2085681ba935857246eb2817d ] + +When both of X86_LOCAL_APIC and X86_THERMAL_VECTOR are disabled, +the irq tracing produces a W=1 build warning for the tracing +definitions: + + In file included from include/trace/trace_events.h:27, + from include/trace/define_trace.h:113, + from arch/x86/include/asm/trace/irq_vectors.h:383, + from arch/x86/kernel/irq.c:29: + include/trace/stages/init.h:2:23: error: 'str__irq_vectors__trace_system_name' defined but not used [-Werror=unused-const-variable=] + +Make the tracepoints conditional on the same symbosl that guard +their usage. + +Signed-off-by: Arnd Bergmann +Signed-off-by: Ingo Molnar +Link: https://lore.kernel.org/r/20250225213236.3141752-1-arnd@kernel.org +Signed-off-by: Sasha Levin +--- + arch/x86/kernel/irq.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c +index 7dfd0185767cc..76600d8f69376 100644 +--- a/arch/x86/kernel/irq.c ++++ b/arch/x86/kernel/irq.c +@@ -20,8 +20,10 @@ + #include + #include + ++#if defined(CONFIG_X86_LOCAL_APIC) || defined(CONFIG_X86_THERMAL_VECTOR) + #define CREATE_TRACE_POINTS + #include ++#endif + + DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); + EXPORT_PER_CPU_SYMBOL(irq_stat); +-- +2.39.5 +