lkml.org 
[lkml]   [2012]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v1 2/8] dmaengine: rebalance DMA channels when CPU hotplug happens
    Date
    Rebalance DMA channels when CPU hotplug happens to correctly update
    DMA channel reference count.

    Signed-off-by: Jiang Liu <liuj97@gmail.com>
    ---
    drivers/dma/dmaengine.c | 22 ++++++++++++++++++++++
    1 files changed, 22 insertions(+), 0 deletions(-)

    diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
    index 5b6ad58..198d891 100644
    --- a/drivers/dma/dmaengine.c
    +++ b/drivers/dma/dmaengine.c
    @@ -49,6 +49,7 @@
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/mm.h>
    +#include <linux/cpu.h>
    #include <linux/device.h>
    #include <linux/dmaengine.h>
    #include <linux/hardirq.h>
    @@ -1008,8 +1009,29 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx)
    }
    EXPORT_SYMBOL_GPL(dma_run_dependencies);

    +static int __cpuinit
    +hotcpu_rebalance(struct notifier_block *nfb, unsigned long action, void *hcpu)
    +{
    + switch (action) {
    + case CPU_ONLINE:
    + case CPU_POST_DEAD:
    + mutex_lock(&dma_list_mutex);
    + dma_channel_rebalance();
    + mutex_unlock(&dma_list_mutex);
    + break;
    + }
    +
    + return NOTIFY_OK;
    +}
    +
    +static struct notifier_block __refdata dma_cpu_notifier = {
    + .notifier_call = hotcpu_rebalance,
    +};
    +
    +
    static int __init dma_bus_init(void)
    {
    + register_hotcpu_notifier(&dma_cpu_notifier);
    return class_register(&dma_devclass);
    }
    arch_initcall(dma_bus_init);
    --
    1.7.5.4


    \
     
     \ /
      Last update: 2012-04-23 16:01    [W:0.038 / U:29.772 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site