Use the newly added compound devmap facility which maps the assigned dax
ranges as compound pages at a page size of @align.
dax devices are created with a fixed @align (huge page size) which is
enforced through as well at mmap() of the device. Faults, consequently
happen too at the specified @alig
After moving the page mapping to be set prior to pte insertion, the pfn
in dev_dax_huge_fault() no longer is necessary. Remove it, as well as
the @pfn argument passed to the internal fault handler helpers.
Suggested-by: Christoph Hellwig
Signed-off-by: Joao Martins
---
drivers/dax/device.c | 3
Normally, the @page mapping is set prior to inserting the page into a
page table entry. Make device-dax adhere to the same ordering, rather
than setting mapping after the PTE is inserted.
The address_space never changes and it is always associated with the
same inode and underlying pages. So, the
Move initialization of page->mapping into a separate helper.
This is in preparation to move the mapping set to be prior
to inserting the page table entry and also for tidying up
compound page handling into one helper.
Signed-off-by: Joao Martins
---
drivers/dax/device.c | 45 +++
Right now, only static dax regions have a valid @pgmap pointer in its
struct dev_dax. Dynamic dax case however, do not.
In preparation for device-dax compound devmap support, make sure that
dev_dax pgmap field is set after it has been allocated and initialized.
dynamic dax device have the @pgmap
Rather than calculating @pgoff manually, switch to ALIGN() instead.
Suggested-by: Dan Williams
Signed-off-by: Joao Martins
Reviewed-by: Dan Williams
---
drivers/dax/device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/dax/device.c b/drivers/dax/device.c
inde
Move struct page init to an helper function __init_zone_device_page().
This is in preparation for sharing the storage for compound page
metadata.
Signed-off-by: Joao Martins
Reviewed-by: Dan Williams
---
mm/page_alloc.c | 74 +++--
1 file changed, 41
Use the struct_size() helper for the size of a struct with variable array
member at the end, rather than manually calculating it.
Suggested-by: Dan Williams
Signed-off-by: Joao Martins
---
drivers/dax/device.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/dax/
Changes since v6[10]:
* Patch 4, Wrap commit message to 73 characters max (Christoph Hellwig)
* Patch 4, Move pfn_next() in for_each_device_pfn() to new line (Christoph
Hellwig)
* Patch 4, Move pfn range computation to a pfn_len() helper. (Christoph
Hellwig)
* Patch 9, Remove @fault_size as it'
memory_failure_dev_pagemap() at the moment assumes base pages (e.g.
dax_lock_page()). For devmap with compound pages fetch the
compound_head in case a tail page memory failure is being handled.
Currently this is a nop, but in the advent of compound pages in
dev_pagemap it allows memory_failure_de
Split the utility function prep_compound_page() into head and tail
counterparts, and use them accordingly.
This is in preparation for sharing the storage for compound page
metadata.
Signed-off-by: Joao Martins
Acked-by: Mike Kravetz
Reviewed-by: Dan Williams
Reviewed-by: Muchun Song
---
mm/p
Add a new @vmemmap_shift property for struct dev_pagemap which specifies
that a devmap is composed of a set of compound pages of order
@vmemmap_shift, instead of base pages. When a compound page devmap is
requested, all but the first page are initialised as tail pages instead
of order-0 pages.
For
12 matches
Mail list logo