xenomai.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels
@ 2023-08-31 20:37 Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 01/19] Account for switch to pde_data in 5.17 Florian Bezdeka
                   ` (19 more replies)
  0 siblings, 20 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

Hi all,

with this series applied the stable/3.2.x branch gets buildable with
the 6.1 LTS series of Linux / dovetail.

Most of the patches were taken 1:1 from the master branch. The commit id
on the master branch is mentioned in each patch / commit.

The last patch is a manual backport to support 4.19 kernels. The
referenced commit in master did not have to care about such old kernels.
We already stopped supporting them in master. Please review carefully!

Best regards,
Florian

Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
Florian Bezdeka (4):
      cobalt: Adjust dev_addr_set wrapper to 5.10, 5.1 and 4.19 backports
      cobalt/pipe: Allow building with kernels up to 6.1
      cobalt/x86: Allow building with kernels up to 6.1
      drivers/spi: Add support for kernels < 5.1

Jan Kiszka (15):
      Account for switch to pde_data in 5.17
      Use linux/stddef.h instead of toolchain header
      drivers/serial/16550A: Account for privatized defines in 5.17
      drivers/net: Switch to dev_addr_set and eth_hw_addr_set
      drivers: Convert pci_set_*dma_mask to DMA API
      drivers: Convert pci_alloc/free_consistent to DMA API
      drivers: Convert pci_map/unmap_single/page to DMA API
      drivers: Convert pci_dma_sync_single_for_cpu/device to DMA API
      cobalt: Resolve cast-function-type warnings
      drivers/net/experimental/e1000: Use fallthrough
      drivers/spi: Convert to GPIO descriptor API
      drivers/spi: Switch to spi_controller API
      drivers/spi: Account for dropped return value of spi_driver.remove
      drivers/testing/heapcheck: Replace prandom_u32 with custom implementation
      drivers/net/pcnet32: Adjust for kernel 6.1

 .../arch/x86/include/asm/xenomai/syscall32.h       |   3 +-
 .../cobalt/arch/x86/include/asm/xenomai/wrappers.h |   4 +-
 .../cobalt/include/asm-generic/xenomai/wrappers.h  |  15 +++
 kernel/cobalt/pipe.c                               |   1 +
 kernel/cobalt/posix/sem.c                          |   2 +-
 kernel/cobalt/posix/syscall.c                      |   3 +-
 kernel/cobalt/rtdm/device.c                        |  10 +-
 kernel/cobalt/rtdm/fd.c                            |   2 +-
 kernel/cobalt/vfile.c                              |   8 +-
 kernel/drivers/analogy/device.c                    |   2 +-
 kernel/drivers/analogy/national_instruments/mite.c |  12 +-
 kernel/drivers/analogy/national_instruments/mite.h |   4 +-
 kernel/drivers/can/rtcan_module.c                  |   4 +-
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c    |   2 +-
 kernel/drivers/net/addons/cap.c                    |   5 +-
 kernel/drivers/net/addons/proxy.c                  |   2 +-
 kernel/drivers/net/drivers/8139too.c               |  18 ++-
 kernel/drivers/net/drivers/e1000/e1000_main.c      |  84 ++++++++------
 kernel/drivers/net/drivers/eepro100.c              |  75 +++++++------
 kernel/drivers/net/drivers/experimental/3c59x.c    |  21 ++--
 .../net/drivers/experimental/e1000/e1000_82540.c   |   2 +-
 .../net/drivers/experimental/e1000/e1000_82571.c   |   2 +-
 .../net/drivers/experimental/e1000/e1000_ethtool.c |  14 ++-
 .../net/drivers/experimental/e1000/e1000_main.c    | 122 +++++++++++----------
 .../net/drivers/experimental/rt2500/rt2500pci.c    |   4 +-
 kernel/drivers/net/drivers/freescale/fec_main.c    |  11 +-
 kernel/drivers/net/drivers/natsemi.c               |  35 +++---
 kernel/drivers/net/drivers/pcnet32.c               |  57 +++++-----
 kernel/drivers/net/drivers/r8169.c                 |  36 +++---
 kernel/drivers/net/drivers/tulip/interrupt.c       |  18 +--
 kernel/drivers/net/drivers/tulip/tulip_core.c      |  51 +++++----
 kernel/drivers/net/drivers/via-rhine.c             |  71 ++++++------
 kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c   |   4 +-
 kernel/drivers/net/stack/rtmac/rtmac_vnic.c        |   5 +-
 kernel/drivers/serial/16550A_pci.h                 |  19 +++-
 kernel/drivers/spi/spi-bcm2835.c                   |  63 +++++++----
 kernel/drivers/spi/spi-device.c                    |  61 +++++++----
 kernel/drivers/spi/spi-device.h                    |   1 -
 kernel/drivers/spi/spi-master.c                    |  31 +++---
 kernel/drivers/spi/spi-master.h                    |   2 +-
 kernel/drivers/spi/spi-omap2-mcspi-rt.c            |  20 ++--
 kernel/drivers/spi/spi-sun6i.c                     |  24 ++--
 kernel/drivers/testing/heapcheck.c                 |  14 ++-
 43 files changed, 542 insertions(+), 402 deletions(-)
---
base-commit: ee85e330c26c72974d57d4130c24e3369f1d85c4
change-id: 20230828-florian-enable-stable-3-2-for-6-1-c0d84de8ff55

Best regards,
-- 
Florian Bezdeka <florian.bezdeka@siemens.com>


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 01/19] Account for switch to pde_data in 5.17
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 02/19] Use linux/stddef.h instead of toolchain header Florian Bezdeka
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 142a88155d2b96ab859a0ed5c86ffe2eb2a16053 ]

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 4 ++++
 kernel/cobalt/vfile.c                                | 8 ++++----
 kernel/drivers/analogy/device.c                      | 2 +-
 kernel/drivers/can/rtcan_module.c                    | 4 ++--
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c      | 2 +-
 5 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index 05dd6c8c5..99059d2e9 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -252,4 +252,8 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 #define close_fd(__ufd)	__close_fd(current->files, __ufd)
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+#define pde_data(i)	PDE_DATA(i)
+#endif
+
 #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */
diff --git a/kernel/cobalt/vfile.c b/kernel/cobalt/vfile.c
index a0ec5cad1..05fa48a09 100644
--- a/kernel/cobalt/vfile.c
+++ b/kernel/cobalt/vfile.c
@@ -146,7 +146,7 @@ static void vfile_snapshot_free(struct xnvfile_snapshot_iterator *it, void *buf)
 
 static int vfile_snapshot_open(struct inode *inode, struct file *file)
 {
-	struct xnvfile_snapshot *vfile = PDE_DATA(inode);
+	struct xnvfile_snapshot *vfile = pde_data(inode);
 	struct xnvfile_snapshot_ops *ops = vfile->ops;
 	struct xnvfile_snapshot_iterator *it;
 	int revtag, ret, nrdata;
@@ -318,7 +318,7 @@ ssize_t vfile_snapshot_write(struct file *file, const char __user *buf,
 			     size_t size, loff_t *ppos)
 {
 	struct xnvfile_snapshot *vfile =
-		PDE_DATA(file->f_path.dentry->d_inode);
+		pde_data(file->f_path.dentry->d_inode);
 	struct xnvfile_input input;
 	ssize_t ret;
 
@@ -497,7 +497,7 @@ static struct seq_operations vfile_regular_ops = {
 
 static int vfile_regular_open(struct inode *inode, struct file *file)
 {
-	struct xnvfile_regular *vfile = PDE_DATA(inode);
+	struct xnvfile_regular *vfile = pde_data(inode);
 	struct xnvfile_regular_ops *ops = vfile->ops;
 	struct xnvfile_regular_iterator *it;
 	struct seq_file *seq;
@@ -566,7 +566,7 @@ ssize_t vfile_regular_write(struct file *file, const char __user *buf,
 			    size_t size, loff_t *ppos)
 {
 	struct xnvfile_regular *vfile =
-		PDE_DATA(file->f_path.dentry->d_inode);
+		pde_data(file->f_path.dentry->d_inode);
 	struct xnvfile_input input;
 	ssize_t ret;
 
diff --git a/kernel/drivers/analogy/device.c b/kernel/drivers/analogy/device.c
index 5033c5d66..69492b96b 100644
--- a/kernel/drivers/analogy/device.c
+++ b/kernel/drivers/analogy/device.c
@@ -92,7 +92,7 @@ int a4l_rdproc_devs(struct seq_file *p, void *data)
 
 static int a4l_proc_transfer_open(struct inode *inode, struct file *file)
 {
-	return single_open(file, a4l_rdproc_transfer, PDE_DATA(inode));
+	return single_open(file, a4l_rdproc_transfer, pde_data(inode));
 }
 
 static const DEFINE_PROC_OPS(a4l_proc_transfer_ops,
diff --git a/kernel/drivers/can/rtcan_module.c b/kernel/drivers/can/rtcan_module.c
index 3d07eaed9..c071e12c6 100644
--- a/kernel/drivers/can/rtcan_module.c
+++ b/kernel/drivers/can/rtcan_module.c
@@ -265,7 +265,7 @@ static int rtcan_read_proc_info(struct seq_file *p, void *data)
 
 static int rtcan_proc_info_open(struct inode *inode, struct file *file)
 {
-	return single_open(file, rtcan_read_proc_info, PDE_DATA(inode));
+	return single_open(file, rtcan_read_proc_info, pde_data(inode));
 }
 
 static const DEFINE_PROC_OPS(rtcan_proc_info_ops,
@@ -310,7 +310,7 @@ static int rtcan_read_proc_filter(struct seq_file *p, void *data)
 
 static int rtcan_proc_filter_open(struct inode *inode, struct file *file)
 {
-	return single_open(file, rtcan_read_proc_filter, PDE_DATA(inode));
+	return single_open(file, rtcan_read_proc_filter, pde_data(inode));
 }
 
 static const DEFINE_PROC_OPS(rtcan_proc_filter_ops,
diff --git a/kernel/drivers/can/sja1000/rtcan_sja1000_proc.c b/kernel/drivers/can/sja1000/rtcan_sja1000_proc.c
index 4813c5009..57fd80704 100644
--- a/kernel/drivers/can/sja1000/rtcan_sja1000_proc.c
+++ b/kernel/drivers/can/sja1000/rtcan_sja1000_proc.c
@@ -47,7 +47,7 @@ static int rtcan_sja_proc_regs(struct seq_file *p, void *data)
 
 static int rtcan_sja_proc_regs_open(struct inode *inode, struct file *file)
 {
-	return single_open(file, rtcan_sja_proc_regs, PDE_DATA(inode));
+	return single_open(file, rtcan_sja_proc_regs, pde_data(inode));
 }
 
 static const DEFINE_PROC_OPS(rtcan_sja_proc_regs_ops,

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 02/19] Use linux/stddef.h instead of toolchain header
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 01/19] Account for switch to pde_data in 5.17 Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 03/19] drivers/serial/16550A: Account for privatized defines in 5.17 Florian Bezdeka
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit ed213eca23696cd4194e5ab8bd149d56863480a3 ]

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/posix/sem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cobalt/posix/sem.c b/kernel/cobalt/posix/sem.c
index 6fb4dc2c2..71b8c52f5 100644
--- a/kernel/cobalt/posix/sem.c
+++ b/kernel/cobalt/posix/sem.c
@@ -17,7 +17,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include <stddef.h>
+#include <linux/stddef.h>
 #include <linux/err.h>
 #include <cobalt/kernel/time.h>
 #include "internal.h"

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 03/19] drivers/serial/16550A: Account for privatized defines in 5.17
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 01/19] Account for switch to pde_data in 5.17 Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 02/19] Use linux/stddef.h instead of toolchain header Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 04/19] drivers/net: Switch to dev_addr_set and eth_hw_addr_set Florian Bezdeka
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 2d9adb26f51003dc8f3776c4d29791f41bb27ca8 ]

Those moved from the central header into the upstream driver code. We
have to do the same.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/serial/16550A_pci.h | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/kernel/drivers/serial/16550A_pci.h b/kernel/drivers/serial/16550A_pci.h
index 91b0390ff..161874d1c 100644
--- a/kernel/drivers/serial/16550A_pci.h
+++ b/kernel/drivers/serial/16550A_pci.h
@@ -33,9 +33,22 @@ struct rt_16550_pci_board {
 
 #if defined(CONFIG_XENO_DRIVERS_16550A_PCI_MOXA)
 
-#define PCI_DEVICE_ID_CP112UL	0x1120
-#define PCI_DEVICE_ID_CP114UL	0x1143
-#define PCI_DEVICE_ID_CP138U	0x1380
+#define PCI_DEVICE_ID_CP112UL		0x1120
+#define PCI_DEVICE_ID_CP114UL		0x1143
+#define PCI_DEVICE_ID_CP138U		0x1380
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+#define PCI_DEVICE_ID_MOXA_CP102UL	0x1021
+#define PCI_DEVICE_ID_MOXA_CP102U	0x1022
+#define PCI_DEVICE_ID_MOXA_C104		0x1040
+#define PCI_DEVICE_ID_MOXA_CP104U	0x1041
+#define PCI_DEVICE_ID_MOXA_CP114	0x1141
+#define PCI_DEVICE_ID_MOXA_CP118U	0x1180
+#define PCI_DEVICE_ID_MOXA_CP132	0x1320
+#define PCI_DEVICE_ID_MOXA_CP132U	0x1321
+#define PCI_DEVICE_ID_MOXA_CP134U	0x1340
+#define PCI_DEVICE_ID_MOXA_C168		0x1680
+#define PCI_DEVICE_ID_MOXA_CP168U	0x1681
+#endif
 
 static const struct rt_16550_pci_board rt_16550_moxa_c104 = {
 	.name = "Moxa C104H/PCI",

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 04/19] drivers/net: Switch to dev_addr_set and eth_hw_addr_set
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (2 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 03/19] drivers/serial/16550A: Account for privatized defines in 5.17 Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 05/19] drivers: Convert pci_set_*dma_mask to DMA API Florian Bezdeka
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 5af4f16609c11805e86dc35164727235185b8676 ]

Latest kernel complain about accessing dev_addr directly and push us
toward the accessor functions. Use them and provide wrappers for
kernels prior to 5.15.

CC: Gunter Grau <gunter.grau@philips.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h |  5 +++++
 kernel/drivers/net/addons/cap.c                      |  5 ++---
 kernel/drivers/net/addons/proxy.c                    |  2 +-
 kernel/drivers/net/drivers/freescale/fec_main.c      | 11 +++++++----
 kernel/drivers/net/stack/rtmac/rtmac_vnic.c          |  5 ++---
 5 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index 99059d2e9..62fbb1a2a 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -252,6 +252,11 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 #define close_fd(__ufd)	__close_fd(current->files, __ufd)
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0)
+#define dev_addr_set(dev, addr)		memcpy((dev)->dev_addr, addr, MAX_ADDR_LEN)
+#define eth_hw_addr_set(dev, addr)	memcpy((dev)->dev_addr, addr, ETH_ALEN)
+#endif
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
 #define pde_data(i)	PDE_DATA(i)
 #endif
diff --git a/kernel/drivers/net/addons/cap.c b/kernel/drivers/net/addons/cap.c
index 1e8644069..3784b6522 100644
--- a/kernel/drivers/net/addons/cap.c
+++ b/kernel/drivers/net/addons/cap.c
@@ -263,9 +263,8 @@ static int tap_dev_open(struct net_device *dev)
 	if (err == 0)
 		return -EIDRM;
 
-	memcpy(dev->dev_addr,
-	       (*(struct rtnet_device **)netdev_priv(dev))->dev_addr,
-	       MAX_ADDR_LEN);
+	dev_addr_set(dev,
+		     (*(struct rtnet_device **)netdev_priv(dev))->dev_addr);
 
 	return 0;
 }
diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c
index 0b3ec74fa..f61794a4a 100644
--- a/kernel/drivers/net/addons/proxy.c
+++ b/kernel/drivers/net/addons/proxy.c
@@ -324,7 +324,7 @@ static void __init rtnetproxy_init(struct net_device *dev)
 
 	dev->tx_queue_len = 0;
 #ifdef CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP
-	memcpy(dev->dev_addr, rtnetproxy_rtdev->dev_addr, MAX_ADDR_LEN);
+	dev_addr_set(dev, rtnetproxy_rtdev->dev_addr);
 #else
 	dev->flags |= IFF_NOARP;
 #endif
diff --git a/kernel/drivers/net/drivers/freescale/fec_main.c b/kernel/drivers/net/drivers/freescale/fec_main.c
index ba2d3ed0d..50db6bc6a 100644
--- a/kernel/drivers/net/drivers/freescale/fec_main.c
+++ b/kernel/drivers/net/drivers/freescale/fec_main.c
@@ -1319,11 +1319,14 @@ static void fec_get_mac(struct net_device *ndev)
 		return;
 	}
 
-	memcpy(ndev->dev_addr, iap, ETH_ALEN);
-
 	/* Adjust MAC if using macaddr */
-	if (iap == macaddr)
-		 ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->dev_id;
+	if (iap == macaddr) {
+		memcpy(tmpaddr, macaddr, ETH_ALEN);
+		tmpaddr[ETH_ALEN-1] += fep->dev_id;
+		eth_hw_addr_set(ndev, tmpaddr);
+	} else {
+		eth_hw_addr_set(ndev, iap);
+	}
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/kernel/drivers/net/stack/rtmac/rtmac_vnic.c b/kernel/drivers/net/stack/rtmac/rtmac_vnic.c
index 138e276ad..4b41785db 100644
--- a/kernel/drivers/net/stack/rtmac/rtmac_vnic.c
+++ b/kernel/drivers/net/stack/rtmac/rtmac_vnic.c
@@ -114,9 +114,8 @@ static void rtmac_vnic_signal_handler(rtdm_nrtsig_t *nrtsig, void *arg)
 
 static int rtmac_vnic_copy_mac(struct net_device *dev)
 {
-	memcpy(dev->dev_addr,
-	       (*(struct rtnet_device **)netdev_priv(dev))->dev_addr,
-	       MAX_ADDR_LEN);
+	dev_addr_set(dev,
+		     (*(struct rtnet_device **)netdev_priv(dev))->dev_addr);
 
 	return 0;
 }

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 05/19] drivers: Convert pci_set_*dma_mask to DMA API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (3 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 04/19] drivers/net: Switch to dev_addr_set and eth_hw_addr_set Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 06/19] drivers: Convert pci_alloc/free_consistent " Florian Bezdeka
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 2e730324790f34413a5b29b7444a05ae48eac0cd ]

The legacy API has been finally dropped, and the new one was "already"
available with 5.10.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/e1000/e1000_main.c              | 8 ++++----
 kernel/drivers/net/drivers/experimental/e1000/e1000_main.c | 8 ++++----
 kernel/drivers/net/drivers/experimental/rt2500/rt2500pci.c | 4 ++--
 kernel/drivers/net/drivers/via-rhine.c                     | 2 +-
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/kernel/drivers/net/drivers/e1000/e1000_main.c b/kernel/drivers/net/drivers/e1000/e1000_main.c
index 222709a48..e2141313d 100644
--- a/kernel/drivers/net/drivers/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/e1000/e1000_main.c
@@ -705,10 +705,10 @@ static int e1000_probe(struct pci_dev *pdev,
 	if ((err = pci_enable_device(pdev)))
 		return err;
 
-	if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) ||
-	    (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))) {
-		if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) &&
-		    (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) {
+	if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) ||
+	    (err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)))) {
+		if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) &&
+		    (err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)))) {
 			E1000_ERR("No usable DMA configuration, aborting\n");
 			return err;
 		}
diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
index 64b724c3c..1b5579532 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
@@ -1061,12 +1061,12 @@ static int e1000_probe(struct pci_dev *pdev,
 	if ((err = pci_enable_device(pdev)))
 		return err;
 
-	if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) &&
-	    !(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) {
+	if (!(err = dma_set_mask(&pdev->dev, DMA_64BIT_MASK)) &&
+	    !(err = dma_set_coherent_mask(&pdev->dev, DMA_64BIT_MASK))) {
 		pci_using_dac = 1;
 	} else {
-		if ((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK)) &&
-		    (err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK))) {
+		if ((err = dma_set_mask(&pdev->dev, DMA_32BIT_MASK)) &&
+		    (err = dma_set_coherent_mask(&pdev->dev, DMA_32BIT_MASK))) {
 			E1000_ERR("No usable DMA configuration, aborting\n");
 			goto err_dma;
 		}
diff --git a/kernel/drivers/net/drivers/experimental/rt2500/rt2500pci.c b/kernel/drivers/net/drivers/experimental/rt2500/rt2500pci.c
index f6f9a2597..9bbdce7fd 100644
--- a/kernel/drivers/net/drivers/experimental/rt2500/rt2500pci.c
+++ b/kernel/drivers/net/drivers/experimental/rt2500/rt2500pci.c
@@ -1184,8 +1184,8 @@ int rt2x00_pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
 
 	pci_set_master(pci_dev);
 
-	if (pci_set_dma_mask(pci_dev, DMA_BIT_MASK(64)) &&
-	    pci_set_dma_mask(pci_dev, DMA_BIT_MASK(32))) {
+	if (dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(64)) &&
+	    dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32))) {
 		ERROR("PCI DMA not supported\n");
 		status = -EIO;
 		goto exit_disable_device;
diff --git a/kernel/drivers/net/drivers/via-rhine.c b/kernel/drivers/net/drivers/via-rhine.c
index 9618d23e3..122e41d30 100644
--- a/kernel/drivers/net/drivers/via-rhine.c
+++ b/kernel/drivers/net/drivers/via-rhine.c
@@ -662,7 +662,7 @@ static int via_rhine_init_one (struct pci_dev *pdev,
 		goto err_out;
 
 	/* this should always be supported */
-	if (pci_set_dma_mask(pdev, 0xffffffff)) {
+	if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
 		printk(KERN_ERR "32-bit PCI DMA addresses not supported by the card!?\n");
 		goto err_out;
 	}

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 06/19] drivers: Convert pci_alloc/free_consistent to DMA API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (4 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 05/19] drivers: Convert pci_set_*dma_mask to DMA API Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 07/19] drivers: Convert pci_map/unmap_single/page " Florian Bezdeka
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 583d657fe202c3f31a6f454d1363f3faf790a773 ]

The legacy API has been finally dropped, and the new one was "already"
available with 5.10.

We keep the GFP_ATOMIC allocation type of the original wrapper, even if
some caller likely do not need them - safer and simpler than checking
them all.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/analogy/national_instruments/mite.c | 12 ++---
 kernel/drivers/analogy/national_instruments/mite.h |  4 +-
 kernel/drivers/net/drivers/8139too.c               | 18 +++++---
 kernel/drivers/net/drivers/e1000/e1000_main.c      | 44 +++++++++++-------
 kernel/drivers/net/drivers/eepro100.c              | 14 +++---
 kernel/drivers/net/drivers/experimental/3c59x.c    | 21 +++++----
 .../net/drivers/experimental/e1000/e1000_ethtool.c | 14 +++---
 .../net/drivers/experimental/e1000/e1000_main.c    | 54 +++++++++++-----------
 kernel/drivers/net/drivers/natsemi.c               |  6 +--
 kernel/drivers/net/drivers/pcnet32.c               | 18 +++++---
 kernel/drivers/net/drivers/r8169.c                 | 14 +++---
 kernel/drivers/net/drivers/tulip/tulip_core.c      | 24 +++++-----
 kernel/drivers/net/drivers/via-rhine.c             | 33 ++++++-------
 13 files changed, 155 insertions(+), 121 deletions(-)

diff --git a/kernel/drivers/analogy/national_instruments/mite.c b/kernel/drivers/analogy/national_instruments/mite.c
index be4b268c1..4eb9eee4f 100644
--- a/kernel/drivers/analogy/national_instruments/mite.c
+++ b/kernel/drivers/analogy/national_instruments/mite.c
@@ -381,9 +381,9 @@ int a4l_mite_buf_change(struct mite_dma_descriptor_ring *ring, struct a4l_subdev
 	int i;
 
 	if (ring->descriptors) {
-		pci_free_consistent(ring->pcidev,
-				    ring->n_links * sizeof(struct mite_dma_descriptor),
-				    ring->descriptors, ring->descriptors_dma_addr);
+		dma_free_coherent(&ring->pcidev->dev,
+				  ring->n_links * sizeof(struct mite_dma_descriptor),
+				  ring->descriptors, ring->descriptors_dma_addr);
 	}
 	ring->descriptors = NULL;
 	ring->descriptors_dma_addr = 0;
@@ -397,9 +397,9 @@ int a4l_mite_buf_change(struct mite_dma_descriptor_ring *ring, struct a4l_subdev
 	MDPRINTK("ring->pcidev=%p, n_links=0x%04x\n", ring->pcidev, n_links);
 
 	ring->descriptors =
-		pci_alloc_consistent(ring->pcidev,
-				     n_links * sizeof(struct mite_dma_descriptor),
-				     &ring->descriptors_dma_addr);
+		dma_alloc_coherent(&ring->pcidev->dev,
+				   n_links * sizeof(struct mite_dma_descriptor),
+				   &ring->descriptors_dma_addr, GFP_ATOMIC);
 	if (!ring->descriptors) {
 		printk("MITE: ring buffer allocation failed\n");
 		return -ENOMEM;
diff --git a/kernel/drivers/analogy/national_instruments/mite.h b/kernel/drivers/analogy/national_instruments/mite.h
index 93eff4dec..3b9aaba01 100644
--- a/kernel/drivers/analogy/national_instruments/mite.h
+++ b/kernel/drivers/analogy/national_instruments/mite.h
@@ -94,8 +94,8 @@ static inline void mite_free_ring(struct mite_dma_descriptor_ring *ring)
 {
 	if (ring) {
 		if (ring->descriptors) {
-			pci_free_consistent(
-				ring->pcidev,
+			dma_free_coherent(
+				&ring->pcidev->dev,
 				ring->n_links *
 				sizeof(struct mite_dma_descriptor),
 				ring->descriptors, ring->descriptors_dma_addr);
diff --git a/kernel/drivers/net/drivers/8139too.c b/kernel/drivers/net/drivers/8139too.c
index 05a4042f4..c335b300b 100644
--- a/kernel/drivers/net/drivers/8139too.c
+++ b/kernel/drivers/net/drivers/8139too.c
@@ -1114,15 +1114,19 @@ static int rtl8139_open (struct rtnet_device *rtdev)
 	if (retval)
 		return retval;
 
-	tp->tx_bufs = pci_alloc_consistent(tp->pci_dev, TX_BUF_TOT_LEN, &tp->tx_bufs_dma);
-	tp->rx_ring = pci_alloc_consistent(tp->pci_dev, RX_BUF_TOT_LEN, &tp->rx_ring_dma);
+	tp->tx_bufs = dma_alloc_coherent(&tp->pci_dev->dev, TX_BUF_TOT_LEN,
+					 &tp->tx_bufs_dma, GFP_ATOMIC);
+	tp->rx_ring = dma_alloc_coherent(&tp->pci_dev->dev, RX_BUF_TOT_LEN,
+					 &tp->rx_ring_dma, GFP_ATOMIC);
 
 	if (tp->tx_bufs == NULL || tp->rx_ring == NULL) {
 		rtdm_irq_free(&tp->irq_handle);
 		if (tp->tx_bufs)
-			pci_free_consistent(tp->pci_dev, TX_BUF_TOT_LEN, tp->tx_bufs, tp->tx_bufs_dma);
+			dma_free_coherent(&tp->pci_dev->dev, TX_BUF_TOT_LEN,
+					  tp->tx_bufs, tp->tx_bufs_dma);
 		if (tp->rx_ring)
-			pci_free_consistent(tp->pci_dev, RX_BUF_TOT_LEN, tp->rx_ring, tp->rx_ring_dma);
+			dma_free_coherent(&tp->pci_dev->dev, RX_BUF_TOT_LEN,
+					  tp->rx_ring, tp->rx_ring_dma);
 
 		return -ENOMEM;
 	}
@@ -1627,8 +1631,10 @@ static int rtl8139_close (struct rtnet_device *rtdev)
 
 	rtl8139_tx_clear (tp);
 
-	pci_free_consistent(tp->pci_dev, RX_BUF_TOT_LEN, tp->rx_ring, tp->rx_ring_dma);
-	pci_free_consistent(tp->pci_dev, TX_BUF_TOT_LEN, tp->tx_bufs, tp->tx_bufs_dma);
+	dma_free_coherent(&tp->pci_dev->dev, RX_BUF_TOT_LEN, tp->rx_ring,
+			  tp->rx_ring_dma);
+	dma_free_coherent(&tp->pci_dev->dev, TX_BUF_TOT_LEN, tp->tx_bufs,
+			  tp->tx_bufs_dma);
 	tp->rx_ring = NULL;
 	tp->tx_bufs = NULL;
 
diff --git a/kernel/drivers/net/drivers/e1000/e1000_main.c b/kernel/drivers/net/drivers/e1000/e1000_main.c
index e2141313d..7c34e2f00 100644
--- a/kernel/drivers/net/drivers/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/e1000/e1000_main.c
@@ -1266,7 +1266,8 @@ e1000_setup_tx_resources(struct e1000_adapter *adapter,
 	txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
 	E1000_ROUNDUP(txdr->size, 4096);
 
-	txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);
+	txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size, &txdr->dma,
+					GFP_ATOMIC);
 	if (!txdr->desc) {
 setup_tx_desc_die:
 		vfree(txdr->buffer_info);
@@ -1282,18 +1283,21 @@ setup_tx_desc_die:
 		DPRINTK(TX_ERR, ERR, "txdr align check failed: %u bytes "
 				     "at %p\n", txdr->size, txdr->desc);
 		/* Try again, without freeing the previous */
-		txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);
+		txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size,
+						&txdr->dma, GFP_ATOMIC);
 		/* Failed allocation, critical failure */
 		if (!txdr->desc) {
-			pci_free_consistent(pdev, txdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
+					  olddma);
 			goto setup_tx_desc_die;
 		}
 
 		if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {
 			/* give up */
-			pci_free_consistent(pdev, txdr->size, txdr->desc,
-					    txdr->dma);
-			pci_free_consistent(pdev, txdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, txdr->size, txdr->desc,
+					  txdr->dma);
+			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate aligned memory "
 				"for the transmit descriptor ring\n");
@@ -1301,7 +1305,8 @@ setup_tx_desc_die:
 			return -ENOMEM;
 		} else {
 			/* Free old allocation, new allocation was successful */
-			pci_free_consistent(pdev, txdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, txdr->size, olddesc,
+					  olddma);
 		}
 	}
 	memset(txdr->desc, 0, txdr->size);
@@ -1520,7 +1525,8 @@ e1000_setup_rx_resources(struct e1000_adapter *adapter,
 	rxdr->size = rxdr->count * desc_len;
 	E1000_ROUNDUP(rxdr->size, 4096);
 
-	rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma);
+	rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size, &rxdr->dma,
+					GFP_ATOMIC);
 
 	if (!rxdr->desc) {
 		DPRINTK(PROBE, ERR,
@@ -1539,10 +1545,12 @@ setup_rx_desc_die:
 		DPRINTK(RX_ERR, ERR, "rxdr align check failed: %u bytes "
 				     "at %p\n", rxdr->size, rxdr->desc);
 		/* Try again, without freeing the previous */
-		rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma);
+		rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size,
+						&rxdr->dma, GFP_ATOMIC);
 		/* Failed allocation, critical failure */
 		if (!rxdr->desc) {
-			pci_free_consistent(pdev, rxdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate memory "
 				"for the receive descriptor ring\n");
@@ -1551,16 +1559,18 @@ setup_rx_desc_die:
 
 		if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) {
 			/* give up */
-			pci_free_consistent(pdev, rxdr->size, rxdr->desc,
-					    rxdr->dma);
-			pci_free_consistent(pdev, rxdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, rxdr->size, rxdr->desc,
+					   rxdr->dma);
+			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate aligned memory "
 				"for the receive descriptor ring\n");
 			goto setup_rx_desc_die;
 		} else {
 			/* Free old allocation, new allocation was successful */
-			pci_free_consistent(pdev, rxdr->size, olddesc, olddma);
+			dma_free_coherent(&pdev->dev, rxdr->size, olddesc,
+					  olddma);
 		}
 	}
 	memset(rxdr->desc, 0, rxdr->size);
@@ -1772,7 +1782,8 @@ e1000_free_tx_resources(struct e1000_adapter *adapter,
 	vfree(tx_ring->buffer_info);
 	tx_ring->buffer_info = NULL;
 
-	pci_free_consistent(pdev, tx_ring->size, tx_ring->desc, tx_ring->dma);
+	dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
+			  tx_ring->dma);
 
 	tx_ring->desc = NULL;
 }
@@ -1881,7 +1892,8 @@ e1000_free_rx_resources(struct e1000_adapter *adapter,
 	kfree(rx_ring->ps_page_dma);
 	rx_ring->ps_page_dma = NULL;
 
-	pci_free_consistent(pdev, rx_ring->size, rx_ring->desc, rx_ring->dma);
+	dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
+			  rx_ring->dma);
 
 	rx_ring->desc = NULL;
 }
diff --git a/kernel/drivers/net/drivers/eepro100.c b/kernel/drivers/net/drivers/eepro100.c
index 414eb7a45..64507756c 100644
--- a/kernel/drivers/net/drivers/eepro100.c
+++ b/kernel/drivers/net/drivers/eepro100.c
@@ -665,7 +665,8 @@ static int speedo_found1(struct pci_dev *pdev,
 	dma_addr_t tx_ring_dma;
 
 	size = TX_RING_SIZE * sizeof(struct TxFD) + sizeof(struct speedo_stats);
-	tx_ring_space = pci_alloc_consistent(pdev, size, &tx_ring_dma);
+	tx_ring_space = dma_alloc_coherent(&pdev->dev, size, &tx_ring_dma,
+					   GFP_ATOMIC);
 	if (tx_ring_space == NULL)
 		return -1;
 
@@ -674,7 +675,7 @@ static int speedo_found1(struct pci_dev *pdev,
 				RX_RING_SIZE * 2 + TX_RING_SIZE);
 	if (rtdev == NULL) {
 		printk(KERN_ERR "eepro100: Could not allocate ethernet device.\n");
-		pci_free_consistent(pdev, size, tx_ring_space, tx_ring_dma);
+		dma_free_coherent(&pdev->dev, size, tx_ring_space, tx_ring_dma);
 		return -1;
 	}
 	rtdev_alloc_name(rtdev, "rteth%d");
@@ -802,7 +803,7 @@ static int speedo_found1(struct pci_dev *pdev,
 
 	if ( (i=rt_register_rtnetdev(rtdev)) )
 	{
-		pci_free_consistent(pdev, size, tx_ring_space, tx_ring_dma);
+		dma_free_coherent(&pdev->dev, size, tx_ring_space, tx_ring_dma);
 		rtdev_free(rtdev);
 		return i;
 	}
@@ -1771,9 +1772,10 @@ static void eepro100_remove_one (struct pci_dev *pdev)
 	iounmap((char *)rtdev->base_addr);
 #endif
 
-	pci_free_consistent(pdev, TX_RING_SIZE * sizeof(struct TxFD)
-								+ sizeof(struct speedo_stats),
-						sp->tx_ring, sp->tx_ring_dma);
+	dma_free_coherent(
+		&pdev->dev,
+		TX_RING_SIZE * sizeof(struct TxFD) + sizeof(struct speedo_stats),
+		sp->tx_ring, sp->tx_ring_dma);
 	pci_disable_device(pdev);
 
 	// *** RTnet ***
diff --git a/kernel/drivers/net/drivers/experimental/3c59x.c b/kernel/drivers/net/drivers/experimental/3c59x.c
index c2cf4786c..94e0c9343 100644
--- a/kernel/drivers/net/drivers/experimental/3c59x.c
+++ b/kernel/drivers/net/drivers/experimental/3c59x.c
@@ -1070,9 +1070,12 @@ static int vortex_probe1(struct pci_dev *pdev,
 	vp->pdev = pdev;
 
 	/* Makes sure rings are at least 16 byte aligned. */
-	vp->rx_ring = pci_alloc_consistent(pdev, sizeof(struct boom_rx_desc) * RX_RING_SIZE
-					+ sizeof(struct boom_tx_desc) * TX_RING_SIZE,
-					&vp->rx_ring_dma);
+	vp->rx_ring = dma_alloc_coherent(
+			&pdev->dev,
+			sizeof(struct boom_rx_desc) * RX_RING_SIZE
+			+ sizeof(struct boom_tx_desc) * TX_RING_SIZE,
+			&vp->rx_ring_dma,
+			GFP_ATOMIC);
 	retval = -ENOMEM;
 	if (vp->rx_ring == 0)
 		goto free_region;
@@ -1329,11 +1332,11 @@ static int vortex_probe1(struct pci_dev *pdev,
 	// *** RTnet ***
 
   free_ring:
-	pci_free_consistent(pdev,
-			sizeof(struct boom_rx_desc) * RX_RING_SIZE
-			+ sizeof(struct boom_tx_desc) * TX_RING_SIZE,
-			vp->rx_ring,
-			vp->rx_ring_dma);
+	dma_free_coherent(&pdev->dev,
+		    sizeof(struct boom_rx_desc) * RX_RING_SIZE
+		    + sizeof(struct boom_tx_desc) * TX_RING_SIZE,
+		    vp->rx_ring,
+		    vp->rx_ring_dma);
   free_region:
 	if (vp->must_free_region)
 		release_region(ioaddr, vci->io_size);
@@ -2698,7 +2701,7 @@ static void vortex_remove_one (struct pci_dev *pdev)
 			pci_restore_state(vp->pdev, vp->power_state);
 	}
 
-	pci_free_consistent(pdev,
+	dma_free_coherent(&pdev->dev,
 			sizeof(struct boom_rx_desc) * RX_RING_SIZE
 			+ sizeof(struct boom_tx_desc) * TX_RING_SIZE,
 			vp->rx_ring,
diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_ethtool.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_ethtool.c
index 1911673af..a249f1719 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_ethtool.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_ethtool.c
@@ -1081,11 +1081,13 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)
 	}
 
 	if (tx_ring->desc) {
-		pci_free_consistent(pdev, tx_ring->size, tx_ring->desc, tx_ring->dma);
+		dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
+				  tx_ring->dma);
 		tx_ring->desc = NULL;
 	}
 	if (rx_ring->desc) {
-		pci_free_consistent(pdev, rx_ring->size, rx_ring->desc, rx_ring->dma);
+		dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
+				  rx_ring->dma);
 		rx_ring->desc = NULL;
 	}
 
@@ -1119,8 +1121,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
 
 	tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc);
 	tx_ring->size = ALIGN(tx_ring->size, 4096);
-	if (!(tx_ring->desc = pci_alloc_consistent(pdev, tx_ring->size,
-	                                           &tx_ring->dma))) {
+	if (!(tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
+	                                         &tx_ring->dma, GFP_ATOMIC))) {
 		ret_val = 2;
 		goto err_nomem;
 	}
@@ -1179,8 +1181,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
 	}
 
 	rx_ring->size = rx_ring->count * sizeof(struct e1000_rx_desc);
-	if (!(rx_ring->desc = pci_alloc_consistent(pdev, rx_ring->size,
-	                                           &rx_ring->dma))) {
+	if (!(rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size,
+	                                         &rx_ring->dma, GFP_ATOMIC))) {
 		ret_val = 5;
 		goto err_nomem;
 	}
diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
index 1b5579532..d32c5f361 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
@@ -1961,8 +1961,8 @@ static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
 	tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc);
 	tx_ring->size = ALIGN(tx_ring->size, 4096);
 
-	tx_ring->desc = pci_alloc_consistent(pdev, tx_ring->size,
-					     &tx_ring->dma);
+	tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
+					   &tx_ring->dma, GFP_ATOMIC);
 	if (!tx_ring->desc) {
 setup_tx_desc_die:
 		vfree(tx_ring->buffer_info);
@@ -1978,22 +1978,22 @@ setup_tx_desc_die:
 		DPRINTK(TX_ERR, ERR, "tx_ring align check failed: %u bytes "
 				     "at %p\n", tx_ring->size, tx_ring->desc);
 		/* Try again, without freeing the previous */
-		tx_ring->desc = pci_alloc_consistent(pdev, tx_ring->size,
-						     &tx_ring->dma);
+		tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
+						   &tx_ring->dma, GFP_ATOMIC);
 		/* Failed allocation, critical failure */
 		if (!tx_ring->desc) {
-			pci_free_consistent(pdev, tx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, tx_ring->size, olddesc,
+					  olddma);
 			goto setup_tx_desc_die;
 		}
 
 		if (!e1000_check_64k_bound(adapter, tx_ring->desc,
 					   tx_ring->size)) {
 			/* give up */
-			pci_free_consistent(pdev, tx_ring->size, tx_ring->desc,
-					    tx_ring->dma);
-			pci_free_consistent(pdev, tx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, tx_ring->size,
+					  tx_ring->desc, tx_ring->dma);
+			dma_free_coherent(&pdev->dev, tx_ring->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate aligned memory "
 				"for the transmit descriptor ring\n");
@@ -2001,8 +2001,8 @@ setup_tx_desc_die:
 			return -ENOMEM;
 		} else {
 			/* Free old allocation, new allocation was successful */
-			pci_free_consistent(pdev, tx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, tx_ring->size, olddesc,
+					  olddma);
 		}
 	}
 	memset(tx_ring->desc, 0, tx_ring->size);
@@ -2200,8 +2200,8 @@ static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
 	rx_ring->size = rx_ring->count * desc_len;
 	rx_ring->size = ALIGN(rx_ring->size, 4096);
 
-	rx_ring->desc = pci_alloc_consistent(pdev, rx_ring->size,
-					     &rx_ring->dma);
+	rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size,
+					   &rx_ring->dma, GFP_ATOMIC);
 
 	if (!rx_ring->desc) {
 		DPRINTK(PROBE, ERR,
@@ -2220,12 +2220,12 @@ setup_rx_desc_die:
 		DPRINTK(RX_ERR, ERR, "rx_ring align check failed: %u bytes "
 				     "at %p\n", rx_ring->size, rx_ring->desc);
 		/* Try again, without freeing the previous */
-		rx_ring->desc = pci_alloc_consistent(pdev, rx_ring->size,
-						     &rx_ring->dma);
+		rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size,
+						   &rx_ring->dma, GFP_ATOMIC);
 		/* Failed allocation, critical failure */
 		if (!rx_ring->desc) {
-			pci_free_consistent(pdev, rx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, rx_ring->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate memory "
 				"for the receive descriptor ring\n");
@@ -2235,18 +2235,18 @@ setup_rx_desc_die:
 		if (!e1000_check_64k_bound(adapter, rx_ring->desc,
 					   rx_ring->size)) {
 			/* give up */
-			pci_free_consistent(pdev, rx_ring->size, rx_ring->desc,
-					    rx_ring->dma);
-			pci_free_consistent(pdev, rx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, rx_ring->size,
+					  rx_ring->desc, rx_ring->dma);
+			dma_free_coherent(&pdev->dev, rx_ring->size, olddesc,
+					  olddma);
 			DPRINTK(PROBE, ERR,
 				"Unable to allocate aligned memory "
 				"for the receive descriptor ring\n");
 			goto setup_rx_desc_die;
 		} else {
 			/* Free old allocation, new allocation was successful */
-			pci_free_consistent(pdev, rx_ring->size, olddesc,
-					    olddma);
+			dma_free_coherent(&pdev->dev, rx_ring->size, olddesc,
+					  olddma);
 		}
 	}
 	memset(rx_ring->desc, 0, rx_ring->size);
@@ -2570,7 +2570,8 @@ static void e1000_free_tx_resources(struct e1000_adapter *adapter,
 	vfree(tx_ring->buffer_info);
 	tx_ring->buffer_info = NULL;
 
-	pci_free_consistent(pdev, tx_ring->size, tx_ring->desc, tx_ring->dma);
+	dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
+			  tx_ring->dma);
 
 	tx_ring->desc = NULL;
 }
@@ -2673,7 +2674,8 @@ static void e1000_free_rx_resources(struct e1000_adapter *adapter,
 	kfree(rx_ring->ps_page_dma);
 	rx_ring->ps_page_dma = NULL;
 
-	pci_free_consistent(pdev, rx_ring->size, rx_ring->desc, rx_ring->dma);
+	dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
+			  rx_ring->dma);
 
 	rx_ring->desc = NULL;
 }
diff --git a/kernel/drivers/net/drivers/natsemi.c b/kernel/drivers/net/drivers/natsemi.c
index b46d0ffef..74112c5a2 100644
--- a/kernel/drivers/net/drivers/natsemi.c
+++ b/kernel/drivers/net/drivers/natsemi.c
@@ -1413,9 +1413,9 @@ static void dump_ring(struct rtnet_device *dev)
 static int alloc_ring(struct rtnet_device *dev)
 {
 	struct netdev_private *np = dev->priv;
-	np->rx_ring = pci_alloc_consistent(np->pci_dev,
+	np->rx_ring = dma_alloc_coherent(&np->pci_dev->dev,
 		sizeof(struct netdev_desc) * (RX_RING_SIZE+TX_RING_SIZE),
-		&np->ring_dma);
+		&np->ring_dma, GFP_ATOMIC);
 	if (!np->rx_ring)
 		return -ENOMEM;
 	np->tx_ring = &np->rx_ring[RX_RING_SIZE];
@@ -1526,7 +1526,7 @@ static void drain_ring(struct rtnet_device *dev)
 static void free_ring(struct rtnet_device *dev)
 {
 	struct netdev_private *np = dev->priv;
-	pci_free_consistent(np->pci_dev,
+	dma_free_coherent(&np->pci_dev->dev,
 		sizeof(struct netdev_desc) * (RX_RING_SIZE+TX_RING_SIZE),
 		np->rx_ring, np->ring_dma);
 }
diff --git a/kernel/drivers/net/drivers/pcnet32.c b/kernel/drivers/net/drivers/pcnet32.c
index 135e26bb9..11a0af863 100644
--- a/kernel/drivers/net/drivers/pcnet32.c
+++ b/kernel/drivers/net/drivers/pcnet32.c
@@ -747,8 +747,9 @@ static int pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line,
 	if (request_region(ioaddr, PCNET32_TOTAL_SIZE, chipname) == NULL)
 		return -EBUSY;
 
-	/* pci_alloc_consistent returns page-aligned memory, so we do not have to check the alignment */
-	if ((lp = pci_alloc_consistent(pdev, sizeof(*lp), &lp_dma_addr)) ==
+	/* dma_alloc_coherent returns page-aligned memory, so we do not have to check the alignment */
+	if ((lp = dma_alloc_coherent(&pdev->dev, sizeof(*lp), &lp_dma_addr,
+				     GFP_ATOMIC)) ==
 	    NULL) {
 		release_region(ioaddr, PCNET32_TOTAL_SIZE);
 		return -ENOMEM;
@@ -784,7 +785,8 @@ static int pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line,
 
 	if (!a) {
 		printk(KERN_ERR PFX "No access methods\n");
-		pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
+		dma_free_coherent(&lp->pci_dev->dev, sizeof(*lp), lp,
+				  lp->dma_addr);
 		release_region(ioaddr, PCNET32_TOTAL_SIZE);
 		return -ENODEV;
 	}
@@ -842,8 +844,8 @@ static int pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line,
 			printk(", probed IRQ %d.\n", dev->irq);
 		else {
 			printk(", failed to detect IRQ line.\n");
-			pci_free_consistent(lp->pci_dev, sizeof(*lp), lp,
-					    lp->dma_addr);
+			dma_free_coherent(&lp->pci_dev->dev, sizeof(*lp), lp,
+					  lp->dma_addr);
 			release_region(ioaddr, PCNET32_TOTAL_SIZE);
 			return -ENODEV;
 		}
@@ -867,7 +869,8 @@ static int pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line,
 	/* Fill in the generic fields of the device structure. */
 	/*** RTnet ***/
 	if ((i = rt_register_rtnetdev(dev))) {
-		pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
+		dma_free_coherent(&lp->pci_dev->dev, sizeof(*lp), lp,
+				   lp->dma_addr);
 		release_region(ioaddr, PCNET32_TOTAL_SIZE);
 		rtdev_free(dev);
 		return i;
@@ -1637,7 +1640,8 @@ static void __exit pcnet32_cleanup_module(void)
 		rt_rtdev_disconnect(pcnet32_dev);
 		/*** RTnet ***/
 		release_region(pcnet32_dev->base_addr, PCNET32_TOTAL_SIZE);
-		pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
+		dma_free_coherent(&lp->pci_dev->dev, sizeof(*lp), lp,
+				  lp->dma_addr);
 		/*** RTnet ***/
 		rtdev_free(pcnet32_dev);
 		/*** RTnet ***/
diff --git a/kernel/drivers/net/drivers/r8169.c b/kernel/drivers/net/drivers/r8169.c
index b49a15e30..72a6d2327 100644
--- a/kernel/drivers/net/drivers/r8169.c
+++ b/kernel/drivers/net/drivers/r8169.c
@@ -1045,13 +1045,15 @@ static int rtl8169_open (struct rtnet_device *rtdev)
 	//2004-05-11
 	// Allocate tx/rx descriptor space
 	priv->sizeof_txdesc_space = NUM_TX_DESC * sizeof(struct TxDesc)+256;
-	priv->txdesc_space = pci_alloc_consistent( pdev, priv->sizeof_txdesc_space, &priv->txdesc_phy_dma_addr );
+	priv->txdesc_space = dma_alloc_coherent(&pdev->dev,
+		priv->sizeof_txdesc_space, &priv->txdesc_phy_dma_addr, GFP_ATOMIC);
 	if( priv->txdesc_space == NULL ){
 		printk("%s: Gigabit driver alloc txdesc_space failed.\n", rtdev->name );
 		return -ENOMEM;
 	}
 	priv->sizeof_rxdesc_space = NUM_RX_DESC * sizeof(struct RxDesc)+256;
-	priv->rxdesc_space = pci_alloc_consistent( pdev, priv->sizeof_rxdesc_space, &priv->rxdesc_phy_dma_addr );
+	priv->rxdesc_space = dma_alloc_coherent(&pdev->dev,
+		priv->sizeof_rxdesc_space, &priv->rxdesc_phy_dma_addr, GFP_ATOMIC);
 	if( priv->rxdesc_space == NULL ){
 		printk("%s: Gigabit driver alloc rxdesc_space failed.\n", rtdev->name );
 		return -ENOMEM;
@@ -1783,8 +1785,8 @@ static int rtl8169_close (struct rtnet_device *rtdev)
 
 	//2004-05-11
 	if(priv->txdesc_space != NULL){
-		pci_free_consistent(
-				priv->pci_dev,
+		dma_free_coherent(
+				&priv->pci_dev->dev,
 				priv->sizeof_txdesc_space,
 				priv->txdesc_space,
 				priv->txdesc_phy_dma_addr
@@ -1793,8 +1795,8 @@ static int rtl8169_close (struct rtnet_device *rtdev)
 	}
 
 	if(priv->rxdesc_space != NULL){
-		pci_free_consistent(
-				priv->pci_dev,
+		dma_free_coherent(
+				&priv->pci_dev->dev,
 				priv->sizeof_rxdesc_space,
 				priv->rxdesc_space,
 				priv->rxdesc_phy_dma_addr
diff --git a/kernel/drivers/net/drivers/tulip/tulip_core.c b/kernel/drivers/net/drivers/tulip/tulip_core.c
index 0d68ef387..f5e7b3e9d 100644
--- a/kernel/drivers/net/drivers/tulip/tulip_core.c
+++ b/kernel/drivers/net/drivers/tulip/tulip_core.c
@@ -989,10 +989,10 @@ static int tulip_init_one (struct pci_dev *pdev,
 	 */
 	tp = rtdev->priv;
 
-	tp->rx_ring = pci_alloc_consistent(pdev,
-					   sizeof(struct tulip_rx_desc) * RX_RING_SIZE +
-					   sizeof(struct tulip_tx_desc) * TX_RING_SIZE,
-					   &tp->rx_ring_dma);
+	tp->rx_ring = dma_alloc_coherent(&pdev->dev,
+					 sizeof(struct tulip_rx_desc) * RX_RING_SIZE +
+					 sizeof(struct tulip_tx_desc) * TX_RING_SIZE,
+					 &tp->rx_ring_dma, GFP_ATOMIC);
 	if (!tp->rx_ring)
 		goto err_out_mtable;
 	tp->tx_ring = (struct tulip_tx_desc *)(tp->rx_ring + RX_RING_SIZE);
@@ -1319,10 +1319,10 @@ static int tulip_init_one (struct pci_dev *pdev,
 	return 0;
 
 err_out_free_ring:
-	pci_free_consistent (pdev,
-			     sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
-			     sizeof (struct tulip_tx_desc) * TX_RING_SIZE,
-			     tp->rx_ring, tp->rx_ring_dma);
+	dma_free_coherent(&pdev->dev,
+			  sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
+			  sizeof (struct tulip_tx_desc) * TX_RING_SIZE,
+			  tp->rx_ring, tp->rx_ring_dma);
 
 err_out_mtable:
 	if (tp->mtable)
@@ -1349,10 +1349,10 @@ static void tulip_remove_one (struct pci_dev *pdev)
 		return;
 
 	tp = rtdev->priv;
-	pci_free_consistent (pdev,
-			     sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
-			     sizeof (struct tulip_tx_desc) * TX_RING_SIZE,
-			     tp->rx_ring, tp->rx_ring_dma);
+	dma_free_coherent(&pdev->dev,
+			  sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
+			  sizeof (struct tulip_tx_desc) * TX_RING_SIZE,
+			  tp->rx_ring, tp->rx_ring_dma);
 	rt_unregister_rtnetdev (rtdev);
 	if (tp->mtable)
 		kfree (tp->mtable);
diff --git a/kernel/drivers/net/drivers/via-rhine.c b/kernel/drivers/net/drivers/via-rhine.c
index 122e41d30..fc867cf73 100644
--- a/kernel/drivers/net/drivers/via-rhine.c
+++ b/kernel/drivers/net/drivers/via-rhine.c
@@ -908,22 +908,23 @@ static int alloc_ring(struct rtnet_device* dev) /*** RTnet ***/
 	void *ring;
 	dma_addr_t ring_dma;
 
-	ring = pci_alloc_consistent(np->pdev,
-				    RX_RING_SIZE * sizeof(struct rx_desc) +
-				    TX_RING_SIZE * sizeof(struct tx_desc),
-				    &ring_dma);
+	ring = dma_alloc_coherent(&np->pdev->dev,
+				  RX_RING_SIZE * sizeof(struct rx_desc) +
+				  TX_RING_SIZE * sizeof(struct tx_desc),
+				  &ring_dma, GFP_ATOMIC);
 	if (!ring) {
 		printk(KERN_ERR "Could not allocate DMA memory.\n");
 		return -ENOMEM;
 	}
 	if (np->drv_flags & ReqTxAlign) {
-		np->tx_bufs = pci_alloc_consistent(np->pdev, PKT_BUF_SZ * TX_RING_SIZE,
-								   &np->tx_bufs_dma);
+		np->tx_bufs = dma_alloc_coherent(&np->pdev->dev,
+						 PKT_BUF_SZ * TX_RING_SIZE,
+						 &np->tx_bufs_dma, GFP_ATOMIC);
 		if (np->tx_bufs == NULL) {
-			pci_free_consistent(np->pdev,
-				    RX_RING_SIZE * sizeof(struct rx_desc) +
-				    TX_RING_SIZE * sizeof(struct tx_desc),
-				    ring, ring_dma);
+			dma_free_coherent(&np->pdev->dev,
+					  RX_RING_SIZE * sizeof(struct rx_desc) +
+					  TX_RING_SIZE * sizeof(struct tx_desc),
+					  ring, ring_dma);
 			return -ENOMEM;
 		}
 	}
@@ -940,15 +941,15 @@ void free_ring(struct rtnet_device* dev) /*** RTnet ***/
 {
 	struct netdev_private *np = dev->priv;
 
-	pci_free_consistent(np->pdev,
-			    RX_RING_SIZE * sizeof(struct rx_desc) +
-			    TX_RING_SIZE * sizeof(struct tx_desc),
-			    np->rx_ring, np->rx_ring_dma);
+	dma_free_coherent(&np->pdev->dev,
+			  RX_RING_SIZE * sizeof(struct rx_desc) +
+			  TX_RING_SIZE * sizeof(struct tx_desc),
+			  np->rx_ring, np->rx_ring_dma);
 	np->tx_ring = NULL;
 
 	if (np->tx_bufs)
-		pci_free_consistent(np->pdev, PKT_BUF_SZ * TX_RING_SIZE,
-							np->tx_bufs, np->tx_bufs_dma);
+		dma_free_coherent(&np->pdev->dev, PKT_BUF_SZ * TX_RING_SIZE,
+				  np->tx_bufs, np->tx_bufs_dma);
 
 	np->tx_bufs = NULL;
 

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 07/19] drivers: Convert pci_map/unmap_single/page to DMA API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (5 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 06/19] drivers: Convert pci_alloc/free_consistent " Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 08/19] drivers: Convert pci_dma_sync_single_for_cpu/device " Florian Bezdeka
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 602a7f10a722a3c99a89503bc97edcfe2c07f482 ]

The legacy API has been finally dropped, and the new one was "already"
available with 5.10.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/e1000/e1000_main.c      | 32 ++++++------
 kernel/drivers/net/drivers/eepro100.c              | 35 +++++++------
 .../net/drivers/experimental/e1000/e1000_main.c    | 60 +++++++++++-----------
 kernel/drivers/net/drivers/natsemi.c               | 29 ++++++-----
 kernel/drivers/net/drivers/pcnet32.c               | 34 ++++++------
 kernel/drivers/net/drivers/r8169.c                 | 12 ++---
 kernel/drivers/net/drivers/tulip/interrupt.c       | 18 ++++---
 kernel/drivers/net/drivers/tulip/tulip_core.c      | 27 +++++-----
 kernel/drivers/net/drivers/via-rhine.c             | 36 +++++++------
 9 files changed, 149 insertions(+), 134 deletions(-)

diff --git a/kernel/drivers/net/drivers/e1000/e1000_main.c b/kernel/drivers/net/drivers/e1000/e1000_main.c
index 7c34e2f00..726b38ab8 100644
--- a/kernel/drivers/net/drivers/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/e1000/e1000_main.c
@@ -1809,10 +1809,10 @@ e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,
 			struct e1000_buffer *buffer_info)
 {
 	if (buffer_info->dma) {
-		pci_unmap_page(adapter->pdev,
-				buffer_info->dma,
-				buffer_info->length,
-				PCI_DMA_TODEVICE);
+		dma_unmap_page(&adapter->pdev->dev,
+			       buffer_info->dma,
+			       buffer_info->length,
+			       DMA_TO_DEVICE);
 	}
 	if (buffer_info->skb)
 		kfree_rtskb(buffer_info->skb);
@@ -1933,10 +1933,10 @@ e1000_clean_rx_ring(struct e1000_adapter *adapter,
 	for (i = 0; i < rx_ring->count; i++) {
 		buffer_info = &rx_ring->buffer_info[i];
 		if (buffer_info->skb) {
-			pci_unmap_single(pdev,
+			dma_unmap_single(&pdev->dev,
 					 buffer_info->dma,
 					 buffer_info->length,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 
 			kfree_rtskb(buffer_info->skb);
 			buffer_info->skb = NULL;
@@ -2382,10 +2382,10 @@ e1000_tx_map(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
 
 		buffer_info->length = size;
 		buffer_info->dma =
-			pci_map_single(adapter->pdev,
-				skb->data + offset,
-				size,
-				PCI_DMA_TODEVICE);
+			dma_map_single(&adapter->pdev->dev,
+				       skb->data + offset,
+				       size,
+				       DMA_TO_DEVICE);
 		buffer_info->time_stamp = jiffies;
 
 		len -= size;
@@ -2850,10 +2850,10 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
 
 		cleaned = TRUE;
 		cleaned_count++;
-		pci_unmap_single(pdev,
+		dma_unmap_single(&pdev->dev,
 				 buffer_info->dma,
 				 buffer_info->length,
-				 PCI_DMA_FROMDEVICE);
+				 DMA_FROM_DEVICE);
 
 		length = le16_to_cpu(rx_desc->length);
 
@@ -2985,10 +2985,10 @@ e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
 		buffer_info->skb = skb;
 		buffer_info->length = adapter->rx_buffer_len;
 map_skb:
-		buffer_info->dma = pci_map_single(pdev,
+		buffer_info->dma = dma_map_single(&pdev->dev,
 						  skb->data,
 						  adapter->rx_buffer_len,
-						  PCI_DMA_FROMDEVICE);
+						  DMA_FROM_DEVICE);
 
 		/* Fix for errata 23, can't cross 64kB boundary */
 		if (!e1000_check_64k_bound(adapter,
@@ -3001,9 +3001,9 @@ map_skb:
 			kfree_rtskb(skb);
 			buffer_info->skb = NULL;
 
-			pci_unmap_single(pdev, buffer_info->dma,
+			dma_unmap_single(&pdev->dev, buffer_info->dma,
 					 adapter->rx_buffer_len,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 
 			break; /* while !buffer_info->skb */
 		}
diff --git a/kernel/drivers/net/drivers/eepro100.c b/kernel/drivers/net/drivers/eepro100.c
index 64507756c..74385d61d 100644
--- a/kernel/drivers/net/drivers/eepro100.c
+++ b/kernel/drivers/net/drivers/eepro100.c
@@ -1070,8 +1070,9 @@ speedo_init_rx_ring(struct rtnet_device *rtdev)
 		rxf = (struct RxFD *)skb->tail;
 		sp->rx_ringp[i] = rxf;
 		sp->rx_ring_dma[i] =
-			pci_map_single(sp->pdev, rxf,
-					PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_BIDIRECTIONAL);
+			dma_map_single(&sp->pdev->dev, rxf,
+				       PKT_BUF_SZ + sizeof(struct RxFD),
+				       DMA_BIDIRECTIONAL);
 		rtskb_reserve(skb, sizeof(struct RxFD));
 		if (last_rxf) {
 			last_rxf->link = cpu_to_le32(sp->rx_ring_dma[i]);
@@ -1139,8 +1140,8 @@ speedo_start_xmit(struct rtskb *skb, struct rtnet_device *rtdev)
 	/* The data region is always in one buffer descriptor. */
 	sp->tx_ring[entry].count = cpu_to_le32(sp->tx_threshold);
 	sp->tx_ring[entry].tx_buf_addr0 =
-		cpu_to_le32(pci_map_single(sp->pdev, skb->data,
-					   skb->len, PCI_DMA_TODEVICE));
+		cpu_to_le32(dma_map_single(&sp->pdev->dev, skb->data,
+					   skb->len, DMA_TO_DEVICE));
 	sp->tx_ring[entry].tx_buf_size0 = cpu_to_le32(skb->len);
 
 // *** RTnet ***
@@ -1206,9 +1207,9 @@ static void speedo_tx_buffer_gc(struct rtnet_device *rtdev)
 		if (sp->tx_skbuff[entry]) {
 			sp->stats.tx_packets++;	/* Count only user packets. */
 			sp->stats.tx_bytes += sp->tx_skbuff[entry]->len;
-			pci_unmap_single(sp->pdev,
-					le32_to_cpu(sp->tx_ring[entry].tx_buf_addr0),
-					sp->tx_skbuff[entry]->len, PCI_DMA_TODEVICE);
+			dma_unmap_single(&sp->pdev->dev,
+					 le32_to_cpu(sp->tx_ring[entry].tx_buf_addr0),
+					 sp->tx_skbuff[entry]->len, DMA_TO_DEVICE);
 
 			// *** RTnet ***
 			dev_kfree_rtskb(sp->tx_skbuff[entry]);
@@ -1394,8 +1395,9 @@ static inline struct RxFD *speedo_rx_alloc(struct rtnet_device *rtdev, int entry
 	rtskb_reserve(skb, 2);  /* IP header alignment */
 	rxf = sp->rx_ringp[entry] = (struct RxFD *)skb->tail;
 	sp->rx_ring_dma[entry] =
-		pci_map_single(sp->pdev, rxf,
-					   PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
+		dma_map_single(&sp->pdev->dev, rxf,
+			       PKT_BUF_SZ + sizeof(struct RxFD),
+			       DMA_FROM_DEVICE);
 	rtskb_reserve(skb, sizeof(struct RxFD));
 	rxf->rx_buf_addr = 0xffffffff;
 	pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[entry],
@@ -1538,8 +1540,10 @@ speedo_rx(struct rtnet_device *rtdev, int* packets, nanosecs_abs_t *time_stamp)
 				sp->rx_skbuff[entry] = NULL;
 				rtskb_put(skb, pkt_len);
 				sp->rx_ringp[entry] = NULL;
-				pci_unmap_single(sp->pdev, sp->rx_ring_dma[entry],
-						PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
+				dma_unmap_single(&sp->pdev->dev,
+						 sp->rx_ring_dma[entry],
+						 PKT_BUF_SZ + sizeof(struct RxFD),
+						 DMA_FROM_DEVICE);
 			}
 			skb->protocol = rt_eth_type_trans(skb, rtdev);
 			//rtmac
@@ -1608,9 +1612,10 @@ speedo_close(struct rtnet_device *rtdev)
 		sp->rx_skbuff[i] = 0;
 		/* Clear the Rx descriptors. */
 		if (skb) {
-			pci_unmap_single(sp->pdev,
+			dma_unmap_single(&sp->pdev->dev,
 					 sp->rx_ring_dma[i],
-					 PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
+					 PKT_BUF_SZ + sizeof(struct RxFD),
+					 DMA_FROM_DEVICE);
 			dev_kfree_rtskb(skb);
 		}
 	}
@@ -1620,9 +1625,9 @@ speedo_close(struct rtnet_device *rtdev)
 		sp->tx_skbuff[i] = 0;
 		/* Clear the Tx descriptors. */
 		if (skb) {
-			pci_unmap_single(sp->pdev,
+			dma_unmap_single(&sp->pdev->dev,
 					 le32_to_cpu(sp->tx_ring[i].tx_buf_addr0),
-					 skb->len, PCI_DMA_TODEVICE);
+					 skb->len, DMA_TO_DEVICE);
 
 			// *** RTnet ***
 			dev_kfree_rtskb(skb);
diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
index d32c5f361..3bd82cf59 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_main.c
@@ -2594,10 +2594,10 @@ static void e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,
 					     struct e1000_buffer *buffer_info)
 {
 	if (buffer_info->dma) {
-		pci_unmap_page(adapter->pdev,
-				buffer_info->dma,
-				buffer_info->length,
-				PCI_DMA_TODEVICE);
+		dma_unmap_page(&adapter->pdev->dev,
+			       buffer_info->dma,
+			       buffer_info->length,
+			       DMA_TO_DEVICE);
 		buffer_info->dma = 0;
 	}
 	if (buffer_info->skb) {
@@ -2714,20 +2714,20 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
 		buffer_info = &rx_ring->buffer_info[i];
 		if (buffer_info->dma &&
 		    adapter->clean_rx == e1000_clean_rx_irq) {
-			pci_unmap_single(pdev, buffer_info->dma,
+			dma_unmap_single(&pdev->dev, buffer_info->dma,
 					 adapter->rx_buffer_len,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 #ifdef CONFIG_E1000_NAPI
 		} else if (buffer_info->dma &&
 			   adapter->clean_rx == e1000_clean_jumbo_rx_irq) {
-			pci_unmap_page(pdev, buffer_info->dma, PAGE_SIZE,
-				       PCI_DMA_FROMDEVICE);
+			dma_unmap_page(&pdev->dev, buffer_info->dma, PAGE_SIZE,
+				       DMA_FROM_DEVICE);
 #endif
 		} else if (buffer_info->dma &&
 			   adapter->clean_rx == e1000_clean_rx_irq_ps) {
-			pci_unmap_single(pdev, buffer_info->dma,
+			dma_unmap_single(&pdev->dev, buffer_info->dma,
 					 adapter->rx_ps_bsize0,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 		}
 		buffer_info->dma = 0;
 		if (buffer_info->page) {
@@ -2742,9 +2742,9 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
 		ps_page_dma = &rx_ring->ps_page_dma[i];
 		for (j = 0; j < adapter->rx_ps_pages; j++) {
 			if (!ps_page->ps_page[j]) break;
-			pci_unmap_page(pdev,
+			dma_unmap_page(&pdev->dev,
 				       ps_page_dma->ps_page_dma[j],
-				       PAGE_SIZE, PCI_DMA_FROMDEVICE);
+				       PAGE_SIZE, DMA_FROM_DEVICE);
 			ps_page_dma->ps_page_dma[j] = 0;
 			put_page(ps_page->ps_page[j]);
 			ps_page->ps_page[j] = NULL;
@@ -3488,10 +3488,10 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
 		/* set time_stamp *before* dma to help avoid a possible race */
 		buffer_info->time_stamp = jiffies;
 		buffer_info->dma =
-			pci_map_single(adapter->pdev,
+			dma_map_single(&adapter->pdev->dev,
 				skb->data + offset,
 				size,
-				PCI_DMA_TODEVICE);
+				DMA_TO_DEVICE);
 		buffer_info->next_to_watch = i;
 
 		len -= size;
@@ -3528,11 +3528,11 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
 			buffer_info->length = size;
 			buffer_info->time_stamp = jiffies;
 			buffer_info->dma =
-				pci_map_page(adapter->pdev,
+				dma_map_page(&adapter->pdev->dev,
 					frag->page,
 					offset,
 					size,
-					PCI_DMA_TODEVICE);
+					DMA_TO_DEVICE);
 			buffer_info->next_to_watch = i;
 
 			len -= size;
@@ -4724,10 +4724,10 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
 
 		cleaned = TRUE;
 		cleaned_count++;
-		pci_unmap_page(pdev,
+		dma_unmap_page(&pdev->dev,
 			       buffer_info->dma,
 			       PAGE_SIZE,
-			       PCI_DMA_FROMDEVICE);
+			       DMA_FROM_DEVICE);
 		buffer_info->dma = 0;
 
 		length = le16_to_cpu(rx_desc->length);
@@ -4929,10 +4929,10 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
 
 		cleaned = TRUE;
 		cleaned_count++;
-		pci_unmap_single(pdev,
+		dma_unmap_single(&pdev->dev,
 				 buffer_info->dma,
 				 adapter->rx_buffer_len,
-				 PCI_DMA_FROMDEVICE);
+				 DMA_FROM_DEVICE);
 		buffer_info->dma = 0;
 
 		length = le16_to_cpu(rx_desc->length);
@@ -5077,9 +5077,9 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
 
 		cleaned = TRUE;
 		cleaned_count++;
-		pci_unmap_single(pdev, buffer_info->dma,
+		dma_unmap_single(&pdev->dev, buffer_info->dma,
 				 adapter->rx_ps_bsize0,
-				 PCI_DMA_FROMDEVICE);
+				 DMA_FROM_DEVICE);
 		buffer_info->dma = 0;
 
 		if (unlikely(!(staterr & E1000_RXD_STAT_EOP))) {
@@ -5147,8 +5147,8 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
 		for (j = 0; j < adapter->rx_ps_pages; j++) {
 			if (!(length= le16_to_cpu(rx_desc->wb.upper.length[j])))
 				break;
-			pci_unmap_page(pdev, ps_page_dma->ps_page_dma[j],
-					PAGE_SIZE, PCI_DMA_FROMDEVICE);
+			dma_unmap_page(&pdev->dev, ps_page_dma->ps_page_dma[j],
+				       PAGE_SIZE, DMA_FROM_DEVICE);
 			ps_page_dma->ps_page_dma[j] = 0;
 			skb_fill_page_desc(skb, j, ps_page->ps_page[j], 0,
 					   length);
@@ -5291,10 +5291,10 @@ check_page:
 		}
 
 		if (!buffer_info->dma)
-			buffer_info->dma = pci_map_page(pdev,
+			buffer_info->dma = dma_map_page(&pdev->dev,
 							buffer_info->page, 0,
 							PAGE_SIZE,
-							PCI_DMA_FROMDEVICE);
+							DMA_FROM_DEVICE);
 
 		rx_desc = E1000_RX_DESC(*rx_ring, i);
 		rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
@@ -5385,10 +5385,10 @@ static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
 
 		buffer_info->skb = skb;
 map_skb:
-		buffer_info->dma = pci_map_single(pdev,
+		buffer_info->dma = dma_map_single(&pdev->dev,
 						  skb->data,
 						  adapter->rx_buffer_len,
-						  PCI_DMA_FROMDEVICE);
+						  DMA_FROM_DEVICE);
 
 		/* Fix for errata 23, can't cross 64kB boundary */
 		if (!e1000_check_64k_bound(adapter,
@@ -5401,9 +5401,9 @@ map_skb:
 			kfree_rtskb(skb);
 			buffer_info->skb = NULL;
 
-			pci_unmap_single(pdev, buffer_info->dma,
+			dma_unmap_single(&pdev->dev, buffer_info->dma,
 					 adapter->rx_buffer_len,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 			buffer_info->dma = 0;
 
 			adapter->alloc_rx_buff_failed++;
diff --git a/kernel/drivers/net/drivers/natsemi.c b/kernel/drivers/net/drivers/natsemi.c
index 74112c5a2..82d1c3350 100644
--- a/kernel/drivers/net/drivers/natsemi.c
+++ b/kernel/drivers/net/drivers/natsemi.c
@@ -1435,8 +1435,8 @@ static void refill_rx(struct rtnet_device *dev)
 			np->rx_skbuff[entry] = skb;
 			if (skb == NULL)
 				break; /* Better luck next round. */
-			np->rx_dma[entry] = pci_map_single(np->pci_dev,
-				skb->data, np->rx_buf_sz, PCI_DMA_FROMDEVICE);
+			np->rx_dma[entry] = dma_map_single(&np->pci_dev->dev,
+				skb->data, np->rx_buf_sz, DMA_FROM_DEVICE);
 			np->rx_ring[entry].addr = cpu_to_le32(np->rx_dma[entry]);
 		}
 		np->rx_ring[entry].cmd_status = cpu_to_le32(np->rx_buf_sz);
@@ -1493,9 +1493,9 @@ static void drain_tx(struct rtnet_device *dev)
 
 	for (i = 0; i < TX_RING_SIZE; i++) {
 		if (np->tx_skbuff[i]) {
-			pci_unmap_single(np->pci_dev,
+			dma_unmap_single(&np->pci_dev->dev,
 				np->rx_dma[i], np->tx_skbuff[i]->len,
-				PCI_DMA_TODEVICE);
+				DMA_TO_DEVICE);
 			dev_kfree_rtskb(np->tx_skbuff[i]);
 			np->stats.tx_dropped++;
 		}
@@ -1513,9 +1513,9 @@ static void drain_ring(struct rtnet_device *dev)
 		np->rx_ring[i].cmd_status = 0;
 		np->rx_ring[i].addr = 0xBADF00D0; /* An invalid address. */
 		if (np->rx_skbuff[i]) {
-			pci_unmap_single(np->pci_dev,
+			dma_unmap_single(&np->pci_dev->dev,
 				np->rx_dma[i], np->rx_skbuff[i]->len,
-				PCI_DMA_FROMDEVICE);
+				DMA_FROM_DEVICE);
 			dev_kfree_rtskb(np->rx_skbuff[i]);
 		}
 		np->rx_skbuff[i] = NULL;
@@ -1546,8 +1546,8 @@ static int start_tx(struct rtskb *skb, struct rtnet_device *dev) /*** RTnet ***/
 	entry = np->cur_tx % TX_RING_SIZE;
 
 	np->tx_skbuff[entry] = skb;
-	np->tx_dma[entry] = pci_map_single(np->pci_dev,
-				skb->data,skb->len, PCI_DMA_TODEVICE);
+	np->tx_dma[entry] = dma_map_single(&np->pci_dev->dev,
+				skb->data,skb->len, DMA_TO_DEVICE);
 
 	np->tx_ring[entry].addr = cpu_to_le32(np->tx_dma[entry]);
 
@@ -1621,9 +1621,9 @@ static void netdev_tx_done(struct rtnet_device *dev)
 				np->stats.tx_window_errors++;
 			np->stats.tx_errors++;
 		}
-		pci_unmap_single(np->pci_dev,np->tx_dma[entry],
-					np->tx_skbuff[entry]->len,
-					PCI_DMA_TODEVICE);
+		dma_unmap_single(&np->pci_dev->dev,np->tx_dma[entry],
+				np->tx_skbuff[entry]->len,
+				DMA_TO_DEVICE);
 		/* Free the original skb. */
 		dev_kfree_rtskb(np->tx_skbuff[entry]); /*** RTnet ***/
 /*		dev_kfree_skb_irq(np->tx_skbuff[entry]);*/
@@ -1750,9 +1750,10 @@ static void netdev_rx(struct rtnet_device *dev, nanosecs_abs_t *time_stamp)
 /*** RTnet ***/
 			{
 				skb = np->rx_skbuff[entry];
-				pci_unmap_single(np->pci_dev, np->rx_dma[entry],
-					np->rx_skbuff[entry]->len,
-					PCI_DMA_FROMDEVICE);
+				dma_unmap_single(&np->pci_dev->dev,
+						 np->rx_dma[entry],
+						 np->rx_skbuff[entry]->len,
+						 DMA_FROM_DEVICE);
 				rtskb_put(skb, pkt_len);
 				np->rx_skbuff[entry] = NULL;
 			}
diff --git a/kernel/drivers/net/drivers/pcnet32.c b/kernel/drivers/net/drivers/pcnet32.c
index 11a0af863..4fd5ba0b4 100644
--- a/kernel/drivers/net/drivers/pcnet32.c
+++ b/kernel/drivers/net/drivers/pcnet32.c
@@ -1083,8 +1083,8 @@ static int pcnet32_init_ring(struct rtnet_device *dev) /*** RTnet ***/
 			rtskb_reserve(rx_skbuff, 2); /*** RTnet ***/
 		}
 		lp->rx_dma_addr[i] =
-			pci_map_single(lp->pci_dev, rx_skbuff->tail,
-				       rx_skbuff->len, PCI_DMA_FROMDEVICE);
+			dma_map_single(&lp->pci_dev->dev, rx_skbuff->tail,
+				       rx_skbuff->len, DMA_FROM_DEVICE);
 		lp->rx_ring[i].base = (u32)le32_to_cpu(lp->rx_dma_addr[i]);
 		lp->rx_ring[i].buf_length = le16_to_cpu(-PKT_BUF_SZ);
 		lp->rx_ring[i].status = le16_to_cpu(0x8000);
@@ -1157,8 +1157,8 @@ static int pcnet32_start_xmit(struct rtskb *skb,
 	lp->tx_ring[entry].misc = 0x00000000;
 
 	lp->tx_skbuff[entry] = skb;
-	lp->tx_dma_addr[entry] = pci_map_single(lp->pci_dev, skb->data,
-						skb->len, PCI_DMA_TODEVICE);
+	lp->tx_dma_addr[entry] = dma_map_single(&lp->pci_dev->dev, skb->data,
+						skb->len, DMA_TO_DEVICE);
 	lp->tx_ring[entry].base = (u32)le32_to_cpu(lp->tx_dma_addr[entry]);
 
 	/*** RTnet ***/
@@ -1295,11 +1295,11 @@ static int pcnet32_interrupt(rtdm_irq_t *irq_handle) /*** RTnet ***/
 
 				/* We must free the original skb */
 				if (lp->tx_skbuff[entry]) {
-					pci_unmap_single(
-						lp->pci_dev,
+					dma_unmap_single(
+						&lp->pci_dev->dev,
 						lp->tx_dma_addr[entry],
 						lp->tx_skbuff[entry]->len,
-						PCI_DMA_TODEVICE);
+						DMA_TO_DEVICE);
 					dev_kfree_rtskb(
 						lp->tx_skbuff[entry]); /*** RTnet ***/
 					lp->tx_skbuff[entry] = 0;
@@ -1425,19 +1425,19 @@ static int pcnet32_rx(struct rtnet_device *dev,
 						     dev, PKT_BUF_SZ))) {
 						rtskb_reserve(newskb, 2);
 						skb = lp->rx_skbuff[entry];
-						pci_unmap_single(
-							lp->pci_dev,
+						dma_unmap_single(
+							&lp->pci_dev->dev,
 							lp->rx_dma_addr[entry],
 							skb->len,
-							PCI_DMA_FROMDEVICE);
+							DMA_FROM_DEVICE);
 						rtskb_put(skb, pkt_len);
 						lp->rx_skbuff[entry] = newskb;
 						lp->rx_dma_addr
-							[entry] = pci_map_single(
-							lp->pci_dev,
+							[entry] = dma_map_single(
+							&lp->pci_dev->dev,
 							newskb->tail,
 							newskb->len,
-							PCI_DMA_FROMDEVICE);
+							DMA_FROM_DEVICE);
 						lp->rx_ring[entry]
 							.base = le32_to_cpu(
 							lp->rx_dma_addr[entry]);
@@ -1529,9 +1529,9 @@ static int pcnet32_close(struct rtnet_device *dev) /*** RTnet ***/
 	for (i = 0; i < RX_RING_SIZE; i++) {
 		lp->rx_ring[i].status = 0;
 		if (lp->rx_skbuff[i]) {
-			pci_unmap_single(lp->pci_dev, lp->rx_dma_addr[i],
+			dma_unmap_single(&lp->pci_dev->dev, lp->rx_dma_addr[i],
 					 lp->rx_skbuff[i]->len,
-					 PCI_DMA_FROMDEVICE);
+					 DMA_FROM_DEVICE);
 			dev_kfree_rtskb(lp->rx_skbuff[i]); /*** RTnet ***/
 		}
 		lp->rx_skbuff[i] = NULL;
@@ -1540,9 +1540,9 @@ static int pcnet32_close(struct rtnet_device *dev) /*** RTnet ***/
 
 	for (i = 0; i < TX_RING_SIZE; i++) {
 		if (lp->tx_skbuff[i]) {
-			pci_unmap_single(lp->pci_dev, lp->tx_dma_addr[i],
+			dma_unmap_single(&lp->pci_dev->dev, lp->tx_dma_addr[i],
 					 lp->tx_skbuff[i]->len,
-					 PCI_DMA_TODEVICE);
+					 DMA_TO_DEVICE);
 			dev_kfree_rtskb(lp->tx_skbuff[i]); /*** RTnet ***/
 		}
 		lp->tx_skbuff[i] = NULL;
diff --git a/kernel/drivers/net/drivers/r8169.c b/kernel/drivers/net/drivers/r8169.c
index 72a6d2327..eb059d32a 100644
--- a/kernel/drivers/net/drivers/r8169.c
+++ b/kernel/drivers/net/drivers/r8169.c
@@ -1289,7 +1289,7 @@ static void rtl8169_init_ring (struct rtnet_device *rtdev)
 
 	for (i=0 ; i<NUM_TX_DESC ; i++){
 		priv->Tx_skbuff[i]=NULL;
-		priv->txdesc_array_dma_addr[i] = pci_map_single(pdev, &priv->TxDescArray[i], sizeof(struct TxDesc), PCI_DMA_TODEVICE);
+		priv->txdesc_array_dma_addr[i] = dma_map_single(&pdev->dev, &priv->TxDescArray[i], sizeof(struct TxDesc), DMA_TO_DEVICE);
 	}
 
 	for (i=0; i <NUM_RX_DESC; i++) {
@@ -1302,7 +1302,7 @@ static void rtl8169_init_ring (struct rtnet_device *rtdev)
 
 		{//-----------------------------------------------------------------------
 			skb = priv->Rx_skbuff[i];
-			priv->rx_skbuff_dma_addr[i] = pci_map_single(pdev, skb->data, priv->rx_buf_size /* MAX_RX_SKBDATA_SIZE */, PCI_DMA_FROMDEVICE);	/*** <kk> ***/
+			priv->rx_skbuff_dma_addr[i] = dma_map_single(&pdev->dev, skb->data, priv->rx_buf_size /* MAX_RX_SKBDATA_SIZE */, DMA_FROM_DEVICE);	/*** <kk> ***/
 
 			if( skb != NULL ){
 				priv->RxDescArray[i].buf_addr = cpu_to_le32(priv->rx_skbuff_dma_addr[i]);
@@ -1313,7 +1313,7 @@ static void rtl8169_init_ring (struct rtnet_device *rtdev)
 				priv->drvinit_fail = 1;
 			}
 		}//-----------------------------------------------------------------------
-		priv->rxdesc_array_dma_addr[i] = pci_map_single(pdev, &priv->RxDescArray[i], sizeof(struct RxDesc), PCI_DMA_TODEVICE);
+		priv->rxdesc_array_dma_addr[i] = dma_map_single(&pdev->dev, &priv->RxDescArray[i], sizeof(struct RxDesc), DMA_TO_DEVICE);
 		pci_dma_sync_single_for_device(pdev, priv->rxdesc_array_dma_addr[i], sizeof(struct RxDesc), PCI_DMA_TODEVICE);
 	}
 }
@@ -1382,7 +1382,7 @@ static int rtl8169_start_xmit (struct rtskb *skb, struct rtnet_device *rtdev)
 			len = ETH_ZLEN;
 		}
 
-		txbuf_dma_addr = pci_map_single(pdev, skb->data, len, PCI_DMA_TODEVICE);
+		txbuf_dma_addr = dma_map_single(&pdev->dev, skb->data, len, DMA_TO_DEVICE);
 
 		priv->TxDescArray[entry].buf_addr = cpu_to_le32(txbuf_dma_addr);
 
@@ -1508,7 +1508,7 @@ static void rtl8169_tx_interrupt (struct rtnet_device *rtdev, struct rtl8169_pri
 #endif //end #ifdef RTL8169_DYNAMIC_CONTROL
 
 			if (priv->txdesc_array_dma_addr[entry])
-				pci_unmap_single(priv->pci_dev, priv->txdesc_array_dma_addr[entry], priv->Tx_skbuff[entry]->len, PCI_DMA_TODEVICE);	/*** ##KK## ***/
+				dma_unmap_single(&priv->pci_dev->dev, priv->txdesc_array_dma_addr[entry], priv->Tx_skbuff[entry]->len, DMA_TO_DEVICE);	/*** ##KK## ***/
 			dev_kfree_rtskb( priv->Tx_skbuff[entry] );	/*** RTnet; previously: dev_kfree_skb_irq() - luckily we're within an IRQ ***/
 			priv->Tx_skbuff[entry] = NULL;
 			priv->stats.tx_packets++;
@@ -1630,7 +1630,7 @@ static void rtl8169_rx_interrupt (struct rtnet_device *rtdev, struct rtl8169_pri
 				cur_skb = priv->Rx_skbuff[cur_rx];
 
 				if( cur_skb != NULL ){
-					priv->rx_skbuff_dma_addr[cur_rx] = pci_map_single(pdev, cur_skb->data, priv->rx_buf_size /* <kk> MAX_RX_SKBDATA_SIZE */, PCI_DMA_FROMDEVICE);
+					priv->rx_skbuff_dma_addr[cur_rx] = dma_map_single(&pdev->dev, cur_skb->data, priv->rx_buf_size /* <kk> MAX_RX_SKBDATA_SIZE */, DMA_FROM_DEVICE);
 					rxdesc->buf_addr = cpu_to_le32(priv->rx_skbuff_dma_addr[cur_rx]);
 				}
 				else{
diff --git a/kernel/drivers/net/drivers/tulip/interrupt.c b/kernel/drivers/net/drivers/tulip/interrupt.c
index a5e16c829..d65bb3f78 100644
--- a/kernel/drivers/net/drivers/tulip/interrupt.c
+++ b/kernel/drivers/net/drivers/tulip/interrupt.c
@@ -78,8 +78,8 @@ int tulip_refill_rx(/*RTnet*/struct rtnet_device *rtdev)
 			if (skb == NULL)
 				break;
 
-			mapping = pci_map_single(tp->pdev, skb->tail, PKT_BUF_SZ,
-						 PCI_DMA_FROMDEVICE);
+			mapping = dma_map_single(&tp->pdev->dev, skb->tail,
+						 PKT_BUF_SZ, DMA_FROM_DEVICE);
 			tp->rx_buffers[entry].mapping = mapping;
 
 			tp->rx_ring[entry].buffer1 = cpu_to_le32(mapping);
@@ -168,8 +168,9 @@ static int tulip_rx(/*RTnet*/struct rtnet_device *rtdev, nanosecs_abs_t *time_st
 				}
 #endif
 
-				pci_unmap_single(tp->pdev, tp->rx_buffers[entry].mapping,
-						 PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
+				dma_unmap_single(&tp->pdev->dev,
+						 tp->rx_buffers[entry].mapping,
+						 PKT_BUF_SZ, DMA_FROM_DEVICE);
 
 				tp->rx_buffers[entry].skb = NULL;
 				tp->rx_buffers[entry].mapping = 0;
@@ -247,10 +248,10 @@ int tulip_interrupt(rtdm_irq_t *irq_handle)
 				if (tp->tx_buffers[entry].skb == NULL) {
 					/* test because dummy frames not mapped */
 					if (tp->tx_buffers[entry].mapping)
-						pci_unmap_single(tp->pdev,
+						dma_unmap_single(&tp->pdev->dev,
 							 tp->tx_buffers[entry].mapping,
 							 sizeof(tp->setup_frame),
-							 PCI_DMA_TODEVICE);
+							 DMA_TO_DEVICE);
 					continue;
 				}
 
@@ -275,9 +276,10 @@ int tulip_interrupt(rtdm_irq_t *irq_handle)
 					tp->stats.tx_packets++;
 				}
 
-				pci_unmap_single(tp->pdev, tp->tx_buffers[entry].mapping,
+				dma_unmap_single(&tp->pdev->dev,
+						 tp->tx_buffers[entry].mapping,
 						 tp->tx_buffers[entry].skb->len,
-						 PCI_DMA_TODEVICE);
+						 DMA_TO_DEVICE);
 
 				/* Free the original skb. */
 				/*RTnet*/dev_kfree_rtskb(tp->tx_buffers[entry].skb);
diff --git a/kernel/drivers/net/drivers/tulip/tulip_core.c b/kernel/drivers/net/drivers/tulip/tulip_core.c
index f5e7b3e9d..3d0b3dba6 100644
--- a/kernel/drivers/net/drivers/tulip/tulip_core.c
+++ b/kernel/drivers/net/drivers/tulip/tulip_core.c
@@ -333,9 +333,9 @@ static void tulip_up(/*RTnet*/struct rtnet_device *rtdev)
 		*setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1];
 		*setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2];
 
-		mapping = pci_map_single(tp->pdev, tp->setup_frame,
+		mapping = dma_map_single(&tp->pdev->dev, tp->setup_frame,
 					 sizeof(tp->setup_frame),
-					 PCI_DMA_TODEVICE);
+					 DMA_TO_DEVICE);
 		tp->tx_buffers[tp->cur_tx].skb = NULL;
 		tp->tx_buffers[tp->cur_tx].mapping = mapping;
 
@@ -537,7 +537,8 @@ static void tulip_init_ring(/*RTnet*/struct rtnet_device *rtdev)
 		tp->rx_buffers[i].skb = skb;
 		if (skb == NULL)
 			break;
-		mapping = pci_map_single(tp->pdev, skb->tail, PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
+		mapping = dma_map_single(&tp->pdev->dev, skb->tail, PKT_BUF_SZ,
+					 DMA_FROM_DEVICE);
 		tp->rx_buffers[i].mapping = mapping;
 		tp->rx_ring[i].status = cpu_to_le32(DescOwned);	/* Owned by Tulip chip */
 		tp->rx_ring[i].buffer1 = cpu_to_le32(mapping);
@@ -582,7 +583,8 @@ tulip_start_xmit(struct /*RTnet*/rtskb *skb, /*RTnet*/struct rtnet_device *rtdev
 	entry = tp->cur_tx % TX_RING_SIZE;
 
 	tp->tx_buffers[entry].skb = skb;
-	mapping = pci_map_single(tp->pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
+	mapping = dma_map_single(&tp->pdev->dev, skb->data, skb->len,
+				 DMA_TO_DEVICE);
 	tp->tx_buffers[entry].mapping = mapping;
 	tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping);
 
@@ -642,16 +644,16 @@ static void tulip_clean_tx_ring(struct tulip_private *tp)
 		if (tp->tx_buffers[entry].skb == NULL) {
 			/* test because dummy frames not mapped */
 			if (tp->tx_buffers[entry].mapping)
-				pci_unmap_single(tp->pdev,
+				dma_unmap_single(&tp->pdev->dev,
 					tp->tx_buffers[entry].mapping,
 					sizeof(tp->setup_frame),
-					PCI_DMA_TODEVICE);
+					DMA_TO_DEVICE);
 			continue;
 		}
 
-		pci_unmap_single(tp->pdev, tp->tx_buffers[entry].mapping,
+		dma_unmap_single(&tp->pdev->dev, tp->tx_buffers[entry].mapping,
 				tp->tx_buffers[entry].skb->len,
-				PCI_DMA_TODEVICE);
+				DMA_TO_DEVICE);
 
 		/* Free the original skb. */
 		/*RTnet*/dev_kfree_rtskb(tp->tx_buffers[entry].skb);
@@ -731,8 +733,8 @@ static int tulip_close (/*RTnet*/struct rtnet_device *rtdev)
 		tp->rx_ring[i].length = 0;
 		tp->rx_ring[i].buffer1 = 0xBADF00D0;	/* An invalid address. */
 		if (skb) {
-			pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ,
-					 PCI_DMA_FROMDEVICE);
+			dma_unmap_single(&tp->pdev->dev, mapping, PKT_BUF_SZ,
+					 DMA_FROM_DEVICE);
 			/*RTnet*/dev_kfree_rtskb (skb);
 		}
 	}
@@ -740,8 +742,9 @@ static int tulip_close (/*RTnet*/struct rtnet_device *rtdev)
 		struct /*RTnet*/rtskb *skb = tp->tx_buffers[i].skb;
 
 		if (skb != NULL) {
-			pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping,
-					 skb->len, PCI_DMA_TODEVICE);
+			dma_unmap_single(&tp->pdev->dev,
+					 tp->tx_buffers[i].mapping,
+					 skb->len, DMA_TO_DEVICE);
 			/*RTnet*/dev_kfree_rtskb (skb);
 		}
 		tp->tx_buffers[i].skb = NULL;
diff --git a/kernel/drivers/net/drivers/via-rhine.c b/kernel/drivers/net/drivers/via-rhine.c
index fc867cf73..192f02eb6 100644
--- a/kernel/drivers/net/drivers/via-rhine.c
+++ b/kernel/drivers/net/drivers/via-rhine.c
@@ -985,8 +985,8 @@ static void alloc_rbufs(struct rtnet_device *dev) /*** RTnet ***/
 		if (skb == NULL)
 			break;
 		np->rx_skbuff_dma[i] =
-			pci_map_single(np->pdev, skb->tail, np->rx_buf_sz,
-						   PCI_DMA_FROMDEVICE);
+			dma_map_single(&np->pdev->dev, skb->tail, np->rx_buf_sz,
+				       DMA_FROM_DEVICE);
 
 		np->rx_ring[i].addr = cpu_to_le32(np->rx_skbuff_dma[i]);
 		np->rx_ring[i].rx_status = cpu_to_le32(DescOwn);
@@ -1004,9 +1004,8 @@ static void free_rbufs(struct rtnet_device* dev) /*** RTnet ***/
 		np->rx_ring[i].rx_status = 0;
 		np->rx_ring[i].addr = cpu_to_le32(0xBADF00D0); /* An invalid address. */
 		if (np->rx_skbuff[i]) {
-			pci_unmap_single(np->pdev,
-							 np->rx_skbuff_dma[i],
-							 np->rx_buf_sz, PCI_DMA_FROMDEVICE);
+			dma_unmap_single(&np->pdev->dev, np->rx_skbuff_dma[i],
+					 np->rx_buf_sz, DMA_FROM_DEVICE);
 			dev_kfree_rtskb(np->rx_skbuff[i]); /*** RTnet ***/
 		}
 		np->rx_skbuff[i] = 0;
@@ -1044,9 +1043,10 @@ static void free_tbufs(struct rtnet_device* dev) /*** RTnet ***/
 		np->tx_ring[i].addr = cpu_to_le32(0xBADF00D0); /* An invalid address. */
 		if (np->tx_skbuff[i]) {
 			if (np->tx_skbuff_dma[i]) {
-				pci_unmap_single(np->pdev,
-								 np->tx_skbuff_dma[i],
-								 np->tx_skbuff[i]->len, PCI_DMA_TODEVICE);
+				dma_unmap_single(&np->pdev->dev,
+						 np->tx_skbuff_dma[i],
+						 np->tx_skbuff[i]->len,
+						 DMA_TO_DEVICE);
 			}
 			dev_kfree_rtskb(np->tx_skbuff[i]); /*** RTnet ***/
 		}
@@ -1282,7 +1282,8 @@ static int via_rhine_start_tx(struct rtskb *skb, struct rtnet_device *dev) /***
 										  (np->tx_buf[entry] - np->tx_bufs));
 	} else {
 		np->tx_skbuff_dma[entry] =
-			pci_map_single(np->pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
+			dma_map_single(&np->pdev->dev, skb->data, skb->len,
+				       DMA_TO_DEVICE);
 		np->tx_ring[entry].addr = cpu_to_le32(np->tx_skbuff_dma[entry]);
 
 /*** RTnet ***/
@@ -1445,9 +1446,10 @@ static void via_rhine_tx(struct rtnet_device *dev) /*** RTnet ***/
 		}
 		/* Free the original skb. */
 		if (np->tx_skbuff_dma[entry]) {
-			pci_unmap_single(np->pdev,
-							 np->tx_skbuff_dma[entry],
-							 np->tx_skbuff[entry]->len, PCI_DMA_TODEVICE);
+			dma_unmap_single(&np->pdev->dev,
+					 np->tx_skbuff_dma[entry],
+					 np->tx_skbuff[entry]->len,
+					 DMA_TO_DEVICE);
 		}
 		dev_kfree_rtskb(np->tx_skbuff[entry]); /*** RTnet ***/
 		np->tx_skbuff[entry] = NULL;
@@ -1522,8 +1524,10 @@ static void via_rhine_rx(struct rtnet_device *dev, nanosecs_abs_t *time_stamp) /
 				}
 				np->rx_skbuff[entry] = NULL;
 				rtskb_put(skb, pkt_len); /*** RTnet ***/
-				pci_unmap_single(np->pdev, np->rx_skbuff_dma[entry],
-								 np->rx_buf_sz, PCI_DMA_FROMDEVICE);
+				dma_unmap_single(&np->pdev->dev,
+						 np->rx_skbuff_dma[entry],
+						 np->rx_buf_sz,
+						 DMA_FROM_DEVICE);
 			}
 /*** RTnet ***/
 			skb->protocol = rt_eth_type_trans(skb, dev);
@@ -1548,8 +1552,8 @@ static void via_rhine_rx(struct rtnet_device *dev, nanosecs_abs_t *time_stamp) /
 			if (skb == NULL)
 				break;			/* Better luck next round. */
 			np->rx_skbuff_dma[entry] =
-				pci_map_single(np->pdev, skb->tail, np->rx_buf_sz,
-							   PCI_DMA_FROMDEVICE);
+				dma_map_single(&np->pdev->dev, skb->tail,
+					       np->rx_buf_sz, DMA_FROM_DEVICE);
 			np->rx_ring[entry].addr = cpu_to_le32(np->rx_skbuff_dma[entry]);
 		}
 		np->rx_ring[entry].rx_status = cpu_to_le32(DescOwn);

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 08/19] drivers: Convert pci_dma_sync_single_for_cpu/device to DMA API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (6 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 07/19] drivers: Convert pci_map/unmap_single/page " Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 09/19] cobalt: Resolve cast-function-type warnings Florian Bezdeka
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit c1be648a9e6aa1f580f1727f2d22e25ebe33b6d2 ]

The legacy API has been finally dropped, and the new one was "already"
available with 5.10.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/eepro100.c | 26 ++++++++++++++------------
 kernel/drivers/net/drivers/r8169.c    | 10 +++++-----
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/kernel/drivers/net/drivers/eepro100.c b/kernel/drivers/net/drivers/eepro100.c
index 74385d61d..1985befe7 100644
--- a/kernel/drivers/net/drivers/eepro100.c
+++ b/kernel/drivers/net/drivers/eepro100.c
@@ -1076,8 +1076,9 @@ speedo_init_rx_ring(struct rtnet_device *rtdev)
 		rtskb_reserve(skb, sizeof(struct RxFD));
 		if (last_rxf) {
 			last_rxf->link = cpu_to_le32(sp->rx_ring_dma[i]);
-			pci_dma_sync_single_for_device(sp->pdev, last_rxf_dma,
-					sizeof(struct RxFD), PCI_DMA_TODEVICE);
+			dma_sync_single_for_device(&sp->pdev->dev, last_rxf_dma,
+						   sizeof(struct RxFD),
+						   DMA_TO_DEVICE);
 		}
 		last_rxf = rxf;
 		last_rxf_dma = sp->rx_ring_dma[i];
@@ -1086,14 +1087,15 @@ speedo_init_rx_ring(struct rtnet_device *rtdev)
 		/* This field unused by i82557. */
 		rxf->rx_buf_addr = 0xffffffff;
 		rxf->count = cpu_to_le32(PKT_BUF_SZ << 16);
-		pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[i],
-				sizeof(struct RxFD), PCI_DMA_TODEVICE);
+		dma_sync_single_for_device(&sp->pdev->dev, sp->rx_ring_dma[i],
+					   sizeof(struct RxFD), DMA_TO_DEVICE);
 	}
 	sp->dirty_rx = (unsigned int)(i - RX_RING_SIZE);
 	/* Mark the last entry as end-of-list. */
 	last_rxf->status = cpu_to_le32(0xC0000002);	/* '2' is flag value only. */
-	pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[RX_RING_SIZE-1],
-			sizeof(struct RxFD), PCI_DMA_TODEVICE);
+	dma_sync_single_for_device(&sp->pdev->dev,
+				   sp->rx_ring_dma[RX_RING_SIZE-1],
+				   sizeof(struct RxFD), DMA_TO_DEVICE);
 	sp->last_rxf = last_rxf;
 	sp->last_rxf_dma = last_rxf_dma;
 }
@@ -1400,8 +1402,8 @@ static inline struct RxFD *speedo_rx_alloc(struct rtnet_device *rtdev, int entry
 			       DMA_FROM_DEVICE);
 	rtskb_reserve(skb, sizeof(struct RxFD));
 	rxf->rx_buf_addr = 0xffffffff;
-	pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[entry],
-			sizeof(struct RxFD), PCI_DMA_TODEVICE);
+	dma_sync_single_for_device(&sp->pdev->dev, sp->rx_ring_dma[entry],
+				   sizeof(struct RxFD), DMA_TO_DEVICE);
 	return rxf;
 }
 
@@ -1414,8 +1416,8 @@ static inline void speedo_rx_link(struct rtnet_device *rtdev, int entry,
 	rxf->count = cpu_to_le32(PKT_BUF_SZ << 16);
 	sp->last_rxf->link = cpu_to_le32(rxf_dma);
 	sp->last_rxf->status &= cpu_to_le32(~0xC0000000);
-	pci_dma_sync_single_for_device(sp->pdev, sp->last_rxf_dma,
-			sizeof(struct RxFD), PCI_DMA_TODEVICE);
+	dma_sync_single_for_device(&sp->pdev->dev, sp->last_rxf_dma,
+				   sizeof(struct RxFD), DMA_TO_DEVICE);
 	sp->last_rxf = rxf;
 	sp->last_rxf_dma = rxf_dma;
 }
@@ -1487,8 +1489,8 @@ speedo_rx(struct rtnet_device *rtdev, int* packets, nanosecs_abs_t *time_stamp)
 		int status;
 		int pkt_len;
 
-		pci_dma_sync_single_for_cpu(sp->pdev, sp->rx_ring_dma[entry],
-			sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
+		dma_sync_single_for_cpu(&sp->pdev->dev, sp->rx_ring_dma[entry],
+					sizeof(struct RxFD), DMA_FROM_DEVICE);
 		status = le32_to_cpu(sp->rx_ringp[entry]->status);
 		pkt_len = le32_to_cpu(sp->rx_ringp[entry]->count) & 0x3fff;
 
diff --git a/kernel/drivers/net/drivers/r8169.c b/kernel/drivers/net/drivers/r8169.c
index eb059d32a..9b2ac7495 100644
--- a/kernel/drivers/net/drivers/r8169.c
+++ b/kernel/drivers/net/drivers/r8169.c
@@ -1314,7 +1314,7 @@ static void rtl8169_init_ring (struct rtnet_device *rtdev)
 			}
 		}//-----------------------------------------------------------------------
 		priv->rxdesc_array_dma_addr[i] = dma_map_single(&pdev->dev, &priv->RxDescArray[i], sizeof(struct RxDesc), DMA_TO_DEVICE);
-		pci_dma_sync_single_for_device(pdev, priv->rxdesc_array_dma_addr[i], sizeof(struct RxDesc), PCI_DMA_TODEVICE);
+		dma_sync_single_for_device(&pdev->dev, priv->rxdesc_array_dma_addr[i], sizeof(struct RxDesc), DMA_TO_DEVICE);
 	}
 }
 
@@ -1448,7 +1448,7 @@ static int rtl8169_start_xmit (struct rtskb *skb, struct rtnet_device *rtdev)
 		}
 		priv->TxDescArray[entry].status = cpu_to_le32(status);
 
-		pci_dma_sync_single_for_device(pdev, priv->txdesc_array_dma_addr[entry], sizeof(struct TxDesc), PCI_DMA_TODEVICE);
+		dma_sync_single_for_device(&pdev->dev, priv->txdesc_array_dma_addr[entry], sizeof(struct TxDesc), DMA_TO_DEVICE);
 
 		RTL_W8 ( TxPoll, 0x40);		//set polling bit
 
@@ -1558,7 +1558,7 @@ static void rtl8169_rx_interrupt (struct rtnet_device *rtdev, struct rtl8169_pri
 	cur_rx = priv->cur_rx;
 
 	rxdesc = &priv->RxDescArray[cur_rx];
-	pci_dma_sync_single_for_cpu(pdev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
+	dma_sync_single_for_cpu(&pdev->dev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), DMA_FROM_DEVICE);
 
 	while ( ((le32_to_cpu(rxdesc->status) & OWNbit)== 0) && (rxdesc_cnt < max_interrupt_work) ){
 
@@ -1593,7 +1593,7 @@ static void rtl8169_rx_interrupt (struct rtnet_device *rtdev, struct rtl8169_pri
 
 					// Indicate rx_skb
 					if( rx_skb != NULL ){
-						pci_dma_sync_single_for_cpu(pdev, priv->rx_skbuff_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
+						dma_sync_single_for_cpu(&pdev->dev, priv->rx_skbuff_dma_addr[cur_rx], sizeof(struct RxDesc), DMA_FROM_DEVICE);
 
 						rtskb_put ( rx_skb, pkt_size );
 						rx_skb->protocol = rt_eth_type_trans ( rx_skb, rtdev );
@@ -1643,7 +1643,7 @@ static void rtl8169_rx_interrupt (struct rtnet_device *rtdev, struct rtl8169_pri
 
 	    cur_rx = (cur_rx +1) % NUM_RX_DESC;
 	    rxdesc = &priv->RxDescArray[cur_rx];
-	    pci_dma_sync_single_for_cpu(pdev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
+	    dma_sync_single_for_cpu(&pdev->dev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), DMA_FROM_DEVICE);
 
 	}// end of while ( (priv->RxDescArray[cur_rx].status & 0x80000000)== 0)
 

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 09/19] cobalt: Resolve cast-function-type warnings
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (7 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 08/19] drivers: Convert pci_dma_sync_single_for_cpu/device " Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 10/19] drivers/net/experimental/e1000: Use fallthrough Florian Bezdeka
                   ` (10 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 73a91e2c85bb61863cc00f5b44b2095b6e4ecf90 ]

