[PATCH RFC 15/13] gpio: virtio: reorder fields to reduce struct padding

From: Michael S. Tsirkin

Date: Tue Dec 30 2025 - 11:40:40 EST


Reorder struct virtio_gpio_line fields to place the DMA buffers (req/res)
last. This eliminates the need for __dma_from_device_aligned_end padding
after the DMA buffer, since struct tail padding naturally protects it,
making the struct a bit smaller.

Size reduction estimation when ARCH_DMA_MINALIGN=128:
- request is 8 bytes
- response is 2 bytes
- removing _end saves up to 128-6=122 bytes padding to align rxlen field

Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
---
drivers/gpio/gpio-virtio.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
index 32b578b46df8..8b30a94e4625 100644
--- a/drivers/gpio/gpio-virtio.c
+++ b/drivers/gpio/gpio-virtio.c
@@ -26,12 +26,11 @@ struct virtio_gpio_line {
struct mutex lock; /* Protects line operation */
struct completion completion;

+ unsigned int rxlen;
+
__dma_from_device_aligned_begin
struct virtio_gpio_request req;
struct virtio_gpio_response res;
-
- __dma_from_device_aligned_end
- unsigned int rxlen;
};

struct vgpio_irq_line {
--
MST