From patchwork Fri Mar 31 18:05:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 9657101 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 73C5760350 for ; Fri, 31 Mar 2017 18:06:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6877F286B7 for ; Fri, 31 Mar 2017 18:06:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5D65D286F1; Fri, 31 Mar 2017 18:06:03 +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 02F7A286B7 for ; Fri, 31 Mar 2017 18:06:03 +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 1cu0tj-0005Rn-Fm; Fri, 31 Mar 2017 18:03:43 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cu0ti-0005PL-Pt for xen-devel@lists.xenproject.org; Fri, 31 Mar 2017 18:03:42 +0000 Received: from [193.109.254.147] by server-4.bemta-6.messagelabs.com id 6F/AE-03012-EF99ED85; Fri, 31 Mar 2017 18:03:42 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRWlGSWpSXmKPExsVysyfVTffvzHs RBi8+K1p83zKZyYHR4/CHKywBjFGsmXlJ+RUJrBkvVhsVnBOouPlpMXsD4zTeLkYuDiGBTYwS nyafZYNwljNKPD40g7GLkZODTUBXYsfN18wgtohAqMTTBd+BbA4OZoFKie5F/CBhYQFXic0Lz oGVsAioSszpP80OYvMK2EicXnYZbIyEgJxEw/n7YDWcQPH5u36wgthCAtYSDZ/uMk9g5F7AyL CKUaM4tagstUjX0EIvqSgzPaMkNzEzR9fQwEwvN7W4ODE9NScxqVgvOT93EyPQuwxAsIPx5sa AQ4ySHExKorzfi+9FCPEl5adUZiQWZ8QXleakFh9ilOHgUJLgvT4DKCdYlJqeWpGWmQMMM5i0 BAePkgivFDDUhHiLCxJzizPTIVKnGBWlxHmPgfQJgCQySvPg2mChfYlRVkqYlxHoECGegtSi3 MwSVPlXjOIcjErCvC9ApvBk5pXATX8FtJgJaLHF17sgi0sSEVJSDYyGXnZL2u5+vnDrhmNUsu ZT15uih177fO9WSpJ2CrC9FRrprhLQ7XpzVfqRlSyJf6ISI4NemFs4rS2af+m35ZMF7LcEQnz dNu74mG080bShb86zyzp/35sdX/bryN8l09OuKu7l/6xiw9t/a9qnj9Injxe4hYYuD5r87cir m+wTY2LN/1fnpyorsRRnJBpqMRcVJwIAe9LH/2gCAAA= X-Env-Sender: andre.przywara@arm.com X-Msg-Ref: server-6.tower-27.messagelabs.com!1490983421!95104644!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 50735 invoked from network); 31 Mar 2017 18:03:41 -0000 Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by server-6.tower-27.messagelabs.com with SMTP; 31 Mar 2017 18:03:41 -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 D3DDD80D; Fri, 31 Mar 2017 11:03:40 -0700 (PDT) Received: from e104803-lin.lan (unknown [10.1.207.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EEFF23F59A; Fri, 31 Mar 2017 11:03:39 -0700 (PDT) From: Andre Przywara To: Julien Grall , Stefano Stabellini Date: Fri, 31 Mar 2017 19:05:09 +0100 Message-Id: <20170331180525.30038-11-andre.przywara@arm.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170331180525.30038-1-andre.przywara@arm.com> References: <20170331180525.30038-1-andre.przywara@arm.com> Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari Subject: [Xen-devel] [PATCH v3 10/26] 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 fa284e7..8db2a09 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -476,6 +476,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 0e21cb2..d92d115 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,11 +744,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 */