kernel-janitors.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state.
@ 2012-03-09  8:25 santosh nayak
  2012-03-09 12:59 ` Mark Salyzyn
  0 siblings, 1 reply; 3+ 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] 3+ messages in thread

* Re: [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state.
  2012-03-09  8:25 [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state santosh nayak
@ 2012-03-09 12:59 ` Mark Salyzyn
  2012-03-11  7:09   ` jack_wang
  0 siblings, 1 reply; 3+ 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] 3+ 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
  0 siblings, 0 replies; 3+ 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] 3+ messages in thread

end of thread, other threads:[~2012-03-11  7:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-09  8:25 [PATCH] [SCSI] pm8001: Use spin_lock_irqsave() for task_state santosh nayak
2012-03-09 12:59 ` Mark Salyzyn
2012-03-11  7:09   ` jack_wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).