On Fri, 6 Feb 2026 09:57:15 +0000
"Zhijian Li (Fujitsu)" <[email protected]> wrote:

> On 04/02/2026 23:00, 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.
> > 
> > Signed-off-by: Alireza Sanaee <[email protected]>
> > ---
> >   hw/cxl/cxl-host.c | 6 ++----
> >   1 file changed, 2 insertions(+), 4 deletions(-)
> > 
> > diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c
> > index f3479b1991..9633b01abf 100644
> > --- a/hw/cxl/cxl-host.c
> > +++ b/hw/cxl/cxl-host.c
> > @@ -168,8 +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);
> > @@ -254,7 +252,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, true);  
> 
> 
> It seems you've added an extra parameter to the calls to 
> cxl_cfmws_find_device(), but its function signature wasn't updated.

Good spot. The extra parameter should be in the next patch.

Jonathan

> 
> 
> 
> Thanks
> Zhijian
> 
> 
> 
> >       if (d == NULL) {
> >           *data = 0;
> >           /* Reads to invalid address return poison */
> > @@ -271,7 +269,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, true);
> >       if (d == NULL) {
> >           /* Writes to invalid address are silent */
> >           return MEMTX_OK;  


Reply via email to