On 2018年08月09日 17:23, Pankaj Gupta wrote: >> DAX driver hotplug the device memory and move it to memory zone, these >> pages will be marked reserved flag, however, some other kernel componet >> will misconceive these pages are reserved mmio (ex: we map these dev_dax >> or fs_dax pages to kvm for DIMM/NVDIMM backend). Together with the type >> MEMORY_DEVICE_FS_DAX, we can use is_dax_page() to differentiate the pages >> is DAX device memory or not. >> >> Signed-off-by: Zhang Yi <yi.z.zhang@xxxxxxxxxxxxxxx> >> Signed-off-by: Zhang Yu <yu.c.zhang@xxxxxxxxxxxxxxx> >> --- >> include/linux/mm.h | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/include/linux/mm.h b/include/linux/mm.h >> index 68a5121..de5cbc3 100644 >> --- a/include/linux/mm.h >> +++ b/include/linux/mm.h >> @@ -889,6 +889,13 @@ static inline bool is_device_public_page(const struct >> page *page) >> page->pgmap->type == MEMORY_DEVICE_PUBLIC; >> } >> >> +static inline bool is_dax_page(const struct page *page) >> +{ >> + return is_zone_device_page(page) && >> + (page->pgmap->type == MEMORY_DEVICE_FS_DAX || >> + page->pgmap->type == MEMORY_DEVICE_DEV_DAX); >> +} > I think question from Dan for KVM VM with 'MEMORY_DEVICE_PUBLIC' still holds? > I am also interested to know if there is any use-case. > > Thanks, > Pankaj Yes, it is, thanks for your remind, Pankaj. Adding Jerome for Dan's questions on V1: [Dan]: Jerome, might there be any use case to pass MEMORY_DEVICE_PUBLIC memory to a guest vm? > >> + >> #else /* CONFIG_DEV_PAGEMAP_OPS */ >> static inline void dev_pagemap_get_ops(void) >> { >> @@ -912,6 +919,11 @@ static inline bool is_device_public_page(const struct >> page *page) >> { >> return false; >> } >> + >> +static inline bool is_dax_page(const struct page *page) >> +{ >> + return false; >> +} >> #endif /* CONFIG_DEV_PAGEMAP_OPS */ >> >> static inline void get_page(struct page *page) >> -- >> 2.7.4 >> >>