> 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