Re: [PATCH/RFC 2/2] s390 virtualization interface.

Arnd Bergmann
2007-05-01T21:12:11Z

On Sunday 29 April 2007, Heiko Carstens wrote:

> > Is this data structure extensible? If it is, you probably need
> > some sort of versioning information to make sure that user space
> > doesn't rely on fields that the kernel doesn't know about.
>
> I don't think we can put in some versioning information here. If
> the kernel decides to increase the version then old userspace
> code would break?
> We rather need some mechanism so userpace can ask the kernel
> "do you support feature x?" and dependent on the answer some
> fields are used or unused.

You could do it the way that ext2 handles compatible and incompatible
features in the on-disk layout:

Assign a number of bits in the read-only part of the mapping to flags
that the user application can test. A bit in the compatible range mean
that a feature is available to the user application if it wants to
use it. A bit in the incompatible range means that the user space needs
to understand how to use a feature in order to run correctly.

> > > +struct sca_entry {
> > > +   atomic_t scn;
> > > +   __u64   reserved;
> > > +   __u64   sda;
> > > +   __u64   reserved2[2];
> > > +}__attribute__((packed));
> >
> > Is this a hardware data structure? If not, you shouldn't pack it
> > because the first word is only 32 bits and consequently all following
> > ones are unaligned.
>
> It's a hardware structure. Guess the unaligned u64s were generated when
> this structure was extended to support 64bit.
> But of course we shouldn't put an atomic_t in a hardware structure, since
> it's implementation might change.

Not sure about that point. If you need to do atomic operations on the
first 32 bits, you shouldn't need to invent your own abstractions for
those, and it's highly unlikely that the implementation of atomic_t changes.