Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 9 May 2007 03:32:16 +0000 (20:32 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 9 May 2007 03:32:16 +0000 (20:32 -0700)
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (58 commits)
  [SCSI] zfcp: clear boxed flag on unit reopen.
  [SCSI] zfcp: clear adapter failed flag if an fsf request times out.
  [SCSI] zfcp: rework request ID management.
  [SCSI] zfcp: Fix deadlock between zfcp ERP and SCSI
  [SCSI] zfcp: Locking for req_no and req_seq_no
  [SCSI] zfcp: print S_ID and D_ID with 3 bytes
  [SCSI] ipr: Use PCI-E reset API for new ipr adapter
  [SCSI] qla2xxx: Update version number to 8.01.07-k7.
  [SCSI] qla2xxx: Add MSI support.
  [SCSI] qla2xxx: Correct pci_set_msi() usage semantics.
  [SCSI] qla2xxx: Attempt to stop firmware only if it had been previously executed.
  [SCSI] qla2xxx: Honor NVRAM port-down-retry-count settings.
  [SCSI] qla2xxx: Error-out during probe() if we're unable to complete HBA initialization.
  [SCSI] zfcp: Stop system after memory corruption
  [SCSI] mesh: cleanup variable usage in interrupt handler
  [SCSI] megaraid: replace yield() with cond_resched()
  [SCSI] megaraid: fix warnings when CONFIG_PROC_FS=n
  [SCSI] aacraid: correct SUN products to README
  [SCSI] aacraid: superfluous adapter reset for IBM 8 series ServeRAID controllers
  [SCSI] aacraid: kexec fix (reset interrupt handler)
  ...

1  2 
Documentation/feature-removal-schedule.txt
drivers/scsi/dpt_i2o.c
drivers/scsi/mesh.c

index 2291ff620d93e2e220823dd3da8094b60ef709fa,94fd03f25235a796be8afa47231512a7dbcf393f..676b7981adb771d5185c5bedd4c286ebc81d66f3
@@@ -6,14 -6,6 +6,14 @@@ be removed from this file
  
  ---------------------------
  
 +What: MXSER
 +When: December 2007
 +Why:  Old mxser driver is obsoleted by the mxser_new. Give it some time yet
 +      and remove it.
 +Who:  Jiri Slaby <jirislaby@gmail.com>
 +
 +---------------------------
 +
  What: V4L2 VIDIOC_G_MPEGCOMP and VIDIOC_S_MPEGCOMP
  When: October 2007
  Why:  Broken attempt to set MPEG compression parameters. These ioctls are
@@@ -59,6 -51,15 +59,15 @@@ Who:        Dan Dennedy <dan@dennedy.org>, Ste
  
  ---------------------------
  
+ What: old NCR53C9x driver
+ When: October 2007
+ Why:  Replaced by the much better esp_scsi driver.  Actual low-level
+       driver can ported over almost trivially.
+ Who:  David Miller <davem@davemloft.net>
+       Christoph Hellwig <hch@lst.de>
+ ---------------------------
  What: Video4Linux API 1 ioctls and video_decoder.h from Video devices.
  When: December 2006
  Why:  V4L1 AP1 was replaced by V4L2 API. during migration from 2.4 to 2.6
@@@ -125,6 -126,18 +134,6 @@@ Who:   Adrian Bunk <bunk@stusta.de
  
  ---------------------------
  
 -What: Usage of invalid timevals in setitimer
 -When: March 2007
 -Why:  POSIX requires to validate timevals in the setitimer call. This
 -      was never done by Linux. The invalid (e.g. negative timevals) were
 -      silently converted to more or less random timeouts and intervals.
 -      Until the removal a per boot limited number of warnings is printed
 -      and the timevals are sanitized.
 -
 -Who:  Thomas Gleixner <tglx@linutronix.de>
 -
 ----------------------------
 -
  What: Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
        (temporary transition config option provided until then)
        The transition config option will also be removed at the same time.
@@@ -152,7 -165,7 +161,7 @@@ Who:       Greg Kroah-Hartman <gregkh@suse.de
  ---------------------------
  
  What: Interrupt only SA_* flags
 -When: Januar 2007
 +When: September 2007
  Why:  The interrupt related SA_* flags are replaced by IRQF_* to move them
        out of the signal namespace.
  
@@@ -319,11 -332,3 +328,11 @@@ Why:     Obsolete. The new i2c-gpio driver 
  Who:  Jean Delvare <khali@linux-fr.org>
  
  ---------------------------
 +
 +What:  drivers depending on OSS_OBSOLETE
 +When:  options in 2.6.23, code in 2.6.25
 +Why:   obsolete OSS drivers
 +Who:   Adrian Bunk <bunk@stusta.de>
 +
 +---------------------------
 +
diff --combined drivers/scsi/dpt_i2o.c
index fb6433a56989f5b98d5fccfc9978d9ba51d23ec3,6c384ab2884a537ef2a472ffabec8eecbb7c4e22..8c7d2bbf9b1a848b90b19a2edd1663e0164c0a2b
@@@ -55,6 -55,7 +55,6 @@@ MODULE_DESCRIPTION("Adaptec I2O RAID Dr
  #include <linux/sched.h>
  #include <linux/reboot.h>
  #include <linux/spinlock.h>
 -#include <linux/smp_lock.h>
  #include <linux/dma-mapping.h>
  
  #include <linux/timer.h>
@@@ -1308,13 -1309,12 +1308,12 @@@ static s32 adpt_i2o_reset_hba(adpt_hba
                schedule_timeout_uninterruptible(1);
        } while (m == EMPTY_QUEUE);
  
-       status = kmalloc(4, GFP_KERNEL|ADDR32);
+       status = kzalloc(4, GFP_KERNEL|ADDR32);
        if(status == NULL) {
                adpt_send_nop(pHba, m);
                printk(KERN_ERR"IOP reset failed - no free memory.\n");
                return -ENOMEM;
        }
-       memset(status,0,4);
  
        msg[0]=EIGHT_WORD_MSG_SIZE|SGL_OFFSET_0;
        msg[1]=I2O_CMD_ADAPTER_RESET<<24|HOST_TID<<12|ADAPTER_TID;
@@@ -1504,21 -1504,19 +1503,19 @@@ static int adpt_i2o_parse_lct(adpt_hba
                                        continue;
                                }
                                if( pHba->channel[bus_no].device[scsi_id] == NULL){
-                                       pDev =  kmalloc(sizeof(struct adpt_device),GFP_KERNEL);
+                                       pDev =  kzalloc(sizeof(struct adpt_device),GFP_KERNEL);
                                        if(pDev == NULL) {
                                                return -ENOMEM;
                                        }
                                        pHba->channel[bus_no].device[scsi_id] = pDev;
-                                       memset(pDev,0,sizeof(struct adpt_device));
                                } else {
                                        for( pDev = pHba->channel[bus_no].device[scsi_id];      
                                                        pDev->next_lun; pDev = pDev->next_lun){
                                        }
-                                       pDev->next_lun = kmalloc(sizeof(struct adpt_device),GFP_KERNEL);
+                                       pDev->next_lun = kzalloc(sizeof(struct adpt_device),GFP_KERNEL);
                                        if(pDev->next_lun == NULL) {
                                                return -ENOMEM;
                                        }
-                                       memset(pDev->next_lun,0,sizeof(struct adpt_device));
                                        pDev = pDev->next_lun;
                                }
                                pDev->tid = tid;
@@@ -1667,12 -1665,11 +1664,11 @@@ static int adpt_i2o_passthru(adpt_hba* 
                reply_size = REPLY_FRAME_SIZE;
        }
        reply_size *= 4;
-       reply = kmalloc(REPLY_FRAME_SIZE*4, GFP_KERNEL);
+       reply = kzalloc(REPLY_FRAME_SIZE*4, GFP_KERNEL);
        if(reply == NULL) {
                printk(KERN_WARNING"%s: Could not allocate reply buffer\n",pHba->name);
                return -ENOMEM;
        }
-       memset(reply,0,REPLY_FRAME_SIZE*4);
        sg_offset = (msg[0]>>4)&0xf;
        msg[2] = 0x40000000; // IOCTL context
        msg[3] = (u32)reply;
@@@ -2444,7 -2441,7 +2440,7 @@@ static s32 adpt_i2o_reparse_lct(adpt_hb
                                }
                                pDev = pHba->channel[bus_no].device[scsi_id];   
                                if( pDev == NULL){
-                                       pDev =  kmalloc(sizeof(struct adpt_device),GFP_KERNEL);
+                                       pDev =  kzalloc(sizeof(struct adpt_device),GFP_KERNEL);
                                        if(pDev == NULL) {
                                                return -ENOMEM;
                                        }
                                        while (pDev->next_lun) {
                                                pDev = pDev->next_lun;
                                        }
-                                       pDev = pDev->next_lun = kmalloc(sizeof(struct adpt_device),GFP_KERNEL);
+                                       pDev = pDev->next_lun = kzalloc(sizeof(struct adpt_device),GFP_KERNEL);
                                        if(pDev == NULL) {
                                                return -ENOMEM;
                                        }
                                }
-                               memset(pDev,0,sizeof(struct adpt_device));
                                pDev->tid = d->lct_data.tid;
                                pDev->scsi_channel = bus_no;
                                pDev->scsi_id = scsi_id;
diff --combined drivers/scsi/mesh.c
index cf3666d7d97aa8750eb12aee5715fd839379670e,6f50a5b3e4ce7c480777a3b9a9e55691d2c9afed..e64d1a19d8d7e0f771fb235cc11bb7dbcdb42359
@@@ -185,7 -185,7 +185,7 @@@ struct mesh_state 
   * Driver is too messy, we need a few prototypes...
   */
  static void mesh_done(struct mesh_state *ms, int start_next);
- static void mesh_interrupt(int irq, void *dev_id);
+ static void mesh_interrupt(struct mesh_state *ms);
  static void cmd_complete(struct mesh_state *ms);
  static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd);
  static void halt_dma(struct mesh_state *ms);
@@@ -466,7 -466,7 +466,7 @@@ static void mesh_start_cmd(struct mesh_
                                dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x",
                                     MKWORD(mr->interrupt, mr->exception,
                                            mr->error, mr->fifo_count));
-                               mesh_interrupt(0, (void *)ms);
+                               mesh_interrupt(ms);
                                if (ms->phase != arbitrating)
                                        return;
                        }
                dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x",
                     MKWORD(mr->interrupt, mr->exception,
                            mr->error, mr->fifo_count));
