Commit c60427dd authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Paolo Bonzini
Browse files

x86/fpu: Add uabi_size to guest_fpu



Userspace needs to inquire KVM about the buffer size to work
with the new KVM_SET_XSAVE and KVM_GET_XSAVE2. Add the size info
to guest_fpu for KVM to access.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarWei Wang <wei.w.wang@intel.com>
Signed-off-by: default avatarJing Liu <jing2.liu@intel.com>
Signed-off-by: default avatarYang Zhong <yang.zhong@intel.com>
Message-Id: <20220105123532.12586-18-yang.zhong@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 690a757d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -522,6 +522,11 @@ struct fpu_guest {
	 */
	u64				xfd_err;

	/*
	 * @uabi_size:			Size required for save/restore
	 */
	unsigned int			uabi_size;

	/*
	 * @fpstate:			Pointer to the allocated guest fpstate
	 */
+1 −0
Original line number Diff line number Diff line
@@ -240,6 +240,7 @@ bool fpu_alloc_guest_fpstate(struct fpu_guest *gfpu)
	gfpu->fpstate		= fpstate;
	gfpu->xfeatures		= fpu_user_cfg.default_features;
	gfpu->perm		= fpu_user_cfg.default_features;
	gfpu->uabi_size		= fpu_user_cfg.default_size;
	fpu_init_guest_permissions(gfpu);

	return true;
+1 −0
Original line number Diff line number Diff line
@@ -1545,6 +1545,7 @@ static int fpstate_realloc(u64 xfeatures, unsigned int ksize,
		newfps->is_confidential = curfps->is_confidential;
		newfps->in_use = curfps->in_use;
		guest_fpu->xfeatures |= xfeatures;
		guest_fpu->uabi_size = usize;
	}

	fpregs_lock();