Re: [PATCH 03/14] cxl/mem: Find device capabilities

From: Ben Widawsky
Date: Mon Feb 01 2021 - 19:12:28 EST


On 21-02-01 15:58:09, David Rientjes wrote:
> On Mon, 1 Feb 2021, Ben Widawsky wrote:
>
> > > I haven't seen the update to 8.2.8.4.5 to know yet :)
> > >
> > > You make a good point of at least being able to interact with the driver.
> > > I think you could argue that if the driver binds, then the payload size is
> > > accepted, in which case it would be strange to get an EINVAL when using
> > > the ioctl with anything >1MB.
> > >
> > > Concern was that if we mask off the reserved bits from the command
> > > register that we could be masking part of the payload size that is being
> > > passed if the accepted max is >1MB. Idea was to avoid any possibility of
> > > this inconsistency. If this is being checked for ioctl, seems like it's
> > > checking reserved bits.
> > >
> > > But maybe I should just wait for the spec update.
> >
> > Well, I wouldn't hold your breath (it would be an errata in this case anyway).
> > My preference would be to just allow allow mailbox payload size to be 2^31 and
> > not deal with this.
> >
> > My question was how strongly do you feel it's an error that should prevent
> > binding.
> >
>
> I don't have an objection to binding, but doesn't this require that the
> check in cxl_validate_cmd_from_user() guarantees send_cmd->size_in cannot
> be greater than 1MB?

You're correct. I'd need to add:
cxlm->mbox.payload_size =
min_t(size_t, 1 << CXL_GET_FIELD(cap, CXLDEV_MB_CAP_PAYLOAD_SIZE), 1<<20)