From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FAKE_REPLY_C,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB57CC12002 for ; Mon, 19 Jul 2021 06:13:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B3F406109E for ; Mon, 19 Jul 2021 06:13:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233618AbhGSGQG (ORCPT ); Mon, 19 Jul 2021 02:16:06 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:18198 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229916AbhGSGQF (ORCPT ); Mon, 19 Jul 2021 02:16:05 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16J66Rft003880; Mon, 19 Jul 2021 06:12:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=mS9QmhGI64kUG7BBDU2h2q/k8KaUXzwoxa0V/97NFtKtuQK2OVhTc8Lni7FzvQiiyF+o qJD1QZFOlp0yMrzlR1tCVYmTBh1eb/UB/m/MQK4bizU4SNnFIDrAEiOOiEVEwv+gTkPE ddw+FDa3A4Q619Lzi5+sIeE/DC6nYQt+oExxWiEK/3ves5Iw7qNQ9Q5leOZnd++Pbg8m o3iD/OP/vHJULKeO5TT4oHjgmMWM2XwZXIESrA2aaM8mBtEniI60m+vRzh7efvt7zhbE 1E0QZcq1v2R0SuMhvYZCFxY1qwLrF9CGRZ+8J4P9a0hFxw3kf0oPxsZp+A2/BSptqTb5 ug== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=ij8wXynx4H0YRhB2Fw50iALPej3n4SqQkKf/8qcRNffLLRHTK77c8+3jhpNWXnW3xdAJ pyxi7aWP1b7UeiwHfeAMBOpJ3rpgtlj3//jQigwpg2UhT3ClrR4FI9JXEmjtmYo3IVy8 QQ6/aqYC4nFMW5OOXVyAkZNtxqy3K/4gVeLjXBCoKPDcpnJ68MGmL8gzoohieB67slAq ze06vzAgij1oE+dV4RQeLj7lkMPqSnjKdlR1GTQarPDQj5aAgqozG0nkILoGNDjXzwVs I6v4rCKfGku5AskWvFDTIaaxZoygI7yrc1OpaiCj6vyXwq+kwvKgFk+ngvjeMZlPPBTG 4w== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 39uptrt54g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 06:12:42 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16J66ASq057911; Mon, 19 Jul 2021 06:12:41 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by userp3020.oracle.com with ESMTP id 39v8ys141s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 06:12:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cB451xJG0fLJm8r+kYPrDSTkHF1QNNwmBjIaNqOaSCyFP5Qg4npDRP1TIAMkJSRu5qYNXlUPgtQxaRIuVopDZ41ujCBIs+kukIVBFiUfjMIPuwC4QMsIDWpJp6I1chCvpMiVbe03BE61X9fC1YqRlXK7peNjVHDCsDgNXadQszoCKJQdGGMYqq822qLCjIuW6iBpb/vuHY98gTEOtJzqqi4dCGI//WHqYMQhZeOuPWocp912BVy/STMFCqYmb2yTRJ81qsDzFqX7hctS+NkoH+O0i826QXSowi+Ow85rs5iyUIao1Wg8bgJJNPEkNsF5amfbEUSc/GgM5DNcfNcm2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=K/vmTHeipMa70zq1YcxsnN9SZMqmv6wbTLa8K3AyuyNS86QiaR6gkn9ytYkYmZNu2C69tpULBRDJsXHQDAP4s4sFcVkaWjjJIRSYnvQz6dWd9KcVOvtBTTR10Xe3qBFlKnoZATOJFPBnyxsd3do64ojdtB/9Ulp6cz2iwAQ7TdbgMO8p/gefqU/exm2i9lSjayQvydb7yOc86+anJU1w5CplY0DMRJPIqkzf1rZoSY7H5/EA08j5kssDUwW7AMGG2fjiTQ/NOa/KqO2FX2x0QojNV54Q17jR0UoYf79uVYWortUyizUVzkQ2DNI/dhyP97q1F08aqP/lUsY7xsxkSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=hNpJGGr6z+iWO2K/qTQ4xZv+GXZCaA4Xe9gG3dtoVDboNcbMHBafRUxHGwF/1++CwNSqggq0bDrQyYpE9JoUKRYMwn8wlnhMngUuaD936QZnEs0D5x7rP/Cmn4K282ZqHzpGNIOG4Yw735padfdO4bLj0JL9ZLVMZ9+70kB6a0g= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR1001MB2254.namprd10.prod.outlook.com (2603:10b6:301:2d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23; Mon, 19 Jul 2021 06:12:39 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268%7]) with mapi id 15.20.4331.033; Mon, 19 Jul 2021 06:12:39 +0000 Date: Mon, 19 Jul 2021 09:12:15 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Lucas Stach , Shawn Guo , Rob Herring Cc: lkp@intel.com, kbuild-all@lists.01.org, NXP Linux Team , Adam Ford , Frieder Schrempf , Peng Fan , Marek Vasut , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: Re: [PATCH 09/17] soc: imx: add i.MX8M blk-ctrl driver Message-ID: <202107181452.0x9rl7rG-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210716232916.3572966-10-l.stach@pengutronix.de> User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNAP275CA0039.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::6) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kadam (102.222.70.252) by JNAP275CA0039.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23 via Frontend Transport; Mon, 19 Jul 2021 06:12:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ea34614-7a0e-441a-227e-08d94a7c35be X-MS-TrafficTypeDiagnostic: MWHPR1001MB2254: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 38k6xPKiZs+GFNTGiygwSYGj77CNn4RgL+aNsLklHu22e+D3J+YbNi2DIe1LzeTOVM8wqAGvOj5UyuTvwUacpSLdixEA/RUKpUZE4+YLcKpgDABoXLsCVVOdZaJhUJIVF/biVMFb+k5v9I1rj+uzfsPPpUwtu21Op/wP41HYHbr23LVeHKLHbqxueTzoXeB4dEQa9yLaeC3x/XwuauKV6Uevzozyi7Hqsg3kFCuBtonkpx89p/q9PTvLVRyaiwc9pASgkUCl2CdoytyOt9IfxHuCcwM3SPEjyoHmqE8iDIPLtZ9JuuBmxe1vlMW+kLV0jGyPuiuXOEcWfLtBRXOjHeggLGdxH/pB55y7Rmq8If1140xi/P+8DqtzwzxROdhvjAr23+mCfQIBVqiW+x1O1yMkzYZXLtcEVVRtpC9bEx3j3XgopcsQkZjV7CqIjrbU6BADBdqnF5cf9l/LphKBDDsqyUYnU35wcEM8Mal8xlTbaBKyjwf7qsuERqX2XbyLbaqKclgHFrzlgE4xCPV4GwGwRxUzvVvpz960mh9TZmnUZzO/NczH8X9otUc+FXd+re2JObp5TXZ6l4eTmFKF5G9HqaoKpGyloeUIaKAZ2imR6maKQSeZv+dhxf1ThFta2993SvR+KES8L2R3Bm8ZYOvMZd5Pdixv9FZR1UBNfOAcf81NknmKu1SQX568uHz877EFe5ZXuEfS74Q6A6yBAeiJ8nLUKxBG1NmhdHYnyrU47wpY7typncGtSPXy8xYaXtYARpY7UBg6zP0iVwPdNA8h0JC50qSqd+/ual+nZ7AwVe82RqgJmyM+G4GjeXtB X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2365.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(366004)(376002)(136003)(39860400002)(346002)(54906003)(38350700002)(38100700002)(7416002)(110136005)(9686003)(186003)(83380400001)(52116002)(2906002)(6666004)(1076003)(6496006)(8936002)(478600001)(966005)(956004)(44832011)(36756003)(5660300002)(86362001)(6486002)(26005)(66946007)(4326008)(66556008)(66476007)(316002)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?INAw1Hnt0C6S1dlEeBbAZXrFgs7szDGOH0zXmmHeByasU+iNswNrR2vueuLv?= =?us-ascii?Q?Djp/NTLGfDCksHbJNutiw0IRpjAuE5WPVAs9/wVh6hGqhJyOG/TdpwQp9qzV?= =?us-ascii?Q?k6E9q573YVkxUg0QJC1IPFyg5xZZqoLwXhYRk0HqzlQq+9oTu8xnykP0/Ioc?= =?us-ascii?Q?6mucVPBwk+rA5CLswh0V8FQgCaqdmjCzyLkFTiA/IcpkYpQvEx0gptpbEKrT?= =?us-ascii?Q?0ddbQ5kJTwyBeqdO+Ba3yllwQfNisqUEu4Ut7iO/VjXNQDzqi9a3s9gvXK7B?= =?us-ascii?Q?SYeXXganfyRN2UQjGZwS3UdhVZHtv1F+4WNuf304MBc6Tr9swgrGBUeKrXbR?= =?us-ascii?Q?x0PqiNPZ5yW3wgUwZgvhGvjQsSp0ZI0TW0thOFWxZpRYKVHp/G5sIS/aWGVg?= =?us-ascii?Q?7Bt99TVtYIbYetxWpOyZtsgI7OtZ8H1iKnDJTAUtRJnpzHmV+IV3g6OEy0ZE?= =?us-ascii?Q?cr7547w729GqiFAy4NyH3jD7IrOJJ8OMTvxZrmXQ1BItyR0g2yF4cCMt4sgD?= =?us-ascii?Q?qHGcG9irRNAs17VHaiFRvQu1wdGACeqDmpZGftGgSlRrJ1+XgRZGWL+lLl5Z?= =?us-ascii?Q?x0P3W/w3KRBcjiCcKsLmOWgk9zAvnU/KhTqPzzr60L/jhMe2eahmUAHZ2A6r?= =?us-ascii?Q?KQGRKFgItWKXsDi3OJRSykRvlAJLPZEVGD+6XrMzXM5MvrkDrcQ9hWn7qxyF?= =?us-ascii?Q?5YrKMALWf2/BTH6EpiWYYMa0SyOMbKJRnoBuYl2N5idV9CqbETRBg/dr8tis?= =?us-ascii?Q?T+MT19dVWPlI8At4gdnrJV75qKTRG2XgXEl1AUZ/3z7PR6lUdITAX7nLlonJ?= =?us-ascii?Q?uIfsGrlVS6VryawILfvhniqiJepvdp7kYiYEokp57x2z6XFD1QBfyWKYtmZI?= =?us-ascii?Q?N0C0Z6ZHIqeDZ6q2CMjc4SwNABWzRz8NEIsvRo9ikl2p+VKqhGHITC/rEyg4?= =?us-ascii?Q?DYTCdeGLSzdb/5FntkiiLg5Yov3JgHt4RkOystfPq3sUZ9Pr5b+DcV0Zdto5?= =?us-ascii?Q?I8fQKLu3Sa40VP1oPVmoyel1kBHv4jtna6zpHdMWr8MdXUZLT2RxEv3jYxmO?= =?us-ascii?Q?Y6h2mf6Sx4Jlj16Bm2uQKj+GY707SXVHj3p5UcvyJ7LWExabe1JSud9i4uVB?= =?us-ascii?Q?iXwANJrFSSA9QTZn8NQk+MEV4lYj08N71yQqDZnDlvNx4USto5u3wdRRdsjO?= =?us-ascii?Q?m6wB7A6xkHmTw3B9hLBfg779YNjbYp3DhTbAjHMmqITY5oIaRh/v3ItsV8lP?= =?us-ascii?Q?pihLYgRG6hFZzgMqGTXLMXCj1S6/foukLuQ8I32q6IywX9zDLSAg5UlkElyL?= =?us-ascii?Q?lDQgk5W33n8o81uB386QaU9S?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ea34614-7a0e-441a-227e-08d94a7c35be X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2021 06:12:38.9128 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: A6GBvaeZ/xwhv7P8w3nCa170e1LiHEYoQluAgT/pMkmO6/hp/OOI/yJIKRHwbdxwXZAHhX9AF1fD9z25SKlykbcYC6yPMgKyMSvA+G7aD3Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2254 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10049 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107190034 X-Proofpoint-ORIG-GUID: VpBUt4BUBk4PLpGhulJZDI3FslavlQPw X-Proofpoint-GUID: VpBUt4BUBk4PLpGhulJZDI3FslavlQPw Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Lucas, url: https://github.com/0day-ci/linux/commits/Lucas-Stach/i-MX8MM-GPC-improvements-and-BLK_CTRL-driver/20210718-102944 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next config: i386-randconfig-m021-20210718 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/imx8m-blk-ctrl.c:222 imx8m_blk_ctrl_probe() warn: missing error code 'ret' vim +/ret +222 drivers/soc/imx/imx8m-blk-ctrl.c 446185fda14696 Lucas Stach 2021-07-17 150 static int imx8m_blk_ctrl_probe(struct platform_device *pdev) 446185fda14696 Lucas Stach 2021-07-17 151 { 446185fda14696 Lucas Stach 2021-07-17 152 const struct imx8m_blk_ctrl_data *bc_data; 446185fda14696 Lucas Stach 2021-07-17 153 struct device *dev = &pdev->dev; 446185fda14696 Lucas Stach 2021-07-17 154 struct imx8m_blk_ctrl *bc; 446185fda14696 Lucas Stach 2021-07-17 155 void __iomem *base; 446185fda14696 Lucas Stach 2021-07-17 156 int i, ret; 446185fda14696 Lucas Stach 2021-07-17 157 446185fda14696 Lucas Stach 2021-07-17 158 struct regmap_config regmap_config = { 446185fda14696 Lucas Stach 2021-07-17 159 .reg_bits = 32, 446185fda14696 Lucas Stach 2021-07-17 160 .val_bits = 32, 446185fda14696 Lucas Stach 2021-07-17 161 .reg_stride = 4, 446185fda14696 Lucas Stach 2021-07-17 162 }; 446185fda14696 Lucas Stach 2021-07-17 163 446185fda14696 Lucas Stach 2021-07-17 164 bc = devm_kzalloc(dev, sizeof(*bc), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 165 if (!bc) 446185fda14696 Lucas Stach 2021-07-17 166 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 167 446185fda14696 Lucas Stach 2021-07-17 168 bc->dev = dev; 446185fda14696 Lucas Stach 2021-07-17 169 446185fda14696 Lucas Stach 2021-07-17 170 bc_data = of_device_get_match_data(dev); 446185fda14696 Lucas Stach 2021-07-17 171 446185fda14696 Lucas Stach 2021-07-17 172 base = devm_platform_ioremap_resource(pdev, 0); 446185fda14696 Lucas Stach 2021-07-17 173 if (IS_ERR(base)) 446185fda14696 Lucas Stach 2021-07-17 174 return PTR_ERR(base); 446185fda14696 Lucas Stach 2021-07-17 175 446185fda14696 Lucas Stach 2021-07-17 176 regmap_config.max_register = bc_data->max_reg; 446185fda14696 Lucas Stach 2021-07-17 177 bc->regmap = devm_regmap_init_mmio(dev, base, ®map_config); 446185fda14696 Lucas Stach 2021-07-17 178 if (IS_ERR(bc->regmap)) 446185fda14696 Lucas Stach 2021-07-17 179 return dev_err_probe(dev, PTR_ERR(bc->regmap), 446185fda14696 Lucas Stach 2021-07-17 180 "failed to init regmap \n"); 446185fda14696 Lucas Stach 2021-07-17 181 446185fda14696 Lucas Stach 2021-07-17 182 bc->domains = devm_kcalloc(dev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 183 sizeof(struct imx8m_blk_ctrl_domain), 446185fda14696 Lucas Stach 2021-07-17 184 GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 185 if (!bc->domains) 446185fda14696 Lucas Stach 2021-07-17 186 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 187 446185fda14696 Lucas Stach 2021-07-17 188 bc->onecell_data.num_domains = bc_data->num_domains; 446185fda14696 Lucas Stach 2021-07-17 189 bc->onecell_data.xlate = imx8m_blk_ctrl_xlate; 446185fda14696 Lucas Stach 2021-07-17 190 bc->onecell_data.domains = 446185fda14696 Lucas Stach 2021-07-17 191 devm_kcalloc(dev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 192 sizeof(struct generic_pm_domain *), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 193 if (!bc->onecell_data.domains) 446185fda14696 Lucas Stach 2021-07-17 194 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 195 446185fda14696 Lucas Stach 2021-07-17 196 bc->bus_power_dev = genpd_dev_pm_attach_by_name(dev, "bus"); 446185fda14696 Lucas Stach 2021-07-17 197 if (IS_ERR(bc->bus_power_dev)) 446185fda14696 Lucas Stach 2021-07-17 198 return dev_err_probe(dev, PTR_ERR(bc->bus_power_dev), 446185fda14696 Lucas Stach 2021-07-17 199 "failed to attach power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 200 446185fda14696 Lucas Stach 2021-07-17 201 for (i = 0; i < bc_data->num_domains; i++) { 446185fda14696 Lucas Stach 2021-07-17 202 const struct imx8m_blk_ctrl_domain_data *data = &bc_data->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 203 struct imx8m_blk_ctrl_domain *domain = &bc->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 204 int j; 446185fda14696 Lucas Stach 2021-07-17 205 446185fda14696 Lucas Stach 2021-07-17 206 domain->data = data; 446185fda14696 Lucas Stach 2021-07-17 207 446185fda14696 Lucas Stach 2021-07-17 208 for (j = 0; j < data->num_clks; j++) 446185fda14696 Lucas Stach 2021-07-17 209 domain->clks[j].id = data->clk_names[j]; 446185fda14696 Lucas Stach 2021-07-17 210 446185fda14696 Lucas Stach 2021-07-17 211 ret = devm_clk_bulk_get(dev, data->num_clks, domain->clks); 446185fda14696 Lucas Stach 2021-07-17 212 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 213 dev_err_probe(dev, ret, "failed to get clock\n"); 446185fda14696 Lucas Stach 2021-07-17 214 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 215 } 446185fda14696 Lucas Stach 2021-07-17 216 446185fda14696 Lucas Stach 2021-07-17 217 domain->power_dev = 446185fda14696 Lucas Stach 2021-07-17 218 dev_pm_domain_attach_by_name(dev, data->gpc_name); 446185fda14696 Lucas Stach 2021-07-17 219 if (IS_ERR(domain->power_dev )) { ^ Extra space character. 446185fda14696 Lucas Stach 2021-07-17 220 dev_err_probe(dev, PTR_ERR(domain->power_dev), 446185fda14696 Lucas Stach 2021-07-17 221 "failed to attach power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 @222 goto cleanup_pds; ret = PTR_ERR(domain->power_dev); 446185fda14696 Lucas Stach 2021-07-17 223 } 446185fda14696 Lucas Stach 2021-07-17 224 446185fda14696 Lucas Stach 2021-07-17 225 domain->genpd.name = data->name; 446185fda14696 Lucas Stach 2021-07-17 226 domain->genpd.power_on = imx8m_blk_ctrl_power_on; 446185fda14696 Lucas Stach 2021-07-17 227 domain->genpd.power_off = imx8m_blk_ctrl_power_off; 446185fda14696 Lucas Stach 2021-07-17 228 domain->bc = bc; 446185fda14696 Lucas Stach 2021-07-17 229 446185fda14696 Lucas Stach 2021-07-17 230 ret = pm_genpd_init(&domain->genpd, NULL, true); 446185fda14696 Lucas Stach 2021-07-17 231 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 232 dev_err_probe(dev, ret, "failed to init power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 233 dev_pm_domain_detach(domain->power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 234 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 235 } 446185fda14696 Lucas Stach 2021-07-17 236 446185fda14696 Lucas Stach 2021-07-17 237 /* 446185fda14696 Lucas Stach 2021-07-17 238 * We use runtime PM to trigger power on/off of the upstream GPC 446185fda14696 Lucas Stach 2021-07-17 239 * domain, as a strict hierarchical parent/child power domain 446185fda14696 Lucas Stach 2021-07-17 240 * setup doesn't allow us to meet the sequencing requirements. 446185fda14696 Lucas Stach 2021-07-17 241 * This means we have nested locking of genpd locks, without the 446185fda14696 Lucas Stach 2021-07-17 242 * nesting being visible at the genpd level, so we need a 446185fda14696 Lucas Stach 2021-07-17 243 * separate lock class to make lockdep aware of the fact that 446185fda14696 Lucas Stach 2021-07-17 244 * this are separate domain locks that can be nested without a 446185fda14696 Lucas Stach 2021-07-17 245 * self-deadlock. 446185fda14696 Lucas Stach 2021-07-17 246 */ 446185fda14696 Lucas Stach 2021-07-17 247 lockdep_set_class(&domain->genpd.mlock, 446185fda14696 Lucas Stach 2021-07-17 248 &blk_ctrl_genpd_lock_class); 446185fda14696 Lucas Stach 2021-07-17 249 446185fda14696 Lucas Stach 2021-07-17 250 bc->onecell_data.domains[i] = &domain->genpd; 446185fda14696 Lucas Stach 2021-07-17 251 } 446185fda14696 Lucas Stach 2021-07-17 252 446185fda14696 Lucas Stach 2021-07-17 253 ret = of_genpd_add_provider_onecell(dev->of_node, &bc->onecell_data); 446185fda14696 Lucas Stach 2021-07-17 254 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 255 dev_err_probe(dev, ret, "failed to add power domain provider\n"); 446185fda14696 Lucas Stach 2021-07-17 256 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 257 } 446185fda14696 Lucas Stach 2021-07-17 258 446185fda14696 Lucas Stach 2021-07-17 259 bc->power_nb.notifier_call = bc_data->power_notifier_fn; 446185fda14696 Lucas Stach 2021-07-17 260 ret = dev_pm_genpd_add_notifier(bc->bus_power_dev, &bc->power_nb); 446185fda14696 Lucas Stach 2021-07-17 261 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 262 dev_err_probe(dev, ret, "failed to add power notifier\n"); 446185fda14696 Lucas Stach 2021-07-17 263 goto cleanup_provider; 446185fda14696 Lucas Stach 2021-07-17 264 } 446185fda14696 Lucas Stach 2021-07-17 265 446185fda14696 Lucas Stach 2021-07-17 266 dev_set_drvdata(dev, bc); 446185fda14696 Lucas Stach 2021-07-17 267 446185fda14696 Lucas Stach 2021-07-17 268 return 0; 446185fda14696 Lucas Stach 2021-07-17 269 446185fda14696 Lucas Stach 2021-07-17 270 cleanup_provider: 446185fda14696 Lucas Stach 2021-07-17 271 of_genpd_del_provider(dev->of_node); 446185fda14696 Lucas Stach 2021-07-17 272 cleanup_pds: 446185fda14696 Lucas Stach 2021-07-17 273 for (i--; i >= 0; i--) { 446185fda14696 Lucas Stach 2021-07-17 274 pm_genpd_remove(&bc->domains[i].genpd); 446185fda14696 Lucas Stach 2021-07-17 275 dev_pm_domain_detach(bc->domains[i].power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 276 } 446185fda14696 Lucas Stach 2021-07-17 277 446185fda14696 Lucas Stach 2021-07-17 278 dev_pm_domain_detach(bc->bus_power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 279 446185fda14696 Lucas Stach 2021-07-17 280 return ret; 446185fda14696 Lucas Stach 2021-07-17 281 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,FAKE_REPLY_C,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7ED72C12002 for ; Mon, 19 Jul 2021 06:15:22 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 320A161003 for ; Mon, 19 Jul 2021 06:15:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 320A161003 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Owner; bh=LaSDNNkzbZkP5pJHkM55i6GE0rW4qLSFJWLOpjbHimM=; b=aaBroKlg551x98 CYCluvgpbUDnmBjAiWM1o1JSFgVktDYHXC16mvzmh2owFwskNhVNR47jjXtWWBtKx6XXm9ZdPkn15 +3sTKXb+0Y6UvJdV/eiGA44850pPvdIN/29p0cwQMvW0LUYjQFwKWGzrynPLrn+sWHg4VT2+d7SqS jX7IDe2/0J5CzeTQDwt+BBe4Ca/kKpsUVHP4ZNPftG9XS2vgGZDN2tZhYXd41vmwX60WUbsRDSZYA p1R4y7eiNPaIqS2V65mQD6Y4fq7E7izKxevsP35DD6vcs2BUVXZhqQFo5nxrU4Z199clQ+yHZUZQF PLlB1bW2DhaUq7rF/GNw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m5MWT-008T5S-Ja; Mon, 19 Jul 2021 06:13:01 +0000 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m5MWN-008T56-UG for linux-arm-kernel@lists.infradead.org; Mon, 19 Jul 2021 06:12:58 +0000 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16J66Rft003880; Mon, 19 Jul 2021 06:12:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=mS9QmhGI64kUG7BBDU2h2q/k8KaUXzwoxa0V/97NFtKtuQK2OVhTc8Lni7FzvQiiyF+o qJD1QZFOlp0yMrzlR1tCVYmTBh1eb/UB/m/MQK4bizU4SNnFIDrAEiOOiEVEwv+gTkPE ddw+FDa3A4Q619Lzi5+sIeE/DC6nYQt+oExxWiEK/3ves5Iw7qNQ9Q5leOZnd++Pbg8m o3iD/OP/vHJULKeO5TT4oHjgmMWM2XwZXIESrA2aaM8mBtEniI60m+vRzh7efvt7zhbE 1E0QZcq1v2R0SuMhvYZCFxY1qwLrF9CGRZ+8J4P9a0hFxw3kf0oPxsZp+A2/BSptqTb5 ug== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=ij8wXynx4H0YRhB2Fw50iALPej3n4SqQkKf/8qcRNffLLRHTK77c8+3jhpNWXnW3xdAJ pyxi7aWP1b7UeiwHfeAMBOpJ3rpgtlj3//jQigwpg2UhT3ClrR4FI9JXEmjtmYo3IVy8 QQ6/aqYC4nFMW5OOXVyAkZNtxqy3K/4gVeLjXBCoKPDcpnJ68MGmL8gzoohieB67slAq ze06vzAgij1oE+dV4RQeLj7lkMPqSnjKdlR1GTQarPDQj5aAgqozG0nkILoGNDjXzwVs I6v4rCKfGku5AskWvFDTIaaxZoygI7yrc1OpaiCj6vyXwq+kwvKgFk+ngvjeMZlPPBTG 4w== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 39uptrt54g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 06:12:42 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16J66ASq057911; Mon, 19 Jul 2021 06:12:41 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by userp3020.oracle.com with ESMTP id 39v8ys141s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Jul 2021 06:12:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cB451xJG0fLJm8r+kYPrDSTkHF1QNNwmBjIaNqOaSCyFP5Qg4npDRP1TIAMkJSRu5qYNXlUPgtQxaRIuVopDZ41ujCBIs+kukIVBFiUfjMIPuwC4QMsIDWpJp6I1chCvpMiVbe03BE61X9fC1YqRlXK7peNjVHDCsDgNXadQszoCKJQdGGMYqq822qLCjIuW6iBpb/vuHY98gTEOtJzqqi4dCGI//WHqYMQhZeOuPWocp912BVy/STMFCqYmb2yTRJ81qsDzFqX7hctS+NkoH+O0i826QXSowi+Ow85rs5iyUIao1Wg8bgJJNPEkNsF5amfbEUSc/GgM5DNcfNcm2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=K/vmTHeipMa70zq1YcxsnN9SZMqmv6wbTLa8K3AyuyNS86QiaR6gkn9ytYkYmZNu2C69tpULBRDJsXHQDAP4s4sFcVkaWjjJIRSYnvQz6dWd9KcVOvtBTTR10Xe3qBFlKnoZATOJFPBnyxsd3do64ojdtB/9Ulp6cz2iwAQ7TdbgMO8p/gefqU/exm2i9lSjayQvydb7yOc86+anJU1w5CplY0DMRJPIqkzf1rZoSY7H5/EA08j5kssDUwW7AMGG2fjiTQ/NOa/KqO2FX2x0QojNV54Q17jR0UoYf79uVYWortUyizUVzkQ2DNI/dhyP97q1F08aqP/lUsY7xsxkSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UHeY70ZyEW1PAwbbal6ggqUpGaP7JAGvgFUwa4gZFtY=; b=hNpJGGr6z+iWO2K/qTQ4xZv+GXZCaA4Xe9gG3dtoVDboNcbMHBafRUxHGwF/1++CwNSqggq0bDrQyYpE9JoUKRYMwn8wlnhMngUuaD936QZnEs0D5x7rP/Cmn4K282ZqHzpGNIOG4Yw735padfdO4bLj0JL9ZLVMZ9+70kB6a0g= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR1001MB2254.namprd10.prod.outlook.com (2603:10b6:301:2d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23; Mon, 19 Jul 2021 06:12:39 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268%7]) with mapi id 15.20.4331.033; Mon, 19 Jul 2021 06:12:39 +0000 Date: Mon, 19 Jul 2021 09:12:15 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Lucas Stach , Shawn Guo , Rob Herring Cc: lkp@intel.com, kbuild-all@lists.01.org, NXP Linux Team , Adam Ford , Frieder Schrempf , Peng Fan , Marek Vasut , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: Re: [PATCH 09/17] soc: imx: add i.MX8M blk-ctrl driver Message-ID: <202107181452.0x9rl7rG-lkp@intel.com> Content-Disposition: inline In-Reply-To: <20210716232916.3572966-10-l.stach@pengutronix.de> User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNAP275CA0039.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::6) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kadam (102.222.70.252) by JNAP275CA0039.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23 via Frontend Transport; Mon, 19 Jul 2021 06:12:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ea34614-7a0e-441a-227e-08d94a7c35be X-MS-TrafficTypeDiagnostic: MWHPR1001MB2254: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 38k6xPKiZs+GFNTGiygwSYGj77CNn4RgL+aNsLklHu22e+D3J+YbNi2DIe1LzeTOVM8wqAGvOj5UyuTvwUacpSLdixEA/RUKpUZE4+YLcKpgDABoXLsCVVOdZaJhUJIVF/biVMFb+k5v9I1rj+uzfsPPpUwtu21Op/wP41HYHbr23LVeHKLHbqxueTzoXeB4dEQa9yLaeC3x/XwuauKV6Uevzozyi7Hqsg3kFCuBtonkpx89p/q9PTvLVRyaiwc9pASgkUCl2CdoytyOt9IfxHuCcwM3SPEjyoHmqE8iDIPLtZ9JuuBmxe1vlMW+kLV0jGyPuiuXOEcWfLtBRXOjHeggLGdxH/pB55y7Rmq8If1140xi/P+8DqtzwzxROdhvjAr23+mCfQIBVqiW+x1O1yMkzYZXLtcEVVRtpC9bEx3j3XgopcsQkZjV7CqIjrbU6BADBdqnF5cf9l/LphKBDDsqyUYnU35wcEM8Mal8xlTbaBKyjwf7qsuERqX2XbyLbaqKclgHFrzlgE4xCPV4GwGwRxUzvVvpz960mh9TZmnUZzO/NczH8X9otUc+FXd+re2JObp5TXZ6l4eTmFKF5G9HqaoKpGyloeUIaKAZ2imR6maKQSeZv+dhxf1ThFta2993SvR+KES8L2R3Bm8ZYOvMZd5Pdixv9FZR1UBNfOAcf81NknmKu1SQX568uHz877EFe5ZXuEfS74Q6A6yBAeiJ8nLUKxBG1NmhdHYnyrU47wpY7typncGtSPXy8xYaXtYARpY7UBg6zP0iVwPdNA8h0JC50qSqd+/ual+nZ7AwVe82RqgJmyM+G4GjeXtB X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1001MB2365.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(396003)(366004)(376002)(136003)(39860400002)(346002)(54906003)(38350700002)(38100700002)(7416002)(110136005)(9686003)(186003)(83380400001)(52116002)(2906002)(6666004)(1076003)(6496006)(8936002)(478600001)(966005)(956004)(44832011)(36756003)(5660300002)(86362001)(6486002)(26005)(66946007)(4326008)(66556008)(66476007)(316002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?INAw1Hnt0C6S1dlEeBbAZXrFgs7szDGOH0zXmmHeByasU+iNswNrR2vueuLv?= =?us-ascii?Q?Djp/NTLGfDCksHbJNutiw0IRpjAuE5WPVAs9/wVh6hGqhJyOG/TdpwQp9qzV?= =?us-ascii?Q?k6E9q573YVkxUg0QJC1IPFyg5xZZqoLwXhYRk0HqzlQq+9oTu8xnykP0/Ioc?= =?us-ascii?Q?6mucVPBwk+rA5CLswh0V8FQgCaqdmjCzyLkFTiA/IcpkYpQvEx0gptpbEKrT?= =?us-ascii?Q?0ddbQ5kJTwyBeqdO+Ba3yllwQfNisqUEu4Ut7iO/VjXNQDzqi9a3s9gvXK7B?= =?us-ascii?Q?SYeXXganfyRN2UQjGZwS3UdhVZHtv1F+4WNuf304MBc6Tr9swgrGBUeKrXbR?= =?us-ascii?Q?x0PqiNPZ5yW3wgUwZgvhGvjQsSp0ZI0TW0thOFWxZpRYKVHp/G5sIS/aWGVg?= =?us-ascii?Q?7Bt99TVtYIbYetxWpOyZtsgI7OtZ8H1iKnDJTAUtRJnpzHmV+IV3g6OEy0ZE?= =?us-ascii?Q?cr7547w729GqiFAy4NyH3jD7IrOJJ8OMTvxZrmXQ1BItyR0g2yF4cCMt4sgD?= =?us-ascii?Q?qHGcG9irRNAs17VHaiFRvQu1wdGACeqDmpZGftGgSlRrJ1+XgRZGWL+lLl5Z?= =?us-ascii?Q?x0P3W/w3KRBcjiCcKsLmOWgk9zAvnU/KhTqPzzr60L/jhMe2eahmUAHZ2A6r?= =?us-ascii?Q?KQGRKFgItWKXsDi3OJRSykRvlAJLPZEVGD+6XrMzXM5MvrkDrcQ9hWn7qxyF?= =?us-ascii?Q?5YrKMALWf2/BTH6EpiWYYMa0SyOMbKJRnoBuYl2N5idV9CqbETRBg/dr8tis?= =?us-ascii?Q?T+MT19dVWPlI8At4gdnrJV75qKTRG2XgXEl1AUZ/3z7PR6lUdITAX7nLlonJ?= =?us-ascii?Q?uIfsGrlVS6VryawILfvhniqiJepvdp7kYiYEokp57x2z6XFD1QBfyWKYtmZI?= =?us-ascii?Q?N0C0Z6ZHIqeDZ6q2CMjc4SwNABWzRz8NEIsvRo9ikl2p+VKqhGHITC/rEyg4?= =?us-ascii?Q?DYTCdeGLSzdb/5FntkiiLg5Yov3JgHt4RkOystfPq3sUZ9Pr5b+DcV0Zdto5?= =?us-ascii?Q?I8fQKLu3Sa40VP1oPVmoyel1kBHv4jtna6zpHdMWr8MdXUZLT2RxEv3jYxmO?= =?us-ascii?Q?Y6h2mf6Sx4Jlj16Bm2uQKj+GY707SXVHj3p5UcvyJ7LWExabe1JSud9i4uVB?= =?us-ascii?Q?iXwANJrFSSA9QTZn8NQk+MEV4lYj08N71yQqDZnDlvNx4USto5u3wdRRdsjO?= =?us-ascii?Q?m6wB7A6xkHmTw3B9hLBfg779YNjbYp3DhTbAjHMmqITY5oIaRh/v3ItsV8lP?= =?us-ascii?Q?pihLYgRG6hFZzgMqGTXLMXCj1S6/foukLuQ8I32q6IywX9zDLSAg5UlkElyL?= =?us-ascii?Q?lDQgk5W33n8o81uB386QaU9S?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ea34614-7a0e-441a-227e-08d94a7c35be X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2021 06:12:38.9128 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: A6GBvaeZ/xwhv7P8w3nCa170e1LiHEYoQluAgT/pMkmO6/hp/OOI/yJIKRHwbdxwXZAHhX9AF1fD9z25SKlykbcYC6yPMgKyMSvA+G7aD3Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2254 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10049 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107190034 X-Proofpoint-ORIG-GUID: VpBUt4BUBk4PLpGhulJZDI3FslavlQPw X-Proofpoint-GUID: VpBUt4BUBk4PLpGhulJZDI3FslavlQPw X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210718_231256_162965_6EA76741 X-CRM114-Status: GOOD ( 14.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Lucas, url: https://github.com/0day-ci/linux/commits/Lucas-Stach/i-MX8MM-GPC-improvements-and-BLK_CTRL-driver/20210718-102944 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next config: i386-randconfig-m021-20210718 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/imx8m-blk-ctrl.c:222 imx8m_blk_ctrl_probe() warn: missing error code 'ret' vim +/ret +222 drivers/soc/imx/imx8m-blk-ctrl.c 446185fda14696 Lucas Stach 2021-07-17 150 static int imx8m_blk_ctrl_probe(struct platform_device *pdev) 446185fda14696 Lucas Stach 2021-07-17 151 { 446185fda14696 Lucas Stach 2021-07-17 152 const struct imx8m_blk_ctrl_data *bc_data; 446185fda14696 Lucas Stach 2021-07-17 153 struct device *dev = &pdev->dev; 446185fda14696 Lucas Stach 2021-07-17 154 struct imx8m_blk_ctrl *bc; 446185fda14696 Lucas Stach 2021-07-17 155 void __iomem *base; 446185fda14696 Lucas Stach 2021-07-17 156 int i, ret; 446185fda14696 Lucas Stach 2021-07-17 157 446185fda14696 Lucas Stach 2021-07-17 158 struct regmap_config regmap_config = { 446185fda14696 Lucas Stach 2021-07-17 159 .reg_bits = 32, 446185fda14696 Lucas Stach 2021-07-17 160 .val_bits = 32, 446185fda14696 Lucas Stach 2021-07-17 161 .reg_stride = 4, 446185fda14696 Lucas Stach 2021-07-17 162 }; 446185fda14696 Lucas Stach 2021-07-17 163 446185fda14696 Lucas Stach 2021-07-17 164 bc = devm_kzalloc(dev, sizeof(*bc), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 165 if (!bc) 446185fda14696 Lucas Stach 2021-07-17 166 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 167 446185fda14696 Lucas Stach 2021-07-17 168 bc->dev = dev; 446185fda14696 Lucas Stach 2021-07-17 169 446185fda14696 Lucas Stach 2021-07-17 170 bc_data = of_device_get_match_data(dev); 446185fda14696 Lucas Stach 2021-07-17 171 446185fda14696 Lucas Stach 2021-07-17 172 base = devm_platform_ioremap_resource(pdev, 0); 446185fda14696 Lucas Stach 2021-07-17 173 if (IS_ERR(base)) 446185fda14696 Lucas Stach 2021-07-17 174 return PTR_ERR(base); 446185fda14696 Lucas Stach 2021-07-17 175 446185fda14696 Lucas Stach 2021-07-17 176 regmap_config.max_register = bc_data->max_reg; 446185fda14696 Lucas Stach 2021-07-17 177 bc->regmap = devm_regmap_init_mmio(dev, base, ®map_config); 446185fda14696 Lucas Stach 2021-07-17 178 if (IS_ERR(bc->regmap)) 446185fda14696 Lucas Stach 2021-07-17 179 return dev_err_probe(dev, PTR_ERR(bc->regmap), 446185fda14696 Lucas Stach 2021-07-17 180 "failed to init regmap \n"); 446185fda14696 Lucas Stach 2021-07-17 181 446185fda14696 Lucas Stach 2021-07-17 182 bc->domains = devm_kcalloc(dev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 183 sizeof(struct imx8m_blk_ctrl_domain), 446185fda14696 Lucas Stach 2021-07-17 184 GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 185 if (!bc->domains) 446185fda14696 Lucas Stach 2021-07-17 186 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 187 446185fda14696 Lucas Stach 2021-07-17 188 bc->onecell_data.num_domains = bc_data->num_domains; 446185fda14696 Lucas Stach 2021-07-17 189 bc->onecell_data.xlate = imx8m_blk_ctrl_xlate; 446185fda14696 Lucas Stach 2021-07-17 190 bc->onecell_data.domains = 446185fda14696 Lucas Stach 2021-07-17 191 devm_kcalloc(dev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 192 sizeof(struct generic_pm_domain *), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 193 if (!bc->onecell_data.domains) 446185fda14696 Lucas Stach 2021-07-17 194 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 195 446185fda14696 Lucas Stach 2021-07-17 196 bc->bus_power_dev = genpd_dev_pm_attach_by_name(dev, "bus"); 446185fda14696 Lucas Stach 2021-07-17 197 if (IS_ERR(bc->bus_power_dev)) 446185fda14696 Lucas Stach 2021-07-17 198 return dev_err_probe(dev, PTR_ERR(bc->bus_power_dev), 446185fda14696 Lucas Stach 2021-07-17 199 "failed to attach power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 200 446185fda14696 Lucas Stach 2021-07-17 201 for (i = 0; i < bc_data->num_domains; i++) { 446185fda14696 Lucas Stach 2021-07-17 202 const struct imx8m_blk_ctrl_domain_data *data = &bc_data->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 203 struct imx8m_blk_ctrl_domain *domain = &bc->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 204 int j; 446185fda14696 Lucas Stach 2021-07-17 205 446185fda14696 Lucas Stach 2021-07-17 206 domain->data = data; 446185fda14696 Lucas Stach 2021-07-17 207 446185fda14696 Lucas Stach 2021-07-17 208 for (j = 0; j < data->num_clks; j++) 446185fda14696 Lucas Stach 2021-07-17 209 domain->clks[j].id = data->clk_names[j]; 446185fda14696 Lucas Stach 2021-07-17 210 446185fda14696 Lucas Stach 2021-07-17 211 ret = devm_clk_bulk_get(dev, data->num_clks, domain->clks); 446185fda14696 Lucas Stach 2021-07-17 212 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 213 dev_err_probe(dev, ret, "failed to get clock\n"); 446185fda14696 Lucas Stach 2021-07-17 214 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 215 } 446185fda14696 Lucas Stach 2021-07-17 216 446185fda14696 Lucas Stach 2021-07-17 217 domain->power_dev = 446185fda14696 Lucas Stach 2021-07-17 218 dev_pm_domain_attach_by_name(dev, data->gpc_name); 446185fda14696 Lucas Stach 2021-07-17 219 if (IS_ERR(domain->power_dev )) { ^ Extra space character. 446185fda14696 Lucas Stach 2021-07-17 220 dev_err_probe(dev, PTR_ERR(domain->power_dev), 446185fda14696 Lucas Stach 2021-07-17 221 "failed to attach power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 @222 goto cleanup_pds; ret = PTR_ERR(domain->power_dev); 446185fda14696 Lucas Stach 2021-07-17 223 } 446185fda14696 Lucas Stach 2021-07-17 224 446185fda14696 Lucas Stach 2021-07-17 225 domain->genpd.name = data->name; 446185fda14696 Lucas Stach 2021-07-17 226 domain->genpd.power_on = imx8m_blk_ctrl_power_on; 446185fda14696 Lucas Stach 2021-07-17 227 domain->genpd.power_off = imx8m_blk_ctrl_power_off; 446185fda14696 Lucas Stach 2021-07-17 228 domain->bc = bc; 446185fda14696 Lucas Stach 2021-07-17 229 446185fda14696 Lucas Stach 2021-07-17 230 ret = pm_genpd_init(&domain->genpd, NULL, true); 446185fda14696 Lucas Stach 2021-07-17 231 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 232 dev_err_probe(dev, ret, "failed to init power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 233 dev_pm_domain_detach(domain->power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 234 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 235 } 446185fda14696 Lucas Stach 2021-07-17 236 446185fda14696 Lucas Stach 2021-07-17 237 /* 446185fda14696 Lucas Stach 2021-07-17 238 * We use runtime PM to trigger power on/off of the upstream GPC 446185fda14696 Lucas Stach 2021-07-17 239 * domain, as a strict hierarchical parent/child power domain 446185fda14696 Lucas Stach 2021-07-17 240 * setup doesn't allow us to meet the sequencing requirements. 446185fda14696 Lucas Stach 2021-07-17 241 * This means we have nested locking of genpd locks, without the 446185fda14696 Lucas Stach 2021-07-17 242 * nesting being visible at the genpd level, so we need a 446185fda14696 Lucas Stach 2021-07-17 243 * separate lock class to make lockdep aware of the fact that 446185fda14696 Lucas Stach 2021-07-17 244 * this are separate domain locks that can be nested without a 446185fda14696 Lucas Stach 2021-07-17 245 * self-deadlock. 446185fda14696 Lucas Stach 2021-07-17 246 */ 446185fda14696 Lucas Stach 2021-07-17 247 lockdep_set_class(&domain->genpd.mlock, 446185fda14696 Lucas Stach 2021-07-17 248 &blk_ctrl_genpd_lock_class); 446185fda14696 Lucas Stach 2021-07-17 249 446185fda14696 Lucas Stach 2021-07-17 250 bc->onecell_data.domains[i] = &domain->genpd; 446185fda14696 Lucas Stach 2021-07-17 251 } 446185fda14696 Lucas Stach 2021-07-17 252 446185fda14696 Lucas Stach 2021-07-17 253 ret = of_genpd_add_provider_onecell(dev->of_node, &bc->onecell_data); 446185fda14696 Lucas Stach 2021-07-17 254 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 255 dev_err_probe(dev, ret, "failed to add power domain provider\n"); 446185fda14696 Lucas Stach 2021-07-17 256 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 257 } 446185fda14696 Lucas Stach 2021-07-17 258 446185fda14696 Lucas Stach 2021-07-17 259 bc->power_nb.notifier_call = bc_data->power_notifier_fn; 446185fda14696 Lucas Stach 2021-07-17 260 ret = dev_pm_genpd_add_notifier(bc->bus_power_dev, &bc->power_nb); 446185fda14696 Lucas Stach 2021-07-17 261 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 262 dev_err_probe(dev, ret, "failed to add power notifier\n"); 446185fda14696 Lucas Stach 2021-07-17 263 goto cleanup_provider; 446185fda14696 Lucas Stach 2021-07-17 264 } 446185fda14696 Lucas Stach 2021-07-17 265 446185fda14696 Lucas Stach 2021-07-17 266 dev_set_drvdata(dev, bc); 446185fda14696 Lucas Stach 2021-07-17 267 446185fda14696 Lucas Stach 2021-07-17 268 return 0; 446185fda14696 Lucas Stach 2021-07-17 269 446185fda14696 Lucas Stach 2021-07-17 270 cleanup_provider: 446185fda14696 Lucas Stach 2021-07-17 271 of_genpd_del_provider(dev->of_node); 446185fda14696 Lucas Stach 2021-07-17 272 cleanup_pds: 446185fda14696 Lucas Stach 2021-07-17 273 for (i--; i >= 0; i--) { 446185fda14696 Lucas Stach 2021-07-17 274 pm_genpd_remove(&bc->domains[i].genpd); 446185fda14696 Lucas Stach 2021-07-17 275 dev_pm_domain_detach(bc->domains[i].power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 276 } 446185fda14696 Lucas Stach 2021-07-17 277 446185fda14696 Lucas Stach 2021-07-17 278 dev_pm_domain_detach(bc->bus_power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 279 446185fda14696 Lucas Stach 2021-07-17 280 return ret; 446185fda14696 Lucas Stach 2021-07-17 281 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6574061245439468169==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH 09/17] soc: imx: add i.MX8M blk-ctrl driver Date: Sun, 18 Jul 2021 14:04:10 +0800 Message-ID: <202107181452.0x9rl7rG-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============6574061245439468169== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210716232916.3572966-10-l.stach@pengutronix.de> References: <20210716232916.3572966-10-l.stach@pengutronix.de> TO: Lucas Stach TO: Shawn Guo TO: Rob Herring CC: NXP Linux Team CC: Adam Ford CC: Frieder Schrempf CC: Peng Fan CC: Marek Vasut CC: devicetree(a)vger.kernel.org CC: linux-arm-kernel(a)lists.infradead.org CC: kernel(a)pengutronix.de Hi Lucas, I love your patch! Perhaps something to improve: [auto build test WARNING on shawnguo/for-next] [also build test WARNING on robh/for-next soc/for-next rockchip/for-next v5= .14-rc1 next-20210716] [cannot apply to xlnx/master arm/for-next arm64/for-next/core clk/clk-next = kvmarm/next keystone/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Lucas-Stach/i-MX8MM-GPC-im= provements-and-BLK_CTRL-driver/20210718-102944 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git = for-next :::::: branch date: 4 hours ago :::::: commit date: 4 hours ago config: i386-randconfig-m021-20210718 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/imx8m-blk-ctrl.c:222 imx8m_blk_ctrl_probe() warn: missing e= rror code 'ret' vim +/ret +222 drivers/soc/imx/imx8m-blk-ctrl.c 446185fda14696 Lucas Stach 2021-07-17 149 = 446185fda14696 Lucas Stach 2021-07-17 150 static int imx8m_blk_ctrl_probe= (struct platform_device *pdev) 446185fda14696 Lucas Stach 2021-07-17 151 { 446185fda14696 Lucas Stach 2021-07-17 152 const struct imx8m_blk_ctrl_da= ta *bc_data; 446185fda14696 Lucas Stach 2021-07-17 153 struct device *dev =3D &pdev->= dev; 446185fda14696 Lucas Stach 2021-07-17 154 struct imx8m_blk_ctrl *bc; 446185fda14696 Lucas Stach 2021-07-17 155 void __iomem *base; 446185fda14696 Lucas Stach 2021-07-17 156 int i, ret; 446185fda14696 Lucas Stach 2021-07-17 157 = 446185fda14696 Lucas Stach 2021-07-17 158 struct regmap_config regmap_co= nfig =3D { 446185fda14696 Lucas Stach 2021-07-17 159 .reg_bits =3D 32, 446185fda14696 Lucas Stach 2021-07-17 160 .val_bits =3D 32, 446185fda14696 Lucas Stach 2021-07-17 161 .reg_stride =3D 4, 446185fda14696 Lucas Stach 2021-07-17 162 }; 446185fda14696 Lucas Stach 2021-07-17 163 = 446185fda14696 Lucas Stach 2021-07-17 164 bc =3D devm_kzalloc(dev, sizeo= f(*bc), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 165 if (!bc) 446185fda14696 Lucas Stach 2021-07-17 166 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 167 = 446185fda14696 Lucas Stach 2021-07-17 168 bc->dev =3D dev; 446185fda14696 Lucas Stach 2021-07-17 169 = 446185fda14696 Lucas Stach 2021-07-17 170 bc_data =3D of_device_get_matc= h_data(dev); 446185fda14696 Lucas Stach 2021-07-17 171 = 446185fda14696 Lucas Stach 2021-07-17 172 base =3D devm_platform_ioremap= _resource(pdev, 0); 446185fda14696 Lucas Stach 2021-07-17 173 if (IS_ERR(base)) 446185fda14696 Lucas Stach 2021-07-17 174 return PTR_ERR(base); 446185fda14696 Lucas Stach 2021-07-17 175 = 446185fda14696 Lucas Stach 2021-07-17 176 regmap_config.max_register =3D= bc_data->max_reg; 446185fda14696 Lucas Stach 2021-07-17 177 bc->regmap =3D devm_regmap_ini= t_mmio(dev, base, ®map_config); 446185fda14696 Lucas Stach 2021-07-17 178 if (IS_ERR(bc->regmap)) 446185fda14696 Lucas Stach 2021-07-17 179 return dev_err_probe(dev, PTR= _ERR(bc->regmap), 446185fda14696 Lucas Stach 2021-07-17 180 "failed to init regmap= \n"); 446185fda14696 Lucas Stach 2021-07-17 181 = 446185fda14696 Lucas Stach 2021-07-17 182 bc->domains =3D devm_kcalloc(d= ev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 183 sizeof(struct imx8m_blk= _ctrl_domain), 446185fda14696 Lucas Stach 2021-07-17 184 GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 185 if (!bc->domains) 446185fda14696 Lucas Stach 2021-07-17 186 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 187 = 446185fda14696 Lucas Stach 2021-07-17 188 bc->onecell_data.num_domains = =3D bc_data->num_domains; 446185fda14696 Lucas Stach 2021-07-17 189 bc->onecell_data.xlate =3D imx= 8m_blk_ctrl_xlate; 446185fda14696 Lucas Stach 2021-07-17 190 bc->onecell_data.domains =3D 446185fda14696 Lucas Stach 2021-07-17 191 devm_kcalloc(dev, bc_data->nu= m_domains, 446185fda14696 Lucas Stach 2021-07-17 192 sizeof(struct generic_p= m_domain *), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 193 if (!bc->onecell_data.domains) 446185fda14696 Lucas Stach 2021-07-17 194 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 195 = 446185fda14696 Lucas Stach 2021-07-17 196 bc->bus_power_dev =3D genpd_de= v_pm_attach_by_name(dev, "bus"); 446185fda14696 Lucas Stach 2021-07-17 197 if (IS_ERR(bc->bus_power_dev)) 446185fda14696 Lucas Stach 2021-07-17 198 return dev_err_probe(dev, PTR= _ERR(bc->bus_power_dev), 446185fda14696 Lucas Stach 2021-07-17 199 "failed to attach powe= r domain\n"); 446185fda14696 Lucas Stach 2021-07-17 200 = 446185fda14696 Lucas Stach 2021-07-17 201 for (i =3D 0; i < bc_data->num= _domains; i++) { 446185fda14696 Lucas Stach 2021-07-17 202 const struct imx8m_blk_ctrl_d= omain_data *data =3D &bc_data->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 203 struct imx8m_blk_ctrl_domain = *domain =3D &bc->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 204 int j; 446185fda14696 Lucas Stach 2021-07-17 205 = 446185fda14696 Lucas Stach 2021-07-17 206 domain->data =3D data; 446185fda14696 Lucas Stach 2021-07-17 207 = 446185fda14696 Lucas Stach 2021-07-17 208 for (j =3D 0; j < data->num_c= lks; j++) 446185fda14696 Lucas Stach 2021-07-17 209 domain->clks[j].id =3D data-= >clk_names[j]; 446185fda14696 Lucas Stach 2021-07-17 210 = 446185fda14696 Lucas Stach 2021-07-17 211 ret =3D devm_clk_bulk_get(dev= , data->num_clks, domain->clks); 446185fda14696 Lucas Stach 2021-07-17 212 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 213 dev_err_probe(dev, ret, "fai= led to get clock\n"); 446185fda14696 Lucas Stach 2021-07-17 214 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 215 } 446185fda14696 Lucas Stach 2021-07-17 216 = 446185fda14696 Lucas Stach 2021-07-17 217 domain->power_dev =3D 446185fda14696 Lucas Stach 2021-07-17 218 dev_pm_domain_attach_by_name= (dev, data->gpc_name); 446185fda14696 Lucas Stach 2021-07-17 219 if (IS_ERR(domain->power_dev = )) { 446185fda14696 Lucas Stach 2021-07-17 220 dev_err_probe(dev, PTR_ERR(d= omain->power_dev), 446185fda14696 Lucas Stach 2021-07-17 221 "failed to attach pow= er domain\n"); 446185fda14696 Lucas Stach 2021-07-17 @222 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 223 } 446185fda14696 Lucas Stach 2021-07-17 224 = 446185fda14696 Lucas Stach 2021-07-17 225 domain->genpd.name =3D data->= name; 446185fda14696 Lucas Stach 2021-07-17 226 domain->genpd.power_on =3D im= x8m_blk_ctrl_power_on; 446185fda14696 Lucas Stach 2021-07-17 227 domain->genpd.power_off =3D i= mx8m_blk_ctrl_power_off; 446185fda14696 Lucas Stach 2021-07-17 228 domain->bc =3D bc; 446185fda14696 Lucas Stach 2021-07-17 229 = 446185fda14696 Lucas Stach 2021-07-17 230 ret =3D pm_genpd_init(&domain= ->genpd, NULL, true); 446185fda14696 Lucas Stach 2021-07-17 231 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 232 dev_err_probe(dev, ret, "fai= led to init power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 233 dev_pm_domain_detach(domain-= >power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 234 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 235 } 446185fda14696 Lucas Stach 2021-07-17 236 = 446185fda14696 Lucas Stach 2021-07-17 237 /* 446185fda14696 Lucas Stach 2021-07-17 238 * We use runtime PM to trigg= er power on/off of the upstream GPC 446185fda14696 Lucas Stach 2021-07-17 239 * domain, as a strict hierar= chical parent/child power domain 446185fda14696 Lucas Stach 2021-07-17 240 * setup doesn't allow us to = meet the sequencing requirements. 446185fda14696 Lucas Stach 2021-07-17 241 * This means we have nested = locking of genpd locks, without the 446185fda14696 Lucas Stach 2021-07-17 242 * nesting being visible at t= he genpd level, so we need a 446185fda14696 Lucas Stach 2021-07-17 243 * separate lock class to mak= e lockdep aware of the fact that 446185fda14696 Lucas Stach 2021-07-17 244 * this are separate domain l= ocks that can be nested without a 446185fda14696 Lucas Stach 2021-07-17 245 * self-deadlock. 446185fda14696 Lucas Stach 2021-07-17 246 */ 446185fda14696 Lucas Stach 2021-07-17 247 lockdep_set_class(&domain->ge= npd.mlock, 446185fda14696 Lucas Stach 2021-07-17 248 &blk_ctrl_genpd_lock_clas= s); 446185fda14696 Lucas Stach 2021-07-17 249 = 446185fda14696 Lucas Stach 2021-07-17 250 bc->onecell_data.domains[i] = =3D &domain->genpd; 446185fda14696 Lucas Stach 2021-07-17 251 } 446185fda14696 Lucas Stach 2021-07-17 252 = 446185fda14696 Lucas Stach 2021-07-17 253 ret =3D of_genpd_add_provider_= onecell(dev->of_node, &bc->onecell_data); 446185fda14696 Lucas Stach 2021-07-17 254 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 255 dev_err_probe(dev, ret, "fail= ed to add power domain provider\n"); 446185fda14696 Lucas Stach 2021-07-17 256 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 257 } 446185fda14696 Lucas Stach 2021-07-17 258 = 446185fda14696 Lucas Stach 2021-07-17 259 bc->power_nb.notifier_call =3D= bc_data->power_notifier_fn; 446185fda14696 Lucas Stach 2021-07-17 260 ret =3D dev_pm_genpd_add_notif= ier(bc->bus_power_dev, &bc->power_nb); 446185fda14696 Lucas Stach 2021-07-17 261 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 262 dev_err_probe(dev, ret, "fail= ed to add power notifier\n"); 446185fda14696 Lucas Stach 2021-07-17 263 goto cleanup_provider; 446185fda14696 Lucas Stach 2021-07-17 264 } 446185fda14696 Lucas Stach 2021-07-17 265 = 446185fda14696 Lucas Stach 2021-07-17 266 dev_set_drvdata(dev, bc); 446185fda14696 Lucas Stach 2021-07-17 267 = 446185fda14696 Lucas Stach 2021-07-17 268 return 0; 446185fda14696 Lucas Stach 2021-07-17 269 = 446185fda14696 Lucas Stach 2021-07-17 270 cleanup_provider: 446185fda14696 Lucas Stach 2021-07-17 271 of_genpd_del_provider(dev->of_= node); 446185fda14696 Lucas Stach 2021-07-17 272 cleanup_pds: 446185fda14696 Lucas Stach 2021-07-17 273 for (i--; i >=3D 0; i--) { 446185fda14696 Lucas Stach 2021-07-17 274 pm_genpd_remove(&bc->domains[= i].genpd); 446185fda14696 Lucas Stach 2021-07-17 275 dev_pm_domain_detach(bc->doma= ins[i].power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 276 } 446185fda14696 Lucas Stach 2021-07-17 277 = 446185fda14696 Lucas Stach 2021-07-17 278 dev_pm_domain_detach(bc->bus_p= ower_dev, true); 446185fda14696 Lucas Stach 2021-07-17 279 = 446185fda14696 Lucas Stach 2021-07-17 280 return ret; 446185fda14696 Lucas Stach 2021-07-17 281 } 446185fda14696 Lucas Stach 2021-07-17 282 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============6574061245439468169== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============6574061245439468169==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============8734668305757544177==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH 09/17] soc: imx: add i.MX8M blk-ctrl driver Date: Mon, 19 Jul 2021 09:12:15 +0300 Message-ID: <202107181452.0x9rl7rG-lkp@intel.com> In-Reply-To: <20210716232916.3572966-10-l.stach@pengutronix.de> List-Id: --===============8734668305757544177== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Lucas, url: https://github.com/0day-ci/linux/commits/Lucas-Stach/i-MX8MM-GPC-im= provements-and-BLK_CTRL-driver/20210718-102944 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git = for-next config: i386-randconfig-m021-20210718 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/imx8m-blk-ctrl.c:222 imx8m_blk_ctrl_probe() warn: missing e= rror code 'ret' vim +/ret +222 drivers/soc/imx/imx8m-blk-ctrl.c 446185fda14696 Lucas Stach 2021-07-17 150 static int imx8m_blk_ctrl_probe= (struct platform_device *pdev) 446185fda14696 Lucas Stach 2021-07-17 151 { 446185fda14696 Lucas Stach 2021-07-17 152 const struct imx8m_blk_ctrl_da= ta *bc_data; 446185fda14696 Lucas Stach 2021-07-17 153 struct device *dev =3D &pdev->= dev; 446185fda14696 Lucas Stach 2021-07-17 154 struct imx8m_blk_ctrl *bc; 446185fda14696 Lucas Stach 2021-07-17 155 void __iomem *base; 446185fda14696 Lucas Stach 2021-07-17 156 int i, ret; 446185fda14696 Lucas Stach 2021-07-17 157 = 446185fda14696 Lucas Stach 2021-07-17 158 struct regmap_config regmap_co= nfig =3D { 446185fda14696 Lucas Stach 2021-07-17 159 .reg_bits =3D 32, 446185fda14696 Lucas Stach 2021-07-17 160 .val_bits =3D 32, 446185fda14696 Lucas Stach 2021-07-17 161 .reg_stride =3D 4, 446185fda14696 Lucas Stach 2021-07-17 162 }; 446185fda14696 Lucas Stach 2021-07-17 163 = 446185fda14696 Lucas Stach 2021-07-17 164 bc =3D devm_kzalloc(dev, sizeo= f(*bc), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 165 if (!bc) 446185fda14696 Lucas Stach 2021-07-17 166 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 167 = 446185fda14696 Lucas Stach 2021-07-17 168 bc->dev =3D dev; 446185fda14696 Lucas Stach 2021-07-17 169 = 446185fda14696 Lucas Stach 2021-07-17 170 bc_data =3D of_device_get_matc= h_data(dev); 446185fda14696 Lucas Stach 2021-07-17 171 = 446185fda14696 Lucas Stach 2021-07-17 172 base =3D devm_platform_ioremap= _resource(pdev, 0); 446185fda14696 Lucas Stach 2021-07-17 173 if (IS_ERR(base)) 446185fda14696 Lucas Stach 2021-07-17 174 return PTR_ERR(base); 446185fda14696 Lucas Stach 2021-07-17 175 = 446185fda14696 Lucas Stach 2021-07-17 176 regmap_config.max_register =3D= bc_data->max_reg; 446185fda14696 Lucas Stach 2021-07-17 177 bc->regmap =3D devm_regmap_ini= t_mmio(dev, base, ®map_config); 446185fda14696 Lucas Stach 2021-07-17 178 if (IS_ERR(bc->regmap)) 446185fda14696 Lucas Stach 2021-07-17 179 return dev_err_probe(dev, PTR= _ERR(bc->regmap), 446185fda14696 Lucas Stach 2021-07-17 180 "failed to init regmap= \n"); 446185fda14696 Lucas Stach 2021-07-17 181 = 446185fda14696 Lucas Stach 2021-07-17 182 bc->domains =3D devm_kcalloc(d= ev, bc_data->num_domains, 446185fda14696 Lucas Stach 2021-07-17 183 sizeof(struct imx8m_blk= _ctrl_domain), 446185fda14696 Lucas Stach 2021-07-17 184 GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 185 if (!bc->domains) 446185fda14696 Lucas Stach 2021-07-17 186 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 187 = 446185fda14696 Lucas Stach 2021-07-17 188 bc->onecell_data.num_domains = =3D bc_data->num_domains; 446185fda14696 Lucas Stach 2021-07-17 189 bc->onecell_data.xlate =3D imx= 8m_blk_ctrl_xlate; 446185fda14696 Lucas Stach 2021-07-17 190 bc->onecell_data.domains =3D 446185fda14696 Lucas Stach 2021-07-17 191 devm_kcalloc(dev, bc_data->nu= m_domains, 446185fda14696 Lucas Stach 2021-07-17 192 sizeof(struct generic_p= m_domain *), GFP_KERNEL); 446185fda14696 Lucas Stach 2021-07-17 193 if (!bc->onecell_data.domains) 446185fda14696 Lucas Stach 2021-07-17 194 return -ENOMEM; 446185fda14696 Lucas Stach 2021-07-17 195 = 446185fda14696 Lucas Stach 2021-07-17 196 bc->bus_power_dev =3D genpd_de= v_pm_attach_by_name(dev, "bus"); 446185fda14696 Lucas Stach 2021-07-17 197 if (IS_ERR(bc->bus_power_dev)) 446185fda14696 Lucas Stach 2021-07-17 198 return dev_err_probe(dev, PTR= _ERR(bc->bus_power_dev), 446185fda14696 Lucas Stach 2021-07-17 199 "failed to attach powe= r domain\n"); 446185fda14696 Lucas Stach 2021-07-17 200 = 446185fda14696 Lucas Stach 2021-07-17 201 for (i =3D 0; i < bc_data->num= _domains; i++) { 446185fda14696 Lucas Stach 2021-07-17 202 const struct imx8m_blk_ctrl_d= omain_data *data =3D &bc_data->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 203 struct imx8m_blk_ctrl_domain = *domain =3D &bc->domains[i]; 446185fda14696 Lucas Stach 2021-07-17 204 int j; 446185fda14696 Lucas Stach 2021-07-17 205 = 446185fda14696 Lucas Stach 2021-07-17 206 domain->data =3D data; 446185fda14696 Lucas Stach 2021-07-17 207 = 446185fda14696 Lucas Stach 2021-07-17 208 for (j =3D 0; j < data->num_c= lks; j++) 446185fda14696 Lucas Stach 2021-07-17 209 domain->clks[j].id =3D data-= >clk_names[j]; 446185fda14696 Lucas Stach 2021-07-17 210 = 446185fda14696 Lucas Stach 2021-07-17 211 ret =3D devm_clk_bulk_get(dev= , data->num_clks, domain->clks); 446185fda14696 Lucas Stach 2021-07-17 212 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 213 dev_err_probe(dev, ret, "fai= led to get clock\n"); 446185fda14696 Lucas Stach 2021-07-17 214 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 215 } 446185fda14696 Lucas Stach 2021-07-17 216 = 446185fda14696 Lucas Stach 2021-07-17 217 domain->power_dev =3D 446185fda14696 Lucas Stach 2021-07-17 218 dev_pm_domain_attach_by_name= (dev, data->gpc_name); 446185fda14696 Lucas Stach 2021-07-17 219 if (IS_ERR(domain->power_dev = )) { = ^ Extra space character. 446185fda14696 Lucas Stach 2021-07-17 220 dev_err_probe(dev, PTR_ERR(d= omain->power_dev), 446185fda14696 Lucas Stach 2021-07-17 221 "failed to attach pow= er domain\n"); 446185fda14696 Lucas Stach 2021-07-17 @222 goto cleanup_pds; ret =3D PTR_ERR(domain->power_dev); 446185fda14696 Lucas Stach 2021-07-17 223 } 446185fda14696 Lucas Stach 2021-07-17 224 = 446185fda14696 Lucas Stach 2021-07-17 225 domain->genpd.name =3D data->= name; 446185fda14696 Lucas Stach 2021-07-17 226 domain->genpd.power_on =3D im= x8m_blk_ctrl_power_on; 446185fda14696 Lucas Stach 2021-07-17 227 domain->genpd.power_off =3D i= mx8m_blk_ctrl_power_off; 446185fda14696 Lucas Stach 2021-07-17 228 domain->bc =3D bc; 446185fda14696 Lucas Stach 2021-07-17 229 = 446185fda14696 Lucas Stach 2021-07-17 230 ret =3D pm_genpd_init(&domain= ->genpd, NULL, true); 446185fda14696 Lucas Stach 2021-07-17 231 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 232 dev_err_probe(dev, ret, "fai= led to init power domain\n"); 446185fda14696 Lucas Stach 2021-07-17 233 dev_pm_domain_detach(domain-= >power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 234 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 235 } 446185fda14696 Lucas Stach 2021-07-17 236 = 446185fda14696 Lucas Stach 2021-07-17 237 /* 446185fda14696 Lucas Stach 2021-07-17 238 * We use runtime PM to trigg= er power on/off of the upstream GPC 446185fda14696 Lucas Stach 2021-07-17 239 * domain, as a strict hierar= chical parent/child power domain 446185fda14696 Lucas Stach 2021-07-17 240 * setup doesn't allow us to = meet the sequencing requirements. 446185fda14696 Lucas Stach 2021-07-17 241 * This means we have nested = locking of genpd locks, without the 446185fda14696 Lucas Stach 2021-07-17 242 * nesting being visible at t= he genpd level, so we need a 446185fda14696 Lucas Stach 2021-07-17 243 * separate lock class to mak= e lockdep aware of the fact that 446185fda14696 Lucas Stach 2021-07-17 244 * this are separate domain l= ocks that can be nested without a 446185fda14696 Lucas Stach 2021-07-17 245 * self-deadlock. 446185fda14696 Lucas Stach 2021-07-17 246 */ 446185fda14696 Lucas Stach 2021-07-17 247 lockdep_set_class(&domain->ge= npd.mlock, 446185fda14696 Lucas Stach 2021-07-17 248 &blk_ctrl_genpd_lock_clas= s); 446185fda14696 Lucas Stach 2021-07-17 249 = 446185fda14696 Lucas Stach 2021-07-17 250 bc->onecell_data.domains[i] = =3D &domain->genpd; 446185fda14696 Lucas Stach 2021-07-17 251 } 446185fda14696 Lucas Stach 2021-07-17 252 = 446185fda14696 Lucas Stach 2021-07-17 253 ret =3D of_genpd_add_provider_= onecell(dev->of_node, &bc->onecell_data); 446185fda14696 Lucas Stach 2021-07-17 254 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 255 dev_err_probe(dev, ret, "fail= ed to add power domain provider\n"); 446185fda14696 Lucas Stach 2021-07-17 256 goto cleanup_pds; 446185fda14696 Lucas Stach 2021-07-17 257 } 446185fda14696 Lucas Stach 2021-07-17 258 = 446185fda14696 Lucas Stach 2021-07-17 259 bc->power_nb.notifier_call =3D= bc_data->power_notifier_fn; 446185fda14696 Lucas Stach 2021-07-17 260 ret =3D dev_pm_genpd_add_notif= ier(bc->bus_power_dev, &bc->power_nb); 446185fda14696 Lucas Stach 2021-07-17 261 if (ret) { 446185fda14696 Lucas Stach 2021-07-17 262 dev_err_probe(dev, ret, "fail= ed to add power notifier\n"); 446185fda14696 Lucas Stach 2021-07-17 263 goto cleanup_provider; 446185fda14696 Lucas Stach 2021-07-17 264 } 446185fda14696 Lucas Stach 2021-07-17 265 = 446185fda14696 Lucas Stach 2021-07-17 266 dev_set_drvdata(dev, bc); 446185fda14696 Lucas Stach 2021-07-17 267 = 446185fda14696 Lucas Stach 2021-07-17 268 return 0; 446185fda14696 Lucas Stach 2021-07-17 269 = 446185fda14696 Lucas Stach 2021-07-17 270 cleanup_provider: 446185fda14696 Lucas Stach 2021-07-17 271 of_genpd_del_provider(dev->of_= node); 446185fda14696 Lucas Stach 2021-07-17 272 cleanup_pds: 446185fda14696 Lucas Stach 2021-07-17 273 for (i--; i >=3D 0; i--) { 446185fda14696 Lucas Stach 2021-07-17 274 pm_genpd_remove(&bc->domains[= i].genpd); 446185fda14696 Lucas Stach 2021-07-17 275 dev_pm_domain_detach(bc->doma= ins[i].power_dev, true); 446185fda14696 Lucas Stach 2021-07-17 276 } 446185fda14696 Lucas Stach 2021-07-17 277 = 446185fda14696 Lucas Stach 2021-07-17 278 dev_pm_domain_detach(bc->bus_p= ower_dev, true); 446185fda14696 Lucas Stach 2021-07-17 279 = 446185fda14696 Lucas Stach 2021-07-17 280 return ret; 446185fda14696 Lucas Stach 2021-07-17 281 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============8734668305757544177==--