| Subject: net: Use cpu_chill() instead of cpu_relax() | 
 | From: Thomas Gleixner <tglx@linutronix.de> | 
 | Date: Wed, 07 Mar 2012 21:10:04 +0100 | 
 |  | 
 | Retry loops on RT might loop forever when the modifying side was | 
 | preempted. Use cpu_chill() instead of cpu_relax() to let the system | 
 | make progress. | 
 |  | 
 | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | 
 | Cc: stable-rt@vger.kernel.org | 
 | --- | 
 |  net/packet/af_packet.c |    5 +++-- | 
 |  net/rds/ib_rdma.c      |    3 ++- | 
 |  2 files changed, 5 insertions(+), 3 deletions(-) | 
 |  | 
 | --- a/net/packet/af_packet.c | 
 | +++ b/net/packet/af_packet.c | 
 | @@ -88,6 +88,7 @@ | 
 |  #include <linux/virtio_net.h> | 
 |  #include <linux/errqueue.h> | 
 |  #include <linux/net_tstamp.h> | 
 | +#include <linux/delay.h> | 
 |   | 
 |  #ifdef CONFIG_INET | 
 |  #include <net/inet_common.h> | 
 | @@ -602,7 +603,7 @@ static void prb_retire_rx_blk_timer_expi | 
 |  	if (BLOCK_NUM_PKTS(pbd)) { | 
 |  		while (atomic_read(&pkc->blk_fill_in_prog)) { | 
 |  			/* Waiting for skb_copy_bits to finish... */ | 
 | -			cpu_relax(); | 
 | +			cpu_chill(); | 
 |  		} | 
 |  	} | 
 |   | 
 | @@ -853,7 +854,7 @@ static void prb_retire_current_block(str | 
 |  		if (!(status & TP_STATUS_BLK_TMO)) { | 
 |  			while (atomic_read(&pkc->blk_fill_in_prog)) { | 
 |  				/* Waiting for skb_copy_bits to finish... */ | 
 | -				cpu_relax(); | 
 | +				cpu_chill(); | 
 |  			} | 
 |  		} | 
 |  		prb_close_block(pkc, pbd, po, status); | 
 | --- a/net/rds/ib_rdma.c | 
 | +++ b/net/rds/ib_rdma.c | 
 | @@ -34,6 +34,7 @@ | 
 |  #include <linux/slab.h> | 
 |  #include <linux/rculist.h> | 
 |  #include <linux/llist.h> | 
 | +#include <linux/delay.h> | 
 |   | 
 |  #include "rds.h" | 
 |  #include "ib.h" | 
 | @@ -286,7 +287,7 @@ static inline void wait_clean_list_grace | 
 |  	for_each_online_cpu(cpu) { | 
 |  		flag = &per_cpu(clean_list_grace, cpu); | 
 |  		while (test_bit(CLEAN_LIST_BUSY_BIT, flag)) | 
 | -			cpu_relax(); | 
 | +			cpu_chill(); | 
 |  	} | 
 |  } | 
 |   |