Commit b39fe640 authored by Andrew Morton's avatar Andrew Morton Committed by David S. Miller

[PATCH] make list.h barriers smp-only

From: Dipankar Sarma <dipankar@in.ibm.com>

This patch makes the list macros use smp-only version of the barriers,
no need to hurt UP performance.
parent 7dbfb92c
...@@ -84,7 +84,7 @@ static __inline__ void __list_add_rcu(struct list_head * new, ...@@ -84,7 +84,7 @@ static __inline__ void __list_add_rcu(struct list_head * new,
{ {
new->next = next; new->next = next;
new->prev = prev; new->prev = prev;
wmb(); smp_wmb();
next->prev = new; next->prev = new;
prev->next = new; prev->next = new;
} }
...@@ -303,11 +303,11 @@ static inline void list_splice_init(struct list_head *list, ...@@ -303,11 +303,11 @@ static inline void list_splice_init(struct list_head *list,
*/ */
#define list_for_each_rcu(pos, head) \ #define list_for_each_rcu(pos, head) \
for (pos = (head)->next, prefetch(pos->next); pos != (head); \ for (pos = (head)->next, prefetch(pos->next); pos != (head); \
pos = pos->next, ({ read_barrier_depends(); 0;}), prefetch(pos->next)) pos = pos->next, ({ smp_read_barrier_depends(); 0;}), prefetch(pos->next))
#define __list_for_each_rcu(pos, head) \ #define __list_for_each_rcu(pos, head) \
for (pos = (head)->next; pos != (head); \ for (pos = (head)->next; pos != (head); \
pos = pos->next, ({ read_barrier_depends(); 0;})) pos = pos->next, ({ smp_read_barrier_depends(); 0;}))
/** /**
* list_for_each_safe_rcu - iterate over an rcu-protected list safe * list_for_each_safe_rcu - iterate over an rcu-protected list safe
...@@ -318,7 +318,7 @@ static inline void list_splice_init(struct list_head *list, ...@@ -318,7 +318,7 @@ static inline void list_splice_init(struct list_head *list,
*/ */
#define list_for_each_safe_rcu(pos, n, head) \ #define list_for_each_safe_rcu(pos, n, head) \
for (pos = (head)->next, n = pos->next; pos != (head); \ for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, ({ read_barrier_depends(); 0;}), n = pos->next) pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next)
/* /*
* Double linked lists with a single pointer list head. * Double linked lists with a single pointer list head.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment