]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop 14 patches based on RC review feedback
authorSasha Levin <sashal@kernel.org>
Tue, 21 Jul 2026 12:01:30 +0000 (08:01 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 21 Jul 2026 12:06:57 +0000 (08:06 -0400)
Dropped patches:

- "rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`"
  Queues: 7.1
  Reason: maintainer (Gary Guo) drop request -- lint-only fix already worked
  around by all in-tree 7.1 users; not worth the 8-patch dependency chain
  Report: https://lore.kernel.org/stable/DK3HV8BJG6G6.1URBMSOVVLT7@garyguo.net/

- "rust: pin-init: internal: remove redundant `pin` filtering"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: turn PhantomPinned error into a warning"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: remove collect_tuple polyfill"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: pin_data: use closure for handling"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: pin_data: add struct to record"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: init: handle code blocks early"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: use marker on drop guard type for pinned fields"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "rust: pin-init: internal: project slots instead of references"  [dependency]
  Queues: 7.1
  Reason: depends on dropped patch above (Stable-dep-of: 5423ef9d4db8)

- "dt-bindings: vendor-prefixes: add Gira"
  Queues: 7.1, 6.18, 6.12
  Reason: author (Lucas Stach) challenge -- vendor prefix for a board that is
  not upstream; documentation-only, no in-tree user, not a bug fix
  Report: https://lore.kernel.org/stable/811630842892a53858bb6c6504d31fa9cca0fd4c.camel@pengutronix.de/

- "net: ethernet: oa_tc6: Interrupt is active low, level triggered."
  Queues: 7.1, 6.18, 6.12
  Reason: author (Selvamani Rajagopal) hold request -- threaded-IRQ rework
  exposed a race/skb leak; fix series still under review upstream, requeue
  once it lands
  Report: https://lore.kernel.org/stable/DM5PR02MB3369AD2C28DE0ADB1A57326A83C32@DM5PR02MB3369.namprd02.prod.outlook.com/

- "scsi: advansys: Drop ISA_DMA_API remnants"
  Queues: 7.1, 6.18, 6.12, 6.6, 5.15
  Reason: author (Arnd Bergmann) drop request -- only a cleanup, not a bugfix
  Report: https://lore.kernel.org/stable/11842725-e747-4502-953c-996bb8d24da8@app.fastmail.com/

- "scsi: BusLogic: Remove bus_to_virt()"  [dependency]
  Queues: 5.15
  Reason: depends on dropped patch above (Stable-dep-of: c7233b3d99db)

- "scsi: Add HAS_IOPORT dependencies"  [dependency]
  Queues: 5.15
  Reason: depends on dropped patch above (Stable-dep-of: c7233b3d99db)

Signed-off-by: Sasha Levin <sashal@kernel.org>
27 files changed:
queue-5.15/scsi-add-has_ioport-dependencies.patch [deleted file]
queue-5.15/scsi-advansys-drop-isa_dma_api-remnants.patch [deleted file]
queue-5.15/scsi-buslogic-remove-bus_to_virt.patch [deleted file]
queue-5.15/series
queue-6.12/dt-bindings-vendor-prefixes-add-gira.patch [deleted file]
queue-6.12/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch [deleted file]
queue-6.12/scsi-advansys-drop-isa_dma_api-remnants.patch [deleted file]
queue-6.12/series
queue-6.18/dt-bindings-vendor-prefixes-add-gira.patch [deleted file]
queue-6.18/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch [deleted file]
queue-6.18/scsi-advansys-drop-isa_dma_api-remnants.patch [deleted file]
queue-6.18/series
queue-6.6/scsi-advansys-drop-isa_dma_api-remnants.patch [deleted file]
queue-6.6/series
queue-7.1/dt-bindings-vendor-prefixes-add-gira.patch [deleted file]
queue-7.1/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch [deleted file]
queue-7.1/rust-pin-init-internal-init-handle-code-blocks-early.patch [deleted file]
queue-7.1/rust-pin-init-internal-pin_data-add-struct-to-record.patch [deleted file]
queue-7.1/rust-pin-init-internal-pin_data-use-closure-for-hand.patch [deleted file]
queue-7.1/rust-pin-init-internal-project-slots-instead-of-refe.patch [deleted file]
queue-7.1/rust-pin-init-internal-remove-collect_tuple-polyfill.patch [deleted file]
queue-7.1/rust-pin-init-internal-remove-redundant-pin-filterin.patch [deleted file]
queue-7.1/rust-pin-init-internal-suppress-non_snake_case-lint-.patch [deleted file]
queue-7.1/rust-pin-init-internal-turn-phantompinned-error-into.patch [deleted file]
queue-7.1/rust-pin-init-internal-use-marker-on-drop-guard-type.patch [deleted file]
queue-7.1/scsi-advansys-drop-isa_dma_api-remnants.patch [deleted file]
queue-7.1/series

diff --git a/queue-5.15/scsi-add-has_ioport-dependencies.patch b/queue-5.15/scsi-add-has_ioport-dependencies.patch
deleted file mode 100644 (file)
index 2763643..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-From 9d692039052888f578de162360a1196fa4cec411 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 22 May 2023 12:50:36 +0200
-Subject: scsi: Add HAS_IOPORT dependencies
-
-From: Niklas Schnelle <schnelle@linux.ibm.com>
-
-[ Upstream commit b58b2ba351b07f546a8c1fb4eb46303231c24e95 ]
-
-In a future patch HAS_IOPORT=n will result in inb()/outb() and friends not
-being declared. We thus need to add HAS_IOPORT as dependency for those
-drivers using them.
-
-Co-developed-by: Arnd Bergmann <arnd@kernel.org>
-Signed-off-by: Arnd Bergmann <arnd@kernel.org>
-Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
-Link: https://lore.kernel.org/r/20230522105049.1467313-32-schnelle@linux.ibm.com
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Stable-dep-of: c7233b3d99db ("scsi: advansys: Drop ISA_DMA_API remnants")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig                   | 25 +++++++++++++------------
- drivers/scsi/aic7xxx/Kconfig.aic79xx   |  2 +-
- drivers/scsi/aic7xxx/Kconfig.aic7xxx   |  2 +-
- drivers/scsi/aic94xx/Kconfig           |  2 +-
- drivers/scsi/megaraid/Kconfig.megaraid |  6 +++---
- drivers/scsi/mvsas/Kconfig             |  2 +-
- drivers/scsi/pcmcia/Kconfig            |  6 +++++-
- drivers/scsi/qla2xxx/Kconfig           |  2 +-
- 8 files changed, 26 insertions(+), 21 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 743a72b7421eba..00354c005aeb6b 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -333,7 +333,7 @@ config SGIWD93_SCSI
- config BLK_DEV_3W_XXXX_RAID
-       tristate "3ware 5/6/7/8xxx ATA-RAID support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-         3ware is the only hardware ATA-Raid product in Linux to date.
-         This card is 2,4, or 8 channel master mode support only.
-@@ -380,7 +380,7 @@ config SCSI_3W_SAS
- config SCSI_ACARD
-       tristate "ACARD SCSI support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-         This driver supports the ACARD SCSI host adapter.
-         Support Chip <ATP870 ATP876 ATP880 ATP885>
-@@ -472,7 +472,7 @@ config SCSI_DPT_I2O
- config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
--      depends on ISA || EISA || PCI
-+      depends on (ISA || EISA || PCI) && HAS_IOPORT
-       depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-@@ -514,7 +514,7 @@ config SCSI_HPTIOP
- config SCSI_BUSLOGIC
-       tristate "BusLogic SCSI support"
--      depends on PCI && SCSI
-+      depends on SCSI && PCI && HAS_IOPORT
-       help
-         This is support for BusLogic MultiMaster and FlashPoint SCSI Host
-         Adapters. Consult the SCSI-HOWTO, available from
-@@ -529,7 +529,7 @@ config SCSI_BUSLOGIC
- config SCSI_FLASHPOINT
-       bool "FlashPoint support"
--      depends on SCSI_BUSLOGIC && PCI
-+      depends on SCSI_BUSLOGIC && PCI && HAS_IOPORT
-       help
-         This option allows you to add FlashPoint support to the
-         BusLogic SCSI driver. The FlashPoint SCCB Manager code is
-@@ -643,7 +643,7 @@ config SCSI_SNIC_DEBUG_FS
- config SCSI_DMX3191D
-       tristate "DMX3191D SCSI support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       select SCSI_SPI_ATTRS
-       help
-         This is support for Domex DMX3191D SCSI Host Adapters.
-@@ -657,7 +657,7 @@ config SCSI_FDOMAIN
- config SCSI_FDOMAIN_PCI
-       tristate "Future Domain TMC-3260/AHA-2920A PCI SCSI support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       select SCSI_FDOMAIN
-       help
-         This is support for Future Domain's PCI SCSI host adapters (TMC-3260)
-@@ -710,7 +710,7 @@ config SCSI_GENERIC_NCR5380
- config SCSI_IPS
-       tristate "IBM ServeRAID support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-         This is support for the IBM ServeRAID hardware RAID controllers.
-         See <http://www.developer.ibm.com/welcome/netfinity/serveraid.html>
-@@ -770,7 +770,7 @@ config SCSI_IBMVFC_TRACE
- config SCSI_INITIO
-       tristate "Initio 9100U(W) support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-         This is support for the Initio 91XXU(W) SCSI host adapter.  Please
-         read the SCSI-HOWTO, available from
-@@ -781,7 +781,7 @@ config SCSI_INITIO
- config SCSI_INIA100
-       tristate "Initio INI-A100U2W support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-         This is support for the Initio INI-A100U2W SCSI host adapter.
-         Please read the SCSI-HOWTO, available from
-@@ -793,6 +793,7 @@ config SCSI_INIA100
- config SCSI_PPA
-       tristate "IOMEGA parallel port (ppa - older drives)"
-       depends on SCSI && PARPORT_PC
-+      depends on HAS_IOPORT
-       help
-         This driver supports older versions of IOMEGA's parallel port ZIP
-         drive (a 100 MB removable media device).
-@@ -1187,7 +1188,7 @@ config SCSI_SIM710
- config SCSI_DC395x
-       tristate "Tekram DC395(U/UW/F) and DC315(U) SCSI support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       select SCSI_SPI_ATTRS
-       help
-         This driver supports PCI SCSI host adapters based on the ASIC
-@@ -1219,7 +1220,7 @@ config SCSI_AM53C974
- config SCSI_NSP32
-       tristate "Workbit NinjaSCSI-32Bi/UDE support"
--      depends on PCI && SCSI && !64BIT
-+      depends on PCI && SCSI && !64BIT && HAS_IOPORT
-       help
-         This is support for the Workbit NinjaSCSI-32Bi/UDE PCI/Cardbus
-         SCSI host adapter. Please read the SCSI-HOWTO, available from
-diff --git a/drivers/scsi/aic7xxx/Kconfig.aic79xx b/drivers/scsi/aic7xxx/Kconfig.aic79xx
-index a47dbd500e9a5a..4bc53eec4c83f7 100644
---- a/drivers/scsi/aic7xxx/Kconfig.aic79xx
-+++ b/drivers/scsi/aic7xxx/Kconfig.aic79xx
-@@ -5,7 +5,7 @@
- #
- config SCSI_AIC79XX
-       tristate "Adaptec AIC79xx U320 support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       select SCSI_SPI_ATTRS
-       help
-       This driver supports all of Adaptec's Ultra 320 PCI-X
-diff --git a/drivers/scsi/aic7xxx/Kconfig.aic7xxx b/drivers/scsi/aic7xxx/Kconfig.aic7xxx
-index 0cfd92ce750af5..f0425145a5f4d8 100644
---- a/drivers/scsi/aic7xxx/Kconfig.aic7xxx
-+++ b/drivers/scsi/aic7xxx/Kconfig.aic7xxx
-@@ -5,7 +5,7 @@
- #
- config SCSI_AIC7XXX
-       tristate "Adaptec AIC7xxx Fast -> U160 support"
--      depends on (PCI || EISA) && SCSI
-+      depends on (PCI || EISA) && HAS_IOPORT && SCSI
-       select SCSI_SPI_ATTRS
-       help
-       This driver supports all of Adaptec's Fast through Ultra 160 PCI
-diff --git a/drivers/scsi/aic94xx/Kconfig b/drivers/scsi/aic94xx/Kconfig
-index 71931c371b1cff..aaa8dadc6e1cd0 100644
---- a/drivers/scsi/aic94xx/Kconfig
-+++ b/drivers/scsi/aic94xx/Kconfig
-@@ -8,7 +8,7 @@
- config SCSI_AIC94XX
-       tristate "Adaptec AIC94xx SAS/SATA support"
--      depends on PCI
-+      depends on PCI && HAS_IOPORT
-       select SCSI_SAS_LIBSAS
-       select FW_LOADER
-       help
-diff --git a/drivers/scsi/megaraid/Kconfig.megaraid b/drivers/scsi/megaraid/Kconfig.megaraid
-index 2adc2afd9f91c9..3f2ce1eb081c4e 100644
---- a/drivers/scsi/megaraid/Kconfig.megaraid
-+++ b/drivers/scsi/megaraid/Kconfig.megaraid
-@@ -1,13 +1,13 @@
- # SPDX-License-Identifier: GPL-2.0-only
- config MEGARAID_NEWGEN
-       bool "LSI Logic New Generation RAID Device Drivers"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-       LSI Logic RAID Device Drivers
- config MEGARAID_MM
-       tristate "LSI Logic Management Module (New Driver)"
--      depends on PCI && SCSI && MEGARAID_NEWGEN
-+      depends on PCI && HAS_IOPORT && SCSI && MEGARAID_NEWGEN
-       help
-       Management Module provides ioctl, sysfs support for LSI Logic
-       RAID controllers.
-@@ -67,7 +67,7 @@ config MEGARAID_MAILBOX
- config MEGARAID_LEGACY
-       tristate "LSI Logic Legacy MegaRAID Driver"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       help
-       This driver supports the LSI MegaRAID 418, 428, 438, 466, 762, 490
-       and 467 SCSI host adapters. This driver also support the all U320
-diff --git a/drivers/scsi/mvsas/Kconfig b/drivers/scsi/mvsas/Kconfig
-index 79812b80743b9a..5ac7fd593b17e5 100644
---- a/drivers/scsi/mvsas/Kconfig
-+++ b/drivers/scsi/mvsas/Kconfig
-@@ -9,7 +9,7 @@
- config SCSI_MVSAS
-       tristate "Marvell 88SE64XX/88SE94XX SAS/SATA support"
--      depends on PCI
-+      depends on PCI && HAS_IOPORT
-       select SCSI_SAS_LIBSAS
-       select FW_LOADER
-       help
-diff --git a/drivers/scsi/pcmcia/Kconfig b/drivers/scsi/pcmcia/Kconfig
-index 9696b6b5591f26..449bd85db7bb40 100644
---- a/drivers/scsi/pcmcia/Kconfig
-+++ b/drivers/scsi/pcmcia/Kconfig
-@@ -12,6 +12,7 @@ if SCSI_LOWLEVEL_PCMCIA && SCSI && PCMCIA && m
- config PCMCIA_AHA152X
-       tristate "Adaptec AHA152X PCMCIA support"
-+      depends on HAS_IOPORT
-       select SCSI_SPI_ATTRS
-       help
-         Say Y here if you intend to attach this type of PCMCIA SCSI host
-@@ -22,6 +23,7 @@ config PCMCIA_AHA152X
- config PCMCIA_FDOMAIN
-       tristate "Future Domain PCMCIA support"
-+      depends on HAS_IOPORT
-       select SCSI_FDOMAIN
-       help
-         Say Y here if you intend to attach this type of PCMCIA SCSI host
-@@ -32,7 +34,7 @@ config PCMCIA_FDOMAIN
- config PCMCIA_NINJA_SCSI
-       tristate "NinjaSCSI-3 / NinjaSCSI-32Bi (16bit) PCMCIA support"
--      depends on !64BIT || COMPILE_TEST
-+      depends on (!64BIT || COMPILE_TEST) && HAS_IOPORT
-       help
-         If you intend to attach this type of PCMCIA SCSI host adapter to
-         your computer, say Y here and read
-@@ -66,6 +68,7 @@ config PCMCIA_NINJA_SCSI
- config PCMCIA_QLOGIC
-       tristate "Qlogic PCMCIA support"
-+      depends on HAS_IOPORT
-       help
-         Say Y here if you intend to attach this type of PCMCIA SCSI host
-         adapter to your computer.
-@@ -75,6 +78,7 @@ config PCMCIA_QLOGIC
- config PCMCIA_SYM53C500
-       tristate "Symbios 53c500 PCMCIA support"
-+      depends on HAS_IOPORT
-       help
-         Say Y here if you have a New Media Bus Toaster or other PCMCIA
-         SCSI adapter based on the Symbios 53c500 controller.
-diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
-index 802c373fd6d92a..a584708d3056f5 100644
---- a/drivers/scsi/qla2xxx/Kconfig
-+++ b/drivers/scsi/qla2xxx/Kconfig
-@@ -1,7 +1,7 @@
- # SPDX-License-Identifier: GPL-2.0-only
- config SCSI_QLA_FC
-       tristate "QLogic QLA2XXX Fibre Channel Support"
--      depends on PCI && SCSI
-+      depends on PCI && HAS_IOPORT && SCSI
-       depends on SCSI_FC_ATTRS
-       depends on NVME_FC || !NVME_FC
-       select FW_LOADER
--- 
-2.53.0
-
diff --git a/queue-5.15/scsi-advansys-drop-isa_dma_api-remnants.patch b/queue-5.15/scsi-advansys-drop-isa_dma_api-remnants.patch
deleted file mode 100644 (file)
index cbccd58..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 07e08d5ed66edfe01f469985eb2a0967f8331982 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Apr 2026 17:15:37 +0200
-Subject: scsi: advansys: Drop ISA_DMA_API remnants
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit c7233b3d99db9760daf07c4e95daa9675c6c0cba ]
-
-Support for ISA bus mastering was removed a few years ago, and the VLB
-mode does not use the ISA DMA API, so drop the dependency and the header
-inclusion.
-
-Fixes: 9b4c8eaa68d0 ("advansys: remove ISA support")
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
-Link: https://patch.msgid.link/20260429151623.3899875-1-arnd@kernel.org
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig    | 1 -
- drivers/scsi/advansys.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 00354c005aeb6b..52a3252b2569be 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -473,7 +473,6 @@ config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
-       depends on (ISA || EISA || PCI) && HAS_IOPORT
--      depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-         AdvanSys. It is documented in the kernel source in
-diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
-index 97be0765cb9bd0..d9d4aec5b89c02 100644
---- a/drivers/scsi/advansys.c
-+++ b/drivers/scsi/advansys.c
-@@ -36,7 +36,6 @@
- #include <linux/dmapool.h>
- #include <asm/io.h>
--#include <asm/dma.h>
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
--- 
-2.53.0
-
diff --git a/queue-5.15/scsi-buslogic-remove-bus_to_virt.patch b/queue-5.15/scsi-buslogic-remove-bus_to_virt.patch
deleted file mode 100644 (file)
index 33d4779..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-From fec5e921ef8867f970d7afa92ce73f7e53a74b6e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 24 Jun 2022 17:52:24 +0200
-Subject: scsi: BusLogic: Remove bus_to_virt()
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit 9f7c2232e131b1de2ee4abadfce5d8f010e223c6 ]
-
-The BusLogic driver is the last remaining driver that relies on the
-deprecated bus_to_virt() function, which in turn only works on a few
-architectures, and is incompatible with both swiotlb and iommu support.
-
-Before commit 391e2f25601e ("[SCSI] BusLogic: Port driver to 64-bit."), the
-driver had a dependency on x86-32, presumably because of this
-problem. However, the change introduced another bug that made it still
-impossible to use the driver on any 64-bit machine.
-
-This was in turn fixed in commit 56f396146af2 ("scsi: BusLogic: Fix 64-bit
-system enumeration error for Buslogic"), 8 years later, which shows that
-there are not a lot of users.
-
-Maciej is still using the driver on 32-bit hardware, and Khalid mentioned
-that the driver works with the device emulation used in VirtualBox and
-VMware. Both of those only emulate it for Windows 2000 and older operating
-systems that did not ship with the better LSI logic driver.
-
-Do a minimum fix that searches through the list of descriptors to find one
-that matches the bus address. This is clearly as inefficient as was
-indicated in the code comment about the lack of a bus_to_virt()
-replacement. A better fix would likely involve changing out the entire
-descriptor allocation for a simpler one, but that would be much more
-invasive.
-
-Link: https://lore.kernel.org/r/20220624155226.2889613-2-arnd@kernel.org
-Cc: Maciej W. Rozycki <macro@orcam.me.uk>
-Cc: Matt Wang <wwentao@vmware.com>
-Tested-by: Khalid Aziz <khalid@gonehiking.org>
-Reviewed-by: Robin Murphy <robin.murphy@arm.com>
-Reviewed-by: Hannes Reinecke <hare@suse.de>
-Acked-by: Khalid Aziz <khalid@gonehiking.org>
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Stable-dep-of: c7233b3d99db ("scsi: advansys: Drop ISA_DMA_API remnants")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/BusLogic.c | 35 +++++++++++++++++++++++------------
- drivers/scsi/Kconfig    |  2 +-
- 2 files changed, 24 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
-index ee90509b5c7603..e52d9a6e94088f 100644
---- a/drivers/scsi/BusLogic.c
-+++ b/drivers/scsi/BusLogic.c
-@@ -2517,12 +2517,26 @@ static int blogic_resultcode(struct blogic_adapter *adapter,
-       return (hoststatus << 16) | tgt_status;
- }
-+/*
-+ * turn the dma address from an inbox into a ccb pointer
-+ * This is rather inefficient.
-+ */
-+static struct blogic_ccb *
-+blogic_inbox_to_ccb(struct blogic_adapter *adapter, struct blogic_inbox *inbox)
-+{
-+      struct blogic_ccb *ccb;
-+
-+      for (ccb = adapter->all_ccbs; ccb; ccb = ccb->next_all)
-+              if (inbox->ccb == ccb->dma_handle)
-+                      break;
-+
-+      return ccb;
-+}
- /*
-   blogic_scan_inbox scans the Incoming Mailboxes saving any
-   Incoming Mailbox entries for completion processing.
- */
--
- static void blogic_scan_inbox(struct blogic_adapter *adapter)
- {
-       /*
-@@ -2542,17 +2556,14 @@ static void blogic_scan_inbox(struct blogic_adapter *adapter)
-       enum blogic_cmplt_code comp_code;
-       while ((comp_code = next_inbox->comp_code) != BLOGIC_INBOX_FREE) {
--              /*
--                 We are only allowed to do this because we limit our
--                 architectures we run on to machines where bus_to_virt(
--                 actually works.  There *needs* to be a dma_addr_to_virt()
--                 in the new PCI DMA mapping interface to replace
--                 bus_to_virt() or else this code is going to become very
--                 innefficient.
--               */
--              struct blogic_ccb *ccb =
--                      (struct blogic_ccb *) bus_to_virt(next_inbox->ccb);
--              if (comp_code != BLOGIC_CMD_NOTFOUND) {
-+              struct blogic_ccb *ccb = blogic_inbox_to_ccb(adapter, next_inbox);
-+              if (!ccb) {
-+                      /*
-+                       * This should never happen, unless the CCB list is
-+                       * corrupted in memory.
-+                       */
-+                      blogic_warn("Could not find CCB for dma address %x\n", adapter, next_inbox->ccb);
-+              } else if (comp_code != BLOGIC_CMD_NOTFOUND) {
-                       if (ccb->status == BLOGIC_CCB_ACTIVE ||
-                                       ccb->status == BLOGIC_CCB_RESET) {
-                               /*
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 43e6f86e08c33d..743a72b7421eba 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -514,7 +514,7 @@ config SCSI_HPTIOP
- config SCSI_BUSLOGIC
-       tristate "BusLogic SCSI support"
--      depends on PCI && SCSI && VIRT_TO_BUS
-+      depends on PCI && SCSI
-       help
-         This is support for BusLogic MultiMaster and FlashPoint SCSI Host
-         Adapters. Consult the SCSI-HOWTO, available from
--- 
-2.53.0
-
index 08c8955233424634336b2385ab166b1bd007fc3b..6aea9df204f971567c6cfc35027ca9f4a31bfaef 100644 (file)
@@ -219,9 +219,6 @@ drm-radeon-fix-memory-leak-in-radeon_ring_restore-on.patch
 driver-core-use-read_once-for-dev-driver-in-dev_has_.patch
 wifi-rtw88-fix-oob-read-from-firmware-rx-descriptor-.patch
 kconfig-fix-potential-null-pointer-dereference-in-co.patch
-scsi-buslogic-remove-bus_to_virt.patch
-scsi-add-has_ioport-dependencies.patch
-scsi-advansys-drop-isa_dma_api-remnants.patch
 wifi-ath9k-fix-oob-access-from-firmware-tx-status-qu.patch
 arm-dts-am335x-sl50-fix-audio-bitclock-and-frame-mas.patch
 watchdog-sp5100_tco-use-efch-mmio-for-newer-hygon-fc.patch
diff --git a/queue-6.12/dt-bindings-vendor-prefixes-add-gira.patch b/queue-6.12/dt-bindings-vendor-prefixes-add-gira.patch
deleted file mode 100644 (file)
index 69fa075..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9b424330672fac4e57de52df6466bfa1550dd948 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 10 Jun 2026 23:30:47 +0200
-Subject: dt-bindings: vendor-prefixes: add Gira
-
-From: Lucas Stach <l.stach@pengutronix.de>
-
-[ Upstream commit 61a7e4c2c98c08da6bbf8c30c71da57610930ae7 ]
-
-Add vendor prefix for Gira Giersiepen GmbH & Co. KG
-Link: https://www.gira.de/
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Reviewed-by: Alexander Dahl <ada@thorsis.com>
-Acked-by: Conor Dooley <conor.dooley@microchip.com>
-Link: https://patch.msgid.link/20260610213047.500701-1-l.stach@pengutronix.de
-Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index af9a8d43b2479c..35a4bd5eacb890 100644
---- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
-+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-@@ -573,6 +573,8 @@ patternProperties:
-     description: Giantec Semiconductor, Inc.
-   "^giantplus,.*":
-     description: Giantplus Technology Co., Ltd.
-+  "^gira,.*":
-+    description: Gira Giersiepen GmbH & Co. KG
-   "^glinet,.*":
-     description: GL Intelligence, Inc.
-   "^globalscale,.*":
--- 
-2.53.0
-
diff --git a/queue-6.12/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch b/queue-6.12/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
deleted file mode 100644 (file)
index d14e308..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-From eabfafb9eba33f84658f6e70acd5a15581b222fe Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 11 Jun 2026 14:55:38 -0700
-Subject: net: ethernet: oa_tc6: Interrupt is active low, level triggered.
-
-From: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-
-[ Upstream commit b542d13fab0f556660ce5f10179fb3ae66bdb9a4 ]
-
-According OPEN Alliance 10BASET1x MAC-PHY Serial Interface
-specification, interrupt is active low, level triggered.
-
-Code used edge triggered interrupt which has the risk of losing an
-interrupt on instances like when interrupt is disabled. Level
-triggered interrupt won't be deasserted unless handler runs and
-clear the interrupting conditions.
-
-Interrupt handler mechanism is changed to threaded irq from
-interrupt handler and kernel thread waiting on work queue.
-Threaded irq mechanism is best suited for level triggered interrupt
-as it disables the interrupt until handler is run in thread level,
-while giving us an ability to have interrupt context handler to
-signal the threaded irq handler.
-
-Introduced a logic to disable the device interrupt on error. Error
-could be due in data chunk's header and footer or SPI interface itself.
-This will avoid having repeated interrupts, in case the driver couldn't
-recover from the error condition with the available recovery mechanism.
-
-Fixes: 2c6ce5354453 ("net: ethernet: oa_tc6: implement mac-phy interrupt")
-Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-Link: https://patch.msgid.link/20260611-level-trigger-v5-1-4533a9e85ce2@onsemi.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/oa_tc6.c | 126 ++++++++++++++++++++--------------
- 1 file changed, 76 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
-index 91a906a7918a25..f3ac2875adfb7b 100644
---- a/drivers/net/ethernet/oa_tc6.c
-+++ b/drivers/net/ethernet/oa_tc6.c
-@@ -7,6 +7,7 @@
- #include <linux/bitfield.h>
- #include <linux/iopoll.h>
-+#include <linux/interrupt.h>
- #include <linux/mdio.h>
- #include <linux/phy.h>
- #include <linux/oa_tc6.h>
-@@ -44,6 +45,8 @@
- #define INT_MASK0_LOSS_OF_FRAME_ERR_MASK      BIT(4)
- #define INT_MASK0_RX_BUFFER_OVERFLOW_ERR_MASK BIT(3)
- #define INT_MASK0_TX_PROTOCOL_ERR_MASK                BIT(0)
-+#define INT_MASK0_ALL_INTERRUPTS                (GENMASK(5, 0) | \
-+                                               GENMASK(12, 7))
- /* PHY Clause 22 registers base address and mask */
- #define OA_TC6_PHY_STD_REG_ADDR_BASE          0xFF00
-@@ -121,14 +124,13 @@ struct oa_tc6 {
-       struct sk_buff *ongoing_tx_skb;
-       struct sk_buff *waiting_tx_skb;
-       struct sk_buff *rx_skb;
--      struct task_struct *spi_thread;
--      wait_queue_head_t spi_wq;
-       u16 tx_skb_offset;
-       u16 spi_data_tx_buf_offset;
-       u16 tx_credits;
-       u8 rx_chunks_available;
-       bool rx_buf_overflow;
-       bool int_flag;
-+      bool disable_traffic;
- };
- enum oa_tc6_header_type {
-@@ -669,6 +671,38 @@ static void oa_tc6_cleanup_ongoing_tx_skb(struct oa_tc6 *tc6)
-       }
- }
-+static void oa_tc6_cleanup_waiting_tx_skb(struct oa_tc6 *tc6)
-+{
-+      if (tc6->waiting_tx_skb) {
-+              tc6->netdev->stats.tx_dropped++;
-+              kfree_skb(tc6->waiting_tx_skb);
-+              tc6->waiting_tx_skb = NULL;
-+      }
-+}
-+
-+static void oa_tc6_free_pending_skbs(struct oa_tc6 *tc6)
-+{
-+      oa_tc6_cleanup_ongoing_tx_skb(tc6);
-+      oa_tc6_cleanup_ongoing_rx_skb(tc6);
-+      oa_tc6_cleanup_waiting_tx_skb(tc6);
-+}
-+
-+/* If the failure is at SPI interface level, masking and clearing
-+ * the interrupt of the device won't work. Since SPI interrupt is
-+ * disabled, it should stop the repeated interrupts.
-+ */
-+static void oa_tc6_disable_traffic(struct oa_tc6 *tc6)
-+{
-+      u32 regval = INT_MASK0_ALL_INTERRUPTS;
-+
-+      tc6->disable_traffic = true;
-+      oa_tc6_free_pending_skbs(tc6);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_INT_MASK0, regval);
-+      oa_tc6_read_register(tc6, OA_TC6_REG_STATUS0, &regval);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_STATUS0, regval);
-+      dev_err(&tc6->spi->dev, "Device interrupt disabled to avoid interrupt storm");
-+}
-+
- static int oa_tc6_process_extended_status(struct oa_tc6 *tc6)
- {
-       u32 value;
-@@ -1105,29 +1139,29 @@ static int oa_tc6_try_spi_transfer(struct oa_tc6 *tc6)
-       return 0;
- }
--static int oa_tc6_spi_thread_handler(void *data)
-+static irqreturn_t oa_tc6_macphy_threaded_irq(int irq, void *data)
- {
-       struct oa_tc6 *tc6 = data;
--      int ret;
--
--      while (likely(!kthread_should_stop())) {
--              /* This kthread will be waken up if there is a tx skb or mac-phy
--               * interrupt to perform spi transfer with tx chunks.
--               */
--              wait_event_interruptible(tc6->spi_wq, tc6->int_flag ||
--                                       (tc6->waiting_tx_skb &&
--                                       tc6->tx_credits) ||
--                                       kthread_should_stop());
--
--              if (kthread_should_stop())
--                      break;
-+      int ret = 0;
--              ret = oa_tc6_try_spi_transfer(tc6);
--              if (ret)
--                      return ret;
-+      /* It is possible that interrupt woke the thread before it is
-+       * disabled. Until we come up with good recovery mechanism,
-+       * no need to attempt spi transfer, once it fails. Pending skbs
-+       * are already freed.
-+       */
-+      if (!tc6->disable_traffic) {
-+              while (tc6->int_flag ||
-+                     (tc6->waiting_tx_skb && tc6->tx_credits)) {
-+                      ret = oa_tc6_try_spi_transfer(tc6);
-+                      if (ret) {
-+                              disable_irq_nosync(tc6->spi->irq);
-+                              oa_tc6_disable_traffic(tc6);
-+                              break;
-+                      }
-+              }
-       }
--      return 0;
-+      return IRQ_HANDLED;
- }
- static int oa_tc6_update_buffer_status_from_register(struct oa_tc6 *tc6)
-@@ -1161,11 +1195,15 @@ static irqreturn_t oa_tc6_macphy_isr(int irq, void *data)
-        *   the previous rx footer.
-        * - extended status event not reported in the previous rx footer.
-        */
--      tc6->int_flag = true;
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
--
--      return IRQ_HANDLED;
-+      if (tc6->disable_traffic)
-+              disable_irq_nosync(tc6->spi->irq);
-+      else
-+              tc6->int_flag = true;
-+      /* Wake IRQ thread to perform spi transfer . In case
-+       * disable_traffic is set, threaded irq may run again
-+       * one more time.
-+       */
-+      return IRQ_WAKE_THREAD;
- }
- /**
-@@ -1202,7 +1240,7 @@ EXPORT_SYMBOL_GPL(oa_tc6_zero_align_receive_frame_enable);
-  */
- netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
- {
--      if (tc6->waiting_tx_skb) {
-+      if (tc6->disable_traffic || tc6->waiting_tx_skb) {
-               netif_stop_queue(tc6->netdev);
-               return NETDEV_TX_BUSY;
-       }
-@@ -1217,8 +1255,8 @@ netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
-       tc6->waiting_tx_skb = skb;
-       spin_unlock_bh(&tc6->tx_skb_lock);
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
-+      /* Wake the threaded IRQ to perform spi transfer. */
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return NETDEV_TX_OK;
- }
-@@ -1311,24 +1349,15 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-               goto phy_exit;
-       }
--      init_waitqueue_head(&tc6->spi_wq);
--
--      tc6->spi_thread = kthread_run(oa_tc6_spi_thread_handler, tc6,
--                                    "oa-tc6-spi-thread");
--      if (IS_ERR(tc6->spi_thread)) {
--              dev_err(&tc6->spi->dev, "Failed to create SPI thread\n");
--              goto phy_exit;
--      }
--
--      sched_set_fifo(tc6->spi_thread);
--
--      ret = devm_request_irq(&tc6->spi->dev, tc6->spi->irq, oa_tc6_macphy_isr,
--                             IRQF_TRIGGER_FALLING, dev_name(&tc6->spi->dev),
--                             tc6);
-+      ret = devm_request_threaded_irq(&tc6->spi->dev, tc6->spi->irq,
-+                                      oa_tc6_macphy_isr,
-+                                      oa_tc6_macphy_threaded_irq,
-+                                      IRQF_TRIGGER_LOW | IRQF_ONESHOT,
-+                                      dev_name(&tc6->spi->dev), tc6);
-       if (ret) {
-               dev_err(&tc6->spi->dev, "Failed to request macphy isr %d\n",
-                       ret);
--              goto kthread_stop;
-+              goto phy_exit;
-       }
-       /* oa_tc6_sw_reset_macphy() function resets and clears the MAC-PHY reset
-@@ -1338,12 +1367,10 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-        * 7.7 and 9.2.8.8 in the OPEN Alliance specification for more details.
-        */
-       tc6->int_flag = true;
--      wake_up_interruptible(&tc6->spi_wq);
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return tc6;
--kthread_stop:
--      kthread_stop(tc6->spi_thread);
- phy_exit:
-       oa_tc6_phy_exit(tc6);
-       return NULL;
-@@ -1356,11 +1383,10 @@ EXPORT_SYMBOL_GPL(oa_tc6_init);
-  */
- void oa_tc6_exit(struct oa_tc6 *tc6)
- {
-+      tc6->disable_traffic = true;
-+      disable_irq(tc6->spi->irq);
-       oa_tc6_phy_exit(tc6);
--      kthread_stop(tc6->spi_thread);
--      dev_kfree_skb_any(tc6->ongoing_tx_skb);
--      dev_kfree_skb_any(tc6->waiting_tx_skb);
--      dev_kfree_skb_any(tc6->rx_skb);
-+      oa_tc6_free_pending_skbs(tc6);
- }
- EXPORT_SYMBOL_GPL(oa_tc6_exit);
--- 
-2.53.0
-
diff --git a/queue-6.12/scsi-advansys-drop-isa_dma_api-remnants.patch b/queue-6.12/scsi-advansys-drop-isa_dma_api-remnants.patch
deleted file mode 100644 (file)
index 09e7953..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 92820fe5fd817f87e2e3e0b13bf7b988ca68465b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Apr 2026 17:15:37 +0200
-Subject: scsi: advansys: Drop ISA_DMA_API remnants
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit c7233b3d99db9760daf07c4e95daa9675c6c0cba ]
-
-Support for ISA bus mastering was removed a few years ago, and the VLB
-mode does not use the ISA DMA API, so drop the dependency and the header
-inclusion.
-
-Fixes: 9b4c8eaa68d0 ("advansys: remove ISA support")
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
-Link: https://patch.msgid.link/20260429151623.3899875-1-arnd@kernel.org
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig    | 1 -
- drivers/scsi/advansys.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 37c24ffea65cc0..cdcfbec6033bbe 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -476,7 +476,6 @@ config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
-       depends on (ISA || EISA || PCI) && HAS_IOPORT
--      depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-         AdvanSys. It is documented in the kernel source in
-diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
-index fd4fcb37863dc2..73137430a33de9 100644
---- a/drivers/scsi/advansys.c
-+++ b/drivers/scsi/advansys.c
-@@ -36,7 +36,6 @@
- #include <linux/dmapool.h>
- #include <asm/io.h>
--#include <asm/dma.h>
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
--- 
-2.53.0
-
index 493860f5bbf0b5d025c589198eab7e9e415e504d..bd1ec41caa8d4bfb74dadadebe12471ec5b031aa 100644 (file)
@@ -79,7 +79,6 @@ wifi-rtw89-correct-data-type-for-scan-index-to-avoid.patch
 wifi-rtw88-fix-oob-read-from-firmware-rx-descriptor-.patch
 kconfig-fix-potential-null-pointer-dereference-in-co.patch
 soc-xilinx-shutdown-and-free-rx-mailbox-channel.patch
-scsi-advansys-drop-isa_dma_api-remnants.patch
 wifi-ath9k-fix-oob-access-from-firmware-tx-status-qu.patch
 arm-dts-am335x-sl50-fix-audio-bitclock-and-frame-mas.patch
 watchdog-sp5100_tco-use-efch-mmio-for-newer-hygon-fc.patch
@@ -389,13 +388,11 @@ powerpc-perf-fix-preempt-count-underflow-in-fsl_emb_.patch
 powerpc-powernv-fix-preempt-count-leak-in-pnv_kexec_.patch
 powerpc-kexec-fix-double-get_cpu-imbalance-in-kexec_.patch
 keys-use-acquire-when-reading-state-in-keyring-searc.patch
-dt-bindings-vendor-prefixes-add-gira.patch
 tipc-fix-uaf-in-tipc_l2_send_msg.patch
 tcp-ipv6-clamp-default-adverting-mss-to-avoid-gso_by.patch
 net-airoha-introduce-ndo_select_queue-callback.patch
 net-airoha-add-sched-ets-offload-support.patch
 net-airoha-fix-always-true-condition-in-ppe1-queue-r.patch
-net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
 net-ethernet-oa_tc6-mdiobus-parent-initialized-with-.patch
 net-ethernet-oa_tc6-remove-fcs-size-in-rx-frame.patch
 dt-bindings-net-updated-interrupt-type-to-be-active-.patch
diff --git a/queue-6.18/dt-bindings-vendor-prefixes-add-gira.patch b/queue-6.18/dt-bindings-vendor-prefixes-add-gira.patch
deleted file mode 100644 (file)
index 19f0afb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 12ac52145e0d46f39cdae149d61318d35c3b4038 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 10 Jun 2026 23:30:47 +0200
-Subject: dt-bindings: vendor-prefixes: add Gira
-
-From: Lucas Stach <l.stach@pengutronix.de>
-
-[ Upstream commit 61a7e4c2c98c08da6bbf8c30c71da57610930ae7 ]
-
-Add vendor prefix for Gira Giersiepen GmbH & Co. KG
-Link: https://www.gira.de/
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Reviewed-by: Alexander Dahl <ada@thorsis.com>
-Acked-by: Conor Dooley <conor.dooley@microchip.com>
-Link: https://patch.msgid.link/20260610213047.500701-1-l.stach@pengutronix.de
-Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index a9cf85fd6fbec7..363b2fcb1ddad2 100644
---- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
-+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-@@ -632,6 +632,8 @@ patternProperties:
-     description: Giantec Semiconductor, Inc.
-   "^giantplus,.*":
-     description: Giantplus Technology Co., Ltd.
-+  "^gira,.*":
-+    description: Gira Giersiepen GmbH & Co. KG
-   "^glinet,.*":
-     description: GL Intelligence, Inc.
-   "^globalscale,.*":
--- 
-2.53.0
-
diff --git a/queue-6.18/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch b/queue-6.18/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
deleted file mode 100644 (file)
index 37be467..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-From a2b0a77e72831120956f7fbccd1aa450c698c78c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 11 Jun 2026 14:55:38 -0700
-Subject: net: ethernet: oa_tc6: Interrupt is active low, level triggered.
-
-From: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-
-[ Upstream commit b542d13fab0f556660ce5f10179fb3ae66bdb9a4 ]
-
-According OPEN Alliance 10BASET1x MAC-PHY Serial Interface
-specification, interrupt is active low, level triggered.
-
-Code used edge triggered interrupt which has the risk of losing an
-interrupt on instances like when interrupt is disabled. Level
-triggered interrupt won't be deasserted unless handler runs and
-clear the interrupting conditions.
-
-Interrupt handler mechanism is changed to threaded irq from
-interrupt handler and kernel thread waiting on work queue.
-Threaded irq mechanism is best suited for level triggered interrupt
-as it disables the interrupt until handler is run in thread level,
-while giving us an ability to have interrupt context handler to
-signal the threaded irq handler.
-
-Introduced a logic to disable the device interrupt on error. Error
-could be due in data chunk's header and footer or SPI interface itself.
-This will avoid having repeated interrupts, in case the driver couldn't
-recover from the error condition with the available recovery mechanism.
-
-Fixes: 2c6ce5354453 ("net: ethernet: oa_tc6: implement mac-phy interrupt")
-Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-Link: https://patch.msgid.link/20260611-level-trigger-v5-1-4533a9e85ce2@onsemi.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/oa_tc6.c | 126 ++++++++++++++++++++--------------
- 1 file changed, 76 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
-index 91a906a7918a25..f3ac2875adfb7b 100644
---- a/drivers/net/ethernet/oa_tc6.c
-+++ b/drivers/net/ethernet/oa_tc6.c
-@@ -7,6 +7,7 @@
- #include <linux/bitfield.h>
- #include <linux/iopoll.h>
-+#include <linux/interrupt.h>
- #include <linux/mdio.h>
- #include <linux/phy.h>
- #include <linux/oa_tc6.h>
-@@ -44,6 +45,8 @@
- #define INT_MASK0_LOSS_OF_FRAME_ERR_MASK      BIT(4)
- #define INT_MASK0_RX_BUFFER_OVERFLOW_ERR_MASK BIT(3)
- #define INT_MASK0_TX_PROTOCOL_ERR_MASK                BIT(0)
-+#define INT_MASK0_ALL_INTERRUPTS                (GENMASK(5, 0) | \
-+                                               GENMASK(12, 7))
- /* PHY Clause 22 registers base address and mask */
- #define OA_TC6_PHY_STD_REG_ADDR_BASE          0xFF00
-@@ -121,14 +124,13 @@ struct oa_tc6 {
-       struct sk_buff *ongoing_tx_skb;
-       struct sk_buff *waiting_tx_skb;
-       struct sk_buff *rx_skb;
--      struct task_struct *spi_thread;
--      wait_queue_head_t spi_wq;
-       u16 tx_skb_offset;
-       u16 spi_data_tx_buf_offset;
-       u16 tx_credits;
-       u8 rx_chunks_available;
-       bool rx_buf_overflow;
-       bool int_flag;
-+      bool disable_traffic;
- };
- enum oa_tc6_header_type {
-@@ -669,6 +671,38 @@ static void oa_tc6_cleanup_ongoing_tx_skb(struct oa_tc6 *tc6)
-       }
- }
-+static void oa_tc6_cleanup_waiting_tx_skb(struct oa_tc6 *tc6)
-+{
-+      if (tc6->waiting_tx_skb) {
-+              tc6->netdev->stats.tx_dropped++;
-+              kfree_skb(tc6->waiting_tx_skb);
-+              tc6->waiting_tx_skb = NULL;
-+      }
-+}
-+
-+static void oa_tc6_free_pending_skbs(struct oa_tc6 *tc6)
-+{
-+      oa_tc6_cleanup_ongoing_tx_skb(tc6);
-+      oa_tc6_cleanup_ongoing_rx_skb(tc6);
-+      oa_tc6_cleanup_waiting_tx_skb(tc6);
-+}
-+
-+/* If the failure is at SPI interface level, masking and clearing
-+ * the interrupt of the device won't work. Since SPI interrupt is
-+ * disabled, it should stop the repeated interrupts.
-+ */
-+static void oa_tc6_disable_traffic(struct oa_tc6 *tc6)
-+{
-+      u32 regval = INT_MASK0_ALL_INTERRUPTS;
-+
-+      tc6->disable_traffic = true;
-+      oa_tc6_free_pending_skbs(tc6);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_INT_MASK0, regval);
-+      oa_tc6_read_register(tc6, OA_TC6_REG_STATUS0, &regval);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_STATUS0, regval);
-+      dev_err(&tc6->spi->dev, "Device interrupt disabled to avoid interrupt storm");
-+}
-+
- static int oa_tc6_process_extended_status(struct oa_tc6 *tc6)
- {
-       u32 value;
-@@ -1105,29 +1139,29 @@ static int oa_tc6_try_spi_transfer(struct oa_tc6 *tc6)
-       return 0;
- }
--static int oa_tc6_spi_thread_handler(void *data)
-+static irqreturn_t oa_tc6_macphy_threaded_irq(int irq, void *data)
- {
-       struct oa_tc6 *tc6 = data;
--      int ret;
--
--      while (likely(!kthread_should_stop())) {
--              /* This kthread will be waken up if there is a tx skb or mac-phy
--               * interrupt to perform spi transfer with tx chunks.
--               */
--              wait_event_interruptible(tc6->spi_wq, tc6->int_flag ||
--                                       (tc6->waiting_tx_skb &&
--                                       tc6->tx_credits) ||
--                                       kthread_should_stop());
--
--              if (kthread_should_stop())
--                      break;
-+      int ret = 0;
--              ret = oa_tc6_try_spi_transfer(tc6);
--              if (ret)
--                      return ret;
-+      /* It is possible that interrupt woke the thread before it is
-+       * disabled. Until we come up with good recovery mechanism,
-+       * no need to attempt spi transfer, once it fails. Pending skbs
-+       * are already freed.
-+       */
-+      if (!tc6->disable_traffic) {
-+              while (tc6->int_flag ||
-+                     (tc6->waiting_tx_skb && tc6->tx_credits)) {
-+                      ret = oa_tc6_try_spi_transfer(tc6);
-+                      if (ret) {
-+                              disable_irq_nosync(tc6->spi->irq);
-+                              oa_tc6_disable_traffic(tc6);
-+                              break;
-+                      }
-+              }
-       }
--      return 0;
-+      return IRQ_HANDLED;
- }
- static int oa_tc6_update_buffer_status_from_register(struct oa_tc6 *tc6)
-@@ -1161,11 +1195,15 @@ static irqreturn_t oa_tc6_macphy_isr(int irq, void *data)
-        *   the previous rx footer.
-        * - extended status event not reported in the previous rx footer.
-        */
--      tc6->int_flag = true;
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
--
--      return IRQ_HANDLED;
-+      if (tc6->disable_traffic)
-+              disable_irq_nosync(tc6->spi->irq);
-+      else
-+              tc6->int_flag = true;
-+      /* Wake IRQ thread to perform spi transfer . In case
-+       * disable_traffic is set, threaded irq may run again
-+       * one more time.
-+       */
-+      return IRQ_WAKE_THREAD;
- }
- /**
-@@ -1202,7 +1240,7 @@ EXPORT_SYMBOL_GPL(oa_tc6_zero_align_receive_frame_enable);
-  */
- netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
- {
--      if (tc6->waiting_tx_skb) {
-+      if (tc6->disable_traffic || tc6->waiting_tx_skb) {
-               netif_stop_queue(tc6->netdev);
-               return NETDEV_TX_BUSY;
-       }
-@@ -1217,8 +1255,8 @@ netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
-       tc6->waiting_tx_skb = skb;
-       spin_unlock_bh(&tc6->tx_skb_lock);
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
-+      /* Wake the threaded IRQ to perform spi transfer. */
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return NETDEV_TX_OK;
- }
-@@ -1311,24 +1349,15 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-               goto phy_exit;
-       }
--      init_waitqueue_head(&tc6->spi_wq);
--
--      tc6->spi_thread = kthread_run(oa_tc6_spi_thread_handler, tc6,
--                                    "oa-tc6-spi-thread");
--      if (IS_ERR(tc6->spi_thread)) {
--              dev_err(&tc6->spi->dev, "Failed to create SPI thread\n");
--              goto phy_exit;
--      }
--
--      sched_set_fifo(tc6->spi_thread);
--
--      ret = devm_request_irq(&tc6->spi->dev, tc6->spi->irq, oa_tc6_macphy_isr,
--                             IRQF_TRIGGER_FALLING, dev_name(&tc6->spi->dev),
--                             tc6);
-+      ret = devm_request_threaded_irq(&tc6->spi->dev, tc6->spi->irq,
-+                                      oa_tc6_macphy_isr,
-+                                      oa_tc6_macphy_threaded_irq,
-+                                      IRQF_TRIGGER_LOW | IRQF_ONESHOT,
-+                                      dev_name(&tc6->spi->dev), tc6);
-       if (ret) {
-               dev_err(&tc6->spi->dev, "Failed to request macphy isr %d\n",
-                       ret);
--              goto kthread_stop;
-+              goto phy_exit;
-       }
-       /* oa_tc6_sw_reset_macphy() function resets and clears the MAC-PHY reset
-@@ -1338,12 +1367,10 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-        * 7.7 and 9.2.8.8 in the OPEN Alliance specification for more details.
-        */
-       tc6->int_flag = true;
--      wake_up_interruptible(&tc6->spi_wq);
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return tc6;
--kthread_stop:
--      kthread_stop(tc6->spi_thread);
- phy_exit:
-       oa_tc6_phy_exit(tc6);
-       return NULL;
-@@ -1356,11 +1383,10 @@ EXPORT_SYMBOL_GPL(oa_tc6_init);
-  */
- void oa_tc6_exit(struct oa_tc6 *tc6)
- {
-+      tc6->disable_traffic = true;
-+      disable_irq(tc6->spi->irq);
-       oa_tc6_phy_exit(tc6);
--      kthread_stop(tc6->spi_thread);
--      dev_kfree_skb_any(tc6->ongoing_tx_skb);
--      dev_kfree_skb_any(tc6->waiting_tx_skb);
--      dev_kfree_skb_any(tc6->rx_skb);
-+      oa_tc6_free_pending_skbs(tc6);
- }
- EXPORT_SYMBOL_GPL(oa_tc6_exit);
--- 
-2.53.0
-
diff --git a/queue-6.18/scsi-advansys-drop-isa_dma_api-remnants.patch b/queue-6.18/scsi-advansys-drop-isa_dma_api-remnants.patch
deleted file mode 100644 (file)
index 002929d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 08b62a3fbfcf9577da04cfae82983de179dddc65 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Apr 2026 17:15:37 +0200
-Subject: scsi: advansys: Drop ISA_DMA_API remnants
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit c7233b3d99db9760daf07c4e95daa9675c6c0cba ]
-
-Support for ISA bus mastering was removed a few years ago, and the VLB
-mode does not use the ISA DMA API, so drop the dependency and the header
-inclusion.
-
-Fixes: 9b4c8eaa68d0 ("advansys: remove ISA support")
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
-Link: https://patch.msgid.link/20260429151623.3899875-1-arnd@kernel.org
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig    | 1 -
- drivers/scsi/advansys.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 19d0884479a247..70d6392192b59c 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -476,7 +476,6 @@ config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
-       depends on (ISA || EISA || PCI) && HAS_IOPORT
--      depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-         AdvanSys. It is documented in the kernel source in
-diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
-index 063e1b5818d342..9a6bd4b12d236c 100644
---- a/drivers/scsi/advansys.c
-+++ b/drivers/scsi/advansys.c
-@@ -36,7 +36,6 @@
- #include <linux/dmapool.h>
- #include <asm/io.h>
--#include <asm/dma.h>
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
--- 
-2.53.0
-
index 43b66aa29bebecff0e3dc8925f8c46ca61e46995..7d3497533cc067c08dca0274ffcfce17865003be 100644 (file)
@@ -91,7 +91,6 @@ wifi-rtw89-add-bounds-check-on-firmware-mac_id-in-li.patch
 kconfig-fix-potential-null-pointer-dereference-in-co.patch
 soc-xilinx-shutdown-and-free-rx-mailbox-channel.patch
 pinctrl-mediatek-eint-drop-base-from-mtk_eint_chip_w.patch
-scsi-advansys-drop-isa_dma_api-remnants.patch
 wifi-ath9k-fix-oob-access-from-firmware-tx-status-qu.patch
 arm-dts-am335x-sl50-fix-audio-bitclock-and-frame-mas.patch
 documentation-rv-replace-stale-website-link.patch
@@ -548,11 +547,9 @@ powerpc-perf-fix-preempt-count-underflow-in-fsl_emb_.patch
 powerpc-powernv-fix-preempt-count-leak-in-pnv_kexec_.patch
 powerpc-kexec-fix-double-get_cpu-imbalance-in-kexec_.patch
 keys-use-acquire-when-reading-state-in-keyring-searc.patch
-dt-bindings-vendor-prefixes-add-gira.patch
 tipc-fix-uaf-in-tipc_l2_send_msg.patch
 tcp-ipv6-clamp-default-adverting-mss-to-avoid-gso_by.patch
 net-airoha-fix-always-true-condition-in-ppe1-queue-r.patch
-net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
 net-ethernet-oa_tc6-mdiobus-parent-initialized-with-.patch
 net-ethernet-oa_tc6-remove-fcs-size-in-rx-frame.patch
 dt-bindings-net-updated-interrupt-type-to-be-active-.patch
diff --git a/queue-6.6/scsi-advansys-drop-isa_dma_api-remnants.patch b/queue-6.6/scsi-advansys-drop-isa_dma_api-remnants.patch
deleted file mode 100644 (file)
index 3b606f2..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 149c09f246680de13a6267da1699c6ae92c7602d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Apr 2026 17:15:37 +0200
-Subject: scsi: advansys: Drop ISA_DMA_API remnants
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit c7233b3d99db9760daf07c4e95daa9675c6c0cba ]
-
-Support for ISA bus mastering was removed a few years ago, and the VLB
-mode does not use the ISA DMA API, so drop the dependency and the header
-inclusion.
-
-Fixes: 9b4c8eaa68d0 ("advansys: remove ISA support")
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
-Link: https://patch.msgid.link/20260429151623.3899875-1-arnd@kernel.org
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig    | 1 -
- drivers/scsi/advansys.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index 23bce8995a5575..02f41bf250af5f 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -463,7 +463,6 @@ config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
-       depends on (ISA || EISA || PCI) && HAS_IOPORT
--      depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-         AdvanSys. It is documented in the kernel source in
-diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
-index ab066bb27a5704..920be96f585f00 100644
---- a/drivers/scsi/advansys.c
-+++ b/drivers/scsi/advansys.c
-@@ -36,7 +36,6 @@
- #include <linux/dmapool.h>
- #include <asm/io.h>
--#include <asm/dma.h>
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
--- 
-2.53.0
-
index 5071b1b63f2e489365697631c6445439fdda6c43..8557f55fdc3a5c8a82dcbbd44b08e0daef630f74 100644 (file)
@@ -373,7 +373,6 @@ driver-core-use-read_once-for-dev-driver-in-dev_has_.patch
 wifi-rtw89-correct-data-type-for-scan-index-to-avoid.patch
 wifi-rtw88-fix-oob-read-from-firmware-rx-descriptor-.patch
 kconfig-fix-potential-null-pointer-dereference-in-co.patch
