On Fri, Mar 06, 2026 at 12:11:49PM +0000, Alireza Sanaee wrote: > This function will shortly be used to help find if there is a route to a > device, serving an HPA, under a particular fixed memory window. Rather than > having that new use case subtract the base address in the caller, only to > add it again in cxl_cfmws_find_device(), push the responsibility for > calculating the HPA to the caller. > > This also reduces the inconsistency in the meaning of the hwaddr addr > parameter between this function and the calls made within it that access > the HDM decoders that operating on HPA. > > Reviewed-by: Li Zhijian <[email protected]> > Reviewed-by: Jonathan Cameron <[email protected]> > Signed-off-by: Alireza Sanaee <[email protected]>
Reviewed-by: Gregory Price <[email protected]> Tested-by: Gregory Price <[email protected]> > --- > Thanks to Li for the tag. > Change log: > v6->v7: No change. > > hw/cxl/cxl-host.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c > index f3479b1991..a94b893e99 100644 > --- a/hw/cxl/cxl-host.c > +++ b/hw/cxl/cxl-host.c > @@ -168,9 +168,6 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindow > *fw, hwaddr addr) > bool target_found; > PCIDevice *rp, *d; > > - /* Address is relative to memory region. Convert to HPA */ > - addr += fw->base; > - > rb_index = (addr / cxl_decode_ig(fw->enc_int_gran)) % fw->num_targets; > hb = PCI_HOST_BRIDGE(fw->target_hbs[rb_index]->cxl_host_bridge); > if (!hb || !hb->bus || !pci_bus_is_cxl(hb->bus)) { > @@ -254,7 +251,7 @@ static MemTxResult cxl_read_cfmws(void *opaque, hwaddr > addr, uint64_t *data, > CXLFixedWindow *fw = opaque; > PCIDevice *d; > > - d = cxl_cfmws_find_device(fw, addr); > + d = cxl_cfmws_find_device(fw, addr + fw->base); > if (d == NULL) { > *data = 0; > /* Reads to invalid address return poison */ > @@ -271,7 +268,7 @@ static MemTxResult cxl_write_cfmws(void *opaque, hwaddr > addr, > CXLFixedWindow *fw = opaque; > PCIDevice *d; > > - d = cxl_cfmws_find_device(fw, addr); > + d = cxl_cfmws_find_device(fw, addr + fw->base); > if (d == NULL) { > /* Writes to invalid address are silent */ > return MEMTX_OK; > -- > 2.43.0 >
