On Mon, Aug 11, 2025, Yury Norov wrote: > From: Yury Norov (NVIDIA) <yury.norov@xxxxxxxxx> > > Before calling wbnoinvd_on_cpus_mask(), the function checks the cpumask > for emptiness. It's useless, as the following wbnoinvd_on_cpus_mask() > ends up with smp_call_function_many_cond(), which handles empty cpumask > correctly. I don't agree that it's useless. The early check avoids disabling/enabling preemption (which is cheap, but still), and IMO it makes the KVM code more obviously correct. E.g. it takes quite a bit of digging to understand that invoking wbnoinvd_on_cpus_mask() with an empty mask is ok/fine. I'm not completely opposed to this change, but I also don't see the point. > While there, move function-wide comment on top of the function. > > Fixes: 6f38f8c57464 ("KVM: SVM: Flush cache only on CPUs running SEV guest") > Signed-off-by: Yury Norov (NVIDIA) <yury.norov@xxxxxxxxx> > --- > arch/x86/kvm/svm/sev.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c > index 2fbdebf79fbb..49d7557de8bc 100644 > --- a/arch/x86/kvm/svm/sev.c > +++ b/arch/x86/kvm/svm/sev.c > @@ -716,15 +716,12 @@ static void sev_clflush_pages(struct page *pages[], unsigned long npages) > } > } > > +/* > + * The caller is responsible for ensuring correctness if the mask > + * can be modified, e.g. if a CPU could be doing VMRUN. > + */ > static void sev_writeback_caches(struct kvm *kvm) > { > - /* > - * Note, the caller is responsible for ensuring correctness if the mask > - * can be modified, e.g. if a CPU could be doing VMRUN. > - */ > - if (cpumask_empty(to_kvm_sev_info(kvm)->have_run_cpus)) > - return; > - > /* > * Ensure that all dirty guest tagged cache entries are written back > * before releasing the pages back to the system for use. CLFLUSH will > -- > 2.43.0 >