On Wed, Oct 11, 2017 at 02:49:55PM -0500, Brijesh Singh wrote:
This is OK for now. But in future if FW steals another bit from reserved1
field to expose a new flag then 'owner' name will no longer be valid. If you
don't to use bit field then we have to use some generic name instead of
naming the field as 'owner'. Please note that its not just userspace, KVM
driver also uses the same fields and it may also need to know which bit
position to use.
So what is this field called in the spec?
This is a tricky one. The 32-bit are packed as:
BIT0 - config.es
BIT1-23: reserved
BIT24-31: build
Is that what the firmware gives?
Then it is easy:
<firmware_field_name> &= GENMASK(23, 1);
and then userspace can pick apart bit 0 and bit24-31.
Just use one raw struct which the firmware gives you and the rest is
done by the sw. Like clearing reserved fields before copying to user.
You don't want to be updating that struct layout later: think of old
qemu with new kernel and all those different configurations.