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. -- 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