> + vdata->major =
> cpu_to_be16(LIQUIDIO_BASE_MAJOR_VERSION);
> + vdata->minor =
> cpu_to_be16(LIQUIDIO_BASE_MINOR_VERSION);
> + vdata->micro =
> cpu_to_be16(LIQUIDIO_BASE_MICRO_VERSION);
Will probably add sparse warnings.
> +#define LIO_STR_HELPER(x) #x
> +#define LIO_STR(x) LIO_STR_HELPER(x)
This is basically __stringify()
> +struct lio_version {
> + u64 major:16;
> + u64 minor:16;
> + u64 micro:16;
> + u64 reserved:16;
> +};
You probably want those typed, not merely bits out of u64.
But even if you didn't, what's the benefit this has over u16s?