> > > Unfortunately, it can not be dynamically enabled because the size of > > > 'struct page' is unfortunately recorded in the metadata of the device. > > > Recall this is for supporting platform configurations where the capacity > > > of the persistent memory exceeds or consumes too much of System RAM. > > > Consider 4TB of PMEM consumes 64GB of space just for 'struct page'. So, > > > NVDIMM subsystem has a mode to store that page array in a reservation on > > > the PMEM device itself. > > > > Sorry, I might be missing something, but why cannot we have > > > > #ifdef CONFIG_KMSAN > > #define MAX_STRUCT_PAGE_SIZE 128 > > #else > > #define MAX_STRUCT_PAGE_SIZE 64 > > #endif > > > > Possibly because this needs to be a fixed size on permanent storage > (like an inode on a disk file system) > Ah, thank you, that makes sense. Then I'm assuming some contents of struct pages are also stored in the persistent memory. What happens if sizeof(struct page) stays below MAX_STRUCT_PAGE_SIZE, but the layout changes? E.g. doesn't it cause problems if the user enables/disables CONFIG_MEMCG?