• Matthew Auld's avatar
    drm/xe/mmio: update gt_count when probing multi-tile · 356010a1
    Matthew Auld authored
    It looks like the single-tile PVC in CI dies during module load when doing
    the pcode init. From the logs we try to access the address
    0000000000138124 which doesn't map to anything, however 0x138124 also
    looks to be the PCODE_MAILBOX register. So looks like the per-tile
    mmio register mapping is NULL.
    
    During probe the tile count is potentially trimmed, since we don't know
    the real count until we actually probe the device. This seems to be
    the case for single-tile PVC or similar devices.  However it looks like
    the gt_count is never adjusted to respect this updated tile count. As a
    result when later doing some for_each_gt() loop, like we do for the
    pcode, we can get back some GT that maps to some non-existent tile
    which hasn't been properly set up, leading to crashes.
    
    Try to fix this by adjusting the gt_count after probing the tiles for
    real.
    
    v2: Fix typo so it actually builds
    
    References: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/383Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarOfir Bitton <obitton@habana.ai>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    356010a1
xe_mmio.c 13.6 KB