KVM: arm/arm64: vgic-new: vgic_kvm_device: KVM_DEV_ARM_VGIC_GRP_CTRL
This patch implements the KVM_DEV_ARM_VGIC_GRP_CTRL group API featuring KVM_DEV_ARM_VGIC_CTRL_INIT attribute. The vgic_init function is not yet implemented though. Signed-off-by: Eric Auger <eric.auger@linaro.org> Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
This commit is contained in:
parent
fca256026b
commit
afcc7c50ce
|
@ -23,6 +23,8 @@
|
||||||
static int vgic_set_common_attr(struct kvm_device *dev,
|
static int vgic_set_common_attr(struct kvm_device *dev,
|
||||||
struct kvm_device_attr *attr)
|
struct kvm_device_attr *attr)
|
||||||
{
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
switch (attr->group) {
|
switch (attr->group) {
|
||||||
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS: {
|
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS: {
|
||||||
u32 __user *uaddr = (u32 __user *)(long)attr->addr;
|
u32 __user *uaddr = (u32 __user *)(long)attr->addr;
|
||||||
|
@ -55,6 +57,16 @@ static int vgic_set_common_attr(struct kvm_device *dev,
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
case KVM_DEV_ARM_VGIC_GRP_CTRL: {
|
||||||
|
switch (attr->attr) {
|
||||||
|
case KVM_DEV_ARM_VGIC_CTRL_INIT:
|
||||||
|
mutex_lock(&dev->kvm->lock);
|
||||||
|
r = vgic_init(dev->kvm);
|
||||||
|
mutex_unlock(&dev->kvm->lock);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
@ -131,6 +143,11 @@ static int vgic_v2_has_attr(struct kvm_device *dev,
|
||||||
switch (attr->group) {
|
switch (attr->group) {
|
||||||
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS:
|
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS:
|
||||||
return 0;
|
return 0;
|
||||||
|
case KVM_DEV_ARM_VGIC_GRP_CTRL:
|
||||||
|
switch (attr->attr) {
|
||||||
|
case KVM_DEV_ARM_VGIC_CTRL_INIT:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
|
@ -166,6 +183,11 @@ static int vgic_v3_has_attr(struct kvm_device *dev,
|
||||||
switch (attr->group) {
|
switch (attr->group) {
|
||||||
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS:
|
case KVM_DEV_ARM_VGIC_GRP_NR_IRQS:
|
||||||
return 0;
|
return 0;
|
||||||
|
case KVM_DEV_ARM_VGIC_GRP_CTRL:
|
||||||
|
switch (attr->attr) {
|
||||||
|
case KVM_DEV_ARM_VGIC_CTRL_INIT:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue