From patchwork Thu Mar 16 11:20:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 9627923 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E97B96048C for ; Thu, 16 Mar 2017 11:20:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DDDEA285B5 for ; Thu, 16 Mar 2017 11:20:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D139628604; Thu, 16 Mar 2017 11:20:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C9092285B5 for ; Thu, 16 Mar 2017 11:20:36 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coTQv-0007mj-KR; Thu, 16 Mar 2017 11:19:05 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coTQu-0007kr-SX for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:19:04 +0000 Received: from [85.158.143.35] by server-4.bemta-6.messagelabs.com id 3A/71-25093-8A47AC85; Thu, 16 Mar 2017 11:19:04 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRWlGSWpSXmKPExsVysyfVTXd5yak IgwlnTS2+b5nM5MDocfjDFZYAxijWzLyk/IoE1oxjTw+xFhwRqPhxYiVrA+Mq3i5GLg4hgc2M Eg+WXmXvYuQEcpYzShx75ARiswnoSuy4+ZoZxBYRCJWY8/MRmM0sUClx8cN+NhBbWMBV4vvC6 2C9LAKqEp/WLAaL8wrYSEzetgksLiEgJ9Fw/j5YLydQvOPkHjaIXdYSn49+Zp/AyL2AkWEVo3 pxalFZapGuhV5SUWZ6RkluYmaOrqGBmV5uanFxYnpqTmJSsV5yfu4mRqB3GYBgB+Psy/6HGCU 5mJREeVUET0QI8SXlp1RmJBZnxBeV5qQWH2KU4eBQkuCNOwuUEyxKTU+tSMvMAYYZTFqCg0dJ hDceJM1bXJCYW5yZDpE6xagoJc7rB5IQAElklObBtcFC+xKjrJQwLyPQIUI8BalFuZklqPKvG MU5GJWEeR+ATOHJzCuBm/4KaDET0OLEn0dAFpckIqSkGhglXqQ4JJ29cvXD+a0VFgdmKec2H3 Ks/f+g1jJ2iuVuRlf/ubVs1tWXF6QssPi+eOU1fjPDdaeeSy2Jf/SmIeXRE3Pnyf/aPs9bu3k 6V0/QhJadj7buWq1y55eAw9OmYweqTzsfSD3waB+DTXuaafHmnVuiGaJOr/VeucX9OduaibNu /nrBeWIZrxJLcUaioRZzUXEiAFeCz6FoAgAA X-Env-Sender: andre.przywara@arm.com X-Msg-Ref: server-5.tower-21.messagelabs.com!1489663143!54627699!1 X-Originating-IP: [217.140.101.70] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 48749 invoked from network); 16 Mar 2017 11:19:03 -0000 Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by server-5.tower-21.messagelabs.com with SMTP; 16 Mar 2017 11:19:03 -0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2D5F013D5; Thu, 16 Mar 2017 04:19:03 -0700 (PDT) Received: from e104803-lin.lan (unknown [10.1.207.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C95153F5C9; Thu, 16 Mar 2017 04:19:01 -0700 (PDT) From: Andre Przywara To: Stefano Stabellini , Julien Grall Date: Thu, 16 Mar 2017 11:20:14 +0000 Message-Id: <20170316112030.20419-12-andre.przywara@arm.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170316112030.20419-1-andre.przywara@arm.com> References: <20170316112030.20419-1-andre.przywara@arm.com> Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari Subject: [Xen-devel] [PATCH v2 11/27] ARM: GICv3: enable ITS and LPIs on the host X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Now that the host part of the ITS code is in place, we can enable the ITS and also LPIs on each redistributor to get the show rolling. At this point there would be no LPIs mapped, as guests don't know about the ITS yet. Signed-off-by: Andre Przywara --- xen/arch/arm/gic-v3-its.c | 4 ++++ xen/arch/arm/gic-v3.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c index ed14d95..5a2dbec 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -470,6 +470,10 @@ static int gicv3_its_init_single_its(struct host_its *hw_its) return -ENOMEM; writeq_relaxed(0, hw_its->its_base + GITS_CWRITER); + /* Now enable interrupt translation and command processing on that ITS. */ + reg = readl_relaxed(hw_its->its_base + GITS_CTLR); + writel_relaxed(reg | GITS_CTLR_ENABLE, hw_its->its_base + GITS_CTLR); + return 0; } diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 38dafe7..83a839a 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -621,6 +621,21 @@ static int gicv3_enable_redist(void) return 0; } +/* Enable LPIs on this redistributor (only useful when the host has an ITS). */ +static bool gicv3_enable_lpis(void) +{ + uint32_t val; + + val = readl_relaxed(GICD_RDIST_BASE + GICR_TYPER); + if ( !(val & GICR_TYPER_PLPIS) ) + return false; + + val = readl_relaxed(GICD_RDIST_BASE + GICR_CTLR); + writel_relaxed(val | GICR_CTLR_ENABLE_LPIS, GICD_RDIST_BASE + GICR_CTLR); + + return true; +} + static int __init gicv3_populate_rdist(void) { int i; @@ -729,8 +744,12 @@ static int gicv3_cpu_init(void) if ( gicv3_enable_redist() ) return -ENODEV; + /* If the host has any ITSes, enable LPIs now. */ if ( gicv3_its_host_has_its() ) + { gicv3_its_setup_collection(smp_processor_id()); + gicv3_enable_lpis(); + } /* Set priority on PPI and SGI interrupts */ priority = (GIC_PRI_IPI << 24 | GIC_PRI_IPI << 16 | GIC_PRI_IPI << 8 |