Message ID | 20220228030749.88353-1-flyingpeng@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kvm: x86: Adjust the location of pkru_mask of kvm_mmu to reduce memory | expand |
On Mon, Feb 28, 2022, Peng Hao wrote: > From: Peng Hao <flyingpeng@tencent.com> > > Adjust the field pkru_mask to the back of direct_map to make up 8-byte > alignment.This reduces the size of kvm_mmu by 8 bytes. I'd prefer we just burn the extra 8 bytes, at least for now. 'prku' and 'permissions' are related fields, IMO splitting them to save 24 bytes per vCPU isn't a good tradeoff. And in the not-too-distant future, all of the 1-byte fields will hopefully go away, at which point were "wasting" 4 bytes no matter where 'pkru' is defined. 'ept_ad' can be dropped immediately, I'll send a patch for that. We should be able to drop 'root_level', 'shadow_root_level', and 'direct_map' once Paolo's clean up of the role stuff lands.
Queued, thanks. Paolo
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index e5d8700319cc..73dcb09abd5d 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -433,14 +433,6 @@ struct kvm_mmu { u8 shadow_root_level; u8 ept_ad; bool direct_map; - struct kvm_mmu_root_info prev_roots[KVM_MMU_NUM_PREV_ROOTS]; - - /* - * Bitmap; bit set = permission fault - * Byte index: page fault error code [4:1] - * Bit index: pte permissions in ACC_* format - */ - u8 permissions[16]; /* * The pkru_mask indicates if protection key checks are needed. It @@ -450,6 +442,15 @@ struct kvm_mmu { */ u32 pkru_mask; + struct kvm_mmu_root_info prev_roots[KVM_MMU_NUM_PREV_ROOTS]; + + /* + * Bitmap; bit set = permission fault + * Byte index: page fault error code [4:1] + * Bit index: pte permissions in ACC_* format + */ + u8 permissions[16]; + u64 *pae_root; u64 *pml4_root; u64 *pml5_root;