2022-04-22 17:38:59

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH 0/4] KVM: fix KVM_EXIT_SYSTEM_EVENT mess

On Fri, 22 Apr 2022 10:41:34 +0100,
Paolo Bonzini <[email protected]> wrote:
>
> On 4/22/22 09:58, Oliver Upton wrote:
> > Is there any way we could clean this up in 5.18 and leave the whole
> > ndata/data pattern for 5.19?
> >
> > IOW, for 5.18 go back and fix the padding:
> >
> > struct {
> > __u32 type;
> > __u32 pad;
> > __u64 flags;
> > } system_event;
> >
> > Then for 5.19 circle back on the data business, except use a flag bit
> > for it:
> >
> > struct {
> > __u32 type;
> > __u32 pad;
> > #define KVM_SYSTEM_EVENT_NDATA_VALID (1u << 63)
> > __u64 flags;
> > __u64 ndata;
> > __u64 data[16];
> > } system_event;
> >
> > Where we apply that bit to system_event::flags this time instead of
> > ::type. Could also go the CAP route.
>
> These patches are against kvm/next, so that is already what I did. :)

Can you please post a complete series? It is becoming really hard to
track what you are doing.

> On the other hand right now the ARM and RISC-V flags are unusable with
> 32-bit userspace, so we need to fix _something_ in 5.18 as well.

What 32bit userspace? arm64 doesn't have any that can interact with KVM,
so I don't see anything to fix on that front.

> For
> your proposal, all that's missing is a 5.18 patch to add the
> padding. But since the flags UAPI was completely unused before 5.18
> and there's no reason to inflict the different naming of fields to
> userspace. So I think we want to apply this UAPI change in 5.18 too.

As it was pointed out already, CrosVM has already started looking at
the flags. The fact that it was always 0 until now doesn't make it
less of a UAPI.

I'd like to see a full series that implements the transition before we
make a decision on this.

Thanks,

M.

--
Without deviation from the norm, progress is not possible.


2022-04-22 22:20:53

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH 0/4] KVM: fix KVM_EXIT_SYSTEM_EVENT mess

On 4/22/22 12:01, Marc Zyngier wrote:
>> These patches are against kvm/next, so that is already what I did. :)
>
> Can you please post a complete series? It is becoming really hard to
> track what you are doing.

Yes, I'll post a complete series for kvm/master in a second.

>> On the other hand right now the ARM and RISC-V flags are unusable with
>> 32-bit userspace, so we need to fix _something_ in 5.18 as well.
>
> What 32bit userspace? arm64 doesn't have any that can interact with KVM,
> so I don't see anything to fix on that front.

You're right, ARM64 does not define KVM_COMPAT. But RISC-V does.

>> For your proposal, all that's missing is a 5.18 patch to add the
>> padding. But since the flags UAPI was completely unused before 5.18
>> and there's no reason to inflict the different naming of fields to
>> userspace. So I think we want to apply this UAPI change in 5.18 too.
>
> As it was pointed out already, CrosVM has already started looking at
> the flags. The fact that it was always 0 until now doesn't make it
> less of a UAPI.

I heard that and that's exactly why I dropped the idea of using
NDATA_VALID in bit 31 of flags, and switched to a capability instead.
If it is desirable for Android, crosvm can "quirk" that ARM always has
valid data[0].

Paolo

> I'd like to see a full series that implements the transition before we
> make a decision on this.