Latest kernel with around gcc-10 starts to complain about the type casts
done for error stubs, syscall handlers and nomac_dev_openclose. Those
casts remain fine, so suppress them by casting to the special
"void (*)(void)" type first.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h |  3 ++-
 kernel/cobalt/posix/syscall.c                          |  3 ++-
 kernel/cobalt/rtdm/device.c                            | 10 ++++++----
 kernel/cobalt/rtdm/fd.c                                |  2 +-
 kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c       |  4 ++--
 5 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
index a0395e187..f023de354 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
@@ -40,7 +40,8 @@
 #error "__NR_COBALT_SYSCALLS > __COBALT_IA32_BASE"
 #endif
 
-#define __syshand32emu__(__name)	((cobalt_syshand)(CoBaLt32emu_ ## __name))
+#define __syshand32emu__(__name)	\
+	((cobalt_syshand)(void (*)(void))(CoBaLt32emu_ ## __name))
 
 #define __COBALT_CALL32emu_INITHAND(__handler)	\
 	[__COBALT_IA32_BASE ... __COBALT_IA32_BASE + __NR_COBALT_SYSCALLS-1] = __handler,
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index cd72b22d1..46c4998e4 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -426,7 +426,8 @@ static int CoBaLt_ni(void)
  *
  * --rpm
  */
-#define __syshand__(__name)	((cobalt_syshand)(CoBaLt_ ## __name))
+#define __syshand__(__name)	\
+	((cobalt_syshand)(void (*)(void))(CoBaLt_ ## __name))
 
 #define __COBALT_NI	__syshand__(ni)
 
diff --git a/kernel/cobalt/rtdm/device.c b/kernel/cobalt/rtdm/device.c
index 736e82da7..12155157a 100644
--- a/kernel/cobalt/rtdm/device.c
+++ b/kernel/cobalt/rtdm/device.c
@@ -412,10 +412,12 @@ int rtdm_dev_register(struct rtdm_device *dev)
 	}
 
 	dev->ops = drv->ops;
-	if (drv->device_flags & RTDM_NAMED_DEVICE)
-		dev->ops.socket = (typeof(dev->ops.socket))enosys;
-	else
-		dev->ops.open = (typeof(dev->ops.open))enosys;
+	if (drv->device_flags & RTDM_NAMED_DEVICE) {
+		dev->ops.socket =
+			(typeof(dev->ops.socket))(void (*)(void))enosys;
+	} else {
+		dev->ops.open = (typeof(dev->ops.open))(void (*)(void))enosys;
+	}
 
 	INIT_LIST_HEAD(&dev->openfd_list);
 	init_waitqueue_head(&dev->putwq);
diff --git a/kernel/cobalt/rtdm/fd.c b/kernel/cobalt/rtdm/fd.c
index e63fab7dc..c7ceb767f 100644
--- a/kernel/cobalt/rtdm/fd.c
+++ b/kernel/cobalt/rtdm/fd.c
@@ -90,7 +90,7 @@ static struct rtdm_fd *fetch_fd(struct cobalt_ppd *p, int ufd)
 
 #define assign_invalid_handler(__handler, __invalid)			\
 	do								\
-		(__handler) = (typeof(__handler))__invalid;		\
+		(__handler) = (typeof(__handler))(void (*)(void))__invalid; \
 	while (0)
 
 /* Calling this handler should beget ENOSYS if not implemented. */
diff --git a/kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c b/kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c
index f75f5f8b7..572d893c0 100644
--- a/kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c
+++ b/kernel/drivers/net/stack/rtmac/nomac/nomac_dev.c
@@ -59,11 +59,11 @@ static struct rtdm_driver
 			 .context_size = 0,
 			 .ops = {
 				 .open = (typeof(nomac_driver.ops.open))
-					 nomac_dev_openclose,
+					 (void (*)(void))nomac_dev_openclose,
 				 .ioctl_rt = nomac_dev_ioctl,
 				 .ioctl_nrt = nomac_dev_ioctl,
 				 .close = (typeof(nomac_driver.ops.close))
-					 nomac_dev_openclose,
+					 (void (*)(void))nomac_dev_openclose,
 			 } };
 
 int nomac_dev_init(struct rtnet_device *rtdev, struct nomac_priv *nomac)

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 10/19] drivers/net/experimental/e1000: Use fallthrough
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (8 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 09/19] cobalt: Resolve cast-function-type warnings Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 11/19] drivers/spi: Convert to GPIO descriptor API Florian Bezdeka
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit b0c1f8afbfdb84c88579e99a53a9f3632477b289 ]

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/experimental/e1000/e1000_82540.c | 2 +-
 kernel/drivers/net/drivers/experimental/e1000/e1000_82571.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_82540.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_82540.c
