On 2016/1/26 0:53, Peter Maydell wrote: > On 15 January 2016 at 06:27, Shannon Zhao <zhaoshenglong@xxxxxxxxxx> wrote: >> > From: Shannon Zhao <shannon.zhao@xxxxxxxxxx> >> > >> > 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@xxxxxxxxxx> >> > --- >> > CC: Peter Maydell <peter.maydell@xxxxxxxxxx> >> > --- >> > 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@xxxxxxxxxx> > > for the userspace API parts of patches 19, 20 and 21 (with the minor typo > fixes etc Andrew has posted). Thanks a lot! -- Shannon -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html