On Wed, Apr 13, 2022 at 02:31:42PM -0700, Dan Williams wrote: > On Wed, Apr 13, 2022 at 11:38 AM Ben Widawsky <[email protected]> wrote: > > > > Endpoint decoder enumeration is the only way in which we can determine > > Device Physical Address (DPA) -> Host Physical Address (HPA) mappings. > > Information is obtained only when the register state can be read > > sequentially. If when enumerating the decoders a failure occurs, all > > other decoders must also fail since the decoders can no longer be > > accurately managed (unless it's the last decoder in which case it can > > still work). > > I think this should be expanded to fail if any decoder fails to > allocate anywhere in the topology otherwise it leaves a mess for > future address translation code to work through cases where decoder > information is missing. > > The current approach is based around the current expectation that > nothing is enumerating pre-existing regions, and nothing is performing > address translation.
Does the qemu support currently allow testing of this patch? If so, it would be good to reference qemu configurations. Any other alternatives would be welcome as well. +Luis on cc. > > > > > Signed-off-by: Ben Widawsky <[email protected]> > > --- > > drivers/cxl/core/hdm.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c > > index bfc8ee876278..c3c021b54079 100644 > > --- a/drivers/cxl/core/hdm.c > > +++ b/drivers/cxl/core/hdm.c > > @@ -255,6 +255,8 @@ int devm_cxl_enumerate_decoders(struct cxl_hdm *cxlhdm) > > cxlhdm->regs.hdm_decoder, i); > > if (rc) { > > put_device(&cxld->dev); > > + if (is_endpoint_decoder(&cxld->dev)) > > + return rc; > > failed++; > > continue; > > } > > -- > > 2.35.1 > > >
