summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)AuthorFilesLines
2026-07-13iommufd/selftest: Avoid selftest dirty bitmap size wrapSamuel Moelius1-1/+4
IOMMU_TEST_OP_DIRTY sizes its temporary dirty bitmap from length / page_size. Very large selftest ranges can make the DIV_ROUND_UP() additions wrap before allocation, producing a zero-length allocation while the later test_bit() loop still walks the original number of bits. The selftest helper does not need to support unbounded dirty bitmap sizes. Reject requests that would allocate more than SZ_16M for the temporary buffer. Fixes: 79ea4a496ab5 ("iommufd/selftest: Fix buffer read overrrun in the dirty test") Link: https://patch.msgid.link/r/20260628152331.82122.408afd7b466c.iommufd-test-dirty-bitmap-size-wrap@trailofbits.com Assisted-by: Codex:gpt-5.5-cyber-preview Signed-off-by: Samuel Moelius <sam.moelius@trailofbits.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2026-07-13clk: r9a08g045: Add clocks and resets for CAN-FDClaudiu Beznea1-0/+9
Renesas RZ/G3S SoC has a CAN-FD IP. Add clocks and resets for it. Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Link: https://patch.msgid.link/20260709182332.876408-2-claudiu.beznea+renesas@tuxon.dev Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
2026-07-13RDMA/hfi1: Align probe error unwinding with device removalLeon Romanovsky1-29/+16
init_one() defers handling errors from hfi1_init() and hfi1_register_ib_device() to a combined block. This allows IB registration to run after device initialization has failed. Cleanup then depends on two unrelated error values. The late probe failure path also differs from the common teardown in remove_one(), even though both release the same initialized hardware and driver resources. Maintaining separate sequences obscures ownership and allows the paths to drift whenever initialization changes. Unwind at each failing stage and keep late probe teardown ordered like remove_one(), so partial initialization releases exactly the resources it owns and normal removal remains the reference cleanup flow. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-13-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Initialize debugfs after probe completesLeon Romanovsky1-4/+2
Commit ed6f653fe430 ("staging/rdma/hfi1: Fix debugfs access race") moved debugfs creation after device initialization and IB registration so users cannot access the files before the driver is ready. However, init_one() still creates them before character device creation and SDMA startup finish. Move hfi1_dbg_ibdev_init() to the end of the successful probe path, matching hfi1_dbg_ibdev_exit() as the first action in remove_one(). Fixes: ed6f653fe430 ("staging/rdma/hfi1: Fix debugfs access race") Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-12-b9e9641268a5@nvidia.com Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Defer device creation until probe succeedsLeon Romanovsky1-10/+7
init_one() creates the character device before checking whether generic or IB initialization failed, only to remove it immediately while unwinding. Moreover, user_add() already calls user_remove() when device creation fails. Move hfi1_device_create() after the initialization failure path, immediately before starting SDMA. The failure path then has no character device to remove, and hfi1_device_create() continues to unwind its own failures. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-11-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Stop flushing the global IB workqueueLeon Romanovsky1-4/+0
hfi1 does not queue work on ib_wq. QSFP and link work run on the per-port link_wq, while the remaining device work uses hfi1_wq or dedicated queues. The probe failure path destroys both per-port workqueues, and normal device removal flushes them in shutdown_device() before destroying them. Remove the flushes of the core-owned global workqueue. Waiting for unrelated core or other device work is not part of hfi1 teardown. Fixes: 71d47008ca1b ("IB/hfi1: Create workqueue for link events") Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-10-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Remove redundant NULL checks in create_workqueues()Leon Romanovsky1-33/+23
create_workqueues() is called only from init_one(), immediately after hfi1_alloc_devdata() returns a zero-initialized hfi1_devdata. As a result, the per-port hfi1_wq and link_wq pointers are always NULL on entry, and nothing modifies them between allocation and this call. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-9-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Allocate device data after PCI initializationLeon Romanovsky2-33/+29
After the preceding changes, module parameter validation and common PCI setup no longer need hfi1_devdata. init_one() nevertheless allocates it first, so failures in those early steps return without releasing it. Move the allocation after hfi1_pcie_init() and return directly when no resources are held. Use dev_err() and pci_info() for diagnostics emitted before allocation so they retain the adapter BDF. Once PCI setup succeeds, unwind allocation failures through hfi1_pcie_cleanup() to disable the device and release its regions. Some PCI error delivery paths are not serialized against probe. Keep their diagnostics based on pci_dev and skip resume while driver data is absent, preventing recovery from dereferencing a missing hfi1_devdata. Fixes: 57f97e96625f ("IB/hfi1: Get the hfi1_devdata structure as early as possible") Reported-by: Dawei Feng <dawei.feng@seu.edu.cn> Closes: https://lore.kernel.org/all/20260627060159.2543686-1-dawei.feng@seu.edu.cn/ Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-8-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Free RX data on late probe failureLeon Romanovsky1-0/+1
hfi1_init_dd() allocates the shared AIP/VNIC RX support before returning. If hfi1_init() or hfi1_register_ib_device() later fails, init_one() tears down the device data without calling hfi1_free_rx(). This leaks netdev_rx and its dummy netdev. Free the RX support after IB unregistration and before postinit_cleanup(), as done on normal device removal. Fixes: 4730f4a6c6b2 ("IB/hfi1: Activate the dummy netdev") Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-7-b9e9641268a5@nvidia.com Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Create workqueues before device initializationLeon Romanovsky3-14/+11
create_workqueues() only needs fields set up by hfi1_alloc_devdata(). Call it before hfi1_init_dd() so a workqueue allocation failure happens before chip resources are initialized. To keep the reordered error paths safe, make init_one() own hfi1_devdata. hfi1_init_dd() unwinds its partial setup but leaves the allocation for the caller to free. If device initialization fails, destroy the workqueues before freeing the device data. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-6-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Drop device data from hfi1_validate_rcvhdrcnt()Leon Romanovsky3-10/+11
hfi1_validate_rcvhdrcnt() only needs hfi1_devdata to identify the adapter in error messages. Requiring the full device data prevents module parameter validation from running before hfi1_devdata is allocated. Pass pci_dev instead and use dev_err(), allowing validation to move earlier without losing the PCI BDF needed on multi-device systems. Use %u for the unsigned count while changing the messages. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-5-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Pass PCI device to hfi1_pcie_init()Leon Romanovsky3-7/+9
hfi1_pcie_init() only needs hfi1_devdata to reach the PCI device. This unnecessary dependency prevents common PCI setup from running before hfi1_devdata is allocated. Pass pci_dev directly and report failures with dev_err(), preserving the device BDF needed to identify the failing adapter on multi-device systems. Use %pe while changing the messages so errno values are decoded. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-4-b9e9641268a5@nvidia.com Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Remove redundant PCI device ID validationLeon Romanovsky1-9/+0
The PCI core calls init_one() only after pci_match_device() has selected an ID. For normal probing, hfi1_pci_tbl already restricts matches to the two supported Intel device IDs. Dynamic IDs and driver_override are explicit requests to attempt binding, so the probe should not second-guess the PCI core's decision. Remove the redundant check. Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-3-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/hfi1: Preserve unit 0 on allocation failureLeon Romanovsky1-2/+3
hfi1_free_devdata() assumes that the device was inserted into the unit table and unconditionally erases dd->unit. If xa_alloc_irq() fails, the zero-initialized unit remains zero, so full cleanup can remove an unrelated device from index 0. Release only the rdmavt allocation and return immediately while the unit table has not acquired the device. Fixes: 03b92789e5cf ("hfi1: Convert hfi1_unit_table to XArray") Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-2-b9e9641268a5@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13RDMA/rvt: Return NULL after port allocation failureLeon Romanovsky1-1/+3
rvt_alloc_device() deallocates the IB device when its port array cannot be allocated but then returns the pointer to the released allocation. Callers treat any non-NULL value as valid and dereference it, resulting in a use-after-free. Return NULL immediately after deallocation so callers can propagate the allocation failure. Fixes: ff6acd69518e ("IB/rdmavt: Add device structure allocation") Link: https://patch.msgid.link/20260708-clean-init-one-hfi1-v1-1-b9e9641268a5@nvidia.com Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-13firewire: net: Fix fragmented datagram reassemblyRuoyu Wang1-17/+20
fwnet_frag_new() keeps a sorted list of received fragments for a partial datagram. When a new fragment is adjacent to an existing fragment, the code checks whether the new fragment also closes the gap to the next or previous list entry. Those neighbor lookups currently assume that the current fragment always has a real next or previous fragment. At a list edge, the next or previous entry is the list head, not a struct fwnet_fragment_info. The gap checks also compare against the old edge of the current fragment instead of the edge after adding the new fragment. As a result, a fragment that bridges two existing ranges may leave two adjacent ranges unmerged, so fwnet_pd_is_complete() can miss a complete datagram. Check for the list head before looking up the neighboring fragment, and compare the neighbor against the new fragment's far edge when deciding whether to merge all three ranges. This issue was found by a static analysis checker and confirmed by manual source review. Fixes: c76acec6d551 ("firewire: add IPv4 support") Signed-off-by: Ruoyu Wang <ruoyuw560@gmail.com> Link: https://lore.kernel.org/r/20260707150454.2265951-1-ruoyuw560@gmail.com Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2026-07-13mmc: rtsx_usb_sdmmc: suppress false CD after init timeoutSean Rhodes1-1/+12
Some Realtek USB SD readers with a tray keep raw SD_CD asserted when an empty tray is inserted. The MMC core then repeatedly tries to initialize non-existent media, sees command timeouts, calls ->get_cd() again, and starts the same detect cycle over. Do not qualify media by open-coding MMC commands in ->get_cd(). Instead, let the normal MMC rescan path probe the card. If an initialization command times out before a card has been attached, suppress the raw SD_CD signal so the host can settle and the USB parent can autosuspend. Clear the suppression only when raw SD_CD drops. On the affected tray reader, changing media requires removing and reinserting the tray, so a low CD transition is the signal that a new insertion attempt can be trusted again. Signed-off-by: Sean Rhodes <sean@starlabs.systems> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13misc: rtsx_usb: avoid USB I/O in runtime autosuspendSean Rhodes1-6/+20
The runtime autosuspend callback currently queries card status and clears OCP by issuing USB register accesses. This can run from the USB runtime-PM path itself, which is the wrong place to start more device I/O. Keep a cached copy of the card-status bits from normal status reads instead. During runtime autosuspend, use that cached value only to preserve the existing Memory Stick autosuspend deferral. Do not treat raw SD_CD as an autosuspend blocker, because tray-based SD readers can assert SD_CD with an empty tray. A real SD card is protected by the SD/MMC child runtime-PM usage once powered. Also stop clearing OCP from the runtime autosuspend callback, so the callback does not issue USB commands. Fixes: bb400d2120bd ("mfd: rtsx_usb: Defer autosuspend while card exists") Signed-off-by: Sean Rhodes <sean@starlabs.systems> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13firmware: arm_scmi: Simplify notification allocationsRosen Penev1-26/+17
Several SCMI notification data structures allocate a descriptor and then allocate a fixed-size array referenced by that descriptor. Use flexible array members for per-protocol registered events and per-event source refcounts so each descriptor and its array can be allocated together. Annotate the flexible arrays with __counted_by() and assign the count fields immediately after allocation, before any array access. The registered_protocols table has a fixed SCMI_MAX_PROTO size, so embed it directly in the notification instance instead of allocating it separately. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260630204719.334211-1-rosenp@gmail.com (sudeep.holla: Updated title and improved change description) Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
2026-07-13pmdomain: tegra: Add support for multi-socket platformsJon Hunter1-1/+8
On multi-socket platforms each socket has its own BPMP that is registered with the kernel. For such platforms prefix the NUMA ID for each socket to the BPMP powergate name to ensure there is a unique name for each power-domain. Note that we only add the NUMA ID for powergates that return a valid name because an invalid name indicates that the powergate ID is not supported. Note the check for the NULL string is moved into the function tegra_bpmp_powergate_get_name(), because in the multi-socket case we must only add the prefix if we receive a valid name. A NULL string indicates that there is no valid powergate associated with the ID that is being queried. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: bcm: bcm2835-power: Raise ASB poll timeout to 100usMaíra Canal1-1/+1
Commit 18605b1b936b ("pmdomain: bcm: bcm2835-power: Increase ASB control timeout") raised the ASB handshake polling budget from 1us to 5us. Surveying the pmdomain subsystem, 5us is still one of the smallest polling budgets by a wide margin. Comparable handshakes in other drivers use: - 100us : starfive jh71xx-pmu, apple pmgr-pwrstate - 1ms : renesas rcar-sysc, rmobile-sysc (power-on) - 10ms : renesas rcar-gen4-sysc, sunxi sun55i-pck600 - 1s : mediatek mtk-pm-domains, mtk-scpsys Raise the BCM2835 timeout to 100us, matching analogous drivers. 100us is still negligible relative to a power-domain transition and gives the V3D master ASB substantially more headroom to drain under heavy workloads, assuring us that the timeout is enough for any scenario. Signed-off-by: Maíra Canal <mcanal@igalia.com> Acked-by: Florian Fainelli <florian.fainelli@broadcom.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: mediatek: Add support for MT8196 HFRP DirectCTL domainsAngeloGioacchino Del Regno2-1/+32
Add support for the power domains provided by the HFRPSYS Power Controller of the MT8196 SoC. Those control power to the eDP and DP Transmitter IPs. Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: mediatek: Add support for Direct CTL simple power sequenceAngeloGioacchino Del Regno2-16/+82
Some new SoCs like MT8196, MT6991, and others, have got one additional power controller (usually in the HFRP Multimedia block) which needs a simplified power on/off sequence while using Direct Control strategy. Domains using the "simple power sequence" are not backed by the RTFF hardware, have no Bus Protection mechanism, lacks the ISO, PWR_ON, PWR_ON_2ND bits, and therefore get enabled automatically after getting out of reset. This simple power sequence is then a subset of the full one as only needs the enablement of the specific power domain's clock input and reset (where, again, after getting out of reset, the ISO and PWR_ON bits are automatically internally getting flipped) to enable or disable (power on or off). Moreover, the simple power sequence power domains guarantee that they always get enabled/disabled after executing the relevant power sequence (on/off) so, differently from the others, there is also no need to poll for a PWR_ACK. Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: mediatek: Respect PD relationships during error cleanupAngeloGioacchino Del Regno1-10/+33
In case any probe error occurs (usually, a probe deferral) the power domains shall be cleaned up while respecting their child to parent relationship, or the system may freeze. In order to do that without any memory footprint impacts after the fact, allocate a temporary array in the probe function and use it to store the indices of the added power domains in the correct order. This will be used in the error cleanup path and will be freed at the end regardless of the probe status as, when the probing succeeds, the genpd API takes care of unregistering all PDs in the correct order anyway. Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: Merge branch fixes into nextUlf Hansson1-7/+33
Merge the pmdomain fixes for v7.2-rc[n] into the next branch, to allow them to get tested together with the pmdomain changes that are targeted for the next release. Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: mediatek: Fix possible nullptr KP in HWV cleanup/on-checkAngeloGioacchino Del Regno1-7/+33
Should probe fail for HW_VOTER type power domains, this driver was unconditionally trying to perform cleanup for DIRECT_CTL domains, but only after checking if the target domain is powered on... with the DIRECT_CTL scpsys_domain_is_on() code again. And there's more: the scpsys_domain_is_on() function is also being unconditionally used in the probe path, for any power domain that has flag MTK_SCPD_KEEP_DEFAULT_OFF! This bug was never experienced by anyone because the HWV domains never failed probe, and because none of those is declared with the aforementioned flag - but it's still something critical. In order to fix this, add a check for MTCMOS Type and, based on that, call the correct functions for an "is on" check, and also do the same for the cleanup path, calling the correct functions for the "power off" action. For the latter, since there's a call to pm_genpd_remove() right before calling power_off, be cautious and add a variation of the power off functions (with a _internal suffix) for those to get a pointer to scpsys_domain instead of one to generic_pm_domain as, even if that's still working, this is way too much fragile and would break at some point. Fixes: 88914db077b6 ("pmdomain: mediatek: Add support for Hardware Voter power domains") Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13Merge branches 'for-next/scmi/fixes' and 'for-next/ffa/fixes'Sudeep Holla4-17/+33
* for-next/scmi/fixes: firmware: arm_scmi: Rate-limit queue-full warnings in IRQ context firmware: arm_scmi: Use 64-bit division for clock rate rounding firmware: arm_scmi: Grammar s/may needed/may be needed/ * for-next/ffa/fixes: firmware: arm_ffa: Fix NULL dereference in ffa_partition_info_get() firmware: arm_ffa: Respect firmware advertised RX/TX buffer size limits Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
2026-07-13pmdomain: qcom: rpmhpd: Skip retention by defaultMike Tipton1-5/+9
Retention is very rarely an operational corner. In the majority of cases, HW cannot operate properly at Retention levels and so the minimum operational level when enabling a rail is the first corner above Retention. A small subset of always-on use cases can operate at Retention, but those aren't controlled from HLOS. Currently, we allow Retention by default and only disallow it special cases. But this leaves us open to various failures when the PD is enabled without first being voted to an OPP above Retention. Such as when a child GDSC PD requests to enable its parent RPMh PD. In this case, the GDSC would get stuck powering on. Newer chips have started supporting Retention on rails that didn't previously (such as for MMCX). Instead of adding more special cases to skip Retention on MMCX, start skipping Retention by default since it's almost never desired from an HLOS perspective. Signed-off-by: Mike Tipton <mike.tipton@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: bcm: bcm2835: handle genpd provider registration errorsPengpeng Hou1-1/+6
bcm2835_power_probe() initializes all power domains and then registers the onecell genpd provider, but ignores of_genpd_add_provider_onecell() failures. Probe can therefore return success even though no provider was published. Check the provider registration return value and jump to the existing cleanup path on failure. Fixes: 670c672608a1 ("soc: bcm: bcm2835-pm: Add support for power domains under a new binding.") Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn> Reviewed-by: Stefan Wahren <wahrenst@gmx.net> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13pmdomain: arm: Grammar s/may needed/may be needed/Geert Uytterhoeven1-1/+1
Fix grammar in the help text for the ARM_SCMI_POWER_DOMAIN symbol. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Sudeep Holla <sudeep.holla@kernel.org> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
2026-07-13gpio: vf610: add missing MODULE_DEVICE_TABLE()Pengpeng Hou1-0/+1
The driver has an OF match table wired to .of_match_table, but does not export the table with MODULE_DEVICE_TABLE(). Add the missing MODULE_DEVICE_TABLE(of, ...) entry so module alias information is generated for OF based module autoloading. This is a source-level fix. It does not claim dynamic hardware reproduction; the evidence is the driver-owned match table, its use by the platform driver, and the missing module alias publication. Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn> Reviewed-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260704122123.73004-1-pengpeng@iscas.ac.cn Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
2026-07-13USB: serial: ftdi_sio: add support for E+H FXA291Tim Pambor2-0/+7
The Commubox FXA291 by Endress+Hauser AG is a USB serial converter based on FT232B which is used to communicate with field devices. It enumerates using the FTDI vendor ID and a custom PID. usb 1-9: New USB device found, idVendor=0403, idProduct=e510, bcdDevice= 4.00 usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-9: Product: FXA291 usb 1-9: Manufacturer: Endress+Hauser usb 1-9: SerialNumber: 00000000 ftdi_sio 1-9:1.0: FTDI USB Serial Device converter detected usb 1-9: Detected FT232B usb 1-9: FTDI USB Serial Device converter now attached to ttyUSB0 Signed-off-by: Tim Pambor <timpambor@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: keyspan_pda: fix data loss on receive throttlingJohan Hovold1-9/+35
Killing the interrupt-in urb when the line disciple requests throttling may lead to data loss if an ongoing transfer is cancelled. Instead set a flag to prevent the completion handler from resubmitting the urb until the port is unthrottled. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: stable@vger.kernel.org Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13Merge v7.2-rc3 into drm-misc-fixesMaarten Lankhorst1769-3262/+3782
Forward from rc1 to rc3 to track upstream closer again. Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
2026-07-13USB: serial: keyspan_pda: drop unused driver data usb-serial pointerJohan Hovold1-1/+0
The driver data usb-serial pointer is unused since commit 66c32e483355 ("USB: serial: keyspan_pda: drop redundant usb-serial pointer"), which apparently failed to remove the pointer as intended. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: metro-usb: drop redundant initialisationsJohan Hovold1-3/+3
Three functions are initialising their return value variables at declaration only to later assign them unconditionally. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: metro-usb: fix unthrottle raceJohan Hovold1-8/+17
If the completion handler races with unthrottle() both functions may try to resubmit the same interrupt-in urb, but at most one will succeed. Fix the unthrottle logic using a throttle-requested flag so that only one attempt to resubmit the urb is made to avoid logging an error. Fixes: 43d186fe992d ("USB: serial: add metro-usb driver to the tree") Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: metro-usb: replace unnecessary atomic allocationJohan Hovold1-1/+1
The unthrottle callback is allowed to sleep so pass the correct GFP flag to usb_submit_urb() to avoid unnecessary atomic allocations. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: fix oob port dev_printk()Johan Hovold1-6/+7
The OOB port is not registered with driver core and does not have a name. Use the USB interface with dev_printk() that may involve the OOB port to avoid log entries with no driver and a "null" device name. Fixes: f9dfbebb8b39 ("USB: serial: digi_acceleport.c: remove dbg() usage") Fixes: 194343d9364e ("USB: remove use of err() in drivers/usb/serial") Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13IB/mlx4: delete allocated id_map_entry while sending REJPraveen Kumar Kannoju1-3/+10
The mlx4 CM paravirtualization layer rewrites a VF's local communication ID to a PF-visible ID when CM MADs are sent from the VF. For messages that start or advance a connection from the VF side, such as REQ, REP, MRA and SIDR_REQ, mlx4_ib_multiplex_cm_handler() allocates an id_map_entry when no existing mapping is found. A REJ is different because it is a terminal response to an already known exchange. It should either find an existing id_map_entry, rewrite the local communication ID, and schedule that entry for deletion, or it should pass through unchanged when no mapping exists. Some REJ messages, such as rejects for an inbound REQ before an MRA or REP was sent, do not have an id_map_entry because their local_comm_id is zero. Timeout REJ messages are handled in the initial lookup branch, but a lookup miss there must not fall through to id_map_alloc(); such a miss means there is no existing mapping to translate or delete for the REJ. Commit 227a0e142e37 ("IB/mlx4: Add support for REJ due to timeout") added the timeout REJ case to the initial branch so an outgoing timeout REJ could reuse the id_map_entry that was created when the VF's REQ was multiplexed. Reusing that entry is the useful part: it rewrites the timeout REJ local_comm_id to the same PF-visible ID that was sent in the REQ. If the lookup misses, allocating a new id_map_entry does not help because the peer has never seen that new PF-visible ID, and REJ is not starting a new exchange. Keep timeout REJ handling in the initial lookup branch, but return before allocation if no mapping is found. Handle the other REJ cases with the same lookup-only behavior. When a mapping is found, translate the local communication ID and schedule delayed deletion, as is already done for DREQ and for received REJ in the demux path. When no mapping is found, keep the existing pass-through behavior. Signed-off-by: Praveen Kumar Kannoju <praveen.kannoju@oracle.com> Link: https://patch.msgid.link/20260615171759.557425-1-praveen.kannoju@oracle.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-13accel/ivpu: Fix wrong register read in LNL failure diagnosticsKarol Wachowski1-1/+1
diagnose_failure_lnl() read VPU_HW_BTRS_MTL_INTERRUPT_STAT instead of VPU_HW_BTRS_LNL_INTERRUPT_STAT, which on LNL and newer parts is a different register with a different bit layout, so failure diagnostics decoded the wrong register and reported a bogus error cause. Read the LNL interrupt status register instead. Fixes: 8a27ad81f7d3 ("accel/ivpu: Split IP and buttress code") Reviewed-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com> Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com> Link: https://patch.msgid.link/20260710101331.1899505-1-karol.wachowski@linux.intel.com
2026-07-13USB: serial: digi_acceleport: clean up inb command submissionJohan Hovold1-4/+3
Clean up the inb command handling a bit by removing an unnecessary line break and moving the assignment operator before breaking another long expression. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: clean up write completionJohan Hovold1-9/+8
Clean up the write completion handler by adding a temporary variable for the transfer buffer and using the pre-existing urb pointer while dropping some redundant casts. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: clean up xfer buf length expressionJohan Hovold1-4/+4
Add the missing space around operators in transfer-buffer length expressions to make the code more readable. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: drop unused in-buf defineJohan Hovold1-4/+0
Drop the in-buf size define which has not been used since the port buffers were removed by commit 5fea2a4dabdf ("USB: digi_acceleport further buffer clean up"). Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: stop OOB I/O when not in useJohan Hovold1-49/+51
The driver submits the OOB read urb on first open of a port and does not stop it until the device is disconnected. Add an open counter and submit the urb on first open and stop it on last close to avoid wasting resources (e.g. power) when the device is not in use. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: drop redundant driver data sanity checksJohan Hovold1-36/+4
The urb context pointer does not change while an urb is in flight so there is never a need to check for NULL on completion. The port driver data is not freed until the port is unbound at which point all I/O for that port has been stopped (and I/O is no longer started for a port that has not yet been probed). The device driver data is not freed until after the driver has been unbound and at which point all I/O has also ceased. Drop the redundant, overly defensive (and still incomplete) sanity checks from the completion callbacks. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: clean up declarations and whitespaceJohan Hovold1-59/+29
Clean up the driver by moving some declarations to approximate reverse xmas style and removing some stray newlines (and adding a few for readability). While at it, also replace two spaces before tabs in the driver structs. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: add oob port helperJohan Hovold1-2/+9
Add a helper function for retrieving the OOB port to replace two convoluted expressions. Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-13USB: serial: digi_acceleport: always stop write urb on closeJohan Hovold1-6/+2
Explicitly stop the write urb on close() also if the device is being unbound instead of relying on core to do it after returning. Note that the dp_write_urb_in_use flag is cleared by the completion handler. Signed-off-by: Johan Hovold <johan@kernel.org>