On 19/11/19 09:49, Yang Weijiang wrote: > + > +#define SUBPAGE_MAX_BITMAP 64 Please rename this to KVM_SUBPAGE_MAX_PAGES > +struct kvm_subpage_info { > + __u64 gfn; /* the first page gfn of the contiguous pages */ > + __u64 npages; /* number of 4K pages */ This can be u32 npages; u32 flags; Check that the flags are 0, and fail the ioctl if they aren't. This will make it easy to extend the API in the future. > + __u32 access_map[SUBPAGE_MAX_BITMAP]; /* sub-page write-access bitmap array */ > +}; Please make this access_map[0], since the number of entries actually depends on npages. Likewise, kvm_arch_vm_ioctl should read the header first, then allocate memory for the access_map and read into it. It's probably simpler if you make kvm_vm_ioctl_get_subpages/kvm_vm_ioctl_set_subpages take parameters like int kvm_vm_ioctl_get_subpages(struct kvm *kvm, u64 gfn, u32 npages, u32 *access_map); int kvm_vm_ioctl_set_subpages(struct kvm *kvm, u64 gfn, u32 npages, u32 *access_map); Thanks, Paolo