From: Ian Campbell <ian.campbell@citrix.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Shannon Zhao <zhaoshenglong@huawei.com>
Cc: Julien Grall <julien.grall@citrix.com>, xen-devel@lists.xenproject.org
Subject: Re: unhandled word causes Xen crash with recent Linux kernels, was: Re: [PATCH v2 05/11] xen/arm: vgic: Properly emulate the full register
Date: Wed, 25 Nov 2015 12:26:25 +0000 [thread overview]
Message-ID: <1448454385.17688.96.camel@citrix.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1511251157230.1107@kaball.uk.xensource.com>
On Wed, 2015-11-25 at 12:15 +0000, Stefano Stabellini wrote:
> Hi Shannon,
>
> On Wed, 25 Nov 2015, Shannon Zhao wrote:
> > Upstream Linux kernel applies below patch which will write
> > GICD_ICACTIVER. But since Xen doesn't support it, so it will cause Dom0
> > initializes GIC failed.
> >
> > 0eece2b22849c90b730815c893425a36b9d10fd5 (irqchip/gic: Make sure all
> > interrupts are deactivated at boot)
> >
> > (XEN) d0v0: vGICD: unhandled word write 0xffffffff to ICACTIVER4
> > (XEN) traps.c:2447:d0v0 HSR=0x93860046 pc=0xffffffc0008d63f0
> > gva=0xffffff8000004384 gpa=0x0000002f000384
> > (XEN) DOM0: Unhandled fault: ttbr address size fault (0x96000000) at
> > 0xffffff8000004384
> > (XEN) DOM0: Internal error: : 96000000 [#1] PREEMPT SMP
> > (XEN) DOM0: Modules linked in:
> > (XEN) DOM0: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.0-rc2+ #364
> > (XEN) DOM0: Hardware name: (null) (DT)
> > (XEN) DOM0: task: ffffffc000969970 ti: ffffffc00095c000 task.ti:
> > ffffffc00095c000
> > (XEN) DOM0: PC is at gic_dist_config+0x78/0xa0
> > (XEN) DOM0: LR is at __gic_init_bases+0x240/0x2bc
> >
> > Do we have a plan to fix this?
>
> Thanks for the reporting the issue, I can reproduce the problem. Given
> that this is a very serious regression and that we cannot really "fix"
> the Linux side because Linux is not doing anything wrong, I think we
> have to go with a very simple change, something we can easily backport
> to all past Xen releases.
>
> I suggest we turn the "unhandled word write" into a write_ignore, see
> below:
As discussed IRL this might be tolerable as a patch intended for
backporting purposes, but I would want to see it in a series along with one
or more not-for-backport patches which actually makes the register work as
it should.
>
> ---
>
> xen/arm: ignore GICD_ICACTIVER writes
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>
> diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c
> index f7d784b..8585c44 100644
> --- a/xen/arch/arm/vgic-v2.c
> +++ b/xen/arch/arm/vgic-v2.c
> @@ -332,11 +332,8 @@ 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
> - "%pv: vGICD: unhandled word write %#"PRIregister" to
> ICACTIVER%d\n",
> - v, r, gicd_reg - GICD_ICACTIVER);
> - return 0;
> + /* we should really be implementing this */
> + 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 b5249ff..6d77373 100644
> --- a/xen/arch/arm/vgic-v3.c
> +++ b/xen/arch/arm/vgic-v3.c
> @@ -421,11 +421,8 @@ 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
> - "%pv: %s: unhandled word write %#"PRIregister" to
> ICACTIVER%d\n",
> - v, name, r, reg - GICD_ICACTIVER);
> - return 0;
> + /* we should really be implementing this */
> + 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
next prev parent reply other threads:[~2015-11-25 12:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 17:27 [PATCH v2 00/11] xen/arm: Bunch of fixes for the vGIC emulation Julien Grall
2015-11-18 17:27 ` [PATCH v2 01/11] xen/arm: vgic-v2: Implement correctly ICFGR{0, 1} read-only Julien Grall
2015-11-24 17:14 ` Ian Campbell
2015-11-25 12:29 ` Ian Campbell
2015-11-30 12:11 ` Julien Grall
2015-11-18 17:27 ` [PATCH v2 02/11] xen/arm: vgic-v3: Don't try to emulate IROUTER which doesn't exist in the spec Julien Grall
2015-11-24 17:17 ` Ian Campbell
2015-11-30 12:13 ` Julien Grall
2015-11-18 17:27 ` [PATCH v2 03/11] xen/arm: vgic-v3: Use the correct offset GICR_IGRPMODR0 Julien Grall
2015-11-18 17:27 ` [PATCH v2 04/11] xen/arm: vgic-v3: Only emulate identification registers required by the spec Julien Grall
2015-11-18 17:28 ` [PATCH v2 05/11] xen/arm: vgic: Properly emulate the full register Julien Grall
2015-11-25 9:26 ` Shannon Zhao
2015-11-25 12:15 ` unhandled word causes Xen crash with recent Linux kernels, was: " Stefano Stabellini
2015-11-25 12:26 ` Ian Campbell [this message]
2015-11-30 12:22 ` Julien Grall
2015-11-30 12:38 ` Ian Campbell
2015-12-03 10:50 ` Stefano Stabellini
2015-11-30 12:18 ` Julien Grall
2015-11-18 17:28 ` [PATCH v2 06/11] xen/arm: vgic-v3: Remove GICR_MOVALLR and GICR_MOVLPIR Julien Grall
2015-11-18 17:28 ` [PATCH v2 07/11] xen/arm: vgic: Re-order the register emulations to match the memory map Julien Grall
2015-11-18 17:28 ` [PATCH v2 08/11] xen/arm: vgic-v3: Emulate read to GICD_ICACTIVER<n> Julien Grall
2015-11-18 17:28 ` [PATCH v2 09/11] xen/arm: vgic-v3: Remove spurious return in GICR_INVALLR Julien Grall
2015-11-18 17:28 ` [PATCH v2 10/11] xen/arm: vgic-v3: Don't implement write-only register read as zero Julien Grall
2015-11-18 17:28 ` [PATCH v2 11/11] xen/arm: vgic-v3: Make clear that GICD_*SPI_* registers are reserved Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1448454385.17688.96.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=julien.grall@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xenproject.org \
--cc=zhaoshenglong@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.