On 10-06-21, 19:40, Jean-Philippe Brucker wrote: > On Thu, Jun 10, 2021 at 12:16:46PM +0000, Viresh Kumar via Stratos-dev wrote: Fixed everything else you suggested. > > +struct virtio_gpio_config { > > + char name[32]; > > + __u16 ngpio; > > + __u16 padding; > > + __u32 gpio_names_size; > > + char gpio_names[0]; > > A variable-size array here will make it very difficult to append new > fields to virtio_gpio_config, when adding new features to the device. (New > fields cannot be inserted in between, since older drivers will expect > existing fields at a specific offset.) Yes, I thought about that earlier and though maybe we will be able to play with that using the virtio-features, I mean a different layout of config structure if we really need to add a field in config, based on the feature flag. > You could replace it with a reference to the string array, for example > "__u16 gpio_names_offset" declaring the offset between the beginning of > device-specific config and the string array. But, I like this idea more and it does make it very flexible. Will adapt to it. > The 'name' field could also be indirect to avoid setting a fixed > 32-char size, but that's not as important. Yeah, 32 bytes is really enough. One won't be able to make any sense out of a bigger name anyway :) > > +} __packed; > > No need for __packed, because the fields are naturally aligned (as > required by the virtio spec) Yeah, I know, but I tend to add that for structures which aren't very simple (like the request/response ones), just to avoid human errors and hours of debugging someone need to go through. __packed won't harm at least :) -- viresh _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization