From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2] ignore writes to GICD_ICACTIVER ... GICD_ICACTIVERN Date: Fri, 4 Dec 2015 12:38:02 +0000 Message-ID: <5661892A.3020803@citrix.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" 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: Can you please add xen/arm in the commit title? On 04/12/2015 12:36, 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 > > --- > > Changes in v2: > - rebase on staging > > diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c > index 2c73133..3079901 100644 > --- a/xen/arch/arm/vgic-v2.c > +++ b/xen/arch/arm/vgic-v2.c > @@ -494,11 +494,10 @@ static int vgic_v2_distr_mmio_write(struct vcpu *v, mmio_info_t *info, > return 0; > > case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): > - if ( dabt.size != DABT_WORD ) goto bad_width; > - printk(XENLOG_G_ERR > + gdprintk(XENLOG_DEBUG, Why did you move to gdprintk? The vCPU is already printed using %pv in the string. > "%pv: vGICD: unhandled word write %#"PRIregister" to ICACTIVER%d\n", > v, r, gicd_reg - GICD_ICACTIVER); > - return 0; > + goto write_ignore_32; > > case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): > { > diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c > index 985e866..6011e9e 100644 > --- a/xen/arch/arm/vgic-v3.c > +++ b/xen/arch/arm/vgic-v3.c > @@ -621,11 +621,10 @@ static int __vgic_v3_distr_common_mmio_write(const char *name, struct vcpu *v, > return 0; > > case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): > - if ( dabt.size != DABT_WORD ) goto bad_width; > - printk(XENLOG_G_ERR > + gdprintk(XENLOG_DEBUG, Ditto > "%pv: %s: unhandled word write %#"PRIregister" to ICACTIVER%d\n", > v, name, r, reg - GICD_ICACTIVER); > - return 0; > + goto write_ignore_32; > > case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): > { > Regards, -- Julien Grall