aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2017-05-05 02:38:43 -0400
committerDan Williams <dan.j.williams@intel.com>2017-05-05 02:38:43 -0400
commit736163671bcb163fc82600b46c83dfa89d532d95 (patch)
tree0639dc9d9fa180450b4e8fbda706eaae5f1876da /tools
parentd5483feda85a8f39ee2e940e279547c686aac30c (diff)
parent1ef97fe4f8abd3317d5c3c860f990e02c2633959 (diff)
Merge branch 'for-4.12/dax' into libnvdimm-for-next
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/nvdimm/Kbuild12
-rw-r--r--tools/testing/nvdimm/dax-dev.c12
-rw-r--r--tools/testing/nvdimm/pmem-dax.c21
3 files changed, 25 insertions, 20 deletions
diff --git a/tools/testing/nvdimm/Kbuild b/tools/testing/nvdimm/Kbuild
index 6dcb3c4d53be..d870520da68b 100644
--- a/tools/testing/nvdimm/Kbuild
+++ b/tools/testing/nvdimm/Kbuild
@@ -28,7 +28,10 @@ obj-$(CONFIG_ND_BTT) += nd_btt.o
28obj-$(CONFIG_ND_BLK) += nd_blk.o 28obj-$(CONFIG_ND_BLK) += nd_blk.o
29obj-$(CONFIG_X86_PMEM_LEGACY) += nd_e820.o 29obj-$(CONFIG_X86_PMEM_LEGACY) += nd_e820.o
30obj-$(CONFIG_ACPI_NFIT) += nfit.o 30obj-$(CONFIG_ACPI_NFIT) += nfit.o
31obj-$(CONFIG_DEV_DAX) += dax.o dax-dev.o 31ifeq ($(CONFIG_DAX),m)
32obj-$(CONFIG_DAX) += dax.o
33endif
34obj-$(CONFIG_DEV_DAX) += device_dax.o
32obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o 35obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o
33 36
34nfit-y := $(ACPI_SRC)/core.o 37nfit-y := $(ACPI_SRC)/core.o
@@ -48,10 +51,13 @@ nd_blk-y += config_check.o
48nd_e820-y := $(NVDIMM_SRC)/e820.o 51nd_e820-y := $(NVDIMM_SRC)/e820.o
49nd_e820-y += config_check.o 52nd_e820-y += config_check.o
50 53
51dax-y := $(DAX_SRC)/dax.o 54dax-y := $(DAX_SRC)/super.o
52dax-y += dax-dev.o
53dax-y += config_check.o 55dax-y += config_check.o
54 56
57device_dax-y := $(DAX_SRC)/device.o
58device_dax-y += dax-dev.o
59device_dax-y += config_check.o
60
55dax_pmem-y := $(DAX_SRC)/pmem.o 61dax_pmem-y := $(DAX_SRC)/pmem.o
56dax_pmem-y += config_check.o 62dax_pmem-y += config_check.o
57 63
diff --git a/tools/testing/nvdimm/dax-dev.c b/tools/testing/nvdimm/dax-dev.c
index e89721d8924c..36ee3d8797c3 100644
--- a/tools/testing/nvdimm/dax-dev.c
+++ b/tools/testing/nvdimm/dax-dev.c
@@ -14,28 +14,28 @@
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include "../../../drivers/dax/dax-private.h" 15#include "../../../drivers/dax/dax-private.h"
16 16
17phys_addr_t dax_pgoff_to_phys(struct dax_dev *dax_dev, pgoff_t pgoff, 17phys_addr_t dax_pgoff_to_phys(struct dev_dax *dev_dax, pgoff_t pgoff,
18 unsigned long size) 18 unsigned long size)
19{ 19{
20 struct resource *res; 20 struct resource *res;
21 phys_addr_t addr; 21 phys_addr_t addr;
22 int i; 22 int i;
23 23
24 for (i = 0; i < dax_dev->num_resources; i++) { 24 for (i = 0; i < dev_dax->num_resources; i++) {
25 res = &dax_dev->res[i]; 25 res = &dev_dax->res[i];
26 addr = pgoff * PAGE_SIZE + res->start; 26 addr = pgoff * PAGE_SIZE + res->start;
27 if (addr >= res->start && addr <= res->end) 27 if (addr >= res->start && addr <= res->end)
28 break; 28 break;
29 pgoff -= PHYS_PFN(resource_size(res)); 29 pgoff -= PHYS_PFN(resource_size(res));
30 } 30 }
31 31
32 if (i < dax_dev->num_resources) { 32 if (i < dev_dax->num_resources) {
33 res = &dax_dev->res[i]; 33 res = &dev_dax->res[i];
34 if (addr + size - 1 <= res->end) { 34 if (addr + size - 1 <= res->end) {
35 if (get_nfit_res(addr)) { 35 if (get_nfit_res(addr)) {
36 struct page *page; 36 struct page *page;
37 37
38 if (dax_dev->region->align > PAGE_SIZE) 38 if (dev_dax->region->align > PAGE_SIZE)
39 return -1; 39 return -1;
40 40
41 page = vmalloc_to_page((void *)addr); 41 page = vmalloc_to_page((void *)addr);
diff --git a/tools/testing/nvdimm/pmem-dax.c b/tools/testing/nvdimm/pmem-dax.c
index c9b8c48f85fc..b53596ad601b 100644
--- a/tools/testing/nvdimm/pmem-dax.c
+++ b/tools/testing/nvdimm/pmem-dax.c
@@ -15,13 +15,13 @@
15#include <pmem.h> 15#include <pmem.h>
16#include <nd.h> 16#include <nd.h>
17 17
18long pmem_direct_access(struct block_device *bdev, sector_t sector, 18long __pmem_direct_access(struct pmem_device *pmem, pgoff_t pgoff,
19 void **kaddr, pfn_t *pfn, long size) 19 long nr_pages, void **kaddr, pfn_t *pfn)
20{ 20{
21 struct pmem_device *pmem = bdev->bd_queue->queuedata; 21 resource_size_t offset = PFN_PHYS(pgoff) + pmem->data_offset;
22 resource_size_t offset = sector * 512 + pmem->data_offset;
23 22
24 if (unlikely(is_bad_pmem(&pmem->bb, sector, size))) 23 if (unlikely(is_bad_pmem(&pmem->bb, PFN_PHYS(pgoff) / 512,
24 PFN_PHYS(nr_pages))))
25 return -EIO; 25 return -EIO;
26 26
27 /* 27 /*
@@ -34,11 +34,10 @@ long pmem_direct_access(struct block_device *bdev, sector_t sector,
34 *kaddr = pmem->virt_addr + offset; 34 *kaddr = pmem->virt_addr + offset;
35 page = vmalloc_to_page(pmem->virt_addr + offset); 35 page = vmalloc_to_page(pmem->virt_addr + offset);
36 *pfn = page_to_pfn_t(page); 36 *pfn = page_to_pfn_t(page);
37 dev_dbg_ratelimited(disk_to_dev(bdev->bd_disk)->parent, 37 pr_debug_ratelimited("%s: pmem: %p pgoff: %#lx pfn: %#lx\n",
38 "%s: sector: %#llx pfn: %#lx\n", __func__, 38 __func__, pmem, pgoff, page_to_pfn(page));
39 (unsigned long long) sector, page_to_pfn(page));
40 39
41 return PAGE_SIZE; 40 return 1;
42 } 41 }
43 42
44 *kaddr = pmem->virt_addr + offset; 43 *kaddr = pmem->virt_addr + offset;
@@ -49,6 +48,6 @@ long pmem_direct_access(struct block_device *bdev, sector_t sector,
49 * requested range. 48 * requested range.
50 */ 49 */
51 if (unlikely(pmem->bb.count)) 50 if (unlikely(pmem->bb.count))
52 return size; 51 return nr_pages;
53 return pmem->size - pmem->pfn_pad - offset; 52 return PHYS_PFN(pmem->size - pmem->pfn_pad - offset);
54} 53}