Sorry I missed this mail. On 1/21/2025 11:38 PM, Peter Xu wrote: > 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; > } This looks good to me. I'll change in this way. > > Thanks, >