[igt-dev] [PATCH i-g-t 7/7] lib: intel: store simulator device id for aubdump
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Thu Jun 14 10:32:52 UTC 2018
Aubdump writes down the simulator device id in the aub file. Given
it's different for each device, better store it in the device
database.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
lib/Makefile.am | 1 +
lib/intel_aub.h | 2 +-
lib/intel_chipset.h | 1 +
lib/intel_device_info.c | 95 +++++++++++++++++++++++++++++++----------
lib/meson.build | 1 +
tools/aubdump.c | 29 ++++++-------
6 files changed, 90 insertions(+), 39 deletions(-)
diff --git a/lib/Makefile.am b/lib/Makefile.am
index ad3ed5fd..35554a8c 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -15,6 +15,7 @@ libigt_chipset_la_SOURCES = \
intel_chipset.c \
intel_chipset.h \
intel_device_info.c
+libigt_chipset_la_CFLAGS = -Wno-override-init
noinst_LTLIBRARIES = libintel_tools.la libigt_perf.la libigt_chipset.la
noinst_HEADERS = check-ndebug.h
diff --git a/lib/intel_aub.h b/lib/intel_aub.h
index 28885150..74ca26ab 100644
--- a/lib/intel_aub.h
+++ b/lib/intel_aub.h
@@ -103,7 +103,7 @@
/* DW2 */
#define AUB_MEM_TRACE_VERSION_DEVICE_MASK 0x0000ff00
-#define AUB_MEM_TRACE_VERSION_DEVICE_CNL (15 << 8)
+#define AUB_MEM_TRACE_VERSION_DEVICE_SHIFT 8
#define AUB_MEM_TRACE_VERSION_METHOD_MASK 0x000c0000
#define AUB_MEM_TRACE_VERSION_METHOD_PHY (1 << 18)
diff --git a/lib/intel_chipset.h b/lib/intel_chipset.h
index 40170b7b..d9c51f7a 100644
--- a/lib/intel_chipset.h
+++ b/lib/intel_chipset.h
@@ -37,6 +37,7 @@ uint32_t intel_get_drm_devid(int fd);
struct intel_device_info {
unsigned gen;
unsigned gt; /* 0 if unknown */
+ int simulator_id; /* -1 if unknown */
bool is_mobile : 1;
bool is_whitney : 1;
bool is_almador : 1;
diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index cc417ed5..630ba3ef 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -5,61 +5,75 @@
#define BIT(x) (1<<(x))
+#define DEFAULT_PARAMS \
+ .simulator_id = -1
+
static const struct intel_device_info intel_generic_info = {
+ DEFAULT_PARAMS,
.gen = 0,
};
static const struct intel_device_info intel_i810_info = {
+ DEFAULT_PARAMS,
.gen = BIT(0),
.is_whitney = true,
.codename = "solano" /* 815 == "whitney" ? or vice versa? */
};
static const struct intel_device_info intel_i815_info = {
+ DEFAULT_PARAMS,
.gen = BIT(0),
.is_whitney = true,
.codename = "whitney"
};
static const struct intel_device_info intel_i830_info = {
+ DEFAULT_PARAMS,
.gen = BIT(1),
.is_almador = true,
.codename = "almador"
};
static const struct intel_device_info intel_i845_info = {
+ DEFAULT_PARAMS,
.gen = BIT(1),
.is_brookdale = true,
.codename = "brookdale"
};
static const struct intel_device_info intel_i855_info = {
+ DEFAULT_PARAMS,
.gen = BIT(1),
.is_mobile = true,
.is_montara = true,
.codename = "montara"
};
static const struct intel_device_info intel_i865_info = {
+ DEFAULT_PARAMS,
.gen = BIT(1),
.is_springdale = true,
.codename = "spingdale"
};
static const struct intel_device_info intel_i915_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_grantsdale = true,
.codename = "grantsdale"
};
static const struct intel_device_info intel_i915m_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_mobile = true,
.is_alviso = true,
.codename = "alviso"
};
static const struct intel_device_info intel_i945_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_lakeport = true,
.codename = "lakeport"
};
static const struct intel_device_info intel_i945m_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_mobile = true,
.is_calistoga = true,
@@ -67,11 +81,13 @@ static const struct intel_device_info intel_i945m_info = {
};
static const struct intel_device_info intel_g33_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_bearlake = true,
.codename = "bearlake"
};
static const struct intel_device_info intel_pineview_info = {
+ DEFAULT_PARAMS,
.gen = BIT(2),
.is_mobile = true,
.is_pineview = true,
@@ -79,12 +95,14 @@ static const struct intel_device_info intel_pineview_info = {
};
static const struct intel_device_info intel_i965_info = {
+ DEFAULT_PARAMS,
.gen = BIT(3),
.is_broadwater = true,
.codename = "broadwater"
};
static const struct intel_device_info intel_i965m_info = {
+ DEFAULT_PARAMS,
.gen = BIT(3),
.is_mobile = true,
.is_crestline = true,
@@ -92,11 +110,13 @@ static const struct intel_device_info intel_i965m_info = {
};
static const struct intel_device_info intel_g45_info = {
+ DEFAULT_PARAMS,
.gen = BIT(3),
.is_eaglelake = true,
.codename = "eaglelake"
};
static const struct intel_device_info intel_gm45_info = {
+ DEFAULT_PARAMS,
.gen = BIT(3),
.is_mobile = true,
.is_cantiga = true,
@@ -104,51 +124,62 @@ static const struct intel_device_info intel_gm45_info = {
};
static const struct intel_device_info intel_ironlake_info = {
+ DEFAULT_PARAMS,
.gen = BIT(4),
.is_ironlake = true,
.codename = "ironlake" /* clarkdale? */
};
static const struct intel_device_info intel_ironlake_m_info = {
+ DEFAULT_PARAMS,
.gen = BIT(4),
.is_mobile = true,
.is_arrandale = true,
.codename = "arrandale"
};
-static const struct intel_device_info intel_sandybridge_info = {
- .gen = BIT(5),
- .is_sandybridge = true,
+#define SNB_PARAMS \
+ DEFAULT_PARAMS, \
+ .gen = BIT(5), \
+ .is_sandybridge = true, \
.codename = "sandybridge"
+
+static const struct intel_device_info intel_sandybridge_info = {
+ SNB_PARAMS,
};
static const struct intel_device_info intel_sandybridge_m_info = {
- .gen = BIT(5),
+ SNB_PARAMS,
.is_mobile = true,
- .is_sandybridge = true,
- .codename = "sandybridge"
};
+#define IVB_PARAMS \
+ DEFAULT_PARAMS, \
+ .gen = BIT(6), \
+ .is_ivybridge = true, \
+ .codename = "ivybridge", \
+ .simulator_id = 7
+
static const struct intel_device_info intel_ivybridge_info = {
- .gen = BIT(6),
- .is_ivybridge = true,
- .codename = "ivybridge"
+ IVB_PARAMS,
};
static const struct intel_device_info intel_ivybridge_m_info = {
- .gen = BIT(6),
+ IVB_PARAMS,
.is_mobile = true,
- .is_ivybridge = true,
- .codename = "ivybridge"
};
static const struct intel_device_info intel_valleyview_info = {
+ DEFAULT_PARAMS,
.gen = BIT(6),
.is_valleyview = true,
- .codename = "valleyview"
+ .codename = "valleyview",
+ .simulator_id = 10,
};
#define HASWELL_FIELDS \
+ DEFAULT_PARAMS, \
.gen = BIT(6), \
.is_haswell = true, \
- .codename = "haswell"
+ .codename = "haswell", \
+ .simulator_id = 9
static const struct intel_device_info intel_haswell_gt1_info = {
HASWELL_FIELDS,
@@ -166,9 +197,11 @@ static const struct intel_device_info intel_haswell_gt3_info = {
};
#define BROADWELL_FIELDS \
+ DEFAULT_PARAMS, \
.gen = BIT(7), \
.is_broadwell = true, \
- .codename = "broadwell"
+ .codename = "broadwell", \
+ .simulator_id = 11
static const struct intel_device_info intel_broadwell_gt1_info = {
BROADWELL_FIELDS,
@@ -190,15 +223,19 @@ static const struct intel_device_info intel_broadwell_unknown_info = {
};
static const struct intel_device_info intel_cherryview_info = {
+ DEFAULT_PARAMS,
.gen = BIT(7),
.is_cherryview = true,
- .codename = "cherryview"
+ .codename = "cherryview",
+ .simulator_id = 13,
};
#define SKYLAKE_FIELDS \
+ DEFAULT_PARAMS, \
.gen = BIT(8), \
.codename = "skylake", \
- .is_skylake = true
+ .is_skylake = true, \
+ .simulator_id = 12
static const struct intel_device_info intel_skylake_gt1_info = {
SKYLAKE_FIELDS,
@@ -221,15 +258,19 @@ static const struct intel_device_info intel_skylake_gt4_info = {
};
static const struct intel_device_info intel_broxton_info = {
+ DEFAULT_PARAMS,
.gen = BIT(8),
.is_broxton = true,
- .codename = "broxton"
+ .codename = "broxton",
+ .simulator_id = 14,
};
#define KABYLAKE_FIELDS \
+ DEFAULT_PARAMS, \
.gen = BIT(8), \
.is_kabylake = true, \
- .codename = "kabylake"
+ .codename = "kabylake", \
+ .simulator_id = 16
static const struct intel_device_info intel_kabylake_gt1_info = {
KABYLAKE_FIELDS,
@@ -252,15 +293,19 @@ static const struct intel_device_info intel_kabylake_gt4_info = {
};
static const struct intel_device_info intel_geminilake_info = {
+ DEFAULT_PARAMS,
.gen = BIT(8),
.is_geminilake = true,
- .codename = "geminilake"
+ .codename = "geminilake",
+ .simulator_id = 17,
};
#define COFFEELAKE_FIELDS \
+ DEFAULT_PARAMS, \
.gen = BIT(8), \
.is_coffeelake = true, \
- .codename = "coffeelake"
+ .codename = "coffeelake", \
+ .simulator_id = 24
static const struct intel_device_info intel_coffeelake_gt1_info = {
COFFEELAKE_FIELDS,
@@ -278,15 +323,19 @@ static const struct intel_device_info intel_coffeelake_gt3_info = {
};
static const struct intel_device_info intel_cannonlake_info = {
+ DEFAULT_PARAMS,
.gen = BIT(9),
.is_cannonlake = true,
- .codename = "cannonlake"
+ .codename = "cannonlake",
+ .simulator_id = 15,
};
static const struct intel_device_info intel_icelake_info = {
+ DEFAULT_PARAMS,
.gen = BIT(10),
.is_icelake = true,
- .codename = "icelake"
+ .codename = "icelake",
+ .simulator_id = 18,
};
static const struct pci_id_match intel_device_match[] = {
diff --git a/lib/meson.build b/lib/meson.build
index 0d1e2b69..3c63f52b 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -97,6 +97,7 @@ lib_version = vcs_tag(input : 'version.h.in', output : 'version.h',
lin_igt_chipset_build = static_library('igt_chipset',
['intel_chipset.c',
'intel_device_info.c'],
+ c_args : [ '-Wno-override-init' ],
include_directories : inc)
lib_igt_chipset = declare_dependency(link_with : lin_igt_chipset_build,
diff --git a/tools/aubdump.c b/tools/aubdump.c
index 99ec4be2..147ccb5b 100644
--- a/tools/aubdump.c
+++ b/tools/aubdump.c
@@ -247,7 +247,7 @@ static int (*libc_ioctl)(int fd, unsigned long request, ...) = ioctl_init_helper
static int drm_fd = -1;
static char *filename = NULL;
static FILE *files[2] = { NULL, NULL };
-static int gen = 0;
+static const struct intel_device_info *devinfo = NULL;
static int verbose = 0;
static bool device_override;
static uint32_t device;
@@ -300,7 +300,7 @@ struct drm_i915_gem_userptr {
static inline bool use_execlists(void)
{
- return gen >= 8 && !legacy_submission;
+ return devinfo->gen >= 8 && !legacy_submission;
}
static void __attribute__ ((format(__printf__, 2, 3)))
@@ -506,7 +506,7 @@ write_execlists_header(void)
dwords = 5 + app_name_len / sizeof(uint32_t);
dword_out(CMD_MEM_TRACE_VERSION | (dwords - 1));
dword_out(AUB_MEM_TRACE_VERSION_FILE_VERSION);
- dword_out(AUB_MEM_TRACE_VERSION_DEVICE_CNL);
+ dword_out(devinfo->simulator_id << AUB_MEM_TRACE_VERSION_DEVICE_SHIFT);
dword_out(0); /* version */
dword_out(0); /* version */
data_out(app_name, app_name_len);
@@ -744,7 +744,7 @@ aub_dump_execlist(uint64_t batch_offset, int ring_flag)
AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT);
dword_out(16); /* RING_BUFFER_TAIL */
- if (gen >= 11) {
+ if (devinfo->gen >= 11) {
register_write_out(elsq_reg, descriptor & 0xFFFFFFFF);
register_write_out(elsq_reg + sizeof(uint32_t), descriptor >> 32);
register_write_out(control_reg, 1);
@@ -759,7 +759,7 @@ aub_dump_execlist(uint64_t batch_offset, int ring_flag)
dword_out(status_reg);
dword_out(AUB_MEM_TRACE_REGISTER_SIZE_DWORD |
AUB_MEM_TRACE_REGISTER_SPACE_MMIO);
- if (gen >= 11) {
+ if (devinfo->gen >= 11) {
dword_out(0x00000001); /* mask lo */
dword_out(0x00000000); /* mask hi */
dword_out(0x00000001);
@@ -892,18 +892,17 @@ dump_execbuffer2(int fd, struct drm_i915_gem_execbuffer2 *execbuffer2)
/* We can't do this at open time as we're not yet authenticated. */
if (device == 0) {
device = gem_get_param(fd, I915_PARAM_CHIPSET_ID);
- fail_if(device == 0 || gen == -1, "failed to identify chipset\n");
+ fail_if(device == 0 || devinfo == NULL, "failed to identify chipset\n");
}
- if (gen == 0) {
- gen = intel_gen(device);
+ if (!devinfo) {
+ devinfo = intel_get_device_info(device);
- /* If we don't know the device gen, then it probably is a
- * newer device. Set gen to some arbitrarily high number.
+ /* If we don't know the device gen, we need to update
+ * the database.
*/
- if (gen == 0)
- gen = 9999;
+ fail_if(devinfo == NULL, "failed to identify device from id\n");
- addr_bits = gen >= 8 ? 48 : 32;
+ addr_bits = devinfo->gen >= 8 ? 48 : 32;
if (use_execlists())
write_execlists_header();
@@ -912,8 +911,8 @@ dump_execbuffer2(int fd, struct drm_i915_gem_execbuffer2 *execbuffer2)
if (verbose)
printf("[intel_aubdump: running, "
- "output file %s, chipset id 0x%04x, gen %d]\n",
- filename, device, gen);
+ "output file %s, chipset id 0x%04x, gen %d, %s]\n",
+ filename, device, devinfo->gen, devinfo->codename);
}
if (use_execlists())
--
2.17.1
More information about the igt-dev
mailing list