-scsi-advansys-drop-isa_dma_api-remnants.patch
 wifi-ath9k-fix-oob-access-from-firmware-tx-status-qu.patch
 arm-dts-am335x-sl50-fix-audio-bitclock-and-frame-mas.patch
 watchdog-sp5100_tco-use-efch-mmio-for-newer-hygon-fc.patch
diff --git a/queue-7.1/dt-bindings-vendor-prefixes-add-gira.patch b/queue-7.1/dt-bindings-vendor-prefixes-add-gira.patch
deleted file mode 100644 (file)
index fdc0fbc..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 26b08f0fcf83bd733238cf556bab64c65ded09a4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 10 Jun 2026 23:30:47 +0200
-Subject: dt-bindings: vendor-prefixes: add Gira
-
-From: Lucas Stach <l.stach@pengutronix.de>
-
-[ Upstream commit 61a7e4c2c98c08da6bbf8c30c71da57610930ae7 ]
-
-Add vendor prefix for Gira Giersiepen GmbH & Co. KG
-Link: https://www.gira.de/
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Reviewed-by: Alexander Dahl <ada@thorsis.com>
-Acked-by: Conor Dooley <conor.dooley@microchip.com>
-Link: https://patch.msgid.link/20260610213047.500701-1-l.stach@pengutronix.de
-Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index ac83310259a914..55ef75d530e6c2 100644
---- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
-+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-@@ -658,6 +658,8 @@ patternProperties:
-     description: Giantec Semiconductor, Inc.
-   "^giantplus,.*":
-     description: Giantplus Technology Co., Ltd.
-+  "^gira,.*":
-+    description: Gira Giersiepen GmbH & Co. KG
-   "^glinet,.*":
-     description: GL Intelligence, Inc.
-   "^globalscale,.*":
--- 
-2.53.0
-
diff --git a/queue-7.1/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch b/queue-7.1/net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
deleted file mode 100644 (file)
index 742dc3c..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-From 67373094ff13ea1e12c8d99590204fef10506165 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 11 Jun 2026 14:55:38 -0700
-Subject: net: ethernet: oa_tc6: Interrupt is active low, level triggered.
-
-From: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-
-[ Upstream commit b542d13fab0f556660ce5f10179fb3ae66bdb9a4 ]
-
-According OPEN Alliance 10BASET1x MAC-PHY Serial Interface
-specification, interrupt is active low, level triggered.
-
-Code used edge triggered interrupt which has the risk of losing an
-interrupt on instances like when interrupt is disabled. Level
-triggered interrupt won't be deasserted unless handler runs and
-clear the interrupting conditions.
-
-Interrupt handler mechanism is changed to threaded irq from
-interrupt handler and kernel thread waiting on work queue.
-Threaded irq mechanism is best suited for level triggered interrupt
-as it disables the interrupt until handler is run in thread level,
-while giving us an ability to have interrupt context handler to
-signal the threaded irq handler.
-
-Introduced a logic to disable the device interrupt on error. Error
-could be due in data chunk's header and footer or SPI interface itself.
-This will avoid having repeated interrupts, in case the driver couldn't
-recover from the error condition with the available recovery mechanism.
-
-Fixes: 2c6ce5354453 ("net: ethernet: oa_tc6: implement mac-phy interrupt")
-Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
-Link: https://patch.msgid.link/20260611-level-trigger-v5-1-4533a9e85ce2@onsemi.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/oa_tc6.c | 126 ++++++++++++++++++++--------------
- 1 file changed, 76 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
-index 91a906a7918a25..f3ac2875adfb7b 100644
---- a/drivers/net/ethernet/oa_tc6.c
-+++ b/drivers/net/ethernet/oa_tc6.c
-@@ -7,6 +7,7 @@
- #include <linux/bitfield.h>
- #include <linux/iopoll.h>
-+#include <linux/interrupt.h>
- #include <linux/mdio.h>
- #include <linux/phy.h>
- #include <linux/oa_tc6.h>
-@@ -44,6 +45,8 @@
- #define INT_MASK0_LOSS_OF_FRAME_ERR_MASK      BIT(4)
- #define INT_MASK0_RX_BUFFER_OVERFLOW_ERR_MASK BIT(3)
- #define INT_MASK0_TX_PROTOCOL_ERR_MASK                BIT(0)
-+#define INT_MASK0_ALL_INTERRUPTS                (GENMASK(5, 0) | \
-+                                               GENMASK(12, 7))
- /* PHY Clause 22 registers base address and mask */
- #define OA_TC6_PHY_STD_REG_ADDR_BASE          0xFF00
-@@ -121,14 +124,13 @@ struct oa_tc6 {
-       struct sk_buff *ongoing_tx_skb;
-       struct sk_buff *waiting_tx_skb;
-       struct sk_buff *rx_skb;
--      struct task_struct *spi_thread;
--      wait_queue_head_t spi_wq;
-       u16 tx_skb_offset;
-       u16 spi_data_tx_buf_offset;
-       u16 tx_credits;
-       u8 rx_chunks_available;
-       bool rx_buf_overflow;
-       bool int_flag;
-+      bool disable_traffic;
- };
- enum oa_tc6_header_type {
-@@ -669,6 +671,38 @@ static void oa_tc6_cleanup_ongoing_tx_skb(struct oa_tc6 *tc6)
-       }
- }
-+static void oa_tc6_cleanup_waiting_tx_skb(struct oa_tc6 *tc6)
-+{
-+      if (tc6->waiting_tx_skb) {
-+              tc6->netdev->stats.tx_dropped++;
-+              kfree_skb(tc6->waiting_tx_skb);
-+              tc6->waiting_tx_skb = NULL;
-+      }
-+}
-+
-+static void oa_tc6_free_pending_skbs(struct oa_tc6 *tc6)
-+{
-+      oa_tc6_cleanup_ongoing_tx_skb(tc6);
-+      oa_tc6_cleanup_ongoing_rx_skb(tc6);
-+      oa_tc6_cleanup_waiting_tx_skb(tc6);
-+}
-+
-+/* If the failure is at SPI interface level, masking and clearing
-+ * the interrupt of the device won't work. Since SPI interrupt is
-+ * disabled, it should stop the repeated interrupts.
-+ */
-+static void oa_tc6_disable_traffic(struct oa_tc6 *tc6)
-+{
-+      u32 regval = INT_MASK0_ALL_INTERRUPTS;
-+
-+      tc6->disable_traffic = true;
-+      oa_tc6_free_pending_skbs(tc6);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_INT_MASK0, regval);
-+      oa_tc6_read_register(tc6, OA_TC6_REG_STATUS0, &regval);
-+      oa_tc6_write_register(tc6, OA_TC6_REG_STATUS0, regval);
-+      dev_err(&tc6->spi->dev, "Device interrupt disabled to avoid interrupt storm");
-+}
-+
- static int oa_tc6_process_extended_status(struct oa_tc6 *tc6)
- {
-       u32 value;
-@@ -1105,29 +1139,29 @@ static int oa_tc6_try_spi_transfer(struct oa_tc6 *tc6)
-       return 0;
- }
--static int oa_tc6_spi_thread_handler(void *data)
-+static irqreturn_t oa_tc6_macphy_threaded_irq(int irq, void *data)
- {
-       struct oa_tc6 *tc6 = data;
--      int ret;
--
--      while (likely(!kthread_should_stop())) {
--              /* This kthread will be waken up if there is a tx skb or mac-phy
--               * interrupt to perform spi transfer with tx chunks.
--               */
--              wait_event_interruptible(tc6->spi_wq, tc6->int_flag ||
--                                       (tc6->waiting_tx_skb &&
--                                       tc6->tx_credits) ||
--                                       kthread_should_stop());
--
--              if (kthread_should_stop())
--                      break;
-+      int ret = 0;
--              ret = oa_tc6_try_spi_transfer(tc6);
--              if (ret)
--                      return ret;
-+      /* It is possible that interrupt woke the thread before it is
-+       * disabled. Until we come up with good recovery mechanism,
-+       * no need to attempt spi transfer, once it fails. Pending skbs
-+       * are already freed.
-+       */
-+      if (!tc6->disable_traffic) {
-+              while (tc6->int_flag ||
-+                     (tc6->waiting_tx_skb && tc6->tx_credits)) {
-+                      ret = oa_tc6_try_spi_transfer(tc6);
-+                      if (ret) {
-+                              disable_irq_nosync(tc6->spi->irq);
-+                              oa_tc6_disable_traffic(tc6);
-+                              break;
-+                      }
-+              }
-       }
--      return 0;
-+      return IRQ_HANDLED;
- }
- static int oa_tc6_update_buffer_status_from_register(struct oa_tc6 *tc6)
-@@ -1161,11 +1195,15 @@ static irqreturn_t oa_tc6_macphy_isr(int irq, void *data)
-        *   the previous rx footer.
-        * - extended status event not reported in the previous rx footer.
-        */
--      tc6->int_flag = true;
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
--
--      return IRQ_HANDLED;
-+      if (tc6->disable_traffic)
-+              disable_irq_nosync(tc6->spi->irq);
-+      else
-+              tc6->int_flag = true;
-+      /* Wake IRQ thread to perform spi transfer . In case
-+       * disable_traffic is set, threaded irq may run again
-+       * one more time.
-+       */
-+      return IRQ_WAKE_THREAD;
- }
- /**
-@@ -1202,7 +1240,7 @@ EXPORT_SYMBOL_GPL(oa_tc6_zero_align_receive_frame_enable);
-  */
- netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
- {
--      if (tc6->waiting_tx_skb) {
-+      if (tc6->disable_traffic || tc6->waiting_tx_skb) {
-               netif_stop_queue(tc6->netdev);
-               return NETDEV_TX_BUSY;
-       }
-@@ -1217,8 +1255,8 @@ netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb)
-       tc6->waiting_tx_skb = skb;
-       spin_unlock_bh(&tc6->tx_skb_lock);
--      /* Wake spi kthread to perform spi transfer */
--      wake_up_interruptible(&tc6->spi_wq);
-+      /* Wake the threaded IRQ to perform spi transfer. */
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return NETDEV_TX_OK;
- }
-@@ -1311,24 +1349,15 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-               goto phy_exit;
-       }
--      init_waitqueue_head(&tc6->spi_wq);
--
--      tc6->spi_thread = kthread_run(oa_tc6_spi_thread_handler, tc6,
--                                    "oa-tc6-spi-thread");
--      if (IS_ERR(tc6->spi_thread)) {
--              dev_err(&tc6->spi->dev, "Failed to create SPI thread\n");
--              goto phy_exit;
--      }
--
--      sched_set_fifo(tc6->spi_thread);
--
--      ret = devm_request_irq(&tc6->spi->dev, tc6->spi->irq, oa_tc6_macphy_isr,
--                             IRQF_TRIGGER_FALLING, dev_name(&tc6->spi->dev),
--                             tc6);
-+      ret = devm_request_threaded_irq(&tc6->spi->dev, tc6->spi->irq,
-+                                      oa_tc6_macphy_isr,
-+                                      oa_tc6_macphy_threaded_irq,
-+                                      IRQF_TRIGGER_LOW | IRQF_ONESHOT,
-+                                      dev_name(&tc6->spi->dev), tc6);
-       if (ret) {
-               dev_err(&tc6->spi->dev, "Failed to request macphy isr %d\n",
-                       ret);
--              goto kthread_stop;
-+              goto phy_exit;
-       }
-       /* oa_tc6_sw_reset_macphy() function resets and clears the MAC-PHY reset
-@@ -1338,12 +1367,10 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
-        * 7.7 and 9.2.8.8 in the OPEN Alliance specification for more details.
-        */
-       tc6->int_flag = true;
--      wake_up_interruptible(&tc6->spi_wq);
-+      irq_wake_thread(tc6->spi->irq, tc6);
-       return tc6;
--kthread_stop:
--      kthread_stop(tc6->spi_thread);
- phy_exit:
-       oa_tc6_phy_exit(tc6);
-       return NULL;
-@@ -1356,11 +1383,10 @@ EXPORT_SYMBOL_GPL(oa_tc6_init);
-  */
- void oa_tc6_exit(struct oa_tc6 *tc6)
- {
-+      tc6->disable_traffic = true;
-+      disable_irq(tc6->spi->irq);
-       oa_tc6_phy_exit(tc6);
--      kthread_stop(tc6->spi_thread);
--      dev_kfree_skb_any(tc6->ongoing_tx_skb);
--      dev_kfree_skb_any(tc6->waiting_tx_skb);
--      dev_kfree_skb_any(tc6->rx_skb);
-+      oa_tc6_free_pending_skbs(tc6);
- }
- EXPORT_SYMBOL_GPL(oa_tc6_exit);
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-init-handle-code-blocks-early.patch b/queue-7.1/rust-pin-init-internal-init-handle-code-blocks-early.patch
deleted file mode 100644 (file)
index 17c7a8e..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-From f76e4bc5c6292a323db4fdd0395cf57efad5277f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 May 2026 13:09:49 +0100
-Subject: rust: pin-init: internal: init: handle code blocks early
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit df1827babd665ea7039383dbc5c671b66a65c1ec ]
-
-`InitializerKind::Code` is a special case where it does not initialize a
-field, and thus generate no guard and accessors. Handle it earlier and make
-the rest of the code more linear.
-
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/init.rs | 100 ++++++++++++++++-------------
- 1 file changed, 55 insertions(+), 45 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
-index 487ee0013fafee..0e19169d022ad9 100644
---- a/rust/pin-init/internal/src/init.rs
-+++ b/rust/pin-init/internal/src/init.rs
-@@ -238,6 +238,20 @@ fn init_fields(
-             cfgs.retain(|attr| attr.path().is_ident("cfg"));
-             cfgs
-         };
-+
-+        let ident = match kind {
-+            InitializerKind::Value { ident, .. } => ident,
-+            InitializerKind::Init { ident, .. } => ident,
-+            InitializerKind::Code { block, .. } => {
-+                res.extend(quote! {
-+                    #(#attrs)*
-+                    #[allow(unused_braces)]
-+                    #block
-+                });
-+                continue;
-+            }
-+        };
-+
-         let init = match kind {
-             InitializerKind::Value { ident, value } => {
-                 let mut value_ident = ident.clone();
-@@ -290,55 +304,51 @@ fn init_fields(
-                     }
-                 }
-             }
--            InitializerKind::Code { block: value, .. } => quote! {
--                #(#attrs)*
--                #[allow(unused_braces)]
--                #value
--            },
-+            InitializerKind::Code { .. } => unreachable!(),
-         };
--        res.extend(init);
--        if let Some(ident) = kind.ident() {
--            // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
--            let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
--            // NOTE: The reference is derived from the guard so that it only lives as long as the
--            // guard does and cannot escape the scope. If it's created via `&mut (*#slot).#ident`
--            // like the unaligned field guard, it will become effectively `'static`.
--            let accessor = if pinned {
--                let project_ident = format_ident!("__project_{ident}");
--                quote! {
--                    // SAFETY: the initialization is pinned.
--                    unsafe { #data.#project_ident(#guard.let_binding()) }
--                }
--            } else {
--                quote! {
--                    #guard.let_binding()
--                }
--            };
-+        // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
-+        let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
--            res.extend(quote! {
--                #(#cfgs)*
--                // Create the drop guard.
--                //
--                // SAFETY:
--                // - `&raw mut (*slot).#ident` is valid.
--                // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
--                // - `(*slot).#ident` has been initialized above.
--                // - We only need the ownership to the pointee back when initialization has
--                //   succeeded, where we `forget` the guard.
--                let mut #guard = unsafe {
--                    ::pin_init::__internal::DropGuard::new(
--                        &raw mut (*slot).#ident
--                    )
--                };
-+        // NOTE: The reference is derived from the guard so that it only lives as long as the
-+        // guard does and cannot escape the scope. If it's created via `&mut (*#slot).#ident`
-+        // like the unaligned field guard, it will become effectively `'static`.
-+        let accessor = if pinned {
-+            let project_ident = format_ident!("__project_{ident}");
-+            quote! {
-+                // SAFETY: the initialization is pinned.
-+                unsafe { #data.#project_ident(#guard.let_binding()) }
-+            }
-+        } else {
-+            quote! {
-+                #guard.let_binding()
-+            }
-+        };
--                #(#cfgs)*
--                #[allow(unused_variables)]
--                let #ident = #accessor;
--            });
--            guards.push(guard);
--            guard_attrs.push(cfgs);
--        }
-+        res.extend(quote! {
-+            #init
-+
-+            #(#cfgs)*
-+            // Create the drop guard.
-+            //
-+            // SAFETY:
-+            // - `&raw mut (*slot).#ident` is valid.
-+            // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
-+            // - `(*slot).#ident` has been initialized above.
-+            // - We only need the ownership to the pointee back when initialization has
-+            //   succeeded, where we `forget` the guard.
-+            let mut #guard = unsafe {
-+                ::pin_init::__internal::DropGuard::new(
-+                    &raw mut (*slot).#ident
-+                )
-+            };
-+
-+            #(#cfgs)*
-+            #[allow(unused_variables)]
-+            let #ident = #accessor;
-+        });
-+        guards.push(guard);
-+        guard_attrs.push(cfgs);
-     }
-     quote! {
-         #res
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-pin_data-add-struct-to-record.patch b/queue-7.1/rust-pin-init-internal-pin_data-add-struct-to-record.patch
deleted file mode 100644 (file)
index 5180cfd..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-From a678f28fb047cb3ba52191615ec0f0f09ad9ce86 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 May 2026 13:09:47 +0100
-Subject: rust: pin-init: internal: pin_data: add struct to record field info
-
-From: Mohamad Alsadhan <mo@sdhn.cc>
-
-[ Upstream commit 4b60f38cd2a4b2d3288377f25100f8d67015988a ]
-
-Introduce `FieldInfo` struct to encapsulate field and other relevant data,
-instead of carrying a pair of `(pinned, field)` in all places. This allows
-us to add more information to the struct in the future.
-
-Signed-off-by: Mohamad Alsadhan <mo@sdhn.cc>
-Co-developed-by: Gary Guo <gary@garyguo.net>
-Link: https://patch.msgid.link/20260512-pin-init-sync-v1-2-81963130dfbd@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/pin_data.rs | 53 ++++++++++++++++----------
- 1 file changed, 32 insertions(+), 21 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 93976d4f50a285..7e529fc4d276ef 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -35,6 +35,11 @@ impl Parse for Args {
-     }
- }
-+struct FieldInfo<'a> {
-+    field: &'a Field,
-+    pinned: bool,
-+}
-+
- pub(crate) fn pin_data(
-     args: Args,
-     input: Item,
-@@ -73,24 +78,30 @@ pub(crate) fn pin_data(
-     replacer.visit_generics_mut(&mut struct_.generics);
-     replacer.visit_fields_mut(&mut struct_.fields);
--    let fields: Vec<(bool, &Field)> = struct_
-+    let fields: Vec<FieldInfo<'_>> = struct_
-         .fields
-         .iter_mut()
-         .map(|field| {
-             let len = field.attrs.len();
-             field.attrs.retain(|a| !a.path().is_ident("pin"));
--            (len != field.attrs.len(), &*field)
-+            let pinned = len != field.attrs.len();
-+
-+            FieldInfo {
-+                field: &*field,
-+                pinned,
-+            }
-         })
-         .collect();
--    for (pinned, field) in &fields {
--        if !pinned && is_phantom_pinned(&field.ty) {
-+    for field in &fields {
-+        let ident = field.field.ident.as_ref().unwrap();
-+
-+        if !field.pinned && is_phantom_pinned(&field.field.ty) {
-             dcx.warn(
--                field,
-+                field.field,
-                 format!(
--                    "The field `{}` of type `PhantomPinned` only has an effect \
-+                    "The field `{ident}` of type `PhantomPinned` only has an effect \
-                     if it has the `#[pin]` attribute",
--                    field.ident.as_ref().unwrap(),
-                 ),
-             );
-         }
-@@ -143,7 +154,7 @@ fn is_phantom_pinned(ty: &Type) -> bool {
- fn generate_unpin_impl(
-     ident: &Ident,
-     generics: &Generics,
--    fields: &[(bool, &Field)],
-+    fields: &[FieldInfo<'_>],
- ) -> TokenStream {
-     let (_, ty_generics, _) = generics.split_for_impl();
-     let mut generics_with_pin_lt = generics.clone();
-@@ -160,7 +171,7 @@ fn generate_unpin_impl(
-     else {
-         unreachable!()
-     };
--    let pinned_fields = fields.iter().filter_map(|(b, f)| b.then_some(f));
-+    let pinned_fields = fields.iter().filter(|f| f.pinned).map(|f| f.field);
-     quote! {
-         // This struct will be used for the unpin analysis. It is needed, because only structurally
-         // pinned fields are relevant whether the struct should implement `Unpin`.
-@@ -238,7 +249,7 @@ fn generate_projections(
-     vis: &Visibility,
-     ident: &Ident,
-     generics: &Generics,
--    fields: &[(bool, &Field)],
-+    fields: &[FieldInfo<'_>],
- ) -> TokenStream {
-     let (impl_generics, ty_generics, _) = generics.split_for_impl();
-     let mut generics_with_pin_lt = generics.clone();
-@@ -249,21 +260,21 @@ fn generate_projections(
-     let (fields_decl, fields_proj): (Vec<_>, Vec<_>) = fields
-         .iter()
--        .map(|(pinned, field)| {
-+        .map(|field| {
-             let Field {
-                 vis,
-                 ident,
-                 ty,
-                 attrs,
-                 ..
--            } = field;
-+            } = &field.field;
-             let mut no_doc_attrs = attrs.clone();
-             no_doc_attrs.retain(|a| !a.path().is_ident("doc"));
-             let ident = ident
-                 .as_ref()
-                 .expect("only structs with named fields are supported");
--            if *pinned {
-+            if field.pinned {
-                 (
-                     quote!(
-                         #(#attrs)*
-@@ -291,12 +302,12 @@ fn generate_projections(
-         .collect();
-     let structurally_pinned_fields_docs = fields
-         .iter()
--        .filter_map(|(pinned, field)| pinned.then_some(field))
--        .map(|Field { ident, .. }| format!(" - `{}`", ident.as_ref().unwrap()));
-+        .filter(|f| f.pinned)
-+        .map(|f| format!(" - `{}`", f.field.ident.as_ref().unwrap()));
-     let not_structurally_pinned_fields_docs = fields
-         .iter()
--        .filter_map(|(pinned, field)| (!pinned).then_some(field))
--        .map(|Field { ident, .. }| format!(" - `{}`", ident.as_ref().unwrap()));
-+        .filter(|f| !f.pinned)
-+        .map(|f| format!(" - `{}`", f.field.ident.as_ref().unwrap()));
-     let docs = format!(" Pin-projections of [`{ident}`]");
-     quote! {
-         #[doc = #docs]
-@@ -336,7 +347,7 @@ fn generate_the_pin_data(
-     vis: &Visibility,
-     struct_name: &Ident,
-     generics: &Generics,
--    fields: &[(bool, &Field)],
-+    fields: &[FieldInfo<'_>],
- ) -> TokenStream {
-     let (impl_generics, ty_generics, whr) = generics.split_for_impl();
-@@ -347,20 +358,20 @@ fn generate_the_pin_data(
-     // The functions are `unsafe` to prevent accidentally calling them.
-     let field_accessors = fields
-         .iter()
--        .map(|(pinned, field)| {
-+        .map(|f| {
-             let Field {
-                 vis,
-                 ident,
-                 ty,
-                 attrs,
-                 ..
--            } = field;
-+            } = f.field;
-             let field_name = ident
-                 .as_ref()
-                 .expect("only structs with named fields are supported");
-             let project_ident = format_ident!("__project_{field_name}");
--            let (init_ty, init_fn, project_ty, project_body, pin_safety) = if *pinned {
-+            let (init_ty, init_fn, project_ty, project_body, pin_safety) = if f.pinned {
-                 (
-                     quote!(PinInit),
-                     quote!(__pinned_init),
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-pin_data-use-closure-for-hand.patch b/queue-7.1/rust-pin-init-internal-pin_data-use-closure-for-hand.patch
deleted file mode 100644 (file)
index 565842f..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-From 978a956693152d6a9adb9c35778a64e1dbc578ac Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 May 2026 13:09:46 +0100
-Subject: rust: pin-init: internal: pin_data: use closure for `handle_field`
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit 1e648c22abfe448d284314a0d05622a242ba4eac ]
-
-`handle_field` is currently a function, which precludes it from referencing
-things in the scope of the parent function. Given that it's only called
-once, inline its contents to the closure that invokes it instead, so it can
-directly reference `struct_name` without having to pass in as argument.
-
-Link: https://patch.msgid.link/20260512-pin-init-sync-v1-1-81963130dfbd@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/pin_data.rs | 144 ++++++++++++-------------
- 1 file changed, 70 insertions(+), 74 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 3e07b75903cb41..93976d4f50a285 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -334,7 +334,7 @@ fn generate_projections(
- fn generate_the_pin_data(
-     vis: &Visibility,
--    ident: &Ident,
-+    struct_name: &Ident,
-     generics: &Generics,
-     fields: &[(bool, &Field)],
- ) -> TokenStream {
-@@ -345,78 +345,74 @@ fn generate_the_pin_data(
-     // not structurally pinned, then it can be initialized via `Init`.
-     //
-     // The functions are `unsafe` to prevent accidentally calling them.
--    fn handle_field(
--        Field {
--            vis,
--            ident,
--            ty,
--            attrs,
--            ..
--        }: &Field,
--        struct_ident: &Ident,
--        pinned: bool,
--    ) -> TokenStream {
--        let ident = ident
--            .as_ref()
--            .expect("only structs with named fields are supported");
--        let project_ident = format_ident!("__project_{ident}");
--        let (init_ty, init_fn, project_ty, project_body, pin_safety) = if pinned {
--            (
--                quote!(PinInit),
--                quote!(__pinned_init),
--                quote!(::core::pin::Pin<&'__slot mut #ty>),
--                // SAFETY: this field is structurally pinned.
--                quote!(unsafe { ::core::pin::Pin::new_unchecked(slot) }),
--                quote!(
--                    /// - `slot` will not move until it is dropped, i.e. it will be pinned.
--                ),
--            )
--        } else {
--            (
--                quote!(Init),
--                quote!(__init),
--                quote!(&'__slot mut #ty),
--                quote!(slot),
--                quote!(),
--            )
--        };
--        let slot_safety = format!(
--            " `slot` points at the field `{ident}` inside of `{struct_ident}`, which is pinned.",
--        );
--        quote! {
--            /// # Safety
--            ///
--            /// - `slot` is a valid pointer to uninitialized memory.
--            /// - the caller does not touch `slot` when `Err` is returned, they are only permitted
--            ///   to deallocate.
--            #pin_safety
--            #(#attrs)*
--            #vis unsafe fn #ident<E>(
--                self,
--                slot: *mut #ty,
--                init: impl ::pin_init::#init_ty<#ty, E>,
--            ) -> ::core::result::Result<(), E> {
--                // SAFETY: this function has the same safety requirements as the __init function
--                // called below.
--                unsafe { ::pin_init::#init_ty::#init_fn(init, slot) }
--            }
--
--            /// # Safety
--            ///
--            #[doc = #slot_safety]
--            #(#attrs)*
--            #vis unsafe fn #project_ident<'__slot>(
--                self,
--                slot: &'__slot mut #ty,
--            ) -> #project_ty {
--                #project_body
--            }
--        }
--    }
--
-     let field_accessors = fields
-         .iter()
--        .map(|(pinned, field)| handle_field(field, ident, *pinned))
-+        .map(|(pinned, field)| {
-+            let Field {
-+                vis,
-+                ident,
-+                ty,
-+                attrs,
-+                ..
-+            } = field;
-+
-+            let field_name = ident
-+                .as_ref()
-+                .expect("only structs with named fields are supported");
-+            let project_ident = format_ident!("__project_{field_name}");
-+            let (init_ty, init_fn, project_ty, project_body, pin_safety) = if *pinned {
-+                (
-+                    quote!(PinInit),
-+                    quote!(__pinned_init),
-+                    quote!(::core::pin::Pin<&'__slot mut #ty>),
-+                    // SAFETY: this field is structurally pinned.
-+                    quote!(unsafe { ::core::pin::Pin::new_unchecked(slot) }),
-+                    quote!(
-+                        /// - `slot` will not move until it is dropped, i.e. it will be pinned.
-+                    ),
-+                )
-+            } else {
-+                (
-+                    quote!(Init),
-+                    quote!(__init),
-+                    quote!(&'__slot mut #ty),
-+                    quote!(slot),
-+                    quote!(),
-+                )
-+            };
-+            let slot_safety = format!(
-+                " `slot` points at the field `{field_name}` inside of `{struct_name}`, which is pinned.",
-+            );
-+            quote! {
-+                /// # Safety
-+                ///
-+                /// - `slot` is a valid pointer to uninitialized memory.
-+                /// - the caller does not touch `slot` when `Err` is returned, they are only
-+                ///   permitted to deallocate.
-+                #pin_safety
-+                #(#attrs)*
-+                #vis unsafe fn #field_name<E>(
-+                    self,
-+                    slot: *mut #ty,
-+                    init: impl ::pin_init::#init_ty<#ty, E>,
-+                ) -> ::core::result::Result<(), E> {
-+                    // SAFETY: this function has the same safety requirements as the __init function
-+                    // called below.
-+                    unsafe { ::pin_init::#init_ty::#init_fn(init, slot) }
-+                }
-+
-+                /// # Safety
-+                ///
-+                #[doc = #slot_safety]
-+                #(#attrs)*
-+                #vis unsafe fn #project_ident<'__slot>(
-+                    self,
-+                    slot: &'__slot mut #ty,
-+                ) -> #project_ty {
-+                    #project_body
-+                }
-+            }
-+        })
-         .collect::<TokenStream>();
-     quote! {
-         // We declare this struct which will host all of the projection function for our type. It
-@@ -426,7 +422,7 @@ fn generate_the_pin_data(
-             #whr
-         {
-             __phantom: ::core::marker::PhantomData<
--                fn(#ident #ty_generics) -> #ident #ty_generics
-+                fn(#struct_name #ty_generics) -> #struct_name #ty_generics
-             >,
-         }
-@@ -450,7 +446,7 @@ fn generate_the_pin_data(
-         // SAFETY: We have added the correct projection functions above to `__ThePinData` and
-         // we also use the least restrictive generics possible.
--        unsafe impl #impl_generics ::pin_init::__internal::HasPinData for #ident #ty_generics
-+        unsafe impl #impl_generics ::pin_init::__internal::HasPinData for #struct_name #ty_generics
-             #whr
-         {
-             type PinData = __ThePinData #ty_generics;
-@@ -464,7 +460,7 @@ fn generate_the_pin_data(
-         unsafe impl #impl_generics ::pin_init::__internal::PinData for __ThePinData #ty_generics
-             #whr
-         {
--            type Datee = #ident #ty_generics;
-+            type Datee = #struct_name #ty_generics;
-         }
-     }
- }
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-project-slots-instead-of-refe.patch b/queue-7.1/rust-pin-init-internal-project-slots-instead-of-refe.patch
deleted file mode 100644 (file)
index e912ecc..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-From 30dbb1fbdb3a094e0f162443771ce8d219210e00 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 May 2026 13:09:52 +0100
-Subject: rust: pin-init: internal: project slots instead of references
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit 5483a97dd2dfcaf8540dba0a80b68a400c4c1861 ]
-
-By projecting slots, the `pin_init!` and `init!` code path can be more
-unified. This also reduces the amount of macro-generated code and shifts
-them to the shared infrastructure.
-
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/init.rs     | 113 ++++++++-----------------
- rust/pin-init/internal/src/pin_data.rs |  54 +++---------
- rust/pin-init/src/__internal.rs        |  77 +++++++++++++++++
- rust/pin-init/src/lib.rs               |  12 +--
- 4 files changed, 133 insertions(+), 123 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
-index 025cc9405470bc..aba32825fef477 100644
---- a/rust/pin-init/internal/src/init.rs
-+++ b/rust/pin-init/internal/src/init.rs
-@@ -1,7 +1,7 @@
- // SPDX-License-Identifier: Apache-2.0 OR MIT
- use proc_macro2::{Span, TokenStream};
--use quote::{format_ident, quote, quote_spanned};
-+use quote::{format_ident, quote};
- use syn::{
-     braced,
-     parse::{End, Parse},
-@@ -252,102 +252,61 @@ fn init_fields(
-             }
-         };
--        let init = match kind {
--            InitializerKind::Value { ident, value } => {
--                let mut value_ident = ident.clone();
--                let value_prep = value.as_ref().map(|value| &value.1).map(|value| {
--                    // Setting the span of `value_ident` to `value`'s span improves error messages
--                    // when the type of `value` is wrong.
--                    value_ident.set_span(value.span());
--                    quote!(let #value_ident = #value;)
--                });
--                // Again span for better diagnostics
--                let write = quote_spanned!(ident.span()=> ::core::ptr::write);
--                quote! {
--                    #(#attrs)*
--                    {
--                        #value_prep
--                        // SAFETY: TODO
--                        unsafe { #write(&raw mut (*#slot).#ident, #value_ident) };
--                    }
--                }
--            }
--            InitializerKind::Init { ident, value, .. } => {
--                // Again span for better diagnostics
--                let init = format_ident!("init", span = value.span());
--                let value_init = if pinned {
--                    quote! {
--                        // SAFETY:
--                        // - `slot` is valid, because we are inside of an initializer closure, we
--                        //   return when an error/panic occurs.
--                        // - We also use `#data` to require the correct trait (`Init` or `PinInit`)
--                        //   for `#ident`.
--                        unsafe { #data.#ident(&raw mut (*#slot).#ident, #init)? };
--                    }
--                } else {
--                    quote! {
--                        // SAFETY: `slot` is valid, because we are inside of an initializer
--                        // closure, we return when an error/panic occurs.
--                        unsafe {
--                            ::pin_init::Init::__init(
--                                #init,
--                                &raw mut (*#slot).#ident,
--                            )?
--                        };
--                    }
--                };
--                quote! {
--                    #(#attrs)*
--                    {
--                        let #init = #value;
--                        #value_init
--                    }
--                }
--            }
--            InitializerKind::Code { .. } => unreachable!(),
--        };
--
--        // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
--        let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
--
--        let guard_creation = if pinned {
--            let project_ident = format_ident!("__project_{ident}");
-+        let slot = if pinned {
-             quote! {
-                 // SAFETY:
-                 // - `&raw mut (*slot).#ident` points to the `#ident` field of `slot`.
-                 // - `&raw mut (*slot).#ident` is valid.
-                 // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
--                // - `(*slot).#ident` has been initialized above.
--                // - We only need the ownership to the pointee back when initialization has
--                //   succeeded, where we `forget` the guard.
--                unsafe { #data.#project_ident(&raw mut (*slot).#ident) }
-+                // - `make_field_check` prevents `#ident` from being used twice, therefore
-+                //   `(*slot).#ident` is exclusively accessed and has not been initialized.
-+                (unsafe { #data.#ident(&raw mut (*#slot).#ident) })
-             }
-         } else {
-             quote! {
-+                // For `init!()` macro, everything is unpinned.
-                 // SAFETY:
-                 // - `&raw mut (*slot).#ident` is valid.
-                 // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
--                // - `(*slot).#ident` has been initialized above.
--                // - We only need the ownership to the pointee back when initialization has
--                //   succeeded, where we `forget` the guard.
--                unsafe {
--                    ::pin_init::__internal::DropGuard::<::pin_init::__internal::Unpinned, _>::new(
--                        &raw mut (*slot).#ident
-+                // - `make_field_check` prevents `#ident` from being used twice, therefore
-+                //   `(*slot).#ident` is exclusively accessed and has not been initialized.
-+                (unsafe {
-+                    ::pin_init::__internal::Slot::<::pin_init::__internal::Unpinned, _>::new(
-+                        &raw mut (*#slot).#ident
-                     )
-+                })
-+            }
-+        };
-+
-+        // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
-+        let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
-+
-+        let init = match kind {
-+            InitializerKind::Value { ident, value } => {
-+                let value = value
-+                    .as_ref()
-+                    .map(|(_, value)| quote!(#value))
-+                    .unwrap_or_else(|| quote!(#ident));
-+
-+                quote! {
-+                    #(#attrs)*
-+                    let mut #guard = #slot.write(#value);
-+
-                 }
-             }
-+            InitializerKind::Init { value, .. } => {
-+                quote! {
-+                    #(#attrs)*
-+                    let mut #guard = #slot.init(#value)?;
-+                }
-+            }
-+            InitializerKind::Code { .. } => unreachable!(),
-         };
-         res.extend(quote! {
-             #init
-             #(#cfgs)*
--            let mut #guard = #guard_creation;
--
--            #(#cfgs)*
--            // NOTE: The reference is derived from the guard so that it only lives as long as the
--            // guard does and cannot escape the scope. If it's created via `&mut (*#slot).#ident`
--            // like the unaligned field guard, it will become effectively `'static`.
-             #[allow(unused_variables)]
-             let #ident = #guard.let_binding();
-         });
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 86130db2ee9b73..31584152b06216 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -352,10 +352,9 @@ fn generate_the_pin_data(
-     let (impl_generics, ty_generics, whr) = generics.split_for_impl();
-     // For every field, we create an initializing projection function according to its projection
--    // type. If a field is structurally pinned, then it must be initialized via `PinInit`, if it is
--    // not structurally pinned, then it can be initialized via `Init`.
--    //
--    // The functions are `unsafe` to prevent accidentally calling them.
-+    // type. If a field is structurally pinned, we create a `Slot` with `Pinned` which must be
-+    // initialized via `PinInit`; if it is not structurally pinned, then we create a `Slot` with
-+    // `Unpinned` which allows initialization via `Init`.
-     let field_accessors = fields
-         .iter()
-         .map(|f| {
-@@ -370,54 +369,29 @@ fn generate_the_pin_data(
-             let field_name = ident
-                 .as_ref()
-                 .expect("only structs with named fields are supported");
--            let project_ident = format_ident!("__project_{field_name}");
--            let (init_ty, init_fn, pin_marker, pin_safety) = if f.pinned {
--                (
--                    quote!(PinInit),
--                    quote!(__pinned_init),
--                    quote!(Pinned),
--                    quote!(
--                        /// - `slot` will not move until it is dropped, i.e. it will be pinned.
--                    ),
--                )
-+            let pin_marker = if f.pinned {
-+                quote!(Pinned)
-             } else {
--                (quote!(Init), quote!(__init), quote!(Unpinned), quote!())
-+                quote!(Unpinned)
-             };
-             quote! {
-                 /// # Safety
-                 ///
--                /// - `slot` is a valid pointer to uninitialized memory.
--                /// - the caller does not touch `slot` when `Err` is returned, they are only
--                ///   permitted to deallocate.
--                #pin_safety
--                #(#attrs)*
--                #vis unsafe fn #field_name<E>(
--                    self,
--                    slot: *mut #ty,
--                    init: impl ::pin_init::#init_ty<#ty, E>,
--                ) -> ::core::result::Result<(), E> {
--                    // SAFETY: this function has the same safety requirements as the __init function
--                    // called below.
--                    unsafe { ::pin_init::#init_ty::#init_fn(init, slot) }
--                }
--
--                /// # Safety
--                ///
--                /// - `slot` points to a `#ident` field of a pinned struct that this `__ThePinData`
--                ///    describes.
--                /// - `slot` is valid and properly aligned.
--                /// - `*slot` is initialized, and the ownership is transferred to the returned
--                ///    guard.
-+                /// - `slot` points to a `#field_name` field of a pinned struct that this
-+                ///   `__ThePinData` describes.
-+                /// - `slot` is a valid, properly aligned and points to uninitialized and
-+                ///   exclusively accessed memory.
-                 #(#attrs)*
--                #vis unsafe fn #project_ident(
-+                #[inline(always)]
-+                #vis unsafe fn #field_name(
-                     self,
-                     slot: *mut #ty,
--                ) -> ::pin_init::__internal::DropGuard<::pin_init::__internal::#pin_marker, #ty> {
-+                ) -> ::pin_init::__internal::Slot<::pin_init::__internal::#pin_marker, #ty> {
-                     // SAFETY:
-                     // - If `#pin_marker` is `Pinned`, the corresponding field is structurally
-                     //   pinned.
-                     // - Other safety requirements follows the safety requirement.
--                    unsafe { ::pin_init::__internal::DropGuard::new(slot) }
-+                    unsafe { ::pin_init::__internal::Slot::new(slot) }
-                 }
-             }
-         })
-diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal.rs
-index 855acc67273139..879bc2307f7c0f 100644
---- a/rust/pin-init/src/__internal.rs
-+++ b/rust/pin-init/src/__internal.rs
-@@ -239,6 +239,83 @@ fn stack_init_reuse() {
- pub struct Pinned;
- pub struct Unpinned;
-+/// Represent an uninitialized field.
-+///
-+/// # Invariants
-+///
-+/// - `ptr` is valid, properly aligned and points to uninitialized and exclusively accessed memory.
-+/// - If `P` is `Pinned`, then `ptr` is structurally pinned.
-+pub struct Slot<P, T: ?Sized> {
-+    ptr: *mut T,
-+    _phantom: PhantomData<P>,
-+}
-+
-+impl<P, T: ?Sized> Slot<P, T> {
-+    /// # Safety
-+    ///
-+    /// - `ptr` is valid, properly aligned and points to uninitialized and exclusively accessed
-+    ///   memory.
-+    /// - If `P` is `Pinned`, then `ptr` is structurally pinned.
-+    #[inline(always)]
-+    pub unsafe fn new(ptr: *mut T) -> Self {
-+        // INVARIANT: Per safety requirement.
-+        Self {
-+            ptr,
-+            _phantom: PhantomData,
-+        }
-+    }
-+
-+    /// Initialize the field by value.
-+    #[inline(always)]
-+    pub fn write(self, value: T) -> DropGuard<P, T>
-+    where
-+        T: Sized,
-+    {
-+        // SAFETY: `self.ptr` is a valid and aligned pointer for write.
-+        unsafe { self.ptr.write(value) }
-+        // SAFETY:
-+        // - `self.ptr` is valid and properly aligned per type invariant.
-+        // - `*self.ptr` is initialized above and the ownership is transferred to the guard.
-+        // - If `P` is `Pinned`, `self.ptr` is pinned.
-+        unsafe { DropGuard::new(self.ptr) }
-+    }
-+}
-+
-+impl<T: ?Sized> Slot<Unpinned, T> {
-+    /// Initialize the field.
-+    #[inline(always)]
-+    pub fn init<E>(self, init: impl Init<T, E>) -> Result<DropGuard<Unpinned, T>, E> {
-+        // SAFETY:
-+        // - `self.ptr` is valid and properly aligned.
-+        // - when `Err` is returned, we also propagate the error without touching `slot`;
-+        //   also `self` is consumed so it cannot be touched further.
-+        unsafe { init.__init(self.ptr)? };
-+
-+        // SAFETY:
-+        // - `self.ptr` is valid and properly aligned per type invariant.
-+        // - `*self.ptr` is initialized above and the ownership is transferred to the guard.
-+        Ok(unsafe { DropGuard::new(self.ptr) })
-+    }
-+}
-+
-+impl<T: ?Sized> Slot<Pinned, T> {
-+    /// Initialize the field.
-+    #[inline(always)]
-+    pub fn init<E>(self, init: impl PinInit<T, E>) -> Result<DropGuard<Pinned, T>, E> {
-+        // SAFETY:
-+        // - `self.ptr` is valid and properly aligned.
-+        // - when `Err` is returned, we also propagate the error without touching `ptr`;
-+        //   also `self` is consumed so it cannot be touched further.
-+        // - the drop guard will not hand out `&mut` (only `Pin<&mut T>`).
-+        unsafe { init.__pinned_init(self.ptr)? };
-+
-+        // SAFETY:
-+        // - `self.ptr` is valid, properly aligned and pinned per type invariant.
-+        // - `*self.ptr` is initialized above and the ownership is transferred to the guard.
-+        Ok(unsafe { DropGuard::new(self.ptr) })
-+    }
-+}
-+
- /// When a value of this type is dropped, it drops a `T`.
- ///
- /// Can be forgotten to prevent the drop.
-diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs
-index 64eec095c859c0..06e67de0d69feb 100644
---- a/rust/pin-init/src/lib.rs
-+++ b/rust/pin-init/src/lib.rs
-@@ -873,12 +873,12 @@ pub use pin_init_internal::init;
- #[macro_export]
- macro_rules! assert_pinned {
-     ($ty:ty, $field:ident, $field_ty:ty, inline) => {
--        let _ = move |ptr: *mut $field_ty| {
--            // SAFETY: This code is unreachable.
--            let data = unsafe { <$ty as $crate::__internal::HasPinData>::__pin_data() };
--            let init = $crate::__internal::AlwaysFail::<$field_ty>::new();
--            // SAFETY: This code is unreachable.
--            unsafe { data.$field(ptr, init) }.ok();
-+        // SAFETY: This code is unreachable.
-+        let _ = move |ptr: *mut $field_ty| unsafe {
-+            let data = <$ty as $crate::__internal::HasPinData>::__pin_data();
-+            _ = data
-+                .$field(ptr)
-+                .init($crate::__internal::AlwaysFail::<$field_ty>::new());
-         };
-     };
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-remove-collect_tuple-polyfill.patch b/queue-7.1/rust-pin-init-internal-remove-collect_tuple-polyfill.patch
deleted file mode 100644 (file)
index e09bbc4..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-From 44c55d989c24146d2a12dff63a1550012c4c0db7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 1 May 2026 14:44:45 +0100
-Subject: rust: pin-init: internal: remove `collect_tuple` polyfill after MSRV
- bump
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit faed81945d0bfcced81a2738d9681a265d41079a ]
-
-Tuples implement `FromIterator` since Rust 1.79. Remove the `collect_tuple`
-polyfill now the MSRV is above 1.79.
-
-To avoid over-identing the closure, I move the `Field` destructure from the
-closure parameter to a let binding. This keeps the diff small.
-
-Link: https://patch.msgid.link/20260501134445.3809731-1-gary@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/pin_data.rs | 27 ++++++++------------------
- 1 file changed, 8 insertions(+), 19 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 2971e4f303828c..3e07b75903cb41 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -247,17 +247,17 @@ fn generate_projections(
-     let projection = format_ident!("{ident}Projection");
-     let this = format_ident!("this");
--    let (fields_decl, fields_proj) = collect_tuple(fields.iter().map(
--        |(
--            pinned,
--            Field {
-+    let (fields_decl, fields_proj): (Vec<_>, Vec<_>) = fields
-+        .iter()
-+        .map(|(pinned, field)| {
-+            let Field {
-                 vis,
-                 ident,
-                 ty,
-                 attrs,
-                 ..
--            },
--        )| {
-+            } = field;
-+
-             let mut no_doc_attrs = attrs.clone();
-             no_doc_attrs.retain(|a| !a.path().is_ident("doc"));
-             let ident = ident
-@@ -287,8 +287,8 @@ fn generate_projections(
-                     ),
-                 )
-             }
--        },
--    ));
-+        })
-+        .collect();
-     let structurally_pinned_fields_docs = fields
-         .iter()
-         .filter_map(|(pinned, field)| pinned.then_some(field))
-@@ -496,14 +496,3 @@ impl VisitMut for SelfReplacer {
-         // Do not descend into items, since items reset/change what `Self` refers to.
-     }
- }
--
--// replace with `.collect()` once MSRV is above 1.79
--fn collect_tuple<A, B>(iter: impl Iterator<Item = (A, B)>) -> (Vec<A>, Vec<B>) {
--    let mut res_a = vec![];
--    let mut res_b = vec![];
--    for (a, b) in iter {
--        res_a.push(a);
--        res_b.push(b);
--    }
--    (res_a, res_b)
--}
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-remove-redundant-pin-filterin.patch b/queue-7.1/rust-pin-init-internal-remove-redundant-pin-filterin.patch
deleted file mode 100644 (file)
index 1591911..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6f71978b7a77894d2eda9aa9be746d6bb873711e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 28 Apr 2026 14:10:55 +0100
-Subject: rust: pin-init: internal: remove redundant `#[pin]` filtering
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit c64c793d9a162768a78f98f99774b5df6d360d0b ]
-
-The `generate_projections` and `generate_the_pin_data` function already
-receive filtered field lists, they do not need to filter out `#[pin]`
-again.
-
-Reviewed-by: Benno Lossin <lossin@kernel.org>
-Link: https://patch.msgid.link/20260428-pin-init-sync-v1-6-07f9bd3859fb@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/pin_data.rs | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 7d871236b49c7e..db32c90b84519b 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -258,8 +258,6 @@ fn generate_projections(
-                 ..
-             },
-         )| {
--            let mut attrs = attrs.clone();
--            attrs.retain(|a| !a.path().is_ident("pin"));
-             let mut no_doc_attrs = attrs.clone();
-             no_doc_attrs.retain(|a| !a.path().is_ident("doc"));
-             let ident = ident
-@@ -358,8 +356,6 @@ fn generate_the_pin_data(
-         struct_ident: &Ident,
-         pinned: bool,
-     ) -> TokenStream {
--        let mut attrs = attrs.clone();
--        attrs.retain(|a| !a.path().is_ident("pin"));
-         let ident = ident
-             .as_ref()
-             .expect("only structs with named fields are supported");
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-suppress-non_snake_case-lint-.patch b/queue-7.1/rust-pin-init-internal-suppress-non_snake_case-lint-.patch
deleted file mode 100644 (file)
index 83111b4..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-From 54db70c2ed9fb176f2f097a04c55b67071dc0db7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 27 May 2026 18:19:54 +0100
-Subject: rust: pin-init: internal: suppress `non_snake_case` lint in
- `[pin_]init!`
-
-From: Mirko Adzic <adzicmirko97@gmail.com>
-
-[ Upstream commit 5423ef9d4db852835746001d0840231227bb0e39 ]
-
-Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
-
-Conceptually the identifiers in `[pin_]init!` just references the field
-names, and are not defining them, so the warning should not be generated,
-similar to how constructing a struct with non-snake-case field names do no
-generate these warnings.
-
-Reported-by: Gary Guo <gary@garyguo.net>
-Closes: https://github.com/Rust-for-Linux/pin-init/issues/125
-Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
-Fixes: 42415d163e5d ("rust: pin-init: add references to previously initialized fields")
-Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
-[ Reworded commit message - Gary ]
-Link: https://patch.msgid.link/20260527-pin-init-sync-v1-3-e20335ed2501@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/init.rs | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
-index aba32825fef477..45528ab82f6a82 100644
---- a/rust/pin-init/internal/src/init.rs
-+++ b/rust/pin-init/internal/src/init.rs
-@@ -307,7 +307,9 @@ fn init_fields(
-             #init
-             #(#cfgs)*
--            #[allow(unused_variables)]
-+            // Allow `non_snake_case` since the same warning is going to be reported for the struct
-+            // field.
-+            #[allow(unused_variables, non_snake_case)]
-             let #ident = #guard.let_binding();
-         });
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-turn-phantompinned-error-into.patch b/queue-7.1/rust-pin-init-internal-turn-phantompinned-error-into.patch
deleted file mode 100644 (file)
index 2830e4c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-From cde5c6418a785071df4fdb205d440d24bc839726 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 28 Apr 2026 14:10:59 +0100
-Subject: rust: pin-init: internal: turn `PhantomPinned` error into warnings
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit e5cece935531997cd9903c129cc9a2471ed05a4b ]
-
-The `PhantomPinned` detection is just a lint, and is emitted as an error
-because there is no `compile_warning!()` macro, and
-`proc-macro-diagnostics` is not stable.
-
-Use of `#[deprecated = ""]` attribute to approximate custom proc-macro
-warnings. A new line is added before message for visual clarity.
-
-An example warning with this trick looks like this:
-
-    warning: use of deprecated function `_::warn`:
-             The field `pin` of type `PhantomPinned` only has an effect if it has the `#[pin]` attribute
-     --> test.rs:9:5
-      |
-    9 |     pin: marker::PhantomPinned,
-      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Suggested-by: Benno Lossin <lossin@kernel.org>
-Link: https://github.com/Rust-for-Linux/pin-init/issues/51
-Link: https://patch.msgid.link/20260428-pin-init-sync-v1-10-07f9bd3859fb@garyguo.net
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/diagnostics.rs | 14 ++++++++++++++
- rust/pin-init/internal/src/pin_data.rs    |  2 +-
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/rust/pin-init/internal/src/diagnostics.rs b/rust/pin-init/internal/src/diagnostics.rs
-index 3bdb477c2f2b8c..c7d9b3e624fc8a 100644
---- a/rust/pin-init/internal/src/diagnostics.rs
-+++ b/rust/pin-init/internal/src/diagnostics.rs
-@@ -3,6 +3,7 @@
- use std::fmt::Display;
- use proc_macro2::TokenStream;
-+use quote::quote_spanned;
- use syn::{spanned::Spanned, Error};
- pub(crate) struct DiagCtxt(TokenStream);
-@@ -15,6 +16,19 @@ impl DiagCtxt {
-         ErrorGuaranteed(())
-     }
-+    pub(crate) fn warn(&mut self, span: impl Spanned, msg: impl Display) {
-+        // Have the message start on a new line for visual clarity.
-+        let msg = format!("\n{}", msg);
-+        self.0.extend(quote_spanned!(span.span() =>
-+            // Approximate using deprecated warning while `proc_macro_diagnostic` is unstable.
-+            const _: () = {
-+                #[deprecated = #msg]
-+                const fn warn() {}
-+                warn();
-+            };
-+        ));
-+    }
-+
-     pub(crate) fn with(
-         fun: impl FnOnce(&mut DiagCtxt) -> Result<TokenStream, ErrorGuaranteed>,
-     ) -> TokenStream {
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index db32c90b84519b..2971e4f303828c 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -85,7 +85,7 @@ pub(crate) fn pin_data(
-     for (pinned, field) in &fields {
-         if !pinned && is_phantom_pinned(&field.ty) {
--            dcx.error(
-+            dcx.warn(
-                 field,
-                 format!(
-                     "The field `{}` of type `PhantomPinned` only has an effect \
--- 
-2.53.0
-
diff --git a/queue-7.1/rust-pin-init-internal-use-marker-on-drop-guard-type.patch b/queue-7.1/rust-pin-init-internal-use-marker-on-drop-guard-type.patch
deleted file mode 100644 (file)
index 343e611..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-From 8b6b3effce45539265a0b96deeaecaa1bebbe6b3 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 May 2026 13:09:50 +0100
-Subject: rust: pin-init: internal: use marker on drop guard type for pinned
- fields
-
-From: Gary Guo <gary@garyguo.net>
-
-[ Upstream commit 27693a56e8a697f78db535aad2d5267f286e1f51 ]
-
-Instead of projecting the created reference, simply create drop guards with
-different marker types and have the `let_binding()` method of guards of
-different marker produce different type instead.
-
-This allows more flexible lifetime as this is now controlled by the guard.
-This will be needed when implementing self-referential fields.
-
-Signed-off-by: Gary Guo <gary@garyguo.net>
-Stable-dep-of: 5423ef9d4db8 ("rust: pin-init: internal: suppress `non_snake_case` lint in `[pin_]init!`")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- rust/pin-init/internal/src/init.rs     | 47 ++++++++++++++------------
- rust/pin-init/internal/src/pin_data.rs | 35 +++++++++----------
- rust/pin-init/src/__internal.rs        | 30 +++++++++++++---
- 3 files changed, 68 insertions(+), 44 deletions(-)
-
-diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs
-index 0e19169d022ad9..025cc9405470bc 100644
---- a/rust/pin-init/internal/src/init.rs
-+++ b/rust/pin-init/internal/src/init.rs
-@@ -310,18 +310,31 @@ fn init_fields(
-         // `mixed_site` ensures that the guard is not accessible to the user-controlled code.
-         let guard = format_ident!("__{ident}_guard", span = Span::mixed_site());
--        // NOTE: The reference is derived from the guard so that it only lives as long as the
--        // guard does and cannot escape the scope. If it's created via `&mut (*#slot).#ident`
--        // like the unaligned field guard, it will become effectively `'static`.
--        let accessor = if pinned {
-+        let guard_creation = if pinned {
-             let project_ident = format_ident!("__project_{ident}");
-             quote! {
--                // SAFETY: the initialization is pinned.
--                unsafe { #data.#project_ident(#guard.let_binding()) }
-+                // SAFETY:
-+                // - `&raw mut (*slot).#ident` points to the `#ident` field of `slot`.
-+                // - `&raw mut (*slot).#ident` is valid.
-+                // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
-+                // - `(*slot).#ident` has been initialized above.
-+                // - We only need the ownership to the pointee back when initialization has
-+                //   succeeded, where we `forget` the guard.
-+                unsafe { #data.#project_ident(&raw mut (*slot).#ident) }
-             }
-         } else {
-             quote! {
--                #guard.let_binding()
-+                // SAFETY:
-+                // - `&raw mut (*slot).#ident` is valid.
-+                // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
-+                // - `(*slot).#ident` has been initialized above.
-+                // - We only need the ownership to the pointee back when initialization has
-+                //   succeeded, where we `forget` the guard.
-+                unsafe {
-+                    ::pin_init::__internal::DropGuard::<::pin_init::__internal::Unpinned, _>::new(
-+                        &raw mut (*slot).#ident
-+                    )
-+                }
-             }
-         };
-@@ -329,24 +342,16 @@ fn init_fields(
-             #init
-             #(#cfgs)*
--            // Create the drop guard.
--            //
--            // SAFETY:
--            // - `&raw mut (*slot).#ident` is valid.
--            // - `make_field_check` checks that `&raw mut (*slot).#ident` is properly aligned.
--            // - `(*slot).#ident` has been initialized above.
--            // - We only need the ownership to the pointee back when initialization has
--            //   succeeded, where we `forget` the guard.
--            let mut #guard = unsafe {
--                ::pin_init::__internal::DropGuard::new(
--                    &raw mut (*slot).#ident
--                )
--            };
-+            let mut #guard = #guard_creation;
-             #(#cfgs)*
-+            // NOTE: The reference is derived from the guard so that it only lives as long as the
-+            // guard does and cannot escape the scope. If it's created via `&mut (*#slot).#ident`
-+            // like the unaligned field guard, it will become effectively `'static`.
-             #[allow(unused_variables)]
--            let #ident = #accessor;
-+            let #ident = #guard.let_binding();
-         });
-+
-         guards.push(guard);
-         guard_attrs.push(cfgs);
-     }
-diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/internal/src/pin_data.rs
-index 7e529fc4d276ef..86130db2ee9b73 100644
---- a/rust/pin-init/internal/src/pin_data.rs
-+++ b/rust/pin-init/internal/src/pin_data.rs
-@@ -371,29 +371,18 @@ fn generate_the_pin_data(
-                 .as_ref()
-                 .expect("only structs with named fields are supported");
-             let project_ident = format_ident!("__project_{field_name}");
--            let (init_ty, init_fn, project_ty, project_body, pin_safety) = if f.pinned {
-+            let (init_ty, init_fn, pin_marker, pin_safety) = if f.pinned {
-                 (
-                     quote!(PinInit),
-                     quote!(__pinned_init),
--                    quote!(::core::pin::Pin<&'__slot mut #ty>),
--                    // SAFETY: this field is structurally pinned.
--                    quote!(unsafe { ::core::pin::Pin::new_unchecked(slot) }),
-+                    quote!(Pinned),
-                     quote!(
-                         /// - `slot` will not move until it is dropped, i.e. it will be pinned.
-                     ),
-                 )
-             } else {
--                (
--                    quote!(Init),
--                    quote!(__init),
--                    quote!(&'__slot mut #ty),
--                    quote!(slot),
--                    quote!(),
--                )
-+                (quote!(Init), quote!(__init), quote!(Unpinned), quote!())
-             };
--            let slot_safety = format!(
--                " `slot` points at the field `{field_name}` inside of `{struct_name}`, which is pinned.",
--            );
-             quote! {
-                 /// # Safety
-                 ///
-@@ -414,13 +403,21 @@ fn generate_the_pin_data(
-                 /// # Safety
-                 ///
--                #[doc = #slot_safety]
-+                /// - `slot` points to a `#ident` field of a pinned struct that this `__ThePinData`
-+                ///    describes.
-+                /// - `slot` is valid and properly aligned.
-+                /// - `*slot` is initialized, and the ownership is transferred to the returned
-+                ///    guard.
-                 #(#attrs)*
--                #vis unsafe fn #project_ident<'__slot>(
-+                #vis unsafe fn #project_ident(
-                     self,
--                    slot: &'__slot mut #ty,
--                ) -> #project_ty {
--                    #project_body
-+                    slot: *mut #ty,
-+                ) -> ::pin_init::__internal::DropGuard<::pin_init::__internal::#pin_marker, #ty> {
-+                    // SAFETY:
-+                    // - If `#pin_marker` is `Pinned`, the corresponding field is structurally
-+                    //   pinned.
-+                    // - Other safety requirements follows the safety requirement.
-+                    unsafe { ::pin_init::__internal::DropGuard::new(slot) }
-                 }
-             }
-         })
-diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal.rs
-index 5720a621aed74b..855acc67273139 100644
---- a/rust/pin-init/src/__internal.rs
-+++ b/rust/pin-init/src/__internal.rs
-@@ -235,6 +235,10 @@ fn stack_init_reuse() {
-     println!("{value:?}");
- }
-+// Marker types that determines type of `DropGuard`'s let bindings.
-+pub struct Pinned;
-+pub struct Unpinned;
-+
- /// When a value of this type is dropped, it drops a `T`.
- ///
- /// Can be forgotten to prevent the drop.
-@@ -243,11 +247,13 @@ fn stack_init_reuse() {
- ///
- /// - `ptr` is valid and properly aligned.
- /// - `*ptr` is initialized and owned by this guard.
--pub struct DropGuard<T: ?Sized> {
-+/// - if `P` is `Pinned`, `ptr` is pinned.
-+pub struct DropGuard<P, T: ?Sized> {
-     ptr: *mut T,
-+    phantom: PhantomData<P>,
- }
--impl<T: ?Sized> DropGuard<T> {
-+impl<P, T: ?Sized> DropGuard<P, T> {
-     /// Creates a drop guard and transfer the ownership of the pointer content.
-     ///
-     /// The ownership is only relinguished if the guard is forgotten via [`core::mem::forget`].
-@@ -256,12 +262,18 @@ impl<T: ?Sized> DropGuard<T> {
-     ///
-     /// - `ptr` is valid and properly aligned.
-     /// - `*ptr` is initialized, and the ownership is transferred to this guard.
-+    /// - if `P` is `Pinned`, `ptr` is pinned.
-     #[inline]
-     pub unsafe fn new(ptr: *mut T) -> Self {
-         // INVARIANT: By safety requirement.
--        Self { ptr }
-+        Self {
-+            ptr,
-+            phantom: PhantomData,
-+        }
-     }
-+}
-+impl<T: ?Sized> DropGuard<Unpinned, T> {
-     /// Create a let binding for accessor use.
-     #[inline]
-     pub fn let_binding(&mut self) -> &mut T {
-@@ -270,7 +282,17 @@ impl<T: ?Sized> DropGuard<T> {
-     }
- }
--impl<T: ?Sized> Drop for DropGuard<T> {
-+impl<T: ?Sized> DropGuard<Pinned, T> {
-+    /// Create a let binding for accessor use.
-+    #[inline]
-+    pub fn let_binding(&mut self) -> Pin<&mut T> {
-+        // SAFETY: `self.ptr` is valid, properly aligned, initialized, exclusively accessible and
-+        // pinned per type invariant.
-+        unsafe { Pin::new_unchecked(&mut *self.ptr) }
-+    }
-+}
-+
-+impl<P, T: ?Sized> Drop for DropGuard<P, T> {
-     #[inline]
-     fn drop(&mut self) {
-         // SAFETY: `self.ptr` is valid, properly aligned and `*self.ptr` is owned by this guard.
--- 
-2.53.0
-
diff --git a/queue-7.1/scsi-advansys-drop-isa_dma_api-remnants.patch b/queue-7.1/scsi-advansys-drop-isa_dma_api-remnants.patch
deleted file mode 100644 (file)
index bb8d1c6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 0ab7d2f2122293e0c78b5c93a1b8013d1d893662 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Apr 2026 17:15:37 +0200
-Subject: scsi: advansys: Drop ISA_DMA_API remnants
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit c7233b3d99db9760daf07c4e95daa9675c6c0cba ]
-
-Support for ISA bus mastering was removed a few years ago, and the VLB
-mode does not use the ISA DMA API, so drop the dependency and the header
-inclusion.
-
-Fixes: 9b4c8eaa68d0 ("advansys: remove ISA support")
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
-Link: https://patch.msgid.link/20260429151623.3899875-1-arnd@kernel.org
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/Kconfig    | 1 -
- drivers/scsi/advansys.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
-index fc8e8b0bfa3912..c3042393af234f 100644
---- a/drivers/scsi/Kconfig
-+++ b/drivers/scsi/Kconfig
-@@ -474,7 +474,6 @@ config SCSI_ADVANSYS
-       tristate "AdvanSys SCSI support"
-       depends on SCSI
-       depends on (ISA || EISA || PCI) && HAS_IOPORT
--      depends on ISA_DMA_API || !ISA
-       help
-         This is a driver for all SCSI host adapters manufactured by
-         AdvanSys. It is documented in the kernel source in
-diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
-index fcf059bf41e855..5cdbf2bdb13df4 100644
---- a/drivers/scsi/advansys.c
-+++ b/drivers/scsi/advansys.c
-@@ -36,7 +36,6 @@
- #include <linux/dmapool.h>
- #include <asm/io.h>
--#include <asm/dma.h>
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
--- 
-2.53.0
-
index e550e42976a2315484dba74f73146cba8b1762e4..42a1103da7011c4ad66246f1d7bdbafb4e196e7a 100644 (file)
@@ -106,7 +106,6 @@ kconfig-fix-potential-null-pointer-dereference-in-co.patch
 soc-xilinx-fix-race-condition-in-event-registration.patch
 soc-xilinx-shutdown-and-free-rx-mailbox-channel.patch
 pinctrl-mediatek-eint-drop-base-from-mtk_eint_chip_w.patch
-scsi-advansys-drop-isa_dma_api-remnants.patch
 wifi-ath9k-fix-oob-access-from-firmware-tx-status-qu.patch
 wifi-ath11k-cancel-ssr-work-items-during-pci-shutdow.patch
 arm-dts-am335x-sl50-fix-audio-bitclock-and-frame-mas.patch
@@ -380,15 +379,6 @@ edac-igen6-fix-memory-topology-parsing-for-panther-l.patch
 edac-skx_common-skx-fix-ubsan-shift-out-of-bounds-in.patch
 arm64-dts-st-fix-sai-addresses-on-stm32mp251.patch
 arm-dts-bcm2711-fix-typo-in-gpio-line-names.patch
-rust-pin-init-internal-remove-redundant-pin-filterin.patch
-rust-pin-init-internal-turn-phantompinned-error-into.patch
-rust-pin-init-internal-remove-collect_tuple-polyfill.patch
-rust-pin-init-internal-pin_data-use-closure-for-hand.patch
-rust-pin-init-internal-pin_data-add-struct-to-record.patch
-rust-pin-init-internal-init-handle-code-blocks-early.patch
-rust-pin-init-internal-use-marker-on-drop-guard-type.patch
-rust-pin-init-internal-project-slots-instead-of-refe.patch
-rust-pin-init-internal-suppress-non_snake_case-lint-.patch
 rdma-umem-add-ib_umem_is_contiguous-stub-for-config_.patch
 rdma-rxe-fix-toctou-heap-overflow-in-get_srq_wqe.patch
 rdma-rxe-copy-wqe-to-local-buffer-in-non-srq-receive.patch
@@ -800,14 +790,12 @@ powerpc-perf-fix-preempt-count-underflow-in-fsl_emb_.patch
 powerpc-powernv-fix-preempt-count-leak-in-pnv_kexec_.patch
 powerpc-kexec-fix-double-get_cpu-imbalance-in-kexec_.patch
 keys-use-acquire-when-reading-state-in-keyring-searc.patch
-dt-bindings-vendor-prefixes-add-gira.patch
 tipc-fix-uaf-in-tipc_l2_send_msg.patch
 tcp-ipv6-clamp-default-adverting-mss-to-avoid-gso_by.patch
 net-airoha-fix-always-true-condition-in-ppe1-queue-r.patch
 net-ti-icssg-prueth-fix-af_xdp-fill-ring-alloc-and-w.patch
 net-ti-icssg-use-undirected-tx-tag-for-native-xdp-in.patch
 net-ti-icssg-use-undirected-tx-tag-for-xdp-zero-copy.patch
-net-ethernet-oa_tc6-interrupt-is-active-low-level-tr.patch
 net-ethernet-oa_tc6-mdiobus-parent-initialized-with-.patch
 net-ethernet-oa_tc6-remove-fcs-size-in-rx-frame.patch
 dt-bindings-net-updated-interrupt-type-to-be-active-.patch