2012-11-02 16:01:56

by Shan Wei

[permalink] [raw]
Subject: [PATCH v2 5/9] kernel: padata : use this_cpu_read per-cpu helper

From: Shan Wei <[email protected]>


Signed-off-by: Shan Wei <[email protected]>
---
kernel/padata.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/padata.c b/kernel/padata.c
index 89fe3d1..cf94137 100644
--- a/kernel/padata.c
+++ b/kernel/padata.c
@@ -171,7 +171,7 @@ static struct padata_priv *padata_get_next(struct parallel_data *pd)
{
int cpu, num_cpus;
unsigned int next_nr, next_index;
- struct padata_parallel_queue *queue, *next_queue;
+ struct padata_parallel_queue *next_queue;
struct padata_priv *padata;
struct padata_list *reorder;

@@ -204,8 +204,7 @@ static struct padata_priv *padata_get_next(struct parallel_data *pd)
goto out;
}

- queue = per_cpu_ptr(pd->pqueue, smp_processor_id());
- if (queue->cpu_index == next_queue->cpu_index) {
+ if (this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) {
padata = ERR_PTR(-ENODATA);
goto out;
}
--
1.7.1


Subject: Re: [PATCH v2 5/9] kernel: padata : use this_cpu_read per-cpu helper

On Sat, 3 Nov 2012, Shan Wei wrote:

> - queue = per_cpu_ptr(pd->pqueue, smp_processor_id());
> - if (queue->cpu_index == next_queue->cpu_index) {
> + if (this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) {
> padata = ERR_PTR(-ENODATA);

Reviewed-by: Christoph Lameter <[email protected]>

2012-11-03 08:25:08

by Steffen Klassert

[permalink] [raw]
Subject: Re: [PATCH v2 5/9] kernel: padata : use this_cpu_read per-cpu helper

>
> @@ -204,8 +204,7 @@ static struct padata_priv *padata_get_next(struct parallel_data *pd)
> goto out;
> }
>
> - queue = per_cpu_ptr(pd->pqueue, smp_processor_id());
> - if (queue->cpu_index == next_queue->cpu_index) {
> + if (this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) {

This runs with bottom halves off, so we can use __this_cpu_read here.