> The two fields above are required for rpmsg-gpio, but not for virtio-gpio.
> 
> In the rpmsg-gpio case, interrupt detection and handling occur on the remote 
> processor. The 
> interrupt information (such as the GPIO line and trigger type) must therefore 
> be sent to Linux 
> through this notification message.
> 
> In contrast, for virtio-gpio, interrupt handling is performed on the local 
> processor. Since Linux already 
> has all the necessary interrupt context, the information is not needed.

Are you sure about that?

virtio_gpio_irq_set_type() sets:

        irq_line->type = type;
        irq_line->update_pending = true;

virtio_gpio_irq_bus_sync_unlock() looks at update_pending and does
virtio_gpio_req(), passing irq_line->type as type.

This then gets filled into:

/* Virtio GPIO Request / Response */
struct virtio_gpio_request {
        __le16 type;
        __le16 gpio;
        __le32 value;
};

which gets scatter/gathered over the virtqueue to the peer.

      Andrew

Reply via email to