summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
3 daysvirt: vmgenid: move to using dev_set/get_drvdataJason A. Donenfeld
The prior commit moved the order of initializing driver_data around. In looking through the tree at what is normally done, it appears that actually few drivers set or get driver_data directly, but instead go through the dev_set/get_drvdata helpers, which are simple inline helpers that amount to the same exact code. So, for the sake of consistency, use the helpers. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 daysdrm/verisilicon: remove ARGB formats from primary planeIcenowy Zheng
As the blending of the primary plane is currently explicitly disabled (and it's not possible on DC8000), remove the ARGB formats from the primary plane format tables. Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260910095000.3505878-2-zhengxingda@iscas.ac.cn
3 daysdrm/verisilicon: add primary modifier for format tablesIcenowy Zheng
Currently the format tables are only used for the primary plane. Add primary modifiers to names related to the tables. Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260910095000.3505878-1-zhengxingda@iscas.ac.cn
3 daysdrm/verisilicon: set blend mode for the cursor planeIcenowy Zheng
Blend mode properties are now required to expose pixel formats w/ alpha. Experiments show that the fixed blending mode for the cursor seems to be COVERAGE: - With a cursor plane filled with R=G=0, B=0xff, A=0x40, the cursor is visible on a pure-white background, which means the background is multiplied. - With a cursor plane filled with R=G=B=0xff, A=0x40, the cursor isn't pure white and non-white patterns can be see through, which means the cursor is multiplied. Add a fixed COVERAGE blend mode property for the cursor plane. Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260910094904.3502741-1-zhengxingda@iscas.ac.cn
3 daysMerge branches 'qcomtee_fix_for_v7.3', 'qcomtee_for_v7.4' and ↵Jens Wiklander
'tee_update_for_v7.4' into next
3 daysgpio: ad7768: Add AD7768 GPIO auxiliary driverJanani Sunil
The AD7768 provides five GPIOs controlled through registers shared with the parent IIO device. Register an auxiliary gpio-regmap driver and use the parent device for runtime PM. The device has separate input-state and output-latch registers. Add a reg_mask_xlate() callback that checks the line direction and reads the programmed output latch for output lines while retaining input-state reads for input lines. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Janani Sunil <janani.sunil@analog.com> Link: https://patch.msgid.link/20260910-ad7768-gpio-v8-3-6aaaa15adeb3@analog.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
3 daysgpio: regmap: Add optional runtime PM supportJanani Sunil
Some gpio-regmap consumers share their regmap with a parent device that may be runtime suspended. GPIO register accesses must resume that device first. Add an optional pm_dev field and acquire it before register translation or access. Release it using runtime autosuspend after each operation. Keep the device active across the complete direction-output sequence and propagate failure when setting the initial output value. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Reviewed-by: Michael Walle <mwalle@kernel.org> Signed-off-by: Janani Sunil <janani.sunil@analog.com> Reviewed-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260910-ad7768-gpio-v8-2-6aaaa15adeb3@analog.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
3 daysgpio: regmap: Use regmap_test_bits() for single bit readsJanani Sunil
Use regmap_test_bits() when reading a single GPIO value from a normal register and when reading the direction bit. Reviewed-by: Linus Walleij <linusw@kernel.org> Reviewed-by: Michael Walle <mwalle@kernel.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Janani Sunil <janani.sunil@analog.com> Link: https://patch.msgid.link/20260910-ad7768-gpio-v8-1-6aaaa15adeb3@analog.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
3 dayspinctrl: qcom: lpass-lpi: Include value in debugfs outputBjorn Andersson
As with other pinctrl providers, it's useful to be able to inspect the current GPIO state of the LPASS LPI pins during system integration and debugging. Extend the driver's debugfs logic to read the current value and include this in the printout. Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com> Link: https://patch.msgid.link/20260915-pinctrl-lpass-debug-v1-1-bc49766c9f6f@oss.qualcomm.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
3 dayswifi: mac80211: change public RX API to use link stationsBenjamin Berg
If a station is passed then the link ID also needs to be known. As such, it is a more natural API to simply pass the link station directly rather than pushing the link information into the RX status. Furthermore, having the link ID in the RX status is not actually correct because the link IDs are VIF specific and there may be multiple VIFs. In the case of a station this relationship is clear, but then one may as well use the link station. This patch only changes the API and emulates the old (incorrect) behaviour for now. The mac80211 RX code will be updated in later patches. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20260915151925.06f41565116a.I4a2d45609e94b52654b10ec572e59a45d09c41f4@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
3 dayswifi: iwlwifi: use link_sta internally to the driverBenjamin Berg
Using the link_sta is a natural way to pass both the STA and the link ID information at the same time. Use that internally to the driver in preparation to mac80211 changing its API and adopting the same method. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20260915151925.0b1269375e9e.I41df561f8129fac1327a07729cf4734b8752bcd6@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
3 daystee: qcomtee: Drop unused assignment of platform_device_id driver dataUwe Kleine-König (The Capable Hub)
The driver explicitly sets the .driver_data member of struct platform_device_id to zero without relying on that value. Drop this unused assignment. While touching this array unify spacing and usage of commas and use a named initializer for .name for improved readability. Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com> Reviewed-by: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com> Signed-off-by: Jens Wiklander <jens.wiklander@oss.qualcomm.com>
4 daysMerge branch 'i2c/i2c-fixes' into i2c/i2c-nextAndi Shyti
4 daysi2c: qcom-cci: fix device_node refcount leak in cci_probe()/cci_remove()Liu Zhenlong
The of_node_put() matching of_node_get() runs after i2c_del_adapter(), whose trailing memset() zeroes adap->dev and thus adap->dev.of_node, making the put a no-op and leaking the node on every adapter removal and error cleanup. Use a devm action: the pointer is captured at registration, out of reach of that memset(), and devres runs the put once on probe failure and detach, replacing the three manual of_node_put() calls. The setup loop uses the scoped iterator form so the child node is released automatically if devm_add_action_or_reset() fails mid-loop. Suggested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Fixes: 02a4a69667a2 ("i2c: qcom-cci: don't put a device tree node before i2c_add_adapter()") Assisted-by: Claude:claude-opus-5 Signed-off-by: Liu Zhenlong <dragonliu2018@gmail.com> Cc: <stable@vger.kernel.org> # v5.17+ Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260818175750.4205-1-dragonliu2018@gmail.com
4 daysMerge branch 'i2c/i2c-fixes' into i2c/i2c-nextAndi Shyti
4 daysi2c: qcom-geni: release DMA channels on probe errorShengzhuo Wei
geni_i2c_init() grabs exclusive GPI tx/rx DMA channels when the serial engine runs in GPI mode. If i2c_add_adapter() subsequently fails, probe returns without releasing the channels, because the remove callback is not invoked after a failed probe. The adapter-registration failure path used to release the channels via its err_dma label; that release was dropped when the probe tail was restructured into geni_i2c_init(). Release the channels on the adapter-registration failure path, mirroring geni_i2c_remove(). Fixes: d8d3bb127ad1 ("i2c: qcom-geni: Isolate serial engine setup") Assisted-by: GLM:5.3 Signed-off-by: Shengzhuo Wei <me@cherr.cc> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260827-i2c-dma-channel-leak-v1-3-271d4adc03a0@cherr.cc
4 daysi2c: imx: release DMA channels on probe errorShengzhuo Wei
i2c_imx_dma_request() acquires exclusive tx/rx DMA channels and is optional: on errors other than -EPROBE_DEFER the driver falls back to PIO mode and probe continues. If i2c_add_numbered_adapter() then fails, probe returns through clk_notifier_unregister without releasing the channels, because the remove callback is not invoked after a failed probe. Release the channels on the probe error path, mirroring i2c_imx_remove(). Fixes: ce1a78840ff7 ("i2c: imx: add DMA support for freescale i2c driver") Assisted-by: GLM:5.3 Signed-off-by: Shengzhuo Wei <me@cherr.cc> Cc: <stable@vger.kernel.org> # v3.19+ Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260827-i2c-dma-channel-leak-v1-2-271d4adc03a0@cherr.cc
4 daysi2c: at91: release DMA channels on remove and probe errorShengzhuo Wei
at91_twi_configure_dma() requests exclusive tx/rx DMA channels, but nothing ever releases them on driver detach, and the probe error path after the channels are acquired (i2c_add_numbered_adapter() failure) returns without releasing them either, because the remove callback is not invoked after a failed probe. Move the release into a helper, call it from the existing configure-failure path, the adapter-registration failure path, and at91_twi_remove(). Fixes: 60937b2cdbf9 ("i2c: at91: add dma support") Assisted-by: GLM:5.3 Signed-off-by: Shengzhuo Wei <me@cherr.cc> Cc: <stable@vger.kernel.org> # v3.8+ Acked-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260827-i2c-dma-channel-leak-v1-1-271d4adc03a0@cherr.cc
4 daysMerge fdo/drm/drm-fixes into drm-misc-fixesMaxime Ripard
Backmerging to get drm-misc-fixes up to v7.3-rc3. Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysRevert "thunderbolt: Add quirk to reset host interface on DMA path teardown ↵Mario Limonciello
for AMD USB4 routers" This commit has caused a deadlock at shutdown. A proper fix with another approach will be coming later. Revert commit f1de1fc5f632cdeae1f5c2984572ab710d4dfcaa for now. Reported-by: juan.martinez@amd.com Closes: https://lore.kernel.org/linux-usb/20260825214237.4179813-1-juan.martinez@amd.com/ Cc: Sanath S <Sanath.S@amd.com> Cc: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
4 daysMerge branch 'i2c/i2c-fixes' into i2c/i2c-nextAndi Shyti
4 daysdrm/crtc: Remove resetMaxime Ripard
All crtc drivers now implement the atomic_create_state hook instead of the reset hook for initial state creation. The reset hook conflated initial state allocation at probe time with hardware and software reset during suspend/resume, making error handling difficult since it is not fallible. Remove the reset hook from struct drm_crtc_funcs and the associated call in drm_mode_config_reset(). Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-11-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/atomic-helper: Remove __drm_atomic_helper_crtc_resetMaxime Ripard
All users of __drm_atomic_helper_crtc_reset() have been converted to use __drm_atomic_helper_crtc_state_init() and atomic_create_state. Remove the now unused helper. Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-10-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/atomic-helper: Remove drm_atomic_helper_crtc_resetMaxime Ripard
All users of drm_atomic_helper_crtc_reset() have been converted to drm_atomic_helper_crtc_create_state(). Remove the now unused helper. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-9-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/xen: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The xen crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-8-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/tve200: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The tve200 crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-7-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/repaper: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The repaper crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-6-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/pl111: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The pl111 crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-5-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/mcde: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The mcde crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-4-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/gm12u320: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The tilcdc crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-3-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/aspeed: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The aspeed crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-2-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/arcgpu: Switch to drm_atomic_helper_crtc_create_stateMaxime Ripard
The arcgpu crtc implementation uses the deprecated drm_atomic_helper_crtc_reset() as its reset hook. Switch to drm_atomic_helper_crtc_create_state() instead. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260915-drm-no-more-crtc-reset-v5-1-bda007735748@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
4 daysdrm/sched: Fix virtual runtime raceTvrtko Ursulin
Prevent pushing a new job to an entity seeing it being the first in the queue, and hence entering the drm_sched_rq_add_entity() path, if the pop side in drm_sched_entity_pop_job() has just de-queued the job but not yet updated the saved virtual time. Restoring the unsaved virtual time, which is at this point not a delta but still an absolute value, pushes the said entity to the rear of the run queue for a potentially very long time. We close this race by pulling the locked sections out to encompass both the queue push/pop and corresponding rbtree management. This is aligned with the future direction to replace the current lockless job queue with one of the fully locked standard list primitives. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Fixes: 2fa4d8e2c109 ("drm/sched: Add fair scheduling policy") Suggested-by: Luke.Wildhardt@proton.me # via Claude Opus Tested-by: Luke.Wildhardt@proton.me Cc: Christian König <christian.koenig@amd.com> Cc: Danilo Krummrich <dakr@kernel.org> Cc: Philipp Stanner <phasta@kernel.org> Cc: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Vitaly Prosyak <vitaly.prosyak@amd.com> Cc: stable@vger.kernel.org # v7.2+ [phasta: commit title] Signed-off-by: Philipp Stanner <phasta@kernel.org> Link: https://patch.msgid.link/20260915150557.62847-1-tvrtko.ursulin@igalia.com
4 daysi2c: ljca: drop redundant explicit adapter deletionFelix Gu
This driver uses devm_i2c_add_adapter(), so manual i2c_del_adapter() in remove() is unnecessary. Remove ljca_i2c_remove() along with the now unneeded auxiliary_setdrvdata(). Fixes: bfd3824c8808 ("i2c: Add support for Intel LJCA USB I2C driver") Signed-off-by: Felix Gu <ustc.gu@gmail.com> Cc: <stable@vger.kernel.org> # v6.7+ Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260905-ljca-v1-1-9109616ff1c6@gmail.com
4 daysMerge branch 'i2c/i2c-fixes' into i2c/i2c-nextAndi Shyti
4 daysi2c: atr: fix dangling adapter pointer on add failureLinkai Gong
i2c_atr_add_adapter() stores atr->adapter[chan_id] before i2c_add_adapter() so that the I2C bus notifier can match child clients during registration. On failure the channel is freed but the slot was left pointing at freed memory, which can lead to use-after-free in i2c_atr_del_adapter() / cleanup and also block reuse with -EEXIST. Clear the slot on the i2c_add_adapter() error path before freeing chan. Fixes: a076a860acae ("media: i2c: add I2C Address Translator (ATR) support") Signed-off-by: Linkai Gong <gonglinkai@kylinos.cn> Cc: <stable@vger.kernel.org> # v6.6+ Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260907071102.1080840-1-gonglinkai@kylinos.cn
4 daysMerge branch 'i2c/i2c-fixes' into i2c/i2c-nextAndi Shyti
4 daysi2c: imx: disable autosuspend on removeGuangshuo Li
i2c_imx_probe() enables runtime PM autosuspend with pm_runtime_use_autosuspend(). The probe error path correctly undoes this setting with pm_runtime_dont_use_autosuspend(), but the normal remove path only disables runtime PM. The runtime PM API requires pm_runtime_use_autosuspend() to be undone with pm_runtime_dont_use_autosuspend() at driver exit unless runtime PM was enabled with devm_pm_runtime_enable(). Leaving the autosuspend flag set therefore leaves the runtime PM state incompletely cleaned up after the driver is unbound. Add the missing pm_runtime_dont_use_autosuspend() call to the remove path. This issue was found by manual code inspection. Fixes: 588eb93ea49f ("i2c: imx: add runtime pm support to improve the performance") Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com> Cc: <stable@vger.kernel.org> # v4.5+ Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20260914091544.1667137-1-lgs201920130244@gmail.com
4 daysscsi: leapraid: Avoid -Wformat-security warningArnd Bergmann
When extra warnings are enabled, the alloc_ordered_workqueue() function cannot be called with a variable name for the format string: drivers/scsi/leapraid/leapraid_os.c: In function 'leapraid_probe': drivers/scsi/leapraid/leapraid_os.c:2062:58: error: format not a string literal and no format arguments [-Werror=format-security] 2062 | alloc_ordered_workqueue(adapter->fw_evt_s.fw_evt_name, 0); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ As the string is only assembled before the call and not used anywhere else, just fold the earlier snprintf() into the alloc_ordered_workqueue() call. Fixes: 5597088c9e79 ("scsi: leapraid: Add new SCSI driver") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Link: https://patch.msgid.link/20260915202134.3534708-1-arnd@kernel.org Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
4 daysscsi: devinfo: Add BLIST_SKIP_IO_HINTS for EMC SymmetrixEwan D. Milne
EMC Symmetrix returns an error on MODE SENSE for page 0Ah subpage 05h because it does not implement the SBC-5 I/O hints. These commands began to be sent as a result of commit 4f53138fffc2 ("scsi: sd: Translate data lifetime information"). Add BLIST_SKIP_IO_HINTS to avoid sending these commands because in large configurations the failed commands are displacing other useful information in internal error logs. Signed-off-by: Ewan D. Milne <emilne@redhat.com> Link: https://patch.msgid.link/20260915173800.39117-1-emilne@redhat.com Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
4 daysscsi: libiscsi_tcp: Check the data direction of a Data-In PDUYehyeong Lee
The Data-In branch of iscsi_tcp_hdr_dissect() resolves the ITT to a task and copies the PDU's data segment into that command's scatterlist without asking whether the command was reading. iscsi_tcp_r2t_rsp() in the same file does ask, and rejects an R2T for a command that is not DMA_TO_DEVICE. A target that answers a WRITE command's ITT with a Data-In therefore has the initiator write target-supplied bytes into the pages that write was about to send. Those are the caller's own pinned pages for an O_DIRECT write, and page cache pages for a buffered one. Observed against a test target that emits one 512-byte Data-In naming a 128 KB write's ITT, after the R2T for that write. With O_DIRECT the caller's buffer ends up holding 512 bytes of the target's data while pwrite() returns 131072. Buffered is quieter: pwrite() and fsync() both succeed, nothing is logged, and reading those blocks back returns the target's bytes out of the page cache without a command going on the wire. Check the direction before using the scatterlist, the way the R2T path already does. Cc: stable@vger.kernel.org Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr> Reviewed-by: Mike Christie <michael.christie@oracle.com> Link: https://patch.msgid.link/20260801133635.1986706-1-yhlee@isslab.korea.ac.kr Fixes: a081c13e39b5 ("[SCSI] iscsi_tcp: split module into lib and lld") Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
4 daysscsi: ufs: pltfrm: Add quirk for R-Car S4 lacking lanes-per-directionGeert Uytterhoeven
Since commit e72323f3b09f ("scsi: ufs: core: Configure only active lanes during link"), the following error is observed on R-Car S4: ufshcd-renesas e6860000.ufs: Tx lane mismatch [config,reported] [2,1] ufshcd-renesas e6860000.ufs: link startup failed -67 ufshcd-renesas e6860000.ufs: error -ENOLINK: Initialization failed with error -67 ufshcd-renesas e6860000.ufs: probe with driver ufshcd-renesas failed with error -67 R-Car S4 has one UFS lane per direction, as described in section 152.1 of its hardware manual. Without lanes-per-direction, the UFS platform driver defaults to two lanes. Previously, the core used PA_CONNECTEDRXDATALANES and PA_CONNECTEDTXDATALANES to configure the link without checking them against lanes-per-direction, so the missing property did not prevent initialization. While fixing the R-Car S4 DTS is the proper solution, doing only that would still break backwards compatibility with existing DTBs. Hence add a quirk to let lanes-per-direction default to one on R-Car S4. Fixes: e72323f3b09f9c89 ("scsi: ufs: core: Configure only active lanes during link") Reported-by: Koichiro Den <den@valinux.co.jp> Closes: https://lore.kernel.org/20260911073058.253000-1-den@valinux.co.jp Cc: stable@vger.kernel.org # 7.2+ Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://patch.msgid.link/ae0cc2bd764e6dfffce99db3d8b44a55887c508c.1789394185.git.geert+renesas@glider.be Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
4 daysscsi: ufs: core: Keep internal commands dispatchable during error handlingStanley Jhu
Commit 08b12cda6c44 ("scsi: ufs: core: Switch to scsi_get_internal_cmd()") switched UFS internal commands to allocate requests on hba->host->pseudo_sdev->request_queue, which shares the host tagset with regular LUNs. During error recovery, ufshcd_err_handling_prepare() calls blk_mq_quiesce_tagset(&hba->host->tag_set), marking all queues in the tagset as quiesced, including pseudo_sdev->request_queue. When ufshcd_verify_dev_init() subsequently issues internal commands (e.g. NOP OUT UPIU) via blk_execute_rq(), blk_mq_run_hw_queue() skips running the quiesced queue, resulting in an unrecoverable circular wait deadlock. Keep quiescing the tagset and unquiesce the pseudo SCSI device on top of that, so internal commands stay dispatchable while the logical units remain quiesced. Re-quiesce the pseudo device before unquiescing the tagset so that quiesce_depth stays balanced. Clock scaling and ufshcd_pause_command_processing() are unaffected: they keep quiescing the whole tagset, internal commands included. Fixes: 08b12cda6c44 ("scsi: ufs: core: Switch to scsi_get_internal_cmd()") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/all/6f78c4bd-a70b-402d-abfd-599091b67674@acm.org/ Signed-off-by: Stanley Jhu <stanleyjhu@google.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://patch.msgid.link/20260912131625.2301486-1-stanleyjhu@google.com Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
4 daysnet: stmmac: do not overwrite phc_index when no PTP clock is registeredLorenzo Bianconi
stmmac_get_ts_info() reports phc_index as 0 when hardware timestamping is supported but no PTP clock has been registered yet (e.g. while the interface is down). Zero is a valid PHC index and would make userspace resolve the wrong clock; the absence of a clock should be reported as -1. The ethtool core already initializes phc_index to -1 before invoking the get_ts_info callback (ethtool_init_tsinfo()), so just drop the erroneous assignment. Fixes: 9364fa7fcf12 ("net: stmmac: Remove setting of RX software timestamp") Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@oss.qualcomm.com> Reviewed-by: Gal Pressman <gal@nvidia.com> Link: https://patch.msgid.link/20260914-stmmac-fix-phc_index-v2-1-bf3d90373fe4@oss.qualcomm.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet: txgbe: free the fixed-rate clock on cleanupMyeonghun Pak
The fixed-rate clock is registered with clk_register_fixed_rate(), but its error and removal paths use clk_unregister(). That unregisters the clock without freeing the fixed-rate provider allocation. Use clk_unregister_fixed_rate() on lookup creation failure, later PHY initialization failure and removal to release the provider allocation as well. Keep the existing clock registration and lookup cleanup ordering. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Cc: stable+noautosel@kernel.org # untested fix to a driver init path Co-developed-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Myeonghun Pak <mhun512@gmail.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20260911155318.88857-1-mhun512@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet: mana: Use the HWC destination queues reported by the hardwareManish Awasthi
The hardware provides valid HWC destination vRQ and vRCQ IDs for all PFs and VFs. Use these IDs unconditionally in mana_hwc_send_request(), as the PF-specific gate is not required. Signed-off-by: Manish Awasthi <mawasthi@linux.microsoft.com> Reviewed-by: Long Li <longli@microsoft.com> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> Link: https://patch.msgid.link/20260910014427.54272-1-mawasthi@linux.microsoft.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet/qla3xxx: disable the PCI device on removeMyeonghun Pak
ql3xxx_probe() enables the PCI device and balances that reference on probe failure. However, ql3xxx_remove() releases the mappings and PCI regions without disabling the device, leaving the enable reference held after unbind. Add pci_disable_device() at the end of ql3xxx_remove() to balance the successful probe's pci_enable_device() call. Keep the existing manual cleanup and probe error handling unchanged. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Cc: stable+noautosel@kernel.org # untested fix to unlikely driver error path Co-developed-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Myeonghun Pak <mhun512@gmail.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20260913204534.53825-1-mhun512@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet: 8390: pcnet_cs: release PCMCIA window on setup_shmem_window() errorMyeonghun Pak
setup_shmem_window() acquires a PCMCIA memory window using pcmcia_request_window(). If pcmcia_map_mem_page() or the subsequent ioremap() fails, the function returns without releasing the requested window. pcnet_config() treats shared-memory setup failure as non-fatal and falls back to setup_dma_config(). Probe can therefore continue while socket window 3 and its reserved iomem range remain unnecessarily held for the rest of the bound lifetime of the device. pcmcia_disable_device() eventually releases the window during teardown. Route error paths after a successful request through a new release label that calls pcmcia_release_window(). Fold the existing buffer-verification cleanup into the same path, keeping iounmap() before the window release when a mapping exists. Leave the request failure path unchanged. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Cc: stable+noautosel@kernel.org # untested fix to unlikely driver error path Co-developed-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Myeonghun Pak <mhun512@gmail.com> Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Link: https://patch.msgid.link/20260913204104.53408-1-mhun512@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet: stmmac: fix TSO header length truncationLorenzo Bianconi
stmmac_tso_xmit() stores the protocol header length returned by stmmac_tso_header_size() in a u8. stmmac_tso_valid_packet() admits headers up to 1023 bytes, so a header longer than 255 bytes wraps modulo 256 (486 becomes 230, 256 becomes 0). A TCP over IPv6 socket carrying a few hundred bytes of sticky destination/hop-by-hop options makes skb_tcp_all_headers() exceed 255 while staying below the 1023-byte limit, so such an skb reaches stmmac_tso_xmit(). Widen proto_hdr_len to unsigned int, which is sufficient since the value is bounded by the hardware limit, and adjust the debug print specifier accordingly. Fixes: 9edfa7dab811 ("net: stmmac: enable TSO for IPv6") Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@oss.qualcomm.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/20260911-stmmac-fix-header-length-v1-1-8fc103334327@oss.qualcomm.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
4 daysnet: phy: realtek: improve firmware write speedJaven Xu
Firmware execution routine unconditionally uses phy_modify_mmd() for all OP_WRITE entries which introduces an unnecessary read transaction when updating an entire 16-bit register. So we optimize this by checking bitmask boundaries. Use phy_write_mmd() directly to speed up firmware loading process. Benchmark number from tracing MDC/MDIO hardware transactions during firmware loading process: - Unpatched: about 28,000 MDIO transactions - Patched: about 9,600 MDIO transactions This results in an approx 65% reduction in MDIO traffic. Signed-off-by: Javen Xu <javen_xu@realsil.com.cn> Reviewed-by: Nicolai Buchwitz <nb@tipi-net.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20260911094527.1928-1-javen_xu@realsil.com.cn Signed-off-by: Jakub Kicinski <kuba@kernel.org>