From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YAbIB-0005q7-Gg for qemu-devel@nongnu.org; Mon, 12 Jan 2015 04:28:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YAbI7-0002kX-GJ for qemu-devel@nongnu.org; Mon, 12 Jan 2015 04:28:11 -0500 Received: from mx-v6.kamp.de ([2a02:248:0:51::16]:44027 helo=mx01.kamp.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YAbI7-0002kA-6D for qemu-devel@nongnu.org; Mon, 12 Jan 2015 04:28:07 -0500 Message-ID: <54B393A2.3090702@kamp.de> Date: Mon, 12 Jan 2015 10:28:02 +0100 From: Peter Lieven MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Missing Diag/Debug Registers in lsi53c895a emulation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , "qemu-devel@nongnu.org" Hi, while trying to run an ASA1000V appliance I found that registers 0x09 and 0x3c-3f are read during boot up. Which currently results in an exit(1). The appliance uses an quite ancient 2.6.29.6 Linux kernel. These registers are mainly for diag and debug purposes so I came up with the following patch. The system works with the following patch, but I wonder if this is a correct workaround: diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index ec92048..bce1135 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -1513,6 +1513,8 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset) return 0x7f; case 0x08: /* Revision ID */ return 0x00; + case 0x09: /* SOCL */ + return 0x00; case 0xa: /* SSID */ return s->ssid; case 0xb: /* SBCL */ @@ -1577,6 +1579,11 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset) return s->sbr; case 0x3b: /* DCNTL */ return s->dcntl; + case 0x3c: /* ADDER Output (Debug purpose only) */ + case 0x3d: + case 0x3e: + case 0x3f: + return 0x00; case 0x40: /* SIEN0 */ return s->sien0; case 0x41: /* SIEN1 */ Peter