Message ID | 20240821112737.3649937-1-liuyongqiang13@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [-next] KVM: SVM: Remove unnecessary GFP_KERNEL_ACCOUNT in svm_set_nested_state() | expand |
On 21/08/2024 11:27 pm, Yongqiang Liu wrote: > The fixed size temporary variables vmcb_control_area and vmcb_save_area > allocated in svm_set_nested_state() are released when the function exits. > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. Hi Sean/Paolo, Seems more patches are popping up regarding to whether to use _ACCOUNT for temporary memory allocation. Could we have a definitive guide on this? As you know, one similar patch was merged and now is in upstream: dd103407ca315 ("KVM: X86: Remove unnecessary GFP_KERNEL_ACCOUNT for temporary variables") Also see: https://lore.kernel.org/kvm/20240715101224.90958-1-kai.huang@intel.com/T/ > > Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com> > --- > arch/x86/kvm/svm/nested.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c > index 6f704c1037e5..d5314cb7dff4 100644 > --- a/arch/x86/kvm/svm/nested.c > +++ b/arch/x86/kvm/svm/nested.c > @@ -1693,8 +1693,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu, > return -EINVAL; > > ret = -ENOMEM; > - ctl = kzalloc(sizeof(*ctl), GFP_KERNEL_ACCOUNT); > - save = kzalloc(sizeof(*save), GFP_KERNEL_ACCOUNT); > + ctl = kzalloc(sizeof(*ctl), GFP_KERNEL); > + save = kzalloc(sizeof(*save), GFP_KERNEL); > if (!ctl || !save) > goto out_free; >
On Wed, 21 Aug 2024 19:27:37 +0800, Yongqiang Liu wrote: > The fixed size temporary variables vmcb_control_area and vmcb_save_area > allocated in svm_set_nested_state() are released when the function exits. > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. > > Applied to kvm-x86 svm, thanks! [1/1] KVM: SVM: Remove unnecessary GFP_KERNEL_ACCOUNT in svm_set_nested_state() https://github.com/kvm-x86/linux/commit/c501062bb22b -- https://github.com/kvm-x86/linux/tree/next
On Fri, Aug 23, 2024, Kai Huang wrote: > > > On 21/08/2024 11:27 pm, Yongqiang Liu wrote: > > The fixed size temporary variables vmcb_control_area and vmcb_save_area > > allocated in svm_set_nested_state() are released when the function exits. > > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. > > Hi Sean/Paolo, > > Seems more patches are popping up regarding to whether to use _ACCOUNT for > temporary memory allocation. Could we have a definitive guide on this? If the allocations are temporary, e.g. scoped to exactly one function, not massive (use best judgment), and can't be used in any kind of novel DDoS attack, e.g. are limited to one per vCPU or so, then they don't need to be accounted. At least, that's my take on things.
On Fri, 2024-08-23 at 17:00 -0700, Sean Christopherson wrote: > On Fri, Aug 23, 2024, Kai Huang wrote: > > > > > > On 21/08/2024 11:27 pm, Yongqiang Liu wrote: > > > The fixed size temporary variables vmcb_control_area and vmcb_save_area > > > allocated in svm_set_nested_state() are released when the function exits. > > > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > > > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. > > > > Hi Sean/Paolo, > > > > Seems more patches are popping up regarding to whether to use _ACCOUNT for > > temporary memory allocation. Could we have a definitive guide on this? > > If the allocations are temporary, e.g. scoped to exactly one function, not massive > (use best judgment), and can't be used in any kind of novel DDoS attack, e.g. are > limited to one per vCPU or so, then they don't need to be accounted. > > At least, that's my take on things. That makes sense. Thanks.
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 6f704c1037e5..d5314cb7dff4 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -1693,8 +1693,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu, return -EINVAL; ret = -ENOMEM; - ctl = kzalloc(sizeof(*ctl), GFP_KERNEL_ACCOUNT); - save = kzalloc(sizeof(*save), GFP_KERNEL_ACCOUNT); + ctl = kzalloc(sizeof(*ctl), GFP_KERNEL); + save = kzalloc(sizeof(*save), GFP_KERNEL); if (!ctl || !save) goto out_free;
The fixed size temporary variables vmcb_control_area and vmcb_save_area allocated in svm_set_nested_state() are released when the function exits. Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com> --- arch/x86/kvm/svm/nested.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)