Re: [PATCH v2 06/12] cxl/acpi: Extract component registers of restricted hosts from RCRB

From: Dan Williams
Date: Mon Oct 24 2022 - 21:02:29 EST


Robert Richter wrote:
> On 24.10.22 16:23:39, Dave Jiang wrote:
> > On 10/24/2022 3:37 PM, Dan Williams wrote:
> > Dan Williams wrote:
> > Robert Richter wrote:
>
> > Ok, I see where to go here. Could you point me to Dave's postings you
> > are referring to? I checked linux-cxl and could not find anything
> > related to RCRB or that changes regs.c.
> >
> > He was in the middle of tidying them when you posted your series, but I
> > think it would not hurt to push them to a git tree so you can grab the
> > bits and pieces you want.
> >
> > Dave?
> >
> > Looks like the list delivery is backed up, so I added Dave to the Cc:.
> >
> > He pushed:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git/log/?h=cxl-rch
> >
> > ...which was his original attempt and:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git/log/?h=cxl-rch-robert
> >
> > ...which was an attempt to rebase on top of your bits.
> >
> > The common RCRB mapping function is here:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git/commit/?h=cxl-rch-robert&id=5be44cad37972517dae6a79001080ccfbdb67c49
>
> Thanks for the pointers.
>
> >
> > I think the path forward is to build on that common RCRB code, fix
> > cxl_acpi to register the pci host bridge device instead of the APCI
> > device as the dport device, and then rely on a flag to skip over
> > devm_enumerate_cxl_ports() in favor of just calling cxl_mem_find_port()
> > directly in the RCIEP / RCH case.
>
> Yes, we can completely skip devm_enumerate_cxl_ports() now. Though, I
> am not convinced on using the pci host bridge as dport_dev as RCD and
> non-RCD mode will diverge too much then. Looking into details here.

Oh, I disagree with the initial implementation Dave had here. Both cases
should be specifying the bridge device as the dport. That's a fixup that
can go in now even without the RCD support.

As it is the tooling needs to jump through the physical_node attribute
to provide the useful information in cxl list:

# cxl list -BTu -b ACPI.CXL
{
"bus":"root0",
"provider":"ACPI.CXL",
"nr_dports":1,
"dports":[
{
"dport":"ACPI0016:00",
"alias":"pci0000:34",
"id":"0x34"
}
]
}

...and I think that should just swap to this in all cases:

# cxl list -BTu -b ACPI.CXL
{
"bus":"root0",
"provider":"ACPI.CXL",
"nr_dports":1,
"dports":[
{
"dport":"pci0000:34",
"alias":"ACPI0016:00",
"id":"0x34"
}
]
}