From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIGHo-00071r-2W for qemu-devel@nongnu.org; Fri, 15 Aug 2014 08:07:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XIGHi-0002Na-0p for qemu-devel@nongnu.org; Fri, 15 Aug 2014 08:07:12 -0400 Received: from mail-lb0-f174.google.com ([209.85.217.174]:37544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIGHh-0002NJ-Px for qemu-devel@nongnu.org; Fri, 15 Aug 2014 08:07:05 -0400 Received: by mail-lb0-f174.google.com with SMTP id c11so1894239lbj.33 for ; Fri, 15 Aug 2014 05:07:05 -0700 (PDT) Date: Fri, 15 Aug 2014 14:07:14 +0200 From: Christoffer Dall Message-ID: <20140815120714.GA19635@cbox> References: <1407056027-7522-1-git-send-email-adam@os.inf.tu-dresden.de> <1407056027-7522-3-git-send-email-adam@os.inf.tu-dresden.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1407056027-7522-3-git-send-email-adam@os.inf.tu-dresden.de> Subject: Re: [Qemu-devel] [PATCH 2/3] arm_gic: SGIs for GICD_ICFGR are WI List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Adam Lackorzynski Cc: qemu-devel@nongnu.org On Sun, Aug 03, 2014 at 10:53:46AM +0200, Adam Lackorzynski wrote: > Writes to SGIs for GICD_ICFGR register must be ignored. > > Signed-off-by: Adam Lackorzynski > --- > hw/intc/arm_gic.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c > index d2b1aaf..cd6e6ea 100644 > --- a/hw/intc/arm_gic.c > +++ b/hw/intc/arm_gic.c > @@ -566,10 +566,13 @@ static void gic_dist_writeb(void *opaque, hwaddr offset, > } else { > GIC_CLEAR_MODEL(irq + i); > } > - if (value & (2 << (i * 2))) { > - GIC_SET_EDGE_TRIGGER(irq + i); > - } else { > - GIC_CLEAR_EDGE_TRIGGER(irq + i); > + /* SGIs are WI */ They're actually WI/RAO, so we should set them to edge-triggered somewhere or always return 1 for reads of these values as well as part of this fix. > + if (irq >= 16) { > + if (value & (2 << (i * 2))) { > + GIC_SET_EDGE_TRIGGER(irq + i); > + } else { > + GIC_CLEAR_EDGE_TRIGGER(irq + i); > + } > } > } > } else if (offset < 0xf10) { > -- > 2.0.1 > >