diff options
author | Dan Williams <dan.j.williams@intel.com> | 2017-05-05 02:38:43 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2017-05-05 02:38:43 -0400 |
commit | 736163671bcb163fc82600b46c83dfa89d532d95 (patch) | |
tree | 0639dc9d9fa180450b4e8fbda706eaae5f1876da /tools | |
parent | d5483feda85a8f39ee2e940e279547c686aac30c (diff) | |
parent | 1ef97fe4f8abd3317d5c3c860f990e02c2633959 (diff) |
Merge branch 'for-4.12/dax' into libnvdimm-for-next
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/nvdimm/Kbuild | 12 | ||||
-rw-r--r-- | tools/testing/nvdimm/dax-dev.c | 12 | ||||
-rw-r--r-- | tools/testing/nvdimm/pmem-dax.c | 21 |
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 | |||
28 | obj-$(CONFIG_ND_BLK) += nd_blk.o | 28 | obj-$(CONFIG_ND_BLK) += nd_blk.o |
29 | obj-$(CONFIG_X86_PMEM_LEGACY) += nd_e820.o | 29 | obj-$(CONFIG_X86_PMEM_LEGACY) += nd_e820.o |
30 | obj-$(CONFIG_ACPI_NFIT) += nfit.o | 30 | obj-$(CONFIG_ACPI_NFIT) += nfit.o |
31 | obj-$(CONFIG_DEV_DAX) += dax.o dax-dev.o | 31 | ifeq ($(CONFIG_DAX),m) |
32 | obj-$(CONFIG_DAX) += dax.o | ||
33 | endif | ||
34 | obj-$(CONFIG_DEV_DAX) += device_dax.o | ||
32 | obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o | 35 | obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o |
33 | 36 | ||
34 | nfit-y := $(ACPI_SRC)/core.o | 37 | nfit-y := $(ACPI_SRC)/core.o |
@@ -48,10 +51,13 @@ nd_blk-y += config_check.o | |||
48 | nd_e820-y := $(NVDIMM_SRC)/e820.o | 51 | nd_e820-y := $(NVDIMM_SRC)/e820.o |
49 | nd_e820-y += config_check.o | 52 | nd_e820-y += config_check.o |
50 | 53 | ||
51 | dax-y := $(DAX_SRC)/dax.o | 54 | dax-y := $(DAX_SRC)/super.o |
52 | dax-y += dax-dev.o | ||
53 | dax-y += config_check.o | 55 | dax-y += config_check.o |
54 | 56 | ||
57 | device_dax-y := $(DAX_SRC)/device.o | ||
58 | device_dax-y += dax-dev.o | ||
59 | device_dax-y += config_check.o | ||
60 | |||
55 | dax_pmem-y := $(DAX_SRC)/pmem.o | 61 | dax_pmem-y := $(DAX_SRC)/pmem.o |
56 | dax_pmem-y += config_check.o | 62 | dax_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 | ||
17 | phys_addr_t dax_pgoff_to_phys(struct dax_dev *dax_dev, pgoff_t pgoff, | 17 | phys_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 | ||
18 | long pmem_direct_access(struct block_device *bdev, sector_t sector, | 18 | long __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 | } |