[PATCH v2 09/12] scsi/NCR5380: fix and standardize NDEBUG macros

Finn Thain
2014-03-19T12:35:25Z

[-- Attachment #1: ncr5380-debug-macros-fix-NDEBUG --]
[-- Type: text/plain, Size: 8257 bytes --]

All three NCR5380 core driver implementations share the same NCR5380.h
header file so they need to agree on certain macro definitions.

The flag bit used by the NDEBUG_MERGING macro in atari_NCR5380 and
sun3_NCR5380 collides with the bit used by NDEBUG_LISTS.

Moreover, NDEBUG_ABORT appears in NCR5380.c so it should be defined in
NCR5380.h rather than in each of the many drivers using that core.

An undefined NDEBUG_ABORT macro caused compiler errors and led to dodgy
workarounds in the core driver that can now be removed.
(See commits f566a576bca09de85bf477fc0ab2c8c96405b77b and
185a7a1cd79b9891e3c17abdb103ba1c98d6ca7a.)

Move all of the NDEBUG_ABORT, NDEBUG_TAGS and NDEBUG_MERGING macro
definitions into NCR5380.h where all the other NDEBUG macros live.

Also, incorrect "#ifdef NDEBUG" becomes "#if NDEBUG" to fix the warning:
drivers/scsi/mac_scsi.c: At top level:
drivers/scsi/NCR5380.c:418: warning: 'NCR5380_print' defined but not used
drivers/scsi/NCR5380.c:459: warning: 'NCR5380_print_phase' defined but not used

The debugging code is now enabled when NDEBUG != 0.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>

---

Changes since v1:
- Use C99 __VA_ARGS__ for dprintk() macro.
- Get the compiler to check pr_debug() parameters regardless of NDEBUG.

---
drivers/scsi/NCR5380.c | 7 -------
drivers/scsi/NCR5380.h | 24 +++++++++++++++++++-----
drivers/scsi/atari_NCR5380.c | 10 ----------
drivers/scsi/atari_scsi.c | 6 ------
drivers/scsi/dtc.c | 2 --
drivers/scsi/mac_scsi.c | 6 ------
drivers/scsi/sun3_NCR5380.c | 8 +-------
drivers/scsi/sun3_scsi.c | 6 ------
drivers/scsi/sun3_scsi_vme.c | 6 ------
9 files changed, 20 insertions(+), 55 deletions(-)

Index: linux-m68k/drivers/scsi/NCR5380.h
===================================================================
--- linux-m68k.orig/drivers/scsi/NCR5380.h 2014-03-19 23:34:42.000000000 +1100
+++ linux-m68k/drivers/scsi/NCR5380.h 2014-03-19 23:34:44.000000000 +1100
@@ -56,6 +56,9 @@
#define NDEBUG_C400_PREAD 0x100000
#define NDEBUG_C400_PWRITE 0x200000
#define NDEBUG_LISTS 0x400000
+#define NDEBUG_ABORT 0x800000
+#define NDEBUG_TAGS 0x1000000
+#define NDEBUG_MERGING 0x2000000

#define NDEBUG_ANY 0xFFFFFFFFUL

@@ -288,9 +291,24 @@ struct NCR5380_hostdata {

#ifdef __KERNEL__

-#define dprintk(flg, fmt, ...) do {} while (0)
+#ifndef NDEBUG
+#define NDEBUG (0)
+#endif
+
+#define dprintk(flg, fmt, ...) \
+ do { if ((NDEBUG) & (flg)) pr_debug(fmt, ## __VA_ARGS__); } while (0)
+
+#if NDEBUG
+#define NCR5380_dprint(flg, arg) \
+ do { if ((NDEBUG) & (flg)) NCR5380_print(arg); } while (0)
+#define NCR5380_dprint_phase(flg, arg) \
+ do { if ((NDEBUG) & (flg)) NCR5380_print_phase(arg); } while (0)
+static void NCR5380_print_phase(struct Scsi_Host *instance);
+static void NCR5380_print(struct Scsi_Host *instance);
+#else
#define NCR5380_dprint(flg, arg) do {} while (0)
#define NCR5380_dprint_phase(flg, arg) do {} while (0)
+#endif

#if defined(AUTOPROBE_IRQ)
static int NCR5380_probe_irq(struct Scsi_Host *instance, int possible);
@@ -303,10 +321,6 @@ static irqreturn_t NCR5380_intr(int irq,
#endif
static void NCR5380_main(struct work_struct *work);
static void __maybe_unused NCR5380_print_options(struct Scsi_Host *instance);
-#ifdef NDEBUG
-static void NCR5380_print_phase(struct Scsi_Host *instance);
-static void NCR5380_print(struct Scsi_Host *instance);
-#endif
static int NCR5380_abort(Scsi_Cmnd * cmd);
static int NCR5380_bus_reset(Scsi_Cmnd * cmd);
static int NCR5380_queue_command(struct Scsi_Host *, struct scsi_cmnd *);
Index: linux-m68k/drivers/scsi/atari_scsi.c
===================================================================
--- linux-m68k.orig/drivers/scsi/atari_scsi.c 2014-03-19 23:34:44.000000000 +1100
+++ linux-m68k/drivers/scsi/atari_scsi.c 2014-03-19 23:34:44.000000000 +1100
@@ -67,12 +67,6 @@

#include <linux/module.h>

-#define NDEBUG (0)
-
-#define NDEBUG_ABORT 0x00100000
-#define NDEBUG_TAGS 0x00200000
-#define NDEBUG_MERGING 0x00400000
-
#define AUTOSENSE
/* For the Atari version, use only polled IO or REAL_DMA */
#define REAL_DMA
Index: linux-m68k/drivers/scsi/NCR5380.c
===================================================================
--- linux-m68k.orig/drivers/scsi/NCR5380.c 2014-03-19 23:34:42.000000000 +1100
+++ linux-m68k/drivers/scsi/NCR5380.c 2014-03-19 23:34:44.000000000 +1100
@@ -87,13 +87,6 @@
#include <scsi/scsi_dbg.h>
#include <scsi/scsi_transport_spi.h>

-#ifndef NDEBUG
-#define NDEBUG 0
-#endif
-#ifndef NDEBUG_ABORT
-#define NDEBUG_ABORT 0
-#endif
-
#if (NDEBUG & NDEBUG_LISTS)
#define LIST(x,y) {printk("LINE:%d Adding %p to %p\n", __LINE__, (void*)(x), (void*)(y)); if ((x)==(y)) udelay(5); }
#define REMOVE(w,x,y,z) {printk("LINE:%d Removing: %p->%p %p->%p \n", __LINE__, (void*)(w), (void*)(x), (void*)(y), (void*)(z)); if ((x)==(y)) udelay(5); }
Index: linux-m68k/drivers/scsi/sun3_scsi_vme.c
===================================================================
--- linux-m68k.orig/drivers/scsi/sun3_scsi_vme.c 2014-03-19 23:23:02.000000000 +1100
+++ linux-m68k/drivers/scsi/sun3_scsi_vme.c 2014-03-19 23:34:44.000000000 +1100
@@ -38,12 +38,6 @@
/* dma on! */
#define REAL_DMA

-#define NDEBUG 0
-
-#define NDEBUG_ABORT 0x00100000
-#define NDEBUG_TAGS 0x00200000
-#define NDEBUG_MERGING 0x00400000
-
#include "scsi.h"
#include "initio.h"
#include <scsi/scsi_host.h>
Index: linux-m68k/drivers/scsi/sun3_scsi.c
===================================================================
--- linux-m68k.orig/drivers/scsi/sun3_scsi.c 2014-03-19 23:34:41.000000000 +1100
+++ linux-m68k/drivers/scsi/sun3_scsi.c 2014-03-19 23:34:44.000000000 +1100
@@ -65,12 +65,6 @@
#include <asm/idprom.h>
#include <asm/machines.h>

-#define NDEBUG 0
-
-#define NDEBUG_ABORT 0x00100000
-#define NDEBUG_TAGS 0x00200000
-#define NDEBUG_MERGING 0x00400000
-
/* dma on! */
#define REAL_DMA

Index: linux-m68k/drivers/scsi/mac_scsi.c
===================================================================
--- linux-m68k.orig/drivers/scsi/mac_scsi.c 2014-03-19 23:34:41.000000000 +1100
+++ linux-m68k/drivers/scsi/mac_scsi.c 2014-03-19 23:34:44.000000000 +1100
@@ -54,12 +54,6 @@

#include "NCR5380.h"

-#if 0
-#define NDEBUG (NDEBUG_INTR | NDEBUG_PSEUDO_DMA | NDEBUG_ARBITRATION | NDEBUG_SELECTION | NDEBUG_RESELECTION)
-#else
-#define NDEBUG (NDEBUG_ABORT)
-#endif
-
#define RESET_BOOT
#define DRIVER_SETUP

Index: linux-m68k/drivers/scsi/sun3_NCR5380.c
===================================================================
--- linux-m68k.orig/drivers/scsi/sun3_NCR5380.c 2014-03-19 23:34:44.000000000 +1100
+++ linux-m68k/drivers/scsi/sun3_NCR5380.c 2014-03-19 23:34:44.000000000 +1100
@@ -484,7 +484,7 @@ static __inline__ void initialize_SCp(st

#include <linux/delay.h>

-#if 1
+#if NDEBUG
static struct {
unsigned char mask;
const char * name;}
@@ -572,12 +572,6 @@ static void NCR5380_print_phase(struct S
}
}

-#else /* !NDEBUG */
-
-/* dummies... */
-__inline__ void NCR5380_print(struct Scsi_Host *instance) { };
-__inline__ void NCR5380_print_phase(struct Scsi_Host *instance) { };
-
#endif

/*
Index: linux-m68k/drivers/scsi/dtc.c
===================================================================
--- linux-m68k.orig/drivers/scsi/dtc.c 2014-03-19 23:23:02.000000000 +1100
+++ linux-m68k/drivers/scsi/dtc.c 2014-03-19 23:34:44.000000000 +1100
@@ -3,8 +3,6 @@
#define PSEUDO_DMA
#define DONT_USE_INTR
#define UNSAFE /* Leave interrupts enabled during pseudo-dma I/O */
-#define xNDEBUG (NDEBUG_INTR+NDEBUG_RESELECTION+\
- NDEBUG_SELECTION+NDEBUG_ARBITRATION)
#define DMA_WORKS_RIGHT

Index: linux-m68k/drivers/scsi/atari_NCR5380.c
===================================================================
--- linux-m68k.orig/drivers/scsi/atari_NCR5380.c 2014-03-19 23:34:44.000000000 +1100
+++ linux-m68k/drivers/scsi/atari_NCR5380.c 2014-03-19 23:34:44.000000000 +1100
@@ -626,16 +626,6 @@ static void NCR5380_print_phase(struct S
}
}

-#else /* !NDEBUG */
-
-/* dummies... */
-static inline void NCR5380_print(struct Scsi_Host *instance)
-{
-};
-static inline void NCR5380_print_phase(struct Scsi_Host *instance)
-{
-};
-
#endif

/*