pci: rename device->linux_dev

We have dev_id, which is Linux's device.  We had device, which was
Linux's dev.  We also have 'dev', which is encoded in Linux's devfn.
This was a mess, especially since when we spatched dev to device, that
collided with other uses of device (meaning dev_id) in Linux.

Anyway, we aren't even using linux_dev nee device, it was just a source
of confusion for me.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/arch/x86/pci.h b/kern/arch/x86/pci.h
index 42a64f8..2de8b49 100644
--- a/kern/arch/x86/pci.h
+++ b/kern/arch/x86/pci.h
@@ -174,7 +174,7 @@
 	uintptr_t			mmio_cfg;
 	void				*dev_data; /* device private pointer */
 	struct iommu			*iommu; /* ptr to controlling iommu */
-	struct device			device;
+	struct device			linux_dev;
 	bool				in_use;	/* prevent double discovery */
 	int				domain; /* legacy size was 16-bits */
 	uint8_t				bus;
diff --git a/kern/drivers/net/bnx2x/bnx2x.h b/kern/drivers/net/bnx2x/bnx2x.h
index 1690b1a..dbf9c17 100644
--- a/kern/drivers/net/bnx2x/bnx2x.h
+++ b/kern/drivers/net/bnx2x/bnx2x.h
@@ -2201,12 +2201,12 @@
 			    bool is_pf);
 
 #define BNX2X_ILT_ZALLOC(x, y, size)					\
