* [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. @ 2012-03-09 8:25 ` santosh nayak 0 siblings, 0 replies; 7+ messages in thread From: santosh nayak @ 2012-03-09 8:13 UTC (permalink / raw) To: jack_wang Cc: mark_salyzyn, lindar_liu, JBottomley, linux-scsi, linux-kernel, kernel-janitors, Santosh Nayak From: Santosh Nayak <santoshprasadnayak@gmail.com> Use spin_lock_irqsave() for task_state. Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> --- drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 3619f6e..9d82ee5 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) struct ata_task_resp *resp ; u32 *sata_resp; struct pm8001_device *pm8001_dev; + unsigned long flags; psataPayload = (struct sata_completion_resp *)(piomb + 4); status = le32_to_cpu(psataPayload->status); @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) ts->stat = SAS_DEV_NO_RESPONSE; break; } - spin_lock_irq(&t->task_state_lock); + spin_lock_irqsave(&t->task_state_lock, flags); t->task_state_flags &= ~SAS_TASK_STATE_PENDING; t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; t->task_state_flags |= SAS_TASK_STATE_DONE; if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with io_status 0x%x" " resp 0x%x stat 0x%x but aborted by upper layer!\n", t, status, ts->resp, ts->stat)); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); } else if (t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/* ditto */ spin_unlock_irq(&pm8001_ha->lock); t->task_done(t); spin_lock_irq(&pm8001_ha->lock); } else if (!t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/*ditto*/ spin_unlock_irq(&pm8001_ha->lock); @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) u32 tag = le32_to_cpu(psataPayload->tag); u32 port_id = le32_to_cpu(psataPayload->port_id); u32 dev_id = le32_to_cpu(psataPayload->device_id); + unsigned long flags; ccb = &pm8001_ha->ccb_info[tag]; t = ccb->task; @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) ts->stat = SAS_OPEN_TO; break; } - spin_lock_irq(&t->task_state_lock); + spin_lock_irqsave(&t->task_state_lock, flags); t->task_state_flags &= ~SAS_TASK_STATE_PENDING; t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; t->task_state_flags |= SAS_TASK_STATE_DONE; if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with io_status 0x%x" " resp 0x%x stat 0x%x but aborted by upper layer!\n", t, event, ts->resp, ts->stat)); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); } else if (t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/* ditto */ spin_unlock_irq(&pm8001_ha->lock); t->task_done(t); spin_lock_irq(&pm8001_ha->lock); } else if (!t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/*ditto*/ spin_unlock_irq(&pm8001_ha->lock); -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. @ 2012-03-09 8:25 ` santosh nayak 0 siblings, 0 replies; 7+ messages in thread From: santosh nayak @ 2012-03-09 8:25 UTC (permalink / raw) To: jack_wang Cc: mark_salyzyn, lindar_liu, JBottomley, linux-scsi, linux-kernel, kernel-janitors, Santosh Nayak From: Santosh Nayak <santoshprasadnayak@gmail.com> Use spin_lock_irqsave() for task_state. Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> --- drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 3619f6e..9d82ee5 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) struct ata_task_resp *resp ; u32 *sata_resp; struct pm8001_device *pm8001_dev; + unsigned long flags; psataPayload = (struct sata_completion_resp *)(piomb + 4); status = le32_to_cpu(psataPayload->status); @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) ts->stat = SAS_DEV_NO_RESPONSE; break; } - spin_lock_irq(&t->task_state_lock); + spin_lock_irqsave(&t->task_state_lock, flags); t->task_state_flags &= ~SAS_TASK_STATE_PENDING; t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; t->task_state_flags |= SAS_TASK_STATE_DONE; if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with io_status 0x%x" " resp 0x%x stat 0x%x but aborted by upper layer!\n", t, status, ts->resp, ts->stat)); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); } else if (t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/* ditto */ spin_unlock_irq(&pm8001_ha->lock); t->task_done(t); spin_lock_irq(&pm8001_ha->lock); } else if (!t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/*ditto*/ spin_unlock_irq(&pm8001_ha->lock); @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) u32 tag = le32_to_cpu(psataPayload->tag); u32 port_id = le32_to_cpu(psataPayload->port_id); u32 dev_id = le32_to_cpu(psataPayload->device_id); + unsigned long flags; ccb = &pm8001_ha->ccb_info[tag]; t = ccb->task; @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) ts->stat = SAS_OPEN_TO; break; } - spin_lock_irq(&t->task_state_lock); + spin_lock_irqsave(&t->task_state_lock, flags); t->task_state_flags &= ~SAS_TASK_STATE_PENDING; t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; t->task_state_flags |= SAS_TASK_STATE_DONE; if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with io_status 0x%x" " resp 0x%x stat 0x%x but aborted by upper layer!\n", t, event, ts->resp, ts->stat)); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); } else if (t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/* ditto */ spin_unlock_irq(&pm8001_ha->lock); t->task_done(t); spin_lock_irq(&pm8001_ha->lock); } else if (!t->uldd_task) { - spin_unlock_irq(&t->task_state_lock); + spin_unlock_irqrestore(&t->task_state_lock, flags); pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); mb();/*ditto*/ spin_unlock_irq(&pm8001_ha->lock); -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. 2012-03-09 8:25 ` santosh nayak @ 2012-03-09 12:59 ` Mark Salyzyn -1 siblings, 0 replies; 7+ messages in thread From: Mark Salyzyn @ 2012-03-09 12:59 UTC (permalink / raw) To: santosh nayak Cc: Mark Salyzyn, jack_wang, lindar_liu, JBottomley, linux-scsi, linux-kernel, kernel-janitors ACK On Mar 9, 2012, at 3:13 AM, santosh nayak wrote: > From: Santosh Nayak <santoshprasadnayak@gmail.com> > > Use spin_lock_irqsave() for task_state. > > Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> > --- > drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- > 1 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c > index 3619f6e..9d82ee5 100644 > --- a/drivers/scsi/pm8001/pm8001_hwi.c > +++ b/drivers/scsi/pm8001/pm8001_hwi.c > @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) > struct ata_task_resp *resp ; > u32 *sata_resp; > struct pm8001_device *pm8001_dev; > + unsigned long flags; > > psataPayload = (struct sata_completion_resp *)(piomb + 4); > status = le32_to_cpu(psataPayload->status); > @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) > ts->stat = SAS_DEV_NO_RESPONSE; > break; > } > - spin_lock_irq(&t->task_state_lock); > + spin_lock_irqsave(&t->task_state_lock, flags); > t->task_state_flags &= ~SAS_TASK_STATE_PENDING; > t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; > t->task_state_flags |= SAS_TASK_STATE_DONE; > if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > PM8001_FAIL_DBG(pm8001_ha, > pm8001_printk("task 0x%p done with io_status 0x%x" > " resp 0x%x stat 0x%x but aborted by upper layer!\n", > t, status, ts->resp, ts->stat)); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > } else if (t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/* ditto */ > spin_unlock_irq(&pm8001_ha->lock); > t->task_done(t); > spin_lock_irq(&pm8001_ha->lock); > } else if (!t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/*ditto*/ > spin_unlock_irq(&pm8001_ha->lock); > @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) > u32 tag = le32_to_cpu(psataPayload->tag); > u32 port_id = le32_to_cpu(psataPayload->port_id); > u32 dev_id = le32_to_cpu(psataPayload->device_id); > + unsigned long flags; > > ccb = &pm8001_ha->ccb_info[tag]; > t = ccb->task; > @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) > ts->stat = SAS_OPEN_TO; > break; > } > - spin_lock_irq(&t->task_state_lock); > + spin_lock_irqsave(&t->task_state_lock, flags); > t->task_state_flags &= ~SAS_TASK_STATE_PENDING; > t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; > t->task_state_flags |= SAS_TASK_STATE_DONE; > if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > PM8001_FAIL_DBG(pm8001_ha, > pm8001_printk("task 0x%p done with io_status 0x%x" > " resp 0x%x stat 0x%x but aborted by upper layer!\n", > t, event, ts->resp, ts->stat)); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > } else if (t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/* ditto */ > spin_unlock_irq(&pm8001_ha->lock); > t->task_done(t); > spin_lock_irq(&pm8001_ha->lock); > } else if (!t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/*ditto*/ > spin_unlock_irq(&pm8001_ha->lock); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. @ 2012-03-09 12:59 ` Mark Salyzyn 0 siblings, 0 replies; 7+ messages in thread From: Mark Salyzyn @ 2012-03-09 12:59 UTC (permalink / raw) To: santosh nayak Cc: Mark Salyzyn, jack_wang, lindar_liu, JBottomley, linux-scsi, linux-kernel, kernel-janitors ACK On Mar 9, 2012, at 3:13 AM, santosh nayak wrote: > From: Santosh Nayak <santoshprasadnayak@gmail.com> > > Use spin_lock_irqsave() for task_state. > > Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> > --- > drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- > 1 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c > index 3619f6e..9d82ee5 100644 > --- a/drivers/scsi/pm8001/pm8001_hwi.c > +++ b/drivers/scsi/pm8001/pm8001_hwi.c > @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) > struct ata_task_resp *resp ; > u32 *sata_resp; > struct pm8001_device *pm8001_dev; > + unsigned long flags; > > psataPayload = (struct sata_completion_resp *)(piomb + 4); > status = le32_to_cpu(psataPayload->status); > @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) > ts->stat = SAS_DEV_NO_RESPONSE; > break; > } > - spin_lock_irq(&t->task_state_lock); > + spin_lock_irqsave(&t->task_state_lock, flags); > t->task_state_flags &= ~SAS_TASK_STATE_PENDING; > t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; > t->task_state_flags |= SAS_TASK_STATE_DONE; > if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > PM8001_FAIL_DBG(pm8001_ha, > pm8001_printk("task 0x%p done with io_status 0x%x" > " resp 0x%x stat 0x%x but aborted by upper layer!\n", > t, status, ts->resp, ts->stat)); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > } else if (t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/* ditto */ > spin_unlock_irq(&pm8001_ha->lock); > t->task_done(t); > spin_lock_irq(&pm8001_ha->lock); > } else if (!t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/*ditto*/ > spin_unlock_irq(&pm8001_ha->lock); > @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) > u32 tag = le32_to_cpu(psataPayload->tag); > u32 port_id = le32_to_cpu(psataPayload->port_id); > u32 dev_id = le32_to_cpu(psataPayload->device_id); > + unsigned long flags; > > ccb = &pm8001_ha->ccb_info[tag]; > t = ccb->task; > @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) > ts->stat = SAS_OPEN_TO; > break; > } > - spin_lock_irq(&t->task_state_lock); > + spin_lock_irqsave(&t->task_state_lock, flags); > t->task_state_flags &= ~SAS_TASK_STATE_PENDING; > t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; > t->task_state_flags |= SAS_TASK_STATE_DONE; > if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > PM8001_FAIL_DBG(pm8001_ha, > pm8001_printk("task 0x%p done with io_status 0x%x" > " resp 0x%x stat 0x%x but aborted by upper layer!\n", > t, event, ts->resp, ts->stat)); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > } else if (t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/* ditto */ > spin_unlock_irq(&pm8001_ha->lock); > t->task_done(t); > spin_lock_irq(&pm8001_ha->lock); > } else if (!t->uldd_task) { > - spin_unlock_irq(&t->task_state_lock); > + spin_unlock_irqrestore(&t->task_state_lock, flags); > pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); > mb();/*ditto*/ > spin_unlock_irq(&pm8001_ha->lock); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. 2012-03-09 12:59 ` Mark Salyzyn (?) @ 2012-03-11 7:09 ` jack_wang -1 siblings, 0 replies; 7+ messages in thread From: jack_wang @ 2012-03-11 7:09 UTC (permalink / raw) To: santosh nayak Cc: Mark Salyzyn, lindar_liu, James Bottomley, linux-scsi, linux-kernel, kernel-janitors TG9va3MgT0sgdG8gbWUuDQpUaGFua3MuDQpBY2tlZC1ieTogSmFjayBXYW5nIDxqYWNrX3dhbmdA dXNpc2guY29tPg0KDQoNCi0tLS0tLS0tLS0tLS0tDQpqYWNrX3dhbmcNCj5BQ0sNCj4NCj5PbiBN YXIgOSwgMjAxMiwgYXQgMzoxMyBBTSwgc2FudG9zaCBuYXlhayB3cm90ZToNCj4NCj4+IEZyb206 IFNhbnRvc2ggTmF5YWsgPHNhbnRvc2hwcmFzYWRuYXlha0BnbWFpbC5jb20+DQo+PiANCj4+IFVz ZSBzcGluX2xvY2tfaXJxc2F2ZSgpIGZvciB0YXNrX3N0YXRlLg0KPj4gDQo+PiBTaWduZWQtb2Zm LWJ5OiBTYW50b3NoIE5heWFrIDxzYW50b3NocHJhc2FkbmF5YWtAZ21haWwuY29tPg0KPj4gLS0t DQo+PiBkcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYyB8ICAgMTggKysrKysrKysrKy0t LS0tLS0tDQo+PiAxIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pDQo+PiANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2ku YyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jDQo+PiBpbmRleCAzNjE5ZjZlLi45 ZDgyZWU1IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMN Cj4+ICsrKyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jDQo+PiBAQCAtMjA5Myw2 ICsyMDkzLDcgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpw bTgwMDFfaGEsIHZvaWQgKnBpb21iKQ0KPj4gCXN0cnVjdCBhdGFfdGFza19yZXNwICpyZXNwIDsN Cj4+IAl1MzIgKnNhdGFfcmVzcDsNCj4+IAlzdHJ1Y3QgcG04MDAxX2RldmljZSAqcG04MDAxX2Rl djsNCj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+IA0KPj4gCXBzYXRhUGF5bG9hZCA9IChz dHJ1Y3Qgc2F0YV9jb21wbGV0aW9uX3Jlc3AgKikocGlvbWIgKyA0KTsNCj4+IAlzdGF0dXMgPSBs ZTMyX3RvX2NwdShwc2F0YVBheWxvYWQtPnN0YXR1cyk7DQo+PiBAQCAtMjM4MiwyNiArMjM4Mywy NiBAQCBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9o YSwgdm9pZCAqcGlvbWIpDQo+PiAJCXRzLT5zdGF0ID0gU0FTX0RFVl9OT19SRVNQT05TRTsNCj4+ IAkJYnJlYWs7DQo+PiAJfQ0KPj4gLQlzcGluX2xvY2tfaXJxKCZ0LT50YXNrX3N0YXRlX2xvY2sp Ow0KPj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdC0+dGFza19zdGF0ZV9sb2NrLCBmbGFncyk7DQo+ PiAJdC0+dGFza19zdGF0ZV9mbGFncyAmPSB+U0FTX1RBU0tfU1RBVEVfUEVORElORzsNCj4+IAl0 LT50YXNrX3N0YXRlX2ZsYWdzICY9IH5TQVNfVEFTS19BVF9JTklUSUFUT1I7DQo+PiAJdC0+dGFz a19zdGF0ZV9mbGFncyB8PSBTQVNfVEFTS19TVEFURV9ET05FOw0KPj4gCWlmICh1bmxpa2VseSgo dC0+dGFza19zdGF0ZV9mbGFncyAmIFNBU19UQVNLX1NUQVRFX0FCT1JURUQpKSkgew0KPj4gLQkJ c3Bpbl91bmxvY2tfaXJxKCZ0LT50YXNrX3N0YXRlX2xvY2spOw0KPj4gKwkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmdC0+dGFza19zdGF0ZV9sb2NrLCBmbGFncyk7DQo+PiAJCVBNODAwMV9GQUlM X0RCRyhwbTgwMDFfaGEsDQo+PiAJCQlwbTgwMDFfcHJpbnRrKCJ0YXNrIDB4JXAgZG9uZSB3aXRo IGlvX3N0YXR1cyAweCV4Ig0KPj4gCQkJIiByZXNwIDB4JXggc3RhdCAweCV4IGJ1dCBhYm9ydGVk IGJ5IHVwcGVyIGxheWVyIVxuIiwNCj4+IAkJCXQsIHN0YXR1cywgdHMtPnJlc3AsIHRzLT5zdGF0 KSk7DQo+PiAJCXBtODAwMV9jY2JfdGFza19mcmVlKHBtODAwMV9oYSwgdCwgY2NiLCB0YWcpOw0K Pj4gCX0gZWxzZSBpZiAodC0+dWxkZF90YXNrKSB7DQo+PiAtCQlzcGluX3VubG9ja19pcnEoJnQt PnRhc2tfc3RhdGVfbG9jayk7DQo+PiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0LT50YXNr X3N0YXRlX2xvY2ssIGZsYWdzKTsNCj4+IAkJcG04MDAxX2NjYl90YXNrX2ZyZWUocG04MDAxX2hh LCB0LCBjY2IsIHRhZyk7DQo+PiAJCW1iKCk7LyogZGl0dG8gKi8NCj4+IAkJc3Bpbl91bmxvY2tf aXJxKCZwbTgwMDFfaGEtPmxvY2spOw0KPj4gCQl0LT50YXNrX2RvbmUodCk7DQo+PiAJCXNwaW5f bG9ja19pcnEoJnBtODAwMV9oYS0+bG9jayk7DQo+PiAJfSBlbHNlIGlmICghdC0+dWxkZF90YXNr KSB7DQo+PiAtCQlzcGluX3VubG9ja19pcnEoJnQtPnRhc2tfc3RhdGVfbG9jayk7DQo+PiArCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZ0LT50YXNrX3N0YXRlX2xvY2ssIGZsYWdzKTsNCj4+IAkJ cG04MDAxX2NjYl90YXNrX2ZyZWUocG04MDAxX2hhLCB0LCBjY2IsIHRhZyk7DQo+PiAJCW1iKCk7 LypkaXR0byovDQo+PiAJCXNwaW5fdW5sb2NrX2lycSgmcG04MDAxX2hhLT5sb2NrKTsNCj4+IEBA IC0yNDIzLDYgKzI0MjQsNyBAQCBzdGF0aWMgdm9pZCBtcGlfc2F0YV9ldmVudChzdHJ1Y3QgcG04 MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikNCj4+IAl1MzIgdGFnID0gbGUz Ml90b19jcHUocHNhdGFQYXlsb2FkLT50YWcpOw0KPj4gCXUzMiBwb3J0X2lkID0gbGUzMl90b19j cHUocHNhdGFQYXlsb2FkLT5wb3J0X2lkKTsNCj4+IAl1MzIgZGV2X2lkID0gbGUzMl90b19jcHUo cHNhdGFQYXlsb2FkLT5kZXZpY2VfaWQpOw0KPj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4g DQo+PiAJY2NiID0gJnBtODAwMV9oYS0+Y2NiX2luZm9bdGFnXTsNCj4+IAl0ID0gY2NiLT50YXNr Ow0KPj4gQEAgLTI1OTMsMjYgKzI1OTUsMjYgQEAgc3RhdGljIHZvaWQgbXBpX3NhdGFfZXZlbnQo c3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpDQo+PiAJCXRz LT5zdGF0ID0gU0FTX09QRU5fVE87DQo+PiAJCWJyZWFrOw0KPj4gCX0NCj4+IC0Jc3Bpbl9sb2Nr X2lycSgmdC0+dGFza19zdGF0ZV9sb2NrKTsNCj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnQtPnRh c2tfc3RhdGVfbG9jaywgZmxhZ3MpOw0KPj4gCXQtPnRhc2tfc3RhdGVfZmxhZ3MgJj0gflNBU19U QVNLX1NUQVRFX1BFTkRJTkc7DQo+PiAJdC0+dGFza19zdGF0ZV9mbGFncyAmPSB+U0FTX1RBU0tf QVRfSU5JVElBVE9SOw0KPj4gCXQtPnRhc2tfc3RhdGVfZmxhZ3MgfD0gU0FTX1RBU0tfU1RBVEVf RE9ORTsNCj4+IAlpZiAodW5saWtlbHkoKHQtPnRhc2tfc3RhdGVfZmxhZ3MgJiBTQVNfVEFTS19T VEFURV9BQk9SVEVEKSkpIHsNCj4+IC0JCXNwaW5fdW5sb2NrX2lycSgmdC0+dGFza19zdGF0ZV9s b2NrKTsNCj4+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnQtPnRhc2tfc3RhdGVfbG9jaywg ZmxhZ3MpOw0KPj4gCQlQTTgwMDFfRkFJTF9EQkcocG04MDAxX2hhLA0KPj4gCQkJcG04MDAxX3By aW50aygidGFzayAweCVwIGRvbmUgd2l0aCBpb19zdGF0dXMgMHgleCINCj4+IAkJCSIgcmVzcCAw eCV4IHN0YXQgMHgleCBidXQgYWJvcnRlZCBieSB1cHBlciBsYXllciFcbiIsDQo+PiAJCQl0LCBl dmVudCwgdHMtPnJlc3AsIHRzLT5zdGF0KSk7DQo+PiAJCXBtODAwMV9jY2JfdGFza19mcmVlKHBt ODAwMV9oYSwgdCwgY2NiLCB0YWcpOw0KPj4gCX0gZWxzZSBpZiAodC0+dWxkZF90YXNrKSB7DQo+ PiAtCQlzcGluX3VubG9ja19pcnEoJnQtPnRhc2tfc3RhdGVfbG9jayk7DQo+PiArCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ0LT50YXNrX3N0YXRlX2xvY2ssIGZsYWdzKTsNCj4+IAkJcG04MDAx X2NjYl90YXNrX2ZyZWUocG04MDAxX2hhLCB0LCBjY2IsIHRhZyk7DQo+PiAJCW1iKCk7LyogZGl0 dG8gKi8NCj4+IAkJc3Bpbl91bmxvY2tfaXJxKCZwbTgwMDFfaGEtPmxvY2spOw0KPj4gCQl0LT50 YXNrX2RvbmUodCk7DQo+PiAJCXNwaW5fbG9ja19pcnEoJnBtODAwMV9oYS0+bG9jayk7DQo+PiAJ fSBlbHNlIGlmICghdC0+dWxkZF90YXNrKSB7DQo+PiAtCQlzcGluX3VubG9ja19pcnEoJnQtPnRh c2tfc3RhdGVfbG9jayk7DQo+PiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0LT50YXNrX3N0 YXRlX2xvY2ssIGZsYWdzKTsNCj4+IAkJcG04MDAxX2NjYl90YXNrX2ZyZWUocG04MDAxX2hhLCB0 LCBjY2IsIHRhZyk7DQo+PiAJCW1iKCk7LypkaXR0byovDQo+PiAJCXNwaW5fdW5sb2NrX2lycSgm cG04MDAxX2hhLT5sb2NrKTsNCj4NCj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+VGhpcyBlbWFpbCBtYXkgY29u dGFpbiBwcml2aWxlZ2VkIG9yIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiwgd2hpY2ggc2hvdWxk IG9ubHkgYmUgdXNlZCBmb3IgdGhlIHB1cnBvc2UgZm9yIHdoaWNoIGl0IHdhcyBzZW50IGJ5IFh5 cmF0ZXguIE5vIGZ1cnRoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzIGFyZSBncmFudGVkIHRvIHVzZSBz dWNoIGluZm9ybWF0aW9uLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50IG9m IHRoaXMgbWVzc2FnZSwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGJ5IHJldHVybiBhbmQgZGVs ZXRlIGl0LiBZb3UgbWF5IG5vdCB1c2UsIGNvcHksIGRpc2Nsb3NlIG9yIHJlbHkgb24gdGhlIGlu Zm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBpdC4NCj4gDQo+SW50ZXJuZXQgZW1haWwgaXMgc3VzY2Vw dGlibGUgdG8gZGF0YSBjb3JydXB0aW9uLCBpbnRlcmNlcHRpb24gYW5kIHVuYXV0aG9yaXNlZCBh bWVuZG1lbnQgZm9yIHdoaWNoIFh5cmF0ZXggZG9lcyBub3QgYWNjZXB0IGxpYWJpbGl0eS4gV2hp bGUgd2UgaGF2ZSB0YWtlbiByZWFzb25hYmxlIHByZWNhdXRpb25zIHRvIGVuc3VyZSB0aGF0IHRo aXMgZW1haWwgaXMgZnJlZSBvZiB2aXJ1c2VzLCBYeXJhdGV4IGRvZXMgbm90IGFjY2VwdCBsaWFi aWxpdHkgZm9yIHRoZSBwcmVzZW5jZSBvZiBhbnkgY29tcHV0ZXIgdmlydXNlcyBpbiB0aGlzIGVt YWlsLCBub3IgZm9yIGFueSBsb3NzZXMgY2F1c2VkIGFzIGEgcmVzdWx0IG9mIHZpcnVzZXMuDQo+ IA0KPlh5cmF0ZXggVGVjaG5vbG9neSBMaW1pdGVkICgwMzEzNDkxMiksIFJlZ2lzdGVyZWQgaW4g RW5nbGFuZCAmIFdhbGVzLCBSZWdpc3RlcmVkIE9mZmljZSwgTGFuZ3N0b25lIFJvYWQsIEhhdmFu dCwgSGFtcHNoaXJlLCBQTzkgMVNBLg0KPiANCj5UaGUgWHlyYXRleCBncm91cCBvZiBjb21wYW5p ZXMgYWxzbyBpbmNsdWRlcywgWHlyYXRleCBMdGQsIHJlZ2lzdGVyZWQgaW4gQmVybXVkYSwgWHly YXRleCBJbnRlcm5hdGlvbmFsIEluYywgcmVnaXN0ZXJlZCBpbiBDYWxpZm9ybmlhLCBYeXJhdGV4 IChNYWxheXNpYSkgU2RuIEJoZCByZWdpc3RlcmVkIGluIE1hbGF5c2lhLCBYeXJhdGV4IFRlY2hu b2xvZ3kgKFd1eGkpIENvIEx0ZCByZWdpc3RlcmVkIGluIFRoZSBQZW9wbGUncyBSZXB1YmxpYyBv ZiBDaGluYSBhbmQgWHlyYXRleCBKYXBhbiBMaW1pdGVkIHJlZ2lzdGVyZWQgaW4gSmFwYW4uDQo+ X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXw0KPiANCj4NCj4NCj5fX19fX19fX19fIEluZm9ybWF0aW9uIGZyb20gRVNF VCBOT0QzMiBBbnRpdmlydXMsIHZlcnNpb24gb2YgdmlydXMgc2lnbmF0dXJlIGRhdGFiYXNlIDU2 NTkgKDIwMTAxMTI5KSBfX19fX19fX19fDQo+DQo+VGhlIG1lc3NhZ2Ugd2FzIGNoZWNrZWQgYnkg RVNFVCBOT0QzMiBBbnRpdmlydXMuDQo+DQo+aHR0cDovL3d3dy5lc2V0LmNvbQ0KPg0KPg0KPg= ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. @ 2012-03-11 7:09 ` jack_wang 0 siblings, 0 replies; 7+ messages in thread From: jack_wang @ 2012-03-11 7:09 UTC (permalink / raw) To: santosh nayak Cc: Mark Salyzyn, lindar_liu, James Bottomley, linux-scsi, linux-kernel, kernel-janitors [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset="gb2312", Size: 5736 bytes --] Looks OK to me. Thanks. Acked-by: Jack Wang <jack_wang@usish.com> -------------- jack_wang >ACK > >On Mar 9, 2012, at 3:13 AM, santosh nayak wrote: > >> From: Santosh Nayak <santoshprasadnayak@gmail.com> >> >> Use spin_lock_irqsave() for task_state. >> >> Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> >> --- >> drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- >> 1 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c >> index 3619f6e..9d82ee5 100644 >> --- a/drivers/scsi/pm8001/pm8001_hwi.c >> +++ b/drivers/scsi/pm8001/pm8001_hwi.c >> @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) >> struct ata_task_resp *resp ; >> u32 *sata_resp; >> struct pm8001_device *pm8001_dev; >> + unsigned long flags; >> >> psataPayload = (struct sata_completion_resp *)(piomb + 4); >> status = le32_to_cpu(psataPayload->status); >> @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) >> ts->stat = SAS_DEV_NO_RESPONSE; >> break; >> } >> - spin_lock_irq(&t->task_state_lock); >> + spin_lock_irqsave(&t->task_state_lock, flags); >> t->task_state_flags &= ~SAS_TASK_STATE_PENDING; >> t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; >> t->task_state_flags |= SAS_TASK_STATE_DONE; >> if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> PM8001_FAIL_DBG(pm8001_ha, >> pm8001_printk("task 0x%p done with io_status 0x%x" >> " resp 0x%x stat 0x%x but aborted by upper layer!\n", >> t, status, ts->resp, ts->stat)); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> } else if (t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/* ditto */ >> spin_unlock_irq(&pm8001_ha->lock); >> t->task_done(t); >> spin_lock_irq(&pm8001_ha->lock); >> } else if (!t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/*ditto*/ >> spin_unlock_irq(&pm8001_ha->lock); >> @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) >> u32 tag = le32_to_cpu(psataPayload->tag); >> u32 port_id = le32_to_cpu(psataPayload->port_id); >> u32 dev_id = le32_to_cpu(psataPayload->device_id); >> + unsigned long flags; >> >> ccb = &pm8001_ha->ccb_info[tag]; >> t = ccb->task; >> @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) >> ts->stat = SAS_OPEN_TO; >> break; >> } >> - spin_lock_irq(&t->task_state_lock); >> + spin_lock_irqsave(&t->task_state_lock, flags); >> t->task_state_flags &= ~SAS_TASK_STATE_PENDING; >> t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; >> t->task_state_flags |= SAS_TASK_STATE_DONE; >> if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> PM8001_FAIL_DBG(pm8001_ha, >> pm8001_printk("task 0x%p done with io_status 0x%x" >> " resp 0x%x stat 0x%x but aborted by upper layer!\n", >> t, event, ts->resp, ts->stat)); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> } else if (t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/* ditto */ >> spin_unlock_irq(&pm8001_ha->lock); >> t->task_done(t); >> spin_lock_irq(&pm8001_ha->lock); >> } else if (!t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/*ditto*/ >> spin_unlock_irq(&pm8001_ha->lock); > >______________________________________________________________________ >This email may contain privileged or confidential information, which should only be used for the purpose for which it was sent by Xyratex. No further rights or licenses are granted to use such information. If you are not the intended recipient of this message, please notify the sender by return and delete it. You may not use, copy, disclose or rely on the information contained in it. > >Internet email is susceptible to data corruption, interception and unauthorised amendment for which Xyratex does not accept liability. While we have taken reasonable precautions to ensure that this email is free of viruses, Xyratex does not accept liability for the presence of any computer viruses in this email, nor for any losses caused as a result of viruses. > >Xyratex Technology Limited (03134912), Registered in England & Wales, Registered Office, Langstone Road, Havant, Hampshire, PO9 1SA. > >The Xyratex group of companies also includes, Xyratex Ltd, registered in Bermuda, Xyratex International Inc, registered in California, Xyratex (Malaysia) Sdn Bhd registered in Malaysia, Xyratex Technology (Wuxi) Co Ltd registered in The People's Republic of China and Xyratex Japan Limited registered in Japan. >______________________________________________________________________ > > > >__________ Information from ESET NOD32 Antivirus, version of virus signature database 5659 (20101129) __________ > >The message was checked by ESET NOD32 Antivirus. > >http://www.eset.com > > >ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state. @ 2012-03-11 7:09 ` jack_wang 0 siblings, 0 replies; 7+ messages in thread From: jack_wang @ 2012-03-11 7:09 UTC (permalink / raw) To: santosh nayak Cc: Mark Salyzyn, lindar_liu, James Bottomley, linux-scsi, linux-kernel, kernel-janitors Looks OK to me. Thanks. Acked-by: Jack Wang <jack_wang@usish.com> -------------- jack_wang >ACK > >On Mar 9, 2012, at 3:13 AM, santosh nayak wrote: > >> From: Santosh Nayak <santoshprasadnayak@gmail.com> >> >> Use spin_lock_irqsave() for task_state. >> >> Signed-off-by: Santosh Nayak <santoshprasadnayak@gmail.com> >> --- >> drivers/scsi/pm8001/pm8001_hwi.c | 18 ++++++++++-------- >> 1 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c >> index 3619f6e..9d82ee5 100644 >> --- a/drivers/scsi/pm8001/pm8001_hwi.c >> +++ b/drivers/scsi/pm8001/pm8001_hwi.c >> @@ -2093,6 +2093,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) >> struct ata_task_resp *resp ; >> u32 *sata_resp; >> struct pm8001_device *pm8001_dev; >> + unsigned long flags; >> >> psataPayload = (struct sata_completion_resp *)(piomb + 4); >> status = le32_to_cpu(psataPayload->status); >> @@ -2382,26 +2383,26 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) >> ts->stat = SAS_DEV_NO_RESPONSE; >> break; >> } >> - spin_lock_irq(&t->task_state_lock); >> + spin_lock_irqsave(&t->task_state_lock, flags); >> t->task_state_flags &= ~SAS_TASK_STATE_PENDING; >> t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; >> t->task_state_flags |= SAS_TASK_STATE_DONE; >> if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> PM8001_FAIL_DBG(pm8001_ha, >> pm8001_printk("task 0x%p done with io_status 0x%x" >> " resp 0x%x stat 0x%x but aborted by upper layer!\n", >> t, status, ts->resp, ts->stat)); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> } else if (t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/* ditto */ >> spin_unlock_irq(&pm8001_ha->lock); >> t->task_done(t); >> spin_lock_irq(&pm8001_ha->lock); >> } else if (!t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/*ditto*/ >> spin_unlock_irq(&pm8001_ha->lock); >> @@ -2423,6 +2424,7 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) >> u32 tag = le32_to_cpu(psataPayload->tag); >> u32 port_id = le32_to_cpu(psataPayload->port_id); >> u32 dev_id = le32_to_cpu(psataPayload->device_id); >> + unsigned long flags; >> >> ccb = &pm8001_ha->ccb_info[tag]; >> t = ccb->task; >> @@ -2593,26 +2595,26 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) >> ts->stat = SAS_OPEN_TO; >> break; >> } >> - spin_lock_irq(&t->task_state_lock); >> + spin_lock_irqsave(&t->task_state_lock, flags); >> t->task_state_flags &= ~SAS_TASK_STATE_PENDING; >> t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; >> t->task_state_flags |= SAS_TASK_STATE_DONE; >> if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> PM8001_FAIL_DBG(pm8001_ha, >> pm8001_printk("task 0x%p done with io_status 0x%x" >> " resp 0x%x stat 0x%x but aborted by upper layer!\n", >> t, event, ts->resp, ts->stat)); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> } else if (t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/* ditto */ >> spin_unlock_irq(&pm8001_ha->lock); >> t->task_done(t); >> spin_lock_irq(&pm8001_ha->lock); >> } else if (!t->uldd_task) { >> - spin_unlock_irq(&t->task_state_lock); >> + spin_unlock_irqrestore(&t->task_state_lock, flags); >> pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); >> mb();/*ditto*/ >> spin_unlock_irq(&pm8001_ha->lock); > >______________________________________________________________________ >This email may contain privileged or confidential information, which should only be used for the purpose for which it was sent by Xyratex. No further rights or licenses are granted to use such information. If you are not the intended recipient of this message, please notify the sender by return and delete it. You may not use, copy, disclose or rely on the information contained in it. > >Internet email is susceptible to data corruption, interception and unauthorised amendment for which Xyratex does not accept liability. While we have taken reasonable precautions to ensure that this email is free of viruses, Xyratex does not accept liability for the presence of any computer viruses in this email, nor for any losses caused as a result of viruses. > >Xyratex Technology Limited (03134912), Registered in England & Wales, Registered Office, Langstone Road, Havant, Hampshire, PO9 1SA. > >The Xyratex group of companies also includes, Xyratex Ltd, registered in Bermuda, Xyratex International Inc, registered in California, Xyratex (Malaysia) Sdn Bhd registered in Malaysia, Xyratex Technology (Wuxi) Co Ltd registered in The People's Republic of China and Xyratex Japan Limited registered in Japan. >______________________________________________________________________ > > > >__________ Information from ESET NOD32 Antivirus, version of virus signature database 5659 (20101129) __________ > >The message was checked by ESET NOD32 Antivirus. > >http://www.eset.com > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-03-11 7:09 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-03-09 8:13 [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state santosh nayak 2012-03-09 8:25 ` santosh nayak 2012-03-09 12:59 ` Mark Salyzyn 2012-03-09 12:59 ` Mark Salyzyn 2012-03-11 7:09 ` jack_wang 2012-03-11 7:09 ` jack_wang 2012-03-11 7:09 ` jack_wang
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.