From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=51814 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PUn9z-0004fK-Mt for qemu-devel@nongnu.org; Mon, 20 Dec 2010 16:22:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PUn9i-000684-AQ for qemu-devel@nongnu.org; Mon, 20 Dec 2010 16:20:31 -0500 Received: from mail-px0-f174.google.com ([209.85.212.174]:45315) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PUn9i-00066O-21 for qemu-devel@nongnu.org; Mon, 20 Dec 2010 16:20:30 -0500 Received: by pxi15 with SMTP id 15so723104pxi.33 for ; Mon, 20 Dec 2010 13:20:28 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <4D0F9895.6030700@mc.net> References: <4D0CEAB0.9030706@mc.net> <4D0E5F16.3090905@mc.net> <4D0E6448.7070006@mc.net> <4D0F9895.6030700@mc.net> From: Blue Swirl Date: Mon, 20 Dec 2010 21:20:08 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] Re: [PATCH v2] sparc32: ledma extra registers need tracing too List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bob Breuer Cc: =?UTF-8?Q?Andreas_F=C3=A4rber?= , QEMU Developers , Artyom Tarasenko Thanks, applied. On Mon, Dec 20, 2010 at 5:55 PM, Bob Breuer wrote: > Also trace the extra registers, and update the comments with new > info from Artyom Tarasenko. > > Signed-off-by: Bob Breuer > --- > Since the extra registers are aliased, we could instead alias them at > a higher level. =C2=A0Solaris9 boots to single-user with either option. > > diff --git a/hw/sparc32_dma.c b/hw/sparc32_dma.c > index 56be8c8..e75694b 100644 > --- a/hw/sparc32_dma.c > +++ b/hw/sparc32_dma.c > @@ -44,7 +44,7 @@ > =C2=A0/* We need the mask, because one instance of the device is not page > =C2=A0 =C2=A0aligned (ledma, start address 0x0010) */ > =C2=A0#define DMA_MASK (DMA_SIZE - 1) > -/* ledma has more than 4 registers, Solaris reads the 5th one */ > +/* OBP says 0x20 bytes for ledma, the extras are aliased to espdma */ > =C2=A0#define DMA_ETH_SIZE (8 * sizeof(uint32_t)) > =C2=A0#define DMA_MAX_REG_OFFSET (2 * DMA_SIZE - 1) > > @@ -170,7 +170,10 @@ static uint32_t dma_mem_readl(void *opaque, target_p= hys_addr_t addr) > =C2=A0 =C2=A0 uint32_t saddr; > > =C2=A0 =C2=A0 if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { > - =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0; /* extra mystery register(s) */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0/* aliased to espdma, but we can't get there= from here */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0/* buggy driver if using undocumented behavi= or, just return 0 */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_sparc32_dma_mem_readl(addr, 0); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0; > =C2=A0 =C2=A0 } > =C2=A0 =C2=A0 saddr =3D (addr & DMA_MASK) >> 2; > =C2=A0 =C2=A0 trace_sparc32_dma_mem_readl(addr, s->dmaregs[saddr]); > @@ -183,7 +186,9 @@ static void dma_mem_writel(void *opaque, target_phys_= addr_t addr, uint32_t val) > =C2=A0 =C2=A0 uint32_t saddr; > > =C2=A0 =C2=A0 if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { > - =C2=A0 =C2=A0 =C2=A0 =C2=A0return; /* extra mystery register(s) */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0/* aliased to espdma, but we can't get there= from here */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_sparc32_dma_mem_writel(addr, 0, val); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0return; > =C2=A0 =C2=A0 } > =C2=A0 =C2=A0 saddr =3D (addr & DMA_MASK) >> 2; > =C2=A0 =C2=A0 trace_sparc32_dma_mem_writel(addr, s->dmaregs[saddr], val); > > >