From: Allen Pais <allen.cryptic@gmail.com>
To: jejb@linux.ibm.com, martin.petersen@oracle.com,
kashyap.desai@broadcom.com, sumit.saxena@broadcom.com,
shivasharan.srikanteshwara@broadcom.com
Cc: keescook@chromium.org, linux-scsi@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
target-devel@vger.kernel.org, megaraidlinux.pdl@broadcom.com,
Allen Pais <allen.lkml@gmail.com>,
Romain Perier <romain.perier@gmail.com>
Subject: [PATCH 8/8] scsi: pmcraid: convert tasklets to use new tasklet_setup() API
Date: Mon, 17 Aug 2020 14:24:09 +0530 [thread overview]
Message-ID: <20200817085409.25268-9-allen.cryptic@gmail.com> (raw)
In-Reply-To: <20200817085409.25268-1-allen.cryptic@gmail.com>
From: Allen Pais <allen.lkml@gmail.com>
In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <allen.lkml@gmail.com>
---
drivers/scsi/pmcraid.c | 29 +++++++++++++++--------------
drivers/scsi/pmcraid.h | 9 +++++++--
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index aa9ae2ae8579..b7bbefcbb11d 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4198,7 +4198,7 @@ static irqreturn_t pmcraid_isr_msix(int irq, void *dev_id)
}
}
- tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]));
+ tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]).tasklet);
return IRQ_HANDLED;
}
@@ -4267,7 +4267,7 @@ static irqreturn_t pmcraid_isr(int irq, void *dev_id)
pinstance->int_regs.ioa_host_interrupt_clr_reg);
tasklet_schedule(
- &(pinstance->isr_tasklet[hrrq_id]));
+ &(pinstance->isr_tasklet[hrrq_id].tasklet));
}
}
@@ -4380,20 +4380,20 @@ static void pmcraid_worker_function(struct work_struct *workp)
* Return Value
* None
*/
-static void pmcraid_tasklet_function(unsigned long instance)
+static void pmcraid_tasklet_function(struct tasklet_struct *t)
{
- struct pmcraid_isr_param *hrrq_vector;
- struct pmcraid_instance *pinstance;
+ struct pmcraid_tsk_param *tsk_param = from_tasklet(tsk_param, t,
+ tasklet);
+ int id = tsk_param->isr_tasklet_id;
+ struct pmcraid_instance *pinstance = container_of(tsk_param,
+ typeof(*pinstance),
+ isr_tasklet[id]);
unsigned long hrrq_lock_flags;
unsigned long pending_lock_flags;
unsigned long host_lock_flags;
spinlock_t *lockp; /* hrrq buffer lock */
- int id;
u32 resp;
- hrrq_vector = (struct pmcraid_isr_param *)instance;
- pinstance = hrrq_vector->drv_inst;
- id = hrrq_vector->hrrq_id;
lockp = &(pinstance->hrrq_lock[id]);
/* loop through each of the commands responded by IOA. Each HRRQ buf is
@@ -4882,10 +4882,11 @@ static int pmcraid_allocate_config_buffers(struct pmcraid_instance *pinstance)
static void pmcraid_init_tasklets(struct pmcraid_instance *pinstance)
{
int i;
- for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_init(&pinstance->isr_tasklet[i],
- pmcraid_tasklet_function,
- (unsigned long)&pinstance->hrrq_vector[i]);
+ for (i = 0; i < pinstance->num_hrrq; i++) {
+ pinstance->isr_tasklet[i].isr_tasklet_id = i;
+ tasklet_setup(&pinstance->isr_tasklet[i].tasklet,
+ pmcraid_tasklet_function);
+ }
}
/**
@@ -4900,7 +4901,7 @@ static void pmcraid_kill_tasklets(struct pmcraid_instance *pinstance)
{
int i;
for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_kill(&pinstance->isr_tasklet[i]);
+ tasklet_kill(&pinstance->isr_tasklet[i].tasklet);
}
/**
diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
index 15c962108075..68dab849d4c1 100644
--- a/drivers/scsi/pmcraid.h
+++ b/drivers/scsi/pmcraid.h
@@ -617,6 +617,11 @@ struct pmcraid_isr_param {
u8 hrrq_id; /* hrrq entry index */
};
+/* Tasklet parameters (one for each enabled tasklet) */
+struct pmcraid_tsk_param {
+ struct tasklet_struct tasklet;
+ u8 isr_tasklet_id; /* isr_tasklet entry index */
+};
/* AEN message header sent as part of event data to applications */
struct pmcraid_aen_msg {
@@ -752,8 +757,8 @@ struct pmcraid_instance {
spinlock_t free_pool_lock; /* free pool lock */
spinlock_t pending_pool_lock; /* pending pool lock */
- /* Tasklet to handle deferred processing */
- struct tasklet_struct isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
+ /* Tasklet parameters and tasklets to handle deferred processing */
+ struct pmcraid_tsk_param isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
/* Work-queue (Shared) for deferred reset processing */
struct work_struct worker_q;
--
2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Allen Pais <allen.cryptic@gmail.com>
To: jejb@linux.ibm.com, martin.petersen@oracle.com,
kashyap.desai@broadcom.com, sumit.saxena@broadcom.com,
shivasharan.srikanteshwara@broadcom.com
Cc: keescook@chromium.org, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org, Allen Pais <allen.lkml@gmail.com>,
target-devel@vger.kernel.org,
Romain Perier <romain.perier@gmail.com>,
linuxppc-dev@lists.ozlabs.org, megaraidlinux.pdl@broadcom.com
Subject: [PATCH 8/8] scsi: pmcraid: convert tasklets to use new tasklet_setup() API
Date: Mon, 17 Aug 2020 14:24:09 +0530 [thread overview]
Message-ID: <20200817085409.25268-9-allen.cryptic@gmail.com> (raw)
In-Reply-To: <20200817085409.25268-1-allen.cryptic@gmail.com>
From: Allen Pais <allen.lkml@gmail.com>
In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <allen.lkml@gmail.com>
---
drivers/scsi/pmcraid.c | 29 +++++++++++++++--------------
drivers/scsi/pmcraid.h | 9 +++++++--
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index aa9ae2ae8579..b7bbefcbb11d 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4198,7 +4198,7 @@ static irqreturn_t pmcraid_isr_msix(int irq, void *dev_id)
}
}
- tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]));
+ tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]).tasklet);
return IRQ_HANDLED;
}
@@ -4267,7 +4267,7 @@ static irqreturn_t pmcraid_isr(int irq, void *dev_id)
pinstance->int_regs.ioa_host_interrupt_clr_reg);
tasklet_schedule(
- &(pinstance->isr_tasklet[hrrq_id]));
+ &(pinstance->isr_tasklet[hrrq_id].tasklet));
}
}
@@ -4380,20 +4380,20 @@ static void pmcraid_worker_function(struct work_struct *workp)
* Return Value
* None
*/
-static void pmcraid_tasklet_function(unsigned long instance)
+static void pmcraid_tasklet_function(struct tasklet_struct *t)
{
- struct pmcraid_isr_param *hrrq_vector;
- struct pmcraid_instance *pinstance;
+ struct pmcraid_tsk_param *tsk_param = from_tasklet(tsk_param, t,
+ tasklet);
+ int id = tsk_param->isr_tasklet_id;
+ struct pmcraid_instance *pinstance = container_of(tsk_param,
+ typeof(*pinstance),
+ isr_tasklet[id]);
unsigned long hrrq_lock_flags;
unsigned long pending_lock_flags;
unsigned long host_lock_flags;
spinlock_t *lockp; /* hrrq buffer lock */
- int id;
u32 resp;
- hrrq_vector = (struct pmcraid_isr_param *)instance;
- pinstance = hrrq_vector->drv_inst;
- id = hrrq_vector->hrrq_id;
lockp = &(pinstance->hrrq_lock[id]);
/* loop through each of the commands responded by IOA. Each HRRQ buf is
@@ -4882,10 +4882,11 @@ static int pmcraid_allocate_config_buffers(struct pmcraid_instance *pinstance)
static void pmcraid_init_tasklets(struct pmcraid_instance *pinstance)
{
int i;
- for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_init(&pinstance->isr_tasklet[i],
- pmcraid_tasklet_function,
- (unsigned long)&pinstance->hrrq_vector[i]);
+ for (i = 0; i < pinstance->num_hrrq; i++) {
+ pinstance->isr_tasklet[i].isr_tasklet_id = i;
+ tasklet_setup(&pinstance->isr_tasklet[i].tasklet,
+ pmcraid_tasklet_function);
+ }
}
/**
@@ -4900,7 +4901,7 @@ static void pmcraid_kill_tasklets(struct pmcraid_instance *pinstance)
{
int i;
for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_kill(&pinstance->isr_tasklet[i]);
+ tasklet_kill(&pinstance->isr_tasklet[i].tasklet);
}
/**
diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
index 15c962108075..68dab849d4c1 100644
--- a/drivers/scsi/pmcraid.h
+++ b/drivers/scsi/pmcraid.h
@@ -617,6 +617,11 @@ struct pmcraid_isr_param {
u8 hrrq_id; /* hrrq entry index */
};
+/* Tasklet parameters (one for each enabled tasklet) */
+struct pmcraid_tsk_param {
+ struct tasklet_struct tasklet;
+ u8 isr_tasklet_id; /* isr_tasklet entry index */
+};
/* AEN message header sent as part of event data to applications */
struct pmcraid_aen_msg {
@@ -752,8 +757,8 @@ struct pmcraid_instance {
spinlock_t free_pool_lock; /* free pool lock */
spinlock_t pending_pool_lock; /* pending pool lock */
- /* Tasklet to handle deferred processing */
- struct tasklet_struct isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
+ /* Tasklet parameters and tasklets to handle deferred processing */
+ struct pmcraid_tsk_param isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
/* Work-queue (Shared) for deferred reset processing */
struct work_struct worker_q;
--
2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Allen Pais <allen.cryptic@gmail.com>
To: jejb@linux.ibm.com, martin.petersen@oracle.com,
kashyap.desai@broadcom.com, sumit.saxena@broadcom.com,
shivasharan.srikanteshwara@broadcom.com
Cc: keescook@chromium.org, linux-scsi@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
target-devel@vger.kernel.org, megaraidlinux.pdl@broadcom.com,
Allen Pais <allen.lkml@gmail.com>,
Romain Perier <romain.perier@gmail.com>
Subject: [PATCH 8/8] scsi: pmcraid: convert tasklets to use new tasklet_setup() API
Date: Mon, 17 Aug 2020 08:55:18 +0000 [thread overview]
Message-ID: <20200817085409.25268-9-allen.cryptic@gmail.com> (raw)
In-Reply-To: <20200817085409.25268-1-allen.cryptic@gmail.com>
From: Allen Pais <allen.lkml@gmail.com>
In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <allen.lkml@gmail.com>
---
drivers/scsi/pmcraid.c | 29 +++++++++++++++--------------
drivers/scsi/pmcraid.h | 9 +++++++--
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index aa9ae2ae8579..b7bbefcbb11d 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4198,7 +4198,7 @@ static irqreturn_t pmcraid_isr_msix(int irq, void *dev_id)
}
}
- tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]));
+ tasklet_schedule(&(pinstance->isr_tasklet[hrrq_id]).tasklet);
return IRQ_HANDLED;
}
@@ -4267,7 +4267,7 @@ static irqreturn_t pmcraid_isr(int irq, void *dev_id)
pinstance->int_regs.ioa_host_interrupt_clr_reg);
tasklet_schedule(
- &(pinstance->isr_tasklet[hrrq_id]));
+ &(pinstance->isr_tasklet[hrrq_id].tasklet));
}
}
@@ -4380,20 +4380,20 @@ static void pmcraid_worker_function(struct work_struct *workp)
* Return Value
* None
*/
-static void pmcraid_tasklet_function(unsigned long instance)
+static void pmcraid_tasklet_function(struct tasklet_struct *t)
{
- struct pmcraid_isr_param *hrrq_vector;
- struct pmcraid_instance *pinstance;
+ struct pmcraid_tsk_param *tsk_param = from_tasklet(tsk_param, t,
+ tasklet);
+ int id = tsk_param->isr_tasklet_id;
+ struct pmcraid_instance *pinstance = container_of(tsk_param,
+ typeof(*pinstance),
+ isr_tasklet[id]);
unsigned long hrrq_lock_flags;
unsigned long pending_lock_flags;
unsigned long host_lock_flags;
spinlock_t *lockp; /* hrrq buffer lock */
- int id;
u32 resp;
- hrrq_vector = (struct pmcraid_isr_param *)instance;
- pinstance = hrrq_vector->drv_inst;
- id = hrrq_vector->hrrq_id;
lockp = &(pinstance->hrrq_lock[id]);
/* loop through each of the commands responded by IOA. Each HRRQ buf is
@@ -4882,10 +4882,11 @@ static int pmcraid_allocate_config_buffers(struct pmcraid_instance *pinstance)
static void pmcraid_init_tasklets(struct pmcraid_instance *pinstance)
{
int i;
- for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_init(&pinstance->isr_tasklet[i],
- pmcraid_tasklet_function,
- (unsigned long)&pinstance->hrrq_vector[i]);
+ for (i = 0; i < pinstance->num_hrrq; i++) {
+ pinstance->isr_tasklet[i].isr_tasklet_id = i;
+ tasklet_setup(&pinstance->isr_tasklet[i].tasklet,
+ pmcraid_tasklet_function);
+ }
}
/**
@@ -4900,7 +4901,7 @@ static void pmcraid_kill_tasklets(struct pmcraid_instance *pinstance)
{
int i;
for (i = 0; i < pinstance->num_hrrq; i++)
- tasklet_kill(&pinstance->isr_tasklet[i]);
+ tasklet_kill(&pinstance->isr_tasklet[i].tasklet);
}
/**
diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
index 15c962108075..68dab849d4c1 100644
--- a/drivers/scsi/pmcraid.h
+++ b/drivers/scsi/pmcraid.h
@@ -617,6 +617,11 @@ struct pmcraid_isr_param {
u8 hrrq_id; /* hrrq entry index */
};
+/* Tasklet parameters (one for each enabled tasklet) */
+struct pmcraid_tsk_param {
+ struct tasklet_struct tasklet;
+ u8 isr_tasklet_id; /* isr_tasklet entry index */
+};
/* AEN message header sent as part of event data to applications */
struct pmcraid_aen_msg {
@@ -752,8 +757,8 @@ struct pmcraid_instance {
spinlock_t free_pool_lock; /* free pool lock */
spinlock_t pending_pool_lock; /* pending pool lock */
- /* Tasklet to handle deferred processing */
- struct tasklet_struct isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
+ /* Tasklet parameters and tasklets to handle deferred processing */
+ struct pmcraid_tsk_param isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
/* Work-queue (Shared) for deferred reset processing */
struct work_struct worker_q;
--
2.17.1
next prev parent reply other threads:[~2020-08-17 8:55 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-17 8:54 [PATCH 0/8] scsi: convert tasklets to use new tasklet_setup() Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 1/8] scsi: aic94xx: convert tasklets to use new tasklet_setup() API Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 2/8] scsi: esas2r: " Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 3/8] scsi: ibmvscsi: " Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 4/8] scsi: isci: " Allen Pais
2020-08-17 8:55 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 5/8] scsi: megaraid: " Allen Pais
2020-08-17 8:55 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 6/8] scsi: mvsas: " Allen Pais
2020-08-17 8:55 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` [PATCH 7/8] scsi: pm8001: " Allen Pais
2020-08-17 8:55 ` Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 8:54 ` Allen Pais [this message]
2020-08-17 8:55 ` [PATCH 8/8] scsi: pmcraid: " Allen Pais
2020-08-17 8:54 ` Allen Pais
2020-08-17 14:41 ` [PATCH 0/8] scsi: convert tasklets to use new tasklet_setup() James Bottomley
2020-08-17 14:41 ` James Bottomley
2020-08-17 14:41 ` James Bottomley
2020-08-17 19:28 ` Kees Cook
2020-08-17 19:28 ` Kees Cook
2020-08-17 19:28 ` Kees Cook
2020-08-17 19:57 ` James Bottomley
2020-08-17 19:57 ` James Bottomley
2020-08-17 19:57 ` James Bottomley
2020-09-01 10:06 ` Allen
2020-09-01 10:18 ` Allen
2020-09-01 10:06 ` Allen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200817085409.25268-9-allen.cryptic@gmail.com \
--to=allen.cryptic@gmail.com \
--cc=allen.lkml@gmail.com \
--cc=jejb@linux.ibm.com \
--cc=kashyap.desai@broadcom.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=martin.petersen@oracle.com \
--cc=megaraidlinux.pdl@broadcom.com \
--cc=romain.perier@gmail.com \
--cc=shivasharan.srikanteshwara@broadcom.com \
--cc=sumit.saxena@broadcom.com \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.