diff for duplicates of <20141002065631.386186286@telegraphics.com.au> diff --git a/a/1.txt b/N1/1.txt index 32719cf..f58b77c 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,206 +1,3 @@ -Static variables from dtc.c and pas16.c should not appear in the core -NCR5380.c driver. Aside from being a layering issue this worsens the -divergence between the three core driver variants (atari_NCR5380.c and -sun3_NCR5380.c don't support PSEUDO_DMA) and it can mean multiple hosts -share the same counters. - -Fix this by making the pseudo DMA spin counters in the core more generic. -This also avoids the abuse of the {DTC,PAS16}_PUBLIC_RELEASE macros, so -they can be removed. - -oak.c doesn't use PDMA and hence it doesn't use the counters and hence it -needs no write_info() method. Remove it. - -Signed-off-by: Finn Thain <fthain@telegraphics.com.au> - ---- - drivers/scsi/NCR5380.c | 22 ++++++++++------------ - drivers/scsi/NCR5380.h | 4 ++++ - drivers/scsi/arm/oak.c | 2 -- - drivers/scsi/dtc.c | 13 ++++++------- - drivers/scsi/pas16.c | 12 ++++++------ - 5 files changed, 26 insertions(+), 27 deletions(-) - -Index: linux/drivers/scsi/NCR5380.c -=================================================================== ---- linux.orig/drivers/scsi/NCR5380.c 2014-10-02 16:56:05.000000000 +1000 -+++ linux/drivers/scsi/NCR5380.c 2014-10-02 16:56:09.000000000 +1000 -@@ -693,6 +693,7 @@ static void NCR5380_print_status(struct - NCR5380_dprint_phase(NDEBUG_ANY, instance); - } - -+#ifdef PSEUDO_DMA - /******************************************/ - /* - * /proc/scsi/[dtc pas16 t128 generic]/[0-ASC_NUM_BOARD_SUPPORTED] -@@ -710,14 +711,13 @@ static void NCR5380_print_status(struct - static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance, - char *buffer, int length) - { --#ifdef DTC_PUBLIC_RELEASE -- dtc_wmaxi = dtc_maxi = 0; --#endif --#ifdef PAS16_PUBLIC_RELEASE -- pas_wmaxi = pas_maxi = 0; --#endif -- return (-ENOSYS); /* Currently this is a no-op */ -+ struct NCR5380_hostdata *hostdata = shost_priv(instance); -+ -+ hostdata->spin_max_r = 0; -+ hostdata->spin_max_w = 0; -+ return 0; - } -+#endif - - #undef SPRINTF - #define SPRINTF(args...) seq_printf(m, ## args) -@@ -752,11 +752,9 @@ static int __maybe_unused NCR5380_show_i - SPRINTF("PAS16 release=%d", PAS16_PUBLIC_RELEASE); - #endif - --#ifdef DTC_PUBLIC_RELEASE -- SPRINTF("Highwater I/O busy_spin_counts -- write: %d read: %d\n", dtc_wmaxi, dtc_maxi); --#endif --#ifdef PAS16_PUBLIC_RELEASE -- SPRINTF("Highwater I/O busy_spin_counts -- write: %d read: %d\n", pas_wmaxi, pas_maxi); -+#ifdef PSEUDO_DMA -+ SPRINTF("Highwater I/O busy spin counts: write %d, read %d\n", -+ hostdata->spin_max_w, hostdata->spin_max_r); - #endif - spin_lock_irq(instance->host_lock); - if (!hostdata->connected) -Index: linux/drivers/scsi/NCR5380.h -=================================================================== ---- linux.orig/drivers/scsi/NCR5380.h 2014-10-02 16:56:05.000000000 +1000 -+++ linux/drivers/scsi/NCR5380.h 2014-10-02 16:56:09.000000000 +1000 -@@ -270,6 +270,10 @@ struct NCR5380_hostdata { - struct delayed_work coroutine; /* our co-routine */ - struct scsi_eh_save ses; - char info[256]; -+#ifdef PSEUDO_DMA -+ unsigned spin_max_r; -+ unsigned spin_max_w; -+#endif - }; - - #ifdef __KERNEL__ -Index: linux/drivers/scsi/dtc.c -=================================================================== ---- linux.orig/drivers/scsi/dtc.c 2014-10-02 16:56:05.000000000 +1000 -+++ linux/drivers/scsi/dtc.c 2014-10-02 16:56:09.000000000 +1000 -@@ -332,13 +332,11 @@ static int dtc_biosparam(struct scsi_dev - * timeout. - */ - --static int dtc_maxi = 0; --static int dtc_wmaxi = 0; -- - static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst, int len) - { - unsigned char *d = dst; - int i; /* For counting time spent in the poll-loop */ -+ struct NCR5380_hostdata *hostdata = shost_priv(instance); - NCR5380_local_declare(); - NCR5380_setup(instance); - -@@ -369,8 +367,8 @@ static inline int NCR5380_pread(struct S - NCR5380_write(MODE_REG, 0); /* Clear the operating mode */ - rtrc(0); - NCR5380_read(RESET_PARITY_INTERRUPT_REG); -- if (i > dtc_maxi) -- dtc_maxi = i; -+ if (i > hostdata->spin_max_r) -+ hostdata->spin_max_r = i; - return (0); - } - -@@ -390,6 +388,7 @@ static inline int NCR5380_pread(struct S - static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src, int len) - { - int i; -+ struct NCR5380_hostdata *hostdata = shost_priv(instance); - NCR5380_local_declare(); - NCR5380_setup(instance); - -@@ -422,8 +421,8 @@ static inline int NCR5380_pwrite(struct - /* Check for parity error here. fixme. */ - NCR5380_write(MODE_REG, 0); /* Clear the operating mode */ - rtrc(0); -- if (i > dtc_wmaxi) -- dtc_wmaxi = i; -+ if (i > hostdata->spin_max_w) -+ hostdata->spin_max_w = i; - return (0); - } - -Index: linux/drivers/scsi/pas16.c -=================================================================== ---- linux.orig/drivers/scsi/pas16.c 2014-10-02 16:56:05.000000000 +1000 -+++ linux/drivers/scsi/pas16.c 2014-10-02 16:56:09.000000000 +1000 -@@ -88,8 +88,6 @@ - #include "NCR5380.h" - - --static int pas_maxi = 0; --static int pas_wmaxi = 0; - static unsigned short pas16_addr = 0; - static int pas16_irq = 0; - -@@ -502,6 +500,7 @@ static inline int NCR5380_pread (struct - P_DATA_REG_OFFSET); - register int i = len; - int ii = 0; -+ struct NCR5380_hostdata *hostdata = shost_priv(instance); - - while ( !(inb(instance->io_port + P_STATUS_REG_OFFSET) & P_ST_RDY) ) - ++ii; -@@ -514,8 +513,8 @@ static inline int NCR5380_pread (struct - instance->host_no); - return -1; - } -- if (ii > pas_maxi) -- pas_maxi = ii; -+ if (ii > hostdata->spin_max_r) -+ hostdata->spin_max_r = ii; - return 0; - } - -@@ -538,6 +537,7 @@ static inline int NCR5380_pwrite (struct - register unsigned short reg = (instance->io_port + P_DATA_REG_OFFSET); - register int i = len; - int ii = 0; -+ struct NCR5380_hostdata *hostdata = shost_priv(instance); - - while ( !((inb(instance->io_port + P_STATUS_REG_OFFSET)) & P_ST_RDY) ) - ++ii; -@@ -550,8 +550,8 @@ static inline int NCR5380_pwrite (struct - instance->host_no); - return -1; - } -- if (ii > pas_maxi) -- pas_wmaxi = ii; -+ if (ii > hostdata->spin_max_w) -+ hostdata->spin_max_w = ii; - return 0; - } - -Index: linux/drivers/scsi/arm/oak.c -=================================================================== ---- linux.orig/drivers/scsi/arm/oak.c 2014-10-02 16:56:05.000000000 +1000 -+++ linux/drivers/scsi/arm/oak.c 2014-10-02 16:56:09.000000000 +1000 -@@ -31,7 +31,6 @@ - #define NCR5380_queue_command oakscsi_queue_command - #define NCR5380_info oakscsi_info - #define NCR5380_show_info oakscsi_show_info --#define NCR5380_write_info oakscsi_write_info - - #define NCR5380_implementation_fields \ - void __iomem *base -@@ -108,7 +107,6 @@ printk("reading %p len %d\n", addr, len) - static struct scsi_host_template oakscsi_template = { - .module = THIS_MODULE, - .show_info = oakscsi_show_info, -- .write_info = oakscsi_write_info, - .name = "Oak 16-bit SCSI", - .info = oakscsi_info, - .queuecommand = oakscsi_queue_command, +An embedded and charset-unspecified text was scrubbed... +Name: ncr5380-move-pdma-spin-counters +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141002/b6a4c33e/attachment.ksh> diff --git a/a/content_digest b/N1/content_digest index 9175c5d..779a24c 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,222 +1,12 @@ "ref\020141002065628.256592712@telegraphics.com.au\0" - "From\0Finn Thain <fthain@telegraphics.com.au>\0" + "From\0fthain@telegraphics.com.au (Finn Thain)\0" "Subject\0[PATCH 13/29] ncr5380: Move static PDMA spin counters to host data\0" "Date\0Thu, 02 Oct 2014 16:56:41 +1000\0" - "To\0James E.J. Bottomley <JBottomley@parallels.com>\0" - "Cc\0Michael Schmitz <schmitzmic@gmail.com>" - Sam Creasey <sammy@sammy.net> - linux-scsi@vger.kernel.org - linux-m68k@vger.kernel.org - Russell King <linux@arm.linux.org.uk> - " linux-arm-kernel@lists.infradead.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" - "fn\0ncr5380-move-pdma-spin-counters\0" "b\0" - "Static variables from dtc.c and pas16.c should not appear in the core\n" - "NCR5380.c driver. Aside from being a layering issue this worsens the\n" - "divergence between the three core driver variants (atari_NCR5380.c and\n" - "sun3_NCR5380.c don't support PSEUDO_DMA) and it can mean multiple hosts\n" - "share the same counters.\n" - "\n" - "Fix this by making the pseudo DMA spin counters in the core more generic.\n" - "This also avoids the abuse of the {DTC,PAS16}_PUBLIC_RELEASE macros, so\n" - "they can be removed.\n" - "\n" - "oak.c doesn't use PDMA and hence it doesn't use the counters and hence it\n" - "needs no write_info() method. Remove it.\n" - "\n" - "Signed-off-by: Finn Thain <fthain@telegraphics.com.au>\n" - "\n" - "---\n" - " drivers/scsi/NCR5380.c | 22 ++++++++++------------\n" - " drivers/scsi/NCR5380.h | 4 ++++\n" - " drivers/scsi/arm/oak.c | 2 --\n" - " drivers/scsi/dtc.c | 13 ++++++-------\n" - " drivers/scsi/pas16.c | 12 ++++++------\n" - " 5 files changed, 26 insertions(+), 27 deletions(-)\n" - "\n" - "Index: linux/drivers/scsi/NCR5380.c\n" - "===================================================================\n" - "--- linux.orig/drivers/scsi/NCR5380.c\t2014-10-02 16:56:05.000000000 +1000\n" - "+++ linux/drivers/scsi/NCR5380.c\t2014-10-02 16:56:09.000000000 +1000\n" - "@@ -693,6 +693,7 @@ static void NCR5380_print_status(struct\n" - " \tNCR5380_dprint_phase(NDEBUG_ANY, instance);\n" - " }\n" - " \n" - "+#ifdef PSEUDO_DMA\n" - " /******************************************/\n" - " /*\n" - " * /proc/scsi/[dtc pas16 t128 generic]/[0-ASC_NUM_BOARD_SUPPORTED]\n" - "@@ -710,14 +711,13 @@ static void NCR5380_print_status(struct\n" - " static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance,\n" - " \tchar *buffer, int length)\n" - " {\n" - "-#ifdef DTC_PUBLIC_RELEASE\n" - "-\tdtc_wmaxi = dtc_maxi = 0;\n" - "-#endif\n" - "-#ifdef PAS16_PUBLIC_RELEASE\n" - "-\tpas_wmaxi = pas_maxi = 0;\n" - "-#endif\n" - "-\treturn (-ENOSYS);\t/* Currently this is a no-op */\n" - "+\tstruct NCR5380_hostdata *hostdata = shost_priv(instance);\n" - "+\n" - "+\thostdata->spin_max_r = 0;\n" - "+\thostdata->spin_max_w = 0;\n" - "+\treturn 0;\n" - " }\n" - "+#endif\n" - " \n" - " #undef SPRINTF\n" - " #define SPRINTF(args...) seq_printf(m, ## args)\n" - "@@ -752,11 +752,9 @@ static int __maybe_unused NCR5380_show_i\n" - " \tSPRINTF(\"PAS16 release=%d\", PAS16_PUBLIC_RELEASE);\n" - " #endif\n" - " \n" - "-#ifdef DTC_PUBLIC_RELEASE\n" - "-\tSPRINTF(\"Highwater I/O busy_spin_counts -- write: %d read: %d\\n\", dtc_wmaxi, dtc_maxi);\n" - "-#endif\n" - "-#ifdef PAS16_PUBLIC_RELEASE\n" - "-\tSPRINTF(\"Highwater I/O busy_spin_counts -- write: %d read: %d\\n\", pas_wmaxi, pas_maxi);\n" - "+#ifdef PSEUDO_DMA\n" - "+\tSPRINTF(\"Highwater I/O busy spin counts: write %d, read %d\\n\",\n" - "+\t hostdata->spin_max_w, hostdata->spin_max_r);\n" - " #endif\n" - " \tspin_lock_irq(instance->host_lock);\n" - " \tif (!hostdata->connected)\n" - "Index: linux/drivers/scsi/NCR5380.h\n" - "===================================================================\n" - "--- linux.orig/drivers/scsi/NCR5380.h\t2014-10-02 16:56:05.000000000 +1000\n" - "+++ linux/drivers/scsi/NCR5380.h\t2014-10-02 16:56:09.000000000 +1000\n" - "@@ -270,6 +270,10 @@ struct NCR5380_hostdata {\n" - " \tstruct delayed_work coroutine;\t\t/* our co-routine */\n" - " \tstruct scsi_eh_save ses;\n" - " \tchar info[256];\n" - "+#ifdef PSEUDO_DMA\n" - "+\tunsigned spin_max_r;\n" - "+\tunsigned spin_max_w;\n" - "+#endif\n" - " };\n" - " \n" - " #ifdef __KERNEL__\n" - "Index: linux/drivers/scsi/dtc.c\n" - "===================================================================\n" - "--- linux.orig/drivers/scsi/dtc.c\t2014-10-02 16:56:05.000000000 +1000\n" - "+++ linux/drivers/scsi/dtc.c\t2014-10-02 16:56:09.000000000 +1000\n" - "@@ -332,13 +332,11 @@ static int dtc_biosparam(struct scsi_dev\n" - " * \ttimeout.\n" - " */\n" - " \n" - "-static int dtc_maxi = 0;\n" - "-static int dtc_wmaxi = 0;\n" - "-\n" - " static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst, int len)\n" - " {\n" - " \tunsigned char *d = dst;\n" - " \tint i;\t\t\t/* For counting time spent in the poll-loop */\n" - "+\tstruct NCR5380_hostdata *hostdata = shost_priv(instance);\n" - " \tNCR5380_local_declare();\n" - " \tNCR5380_setup(instance);\n" - " \n" - "@@ -369,8 +367,8 @@ static inline int NCR5380_pread(struct S\n" - " \tNCR5380_write(MODE_REG, 0);\t/* Clear the operating mode */\n" - " \trtrc(0);\n" - " \tNCR5380_read(RESET_PARITY_INTERRUPT_REG);\n" - "-\tif (i > dtc_maxi)\n" - "-\t\tdtc_maxi = i;\n" - "+\tif (i > hostdata->spin_max_r)\n" - "+\t\thostdata->spin_max_r = i;\n" - " \treturn (0);\n" - " }\n" - " \n" - "@@ -390,6 +388,7 @@ static inline int NCR5380_pread(struct S\n" - " static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src, int len)\n" - " {\n" - " \tint i;\n" - "+\tstruct NCR5380_hostdata *hostdata = shost_priv(instance);\n" - " \tNCR5380_local_declare();\n" - " \tNCR5380_setup(instance);\n" - " \n" - "@@ -422,8 +421,8 @@ static inline int NCR5380_pwrite(struct\n" - " \t/* Check for parity error here. fixme. */\n" - " \tNCR5380_write(MODE_REG, 0);\t/* Clear the operating mode */\n" - " \trtrc(0);\n" - "-\tif (i > dtc_wmaxi)\n" - "-\t\tdtc_wmaxi = i;\n" - "+\tif (i > hostdata->spin_max_w)\n" - "+\t\thostdata->spin_max_w = i;\n" - " \treturn (0);\n" - " }\n" - " \n" - "Index: linux/drivers/scsi/pas16.c\n" - "===================================================================\n" - "--- linux.orig/drivers/scsi/pas16.c\t2014-10-02 16:56:05.000000000 +1000\n" - "+++ linux/drivers/scsi/pas16.c\t2014-10-02 16:56:09.000000000 +1000\n" - "@@ -88,8 +88,6 @@\n" - " #include \"NCR5380.h\"\n" - " \n" - " \n" - "-static int pas_maxi = 0;\n" - "-static int pas_wmaxi = 0;\n" - " static unsigned short pas16_addr = 0;\n" - " static int pas16_irq = 0;\n" - " \n" - "@@ -502,6 +500,7 @@ static inline int NCR5380_pread (struct\n" - " \tP_DATA_REG_OFFSET);\n" - " register int i = len;\n" - " int ii = 0;\n" - "+ struct NCR5380_hostdata *hostdata = shost_priv(instance);\n" - " \n" - " while ( !(inb(instance->io_port + P_STATUS_REG_OFFSET) & P_ST_RDY) )\n" - " \t ++ii;\n" - "@@ -514,8 +513,8 @@ static inline int NCR5380_pread (struct\n" - " \t instance->host_no);\n" - " \treturn -1;\n" - " }\n" - "- if (ii > pas_maxi)\n" - "- pas_maxi = ii;\n" - "+ if (ii > hostdata->spin_max_r)\n" - "+ hostdata->spin_max_r = ii;\n" - " return 0;\n" - " }\n" - " \n" - "@@ -538,6 +537,7 @@ static inline int NCR5380_pwrite (struct\n" - " register unsigned short reg = (instance->io_port + P_DATA_REG_OFFSET);\n" - " register int i = len;\n" - " int ii = 0;\n" - "+ struct NCR5380_hostdata *hostdata = shost_priv(instance);\n" - " \n" - " while ( !((inb(instance->io_port + P_STATUS_REG_OFFSET)) & P_ST_RDY) )\n" - " \t ++ii;\n" - "@@ -550,8 +550,8 @@ static inline int NCR5380_pwrite (struct\n" - " \t instance->host_no);\n" - " \treturn -1;\n" - " }\n" - "- if (ii > pas_maxi)\n" - "-\t pas_wmaxi = ii;\n" - "+ if (ii > hostdata->spin_max_w)\n" - "+ hostdata->spin_max_w = ii;\n" - " return 0;\n" - " }\n" - " \n" - "Index: linux/drivers/scsi/arm/oak.c\n" - "===================================================================\n" - "--- linux.orig/drivers/scsi/arm/oak.c\t2014-10-02 16:56:05.000000000 +1000\n" - "+++ linux/drivers/scsi/arm/oak.c\t2014-10-02 16:56:09.000000000 +1000\n" - "@@ -31,7 +31,6 @@\n" - " #define NCR5380_queue_command\t\toakscsi_queue_command\n" - " #define NCR5380_info\t\t\toakscsi_info\n" - " #define NCR5380_show_info\t\toakscsi_show_info\n" - "-#define NCR5380_write_info\t\toakscsi_write_info\n" - " \n" - " #define NCR5380_implementation_fields\t\\\n" - " \tvoid __iomem *base\n" - "@@ -108,7 +107,6 @@ printk(\"reading %p len %d\\n\", addr, len)\n" - " static struct scsi_host_template oakscsi_template = {\n" - " \t.module\t\t\t= THIS_MODULE,\n" - " \t.show_info\t\t= oakscsi_show_info,\n" - "-\t.write_info\t\t= oakscsi_write_info,\n" - " \t.name\t\t\t= \"Oak 16-bit SCSI\",\n" - " \t.info\t\t\t= oakscsi_info,\n" - " \t.queuecommand\t\t= oakscsi_queue_command," + "An embedded and charset-unspecified text was scrubbed...\n" + "Name: ncr5380-move-pdma-spin-counters\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141002/b6a4c33e/attachment.ksh> -a3a85ca11405a2f70ff2d4a06600f00cea4fb93574a4c94b05000f8f138544fa +28337879bbaf41baa87e31bbe8b945235c2d9d179866428d5e33f799395c3cca
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.