On Mon, Oct 17, 2022 at 03:52:46PM +0800, Jason Wang wrote:

[...]
> > > +struct vtd_iotlb_key {
> > > +    uint16_t sid;
> > > +    uint32_t pasid;
> > > +    uint64_t gfn;
> > > +    uint32_t level;
> > >  };
> >
> > Nit: maybe re-arrange it a bit?
> >
> >    struct vtd_iotlb_key {
> >        uint64_t gfn;
> >        uint32_t pasid;
> >        uint32_t level;
> >        uint16_t sid;
> >    } __attribute__((__packed__));
> >
> > "packed" should save us 6 bytes for each in this case, maybe also
> > worthwhile but not strongly as we have a limit of 1k objs.
> 
> I think it should be fine to rearrange but for 'packed', would this
> cause alignment issues that may cause troubles on some arches?

Do you mean the gfn reading can be split into 2 * 4 bytes?  Would that
still work as long as we're protected with a lock when accessing iotlb
(even though it may be slower than aligned access)?

But at least I think you're right it's not always a benefit, so no strong
opinion here to have it packed.

> 
> >
> > The name "gfn" seems a bit unfortunate - would "iova" be more suitable?  I
> > do see we used it elsewhere too, so we can also leave that for later.
> 
> Right, it has been used for VTDIOTLBEntry before this patch. If
> possible I would leave it to be done on top with a separate patch.

Definitely.

Thanks,

-- 
Peter Xu


Reply via email to