Use cpu alloc for the crypto subsystem. Signed-off-by: Christoph Lameter --- crypto/async_tx/async_tx.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) Index: linux-2.6/crypto/async_tx/async_tx.c =================================================================== --- linux-2.6.orig/crypto/async_tx/async_tx.c 2008-04-29 14:55:49.000000000 -0700 +++ linux-2.6/crypto/async_tx/async_tx.c 2008-05-21 22:01:42.000000000 -0700 @@ -221,10 +221,10 @@ for_each_dma_cap_mask(cap, dma_cap_mask_all) for_each_possible_cpu(cpu) { struct dma_chan_ref *ref = - per_cpu_ptr(channel_table[cap], cpu)->ref; + CPU_PTR(channel_table[cap], cpu)->ref; if (ref) { atomic_set(&ref->count, 0); - per_cpu_ptr(channel_table[cap], cpu)->ref = + CPU_PTR(channel_table[cap], cpu)->ref = NULL; } } @@ -237,7 +237,7 @@ else new = get_chan_ref_by_cap(cap, -1); - per_cpu_ptr(channel_table[cap], cpu)->ref = new; + CPU_PTR(channel_table[cap], cpu)->ref = new; } spin_unlock_irqrestore(&async_tx_lock, flags); @@ -341,7 +341,8 @@ clear_bit(DMA_INTERRUPT, dma_cap_mask_all.bits); for_each_dma_cap_mask(cap, dma_cap_mask_all) { - channel_table[cap] = alloc_percpu(struct chan_ref_percpu); + channel_table[cap] = CPU_ALLOC(struct chan_ref_percpu, + GFP_KERNEL | __GFP_ZERO); if (!channel_table[cap]) goto err; } @@ -357,7 +358,7 @@ printk(KERN_ERR "async_tx: initialization failure\n"); while (--cap >= 0) - free_percpu(channel_table[cap]); + CPU_FREE(channel_table[cap]); return 1; } @@ -370,7 +371,7 @@ for_each_dma_cap_mask(cap, dma_cap_mask_all) if (channel_table[cap]) - free_percpu(channel_table[cap]); + CPU_FREE(channel_table[cap]); dma_async_client_unregister(&async_tx_dma); } @@ -390,10 +391,8 @@ dma_has_cap(tx_type, depend_tx->chan->device->cap_mask)) return depend_tx->chan; else if (likely(channel_table_initialized)) { - struct dma_chan_ref *ref; - int cpu = get_cpu(); - ref = per_cpu_ptr(channel_table[tx_type], cpu)->ref; - put_cpu(); + struct dma_chan_ref *ref = + _CPU_READ(channel_table[tx_type]->ref); return ref ? ref->chan : NULL; } else return NULL; -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/