Hi Jonathan,

I apologize for the delayed response; I have just returned from vacation.


On 16/04/2025 00:47, Jonathan Cameron wrote:
> On Mon, 7 Apr 2025 02:59:20 +0000
> "Zhijian Li (Fujitsu)" <lizhij...@fujitsu.com> wrote:
> 
>> Ping
> 
> Sorry, I wrote half a reply but then lost it before sending
> - was still in my drafts :(
> 
>>
>> Only if (dsp_count==1 && hdm_for_passthrough==true), the QEMU shouldn't 
>> implement
>> the HDM decodder for the Host-bridge.
> 
> HDM for pass through means that we do have decoders even for pass through
> not that we do not.  The name could be better and the code flow
> perhaps simpler.

I got you, I did admit that I misunderstood it before.
the word *hdm* in hdm_for_passthrough means "Host-managed Device Memory" which 
was missing *Decoders*
So it though of it was an option to enable the pass through feature

Per CXL SPEC "8.2.4.20 CXL HDM Decoder Capability Structure",
I read it as "zero capability structure instance is optional, so it should 
disable by default",
while the QEMU implemented it as enabled by default.

This annoyed me when I tried to implement provisioning HDM decoders(the guest 
will construct
CXL region by them) in QEMU.

Thanks
Zhijian


> 
>>
>> But previous code didn't follow this.
> 
>> Thanks
>> Zhijian
>>
>> On 23/03/2025 16:04, Li Zhijian wrote:
>>> Reverse the logical condition for HDM passthrough support in
>>> pci_expander_bridge. This patch ensures the HDM passthrough condition
>>> is evaluated only when hdm_for_passthrough is set to true, aligning
>>> behavior with intended semantics and comments.
>>>
>>> Signed-off-by: Li Zhijian <lizhij...@fujitsu.com>
>>> ---
>>>
>>> This change corrects what appears to be a previous mistake in logic
>>> regarding HDM passthrough conditions.
>>> ---
>>>    hw/pci-bridge/pci_expander_bridge.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/hw/pci-bridge/pci_expander_bridge.c 
>>> b/hw/pci-bridge/pci_expander_bridge.c
>>> index 3396ab4bdd..25f8922d76 100644
>>> --- a/hw/pci-bridge/pci_expander_bridge.c
>>> +++ b/hw/pci-bridge/pci_expander_bridge.c
>>> @@ -307,7 +307,7 @@ static void pxb_cxl_dev_reset(DeviceState *dev)
>>>         * The CXL specification allows for host bridges with no HDM decoders
>>>         * if they only have a single root port.
>>>         */
>>> -    if (!PXB_CXL_DEV(dev)->hdm_for_passthrough) {
> 
> This makes us only check the number of ports if we are not
> providing hdm decoders for passthrough ports.
> 
> If we are providing HDM Decoders anyway we don't care how many
> ports there are so the 0 value is fine.
> 
>>> +    if (PXB_CXL_DEV(dev)->hdm_for_passthrough) {
>>>            dsp_count = pcie_count_ds_ports(hb->bus);
>>>        }
>>>        /* Initial reset will have 0 dsp so wait until > 0 *
> 

Reply via email to