index 5c4fec0cb..6e6e1f085 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_82540.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_82540.c
@@ -91,7 +91,7 @@ static s32 e1000_init_phy_params_82540(struct e1000_hw *hw)
 	case e1000_82546_rev_3:
 		if (phy->id == M88E1011_I_PHY_ID)
 			break;
-		/* Fall Through */
+		fallthrough;
 	default:
 		ret_val = -E1000_ERR_PHY;
 		goto out;
diff --git a/kernel/drivers/net/drivers/experimental/e1000/e1000_82571.c b/kernel/drivers/net/drivers/experimental/e1000/e1000_82571.c
index ab43f4990..af32a34d0 100644
--- a/kernel/drivers/net/drivers/experimental/e1000/e1000_82571.c
+++ b/kernel/drivers/net/drivers/experimental/e1000/e1000_82571.c
@@ -200,7 +200,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
 			E1000_WRITE_REG(hw, E1000_EECD, eecd);
 			break;
 		}
-		/* Fall Through */
+		fallthrough;
 	default:
 		nvm->type	= e1000_nvm_eeprom_spi;
 		size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 11/19] drivers/spi: Convert to GPIO descriptor API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (9 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 10/19] drivers/net/experimental/e1000: Use fallthrough Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 12/19] drivers/spi: Switch to spi_controller API Florian Bezdeka
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 7913f523e4234167abaed315a806df54a3508183 ]

The legacy one has been retired, and the new one was already available
with 5.10.

CC: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/spi/spi-bcm2835.c | 21 +++++++++++----------
 kernel/drivers/spi/spi-device.c  | 22 +++++-----------------
 kernel/drivers/spi/spi-device.h  |  1 -
 kernel/drivers/spi/spi-master.c  |  7 ++++---
 4 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/kernel/drivers/spi/spi-bcm2835.c b/kernel/drivers/spi/spi-bcm2835.c
index 5299cad7a..b1ee22bf8 100644
--- a/kernel/drivers/spi/spi-bcm2835.c
+++ b/kernel/drivers/spi/spi-bcm2835.c
@@ -281,7 +281,7 @@ static int do_transfer_irq(struct rtdm_spi_remote_slave *slave)
 	 * change the behaviour with gpio-cs this does not happen, so
 	 * it is implemented only for this case.
 	 */
-	if (gpio_is_valid(slave->cs_gpio)) {
+	if (slave->cs_gpiod) {
 		/* Set dummy CS, ->chip_select() was not called. */
 		cs |= BCM2835_SPI_CS_CS_10 | BCM2835_SPI_CS_CS_01;
 		/* Enable SPI block, before filling FIFO. */
@@ -457,11 +457,12 @@ static int find_cs_gpio(struct spi_device *spi)
 	u32 pingroup_index, pin, pin_index;
 	struct device_node *pins;
 	struct gpio_chip *chip;
+	int cs_gpio = -ENOENT;
 	int ret;
 
-	if (gpio_is_valid(spi->cs_gpio)) {
+	if (spi->cs_gpiod) {
 		dev_info(&spi->dev, "using GPIO%i for CS%d\n",
-			 spi->cs_gpio, spi->chip_select);
+			 desc_to_gpio(spi->cs_gpiod), spi->chip_select);
 		return 0;
 	}
 
@@ -477,7 +478,7 @@ static int find_cs_gpio(struct spi_device *spi)
 			     (pin == 8 || pin == 36 || pin == 46)) ||
 			    (spi->chip_select == 1 &&
 			     (pin == 7 || pin == 35))) {
-				spi->cs_gpio = pin;
+				cs_gpio = pin;
 				break;
 			}
 		}
