On Thu, 2021-04-15 at 00:39 +0200, Maciej W. Rozycki wrote: > 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@xxxxxxxxxxxxx> > 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@xxxxxxxxxxxxx> > 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@xxxxxxxxxxxxx> > 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. In patch 2, vscnprintf should probably be used to make sure it's 0 terminated. And while it's a lot more code, I'd prefer a solution that looks more like the other commonly used kernel logging extension mechanisms where adapter is placed before the format, ... in the argument list. Today it's: void blogic_msg(enum, fmt, adapter, ...); without the __printf marking so there is one format/arg mismatch. fyi: in the suggested patch below it's - blogic_info("BIOS Address: 0x%lX, ", adapter, - adapter->bios_addr); + blogic_cont(adapter, "BIOS Address: 0x%X, ", + adapter->bios_addr); I'd prefer __printf(3, 4) void blogic_msg(enum, adapter, fmt, ...) (or maybe void blogic_msg(adapter, enum, fmt, ...)) And there's a simple addition of a blogic_cont macro and extension to blogic_msg to simplify the logic and obviousness of the logging extension lines too. I suggest this done with coccinelle and a little typing: --- drivers/scsi/BusLogic.c | 496 +++++++++++++++++++++++++++++++----------------- drivers/scsi/BusLogic.h | 32 ++-- 2 files changed, 341 insertions(+), 187 deletions(-) diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index ccb061ab0a0a..7a52371b5ab6 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -134,8 +134,10 @@ static char *blogic_cmd_failure_reason; static void blogic_announce_drvr(struct blogic_adapter *adapter) { - blogic_announce("***** BusLogic SCSI Driver Version " blogic_drvr_version " of " blogic_drvr_date " *****\n", adapter); - blogic_announce("Copyright 1995-1998 by Leonard N. Zubkoff <lnz@xxxxxxxxxxxxx>\n", adapter); + blogic_announce(adapter, + "***** BusLogic SCSI Driver Version " blogic_drvr_version " of " blogic_drvr_date " *****\n"); + blogic_announce(adapter, + "Copyright 1995-1998 by Leonard N. Zubkoff <lnz@xxxxxxxxxxxxx>\n"); } @@ -198,8 +200,7 @@ static bool __init blogic_create_initccbs(struct blogic_adapter *adapter) blk_pointer = dma_alloc_coherent(&adapter->pci_device->dev, blk_size, &blkp, GFP_KERNEL); if (blk_pointer == NULL) { - blogic_err("UNABLE TO ALLOCATE CCB GROUP - DETACHING\n", - adapter); + blogic_err(adapter, "UNABLE TO ALLOCATE CCB GROUP - DETACHING\n"); return false; } blogic_init_ccbs(adapter, blk_pointer, blk_size, blkp); @@ -259,10 +260,13 @@ static void blogic_create_addlccbs(struct blogic_adapter *adapter, } if (adapter->alloc_ccbs > prev_alloc) { if (print_success) - blogic_notice("Allocated %d additional CCBs (total now %d)\n", adapter, adapter->alloc_ccbs - prev_alloc, adapter->alloc_ccbs); + blogic_notice(adapter, + "Allocated %d additional CCBs (total now %d)\n", + adapter->alloc_ccbs - prev_alloc, + adapter->alloc_ccbs); return; } - blogic_notice("Failed to allocate additional CCBs\n", adapter); + blogic_notice(adapter, "Failed to allocate additional CCBs\n"); if (adapter->drvr_qdepth > adapter->alloc_ccbs - adapter->tgt_count) { adapter->drvr_qdepth = adapter->alloc_ccbs - adapter->tgt_count; adapter->scsi_host->can_queue = adapter->drvr_qdepth; @@ -441,7 +445,9 @@ static int blogic_cmd(struct blogic_adapter *adapter, enum blogic_opcode opcode, goto done; } if (blogic_global_options.trace_config) - blogic_notice("blogic_cmd(%02X) Status = %02X: (Modify I/O Address)\n", adapter, opcode, statusreg.all); + blogic_notice(adapter, + "blogic_cmd(%02X) Status = %02X: (Modify I/O Address)\n", + opcode, statusreg.all); result = 0; goto done; } @@ -499,15 +505,16 @@ static int blogic_cmd(struct blogic_adapter *adapter, enum blogic_opcode opcode, */ if (blogic_global_options.trace_config) { int i; - blogic_notice("blogic_cmd(%02X) Status = %02X: %2d ==> %2d:", - adapter, opcode, statusreg.all, replylen, + blogic_notice(adapter, + "blogic_cmd(%02X) Status = %02X: %2d ==> %2d:", + opcode, statusreg.all, replylen, reply_b); if (replylen > reply_b) replylen = reply_b; for (i = 0; i < replylen; i++) - blogic_notice(" %02X", adapter, - ((unsigned char *) reply)[i]); - blogic_notice("\n", adapter); + blogic_cont(adapter, " %02X", + ((unsigned char *)reply)[i]); + blogic_cont(adapter, "\n"); } /* Process Command Invalid conditions. @@ -717,23 +724,37 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter) pci_addr = base_addr1 = pci_resource_start(pci_device, 1); if (pci_resource_flags(pci_device, 0) & IORESOURCE_MEM) { - blogic_err("BusLogic: Base Address0 0x%lX not I/O for MultiMaster Host Adapter\n", NULL, base_addr0); - blogic_err("at PCI Bus %d Device %d I/O Address 0x%lX\n", NULL, bus, device, io_addr); + blogic_err(NULL, + "BusLogic: Base Address0 0x%lX not I/O for MultiMaster Host Adapter\n", + base_addr0); + blogic_err(NULL, + "at PCI Bus %d Device %d I/O Address 0x%lX\n", + bus, device, io_addr); continue; } if (pci_resource_flags(pci_device, 1) & IORESOURCE_IO) { - blogic_err("BusLogic: Base Address1 0x%lX not Memory for MultiMaster Host Adapter\n", NULL, base_addr1); - blogic_err("at PCI Bus %d Device %d PCI Address 0x%lX\n", NULL, bus, device, pci_addr); + blogic_err(NULL, + "BusLogic: Base Address1 0x%lX not Memory for MultiMaster Host Adapter\n", + base_addr1); + blogic_err(NULL, + "at PCI Bus %d Device %d PCI Address 0x%lX\n", + bus, device, pci_addr); continue; } if (irq_ch == 0) { - blogic_err("BusLogic: IRQ Channel %d invalid for MultiMaster Host Adapter\n", NULL, irq_ch); - blogic_err("at PCI Bus %d Device %d I/O Address 0x%lX\n", NULL, bus, device, io_addr); + blogic_err(NULL, + "BusLogic: IRQ Channel %d invalid for MultiMaster Host Adapter\n", + irq_ch); + blogic_err(NULL, + "at PCI Bus %d Device %d I/O Address 0x%lX\n", + bus, device, io_addr); continue; } if (blogic_global_options.trace_probe) { - blogic_notice("BusLogic: PCI MultiMaster Host Adapter detected at\n", NULL); - blogic_notice("BusLogic: PCI Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX\n", NULL, bus, device, io_addr, pci_addr); + blogic_notice(NULL, "BusLogic: PCI MultiMaster Host Adapter detected at\n"); + blogic_notice(NULL, + "BusLogic: PCI Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX\n", + bus, device, io_addr, pci_addr); } /* Issue the Inquire PCI Host Adapter Information command to determine @@ -819,7 +840,7 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter) nonpr_mmcount++; mmcount++; } else - blogic_warn("BusLogic: Too many Host Adapters detected\n", NULL); + blogic_warn(NULL, "BusLogic: Too many Host Adapters detected\n"); } /* If the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." @@ -957,23 +978,37 @@ static int __init blogic_init_fp_probeinfo(struct blogic_adapter *adapter) pci_addr = base_addr1 = pci_resource_start(pci_device, 1); #ifdef CONFIG_SCSI_FLASHPOINT if (pci_resource_flags(pci_device, 0) & IORESOURCE_MEM) { - blogic_err("BusLogic: Base Address0 0x%lX not I/O for FlashPoint Host Adapter\n", NULL, base_addr0); - blogic_err("at PCI Bus %d Device %d I/O Address 0x%lX\n", NULL, bus, device, io_addr); + blogic_err(NULL, + "BusLogic: Base Address0 0x%lX not I/O for FlashPoint Host Adapter\n", + base_addr0); + blogic_err(NULL, + "at PCI Bus %d Device %d I/O Address 0x%lX\n", + bus, device, io_addr); continue; } if (pci_resource_flags(pci_device, 1) & IORESOURCE_IO) { - blogic_err("BusLogic: Base Address1 0x%lX not Memory for FlashPoint Host Adapter\n", NULL, base_addr1); - blogic_err("at PCI Bus %d Device %d PCI Address 0x%lX\n", NULL, bus, device, pci_addr); + blogic_err(NULL, + "BusLogic: Base Address1 0x%lX not Memory for FlashPoint Host Adapter\n", + base_addr1); + blogic_err(NULL, + "at PCI Bus %d Device %d PCI Address 0x%lX\n", + bus, device, pci_addr); continue; } if (irq_ch == 0) { - blogic_err("BusLogic: IRQ Channel %d invalid for FlashPoint Host Adapter\n", NULL, irq_ch); - blogic_err("at PCI Bus %d Device %d I/O Address 0x%lX\n", NULL, bus, device, io_addr); + blogic_err(NULL, + "BusLogic: IRQ Channel %d invalid for FlashPoint Host Adapter\n", + irq_ch); + blogic_err(NULL, + "at PCI Bus %d Device %d I/O Address 0x%lX\n", + bus, device, io_addr); continue; } if (blogic_global_options.trace_probe) { - blogic_notice("BusLogic: FlashPoint Host Adapter detected at\n", NULL); - blogic_notice("BusLogic: PCI Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX\n", NULL, bus, device, io_addr, pci_addr); + blogic_notice(NULL, "BusLogic: FlashPoint Host Adapter detected at\n"); + blogic_notice(NULL, + "BusLogic: PCI Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX\n", + bus, device, io_addr, pci_addr); } if (blogic_probeinfo_count < BLOGIC_MAX_ADAPTERS) { struct blogic_probeinfo *probeinfo = @@ -988,11 +1023,15 @@ static int __init blogic_init_fp_probeinfo(struct blogic_adapter *adapter) probeinfo->pci_device = pci_dev_get(pci_device); fpcount++; } else - blogic_warn("BusLogic: Too many Host Adapters detected\n", NULL); + blogic_warn(NULL, "BusLogic: Too many Host Adapters detected\n"); #else - blogic_err("BusLogic: FlashPoint Host Adapter detected at PCI Bus %d Device %d\n", NULL, bus, device); - blogic_err("BusLogic: I/O Address 0x%lX PCI Address 0x%lX, irq %d, but FlashPoint\n", NULL, io_addr, pci_addr, irq_ch); - blogic_err("BusLogic: support was omitted in this kernel configuration.\n", NULL); + blogic_err(NULL, + "BusLogic: FlashPoint Host Adapter detected at PCI Bus %d Device %d\n", + bus, device); + blogic_err(NULL, + "BusLogic: I/O Address 0x%lX PCI Address 0x%lX, irq %d, but FlashPoint\n", + io_addr, pci_addr, irq_ch); + blogic_err("BusLogic: support was omitted in this kernel configuration\n", NULL); #endif } /* @@ -1098,15 +1137,19 @@ static bool blogic_failure(struct blogic_adapter *adapter, char *msg) { blogic_announce_drvr(adapter); if (adapter->adapter_bus_type == BLOGIC_PCI_BUS) { - blogic_err("While configuring BusLogic PCI Host Adapter at\n", - adapter); - blogic_err("Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX:\n", adapter, adapter->bus, adapter->dev, adapter->io_addr, adapter->pci_addr); + blogic_err(adapter, "While configuring BusLogic PCI Host Adapter at\n"); + blogic_err(adapter, + "Bus %d Device %d I/O Address 0x%lX PCI Address 0x%lX:\n", + adapter->bus, adapter->dev, adapter->io_addr, + adapter->pci_addr); } else - blogic_err("While configuring BusLogic Host Adapter at I/O Address 0x%lX:\n", adapter, adapter->io_addr); - blogic_err("%s FAILED - DETACHING\n", adapter, msg); + blogic_err(adapter, + "While configuring BusLogic Host Adapter at I/O Address 0x%lX:\n", + adapter->io_addr); + blogic_err(adapter, "%s FAILED - DETACHING\n", msg); if (blogic_cmd_failure_reason != NULL) - blogic_err("ADDITIONAL FAILURE INFO - %s\n", adapter, - blogic_cmd_failure_reason); + blogic_err(adapter, "ADDITIONAL FAILURE INFO - %s\n", + blogic_cmd_failure_reason); return false; } @@ -1130,13 +1173,20 @@ static bool __init blogic_probe(struct blogic_adapter *adapter) fpinfo->present = false; if (!(FlashPoint_ProbeHostAdapter(fpinfo) == 0 && fpinfo->present)) { - blogic_err("BusLogic: FlashPoint Host Adapter detected at PCI Bus %d Device %d\n", adapter, adapter->bus, adapter->dev); - blogic_err("BusLogic: I/O Address 0x%lX PCI Address 0x%lX, but FlashPoint\n", adapter, adapter->io_addr, adapter->pci_addr); - blogic_err("BusLogic: Probe Function failed to validate it.\n", adapter); + blogic_err(adapter, + "BusLogic: FlashPoint Host Adapter detected at PCI Bus %d Device %d\n", + adapter->bus, adapter->dev); + blogic_err(adapter, + "BusLogic: I/O Address 0x%lX PCI Address 0x%lX, but FlashPoint\n", + adapter->io_addr, adapter->pci_addr); + blogic_err(adapter, + "BusLogic: Probe Function failed to validate it\n"); return false; } if (blogic_global_options.trace_probe) - blogic_notice("BusLogic_Probe(0x%lX): FlashPoint Found\n", adapter, adapter->io_addr); + blogic_notice(adapter, + "BusLogic_Probe(0x%lX): FlashPoint Found\n", + adapter->io_addr); /* Indicate the Host Adapter Probe completed successfully. */ @@ -1153,7 +1203,10 @@ static bool __init blogic_probe(struct blogic_adapter *adapter) intreg.all = blogic_rdint(adapter); georeg.all = blogic_rdgeom(adapter); if (blogic_global_options.trace_probe) - blogic_notice("BusLogic_Probe(0x%lX): Status 0x%02X, Interrupt 0x%02X, Geometry 0x%02X\n", adapter, adapter->io_addr, statusreg.all, intreg.all, georeg.all); + blogic_notice(adapter, + "BusLogic_Probe(0x%lX): Status 0x%02X, Interrupt 0x%02X, Geometry 0x%02X\n", + adapter->io_addr, statusreg.all, intreg.all, + georeg.all); if (statusreg.all == 0 || statusreg.sr.diag_active || statusreg.sr.cmd_param_busy || statusreg.sr.rsvd || statusreg.sr.cmd_invalid || intreg.ir.rsvd != 0) @@ -1232,7 +1285,9 @@ static bool blogic_hwreset(struct blogic_adapter *adapter, bool hard_reset) udelay(100); } if (blogic_global_options.trace_hw_reset) - blogic_notice("BusLogic_HardwareReset(0x%lX): Diagnostic Active, Status 0x%02X\n", adapter, adapter->io_addr, statusreg.all); + blogic_notice(adapter, + "BusLogic_HardwareReset(0x%lX): Diagnostic Active, Status 0x%02X\n", + adapter->io_addr, statusreg.all); if (timeout < 0) return false; /* @@ -1252,7 +1307,9 @@ static bool blogic_hwreset(struct blogic_adapter *adapter, bool hard_reset) udelay(100); } if (blogic_global_options.trace_hw_reset) - blogic_notice("BusLogic_HardwareReset(0x%lX): Diagnostic Completed, Status 0x%02X\n", adapter, adapter->io_addr, statusreg.all); + blogic_notice(adapter, + "BusLogic_HardwareReset(0x%lX): Diagnostic Completed, Status 0x%02X\n", + adapter->io_addr, statusreg.all); if (timeout < 0) return false; /* @@ -1268,7 +1325,9 @@ static bool blogic_hwreset(struct blogic_adapter *adapter, bool hard_reset) udelay(100); } if (blogic_global_options.trace_hw_reset) - blogic_notice("BusLogic_HardwareReset(0x%lX): Host Adapter Ready, Status 0x%02X\n", adapter, adapter->io_addr, statusreg.all); + blogic_notice(adapter, + "BusLogic_HardwareReset(0x%lX): Host Adapter Ready, Status 0x%02X\n", + adapter->io_addr, statusreg.all); if (timeout < 0) return false; /* @@ -1280,11 +1339,11 @@ static bool blogic_hwreset(struct blogic_adapter *adapter, bool hard_reset) if (statusreg.sr.diag_failed || !statusreg.sr.adapter_ready) { blogic_cmd_failure_reason = NULL; blogic_failure(adapter, "HARD RESET DIAGNOSTICS"); - blogic_err("HOST ADAPTER STATUS REGISTER = %02X\n", adapter, - statusreg.all); + blogic_err(adapter, "HOST ADAPTER STATUS REGISTER = %02X\n", + statusreg.all); if (statusreg.sr.datain_ready) - blogic_err("HOST ADAPTER ERROR CODE = %d\n", adapter, - blogic_rddatain(adapter)); + blogic_err(adapter, "HOST ADAPTER ERROR CODE = %d\n", + blogic_rddatain(adapter)); return false; } /* @@ -1324,9 +1383,10 @@ static bool __init blogic_checkadapter(struct blogic_adapter *adapter) Provide tracing information if requested and return. */ if (blogic_global_options.trace_probe) - blogic_notice("BusLogic_Check(0x%lX): MultiMaster %s\n", adapter, - adapter->io_addr, - (result ? "Found" : "Not Found")); + blogic_notice(adapter, + "BusLogic_Check(0x%lX): MultiMaster %s\n", + adapter->io_addr, + (result ? "Found" : "Not Found")); return result; } @@ -1836,30 +1896,40 @@ static bool __init blogic_reportconfig(struct blogic_adapter *adapter) char *tagq_msg = tagq_str; int tgt_id; - blogic_info("Configuring BusLogic Model %s %s%s%s%s SCSI Host Adapter\n", adapter, adapter->model, blogic_adapter_busnames[adapter->adapter_bus_type], (adapter->wide ? " Wide" : ""), (adapter->differential ? " Differential" : ""), (adapter->ultra ? " Ultra" : "")); - blogic_info(" Firmware Version: %s, I/O Address: 0x%lX, IRQ Channel: %d/%s\n", adapter, adapter->fw_ver, adapter->io_addr, adapter->irq_ch, (adapter->level_int ? "Level" : "Edge")); + blogic_info(adapter, + "Configuring BusLogic Model %s %s%s%s%s SCSI Host Adapter\n", + adapter->model, + blogic_adapter_busnames[adapter->adapter_bus_type], + (adapter->wide ? " Wide" : ""), + (adapter->differential ? " Differential" : ""), + (adapter->ultra ? " Ultra" : "")); + blogic_info(adapter, + " Firmware Version: %s, I/O Address: 0x%lX, IRQ Channel: %d/%s\n", + adapter->fw_ver, adapter->io_addr, adapter->irq_ch, + (adapter->level_int ? "Level" : "Edge")); if (adapter->adapter_bus_type != BLOGIC_PCI_BUS) { - blogic_info(" DMA Channel: ", adapter); + blogic_info(adapter, " DMA Channel: "); if (adapter->dma_ch > 0) - blogic_info("%d, ", adapter, adapter->dma_ch); + blogic_cont(adapter, "%d, ", adapter->dma_ch); else - blogic_info("None, ", adapter); + blogic_cont(adapter, "None, "); if (adapter->bios_addr > 0) - blogic_info("BIOS Address: 0x%lX, ", adapter, - adapter->bios_addr); + blogic_cont(adapter, "BIOS Address: 0x%X, ", + adapter->bios_addr); else - blogic_info("BIOS Address: None, ", adapter); + blogic_cont(adapter, "BIOS Address: None, "); } else { - blogic_info(" PCI Bus: %d, Device: %d, Address: ", adapter, - adapter->bus, adapter->dev); + blogic_cont(adapter, " PCI Bus: %d, Device: %d, Address: ", + adapter->bus, adapter->dev); if (adapter->pci_addr > 0) - blogic_info("0x%lX, ", adapter, adapter->pci_addr); + blogic_cont(adapter, "0x%lX, ", adapter->pci_addr); else - blogic_info("Unassigned, ", adapter); + blogic_cont(adapter, "Unassigned, "); } - blogic_info("Host Adapter SCSI ID: %d\n", adapter, adapter->scsi_id); - blogic_info(" Parity Checking: %s, Extended Translation: %s\n", - adapter, (adapter->parity ? "Enabled" : "Disabled"), + blogic_cont(adapter, "Host Adapter SCSI ID: %d\n", adapter->scsi_id); + blogic_info(adapter, + " Parity Checking: %s, Extended Translation: %s\n", + (adapter->parity ? "Enabled" : "Disabled"), (adapter->ext_trans_enable ? "Enabled" : "Disabled")); alltgt_mask &= ~(1 << adapter->scsi_id); sync_ok = adapter->sync_ok & alltgt_mask; @@ -1928,16 +1998,25 @@ static bool __init blogic_reportconfig(struct blogic_adapter *adapter) tagq_str[adapter->scsi_id] = '#'; tagq_str[adapter->maxdev] = '\0'; } - blogic_info(" Synchronous Negotiation: %s, Wide Negotiation: %s\n", - adapter, syncmsg, widemsg); - blogic_info(" Disconnect/Reconnect: %s, Tagged Queuing: %s\n", adapter, - discon_msg, tagq_msg); + blogic_info(adapter, + " Synchronous Negotiation: %s, Wide Negotiation: %s\n", + syncmsg, widemsg); + blogic_info(adapter, + " Disconnect/Reconnect: %s, Tagged Queuing: %s\n", + discon_msg, tagq_msg); if (blogic_multimaster_type(adapter)) { - blogic_info(" Scatter/Gather Limit: %d of %d segments, Mailboxes: %d\n", adapter, adapter->drvr_sglimit, adapter->adapter_sglimit, adapter->mbox_count); - blogic_info(" Driver Queue Depth: %d, Host Adapter Queue Depth: %d\n", adapter, adapter->drvr_qdepth, adapter->adapter_qdepth); + blogic_info(adapter, + " Scatter/Gather Limit: %d of %d segments, Mailboxes: %d\n", + adapter->drvr_sglimit, adapter->adapter_sglimit, + adapter->mbox_count); + blogic_info(adapter, + " Driver Queue Depth: %d, Host Adapter Queue Depth: %d\n", + adapter->drvr_qdepth, adapter->adapter_qdepth); } else - blogic_info(" Driver Queue Depth: %d, Scatter/Gather Limit: %d segments\n", adapter, adapter->drvr_qdepth, adapter->drvr_sglimit); - blogic_info(" Tagged Queue Depth: ", adapter); + blogic_info(adapter, + " Driver Queue Depth: %d, Scatter/Gather Limit: %d segments\n", + adapter->drvr_qdepth, adapter->drvr_sglimit); + blogic_info(adapter, " Tagged Queue Depth: "); common_tagq_depth = true; for (tgt_id = 1; tgt_id < adapter->maxdev; tgt_id++) if (adapter->qdepth[tgt_id] != adapter->qdepth[0]) { @@ -1946,24 +2025,28 @@ static bool __init blogic_reportconfig(struct blogic_adapter *adapter) } if (common_tagq_depth) { if (adapter->qdepth[0] > 0) - blogic_info("%d", adapter, adapter->qdepth[0]); + blogic_cont(adapter, "%d", adapter->qdepth[0]); else - blogic_info("Automatic", adapter); + blogic_cont(adapter, "Automatic"); } else - blogic_info("Individual", adapter); - blogic_info(", Untagged Queue Depth: %d\n", adapter, - adapter->untag_qdepth); + blogic_cont(adapter, "Individual"); + blogic_cont(adapter, ", Untagged Queue Depth: %d\n", + adapter->untag_qdepth); if (adapter->terminfo_valid) { if (adapter->wide) - blogic_info(" SCSI Bus Termination: %s", adapter, - (adapter->low_term ? (adapter->high_term ? "Both Enabled" : "Low Enabled") : (adapter->high_term ? "High Enabled" : "Both Disabled"))); + blogic_info(adapter, " SCSI Bus Termination: %s", + (adapter->low_term + ? (adapter->high_term ? "Both Enabled" : "Low Enabled") + : (adapter->high_term ? "High Enabled" : "Both Disabled"))); else - blogic_info(" SCSI Bus Termination: %s", adapter, - (adapter->low_term ? "Enabled" : "Disabled")); + blogic_info(adapter, " SCSI Bus Termination: %s", + (adapter->low_term ? "Enabled" : "Disabled")); if (adapter->scam) - blogic_info(", SCAM: %s", adapter, - (adapter->scam_enabled ? (adapter->scam_lev2 ? "Enabled, Level 2" : "Enabled, Level 1") : "Disabled")); - blogic_info("\n", adapter); + blogic_cont(adapter, ", SCAM: %s", + (adapter->scam_enabled + ? (adapter->scam_lev2 ? "Enabled, Level 2" : "Enabled, Level 1") + : "Disabled")); + blogic_cont(adapter, "\n"); } /* Indicate reporting the Host Adapter configuration completed @@ -1981,8 +2064,8 @@ static bool __init blogic_reportconfig(struct blogic_adapter *adapter) static bool __init blogic_getres(struct blogic_adapter *adapter) { if (adapter->irq_ch == 0) { - blogic_err("NO LEGAL INTERRUPT CHANNEL ASSIGNED - DETACHING\n", - adapter); + blogic_err(adapter, + "NO LEGAL INTERRUPT CHANNEL ASSIGNED - DETACHING\n"); return false; } /* @@ -1990,8 +2073,9 @@ static bool __init blogic_getres(struct blogic_adapter *adapter) */ if (request_irq(adapter->irq_ch, blogic_inthandler, IRQF_SHARED, adapter->full_model, adapter) < 0) { - blogic_err("UNABLE TO ACQUIRE IRQ CHANNEL %d - DETACHING\n", - adapter, adapter->irq_ch); + blogic_err(adapter, + "UNABLE TO ACQUIRE IRQ CHANNEL %d - DETACHING\n", + adapter->irq_ch); return false; } adapter->irq_acquired = true; @@ -2000,7 +2084,9 @@ static bool __init blogic_getres(struct blogic_adapter *adapter) */ if (adapter->dma_ch > 0) { if (request_dma(adapter->dma_ch, adapter->full_model) < 0) { - blogic_err("UNABLE TO ACQUIRE DMA CHANNEL %d - DETACHING\n", adapter, adapter->dma_ch); + blogic_err(adapter, + "UNABLE TO ACQUIRE DMA CHANNEL %d - DETACHING\n", + adapter->dma_ch); return false; } set_dma_mode(adapter->dma_ch, DMA_MODE_CASCADE); @@ -2148,12 +2234,12 @@ static bool blogic_initadapter(struct blogic_adapter *adapter) */ done: if (!adapter->adapter_initd) { - blogic_info("*** %s Initialized Successfully ***\n", adapter, - adapter->full_model); - blogic_info("\n", adapter); + blogic_info(adapter, "*** %s Initialized Successfully ***\n", + adapter->full_model); + blogic_info(adapter, "\n"); } else - blogic_warn("*** %s Initialized Successfully ***\n", adapter, - adapter->full_model); + blogic_warn(adapter, "*** %s Initialized Successfully ***\n", + adapter->full_model); adapter->adapter_initd = true; /* @@ -2365,15 +2451,16 @@ static int __init blogic_init(void) kcalloc(BLOGIC_MAX_ADAPTERS, sizeof(struct blogic_probeinfo), GFP_KERNEL); if (blogic_probeinfo_list == NULL) { - blogic_err("BusLogic: Unable to allocate Probe Info List\n", - NULL); + blogic_err(NULL, + "BusLogic: Unable to allocate Probe Info List\n"); return -ENOMEM; } adapter = kzalloc(sizeof(struct blogic_adapter), GFP_KERNEL); if (adapter == NULL) { kfree(blogic_probeinfo_list); - blogic_err("BusLogic: Unable to allocate Prototype Host Adapter\n", NULL); + blogic_err(NULL, + "BusLogic: Unable to allocate Prototype Host Adapter\n"); return -ENOMEM; } @@ -2633,8 +2720,9 @@ static int blogic_resultcode(struct blogic_adapter *adapter, case BLOGIC_INVALID_OUTBOX_CODE: case BLOGIC_INVALID_CMD_CODE: case BLOGIC_BAD_CMD_PARAM: - blogic_warn("BusLogic Driver Protocol Error 0x%02X\n", - adapter, adapter_status); + blogic_warn(adapter, + "BusLogic Driver Protocol Error 0x%02X\n", + adapter_status); fallthrough; case BLOGIC_DATA_UNDERRUN: case BLOGIC_DATA_OVERRUN: @@ -2659,8 +2747,8 @@ static int blogic_resultcode(struct blogic_adapter *adapter, hoststatus = DID_RESET; break; default: - blogic_warn("Unknown Host Adapter Status 0x%02X\n", adapter, - adapter_status); + blogic_warn(adapter, "Unknown Host Adapter Status 0x%02X\n", + adapter_status); hoststatus = DID_ERROR; break; } @@ -2718,7 +2806,9 @@ static void blogic_scan_inbox(struct blogic_adapter *adapter) then there is most likely a bug in the Host Adapter firmware. */ - blogic_warn("Illegal CCB #%ld status %d in Incoming Mailbox\n", adapter, ccb->serial, ccb->status); + blogic_warn(adapter, + "Illegal CCB #%ld status %d in Incoming Mailbox\n", + ccb->serial, ccb->status); } } next_inbox->comp_code = BLOGIC_INBOX_FREE; @@ -2753,7 +2843,9 @@ static void blogic_process_ccbs(struct blogic_adapter *adapter) if (ccb->opcode == BLOGIC_BDR) { int tgt_id = ccb->tgt_id; - blogic_warn("Bus Device Reset CCB #%ld to Target %d Completed\n", adapter, ccb->serial, tgt_id); + blogic_warn(adapter, + "Bus Device Reset CCB #%ld to Target %d Completed\n", + ccb->serial, tgt_id); blogic_inc_count(&adapter->tgt_stats[tgt_id].bdr_done); adapter->tgt_flags[tgt_id].tagq_active = false; adapter->cmds_since_rst[tgt_id] = 0; @@ -2806,7 +2898,9 @@ static void blogic_process_ccbs(struct blogic_adapter *adapter) case BLOGIC_INBOX_FREE: case BLOGIC_CMD_NOTFOUND: case BLOGIC_INVALID_CCB: - blogic_warn("CCB #%ld to Target %d Impossible State\n", adapter, ccb->serial, ccb->tgt_id); + blogic_warn(adapter, + "CCB #%ld to Target %d Impossible State\n", + ccb->serial, ccb->tgt_id); break; case BLOGIC_CMD_COMPLETE_GOOD: adapter->tgt_stats[ccb->tgt_id] @@ -2816,8 +2910,9 @@ static void blogic_process_ccbs(struct blogic_adapter *adapter) command->result = DID_OK << 16; break; case BLOGIC_CMD_ABORT_BY_HOST: - blogic_warn("CCB #%ld to Target %d Aborted\n", - adapter, ccb->serial, ccb->tgt_id); + blogic_warn(adapter, + "CCB #%ld to Target %d Aborted\n", + ccb->serial, ccb->tgt_id); blogic_inc_count(&adapter->tgt_stats[ccb->tgt_id].aborts_done); command->result = DID_ABORT << 16; break; @@ -2829,16 +2924,26 @@ static void blogic_process_ccbs(struct blogic_adapter *adapter) .cmds_complete++; if (blogic_global_options.trace_err) { int i; - blogic_notice("CCB #%ld Target %d: Result %X Host " - "Adapter Status %02X Target Status %02X\n", adapter, ccb->serial, ccb->tgt_id, command->result, ccb->adapter_status, ccb->tgt_status); - blogic_notice("CDB ", adapter); + blogic_notice(adapter, + "CCB #%ld Target %d: Result %X Host Adapter Status %02X Target Status %02X\n", + ccb->serial, + ccb->tgt_id, + command->result, + ccb->adapter_status, + ccb->tgt_status); + blogic_notice(adapter, + "CDB "); for (i = 0; i < ccb->cdblen; i++) - blogic_notice(" %02X", adapter, ccb->cdb[i]); - blogic_notice("\n", adapter); - blogic_notice("Sense ", adapter); + blogic_cont(adapter, + " %02X", + ccb->cdb[i]); + blogic_cont(adapter, "\n"); + blogic_notice(adapter, "Sense "); for (i = 0; i < ccb->sense_datalen; i++) - blogic_notice(" %02X", adapter, command->sense_buffer[i]); - blogic_notice("\n", adapter); + blogic_cont(adapter, + " %02X", + command->sense_buffer[i]); + blogic_cont(adapter, "\n"); } } break; @@ -2925,7 +3030,8 @@ static irqreturn_t blogic_inthandler(int irq_ch, void *devid) adapter->adapter_extreset = true; break; case FPOINT_INTERN_ERR: - blogic_warn("Internal FlashPoint Error detected - Resetting Host Adapter\n", adapter); + blogic_warn(adapter, + "Internal FlashPoint Error detected - Resetting Host Adapter\n"); adapter->adapter_intern_err = true; break; } @@ -2939,12 +3045,16 @@ static irqreturn_t blogic_inthandler(int irq_ch, void *devid) Reset the Host Adapter if requested. */ if (adapter->adapter_extreset) { - blogic_warn("Resetting %s due to External SCSI Bus Reset\n", adapter, adapter->full_model); + blogic_warn(adapter, + "Resetting %s due to External SCSI Bus Reset\n", + adapter->full_model); blogic_inc_count(&adapter->ext_resets); blogic_resetadapter(adapter, false); adapter->adapter_extreset = false; } else if (adapter->adapter_intern_err) { - blogic_warn("Resetting %s due to Host Adapter Internal Error\n", adapter, adapter->full_model); + blogic_warn(adapter, + "Resetting %s due to Host Adapter Internal Error\n", + adapter->full_model); blogic_inc_count(&adapter->adapter_intern_errors); blogic_resetadapter(adapter, true); adapter->adapter_intern_err = false; @@ -3142,8 +3252,9 @@ static int blogic_qcmd_lck(struct scsi_cmnd *command, && tgt_flags->tagq_ok && (adapter->tagq_ok & (1 << tgt_id))) { tgt_flags->tagq_active = true; - blogic_notice("Tagged Queuing now active for Target %d\n", - adapter, tgt_id); + blogic_notice(adapter, + "Tagged Queuing now active for Target %d\n", + tgt_id); } if (tgt_flags->tagq_active) { enum blogic_queuetag queuetag = BLOGIC_SIMPLETAG; @@ -3184,8 +3295,8 @@ static int blogic_qcmd_lck(struct scsi_cmnd *command, command->sense_buffer, ccb->sense_datalen, DMA_FROM_DEVICE); if (dma_mapping_error(&adapter->pci_device->dev, sense_buf)) { - blogic_err("DMA mapping for sense data buffer failed\n", - adapter); + blogic_err(adapter, + "DMA mapping for sense data buffer failed\n"); blogic_dealloc_ccb(ccb, 0); return SCSI_MLQUEUE_HOST_BUSY; } @@ -3204,12 +3315,12 @@ static int blogic_qcmd_lck(struct scsi_cmnd *command, */ if (!blogic_write_outbox(adapter, BLOGIC_MBOX_START, ccb)) { spin_unlock_irq(adapter->scsi_host->host_lock); - blogic_warn("Unable to write Outgoing Mailbox - Pausing for 1 second\n", adapter); + blogic_warn(adapter, "Unable to write Outgoing Mailbox - Pausing for 1 second\n"); blogic_delay(1); spin_lock_irq(adapter->scsi_host->host_lock); if (!blogic_write_outbox(adapter, BLOGIC_MBOX_START, ccb)) { - blogic_warn("Still unable to write Outgoing Mailbox - Host Adapter Dead?\n", adapter); + blogic_warn(adapter, "Still unable to write Outgoing Mailbox - Host Adapter Dead?\n"); blogic_dealloc_ccb(ccb, 1); command->result = DID_ERROR << 16; command->scsi_done(command); @@ -3259,13 +3370,16 @@ static int blogic_abort(struct scsi_cmnd *command) if (ccb->command == command) break; if (ccb == NULL) { - blogic_warn("Unable to Abort Command to Target %d - No CCB Found\n", adapter, tgt_id); + blogic_warn(adapter, "Unable to Abort Command to Target %d - No CCB Found\n", + tgt_id); return SUCCESS; } else if (ccb->status == BLOGIC_CCB_COMPLETE) { - blogic_warn("Unable to Abort Command to Target %d - CCB Completed\n", adapter, tgt_id); + blogic_warn(adapter, "Unable to Abort Command to Target %d - CCB Completed\n", + tgt_id); return SUCCESS; } else if (ccb->status == BLOGIC_CCB_RESET) { - blogic_warn("Unable to Abort Command to Target %d - CCB Reset\n", adapter, tgt_id); + blogic_warn(adapter, "Unable to Abort Command to Target %d - CCB Reset\n", + tgt_id); return SUCCESS; } if (blogic_multimaster_type(adapter)) { @@ -3283,16 +3397,18 @@ static int blogic_abort(struct scsi_cmnd *command) */ if (adapter->tgt_flags[tgt_id].tagq_active && adapter->fw_ver[0] < '5') { - blogic_warn("Unable to Abort CCB #%ld to Target %d - Abort Tag Not Supported\n", adapter, ccb->serial, tgt_id); + blogic_warn(adapter, "Unable to Abort CCB #%ld to Target %d - Abort Tag Not Supported\n", + ccb->serial, tgt_id); return FAILURE; } else if (blogic_write_outbox(adapter, BLOGIC_MBOX_ABORT, ccb)) { - blogic_warn("Aborting CCB #%ld to Target %d\n", - adapter, ccb->serial, tgt_id); + blogic_warn(adapter, "Aborting CCB #%ld to Target %d\n", + ccb->serial, tgt_id); blogic_inc_count(&adapter->tgt_stats[tgt_id].aborts_tried); return SUCCESS; } else { - blogic_warn("Unable to Abort CCB #%ld to Target %d - No Outgoing Mailboxes\n", adapter, ccb->serial, tgt_id); + blogic_warn(adapter, "Unable to Abort CCB #%ld to Target %d - No Outgoing Mailboxes\n", + ccb->serial, tgt_id); return FAILURE; } } else { @@ -3300,8 +3416,8 @@ static int blogic_abort(struct scsi_cmnd *command) Call the FlashPoint SCCB Manager to abort execution of the CCB. */ - blogic_warn("Aborting CCB #%ld to Target %d\n", adapter, - ccb->serial, tgt_id); + blogic_warn(adapter, "Aborting CCB #%ld to Target %d\n", + ccb->serial, tgt_id); blogic_inc_count(&adapter->tgt_stats[tgt_id].aborts_tried); FlashPoint_AbortCCB(adapter->cardhandle, ccb); /* @@ -3333,8 +3449,8 @@ static int blogic_resetadapter(struct blogic_adapter *adapter, bool hard_reset) if (!(blogic_hwreset(adapter, hard_reset) && blogic_initadapter(adapter))) { - blogic_err("Resetting %s Failed\n", adapter, - adapter->full_model); + blogic_err(adapter, "Resetting %s Failed\n", + adapter->full_model); return FAILURE; } @@ -3443,10 +3559,15 @@ static int blogic_diskparam(struct scsi_device *sdev, struct block_device *dev, diskparam->cylinders = (unsigned long) capacity / (diskparam->heads * diskparam->sectors); if (part_no < 4 && part_end_sector == diskparam->sectors) { if (diskparam->cylinders != saved_cyl) - blogic_warn("Adopting Geometry %d/%d from Partition Table\n", adapter, diskparam->heads, diskparam->sectors); + blogic_warn(adapter, + "Adopting Geometry %d/%d from Partition Table\n", + diskparam->heads, + diskparam->sectors); } else if (part_end_head > 0 || part_end_sector > 0) { - blogic_warn("Warning: Partition Table appears to have Geometry %d/%d which is\n", adapter, part_end_head + 1, part_end_sector); - blogic_warn("not compatible with current BusLogic Host Adapter Geometry %d/%d\n", adapter, diskparam->heads, diskparam->sectors); + blogic_warn(adapter, + "Warning: Partition Table appears to have Geometry %d/%d which is not compatible with current BusLogic Host Adapter Geometry %d/%d\n", + part_end_head + 1, part_end_sector, + diskparam->heads, diskparam->sectors); } } kfree(buf); @@ -3571,6 +3692,7 @@ Target Requested Completed Requested Completed Requested Completed\n\ } seq_printf(m, "\nExternal Host Adapter Resets: %d\n", adapter->ext_resets); seq_printf(m, "Host Adapter Internal Errors: %d\n", adapter->adapter_intern_errors); + return 0; } @@ -3579,41 +3701,51 @@ Target Requested Completed Requested Completed Requested Completed\n\ blogic_msg prints Driver Messages. */ -static void blogic_msg(enum blogic_msglevel msglevel, char *fmt, - struct blogic_adapter *adapter, ...) +static void blogic_msg(enum blogic_msglevel msglevel, + struct blogic_adapter *adapter, const char *fmt, ...) { static char buf[BLOGIC_LINEBUF_SIZE]; - static bool begin = true; va_list args; int len = 0; + const char *kern_level = blogic_msglevelmap[msglevel]; - va_start(args, adapter); - len = vsprintf(buf, fmt, args); + va_start(args, fmt); + len = vscnprintf(buf, sizeof(buf), fmt, args); va_end(args); - if (msglevel == BLOGIC_ANNOUNCE_LEVEL) { + + switch (msglevel) { + case BLOGIC_ANNOUNCE_LEVEL: { static int msglines = 0; + strcpy(&adapter->msgbuf[adapter->msgbuflen], buf); adapter->msgbuflen += len; if (++msglines <= 2) - printk("%sscsi: %s", blogic_msglevelmap[msglevel], buf); - } else if (msglevel == BLOGIC_INFO_LEVEL) { + printk("%sscsi: %s", kern_level, buf); + break; + } + + case BLOGIC_INFO_LEVEL: strcpy(&adapter->msgbuf[adapter->msgbuflen], buf); adapter->msgbuflen += len; - if (begin) { - if (buf[0] != '\n' || len > 1) - printk("%sscsi%d: %s", blogic_msglevelmap[msglevel], adapter->host_no, buf); - } else - printk("%s", buf); - } else { - if (begin) { - if (adapter != NULL && adapter->adapter_initd) - printk("%sscsi%d: %s", blogic_msglevelmap[msglevel], adapter->host_no, buf); - else - printk("%s%s", blogic_msglevelmap[msglevel], buf); - } else - printk("%s", buf); + if (buf[0] != '\n' || len > 1) + printk("%sscsi%d: %s", + kern_level, adapter->host_no, buf); + break; + + case BLOGIC_CONT_LEVEL: + strcpy(&adapter->msgbuf[adapter->msgbuflen], buf); + adapter->msgbuflen += len; + printk("%s%s", kern_level, buf); + break; + + default: + if (adapter && adapter->adapter_initd) + printk("%sscsi%d: %s", + kern_level, adapter->host_no, buf); + else + printk("%s%s", kern_level, buf); + break; } - begin = (buf[len - 1] == '\n'); } @@ -3691,7 +3823,9 @@ static int __init blogic_parseopts(char *options) blogic_probe_options.probe134 = true; break; default: - blogic_err("BusLogic: Invalid Driver Options (invalid I/O Address 0x%lX)\n", NULL, io_addr); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (invalid I/O Address 0x%lX)\n", + io_addr); return 0; } } else if (blogic_parse(&options, "NoProbeISA")) @@ -3712,7 +3846,9 @@ static int __init blogic_parseopts(char *options) for (tgt_id = 0; tgt_id < BLOGIC_MAXDEV; tgt_id++) { unsigned short qdepth = simple_strtoul(options, &options, 0); if (qdepth > BLOGIC_MAX_TAG_DEPTH) { - blogic_err("BusLogic: Invalid Driver Options (invalid Queue Depth %d)\n", NULL, qdepth); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (invalid Queue Depth %d)\n", + qdepth); return 0; } drvr_opts->qdepth[tgt_id] = qdepth; @@ -3721,12 +3857,16 @@ static int __init blogic_parseopts(char *options) else if (*options == ']') break; else { - blogic_err("BusLogic: Invalid Driver Options (',' or ']' expected at '%s')\n", NULL, options); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (',' or ']' expected at '%s')\n", + options); return 0; } } if (*options != ']') { - blogic_err("BusLogic: Invalid Driver Options (']' expected at '%s')\n", NULL, options); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (']' expected at '%s')\n", + options); return 0; } else options++; @@ -3734,7 +3874,9 @@ static int __init blogic_parseopts(char *options) unsigned short qdepth = simple_strtoul(options, &options, 0); if (qdepth == 0 || qdepth > BLOGIC_MAX_TAG_DEPTH) { - blogic_err("BusLogic: Invalid Driver Options (invalid Queue Depth %d)\n", NULL, qdepth); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (invalid Queue Depth %d)\n", + qdepth); return 0; } drvr_opts->common_qdepth = qdepth; @@ -3780,7 +3922,9 @@ static int __init blogic_parseopts(char *options) unsigned short bus_settle_time = simple_strtoul(options, &options, 0); if (bus_settle_time > 5 * 60) { - blogic_err("BusLogic: Invalid Driver Options (invalid Bus Settle Time %d)\n", NULL, bus_settle_time); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (invalid Bus Settle Time %d)\n", + bus_settle_time); return 0; } drvr_opts->bus_settle_time = bus_settle_time; @@ -3805,14 +3949,17 @@ static int __init blogic_parseopts(char *options) if (*options == ',') options++; else if (*options != ';' && *options != '\0') { - blogic_err("BusLogic: Unexpected Driver Option '%s' ignored\n", NULL, options); + blogic_err(NULL, + "BusLogic: Unexpected Driver Option '%s' ignored\n", + options); *options = '\0'; } } if (!(blogic_drvr_options_count == 0 || blogic_probeinfo_count == 0 || blogic_drvr_options_count == blogic_probeinfo_count)) { - blogic_err("BusLogic: Invalid Driver Options (all or no I/O Addresses must be specified)\n", NULL); + blogic_err(NULL, + "BusLogic: Invalid Driver Options (all or no I/O Addresses must be specified)\n"); return 0; } /* @@ -3866,7 +4013,8 @@ static int __init blogic_setup(char *str) (void) get_options(str, ARRAY_SIZE(ints), ints); if (ints[0] != 0) { - blogic_err("BusLogic: Obsolete Command Line Entry Format Ignored\n", NULL); + blogic_err(NULL, + "BusLogic: Obsolete Command Line Entry Format Ignored\n"); return 0; } if (str == NULL || *str == '\0') diff --git a/drivers/scsi/BusLogic.h b/drivers/scsi/BusLogic.h index 6182cc8a0344..42333fba6005 100644 --- a/drivers/scsi/BusLogic.h +++ b/drivers/scsi/BusLogic.h @@ -108,30 +108,34 @@ enum blogic_msglevel { BLOGIC_INFO_LEVEL = 1, BLOGIC_NOTICE_LEVEL = 2, BLOGIC_WARN_LEVEL = 3, - BLOGIC_ERR_LEVEL = 4 + BLOGIC_ERR_LEVEL = 4, + BLOGIC_CONT_LEVEL = 5, }; -static char *blogic_msglevelmap[] = { KERN_NOTICE, KERN_NOTICE, KERN_NOTICE, KERN_WARNING, KERN_ERR }; +static char *blogic_msglevelmap[] = { KERN_NOTICE, KERN_NOTICE, KERN_NOTICE, KERN_WARNING, KERN_ERR, KERN_CONT }; /* Define Driver Message macros. */ -#define blogic_announce(format, args...) \ - blogic_msg(BLOGIC_ANNOUNCE_LEVEL, format, ##args) +#define blogic_announce(adapter, fmt, ...) \ + blogic_msg(BLOGIC_ANNOUNCE_LEVEL, adapter, fmt, ##__VA_ARGS__) -#define blogic_info(format, args...) \ - blogic_msg(BLOGIC_INFO_LEVEL, format, ##args) +#define blogic_cont(adapter, fmt, ...) \ + blogic_msg(BLOGIC_CONT_LEVEL, adapter, fmt, ##__VA_ARGS__) -#define blogic_notice(format, args...) \ - blogic_msg(BLOGIC_NOTICE_LEVEL, format, ##args) +#define blogic_info(adapter, fmt, ...) \ + blogic_msg(BLOGIC_INFO_LEVEL, adapter, fmt, ##__VA_ARGS__) -#define blogic_warn(format, args...) \ - blogic_msg(BLOGIC_WARN_LEVEL, format, ##args) +#define blogic_notice(adapter, fmt, ...) \ + blogic_msg(BLOGIC_NOTICE_LEVEL, adapter, fmt, ##__VA_ARGS__) -#define blogic_err(format, args...) \ - blogic_msg(BLOGIC_ERR_LEVEL, format, ##args) +#define blogic_warn(adapter, fmt, ...) \ + blogic_msg(BLOGIC_WARN_LEVEL, adapter, fmt, ##__VA_ARGS__) + +#define blogic_err(adapter, fmt, ...) \ + blogic_msg(BLOGIC_ERR_LEVEL, adapter, fmt, ##__VA_ARGS__) /* @@ -1289,7 +1293,9 @@ static int blogic_slaveconfig(struct scsi_device *); static void blogic_qcompleted_ccb(struct blogic_ccb *); static irqreturn_t blogic_inthandler(int, void *); static int blogic_resetadapter(struct blogic_adapter *, bool hard_reset); -static void blogic_msg(enum blogic_msglevel, char *, struct blogic_adapter *, ...); +__printf(3, 4) +static void blogic_msg(enum blogic_msglevel, struct blogic_adapter *adapter, + const char *fmt, ...); static int __init blogic_setup(char *); #endif /* _BUSLOGIC_H */