Skip to content
Snippets Groups Projects
  • Maciej W. Rozycki's avatar
    scsi: BusLogic: Fix missing pr_cont() use · 44d01fc8
    Maciej W. Rozycki authored
    Update BusLogic driver's messaging system to use pr_cont() for continuation
    lines, bringing messy output:
    
    pci 0000:00:13.0: PCI->APIC IRQ transform: INT A -> IRQ 17
    scsi: ***** BusLogic SCSI Driver Version 2.1.17 of 12 September 2013 *****
    scsi: Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
    scsi0: Configuring BusLogic Model BT-958 PCI Wide Ultra SCSI Host Adapter
    scsi0:   Firmware Version: 5.07B, I/O Address: 0x7000, IRQ Channel: 17/Level
    scsi0:   PCI Bus: 0, Device: 19, Address:
    0xE0012000,
    Host Adapter SCSI ID: 7
    scsi0:   Parity Checking: Enabled, Extended Translation: Enabled
    scsi0:   Synchronous Negotiation: Ultra, Wide Negotiation: Enabled
    scsi0:   Disconnect/Reconnect: Enabled, Tagged Queuing: Enabled
    scsi0:   Scatter/Gather Limit: 128 of 8192 segments, Mailboxes: 211
    scsi0:   Driver Queue Depth: 211, Host Adapter Queue Depth: 192
    scsi0:   Tagged Queue Depth:
    Automatic
    , Untagged Queue Depth: 3
    scsi0:   SCSI Bus Termination: Both Enabled
    , SCAM: Disabled
    
    scsi0: *** BusLogic BT-958 Initialized Successfully ***
    scsi host0: BusLogic BT-958
    
    back to order:
    
    pci 0000:00:13.0: PCI->APIC IRQ transform: INT A -> IRQ 17
    scsi: ***** BusLogic SCSI Driver Version 2.1.17 of 12 September 2013 *****
    scsi: Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
    scsi0: Configuring BusLogic Model BT-958 PCI Wide Ultra SCSI Host Adapter
    scsi0:   Firmware Version: 5.07B, I/O Address: 0x7000, IRQ Channel: 17/Level
    scsi0:   PCI Bus: 0, Device: 19, Address: 0xE0012000, Host Adapter SCSI ID: 7
    scsi0:   Parity Checking: Enabled, Extended Translation: Enabled
    scsi0:   Synchronous Negotiation: Ultra, Wide Negotiation: Enabled
    scsi0:   Disconnect/Reconnect: Enabled, Tagged Queuing: Enabled
    scsi0:   Scatter/Gather Limit: 128 of 8192 segments, Mailboxes: 211
    scsi0:   Driver Queue Depth: 211, Host Adapter Queue Depth: 192
    scsi0:   Tagged Queue Depth: Automatic, Untagged Queue Depth: 3
    scsi0:   SCSI Bus Termination: Both Enabled, SCAM: Disabled
    scsi0: *** BusLogic BT-958 Initialized Successfully ***
    scsi host0: BusLogic BT-958
    
    Also diagnostic output such as with the BusLogic=TraceConfiguration
    parameter is affected and becomes vertical and therefore hard to read.
    This has now been corrected, e.g.:
    
    pci 0000:00:13.0: PCI->APIC IRQ transform: INT A -> IRQ 17
    blogic_cmd(86) Status = 30:  4 ==>  4: FF 05 93 00
    blogic_cmd(95) Status = 28: (Modify I/O Address)
    blogic_cmd(91) Status = 30:  1 ==>  1: 01
    blogic_cmd(04) Status = 30:  4 ==>  4: 41 41 35 30
    blogic_cmd(8D) Status = 30: 14 ==> 14: 45 DC 00 20 00 00 00 00 00 40 30 37 42 1D
    scsi: ***** BusLogic SCSI Driver Version 2.1.17 of 12 September 2013 *****
    scsi: Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
    blogic_cmd(04) Status = 30:  4 ==>  4: 41 41 35 30
    blogic_cmd(0B) Status = 30:  3 ==>  3: 00 08 07
    blogic_cmd(0D) Status = 30: 34 ==> 34: 03 01 07 04 00 00 00 00 00 00 00 00 00 00 00 00 FF 42 44 46 FF 00 00 00 00 00 00 00 00 00 FF 00 FF 00
    blogic_cmd(8D) Status = 30: 14 ==> 14: 45 DC 00 20 00 00 00 00 00 40 30 37 42 1D
    blogic_cmd(84) Status = 30:  1 ==>  1: 37
    blogic_cmd(8B) Status = 30:  5 ==>  5: 39 35 38 20 20
    blogic_cmd(85) Status = 30:  1 ==>  1: 42
    blogic_cmd(86) Status = 30:  4 ==>  4: FF 05 93 00
    blogic_cmd(91) Status = 30: 64 ==> 64: 41 46 3E 20 39 35 38 20 20 00 C4 00 04 01 07 2F 07 04 35 FF FF FF FF FF FF FF FF FF FF 01 00 FE FF 08 FF FF 00 00 00 00 00 00 00 01 00 01 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FC
    scsi0: Configuring BusLogic Model BT-958 PCI Wide Ultra SCSI Host Adapter
    
    etc.
    
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2104201940430.44318@angie.orcam.me.uk
    
    
    Fixes: 4bcc595c ("printk: reinstate KERN_CONT for printing continuation lines")
    Cc: stable@vger.kernel.org # v4.9+
    Acked-by: default avatarKhalid Aziz <khalid@gonehiking.org>
    Signed-off-by: default avatarMaciej W. Rozycki <macro@orcam.me.uk>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    44d01fc8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
BusLogic.c 121.48 KiB
// SPDX-License-Identifier: GPL-2.0-only

/*

  Linux Driver for BusLogic MultiMaster and FlashPoint SCSI Host Adapters

  Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>


  The author respectfully requests that any modifications to this software be
  sent directly to him for evaluation and testing.

  Special thanks to Wayne Yen, Jin-Lon Hon, and Alex Win of BusLogic, whose
  advice has been invaluable, to David Gentzel, for writing the original Linux
  BusLogic driver, and to Paul Gortmaker, for being such a dedicated test site.

  Finally, special thanks to Mylex/BusLogic for making the FlashPoint SCCB
  Manager available as freely redistributable source code.

*/

#define blogic_drvr_version		"2.1.17"
#define blogic_drvr_date		"12 September 2013"

#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/types.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/ioport.h>
#include <linux/mm.h>
#include <linux/stat.h>
#include <linux/pci.h>
#include <linux/spinlock.h>
#include <linux/jiffies.h>
#include <linux/dma-mapping.h>
#include <linux/slab.h>
#include <linux/msdos_partition.h>
#include <scsi/scsicam.h>

#include <asm/dma.h>
#include <asm/io.h>

#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_tcq.h>
#include "BusLogic.h"
#include "FlashPoint.c"

#ifndef FAILURE
#define FAILURE (-1)
#endif

static struct scsi_host_template blogic_template;

/*
  blogic_drvr_options_count is a count of the number of BusLogic Driver
  Options specifications provided via the Linux Kernel Command Line or via
  the Loadable Kernel Module Installation Facility.
*/

static int blogic_drvr_options_count;


/*
  blogic_drvr_options is an array of Driver Options structures representing
  BusLogic Driver Options specifications provided via the Linux Kernel Command