@@ -485,24 +486,24 @@ static int find_cs_gpio(struct spi_device *spi)
 	}
 
 	/* If that failed, assume GPIOs 7-11 are used */
-	if (!gpio_is_valid(spi->cs_gpio) ) {
+	if (!gpio_is_valid(cs_gpio)) {
 		chip = gpiochip_find("pinctrl-bcm2835", gpio_match_name);
 		if (chip == NULL)
 			return 0;
 
-		spi->cs_gpio = chip->base + 8 - spi->chip_select;
+		cs_gpio = chip->base + 8 - spi->chip_select;
 	}
 
 	dev_info(&spi->dev,
 		 "setting up native-CS%i as GPIO %i\n",
-		 spi->chip_select, spi->cs_gpio);
+		 spi->chip_select, cs_gpio);
 
-	ret = gpio_direction_output(spi->cs_gpio,
+	ret = gpio_direction_output(cs_gpio,
 			    (spi->mode & SPI_CS_HIGH) ? 0 : 1);
 	if (ret) {
 		dev_err(&spi->dev,
 			"could not set CS%i gpio %i as output: %i",
-			spi->chip_select, spi->cs_gpio, ret);
+			spi->chip_select, cs_gpio, ret);
 		return ret;
 	}
 
@@ -510,7 +511,7 @@ static int find_cs_gpio(struct spi_device *spi)
 	 * Force value on GPIO in case the pin controller does not
 	 * handle that properly when switching to output mode.
 	 */
