From nobody Sat Sep 26 07:14:45 2026 Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11011057.outbound.protection.outlook.com [52.101.57.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A977E4A3843; Thu, 3 Sep 2026 18:26:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.57.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788459993; cv=fail; b=Ih+nl/EK0TKYZVlmxOEySMOmgFweklpfPlm/po+GKieDDrB2sXxjhkoq/R82RNOWz53lV6hnZfZLaNNAWUKXfqQyYRpPiVEGfyUkmziFbR6oF3JEA1vlVvA3mA1VTn1dzq8MVto8QNF0feG1MMvUDpZ75q+z+NWK+96ad25K3i0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788459993; c=relaxed/simple; bh=QTsu8+iGgTlagSrNOtBJWQ64kUXRoIzzcHuf/PfjfFk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Y+/aD8RV2OUqdMRzGI4Id2X0vzw7zXxuYRpVU78O11KChJ4fdwULsmuAoPuAQlHjunmEzmP5SZMpZDu/xloui+KIiNyBJfqWNsp1rSbdrAw/vALR6nxzYvBP+Ii64J2k08eUAZOD6z18LdWEOXUls2Nv4Tg3tESkGDM0NdNzkkY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=D0uz5vLk; arc=fail smtp.client-ip=52.101.57.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="D0uz5vLk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sKJc9SaamDv6V4y0AEEiUENDyjiDsJT7+l5D4AkPiG7f0mL+M/l4YyBxrJ1UCVAeVZkGx0PBhldjYCH8W7o9Or4DX5RyW1CtoXrHzA/9zQzYCTEeoYlSh3CGraC3p7DIUmQ80V8Crtd51+xMLoIPTSgwMfsin9WJAPB21CXfQobjlEbH/pImpMHfQY4RyP3rW9dZFseaaeO2tHlFT4sCLqqUmH6zaEyp/YaJ9uN1B0Eu2xGJSRmky8dNCnlhDSFS9TTwdIfWGEQRF4WWsCNhG2qcikDJq4DwEuN9mJGGkURrTAi4g9095+7DMtUWA+C1GAQnme5uhS5GD3xjYbo1rQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6ijudhZ6ROxKKS41NnvMlHw7x7RmZab4WPWNY0Drnq4=; b=GfDezRKj3/Ycxy9VZs9Dnn++2Oqp0lGhvpKi7XZgiWsNR3FTOr0wkuscYve9GJkIar7XSLEkJHHlnu5lr1l2+SVpXtohm3JwRm77OmV1E8H2yfc9xhm2EO9+IVEtGJk60NIf1Vxietc6teMFuuG0bao82aZmMMdsH/JIBUjnjuQcLueMzC1DF596qdlTr///OfciLFy1UoEISV3ovKMUqMk3lj1bzmwDfAqhR1X+Vxc+H7CUJ1oTX4pbCsOLOK8cRyh/veIOykckcI7sEMLLCKUDqUS5oO2YXEbDHooiIrRhVD25s3bnKEVKqWk4hCBQK5v3uFt2NiED630Mg6nfdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ijudhZ6ROxKKS41NnvMlHw7x7RmZab4WPWNY0Drnq4=; b=D0uz5vLkOFL8lwQqrD6MBu6++pyMKRn5hcH+Jbi2jc6pms+sWfPv9obOXR0bmtp3wfA3wUqRGAHruUPlrrFP9DwNsrHtyAY0Zy3Dt7FGMMsEE1P8Uz66XQ/elN1Q3IhR0yfSl6U8r6sWdmYQKC0N1sC0c3PwHEDMOcNt9MRaUwumxOk3HOTBvT/+XAmZ49rgaLQkZlNMCnoM8WnNGrKHGowwWZ2quObvdfXDii2PKOXUDAvxucQYO5DWe7IXXQOoJwQXM7BG08tE75BqmhNuhHBYI4uMYIvcWV9KilQXguWvJYvZRY0trR5TVAoSxAMVmG4Equpe41vv+/abmQiKTw== Received: from PH7P220CA0162.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::31) by CH3PR12MB7715.namprd12.prod.outlook.com (2603:10b6:610:151::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Thu, 3 Sep 2026 18:26:20 +0000 Received: from SA2PEPF00003AEA.namprd02.prod.outlook.com (2603:10b6:510:33b:cafe::82) by PH7P220CA0162.outlook.office365.com (2603:10b6:510:33b::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.12 via Frontend Transport; Thu, 3 Sep 2026 18:26:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003AEA.mail.protection.outlook.com (10.167.248.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Thu, 3 Sep 2026 18:26:18 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:54 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:53 -0700 Received: from build-ketanp-noble-20260630.internal (10.127.8.10) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.2562.46 via Frontend Transport; Thu, 3 Sep 2026 11:25:53 -0700 From: Ketan Patil To: , , CC: , , Ketan Patil Subject: [PATCH 1/3] memory: tegra: Use named defines for Tegra264 MC apertures Date: Thu, 3 Sep 2026 18:25:18 +0000 Message-ID: <20260903182520.950555-2-ketanp@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260903182520.950555-1-ketanp@nvidia.com> References: <20260903182520.950555-1-ketanp@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AEA:EE_|CH3PR12MB7715:EE_ X-MS-Office365-Filtering-Correlation-Id: 3717b80f-9b20-47b9-4568-08df09e8d90f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|10067099003|56012099006|18002099003|11063799006|22082099003; X-Microsoft-Antispam-Message-Info: XXg5fFfGCWorTvRdLVpGlTfovkn8CM1Gl5qGdJZbvaVMZYK/zBJ0tdfbMm1GUdtgKJo1DsHNIPG8Yw9U0vpLceetkvY2zfq36F6sEX4YQ2fd92CLQRLZIc50s2PIjSSXpjjLVZMtPFwqKIETxNqrf8VCvqaVXE4L4sngQi7sf1J8vaZ1IIxiViB0J3HiCynTCA4r1IMtEi5CTum+5oEFAXOExGrMiso9fP3Z/FJPjLQRb72l/jEhuAnKOp3qYaqegPtp6r6wyXXKj/BIe0sq1JaqLArpNV9osdu6gzEUqwLri7CAC/Q01YCjNYfGNHGnv+0Fo/+3aCvKJFcyPhqQo//w2LDd1uNfdGbIrW/p1INHYghiyK/v4a5gG1AplfFcTyrPFdpduhJIdwDWTqk9uOH8s+GIhIlfJbiG/GF03ZU89dtx1nR3gVO0dVhySZ5AZ+BB7yPE/KszBHYVFgpTi3zvQa0qkPM47wOvvCnUVeOdIZbc7PJxchiKU0UlYtGncTOg3LlbMqEjeoYPMZLrOR4clO4RtI+zlysPdVsxf9Feczp22ES8KI+l1v56Am29djZFogZOKbMr85gkGo3vd3ooaEXclZdO/lAShgOolInUiiD+UPAuS0I3CbmRanylrk8Ukl1HpWwdjUyHjQi7QE3gUaD3nMhhq6xhoJSWNxOIlzTXtWNjAsimau0/EMWP+XO4hhyymJ9ZGKilAKXXfA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(10067099003)(56012099006)(18002099003)(11063799006)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HJUjgic+7BXPZaJGvNnu9r5B/mQcLFPRcBeqKjvZaHHL7YBABhMo7sZxb+ygfpysYXP8jQdxVShlWkLS9HMDr5+NE3fFWadMzTzmq19LmWqV6L/9GeiZfp5IHrtWKd5r3yph1FNEQ5i4QANWNd5+6gtYvlCotRU5vwi4i92HvIIM9FVCJpg8xzC3eF62hrsUO6gXmxKbv2qyY9W+pXJ2NK9PCLIIST9FvhHprr9wSB6TzODnnQIhrF9TsFPR2zbsOzWNTLYid1YC8VZAetef1ekT9VZCB0mflItRnAdIam6M4isvkUvX1kjqhc4tuiLeFxQcxwinqLjoZRLrtHOAjjSxbAOR5NbQmORF1RCcrexQLAX1QIjqRUU2tt8Wpn1pkak3Pfp6nJBmVg46JLOy1rJw8h9lCCTJxd0nhuz/7SmEeaM39BI6oCAlfdVYwGrA X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 18:26:18.7248 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3717b80f-9b20-47b9-4568-08df09e8d90f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AEA.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7715 Content-Type: text/plain; charset="utf-8" The Tegra264 memory controller error interrupts are distributed across several HUB/HUBC apertures, each accessed like a broadcast channel using a fixed index. These indices were kept in a bare mc_hubc_aperture_number[] array, and handle_hub_irq() took a parameter of the same name that shadowed it. This driver is only applicable to Tegra264 devices and so this abstraction is not needed. Replace the array with named TEGRA264_MC_APERTURE_* defines to simplify the code. No functional change intended. Signed-off-by: Ketan Patil --- drivers/memory/tegra/tegra264.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/memory/tegra/tegra264.c b/drivers/memory/tegra/tegra26= 4.c index 790349295dcc..56e55269eed7 100644 --- a/drivers/memory/tegra/tegra264.c +++ b/drivers/memory/tegra/tegra264.c @@ -717,11 +717,15 @@ static const char *const tegra264_rt_error_names[16] = =3D { }; =20 /* - * MC instance aperture mapping for hubc registers + * On Tegra264 the memory controller error interrupts are distributed acro= ss + * several HUB/HUBC apertures. Each aperture is accessed like a broadcast + * channel through mc_ch_readl()/mc_ch_writel() using its fixed index. */ -static const int mc_hubc_aperture_number[5] =3D { - 7, 8, 9, 10, 11 -}; +#define TEGRA264_MC_APERTURE_DISP 7 +#define TEGRA264_MC_APERTURE_SYSTEM 8 +#define TEGRA264_MC_APERTURE_VISION 9 +#define TEGRA264_MC_APERTURE_UPHY 10 +#define TEGRA264_MC_APERTURE_TOP 11 =20 /* * tegra264_mc_icc_set() - Pass MC client info to the BPMP-FW @@ -1057,27 +1061,27 @@ static irqreturn_t handle_hub_irq(int irq, void *da= ta, int mc_hubc_aperture_numb =20 static irqreturn_t handle_disp_hub_irq(int irq, void *data) { - return handle_hub_irq(irq, data, mc_hubc_aperture_number[0]); + return handle_hub_irq(irq, data, TEGRA264_MC_APERTURE_DISP); } =20 static irqreturn_t handle_system_hub_irq(int irq, void *data) { - return handle_hub_irq(irq, data, mc_hubc_aperture_number[1]); + return handle_hub_irq(irq, data, TEGRA264_MC_APERTURE_SYSTEM); } =20 static irqreturn_t handle_vision_hub_irq(int irq, void *data) { - return handle_hub_irq(irq, data, mc_hubc_aperture_number[2]); + return handle_hub_irq(irq, data, TEGRA264_MC_APERTURE_VISION); } =20 static irqreturn_t handle_uphy_hub_irq(int irq, void *data) { - return handle_hub_irq(irq, data, mc_hubc_aperture_number[3]); + return handle_hub_irq(irq, data, TEGRA264_MC_APERTURE_UPHY); } =20 static irqreturn_t handle_top_hub_irq(int irq, void *data) { - return handle_hub_irq(irq, data, mc_hubc_aperture_number[4]); + return handle_hub_irq(irq, data, TEGRA264_MC_APERTURE_TOP); } =20 static irqreturn_t handle_generic_irq(struct tegra_mc *mc, unsigned long i= ntstat_reg) --=20 2.43.0 From nobody Sat Sep 26 07:14:45 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011005.outbound.protection.outlook.com [40.93.194.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC9B336C0CD; Thu, 3 Sep 2026 18:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788459989; cv=fail; b=FLWfZbB0bzdKBmtrTWu3q18rJFiSWyA4dsY8Pxf+IvzsjM0U2KrYCqxhA+Jt8RmhAqbXaqT0LNY+nDlgpJz2SgC1IXkRVo1cpCbNyRKuekiKCiKQtfvK0xj5IBBOZAsmZMFwt0mHTvIakqbmfEOdEGikMxNak3PRbIF7s6/JVQk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788459989; c=relaxed/simple; bh=hR0T9yyFW/GDgaTMPBcQiVPdbFMg8HlFzowdxLmTUhA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gx/OyFFZoetcNdHrrn/jTkKDy3fYH/jtckiR1TMqrW+1FrCSz31cyT6LJfahJgdm/ebyshsIcwOYGoKZY6dsjpqvr+nMgTQ/ZU2w7oY3Ogh2cNVFpobw7onQcOMtkUvV3M87y9uAfUC5sdSlpv/9QCCreOcYkgrECbaxI4yPh58= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=YEHy9Z5h; arc=fail smtp.client-ip=40.93.194.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="YEHy9Z5h" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cdDDumZW6IrcDdL2XCCb/OLaQ833+c14SwcGf52bal126RB6wv8S/fvuyk2XxHzeRpfzporZPFDBeUSsIGnpUGNVg6JJEVSGYOdb9Lhz2B1LTgVYYi/GQsL46zRg5oQST9+yNQe6WIEPd6LASpHYDH8+9Klk5ksIMB5u7qByvUmvQOsWYtwlW8E2O+SF6IHM8tb8FV6M4qXHgBLvIdbUQmtLaO2NPlE7eobeNnibZX+gdq/fLRTzULIYkVEowYTPKG+aQAREEeFObokA+I5DjaP6hNxXJ36Vz3QsKTfEFP9dtzT9d4V+J6RArNuq2rmyXE1omGejBMfZMeG7zjOVrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pTdgYVbn7EujNVYNvCzYcHOoVjqAaCMiZrxaSFsE7d0=; b=Vl27Bxq3X0RSwDmDDDvZf4lXGzXHuPn2J4FsIhpk5Atd90be743EWt+S885+o9lBG8QGDDDyn5okfjTigmWu0RXfEbNhBSC9AgnGohmnXD/nRKLjp6nOKLO1rzwEdBRx9ZdjRQT11zRyqg2uTNgIYVwDd9p9f07oo2PUanMPVWpionV8OC5Z9A/lwZwab1JtnLNAwZawHYqyiQ0jDyuYSfUd3PBZXElgVrb8dQkhXx9X8Msh7c3ezn5u6tWkBrzxigQaSz/zR9LwGnJhZM+t1G3htaqnhlDWyJPJp3Ltlt8ze3L/ZjQzqsO+2l5Bfwc34Sjyv+bxBkrGdbiQdQkpKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pTdgYVbn7EujNVYNvCzYcHOoVjqAaCMiZrxaSFsE7d0=; b=YEHy9Z5hEj8qFWXV9HZ7BOANJUArg+kxMPO+B8QnJ/7z3Unf7lNB83S//HQBjd53PTvMsfRfBlgFgdlkVJdzQv8eOjQjy8qaKAmQrlZABDeao+Tk9+rmG3gmThf7SYh9Y3av9rq+Vplx3j2M5Ok1MVJO7P+8QU2azcM4FYc/rz6uaWgwAFSnJWD457WJS7FqiFDny6eGKmn0z4pcYyt0xvzSa2JH4ETcuGVrDoNbibkuVLQWUn9remSllzd8bQgGoO7VHELRFEJE8OHiCrbk0W9Uy+XdHe/OtVTwPiTcc6pD8ON7okhILagGi5Bs+l38CJadml0yE9rbHQij0Ba74g== Received: from PH8PR05CA0013.namprd05.prod.outlook.com (2603:10b6:510:2cc::13) by DSVPR12MB999307.namprd12.prod.outlook.com (2603:10b6:8:41a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Thu, 3 Sep 2026 18:26:22 +0000 Received: from CY4PEPF0000EE3A.namprd03.prod.outlook.com (2603:10b6:510:2cc:cafe::8) by PH8PR05CA0013.outlook.office365.com (2603:10b6:510:2cc::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.4 via Frontend Transport; Thu, 3 Sep 2026 18:26:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CY4PEPF0000EE3A.mail.protection.outlook.com (10.167.242.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Thu, 3 Sep 2026 18:26:21 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:56 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:55 -0700 Received: from build-ketanp-noble-20260630.internal (10.127.8.10) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.2562.46 via Frontend Transport; Thu, 3 Sep 2026 11:25:55 -0700 From: Ketan Patil To: , , CC: , , Ketan Patil Subject: [PATCH 2/3] memory: tegra: Parameterise Tegra264 MCF slice bound Date: Thu, 3 Sep 2026 18:25:19 +0000 Message-ID: <20260903182520.950555-3-ketanp@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260903182520.950555-1-ketanp@nvidia.com> References: <20260903182520.950555-1-ketanp@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE3A:EE_|DSVPR12MB999307:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e22303e-3f28-4d0d-5403-08df09e8dae5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|10067099003|11063799006|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 38ri4h3gbeZOowEQZeSpE1RJEm+bLAim7+M0U3zHI8CGEALX2T8CShcy/XxqfOJ8jEXHtdL++GVW6x6CEAXnYa49DFgXQFBz4ZZ07i9lHlzM5OiOPHYXF5O+CwCtoPS1ZnsbmEI46I/0Io5Ni+edqp6MlzsjiOshdQUyFk6rVG5fE3T7Da88StF+nJPHyZ6aVB2u8w8CjJ4Tu/EbNEtHiLt2b//2glU2ytNoB/1cR1Hy9zjKVioe28u3TzpM+GxqnffLI+JASa+82r43SSL+mbcTZ7fwv0GBwku4zW5vKtgNbFb1S+Qh1lAUAgP4dVYFAVz0Im1azt66MHeg1Oq6EKj1VIOPt4xbgZbJpcWWJEBRyLpdbdOqtnamjjhbZwigQbECCi0Ux1FqK7w/y6UWlYe3F1RpALxA3aTboTSaEkvWLQwM9s6KZvZOjMTsCs8l+/kn7I5ZuZ018+XaOMUKs/JYwd7NS2ViG5uvbZg9XIAfXPkVqKb3e4CulbZEwaG83TSbfUu6uDIVEjUVqnGKumeTMsYEaNSPOEvA/mxBlsItujA41MieZwcmwS1LWWPyRlr0sLSR6fSZSMvMdK+w2TfeSkiMyEQpE6hpbC4rmHvr4oUslc/s+SZCjDtabM4jhn4TyZluKP1xx2uNr5IOLjHFSmbvwnL6YsrlJZLddiq/rB+Rx0b43OZnF/LUvZv8VpFHN8SFpGyvW0ruJ3Dsqg== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(10067099003)(11063799006)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: g8BT6u1hWZHGOtrr64kKzJzEv4MCKWUmw5IbMxEqOkIBYqfAc0U2p2GdOyqOKVgvHiyqbMJQ1JMDmh4jRykTEX7ygqtianbL1KUTfKSVs5ObHqO9Tlq+d68MvRCGrYNxZajzkxcYeZFqUjB/S0fsqKb+ou7NZKEl1W49w5US+WpYhALqXTLgbvmucODx2iAskhiEg0FEgkoz+1tG0WdotacKgFPeWTGXp4XztD0mMlSUCp2lPQibphM9yzzNHr3Rl4Sm2JMrpcsooHLQf7eeS3q6wtVd25ETO1N1c6YMRFAHvRQkKn3wz4oNMTQGZeKlvwhhrNoTrHoCvPj4Fzb3iCfUNAyoQa3fZHKnnvZaR7Nr7B0U9Ob1vnrErGLX+2cV/7JM+wKUAqiFM1KtutB57VdfMaL0aP0U//t2KHjEdDfFQDOeV7akduy5Yekdf3gh X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 18:26:21.8135 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e22303e-3f28-4d0d-5403-08df09e8dae5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE3A.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSVPR12MB999307 Content-Type: text/plain; charset="utf-8" Replace the hard-coded slice bound check in handle_mcf_irq() with a TEGRA264_MC_NUM_SLICES define, so the number of MCF slices is named rather than being an unexplained literal. Note that although the existing logic is correct, the actual number of MCF slices for Tegra264 is 5 and not 4. So define TEGRA264_MC_NUM_SLICES as 5 and update the logic accordingly. No functional change intended. Signed-off-by: Ketan Patil --- drivers/memory/tegra/tegra264.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/memory/tegra/tegra264.c b/drivers/memory/tegra/tegra26= 4.c index 56e55269eed7..b40275ae382e 100644 --- a/drivers/memory/tegra/tegra264.c +++ b/drivers/memory/tegra/tegra264.c @@ -727,6 +727,9 @@ static const char *const tegra264_rt_error_names[16] = =3D { #define TEGRA264_MC_APERTURE_UPHY 10 #define TEGRA264_MC_APERTURE_TOP 11 =20 +/* Tegra264 splits the MCF common interrupt status across five slices. */ +#define TEGRA264_MC_NUM_SLICES 5 + /* * tegra264_mc_icc_set() - Pass MC client info to the BPMP-FW * @src: ICC node for Memory Controller's (MC) Client @@ -941,7 +944,7 @@ static irqreturn_t handle_mcf_irq(int irq, void *data) =20 for_each_set_bit(slice, &common_intstat, 32) { /* Find out the slice number on which interrupt occurred */ - if (slice > 4) { + if (slice >=3D TEGRA264_MC_NUM_SLICES) { dev_err(mc->dev, "Slice index out of bounds: %u\n", slice); return IRQ_NONE; } --=20 2.43.0 From nobody Sat Sep 26 07:14:45 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010054.outbound.protection.outlook.com [52.101.61.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19AEF37E5EE; Thu, 3 Sep 2026 18:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788460003; cv=fail; b=mtZ+ZcAp60gDavxxpRY2t4F/8Mbz/Uq+h5OBYQRsos6vwQUEhHmSYjLdLEnsloo0Za1pLjGpZuqCoT/yR3EzitosP/lNzwgF7jv0MUKou6nPnlw4iu2F2uVwrEabJ43zfE5+QR05giF8jsc4v+Q4RM8gVTXYrv3KrMiSCq3m9Tg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788460003; c=relaxed/simple; bh=3tB+8k98zv/TyZHbXEvAmBU7E8Og9/r08Ns/f6y72Mg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SlYukdrSlhPV/h5fZNVyULgxCm41wdb0sNWa6iNj2JKFr8+m8G3R8JvBWUNNhpJRG/g9ciiKWRXzPIifL1yGgqjtSYt07q9haEh8zCRUXfQoXGP0cySNVnow3ZmdmbzWiXYpl1OR9qd97rzbx3rZ6L3YcvKBdr65zhr+J6RSWcY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=n05y6ghD; arc=fail smtp.client-ip=52.101.61.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="n05y6ghD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W1MoyYYfJmwmKvsfxHoUnwCwvrdJyBW+F/9cn6yhTNn9QWv65rbNkmoL8TjCBK+6QTd18mV6GSAnJB0ZdQi/1x8fMco+iX2xQ2Jyj7jG9KY+gjFKO3YkcUAD57iyUGdKCe8sbWxHHL+a7LVnp1LCA4E0bwcp4E4FZRTbFDqgBAwPi3riyHie3PxjLCPBFc7PYN5tgeGxvq5k4QOzIqE8UBIAybPgJfyrjOsBYJy/IQemwEfe16TopetTekYmZStAIjYcSkYIEK3HViP8r+ZhNU0m8pRKbeQI786bXXwQBD6UrFkNYrQrz6CPwoNA4lu7bsrJUrtrtQwJWuU+qmxvYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=356GEk+De4phEr3CgD0mAJphgN4dHzASBLJGhNv2SLc=; b=KGDU+hp/hzyh9/Mwrcf43vLffwz7hwb0MMzz3Mrl4KM2oSey6lCxnqo7SmCiB+r3JciebAz7aMxjohKT6DDLvT1FWWGhTvCXXr4VGWWAdj9G7Eu0m49jMy1MpDyl3Dc1CzFrRfEcS0AYsUVmFAsmmhVxPe6JuZRT5HfpSaigvvYTORGcDQaL3wB3EgZ7fxOlx6sb4L8U1Nm+h8HLmzBDiFv3SgmbCPyUqDyKUvIbDbYppDC3jUvAoJ9/UzPzioNAgs/wiZ8yQ5iMqkGx4nE4KlbXM2QAzDAct8JLseD7L+sDJU9he+bZ6BxKrQ30dZnBzWKr2XlqYhhwv5xa+VSZUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=356GEk+De4phEr3CgD0mAJphgN4dHzASBLJGhNv2SLc=; b=n05y6ghDHt8QCzJKeCBK4uX2ezVsPOvc339Al2Eu9eDBlTPhtjFBS8a59Z1G69DGT0vvvPLFQ2+5isBzsuCown7mEdOxLZDDupQlZClA23rrNpPfeyH+d88FcZ7j7b4JWkgsBw2QaDCv3/NPAosT5vI+Cibx0R4AMlVtt3DmDv67iVYUF6DQE7P13wA3wRkqNWhr+/0jorG47a6zKSx0UtYX52o5O7LjziKW9CLFkFS9b+t7I4EVOMVDe5ES7WiQdhrQePXZ/a73gvp54Vt7BBlXJJhw3/0oN76by+yyORyIHeFiupfpSoPUUEiML4YTrFA8meDsh+VA9fJh8pM8UA== Received: from PH7P220CA0151.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::11) by CH3PR12MB9313.namprd12.prod.outlook.com (2603:10b6:610:1ca::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Thu, 3 Sep 2026 18:26:25 +0000 Received: from SA2PEPF00003AEA.namprd02.prod.outlook.com (2603:10b6:510:33b:cafe::2f) by PH7P220CA0151.outlook.office365.com (2603:10b6:510:33b::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.12 via Frontend Transport; Thu, 3 Sep 2026 18:26:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003AEA.mail.protection.outlook.com (10.167.248.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Thu, 3 Sep 2026 18:26:25 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:58 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 3 Sep 2026 11:25:57 -0700 Received: from build-ketanp-noble-20260630.internal (10.127.8.10) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.2562.46 via Frontend Transport; Thu, 3 Sep 2026 11:25:57 -0700 From: Ketan Patil To: , , CC: , , Ketan Patil Subject: [PATCH 3/3] memory: tegra: Refactor Tegra264 mc-err code Date: Thu, 3 Sep 2026 18:25:20 +0000 Message-ID: <20260903182520.950555-4-ketanp@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260903182520.950555-1-ketanp@nvidia.com> References: <20260903182520.950555-1-ketanp@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AEA:EE_|CH3PR12MB9313:EE_ X-MS-Office365-Filtering-Correlation-Id: a950f8d7-47e1-4664-a406-08df09e8dd19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|23010399003|36860700016|56012099006|3023799007|22082099003|18002099003|11063799006|10067099003; X-Microsoft-Antispam-Message-Info: Nx1FrZUySdqmkOmrShxvtg0UcQHcyoETfV2TFH11PFyAmKorfTaaLSXpTDX3JpbtjVOXm0uOBsGznVC+UKqzHSZHfks9aqA7SEzOqtGxt1ItMJvCkaVVchhcYhBX9sCW15cKh/poZHwkzmbTI7mqeKBwknZBUGbDKrjJnjhLuRMshkVKl34MCzO6dsZb5TPX5LIQk4ESbuH6BVV02R0InQcRvqMVi039t+ICQaVh8Ekmx+Wn00cbSp//0jTqbvtXiO6rzkl+BzBl/2zRxYSvlUCCSL2FcPuxW2SNkFELQh514XoVyserTkg0XzSbz1rg3N2dFl1J3p3ievyCpHZPfK183gwIat14cUwJpzG5mkZm4Z/GVuARZ3Z1xHKELaIHdPviPEK32KjfV/c2XcYURBQ5kq7YG7grhH2giAQc3v43xq8EEmFTAnluZjNeFX/i5UNrwyqGPIQXA6jmvbxosVXzSDS19hgMKw0avQQNqf6yj3UkKHcCaWrvM/hfrxbMy9sdjGNt7tZz2a9QiEvGQd5+4FuRjFmArQfq+rsdIbsJVFGRLKYmuzCmRi6+Wbm9MgcxZsRcmxU/kUZO4xJ4Yf3+1JUOl2duS68bxqmHvG9JivCwsS8B8hy4OX7fsgciJk3uzhJYvzdiylntw7o9/9PaGqxgKdRW7KZR6HKoGHJUAFTA/F1WiZO68sFrmnS5mA4+eZxAxiztruaDYjLGWg== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(23010399003)(36860700016)(56012099006)(3023799007)(22082099003)(18002099003)(11063799006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aXA/AKKL8RGut7VdJhaolNF1aQkwxte3edVmBx45n85qfcAD9KGRucKZ2yItKkHVdAlapZEGk6FyHGAZIif+J/+2ehWsxt3v0XgB1ZQJGcR9l+Rqx6DoRcwIh35bBKYH7l7ZzvsaLVP3AOkr9TSYQD6aAFu7WR3OVCM2ESkzv/iklmE4+dkrzpm/p6Lc01UdikwjG7ePXEuXcxSeTdw9g2nAV9oXsYtiqruC1nByyzQE8KBM9kecTwUE/UjERjhL5nnlxcwKvyl89pJxjbhDbWuhqCzDicq+Kq4vQwVGfu9tAMFes2pu3fXlYFPNIFJEGwses+x1B4/OxCEqsRIelKnvruxgWxDOsMLxjXEOd7CEj/TXR6VZ2N/UwVb4Tk3ZDjGDoS2Rmp4Uwa3SYfKKqPk2K1kcDbLsqlLjkOPANoCmznDm7xFpXb8sUahos8E8 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 18:26:25.5001 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a950f8d7-47e1-4664-a406-08df09e8dd19 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AEA.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9313 Content-Type: text/plain; charset="utf-8" The MC and HUB error-logging paths on Tegra264 used large switch statements that interleaved register offsets, bit positions and decoding parameters for each error type, which made them hard to read and review. Turn the error logging into a more structured implementation: - Describe each MCF error type with a tegra264_mc_fault descriptor filled in by a small per-type get_offsets() callback, and move the register access, client lookup and reporting into a common tegra264_mc_report_fault() helper. - Describe each HUB error type with a static tegra264_hub_error_handler table, since the HUB register offsets are fixed on Tegra264. No functional change intended. Signed-off-by: Ketan Patil --- drivers/memory/tegra/tegra264.c | 349 ++++++++++++++++++++------------ 1 file changed, 220 insertions(+), 129 deletions(-) diff --git a/drivers/memory/tegra/tegra264.c b/drivers/memory/tegra/tegra26= 4.c index b40275ae382e..57e6395861ba 100644 --- a/drivers/memory/tegra/tegra264.c +++ b/drivers/memory/tegra/tegra264.c @@ -15,6 +15,47 @@ #include "mc.h" #include "tegra264-bwmgr.h" =20 +/* + * Description of a single MCF error type: where to read the status and the + * faulting address, how to extract the high address bits, which bits enco= de + * the access direction and security state and the optional error-type sub= -code. + */ +struct tegra264_mc_fault { + const char *const *type_names; + u32 addr_hi_mask; + u32 addr_hi_reg; + u32 addr_hi_shift; + u32 addr_reg; + u32 rw_bit; + u32 sec_bit; + u32 status1_reg; + u32 status_reg; + u32 type_mask; + u32 type_shift; +}; + +/* + * Maps an MCF interrupt to a callback that fills in the register offsets = and + * decoding parameters for that error type. The register offsets live in t= he + * per-SoC tegra_mc_regs, so they are collected at runtime rather than bei= ng + * stored in a static table. + */ +struct tegra264_mc_error_handler { + u32 mask; + void (*get_offsets)(struct tegra_mc *mc, struct tegra264_mc_fault *fault); +}; + +/* + * Description of a single HUB error type. addr_reg is zero for error types + * that don't latch a fault address. + */ +struct tegra264_hub_error_handler { + u32 addr_hi_reg; + u32 addr_reg; + u32 mask; + u32 status_reg; +}; + /* * MC Client entries are sorted in the increasing order of the * override and security register offsets. @@ -814,115 +855,149 @@ static int tegra264_mc_icc_get_init_bw(struct icc_n= ode *node, u32 *avg, u32 *pea return 0; } =20 -static void mcf_log_fault(struct tegra_mc *mc, u32 channel, unsigned long = mcf_ch_intstatus) +static void tegra264_mc_fault_emem(struct tegra_mc *mc, struct tegra264_mc= _fault *fault) { - unsigned int bit; + fault->status_reg =3D mc->soc->regs->err_status; + fault->addr_reg =3D mc->soc->regs->err_add; + fault->addr_hi_reg =3D mc->soc->regs->err_add_hi; + fault->type_mask =3D mc->soc->mc_err_status_type_mask; + fault->type_shift =3D MC_ERR_STATUS_TYPE_SHIFT; + fault->type_names =3D tegra264_mc_error_names; +} =20 - for_each_set_bit(bit, &mcf_ch_intstatus, 32) { - const char *client =3D "unknown", *desc =3D "NA"; - u32 status_reg, status1_reg =3D 0, addr_reg, addr_hi_reg =3D 0, err_type= _mask =3D 0; - u32 value, client_id, i, addr_hi_shift =3D 0, addr_hi_mask =3D 0, status= 1; - u32 mc_rw_bit =3D MC_ERR_STATUS_RW, mc_sec_bit =3D MC_ERR_STATUS_SECURIT= Y; - phys_addr_t addr =3D 0; - u8 type; - - switch (BIT(bit)) { - case MC_INT_DECERR_EMEM: - case MC_INT_SECURITY_VIOLATION: - status_reg =3D mc->soc->regs->err_status; - addr_reg =3D mc->soc->regs->err_add; - addr_hi_reg =3D mc->soc->regs->err_add_hi; - err_type_mask =3D mc->soc->mc_err_status_type_mask; - break; +static void tegra264_mc_fault_vpr(struct tegra_mc *mc, struct tegra264_mc_= fault *fault) +{ + fault->status_reg =3D mc->soc->regs->err_vpr_status; + fault->addr_reg =3D mc->soc->regs->err_vpr_add; + fault->addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; + fault->addr_hi_mask =3D mc->soc->mc_addr_hi_mask; +} =20 - case MC_INT_DECERR_VPR: - status_reg =3D mc->soc->regs->err_vpr_status; - addr_reg =3D mc->soc->regs->err_vpr_add; - addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; - addr_hi_mask =3D mc->soc->mc_addr_hi_mask; - break; +static void tegra264_mc_fault_sec(struct tegra_mc *mc, struct tegra264_mc_= fault *fault) +{ + fault->status_reg =3D mc->soc->regs->err_sec_status; + fault->addr_reg =3D mc->soc->regs->err_sec_add; + fault->addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; + fault->addr_hi_mask =3D mc->soc->mc_addr_hi_mask; +} =20 - case MC_INT_SECERR_SEC: - status_reg =3D mc->soc->regs->err_sec_status; - addr_reg =3D mc->soc->regs->err_sec_add; - addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; - addr_hi_mask =3D mc->soc->mc_addr_hi_mask; - break; +static void tegra264_mc_fault_mts(struct tegra_mc *mc, struct tegra264_mc_= fault *fault) +{ + fault->status_reg =3D mc->soc->regs->err_mts_status; + fault->addr_reg =3D mc->soc->regs->err_mts_add; + fault->addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; + fault->addr_hi_mask =3D mc->soc->mc_addr_hi_mask; +} =20 - case MC_INT_DECERR_MTS: - status_reg =3D mc->soc->regs->err_mts_status; - addr_reg =3D mc->soc->regs->err_mts_add; - addr_hi_shift =3D MC_ERR_STATUS_ADR_HI_SHIFT; - addr_hi_mask =3D mc->soc->mc_addr_hi_mask; - break; +static void tegra264_mc_fault_gsc(struct tegra_mc *mc, struct tegra264_mc_= fault *fault) +{ + fault->status_reg =3D mc->soc->regs->err_gen_co_status; + fault->status1_reg =3D MC_ERR_GENERALIZED_CARVEOUT_STATUS_1_0; + fault->addr_reg =3D mc->soc->regs->err_gen_co_add; + fault->addr_hi_shift =3D MC_ERR_STATUS_GSC_ADR_HI_SHIFT; + fault->addr_hi_mask =3D MC_ERR_STATUS_GSC_ADR_HI_MASK; +} =20 - case MC_INT_DECERR_GENERALIZED_CARVEOUT: - status_reg =3D mc->soc->regs->err_gen_co_status; - status1_reg =3D MC_ERR_GENERALIZED_CARVEOUT_STATUS_1_0; - addr_reg =3D mc->soc->regs->err_gen_co_add; - addr_hi_shift =3D MC_ERR_STATUS_GSC_ADR_HI_SHIFT; - addr_hi_mask =3D MC_ERR_STATUS_GSC_ADR_HI_MASK; - break; +static void tegra264_mc_fault_route(struct tegra_mc *mc, struct tegra264_m= c_fault *fault) +{ + fault->status_reg =3D mc->soc->regs->err_route_status; + fault->addr_reg =3D mc->soc->regs->err_route_add; + fault->addr_hi_shift =3D MC_ERR_STATUS_RT_ADR_HI_SHIFT; + fault->addr_hi_mask =3D mc->soc->mc_addr_hi_mask; + fault->rw_bit =3D MC_ERR_ROUTE_SANITY_RW; + fault->sec_bit =3D MC_ERR_ROUTE_SANITY_SEC; + fault->type_mask =3D MC_ERR_STATUS_RT_TYPE_MASK; + fault->type_shift =3D MC_ERR_STATUS_RT_TYPE_SHIFT; + fault->type_names =3D tegra264_rt_error_names; +} =20 - case MC_INT_DECERR_ROUTE_SANITY: - case MC_INT_DECERR_ROUTE_SANITY_GIC_MSI: - status_reg =3D mc->soc->regs->err_route_status; - addr_reg =3D mc->soc->regs->err_route_add; - addr_hi_shift =3D MC_ERR_STATUS_RT_ADR_HI_SHIFT; - addr_hi_mask =3D mc->soc->mc_addr_hi_mask; - mc_sec_bit =3D MC_ERR_ROUTE_SANITY_SEC; - mc_rw_bit =3D MC_ERR_ROUTE_SANITY_RW; - err_type_mask =3D MC_ERR_STATUS_RT_TYPE_MASK; - break; +static const struct tegra264_mc_error_handler tegra264_mc_error_handlers[]= =3D { + { MC_INT_DECERR_EMEM, tegra264_mc_fault_emem }, + { MC_INT_SECURITY_VIOLATION, tegra264_mc_fault_emem }, + { MC_INT_DECERR_VPR, tegra264_mc_fault_vpr }, + { MC_INT_SECERR_SEC, tegra264_mc_fault_sec }, + { MC_INT_DECERR_MTS, tegra264_mc_fault_mts }, + { MC_INT_DECERR_GENERALIZED_CARVEOUT, tegra264_mc_fault_gsc }, + { MC_INT_DECERR_ROUTE_SANITY, tegra264_mc_fault_route }, + { MC_INT_DECERR_ROUTE_SANITY_GIC_MSI, tegra264_mc_fault_route }, +}; =20 - default: - dev_err_ratelimited(mc->dev, "Incorrect MC interrupt mask\n"); - return; - } +static void tegra264_mc_report_fault(struct tegra_mc *mc, u32 channel, + unsigned int interrupt, + const struct tegra264_mc_fault *fault) +{ + const char *client =3D "unknown", *desc =3D "NA"; + u32 value, client_id, status1 =3D 0; + phys_addr_t addr =3D 0; + unsigned int i; + u8 type; + + value =3D mc_ch_readl(mc, channel, fault->status_reg); + + if (fault->addr_hi_reg) { + addr =3D mc_ch_readl(mc, channel, fault->addr_hi_reg); + } else if (fault->status1_reg) { + status1 =3D mc_ch_readl(mc, channel, fault->status1_reg); + addr =3D (status1 >> fault->addr_hi_shift) & fault->addr_hi_mask; + } else { + addr =3D (value >> fault->addr_hi_shift) & fault->addr_hi_mask; + } =20 - value =3D mc_ch_readl(mc, channel, status_reg); - if (addr_hi_reg) { - addr =3D mc_ch_readl(mc, channel, addr_hi_reg); - } else { - if (!status1_reg) { - addr =3D ((value >> addr_hi_shift) & addr_hi_mask); - } else { - status1 =3D mc_ch_readl(mc, channel, status1_reg); - addr =3D ((status1 >> addr_hi_shift) & addr_hi_mask); - } + addr <<=3D 32; + addr |=3D mc_ch_readl(mc, channel, fault->addr_reg); + + client_id =3D value & mc->soc->client_id_mask; + for (i =3D 0; i < mc->soc->num_clients; i++) { + if (mc->soc->clients[i].id =3D=3D client_id) { + client =3D mc->soc->clients[i].name; + break; } + } =20 - addr <<=3D 32; - addr |=3D mc_ch_readl(mc, channel, addr_reg); + if (fault->type_names) { + type =3D (value & fault->type_mask) >> fault->type_shift; + desc =3D fault->type_names[type]; + } =20 - client_id =3D value & mc->soc->client_id_mask; - for (i =3D 0; i < mc->soc->num_clients; i++) { - if (mc->soc->clients[i].id =3D=3D client_id) { - client =3D mc->soc->clients[i].name; + dev_err_ratelimited(mc->dev, "%s: %s %s @%pa: %s (%s)\n", + client, value & fault->sec_bit ? "secure" : "non-secure", + value & fault->rw_bit ? "write" : "read", &addr, + tegra_mc_status_names[interrupt] ?: "unknown", desc); + + if (fault->status1_reg) + dev_err_ratelimited(mc->dev, "gsc_apr_id=3D%u gsc_co_apr_id=3D%u\n", + (status1 >> ERR_GENERALIZED_APERTURE_ID_SHIFT) & + ERR_GENERALIZED_APERTURE_ID_MASK, + (status1 >> ERR_GENERALIZED_CARVEOUT_APERTURE_ID_SHIFT) & + ERR_GENERALIZED_CARVEOUT_APERTURE_ID_MASK); +} + +static void mcf_log_fault(struct tegra_mc *mc, u32 channel, unsigned long = mcf_ch_intstatus) +{ + unsigned int interrupt; + + for_each_set_bit(interrupt, &mcf_ch_intstatus, 32) { + const struct tegra264_mc_error_handler *handler =3D NULL; + struct tegra264_mc_fault fault =3D { + .rw_bit =3D MC_ERR_STATUS_RW, + .sec_bit =3D MC_ERR_STATUS_SECURITY, + }; + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(tegra264_mc_error_handlers); i++) { + if (tegra264_mc_error_handlers[i].mask =3D=3D BIT(interrupt)) { + handler =3D &tegra264_mc_error_handlers[i]; break; } } =20 - if (err_type_mask =3D=3D MC_ERR_STATUS_RT_TYPE_MASK) { - type =3D (value & err_type_mask) >> - MC_ERR_STATUS_RT_TYPE_SHIFT; - desc =3D tegra264_rt_error_names[type]; - } else if (err_type_mask) { - type =3D (value & err_type_mask) >> - MC_ERR_STATUS_TYPE_SHIFT; - desc =3D tegra264_mc_error_names[type]; + if (!handler) { + dev_err_ratelimited(mc->dev, "Incorrect MC interrupt mask\n"); + return; } =20 - dev_err_ratelimited(mc->dev, "%s: %s %s @%pa: %s (%s)\n", - client, value & mc_sec_bit ? "secure" : "non-secure", - value & mc_rw_bit ? "write" : "read", &addr, - tegra_mc_status_names[bit] ?: "unknown", desc); - if (status1_reg) - dev_err_ratelimited(mc->dev, "gsc_apr_id=3D%u gsc_co_apr_id=3D%u\n", - ((status1 >> ERR_GENERALIZED_APERTURE_ID_SHIFT) - & ERR_GENERALIZED_APERTURE_ID_MASK), - ((status1 >> ERR_GENERALIZED_CARVEOUT_APERTURE_ID_SHIFT) - & ERR_GENERALIZED_CARVEOUT_APERTURE_ID_MASK)); + handler->get_offsets(mc, &fault); + tegra264_mc_report_fault(mc, channel, interrupt, &fault); } =20 /* clear interrupts */ @@ -957,53 +1032,69 @@ static irqreturn_t handle_mcf_irq(int irq, void *dat= a) return IRQ_HANDLED; } =20 +static const struct tegra264_hub_error_handler tegra264_hub_error_handlers= [] =3D { + { + .mask =3D MSS_HUB_COALESCER_ERR_INTMASK, + .status_reg =3D MSS_HUB_COALESCE_ERR_STATUS_0, + .addr_reg =3D MSS_HUB_COALESCE_ERR_ADR_0, + .addr_hi_reg =3D MSS_HUB_COALESCE_ERR_ADR_HI_0, + }, + { + .mask =3D MSS_HUB_SMMU_BYPASS_ALLOW_ERR_INTMASK, + .status_reg =3D MSS_HUB_SMMU_BYPASS_ALLOW_ERR_STATUS_0, + }, + { + .mask =3D MSS_HUB_ILLEGAL_TBUGRP_ID_INTMASK, + .status_reg =3D MSS_HUB_ILLEGAL_TBUGRP_ID_ERR_STATUS_0, + }, + { + .mask =3D MSS_HUB_MSI_ERR_INTMASK, + .status_reg =3D MSS_HUB_MSI_ERR_STATUS_0, + }, + { + .mask =3D MSS_HUB_POISON_RSP_INTMASK, + .status_reg =3D MSS_HUB_POISON_RSP_STATUS_0, + }, + { + .mask =3D MSS_HUB_RESTRICTED_ACCESS_ERR_INTMASK, + .status_reg =3D MSS_HUB_RESTRICTED_ACCESS_ERR_STATUS_0, + }, + { + .mask =3D MSS_HUB_RESERVED_PA_ERR_INTMASK, + .status_reg =3D MSS_HUB_RESERVED_PA_ERR_STATUS_0, + }, +}; + static void hub_log_fault(struct tegra_mc *mc, u32 hub, unsigned long hub_= intstat) { - unsigned int bit; + unsigned int interrupt; =20 - for_each_set_bit(bit, &hub_intstat, 32) { + for_each_set_bit(interrupt, &hub_intstat, 32) { + const struct tegra264_hub_error_handler *handler =3D NULL; const char *client =3D "unknown"; - u32 client_id, status_reg, value, i; + u32 client_id, value; phys_addr_t addr =3D 0; + unsigned int i; =20 - switch (BIT(bit)) { - case MSS_HUB_COALESCER_ERR_INTMASK: - status_reg =3D MSS_HUB_COALESCE_ERR_STATUS_0; - addr =3D mc_ch_readl(mc, hub, MSS_HUB_COALESCE_ERR_ADR_HI_0); - addr <<=3D 32; - addr |=3D mc_ch_readl(mc, hub, MSS_HUB_COALESCE_ERR_ADR_0); - break; - - case MSS_HUB_SMMU_BYPASS_ALLOW_ERR_INTMASK: - status_reg =3D MSS_HUB_SMMU_BYPASS_ALLOW_ERR_STATUS_0; - break; - - case MSS_HUB_ILLEGAL_TBUGRP_ID_INTMASK: - status_reg =3D MSS_HUB_ILLEGAL_TBUGRP_ID_ERR_STATUS_0; - break; - - case MSS_HUB_MSI_ERR_INTMASK: - status_reg =3D MSS_HUB_MSI_ERR_STATUS_0; - break; - - case MSS_HUB_POISON_RSP_INTMASK: - status_reg =3D MSS_HUB_POISON_RSP_STATUS_0; - break; - - case MSS_HUB_RESTRICTED_ACCESS_ERR_INTMASK: - status_reg =3D MSS_HUB_RESTRICTED_ACCESS_ERR_STATUS_0; - break; - - case MSS_HUB_RESERVED_PA_ERR_INTMASK: - status_reg =3D MSS_HUB_RESERVED_PA_ERR_STATUS_0; - break; + for (i =3D 0; i < ARRAY_SIZE(tegra264_hub_error_handlers); i++) { + if (tegra264_hub_error_handlers[i].mask =3D=3D BIT(interrupt)) { + handler =3D &tegra264_hub_error_handlers[i]; + break; + } + } =20 - default: + if (!handler) { dev_err_ratelimited(mc->dev, "Incorrect HUB interrupt mask\n"); return; } =20 - value =3D mc_ch_readl(mc, hub, status_reg); + if (handler->addr_reg) { + addr =3D mc_ch_readl(mc, hub, handler->addr_hi_reg); + addr <<=3D 32; + addr |=3D mc_ch_readl(mc, hub, handler->addr_reg); + } + + value =3D mc_ch_readl(mc, hub, handler->status_reg); =20 client_id =3D value & mc->soc->client_id_mask; for (i =3D 0; i < mc->soc->num_clients; i++) { @@ -1014,8 +1105,8 @@ static void hub_log_fault(struct tegra_mc *mc, u32 hu= b, unsigned long hub_intsta } =20 dev_err_ratelimited(mc->dev, "%s: @%pa: %s status: 0x%x\n", - client, &addr, tegra264_hub_error_names[bit] ?: "unknown", - value); + client, &addr, + tegra264_hub_error_names[interrupt] ?: "unknown", value); } =20 /* clear interrupts */ --=20 2.43.0