/* * Maximum number of slices on older platforms. Slices no longer exist * starting on Xe_HP ("gslices," "cslices," etc. are a different concept and * are not expressed through fusing).
*/ #define GEN_MAX_HSW_SLICES 3
/* * Maximum number of subslices that can exist within a HSW-style slice. This * is only relevant to pre-Xe_HP platforms (Xe_HP and beyond use the * I915_MAX_SS_FUSE_BITS value below).
*/ #define GEN_MAX_SS_PER_HSW_SLICE 8
/* * Maximum number of 32-bit registers used by hardware to express the * enabled/disabled subslices.
*/ #define I915_MAX_SS_FUSE_REGS 2 #define I915_MAX_SS_FUSE_BITS (I915_MAX_SS_FUSE_REGS * 32)
/* Maximum number of EUs that can exist within a subslice or DSS. */ #define GEN_MAX_EUS_PER_SS 16
#define SSEU_MAX(a, b) ((a) > (b) ? (a) : (b))
/* The maximum number of bits needed to express each subslice/DSS independently */ #define GEN_SS_MASK_SIZE SSEU_MAX(I915_MAX_SS_FUSE_BITS, \
GEN_MAX_HSW_SLICES * GEN_MAX_SS_PER_HSW_SLICE)
u16 eu_total;
u8 eu_per_subslice;
u8 min_eu_in_pool; /* For each slice, which subslice(s) has(have) 7 EUs (bitfield)? */
u8 subslice_7eu[3];
u8 has_slice_pg:1;
u8 has_subslice_pg:1;
u8 has_eu_pg:1; /* * For Xe_HP and beyond, the hardware no longer has traditional slices * so we just report the entire DSS pool under a fake "slice 0."
*/
u8 has_xehp_dss:1;
/* * Used to obtain the index of the first DSS. Can start searching from the * beginning of a specific dss group (e.g., gslice, cslice, etc.) if * groupsize and groupnum are non-zero.
*/ staticinlineunsignedint
intel_sseu_find_first_xehp_dss(conststruct sseu_dev_info *sseu, int groupsize, int groupnum)
{ return find_next_bit(sseu->subslice_mask.xehp,
XEHP_BITMAP_BITS(sseu->subslice_mask),
groupnum * groupsize);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.