[Intel-gfx] [RFC 1/7] treewide: device: add condition support to dev_WARN

Pankaj Bharadiya pankaj.laxminarayan.bharadiya at intel.com
Mon Jan 6 17:23:20 UTC 2020


dev_WARN does not support conditional warning unlike WARN.

Add condition support to dev_WARN (file: include/linux/device.h)
to make it work like WARN and modify all existing callers to use it.

This is quite useful where we want to replace existing WARN with
dev_WARN.

Following cocci script is used to replace all the caller

   @@
   expression T;
   @@
   -dev_WARN(T,
   +dev_WARN(T, 1,
   ...)

command: spatch --sp-file <.cocci> --dir ./ --in-place --include-headers

Fix "drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h" manually as
coccinelle is unable to parse this file.

Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya at intel.com>
---
 arch/x86/platform/intel-mid/pwr.c                   |  3 ++-
 drivers/base/core.c                                 |  2 +-
 drivers/base/dd.c                                   |  3 ++-
 drivers/dax/bus.c                                   |  2 +-
 drivers/dma/dw/core.c                               |  3 ++-
 drivers/dma/ioat/init.c                             |  2 +-
 drivers/dma/tegra210-adma.c                         |  6 ++++--
 drivers/gnss/core.c                                 |  2 +-
 drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h |  2 +-
 drivers/gpu/drm/panfrost/panfrost_mmu.c             |  3 ++-
 drivers/gpu/drm/tegra/dc.c                          |  2 +-
 drivers/gpu/drm/tegra/hub.c                         |  7 ++++---
 drivers/greybus/core.c                              |  3 ++-
 drivers/i2c/i2c-core.h                              |  2 +-
 drivers/media/platform/exynos4-is/fimc-is.c         |  2 +-
 drivers/media/platform/exynos4-is/mipi-csis.c       |  2 +-
 drivers/nvdimm/label.c                              |  2 +-
 drivers/nvdimm/namespace_devs.c                     |  3 ++-
 drivers/nvdimm/nd-core.h                            |  2 +-
 drivers/pci/controller/pci-mvebu.c                  |  2 +-
 drivers/pci/endpoint/pci-epf-core.c                 |  6 +++---
 drivers/pci/iov.c                                   |  2 +-
 drivers/phy/phy-core.c                              |  2 +-
 drivers/regulator/pbias-regulator.c                 |  2 +-
 drivers/scsi/ufs/ufshcd.c                           |  3 ++-
 drivers/thunderbolt/ctl.c                           |  2 +-
 drivers/thunderbolt/nhi.c                           | 12 ++++++------
 drivers/thunderbolt/tb.h                            |  2 +-
 drivers/usb/core/urb.c                              |  8 ++++----
 drivers/usb/dwc3/dwc3-omap.c                        |  4 ++--
 drivers/usb/dwc3/ep0.c                              |  2 +-
 drivers/usb/dwc3/gadget.c                           |  6 +++---
 drivers/usb/host/uhci-q.c                           |  8 ++++----
 drivers/usb/typec/tcpm/wcove.c                      |  4 ++--
 drivers/vfio/vfio.c                                 |  4 ++--
 include/linux/device.h                              |  6 ++++--
 36 files changed, 70 insertions(+), 58 deletions(-)

diff --git a/arch/x86/platform/intel-mid/pwr.c b/arch/x86/platform/intel-mid/pwr.c
index 27288d8d3f71..bceb7c41a95e 100644
--- a/arch/x86/platform/intel-mid/pwr.c
+++ b/arch/x86/platform/intel-mid/pwr.c
@@ -197,7 +197,8 @@ static pci_power_t __find_weakest_power_state(struct mid_pwr_dev *lss,
 		lss[j].pdev = pdev;
 		lss[j].state = state;
 	} else {
-		dev_WARN(&pdev->dev, "No room for device in PWRMU LSS cache\n");
+		dev_WARN(&pdev->dev, 1,
+			 "No room for device in PWRMU LSS cache\n");
 		weakest = state;
 	}
 
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 42a672456432..ab7800d14668 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -3588,7 +3588,7 @@ create_syslog_header(const struct device *dev, char *hdr, size_t hdrlen)
 	return pos;
 
 overflow:
-	dev_WARN(dev, "device/subsystem name too long");
+	dev_WARN(dev, 1, "device/subsystem name too long");
 	return 0;
 }
 
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index d811e60610d3..4935aedf2956 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -241,7 +241,8 @@ static int __driver_deferred_probe_check_state(struct device *dev)
 		return -EPROBE_DEFER;
 
 	if (!deferred_probe_timeout) {
-		dev_WARN(dev, "deferred probe timeout, ignoring dependency");
+		dev_WARN(dev, 1,
+			 "deferred probe timeout, ignoring dependency");
 		return -ETIMEDOUT;
 	}
 
diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 46e46047a1f7..24da1c97b850 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -237,7 +237,7 @@ struct dax_region *alloc_dax_region(struct device *parent, int region_id,
 	 * developers of device-dax drivers.
 	 */
 	if (dev_get_drvdata(parent)) {
-		dev_WARN(parent, "dax core failed to setup private data\n");
+		dev_WARN(parent, 1, "dax core failed to setup private data\n");
 		return NULL;
 	}
 
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index 21cb2a58dbd2..455dafce7525 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -456,7 +456,8 @@ static void dwc_handle_error(struct dw_dma *dw, struct dw_dma_chan *dwc)
 	 * controller flagged an error instead of scribbling over
 	 * random memory locations.
 	 */
-	dev_WARN(chan2dev(&dwc->chan), "Bad descriptor submitted for DMA!\n"
+	dev_WARN(chan2dev(&dwc->chan), 1,
+				       "Bad descriptor submitted for DMA!\n"
 				       "  cookie: %d\n", bad_desc->txd.cookie);
 	dwc_dump_lli(dwc, bad_desc);
 	list_for_each_entry(child, &bad_desc->tx_list, desc_node)
diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
index a6a6dc432db8..e403b5fa635f 100644
--- a/drivers/dma/ioat/init.c
+++ b/drivers/dma/ioat/init.c
@@ -755,7 +755,7 @@ static int ioat_alloc_chan_resources(struct dma_chan *c)
 
 	chanerr = readl(ioat_chan->reg_base + IOAT_CHANERR_OFFSET);
 
-	dev_WARN(to_dev(ioat_chan),
+	dev_WARN(to_dev(ioat_chan), 1,
 		 "failed to start channel chanerr: %#x\n", chanerr);
 	ioat_free_chan_resources(c);
 	return -EFAULT;
diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c
index 6e1268552f74..c5867241f707 100644
--- a/drivers/dma/tegra210-adma.c
+++ b/drivers/dma/tegra210-adma.c
@@ -274,7 +274,8 @@ static int tegra_adma_request_alloc(struct tegra_adma_chan *tdc,
 		break;
 
 	default:
-		dev_WARN(tdma->dev, "channel %s has invalid transfer type\n",
+		dev_WARN(tdma->dev, 1,
+			 "channel %s has invalid transfer type\n",
 			 dma_chan_name(&tdc->vc.chan));
 		return -EINVAL;
 	}
@@ -302,7 +303,8 @@ static void tegra_adma_request_free(struct tegra_adma_chan *tdc)
 		break;
 
 	default:
-		dev_WARN(tdma->dev, "channel %s has invalid transfer type\n",
+		dev_WARN(tdma->dev, 1,
+			 "channel %s has invalid transfer type\n",
 			 dma_chan_name(&tdc->vc.chan));
 		return;
 	}
diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
index e6f94501cb28..83df95f0da12 100644
--- a/drivers/gnss/core.c
+++ b/drivers/gnss/core.c
@@ -345,7 +345,7 @@ static const char *gnss_type_name(struct gnss_device *gdev)
 		name = gnss_type_names[gdev->type];
 
 	if (!name)
-		dev_WARN(&gdev->dev, "type name not defined\n");
+		dev_WARN(&gdev->dev, 1, "type name not defined\n");
 
 	return name;
 }
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
index a8c21c6c800b..a8379791d99c 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
@@ -60,7 +60,7 @@ s64 nvkm_timer_wait_test(struct nvkm_timer_wait *);
 	} while ((_taken = nvkm_timer_wait_test(&_wait)) >= 0);                \
                                                                                \
 	if (_warn && _taken < 0)                                               \
-		dev_WARN(_wait.tmr->subdev.device->dev, "timeout\n");          \
+		dev_WARN(_wait.tmr->subdev.device->dev, 1, "timeout\n");       \
 	_taken;                                                                \
 })
 #define nvkm_usec(d,u,cond...) nvkm_nsec((d), (u) * 1000, ##cond)
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
index a3ed64a1f15e..38f8ea2dc89f 100644
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
@@ -447,7 +447,8 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
 		return -ENOENT;
 
 	if (!bo->is_heap) {
-		dev_WARN(pfdev->dev, "matching BO is not heap type (GPU VA = %llx)",
+		dev_WARN(pfdev->dev, 1,
+			 "matching BO is not heap type (GPU VA = %llx)",
 			 bo->node.start << PAGE_SHIFT);
 		ret = -EINVAL;
 		goto err_bo;
diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
index 714af052fbef..07baf633a4f0 100644
--- a/drivers/gpu/drm/tegra/dc.c
+++ b/drivers/gpu/drm/tegra/dc.c
@@ -69,7 +69,7 @@ static inline unsigned int tegra_plane_offset(struct tegra_plane *plane,
 		return plane->offset + offset;
 	}
 
-	dev_WARN(plane->dc->dev, "invalid offset: %x\n", offset);
+	dev_WARN(plane->dc->dev, 1, "invalid offset: %x\n", offset);
 
 	return plane->offset + offset;
 }
diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index 47d985ac7cd7..8d3df12f4d34 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -76,7 +76,7 @@ static inline unsigned int tegra_plane_offset(struct tegra_plane *plane,
 		return plane->offset + offset;
 	}
 
-	dev_WARN(plane->dc->dev, "invalid offset: %x\n", offset);
+	dev_WARN(plane->dc->dev, 1, "invalid offset: %x\n", offset);
 
 	return plane->offset + offset;
 }
