diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-09-17 01:06:01 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-09-17 01:06:01 -0400 |
commit | f50e5ea14baa321c5f0ff71707a83b02bf5b9398 (patch) | |
tree | 2019c5bc11d99a353f3274853e913f489ed103ce /drivers | |
parent | ecf7f354e228ac9e80d2d25a0a0cbc8c876e9ab4 (diff) | |
parent | 803db244b9f71102e366fd689000c1417b9a7508 (diff) |
Merge branch 'upstream-fixes' into upstream
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/block/cciss.c | 10 | ||||
-rw-r--r-- | drivers/char/hvc_console.c | 1 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_si_intf.c | 9 | ||||
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/core/cma.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 1 | ||||
-rw-r--r-- | drivers/infiniband/ulp/srp/ib_srp.c | 14 | ||||
-rw-r--r-- | drivers/mtd/nand/nand_base.c | 4 | ||||
-rw-r--r-- | drivers/scsi/libata-core.c | 13 | ||||
-rw-r--r-- | drivers/scsi/scsi_error.c | 2 |
10 files changed, 27 insertions, 31 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 7b0eca703a67..2cd3391ff878 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -48,14 +48,14 @@ | |||
48 | #include <linux/completion.h> | 48 | #include <linux/completion.h> |
49 | 49 | ||
50 | #define CCISS_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin)) | 50 | #define CCISS_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin)) |
51 | #define DRIVER_NAME "HP CISS Driver (v 2.6.10)" | 51 | #define DRIVER_NAME "HP CISS Driver (v 3.6.10)" |
52 | #define DRIVER_VERSION CCISS_DRIVER_VERSION(2,6,10) | 52 | #define DRIVER_VERSION CCISS_DRIVER_VERSION(3,6,10) |
53 | 53 | ||
54 | /* Embedded module documentation macros - see modules.h */ | 54 | /* Embedded module documentation macros - see modules.h */ |
55 | MODULE_AUTHOR("Hewlett-Packard Company"); | 55 | MODULE_AUTHOR("Hewlett-Packard Company"); |
56 | MODULE_DESCRIPTION("Driver for HP Controller SA5xxx SA6xxx version 2.6.10"); | 56 | MODULE_DESCRIPTION("Driver for HP Controller SA5xxx SA6xxx version 3.6.10"); |
57 | MODULE_SUPPORTED_DEVICE("HP SA5i SA5i+ SA532 SA5300 SA5312 SA641 SA642 SA6400" | 57 | MODULE_SUPPORTED_DEVICE("HP SA5i SA5i+ SA532 SA5300 SA5312 SA641 SA642 SA6400" |
58 | " SA6i P600 P800 P400 P400i E200 E200i"); | 58 | " SA6i P600 P800 P400 P400i E200 E200i E500"); |
59 | MODULE_LICENSE("GPL"); | 59 | MODULE_LICENSE("GPL"); |
60 | 60 | ||
61 | #include "cciss_cmd.h" | 61 | #include "cciss_cmd.h" |
@@ -82,6 +82,7 @@ static const struct pci_device_id cciss_pci_device_id[] = { | |||
82 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3213}, | 82 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3213}, |
83 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3214}, | 83 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3214}, |
84 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215}, | 84 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215}, |
85 | {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3233}, | ||
85 | {0,} | 86 | {0,} |
86 | }; | 87 | }; |
87 | 88 | ||
@@ -110,6 +111,7 @@ static struct board_type products[] = { | |||
110 | {0x3213103C, "Smart Array E200i", &SA5_access}, | 111 | {0x3213103C, "Smart Array E200i", &SA5_access}, |
111 | {0x3214103C, "Smart Array E200i", &SA5_access}, | 112 | {0x3214103C, "Smart Array E200i", &SA5_access}, |
112 | {0x3215103C, "Smart Array E200i", &SA5_access}, | 113 | {0x3215103C, "Smart Array E200i", &SA5_access}, |
114 | {0x3233103C, "Smart Array E500", &SA5_access}, | ||
113 | }; | 115 | }; |
114 | 116 | ||
115 | /* How long to wait (in milliseconds) for board to go into simple mode */ | 117 | /* How long to wait (in milliseconds) for board to go into simple mode */ |
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c index ca2f538e549e..613d67f1c7f0 100644 --- a/drivers/char/hvc_console.c +++ b/drivers/char/hvc_console.c | |||
@@ -668,6 +668,7 @@ int khvcd(void *unused) | |||
668 | do { | 668 | do { |
669 | poll_mask = 0; | 669 | poll_mask = 0; |
670 | hvc_kicked = 0; | 670 | hvc_kicked = 0; |
671 | try_to_freeze(); | ||
671 | wmb(); | 672 | wmb(); |
672 | if (cpus_empty(cpus_in_xmon)) { | 673 | if (cpus_empty(cpus_in_xmon)) { |
673 | spin_lock(&hvc_structs_lock); | 674 | spin_lock(&hvc_structs_lock); |
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index f57eba0bf253..abca98beac14 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
@@ -402,10 +402,10 @@ static void handle_flags(struct smi_info *smi_info) | |||
402 | smi_info->curr_msg->data, | 402 | smi_info->curr_msg->data, |
403 | smi_info->curr_msg->data_size); | 403 | smi_info->curr_msg->data_size); |
404 | smi_info->si_state = SI_GETTING_EVENTS; | 404 | smi_info->si_state = SI_GETTING_EVENTS; |
405 | } else if (smi_info->msg_flags & OEM_DATA_AVAIL) { | 405 | } else if (smi_info->msg_flags & OEM_DATA_AVAIL && |
406 | if (smi_info->oem_data_avail_handler) | 406 | smi_info->oem_data_avail_handler) { |
407 | if (smi_info->oem_data_avail_handler(smi_info)) | 407 | if (smi_info->oem_data_avail_handler(smi_info)) |
408 | goto retry; | 408 | goto retry; |
409 | } else { | 409 | } else { |
410 | smi_info->si_state = SI_NORMAL; | 410 | smi_info->si_state = SI_NORMAL; |
411 | } | 411 | } |
@@ -2481,6 +2481,7 @@ static __devinit int init_ipmi_si(void) | |||
2481 | #ifdef CONFIG_PCI | 2481 | #ifdef CONFIG_PCI |
2482 | pci_unregister_driver(&ipmi_pci_driver); | 2482 | pci_unregister_driver(&ipmi_pci_driver); |
2483 | #endif | 2483 | #endif |
2484 | driver_unregister(&ipmi_driver); | ||
2484 | printk("ipmi_si: Unable to find any System Interface(s)\n"); | 2485 | printk("ipmi_si: Unable to find any System Interface(s)\n"); |
2485 | return -ENODEV; | 2486 | return -ENODEV; |
2486 | } else { | 2487 | } else { |
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index 351dab2fcacf..d419e4bb54f4 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -730,7 +730,7 @@ static unsigned int __devinit ata66_ali15x3 (ide_hwif_t *hwif) | |||
730 | 730 | ||
731 | if(m5229_revision <= 0x20) | 731 | if(m5229_revision <= 0x20) |
732 | tmpbyte = (tmpbyte & (~0x02)) | 0x01; | 732 | tmpbyte = (tmpbyte & (~0x02)) | 0x01; |
733 | else if (m5229_revision == 0xc7) | 733 | else if (m5229_revision == 0xc7 || m5229_revision == 0xc8) |
734 | tmpbyte |= 0x03; | 734 | tmpbyte |= 0x03; |
735 | else | 735 | else |
736 | tmpbyte |= 0x01; | 736 | tmpbyte |= 0x01; |
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index d6f99d5720fc..5d625a81193f 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c | |||
@@ -49,7 +49,7 @@ MODULE_DESCRIPTION("Generic RDMA CM Agent"); | |||
49 | MODULE_LICENSE("Dual BSD/GPL"); | 49 | MODULE_LICENSE("Dual BSD/GPL"); |
50 | 50 | ||
51 | #define CMA_CM_RESPONSE_TIMEOUT 20 | 51 | #define CMA_CM_RESPONSE_TIMEOUT 20 |
52 | #define CMA_MAX_CM_RETRIES 3 | 52 | #define CMA_MAX_CM_RETRIES 15 |
53 | 53 | ||
54 | static void cma_add_one(struct ib_device *device); | 54 | static void cma_add_one(struct ib_device *device); |
55 | static void cma_remove_one(struct ib_device *device); | 55 | static void cma_remove_one(struct ib_device *device); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index b5e6a7be603d..ec356ce7cdcd 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -326,6 +326,7 @@ ipoib_mcast_sendonly_join_complete(int status, | |||
326 | 326 | ||
327 | /* Clear the busy flag so we try again */ | 327 | /* Clear the busy flag so we try again */ |
328 | clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags); | 328 | clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags); |
329 | mcast->query = NULL; | ||
329 | } | 330 | } |
330 | 331 | ||
331 | complete(&mcast->done); | 332 | complete(&mcast->done); |
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c index 8257d5a2c8f8..fd8344cdc0db 100644 --- a/drivers/infiniband/ulp/srp/ib_srp.c +++ b/drivers/infiniband/ulp/srp/ib_srp.c | |||
@@ -799,13 +799,6 @@ static void srp_process_rsp(struct srp_target_port *target, struct srp_rsp *rsp) | |||
799 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); | 799 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); |
800 | } | 800 | } |
801 | 801 | ||
802 | static void srp_reconnect_work(void *target_ptr) | ||
803 | { | ||
804 | struct srp_target_port *target = target_ptr; | ||
805 | |||
806 | srp_reconnect_target(target); | ||
807 | } | ||
808 | |||
809 | static void srp_handle_recv(struct srp_target_port *target, struct ib_wc *wc) | 802 | static void srp_handle_recv(struct srp_target_port *target, struct ib_wc *wc) |
810 | { | 803 | { |
811 | struct srp_iu *iu; | 804 | struct srp_iu *iu; |
@@ -858,7 +851,6 @@ static void srp_completion(struct ib_cq *cq, void *target_ptr) | |||
858 | { | 851 | { |
859 | struct srp_target_port *target = target_ptr; | 852 | struct srp_target_port *target = target_ptr; |
860 | struct ib_wc wc; | 853 | struct ib_wc wc; |
861 | unsigned long flags; | ||
862 | 854 | ||
863 | ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); | 855 | ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); |
864 | while (ib_poll_cq(cq, 1, &wc) > 0) { | 856 | while (ib_poll_cq(cq, 1, &wc) > 0) { |
@@ -866,10 +858,6 @@ static void srp_completion(struct ib_cq *cq, void *target_ptr) | |||
866 | printk(KERN_ERR PFX "failed %s status %d\n", | 858 | printk(KERN_ERR PFX "failed %s status %d\n", |
867 | wc.wr_id & SRP_OP_RECV ? "receive" : "send", | 859 | wc.wr_id & SRP_OP_RECV ? "receive" : "send", |
868 | wc.status); | 860 | wc.status); |
869 | spin_lock_irqsave(target->scsi_host->host_lock, flags); | ||
870 | if (target->state == SRP_TARGET_LIVE) | ||
871 | schedule_work(&target->work); | ||
872 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); | ||
873 | break; | 861 | break; |
874 | } | 862 | } |
875 | 863 | ||
@@ -1705,8 +1693,6 @@ static ssize_t srp_create_target(struct class_device *class_dev, | |||
1705 | target->scsi_host = target_host; | 1693 | target->scsi_host = target_host; |
1706 | target->srp_host = host; | 1694 | target->srp_host = host; |
1707 | 1695 | ||
1708 | INIT_WORK(&target->work, srp_reconnect_work, target); | ||
1709 | |||
1710 | INIT_LIST_HEAD(&target->free_reqs); | 1696 | INIT_LIST_HEAD(&target->free_reqs); |
1711 | INIT_LIST_HEAD(&target->req_queue); | 1697 | INIT_LIST_HEAD(&target->req_queue); |
1712 | for (i = 0; i < SRP_SQ_SIZE; ++i) { | 1698 | for (i = 0; i < SRP_SQ_SIZE; ++i) { |
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index c8cbc00243fe..0a54d003ef34 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -1204,7 +1204,7 @@ static int nand_write_oob_syndrome(struct mtd_info *mtd, | |||
1204 | pos = steps * (eccsize + chunk); | 1204 | pos = steps * (eccsize + chunk); |
1205 | steps = 0; | 1205 | steps = 0; |
1206 | } else | 1206 | } else |
1207 | pos = eccsize + chunk; | 1207 | pos = eccsize; |
1208 | 1208 | ||
1209 | chip->cmdfunc(mtd, NAND_CMD_SEQIN, pos, page); | 1209 | chip->cmdfunc(mtd, NAND_CMD_SEQIN, pos, page); |
1210 | for (i = 0; i < steps; i++) { | 1210 | for (i = 0; i < steps; i++) { |
@@ -1567,7 +1567,7 @@ static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob, | |||
1567 | bytes = min_t(size_t, len, free->length); | 1567 | bytes = min_t(size_t, len, free->length); |
1568 | boffs = free->offset; | 1568 | boffs = free->offset; |
1569 | } | 1569 | } |
1570 | memcpy(chip->oob_poi + woffs, oob, bytes); | 1570 | memcpy(chip->oob_poi + boffs, oob, bytes); |
1571 | oob += bytes; | 1571 | oob += bytes; |
1572 | } | 1572 | } |
1573 | return oob; | 1573 | return oob; |
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 73dd6c8deede..427b73a3886a 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -1256,10 +1256,15 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, | |||
1256 | swap_buf_le16(id, ATA_ID_WORDS); | 1256 | swap_buf_le16(id, ATA_ID_WORDS); |
1257 | 1257 | ||
1258 | /* sanity check */ | 1258 | /* sanity check */ |
1259 | if ((class == ATA_DEV_ATA) != (ata_id_is_ata(id) | ata_id_is_cfa(id))) { | 1259 | rc = -EINVAL; |
1260 | rc = -EINVAL; | 1260 | reason = "device reports illegal type"; |
1261 | reason = "device reports illegal type"; | 1261 | |
1262 | goto err_out; | 1262 | if (class == ATA_DEV_ATA) { |
1263 | if (!ata_id_is_ata(id) && !ata_id_is_cfa(id)) | ||
1264 | goto err_out; | ||
1265 | } else { | ||
1266 | if (ata_id_is_ata(id)) | ||
1267 | goto err_out; | ||
1263 | } | 1268 | } |
1264 | 1269 | ||
1265 | if (post_reset && class == ATA_DEV_ATA) { | 1270 | if (post_reset && class == ATA_DEV_ATA) { |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index a8ed5a22009d..3d355d054612 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -466,7 +466,7 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd, | |||
466 | struct scsi_device *sdev = scmd->device; | 466 | struct scsi_device *sdev = scmd->device; |
467 | struct Scsi_Host *shost = sdev->host; | 467 | struct Scsi_Host *shost = sdev->host; |
468 | int old_result = scmd->result; | 468 | int old_result = scmd->result; |
469 | DECLARE_COMPLETION(done); | 469 | DECLARE_COMPLETION_ONSTACK(done); |
470 | unsigned long timeleft; | 470 | unsigned long timeleft; |
471 | unsigned long flags; | 471 | unsigned long flags; |
472 | unsigned char old_cmnd[MAX_COMMAND_SIZE]; | 472 | unsigned char old_cmnd[MAX_COMMAND_SIZE]; |