-	x = dma_zalloc_coherent(&bp->pdev->dev, size, y, MEM_WAIT)
+	x = dma_zalloc_coherent(&bp->pdev->linux_dev, size, y, MEM_WAIT)
 
 #define BNX2X_ILT_FREE(x, y, size) \
 	do { \
 		if (x) { \
-			dma_free_coherent(&bp->pdev->dev, size, x, y); \
+			dma_free_coherent(&bp->pdev->linux_dev, size, x, y); \
 			x = NULL; \
 			y = 0; \
 		} \
diff --git a/kern/drivers/net/bnx2x/bnx2x_cmn.h b/kern/drivers/net/bnx2x/bnx2x_cmn.h
index 4d68fd9..88e1c6d 100644
--- a/kern/drivers/net/bnx2x/bnx2x_cmn.h
+++ b/kern/drivers/net/bnx2x/bnx2x_cmn.h
@@ -29,7 +29,7 @@
 #define BNX2X_PCI_FREE(x, y, size) \
 	do { \
 		if (x) { \
-			dma_free_coherent(&bp->pdev->dev, size, (void *)x, y); \
+			dma_free_coherent(&bp->pdev->linux_dev, size, (void *)x, y); \
 			x = NULL; \
 			y = 0; \
 		} \
@@ -45,7 +45,7 @@
 
 #define BNX2X_PCI_ALLOC(y, size)					\
 ({									\
-	void *x = dma_zalloc_coherent(&bp->pdev->dev, size, y, MEM_WAIT); \
+	void *x = dma_zalloc_coherent(&bp->pdev->linux_dev, size, y, MEM_WAIT); \
 	if (x)								\
 		DP(NETIF_MSG_HW,					\
 		   "BNX2X_PCI_ALLOC: Physical %p Virtual %p\n",	\
@@ -54,7 +54,7 @@
 })
 #define BNX2X_PCI_FALLOC(y, size)					\
 ({									\
-	void *x = dma_alloc_coherent(&bp->pdev->dev, size, y, MEM_WAIT); \
+	void *x = dma_alloc_coherent(&bp->pdev->linux_dev, size, y, MEM_WAIT); \
 	if (x) {							\
 		memset(x, 0xff, size);					\
 		DP(NETIF_MSG_HW,					\
diff --git a/kern/drivers/net/bnx2x/bnx2x_main.c b/kern/drivers/net/bnx2x/bnx2x_main.c
index f48b53b..c277901 100644
--- a/kern/drivers/net/bnx2x/bnx2x_main.c
+++ b/kern/drivers/net/bnx2x/bnx2x_main.c
@@ -6519,7 +6519,7 @@
 /* gzip service functions */
 static int bnx2x_gunzip_init(struct bnx2x *bp)
 {
-	bp->gunzip_buf = dma_alloc_coherent(&bp->pdev->dev, FW_BUF_SIZE,
+	bp->gunzip_buf = dma_alloc_coherent(&bp->pdev->linux_dev, FW_BUF_SIZE,
 					    &bp->gunzip_mapping, MEM_WAIT);
 	if (bp->gunzip_buf  == NULL)
 		goto gunzip_nomem1;
@@ -6539,7 +6539,7 @@
 	bp->strm = NULL;
 
 gunzip_nomem2:
-	dma_free_coherent(&bp->pdev->dev, FW_BUF_SIZE, bp->gunzip_buf,
+	dma_free_coherent(&bp->pdev->linux_dev, FW_BUF_SIZE, bp->gunzip_buf,
 			  bp->gunzip_mapping);
 	bp->gunzip_buf = NULL;
 
@@ -6557,8 +6557,8 @@
 	}
 
 	if (bp->gunzip_buf) {
-		dma_free_coherent(&bp->pdev->dev, FW_BUF_SIZE, bp->gunzip_buf,
-				  bp->gunzip_mapping);
+		dma_free_coherent(&bp->pdev->linux_dev, FW_BUF_SIZE,
+				  bp->gunzip_buf, bp->gunzip_mapping);
 		bp->gunzip_buf = NULL;
 	}
 }
@@ -12736,7 +12736,7 @@
 {
 	return 0;
 #if 0 // AKAROS_PORT
-	struct device *dev = &bp->pdev->dev;
+	struct device *dev = &bp->pdev->linux_dev;
 
 	if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)) != 0 &&
 	    dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32)) != 0) {
@@ -12768,7 +12768,7 @@
 			    board_type == BCM57711 ||
 			    board_type == BCM57711E);
 
-	SET_NETDEV_DEV(dev, &pdev->dev);
+	SET_NETDEV_DEV(dev, &pdev->linux_dev);
 
 	bp->dev = dev;
 	bp->pdev = pdev;
@@ -13120,7 +13120,8 @@
 	}
 	BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
 
-	rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->device);
+	rc = request_firmware(&bp->firmware, fw_file_name,
+			      &bp->pdev->linux_dev);
 	if (rc) {
 		BNX2X_ERR("Can't load firmware file %s\n",
 			  fw_file_name);
@@ -13252,7 +13253,7 @@
 	 * one fast path queue: one FP queue + SB for CNIC
 	 */
 	if (pci_find_cap(pdev, PCI_CAP_ID_MSIX, &msix_cap)) {
-		dev_info(&pdev->dev, "no msix capability found\n");
+		dev_info(&pdev->linux_dev, "no msix capability found\n");
 		return 1 + cnic_cnt;
 	}
 
@@ -13492,7 +13493,7 @@
 	 */
 	rc = bnx2x_set_int_mode(bp);
 	if (rc) {
-		dev_err(&pdev->dev, "Cannot set interrupts\n");
+		dev_err(&pdev->linux_dev, "Cannot set interrupts\n");
 		goto init_one_exit;
 	}
 	BNX2X_DEV_INFO("set interrupts successfully\n");
diff --git a/kern/drivers/net/mlx4/alloc.c b/kern/drivers/net/mlx4/alloc.c
index e5fdc74..dd8053b 100644
--- a/kern/drivers/net/mlx4/alloc.c
+++ b/kern/drivers/net/mlx4/alloc.c
@@ -601,8 +601,9 @@
 		buf->nbufs        = 1;
 		buf->npages       = 1;
 		buf->page_shift   = get_order(size) + PAGE_SHIFT;
-		buf->direct.buf   = dma_alloc_coherent(&dev->persist->pdev->dev,
-						       size, &t, gfp);
+		buf->direct.buf   =
+			dma_alloc_coherent(&dev->persist->pdev->linux_dev, size,
+					   &t, gfp);
 		if (!buf->direct.buf)
 			return -ENOMEM;
 
@@ -630,7 +631,7 @@
 
 		for (i = 0; i < buf->nbufs; ++i) {
 			buf->page_list[i].buf =
-				dma_alloc_coherent(&dev->persist->pdev->dev,
+				dma_alloc_coherent(&dev->persist->pdev->linux_dev,
 						   PAGE_SIZE,
 						   &t, gfp);
 			if (!buf->page_list[i].buf)
@@ -670,7 +671,7 @@
 	int i;
 
 	if (buf->nbufs == 1)
-		dma_free_coherent(&dev->persist->pdev->dev, size,
+		dma_free_coherent(&dev->persist->pdev->linux_dev, size,
 				  buf->direct.buf,
 				  buf->direct.map);
 	else {
@@ -681,7 +682,7 @@
 
 		for (i = 0; i < buf->nbufs; ++i)
 			if (buf->page_list[i].buf)
-				dma_free_coherent(&dev->persist->pdev->dev,
+				dma_free_coherent(&dev->persist->pdev->linux_dev,
 						  PAGE_SIZE,
 						  buf->page_list[i].buf,
 						  buf->page_list[i].map);
@@ -797,7 +798,7 @@
 	set_bit(i, db->u.pgdir->bits[o]);
 
 	if (bitmap_full(db->u.pgdir->order1, MLX4_DB_PER_PAGE / 2)) {
-		dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
+		dma_free_coherent(&dev->persist->pdev->linux_dev, PAGE_SIZE,
 				  db->u.pgdir->db_page, db->u.pgdir->db_dma);
 		list_del(&db->u.pgdir->list);
 		kfree(db->u.pgdir);
diff --git a/kern/drivers/net/mlx4/cmd.c b/kern/drivers/net/mlx4/cmd.c
index 7f406e7..309f019 100644
--- a/kern/drivers/net/mlx4/cmd.c
+++ b/kern/drivers/net/mlx4/cmd.c
@@ -2469,7 +2469,7 @@
 err_comm:
 	iounmap(priv->mfunc.comm);
 err_vhcr:
-	dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
+	dma_free_coherent(&dev->persist->pdev->linux_dev, PAGE_SIZE,
 			  priv->mfunc.vhcr,
 			  priv->mfunc.vhcr_dma);
 	priv->mfunc.vhcr = NULL;
@@ -2501,10 +2501,10 @@
 	}
 
 	if (mlx4_is_mfunc(dev) && !priv->mfunc.vhcr) {
-		priv->mfunc.vhcr = dma_alloc_coherent(&dev->persist->pdev->dev,
-						      PAGE_SIZE,
-						      &priv->mfunc.vhcr_dma,
-						      MEM_WAIT);
+		priv->mfunc.vhcr =
+			dma_alloc_coherent(&dev->persist->pdev->linux_dev,
+					   PAGE_SIZE, &priv->mfunc.vhcr_dma,
+					   MEM_WAIT);
 		if (!priv->mfunc.vhcr)
 			goto err;
 
@@ -2587,7 +2587,7 @@
 	}
 	if (mlx4_is_mfunc(dev) && priv->mfunc.vhcr &&
 	    (cleanup_mask & MLX4_CMD_CLEANUP_VHCR)) {
-		dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
+		dma_free_coherent(&dev->persist->pdev->linux_dev, PAGE_SIZE,
 				  priv->mfunc.vhcr, priv->mfunc.vhcr_dma);
 		priv->mfunc.vhcr = NULL;
 	}
diff --git a/kern/drivers/net/mlx4/en_clock.c b/kern/drivers/net/mlx4/en_clock.c
index 12872bc..923b23b 100644
--- a/kern/drivers/net/mlx4/en_clock.c
+++ b/kern/drivers/net/mlx4/en_clock.c
@@ -291,7 +291,7 @@
 	snprintf(mdev->ptp_clock_info.name, 16, "mlx4 ptp");
 
 	mdev->ptp_clock = ptp_clock_register(&mdev->ptp_clock_info,
-					     &mdev->pdev->dev);
+					     &mdev->pdev->linux_dev);
 	if (IS_ERR(mdev->ptp_clock)) {
 		mdev->ptp_clock = NULL;
 		mlx4_err(mdev, "ptp_clock_register failed\n");
diff --git a/kern/drivers/net/mlx4/en_cq.c b/kern/drivers/net/mlx4/en_cq.c
index b63375e..2a3b533 100644
--- a/kern/drivers/net/mlx4/en_cq.c
+++ b/kern/drivers/net/mlx4/en_cq.c
@@ -70,10 +70,10 @@
 	/* Allocate HW buffers on provided NUMA node.
 	 * dev->numa_node is used in mtt range allocation flow.
 	 */
-	set_dev_node(&mdev->dev->persist->pdev->dev, node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, node);
 	err = mlx4_alloc_hwq_res(mdev->dev, &cq->wqres,
 				cq->buf_size, 2 * PAGE_SIZE);
-	set_dev_node(&mdev->dev->persist->pdev->dev, mdev->dev->numa_node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, mdev->dev->numa_node);
 	if (err)
 		goto err_cq;
 
diff --git a/kern/drivers/net/mlx4/en_main.c b/kern/drivers/net/mlx4/en_main.c
index f8667c0..0e1cab0 100644
--- a/kern/drivers/net/mlx4/en_main.c
+++ b/kern/drivers/net/mlx4/en_main.c
@@ -89,7 +89,7 @@
 		       level, DRV_NAME, priv->dev->name, &vaf);
 	else
 		printk("%s%s: %s: Port %d: %pV",
-		       level, DRV_NAME, dev_name(&priv->mdev->pdev->dev),
+		       level, DRV_NAME, dev_name(&priv->mdev->pdev->linux_dev),
 		       priv->port, &vaf);
 	va_end(args);
 #else
@@ -101,7 +101,7 @@
 		printk("%s%s: %s: ", level, DRV_NAME, priv->dev->name);
 	else
 		printk("%s%s: %s: Port %d: ", level, DRV_NAME,
-		       dev_name(&priv->mdev->pdev->dev), priv->port);
+		       dev_name(&priv->mdev->pdev->linux_dev), priv->port);
 	vcprintf(format, args);
 	va_end(args);
 	print_unlock();
diff --git a/kern/drivers/net/mlx4/en_netdev.c b/kern/drivers/net/mlx4/en_netdev.c
index c4e3e36..d9f0968 100644
--- a/kern/drivers/net/mlx4/en_netdev.c
+++ b/kern/drivers/net/mlx4/en_netdev.c
@@ -2845,7 +2845,7 @@
 	netif_set_real_num_tx_queues(dev, prof->tx_ring_num);
 	netif_set_real_num_rx_queues(dev, prof->rx_ring_num);
 
-	SET_NETDEV_DEV(dev, &mdev->dev->persist->pdev->dev);
+	SET_NETDEV_DEV(dev, &mdev->dev->persist->pdev->linux_dev);
 #else
 	dev->ctlr = kzmalloc(sizeof(struct mlx4_en_priv), MEM_WAIT);
 #endif
diff --git a/kern/drivers/net/mlx4/en_rx.c b/kern/drivers/net/mlx4/en_rx.c
index 2ee592a..bb3649d 100644
--- a/kern/drivers/net/mlx4/en_rx.c
+++ b/kern/drivers/net/mlx4/en_rx.c
@@ -384,10 +384,10 @@
 		 ring->rx_info, tmp);
 
 	/* Allocate HW buffers on provided NUMA node */
-	set_dev_node(&mdev->dev->persist->pdev->dev, node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, node);
 	err = mlx4_alloc_hwq_res(mdev->dev, &ring->wqres,
 				 ring->buf_size, 2 * PAGE_SIZE);
-	set_dev_node(&mdev->dev->persist->pdev->dev, mdev->dev->numa_node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, mdev->dev->numa_node);
 	if (err)
 		goto err_info;
 
diff --git a/kern/drivers/net/mlx4/en_tx.c b/kern/drivers/net/mlx4/en_tx.c
index 148fb6d..95731da 100644
--- a/kern/drivers/net/mlx4/en_tx.c
+++ b/kern/drivers/net/mlx4/en_tx.c
@@ -82,10 +82,10 @@
 	ring->buf_size = ALIGN(size * ring->stride, MLX4_EN_PAGE_SIZE);
 
 	/* Allocate HW buffers on provided NUMA node */
-	set_dev_node(&mdev->dev->persist->pdev->dev, node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, node);
 	err = mlx4_alloc_hwq_res(mdev->dev, &ring->wqres, ring->buf_size,
 				 2 * PAGE_SIZE);
-	set_dev_node(&mdev->dev->persist->pdev->dev, mdev->dev->numa_node);
+	set_dev_node(&mdev->dev->persist->pdev->linux_dev, mdev->dev->numa_node);
 	if (err) {
 		en_err(priv, "Failed allocating hwq resources\n");
 		goto err_bounce;
diff --git a/kern/drivers/net/mlx4/eq.c b/kern/drivers/net/mlx4/eq.c
index e478afd..4589b08 100644
--- a/kern/drivers/net/mlx4/eq.c
+++ b/kern/drivers/net/mlx4/eq.c
@@ -972,10 +972,9 @@
 	eq_context = mailbox->buf;
 
 	for (i = 0; i < npages; ++i) {
-		eq->page_list[i].buf = dma_alloc_coherent(&dev->persist->
-							  pdev->dev,
-							  PAGE_SIZE, &t,
-							  MEM_WAIT);
+		eq->page_list[i].buf =
+			dma_alloc_coherent(&dev->persist->pdev->linux_dev,
+					   PAGE_SIZE, &t, MEM_WAIT);
 		if (!eq->page_list[i].buf)
 			goto err_out_free_pages;
 
@@ -1041,8 +1040,8 @@
 err_out_free_pages:
 	for (i = 0; i < npages; ++i)
 		if (eq->page_list[i].buf)
-			dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
-					  eq->page_list[i].buf,
+			dma_free_coherent(&dev->persist->pdev->linux_dev,
+					  PAGE_SIZE, eq->page_list[i].buf,
 					  eq->page_list[i].map);
 
 	mlx4_free_cmd_mailbox(dev, mailbox);
@@ -1075,7 +1074,7 @@
 
 	mlx4_mtt_cleanup(dev, &eq->mtt);
 	for (i = 0; i < npages; ++i)
-		dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
+		dma_free_coherent(&dev->persist->pdev->linux_dev, PAGE_SIZE,
 				  eq->page_list[i].buf,
 				  eq->page_list[i].map);
 
diff --git a/kern/drivers/net/mlx4/icm.c b/kern/drivers/net/mlx4/icm.c
index 25dcbcd..d3446d4 100644
--- a/kern/drivers/net/mlx4/icm.c
+++ b/kern/drivers/net/mlx4/icm.c
@@ -65,7 +65,7 @@
 	int i;
 
 	for (i = 0; i < chunk->npages; ++i)
-		dma_free_coherent(&dev->persist->pdev->dev,
+		dma_free_coherent(&dev->persist->pdev->linux_dev,
 				  chunk->mem[i].length,
 				  lowmem_page_address(sg_page(&chunk->mem[i])),
 				  sg_dma_address(&chunk->mem[i]));
diff --git a/kern/drivers/net/mlx4/main.c b/kern/drivers/net/mlx4/main.c
index 2309a21..1c83d18 100644
--- a/kern/drivers/net/mlx4/main.c
+++ b/kern/drivers/net/mlx4/main.c
@@ -2586,7 +2586,8 @@
 	info->port_attr.show      = show_port_type;
 	sysfs_attr_init(&info->port_attr.attr);
 
-	err = device_create_file(&dev->persist->pdev->dev, &info->port_attr);
+	err = device_create_file(&dev->persist->pdev->linux_dev,
+				 &info->port_attr);
 	if (err) {
 		mlx4_err(dev, "Failed to create file for port %d\n", port);
 		info->port = -1;
@@ -2605,11 +2606,11 @@
 	info->port_mtu_attr.show      = show_port_ib_mtu;
 	sysfs_attr_init(&info->port_mtu_attr.attr);
 
-	err = device_create_file(&dev->persist->pdev->dev,
+	err = device_create_file(&dev->persist->pdev->linux_dev,
 				 &info->port_mtu_attr);
 	if (err) {
 		mlx4_err(dev, "Failed to create mtu file for port %d\n", port);
-		device_remove_file(&info->dev->persist->pdev->dev,
+		device_remove_file(&info->dev->persist->pdev->linux_dev,
 				   &info->port_attr);
 		info->port = -1;
 	}
@@ -2625,8 +2626,9 @@
 	if (info->port < 0)
 		return;
 
-	device_remove_file(&info->dev->persist->pdev->dev, &info->port_attr);
-	device_remove_file(&info->dev->persist->pdev->dev,
+	device_remove_file(&info->dev->persist->pdev->linux_dev,
+			   &info->port_attr);
+	device_remove_file(&info->dev->persist->pdev->linux_dev,
 			   &info->port_mtu_attr);
 #endif
 }
@@ -2843,7 +2845,7 @@
 #if 0 // AKAROS_PORT
 	dev->rev_id = pdev->revision;
 #endif
-	dev->numa_node = dev_to_node(&pdev->dev);
+	dev->numa_node = dev_to_node(&pdev->linux_dev);
 
 	/* Detect if this device is a virtual function */
 	if (pci_dev_data & MLX4_PCI_DEV_IS_VF) {
@@ -3249,7 +3251,8 @@
 
 	err = pci_enable_device(pdev);
 	if (err) {
-		dev_err(&pdev->dev, "Cannot enable PCI device, aborting\n");
+		dev_err(&pdev->linux_dev,
+			"Cannot enable PCI device, aborting\n");
 		return err;
 	}
 
@@ -3261,7 +3264,8 @@
 	     total_vfs += nvfs[param_map[num_vfs_argc - 1][i]], i++) {
 		nvfs[param_map[num_vfs_argc - 1][i]] = num_vfs[i];
 		if (nvfs[i] < 0) {
-			dev_err(&pdev->dev, "num_vfs module parameter cannot be negative\n");
+			dev_err(&pdev->linux_dev,
+				"num_vfs module parameter cannot be negative\n");
 			err = -EINVAL;
 			goto err_disable_pdev;
 		}
@@ -3270,13 +3274,14 @@
 	     i++) {
 		prb_vf[param_map[probe_vfs_argc - 1][i]] = probe_vf[i];
 		if (prb_vf[i] < 0 || prb_vf[i] > nvfs[i]) {
-			dev_err(&pdev->dev, "probe_vf module parameter cannot be negative or greater than num_vfs\n");
+			dev_err(&pdev->linux_dev,
+				"probe_vf module parameter cannot be negative or greater than num_vfs\n");
 			err = -EINVAL;
 			goto err_disable_pdev;
 		}
 	}
 	if (total_vfs >= MLX4_MAX_NUM_VF) {
-		dev_err(&pdev->dev,
+		dev_err(&pdev->linux_dev,
 			"Requested more VF's (%d) than allowed (%d)\n",
 			total_vfs, MLX4_MAX_NUM_VF - 1);
 		err = -EINVAL;
@@ -3285,7 +3290,7 @@
 
 	for (i = 0; i < MLX4_MAX_PORTS; i++) {
 		if (nvfs[i] + nvfs[2] >= MLX4_MAX_NUM_VF_P_PORT) {
-			dev_err(&pdev->dev,
+			dev_err(&pdev->linux_dev,
 				"Requested more VF's (%d) for port (%d) than allowed (%d)\n",
 				nvfs[i] + nvfs[2], i + 1,
 				MLX4_MAX_NUM_VF_P_PORT - 1);
@@ -3301,7 +3306,7 @@
 #else
 	    !pci_get_membar(pdev, 0)) {
 #endif
-		dev_err(&pdev->dev, "Missing DCS, aborting (driver_data: 0x%x, pci_resource_flags(pdev, 0):0x%lx)\n",
+		dev_err(&pdev->linux_dev, "Missing DCS, aborting (driver_data: 0x%x, pci_resource_flags(pdev, 0):0x%lx)\n",
 #if 0 // AKAROS_PORT
 			pci_dev_data, pci_resource_flags(pdev, 0));
 #else
@@ -3315,14 +3320,15 @@
 #else
 	if (!pci_get_membar(pdev, 2)) {
 #endif
-		dev_err(&pdev->dev, "Missing UAR, aborting\n");
+		dev_err(&pdev->linux_dev, "Missing UAR, aborting\n");
 		err = -ENODEV;
 		goto err_disable_pdev;
 	}
 
 	err = pci_request_regions(pdev, DRV_NAME);
 	if (err) {
-		dev_err(&pdev->dev, "Couldn't get PCI resources, aborting\n");
+		dev_err(&pdev->linux_dev,
+			"Couldn't get PCI resources, aborting\n");
 		goto err_disable_pdev;
 	}
 
@@ -3330,25 +3336,29 @@
 
 	err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
 	if (err) {
-		dev_warn(&pdev->dev, "Warning: couldn't set 64-bit PCI DMA mask\n");
+		dev_warn(&pdev->linux_dev,
+			 "Warning: couldn't set 64-bit PCI DMA mask\n");
 		err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
 		if (err) {
-			dev_err(&pdev->dev, "Can't set PCI DMA mask, aborting\n");
+			dev_err(&pdev->linux_dev,
+				"Can't set PCI DMA mask, aborting\n");
 			goto err_release_regions;
 		}
 	}
 	err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
 	if (err) {
-		dev_warn(&pdev->dev, "Warning: couldn't set 64-bit consistent PCI DMA mask\n");
+		dev_warn(&pdev->linux_dev,
+			 "Warning: couldn't set 64-bit consistent PCI DMA mask\n");
 		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
 		if (err) {
-			dev_err(&pdev->dev, "Can't set consistent PCI DMA mask, aborting\n");
+			dev_err(&pdev->linux_dev,
+				"Can't set consistent PCI DMA mask, aborting\n");
 			goto err_release_regions;
 		}
 	}
 
 	/* Allow large DMA segments, up to the firmware limit of 1 GB */
-	dma_set_max_seg_size(&pdev->dev, 1024 * 1024 * 1024);
+	dma_set_max_seg_size(&pdev->linux_dev, 1024 * 1024 * 1024);
 #if 0 // AKAROS_PORT
 	/* Detect if this device is a virtual function */
 	if (pci_dev_data & MLX4_PCI_DEV_IS_VF) {
@@ -3368,7 +3378,7 @@
 			}
 			if ((extended_func_num(pdev) - vfs_offset)
 			    > prb_vf[i]) {
-				dev_warn(&pdev->dev, "Skipping virtual function:%d\n",
+				dev_warn(&pdev->linux_dev, "Skipping virtual function:%d\n",
 					 extended_func_num(pdev));
 				err = -ENODEV;
 				goto err_release_regions;
diff --git a/kern/drivers/net/mlx4/mlx4.h b/kern/drivers/net/mlx4/mlx4.h
index 624b1ca..c8985d7 100644
--- a/kern/drivers/net/mlx4/mlx4.h
+++ b/kern/drivers/net/mlx4/mlx4.h
@@ -209,16 +209,16 @@
 do {									\
 	if (mlx4_debug_level)						\
 		dev_printk(KERN_DEBUG,					\
-			   &(mdev)->persist->pdev->dev, format,		\
+			   &(mdev)->persist->pdev->linux_dev, format,	\
 			   ##__VA_ARGS__);				\
 } while (0)
 
 #define mlx4_err(mdev, format, ...)					\
-	dev_err(&(mdev)->persist->pdev->dev, format, ##__VA_ARGS__)
+	dev_err(&(mdev)->persist->pdev->linux_dev, format, ##__VA_ARGS__)
 #define mlx4_info(mdev, format, ...)					\
-	dev_info(&(mdev)->persist->pdev->dev, format, ##__VA_ARGS__)
+	dev_info(&(mdev)->persist->pdev->linux_dev, format, ##__VA_ARGS__)
 #define mlx4_warn(mdev, format, ...)					\
-	dev_warn(&(mdev)->persist->pdev->dev, format, ##__VA_ARGS__)
+	dev_warn(&(mdev)->persist->pdev->linux_dev, format, ##__VA_ARGS__)
 
 extern int mlx4_log_num_mgm_entry_size;
 extern int log_mtts_per_seg;
diff --git a/kern/drivers/net/mlx4/mlx4_en.h b/kern/drivers/net/mlx4/mlx4_en.h
index 2d279b1..7ab2e81 100644
--- a/kern/drivers/net/mlx4/mlx4_en.h
+++ b/kern/drivers/net/mlx4/mlx4_en.h
@@ -899,10 +899,10 @@
 
 #define mlx4_err(mdev, format, ...)					\
 	pr_err(DRV_NAME " %s: " format,					\
-	       dev_name(&(mdev)->pdev->dev), ##__VA_ARGS__)
+	       dev_name(&(mdev)->pdev->linux_dev), ##__VA_ARGS__)
 #define mlx4_info(mdev, format, ...)					\
 	pr_info(DRV_NAME " %s: " format,				\
-		dev_name(&(mdev)->pdev->dev), ##__VA_ARGS__)
+		dev_name(&(mdev)->pdev->linux_dev), ##__VA_ARGS__)
 #define mlx4_warn(mdev, format, ...)					\
 	pr_warn(DRV_NAME " %s: " format,				\
-		dev_name(&(mdev)->pdev->dev), ##__VA_ARGS__)
+		dev_name(&(mdev)->pdev->linux_dev), ##__VA_ARGS__)
diff --git a/kern/drivers/net/mlx4/mr.c b/kern/drivers/net/mlx4/mr.c
index f197114..e0b6548 100644
--- a/kern/drivers/net/mlx4/mr.c
+++ b/kern/drivers/net/mlx4/mr.c
@@ -718,13 +718,13 @@
 	if (!mtts)
 		return -ENOMEM;
 
-	dma_sync_single_for_cpu(&dev->persist->pdev->dev, dma_handle,
+	dma_sync_single_for_cpu(&dev->persist->pdev->linux_dev, dma_handle,
 				npages * sizeof (uint64_t), DMA_TO_DEVICE);
 
 	for (i = 0; i < npages; ++i)
 		mtts[i] = cpu_to_be64(page_list[i] | MLX4_MTT_FLAG_PRESENT);
 
-	dma_sync_single_for_device(&dev->persist->pdev->dev, dma_handle,
+	dma_sync_single_for_device(&dev->persist->pdev->linux_dev, dma_handle,
 				   npages * sizeof (uint64_t), DMA_TO_DEVICE);
 
 	return 0;
@@ -1032,13 +1032,14 @@
 	/* Make sure MPT status is visible before writing MTT entries */
 	wmb();
 
-	dma_sync_single_for_cpu(&dev->persist->pdev->dev, fmr->dma_handle,
+	dma_sync_single_for_cpu(&dev->persist->pdev->linux_dev, fmr->dma_handle,
 				npages * sizeof(uint64_t), DMA_TO_DEVICE);
 
 	for (i = 0; i < npages; ++i)
 		fmr->mtts[i] = cpu_to_be64(page_list[i] | MLX4_MTT_FLAG_PRESENT);
 
-	dma_sync_single_for_device(&dev->persist->pdev->dev, fmr->dma_handle,
+	dma_sync_single_for_device(&dev->persist->pdev->linux_dev,
+				   fmr->dma_handle,
 				   npages * sizeof(uint64_t), DMA_TO_DEVICE);
 
 	fmr->mpt->key    = cpu_to_be32(key);
diff --git a/kern/drivers/net/mlx4u/mr.c b/kern/drivers/net/mlx4u/mr.c
index 4f2114e..142e2e1 100644
--- a/kern/drivers/net/mlx4u/mr.c
+++ b/kern/drivers/net/mlx4u/mr.c
@@ -401,10 +401,9 @@
 	if (!mfrpl->ibfrpl.page_list)
 		goto err_free;
 
-	mfrpl->mapped_page_list = dma_alloc_coherent(&dev->dev->persist->
-						     pdev->dev,
-						     size, &mfrpl->map,
-						     GFP_KERNEL);
+	mfrpl->mapped_page_list =
+		dma_alloc_coherent(&dev->dev->persist->pdev->linux_dev, size,
+				   &mfrpl->map, GFP_KERNEL);
 	if (!mfrpl->mapped_page_list)
 		goto err_free;
 
@@ -424,7 +423,7 @@
 	struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(page_list);
 	int size = page_list->max_page_list_len * sizeof (u64);
 
-	dma_free_coherent(&dev->dev->persist->pdev->dev, size,
+	dma_free_coherent(&dev->dev->persist->pdev->linux_dev, size,
 			  mfrpl->mapped_page_list,
 			  mfrpl->map);
 	kfree(mfrpl->ibfrpl.page_list);
diff --git a/kern/drivers/net/r8169.c b/kern/drivers/net/r8169.c
index 4f57342..e2372b8 100644
--- a/kern/drivers/net/r8169.c
+++ b/kern/drivers/net/r8169.c
@@ -1677,7 +1677,7 @@
 		rtl_link_chg_patch(tp);
 		/* This is to cancel a scheduled suspend if there's one. */
 		if (pm)
-			pm_request_resume(&tp->pci_dev->device);
+			pm_request_resume(&tp->pci_dev->linux_dev);
 		netif_carrier_on(dev);
 		if (net_ratelimit())
 			netif_info(tp, ifup, dev, "link up\n");
@@ -1685,7 +1685,7 @@
 		netif_carrier_off(dev);
 		netif_info(tp, ifdown, dev, "link down\n");
 		if (pm)
-			pm_schedule_suspend(&tp->pci_dev->device, 5000);
+			pm_schedule_suspend(&tp->pci_dev->linux_dev, 5000);
 	}
 }
 
@@ -1753,7 +1753,7 @@
 static void rtl8169_get_wol(struct ether *dev, struct ethtool_wolinfo *wol)
 {
 	struct rtl8169_private *tp = netdev_priv(dev);
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 
 	pm_runtime_get_noresume(d);
 
@@ -1859,7 +1859,7 @@
 static int rtl8169_set_wol(struct ether *dev, struct ethtool_wolinfo *wol)
 {
 	struct rtl8169_private *tp = netdev_priv(dev);
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 
 	pm_runtime_get_noresume(d);
 
@@ -1876,7 +1876,7 @@
 
 	rtl_unlock_work(tp);
 
-	device_set_wakeup_enable(&tp->pci_dev->device, wol->wolopts);
+	device_set_wakeup_enable(&tp->pci_dev->linux_dev, wol->wolopts);
 
 	pm_runtime_put_noidle(d);
 
@@ -2345,7 +2345,7 @@
 				      uint64_t *data)
 {
 	struct rtl8169_private *tp = netdev_priv(dev);
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 	struct rtl8169_counters *counters = tp->counters;
 
 	ASSERT_RTNL();
@@ -4530,7 +4530,7 @@
 static int rtl_set_mac_address(struct ether *dev, void *p)
 {
 	struct rtl8169_private *tp = netdev_priv(dev);
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 	struct sockaddr *addr = p;
 
 	if (!is_valid_ether_addr(addr->sa_data))
@@ -5234,7 +5234,7 @@
 	if (!rtl_fw)
 		goto err_warn;
 
-	rc = request_firmware(&rtl_fw->fw, name, &tp->pci_dev->device);
+	rc = request_firmware(&rtl_fw->fw, name, &tp->pci_dev->linux_dev);
 	if (rc < 0)
 		goto err_free;
 
@@ -6756,8 +6756,8 @@
 static void rtl8169_free_rx_databuff(struct rtl8169_private *tp,
 				     void **data_buff, struct RxDesc *desc)
 {
-	dma_unmap_single(&tp->pci_dev->device, le64_to_cpu(desc->addr), rx_buf_sz,
-			 DMA_FROM_DEVICE);
+	dma_unmap_single(&tp->pci_dev->linux_dev, le64_to_cpu(desc->addr),
+			 rx_buf_sz, DMA_FROM_DEVICE);
 
 	kfree(*data_buff);
 	*data_buff = NULL;
@@ -6793,7 +6793,7 @@
 {
 	void *data;
 	dma_addr_t mapping;
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 	struct ether *dev = tp->dev;
 #if 0 // AKAROS_PORT
 	int node = dev->dev.parent ? dev_to_node(dev->dev.parent) : -1;
@@ -6909,7 +6909,7 @@
 		if (len) {
 			struct block *bp = tx_skb->block;
 
-			rtl8169_unmap_tx_skb(&tp->pci_dev->device, tx_skb,
+			rtl8169_unmap_tx_skb(&tp->pci_dev->linux_dev, tx_skb,
 					     tp->TxDescArray + entry);
 			if (bp) {
 				freeb(bp);
@@ -6962,7 +6962,7 @@
 {
 	unsigned int cur_frag, entry;
 	struct TxDesc *uninitialized_var(txd);
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 
 	entry = tp->cur_tx;
 	/* Don't use cur_frag for the loop.  ebd may have holes, but we only
@@ -7217,7 +7217,7 @@
 	unsigned int entry = tp->cur_tx % NUM_TX_DESC;
 	struct TxDesc *txd = tp->TxDescArray + entry;
 	void __iomem *ioaddr = tp->mmio_addr;
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 	dma_addr_t mapping;
 	uint32_t status, len;
 	uint32_t opts[2];
@@ -7379,7 +7379,7 @@
 		 */
 		bus_rmb();
 
-		rtl8169_unmap_tx_skb(&tp->pci_dev->device, tx_skb,
+		rtl8169_unmap_tx_skb(&tp->pci_dev->linux_dev, tx_skb,
 				     tp->TxDescArray + entry);
 		if (status & LastFrag) {
 			u64_stats_update_begin(&tp->tx_stats.syncp);
@@ -7444,7 +7444,7 @@
                                          int pkt_size, dma_addr_t addr)
 {
 	struct block *bp;
-	struct device *d = &tp->pci_dev->device;
+	struct device *d = &tp->pci_dev->linux_dev;
 
 	data = rtl8169_align(data);
 	dma_sync_single_for_cpu(d, addr, pkt_size, DMA_FROM_DEVICE);
@@ -7742,7 +7742,7 @@
 	struct rtl8169_private *tp = netdev_priv(dev);
 	struct pci_device *pdev = tp->pci_dev;
 
-	pm_runtime_get_sync(&pdev->device);
+	pm_runtime_get_sync(&pdev->linux_dev);
 
 	/* Update counters before going down */
 	rtl8169_update_counters(dev);
@@ -7757,14 +7757,14 @@
 
 	free_irq(pdev->irqline, dev);
 
-	dma_free_coherent(&pdev->device, R8169_RX_RING_BYTES, tp->RxDescArray,
+	dma_free_coherent(&pdev->linux_dev, R8169_RX_RING_BYTES, tp->RxDescArray,
 			  tp->RxPhyAddr);
-	dma_free_coherent(&pdev->device, R8169_TX_RING_BYTES, tp->TxDescArray,
+	dma_free_coherent(&pdev->linux_dev, R8169_TX_RING_BYTES, tp->TxDescArray,
 			  tp->TxPhyAddr);
 	tp->TxDescArray = NULL;
 	tp->RxDescArray = NULL;
 
-	pm_runtime_put_sync(&pdev->device);
+	pm_runtime_put_sync(&pdev->linux_dev);
 
 	return 0;
 }
@@ -7785,19 +7785,19 @@
 	struct pci_device *pdev = tp->pci_dev;
 	int retval = -ENOMEM;
 
-	pm_runtime_get_sync(&pdev->device);
+	pm_runtime_get_sync(&pdev->linux_dev);
 
 	/*
 	 * Rx and Tx descriptors needs 256 bytes alignment.
 	 * dma_alloc_coherent provides more.
 	 */
-	tp->TxDescArray = dma_zalloc_coherent(&pdev->device,
+	tp->TxDescArray = dma_zalloc_coherent(&pdev->linux_dev,
 					      R8169_TX_RING_BYTES,
 					      &tp->TxPhyAddr, MEM_WAIT);
 	if (!tp->TxDescArray)
 		goto err_pm_runtime_put;
 
-	tp->RxDescArray = dma_zalloc_coherent(&pdev->device,
+	tp->RxDescArray = dma_zalloc_coherent(&pdev->linux_dev,
 					      R8169_RX_RING_BYTES,
 					      &tp->RxPhyAddr, MEM_WAIT);
 	if (!tp->RxDescArray)
@@ -7841,7 +7841,7 @@
 	rtl_unlock_work(tp);
 
 	tp->saved_wolopts = 0;
-	pm_runtime_put_noidle(&pdev->device);
+	pm_runtime_put_noidle(&pdev->linux_dev);
 
 	rtl8169_check_link_status(dev, tp, ioaddr);
 out:
@@ -7851,15 +7851,15 @@
 	rtl_release_firmware(tp);
 	rtl8169_rx_clear(tp);
 err_free_rx_1:
-	dma_free_coherent(&pdev->device, R8169_RX_RING_BYTES, tp->RxDescArray,
+	dma_free_coherent(&pdev->linux_dev, R8169_RX_RING_BYTES, tp->RxDescArray,
 			  tp->RxPhyAddr);
 	tp->RxDescArray = NULL;
 err_free_tx_0:
-	dma_free_coherent(&pdev->device, R8169_TX_RING_BYTES, tp->TxDescArray,
+	dma_free_coherent(&pdev->linux_dev, R8169_TX_RING_BYTES, tp->TxDescArray,
 			  tp->TxPhyAddr);
 	tp->TxDescArray = NULL;
 err_pm_runtime_put:
-	pm_runtime_put_noidle(&pdev->device);
+	pm_runtime_put_noidle(&pdev->linux_dev);
 	goto out;
 }
 
@@ -7872,9 +7872,9 @@
 	struct rtl8169_counters *counters = tp->counters;
 	unsigned int start;
 
-	pm_runtime_get_noresume(&pdev->device);
+	pm_runtime_get_noresume(&pdev->linux_dev);
 
-	if (netif_running(dev) && pm_runtime_active(&pdev->device))
+	if (netif_running(dev) && pm_runtime_active(&pdev->linux_dev))
 		rtl8169_rx_missed(dev, ioaddr);
 
 	do {
@@ -7902,7 +7902,7 @@
 	 * Fetch additonal counter values missing in stats collected by driver
 	 * from tally counters.
 	 */
-	if (pm_runtime_active(&pdev->device))
+	if (pm_runtime_active(&pdev->linux_dev))
 		rtl8169_update_counters(dev);
 
 	/*
@@ -7916,7 +7916,7 @@
 	stats->tx_aborted_errors = le16_to_cpu(counters->tx_aborted) -
 		le16_to_cpu(tp->tc_offset.tx_aborted);
 
-	pm_runtime_put_noidle(&pdev->device);
+	pm_runtime_put_noidle(&pdev->linux_dev);
 }
 
 static void rtl8169_net_suspend(struct ether *dev)
@@ -8077,7 +8077,7 @@
 {
 	struct ether *dev = pci_get_drvdata(pdev);
 	struct rtl8169_private *tp = netdev_priv(dev);
-	struct device *d = &pdev->device;
+	struct device *d = &pdev->linux_dev;
 
 	pm_runtime_get_sync(d);
 
@@ -8124,13 +8124,13 @@
 
 	unregister_netdev(dev);
 
-	dma_free_coherent(&tp->pci_dev->device, sizeof(*tp->counters),
+	dma_free_coherent(&tp->pci_dev->linux_dev, sizeof(*tp->counters),
 			  tp->counters, tp->counters_phys_addr);
 
 	rtl_release_firmware(tp);
 
 	if (pci_dev_run_wake(pdev))
-		pm_runtime_get_noresume(&pdev->device);
+		pm_runtime_get_noresume(&pdev->linux_dev);
 
 #if 0 // AKAROS_PORT
 	/* restore original MAC address */
@@ -8321,7 +8321,7 @@
 		       MODULENAME, RTL8169_VERSION);
 	}
 
-	SET_NETDEV_DEV(dev, &pdev->device);
+	SET_NETDEV_DEV(dev, &pdev->linux_dev);
 	tp = netdev_priv(dev);
 	tp->dev = dev;
 	tp->pci_dev = pdev;
@@ -8580,7 +8580,7 @@
 
 	tp->rtl_fw = RTL_FIRMWARE_UNKNOWN;
 
-	tp->counters = dma_zalloc_coherent(&pdev->device, sizeof(*tp->counters),
+	tp->counters = dma_zalloc_coherent(&pdev->linux_dev, sizeof(*tp->counters),
 					   &tp->counters_phys_addr, MEM_WAIT);
 	if (!tp->counters) {
 		rc = -ENOMEM;
@@ -8613,11 +8613,11 @@
 		rtl8168_driver_start(tp);
 	}
 
-	device_set_wakeup_enable(&pdev->device,
+	device_set_wakeup_enable(&pdev->linux_dev,
 				 tp->features & RTL_FEATURE_WOL);
 
 	if (pci_dev_run_wake(pdev))
-		pm_runtime_put_noidle(&pdev->device);
+		pm_runtime_put_noidle(&pdev->linux_dev);
 
 	netif_carrier_off(dev);
 
@@ -8625,7 +8625,7 @@
 	return rc;
 
 err_out_cnt_6:
-	dma_free_coherent(&pdev->device, sizeof(*tp->counters), tp->counters,
+	dma_free_coherent(&pdev->linux_dev, sizeof(*tp->counters), tp->counters,
 			  tp->counters_phys_addr);
 err_out_msi_5:
 	netif_napi_del(&tp->napi);
diff --git a/kern/include/linux/compat_todo.h b/kern/include/linux/compat_todo.h
index a1eed08..c69e070 100644
--- a/kern/include/linux/compat_todo.h
+++ b/kern/include/linux/compat_todo.h
@@ -680,7 +680,7 @@
 
 #define pci_pool dma_pool
 #define pci_pool_create(name, pdev, size, align, allocation) \
-		dma_pool_create(name, pdev, size, align, allocation)
+	dma_pool_create(name, &pdev->linux_dev, size, align, allocation)
 #define pci_pool_destroy(pool) dma_pool_destroy(pool)
 #define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle)
 #define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr)
diff --git a/scripts/spatch/linux/scalar.cocci b/scripts/spatch/linux/scalar.cocci
index 58def3d..d8dd3cb 100644
--- a/scripts/spatch/linux/scalar.cocci
+++ b/scripts/spatch/linux/scalar.cocci
@@ -147,7 +147,7 @@
 struct pci_device *p;
 @@
 -p->dev
-+p->device
++p->linux_dev
 
 @@
 struct ether *p;