From patchwork Tue Oct 17 16:55:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 116150 Delivered-To: patch@linaro.org Received: by 10.80.163.170 with SMTP id s39csp1444722edb; Tue, 17 Oct 2017 09:56:10 -0700 (PDT) X-Received: by 10.99.185.18 with SMTP id z18mr11798237pge.212.1508259370447; Tue, 17 Oct 2017 09:56:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508259370; cv=none; d=google.com; s=arc-20160816; b=0/bNEjIPI/q2nGBOEV3OgLE0yIScVaYCCzkjAWkX5Ar24Nxj921LTaC5Z+tedurrTA K1HsEFa7V3zspQIdDfcbl8igjMGF5cI+S/U9OL5nwPGbyMy5uvRXHGea4COZ2vhCjpzY VkzKr7W+k2YKhJE2+i9tZ1wA54bMdldDr2oi1x+Os73CfqsoIzPOkZeu8S4jUesJfYmS NyJgZjM//Z1RnvRJ/vpAHq3SZHJ43q3fgFLrYg8R+MZt0V96CoLlk35edMvMdoi/doQA yU0eCMtnWlVoVJFo4bcnH+W27dBygkStbrDx6t/eTDpApyfN5so90oUsXvA5lAq6mEij ausQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=EQu7PFLjrq2GiEHpKuuMmsW9JiqjM6AT0EmeueAqLhg=; b=jIEQ/Y8vwJfuEIsU/RFOYlRk9K0Grdnz6QdkDq9vOKuSUKOmL69W9WN5i/j+l33kPn FGJboL4jwTGUp1pYp5mwdpAXMa+DGxKVsCk3dy0F6uhUrJKw+crx6ML5aaWg1JF0TULZ 4EpUvt0IoAKW+WYguF9/MgMw5mdJ14Nndpd886GZL9Sa2PP2WELLSK60lWz8nmcSxU/g 2ceBGL9hcYFfgBrxJkgP0JyyI1HqmHrCX54VJ8+ltBqqs+n+AvDYFKBb3pBLqQaNNAfE 80iZD/dF65HsZUpiKwmbI2oDJ/69zxFqnAcdC57w/HBddpJaXHIr6qoOTAKvgHGtVMPL 2KRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=agH1izFS; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i72si6128715pfe.165.2017.10.17.09.56.10; Tue, 17 Oct 2017 09:56:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=agH1izFS; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934132AbdJQQ4J (ORCPT + 6 others); Tue, 17 Oct 2017 12:56:09 -0400 Received: from mail-wm0-f48.google.com ([74.125.82.48]:43503 "EHLO mail-wm0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934082AbdJQQ4I (ORCPT ); Tue, 17 Oct 2017 12:56:08 -0400 Received: by mail-wm0-f48.google.com with SMTP id m72so9704645wmc.0 for ; Tue, 17 Oct 2017 09:56:08 -0700 (PDT) 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=hcoqsPVs5C7Pd8/M04kFqx7qMm95VJSP1qF5aCHerpw=; b=agH1izFSFoZ+S90jz3ZSK4hykMXq5pukksiXoo456oaOhDZ4iI4bl2fXyUcLNODlmg iGCMvlJBxagtL0gGgacAalzFMNuQddc/N1UxZXNODzDbX1WhCYaNhgnKUqSuOpv3yLqC xVLqhbH90D05Ke5802t1AOzVjk75VJvORu6a0= 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=hcoqsPVs5C7Pd8/M04kFqx7qMm95VJSP1qF5aCHerpw=; b=IJi2ps7MsrPPG5PH2hMjTf/ftZOyGV51w2YkYUpM0j7mVft1neMPaKre61CzAg+Kyq SKgcoHrc+KoRBQaO8L7IPO3Nuo+YC8+FW1zcNAiK0jF5LRZSQAjUW+xoRJIOwle291hY 94t57niIgAqt1fmc5gPGdPwWUsdpAXkJW8+lKDPT/v9dUfOpwR0kbUTfNsDGjCj/Khq6 EYeWmLxyXQiSOi0Km7ZMzpONNKEvOG1vZiW6OampL7V2IUhZ71lgkuMSHxwa+9IapSWu HDqkKtBi91xLwyGEJNOd3qNVZQuZF52wBqgyXL3UMdJ8m1BSSqMkW4E7TZ7BliBuxoSX eNcw== X-Gm-Message-State: AMCzsaW6LK2D9PiLMjo9a0AVmqgAOc8YCSt1/vjDfT7PxY9nhfV/r4co uw9nOaTdTl+qw8NTV5/V9gjgwQ== X-Google-Smtp-Source: ABhQp+T3Xb1woWalaMoraN5WTT8jHMe3Loo3zfZXrhVuWz26UKQ3eyqRa0VcXK68F35QWlxDEGMa+g== X-Received: by 10.28.129.194 with SMTP id c185mr3912112wmd.49.1508259367366; Tue, 17 Oct 2017 09:56:07 -0700 (PDT) Received: from localhost.localdomain ([154.144.50.139]) by smtp.gmail.com with ESMTPSA id y84sm5854517wmg.43.2017.10.17.09.56.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Oct 2017 09:56:05 -0700 (PDT) From: Ard Biesheuvel To: marc.zyngier@arm.com, robin.murphy@arm.com Cc: linux-arm-kernel@lists.infradead.org, daniel.thompson@Linaro.org, leif.lindholm@linaro.org, graeme.gregory@linaro.org, catalin.marinas@arm.com, will.deacon@arm.com, devicetree@vger.kernel.org, robh+dt@kernel.org, Ard Biesheuvel Subject: [PATCH v5 1/3] drivers/irqchip: gicv3: probe device ID space before quirks handling Date: Tue, 17 Oct 2017 17:55:54 +0100 Message-Id: <20171017165556.30250-2-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171017165556.30250-1-ard.biesheuvel@linaro.org> References: <20171017165556.30250-1-ard.biesheuvel@linaro.org> Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Before adding another SoC whose device ID space deviates from the value presented in the GIC ID registers, let's slightly refactor the code so that the ID registers are probed before that quirks handling executes. This allows us to move the device ID override into the quirk handler itself. Signed-off-by: Ard Biesheuvel --- drivers/irqchip/irq-gic-v3-its.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index e8d89343d613..891de07fd4cc 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -1650,23 +1650,14 @@ static void its_free_tables(struct its_node *its) static int its_alloc_tables(struct its_node *its) { - u64 typer = gic_read_typer(its->base + GITS_TYPER); - u32 ids = GITS_TYPER_DEVBITS(typer); u64 shr = GITS_BASER_InnerShareable; u64 cache = GITS_BASER_RaWaWb; u32 psz = SZ_64K; int err, i; - if (its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_22375) { - /* - * erratum 22375: only alloc 8MB table size - * erratum 24313: ignore memory access type - */ - cache = GITS_BASER_nCnB; - ids = 0x14; /* 20 bits, 8MB */ - } - - its->device_ids = ids; + if (its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_22375) + /* erratum 24313: ignore memory access type */ + cache = GITS_BASER_nCnB; for (i = 0; i < GITS_BASER_NR_REGS; i++) { struct its_baser *baser = its->tables + i; @@ -2741,6 +2732,8 @@ static void __maybe_unused its_enable_quirk_cavium_22375(void *data) { struct its_node *its = data; + /* erratum 22375: only alloc 8MB table size */ + its->device_ids = 0x14; /* 20 bits, 8MB */ its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_22375; } @@ -2942,6 +2935,7 @@ static int __init its_probe_one(struct resource *res, its->base = its_base; its->phys_base = res->start; its->ite_size = GITS_TYPER_ITT_ENTRY_SIZE(typer); + its->device_ids = GITS_TYPER_DEVBITS(typer); its->is_v4 = !!(typer & GITS_TYPER_VLPIS); if (its->is_v4) { if (!(typer & GITS_TYPER_VMOVP)) {