All of lore.kernel.org
 help / color / mirror / Atom feed
From: Larry Kessler <kessler@us.ibm.com>
To: linux-kernel mailing list <linux-kernel@vger.kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	"Andrew V. Savochkin" <saw@saw.sw.com.sg>,
	cgl_discussion mailing list <cgl_discussion@osdl.org>,
	evlog mailing list <evlog-developers@lists.sourceforge.net>,
	"ipslinux (Keith Mitchell)" <ipslinux@us.ibm.com>,
	Linus Torvalds <torvalds@home.transmeta.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	evlog mailing list <evlog-developers@lists.sourceforge.net>
Subject: [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAID device driver
Date: Mon, 23 Sep 2002 18:54:04 -0700	[thread overview]
Message-ID: <3D8FC5BC.51A8FCCF@us.ibm.com> (raw)

Please see [PATCH-RFC] README 1st note.

Also note that this patch includes pci_problem.h, as does the eepro100.c
device driver patch included in the 'README 1st' note.
 
Summary of this patch...
 
 drivers/scsi/ips.c
    Device Driver for the IBM ServeRAID controller, with use of new 
    macros replacing prink() for error conditions.
 
 include/linux/scsi_problem.h
  -  scsi_host_detail() macro providing common information of interest
     for scsi-class devices.    
  -  scsi_host_problem and scsi_host_introduce macros   

 include/linux/pci_problem.h

  -  pci_detail() macro providing common information on a per class
     basis when problems are being reported for devices of that class. 
  -  pci_problem and pci_introduce macros


--- linux-2.5.37/drivers/scsi/ips.c	Fri Sep 20 10:20:13 2002
+++ linux-2.5.37-net/drivers/scsi/ips.c	Mon Sep 23 19:54:30 2002
@@ -176,6 +176,7 @@
 #include "scsi.h"
 #include "hosts.h"
 #include "ips.h"
+#include "scsi_problem.h"
 
 #include <linux/module.h>
 
@@ -694,7 +695,7 @@
       ips_FlashData = ( char * ) __get_free_pages( GFP_KERNEL, 7 );   
       if (ips_FlashData == NULL) {
          /* The validity of this pointer is checked in ips_make_passthru() before it is used */
-         printk( KERN_WARNING "ERROR: Can't Allocate Large Buffer for Flashing\n" );
+         problem( LOG_WARNING, "ERROR: Can't Allocate Large Buffer for Flashing\n" );
       }
    }                                                                               
 
@@ -779,6 +780,9 @@
  #endif
    if (ips_num_controllers > 0) 
       register_reboot_notifier(&ips_notifier);
+   else
+     problem(LOG_INFO, "Unable to detect any ips controllers\n",
+           detail(ips_num_controllers, "%d", ips_num_controllers));
 
    return (ips_num_controllers);
 #endif
