From patchwork Wed Mar 19 12:35:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Finn Thain X-Patchwork-Id: 3862401 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 02EA89F334 for ; Wed, 19 Mar 2014 23:57:03 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DE2C6201F4 for ; Wed, 19 Mar 2014 23:57:01 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 86EC1201EF for ; Wed, 19 Mar 2014 23:57:00 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WQPw3-0006rI-4n; Wed, 19 Mar 2014 23:30:12 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WQPvH-000529-A7; Wed, 19 Mar 2014 23:29:23 +0000 Received: from kvm5.telegraphics.com.au ([98.124.60.144]) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WQPuI-0004u9-GF for linux-arm-kernel@lists.infradead.org; Wed, 19 Mar 2014 23:28:26 +0000 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id 0A9CE286E5; Wed, 19 Mar 2014 19:28:03 -0400 (EDT) Message-Id: <20140319123519.242426165@telegraphics.com.au> User-Agent: quilt/0.50-1 Date: Wed, 19 Mar 2014 23:35:25 +1100 From: Finn Thain To: "James E.J. Bottomley" , Subject: [PATCH v2 09/12] scsi/NCR5380: fix and standardize NDEBUG macros References: <20140319123516.542623278@telegraphics.com.au> Content-Disposition: inline; filename=ncr5380-debug-macros-fix-NDEBUG X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140319_192822_593162_A4233367 X-CRM114-Status: GOOD ( 16.02 ) X-Spam-Score: -0.4 (/) Cc: Sam Creasey , linux-m68k@vger.kernel.org, Russell King , Michael Schmitz , linux-kernel@vger.kernel.org, Joe Perches , linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00, DATE_IN_PAST_06_12, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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 -#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 #include -#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 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 #include -#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 -#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 /*