[PATCH v8 20/20] KVM: ARM64: Add a new kvm ARM PMU device
From: Andrew Jones <hidden>
Date: 2016-01-08 15:59:11
Also in:
kvm, kvmarm
On Fri, Jan 08, 2016 at 04:20:28PM +0100, Andrew Jones wrote:
On Fri, Jan 08, 2016 at 12:22:13PM +0100, Andrew Jones wrote:quoted
When we want more than 256 vcpus we'll need a new kvm-irq-line ioctl, but, as for the arm devices, we could avoid the problem completely by extending the SET/GET_DEVICE_ATTR ioctl to also be a vcpu ioctl.Replying to myself on this comment. The arm-gic device is fine as is, as it really is a vm device. However I'm convincing myself more and more (and with the help of Radim Krcmar being my sounding board) that using the device api for the pmu is wrong (at least as a per-vm device). The pmu is a per-vcpu device. I think we should consider adding KVM_CREATE_DEVICE, KVM_SET/GET_DEVICE_ATTR to the vcpu ioctl to allow per-vcpu devices. Then, instead of looping vcpus in the kernel to init the pmu per vcpu on the call to KVM_CREATE_DEVICE, we'd have the more natural looping in userspace. Also, the set-attr for the irq would be part of that loop, and no longer need a vcpu-index parameter.
Another note, for this pmu device we don't actually need KVM_CREATE_DEVICE to be a vcpu ioctl. We can just add another vcpu-init feature flag that we set with KVM_ARM_VCPU_INIT in order to "create" the pmu. We still need to add KVM_SET/GET_DEVICE_ATTR to the vcpu ioctl though, allowing the irq to be set. KVM_ARM_PMU_GRP_IRQ will just become a vcpu attribute. Thanks, drew