-               mesh_interrupt(0, (void *)ms);
+               mesh_interrupt(ms);
                if (ms->phase != arbitrating)
                        return;
                dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x",
@@@ -1018,10 -1018,11 +1018,11 @@@ static void handle_reset(struct mesh_st
  static irqreturn_t do_mesh_interrupt(int irq, void *dev_id)
  {
        unsigned long flags;
-       struct Scsi_Host *dev = ((struct mesh_state *)dev_id)->host;
+       struct mesh_state *ms = dev_id;
+       struct Scsi_Host *dev = ms->host;
        
        spin_lock_irqsave(dev->host_lock, flags);
-       mesh_interrupt(irq, dev_id);
+       mesh_interrupt(ms);
        spin_unlock_irqrestore(dev->host_lock, flags);
        return IRQ_HANDLED;
  }
@@@ -1661,9 -1662,8 +1662,8 @@@ static int mesh_queue(struct scsi_cmnd 
   * handler (do_mesh_interrupt) or by other functions in
   * exceptional circumstances
   */
- static void mesh_interrupt(int irq, void *dev_id)
+ static void mesh_interrupt(struct mesh_state *ms)
  {
-       struct mesh_state *ms = (struct mesh_state *) dev_id;
        volatile struct mesh_regs __iomem *mr = ms->mesh;
        int intr;
  
@@@ -1947,7 -1947,7 +1947,7 @@@ static int mesh_probe(struct macio_dev 
                ms->tgts[tgt].current_req = NULL;
                }
  
 -      if ((cfp = get_property(mesh, "clock-frequency", NULL)))
 +      if ((cfp = of_get_property(mesh, "clock-frequency", NULL)))
                        ms->clk_freq = *cfp;
        else {
                        printk(KERN_INFO "mesh: assuming 50MHz clock frequency\n");