2016-07-21 17:54+0100, Marc Zyngier:
> On 21/07/16 17:13, Radim Krčmář wrote:
>> 2016-07-18 13:25+0000, Eric Auger:
>>> Extend kvm_kernel_irq_routing_entry to transport the device id
>>> field, devid. A new flags field makes possible to indicate the
>>> devid is valid. Those additions are used for ARM GICv3 ITS MSI
>>> injection.
>>>
>>> Signed-off-by: Eric Auger <eric.au...@redhat.com>
>>> Acked-by: Christoffer Dall <christoffer.d...@linaro.org>
>>>
>>> ---
>>> v6 -> v7:
>>> - added msi_ prefix to flags and dev_id fields
>>>
>>> v4 -> v5:
>>> - add Christoffer's R-b
>>>
>>> v2 -> v3:
>>> - add flags
>>>
>>> v1 -> v2:
>>> - replace msi_msg field by a struct composed of msi_msg and devid
>>>
>>> RFC -> PATCH:
>>> - reword the commit message after change in first patch (uapi)
>>> ---
>>>  include/linux/kvm_host.h | 6 +++++-
>>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
>>> index c87fe6f..3d2cbb4 100644
>>> --- a/include/linux/kvm_host.h
>>> +++ b/include/linux/kvm_host.h
>>> @@ -317,7 +317,11 @@ struct kvm_kernel_irq_routing_entry {
>>>                     unsigned irqchip;
>>>                     unsigned pin;
>>>             } irqchip;
>>> -           struct msi_msg msi;
>>> +           struct {
>>> +                   struct msi_msg msi;
>>> +                   u32 msi_flags;
>>> +                   u32 msi_devid;
>> 
>> I'd much rather see them as msi.flags and msi.devid.
> 
> That's not really possible, as msi_msg is the core data structure for
> MSIs, and nobody really expects this tructure to change.
> 
>> I didn't notice a code that passes struct msi_msg anywhere, so using an
>> ad-hoc struct like irqchip or defining a new one would work fine.
> 
> I guess we could have an arm-specific one:
> 
>               struct arm_msi {
>                       struct msi_msg msg;
>                       u32 flags;
>                       u32 devid;
>               };
> 
> and use that. Would that be OK with you?

The feature wants to be arch-neutral, so I would rather ignore struct
msi_msg.  kvm_kernel_irq_routing_entry practically mirrors routing
entries from KVM API and there we have:

  struct kvm_msi {
        __u32 address_lo;
        __u32 address_hi;
        __u32 data;
        __u32 flags;
        __u32 devid;
        __u8  pad[12];
  };

I think that something like

  struct {
        u32 address_lo;
        u32 address_hi;
        u32 data;
        u32 flags;
        u32 devid;
  } msi;

would get us consistency, minimal changes to existing code, no namespace
hierarchy, and no "." vs "_" mistakes at a good price of some code
duplication and concept separation.
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to