From patchwork Mon Jun 19 11:04:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Magnus Damm X-Patchwork-Id: 9795797 X-Patchwork-Delegate: geert@linux-m68k.org 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 166856020B for ; Mon, 19 Jun 2017 11:08:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0B30127F60 for ; Mon, 19 Jun 2017 11:08:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F31F727813; Mon, 19 Jun 2017 11:08:51 +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=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A4CBC27813 for ; Mon, 19 Jun 2017 11:08:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754023AbdFSLI0 (ORCPT ); Mon, 19 Jun 2017 07:08:26 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:33563 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753580AbdFSLIZ (ORCPT ); Mon, 19 Jun 2017 07:08:25 -0400 Received: by mail-pf0-f194.google.com with SMTP id w12so16018807pfk.0; Mon, 19 Jun 2017 04:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:date:message-id:in-reply-to:references:subject; bh=r1r9+yeyxNpZukflAX18/VebNWM1Y8lEIuTpHMYkv3I=; b=QzjjogOkHCEiSZxx/ok2xyHlOGzNGHQsG4AYcfpRdU/ERCsccDvbNZc8IVeh5cObUY sSXU9Jc3a+fKfkKa7d+YNKXqeaQ101RNnG3rV5XVHW2eSFdwhSlFwiLEPC7GrDa1ptOQ FZsRufP92Xj/QHTRgn9w8xN/MHYQTYw2L740ymB7siVkqgs2d7IbxIv8eb5AFNkAde1k Ilhatv3PPY8U9L/EDSGErAKP6gTHfC1oEoIVVLTSpTql3TvSTRr3+mPcCrBMNxmDUovJ U+hYKdHM8ijXCveREBMAB64a/Q33MP3IhUvyJo/x+BNbLSyXeVRw3U4AuJCWW0p8+Pmj XDig== 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:date:message-id:in-reply-to :references:subject; bh=r1r9+yeyxNpZukflAX18/VebNWM1Y8lEIuTpHMYkv3I=; b=dxP5u2jLIw7qtHhhbjx2Sll3Dj5DnCV8Wk5l1NmP/YGfCCDWePRLA6V3iF2sUTTkX1 3AAOPu0S/bxsCoh7mJhGPJYM1XRJx+tKOuzD5ycSpoUwe7F9aFQyRL+nYlVaLZE8yggI d92JviaUXGXRBg/DMgeV4rcC2tCt7j4YFevhqymH+la1LLnDCYoMNKBkC7LXUUvTX3vm Wrrm9IopR+x+JwjKGKDw3TOJ/8NYQUqAvcbTPLFXOnzoIAZylqeQyAkCjETEcgXqHHGb ut9moCiaL7ubv22U9nLbFLbi6OdDehHyVyPMyhjs4N/u3vAlowVXWq8U9OXgdBEc85QA X0KA== X-Gm-Message-State: AKS2vOxGY6BE8AdCFE+F7MQ5UHA+Qbm5smFXYtUkFfdD+fkriV3q5qzP E7WESaydnA4sHQ== X-Received: by 10.98.212.73 with SMTP id u9mr24936634pfl.101.1497870504495; Mon, 19 Jun 2017 04:08:24 -0700 (PDT) Received: from [127.0.0.1] (s214090.ppp.asahi-net.or.jp. [220.157.214.90]) by smtp.gmail.com with ESMTPSA id n123sm19840262pga.35.2017.06.19.04.08.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jun 2017 04:08:23 -0700 (PDT) From: Magnus Damm To: joro@8bytes.org Cc: laurent.pinchart+renesas@ideasonboard.com, geert+renesas@glider.be, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, iommu@lists.linux-foundation.org, horms+renesas@verge.net.au, Magnus Damm , robin.murphy@arm.com, m.szyprowski@samsung.com Date: Mon, 19 Jun 2017 20:04:37 +0900 Message-Id: <149787027730.32495.785135660592328553.sendpatchset@little-apple> In-Reply-To: <149787025647.32495.1584960416060100962.sendpatchset@little-apple> References: <149787025647.32495.1584960416060100962.sendpatchset@little-apple> Subject: [PATCH v4 2/3] iommu/ipmmu-vmsa: Increase maximum micro-TLBS to 48 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Magnus Damm Bump up the maximum numbers of micro-TLBS to 48. Each IPMMU device instance get micro-TLB assignment via the "iommus" property in DT. Older SoCs tend to use a maximum number of 32 micro-TLBs per IPMMU instance however newer SoCs such as r8a7796 make use of up to 48 micro-TLBs. At this point no SoC specific handling is done to validate the maximum number of micro-TLBs, and because of that the DT information is assumed to be within correct range for each particular SoC. If needed in the future SoC specific feature flags can be added to handle the maximum number of micro-TLBs without requiring DT changes, however at this point this does not seem necessary. Signed-off-by: Magnus Damm Reviewed-by: Geert Uytterhoeven --- Changes since V3: - None Changes since V2: - Added outer set of () to IMUASID() and IMUCTR() - thanks Ramesh! - Added Reviewed-by from Geert - thanks! Changes since V1: - Added support for the second I/O range at 0x600. drivers/iommu/ipmmu-vmsa.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) --- 0015/drivers/iommu/ipmmu-vmsa.c +++ work/drivers/iommu/ipmmu-vmsa.c 2017-06-19 19:47:28.950607110 +0900 @@ -199,7 +199,9 @@ static struct ipmmu_vmsa_iommu_priv *to_ #define IMPMBA(n) (0x0280 + ((n) * 4)) #define IMPMBD(n) (0x02c0 + ((n) * 4)) -#define IMUCTR(n) (0x0300 + ((n) * 16)) +#define IMUCTR(n) ((n) < 32 ? IMUCTR0(n) : IMUCTR32(n)) +#define IMUCTR0(n) (0x0300 + ((n) * 16)) +#define IMUCTR32(n) (0x0600 + (((n) - 32) * 16)) #define IMUCTR_FIXADDEN (1 << 31) #define IMUCTR_FIXADD_MASK (0xff << 16) #define IMUCTR_FIXADD_SHIFT 16 @@ -209,7 +211,9 @@ static struct ipmmu_vmsa_iommu_priv *to_ #define IMUCTR_FLUSH (1 << 1) #define IMUCTR_MMUEN (1 << 0) -#define IMUASID(n) (0x0308 + ((n) * 16)) +#define IMUASID(n) ((n) < 32 ? IMUASID0(n) : IMUASID32(n)) +#define IMUASID0(n) (0x0308 + ((n) * 16)) +#define IMUASID32(n) (0x0608 + (((n) - 32) * 16)) #define IMUASID_ASID8_MASK (0xff << 8) #define IMUASID_ASID8_SHIFT 8 #define IMUASID_ASID0_MASK (0xff << 0) @@ -1066,7 +1070,7 @@ static int ipmmu_probe(struct platform_d } mmu->dev = &pdev->dev; - mmu->num_utlbs = 32; + mmu->num_utlbs = 48; spin_lock_init(&mmu->lock); bitmap_zero(mmu->ctx, IPMMU_CTX_MAX); mmu->features = of_device_get_match_data(&pdev->dev);