Thread (83 messages) 83 messages, 7 authors, 2016-01-11
STALE3795d

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help