Re: [kvm-unit-tests PATCH v3 11/11] x86: AMD SEV-ES: Handle string IO for IOIO #VC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 15, 2022 at 9:57 AM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
>
> On Fri, Apr 08, 2022, Joerg Roedel wrote:
> > On Wed, Apr 06, 2022 at 01:50:29AM +0000, Sean Christopherson wrote:
> > > On Thu, Feb 24, 2022, Varad Gautam wrote:
> > > > Using Linux's IOIO #VC processing logic.
> > >
> > > How much string I/O is there in KUT?  I assume it's rare, i.e. avoiding it entirely
> > > is probably less work in the long run.
> >
> > The problem is that SEV-ES support will silently break if someone adds
> > it unnoticed and without testing changes on SEV-ES.
>
> But IMO that is extremely unlikely to happen.  objdump + grep shows that the only
> string I/O in KUT comes from the explicit asm in emulator.c and amd_sev.c.  And
> the existence of amd_sev.c's version suggests that emulator.c isn't supported.
> I.e. this is being added purely for an SEV specific test, which is silly.
>
> And it's not like we're getting validation coverage of the exit_info, that also
> comes from software in vc_ioio_exitinfo().
>
> Burying this in the #VC handler makes it so much harder to understand what is
> actually be tested, and will make it difficult to test the more interesting edge
> cases.  E.g. I'd really like to see a test that requests string I/O emulation for
> a buffer that's beyond the allowed size, straddles multiple pages, walks into
> non-existent memory, etc.., and doing those with a direct #VMGEXIT will be a lot
> easier to write and read then bouncing through the #VC handler.

For the record, I like the current approach of implementing a #VC
handler within kvm-unit-tests itself for the string IO.

Rationale:
- Makes writing string IO tests easy.
- We get some level of testing of the #VC handler in the guest kernel
in the sense that this #VC handler is based on that one. So if we find
an issue in this handler we know we probably need to fix that same
issue in the guest kernel #VC handler.
- I don't follow the argument that having a direct #VMGEXIT in the
test itself makes the test easerit to write and read. It's going to
add a lot of extra code to the test that makes it hard to parse the
actual string IO operations and expectations IMHO.
- I agree that writing test cases to straddle multiple pages, walk
into non-existent memory, etc. is an excellent idea. But I don't
follow how exposing the test itself to the #VC exit makes this easier.
Worst case, the kvm-unit-tests can be extended with some sort of
helper to expose to the test the scratch buffer size and whether it's
embedded in the GHCB or external.



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux