On Wed, 16 Sep 2026 14:49:36 -0400
Gregory Price <[email protected]> wrote:

> On Wed, Sep 16, 2026 at 07:16:59PM +0100, Jonathan Cameron wrote:
> > > +/*
> > > + * A CXL Type-2 device advertises both CXL.cache and CXL.mem in its CXL 
> > > DVSEC.
> > > + * pcie_is_cxl() is also true for Type-1 (cache only) and Type-3 (mem 
> > > only)
> > > + * devices, which the vfio-cxl provider does not handle, so confirm the 
> > > Type-2
> > > + * identity before engaging it.  
> > 
> > We don't expect to handle type 3 class code compliant devices, but what 
> > about
> > the things referred to sometimes as CXL Type 3+?  
> 
> Dan has previously (and I think would continue) to just call that
> an accelerator - because it is.
> 
> I think the Type 1/2/3 nomenclature is stale and needs to go away,
> it's outlived its usefulness.
> 
> To your point below, a compressed ram device is really an accelerator
> with CXL.io and CXL.mem.  All the spec says (used to say?) about
> "Type 2" is that it *may* support CXL.cache - it doesn't require it.
> 
> > It is also plausible we'd pass a full compressed RAM device through to the
> > guest without paravirtualizing like we currently plan to do for class
> > code Type 3 devices (for DCD, sharing etc). +CC Gregory to point out where
> > I am wrong on this ;)
> >   
> 
> Plausible, possible, feasible - yes.
> 
> Sane?  More sane than using it as a normal memory device on the host
> assuming RAS signals from the device can't overwhelm the host (unknown).
> 
> > More generally, why are we controlling usecases?  A class code compliant 
> > type 3
> > device 'could' be passed through I think if someone wanted to do that.
> > I'd not encourage it but why is it a linux policy to not support it?
> >   
> 
> The only scenario I can think of that you'd want to pass a simple
> expander all the way through to the guest would be RAS signals - which
> I think still require host plumbing anyway to avoid passing said signals
> to the wrong guest depending on how you've chopped up the region.
> 
Taking just the compressed case...
If there are capacity signals etc I'm not sure I'd want to have to 
paravirtualize
those. Plus I really don't fancy making a single compressed device provide 
memory
into multiple hosts. That's a whole new level of paravirtualization of noisy
neighbours.  Ma! Someone else wrote really uncompressible memory and now there
is none left for me.

> Basically if you need DPA/HPA data from the device to be interpreted by
> the kernel, the guest needs a translation mechanism.

Hmm. That is potentially ugly. But I guess a problem for any accelerator.
If they are firmware first not too bad as it's just normal memory error
reporting so we create a cper in the host with the GPA and send it on
it's merry way.  

> 
> In practice I can see passing a virtualized, locked auto-decoder through
> to the guest with the same HPA/DPA values as the real device so the
> signals can be delivered quickly with limited host interposition.

We'd lie (trap / emulate) the device decoder and probably the topology so that
what you see matches up and device provided DPAs will translate to GPAs.
I forget if that bit is in this patch set or not.

> 
> You would probably need on-device vitualization support to do "proper"
> passthrough so the device can route signals to the guest directly.

Hmm. We may get a way to do that at somepoint but so far it's pretty
simple so I'd argue only a few things need to look different in the
guest to what they do in the host.

> 
> Anyway, you could pass it through, sure, why not.
> 
> We shouldn't limit it, if only because we're not clairvoyant about
> what will be useful tomorrow.

Agreed.

J
> 
> ~Gregory


Reply via email to