diff options
author | Logan Gunthorpe <logang@deltatee.com> | 2016-06-03 16:50:31 -0400 |
---|---|---|
committer | Jon Mason <jdmason@kudzu.us> | 2016-08-05 10:21:06 -0400 |
commit | 4aae977721f0367809cdc94584b6945073d9fe10 (patch) | |
tree | 2ed434a025160326c1bfc04b61269ad867b5cc51 | |
parent | a754a8fcaf383be3c5fcc6c3c08e36d9f3005988 (diff) |
ntb_perf: Allow limiting the size of the memory windows
On my system, dma_alloc_coherent won't produce memory anywhere
near the size of the BAR. So I needed a way to limit this.
It's pretty much copied straight from ntb_transport.
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
-rw-r--r-- | drivers/ntb/test/ntb_perf.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c index 8dfce9c9aad0..30635c89320c 100644 --- a/drivers/ntb/test/ntb_perf.c +++ b/drivers/ntb/test/ntb_perf.c | |||
@@ -83,6 +83,10 @@ MODULE_DESCRIPTION(DRIVER_DESCRIPTION); | |||
83 | 83 | ||
84 | static struct dentry *perf_debugfs_dir; | 84 | static struct dentry *perf_debugfs_dir; |
85 | 85 | ||
86 | static unsigned long max_mw_size; | ||
87 | module_param(max_mw_size, ulong, 0644); | ||
88 | MODULE_PARM_DESC(max_mw_size, "Limit size of large memory windows"); | ||
89 | |||
86 | static unsigned int seg_order = 19; /* 512K */ | 90 | static unsigned int seg_order = 19; /* 512K */ |
87 | module_param(seg_order, uint, 0644); | 91 | module_param(seg_order, uint, 0644); |
88 | MODULE_PARM_DESC(seg_order, "size order [n^2] of buffer segment for testing"); | 92 | MODULE_PARM_DESC(seg_order, "size order [n^2] of buffer segment for testing"); |
@@ -472,6 +476,10 @@ static void perf_link_work(struct work_struct *work) | |||
472 | dev_dbg(&perf->ntb->pdev->dev, "%s called\n", __func__); | 476 | dev_dbg(&perf->ntb->pdev->dev, "%s called\n", __func__); |
473 | 477 | ||
474 | size = perf->mw.phys_size; | 478 | size = perf->mw.phys_size; |
479 | |||
480 | if (max_mw_size && size > max_mw_size) | ||
481 | size = max_mw_size; | ||
482 | |||
475 | ntb_peer_spad_write(ndev, MW_SZ_HIGH, upper_32_bits(size)); | 483 | ntb_peer_spad_write(ndev, MW_SZ_HIGH, upper_32_bits(size)); |
476 | ntb_peer_spad_write(ndev, MW_SZ_LOW, lower_32_bits(size)); | 484 | ntb_peer_spad_write(ndev, MW_SZ_LOW, lower_32_bits(size)); |
477 | ntb_peer_spad_write(ndev, VERSION, PERF_VERSION); | 485 | ntb_peer_spad_write(ndev, VERSION, PERF_VERSION); |