On 1/21/26 9:55 PM, Smita Koralahalli wrote:
> __cxl_decoder_detach() currently resets decoder programming whenever a
> region is detached if cxl_config_state is beyond CXL_CONFIG_ACTIVE. For
> autodiscovered regions, this can incorrectly tear down decoder state
> that may be relied upon by other consumers or by subsequent ownership
> decisions.
> 
> Skip cxl_region_decode_reset() during detach when CXL_REGION_F_AUTO is
> set.
> 
> Signed-off-by: Smita Koralahalli <[email protected]>

Reviewed-by: Dave Jiang <[email protected]>


> ---
>  drivers/cxl/core/region.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index ae899f68551f..45ee598daf95 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -2178,7 +2178,9 @@ __cxl_decoder_detach(struct cxl_region *cxlr,
>               cxled->part = -1;
>  
>       if (p->state > CXL_CONFIG_ACTIVE) {
> -             cxl_region_decode_reset(cxlr, p->interleave_ways);
> +             if (!test_bit(CXL_REGION_F_AUTO, &cxlr->flags))
> +                     cxl_region_decode_reset(cxlr, p->interleave_ways);
> +
>               p->state = CXL_CONFIG_ACTIVE;
>       }
>  


Reply via email to