On Fri, 2023-11-24 at 00:53 -0500, Yang Weijiang wrote:
+static struct fpstate *__fpu_alloc_init_guest_fpstate(structWhy not fpu_guest_cfg.default_size here?
fpu_guest *gfpu)
{
+ bool compacted = cpu_feature_enabled(X86_FEATURE_XCOMPACTED);
+ unsigned int gfpstate_size, size;
struct fpstate *fpstate;
- unsigned int size;
- size = fpu_user_cfg.default_size + ALIGN(offsetof(struct
fpstate, regs), 64);
+ /*
+ * fpu_guest_cfg.default_features includes all enabled
xfeatures
+ * except the user dynamic xfeatures. If the user dynamic
xfeatures
+ * are enabled, the guest fpstate will be re-allocated to
hold all
+ * guest enabled xfeatures, so omit user dynamic xfeatures
here.
+ */
+ gfpstate_size =
xstate_calculate_size(fpu_guest_cfg.default_features,
+ compacted);
+
+ size = gfpstate_size + ALIGN(offsetof(struct fpstate, regs),
64);