| From b254f4e77a878dca552eaafb0efef6ead45f3f19 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Sat, 12 Nov 2011 14:00:48 +0100 |
| Subject: [PATCH 226/262] scsi-fcoe-rt-aware.patch |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| --- |
| drivers/scsi/fcoe/fcoe.c | 16 ++++++++-------- |
| drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++-- |
| drivers/scsi/libfc/fc_exch.c | 4 ++-- |
| 3 files changed, 12 insertions(+), 12 deletions(-) |
| |
| diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c |
| index 335e851..7f791b9 100644 |
| --- a/drivers/scsi/fcoe/fcoe.c |
| +++ b/drivers/scsi/fcoe/fcoe.c |
| @@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) |
| struct sk_buff *skb; |
| #ifdef CONFIG_SMP |
| struct fcoe_percpu_s *p0; |
| - unsigned targ_cpu = get_cpu(); |
| + unsigned targ_cpu = get_cpu_light(); |
| #endif /* CONFIG_SMP */ |
| |
| FCOE_DBG("Destroying receive thread for CPU %d\n", cpu); |
| @@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) |
| kfree_skb(skb); |
| spin_unlock_bh(&p->fcoe_rx_list.lock); |
| } |
| - put_cpu(); |
| + put_cpu_light(); |
| #else |
| /* |
| * This a non-SMP scenario where the singular Rx thread is |
| @@ -1494,11 +1494,11 @@ err2: |
| static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen) |
| { |
| struct fcoe_percpu_s *fps; |
| - int rc; |
| + int rc, cpu = get_cpu_light(); |
| |
| - fps = &get_cpu_var(fcoe_percpu); |
| + fps = &per_cpu(fcoe_percpu, cpu); |
| rc = fcoe_get_paged_crc_eof(skb, tlen, fps); |
| - put_cpu_var(fcoe_percpu); |
| + put_cpu_light(); |
| |
| return rc; |
| } |
| @@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) |
| */ |
| hp = (struct fcoe_hdr *) skb_network_header(skb); |
| |
| - stats = per_cpu_ptr(lport->dev_stats, get_cpu()); |
| + stats = per_cpu_ptr(lport->dev_stats, get_cpu_light()); |
| if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) { |
| if (stats->ErrorFrames < 5) |
| printk(KERN_WARNING "fcoe: FCoE version " |
| @@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_buff *skb) |
| goto drop; |
| |
| if (!fcoe_filter_frames(lport, fp)) { |
| - put_cpu(); |
| + put_cpu_light(); |
| fc_exch_recv(lport, fp); |
| return; |
| } |
| drop: |
| stats->ErrorFrames++; |
| - put_cpu(); |
| + put_cpu_light(); |
| kfree_skb(skb); |
| } |
| |
| diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c |
| index 249a106..753fcb9 100644 |
| --- a/drivers/scsi/fcoe/fcoe_ctlr.c |
| +++ b/drivers/scsi/fcoe/fcoe_ctlr.c |
| @@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) |
| unsigned long sel_time = 0; |
| struct fcoe_dev_stats *stats; |
| |
| - stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu()); |
| + stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu_light()); |
| |
| list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { |
| deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2; |
| @@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) |
| sel_time = fcf->time; |
| } |
| } |
| - put_cpu(); |
| + put_cpu_light(); |
| if (sel_time && !fip->sel_fcf && !fip->sel_time) { |
| sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY); |
| fip->sel_time = sel_time; |
| diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c |
| index aceffad..fb4e6ce 100644 |
| --- a/drivers/scsi/libfc/fc_exch.c |
| +++ b/drivers/scsi/libfc/fc_exch.c |
| @@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, |
| } |
| memset(ep, 0, sizeof(*ep)); |
| |
| - cpu = get_cpu(); |
| + cpu = get_cpu_light(); |
| pool = per_cpu_ptr(mp->pool, cpu); |
| spin_lock_bh(&pool->lock); |
| - put_cpu(); |
| + put_cpu_light(); |
| |
| /* peek cache of free slot */ |
| if (pool->left != FC_XID_UNKNOWN) { |
| -- |
| 1.7.10.4 |
| |