From patchwork Mon Aug 14 10:22:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 135360 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2690391vqi; Mon, 14 Aug 2023 04:57:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE3oSWCphHcTVFhUBLBDuty+3NvDL5gY9FyCkwWvBOBBiDL6m1BqTEGVHqWl1y4bxUgk6ap X-Received: by 2002:a05:6402:2045:b0:523:1e0a:e12e with SMTP id bc5-20020a056402204500b005231e0ae12emr6638873edb.23.1692014266044; Mon, 14 Aug 2023 04:57:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1692014266; cv=pass; d=google.com; s=arc-20160816; b=rqYug53dlUKNt3v1o5yx8e1eQyIbKGoa5flURCfRXUnKli39Ih0VTsqcVVZpVpX5HX shFJDQLLX+9OVNKncjVpufUr7LOjW3sws8wOs63l8iNWMtFLp11qZUh6h0BVKm0DL6sc q6rhp1LfmOhvlj+gaEqd9lZ+sgsU/8emQfZUxzYpmIZZLFHyRLzsAKbXgO3qG/ePgUjT NKdipAWIaDSCqiF76tUZ35J5goorOU9wYn9p4oyYss/x3Shd0mGCBGyIXEtdarffA5AA mWwqBAia+XVO5p15+TFNeESbL0KcE4LjEh+w7lnufg83UTQXgRpIUWVf5+v/9Xt1Jb6G XXlg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=koYiG5b+GWQDB0dH/1k77y56afMIb3pFYQZuH3sjXss=; fh=2JgRMhpdeoOcohjPTBBaG2ahh0/p9mFg3dPYQtU3m+U=; b=w0uWInh8VAiv05HSS4NdkmvYrfKFgXYfH6fCaR59i9HRG4o7httByiiXxD937JiD0p hqXnKjO7JxhQ3ZKvTsNobtT9SAEcODlH4uhVBNXOl35yna7TXoAh+YrSu797Id/A2Lwa n4EOQPMC3i0i2hhNIFPJPnuebHzub+TWi1AtOQLs7ls91fD/4ovYa/fGZAMxzRNUrFH+ pgDcTj8vhdUPJveYBhKYQ+QL89spXStwvR12G56mlB6SR4XMRJ9qFtsGT8fvX4FQ7voe 7JDEhrOkY2eFRBDylA/fSpMCOWrbOs86hixp8BW6QxXrmwVWjum5t19kma8o6UPCIG3b pWdg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b="pT/+VWNL"; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i3-20020a50fc03000000b0052563bff34fsi1797718edr.263.2023.08.14.04.57.22; Mon, 14 Aug 2023 04:57:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b="pT/+VWNL"; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234493AbjHNKXV (ORCPT + 99 others); Mon, 14 Aug 2023 06:23:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236287AbjHNKXF (ORCPT ); Mon, 14 Aug 2023 06:23:05 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2040.outbound.protection.outlook.com [40.107.220.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53555EA for ; Mon, 14 Aug 2023 03:23:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XUVT+r2s6cHesDyUp5yPFhm2X36cpQUh57PNIZxc39XjNNRVbEzTZ003BEGE3aCzMUWeXIKZfd9BEFeE6U5DMt7tcOjt0P7PL2GRfPdJ89rE1a/KsS6URuZNNS6OVzyJzcNq32Vz+EQkSsufMHRjq3Xsf8OcZSjwSEFLovBswzTlfFL9RS6VDTsJBg25y/hNYtyomFSLCoaCUx/L9USTcnO8GiJcaXWNLipiS0WkILSBsEPokVogG9uoGzMHQ9gOBcCrm3tvOdzWNo7d+HmbIOoJ4H5sAJXU6xWaRHKtzIq4zk5m2uWQdxsay/atlEDC0xfeNGO4ZTFMDxT6PpQTSQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=koYiG5b+GWQDB0dH/1k77y56afMIb3pFYQZuH3sjXss=; b=VU6fsb2h1KU1HM0ZaomiHGPxtyQBr7lmmzTUy9iBvnZz4WV9psst44BLQVMgW3Aw0U1TDoVkRrI4s7qqkm6t8Qu7RBHue4NhyP/LhQpROJCp1hkoESNn/sSMBtkS+Jf4c4PjavzYILfFvOpez4j7fuIFkJ047Y9v2AAUI7Ti4utEy8shk08yj75mlGsCtiyKUz28DllYicWixX/3Fv58O2hc9uGySV4w9qCAwlzc+DdxHZ3uZ0tR679qr6DPPXraQdw+mwZG2RqrMdAFixl/dhiiUoj4MNOwz+VY7iMFckMxSTLsx37HONpQKUzGs5jNHRXBgqUDepl8xXpIis4PdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linuxfoundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=koYiG5b+GWQDB0dH/1k77y56afMIb3pFYQZuH3sjXss=; b=pT/+VWNL9vjkFhQnvtKBvHFLSttjZ2/EKGurG5u49ulMwkI6E0kvLRE4aGSPcib9ZneEomwSdwtEzTjmV8vb/m/JgbQviTrsuViBcOkQbDXDWMBon2IxjdBs6fhfLal1OcGVnwa6wkNLQhTH46WZTxjz0E7YV9JIom1/MKbJAOQ= Received: from CH0PR13CA0041.namprd13.prod.outlook.com (2603:10b6:610:b2::16) by BY5PR12MB5015.namprd12.prod.outlook.com (2603:10b6:a03:1db::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 10:22:59 +0000 Received: from CY4PEPF0000EDD5.namprd03.prod.outlook.com (2603:10b6:610:b2:cafe::6b) by CH0PR13CA0041.outlook.office365.com (2603:10b6:610:b2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.13 via Frontend Transport; Mon, 14 Aug 2023 10:22:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by CY4PEPF0000EDD5.mail.protection.outlook.com (10.167.241.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6699.12 via Frontend Transport; Mon, 14 Aug 2023 10:22:59 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:22:57 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:22:56 -0500 Received: from xhdipdslab59.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.27 via Frontend Transport; Mon, 14 Aug 2023 05:22:53 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v3 1/5] cdx: Remove cdx controller list from cdx bus system Date: Mon, 14 Aug 2023 15:52:19 +0530 Message-ID: <20230814102223.418046-2-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230814102223.418046-1-abhijit.gangurde@amd.com> References: <20230814102223.418046-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD5:EE_|BY5PR12MB5015:EE_ X-MS-Office365-Filtering-Correlation-Id: d39b34b5-ad93-4779-373d-08db9cb06ef1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WRbRc4gADKfdBH0epXiI0VlrZ7P+cRMW67cnUDC9+AEzOIJwgnFff/oG8CuKRC+z5qP7lAfafywqNbJ4povOZfCAagW7cCloZ+bJtSWG4ZU8eqyIXbUWA4TmOXSQcnQzkbNSBcPgVrnl4NCb9G+/vxy/GCG9N2nGs2QW+cFTVuJx3Og+zg6iResjuIvBei33JeKkRADqyh5cDJXtk+tHoSdBhIgDO/r2h7ldJ43v/FB/6+C/HbhBv41y0Os8UGiHJxzUGBD5xEVWXRz52gG1y9UKmf7l6c9xWZ0V7rBUqn0OwB42fbRRyadc3gSPBzQ8vFUNeWJSa8VKB0Zea4z04Maf0BWwxlp066RSwL8l1qcu0NDvvo5aMm+UoHjfhbimHtHO+NGDMPf50Rxh4AzE5KdArKkiCUhkyeCmiJWe4Ber83j3Fm42jY4uKr9MOo3+RVS80H7rB8+FiwDMjfKkLIeylVx9ggRSr7+iVD1lW6Naw50VLw2X+jh3M1H03pNyEAi2E/J8rjMD0/IOck4EZNoXl85nzu6E6c37RFNi9kt2TTGpP07ePkRswM75ZCynw2QCaiXyCH1bZ85K/xuxchMJiDAZZhlnOHnUjDx/LVuxax+/2dnGwTwvwfBOoLhM6HcuvFnGXVwRuZKMMXRS21IA2/FLa6PZpjdd1EE9NreV9VhR3NFan5dBLQhg6zOCQhBnWqaFRpYga4Kiq720us4KBHMDscs77W4eGm+RBX94ISJ6GS0rIwwK+ocGqGM/wJol56ehwcQTb3fKk1dDXg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(376002)(396003)(39860400002)(136003)(346002)(82310400008)(451199021)(1800799006)(186006)(46966006)(40470700004)(36840700001)(40480700001)(54906003)(110136005)(6666004)(40460700003)(478600001)(81166007)(356005)(82740400003)(5660300002)(2906002)(36756003)(86362001)(44832011)(4326008)(70586007)(70206006)(41300700001)(336012)(8936002)(316002)(8676002)(1076003)(26005)(36860700001)(83380400001)(426003)(47076005)(2616005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 10:22:59.1442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d39b34b5-ad93-4779-373d-08db9cb06ef1 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD5.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB5015 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774205550857949643 X-GMAIL-MSGID: 1774205550857949643 Remove xarray list of cdx controller. Instead, use platform bus to locate the cdx controller using compat string used by cdx controller platform driver. Signed-off-by: Abhijit Gangurde --- drivers/cdx/cdx.c | 39 ++++++++++++++++++++++++------------- include/linux/cdx/cdx_bus.h | 2 ++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index d2cad4c670a0..1c0f76cf4f15 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -60,7 +60,7 @@ #include #include #include -#include +#include #include #include #include @@ -70,8 +70,10 @@ #define CDX_DEFAULT_DMA_MASK (~0ULL) #define MAX_CDX_CONTROLLERS 16 -/* CDX controllers registered with the CDX bus */ -static DEFINE_XARRAY_ALLOC(cdx_controllers); +/* IDA for CDX controllers registered with the CDX bus */ +DEFINE_IDA(cdx_controller_ida); + +static char *compat_node_name = "xlnx,versal-net-cdx"; /** * cdx_dev_reset - Reset a CDX device @@ -384,7 +386,8 @@ static ssize_t rescan_store(const struct bus_type *bus, const char *buf, size_t count) { struct cdx_controller *cdx; - unsigned long index; + struct platform_device *pd; + struct device_node *np; bool val; if (kstrtobool(buf, &val) < 0) @@ -397,12 +400,19 @@ static ssize_t rescan_store(const struct bus_type *bus, cdx_unregister_devices(&cdx_bus_type); /* Rescan all the devices */ - xa_for_each(&cdx_controllers, index, cdx) { - int ret; + for_each_compatible_node(np, NULL, compat_node_name) { + if (!np) + return -EINVAL; - ret = cdx->ops->scan(cdx); - if (ret) - dev_err(cdx->dev, "cdx bus scanning failed\n"); + pd = of_find_device_by_node(np); + if (!pd) + return -EINVAL; + + cdx = platform_get_drvdata(pd); + if (cdx && cdx->controller_registered && cdx->ops->scan) + cdx->ops->scan(cdx); + + put_device(&pd->dev); } return count; @@ -520,17 +530,19 @@ int cdx_register_controller(struct cdx_controller *cdx) { int ret; - ret = xa_alloc(&cdx_controllers, &cdx->id, cdx, - XA_LIMIT(0, MAX_CDX_CONTROLLERS - 1), GFP_KERNEL); - if (ret) { + ret = ida_alloc_range(&cdx_controller_ida, 0, MAX_CDX_CONTROLLERS - 1, GFP_KERNEL); + if (ret < 0) { dev_err(cdx->dev, "No free index available. Maximum controllers already registered\n"); cdx->id = (u8)MAX_CDX_CONTROLLERS; return ret; } + cdx->id = ret; + /* Scan all the devices */ cdx->ops->scan(cdx); + cdx->controller_registered = true; return 0; } @@ -541,8 +553,9 @@ void cdx_unregister_controller(struct cdx_controller *cdx) if (cdx->id >= MAX_CDX_CONTROLLERS) return; + cdx->controller_registered = false; device_for_each_child(cdx->dev, NULL, cdx_unregister_device); - xa_erase(&cdx_controllers, cdx->id); + ida_free(&cdx_controller_ida, cdx->id); } EXPORT_SYMBOL_GPL(cdx_unregister_controller); diff --git a/include/linux/cdx/cdx_bus.h b/include/linux/cdx/cdx_bus.h index bead71b7bc73..82c27b8c94e1 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -63,12 +63,14 @@ struct cdx_ops { * @dev: Linux device associated with the CDX controller. * @priv: private data * @id: Controller ID + * @controller_registered: controller registered with bus * @ops: CDX controller ops */ struct cdx_controller { struct device *dev; void *priv; u32 id; + bool controller_registered; struct cdx_ops *ops; }; From patchwork Mon Aug 14 10:22:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 135346 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2664850vqi; Mon, 14 Aug 2023 04:06:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG0Q1OMYKXEtw3QVIEfl+++SFyZ4rft37dw4S1tECLEXpStwAGu3p2sv/mnpRacoASewIjH X-Received: by 2002:a05:6512:2804:b0:4f3:d682:7b1c with SMTP id cf4-20020a056512280400b004f3d6827b1cmr7587515lfb.45.1692011175570; Mon, 14 Aug 2023 04:06:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1692011175; cv=pass; d=google.com; s=arc-20160816; b=tHUvt2sko0pqHOh3dk7mnQGtR1GOSpU8dyerY8soAu1a8V6BDuz7awMarpFh+8Qoe0 dOr4HyH8OwdNPS3G6XcDari7gnNemqvWKPYddC7ocyYP44JYYqRM4u5LrevtxyqKw3Ir x40HccQUJ58pv1wgKm2ggFSA/0S4KhULzi7nLpp2Ru5ZR7o6Lkkd4U+cScxQbawC1z8P CNEaX6i0OQn19/tSDRb05taIKGDve+M1ajXkrb1w4Onx8U2/mScuffDLbix8CdLGGRsr w9RhaNoNN5fQcI7sMcN/jXIloqPiHoxeHigjS1XDtZ5QrTDsv6uCFavGn6nHqD5ljhRy /TFQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RlP9OlLsHCBCeyweJPg5LQk9F5b0AuE5VrX/1zL3Kzc=; fh=2JgRMhpdeoOcohjPTBBaG2ahh0/p9mFg3dPYQtU3m+U=; b=Tq1FhMJ5nyNcPnnSIb3K+H92j15EH/33EcIvpR7lIEnrlPMyY1rCe0t0yAdLQuzoEq KAU5oNkAVco96q9mr55idnaPZrE+fS/hvEtXdR5FD2RliegQqKZXOnX+ApFpws8ZybMS yMZYnQWNkQd0Nzj0u53CN52LesDa6FdW9zsaBvGs4u+2Kb7PDZw6qxRSsVu7NK1FeXOg SJmjLadq18Oaj3o8qlQztmSArYxBLlS6ErSVMzpsHDdgwKnVOLJQ7no9/rstbcUIGYAG RW6ySyFOVFJAZXzBuiL5mquZiPYnWZgoxSXqpxzLARgTzZkD5aNoXEmOgwg7hq1ZhARw 4hAg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=egHbsYA2; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f18-20020a1709062c5200b0099325282818si7616295ejh.571.2023.08.14.04.05.51; Mon, 14 Aug 2023 04:06:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=egHbsYA2; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234433AbjHNKXv (ORCPT + 99 others); Mon, 14 Aug 2023 06:23:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236816AbjHNKXr (ORCPT ); Mon, 14 Aug 2023 06:23:47 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2044.outbound.protection.outlook.com [40.107.93.44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D18194 for ; Mon, 14 Aug 2023 03:23:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jh7aZT+NDAawa+quIUXGBHGTdW6dBpLUk6LlkV4aDS5Qub8d0GKrZbJeLhy2WjqNUlPluVqtxHuAYHiguki5C6iMdOhtuo/2B3SMOnfkPn2Ky+8snUjF37xlHf58e9IOc6auFr0fkl635f7K+q6u/HWg3HlOIDHV/L164GPg16ubDHQ9obRTfJp3+PEDasA8PAB2DHw2jxEizQ2jnVoS9SFunAWcB5lU04o6DbAHbopRUEwLiiL9mrmSZKQUTgRUpAcBSRMqa2Q+ha8qJP+hPlVMHQJdOxIEOhfWEI8EnYEDU1jeOQ1Lj6gtN91kNRuR1uAnVJ+5JKf5+4V+l7sh2Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RlP9OlLsHCBCeyweJPg5LQk9F5b0AuE5VrX/1zL3Kzc=; b=mr0VkMRbdU4zYvU0wx0gU6sWzYCNlIbxG86XXwiXrCmo96uPVAAx2YssZ8m/qVJyzFSZyJU7jC9zYZXNx4N+Lm+QZ7nktdIlULItoMrGJ9BWr3LyeGtA4LgNbcER01KjLXwWBqRWSDlRcz+xiJMy+fv2aZySAJKhDiyBAe4q80dO0xZEFHlbZv90HzwMfJOG4AvVy1S821bEsZHdDW1yjLLR6X4vA9dQZc3duFC/m93GvskqHqB5qq993qG4ypxTUgaQSdpG4fInaIEulbuO63uiGZDugxBPeOfuesod/vEn+3uzU19xksSBTXrOiOQtW7CC9z5yAno+sA9MMmfNPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linuxfoundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RlP9OlLsHCBCeyweJPg5LQk9F5b0AuE5VrX/1zL3Kzc=; b=egHbsYA2LbyFsumZ1yh5qUHyEBW4dkMzbATE76wgXF5tqI5OckomgT4fpXKRKDiF5azQxxyGpUxjSFsZMZWfccBRJy5SSWARdF1XrExwH38Vfhsxc3Oomek8x2OMh3ye1rnyoRHH/DSRRu/l0TigLIONtCot2el+EIE6A5IPyPY= Received: from SA9PR13CA0122.namprd13.prod.outlook.com (2603:10b6:806:27::7) by CY5PR12MB6084.namprd12.prod.outlook.com (2603:10b6:930:28::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.26; Mon, 14 Aug 2023 10:23:44 +0000 Received: from SN1PEPF0002636D.namprd02.prod.outlook.com (2603:10b6:806:27:cafe::7d) by SA9PR13CA0122.outlook.office365.com (2603:10b6:806:27::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.13 via Frontend Transport; Mon, 14 Aug 2023 10:23:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002636D.mail.protection.outlook.com (10.167.241.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6699.12 via Frontend Transport; Mon, 14 Aug 2023 10:23:44 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:23:42 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:23:07 -0500 Received: from xhdipdslab59.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.27 via Frontend Transport; Mon, 14 Aug 2023 05:23:05 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v3 2/5] cdx: Introduce lock to protect controller ops Date: Mon, 14 Aug 2023 15:52:20 +0530 Message-ID: <20230814102223.418046-3-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230814102223.418046-1-abhijit.gangurde@amd.com> References: <20230814102223.418046-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002636D:EE_|CY5PR12MB6084:EE_ X-MS-Office365-Filtering-Correlation-Id: 25dd624e-37b8-49f2-b977-08db9cb089cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /pQE2N2Bu3JGZGI59u6Bwa21zY+uPNrA/OXfwQGBmWaln3ja4HOcjoujKn3K5NBzLSMfLWx9799CgKo4AXgCSAm+H5cxFk6A8hOHvsYExYZdMRYikF8zfMH0i5OvZgpHaAR34Z3UlIV1wSLZNWAfI2gTmv1W/JGpsuqTWsKt/jO+N62AU+TchjYlUr3QvkYE2kOQjoT2T5hTBAtNO6o/8ONpmC3QJutZJm8xrGORGx2iPnE8NcYuZUoVT3HK2j1/uEMA+A86EK15bGJ+VPEPqw0dxzTJzsQrsj6qti+ap/BltIR9Ask5FY77g0JKFNshTgKsYDmECXGjCBTsDVd7tMu/PfcBD6NzcQG31ysqbkfiG6vwFNAmVBRfBP2/Tq/XmiNxvhSQHVTStl4W9tXUXJAaYnCPZPTi9i7qhgBnAcxObZSxG0NeT5V0uLDwX6xRg6mKDoAfDkhd0JCCOvhoqegLn0Z4BXyP7KY6yTlBaENT31Z235agKq3kPAnvE5fibejPY5wqsYnalLmUNU3UEaX9brawVdNzYCjwo01LE+2UNIDJdA4Zn0EI3ClYZ33OmF/8p+wXLip43nDQafLbKP3UAiV4W0Iw6ThZGNG2ucjc3xnrhukCgkTiYWeAnYCJgMfHamJFnSGSPWXho0SVQRNo8i6yRacy58sBJFGCcDDWIk+kSlMS690h+vq0phMyXxHQNdxzR84X0xEaog+hvXlLrOyEUDwSIKaYHkaGEcn4c5+Ise2sN+ZRaKQ5u88W6VU15u88KocnXJl3Id4mHw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(376002)(39860400002)(136003)(346002)(396003)(186006)(451199021)(1800799006)(82310400008)(40470700004)(46966006)(36840700001)(70206006)(70586007)(316002)(41300700001)(110136005)(54906003)(8936002)(8676002)(5660300002)(478600001)(6666004)(2906002)(44832011)(1076003)(336012)(83380400001)(426003)(26005)(2616005)(36860700001)(47076005)(4326008)(356005)(81166007)(40480700001)(82740400003)(86362001)(36756003)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 10:23:44.2570 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25dd624e-37b8-49f2-b977-08db9cb089cd X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002636D.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6084 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774202310581564563 X-GMAIL-MSGID: 1774202310581564563 Add a mutex lock to prevent race between controller ops initiated by the bus subsystem and the controller registration/unregistration. Signed-off-by: Abhijit Gangurde --- drivers/cdx/cdx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 1c0f76cf4f15..50df061f4537 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -72,6 +72,8 @@ /* IDA for CDX controllers registered with the CDX bus */ DEFINE_IDA(cdx_controller_ida); +/* Lock to protect controller ops */ +static DEFINE_MUTEX(cdx_controller_lock); static char *compat_node_name = "xlnx,versal-net-cdx"; @@ -396,6 +398,8 @@ static ssize_t rescan_store(const struct bus_type *bus, if (!val) return -EINVAL; + mutex_lock(&cdx_controller_lock); + /* Unregister all the devices on the bus */ cdx_unregister_devices(&cdx_bus_type); @@ -415,6 +419,8 @@ static ssize_t rescan_store(const struct bus_type *bus, put_device(&pd->dev); } + mutex_unlock(&cdx_controller_lock); + return count; } static BUS_ATTR_WO(rescan); @@ -538,11 +544,13 @@ int cdx_register_controller(struct cdx_controller *cdx) return ret; } + mutex_lock(&cdx_controller_lock); cdx->id = ret; /* Scan all the devices */ cdx->ops->scan(cdx); cdx->controller_registered = true; + mutex_unlock(&cdx_controller_lock); return 0; } @@ -553,9 +561,13 @@ void cdx_unregister_controller(struct cdx_controller *cdx) if (cdx->id >= MAX_CDX_CONTROLLERS) return; + mutex_lock(&cdx_controller_lock); + cdx->controller_registered = false; device_for_each_child(cdx->dev, NULL, cdx_unregister_device); ida_free(&cdx_controller_ida, cdx->id); + + mutex_unlock(&cdx_controller_lock); } EXPORT_SYMBOL_GPL(cdx_unregister_controller); From patchwork Mon Aug 14 10:22:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 135363 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2690884vqi; Mon, 14 Aug 2023 04:58:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHR3O0/0ns229LaJYyhicWVS17JqCCmfhP0sFFjne9EgQ1Y5WDrvcd6Bkl7lyyP9WQZe2tv X-Received: by 2002:a17:907:1dce:b0:99b:d098:1ffd with SMTP id og14-20020a1709071dce00b0099bd0981ffdmr7414046ejc.62.1692014333042; Mon, 14 Aug 2023 04:58:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1692014333; cv=pass; d=google.com; s=arc-20160816; b=G/8egOvi3LWVe8MYd5h0tgLRLqT8OngIWr6kgun2rl54CKNMRw4NPicFOBf0/o6ehp ch+8L0m4jhRhqnbUK+che3Ki/FgFnIJd8+gOOxnYrjxoV95qTzW1VH5eIzVhaPJbrNJr 5URhHOiDX9YQ8vVNIJa9LVCqOk/Yw1LSmnwywMu2iHOD0Te/P/Hr2hCuilEjNNa7Fxgz 3EZeeax8xBJ8HaLmJtjFAK9rb0+AgjzB98Ol4xvwFAUiSi1hRzJD7eP/RzkYuIWUn2zq N+d+iZcigO/wqw4eBH1SSLdZ88ihg8ix7DKfK3Pk2wlezX6UHiVssn4z5s58LWs8WlDW o0sw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=aZG1V+UWjz1QYmE8/4MIvFt0aGFPugtK9Q5EcuMj+do=; fh=ug8NUZO7Gm9n87SNmhTXmdWNRvkjqaZR8JdwD4G6VfU=; b=i6TQQ1w4PFD1aXoA8Y68AvVY5VTjBHXt8BZAge7U1lwdYNQzqUx/tQ+tif6rnIjRWO n/JJC6l3pvujkQ3DJwX2Gse8WTAWQTjlDVXYHqVJCYx+GcFm1VwNDymfUkpyUw7azEOV vqPob7AGCZINV/6JBNRPHRKP3T75QfWTMUnmDog0Lr1g4SCFNHg7sT0aRH1/zlnwgopT kf48ffMdUXV9NqlEalE1q5yJmSctX/BRhdbzs9u/UPGg9MjwuEShPE7QzhrSGhHP9RiY 0VgQv5Wzw95p9CVsXmF78TYBqmSOxwW85ohMRpCj7pCS72SF7SHGkXuoJpH19bdFwZXE 4yhA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=cXecADFX; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kg27-20020a17090776fb00b0099caf50c27fsi7500972ejc.1046.2023.08.14.04.58.29; Mon, 14 Aug 2023 04:58:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=cXecADFX; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233209AbjHNKXs (ORCPT + 99 others); Mon, 14 Aug 2023 06:23:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236809AbjHNKXo (ORCPT ); Mon, 14 Aug 2023 06:23:44 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2069.outbound.protection.outlook.com [40.107.94.69]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D70C5BA for ; Mon, 14 Aug 2023 03:23:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bKlynMvxmHc5/gA8hKHw6lX//y6ZCoVdp+YDNAzWN+SXKbgvEOL7LLnkVzHLw7KRAKaKnrVy81bRUq8+zICJQjeSXQzVf+xVDzGwrj/p/xbGFm4VhLNnKU/XsjAcz1B2Ndx5Bcl1gPgzsf+woDHsFVUiI7Xq0A3ixrBhBFi5a5E7oCbuGruBnGeHRrTJEbgukuMdAAsWmUAbyMmOwE1Wen1gTQ97BxsQlfuhebEd3PW15eDZ7/459jNI6wC8SBCwmJarw7qUBo6wCev2EyMVsgyQGrc1wq7udGlupJmR14SQICiahuSQcBwphNoK4lJh+wBeK5xXRQsIl+1N3tOIog== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aZG1V+UWjz1QYmE8/4MIvFt0aGFPugtK9Q5EcuMj+do=; b=FskeyRx8p9uN8067Gjy2/QOSNn8DoVPjNCzry9N5kM4gxClnpR+ABzxQS6pLemnp+jENrKTODuj7PDeZ/Opmst/SdcgDMxj7XouxVMbOM9XqstcTsiz2FKaZW80jqMWIiFwqzRCHv3r7OIZ8jEoENfv0zfMI9W4+FgRIocI8RT7LGwidRY5G8vh779VgyurLWDhcl8wTQRPZk3l0Q2orhVN9MCkAxzu1Jk3U0LrhaFKt5mn1z5dmdz1tDoHKsAhGZkDNDANB9TpxyPWc/yUYi3ig+cwMEYFlEn+uzdXpzJ8wwhXCxu3U3eGkzYfNxqI2dVF+/sPUNTV14FHdjAawUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linuxfoundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aZG1V+UWjz1QYmE8/4MIvFt0aGFPugtK9Q5EcuMj+do=; b=cXecADFX7lfqlYfeirOy4gC5ZQ834/NQ5BtgBfdJcopyCLm8cTF+k9grqmIlz1tuUjIdO3tOAe/HH9ihxCQHpnsHSzZk/74halKxm6JTHSP09emsY1CDBUAVpF0GlsXukV0xXU+1MoGxWn3NutCARONJzEFtxYZlq58bTXm90ZM= Received: from DS7PR03CA0055.namprd03.prod.outlook.com (2603:10b6:5:3b5::30) by BL1PR12MB5096.namprd12.prod.outlook.com (2603:10b6:208:316::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.26; Mon, 14 Aug 2023 10:23:40 +0000 Received: from CY4PEPF0000EDD3.namprd03.prod.outlook.com (2603:10b6:5:3b5:cafe::2e) by DS7PR03CA0055.outlook.office365.com (2603:10b6:5:3b5::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.33 via Frontend Transport; Mon, 14 Aug 2023 10:23:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by CY4PEPF0000EDD3.mail.protection.outlook.com (10.167.241.207) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6699.12 via Frontend Transport; Mon, 14 Aug 2023 10:23:39 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:23:37 -0500 Received: from xhdipdslab59.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.27 via Frontend Transport; Mon, 14 Aug 2023 05:23:17 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde , Nipun Gupta , "Pieter Jansen van Vuuren" Subject: [PATCH v3 3/5] cdx: add support for bus enable and disable Date: Mon, 14 Aug 2023 15:52:21 +0530 Message-ID: <20230814102223.418046-4-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230814102223.418046-1-abhijit.gangurde@amd.com> References: <20230814102223.418046-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD3:EE_|BL1PR12MB5096:EE_ X-MS-Office365-Filtering-Correlation-Id: 6883313b-4a76-4734-50cc-08db9cb08720 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ru56cES2eAciOWLfNvEQGH8YI88JjLydRBW1YpmPyFGTZQahDNsX2nGmMKtlIFMaB3hH65+vS6GqnSNZmtUR8PV6Z5HFcW8fDGQ0KE/NbfHn8kLLsE8yNU6bdwlw1zmY0Rbvrb12JK2s3v/NBfFmCj3n7dg5/KnvZmZS9BFQHn0MhfWIl6MUP5Q65Shnqoch6BkAo6zuOg17BpYA58Y1OLh/tw3CiQWiBbDM/ysGTFUNBO3QlOk3RfXZFJjb+DWH6eCxHL2gKFjc/qdLHBoRyvjZCtFG0Qia4GB3zEWv+EFoRBUNkzbPI05HJlaGJcbdTkvPhzbhknDUpGMC4mPEITCd+jnG7vAJKpOA16282sKO5B13r0f8/sTlXmp+yJwZ2USXN87v2UaegduLhXGd3JCjtjI5ybXY3T8hVc2MG4RiqEBUF0FUIfGKZFSq7jUCWYxLNOuGuLSj3LzhuycLmGA6dhGrMyUu3+etElI6yY0cntqsdnXXup84TWcXg4NuZYe6bwtODIhefqGZ0N0EvnHZSap8ZC7bJKGUBrtUjpZ7qG+biv3rauft5hy3j2CCECeElTBndkVXQHdOuuKnO1jAAqUbTmVQN4BESE1s8JMh2PFDrl8BlUGANOrsj6ACJOYXDGEqH0Ji7k4cKJdSZy1yRZRaMpTp4MTQ9/X+q4kKJ3yyTyx8xCxinCOuyK6M+8v8iC0rAGtkpxnkwwShr83i6T0WY82Oyi9zFiY7bZC3IbkiocU9xkFGsGTyo8rIYzNBOP1E35d0A0QtzGIUvA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(376002)(39860400002)(136003)(346002)(396003)(186006)(451199021)(1800799006)(82310400008)(40470700004)(46966006)(36840700001)(70206006)(70586007)(316002)(41300700001)(110136005)(54906003)(8936002)(8676002)(5660300002)(478600001)(6666004)(2906002)(44832011)(30864003)(1076003)(336012)(83380400001)(426003)(26005)(2616005)(36860700001)(47076005)(4326008)(356005)(81166007)(40480700001)(82740400003)(86362001)(36756003)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 10:23:39.6245 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6883313b-4a76-4734-50cc-08db9cb08720 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD3.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5096 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774205621661831912 X-GMAIL-MSGID: 1774205621661831912 CDX bus needs to be disabled before updating/writing devices in the FPGA. Once the devices are written, the bus shall be rescanned. This change provides sysfs entry to enable/disable the CDX bus. Co-developed-by: Nipun Gupta Signed-off-by: Nipun Gupta Signed-off-by: Abhijit Gangurde Reviewed-by: Pieter Jansen van Vuuren Tested-by: Nikhil Agarwal --- Documentation/ABI/testing/sysfs-bus-cdx | 27 +++++++ drivers/cdx/cdx.c | 94 +++++++++++++++++++++++++ drivers/cdx/controller/cdx_controller.c | 50 +++++++++++++ drivers/cdx/controller/mc_cdx_pcol.h | 54 ++++++++++++++ drivers/cdx/controller/mcdi_functions.c | 24 +++++++ drivers/cdx/controller/mcdi_functions.h | 18 +++++ include/linux/cdx/cdx_bus.h | 12 ++++ 7 files changed, 279 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-cdx b/Documentation/ABI/testing/sysfs-bus-cdx index 7af477f49998..04c8dfe7e201 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -11,6 +11,33 @@ Description: # echo 1 > /sys/bus/cdx/rescan +What: /sys/bus/cdx/enable +Date: July 2023 +Contact: nipun.gupta@amd.com +Description: + Writing bus number in hex to this file will attempt to enable + the CDX bus. The bus number for the cdx devices can be found + at /sys/bus/cdx/devices/cdx-BB:DD, where BB denotes the bus + number for the respective device. + + For example :: + + # echo 00 > /sys/bus/cdx/enable + +What: /sys/bus/cdx/disable +Date: July 2023 +Contact: nipun.gupta@amd.com +Description: + Writing bus number in hex to this file will attempt to disable + the CDX bus. CDX bus should be disabled before updating the + devices in FPGA. The bus number for the cdx devices can be + found at /sys/bus/cdx/devices/cdx-BB:DD, where BB denotes the + bus number for the respective device. + + For example :: + + # echo 00 > /sys/bus/cdx/disable + What: /sys/bus/cdx/devices/.../vendor Date: March 2023 Contact: nipun.gupta@amd.com diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 50df061f4537..411beb035fdd 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -70,6 +70,10 @@ #define CDX_DEFAULT_DMA_MASK (~0ULL) #define MAX_CDX_CONTROLLERS 16 +#define CONTROLLER_ID(X) \ + (((X) & CDX_CONTROLLER_ID_MASK) >> CDX_CONTROLLER_ID_SHIFT) +#define BUS_ID(X) ((X) & CDX_BUS_NUM_MASK) + /* IDA for CDX controllers registered with the CDX bus */ DEFINE_IDA(cdx_controller_ida); /* Lock to protect controller ops */ @@ -384,6 +388,94 @@ static struct attribute *cdx_dev_attrs[] = { }; ATTRIBUTE_GROUPS(cdx_dev); +static struct cdx_controller *cdx_find_controller(u8 controller_id) +{ + struct cdx_controller *cdx = NULL; + struct platform_device *pd; + struct device_node *np; + + for_each_compatible_node(np, NULL, compat_node_name) { + if (!np) + return NULL; + + pd = of_find_device_by_node(np); + if (!pd) + return NULL; + + cdx = platform_get_drvdata(pd); + if (cdx && cdx->controller_registered && cdx->id == controller_id) { + put_device(&pd->dev); + break; + } + + put_device(&pd->dev); + } + + return cdx; +} + +static ssize_t enable_store(const struct bus_type *bus, + const char *buf, size_t count) +{ + unsigned long controller_id; + struct cdx_controller *cdx; + u8 bus_id; + int ret; + + if (kstrtou8(buf, 16, &bus_id)) + return -EINVAL; + + controller_id = CONTROLLER_ID(bus_id); + bus_id = BUS_ID(bus_id); + + mutex_lock(&cdx_controller_lock); + + cdx = cdx_find_controller(controller_id); + if (cdx) + if (cdx->ops->bus_enable) + ret = cdx->ops->bus_enable(cdx, bus_id); + else + ret = -EOPNOTSUPP; + else + ret = -EINVAL; + + mutex_unlock(&cdx_controller_lock); + + return ret < 0 ? ret : count; +} +static BUS_ATTR_WO(enable); + +static ssize_t disable_store(const struct bus_type *bus, + const char *buf, size_t count) +{ + unsigned long controller_id; + struct cdx_controller *cdx; + u8 bus_id; + int ret; + + if (kstrtou8(buf, 16, &bus_id)) + return -EINVAL; + + controller_id = CONTROLLER_ID(bus_id); + bus_id = BUS_ID(bus_id); + + mutex_lock(&cdx_controller_lock); + + cdx = cdx_find_controller(controller_id); + if (cdx) + if (cdx->ops->bus_disable) + ret = cdx->ops->bus_disable(cdx, bus_id); + else + ret = -EOPNOTSUPP; + else + ret = -EINVAL; + + mutex_unlock(&cdx_controller_lock); + + return ret < 0 ? ret : count; +} +static BUS_ATTR_WO(disable); + static ssize_t rescan_store(const struct bus_type *bus, const char *buf, size_t count) { @@ -426,6 +518,8 @@ static ssize_t rescan_store(const struct bus_type *bus, static BUS_ATTR_WO(rescan); static struct attribute *cdx_bus_attrs[] = { + &bus_attr_enable.attr, + &bus_attr_disable.attr, &bus_attr_rescan.attr, NULL, }; diff --git a/drivers/cdx/controller/cdx_controller.c b/drivers/cdx/controller/cdx_controller.c index dc52f95f8978..2e4725c872d0 100644 --- a/drivers/cdx/controller/cdx_controller.c +++ b/drivers/cdx/controller/cdx_controller.c @@ -32,6 +32,42 @@ static const struct cdx_mcdi_ops mcdi_ops = { .mcdi_request = cdx_mcdi_request, }; +static int cdx_bus_enable(struct cdx_controller *cdx, u8 bus_num) +{ + int ret; + + if (test_bit(bus_num, cdx->bus_state)) + return 0; + + ret = cdx_mcdi_bus_enable(cdx->priv, bus_num); + if (!ret) + set_bit(bus_num, cdx->bus_state); + + return ret; +} + +static int cdx_bus_disable(struct cdx_controller *cdx, u8 bus_num) +{ + int ret; + + if (!test_bit(bus_num, cdx->bus_state)) + return 0; + + ret = cdx_mcdi_bus_disable(cdx->priv, bus_num); + if (!ret) + clear_bit(bus_num, cdx->bus_state); + + return ret; +} + +static void cdx_bus_disable_all(struct cdx_controller *cdx) +{ + u8 bus_num; + + for_each_set_bit(bus_num, cdx->bus_state, MAX_CDX_BUSES) + cdx_bus_disable(cdx, bus_num); +} + void cdx_rpmsg_post_probe(struct cdx_controller *cdx) { /* Register CDX controller with CDX bus driver */ @@ -42,6 +78,7 @@ void cdx_rpmsg_post_probe(struct cdx_controller *cdx) void cdx_rpmsg_pre_remove(struct cdx_controller *cdx) { cdx_unregister_controller(cdx); + cdx_bus_disable_all(cdx); cdx_mcdi_wait_for_quiescence(cdx->priv, MCDI_RPC_TIMEOUT); } @@ -80,11 +117,22 @@ static int cdx_scan_devices(struct cdx_controller *cdx) for (bus_num = 0; bus_num < num_cdx_bus; bus_num++) { u8 num_cdx_dev; + ret = cdx_bus_enable(cdx, bus_num); + if (ret && ret != -EALREADY) { + dev_err(cdx->dev, + "CDX bus %d enable failed: %d\n", bus_num, ret); + continue; + } + /* MCDI FW Read: Fetch the number of devices present */ ret = cdx_mcdi_get_num_devs(cdx_mcdi, bus_num); if (ret < 0) { dev_err(cdx->dev, "Get devices on CDX bus %d failed: %d\n", bus_num, ret); + ret = cdx_bus_disable(cdx, bus_num); + if (ret) + dev_err(cdx->dev, + "CDX bus %d disable failed: %d\n", bus_num, ret); continue; } num_cdx_dev = (u8)ret; @@ -120,6 +168,8 @@ static int cdx_scan_devices(struct cdx_controller *cdx) } static struct cdx_ops cdx_ops = { + .bus_enable = cdx_bus_enable, + .bus_disable = cdx_bus_disable, .scan = cdx_scan_devices, .dev_configure = cdx_configure_device, }; diff --git a/drivers/cdx/controller/mc_cdx_pcol.h b/drivers/cdx/controller/mc_cdx_pcol.h index 4ccb7b52951b..2de019406b57 100644 --- a/drivers/cdx/controller/mc_cdx_pcol.h +++ b/drivers/cdx/controller/mc_cdx_pcol.h @@ -455,6 +455,60 @@ #define MC_CMD_CDX_BUS_GET_DEVICE_CONFIG_OUT_REQUESTER_ID_OFST 84 #define MC_CMD_CDX_BUS_GET_DEVICE_CONFIG_OUT_REQUESTER_ID_LEN 4 +/***********************************/ +/* + * MC_CMD_CDX_BUS_DOWN + * Asserting reset on the CDX bus causes all devices on the bus to be quiesced. + * DMA bus mastering is disabled and any pending DMA request are flushed. Once + * the response is returned, the devices are guaranteed to no longer issue DMA + * requests or raise MSI interrupts. Further device MMIO accesses may have + * undefined results. While the bus reset is asserted, any of the enumeration + * or device configuration MCDIs will fail with EAGAIN. It is only legal to + * reload the relevant PL region containing CDX devices if the corresponding CDX + * bus is in reset. Depending on the implementation, the firmware may or may + * not enforce this restriction and it is up to the caller to make sure this + * requirement is satisfied. + */ +#define MC_CMD_CDX_BUS_DOWN 0x4 +#define MC_CMD_CDX_BUS_DOWN_MSGSET 0x4 + +/* MC_CMD_CDX_BUS_DOWN_IN msgrequest */ +#define MC_CMD_CDX_BUS_DOWN_IN_LEN 4 +/* Bus number to put in reset, in range 0 to BUS_COUNT-1 */ +#define MC_CMD_CDX_BUS_DOWN_IN_BUS_OFST 0 +#define MC_CMD_CDX_BUS_DOWN_IN_BUS_LEN 4 + +/* + * MC_CMD_CDX_BUS_DOWN_OUT msgresponse: The bus is quiesced, no further + * upstream traffic for devices on this bus. + */ +#define MC_CMD_CDX_BUS_DOWN_OUT_LEN 0 + +/***********************************/ +/* + * MC_CMD_CDX_BUS_UP + * After bus reset is de-asserted, devices are in a state which is functionally + * equivalent to each device having been reset with MC_CMD_CDX_DEVICE_RESET. In + * other words, device logic is reset in a hardware-specific way, MMIO accesses + * are forwarded to the device, DMA bus mastering is disabled and needs to be + * re-enabled with MC_CMD_CDX_DEVICE_DMA_ENABLE once the driver is ready to + * start servicing DMA. If the underlying number of devices or device resources + * changed (e.g. if PL was reloaded) while the bus was in reset, the bus driver + * is expected to re-enumerate the bus. Returns EALREADY if the bus was already + * up before the call. + */ +#define MC_CMD_CDX_BUS_UP 0x5 +#define MC_CMD_CDX_BUS_UP_MSGSET 0x5 + +/* MC_CMD_CDX_BUS_UP_IN msgrequest */ +#define MC_CMD_CDX_BUS_UP_IN_LEN 4 +/* Bus number to take out of reset, in range 0 to BUS_COUNT-1 */ +#define MC_CMD_CDX_BUS_UP_IN_BUS_OFST 0 +#define MC_CMD_CDX_BUS_UP_IN_BUS_LEN 4 + +/* MC_CMD_CDX_BUS_UP_OUT msgresponse: The bus can now be enumerated. */ +#define MC_CMD_CDX_BUS_UP_OUT_LEN 0 + /***********************************/ /* * MC_CMD_CDX_DEVICE_RESET diff --git a/drivers/cdx/controller/mcdi_functions.c b/drivers/cdx/controller/mcdi_functions.c index 0158f26533dd..0e1e35d91242 100644 --- a/drivers/cdx/controller/mcdi_functions.c +++ b/drivers/cdx/controller/mcdi_functions.c @@ -124,6 +124,30 @@ int cdx_mcdi_get_dev_config(struct cdx_mcdi *cdx, return 0; } +int cdx_mcdi_bus_enable(struct cdx_mcdi *cdx, u8 bus_num) +{ + MCDI_DECLARE_BUF(inbuf, MC_CMD_CDX_BUS_UP_IN_LEN); + int ret; + + MCDI_SET_DWORD(inbuf, CDX_BUS_UP_IN_BUS, bus_num); + ret = cdx_mcdi_rpc(cdx, MC_CMD_CDX_BUS_UP, inbuf, sizeof(inbuf), + NULL, 0, NULL); + + return ret; +} + +int cdx_mcdi_bus_disable(struct cdx_mcdi *cdx, u8 bus_num) +{ + MCDI_DECLARE_BUF(inbuf, MC_CMD_CDX_BUS_DOWN_IN_LEN); + int ret; + + MCDI_SET_DWORD(inbuf, CDX_BUS_DOWN_IN_BUS, bus_num); + ret = cdx_mcdi_rpc(cdx, MC_CMD_CDX_BUS_DOWN, inbuf, sizeof(inbuf), + NULL, 0, NULL); + + return ret; +} + int cdx_mcdi_reset_device(struct cdx_mcdi *cdx, u8 bus_num, u8 dev_num) { MCDI_DECLARE_BUF(inbuf, MC_CMD_CDX_DEVICE_RESET_IN_LEN); diff --git a/drivers/cdx/controller/mcdi_functions.h b/drivers/cdx/controller/mcdi_functions.h index 7440ace5539a..28973d5ec3ab 100644 --- a/drivers/cdx/controller/mcdi_functions.h +++ b/drivers/cdx/controller/mcdi_functions.h @@ -47,6 +47,24 @@ int cdx_mcdi_get_dev_config(struct cdx_mcdi *cdx, u8 bus_num, u8 dev_num, struct cdx_dev_params *dev_params); +/** + * cdx_mcdi_bus_enable - Enable CDX bus represented by bus_num + * @cdx: pointer to MCDI interface. + * @bus_num: Bus number. + * + * Return: 0 on success, <0 on failure + */ +int cdx_mcdi_bus_enable(struct cdx_mcdi *cdx, u8 bus_num); + +/** + * cdx_mcdi_bus_disable - Disable CDX bus represented by bus_num + * @cdx: pointer to MCDI interface. + * @bus_num: Bus number. + * + * Return: 0 on success, <0 on failure + */ +int cdx_mcdi_bus_disable(struct cdx_mcdi *cdx, u8 bus_num); + /** * cdx_mcdi_reset_device - Reset cdx device represented by bus_num:dev_num * @cdx: pointer to MCDI interface. diff --git a/include/linux/cdx/cdx_bus.h b/include/linux/cdx/cdx_bus.h index 82c27b8c94e1..ac715bc84315 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -16,6 +16,8 @@ #define MAX_CDX_DEV_RESOURCES 4 #define CDX_CONTROLLER_ID_SHIFT 4 #define CDX_BUS_NUM_MASK 0xF +#define CDX_CONTROLLER_ID_MASK 0xF0 +#define MAX_CDX_BUSES (CDX_BUS_NUM_MASK + 1) /* Forward declaration for CDX controller */ struct cdx_controller; @@ -28,6 +30,10 @@ struct cdx_device_config { u8 type; }; +typedef int (*cdx_bus_enable_cb)(struct cdx_controller *cdx, u8 bus_num); + +typedef int (*cdx_bus_disable_cb)(struct cdx_controller *cdx, u8 bus_num); + typedef int (*cdx_scan_cb)(struct cdx_controller *cdx); typedef int (*cdx_dev_configure_cb)(struct cdx_controller *cdx, @@ -49,11 +55,15 @@ typedef int (*cdx_dev_configure_cb)(struct cdx_controller *cdx, /** * struct cdx_ops - Callbacks supported by CDX controller. + * @bus_enable: enable bus on the controller + * @bus_disable: disable bus on the controller * @scan: scan the devices on the controller * @dev_configure: configuration like reset, master_enable, * msi_config etc for a CDX device */ struct cdx_ops { + cdx_bus_enable_cb bus_enable; + cdx_bus_disable_cb bus_disable; cdx_scan_cb scan; cdx_dev_configure_cb dev_configure; }; @@ -64,6 +74,7 @@ struct cdx_ops { * @priv: private data * @id: Controller ID * @controller_registered: controller registered with bus + * @bus_state: state of the buses(enabled/disabled) * @ops: CDX controller ops */ struct cdx_controller { @@ -71,6 +82,7 @@ struct cdx_controller { void *priv; u32 id; bool controller_registered; + DECLARE_BITMAP(bus_state, MAX_CDX_BUSES); struct cdx_ops *ops; }; From patchwork Mon Aug 14 10:22:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 135359 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2690123vqi; Mon, 14 Aug 2023 04:57:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHzcd1A2Bqyexy1CQvLA4bi5ox7WXBZuqYwvcjnmJGO0ZcSPiujwCOSJdLI13fePVEpPgOO X-Received: by 2002:a50:ed13:0:b0:523:ae0a:a446 with SMTP id j19-20020a50ed13000000b00523ae0aa446mr8040069eds.24.1692014232550; Mon, 14 Aug 2023 04:57:12 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1692014232; cv=pass; d=google.com; s=arc-20160816; b=qTqVv9ONoGUDfnTVUQyAh1mSK6AMspc7bdJt8eV51MK/eG66An6DE/r5ubiRs/UAN2 4YvqSu/cfl5XaxSgXDwRujXnEDEkICdlRQBQ8hUbaQr03YV3eYhkVxUG4cALUCM4HLkE zdFE0G4CUoZydfsTENT8eO56OttwR3WZYR6eGZpIJZDWycNTcX45OwaW7vR2cwUe9aiw dzFgXoz96tfXaYR4MBw30EdMze8tQOyA+w9PVf25IEAQ/An1DEjnTLJWVdOeITIk1icn mt9+UIgjx5UxBiT+FBTF7hRNEAufgyDSyT54iiDzPawGG10L70gXqz9qLXh7cv4ExmsX StYw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=WfesIPXea56XQVifh1FWl/0Fwat6oQfFLTUz0hSARWo=; fh=ug8NUZO7Gm9n87SNmhTXmdWNRvkjqaZR8JdwD4G6VfU=; b=db9jqKmE4itSlY9ed94nW/cihYnKSo+1bf2n2IQ0T0pcfs6Z94cSd3poN5o+cwkiEr DnKGCluswwCed0Lz8S8fKnPMqQ5Y0KXBDgx3BNSvnKQOSZTu5in2+YJH4BUVlYaxR888 v4lNs72aNfc0xpOZ1gzII0Ig6MotZpnXPXbtW87yfbEroKNVQh3Pn2GpJr8nckFzfhlq mkH6KX38Ct4jdRPOAQwp8XIPJ9BaFhpQFx+yddhTtl2N39W8aJbdNspwxN77YkUj6X0P OEWCnAwz7ZMUKtfr7kn4ujaj3c6ZCG/Flf9RFtOumLRWfLUpaEps/MHKJQQslHK2GlCo EFFg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=VSw7SHgt; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m4-20020aa7c484000000b005234b9ea186si7708304edq.424.2023.08.14.04.56.49; Mon, 14 Aug 2023 04:57:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=VSw7SHgt; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234613AbjHNKYV (ORCPT + 99 others); Mon, 14 Aug 2023 06:24:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235186AbjHNKYA (ORCPT ); Mon, 14 Aug 2023 06:24:00 -0400 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2060.outbound.protection.outlook.com [40.107.102.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A45710F2 for ; Mon, 14 Aug 2023 03:23:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GO21fAWm6toJs95SxzoWI0FGhdSzzvxpatsu7YkLyb5ubtzTJj7Z7AgskPIRQNfPitfCjY2Zmnm1eEVWZNaL/PwpQh5fBbQW7D0Qhbo9mcGpzBdhpYUlXiZ9Lmcj1ZfNM9wmvgoWfA6E4E0YBBt+j5p6m4wyDEa1IEoA3hYev3Z2Ite4kXftIdOhFWPuC61Myqo7WThry1gPoPv+bYF6nw9hZJaUFRoPNufkmyOOiAi02gnMx817ip+HeOuz48R08+jfQlP7Sgeg8MnImuXrP3FojZavT9GA0dzaaF40ra1x2I3lWkMA1HkdkxLQqQno/Y1sYoIY8xJmSaug9+cyWQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WfesIPXea56XQVifh1FWl/0Fwat6oQfFLTUz0hSARWo=; b=WMBWfIueCDsPJdter+2Lz/vu4WOeIWzfaVnGR5BronCxToLHOgMMlmORKKaalT7NfEMlaadAC7ZF8d3UlYG+rWBHUmHeNzagsQDgvlRVIyc6LN62kmgD+N4UwYI1xFMAvmCVmljvikM+Q2xTr9xJt8a4ZN0+zbMAAm8vbub+XbAhJAv8v74x10m52O79CeyUiNgcaUHgxZVfEKJ/LEsVRSlLQ0hDTMGDA1nFgkKEcwTwrom1WnpLUWENC1JvxSPMxjkpS0AvMPC1H4wF6OXqlcWoqhb36ZeiPL0gq5FamFRA3h/b0GOLfognnsDmlEN5EwOySEUWHkcrcWOQTlS/CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linuxfoundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WfesIPXea56XQVifh1FWl/0Fwat6oQfFLTUz0hSARWo=; b=VSw7SHgtR2Q67iVJgxi48MDxhqQ4qF0VuZX6zgPKbwEVwHciu+lggHoGeoAwij6L4ymIP7HCPWTdx92CIhQxAOk5br6lFR4TKwMDR6P5gWvSXRLRk5uCNYsWdsKjfC8bJ46vgj0jPu+uFPjMBgEs6L7tzEcRxsYM9a7gzzyvvy8= Received: from CY5PR19CA0047.namprd19.prod.outlook.com (2603:10b6:930:1a::6) by MW4PR12MB7381.namprd12.prod.outlook.com (2603:10b6:303:219::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.26; Mon, 14 Aug 2023 10:23:50 +0000 Received: from CY4PEPF0000EDD6.namprd03.prod.outlook.com (2603:10b6:930:1a:cafe::42) by CY5PR19CA0047.outlook.office365.com (2603:10b6:930:1a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.33 via Frontend Transport; Mon, 14 Aug 2023 10:23:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by CY4PEPF0000EDD6.mail.protection.outlook.com (10.167.241.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6699.12 via Frontend Transport; Mon, 14 Aug 2023 10:23:49 +0000 Received: from SATLEXMB07.amd.com (10.181.41.45) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:23:48 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB07.amd.com (10.181.41.45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 03:23:48 -0700 Received: from xhdipdslab59.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.27 via Frontend Transport; Mon, 14 Aug 2023 05:23:40 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde , Nipun Gupta , "Pieter Jansen van Vuuren" Subject: [PATCH v3 4/5] cdx: add sysfs for bus reset Date: Mon, 14 Aug 2023 15:52:22 +0530 Message-ID: <20230814102223.418046-5-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230814102223.418046-1-abhijit.gangurde@amd.com> References: <20230814102223.418046-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD6:EE_|MW4PR12MB7381:EE_ X-MS-Office365-Filtering-Correlation-Id: a139f0c7-130c-4d4c-d53b-08db9cb08d22 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VVl+DQFnbwu+VKCwghoswEdgMPN/AAt+9OJQKdKmFs8Hbukb4FRckbQVKPF9IldO1TXDH9RA6eKjANLyLWC+kFNrCO3GW6UQ79Lmvvvh7fP59x6yX5lG26Irtk1NyLTViisoj+WeZkKOpV0OVvNxmM3BSke2RkYA7gQfb4m9Hj3H4GilR5CpJu0lD0GbgVrOSrEWLJyYYrnDIswXtpppMs9mJLwylT15+NdQknQlT9QUuezm6KYGiTfRGjlx0VaSbhNzq8MnVlEo9CPEqvA//EWkM+Zf1ZeNEsp5c8rYfrivncLYfLAiIxC+5yHXYdaig64bAJ76W2W9KJzQa4JUdtXSG13rCTDutq9D+Ht0t212fYbLDTHBeP+dJGFvWIAxJ17eP0z5k2stOfn5Myrt7RuHXGVUiVejRqVDhiaMT8OTxuHvsrPlPqdnD4kVf/Oe/s3ERf+d13VENqFK6rR3auUgW7tFHtGdpaISQ4Fl+091KMiWX0TkKHvmhhFeFj3TwzlK/O2pUm+27w96Fv3HfpIj/WA2zifH6nXqYOPjVbueU+NShI8+W0NExmptz4zv7U3GLE0QYYfSo3LQKN8S9fK/Rd4665LlmSHzF+rjPtT6NcCFZE6K6gCb5EKXHq9FvAmGeoFNVBefxEr63jibyQ6fbC7gKrh6jTrzCjD92xuHGWSnzADRhGLnZHue+s0WuIsmM2wHgBJVDYUenwj9q6PKBmIUL5Mx4MLhGWtrf1JhGDw2PP7nkRZzJ/Fih+gqwZOhBjdlIJqYqki4MljJ9Q== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(136003)(396003)(376002)(346002)(39860400002)(82310400008)(451199021)(1800799006)(186006)(46966006)(40470700004)(36840700001)(40480700001)(54906003)(110136005)(6666004)(40460700003)(478600001)(81166007)(356005)(82740400003)(5660300002)(2906002)(36756003)(86362001)(44832011)(4326008)(70206006)(70586007)(41300700001)(8936002)(8676002)(316002)(336012)(1076003)(26005)(36860700001)(47076005)(83380400001)(2616005)(426003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 10:23:49.8167 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a139f0c7-130c-4d4c-d53b-08db9cb08d22 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD6.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7381 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774205515589911938 X-GMAIL-MSGID: 1774205515589911938 Add sysfs interface reset to reset all the devices on the CDX bus. Co-developed-by: Puneet Gupta Signed-off-by: Puneet Gupta Co-developed-by: Nipun Gupta Signed-off-by: Nipun Gupta Signed-off-by: Abhijit Gangurde Reviewed-by: Pieter Jansen van Vuuren Tested-by: Nikhil Agarwal --- Documentation/ABI/testing/sysfs-bus-cdx | 15 +++++++++ drivers/cdx/cdx.c | 41 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-cdx b/Documentation/ABI/testing/sysfs-bus-cdx index 04c8dfe7e201..d25875359741 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -38,6 +38,21 @@ Description: # echo 00 > /sys/bus/cdx/disable +What: /sys/bus/cdx/reset +Date: July 2023 +Contact: puneet.gupta@amd.com +Description: + Writing bus number in hex to this file will attempt to reset + all the devices present on the bus. Resetting a device would + clear all existing configuration of the device and put the + device in default state. The bus number for the cdx devices can + be found at /sys/bus/cdx/devices/cdx-BB:DD, where BB denotes + the bus number for the respective device. + + For example :: + + # echo 00 > /sys/bus/cdx/reset + What: /sys/bus/cdx/devices/.../vendor Date: March 2023 Contact: nipun.gupta@amd.com diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 411beb035fdd..6c48b322a8f2 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -114,6 +114,26 @@ int cdx_dev_reset(struct device *dev) } EXPORT_SYMBOL_GPL(cdx_dev_reset); +/** + * reset_cdx_device - Reset a CDX device + * @dev: CDX device + * @data: Bus number + * If bus number matches to the device's bus then this device + * is reset else this is no op. + * + * Return: -errno on failure, 0 on success. + */ +static int reset_cdx_device(struct device *dev, void *data) +{ + struct cdx_device *cdx_dev = to_cdx_device(dev); + u8 bus_num = *((u8 *)data); + + if (cdx_dev->bus_num == bus_num) + return cdx_dev_reset(dev); + + return 0; +} + /** * cdx_unregister_device - Unregister a CDX device * @dev: CDX device @@ -517,10 +537,31 @@ static ssize_t rescan_store(const struct bus_type *bus, } static BUS_ATTR_WO(rescan); +static ssize_t bus_reset_store(const struct bus_type *bus, + const char *buf, size_t count) +{ + u8 bus_id; + int ret; + + if (kstrtou8(buf, 16, &bus_id)) + return -EINVAL; + + bus_id = BUS_ID(bus_id); + mutex_lock(&cdx_controller_lock); + /* Reset all the devices attached to cdx bus */ + ret = bus_for_each_dev(bus, NULL, (void *)&bus_id, reset_cdx_device); + mutex_unlock(&cdx_controller_lock); + + return ret < 0 ? ret : count; +} +static struct bus_attribute bus_attr_reset = __ATTR(reset, 0200, NULL, + bus_reset_store); + static struct attribute *cdx_bus_attrs[] = { &bus_attr_enable.attr, &bus_attr_disable.attr, &bus_attr_rescan.attr, + &bus_attr_reset.attr, NULL, }; ATTRIBUTE_GROUPS(cdx_bus); From patchwork Mon Aug 14 10:22:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 135351 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2678923vqi; Mon, 14 Aug 2023 04:33:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFMRWa3DIBTrEvwLEFPiMb40H2EubI7XWIbioMeMp4rUR/c9qHE+s1bbZq/u/GWUYh5EPFv X-Received: by 2002:a17:907:7215:b0:991:f0dc:c930 with SMTP id dr21-20020a170907721500b00991f0dcc930mr13468800ejc.16.1692012814251; Mon, 14 Aug 2023 04:33:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1692012814; cv=pass; d=google.com; s=arc-20160816; b=A+QBz6woFcVdFjBLOa2RwL0BAloOVD7xdeeh+OTjB7f1GLH/7BIvVezy1NX0R+C5CF 4xP84zTI07sYivvkPYjH984fSkixWxgiQsSbKGwTRgBC8K/Tj4yZTdVNiSVPgi0ByWBv jKIX2xJnMG8S0RLLHOtJdptWfyJtPq507dUOm5nM3o2LYPwK6TY/Wtqm/cRgXv9yK1n0 MZw4exde0+O0dW0CDqwa7Yt6xPw62gmL/wYV/g3Js5lxesDSqhiE/mFzmhlAR8EJO567 Q6DNRNblZ6oiV+Ru+4kx895fw91/naMVqlRjno2NBPKHAqpjshF3y1QgYTtCeCqkZkZK HdXA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=LBvyMvThEKOYjxAyJgZAMmCBnCUxCAVf0yJ75LOJ43U=; fh=ug8NUZO7Gm9n87SNmhTXmdWNRvkjqaZR8JdwD4G6VfU=; b=Dg70AxNqLu8ltvoHTMzuUqEeNYPIOvXWJFrYVZ1fkcc0iGDL06mHHuKes7mkQB96Qv rG7kPJ/z4t6SCwXcrwylmCNexW2fC2BQe/aA7B3o2YAzDpdRSl48guComIrdTThRYYD2 mbBhrd3p8LWH11Dwl4ROXB5cPWAuTP60hUdBwS51/Gcg3wLMHrvc7b+wOZ71qcaEK0S+ fMs3GATkdCOaPLXTNBTGUA2XyjqgQv1rM6bfXPQ3H+CMJRvkduGwdu/3c9PYbKEIrbne CqkQss8Agp/JLFV4uU24/Oewi1CJ2lmEiREaTnGR8yV0Npf2QeDygt9rEWXjfyq0KTo4 4iIw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=rXjeEJp7; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u24-20020a05640207d800b00525672a80dfsi1278823edy.571.2023.08.14.04.33.10; Mon, 14 Aug 2023 04:33:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=rXjeEJp7; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234807AbjHNKYZ (ORCPT + 99 others); Mon, 14 Aug 2023 06:24:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236881AbjHNKYQ (ORCPT ); Mon, 14 Aug 2023 06:24:16 -0400 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E46810D for ; Mon, 14 Aug 2023 03:24:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y2SyCoQEYnzBbtuZG5Z//1/G6KtfduQIFVBPTwE4Qc5h8H2lY9ZadaFOTHnO2Tr5c4suu1ZLE7Ris5z+jxwbtVzO3qVvhoa7mwT1tknHda4JaenxJLD5taKktpW68J/8lcYFNZaBR1P+SKIrX4KrCtE/fz8DfwL3S1zSh/foN6jY2i8JcnDd7WRFAQpQmlGhzZdL/o/xRgDzBS1VPG9sbrrkRnQdq8tJV2626LG5P6YRWdQ6sWoY2NteP4SKPIpBKWcyWJVb7FD4v7P2c97+zoq5J9LQJSvT12oR0ikE4a8M1FTPqyTFa5OIDIDSuIYPkEQty9KG9FzV7Nb2ApO12w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LBvyMvThEKOYjxAyJgZAMmCBnCUxCAVf0yJ75LOJ43U=; b=Ytm+QTv4qLyUt5ImK2Gq0CnpzGRyp3tVA71WSd9tfMzcEkTrAF1IAmKeqSTcuBD25OJmpNkYRWC3a9wWRymc0a6DwzlYaWBPBDBZiAfYqfHVMpaV7qFugDOnaRWdzrgrpmXxzCf7jWWRPW3Q/5NdDqkPKmNU+SG8mHA4x+k8g96xKrcE9BwSt+sff6dckElO1neCxGL4ii7Qb+/f8i00wUwtuRBCyftO7crX8VOwvxo3bMpLeu2qbDyZk58uINDwe5Vya7C9Cc2z8svjiq2JF8ndu5Dxv4Z4TvPYzsUgSSp7A5Cv2P1SjqCwp3BQXMpJ6o2hOu/h1xF+hukfEA2wfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linuxfoundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LBvyMvThEKOYjxAyJgZAMmCBnCUxCAVf0yJ75LOJ43U=; b=rXjeEJp7FkJtjGC3vmiG5PF6KgyRsKZcz0fZIlm9rXC8ef51MXc70a5f2ZWKYRKuQdzhoDHHJ/5vmNV3C0esjP2dCMoGpBef065lU+VVPg0okwSMTvx88Px6vXuIK4JPMSMga5VP6Rvw6vLUJoqQy5xjd7zJlAuefHAwcHtFc6s= Received: from CH0PR03CA0247.namprd03.prod.outlook.com (2603:10b6:610:e5::12) by SJ2PR12MB8160.namprd12.prod.outlook.com (2603:10b6:a03:4af::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 10:24:06 +0000 Received: from CY4PEPF0000EDD0.namprd03.prod.outlook.com (2603:10b6:610:e5:cafe::41) by CH0PR03CA0247.outlook.office365.com (2603:10b6:610:e5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.33 via Frontend Transport; Mon, 14 Aug 2023 10:24:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by CY4PEPF0000EDD0.mail.protection.outlook.com (10.167.241.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6699.12 via Frontend Transport; Mon, 14 Aug 2023 10:24:05 +0000 Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 05:24:01 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 14 Aug 2023 03:24:00 -0700 Received: from xhdipdslab59.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.27 via Frontend Transport; Mon, 14 Aug 2023 05:23:53 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde , Nipun Gupta , "Pieter Jansen van Vuuren" Subject: [PATCH v3 5/5] cdx: add sysfs for subsystem, class and revision Date: Mon, 14 Aug 2023 15:52:23 +0530 Message-ID: <20230814102223.418046-6-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230814102223.418046-1-abhijit.gangurde@amd.com> References: <20230814102223.418046-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD0:EE_|SJ2PR12MB8160:EE_ X-MS-Office365-Filtering-Correlation-Id: ddf0605d-29d6-46a4-eac1-08db9cb0964c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jZcjDvokcUox2WtoccDhXF2yfjA/MbQXtDAtmLNxSSNGFqgrbvETxkj/sEF9MZ4yFNI/LpJA3oNlvCBiDKxH7fKJP1yI8FMFvSE0dcjkpIhbKJ5MiRyQL8caH8v9HwrOyIFGPIduC0fbYp44nB4We2ZA8XNjDeT/rWHj9Q8XkDsDcmQnRPggMp8+q/dy0dX/gM+UMnvFtzwmzqC1LBZf/OkswXHlqWr7YMrLytbftwm1WyY7UQNtLPX2WfTHlxiS/Q8MW4A3WFmBq3syNs1rgrWtvHHlyvihHL5x3iM0i6X9zwO9S03kCdaZrAgfgV5V2zgaCyvTTMct/IX00IOlA9p2ndeUaK6/QRbHqNuLoHJDDWdUAz848mlMOEZ5S1Vvb5FgH/N6NiKPo2F+7FLLMJkftXzLESITJtxIAFePbupSALNL/Qjt7ZiRS+nLae/HJAyE8IuGxUf4tipxflTpgy1L2T/kRm+hyLaAy50UiCh8y4Ynf6sPOIO62mAM/QACMLOi6024/ak5CTymdTAbRuttQDM5/lGT+yTGQ1LJbY+ubAkdbrF0ohHg5fJOlU00j3dcV+3tWshtSg3H9ySy7FSAB4fCp6haO4PnwOOx5UAD3N4bNgMBFQHt8vCy9n5mh6ZLL+fFOKWC2tUSB3C+XngodPeGztnP8PV0x0JxF+mgAM5ZBgrs2je9pz+YUiqHjbUL2IFgSLrMBQI3dp9Y736iNlq4YIz6dVnrJZIz+FGcq3z6Hj2ZjuPJKL0SwwYfH9LhSvyI2nuWckgHxo4ifg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(136003)(346002)(376002)(396003)(82310400008)(451199021)(186006)(1800799006)(46966006)(40470700004)(36840700001)(86362001)(40480700001)(40460700003)(2906002)(6666004)(30864003)(2616005)(26005)(1076003)(82740400003)(54906003)(316002)(70586007)(70206006)(478600001)(356005)(41300700001)(110136005)(81166007)(5660300002)(44832011)(8936002)(4326008)(8676002)(426003)(336012)(36756003)(83380400001)(47076005)(36860700001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 10:24:05.1764 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddf0605d-29d6-46a4-eac1-08db9cb0964c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8160 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774204028376710836 X-GMAIL-MSGID: 1774204028376710836 CDX controller provides subsystem vendor, subsystem device, class and revision info of the device along with vendor and device ID in native endian format. CDX Bus system uses this information to bind the cdx device to the cdx device driver. Co-developed-by: Puneet Gupta Signed-off-by: Puneet Gupta Co-developed-by: Nipun Gupta Signed-off-by: Nipun Gupta Signed-off-by: Abhijit Gangurde Reviewed-by: Pieter Jansen van Vuuren Tested-by: Nikhil Agarwal --- Documentation/ABI/testing/sysfs-bus-cdx | 45 +++++++++++++++++++++++++ drivers/cdx/cdx.c | 29 +++++++++++++++- drivers/cdx/cdx.h | 8 +++++ drivers/cdx/controller/mcdi_functions.c | 7 ++++ include/linux/cdx/cdx_bus.h | 27 +++++++++++++-- include/linux/mod_devicetable.h | 10 ++++++ scripts/mod/devicetable-offsets.c | 4 +++ scripts/mod/file2alias.c | 8 +++++ 8 files changed, 135 insertions(+), 3 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-bus-cdx b/Documentation/ABI/testing/sysfs-bus-cdx index d25875359741..e71a6daccfbe 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -70,6 +70,36 @@ Description: of a device manufacturer. Combination of Vendor ID and Device ID identifies a device. +What: /sys/bus/cdx/devices/.../subsystem_vendor +Date: July 2023 +Contact: puneet.gupta@amd.com +Description: + Subsystem Vendor ID for this CDX device, in hexadecimal. + Subsystem Vendor ID is 16 bit identifier specific to the + card manufacturer. + +What: /sys/bus/cdx/devices/.../subsystem_device +Date: July 2023 +Contact: puneet.gupta@amd.com +Description: + Subsystem Device ID for this CDX device, in hexadecimal + Subsystem Device ID is 16 bit identifier specific to the + card manufacturer. + +What: /sys/bus/cdx/devices/.../class +Date: July 2023 +Contact: puneet.gupta@amd.com +Description: + This file contains the class of the CDX device, in hexadecimal. + Class is 24 bit identifier specifies the functionality of the device. + +What: /sys/bus/cdx/devices/.../revision +Date: July 2023 +Contact: puneet.gupta@amd.com +Description: + This file contains the revision field of the CDX device, in hexadecimal. + Revision is 8 bit revision identifier of the device. + What: /sys/bus/cdx/devices/.../reset Date: March 2023 Contact: nipun.gupta@amd.com @@ -96,3 +126,18 @@ Description: For example:: # echo 1 > /sys/bus/cdx/devices/.../remove + +What: /sys/bus/cdx/devices/.../modalias +Date: July 2023 +Contact: nipun.gupta@amd.com +Description: + This attribute indicates the CDX ID of the device. + That is in the format: + cdx:vXXXXdXXXXsvXXXXsdXXXXcXXXXXX, + where: + + - vXXXX contains the vendor ID; + - dXXXX contains the device ID; + - svXXXX contains the subsystem vendor ID; + - sdXXXX contains the subsystem device ID; + - cXXXXXX contains the device class. diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 6c48b322a8f2..2de8da4e09c1 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -181,7 +181,10 @@ cdx_match_one_device(const struct cdx_device_id *id, { /* Use vendor ID and device ID for matching */ if ((id->vendor == CDX_ANY_ID || id->vendor == dev->vendor) && - (id->device == CDX_ANY_ID || id->device == dev->device)) + (id->device == CDX_ANY_ID || id->device == dev->device) && + (id->subvendor == CDX_ANY_ID || id->subvendor == dev->subsystem_vendor) && + (id->subdevice == CDX_ANY_ID || id->subdevice == dev->subsystem_device) && + !((id->class ^ dev->class) & id->class_mask)) return id; return NULL; } @@ -327,6 +330,10 @@ static DEVICE_ATTR_RO(field) cdx_config_attr(vendor, "0x%04x\n"); cdx_config_attr(device, "0x%04x\n"); +cdx_config_attr(subsystem_vendor, "0x%04x\n"); +cdx_config_attr(subsystem_device, "0x%04x\n"); +cdx_config_attr(revision, "0x%02x\n"); +cdx_config_attr(class, "0x%06x\n"); static ssize_t remove_store(struct device *dev, struct device_attribute *attr, @@ -372,6 +379,17 @@ static ssize_t reset_store(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR_WO(reset); +static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct cdx_device *cdx_dev = to_cdx_device(dev); + + return sprintf(buf, "cdx:v%04Xd%04Xsv%04Xsd%04Xc%06X\n", cdx_dev->vendor, + cdx_dev->device, cdx_dev->subsystem_vendor, cdx_dev->subsystem_device, + cdx_dev->class); +} +static DEVICE_ATTR_RO(modalias); + static ssize_t driver_override_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -403,6 +421,11 @@ static struct attribute *cdx_dev_attrs[] = { &dev_attr_reset.attr, &dev_attr_vendor.attr, &dev_attr_device.attr, + &dev_attr_subsystem_vendor.attr, + &dev_attr_subsystem_device.attr, + &dev_attr_class.attr, + &dev_attr_revision.attr, + &dev_attr_modalias.attr, &dev_attr_driver_override.attr, NULL, }; @@ -631,6 +654,10 @@ int cdx_device_add(struct cdx_dev_params *dev_params) cdx_dev->req_id = dev_params->req_id; cdx_dev->vendor = dev_params->vendor; cdx_dev->device = dev_params->device; + cdx_dev->subsystem_vendor = dev_params->subsys_vendor; + cdx_dev->subsystem_device = dev_params->subsys_device; + cdx_dev->class = dev_params->class; + cdx_dev->revision = dev_params->revision; cdx_dev->bus_num = dev_params->bus_num; cdx_dev->dev_num = dev_params->dev_num; cdx_dev->cdx = dev_params->cdx; diff --git a/drivers/cdx/cdx.h b/drivers/cdx/cdx.h index c436ac7ac86f..d17b5a501e8d 100644 --- a/drivers/cdx/cdx.h +++ b/drivers/cdx/cdx.h @@ -16,21 +16,29 @@ * @parent: Associated CDX controller * @vendor: Vendor ID for CDX device * @device: Device ID for CDX device + * @subsys_vendor: Sub vendor ID for CDX device + * @subsys_device: Sub device ID for CDX device * @bus_num: Bus number for this CDX device * @dev_num: Device number for this device * @res: array of MMIO region entries * @res_count: number of valid MMIO regions * @req_id: Requestor ID associated with CDX device + * @class: Class of the CDX Device + * @revision: Revision of the CDX device */ struct cdx_dev_params { struct cdx_controller *cdx; u16 vendor; u16 device; + u16 subsys_vendor; + u16 subsys_device; u8 bus_num; u8 dev_num; struct resource res[MAX_CDX_DEV_RESOURCES]; u8 res_count; u32 req_id; + u32 class; + u8 revision; }; /** diff --git a/drivers/cdx/controller/mcdi_functions.c b/drivers/cdx/controller/mcdi_functions.c index 0e1e35d91242..65dca2aa1d3f 100644 --- a/drivers/cdx/controller/mcdi_functions.c +++ b/drivers/cdx/controller/mcdi_functions.c @@ -120,6 +120,13 @@ int cdx_mcdi_get_dev_config(struct cdx_mcdi *cdx, dev_params->vendor = MCDI_WORD(outbuf, CDX_BUS_GET_DEVICE_CONFIG_OUT_VENDOR_ID); dev_params->device = MCDI_WORD(outbuf, CDX_BUS_GET_DEVICE_CONFIG_OUT_DEVICE_ID); + dev_params->subsys_vendor = MCDI_WORD(outbuf, + CDX_BUS_GET_DEVICE_CONFIG_OUT_SUBSYS_VENDOR_ID); + dev_params->subsys_device = MCDI_WORD(outbuf, + CDX_BUS_GET_DEVICE_CONFIG_OUT_SUBSYS_DEVICE_ID); + dev_params->class = MCDI_DWORD(outbuf, + CDX_BUS_GET_DEVICE_CONFIG_OUT_DEVICE_CLASS) & 0xFFFFFF; + dev_params->revision = MCDI_BYTE(outbuf, CDX_BUS_GET_DEVICE_CONFIG_OUT_DEVICE_REVISION); return 0; } diff --git a/include/linux/cdx/cdx_bus.h b/include/linux/cdx/cdx_bus.h index ac715bc84315..245ef7e26d5d 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -40,6 +40,19 @@ typedef int (*cdx_dev_configure_cb)(struct cdx_controller *cdx, u8 bus_num, u8 dev_num, struct cdx_device_config *dev_config); +/** + * CDX_DEVICE - macro used to describe a specific CDX device + * @vend: the 16 bit CDX Vendor ID + * @dev: the 16 bit CDX Device ID + * + * This macro is used to create a struct cdx_device_id that matches a + * specific device. The subvendor and subdevice fields will be set to + * CDX_ANY_ID. + */ +#define CDX_DEVICE(vend, dev) \ + .vendor = (vend), .device = (dev), \ + .subvendor = CDX_ANY_ID, .subdevice = CDX_ANY_ID + /** * CDX_DEVICE_DRIVER_OVERRIDE - macro used to describe a CDX device with * override_only flags. @@ -48,10 +61,12 @@ typedef int (*cdx_dev_configure_cb)(struct cdx_controller *cdx, * @driver_override: the 32 bit CDX Device override_only * * This macro is used to create a struct cdx_device_id that matches only a - * driver_override device. + * driver_override device. The subvendor and subdevice fields will be set to + * CDX_ANY_ID. */ #define CDX_DEVICE_DRIVER_OVERRIDE(vend, dev, driver_override) \ - .vendor = (vend), .device = (dev), .override_only = (driver_override) + .vendor = (vend), .device = (dev), .subvendor = CDX_ANY_ID,\ + .subdevice = CDX_ANY_ID, .override_only = (driver_override) /** * struct cdx_ops - Callbacks supported by CDX controller. @@ -92,6 +107,10 @@ struct cdx_controller { * @cdx: CDX controller associated with the device * @vendor: Vendor ID for CDX device * @device: Device ID for CDX device + * @subsystem_vendor: Subsystem Vendor ID for CDX device + * @subsystem_device: Subsystem Device ID for CDX device + * @class: Class for the CDX device + * @revision: Revision of the CDX device * @bus_num: Bus number for this CDX device * @dev_num: Device number for this device * @res: array of MMIO region entries @@ -109,6 +128,10 @@ struct cdx_device { struct cdx_controller *cdx; u16 vendor; u16 device; + u16 subsystem_vendor; + u16 subsystem_device; + u32 class; + u8 revision; u8 bus_num; u8 dev_num; struct resource res[MAX_CDX_DEV_RESOURCES]; diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index b0678b093cb2..aa3c28781248 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -935,6 +935,12 @@ enum { * struct cdx_device_id - CDX device identifier * @vendor: Vendor ID * @device: Device ID + * @subvendor: Subsystem vendor ID (or CDX_ANY_ID) + * @subdevice: Subsystem device ID (or CDX_ANY_ID) + * @class: Device class + * Most drivers do not need to specify class/class_mask + * as vendor/device is normally sufficient. + * @class_mask: Limit which sub-fields of the class field are compared. * @override_only: Match only when dev->driver_override is this driver. * * Type of entries in the "device Id" table for CDX devices supported by @@ -943,6 +949,10 @@ enum { struct cdx_device_id { __u16 vendor; __u16 device; + __u16 subvendor; + __u16 subdevice; + __u32 class; + __u32 class_mask; __u32 override_only; }; diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c index abe65f8968dd..7a659aa3114a 100644 --- a/scripts/mod/devicetable-offsets.c +++ b/scripts/mod/devicetable-offsets.c @@ -265,6 +265,10 @@ int main(void) DEVID(cdx_device_id); DEVID_FIELD(cdx_device_id, vendor); DEVID_FIELD(cdx_device_id, device); + DEVID_FIELD(cdx_device_id, subvendor); + DEVID_FIELD(cdx_device_id, subdevice); + DEVID_FIELD(cdx_device_id, class); + DEVID_FIELD(cdx_device_id, class_mask); DEVID_FIELD(cdx_device_id, override_only); return 0; diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 38120f932b0d..abc4781d5db7 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -1458,6 +1458,10 @@ static int do_cdx_entry(const char *filename, void *symval, { DEF_FIELD(symval, cdx_device_id, vendor); DEF_FIELD(symval, cdx_device_id, device); + DEF_FIELD(symval, cdx_device_id, subvendor); + DEF_FIELD(symval, cdx_device_id, subdevice); + DEF_FIELD(symval, cdx_device_id, class); + DEF_FIELD(symval, cdx_device_id, class_mask); DEF_FIELD(symval, cdx_device_id, override_only); switch (override_only) { @@ -1475,6 +1479,10 @@ static int do_cdx_entry(const char *filename, void *symval, ADD(alias, "v", vendor != CDX_ANY_ID, vendor); ADD(alias, "d", device != CDX_ANY_ID, device); + ADD(alias, "sv", subvendor != CDX_ANY_ID, subvendor); + ADD(alias, "sd", subdevice != CDX_ANY_ID, subdevice); + ADD(alias, "c", class_mask == 0xFFFFFF, class); + return 1; }