On 22/07/2016 16:14, Radim Krčmář wrote:
> 2016-07-22 13:46+0000, Eric Auger:
>> Up to now, only irqchip routing entries could be set. This patch
>> adds the capability to insert MSI routing entries.
>>
>> For ARM64, let's also increase KVM_MAX_IRQ_ROUTES to 4096: this
>> include SPI irqchip routes plus MSI routes. In the future this
>> might be extended.
>>
>> Signed-off-by: Eric Auger <eric.au...@redhat.com>
>> Reviewed-by: Andre Przywara <andre.przyw...@arm.com>
>>
>> ---
>> v7 -> v8:
>> - adapt to changes in kvm_kernel_irq_routing_entry and check the
>>   user entry flags according to the user entry type
>>
>> v6 -> v7:
>> - added Andre's R-b
>>
>> v2 -> v3:
>> - remove any reference to KVM_IRQ_ROUTING_EXTENDED_MSI type
>> - unconditionnaly uapi flags and devid downto the kernel
>>   routing entry struct
>> - handle KVM_MSI_VALID_DEVID flag in kvm_set_irq_routing
>> - note about KVM_CAP_MSI_DEVID moved in the first patch file
>>   of the series
>>
>> v1 -> v2:
>> - adapt to new routing entry types
>>
>> RFC -> PATCH:
>> - move api MSI routing updates into that patch file
>> - use new devid field of user api struct
>> ---
>> diff --git a/virt/kvm/irqchip.c b/virt/kvm/irqchip.c
>> @@ -201,23 +202,25 @@ int kvm_set_irq_routing(struct kvm *kvm,
>>                      new->chip[i][j] = -1;
>>  
>>      for (i = 0; i < nr; ++i) {
>> -            struct kvm_kernel_irq_routing_entry *e;
>> -
>>              r = -ENOMEM;
>>              e = kzalloc(sizeof(*e), GFP_KERNEL);
>>              if (!e)
>>                      goto out;
>>  
>>              r = -EINVAL;
>> -            if (ue->flags) {
>> -                    kfree(e);
>> -                    goto out;
>> +            switch (ue->type) {
>> +            case KVM_IRQ_ROUTING_IRQCHIP:
>> +                    if (ue->flags)
>> +                            goto free_entry;
>> +                    break;
>> +            case KVM_IRQ_ROUTING_MSI:
>> +                    if (ue->flags & ~KVM_MSI_VALID_DEVID)
>> +                            goto free_entry;
>> +                    break;
> 
> The function is common for all arches and there are currently two other
> routing types (S390_ADAPTER and HV_SINT) that ought to be checked as
> well, so "default" instead of "KVM_IRQ_ROUTING_IRQCHIP" would be better.
Sure

Thanks

Eric
> 
>>              }
>>              r = setup_routing_entry(new, e, ue);
>> -            if (r) {
>> -                    kfree(e);
>> -                    goto out;
>> -            }
>> +            if (r)
>> +                    goto free_entry;
>>              ++ue;
>>      }
>>  
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to