• Jim Harris's avatar
    cxl/region: Fix x1 root-decoder granularity calculations · 98a04c7a
    Jim Harris authored
    Root decoder granularity must match value from CFWMS, which may not
    be the region's granularity for non-interleaved root decoders.
    
    So when calculating granularities for host bridge decoders, use the
    region's granularity instead of the root decoder's granularity to ensure
    the correct granularities are set for the host bridge decoders and any
    downstream switch decoders.
    
    Test configuration is 1 host bridge * 2 switches * 2 endpoints per switch.
    
    Region created with 2048 granularity using following command line:
    
    cxl create-region -m -d decoder0.0 -w 4 mem0 mem2 mem1 mem3 \
    		  -g 2048 -s 2048M
    
    Use "cxl list -PDE | grep granularity" to get a view of the granularity
    set at each level of the topology.
    
    Before this patch:
            "interleave_granularity":2048,
            "interleave_granularity":2048,
        "interleave_granularity":512,
            "interleave_granularity":2048,
            "interleave_granularity":2048,
        "interleave_granularity":512,
    "interleave_granularity":256,
    
    After:
            "interleave_granularity":2048,
            "interleave_granularity":2048,
        "interleave_granularity":4096,
            "interleave_granularity":2048,
            "interleave_granularity":2048,
        "interleave_granularity":4096,
    "interleave_granularity":2048,
    
    Fixes: 27b3f8d1 ("cxl/region: Program target lists")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarJim Harris <jim.harris@samsung.com>
    Link: https://lore.kernel.org/r/169824893473.1403938.16110924262989774582.stgit@bgt-140510-bm03.eng.stellus.in
    [djbw: fixup the prebuilt cxl_test region]
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    98a04c7a
cxl.c 34 KB