From 838cc704ce5c8ab2a6d64d1324e37e040fcae3d8 Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Mon, 4 Mar 2013 11:09:28 +0200 Subject: dmatest: move dmatest_channels and nr_channels to dmatest_info We don't need to have them global and later we would like to protect access to them as well. Signed-off-by: Andy Shevchenko Acked-by: Viresh Kumar Signed-off-by: Vinod Koul --- drivers/dma/dmatest.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'drivers/dma/dmatest.c') diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index 7f9e3cc9361..475a21ad665 100644 --- a/drivers/dma/dmatest.c +++ b/drivers/dma/dmatest.c @@ -109,6 +109,7 @@ struct dmatest_chan { * @timeout: transfer timeout in msec, -1 for infinite timeout */ struct dmatest_info { + /* Test parameters */ unsigned int buf_size; char channel[20]; char device[20]; @@ -118,17 +119,14 @@ struct dmatest_info { unsigned int xor_sources; unsigned int pq_sources; int timeout; + + /* Internal state */ + struct list_head channels; + unsigned int nr_channels; }; static struct dmatest_info test_info; -/* - * These are protected by dma_list_mutex since they're only used by - * the DMA filter function callback - */ -static LIST_HEAD(dmatest_channels); -static unsigned int nr_channels; - static bool dmatest_match_channel(struct dmatest_info *info, struct dma_chan *chan) { @@ -690,8 +688,8 @@ static int dmatest_add_channel(struct dmatest_info *info, pr_info("dmatest: Started %u threads using %s\n", thread_count, dma_chan_name(chan)); - list_add_tail(&dtc->node, &dmatest_channels); - nr_channels++; + list_add_tail(&dtc->node, &info->channels); + info->nr_channels++; return 0; } @@ -725,7 +723,8 @@ static int run_threaded_test(struct dmatest_info *info) } } else break; /* no more channels available */ - if (info->max_channels && nr_channels >= info->max_channels) + if (info->max_channels && + info->nr_channels >= info->max_channels) break; /* we have all we need */ } return err; @@ -736,14 +735,15 @@ static void stop_threaded_test(struct dmatest_info *info) struct dmatest_chan *dtc, *_dtc; struct dma_chan *chan; - list_for_each_entry_safe(dtc, _dtc, &dmatest_channels, node) { + list_for_each_entry_safe(dtc, _dtc, &info->channels, node) { list_del(&dtc->node); chan = dtc->chan; dmatest_cleanup_channel(dtc); - pr_debug("dmatest: dropped channel %s\n", - dma_chan_name(chan)); + pr_debug("dmatest: dropped channel %s\n", dma_chan_name(chan)); dma_release_channel(chan); } + + info->nr_channels = 0; } static int __init dmatest_init(void) @@ -752,6 +752,9 @@ static int __init dmatest_init(void) memset(info, 0, sizeof(*info)); + INIT_LIST_HEAD(&info->channels); + + /* Set default parameters */ info->buf_size = test_buf_size; strlcpy(info->channel, test_channel, sizeof(info->channel)); strlcpy(info->device, test_device, sizeof(info->device)); -- cgit v1.2.3-18-g5258