From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X5Gbd-0001lv-UZ for qemu-devel@nongnu.org; Thu, 10 Jul 2014 11:50:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X5GbZ-00072D-3p for qemu-devel@nongnu.org; Thu, 10 Jul 2014 11:49:57 -0400 Received: from static.88-198-71-155.clients.your-server.de ([88.198.71.155]:35662 helo=socrates.bennee.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X5GbY-000722-U6 for qemu-devel@nongnu.org; Thu, 10 Jul 2014 11:49:53 -0400 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 10 Jul 2014 16:50:06 +0100 Message-Id: <1405007407-23549-10-git-send-email-alex.bennee@linaro.org> In-Reply-To: <1405007407-23549-1-git-send-email-alex.bennee@linaro.org> References: <1405007407-23549-1-git-send-email-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v2 09/10] target-arm/kvm.c: better error reporting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , "open list:Overall" , Paolo Bonzini From: Alex Bennée When we have a problem syncing CP registers between kvm<->qemu it's a lot more useful to have the names of the registers in the log than just a random abort() and core dump. Signed-off-by: Alex Bennée --- v2 - less verbose log message - fix checkpatch warnings diff --git a/target-arm/kvm.c b/target-arm/kvm.c index 319784d..72e242d 100644 --- a/target-arm/kvm.c +++ b/target-arm/kvm.c @@ -279,6 +279,16 @@ void kvm_arm_register_device(MemoryRegion *mr, uint64_t devid, uint64_t group, memory_region_ref(kd->mr); } +static void failed_cpreg_operation(ARMCPU *cpu, uint64_t regidx, int ret, + const char *func) +{ + uint32_t cpreg_id = kvm_to_cpreg_id(regidx); + ARMCPRegInfo *cpreg = g_hash_table_lookup(cpu->cp_regs, &cpreg_id); + qemu_log_mask(LOG_UNIMP, + "%s: failed (%d) KVM reg op %"PRIx64" (%s)\n", + func, ret, regidx, cpreg ? cpreg->name : "unknown"); +} + bool write_kvmstate_to_list(ARMCPU *cpu) { CPUState *cs = CPU(cpu); @@ -309,6 +319,7 @@ bool write_kvmstate_to_list(ARMCPU *cpu) abort(); } if (ret) { + failed_cpreg_operation(cpu, regidx, ret, __func__); ok = false; } } @@ -345,6 +356,7 @@ bool write_list_to_kvmstate(ARMCPU *cpu) * "you tried to set a register which is constant with * a different value from what it actually contains". */ + failed_cpreg_operation(cpu, regidx, ret, __func__); ok = false; } } -- 2.0.1