From 70ee5084213c27733f723a7d3f597764bba38dcf Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 9 Nov 2015 08:58:59 +0000 Subject: [PATCH] lib: Make instdone initialisation fail gracefully Just report that we don't recognise the chipset rather than explode. Signed-off-by: Chris Wilson --- lib/instdone.c | 10 ++++++---- lib/instdone.h | 2 +- tools/intel_error_decode.c | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/instdone.c b/lib/instdone.c index fffb9491..53d82154 100644 --- a/lib/instdone.c +++ b/lib/instdone.c @@ -423,7 +423,7 @@ init_gen9_instdone(void) init_gen8_instdone(); } -void +bool init_instdone_definitions(uint32_t devid) { if (IS_GEN9(devid)) { @@ -595,8 +595,7 @@ init_instdone_definitions(uint32_t devid) gen3_instdone_bit(CC_DONE, "Color calculator"); gen3_instdone_bit(MAP_FILTER_DONE, "Map filter"); gen3_instdone_bit(MAP_L2_IDLE, "Map L2"); - } else { - igt_assert(IS_GEN2(devid)); + } else if (IS_GEN2(devid)) { gen3_instdone_bit(I830_GMBUS_DONE, "GMBUS"); gen3_instdone_bit(I830_FBC_DONE, "FBC"); gen3_instdone_bit(I830_BINNER_DONE, "BINNER"); @@ -624,5 +623,8 @@ init_instdone_definitions(uint32_t devid) gen3_instdone_bit(I830_SECONDARY_RING_0_DONE, "Secondary ring 0"); gen3_instdone_bit(I830_PRIMARY_RING_1_DONE, "Primary ring 1"); gen3_instdone_bit(I830_PRIMARY_RING_0_DONE, "Primary ring 0"); - } + } else + return false; + + return true; } diff --git a/lib/instdone.h b/lib/instdone.h index c86a54a7..77c41242 100644 --- a/lib/instdone.h +++ b/lib/instdone.h @@ -38,4 +38,4 @@ struct instdone_bit { extern struct instdone_bit instdone_bits[MAX_INSTDONE_BITS]; extern int num_instdone_bits; -void init_instdone_definitions(uint32_t devid); +bool init_instdone_definitions(uint32_t devid); diff --git a/tools/intel_error_decode.c b/tools/intel_error_decode.c index c7102127..a7a65e85 100644 --- a/tools/intel_error_decode.c +++ b/tools/intel_error_decode.c @@ -97,7 +97,8 @@ print_instdone(uint32_t devid, unsigned int instdone, unsigned int instdone1) static int once; if (!once) { - init_instdone_definitions(devid); + if (!init_instdone_definitions(devid)) + return; once = 1; }