@@ -861,8 +865,11 @@
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,0)
             if (check_mem_region(mem_addr, mem_len)) {
                /* Couldn't allocate io space */
-               printk(KERN_WARNING "(%s%d) couldn't allocate IO space %x len %d.\n",
-                      ips_name, ips_next_controller, io_addr, io_len);
+               pci_problem(LOG_WARNING, dev[i], "check_mem_region failed. Couldn't allocate IO space\n",
+                           detail(ips_name, "%s", ips_name),
+                           detail(ips_number, "%d", ips_next_controller),
+                           detail(io_addr, "%x", io_addr),
+                           detail(io_len, "%d", io_len));
 
                ips_next_controller++;
 
@@ -889,8 +896,11 @@
 
             if (check_region(io_addr, io_len)) {
                /* Couldn't allocate io space */
-               printk(KERN_WARNING "(%s%d) couldn't allocate IO space %x len %d.\n",
-                      ips_name, ips_next_controller, io_addr, io_len);
+               pci_problem(LOG_WARNING, dev[i], "check_region failed. Couldn't allocate IO space\n",
+                           detail(ips_name, "%s", ips_name),
+                           detail(ips_number, "%d", ips_next_controller),
+                           detail(io_addr, "%x", io_addr),
+                           detail(io_len, "%d", io_len));
 
                ips_next_controller++;
 
@@ -902,8 +912,9 @@
 
          /* get planer status */
          if (pci_read_config_word(dev[i], 0x04, &planer)) {
-            printk(KERN_WARNING "(%s%d) can't get planer status.\n",
-                   ips_name, ips_next_controller);
+            pci_problem(LOG_WARNING, dev[i], "Can't get planer status.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ips_next_controller));
 
             ips_next_controller++;
 
@@ -926,8 +937,9 @@
 
          /* get the revision ID */
          if (pci_read_config_byte(dev[i], PCI_REVISION_ID, &revision_id)) {
-            printk(KERN_WARNING "(%s%d) can't get revision id.\n",
-                   ips_name, ips_next_controller);
+            pci_problem(LOG_WARNING, dev[i],  "Can't get revision id.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ips_next_controller));
 
             ips_next_controller++;
 
@@ -937,8 +949,9 @@
 #if LINUX_VERSION_CODE < LinuxVersionCode(2,4,0)
          /* get the subdevice id */
          if (pci_read_config_word(dev[i], PCI_SUBSYSTEM_ID, &subdevice_id)) {
-            printk(KERN_WARNING "(%s%d) can't get subdevice id.\n",
-                   ips_name, ips_next_controller);
+            pci_problem(LOG_WARNING, dev[i],  "Can't get subdevice id.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ips_next_controller));
 
             ips_next_controller++;
 
@@ -952,13 +965,17 @@
          sh = scsi_register(SHT, sizeof(ips_ha_t));
 
          if (sh == NULL) {
-            printk(KERN_WARNING "(%s%d) Unable to register controller with SCSI subsystem - skipping controller\n",
-                   ips_name, ips_next_controller);
+            pci_problem(LOG_WARNING, dev[i],  "Unable to register controller with the SCSI subsystem - skipping controller\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ips_next_controller));
 
             ips_next_controller++;
 
             continue;
          }
+         scsi_host_introduce(sh, "controller", 
+                             detail(ips_name, "%s", ips_name),
+                             detail(ips_number, "%d", ips_next_controller));
 
          ha = IPS_HA(sh);
          memset(ha, 0, sizeof(ips_ha_t));
@@ -979,8 +996,9 @@
          ha->enq = kmalloc(sizeof(IPS_ENQ), GFP_KERNEL);
 
          if (!ha->enq) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host inquiry structure - skipping contoller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host inquiry structure - skipping contoller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -996,8 +1014,9 @@
          ha->adapt = kmalloc(sizeof(IPS_ADAPTER), GFP_KERNEL);
 
          if (!ha->adapt) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host adapt structure - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host adapt structure - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1013,8 +1032,9 @@
          ha->conf = kmalloc(sizeof(IPS_CONF), GFP_KERNEL);
 
          if (!ha->conf) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host conf structure - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host conf structure - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1030,8 +1050,9 @@
          ha->nvram = kmalloc(sizeof(IPS_NVRAM_P5), GFP_KERNEL);
 
          if (!ha->nvram) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host nvram structure - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host nvram structure - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1047,8 +1068,9 @@
          ha->subsys = kmalloc(sizeof(IPS_SUBSYS), GFP_KERNEL);
 
          if (!ha->subsys) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host subsystem structure - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host subsystem structure - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1064,8 +1086,9 @@
          ha->dummy = kmalloc(sizeof(IPS_IO_CMD), GFP_KERNEL);
 
          if (!ha->dummy) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate host dummy structure - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to allocate host dummy structure - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1086,8 +1109,9 @@
          ha->ioctl_datasize = count;
 
          if (!ha->ioctl_data) {
-            printk(KERN_WARNING "(%s%d) Unable to allocate ioctl data\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh, "Unable to allocate ioctl data\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->ioctl_data = NULL;
             ha->ioctl_order = 0;
@@ -1189,8 +1213,9 @@
                /*
                 * Initialization failed
                 */
-               printk(KERN_WARNING "(%s%d) unable to initialize controller - skipping controller\n",
-                      ips_name, ips_next_controller);
+               scsi_host_problem(LOG_WARNING, sh,  "Initialization of controller failed - skipping controller\n",
+                                 detail(ips_name, "%s", ips_name),
+                                 detail(ips_number, "%d", ips_next_controller));
 
                ha->active = 0;
                ips_free(ha);
@@ -1206,8 +1231,9 @@
 
          /* install the interrupt handler */
          if (request_irq(irq, do_ipsintr, SA_SHIRQ, ips_name, ha)) {
-            printk(KERN_WARNING "(%s%d) unable to install interrupt handler - skipping controller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh,  "Unable to install interrupt handler - skipping controller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1226,8 +1252,9 @@
          ha->max_cmds = 1;
          if (!ips_allocatescbs(ha)) {
             /* couldn't allocate a temp SCB */
-            printk(KERN_WARNING "(%s%d) unable to allocate CCBs - skipping contoller\n",
-                   ips_name, ips_next_controller);
+            scsi_host_problem(LOG_WARNING, sh, "Unable to allocate CCBs - skipping contoller\n",
+                              detail(ips_name, "%s", ips_name),
+                              detail(ips_number, "%d", ips_next_controller));
 
             ha->active = 0;
             ips_free(ha);
@@ -1252,7 +1279,9 @@
    for (i = 0; i < ips_next_controller; i++) {
 
       if (ips_ha[i] == 0) {
-         printk(KERN_WARNING "(%s%d) ignoring bad controller\n", ips_name, i);
+         problem(LOG_WARNING, "Ignoring bad controller\n", 
+                           detail(ips_name, "%s", ips_name),
+                           detail(ips_index, "%d", i));
          continue;
       }
 
@@ -1293,8 +1322,8 @@
    for (i = 0; i < IPS_MAX_ADAPTERS && ips_sh[i] != sh; i++);
 
    if (i == IPS_MAX_ADAPTERS) {
-      printk(KERN_WARNING "(%s) release, invalid Scsi_Host pointer.\n",
-            ips_name);
+      problem(LOG_WARNING, "release fails, invalid Scsi_Host pointer.\n",
+                        detail(ips_name, "%s", ips_name));
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,0)
       BUG();
 #endif
@@ -1326,7 +1355,9 @@
 
    /* send command */
    if (ips_send_wait(ha, scb, ips_cmd_timeout, IPS_INTR_ON) == IPS_FAILURE)
-      printk(KERN_NOTICE "(%s%d) Incomplete Flush.\n", ips_name, ha->host_num);
+      scsi_host_problem(LOG_NOTICE, sh, "Incomplete Flush during release.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
    printk(KERN_NOTICE "(%s%d) Flushing Complete.\n", ips_name, ha->host_num);
 
@@ -1402,7 +1433,9 @@
 
       /* send command */
       if (ips_send_wait(ha, scb, ips_cmd_timeout, IPS_INTR_ON) == IPS_FAILURE)
-         printk(KERN_NOTICE "(%s%d) Incomplete Flush.\n", ips_name, ha->host_num);
+        problem(LOG_NOTICE, "Incomplete Flush during halt.\n",
+                          detail(ips_name, "%s", ips_name),
+                          detail(ips_number, "%d", ha->host_num));
       else
          printk(KERN_NOTICE "(%s%d) Flushing Complete.\n", ips_name, ha->host_num);
    }
@@ -1589,16 +1622,17 @@
     * command must have already been sent
     * reset the controller
     */
-   printk(KERN_NOTICE "(%s%d) Resetting controller.\n",
-          ips_name, ha->host_num);
+   scsi_host_problem(LOG_NOTICE, SC->host, "Resetting controller.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
    ret = (*ha->func.reset)(ha);
 
    if (!ret) {
       Scsi_Cmnd *scsi_cmd;
 
-      printk(KERN_NOTICE
-             "(%s%d) Controller reset failed - controller now offline.\n",
-             ips_name, ha->host_num);
+      scsi_host_problem(LOG_NOTICE, SC->host, "Controller reset has failed - controller now offline.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       /* Now fail all of the active commands */
       DEBUG_VAR(1, "(%s%d) Failing active commands",
@@ -1628,9 +1662,10 @@
    if (!ips_clear_adapter(ha, IPS_INTR_IORL)) {
       Scsi_Cmnd *scsi_cmd;
 
-      printk(KERN_NOTICE
-             "(%s%d) Controller reset failed - controller now offline.\n",
-             ips_name, ha->host_num);
+      scsi_host_problem(LOG_NOTICE, SC->host,
+             "Controller reset failed - controller now offline.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       /* Now fail all of the active commands */
       DEBUG_VAR(1, "(%s%d) Failing active commands",
@@ -2106,9 +2141,9 @@
          break;
 
       if (cstatus.fields.command_id > (IPS_MAX_CMDS - 1)) {
-         printk(KERN_WARNING "(%s%d) Spurious interrupt; no ccb.\n",
-                ips_name, ha->host_num);
-
+         problem(LOG_WARNING,  "Spurious interrupt; no ccb.\n",
+                           detail(ips_name, "%s", ips_name),
+                           detail(ips_number, "%d", ha->host_num));
          continue;
       }
 
@@ -2434,7 +2469,7 @@
       if(pt->CoppCP.cmd.flashfw.count + ha->flash_datasize >
         (PAGE_SIZE << ha->flash_order)){
          ips_free_flash_copperhead(ha);
-         printk(KERN_WARNING "failed size sanity check\n");
+         scsi_host_problem(LOG_WARNING, scb->scsi_cmd->host,  "failed size sanity check\n");
          return IPS_FAILURE;
       }
    }
@@ -3120,15 +3155,17 @@
    ips_ffdc_reset(ha, IPS_INTR_IORL);
 
    if (!ips_read_config(ha, IPS_INTR_IORL)) {
-      printk(KERN_WARNING "(%s%d) unable to read config from controller.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Unable to read config from controller.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    } /* end if */
 
    if (!ips_read_adapter_status(ha, IPS_INTR_IORL)) {
-      printk(KERN_WARNING "(%s%d) unable to read controller status.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Unable to read controller status.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -3137,16 +3174,18 @@
    ips_identify_controller(ha);
 
    if (!ips_read_subsystem_parameters(ha, IPS_INTR_IORL)) {
-      printk(KERN_WARNING "(%s%d) unable to read subsystem parameters.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Unable to read subsystem parameters.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
 
    /* write nvram user page 5 */
    if (!ips_write_driver_status(ha, IPS_INTR_IORL)) {
-      printk(KERN_WARNING "(%s%d) unable to write driver info to controller.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Unable to write driver info to controller.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -4028,16 +4067,18 @@
    METHOD_TRACE("ipsintr_done", 2);
 
    if (!scb) {
-      printk(KERN_WARNING "(%s%d) Spurious interrupt; scb NULL.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Spurious interrupt; scb NULL.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return ;
    }
 
    if (scb->scsi_cmd == NULL) {
       /* unexpected interrupt */
-      printk(KERN_WARNING "(%s%d) Spurious interrupt; scsi_cmd not set.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Spurious interrupt; scsi_cmd not set.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return;
    }
@@ -5459,8 +5500,11 @@
    }
 
    if (PostByte[0] < IPS_GOOD_POST_STATUS) {
-      printk(KERN_WARNING "(%s%d) reset controller fails (post status %x %x).\n",
-             ips_name, ha->host_num, PostByte[0], PostByte[1]);
+      problem(LOG_WARNING, "Reset copperhead controller fails\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num),
+                        detail(status1, "%x", PostByte[0]),
+                        detail(status2, "%x", PostByte[1]));
 
       return (0);
    }
@@ -5551,8 +5595,11 @@
    }
 
    if (PostByte[0] < IPS_GOOD_POST_STATUS) {
-      printk(KERN_WARNING "(%s%d) reset controller fails (post status %x %x).\n",
-             ips_name, ha->host_num, PostByte[0], PostByte[1]);
+      problem(LOG_WARNING, "Reset copperhead_mmio controller fails\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num),
+                        detail(status1, "%x", PostByte[0]),
+                        detail(status2, "%x", PostByte[1]));
 
       return (0);
    }
@@ -5638,8 +5685,9 @@
 
    if (i >= 45) {
       /* error occurred */
-      printk(KERN_WARNING "(%s%d) timeout waiting for post.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Timeout waiting for post.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -5651,8 +5699,10 @@
    writel(Isr, ha->mem_ptr + IPS_REG_I2O_HIR);
 
    if (Post < (IPS_GOOD_POST_STATUS << 8)) {
-      printk(KERN_WARNING "(%s%d) reset controller fails (post status %x).\n",
-             ips_name, ha->host_num, Post);
+      problem(LOG_WARNING, "Reset morpheus controller fails.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num),
+                        detail(post, "%x", Post));
 
       return (0);
    }
@@ -5670,8 +5720,9 @@
 
    if (i >= 240) {
       /* error occurred */
-      printk(KERN_WARNING "(%s%d) timeout waiting for config.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "timeout waiting for config.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -6012,10 +6063,13 @@
          if (!(val & IPS_BIT_START_STOP))
             break;
 
-         printk(KERN_WARNING "(%s%d) ips_issue val [0x%x].\n",
-                ips_name, ha->host_num, val);
-         printk(KERN_WARNING "(%s%d) ips_issue semaphore chk timeout.\n",
-                ips_name, ha->host_num);
+         problem(LOG_WARNING, "copperhead ips_issue val\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num),
+                        detail(val, "%x", val));
+         problem(LOG_WARNING, "copperhead ips_issue semaphore chk timeout.\n",
+                        detail(ips_name, "%s", ips_name),
+                           detail(ips_number, "%d", ha->host_num));
 
          IPS_HA_UNLOCK(cpu_flags);
 
@@ -6075,11 +6129,14 @@
          if (!(val & IPS_BIT_START_STOP))
             break;
 
-         printk(KERN_WARNING "(%s%d) ips_issue val [0x%x].\n",
-                ips_name, ha->host_num, val);
-         printk(KERN_WARNING "(%s%d) ips_issue semaphore chk timeout.\n",
-                ips_name, ha->host_num);
-
+         problem(LOG_WARNING, "copperhead_mmio ips_issue val\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num),
+                        detail(val, "%x", val));
+         problem(LOG_WARNING, "copperhead_mmio ips_issue semaphore chk timeout.\n",
+                        detail(ips_name, "%s", ips_name),
+                           detail(ips_number, "%d", ha->host_num));
+         
          IPS_HA_UNLOCK(cpu_flags);
 
          return (IPS_FAILURE);
@@ -6337,8 +6394,9 @@
    METHOD_TRACE("ips_write_driver_status", 1);
 
    if (!ips_readwrite_page5(ha, FALSE, intr)) {
-      printk(KERN_WARNING "(%s%d) unable to read NVRAM page 5.\n",
-             ips_name, ha->host_num);
+      problem(LOG_WARNING, "Unable to read NVRAM page 5.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -6374,8 +6432,9 @@
 
    /* now update the page */
    if (!ips_readwrite_page5(ha, TRUE, intr)) {
-      printk(KERN_WARNING "(%s%d) unable to write NVRAM page 5.\n",
-             ips_name, ha->host_num);
+     problem(LOG_WARNING, "Unable to update NVRAM page 5.\n",
+                        detail(ips_name, "%s", ips_name),
+                        detail(ips_number, "%d", ha->host_num));
 
       return (0);
    }
@@ -7321,16 +7380,22 @@
  if  (strncmp(FirmwareVersion, Compatable[ ha->nvram->adapter_type ], IPS_COMPAT_ID_LENGTH) != 0)
  {
      if (ips_cd_boot == 0)                                                                              
-       printk(KERN_WARNING "Warning: Adapter %d Firmware Compatible Version is %s, but should be %s\n", 
-              ha->host_num, FirmwareVersion, Compatable[ ha->nvram->adapter_type ]);                    
+       problem(LOG_WARNING, "Warning: Firmware Version mismatch\n", 
+                         detail(ips_name, "%s", ips_name),
+                         detail(ips_number, "%d", ha->host_num),
+                         detail(firmwareversion, "%s", FirmwareVersion),
+                         detail(compatableversion, "%s", Compatable[ ha->nvram->adapter_type ]));
      MatchError = 1;
  }
 
  if  (strncmp(BiosVersion, IPS_COMPAT_BIOS, IPS_COMPAT_ID_LENGTH) != 0)
  {
      if (ips_cd_boot == 0)                                                                          
-       printk(KERN_WARNING "Warning: Adapter %d BIOS Compatible Version is %s, but should be %s\n", 
-              ha->host_num, BiosVersion, IPS_COMPAT_BIOS);                                          
+       problem(LOG_WARNING, "Warning: BIOS Version mismatch\n", 
+                         detail(ips_name, "%s", ips_name),
+                         detail(ips_number, "%d", ha->host_num),
+                         detail(biosversion, "%s", BiosVersion),
+                         detail(compatableversion, "%s", IPS_COMPAT_BIOS));
      MatchError = 1;
  }
 
@@ -7340,7 +7405,7 @@
  {
      ha->nvram->version_mismatch = 1;
      if (ips_cd_boot == 0)                                               
-       printk(KERN_WARNING "Warning ! ! ! ServeRAID Version Mismatch\n");
+       problem(LOG_WARNING, "Warning ! ! ! ServeRAID Version Mismatch\n");
  }
  else
  {
@@ -7524,7 +7589,9 @@
        uint32_t offs;
 
        if (check_mem_region(mem_addr, mem_len)) {
-          printk(KERN_WARNING "Couldn't allocate IO Memory space %x len %d.\n", mem_addr, mem_len);
+          pci_problem(LOG_WARNING, pci_dev,  "Couldn't allocate IO Memory space\n", 
+                      detail(mem_addr, "%x", mem_addr),
+                      detail(mem_len, "%d", mem_len));
           return -1;
           }
 
@@ -7541,7 +7608,9 @@
     /* setup I/O mapped area (if applicable) */
     if (io_addr) {
        if (check_region(io_addr, io_len)) {
-          printk(KERN_WARNING "Couldn't allocate IO space %x len %d.\n", io_addr, io_len);
+          pci_problem(LOG_WARNING, pci_dev,  "Couldn't allocate IO space\n", 
+                      detail(mem_addr, "%x", mem_addr),
+                      detail(mem_len, "%d", mem_len));
           return -1;
        }
        request_region(io_addr, io_len, "ips");
@@ -7549,7 +7618,7 @@
 
     /* get the revision ID */
     if (pci_read_config_byte(pci_dev, PCI_REVISION_ID, &revision_id)) {
-       printk(KERN_WARNING "Can't get revision id.\n" );
+       pci_problem(LOG_WARNING, pci_dev, "Can't get the revision id.\n" );
        return -1;
     }
 
@@ -7562,10 +7631,12 @@
     scsi_set_pci_device(sh, pci_dev);
 #endif
     if (sh == NULL) {
-       printk(KERN_WARNING "Unable to register controller with SCSI subsystem\n" );
+      pci_problem(LOG_WARNING, pci_dev, "Unable to register controller with SCSI subsystem. Failing init.\n",
+                        detail(name, "%s", driver_template.name));
        return -1;
     }
 
+    scsi_host_introduce(sh, "adapter");
     ha = IPS_HA(sh);
     memset(ha, 0, sizeof(ips_ha_t));
     
@@ -7584,7 +7655,7 @@
     ha->enq = kmalloc(sizeof(IPS_ENQ), GFP_KERNEL);
 
     if (!ha->enq) {
-       printk(KERN_WARNING "Unable to allocate host inquiry structure\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate host inquiry structure\n" );
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7596,7 +7667,7 @@
     ha->adapt = pci_alloc_consistent(ha->pcidev, sizeof(IPS_ADAPTER) +
                                      sizeof(IPS_IO_CMD), &dma_address);
     if (!ha->adapt) {
-       printk(KERN_WARNING "Unable to allocate host adapt & dummy structures\n");
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate host adapt & dummy structures\n");
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7610,7 +7681,7 @@
     ha->conf = kmalloc(sizeof(IPS_CONF), GFP_KERNEL);
 
     if (!ha->conf) {
-       printk(KERN_WARNING "Unable to allocate host conf structure\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate host conf structure\n" );
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7622,7 +7693,7 @@
     ha->nvram = kmalloc(sizeof(IPS_NVRAM_P5), GFP_KERNEL);
 
     if (!ha->nvram) {
-       printk(KERN_WARNING "Unable to allocate host NVRAM structure\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate host NVRAM structure\n" );
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7634,7 +7705,7 @@
     ha->subsys = kmalloc(sizeof(IPS_SUBSYS), GFP_KERNEL);
 
     if (!ha->subsys) {
-       printk(KERN_WARNING "Unable to allocate host subsystem structure\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate host subsystem structure\n" );
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7651,7 +7722,7 @@
     ha->ioctl_datasize = count;
 
     if (!ha->ioctl_data) {
-       printk(KERN_WARNING "Unable to allocate IOCTL data\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate IOCTL data. Disabling ioctls.\n" );
        ha->ioctl_data = NULL;
        ha->ioctl_order = 0;
        ha->ioctl_datasize = 0;
@@ -7748,7 +7819,7 @@
           /*
            * Initialization failed
            */
-          printk(KERN_WARNING "Unable to initialize controller\n" );
+          scsi_host_problem(LOG_WARNING, sh, "Unable to initialize controller. Initialization failed.\n" );
           ha->active = 0;
           ips_free(ha);
           scsi_unregister(sh);
@@ -7760,7 +7831,7 @@
 
     /* Install the interrupt handler */
      if (request_irq(irq, do_ipsintr, SA_SHIRQ, ips_name, ha)) {
-       printk(KERN_WARNING "Unable to install interrupt handler\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to install interrupt handler\n" );
        ha->active = 0;
        ips_free(ha);
        scsi_unregister(sh);
@@ -7774,7 +7845,7 @@
      */
     ha->max_cmds = 1;
     if (!ips_allocatescbs(ha)) {
-       printk(KERN_WARNING "Unable to allocate a CCB\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate a CCB\n" );
        ha->active = 0;
        free_irq(ha->irq, ha);
        ips_free(ha);
@@ -7816,7 +7887,7 @@
     }
 
     if (!ips_hainit(ha)) {
-       printk(KERN_WARNING "Unable to initialize controller\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to initialize controller\n" );
        ha->active = 0;
        ips_free(ha);
        free_irq(ha->irq, ha);
@@ -7830,7 +7901,7 @@
 
     /* allocate CCBs */
     if (!ips_allocatescbs(ha)) {
-       printk(KERN_WARNING "Unable to allocate CCBs\n" );
+       scsi_host_problem(LOG_WARNING, sh, "Unable to allocate CCBs\n" );
        ha->active = 0;
        ips_free(ha);
        free_irq(ha->irq, ha);
--- linux-2.5.37/drivers/scsi/scsi_problem.h	Wed Dec 31 18:00:00 1969
+++ linux-2.5.37-net/drivers/scsi/scsi_problem.h	Mon Sep 23 19:56:37 2002
@@ -0,0 +1,64 @@
+/*
+ * Linux Event Logging for the Enterprise
+ * Copyright (c) International Business Machines Corp., 2002
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *  Please send e-mail to lkessler@users.sourceforge.net if you have
+ *  questions or comments.
+ *
+ *  Project Website:  http://evlog.sourceforge.net/
+ *
+ */
+
+#ifndef _SCSI_PROBLEM_H
+#define _SCSI_PROBLEM_H
+
+#include "scsi.h"
+#include "hosts.h"
+#include <linux/pci_problem.h>
+#include <linux/problem.h>
+
+
+#define scsi_host_detail(dev) \
+	detail(scsi_hostno, "%d", (dev)->host_no), \
+        detail(name, "%s", (dev)->hostt->name)
+
+/* This macro could conditionally provide detail() based on
+ * the value of dev, but one problem() per line restriction 
+ * has to be resolved first (just do a printk
+ * to warn the developer if they have used this macro without 
+ * valid args) */
+/* DD writers should use for pci based scsi adapter drivers */
+#define scsi_host_problem(sev, dev, string,...) \
+do { \
+   if (dev)  \
+     problem(sev, string, scsi_host_detail((struct Scsi_Host*)dev), ## __VA_ARGS__); \
+   else  { \
+     if (!dev) \
+       printk("scsi_problem. Invalid usage struct Scsi_Host * is NULL\n"); \
+   } \
+} while (0)
+
+
+/* Since this ultimately resolves to the problem() macro where the
+ * string provided must be unique, a string comment argument is added
+ * to allow multiple introduces to occur from within the same file
+ */
+#define scsi_host_introduce(dev, comment, ...) \
+   introduce(__stringify(KBUILD_MODNAME) " introduces Scsi Adapter: " comment, dev, ## __VA_ARGS__, scsi_host_detail(dev))
+
+#endif	/* _SCSI_PROBLEM_H */
--- linux-2.5.37/drivers/include/linux/pci_problem.h	Wed Dec 31 18:00:00 1969
+++ linux-2.5.37-net/include/linux/pci_problem.h	Mon Sep 23 19:56:11 2002
@@ -0,0 +1,52 @@
+/*
+ * Linux Event Logging for the Enterprise
+ * Copyright (c) International Business Machines Corp., 2002
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *  Please send e-mail to lkessler@users.sourceforge.net if you have
+ *  questions or comments.
+ *
+ *  Project Website:  http://evlog.sourceforge.net/
+ *
+ */
+
+#ifndef _PCI_PROBLEM_H
+#define _PCI_PROBLEM_H
+
+#include <linux/problem.h>
+
+#define pci_detail(pdev) \
+	detail(pci_name, "%s", (pdev)->name), \
+	detail(pci_slot, "%s", (pdev)->slot_name), \
+	detail(pci_vendorid, "%x", (pdev)->vendor), \
+	detail(pci_deviceid, "%x", (pdev)->device), \
+	detail(pci_dev_addr, "%p", (pdev))
+
+#define pci_problem(sev, pdev, string,...) \
+do { \
+  if (pdev)  \
+    problem(sev, string, pci_detail((struct pci_dev *)pdev), ## __VA_ARGS__); \
+  else       \
+    printk("pci_problem. Invalid usage struct pci_dev * is NULL\n"); \
+} while (0)
+
+static inline void pci_introduce(struct pci_dev *pdev) {
+	introduce(__stringify(KBUILD_MODNAME) "introduces pci device: ", pdev, pci_detail(pdev));
+}
+
+
+#endif	/* _PCI_PROBLEM_H */

             reply	other threads:[~2002-09-24  1:52 UTC|newest]

Thread overview: 206+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-24  1:54 Larry Kessler [this message]
2002-09-24  2:22 ` [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAID device driver Jeff Garzik
2002-09-26 15:52   ` Alan Cox
2002-09-26 22:55     ` [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAIDdevice driver Larry Kessler
2002-09-26 22:58       ` Jeff Garzik
2002-09-26 23:07         ` Linus Torvalds
2002-09-27  2:27           ` Jeff Garzik
2002-09-27  4:45             ` Linus Torvalds
2002-09-28  7:46               ` Ingo Molnar
2002-09-28  9:16                 ` jw schultz
2002-09-30 14:05                   ` Denis Vlasenko
2002-09-30 10:22                     ` Tomas Szepe
2002-09-30 11:10                       ` jw schultz
2002-09-30 11:17                       ` Adrian Bunk
2002-09-30 19:48                       ` Rik van Riel
2002-09-30 20:30                         ` Christoph Hellwig
2002-09-28 15:40                 ` Kernel version [Was: Re: [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAIDdevice driver] Horst von Brand
2002-09-29  1:31                 ` v2.6 vs v3.0 Linus Torvalds
2002-09-29  6:14                   ` james
2002-09-29  6:55                     ` Andre Hedrick
2002-09-29 12:59                     ` Gerhard Mack
2002-09-29 13:46                       ` Dr. David Alan Gilbert
2002-09-29 14:06                         ` Wakko Warner
2002-09-29 15:42                         ` Jens Axboe
2002-09-29 16:21                           ` Alan Cox
2002-09-29 16:17                             ` Jens Axboe
2002-09-30  0:39                             ` Jeff Chua
2002-09-29 16:22                           ` Dave Jones
2002-09-29 16:26                             ` Jens Axboe
2002-09-29 21:46                             ` Matthias Andree
2002-09-30  7:05                               ` Michael Clark
2002-09-30  7:22                                 ` Andrew Morton
2002-09-30 13:08                                   ` Kevin Corry
2002-09-30 13:05                                 ` Kevin Corry
2002-09-30 13:49                                   ` Michael Clark
2002-09-30 14:26                                     ` Kevin Corry
2002-09-30 13:59                                   ` Michael Clark
2002-09-30 15:50                                     ` Kevin Corry
2002-09-29 17:06                       ` Jochen Friedrich
2002-09-29 15:18                     ` Trever L. Adams
2002-09-29 15:45                       ` Jens Axboe
2002-09-29 15:59                         ` Trever L. Adams
2002-09-29 16:06                           ` Jens Axboe
2002-09-29 16:13                             ` Trever L. Adams
2002-09-30  6:54                               ` Kai Henningsen
2002-09-30 18:40                                 ` Bill Davidsen
2002-10-01 12:38                                   ` Matthias Andree
2002-10-04 19:58                                     ` Bill Davidsen
2002-09-29 17:42                     ` Linus Torvalds
2002-09-29 17:54                       ` Rik van Riel
2002-09-29 18:24                       ` Alan Cox
2002-09-30  7:56                         ` Jens Axboe
2002-09-30  9:53                           ` Andre Hedrick
2002-09-30 11:54                             ` Jens Axboe
2002-09-30 12:58                           ` Alan Cox
2002-09-30 13:05                             ` Jens Axboe
2002-10-01  2:17                               ` Andre Hedrick
2002-09-30 16:39                       ` jbradford
2002-09-30 16:47                     ` Pau Aliagas
2002-09-29  7:16                   ` jbradford
2002-09-29  8:08                     ` Jeff Garzik
2002-09-29  8:17                     ` David S. Miller
2002-09-29  9:12                     ` Jens Axboe
2002-09-29 11:19                       ` Murray J. Root
2002-09-29 15:50                         ` Jens Axboe
2002-09-30  7:01                           ` Kai Henningsen
2002-09-29 16:04                         ` Zwane Mwaikambo
2002-09-29 14:56                       ` Alan Cox
2002-09-29 15:38                         ` Jens Axboe
2002-09-29 16:30                           ` Dave Jones
2002-09-29 16:42                           ` Bjoern A. Zeeb
2002-09-29 21:16                           ` Russell King
2002-09-29 21:32                             ` Alan Cox
2002-09-29 21:49                             ` steve
2002-09-29 21:52                           ` Matthias Andree
2002-09-30  7:31                             ` Tomas Szepe
2002-09-30 15:33                           ` Jan Harkes
2002-09-30 18:13                           ` Jeff Willis
2002-09-29 17:48                         ` Linus Torvalds
2002-09-29 18:13                           ` Jaroslav Kysela
2002-09-30 19:32                       ` Bill Davidsen
2002-10-01  6:26                         ` Jens Axboe
2002-10-01  7:54                           ` Mikael Pettersson
2002-10-01  8:27                             ` Jens Axboe
2002-10-01  8:44                               ` jbradford
2002-10-01 11:31                             ` Alan Cox
2002-10-01 11:25                               ` Jens Axboe
2002-09-29 15:34                     ` Andi Kleen
2002-09-29 17:26                       ` Jochen Friedrich
2002-09-29 17:35                         ` Jeff Garzik
2002-09-30  0:00                         ` Andi Kleen
2002-10-01 19:28                         ` IPv6 stability (success story ;) Petr Baudis
2002-09-29  9:15                   ` v2.6 vs v3.0 Jens Axboe
2002-09-29 19:53                     ` james
2002-09-29 15:26                   ` Matthias Andree
2002-09-29 16:24                     ` Alan Cox
2002-09-29 22:00                       ` Matthias Andree
2002-09-30 19:02                       ` Bill Davidsen
2002-09-30 18:37                   ` Bill Davidsen
2002-10-03 15:51               ` [OT] 2.6 not 3.0 - (WAS Re: [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAIDdevice) jbradford
2002-10-03 15:57                 ` Linus Torvalds
2002-10-03 16:16                   ` [OT] 2.6 not 3.0 - (WAS Re: [PATCH-RFC] 4 of 4 - New problem jbradford
2002-10-03 22:30                     ` Greg KH
2002-10-04  6:33                       ` jbradford
2002-10-04  6:37                         ` Greg KH
2002-10-04  7:17                           ` jbradford
2002-10-04  7:30                             ` Greg KH
2002-10-03 16:37                   ` [OT] 2.6 not 3.0 - (WAS Re: [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAIDdevice) Alan Cox
2002-10-03 16:56                     ` Linus Torvalds
2002-10-03 17:40                       ` Alan Cox
2002-10-03 19:55                       ` jlnance
2002-10-03 16:51                   ` Dave Jones
2002-10-03 17:04                     ` Alan Cox
2002-10-03 20:43                     ` Andrew Morton
2002-10-03 22:05                       ` Dave Jones
2002-10-04  3:46                         ` Andreas Boman
2002-10-04  7:44                         ` jbradford
2002-10-03 19:51                   ` Rik van Riel
2002-10-04 22:26                   ` [OT] 2.6 not 3.0 - (NUMA) Martin J. Bligh
2002-10-04 23:13                     ` Linus Torvalds
2002-10-05  0:21                       ` Martin J. Bligh
2002-10-05  0:36                         ` Linus Torvalds
2002-10-05  1:25                           ` Michael Hohnbaum
2002-10-05 20:30                       ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 - (NUMA)) Rob Landley
2002-10-06  2:15                         ` Andrew Morton
2002-10-06  9:42                           ` Russell King
2002-10-06 17:06                             ` Alan Cox
2002-10-06 13:44                           ` Oliver Neukum
2002-10-06 15:19                             ` Martin J. Bligh
2002-10-06 15:14                               ` Oliver Neukum
2002-10-07  8:08                               ` Helge Hafting
2002-10-07  9:18                                 ` Oliver Neukum
2002-10-07 14:11                                   ` Jan Hudec
2002-10-07 15:01                                     ` Jesse Pollard
2002-10-07 15:34                                       ` Jan Hudec
2002-10-08  3:12                                         ` [OT] " Scott Mcdermott
2002-10-10 23:49                                           ` Mike Fedyk
2002-10-07 15:15                                   ` Martin J. Bligh
2002-10-08 13:49                                   ` Helge Hafting
2002-10-07 17:43                               ` Daniel Phillips
2002-10-07 18:31                                 ` Andrew Morton
2002-10-07 18:51                                   ` Linus Torvalds
2002-10-07 20:14                                     ` Alan Cox
2002-10-07 20:31                                       ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not3.0 " Andrew Morton
2002-10-07 20:46                                         ` Linus Torvalds
2002-10-07 20:44                                       ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 " Linus Torvalds
2002-10-07 21:16                                         ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not3.0 " Andrew Morton
2002-10-07 23:47                                           ` jw schultz
2002-10-11  0:02                                           ` Mike Fedyk
2002-10-07 18:58                                   ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 " Chris Friesen
2002-10-07 19:21                                     ` Daniel Phillips
2002-10-07 19:35                                       ` Linus Torvalds
2002-10-08  0:39                                         ` Theodore Ts'o
2002-10-08  2:59                                           ` Andrew Morton
2002-10-08 16:15                                             ` Theodore Ts'o
2002-10-08 19:39                                               ` Andrew Morton
2002-10-08 17:06                                                 ` Rob Landley
2002-10-07 19:36                                     ` Andrew Morton
2002-10-08  2:36                                       ` Simon Kirby
2002-10-08  2:47                                         ` Daniel Phillips
2002-10-08  2:50                                         ` Andrew Morton
2002-10-08  2:54                                           ` Simon Kirby
2002-10-08  3:00                                             ` Andrew Morton
2002-10-08 16:17                                               ` Theodore Ts'o
2002-10-08 12:49                                           ` jlnance
2002-10-08 17:09                                             ` Andrew Morton
2002-10-10 20:53                                               ` Thomas Zimmerman
2002-10-08 13:54                                       ` Helge Hafting
2002-10-08 15:31                                         ` Andreas Dilger
2002-10-07 19:05                                   ` Daniel Phillips
2002-10-07 19:24                                     ` Linus Torvalds
2002-10-07 20:02                                       ` Daniel Phillips
2002-10-07 20:14                                         ` Andrew Morton
2002-10-07 20:22                                           ` Daniel Phillips
2002-10-07 20:28                                         ` Linus Torvalds
2002-10-07 21:16                                           ` Daniel Phillips
2002-10-07 21:55                                             ` Linus Torvalds
2002-10-07 22:02                                               ` Daniel Phillips
2002-10-07 22:12                                                 ` Andrew Morton
2002-10-08  8:49                                                   ` Padraig Brady
2002-10-07 22:14                                             ` Charles Cazabon
2002-10-30 18:26                                   ` Lee Leahu
2002-10-06  6:33                         ` Martin J. Bligh
2002-10-07  5:28                         ` John Alvord
2002-10-07  8:39                         ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 n Giuliano Pochini
2002-10-07 13:56                         ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 - (NUMA)) Jesse Pollard
2002-10-07 14:03                           ` Rob Landley
2002-10-08 22:14                             ` Jesse Pollard
2002-10-08 19:11                               ` Rob Landley
2002-10-09  8:17                             ` Alexander Kellett
2002-10-07 18:22                           ` Daniel Phillips
2002-10-08  8:19                             ` Jan Hudec
2002-10-11 23:53                         ` Hans Reiser
2002-10-11 20:26                           ` Rob Landley
2002-10-12  4:14                             ` Nick LeRoy
2002-10-13 17:27                               ` Rob Landley
2002-10-12 10:03                             ` Hans Reiser
2002-10-13 17:32                               ` Rob Landley
2002-10-13 23:51                                 ` Hans Reiser
2002-10-14 16:33                                   ` Rob Landley
2002-10-14  7:10                                 ` Nikita Danilov
2002-10-21 15:36                                   ` [OT] Please don't call it 3.0!! (was Re: The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 - (NUMA))) Calin A. Culianu
2002-10-21 16:20                                     ` Wakko Warner
2002-10-12 11:42                             ` The reason to call it 3.0 is the desktop (was Re: [OT] 2.6 not 3.0 - (NUMA)) Matthias Andree
2002-10-12 14:56                               ` Hugh Dickins
2002-09-27 11:32       ` [PATCH-RFC] 4 of 4 - New problem logging macros, SCSI RAIDdevice driver Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D8FC5BC.51A8FCCF@us.ibm.com \
    --to=kessler@us.ibm.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cgl_discussion@osdl.org \
    --cc=evlog-developers@lists.sourceforge.net \
    --cc=ipslinux@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=saw@saw.sw.com.sg \
    --cc=torvalds@home.transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.