From: Yosry Ahmed <yosry@kernel.org>
To: Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de>
Cc: seanjc@google.com, pbonzini@redhat.com, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, jmattson@google.com
Subject: Re: [PATCH] KVM: nSVM: Reset the virtual VMLOAD/VMSAVE bit in vmcb02 on every nested VMRUN
Date: Fri, 23 Oct 2026 15:48:53 +0000 [thread overview]
Message-ID: <att-Epjatf5sw-ba@google.com> (raw)
In-Reply-To: <20261023090924.9685-1-amirmohammad.eftekhar@cispa.de>
On Fri, Oct 23, 2026 at 11:09:24AM +0200, Amirmohammad Eftekhar wrote:
> On Wed, Oct 22, 2026, Yosry Ahmed wrote:
> > So this test case passing should be confirming my allegation that
> > intercepts take precedence over VLS.
>
> I could be missing something, but a hardware repro points the other way,
> at least on this part (Zen 4, Ryzen 5 PRO 8500GE, mainline 7.3-rc3). The
> L2 runs "vmload; cpuid", so the exit code says whether VMLOAD was
> intercepted (SVM_EXIT_VMLOAD, 0x82) or virtualized and run on to the
> cpuid (SVM_EXIT_CPUID, 0x72):
>
> - Single VMRUN, vmcb12 VLS off, L1 intercepting VMLOAD: 0x82. The
> intercept is honored, as expected.
> - VMRUN #1 enables VLS legitimately (0x72), then VMRUN #2 with vmcb12
> VLS=0 and L1 intercepting VMLOAD: still 0x72. 3/3.
>
> The difference from nested_vmsave_vmload_test.c is that the test only
> looks at a single VMRUN. On VMRUN #2 vmcb12 has VLS off, so
> nested_vmcb_needs_vls_intercept() returns true and
> nested_vmcb02_recalc_intercepts() sets INTERCEPT_VMLOAD/VMSAVE in vmcb02.
I am not sure if "the test" refers to your repro or the selftest, a
standalone. A standalone repro would help.
> But vmcb02->control.misc_ctl2 still has the VLS enable bit from VMRUN #1,
> since it is only ever OR-set and never cleared, so vmcb02 enters VMRUN #2
> with both INTERCEPT_VMLOAD and VLS set and the CPU virtualizes VMLOAD
> anyway. That is the dropped intercept.
>
> So with both bits live in the same vmcb02, VLS wins over the intercept on
> this hardware, which is why I think the stale bit is an actual
> intercept-drop (an L1 that intercepts VMLOAD/VMSAVE for its own L2 loses
> that intercept after it has used VLS even once) rather than only untidy
> state.
I tried this on 4 EPYC processors (Zen 2,3,4,5), I basically ran the
selftest with the bpftrace script below, and here are the results I got
tracing L0's svm_vcpu_run() and kvm_exit() only with guest mode on real
hardware. On all 4 microarchitectures, you will see rows with VLS and
the intercepts enabled, with SVM_EXIT_VMSAVE and SVM_EXIT_VMLOAD exit
codes:
================================================================================
Zen 5 (Turin)
CPU: AMD EPYC 9B45 128-Core Processor
================================================================================
Attached 3 probes
Random seed: 0x703a00c6
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x83 exit_rip=0x23f9ac
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9ac exit_code=0x400 exit_rip=0x24d2f0
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d2f0 exit_code=0x400 exit_rip=0x24d350
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d350 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x25be50
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x25be50 exit_code=0x400 exit_rip=0x256850
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256850 exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256854 exit_code=0x82 exit_rip=0x23f9cc
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9cc exit_code=0x83 exit_rip=0x23fa33
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23fa33 exit_code=0x81 exit_rip=0x23fa41
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa50 exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x256854 exit_code=0x81 exit_rip=0x23fb04
================================================================================
Zen 4 (Genoa)
CPU: AMD EPYC 9B14 96-Core Processor
================================================================================
Attached 3 probes
Random seed: 0x7eb8e37c
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x83 exit_rip=0x23f9ac
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9ac exit_code=0x400 exit_rip=0x24d2f0
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d2f0 exit_code=0x400 exit_rip=0x24d350
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d350 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x25be50
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x25be50 exit_code=0x400 exit_rip=0x256850
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256850 exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256854 exit_code=0x82 exit_rip=0x23f9cc
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9cc exit_code=0x83 exit_rip=0x23fa33
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23fa33 exit_code=0x81 exit_rip=0x23fa41
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa50 exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x256854 exit_code=0x81 exit_rip=0x23fb04
================================================================================
Zen 3 (Milan)
CPU: AMD EPYC 7B13 64-Core Processor
================================================================================
Attached 3 probes
Random seed: 0x5ea27b94
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x83 exit_rip=0x23f9ac
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9ac exit_code=0x400 exit_rip=0x24d2f0
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d2f0 exit_code=0x400 exit_rip=0x24d350
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d350 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x25be50
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x25be50 exit_code=0x400 exit_rip=0x256850
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256850 exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256854 exit_code=0x82 exit_rip=0x23f9cc
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9cc exit_code=0x83 exit_rip=0x23fa33
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23fa33 exit_code=0x81 exit_rip=0x23fa41
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa50 exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x256854 exit_code=0x81 exit_rip=0x23fb04
================================================================================
Zen 2 (Rome)
CPU: AMD EPYC 7B12 64-Core Processor
================================================================================
Attached 3 probes
Random seed: 0x3c17b702
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x400 exit_rip=0x23f970
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=0 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f970 exit_code=0x83 exit_rip=0x23f975
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f980 exit_code=0x82 exit_rip=0x23f985
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x400 exit_rip=0x23f990
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f990 exit_code=0x83 exit_rip=0x23f9ac
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9ac exit_code=0x400 exit_rip=0x24d2f0
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d2f0 exit_code=0x400 exit_rip=0x24d350
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d350 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x24d363
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x24d363 exit_code=0x400 exit_rip=0x25be50
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x25be50 exit_code=0x400 exit_rip=0x256850
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256850 exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x256854 exit_code=0x82 exit_rip=0x23f9cc
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23f9cc exit_code=0x83 exit_rip=0x23fa33
is_guest_mode=1 vls=1 vmload_icpt=1 vmsave_icpt=1 entry_rip=0x23fa33 exit_code=0x81 exit_rip=0x23fa41
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa50 exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x400 exit_rip=0x23fa6c
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x23fa6c exit_code=0x7b exit_rip=0x256854
is_guest_mode=1 vls=1 vmload_icpt=0 vmsave_icpt=0 entry_rip=0x256854 exit_code=0x81 exit_rip=0x23fb04
>
> I haven't managed to square that with your reading of the test, so it is
> entirely possible I am wrong about the precedence. If it helps I can send
> the reproducer, or dump vmcb02->control (the intercept bitmap plus
> misc_ctl2) right before the VMRUN #2 that virtualizes VMLOAD, so we can
> confirm both bits are set going in.
My bpftrace script is below, if you want to reuse it. You can just run
it while you run the selftest:
fentry:kvm_amd:svm_vcpu_run {
$svm = (struct vcpu_svm *)args.vcpu;
$vcpu = args.vcpu;
$vmcb = $svm->vmcb;
/* is_guest_mode(vcpu) == (vcpu->arch.hflags & HF_GUEST_MASK) */
$is_guest_mode = ($vcpu->arch.hflags & 1) ? 1 : 0;
@in_guest_mode[tid] = $is_guest_mode;
if ($is_guest_mode) {
$vls = ($vmcb->control.misc_ctl2 >> 1) & 1;
$word4 = $vmcb->control.intercepts[4];
$vmload_icpt = ($word4 >> 2) & 1;
$vmsave_icpt = ($word4 >> 3) & 1;
@cur_vls[tid] = $vls;
@cur_vmload[tid] = $vmload_icpt;
@cur_vmsave[tid] = $vmsave_icpt;
@cur_rip[tid] = $vmcb->save.rip;
}
}
tracepoint:kvm:kvm_exit {
if (@in_guest_mode[tid]) {
$vls = @cur_vls[tid];
$vmload_icpt = @cur_vmload[tid];
$vmsave_icpt = @cur_vmsave[tid];
$entry_rip = @cur_rip[tid];
printf("is_guest_mode=1 vls=%d vmload_icpt=%d vmsave_icpt=%d entry_rip=0x%lx exit_code=0x%x exit_rip=0x%lx\n",
$vls, $vmload_icpt, $vmsave_icpt, $entry_rip, args.exit_reason, args.guest_rip);
@in_guest_mode[tid] = 0;
}
}
END {
clear(@cur_vls);
clear(@cur_vmload);
clear(@cur_vmsave);
clear(@cur_rip);
clear(@in_guest_mode);
}
prev parent reply other threads:[~2026-10-23 15:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 23:52 Amirmohammad Eftekhar
2026-10-22 17:21 ` Sean Christopherson
2026-10-22 23:45 ` Yosry Ahmed
2026-10-23 9:09 ` Amirmohammad Eftekhar
2026-10-23 15:48 ` Yosry Ahmed [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=att-Epjatf5sw-ba@google.com \
--to=yosry@kernel.org \
--cc=amirmohammad.eftekhar@cispa.de \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®