On 17/06/26 11:45PM, Junjie Cao wrote:
Hi Shrihari,

On Tue,  9 Jun 2026 16:28:33 +0530, Shrihari E S wrote:
+    ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY, UIO,
+                     (type == CXL2_TYPE3_DEVICE || CXL2_UPSTREAM_PORT) && uio);
     ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY,
-                     UIO_DECODER_COUNT, 0);
+                     UIO_DECODER_COUNT,
+                     (type == CXL2_TYPE3_DEVICE || CXL2_UPSTREAM_PORT) && uio ?
+                     decoder_count : 0);

CXL2_UPSTREAM_PORT is an enum constant with a non-zero value, so
"|| CXL2_UPSTREAM_PORT" is always true and the type check collapses
to just "uio" -- every type that reaches hdm_init_common() with
uio=true gets the UIO bit set.  Presumably the intent was:

   (type == CXL2_TYPE3_DEVICE || type == CXL2_UPSTREAM_PORT) && uio

I haven't proposed which types should be in that set -- patch 7 sets
crp->uio_capable on the cxl-rp, so a root port may well be intended
here too.  Either way the current expression isn't gating on type.
The same applies to the UIO_DECODER_COUNT line just below.

Many thanks,
Junjie

Hi Junjie,

  Thanks for pointing out. Will rectify it in the next version of the patch.

Thanks,


Reply via email to