From patchwork Wed Apr 5 23:19:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 9665865 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 9035460352 for ; Wed, 5 Apr 2017 23:22:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 815FA2816B for ; Wed, 5 Apr 2017 23:22:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 731122858F; Wed, 5 Apr 2017 23:22:45 +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 BF2C02816B for ; Wed, 5 Apr 2017 23:22:44 +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 1cvuEX-0004in-0X; Wed, 05 Apr 2017 23:21:01 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvuEV-0004fx-Sg for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 23:20:59 +0000 Received: from [85.158.143.35] by server-7.bemta-6.messagelabs.com id 5B/B5-04817-BDB75E85; Wed, 05 Apr 2017 23:20:59 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRWlGSWpSXmKPExsVysyfVTfdW9dM Ig+7JJhbft0xmcmD0OPzhCksAYxRrZl5SfkUCa8aroxIF5wQqNi/YytjAOI23i5GLQ0hgM6PE va3vmSCcvYwSVy4dAnI4OdgEdCV23HzNDGKLCIRKzPn5CMjm4GAWqJToXsQPEhYWcJVo334NL MwioCrRvN8QJMwr4C4xYdF6VpCwhICcxJV/CSBhTqDwy9ZjLCC2kICbxLWJU1kmMHIvYGRYxa hRnFpUllqka2Sul1SUmZ5RkpuYmaNraGCml5taXJyYnpqTmFSsl5yfu4kR6FkGINjBuHht4CF GSQ4mJVFeBZ8nEUJ8SfkplRmJxRnxRaU5qcWHGGU4OJQkeLdVPY0QEixKTU+tSMvMAYYYTFqC g0dJhPc9SJq3uCAxtzgzHSJ1ilFRSpx3E0hCACSRUZoH1wYL60uMslLCvIxAhwjxFKQW5WaWo Mq/YhTnYFQS5r0JMoUnM68EbvoroMVMQIuf3HkIsrgkESEl1cB4fN+74KwfJ/hSn2TxRfkF14 tFCT7UnmN0LUNrwzYXhvg/F1euftZxmTf5WeQ51mVV9y6rf1Ir6kmYmGB3lXvJg857PlJ/8ni Dv648usig2+bTcYu/Hxqu3Jb+ndmw+frNNWrl+uceSZ2/qnNS8oVUethb2UfT/72ZNOO39I7d 0zrD+Q0qD9wtU2Ipzkg01GIuKk4EAMdCdbdmAgAA X-Env-Sender: andre.przywara@arm.com X-Msg-Ref: server-7.tower-21.messagelabs.com!1491434458!62466898!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.4.12; banners=-,-,- X-VirusChecked: Checked Received: (qmail 17179 invoked from network); 5 Apr 2017 23:20:58 -0000 Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by server-7.tower-21.messagelabs.com with SMTP; 5 Apr 2017 23:20:58 -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 28A8915BF; Wed, 5 Apr 2017 16:20:58 -0700 (PDT) Received: from slackpad.lan (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D9D433F4FF; Wed, 5 Apr 2017 16:20:56 -0700 (PDT) From: Andre Przywara To: Stefano Stabellini , Julien Grall Date: Thu, 6 Apr 2017 00:19:06 +0100 Message-Id: <1491434362-30310-15-git-send-email-andre.przywara@arm.com> X-Mailer: git-send-email 2.8.2 In-Reply-To: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> References: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari Subject: [Xen-devel] [PATCH v5 14/30] 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 | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c index 45bbfa7..76b0316 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -505,6 +505,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 63dbc21..54fbb19 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -620,6 +620,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; @@ -731,11 +746,14 @@ 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() ) { ret = gicv3_its_setup_collection(smp_processor_id()); if ( ret ) return ret; + if ( !gicv3_enable_lpis() ) + return -EBUSY; } /* Set priority on PPI and SGI interrupts */