On Tue, Jan 21, 2025 at 05:00:45PM +0800, Chenyi Qiang wrote: > >> + > >> + /* block size and alignment */ > >> + uint64_t block_size; > > > > Can we always fetch it from the MR/ramblock? If this is needed, better add > > some comment explaining why. > > The block_size is the granularity used to track the private/shared > attribute in the bitmap. It is currently hardcoded to 4K as guest_memfd > may manipulate the page conversion in at least 4K size and alignment. > I think It is somewhat a variable to cache the size and can avoid many > getpagesize() calls. Though qemu does it frequently.. e.g. qemu_real_host_page_size() wraps that. So IIUC that's not a major concern, and if it's a concern maybe we can cache it globally instead. OTOH, this is not a per-ramblock limitation either, IIUC. So maybe instead of caching it per manager, we could have memory_attr_manager_get_psize() helper (or any better name..): memory_attr_manager_get_psize(MemoryAttrManager *mgr) { /* Due to limitation of ... always notify with host psize */ return qemu_real_host_page_size(); } Then in the future if necessary, switch to: memory_attr_manager_get_psize(MemoryAttrManager *mgr) { return mgr->mr->ramblock->pagesize; } Thanks, -- Peter Xu