* [PATCH 1/2] scsi: aacraid: change wait_sem to a completion
@ 2018-12-10 21:32 Arnd Bergmann
2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Arnd Bergmann @ 2018-12-10 21:32 UTC (permalink / raw)
To: Adaptec OEM Raid Solutions, James E.J. Bottomley,
Martin K. Petersen
Cc: Arnd Bergmann, Raghava Aditya Renukunta, Prasad B Munirathnam,
Dave Carroll, Dan Carpenter, Johannes Thumshirn, linux-scsi,
linux-kernel
The wait_sem member is used like a completion, so we should
use the respective API. The behavior is unchanged.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/scsi/aacraid/aacraid.h | 2 +-
drivers/scsi/aacraid/commctrl.c | 4 ++--
drivers/scsi/aacraid/commsup.c | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 39eb415987fc..531a0b9a58f8 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -1241,7 +1241,7 @@ struct aac_fib_context {
u32 unique; // unique value representing this context
ulong jiffies; // used for cleanup - dmb changed to ulong
struct list_head next; // used to link context's into a linked list
- struct semaphore wait_sem; // this is used to wait for the next fib to arrive.
+ struct completion completion; // this is used to wait for the next fib to arrive.
int wait; // Set to true when thread is in WaitForSingleObject
unsigned long count; // total number of FIBs on FibList
struct list_head fib_list; // this holds fibs and their attachd hw_fibs
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index 25f6600d6c09..6a6ad9477786 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -203,7 +203,7 @@ static int open_getadapter_fib(struct aac_dev * dev, void __user *arg)
/*
* Initialize the mutex used to wait for the next AIF.
*/
- sema_init(&fibctx->wait_sem, 0);
+ init_completion(&fibctx->completion);
fibctx->wait = 0;
/*
* Initialize the fibs and set the count of fibs on
@@ -335,7 +335,7 @@ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg)
ssleep(1);
}
if (f.wait) {
- if(down_interruptible(&fibctx->wait_sem) < 0) {
+ if (wait_for_completion_interruptible(&fibctx->completion) < 0) {
status = -ERESTARTSYS;
} else {
/* Lock again and retry */
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 1e77d96a18f2..7ed51a77e39d 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -1828,7 +1828,7 @@ int aac_check_health(struct aac_dev * aac)
* Set the event to wake up the
* thread that will waiting.
*/
- up(&fibctx->wait_sem);
+ complete(&fibctx->completion);
} else {
printk(KERN_WARNING "aifd: didn't allocate NewFib.\n");
kfree(fib);
@@ -2165,7 +2165,7 @@ static void wakeup_fibctx_threads(struct aac_dev *dev,
* Set the event to wake up the
* thread that is waiting.
*/
- up(&fibctx->wait_sem);
+ complete(&fibctx->completion);
entry = entry->next;
}
--
2.20.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/2] scsi: aacraid: change event_wait to a completion 2018-12-10 21:32 [PATCH 1/2] scsi: aacraid: change wait_sem to a completion Arnd Bergmann @ 2018-12-10 21:32 ` Arnd Bergmann 2018-12-11 7:44 ` Johannes Thumshirn 2018-12-11 16:29 ` Dave.Carroll 2018-12-11 7:44 ` [PATCH 1/2] scsi: aacraid: change wait_sem " Johannes Thumshirn ` (2 subsequent siblings) 3 siblings, 2 replies; 7+ messages in thread From: Arnd Bergmann @ 2018-12-10 21:32 UTC (permalink / raw) To: Adaptec OEM Raid Solutions, James E.J. Bottomley, Martin K. Petersen Cc: Arnd Bergmann, Raghava Aditya Renukunta, Prasad B Munirathnam, Dave Carroll, Dan Carpenter, Johannes Thumshirn, linux-scsi, linux-kernel The event_wait semaphore has completion semantics, so we can change it over to the completion interface for clarity without changing the behavior. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/scsi/aacraid/aacraid.h | 3 ++- drivers/scsi/aacraid/commctrl.c | 1 - drivers/scsi/aacraid/commsup.c | 15 +++++++-------- drivers/scsi/aacraid/dpcsup.c | 19 +++++++++---------- drivers/scsi/aacraid/linit.c | 2 +- drivers/scsi/aacraid/src.c | 2 +- 6 files changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 531a0b9a58f8..3291d1c16864 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h @@ -40,6 +40,7 @@ #define nblank(x) _nblank(x)[0] #include <linux/interrupt.h> +#include <linux/completion.h> #include <linux/pci.h> #include <scsi/scsi_host.h> @@ -1313,7 +1314,7 @@ struct fib { * This is the event the sendfib routine will wait on if the * caller did not pass one and this is synch io. */ - struct semaphore event_wait; + struct completion event_wait; spinlock_t event_lock; u32 done; /* gets set to 1 when fib is complete */ diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c index 6a6ad9477786..e2899ff7913e 100644 --- a/drivers/scsi/aacraid/commctrl.c +++ b/drivers/scsi/aacraid/commctrl.c @@ -41,7 +41,6 @@ #include <linux/blkdev.h> #include <linux/delay.h> /* ssleep prototype */ #include <linux/kthread.h> -#include <linux/semaphore.h> #include <linux/uaccess.h> #include <scsi/scsi_host.h> diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index 7ed51a77e39d..d5a6aa9676c8 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c @@ -44,7 +44,6 @@ #include <linux/delay.h> #include <linux/kthread.h> #include <linux/interrupt.h> -#include <linux/semaphore.h> #include <linux/bcd.h> #include <scsi/scsi.h> #include <scsi/scsi_host.h> @@ -189,7 +188,7 @@ int aac_fib_setup(struct aac_dev * dev) fibptr->hw_fib_va = hw_fib; fibptr->data = (void *) fibptr->hw_fib_va->data; fibptr->next = fibptr+1; /* Forward chain the fibs */ - sema_init(&fibptr->event_wait, 0); + init_completion(&fibptr->event_wait); spin_lock_init(&fibptr->event_lock); hw_fib->header.XferState = cpu_to_le32(0xffffffff); hw_fib->header.SenderSize = @@ -623,7 +622,7 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, } if (wait) { fibptr->flags |= FIB_CONTEXT_FLAG_WAIT; - if (down_interruptible(&fibptr->event_wait)) { + if (wait_for_completion_interruptible(&fibptr->event_wait)) { fibptr->flags &= ~FIB_CONTEXT_FLAG_WAIT; return -EFAULT; } @@ -659,7 +658,7 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, * hardware failure has occurred. */ unsigned long timeout = jiffies + (180 * HZ); /* 3 minutes */ - while (down_trylock(&fibptr->event_wait)) { + while (!try_wait_for_completion(&fibptr->event_wait)) { int blink; if (time_is_before_eq_jiffies(timeout)) { struct aac_queue * q = &dev->queues->queue[AdapNormCmdQueue]; @@ -689,9 +688,9 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, */ schedule(); } - } else if (down_interruptible(&fibptr->event_wait)) { + } else if (wait_for_completion_interruptible(&fibptr->event_wait)) { /* Do nothing ... satisfy - * down_interruptible must_check */ + * wait_for_completion_interruptible must_check */ } spin_lock_irqsave(&fibptr->event_lock, flags); @@ -777,7 +776,7 @@ int aac_hba_send(u8 command, struct fib *fibptr, fib_callback callback, return -EFAULT; fibptr->flags |= FIB_CONTEXT_FLAG_WAIT; - if (down_interruptible(&fibptr->event_wait)) + if (wait_for_completion_interruptible(&fibptr->event_wait)) fibptr->done = 2; fibptr->flags &= ~(FIB_CONTEXT_FLAG_WAIT); @@ -1538,7 +1537,7 @@ static int _aac_reset_adapter(struct aac_dev *aac, int forced, u8 reset_type) || fib->flags & FIB_CONTEXT_FLAG_WAIT) { unsigned long flagv; spin_lock_irqsave(&fib->event_lock, flagv); - up(&fib->event_wait); + complete(&fib->event_wait); spin_unlock_irqrestore(&fib->event_lock, flagv); schedule(); retval = 0; diff --git a/drivers/scsi/aacraid/dpcsup.c b/drivers/scsi/aacraid/dpcsup.c index ddc69738375f..40a771dd1c0e 100644 --- a/drivers/scsi/aacraid/dpcsup.c +++ b/drivers/scsi/aacraid/dpcsup.c @@ -38,7 +38,6 @@ #include <linux/slab.h> #include <linux/completion.h> #include <linux/blkdev.h> -#include <linux/semaphore.h> #include "aacraid.h" @@ -129,7 +128,7 @@ unsigned int aac_response_normal(struct aac_queue * q) spin_lock_irqsave(&fib->event_lock, flagv); if (!fib->done) { fib->done = 1; - up(&fib->event_wait); + complete(&fib->event_wait); } spin_unlock_irqrestore(&fib->event_lock, flagv); @@ -376,16 +375,16 @@ unsigned int aac_intr_normal(struct aac_dev *dev, u32 index, int isAif, start_callback = 1; } else { unsigned long flagv; - int complete = 0; + int completed = 0; dprintk((KERN_INFO "event_wait up\n")); spin_lock_irqsave(&fib->event_lock, flagv); if (fib->done == 2) { fib->done = 1; - complete = 1; + completed = 1; } else { fib->done = 1; - up(&fib->event_wait); + complete(&fib->event_wait); } spin_unlock_irqrestore(&fib->event_lock, flagv); @@ -395,7 +394,7 @@ unsigned int aac_intr_normal(struct aac_dev *dev, u32 index, int isAif, mflags); FIB_COUNTER_INCREMENT(aac_config.NativeRecved); - if (complete) + if (completed) aac_fib_complete(fib); } } else { @@ -428,16 +427,16 @@ unsigned int aac_intr_normal(struct aac_dev *dev, u32 index, int isAif, start_callback = 1; } else { unsigned long flagv; - int complete = 0; + int completed = 0; dprintk((KERN_INFO "event_wait up\n")); spin_lock_irqsave(&fib->event_lock, flagv); if (fib->done == 2) { fib->done = 1; - complete = 1; + completed = 1; } else { fib->done = 1; - up(&fib->event_wait); + complete(&fib->event_wait); } spin_unlock_irqrestore(&fib->event_lock, flagv); @@ -447,7 +446,7 @@ unsigned int aac_intr_normal(struct aac_dev *dev, u32 index, int isAif, mflags); FIB_COUNTER_INCREMENT(aac_config.NormalRecved); - if (complete) + if (completed) aac_fib_complete(fib); } } diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 42defee90eb2..1c5d54c2f031 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c @@ -1560,7 +1560,7 @@ static void __aac_shutdown(struct aac_dev * aac) struct fib *fib = &aac->fibs[i]; if (!(fib->hw_fib_va->header.XferState & cpu_to_le32(NoResponseExpected | Async)) && (fib->hw_fib_va->header.XferState & cpu_to_le32(ResponseExpected))) - up(&fib->event_wait); + complete(&fib->event_wait); } kthread_stop(aac->thread); aac->thread = NULL; diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c index 7a51ccfa8662..8377aec0649d 100644 --- a/drivers/scsi/aacraid/src.c +++ b/drivers/scsi/aacraid/src.c @@ -106,7 +106,7 @@ static irqreturn_t aac_src_intr_message(int irq, void *dev_id) spin_lock_irqsave(&dev->sync_fib->event_lock, sflags); if (dev->sync_fib->flags & FIB_CONTEXT_FLAG_WAIT) { dev->management_fib_count--; - up(&dev->sync_fib->event_wait); + complete(&dev->sync_fib->event_wait); } spin_unlock_irqrestore(&dev->sync_fib->event_lock, sflags); -- 2.20.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] scsi: aacraid: change event_wait to a completion 2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann @ 2018-12-11 7:44 ` Johannes Thumshirn 2018-12-11 16:29 ` Dave.Carroll 1 sibling, 0 replies; 7+ messages in thread From: Johannes Thumshirn @ 2018-12-11 7:44 UTC (permalink / raw) To: Arnd Bergmann, Adaptec OEM Raid Solutions, James E.J. Bottomley, Martin K. Petersen Cc: Raghava Aditya Renukunta, Prasad B Munirathnam, Dave Carroll, Dan Carpenter, linux-scsi, linux-kernel Looks good, Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> -- Johannes Thumshirn SUSE Labs Filesystems jthumshirn@suse.de +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 2/2] scsi: aacraid: change event_wait to a completion 2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann 2018-12-11 7:44 ` Johannes Thumshirn @ 2018-12-11 16:29 ` Dave.Carroll 1 sibling, 0 replies; 7+ messages in thread From: Dave.Carroll @ 2018-12-11 16:29 UTC (permalink / raw) To: arnd, aacraid, jejb, martin.petersen Cc: RaghavaAditya.Renukunta, prasad.munirathnam, david.carroll, dan.carpenter, jthumshirn, linux-scsi, linux-kernel > -----Original Message----- > From: linux-scsi-owner@vger.kernel.org [mailto:linux-scsi- > owner@vger.kernel.org] On Behalf Of Arnd Bergmann > Sent: Monday, December 10, 2018 1:33 PM > To: Adaptec OEM Raid Solutions <aacraid@microsemi.com>; James E.J. > Bottomley <jejb@linux.ibm.com>; Martin K. Petersen > <martin.petersen@oracle.com> > Cc: Arnd Bergmann <arnd@arndb.de>; Raghava Aditya Renukunta > <RaghavaAditya.Renukunta@microsemi.com>; Prasad B Munirathnam > <prasad.munirathnam@microsemi.com>; Dave Carroll > <david.carroll@microsemi.com>; Dan Carpenter > <dan.carpenter@oracle.com>; Johannes Thumshirn <jthumshirn@suse.de>; > linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH 2/2] scsi: aacraid: change event_wait to a completion > > The event_wait semaphore has completion semantics, so we can change it > over to the completion interface for clarity without changing the behavior. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- Reviewed-by: Dave Carroll <david.carroll@microsemi.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] scsi: aacraid: change wait_sem to a completion 2018-12-10 21:32 [PATCH 1/2] scsi: aacraid: change wait_sem to a completion Arnd Bergmann 2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann @ 2018-12-11 7:44 ` Johannes Thumshirn 2018-12-11 16:31 ` Dave.Carroll 2018-12-13 1:36 ` Martin K. Petersen 3 siblings, 0 replies; 7+ messages in thread From: Johannes Thumshirn @ 2018-12-11 7:44 UTC (permalink / raw) To: Arnd Bergmann, Adaptec OEM Raid Solutions, James E.J. Bottomley, Martin K. Petersen Cc: Raghava Aditya Renukunta, Prasad B Munirathnam, Dave Carroll, Dan Carpenter, linux-scsi, linux-kernel Looks good, Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> -- Johannes Thumshirn SUSE Labs Filesystems jthumshirn@suse.de +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 1/2] scsi: aacraid: change wait_sem to a completion 2018-12-10 21:32 [PATCH 1/2] scsi: aacraid: change wait_sem to a completion Arnd Bergmann 2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann 2018-12-11 7:44 ` [PATCH 1/2] scsi: aacraid: change wait_sem " Johannes Thumshirn @ 2018-12-11 16:31 ` Dave.Carroll 2018-12-13 1:36 ` Martin K. Petersen 3 siblings, 0 replies; 7+ messages in thread From: Dave.Carroll @ 2018-12-11 16:31 UTC (permalink / raw) To: arnd, aacraid, jejb, martin.petersen Cc: RaghavaAditya.Renukunta, prasad.munirathnam, david.carroll, dan.carpenter, jthumshirn, linux-scsi, linux-kernel > -----Original Message----- > From: linux-scsi-owner@vger.kernel.org [mailto:linux-scsi- > owner@vger.kernel.org] On Behalf Of Arnd Bergmann > Sent: Monday, December 10, 2018 1:33 PM > To: Adaptec OEM Raid Solutions <aacraid@microsemi.com>; James E.J. > Bottomley <jejb@linux.ibm.com>; Martin K. Petersen > <martin.petersen@oracle.com> > Cc: Arnd Bergmann <arnd@arndb.de>; Raghava Aditya Renukunta > <RaghavaAditya.Renukunta@microsemi.com>; Prasad B Munirathnam > <prasad.munirathnam@microsemi.com>; Dave Carroll > <david.carroll@microsemi.com>; Dan Carpenter > <dan.carpenter@oracle.com>; Johannes Thumshirn <jthumshirn@suse.de>; > linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH 1/2] scsi: aacraid: change wait_sem to a completion > > The wait_sem member is used like a completion, so we should use the > respective API. The behavior is unchanged. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- Reviewed-by: Dave Carroll <david.carroll@microsemi.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] scsi: aacraid: change wait_sem to a completion 2018-12-10 21:32 [PATCH 1/2] scsi: aacraid: change wait_sem to a completion Arnd Bergmann ` (2 preceding siblings ...) 2018-12-11 16:31 ` Dave.Carroll @ 2018-12-13 1:36 ` Martin K. Petersen 3 siblings, 0 replies; 7+ messages in thread From: Martin K. Petersen @ 2018-12-13 1:36 UTC (permalink / raw) To: Arnd Bergmann Cc: Adaptec OEM Raid Solutions, James E.J. Bottomley, Martin K. Petersen, Raghava Aditya Renukunta, Prasad B Munirathnam, Dave Carroll, Dan Carpenter, Johannes Thumshirn, linux-scsi, linux-kernel Arnd, > The wait_sem member is used like a completion, so we should use the > respective API. The behavior is unchanged. Applied to 4.21/scsi-queue. Thank you! -- Martin K. Petersen Oracle Linux Engineering ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-12-13 1:36 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-12-10 21:32 [PATCH 1/2] scsi: aacraid: change wait_sem to a completion Arnd Bergmann 2018-12-10 21:32 ` [PATCH 2/2] scsi: aacraid: change event_wait " Arnd Bergmann 2018-12-11 7:44 ` Johannes Thumshirn 2018-12-11 16:29 ` Dave.Carroll 2018-12-11 7:44 ` [PATCH 1/2] scsi: aacraid: change wait_sem " Johannes Thumshirn 2018-12-11 16:31 ` Dave.Carroll 2018-12-13 1:36 ` Martin K. Petersen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox