From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH] ignore writes to GICD_ICACTIVER ... GICD_ICACTIVERN Date: Thu, 3 Dec 2015 11:25:21 +0000 Message-ID: <566026A1.9010608@citrix.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini , xen-devel@lists.xensource.com Cc: Ian Campbell List-Id: xen-devel@lists.xenproject.org Hi Stefano, On 03/12/15 11:02, Stefano Stabellini wrote: > Injecting a fault to the guest just because it is writing to one of the > GICD_ICACTIVER registers, which are part of the GICv2 and GICv3 specs, > is harsh. Additionally it causes recent linux kernels to fail to boot on > Xen. > > Ignore writes to GICD_ICACTIVER ... GICD_ICACTIVERN instead, to solve > the boot issue and for backportability. However implementing the > registers properly might a better long term solution. > > Signed-off-by: Stefano Stabellini Please rebase this patch on top of staging. Regards, > > diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c > index b5a8f29..bf9f239 100644 > --- a/xen/arch/arm/vgic-v2.c > +++ b/xen/arch/arm/vgic-v2.c > @@ -315,11 +315,10 @@ static int vgic_v2_distr_mmio_write(struct vcpu *v, mmio_info_t *info) > return 0; > > case GICD_ICACTIVER ... GICD_ICACTIVERN: > - if ( dabt.size != DABT_WORD ) goto bad_width; > - printk(XENLOG_G_ERR > + gdprintk(XENLOG_DEBUG, > "%pv: vGICD: unhandled word write %#"PRIregister" to ICACTIVER%d\n", > v, *r, gicd_reg - GICD_ICACTIVER); > - return 0; > + goto write_ignore_32; > > case GICD_ITARGETSR ... GICD_ITARGETSR + 7: > /* SGI/PPI target is read only */ > diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c > index 45a46c3..e115027 100644 > --- a/xen/arch/arm/vgic-v3.c > +++ b/xen/arch/arm/vgic-v3.c > @@ -412,11 +412,10 @@ static int __vgic_v3_distr_common_mmio_write(const char *name, struct vcpu *v, > return 0; > > case GICD_ICACTIVER ... GICD_ICACTIVERN: > - if ( dabt.size != DABT_WORD ) goto bad_width; > - printk(XENLOG_G_ERR > + gdprintk(XENLOG_DEBUG, > "%pv: %s: unhandled word write %#"PRIregister" to ICACTIVER%d\n", > v, name, *r, reg - GICD_ICACTIVER); > - return 0; > + goto write_ignore_32; > > case GICD_IPRIORITYR ... GICD_IPRIORITYRN: > if ( dabt.size != DABT_BYTE && dabt.size != DABT_WORD ) goto bad_width; > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel > -- Julien Grall