-	gpio_set_value(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
+	gpio_set_value(cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
 
 	return 0;
 }
diff --git a/kernel/drivers/spi/spi-device.c b/kernel/drivers/spi/spi-device.c
index 71f30a6ef..6e975fc79 100644
--- a/kernel/drivers/spi/spi-device.c
+++ b/kernel/drivers/spi/spi-device.c
@@ -49,21 +49,12 @@ int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 	if (dev->label == NULL)
 		return -ENOMEM;
 
-	if (gpio_is_valid(spi->cs_gpio))
-		slave->cs_gpio = spi->cs_gpio;
+	if (spi->cs_gpiod)
+		slave->cs_gpiod = spi->cs_gpiod;
 	else {
-		slave->cs_gpio = -ENOENT;
-		if (kmaster->cs_gpios)
-			slave->cs_gpio = kmaster->cs_gpios[spi->chip_select];
-	}
-
-	if (gpio_is_valid(slave->cs_gpio)) {
-		ret = gpio_request(slave->cs_gpio, dev->label);
-		if (ret)
-			goto fail;
-		slave->cs_gpiod = gpio_to_desc(slave->cs_gpio);
-		if (slave->cs_gpiod == NULL)
-			goto fail;
+		slave->cs_gpiod = NULL;
+		if (kmaster->cs_gpiods)
+			slave->cs_gpiod = kmaster->cs_gpiods[spi->chip_select];
 	}
 	
 	mutex_init(&slave->ctl_lock);
@@ -90,9 +81,6 @@ void rtdm_spi_remove_remote_slave(struct rtdm_spi_remote_slave *slave)
 	struct rtdm_spi_master *master = slave->master;
 	struct rtdm_device *dev;
 	rtdm_lockctx_t c;
-	
-	if (gpio_is_valid(slave->cs_gpio))
-		gpio_free(slave->cs_gpio);
 
 	mutex_destroy(&slave->ctl_lock);
 	rtdm_lock_get_irqsave(&master->lock, c);
diff --git a/kernel/drivers/spi/spi-device.h b/kernel/drivers/spi/spi-device.h
index ee43c38e3..305dec341 100644
--- a/kernel/drivers/spi/spi-device.h
+++ b/kernel/drivers/spi/spi-device.h
@@ -29,7 +29,6 @@ struct rtdm_spi_master;
 
 struct rtdm_spi_remote_slave {
 	u8 chip_select;
-	int cs_gpio;
 	struct gpio_desc *cs_gpiod;
 	struct rtdm_device dev;
 	struct list_head next;
diff --git a/kernel/drivers/spi/spi-master.c b/kernel/drivers/spi/spi-master.c
index 0fad328ef..215b4bcc9 100644
--- a/kernel/drivers/spi/spi-master.c
+++ b/kernel/drivers/spi/spi-master.c
@@ -112,7 +112,7 @@ static int do_chip_select(struct rtdm_spi_remote_slave *slave)
 	rtdm_lock_get_irqsave(&master->lock, c);
 	
 	if (master->cs != slave) {
-		if (gpio_is_valid(slave->cs_gpio)) {
+		if (slave->cs_gpiod) {
 			state = !!(slave->config.mode & SPI_CS_HIGH);
 			gpiod_set_raw_value(slave->cs_gpiod, state);
 		} else
@@ -133,7 +133,7 @@ static void do_chip_deselect(struct rtdm_spi_remote_slave *slave)
 
 	rtdm_lock_get_irqsave(&master->lock, c);
 
-	if (gpio_is_valid(slave->cs_gpio)) {
+	if (slave->cs_gpiod) {
 		state = !(slave->config.mode & SPI_CS_HIGH);
 		gpiod_set_raw_value(slave->cs_gpiod, state);
 	} else
@@ -354,7 +354,8 @@ __rtdm_spi_alloc_master(struct device *dev, size_t size, int off)
 	kmaster = spi_alloc_master(dev, size);
 	if (kmaster == NULL)
 		return NULL;
-	
+
+	master->use_gpio_descriptors = true;
 	master = (void *)(kmaster + 1) + off;
 	master->kmaster = kmaster;
 	spi_master_set_devdata(kmaster, master);

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 12/19] drivers/spi: Switch to spi_controller API
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (10 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 11/19] drivers/spi: Convert to GPIO descriptor API Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 13/19] drivers/spi: Account for dropped return value of spi_driver.remove Florian Bezdeka
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 446e07bd3b8a2ae6a25403c8e3212c86779b5b70 ]

The kernel generalized spi_master to spi_controller and renamed several
services. Follow this to avoid breakage when the legacy wrappers are
eventually removed. Should come without functional changes.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/spi/spi-bcm2835.c        | 20 ++++++++++----------
 kernel/drivers/spi/spi-device.c         | 10 +++++-----
 kernel/drivers/spi/spi-master.c         | 24 ++++++++++++------------
 kernel/drivers/spi/spi-master.h         |  2 +-
 kernel/drivers/spi/spi-omap2-mcspi-rt.c | 20 ++++++++++----------
 kernel/drivers/spi/spi-sun6i.c          | 24 ++++++++++++------------
 6 files changed, 50 insertions(+), 50 deletions(-)

diff --git a/kernel/drivers/spi/spi-bcm2835.c b/kernel/drivers/spi/spi-bcm2835.c
index b1ee22bf8..e8df8fe7e 100644
--- a/kernel/drivers/spi/spi-bcm2835.c
+++ b/kernel/drivers/spi/spi-bcm2835.c
@@ -111,7 +111,7 @@ to_master_bcm2835(struct rtdm_spi_remote_slave *slave)
 static inline struct device *
 master_to_kdev(struct rtdm_spi_master *master)
 {
-	return &master->kmaster->dev;
+	return &master->controller->dev;
 }
 
 static inline u32 bcm2835_rd(struct spi_master_bcm2835 *spim,
@@ -453,7 +453,7 @@ static int gpio_match_name(struct gpio_chip *chip, void *data)
 
 static int find_cs_gpio(struct spi_device *spi)
 {
-	struct spi_master *kmaster = spi->master;
+	struct spi_controller *ctlr = spi->controller;
 	u32 pingroup_index, pin, pin_index;
 	struct device_node *pins;
 	struct gpio_chip *chip;
@@ -469,7 +469,7 @@ static int find_cs_gpio(struct spi_device *spi)
 	/* Translate native CS to GPIO. */
 
 	for (pingroup_index = 0;
-	     (pins = of_parse_phandle(kmaster->dev.of_node,
+	     (pins = of_parse_phandle(ctlr->dev.of_node,
 		     "pinctrl-0", pingroup_index)) != 0; pingroup_index++) {
 		for (pin_index = 0;
 		     of_property_read_u32_index(pins, "brcm,pins",
@@ -579,7 +579,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
 {
 	struct spi_master_bcm2835 *spim;
 	struct rtdm_spi_master *master;
-	struct spi_master *kmaster;
+	struct spi_controller *ctlr;
 	struct resource *r;
 	int ret, irq;
 
@@ -594,11 +594,11 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
 	master->ops = &bcm2835_master_ops;
 	platform_set_drvdata(pdev, master);
 
-	kmaster = master->kmaster;
-	kmaster->mode_bits = BCM2835_SPI_MODE_BITS;
-	kmaster->bits_per_word_mask = SPI_BPW_MASK(8);
-	kmaster->num_chipselect = 2;
-	kmaster->dev.of_node = pdev->dev.of_node;
+	ctlr = master->controller;
+	ctlr->mode_bits = BCM2835_SPI_MODE_BITS;
+	ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
+	ctlr->num_chipselect = 2;
+	ctlr->dev.of_node = pdev->dev.of_node;
 
 	spim = container_of(master, struct spi_master_bcm2835, master);
 	rtdm_event_init(&spim->transfer_done, 0);
@@ -652,7 +652,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
 fail_unclk:
 	clk_disable_unprepare(spim->clk);
 fail:
-	spi_master_put(kmaster);
+	spi_controller_put(ctlr);
 
 	return ret;
 }
diff --git a/kernel/drivers/spi/spi-device.c b/kernel/drivers/spi/spi-device.c
index 6e975fc79..397af0f33 100644
--- a/kernel/drivers/spi/spi-device.c
+++ b/kernel/drivers/spi/spi-device.c
@@ -29,7 +29,7 @@ int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 			      struct rtdm_spi_master *master,
 			      struct spi_device *spi)
 {
-	struct spi_master *kmaster = master->kmaster;
+	struct spi_controller *ctlr = master->controller;
 	struct rtdm_device *dev;
 	rtdm_lockctx_t c;
 	int ret;
@@ -44,8 +44,8 @@ int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 	dev = &slave->dev;
 	dev->driver = &master->driver;
 	dev->label = kasprintf(GFP_KERNEL, "%s/slave%d.%%d",
-			       dev_name(&kmaster->dev),
-			       kmaster->bus_num);
+			       dev_name(&ctlr->dev),
+			       ctlr->bus_num);
 	if (dev->label == NULL)
 		return -ENOMEM;
 
@@ -53,8 +53,8 @@ int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 		slave->cs_gpiod = spi->cs_gpiod;
 	else {
 		slave->cs_gpiod = NULL;
-		if (kmaster->cs_gpiods)
-			slave->cs_gpiod = kmaster->cs_gpiods[spi->chip_select];
+		if (ctlr->cs_gpiods)
+			slave->cs_gpiod = ctlr->cs_gpiods[spi->chip_select];
 	}
 	
 	mutex_init(&slave->ctl_lock);
diff --git a/kernel/drivers/spi/spi-master.c b/kernel/drivers/spi/spi-master.c
index 215b4bcc9..cffeaf087 100644
--- a/kernel/drivers/spi/spi-master.c
+++ b/kernel/drivers/spi/spi-master.c
@@ -349,16 +349,16 @@ struct rtdm_spi_master *
 __rtdm_spi_alloc_master(struct device *dev, size_t size, int off)
 {
 	struct rtdm_spi_master *master;
-	struct spi_master *kmaster;
+	struct spi_controller *ctlr;
 
-	kmaster = spi_alloc_master(dev, size);
-	if (kmaster == NULL)
+	ctlr = spi_alloc_master(dev, size);
+	if (ctlr == NULL)
 		return NULL;
 
-	master->use_gpio_descriptors = true;
-	master = (void *)(kmaster + 1) + off;
-	master->kmaster = kmaster;
-	spi_master_set_devdata(kmaster, master);
+	ctlr->use_gpio_descriptors = true;
+	master = (void *)(ctlr + 1) + off;
+	master->controller = ctlr;
+	spi_master_set_devdata(ctlr, master);
 
 	return master;
 }
@@ -367,7 +367,7 @@ EXPORT_SYMBOL_GPL(__rtdm_spi_alloc_master);
 int __rtdm_spi_setup_driver(struct rtdm_spi_master *master)
 {
 	master->classname = kstrdup(
-		dev_name(&master->kmaster->dev), GFP_KERNEL);
+		dev_name(&master->controller->dev), GFP_KERNEL);
 	master->devclass = class_create(THIS_MODULE,
 		master->classname);
 	if (IS_ERR(master->devclass)) {
@@ -416,20 +416,20 @@ static int spi_transfer_one_unimp(struct spi_master *master,
 
 int rtdm_spi_add_master(struct rtdm_spi_master *master)
 {
-	struct spi_master *kmaster = master->kmaster;
+	struct spi_controller *ctlr = master->controller;
 
 	/*
 	 * Prevent the transfer handler to be called from the regular
 	 * SPI stack, just in case.
 	 */
-	kmaster->transfer_one = spi_transfer_one_unimp;
+	ctlr->transfer_one = spi_transfer_one_unimp;
 	master->devclass = NULL;
 
 	/*
 	 * Add the core SPI driver, devices on the bus will be
 	 * enumerated, handed to spi_device_probe().
 	 */
-	return spi_register_master(kmaster);
+	return spi_register_controller(ctlr);
 }
 EXPORT_SYMBOL_GPL(rtdm_spi_add_master);
 
@@ -439,7 +439,7 @@ void rtdm_spi_remove_master(struct rtdm_spi_master *master)
 	char *classname = master->classname;
 	
 	rtdm_mutex_destroy(&master->bus_lock);
-	spi_unregister_master(master->kmaster);
+	spi_unregister_controller(master->controller);
 	rtdm_drv_set_sysclass(&master->driver, NULL);
 	class_destroy(class);
 	kfree(classname);
diff --git a/kernel/drivers/spi/spi-master.h b/kernel/drivers/spi/spi-master.h
index ecfea2f90..449a6cc60 100644
--- a/kernel/drivers/spi/spi-master.h
+++ b/kernel/drivers/spi/spi-master.h
@@ -53,7 +53,7 @@ struct rtdm_spi_master_ops {
 struct rtdm_spi_master {
 	int subclass;
 	const struct rtdm_spi_master_ops *ops;
-	struct spi_master *kmaster;
+	struct spi_controller *controller;
 	struct {	/* Internal */
 		struct rtdm_driver driver;
 		struct class *devclass;
diff --git a/kernel/drivers/spi/spi-omap2-mcspi-rt.c b/kernel/drivers/spi/spi-omap2-mcspi-rt.c
index 03678b991..7918f61e7 100644
--- a/kernel/drivers/spi/spi-omap2-mcspi-rt.c
+++ b/kernel/drivers/spi/spi-omap2-mcspi-rt.c
@@ -181,7 +181,7 @@ to_master_omap2_mcspi(struct rtdm_spi_remote_slave *slave)
 static inline struct device *
 master_to_kdev(struct rtdm_spi_master *master)
 {
-	return &master->kmaster->dev;
+	return &master->controller->dev;
 }
 
 static inline u32 mcspi_rd_reg(struct spi_master_omap2_mcspi *spim,
@@ -881,7 +881,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
 {
 	struct spi_master_omap2_mcspi *spim;
 	struct rtdm_spi_master *master;
-	struct spi_master *kmaster;
+	struct spi_controller *ctlr;
 	struct resource *r;
 	int ret, irq;
 	u32 regs_offset = 0;
@@ -912,21 +912,21 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
 	master->ops = &omap2_mcspi_master_ops;
 	platform_set_drvdata(pdev, master);
 
-	kmaster = master->kmaster;
+	ctlr = master->controller;
 	/* flags understood by this controller driver */
-	kmaster->mode_bits = OMAP2_MCSPI_SPI_MODE_BITS;
+	ctlr->mode_bits = OMAP2_MCSPI_SPI_MODE_BITS;
 	/* TODO: SPI_BPW_RANGE_MASK(4, 32); */
-	kmaster->bits_per_word_mask = SPI_BPW_MASK(8);
+	ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
 	of_property_read_u32(pdev->dev.of_node, "ti,spi-num-cs", &num_cs);
-	kmaster->num_chipselect = num_cs;
+	ctlr->num_chipselect = num_cs;
 	if (of_get_property(pdev->dev.of_node,
 		"ti,pindir-d0-out-d1-in", NULL)) {
 		pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN;
 	}
 
-	kmaster->max_speed_hz = OMAP2_MCSPI_MAX_FREQ;
-	kmaster->min_speed_hz = OMAP2_MCSPI_MAX_FREQ >> 15;
-	kmaster->dev.of_node = pdev->dev.of_node;
+	ctlr->max_speed_hz = OMAP2_MCSPI_MAX_FREQ;
+	ctlr->min_speed_hz = OMAP2_MCSPI_MAX_FREQ >> 15;
+	ctlr->dev.of_node = pdev->dev.of_node;
 
 	spim = container_of(master, struct spi_master_omap2_mcspi, master);
 	rtdm_event_init(&spim->transfer_done, 0);
@@ -987,7 +987,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
 
 fail_unclk:
 fail:
-	spi_master_put(kmaster);
+	spi_controller_put(ctlr);
 
 	return ret;
 }
diff --git a/kernel/drivers/spi/spi-sun6i.c b/kernel/drivers/spi/spi-sun6i.c
index 36a2cd471..72a4abd0d 100644
--- a/kernel/drivers/spi/spi-sun6i.c
+++ b/kernel/drivers/spi/spi-sun6i.c
@@ -150,7 +150,7 @@ to_master_sun6i(struct rtdm_spi_remote_slave *slave)
 static inline struct device *
 master_to_kdev(struct rtdm_spi_master *master)
 {
-	return &master->kmaster->dev;
+	return &master->controller->dev;
 }
 
 static inline u32 sun6i_rd(struct spi_master_sun6i *spim,
@@ -509,7 +509,7 @@ static int sun6i_spi_probe(struct platform_device *pdev)
 {
 	struct rtdm_spi_master *master;
 	struct spi_master_sun6i *spim;
-	struct spi_master *kmaster;
+	struct spi_controller *ctlr;
 	struct resource *r;
 	int ret, irq;
 	u32 clk_rate;
@@ -525,13 +525,13 @@ static int sun6i_spi_probe(struct platform_device *pdev)
 	master->ops = &sun6i_master_ops;
 	platform_set_drvdata(pdev, master);
 
-	kmaster = master->kmaster;
-	kmaster->max_speed_hz = 100 * 1000 * 1000;
-	kmaster->min_speed_hz = 3 * 1000;
-	kmaster->mode_bits = SUN6I_SPI_MODE_BITS;
-	kmaster->bits_per_word_mask = SPI_BPW_MASK(8);
-	kmaster->num_chipselect = 4;
-	kmaster->dev.of_node = pdev->dev.of_node;
+	ctlr = master->controller;
+	ctlr->max_speed_hz = 100 * 1000 * 1000;
+	ctlr->min_speed_hz = 3 * 1000;
+	ctlr->mode_bits = SUN6I_SPI_MODE_BITS;
+	ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
+	ctlr->num_chipselect = 4;
+	ctlr->dev.of_node = pdev->dev.of_node;
 
 	spim = container_of(master, struct spi_master_sun6i, master);
 	spim->setup = of_device_get_match_data(&pdev->dev);
@@ -572,8 +572,8 @@ static int sun6i_spi_probe(struct platform_device *pdev)
 	 * the fastest transfers properly.
 	 */
 	clk_rate = clk_get_rate(spim->mclk);
-	if (clk_rate < 2 * kmaster->max_speed_hz)
-		clk_set_rate(spim->mclk, 2 * kmaster->max_speed_hz);
+	if (clk_rate < 2 * ctlr->max_speed_hz)
+		clk_set_rate(spim->mclk, 2 * ctlr->max_speed_hz);
 
 	spim->clk_hz = clk_get_rate(spim->mclk);
 
@@ -624,7 +624,7 @@ fail_unclk:
 	clk_disable_unprepare(spim->mclk);
 	clk_disable_unprepare(spim->hclk);
 fail:
-	spi_master_put(kmaster);
+	spi_controller_put(ctlr);
 
 	return ret;
 }

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 13/19] drivers/spi: Account for dropped return value of spi_driver.remove
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (11 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 12/19] drivers/spi: Switch to spi_controller API Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 14/19] drivers/testing/heapcheck: Replace prandom_u32 with custom implementation Florian Bezdeka
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 76b64804630119c894be4e0352d24ea9d8982b38 ]

Changed in 5.18.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/spi/spi-device.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/kernel/drivers/spi/spi-device.c b/kernel/drivers/spi/spi-device.c
index 397af0f33..6e368bd55 100644
--- a/kernel/drivers/spi/spi-device.c
+++ b/kernel/drivers/spi/spi-device.c
@@ -124,13 +124,19 @@ static int spi_device_probe(struct spi_device *spi)
 	return 0;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
+static void spi_device_remove(struct spi_device *spi)
+#else
 static int spi_device_remove(struct spi_device *spi)
+#endif
 {
 	struct rtdm_spi_remote_slave *slave = spi_get_drvdata(spi);
 
 	slave->master->ops->detach_slave(slave);
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
 	return 0;
+#endif
 }
 
 static const struct of_device_id spi_device_match[] = {

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 14/19] drivers/testing/heapcheck: Replace prandom_u32 with custom implementation
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (12 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 13/19] drivers/spi: Account for dropped return value of spi_driver.remove Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 15/19] drivers/net/pcnet32: Adjust for kernel 6.1 Florian Bezdeka
                   ` (5 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit d41c353fc20318ee2282c959cdf676f2e9c53437 ]

prandom_u32 was dropped from 6.1, but get_random_u32 is not oob-safe. So
we only use it for initializing a seed and then rely on our own version
of next_pseudo_random32. The latter is still available via
linux/prandom.h, but given that there are no more in-tree users, it
could be dropped at any point in the future.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/testing/heapcheck.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/kernel/drivers/testing/heapcheck.c b/kernel/drivers/testing/heapcheck.c
index 1b97d1d02..fc6e91d3a 100644
--- a/kernel/drivers/testing/heapcheck.c
+++ b/kernel/drivers/testing/heapcheck.c
@@ -53,6 +53,8 @@ static struct runstats *statistics;
 
 static int nrstats;
 
+static unsigned int random_seed;
+
 static inline void breathe(int loops)
 {
 	if ((loops % 1000) == 0)
@@ -68,6 +70,12 @@ static inline void do_swap(void *left, void *right)
 	memcpy(right, trans, sizeof(struct chunk));
 }
 
+static inline unsigned int pseudo_random(void)
+{
+	random_seed = random_seed * 1664525 + 1013904223;
+	return random_seed;
+}
+
 static void random_shuffle(void *vbase, size_t nmemb)
 {
 	struct {
@@ -76,7 +84,7 @@ static void random_shuffle(void *vbase, size_t nmemb)
 	unsigned int j, k;
 
 	for (j = nmemb; j > 0; j--) {
-		k = (unsigned int)(prandom_u32() % nmemb) + 1;
+		k = (unsigned int)(pseudo_random() % nmemb) + 1;
 		if (j == k)
 			continue;
 		do_swap(&base[j - 1], &base[k - 1]);
@@ -166,6 +174,8 @@ static int test_seq(size_t heap_size, size_t block_size, int flags)
 	bool done_frag;
 	void *mem, *p;
 
+	random_seed = get_random_u32();
+
 	maxblocks = heap_size / block_size;
 
 	mem = vmalloc(heap_size);
@@ -224,7 +234,7 @@ static int test_seq(size_t heap_size, size_t block_size, int flags)
 		}
 		chunks[n].ptr = p;
 		if (flags & RTTST_HEAPCHECK_PATTERN) {
-			chunks[n].pattern = (enum pattern)(prandom_u32() % 3);
+			chunks[n].pattern = (enum pattern)(pseudo_random() % 3);
 			fill_pattern(chunks[n].ptr, block_size, chunks[n].pattern);
 		}
 		breathe(n);

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 15/19] drivers/net/pcnet32: Adjust for kernel 6.1
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (13 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 14/19] drivers/testing/heapcheck: Replace prandom_u32 with custom implementation Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 16/19] cobalt: Adjust dev_addr_set wrapper to 5.10, 5.1 and 4.19 backports Florian Bezdeka
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

From: Jan Kiszka <jan.kiszka@siemens.com>

[ master commit 30472d79b0bc3055f23e6ae2dbb87753f505c341 ]

Align with mainline regarding DMA mask setting to allow compilation
against recent kernels up to 6.1.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/pcnet32.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/drivers/net/drivers/pcnet32.c b/kernel/drivers/net/drivers/pcnet32.c
index 4fd5ba0b4..eebb66ecb 100644
--- a/kernel/drivers/net/drivers/pcnet32.c
+++ b/kernel/drivers/net/drivers/pcnet32.c
@@ -520,10 +520,11 @@ static int pcnet32_probe_pci(struct pci_dev *pdev,
 		return -ENODEV;
 	}
 
-	if (!dma_supported(&pdev->dev, PCNET32_DMA_MASK)) {
+	err = dma_set_mask(&pdev->dev, PCNET32_DMA_MASK);
+	if (err) {
 		printk(KERN_ERR PFX
 		       "architecture does not support 32bit PCI busmaster DMA\n");
-		return -ENODEV;
+		return err;
 	}
 
 	return pcnet32_probe1(ioaddr, pdev->irq, 1, pdev);

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 16/19] cobalt: Adjust dev_addr_set wrapper to 5.10, 5.1 and 4.19 backports
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (14 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 15/19] drivers/net/pcnet32: Adjust for kernel 6.1 Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 17/19] cobalt/pipe: Allow building with kernels up to 6.1 Florian Bezdeka
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

Based on master commit
97edeebab85a ("cobalt: Adjust dev_addr_set wrapper to 5.10 backport").

The 3.2 stable branch still supports kernel 4.19. As 4.19 got the
affected functions as backports we have to care.

Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index 62fbb1a2a..7654047b4 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -252,7 +252,13 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 #define close_fd(__ufd)	__close_fd(current->files, __ufd)
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0) && \
+    (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0) || \
+     LINUX_VERSION_CODE < KERNEL_VERSION(5,10,188)) && \
+    (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0) || \
+     LINUX_VERSION_CODE < KERNEL_VERSION(5,4,251)) && \
+    (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) || \
+     LINUX_VERSION_CODE < KERNEL_VERSION(4,19,291))
 #define dev_addr_set(dev, addr)		memcpy((dev)->dev_addr, addr, MAX_ADDR_LEN)
 #define eth_hw_addr_set(dev, addr)	memcpy((dev)->dev_addr, addr, ETH_ALEN)
 #endif

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 17/19] cobalt/pipe: Allow building with kernels up to 6.1
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (15 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 16/19] cobalt: Adjust dev_addr_set wrapper to 5.10, 5.1 and 4.19 backports Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 18/19] cobalt/x86: " Florian Bezdeka
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

This is a partial backport of
0537ba93cdb3 ("cobalt: Drop wrappings for kernels < 5.10")

It fixes a compile error (compat_ptr not defined).

Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
 kernel/cobalt/pipe.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/cobalt/pipe.c b/kernel/cobalt/pipe.c
index 17aca5df6..e846303e8 100644
--- a/kernel/cobalt/pipe.c
+++ b/kernel/cobalt/pipe.c
@@ -27,6 +27,7 @@
 #include <linux/spinlock.h>
 #include <linux/device.h>
 #include <linux/uaccess.h>
+#include <linux/compat.h>
 #include <asm/io.h>
 #include <asm/xenomai/syscall.h>
 #include <cobalt/kernel/sched.h>

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 18/19] cobalt/x86: Allow building with kernels up to 6.1
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (16 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 17/19] cobalt/pipe: Allow building with kernels up to 6.1 Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 19/19] drivers/spi: Add support for kernels < 5.1 Florian Bezdeka
  2023-09-01  7:12 ` [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Jan Kiszka
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

asm/fpu/internal.h has been removed in 5.16.

Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
 kernel/cobalt/arch/x86/include/asm/xenomai/wrappers.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/wrappers.h b/kernel/cobalt/arch/x86/include/asm/xenomai/wrappers.h
index a4cc368a5..f8732776c 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/wrappers.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/wrappers.h
@@ -40,8 +40,10 @@
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
 #include <asm/i387.h>
 #include <asm/fpu-internal.h>
-#else
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) && \
+      LINUX_VERSION_CODE < KERNEL_VERSION(5,16,0)
 #include <asm/fpu/internal.h>
+#else
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0)

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH stable/v3.2.x 19/19] drivers/spi: Add support for kernels < 5.1
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (17 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 18/19] cobalt/x86: " Florian Bezdeka
@ 2023-08-31 20:37 ` Florian Bezdeka
  2023-09-01  7:12 ` [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Jan Kiszka
  19 siblings, 0 replies; 23+ messages in thread
From: Florian Bezdeka @ 2023-08-31 20:37 UTC (permalink / raw)
  To: xenomai, jan.kiszka

Upstream commit 7913f523e423 ("drivers/spi: Convert to GPIO descriptor API")
was taken into the stable branch 1:1.

This patch adds support for kernels < 5.1 on top so that we do not have
to drop for 4.19 kernels for the Xenomai stable releases.

Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
 kernel/drivers/spi/spi-bcm2835.c | 26 ++++++++++++++++++++++++--
 kernel/drivers/spi/spi-device.c  | 39 +++++++++++++++++++++++++++++++--------
 kernel/drivers/spi/spi-master.c  |  2 ++
 3 files changed, 57 insertions(+), 10 deletions(-)

diff --git a/kernel/drivers/spi/spi-bcm2835.c b/kernel/drivers/spi/spi-bcm2835.c
index e8df8fe7e..a3fb0c75e 100644
--- a/kernel/drivers/spi/spi-bcm2835.c
+++ b/kernel/drivers/spi/spi-bcm2835.c
@@ -139,6 +139,28 @@ static inline void bcm2835_rd_fifo(struct spi_master_bcm2835 *spim)
 	}
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0)
+static inline bool xn_gpio_is_valid(struct spi_device *spi)
+{
+       return spi->cs_gpiod != NULL;
+}
+
+static inline int xn_get_gpio(struct spi_device *spi)
+{
+       return desc_to_gpio(spi->cs_gpiod);
+}
+#else
+static inline bool xn_gpio_is_valid(struct spi_device *spi)
+{
+       return gpio_is_valid(spi->cs_gpio);
+}
+
+static inline int xn_get_gpio(struct spi_device *spi)
+{
+       return spi->cs_gpio;
+}
+#endif
+
 static inline void bcm2835_wr_fifo(struct spi_master_bcm2835 *spim)
 {
 	u8 byte;
@@ -460,9 +482,9 @@ static int find_cs_gpio(struct spi_device *spi)
 	int cs_gpio = -ENOENT;
 	int ret;
 
-	if (spi->cs_gpiod) {
+	if (xn_gpio_is_valid(spi)) {
 		dev_info(&spi->dev, "using GPIO%i for CS%d\n",
-			 desc_to_gpio(spi->cs_gpiod), spi->chip_select);
+			 xn_get_gpio(spi), spi->chip_select);
 		return 0;
 	}
 
diff --git a/kernel/drivers/spi/spi-device.c b/kernel/drivers/spi/spi-device.c
index 6e368bd55..d984facaa 100644
--- a/kernel/drivers/spi/spi-device.c
+++ b/kernel/drivers/spi/spi-device.c
@@ -25,6 +25,35 @@
 #include <linux/spi/spi.h>
 #include "spi-master.h"
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+static inline void rtdm_spi_slave_init(struct spi_controller *ctrl,
+				       struct rtdm_spi_remote_slave *slave,
+				       struct spi_device *spi)
+{
+	if (spi->cs_gpiod)
+		slave->cs_gpiod = spi->cs_gpiod;
+	else {
+		slave->cs_gpiod = NULL;
+		if (ctrl->cs_gpiods)
+			slave->cs_gpiod = ctrl->cs_gpiods[spi->chip_select];
+	}
+}
+#else
+static inline void rtdm_spi_slave_init(struct spi_controller *ctrl,
+				       struct rtdm_spi_remote_slave *slave,
+				       struct spi_device *spi)
+{
+	if (gpio_is_valid(spi->cs_gpio))
+		slave->cs_gpiod = gpio_to_desc(spi->cs_gpio);
+	else {
+		slave->cs_gpiod = NULL;
+		if (ctrl->cs_gpios)
+			slave->cs_gpiod =
+				gpio_to_desc(ctrl->cs_gpios[spi->chip_select]);
+	}
+}
+#endif
+
 int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 			      struct rtdm_spi_master *master,
 			      struct spi_device *spi)
@@ -49,14 +78,8 @@ int rtdm_spi_add_remote_slave(struct rtdm_spi_remote_slave *slave,
 	if (dev->label == NULL)
 		return -ENOMEM;
 
-	if (spi->cs_gpiod)
-		slave->cs_gpiod = spi->cs_gpiod;
-	else {
-		slave->cs_gpiod = NULL;
-		if (ctlr->cs_gpiods)
-			slave->cs_gpiod = ctlr->cs_gpiods[spi->chip_select];
-	}
-	
+	rtdm_spi_slave_init(ctlr, slave, spi);
+
 	mutex_init(&slave->ctl_lock);
 
 	dev->device_data = master;
diff --git a/kernel/drivers/spi/spi-master.c b/kernel/drivers/spi/spi-master.c
index cffeaf087..9bddb9e47 100644
--- a/kernel/drivers/spi/spi-master.c
+++ b/kernel/drivers/spi/spi-master.c
@@ -355,7 +355,9 @@ __rtdm_spi_alloc_master(struct device *dev, size_t size, int off)
 	if (ctlr == NULL)
 		return NULL;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0)
 	ctlr->use_gpio_descriptors = true;
+#endif
 	master = (void *)(ctlr + 1) + off;
 	master->controller = ctlr;
 	spi_master_set_devdata(ctlr, master);

-- 
2.39.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels
  2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
                   ` (18 preceding siblings ...)
  2023-08-31 20:37 ` [PATCH stable/v3.2.x 19/19] drivers/spi: Add support for kernels < 5.1 Florian Bezdeka
@ 2023-09-01  7:12 ` Jan Kiszka
  2023-09-01  8:08   ` Florian Bezdeka
  19 siblings, 1 reply; 23+ messages in thread
From: Jan Kiszka @ 2023-09-01  7:12 UTC (permalink / raw)
  To: Florian Bezdeka, xenomai

On 31.08.23 22:37, Florian Bezdeka wrote:
> Hi all,
> 
> with this series applied the stable/3.2.x branch gets buildable with
> the 6.1 LTS series of Linux / dovetail.
> 
> Most of the patches were taken 1:1 from the master branch. The commit id
> on the master branch is mentioned in each patch / commit.
> 
> The last patch is a manual backport to support 4.19 kernels. The
> referenced commit in master did not have to care about such old kernels.
> We already stopped supporting them in master. Please review carefully!
> 

Yes, this needs careful checking and a second thought. In the one side,
some driver changes are more invasive than I normally take into stable.
On the other, most have lived in master now for quite a while.

If we take all this, the series should be reworked to avoid obvious
build breakages during potential bisections. That means folding the
fixups for kernels <5.10 into the patches that require them.

Jan

-- 
Siemens AG, Technology
Linux Expert Center


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels
  2023-09-01  7:12 ` [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Jan Kiszka
@ 2023-09-01  8:08   ` Florian Bezdeka
  2023-09-01  8:25     ` Jan Kiszka
  0 siblings, 1 reply; 23+ messages in thread
From: Florian Bezdeka @ 2023-09-01  8:08 UTC (permalink / raw)
  To: Jan Kiszka, xenomai

On Fri, 2023-09-01 at 09:12 +0200, Jan Kiszka wrote:
> On 31.08.23 22:37, Florian Bezdeka wrote:
> > Hi all,
> > 
> > with this series applied the stable/3.2.x branch gets buildable with
> > the 6.1 LTS series of Linux / dovetail.
> > 
> > Most of the patches were taken 1:1 from the master branch. The commit id
> > on the master branch is mentioned in each patch / commit.
> > 
> > The last patch is a manual backport to support 4.19 kernels. The
> > referenced commit in master did not have to care about such old kernels.
> > We already stopped supporting them in master. Please review carefully!
> > 
> 
> Yes, this needs careful checking and a second thought. In the one side,
> some driver changes are more invasive than I normally take into stable.
> On the other, most have lived in master now for quite a while.
> 
> If we take all this, the series should be reworked to avoid obvious
> build breakages during potential bisections. That means folding the
> fixups for kernels <5.10 into the patches that require them.

Folding should be easy, but I think we cannot avoid build breakages.
Each patch is basically fixing one or more build problems.

I separated the necessary backport (we're talking about the last patch
only) to keep as much as possible identical/unmodified to the master
commits. Maybe we should move it next to the patch that it enables for
4.19 instead of folding?

Florian
 
> 
> Jan
> 
> -- 
> Siemens AG, Technology
> Linux Expert Center


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels
  2023-09-01  8:08   ` Florian Bezdeka
@ 2023-09-01  8:25     ` Jan Kiszka
  0 siblings, 0 replies; 23+ messages in thread
From: Jan Kiszka @ 2023-09-01  8:25 UTC (permalink / raw)
  To: Florian Bezdeka, xenomai

On 01.09.23 10:08, Florian Bezdeka wrote:
> On Fri, 2023-09-01 at 09:12 +0200, Jan Kiszka wrote:
>> On 31.08.23 22:37, Florian Bezdeka wrote:
>>> Hi all,
>>>
>>> with this series applied the stable/3.2.x branch gets buildable with
>>> the 6.1 LTS series of Linux / dovetail.
>>>
>>> Most of the patches were taken 1:1 from the master branch. The commit id
>>> on the master branch is mentioned in each patch / commit.
>>>
>>> The last patch is a manual backport to support 4.19 kernels. The
>>> referenced commit in master did not have to care about such old kernels.
>>> We already stopped supporting them in master. Please review carefully!
>>>
>>
>> Yes, this needs careful checking and a second thought. In the one side,
>> some driver changes are more invasive than I normally take into stable.
>> On the other, most have lived in master now for quite a while.
>>
>> If we take all this, the series should be reworked to avoid obvious
>> build breakages during potential bisections. That means folding the
>> fixups for kernels <5.10 into the patches that require them.
> 
> Folding should be easy, but I think we cannot avoid build breakages.
> Each patch is basically fixing one or more build problems.

I'm referring to build breakages for currently supported kernels, ie. up
to 5.15. Having 6.1 only working at the end of the series is no issue,
but patch 4, e.g., breaks <5.10 first, and only patch 16 fixes this again.

Jan

> 
> I separated the necessary backport (we're talking about the last patch
> only) to keep as much as possible identical/unmodified to the master
> commits. Maybe we should move it next to the patch that it enables for
> 4.19 instead of folding?
> 
> Florian
>  
>>
>> Jan
>>
>> -- 
>> Siemens AG, Technology
>> Linux Expert Center
> 

-- 
Siemens AG, Technology
Linux Expert Center


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2023-09-01  8:26 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-31 20:37 [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 01/19] Account for switch to pde_data in 5.17 Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 02/19] Use linux/stddef.h instead of toolchain header Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 03/19] drivers/serial/16550A: Account for privatized defines in 5.17 Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 04/19] drivers/net: Switch to dev_addr_set and eth_hw_addr_set Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 05/19] drivers: Convert pci_set_*dma_mask to DMA API Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 06/19] drivers: Convert pci_alloc/free_consistent " Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 07/19] drivers: Convert pci_map/unmap_single/page " Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 08/19] drivers: Convert pci_dma_sync_single_for_cpu/device " Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 09/19] cobalt: Resolve cast-function-type warnings Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 10/19] drivers/net/experimental/e1000: Use fallthrough Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 11/19] drivers/spi: Convert to GPIO descriptor API Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 12/19] drivers/spi: Switch to spi_controller API Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 13/19] drivers/spi: Account for dropped return value of spi_driver.remove Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 14/19] drivers/testing/heapcheck: Replace prandom_u32 with custom implementation Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 15/19] drivers/net/pcnet32: Adjust for kernel 6.1 Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 16/19] cobalt: Adjust dev_addr_set wrapper to 5.10, 5.1 and 4.19 backports Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 17/19] cobalt/pipe: Allow building with kernels up to 6.1 Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 18/19] cobalt/x86: " Florian Bezdeka
2023-08-31 20:37 ` [PATCH stable/v3.2.x 19/19] drivers/spi: Add support for kernels < 5.1 Florian Bezdeka
2023-09-01  7:12 ` [PATCH 00/19] Enable stable/v3.2.x branch to be buildable with 6.1 kernels Jan Kiszka
2023-09-01  8:08   ` Florian Bezdeka
2023-09-01  8:25     ` Jan Kiszka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).