intel/dev/xe: Fix size of eu_per_dss_mask
Real Xe KMD actually returns a uint64, so here changing from uint32
to uint64.
Fixes: 04bdbeec31 ("intel/dev/xe: Fix access to eu_per_dss_mask")
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Acked-by: Nanley Chery <nanley.g.chery@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32527>
This commit is contained in:
committed by
Marge Bot
parent
972f8aa287
commit
2aae000edb
@@ -186,7 +186,7 @@ static void
|
||||
xe_compute_topology(struct intel_device_info * devinfo,
|
||||
const uint8_t *geo_dss_mask,
|
||||
const uint32_t geo_dss_num_bytes,
|
||||
const uint32_t eu_per_dss_mask,
|
||||
const uint64_t eu_per_dss_mask,
|
||||
const unsigned l3_banks)
|
||||
{
|
||||
intel_device_info_topology_reset_masks(devinfo);
|
||||
@@ -214,7 +214,7 @@ xe_compute_topology(struct intel_device_info * devinfo,
|
||||
uint32_t dss_mask;
|
||||
struct {
|
||||
bool enabled;
|
||||
uint32_t eu_mask;
|
||||
uint64_t eu_mask;
|
||||
} dual_subslice[INTEL_DEVICE_MAX_SUBSLICES];
|
||||
} slices[INTEL_DEVICE_MAX_SLICES] = {};
|
||||
|
||||
@@ -257,7 +257,7 @@ xe_compute_topology(struct intel_device_info * devinfo,
|
||||
ss / 8] |= (1u << (ss % 8));
|
||||
|
||||
for (unsigned eu = 0; eu < devinfo->max_eus_per_subslice; eu++) {
|
||||
if (!(slices[s].dual_subslice[ss].eu_mask & (1u << eu)))
|
||||
if (!(slices[s].dual_subslice[ss].eu_mask & (1ULL << eu)))
|
||||
continue;
|
||||
|
||||
devinfo->eu_masks[s * devinfo->eu_slice_stride +
|
||||
@@ -285,7 +285,8 @@ xe_query_topology(int fd, struct intel_device_info *devinfo)
|
||||
if (!topology)
|
||||
return false;
|
||||
|
||||
uint32_t geo_dss_num_bytes = 0, eu_per_dss_mask = 0;
|
||||
uint64_t eu_per_dss_mask = 0;
|
||||
uint32_t geo_dss_num_bytes = 0;
|
||||
uint8_t *geo_dss_mask = NULL, *tmp;
|
||||
unsigned l3_banks = 0;
|
||||
const struct drm_xe_query_topology_mask *head = topology;
|
||||
@@ -306,9 +307,9 @@ xe_query_topology(int fd, struct intel_device_info *devinfo)
|
||||
break;
|
||||
case DRM_XE_TOPO_EU_PER_DSS:
|
||||
case DRM_XE_TOPO_SIMD16_EU_PER_DSS:
|
||||
assert(topology->num_bytes <= sizeof(uint32_t));
|
||||
assert(topology->num_bytes <= sizeof(eu_per_dss_mask));
|
||||
for (int i = 0; i < topology->num_bytes; i++)
|
||||
eu_per_dss_mask |= topology->mask[i] << (8 * i);
|
||||
eu_per_dss_mask |= ((uint64_t)topology->mask[i]) << (8 * i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user