From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753339AbbKPTNt (ORCPT ); Mon, 16 Nov 2015 14:13:49 -0500 Received: from foss.arm.com ([217.140.101.70]:52253 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750982AbbKPTNs (ORCPT ); Mon, 16 Nov 2015 14:13:48 -0500 From: Marc Zyngier To: Thomas Gleixner , Jason Cooper , Russell King Cc: , Subject: [PATCH 0/4] irqchip/gic: Deal with the active state across kexec and suspend/resume Date: Mon, 16 Nov 2015 19:13:24 +0000 Message-Id: <1447701208-18150-1-git-send-email-marc.zyngier@arm.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that the kernel uses EOImode==1 for the GIC, this uncovers a number of cases where the active state is not correctly handled: - When doing kexec, we directly call the irq_eoi() method, which may violate ordering constraints, or leave interrupts active. - When booting, we don't reset the active state, trusting whatever was there before. - When doing suspend/resume, we're not saving/restoring the active state, which could result in lost interrupts if VMs were running at this precise moment. This has also uncovered a small bug in the way we restore enabled interrupts (which could result in a fix to stable). These patches are on top of v4.4-rc1. Marc Zyngier (4): arm: kexec: Deactivate in-flight interrupts irqchip/gic: Make sure all interrupts are deactivated at boot irqchip/gic: Clear enable bits before restoring them irqchip/gic: Add save/restore of the active state arch/arm/kernel/machine_kexec.c | 11 ++++++++++- drivers/irqchip/irq-gic-common.c | 13 +++++++++---- drivers/irqchip/irq-gic.c | 38 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 55 insertions(+), 7 deletions(-) -- 2.1.4