@@ -220,7 +220,8 @@ static bool tegra_dc_owns_shared_plane(struct tegra_dc *dc,
 		if (plane->dc == dc)
 			return true;
 
-		dev_WARN(dev, "head %u owns window %u but is not attached\n",
+		dev_WARN(dev, 1,
+			 "head %u owns window %u but is not attached\n",
 			 dc->pipe, plane->index);
 	}
 
@@ -241,7 +242,7 @@ static int tegra_shared_plane_set_owner(struct tegra_plane *plane,
 	owner = value & OWNER_MASK;
 
 	if (new && (owner != OWNER_MASK && owner != new->pipe)) {
-		dev_WARN(dev, "window %u owned by head %u\n", index, owner);
+		dev_WARN(dev, 1, "window %u owned by head %u\n", index, owner);
 		return -EBUSY;
 	}
 
diff --git a/drivers/greybus/core.c b/drivers/greybus/core.c
index e546c6431877..0f501db74f89 100644
--- a/drivers/greybus/core.c
+++ b/drivers/greybus/core.c
@@ -110,7 +110,8 @@ static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env)
 		svc = to_gb_svc(dev);
 		hd = svc->hd;
 	} else {
-		dev_WARN(dev, "uevent for unknown greybus device \"type\"!\n");
+		dev_WARN(dev, 1,
+			 "uevent for unknown greybus device \"type\"!\n");
 		return -EINVAL;
 	}
 
diff --git a/drivers/i2c/i2c-core.h b/drivers/i2c/i2c-core.h
index 517d98be68d2..46fded32bb00 100644
--- a/drivers/i2c/i2c-core.h
+++ b/drivers/i2c/i2c-core.h
@@ -51,7 +51,7 @@ static inline int __i2c_check_suspended(struct i2c_adapter *adap)
 {
 	if (test_bit(I2C_ALF_IS_SUSPENDED, &adap->locked_flags)) {
 		if (!test_and_set_bit(I2C_ALF_SUSPEND_REPORTED, &adap->locked_flags))
-			dev_WARN(&adap->dev, "Transfer while suspended\n");
+			dev_WARN(&adap->dev, 1, "Transfer while suspended\n");
 		return -ESHUTDOWN;
 	}
 
diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c
index 64148b7e0d98..0998eb3723a9 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.c
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
@@ -299,7 +299,7 @@ int fimc_is_wait_event(struct fimc_is *is, unsigned long bit,
 				     !state ^ test_bit(bit, &is->state),
 				     timeout);
 	if (ret == 0) {
-		dev_WARN(&is->pdev->dev, "%s() timed out\n", __func__);
+		dev_WARN(&is->pdev->dev, 1, "%s() timed out\n", __func__);
 		return -ETIME;
 	}
 	return 0;
diff --git a/drivers/media/platform/exynos4-is/mipi-csis.c b/drivers/media/platform/exynos4-is/mipi-csis.c
index 540151bbf58f..b38420bf2e56 100644
--- a/drivers/media/platform/exynos4-is/mipi-csis.c
+++ b/drivers/media/platform/exynos4-is/mipi-csis.c
@@ -822,7 +822,7 @@ static int s5pcsis_probe(struct platform_device *pdev)
 		ret = clk_set_rate(state->clock[CSIS_CLK_MUX],
 				   state->clk_frequency);
 	else
-		dev_WARN(dev, "No clock frequency specified!\n");
+		dev_WARN(dev, 1, "No clock frequency specified!\n");
 	if (ret < 0)
 		goto e_clkput;
 
diff --git a/drivers/nvdimm/label.c b/drivers/nvdimm/label.c
index 47a4828b8b31..dd86bc64ecb1 100644
--- a/drivers/nvdimm/label.c
+++ b/drivers/nvdimm/label.c
@@ -1127,7 +1127,7 @@ static int __blk_label_update(struct nd_region *nd_region,
 			break;
 		}
 		if (nd_label)
-			dev_WARN(&nsblk->common.dev,
+			dev_WARN(&nsblk->common.dev, 1,
 					"failed to track label slot%d\n", slot);
 	}
 	mutex_unlock(&nd_mapping->lock);
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 032dc61725ff..7e007225a6c7 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -140,7 +140,8 @@ unsigned int pmem_sector_size(struct nd_namespace_common *ndns)
 		else if (nspm->lbasize == 4096)
 			return 4096;
 		else
-			dev_WARN(&ndns->dev, "unsupported sector size: %ld\n",
+			dev_WARN(&ndns->dev, 1,
+					"unsupported sector size: %ld\n",
 					nspm->lbasize);
 	}
 
diff --git a/drivers/nvdimm/nd-core.h b/drivers/nvdimm/nd-core.h
index ddb9d97d9129..f94cc18098e8 100644
--- a/drivers/nvdimm/nd-core.h
+++ b/drivers/nvdimm/nd-core.h
@@ -210,7 +210,7 @@ static inline void debug_nvdimm_lock(struct device *dev)
 	else if (dev->class && dev->class == nd_class)
 		mutex_lock_nested(&dev->lockdep_mutex, LOCK_NDCTL);
 	else
-		dev_WARN(dev, "unknown lock level\n");
+		dev_WARN(dev, 1, "unknown lock level\n");
 }
 
 static inline void debug_nvdimm_unlock(struct device *dev)
diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c
index 153a64676bc9..44c7696f8f13 100644
--- a/drivers/pci/controller/pci-mvebu.c
+++ b/drivers/pci/controller/pci-mvebu.c
@@ -373,7 +373,7 @@ static void mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
 	}
 
 	if (!mvebu_has_ioport(port)) {
-		dev_WARN(&port->pcie->pdev->dev,
+		dev_WARN(&port->pcie->pdev->dev, 1,
 			 "Attempt to set IO when IO is disabled\n");
 		return;
 	}
diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c
index fb1306de8f40..3e0a12ac4943 100644
--- a/drivers/pci/endpoint/pci-epf-core.c
+++ b/drivers/pci/endpoint/pci-epf-core.c
@@ -32,7 +32,7 @@ static const struct device_type pci_epf_type;
 void pci_epf_linkup(struct pci_epf *epf)
 {
 	if (!epf->driver) {
-		dev_WARN(&epf->dev, "epf device not bound to driver\n");
+		dev_WARN(&epf->dev, 1, "epf device not bound to driver\n");
 		return;
 	}
 
@@ -51,7 +51,7 @@ EXPORT_SYMBOL_GPL(pci_epf_linkup);
 void pci_epf_unbind(struct pci_epf *epf)
 {
 	if (!epf->driver) {
-		dev_WARN(&epf->dev, "epf device not bound to driver\n");
+		dev_WARN(&epf->dev, 1, "epf device not bound to driver\n");
 		return;
 	}
 
@@ -70,7 +70,7 @@ EXPORT_SYMBOL_GPL(pci_epf_unbind);
 int pci_epf_bind(struct pci_epf *epf)
 {
 	if (!epf->driver) {
-		dev_WARN(&epf->dev, "epf device not bound to driver\n");
+		dev_WARN(&epf->dev, 1, "epf device not bound to driver\n");
 		return -EINVAL;
 	}
 
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 1e88fd427757..8e4bf40d02a7 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -812,7 +812,7 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno)
 
 	pci_read_config_word(dev, iov->pos + PCI_SRIOV_CTRL, &cmd);
 	if ((cmd & PCI_SRIOV_CTRL_VFE) && (cmd & PCI_SRIOV_CTRL_MSE)) {
-		dev_WARN(&dev->dev, "can't update enabled VF BAR%d %pR\n",
+		dev_WARN(&dev->dev, 1, "can't update enabled VF BAR%d %pR\n",
 			 vf_bar, res);
 		return;
 	}
diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
index b04f4fe85ac2..38835a260170 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -653,7 +653,7 @@ struct phy *phy_get(struct device *dev, const char *string)
 	struct phy *phy;
 
 	if (string == NULL) {
-		dev_WARN(dev, "missing string\n");
+		dev_WARN(dev, 1, "missing string\n");
 		return ERR_PTR(-EINVAL);
 	}
 
diff --git a/drivers/regulator/pbias-regulator.c b/drivers/regulator/pbias-regulator.c
index bfc15dd3f730..a19684b5536d 100644
--- a/drivers/regulator/pbias-regulator.c
+++ b/drivers/regulator/pbias-regulator.c
@@ -180,7 +180,7 @@ static int pbias_regulator_probe(struct platform_device *pdev)
 			return -EINVAL;
 
 		offset = res->start;
-		dev_WARN(&pdev->dev,
+		dev_WARN(&pdev->dev, 1,
 			 "using legacy dt data for pbias offset\n");
 	}
 
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index b5966faf3e98..ad71ce2035c5 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -5771,7 +5771,8 @@ static int __ufshcd_issue_tm_cmd(struct ufs_hba *hba,
 		dev_err(hba->dev, "%s: task management cmd 0x%.2x timed-out\n",
 				__func__, tm_function);
 		if (ufshcd_clear_tm_cmd(hba, free_slot))
-			dev_WARN(hba->dev, "%s: unable clear tm cmd (slot %d) after timeout\n",
+			dev_WARN(hba->dev, 1,
+					"%s: unable clear tm cmd (slot %d) after timeout\n",
 					__func__, free_slot);
 		err = -ETIMEDOUT;
 	} else {
diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c
index d97813e80e5f..68dbc63ca838 100644
--- a/drivers/thunderbolt/ctl.c
+++ b/drivers/thunderbolt/ctl.c
@@ -39,7 +39,7 @@ struct tb_ctl {
 
 
 #define tb_ctl_WARN(ctl, format, arg...) \
-	dev_WARN(&(ctl)->nhi->pdev->dev, format, ## arg)
+	dev_WARN(&(ctl)->nhi->pdev->dev, 1,  format, ## arg)
 
 #define tb_ctl_err(ctl, format, arg...) \
 	dev_err(&(ctl)->nhi->pdev->dev, format, ## arg)
diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c
index 641b21b54460..70848984d950 100644
--- a/drivers/thunderbolt/nhi.c
+++ b/drivers/thunderbolt/nhi.c
@@ -102,7 +102,7 @@ static void ring_interrupt_active(struct tb_ring *ring, bool active)
 		active ? "enabling" : "disabling", reg, bit, old, new);
 
 	if (new == old)
-		dev_WARN(&ring->nhi->pdev->dev,
+		dev_WARN(&ring->nhi->pdev->dev, 1,
 					 "interrupt for %s %d is already %s\n",
 					 RING_TYPE(ring), ring->hop,
 					 active ? "enabled" : "disabled");
@@ -599,7 +599,7 @@ void tb_ring_start(struct tb_ring *ring)
 	if (ring->nhi->going_away)
 		goto err;
 	if (ring->running) {
-		dev_WARN(&ring->nhi->pdev->dev, "ring already started\n");
+		dev_WARN(&ring->nhi->pdev->dev, 1, "ring already started\n");
 		goto err;
 	}
 	dev_dbg(&ring->nhi->pdev->dev, "starting %s %d\n",
@@ -669,7 +669,7 @@ void tb_ring_stop(struct tb_ring *ring)
 	if (ring->nhi->going_away)
 		goto err;
 	if (!ring->running) {
-		dev_WARN(&ring->nhi->pdev->dev, "%s %d already stopped\n",
+		dev_WARN(&ring->nhi->pdev->dev, 1, "%s %d already stopped\n",
 			 RING_TYPE(ring), ring->hop);
 		goto err;
 	}
@@ -718,7 +718,7 @@ void tb_ring_free(struct tb_ring *ring)
 		ring->nhi->rx_rings[ring->hop] = NULL;
 
 	if (ring->running) {
-		dev_WARN(&ring->nhi->pdev->dev, "%s %d still running\n",
+		dev_WARN(&ring->nhi->pdev->dev, 1, "%s %d still running\n",
 			 RING_TYPE(ring), ring->hop);
 	}
 	spin_unlock_irq(&ring->nhi->lock);
@@ -1018,10 +1018,10 @@ static void nhi_shutdown(struct tb_nhi *nhi)
 
 	for (i = 0; i < nhi->hop_count; i++) {
 		if (nhi->tx_rings[i])
-			dev_WARN(&nhi->pdev->dev,
+			dev_WARN(&nhi->pdev->dev, 1,
 				 "TX ring %d is still active\n", i);
 		if (nhi->rx_rings[i])
-			dev_WARN(&nhi->pdev->dev,
+			dev_WARN(&nhi->pdev->dev, 1,
 				 "RX ring %d is still active\n", i);
 	}
 	nhi_disable_interrupts(nhi);
diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h
index ec851f20c571..9b0fb4ee5e66 100644
--- a/drivers/thunderbolt/tb.h
+++ b/drivers/thunderbolt/tb.h
@@ -450,7 +450,7 @@ static inline int tb_port_write(struct tb_port *port, const void *buffer,
 }
 
 #define tb_err(tb, fmt, arg...) dev_err(&(tb)->nhi->pdev->dev, fmt, ## arg)
-#define tb_WARN(tb, fmt, arg...) dev_WARN(&(tb)->nhi->pdev->dev, fmt, ## arg)
+#define tb_WARN(tb, fmt, arg...) dev_WARN(&(tb)->nhi->pdev->dev, 1, fmt, ## arg)
 #define tb_warn(tb, fmt, arg...) dev_warn(&(tb)->nhi->pdev->dev, fmt, ## arg)
 #define tb_info(tb, fmt, arg...) dev_info(&(tb)->nhi->pdev->dev, fmt, ## arg)
 #define tb_dbg(tb, fmt, arg...) dev_dbg(&(tb)->nhi->pdev->dev, fmt, ## arg)
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c
index da923ec17612..3b7a4151ba79 100644
--- a/drivers/usb/core/urb.c
+++ b/drivers/usb/core/urb.c
@@ -475,8 +475,8 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
 
 	/* Check that the pipe's type matches the endpoint's type */
 	if (usb_urb_ep_type_check(urb))
-		dev_WARN(&dev->dev, "BOGUS urb xfer, pipe %x != type %x\n",
-			usb_pipetype(urb->pipe), pipetypes[xfertype]);
+		dev_WARN(&dev->dev, 1, "BOGUS urb xfer, pipe %x != type %x\n",
+			 usb_pipetype(urb->pipe), pipetypes[xfertype]);
 
 	/* Check against a simple/standard policy */
 	allowed = (URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT | URB_DIR_MASK |
@@ -499,8 +499,8 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
 
 	/* warn if submitter gave bogus flags */
 	if (allowed != urb->transfer_flags)
-		dev_WARN(&dev->dev, "BOGUS urb flags, %x --> %x\n",
-			urb->transfer_flags, allowed);
+		dev_WARN(&dev->dev, 1, "BOGUS urb flags, %x --> %x\n",
+			 urb->transfer_flags, allowed);
 
 	/*
 	 * Force periodic transfer intervals to be legal values that are
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
index 8c3de2d258bf..f6ef00e2b463 100644
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -258,7 +258,7 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
 		break;
 
 	default:
-		dev_WARN(omap->dev, "invalid state\n");
+		dev_WARN(omap->dev, 1, "invalid state\n");
 	}
 }
 
@@ -404,7 +404,7 @@ static void dwc3_omap_set_utmi_mode(struct dwc3_omap *omap)
 		reg &= ~USBOTGSS_UTMI_OTG_CTRL_SW_MODE;
 		break;
 	default:
-		dev_WARN(omap->dev, "UNKNOWN utmi mode %d\n", utmi_mode);
+		dev_WARN(omap->dev, 1, "UNKNOWN utmi mode %d\n", utmi_mode);
 	}
 
 	dwc3_omap_write_utmi_ctrl(omap, reg);
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index fd1b100d2927..8eea1c5cc751 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -110,7 +110,7 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep,
 		direction = !!(dep->flags & DWC3_EP0_DIR_IN);
 
 		if (dwc->ep0state != EP0_DATA_PHASE) {
-			dev_WARN(dwc->dev, "Unexpected pending request\n");
+			dev_WARN(dwc->dev, 1, "Unexpected pending request\n");
 			return 0;
 		}
 
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 0c960a97ea02..81dfb89d3dd4 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -370,7 +370,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
 				ret = -EAGAIN;
 				break;
 			default:
-				dev_WARN(dwc->dev, "UNKNOWN cmd status\n");
+				dev_WARN(dwc->dev, 1, "UNKNOWN cmd status\n");
 			}
 
 			break;
@@ -980,7 +980,7 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb,
 		 * This is only possible with faulty memory because we
 		 * checked it already :)
 		 */
-		dev_WARN(dwc->dev, "Unknown endpoint type %d\n",
+		dev_WARN(dwc->dev, 1, "Unknown endpoint type %d\n",
 				usb_endpoint_type(dep->endpoint.desc));
 	}
 
@@ -3134,7 +3134,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc,
 	case DWC3_DEVICE_EVENT_OVERFLOW:
 		break;
 	default:
-		dev_WARN(dwc->dev, "UNKNOWN IRQ %d\n", event->type);
+		dev_WARN(dwc->dev, 1, "UNKNOWN IRQ %d\n", event->type);
 	}
 }
 
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index 35fcb826152c..319e997210fc 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -124,9 +124,9 @@ static struct uhci_td *uhci_alloc_td(struct uhci_hcd *uhci)
 static void uhci_free_td(struct uhci_hcd *uhci, struct uhci_td *td)
 {
 	if (!list_empty(&td->list))
-		dev_WARN(uhci_dev(uhci), "td %p still in list!\n", td);
+		dev_WARN(uhci_dev(uhci), 1, "td %p still in list!\n", td);
 	if (!list_empty(&td->fl_list))
-		dev_WARN(uhci_dev(uhci), "td %p still in fl_list!\n", td);
+		dev_WARN(uhci_dev(uhci), 1, "td %p still in fl_list!\n", td);
 
 	dma_pool_free(uhci->td_pool, td, td->dma_handle);
 }
@@ -293,7 +293,7 @@ static void uhci_free_qh(struct uhci_hcd *uhci, struct uhci_qh *qh)
 {
 	WARN_ON(qh->state != QH_STATE_IDLE && qh->udev);
 	if (!list_empty(&qh->queue))
-		dev_WARN(uhci_dev(uhci), "qh %p list not empty!\n", qh);
+		dev_WARN(uhci_dev(uhci), 1, "qh %p list not empty!\n", qh);
 
 	list_del(&qh->node);
 	if (qh->udev) {
@@ -743,7 +743,7 @@ static void uhci_free_urb_priv(struct uhci_hcd *uhci,
 	struct uhci_td *td, *tmp;
 
 	if (!list_empty(&urbp->node))
-		dev_WARN(uhci_dev(uhci), "urb %p still on QH's list!\n",
+		dev_WARN(uhci_dev(uhci), 1, "urb %p still on QH's list!\n",
 				urbp->urb);
 
 	list_for_each_entry_safe(td, tmp, &urbp->td_list, list) {
diff --git a/drivers/usb/typec/tcpm/wcove.c b/drivers/usb/typec/tcpm/wcove.c
index edc271da14f4..6591c28dda5c 100644
--- a/drivers/usb/typec/tcpm/wcove.c
+++ b/drivers/usb/typec/tcpm/wcove.c
@@ -559,14 +559,14 @@ static irqreturn_t wcove_typec_irq(int irq, void *data)
 	if (usbc_irq1) {
 		ret = regmap_write(wcove->regmap, USBC_IRQ1, usbc_irq1);
 		if (ret)
-			dev_WARN(wcove->dev, "%s failed to clear IRQ1\n",
+			dev_WARN(wcove->dev, 1, "%s failed to clear IRQ1\n",
 				 __func__);
 	}
 
 	if (usbc_irq2) {
 		ret = regmap_write(wcove->regmap, USBC_IRQ2, usbc_irq2);
 		if (ret)
-			dev_WARN(wcove->dev, "%s failed to clear IRQ2\n",
+			dev_WARN(wcove->dev, 1, "%s failed to clear IRQ2\n",
 				 __func__);
 	}
 
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index c8482624ca34..78770a0f8de8 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -702,7 +702,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
 		return 0;
 
 	/* TODO Prevent device auto probing */
-	dev_WARN(dev, "Device added to live group %d!\n",
+	dev_WARN(dev, 1, "Device added to live group %d!\n",
 		 iommu_group_id(group->iommu_group));
 
 	return 0;
@@ -825,7 +825,7 @@ int vfio_add_group_dev(struct device *dev,
 
 	device = vfio_group_get_device(group, dev);
 	if (device) {
-		dev_WARN(dev, "Device already exists on group %d\n",
+		dev_WARN(dev, 1, "Device already exists on group %d\n",
 			 iommu_group_id(iommu_group));
 		vfio_device_put(device);
 		vfio_group_put(group);
diff --git a/include/linux/device.h b/include/linux/device.h
index 96ff76731e93..829ffc02cb74 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -1895,8 +1895,10 @@ do {									\
  * dev_WARN*() acts like dev_printk(), but with the key difference of
  * using WARN/WARN_ONCE to include file/line information and a backtrace.
  */
-#define dev_WARN(dev, format, arg...) \
-	WARN(1, "%s %s: " format, dev_driver_string(dev), dev_name(dev), ## arg);
+
+#define dev_WARN(dev, condition, format, arg...) \
+	WARN(condition, "%s %s: " format, \
+			dev_driver_string(dev), dev_name(dev), ## arg)
 
 #define dev_WARN_ONCE(dev, condition, format, arg...) \
 	WARN_ONCE(condition, "%s %s: " format, \
-- 
2.23.0



More information about the dri-devel mailing list