Skip to content

Commit fd839bf

Browse files
davejiangjonmason
authored andcommitted
NTB: Change WARN_ON_ONCE to pr_warn_once on unsafe
The unsafe doorbell and scratchpad access should display reason when WARN is called. Otherwise we get a stack dump without any explanation. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Jon Mason <[email protected]>
1 parent 7eb3878 commit fd839bf

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

drivers/ntb/hw/intel/ntb_hw_intel.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ static inline int ndev_db_addr(struct intel_ntb_dev *ndev,
246246
phys_addr_t *db_addr, resource_size_t *db_size,
247247
phys_addr_t reg_addr, unsigned long reg)
248248
{
249-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_DB));
249+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_DB))
250+
pr_warn_once("%s: NTB unsafe doorbell access", __func__);
250251

251252
if (db_addr) {
252253
*db_addr = reg_addr + reg;
@@ -264,15 +265,17 @@ static inline int ndev_db_addr(struct intel_ntb_dev *ndev,
264265
static inline u64 ndev_db_read(struct intel_ntb_dev *ndev,
265266
void __iomem *mmio)
266267
{
267-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_DB));
268+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_DB))
269+
pr_warn_once("%s: NTB unsafe doorbell access", __func__);
268270

269271
return ndev->reg->db_ioread(mmio);
270272
}
271273

272274
static inline int ndev_db_write(struct intel_ntb_dev *ndev, u64 db_bits,
273275
void __iomem *mmio)
274276
{
275-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_DB));
277+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_DB))
278+
pr_warn_once("%s: NTB unsafe doorbell access", __func__);
276279

277280
if (db_bits & ~ndev->db_valid_mask)
278281
return -EINVAL;
@@ -287,7 +290,8 @@ static inline int ndev_db_set_mask(struct intel_ntb_dev *ndev, u64 db_bits,
287290
{
288291
unsigned long irqflags;
289292

290-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_DB));
293+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_DB))
294+
pr_warn_once("%s: NTB unsafe doorbell access", __func__);
291295

292296
if (db_bits & ~ndev->db_valid_mask)
293297
return -EINVAL;
@@ -307,7 +311,8 @@ static inline int ndev_db_clear_mask(struct intel_ntb_dev *ndev, u64 db_bits,
307311
{
308312
unsigned long irqflags;
309313

310-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_DB));
314+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_DB))
315+
pr_warn_once("%s: NTB unsafe doorbell access", __func__);
311316

312317
if (db_bits & ~ndev->db_valid_mask)
313318
return -EINVAL;
@@ -336,7 +341,8 @@ static inline int ndev_spad_addr(struct intel_ntb_dev *ndev, int idx,
336341
phys_addr_t *spad_addr, phys_addr_t reg_addr,
337342
unsigned long reg)
338343
{
339-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD));
344+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD))
345+
pr_warn_once("%s: NTB unsafe scratchpad access", __func__);
340346

341347
if (idx < 0 || idx >= ndev->spad_count)
342348
return -EINVAL;
@@ -352,7 +358,8 @@ static inline int ndev_spad_addr(struct intel_ntb_dev *ndev, int idx,
352358
static inline u32 ndev_spad_read(struct intel_ntb_dev *ndev, int idx,
353359
void __iomem *mmio)
354360
{
355-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD));
361+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD))
362+
pr_warn_once("%s: NTB unsafe scratchpad access", __func__);
356363

357364
if (idx < 0 || idx >= ndev->spad_count)
358365
return 0;
@@ -363,7 +370,8 @@ static inline u32 ndev_spad_read(struct intel_ntb_dev *ndev, int idx,
363370
static inline int ndev_spad_write(struct intel_ntb_dev *ndev, int idx, u32 val,
364371
void __iomem *mmio)
365372
{
366-
WARN_ON_ONCE(ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD));
373+
if (ndev_is_unsafe(ndev, NTB_UNSAFE_SPAD))
374+
pr_warn_once("%s: NTB unsafe scratchpad access", __func__);
367375

368376
if (idx < 0 || idx >= ndev->spad_count)
369377
return -EINVAL;

0 commit comments

Comments
 (0)