From patchwork Wed Jan 24 14:35:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 125667 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp456907ljf; Wed, 24 Jan 2018 06:37:31 -0800 (PST) X-Google-Smtp-Source: AH8x224R0eL3/68jRpihztyLx8nTPukw2aESy8JQzs43B9/KAemQ0NGDPYqJUceVNEAmoV2UoVNu X-Received: by 10.107.178.70 with SMTP id b67mr8469070iof.139.1516804651454; Wed, 24 Jan 2018 06:37:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516804651; cv=none; d=google.com; s=arc-20160816; b=nDXE+jER7asAdWLlHT/KDMk9PvLQRIJyWJFi08JkgC5ArxkJPvklE8TgCKxNLB+YPO ExNGeCxkdewKZ5MKp2CEzW77kVM5cr7SIOB/PmmjwxpJSdkh3H+Fhu6fDvovEZKEGBwe e4hXsHcUAwWoklVFx1kl382RLWb69NMVxcVTKM/QBLXaF2F3LtbcFwITTo88vRb75ei4 qqB4PDGrP7qmI7okpE2owxUlaiJkUQE7eaMeKaNrymDhK7rDrNiH3ZgL5j2HQktsebuk kFQvPpu4YHiWyWKi9VtflSgD9X6Mr/yYo2lbhcS93p+IbUefrJdR+LCIDIh4ywdU1Sga TwjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-unsubscribe:list-id :precedence:subject:cc:references:in-reply-to:message-id:date:to :from:dkim-signature:arc-authentication-results; bh=u74rSD4PDkBrgzJCstEIPCW6n4ZDLvX5XHFHTvEGrhs=; b=ghHnlsJhcKQagZnQ4bZzGNrhDeCdRXDco4YyBkdqgSJ2OWKXuj8L/1p/Nbb055sseC TLIx+plVjiG9+tdjv4LkBaB7PivShE5BCGiMk35Drr2NT+HEXu7EVkFqdJv4qA4G01mI MOF1xC3mtfYGZgzym9HjFUN2EFD2vwh4Pf9SA8Gv6Qpk0CPdmgQHv6n0sDQIr/UJ2gtI Fg9WIaYIpXUKNPnRSWLeAHAJGpdYloqMiyqxeTg41AXrUTTEIecbI1RD8tWwQWEj4RUm Z0mHAD0/D1O+oF6aN5ZqL4nQrtCRdQZu+pE8u5lYd4hMtoSTpCzMlQxTNkay/0kpI1A6 YEFA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=UM5DieSR; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id z127si310875ioz.244.2018.01.24.06.37.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jan 2018 06:37:31 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=UM5DieSR; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eeM93-00016h-EQ; Wed, 24 Jan 2018 14:35:21 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eeM91-000159-W9 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2018 14:35:20 +0000 X-Inumbo-ID: ca3cf5f2-0113-11e8-ba59-bc764e045a96 Received: from mail-wm0-x242.google.com (unknown [2a00:1450:400c:c09::242]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id ca3cf5f2-0113-11e8-ba59-bc764e045a96; Wed, 24 Jan 2018 15:35:15 +0100 (CET) Received: by mail-wm0-x242.google.com with SMTP id r78so9066767wme.0 for ; Wed, 24 Jan 2018 06:35:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PUi8QRmEFvGYAT5n4eBoTG58YyA9muGZgRzouPueCDE=; b=UM5DieSRVvT6e63/2Xt7N/7wCsMIpfuqQov5QJ2MLDZDSwmVeU9hBhtxAe6hrV2sbg 0oDNRuSI5txcOhwHBkASkPdSs7a/c1Eu1KiL8hDIkTBYY94o40Se8JJMurL5UoQPDJu6 WIm+usgMmTSFsg0h1FJ/1NmO5u0zl4xQbKyoA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PUi8QRmEFvGYAT5n4eBoTG58YyA9muGZgRzouPueCDE=; b=FGjxcf77tNO8z1TNMGoVRDY1KrpvsVJbsAULGUMghWaypxTUgJy/d0b+Ax7KBUGzV7 jxua5tnIidTgK19tdDXiHw/w9pOkU0ayWjb/NQX7ITZJOmw5HIsPy6Orput04OIga9sQ XLNDu0D04l9sVku5aMV3z8QuqW657o2vJ5WuON7GNTSv4ufvyh/IlHCE4Tli8sy99fqa j721itTI74lxmUIDuOC1nfiI0K/iVZO4D6X4CfamlCZHaMZn98Y3TD2zIzUxlYszQpAA oIahWRl8Ywo0X9p3aTV6fcsTeNbu4pw6ipaMx2ZGIqVZLqNXalg3Lqhabo26lgI+HtlE JZXQ== X-Gm-Message-State: AKwxytfcFsA7CZqRGokHRgjRpWkQ4dRHoIKQDAv6qUK0xXww+w4anKrQ tyUTrlrpPyXwaTdCM9xb8obiQw== X-Received: by 10.28.143.196 with SMTP id r187mr5576861wmd.68.1516804517517; Wed, 24 Jan 2018 06:35:17 -0800 (PST) Received: from e104803-lin.lan (mail.andrep.de. [217.160.17.100]) by smtp.gmail.com with ESMTPSA id l9sm3267923wrb.91.2018.01.24.06.35.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 Jan 2018 06:35:17 -0800 (PST) From: Andre Przywara To: Stefano Stabellini , Julien Grall Date: Wed, 24 Jan 2018 14:35:15 +0000 Message-Id: <20180124143517.18469-6-andre.przywara@linaro.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180124143517.18469-1-andre.przywara@linaro.org> References: <20180124143517.18469-1-andre.przywara@linaro.org> Cc: xen-devel@lists.xenproject.org Subject: [Xen-devel] [PATCH 5/7] ARM: GICv3: simplify GICv3 redistributor stride handling X-BeenThere: xen-devel@lists.xenproject.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.xenproject.org Sender: "Xen-devel" Instead of hard coding the architected redistributor stride into the code, lets use a clear #define to the two values for GICv3 and GICv4 and clarify the algorithm to determine the needed stride value. Signed-off-by: Andre Przywara --- xen/arch/arm/gic-v3.c | 18 ++++++++++-------- xen/include/asm-arm/gic_v3_defs.h | 5 +++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 1c24ecbba7..2893c66492 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -690,6 +690,15 @@ static int __init gicv3_populate_rdist(void) do { typer = readq_relaxed(ptr + GICR_TYPER); + /* Set the architectural redist size if not overridden by DT. */ + if ( !gicv3.rdist_stride ) + { + if ( typer & GICR_TYPER_VLPIS ) + gicv3.rdist_stride = GICV4_GICR_SIZE; + else + gicv3.rdist_stride = GICV3_GICR_SIZE; + } + if ( (typer >> 32) == aff ) { this_cpu(rbase) = ptr; @@ -732,14 +741,7 @@ static int __init gicv3_populate_rdist(void) if ( gicv3.rdist_regions[i].single_rdist ) break; - if ( gicv3.rdist_stride ) - ptr += gicv3.rdist_stride; - else - { - ptr += SZ_64K * 2; /* Skip RD_base + SGI_base */ - if ( typer & GICR_TYPER_VLPIS ) - ptr += SZ_64K * 2; /* Skip VLPI_base + reserved page */ - } + ptr += gicv3.rdist_stride; } while ( !(typer & GICR_TYPER_LAST) ); } diff --git a/xen/include/asm-arm/gic_v3_defs.h b/xen/include/asm-arm/gic_v3_defs.h index 65c9dc47cf..412e41afed 100644 --- a/xen/include/asm-arm/gic_v3_defs.h +++ b/xen/include/asm-arm/gic_v3_defs.h @@ -18,6 +18,8 @@ #ifndef __ASM_ARM_GIC_V3_DEFS_H__ #define __ASM_ARM_GIC_V3_DEFS_H__ +#include + /* * Additional registers defined in GIC v3. * Common GICD registers are defined in gic.h @@ -68,6 +70,9 @@ #define GICV3_GICD_IIDR_VAL 0x34c #define GICV3_GICR_IIDR_VAL GICV3_GICD_IIDR_VAL +#define GICV3_GICR_SIZE (2 * SZ_64K) +#define GICV4_GICR_SIZE (4 * SZ_64K) + #define GICR_CTLR (0x0000) #define GICR_IIDR (0x0004) #define GICR_TYPER (0x0008)