[PATCH v9 10/17] KVM: arm64: introduce new KVM ITS device
Andre Przywara
andre.przywara at arm.com
Fri Jul 15 02:33:44 PDT 2016
Hi,
On 14/07/16 09:36, Marc Zyngier wrote:
> On 13/07/16 02:59, Andre Przywara wrote:
....
>> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
>> index 06ad94d..393ad3a 100644
>> --- a/virt/kvm/arm/vgic/vgic-its.c
>> +++ b/virt/kvm/arm/vgic/vgic-its.c
...
>> +static int vgic_its_set_attr(struct kvm_device *dev,
>> + struct kvm_device_attr *attr)
>> +{
>> + struct vgic_its *its = dev->private;
>> + int ret;
>> +
>> + switch (attr->group) {
>> + case KVM_DEV_ARM_VGIC_GRP_ADDR: {
>> + u64 __user *uaddr = (u64 __user *)(long)attr->addr;
>> + unsigned long type = (unsigned long)attr->attr;
>> + u64 addr;
>> +
>> + if (type != KVM_VGIC_ITS_ADDR_TYPE)
>> + return -ENODEV;
>> +
>> + if (its->initialized)
>> + return -EBUSY;
>> +
>> + if (copy_from_user(&addr, uaddr, sizeof(addr)))
>> + return -EFAULT;
>> +
>> + ret = vgic_check_ioaddr(dev->kvm, &its->vgic_its_base,
>> + addr, SZ_64K);
>
> Shouldn't that be the ITS size (128kB)?
No, this is the alignment requirement. See here:
...
>> diff --git a/virt/kvm/arm/vgic/vgic-kvm-device.c b/virt/kvm/arm/vgic/vgic-kvm-device.c
>> index 2f24f13..1813f93 100644
>> --- a/virt/kvm/arm/vgic/vgic-kvm-device.c
>> +++ b/virt/kvm/arm/vgic/vgic-kvm-device.c
>> @@ -21,8 +21,8 @@
>>
>> /* common helpers */
>>
>> -static int vgic_check_ioaddr(struct kvm *kvm, phys_addr_t *ioaddr,
>> - phys_addr_t addr, phys_addr_t alignment)
>> +int vgic_check_ioaddr(struct kvm *kvm, phys_addr_t *ioaddr,
>> + phys_addr_t addr, phys_addr_t alignment)
>> {
>> if (addr & ~KVM_PHYS_MASK)
>> return -E2BIG;
Fixed the rest.
Cheers,
Andre.
More information about the linux-arm-kernel
mailing list