linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	Jeffrey Hugo <jhugo@codeaurora.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>
Subject: [PATCH 00/10] GICv3 support for kexec/kdump on EFI systems
Date: Fri, 21 Sep 2018 20:59:44 +0100	[thread overview]
Message-ID: <20180921195954.21574-1-marc.zyngier@arm.com> (raw)

The GICv3 architecture has the remarkable feature that once LPI tables
have been assigned to redistributors and that LPI delivery is enabled,
there is no guarantee that LPIs can be turned off (and most
implementations do not allow it), nor can it be reprogrammed to use
other tables.

This is a bit of a problem for kexec, where the secondary kernel
completely looses track of the previous allocations. If the secondary
kernel doesn't allocate the tables exactly the same way, no LPIs will
be delivered by the GIC (which continues to use the old tables), and
memory previously allocated for the pending tables will be slowly
corrupted, one bit at a time.

The workaround for this is based on a series[1] by Ard Biesheuvel,
which adds the required infrastructure for memory reservations to be
passed from one kernel to another using an EFI table.

This infrastructure is then used to register the allocation of GIC
tables with EFI, and allow the GIC driver to safely reuse the existing
programming if it detects that the tables have been correctly
registered. On non-EFI systems, there is not much we can do.

This has been tested on a TX2 system both as a host and a guest. I'd
welcome additional testing of different HW. For convenience, I've
stashed a branch containing the whole thing at [2].

[1] https://marc.info/?l=linux-efi&m=153754757208163&w=2
[2] https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/log/?h=irq/gicv3-kdump

Marc Zyngier (10):
  irqchip/gic-v3-its: Change initialization ordering for LPIs
  irqchip/gic-v3-its: Consolidate LPI_PENDBASE_SZ usage
  irqchip/gic-v3-its: Split property table clearing from allocation
  irqchip/gic-v3-its: Move pending table allocation to init time
  irqchip/gic-v3-its: Keep track of property table's PA and VA
  irqchip/gic-v3-its: Allow use of pre-programmed LPI tables
  irqchip/gic-v3-its: Use pre-programmed redistributor tables with kdump
    kernels
  irqchip/gic-v3-its: Check that all RDs have the same property table
  irqchip/gic-v3-its: Register LPI tables with EFI config table
  irqchip/gic-v3-its: Allow use of LPI tables in reserved memory

 drivers/irqchip/irq-gic-v3-its.c   | 249 ++++++++++++++++++++++-------
 drivers/irqchip/irq-gic-v3.c       |  20 ++-
 include/linux/irqchip/arm-gic-v3.h |   4 +-
 3 files changed, 208 insertions(+), 65 deletions(-)

-- 
2.18.0


             reply	other threads:[~2018-09-21 20:01 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-21 19:59 Marc Zyngier [this message]
2018-09-21 19:59 ` [PATCH 01/10] irqchip/gic-v3-its: Change initialization ordering for LPIs Marc Zyngier
2018-09-24 10:49   ` Julien Thierry
2018-09-21 19:59 ` [PATCH 02/10] irqchip/gic-v3-its: Consolidate LPI_PENDBASE_SZ usage Marc Zyngier
2018-09-24 10:33   ` Suzuki K Poulose
2018-09-24 10:50     ` Julien Thierry
2018-09-24 10:54       ` Suzuki K Poulose
2018-09-24 10:55         ` Julien Thierry
2018-09-26 10:28     ` Marc Zyngier
2018-09-21 19:59 ` [PATCH 03/10] irqchip/gic-v3-its: Split property table clearing from allocation Marc Zyngier
2018-09-21 19:59 ` [PATCH 04/10] irqchip/gic-v3-its: Move pending table allocation to init time Marc Zyngier
2018-09-24 11:58   ` Julien Thierry
2018-09-26 10:39     ` Marc Zyngier
2018-09-21 19:59 ` [PATCH 05/10] irqchip/gic-v3-its: Keep track of property table's PA and VA Marc Zyngier
2018-09-21 19:59 ` [PATCH 06/10] irqchip/gic-v3-its: Allow use of pre-programmed LPI tables Marc Zyngier
2018-09-24 12:52   ` Julien Thierry
2018-09-21 19:59 ` [PATCH 07/10] irqchip/gic-v3-its: Use pre-programmed redistributor tables with kdump kernels Marc Zyngier
2018-09-21 19:59 ` [PATCH 08/10] irqchip/gic-v3-its: Check that all RDs have the same property table Marc Zyngier
2018-09-21 19:59 ` [PATCH 09/10] irqchip/gic-v3-its: Register LPI tables with EFI config table Marc Zyngier
2018-09-21 19:59 ` [PATCH 10/10] irqchip/gic-v3-its: Allow use of LPI tables in reserved memory Marc Zyngier
2018-09-25 18:48 ` [PATCH 00/10] GICv3 support for kexec/kdump on EFI systems Jeremy Linton
2018-09-27  9:55 ` Bhupesh Sharma
2018-09-27 13:01 ` Zhang, Lei
2018-09-27 21:10 ` Richard Ruigrok
2018-09-28 10:33   ` Marc Zyngier
     [not found] ` <CACiNFG5r2Czfy_kXA2PPQa=xdyzq0vUgoQZ=XNME4d_h=O1oBw@mail.gmail.com>
2019-02-01  9:15   ` Marc Zyngier
2019-02-02  3:05     ` Xulin Sun

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=20180921195954.21574-1-marc.zyngier@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=jason@lakedaemon.net \
    --cc=jeremy.linton@arm.com \
    --cc=jhugo@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).