scsi-fcoe-rt-aware.patch
authorThomas Gleixner <tglx@linutronix.de>
Sat, 12 Nov 2011 13:00:48 +0000 (14:00 +0100)
committerClark Williams <williams@redhat.com>
Wed, 15 Feb 2012 16:33:03 +0000 (10:33 -0600)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/scsi/fcoe/fcoe.c
drivers/scsi/fcoe/fcoe_ctlr.c
drivers/scsi/libfc/fc_exch.c

index 8d67467dd9cec100f52b51803fbe943192421a58..4085187de539b28bad244c1639cc667eddde54f3 100644 (file)
@@ -1156,7 +1156,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);
@@ -1212,7 +1212,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
@@ -1435,11 +1435,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;
 }
@@ -1680,7 +1680,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 "
@@ -1712,13 +1712,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);
 }
 
index e7522dcc296eb8bb9c425da842f2a159d05862f2..bfb83c08a3e853094e213e3eb082a1ab55080ae3 100644 (file)
@@ -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;
index 9de9db27e87401b1f5cf244a15e9320011faa276..340998f662dccde6a1b23b917cd850b35832cafb 100644 (file)
@@ -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) {