From: Alexander Graf <agraf@suse.de>
To: Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 14/15] KVM: Add support for enabling capabilities per-vcpu
Date: Mon, 08 Mar 2010 14:18:09 +0000 [thread overview]
Message-ID: <4B950721.4070706@suse.de> (raw)
In-Reply-To: <4B950656.4010307-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Avi Kivity wrote:
> On 03/08/2010 04:10 PM, Alexander Graf wrote:
>>
>>> When we have reserved fields which are later used for something new,
>>> the kernel needs a way to know if the reserved fields are known or not
>>> by userspace. One way to do this is to assume a value of zero means
>>> the field is unknown to usespace so ignore it. Another is to require
>>> userspace to set a bit in an already-known flags field, and only act
>>> on the new field if its bit was set. This has the advantage that the
>>> old kernel checks for unknown flags and errors out, improving forwards
>>> and backwards compatibility.
>>>
>>> I thought ->cap was already a bit field, so this isn't necessary, but
>>> if it isn't, then a flags field is helpful.
>>>
>> -> cap is the capability number. So you want something like:
>>
>> struct kvm_enable_cap {
>> __u32 cap;
>> __u32 flags;
>> __u64 args[4];
>> __u8 pad[64];
>> };
>>
>> And then check for flags = 0 in the ioctl handler? Flags could later on
>> define if the padding changed to a different position, adding new fields
>> in between args and pad?
>>
>
> Exactly, we do so in several places. Can be useful if, for example,
> some new capability comes with a resource count value.
>
> What's this thing anyway? like cpuid bits for x86?
What thing? This ioctl or the OSI call?
The ioctl is a way to enable a feature on a per-vcpu basis. MOL overlays
the syscall interface with a hypercall interface, so a normal OS syscall
magically becomes a hypercall when magic constants get passed in r3 and r4.
Because for obvious reasons we don't want to enable that when not using
MOL, I figured I'd go in and have userspace decide if it wants to get a
hypercall exit or not. Qemu couldn't really do anything with it after
all. And while at it, I figured let's better make the interface generic.
Alex
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf-l3A5Bk7waGM@public.gmane.org>
To: Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 14/15] KVM: Add support for enabling capabilities per-vcpu
Date: Mon, 08 Mar 2010 15:18:09 +0100 [thread overview]
Message-ID: <4B950721.4070706@suse.de> (raw)
In-Reply-To: <4B950656.4010307-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Avi Kivity wrote:
> On 03/08/2010 04:10 PM, Alexander Graf wrote:
>>
>>> When we have reserved fields which are later used for something new,
>>> the kernel needs a way to know if the reserved fields are known or not
>>> by userspace. One way to do this is to assume a value of zero means
>>> the field is unknown to usespace so ignore it. Another is to require
>>> userspace to set a bit in an already-known flags field, and only act
>>> on the new field if its bit was set. This has the advantage that the
>>> old kernel checks for unknown flags and errors out, improving forwards
>>> and backwards compatibility.
>>>
>>> I thought ->cap was already a bit field, so this isn't necessary, but
>>> if it isn't, then a flags field is helpful.
>>>
>> -> cap is the capability number. So you want something like:
>>
>> struct kvm_enable_cap {
>> __u32 cap;
>> __u32 flags;
>> __u64 args[4];
>> __u8 pad[64];
>> };
>>
>> And then check for flags == 0 in the ioctl handler? Flags could later on
>> define if the padding changed to a different position, adding new fields
>> in between args and pad?
>>
>
> Exactly, we do so in several places. Can be useful if, for example,
> some new capability comes with a resource count value.
>
> What's this thing anyway? like cpuid bits for x86?
What thing? This ioctl or the OSI call?
The ioctl is a way to enable a feature on a per-vcpu basis. MOL overlays
the syscall interface with a hypercall interface, so a normal OS syscall
magically becomes a hypercall when magic constants get passed in r3 and r4.
Because for obvious reasons we don't want to enable that when not using
MOL, I figured I'd go in and have userspace decide if it wants to get a
hypercall exit or not. Qemu couldn't really do anything with it after
all. And while at it, I figured let's better make the interface generic.
Alex
next prev parent reply other threads:[~2010-03-08 14:18 UTC|newest]
Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-05 16:50 [PATCH 00/15] KVM: PPC: MOL bringup patches Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Alexander Graf
2010-03-05 16:50 ` Alexander Graf
[not found] ` <1267807842-3751-2-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-08 13:40 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Avi Kivity
2010-03-08 13:40 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Avi Kivity
[not found] ` <4B94FE41.1040904-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 13:44 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Alexander Graf
2010-03-08 13:44 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Alexander Graf
[not found] ` <4B94FF56.9060200-l3A5Bk7waGM@public.gmane.org>
2010-03-08 13:50 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Avi Kivity
2010-03-08 13:50 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Avi Kivity
2010-03-08 13:53 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Alexander Graf
2010-03-08 13:53 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Alexander Graf
[not found] ` <4B950174.7010709-l3A5Bk7waGM@public.gmane.org>
2010-03-08 14:06 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Avi Kivity
2010-03-08 14:06 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Avi Kivity
[not found] ` <4B950475.1020106-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 14:14 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Alexander Graf
2010-03-08 14:14 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Alexander Graf
[not found] ` <4B95062D.2020908-l3A5Bk7waGM@public.gmane.org>
2010-03-08 14:16 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Avi Kivity
2010-03-08 14:16 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Avi Kivity
[not found] ` <4B9506C5.30606-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 14:20 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Alexander Graf
2010-03-08 14:20 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Alexander Graf
2010-03-08 14:23 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always Avi Kivity
2010-03-08 14:23 ` [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Avi Kivity
2010-03-05 16:50 ` [PATCH 03/15] KVM: PPC: Allow userspace to unset the IRQ line Alexander Graf
2010-03-05 16:50 ` Alexander Graf
[not found] ` <1267807842-3751-4-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-08 13:44 ` Avi Kivity
2010-03-08 13:44 ` Avi Kivity
[not found] ` <4B94FF27.5010800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 13:48 ` Alexander Graf
2010-03-08 13:48 ` Alexander Graf
2010-03-08 13:52 ` Avi Kivity
2010-03-08 13:52 ` Avi Kivity
2010-03-08 13:55 ` Alexander Graf
2010-03-08 13:55 ` Alexander Graf
2010-03-08 13:58 ` Avi Kivity
2010-03-08 13:58 ` Avi Kivity
[not found] ` <4B95029C.6000800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 14:01 ` Alexander Graf
2010-03-08 14:01 ` Alexander Graf
2010-03-08 14:09 ` Avi Kivity
2010-03-08 14:09 ` Avi Kivity
[not found] ` <1267807842-3751-1-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-05 16:50 ` [PATCH 02/15] KVM: PPC: Ensure split mode works Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 04/15] KVM: PPC: Make DSISR 32 bits wide Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 05/15] KVM: PPC: Book3S_32 guest MMU fixes Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 10/15] KVM: PPC: Implement BAT reads Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 13/15] KVM: PPC: Implement alignment interrupt Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 06/15] KVM: PPC: Split instruction reading out Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 07/15] KVM: PPC: Don't reload FPU with invalid values Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 08/15] KVM: PPC: Load VCPU for register fetching Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 09/15] KVM: PPC: Implement mfsr emulation Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 11/15] KVM: PPC: Make XER load 32 bit Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 12/15] KVM: PPC: Implement emulation for lbzux and lhax Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-05 16:50 ` [PATCH 14/15] KVM: Add support for enabling capabilities per-vcpu Alexander Graf
2010-03-05 16:50 ` Alexander Graf
[not found] ` <1267807842-3751-15-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-08 13:49 ` Avi Kivity
2010-03-08 13:49 ` Avi Kivity
[not found] ` <4B950057.1090204-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 13:51 ` Alexander Graf
2010-03-08 13:51 ` Alexander Graf
[not found] ` <4B9500D1.2060008-l3A5Bk7waGM@public.gmane.org>
2010-03-08 13:52 ` Avi Kivity
2010-03-08 13:52 ` Avi Kivity
[not found] ` <4B95012B.3030505-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 13:56 ` Alexander Graf
2010-03-08 13:56 ` Alexander Graf
2010-03-08 14:02 ` Avi Kivity
2010-03-08 14:02 ` Avi Kivity
2010-03-08 14:10 ` Alexander Graf
2010-03-08 14:10 ` Alexander Graf
[not found] ` <4B950562.6050509-l3A5Bk7waGM@public.gmane.org>
2010-03-08 14:14 ` Avi Kivity
2010-03-08 14:14 ` Avi Kivity
[not found] ` <4B950656.4010307-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-08 14:18 ` Alexander Graf [this message]
2010-03-08 14:18 ` Alexander Graf
2010-03-08 14:21 ` Avi Kivity
2010-03-08 14:21 ` Avi Kivity
2010-03-05 16:50 ` [PATCH 15/15] KVM: PPC: Add OSI hypercall interface Alexander Graf
2010-03-05 16:50 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 00/15] KVM: PPC: MOL bringup patches Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 02/15] KVM: PPC: Allow userspace to unset the IRQ line Alexander Graf
2010-03-08 18:03 ` Alexander Graf
[not found] ` <1268071402-27112-3-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-09 12:50 ` Avi Kivity
2010-03-09 12:50 ` Avi Kivity
[not found] ` <4B964412.8030708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-09 12:54 ` Alexander Graf
2010-03-09 12:54 ` Alexander Graf
[not found] ` <954C5195-A8E4-4CA5-8D5E-AA21E2E21C5B-l3A5Bk7waGM@public.gmane.org>
2010-03-09 13:05 ` Avi Kivity
2010-03-09 13:05 ` Avi Kivity
[not found] ` <1268071402-27112-1-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2010-03-08 18:03 ` [PATCH 01/15] KVM: PPC: Ensure split mode works Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 03/15] KVM: PPC: Make DSISR 32 bits wide Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 05/15] KVM: PPC: Split instruction reading out Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 07/15] KVM: PPC: Load VCPU for register fetching Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 08/15] KVM: PPC: Implement mfsr emulation Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 12/15] KVM: PPC: Implement alignment interrupt Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 13/15] KVM: Add support for enabling capabilities per-vcpu Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-09 12:56 ` Avi Kivity
2010-03-09 12:56 ` Avi Kivity
2010-03-09 13:01 ` Alexander Graf
2010-03-09 13:01 ` Alexander Graf
2010-03-09 13:09 ` Avi Kivity
2010-03-09 13:09 ` Avi Kivity
2010-03-08 18:03 ` [PATCH 14/15] KVM: PPC: Add OSI hypercall interface Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-09 13:00 ` Avi Kivity
2010-03-09 13:00 ` Avi Kivity
2010-03-09 13:04 ` Alexander Graf
2010-03-09 13:04 ` Alexander Graf
2010-03-09 13:11 ` Avi Kivity
2010-03-09 13:11 ` Avi Kivity
2010-03-09 13:12 ` Alexander Graf
2010-03-09 13:12 ` Alexander Graf
[not found] ` <3D0D6963-FEC8-4A53-ACCE-570BEAF3721B-l3A5Bk7waGM@public.gmane.org>
2010-03-09 13:19 ` Avi Kivity
2010-03-09 13:19 ` Avi Kivity
[not found] ` <4B964ADE.5030200-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-03-09 13:20 ` Alexander Graf
2010-03-09 13:20 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 15/15] KVM: PPC: Make build work without CONFIG_VSX/ALTIVEC Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 04/15] KVM: PPC: Book3S_32 guest MMU fixes Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 06/15] KVM: PPC: Don't reload FPU with invalid values Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 09/15] KVM: PPC: Implement BAT reads Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 10/15] KVM: PPC: Make XER load 32 bit Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:03 ` [PATCH 11/15] KVM: PPC: Implement emulation for lbzux and lhax Alexander Graf
2010-03-08 18:03 ` Alexander Graf
2010-03-08 18:06 ` [PATCH 00/15] KVM: PPC: MOL bringup patches Alexander Graf
2010-03-08 18:06 ` Alexander Graf
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=4B950721.4070706@suse.de \
--to=agraf@suse.de \
--cc=avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.