From patchwork Mon Feb 16 14:50:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 44704 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wg0-f71.google.com (mail-wg0-f71.google.com [74.125.82.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 9527921544 for ; Mon, 16 Feb 2015 14:52:03 +0000 (UTC) Received: by mail-wg0-f71.google.com with SMTP id b13sf19597629wgh.2 for ; Mon, 16 Feb 2015 06:52:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:date:message-id:in-reply-to :references:cc:subject:precedence:list-id:list-unsubscribe:list-post :list-help:list-subscribe:mime-version:content-type :content-transfer-encoding:sender:errors-to:x-original-sender :x-original-authentication-results:mailing-list:list-archive; bh=5qYwTPnzZl5p4C4m1OrKtlr9Ekqj2jE7uGRO2nBSXJU=; b=ZzPNvNFgPeZNHuDdsIzVUAGbh+rBN8kWi5PywUfLeiXeM/EkdxXj5e6NUkrl3l5jOM lDZMrbP3hfWG4ll+voJ50KLSmFSPkrlRCzWmYUVBV4Py3vK00E0VM6FvBB3e0F2LlqpP Jwg14rHtog/W5qY9JMkbJWy5STQMipUgoN1Popj/52O90bVzTehYIOMMVD9Kl101xryJ VdSRJmjqaMsAgxpOxunvqbGYCrFEBKGolZLf3aTkihcNWpfBhe90/fFJ/3FRyoexnDdd AeEMDmJbbRDhftKbZ9bMRjDXeHttIXWC3Lv/6MIhDBFrPk++6QgMEFR8WPF/pCNiLuxc 0Bng== X-Gm-Message-State: ALoCoQlv75WZ3oEaplA5hEo4mTzPg5KiovDGEgr/DMlywKRP1sQQTsRZs/F4LXv8Vw+g7WMm0oxI X-Received: by 10.152.26.74 with SMTP id j10mr2985931lag.10.1424098322913; Mon, 16 Feb 2015 06:52:02 -0800 (PST) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.30.38 with SMTP id p6ls570714lah.52.gmail; Mon, 16 Feb 2015 06:52:02 -0800 (PST) X-Received: by 10.112.135.196 with SMTP id pu4mr22634132lbb.41.1424098322766; Mon, 16 Feb 2015 06:52:02 -0800 (PST) Received: from mail-la0-f51.google.com (mail-la0-f51.google.com. [209.85.215.51]) by mx.google.com with ESMTPS id e8si9806633lam.60.2015.02.16.06.52.02 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Feb 2015 06:52:02 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.51 as permitted sender) client-ip=209.85.215.51; Received: by labgd6 with SMTP id gd6so29273248lab.7 for ; Mon, 16 Feb 2015 06:52:02 -0800 (PST) X-Received: by 10.112.14.196 with SMTP id r4mr19629809lbc.86.1424098322475; Mon, 16 Feb 2015 06:52:02 -0800 (PST) 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.35.133 with SMTP id h5csp1629051lbj; Mon, 16 Feb 2015 06:52:01 -0800 (PST) X-Received: by 10.140.90.81 with SMTP id w75mr1273018qgd.57.1424098320926; Mon, 16 Feb 2015 06:52:00 -0800 (PST) Received: from lists.xen.org (lists.xen.org. [50.57.142.19]) by mx.google.com with ESMTPS id g1si2457876qaf.107.2015.02.16.06.51.59 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 16 Feb 2015 06:52:00 -0800 (PST) Received-SPF: none (google.com: xen-devel-bounces@lists.xen.org does not designate permitted sender hosts) client-ip=50.57.142.19; Received: from localhost ([127.0.0.1] helo=lists.xen.org) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YNN1F-0001IX-GV; Mon, 16 Feb 2015 14:51:29 +0000 Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YNN1D-0001CN-OT for xen-devel@lists.xenproject.org; Mon, 16 Feb 2015 14:51:27 +0000 Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id FB/F8-31919-FE302E45; Mon, 16 Feb 2015 14:51:27 +0000 X-Env-Sender: julien.grall@linaro.org X-Msg-Ref: server-12.tower-27.messagelabs.com!1424098286!13773133!1 X-Originating-IP: [74.125.82.44] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 6.13.4; banners=-,-,- X-VirusChecked: Checked Received: (qmail 17509 invoked from network); 16 Feb 2015 14:51:26 -0000 Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com) (74.125.82.44) by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP; 16 Feb 2015 14:51:26 -0000 Received: by mail-wg0-f44.google.com with SMTP id k14so20012437wgh.3 for ; Mon, 16 Feb 2015 06:51:26 -0800 (PST) X-Received: by 10.180.90.206 with SMTP id by14mr38568710wib.0.1424098286121; Mon, 16 Feb 2015 06:51:26 -0800 (PST) Received: from chilopoda.uk.xensource.com. ([185.25.64.249]) by mx.google.com with ESMTPSA id dj5sm23172398wjb.28.2015.02.16.06.51.24 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Feb 2015 06:51:25 -0800 (PST) From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 16 Feb 2015 14:50:41 +0000 Message-Id: <1424098255-22490-2-git-send-email-julien.grall@linaro.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1424098255-22490-1-git-send-email-julien.grall@linaro.org> References: <1424098255-22490-1-git-send-email-julien.grall@linaro.org> Cc: stefano.stabellini@citrix.com, Vijaya.Kumar@caviumnetworks.com, Julien Grall , tim@xen.org, ian.campbell@citrix.com Subject: [Xen-devel] [PATCH v3 01/15] xen/arm: vgic-v3: Correctly set GICD_TYPER.IDbits X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: julien.grall@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.51 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 List-Archive: >From Linux 3.19, the GICv3 drivers is using GICD_TYPER.IDbits to check the validity of the hardware interrupt number. The field IDBits in the register GICD_TYPER is used to know the number of interrupt identifiers (SPI, PPIs, SGIs, LPIs) supported by GIC Stream Protocol Interface. This field contains the number of interrupt identifier bits minus one. Signed-off-by: Julien Grall Acked-by: Ian Campbell --- This patch should be backported to Xen 4.5. Without it any Linux kernel > 3.19 won't boot as a Xen domain. I'm wondering if we should add a release note for this bug. Changes in v3: - Move the GICD_TYPE_ID_BITS_SHIFT definition with the other bit definitions - Add Ian's ack Changes in v2: - vgic_num_irqs has been introduced - Drop GICD_TYPE_ID_BITS_MASK - Use get_count_order --- xen/arch/arm/vgic-v3.c | 11 +++++++++++ xen/include/asm-arm/gic_v3_defs.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index bece189..72b22ee 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -679,11 +679,22 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info) vgic_unlock(v); return 1; case GICD_TYPER: + { + /* + * Number of interrupt identifier bits supported by the GIC + * Stream Protocol Interface + */ + unsigned int irq_bits = get_count_order(vgic_num_irqs(v->domain)); + if ( dabt.size != DABT_WORD ) goto bad_width; /* No secure world support for guests. */ *r = (((v->domain->max_vcpus << 5) & GICD_TYPE_CPUS ) | ((v->domain->arch.vgic.nr_spis / 32) & GICD_TYPE_LINES)); + + *r |= (irq_bits - 1) << GICD_TYPE_ID_BITS_SHIFT; + return 1; + } case GICD_STATUSR: /* * Optional, Not implemented for now. diff --git a/xen/include/asm-arm/gic_v3_defs.h b/xen/include/asm-arm/gic_v3_defs.h index 13adb53..b8a1c2e 100644 --- a/xen/include/asm-arm/gic_v3_defs.h +++ b/xen/include/asm-arm/gic_v3_defs.h @@ -45,6 +45,9 @@ #define GICC_SRE_EL2_DIB (1UL << 2) #define GICC_SRE_EL2_ENEL1 (1UL << 3) +/* Additional bits in GICD_TYPER defined by GICv3 */ +#define GICD_TYPE_ID_BITS_SHIFT 19 + #define GICD_CTLR_RWP (1UL << 31) #define GICD_CTLR_ARE_NS (1U << 4) #define GICD_CTLR_ENABLE_G1A (1U << 1)