From patchwork Thu Oct 30 22:12:08 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Bellows X-Patchwork-Id: 39942 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wg0-f72.google.com (mail-wg0-f72.google.com [74.125.82.72]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 6AD732405B for ; Fri, 31 Oct 2014 17:18:15 +0000 (UTC) Received: by mail-wg0-f72.google.com with SMTP id k14sf4369077wgh.11 for ; Fri, 31 Oct 2014 10:18:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:date :message-id:in-reply-to:references:cc:subject:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:list-subscribe :errors-to:sender:x-original-sender :x-original-authentication-results:mailing-list; bh=mQZmt+cBWJ6wsmJV2K7cst8mDlvVt6pPOkTldggfXHU=; b=JSwCmPtathy/v+sXfc4bioWpad+yyz/lQK1NzEwEJDYfFQXRuvhPLknZTx+w/3S84i tw/Vk/tI77z8wsHXwKaUkE2GeLIwfEZesFg7pb6zM04sg24lsZNzfJ9sIBgeMRgh0XsX /pQRtZhCOVfElbSC8hh+wyVupVPbyx73mp6FJkuQU6V6bSDAa9cIhCJzOydDrF2LJEq/ xifT3Xzv8XegC3zUOMTiHzdlG/gpg7b206WqcwM+aETPIpzCALUohmsdc4ohwGAHLTrf 0qmwsUvngG9PzgkJ4aonD2ypj0KH7R/q/vpAjrWyufcjGXq5hDJuSem+XIbzf+otZLTp w/Ng== X-Gm-Message-State: ALoCoQn31fmnXD1hvpUnjCl1u/ilIOThvpgI1miJz0gCyHp5iYO/IN5OS8youhgKQQC36YqCyalK X-Received: by 10.152.1.133 with SMTP id 5mr21241lam.8.1414775894586; Fri, 31 Oct 2014 10:18:14 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.19.227 with SMTP id i3ls410166lae.28.gmail; Fri, 31 Oct 2014 10:18:14 -0700 (PDT) X-Received: by 10.112.93.231 with SMTP id cx7mr27458542lbb.89.1414775894289; Fri, 31 Oct 2014 10:18:14 -0700 (PDT) Received: from mail-la0-f42.google.com (mail-la0-f42.google.com. [209.85.215.42]) by mx.google.com with ESMTPS id sd8si17793160lbb.36.2014.10.31.10.18.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 31 Oct 2014 10:18:14 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.42 as permitted sender) client-ip=209.85.215.42; Received: by mail-la0-f42.google.com with SMTP id gq15so6634008lab.29 for ; Fri, 31 Oct 2014 10:18:13 -0700 (PDT) X-Received: by 10.112.97.135 with SMTP id ea7mr28108599lbb.46.1414775893891; Fri, 31 Oct 2014 10:18:13 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.84.229 with SMTP id c5csp234935lbz; Fri, 31 Oct 2014 10:18:13 -0700 (PDT) X-Received: by 10.224.24.131 with SMTP id v3mr39516886qab.81.1414775892705; Fri, 31 Oct 2014 10:18:12 -0700 (PDT) Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id v18si2540465qgv.96.2014.10.31.10.18.11 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 31 Oct 2014 10:18:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Received: from localhost ([::1]:39747 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XkFpz-0006BD-GX for patch@linaro.org; Fri, 31 Oct 2014 13:18:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XkE4w-0000Rt-48 for qemu-devel@nongnu.org; Fri, 31 Oct 2014 11:27:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xjxxg-0006Et-Fj for qemu-devel@nongnu.org; Thu, 30 Oct 2014 18:13:02 -0400 Received: from mail-pd0-f175.google.com ([209.85.192.175]:43169) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xjxxg-0006EM-AE for qemu-devel@nongnu.org; Thu, 30 Oct 2014 18:12:56 -0400 Received: by mail-pd0-f175.google.com with SMTP id y13so5980300pdi.20 for ; Thu, 30 Oct 2014 15:12:55 -0700 (PDT) X-Received: by 10.68.168.100 with SMTP id zv4mr20517029pbb.132.1414707175694; Thu, 30 Oct 2014 15:12:55 -0700 (PDT) Received: from gbellows-linaro.qualcomm.com (rrcs-67-52-129-61.west.biz.rr.com. [67.52.129.61]) by mx.google.com with ESMTPSA id h3sm7270163pdl.22.2014.10.30.15.12.54 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 30 Oct 2014 15:12:55 -0700 (PDT) From: Greg Bellows To: qemu-devel@nongnu.org, peter.maydell@linaro.org, serge.fdrv@gmail.com, edgar.iglesias@gmail.com, aggelerf@ethz.ch, christoffer.dall@linaro.org Date: Thu, 30 Oct 2014 17:12:08 -0500 Message-Id: <1414707132-24588-13-git-send-email-greg.bellows@linaro.org> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1414707132-24588-1-git-send-email-greg.bellows@linaro.org> References: <1414707132-24588-1-git-send-email-greg.bellows@linaro.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.192.175 Cc: daniel.thompson@linaro.org Subject: [Qemu-devel] [PATCH v2 12/16] hw/intc/arm_gic: Change behavior of EOIR writes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: greg.bellows@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.42 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Fabian Aggeler Grouping (GICv2) and Security Extensions change the behavior of EOIR writes. Completing Group0 interrupts is only allowed from Secure state and completing Group1 interrupts from Secure state is only allowed if AckCtl bit is set. Signed-off-by: Fabian Aggeler --- v1 -> v2 - Fix issue with EOIR writes involving AckCtl. AckCtl is ignored on EOIR group 1 interrupts when non-secure. Group 1 interrupts are only ignored when secure and AckCTl is clear. --- hw/intc/arm_gic.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 15fd660..2d83225 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -384,6 +384,21 @@ void gic_complete_irq(GICState *s, int cpu, int irq) GIC_SET_PENDING(irq, cm); update = 1; } + } else if ((s->revision >= 2 && !s->security_extn) + || (s->security_extn && !ns_access())) { + /* Handle GICv2 without Security Extensions or GIC with Security + * Extensions and a secure write. + */ + if (!GIC_TEST_GROUP0(irq, cm) && !ns_access() + && !(s->cpu_control[cpu][0] & GICC_CTLR_S_ACK_CTL)) { + /* Unpredictable. We choose to ignore. */ + DPRINTF("EOI for Group1 interrupt %d ignored " + "(AckCtl disabled)\n", irq); + return; + } + } else if (s->security_extn && ns_access() && GIC_TEST_GROUP0(irq, cm)) { + DPRINTF("Non-secure EOI for Group0 interrupt %d ignored\n", irq); + return; } if (irq != s->running_irq[cpu]) {