[PATCH v9 21/21] KVM: ARM64: Add a new vcpu device control group for PMUv3

Shannon Zhao zhaoshenglong at huawei.com
Mon Jan 25 19:33:47 PST 2016



On 2016/1/26 0:53, Peter Maydell wrote:
> On 15 January 2016 at 06:27, Shannon Zhao <zhaoshenglong at huawei.com> wrote:
>> > From: Shannon Zhao <shannon.zhao at linaro.org>
>> >
>> > To configure the virtual PMUv3 overflow interrupt number, we use the
>> > vcpu kvm_device ioctl, encapsulating the KVM_ARM_VCPU_PMU_V3_IRQ
>> > attribute within the KVM_ARM_VCPU_PMU_V3_CTRL group.
>> >
>> > After configuring the PMUv3, call the vcpu iotcl with attribute
>> > KVM_ARM_VCPU_PMU_V3_INIT to initialize the PMUv3.
>> >
>> > Signed-off-by: Shannon Zhao <shannon.zhao at linaro.org>
>> > ---
>> > CC: Peter Maydell <peter.maydell at linaro.org>
>> > ---
>> >  Documentation/virtual/kvm/devices/vcpu.txt |  24 ++++++
>> >  arch/arm/include/asm/kvm_host.h            |  15 ++++
>> >  arch/arm/kvm/arm.c                         |   3 +
>> >  arch/arm64/include/asm/kvm_host.h          |   6 ++
>> >  arch/arm64/include/uapi/asm/kvm.h          |   5 ++
>> >  arch/arm64/kvm/guest.c                     |  51 ++++++++++++
>> >  include/kvm/arm_pmu.h                      |  23 ++++++
>> >  virt/kvm/arm/pmu.c                         | 128 +++++++++++++++++++++++++++++
>> >  8 files changed, 255 insertions(+)
>> >
>> > diff --git a/Documentation/virtual/kvm/devices/vcpu.txt b/Documentation/virtual/kvm/devices/vcpu.txt
>> > index 3cc59c5..60cbac8 100644
>> > --- a/Documentation/virtual/kvm/devices/vcpu.txt
>> > +++ b/Documentation/virtual/kvm/devices/vcpu.txt
>> > @@ -6,3 +6,27 @@ KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same struct
>> >  kvm_device_attr as other devices, but targets VCPU-wide settings and controls.
>> >
>> >  The groups and attributes per virtual cpu, if any, are architecture specific.
>> > +
>> > +1. GROUP: KVM_ARM_VCPU_PMU_V3_CTRL
>> > +Architectures: ARM64
>> > +
>> > +1.1. ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_IRQ
>> > +Parameters: in kvm_device_attr.addr the address for PMU overflow interrupt
>> > +Returns: -EBUSY: The PMU overflow interrupt is already set
>> > +         -ENODEV: Not set the corresponding vcpu feature bit or getting the PMU
>> > +                  overflow interrupt number while it's not set
>> > +         -EINVAL: Invalid PMU overflow interrupt number supplied
>> > +
>> > +A value describing the PMUv3 (Performance Monitor Unit v3) overflow interrupt
>> > +number for this vcpu. This interrupt could be a PPI or SPI, but the interrupt
>> > +type must be same for each vcpu. As a PPI, the interrupt number is same for all
>> > +vcpus, while as a SPI it must be different for each vcpu.
>> > +
>> > +1.2 ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_INIT
>> > +Parameters: no additional parameter in kvm_device_attr.addr
>> > +Returns: -ENODEV: No PMUv3 supported
>> > +         -ENXIO: PMUv3 not properly configured as required prior to calling this
>> > +                 attribute
>> > +         -EBUSY: PMUv3 already initialized
>> > +
>> > +Request the initialization of the PMUv3.
> The other thing we could do here (now the PMU is part of the vCPU 'device'
> rather than its own thing) is to have a single INIT ioctl that says
> "we're done doing all the SET_DEVICE_ATTR calls to configure the vCPU".
> But I'm fine with this way too.
> 
> You can have my
> Acked-by: Peter Maydell <peter.maydell at linaro.org>
> 
> for the userspace API parts of patches 19, 20 and 21 (with the minor typo
> fixes etc Andrew has posted).
Thanks a lot!

-- 
Shannon




More information about the linux-arm-kernel mailing list