From patchwork Tue Oct 17 16:04:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154376 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4239719vqb; Tue, 17 Oct 2023 09:06:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFN39RoNRpQ5lolg4ub1wuQmZjPjglyDqDYA+KLEjrm+uhGP3WHG3q8g/0BqGf2CspbtWi2 X-Received: by 2002:a17:902:cec7:b0:1c4:1cd3:8062 with SMTP id d7-20020a170902cec700b001c41cd38062mr2751530plg.2.1697558779942; Tue, 17 Oct 2023 09:06:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558779; cv=pass; d=google.com; s=arc-20160816; b=gthvNQaF2rt7XJz0f6ujYJzS2PRGXdTjWT2J+v++LyoXV3lmLuM6hm4M7I+UArBeQ8 cI9RgjqezAyeNF4ZFNVZl0qJJ6HQhvJt/cb8+YmfPWhys/+Vu/eq0BNvpy/eq3jua7Ao E253j0tHioZpF/vXxkVxitlwV1s9Tv4iONaPDP+QIF/xxLJvERT1iz6n35o/0vDxDdao cHojgvIABFLL1Wm1t63nnNBykXJXf+QCn8me3+cJyqNagH4SUn6Od3s51hKW+CuBcQCI C5JbBdC/qfVPUjEPaVafT6RHejDMM2B+lYqKeFCyOURGM+Z8e2gw29txFgkxUY1ZimID ScnA== 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=ZEgv4gZmpXCMNDhXuFtAzUI3/joFFTZ1DY/yehSw6kM=; fh=SGNSxjuyMcTHLwSnMJDj6IQ0H2W2KE2sPI7KCBWZS5M=; b=GdrapLSdhbxSMYpo+IMyWxqR9RLkvb/YWybvhbl1PDfGSNVTdjtPjyXV2qQ6pgVeFF bgFI6TQaacMyDUF7xPi4zEbzElzhZhB8R0MiztzXctzkwqULzqB3ggMt5Yjn8k7TyBhD WOhIM3uoqxQ/Jsndgs6y7ZaECUdKDrKTfJYJbIyQrvqUxI8rriVmYSafK5D/bA3/LRXF JJ4fzWxRbzjnk/uuA/Vz3ykDFesaY5Ms/ZUvM93g8EE+vvEGv9ha3CaKO2Y/YZa1SP// p+28YlrZI86dgYtnV8hbUKrKs44PhmBQnGNzS4XpxSwkur+xdHP9+hGAkdc/FqLB58C5 9g5A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=DL4qCh8y; 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::3:1 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 morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id v8-20020a170902b7c800b001bbd0450af8si1908232plz.187.2023.10.17.09.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:06:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=DL4qCh8y; 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::3:1 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 2CBB3806A3AB; Tue, 17 Oct 2023 09:06:13 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235105AbjJQQGF (ORCPT + 20 others); Tue, 17 Oct 2023 12:06:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58454 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344080AbjJQQGB (ORCPT ); Tue, 17 Oct 2023 12:06:01 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2080.outbound.protection.outlook.com [40.107.220.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0409FF7 for ; Tue, 17 Oct 2023 09:05:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dHNv+suG1T7ZQaHZ3nPVrcldL/jNlN3TBqytETgqfCfLeV00MDvVxXIRFcZFWsNW2KDOM5tPn3jHaljswbXbUsUQ+lN6yvbCHIXKZ2EEa3UoOk6DdmwESA+npZ4KmMtPL8ql5SA26GsKzRq0mKaZUZKL5kkMC72Uv8yt1SwwUxw/pKsVsjwT32siXD81mlFw/E1SFAELaPV+lNRdppz8U2kP1I8xuEEosVwRSdfiLek8z4hex2xKBTwTq+ZQTyPBAlFv3YaPnWGKscepX7DxBl/68iAr3NPJAkajFXrMXVnF3yJqordmaapsoE3hnaAbe7k3CtZHcBq2bLlV5nEd1w== 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=ZEgv4gZmpXCMNDhXuFtAzUI3/joFFTZ1DY/yehSw6kM=; b=iSMiQrcV+h0Uj4XAzycrmPFNi1IymOoUA5nZuP1krWfzyI0FRkWhGgIO58pTrg+BsoiIAZDtje1prhjUg5iHBCuoDRL39BZwVjGhsA7TVpoDTSQJabxymIxpPiHpQCDwGOkm101ttdO7JKu96rYX7/4oIUP+lhJs6UbCiT92/Dbtt2DZl6gqe+lqfa1mJ+rnWUz/5gRVz1qOYBt3PCRRE9XZsYID0cqEpwD/bDwn4f8VEC5YxjCx6B2LWjw2xQWJ1Hvm6yRWJybvHFTTgdulJXY7/JKY32q4C/ilsnmB9GXgVwWQgDz4MIO6DscrKXJCVi4/ED+IqjOrUeFSWCvSmw== 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=ZEgv4gZmpXCMNDhXuFtAzUI3/joFFTZ1DY/yehSw6kM=; b=DL4qCh8ytXuUWRSRpd82t+D3xo0OCw+lR6QxC05J/TdnxDWnsExWbOQabvBEEix10pZ0QUH5ZZDoTlddQSCOFxqHRA05Hyam0vzH1vs/XC67X/VXG+CSlYzq0j8+wmVfZfXl6M0pzRGILnWH97vmBZ2sFisHxOxnPNr3BPBGSyI= Received: from CY5PR22CA0085.namprd22.prod.outlook.com (2603:10b6:930:65::10) by DS0PR12MB9275.namprd12.prod.outlook.com (2603:10b6:8:1be::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:05:56 +0000 Received: from CY4PEPF0000EDD1.namprd03.prod.outlook.com (2603:10b6:930:65:cafe::a1) by CY5PR22CA0085.outlook.office365.com (2603:10b6:930:65::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36 via Frontend Transport; Tue, 17 Oct 2023 16:05:56 +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 CY4PEPF0000EDD1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:05:56 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) 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; Tue, 17 Oct 2023 11:05:50 -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; Tue, 17 Oct 2023 11:05:47 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v7 1/7] cdx: Remove cdx controller list from cdx bus system Date: Tue, 17 Oct 2023 21:34:59 +0530 Message-ID: <20231017160505.10640-2-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD1:EE_|DS0PR12MB9275:EE_ X-MS-Office365-Filtering-Correlation-Id: 8255ee3f-51fd-4595-2718-08dbcf2af24e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: g8AN7673jBeLFmbRDnIhXa7PkDKLZ5BLJTXq9lk/G8rBp+tH9yX8w4hLSSQqJSq883S70owWd9n5GyVgWRDIpvkR66m/tJe+GjbzBomz68SNol7x+WNHcUorvikdhFT4dU7VA96IrEEPoruaB1f2j6bhLEHzE15RLV+cejF34MkLUZYktEXQbKK0t6tRt2UjMmB8hgb8yJZ+sYqF84tQhOtDVlNQ7yB/tmPF4iCcYdE7iNPPJ+LstYXqVCgpsE0xBMgjgq5TYAsNrv7RKqcmBz5nG5LQUZlV/UWm19KZljiDp4uQikGF176hOe6RRJpg+Eqo72vF0W09xWUlvX7jgQFSa6F0/N47i+fvi0yJDAWUJvTBteY6ZFzq6virSXx2ftFFZ894fb6g213d7ypntf7uz7lINWU1/3PMQZ1zqETlPUfOdMmcRDUjx6CGe4AcML7F/mQIaFwkx1/ReI6VapjFvlG6JOo9/QafEwcCarT2nm/2w+UeKyDj1jRtesnhXru/j65mG+32BMf6ZClw8wIXJnKRnoEM15xA4WqsNQ8LlSJIO2R4oGcbbKJei+6SapKs2mCoFcr7JPKdwMxq8s4NUzM4zmKeseemKJgqZCTVeEQGyTEbbbCcmIvL158Kha68vxeLlncA2GL732dYk+Fg1d4uLwU25I3MBicmVyElZ+ht79JAITIOwW/rENSJmddZt8OWyacR+FtO1u0ey6GQBrYsYqpGh7+ILkUa3G06pEi4sIPgfkgExto0rq/gyA0RvQPyg4FD6/S6Y/aQZw== 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:(13230031)(4636009)(376002)(346002)(396003)(136003)(39860400002)(230922051799003)(64100799003)(186009)(451199024)(1800799009)(82310400011)(46966006)(40470700004)(36840700001)(1076003)(478600001)(316002)(110136005)(41300700001)(8676002)(8936002)(4326008)(70206006)(70586007)(54906003)(44832011)(5660300002)(40480700001)(82740400003)(36860700001)(81166007)(356005)(47076005)(86362001)(426003)(36756003)(336012)(26005)(83380400001)(2906002)(40460700003)(6666004)(2616005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:05:56.2747 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8255ee3f-51fd-4595-2718-08dbcf2af24e 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: CY4PEPF0000EDD1.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB9275 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:06:13 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019395391346999 X-GMAIL-MSGID: 1780019395391346999 Remove xarray list of cdx controller. Instead, use platform bus to locate the cdx controller using compat string used by cdx controller platform driver. Also, use ida to allocate a unique id for the controller. Signed-off-by: Abhijit Gangurde --- Changes in v7: - None Changes in v6: - Added conditional check before scan() Changes in v5: - None Changes in v4: - Make cdx_controller_ida as static Changes in v3: - New patch in the series - Remove xarray list and use platform bus - Use ida to get unique id for controller drivers/cdx/cdx.c | 42 ++++++++++++++++++++++++------------- include/linux/cdx/cdx_bus.h | 2 ++ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index d2cad4c670a0..0252fc92433d 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 */ +static 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,20 @@ 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); + if (cdx->ops->scan) + cdx->ops->scan(cdx); + cdx->controller_registered = true; return 0; } @@ -541,8 +554,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 Tue Oct 17 16:05:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154377 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4240114vqb; Tue, 17 Oct 2023 09:06:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFEZWQz7ShtnRkyH9JwHuttoQnTy2KTKAGqWqTTdkTntTRFUa+y64jezCLPNnDf/E6W9eXM X-Received: by 2002:a17:902:cf4e:b0:1c9:e48c:7260 with SMTP id e14-20020a170902cf4e00b001c9e48c7260mr2580849plg.6.1697558808662; Tue, 17 Oct 2023 09:06:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558808; cv=pass; d=google.com; s=arc-20160816; b=jMNEwb5LeSy4VK3e/+9xYaVbme/nkcBbntMzjuEx+TL+wvgoFfE93D5h7rgJGLA48o Wk7FahLrgyzVJPpm1AMvx4ktZ7JyEmm/itCdg7n0UlWLEyYP/AnCWVmHuqvo2i7KcPt5 05hhUPiShKOF9fdtJ18YlIz5b+ZfwjyuziOeGTs90E1W1aUJHnwV1vnMVqgcSH2Ef7AZ dBAbs7Kx+bP4Pa8kPamOFmspSTzxm62SBAuOX9pNk0NGcECi0hVdTfNFl6pU/CPaeTHY Zw2WbZkyt+c1suK0eJmHvMD5uTnNvUb9GFFE16RHcd4kJyr5SIMISQdwsCWyFeLrvhU1 kfhA== 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=BSOdtb5blejHqbQRVH7b+62CpLy7az2PBTqLpGu+vQ8=; fh=SGNSxjuyMcTHLwSnMJDj6IQ0H2W2KE2sPI7KCBWZS5M=; b=v11PGjRgnm6GZlqXpHq1DkS0lad4V6cMlepne4jokBjn52UELOAU4w67GN+wJkv+N+ IrdoNFPBBTIud8DXgow3ZMVkaNaXM+ydu0hwvTOiczJ90zgPXq+wysP+baP9m1eToSok 5hgU4eLXAUdKMhciWcBr8AIkYw2vkqV7ddgdsJ5TdRq+ezNs52o/nyAo7+GT4VcvUwsy vzchZhPJvMQtGBXi3Q3NOX1o/MPsVAEgEWws/VZJIVE5IIGmkXza7koYRQhFBbZvRk64 HY3y3Bx6HrSl/YCVk4UUqLuvr8HVZ+ZfeLY8ZZDJ1fcqJDq4wVdT0D3rXWn9Gg4G1xrj mQ/A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=P3sTjP58; 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::3:1 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 morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id u7-20020a170902e80700b001c35cccca33si2088472plg.448.2023.10.17.09.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:06:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=P3sTjP58; 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::3:1 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id D04E5801BFD1; Tue, 17 Oct 2023 09:06:34 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235108AbjJQQGQ (ORCPT + 20 others); Tue, 17 Oct 2023 12:06:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235109AbjJQQGM (ORCPT ); Tue, 17 Oct 2023 12:06:12 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2087.outbound.protection.outlook.com [40.107.237.87]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B6B910F for ; Tue, 17 Oct 2023 09:06:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a0IvWW1TOdAQszCIl60L+hnMPj3mp3Eg7w4DrQooFinyPgUtBsYHq6dPGKiNpB9/dmvExtD5d2eCA9QsuEIoXnojIfDwcPbziQHo0v2jslWxcNNz1d4YFS/Jm6BIMqS7uPiqn8HDYYC87KyAk2ks7o4ODHGeID2oMG8QIKror12fJvKvOlu7GCgSK4HO0D07R4BCDbll+8G5WtfXMosWv7t+dP1u7oaoNrOnDAfZCXaTIJ8G2KuNuF3WX2udsR6nVHq0U9jOQlgXHqeLa5IK2ypG9rgImkEX74AioI1srwr4j+nwLvyjvR7UtoOHwvVdCsCjaSMOxY+DXk/jYi0SFA== 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=BSOdtb5blejHqbQRVH7b+62CpLy7az2PBTqLpGu+vQ8=; b=ToguDb8tFCl+Zr833cGYKq/rYFTAwRQoGnfceR3OveX8wqK2TaVBy7tgvrE2Y5JBikujhFMzgYnnes95u2iH4Iubgfq1h3KEzColLASPmvr6sRraWuYiawadV1KT1Vg5ldkxirIiQM/fMlwyKGQthN2/yznrbO5FOoBizeIgRE0Bnm3spsfw87keVMZfCUtm3Qu7fy8OSPeCuHB0GUFID0qXK1yZWYY5vlrRBuxmgeMrML4fRPHiGaKgZOgdq8JnFJGbtn2EbVHv6vAsfHbvlrxoV6zSjHsObivTgDE2Xr8sU621iFzE8NDIeNAwxwN05K4m5RmRpTD65S4Mz5aHpA== 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=BSOdtb5blejHqbQRVH7b+62CpLy7az2PBTqLpGu+vQ8=; b=P3sTjP58vWBMah6fR2LJ5dbgUhwm3p+7dyPEbYIHgufY+4FRmBp55a+286jSS5pmrMn/Rs7tq8ZPUvfDJTcgHUZXz7301Z3Yhac7G34mnWk11jgE9qICzyN56GmzNbVW3ARbIijLX4ymYHiahqAWqndrRJjpmq2ZgAO0uTcCVws= Received: from DM6PR11CA0061.namprd11.prod.outlook.com (2603:10b6:5:14c::38) by CY5PR12MB6550.namprd12.prod.outlook.com (2603:10b6:930:42::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:06:05 +0000 Received: from CY4PEPF0000EDD5.namprd03.prod.outlook.com (2603:10b6:5:14c:cafe::f) by DM6PR11CA0061.outlook.office365.com (2603:10b6:5:14c::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36 via Frontend Transport; Tue, 17 Oct 2023 16:06:04 +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 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.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:06:04 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) 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; Tue, 17 Oct 2023 11:06:02 -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; Tue, 17 Oct 2023 11:05:59 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v7 2/7] cdx: Introduce lock to protect controller ops Date: Tue, 17 Oct 2023 21:35:00 +0530 Message-ID: <20231017160505.10640-3-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD5:EE_|CY5PR12MB6550:EE_ X-MS-Office365-Filtering-Correlation-Id: b9c4468f-c8f9-4f68-38f9-08dbcf2af71c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yPHgiN2TifEqRC/PsfrDg2Tj/MB37mRixaDh0V/ylUFKZtbyZxf8VpukfFotGH1v7JK8/BK45as0//YVELVuUuhdGD4sOKE7fr3MJa7d/UxnWCqVvfFOJBhKAaR5q2YrXADDjLMOuC12CrRFOHy6uBZK9aoKrhwlydTVsOFQv0IR8rOxt1ZLM+LTQvPjvEXM8XpYVSS9fw4Y/TSNlFB3mgyQqMVmqvpUwktqe9w+DENHy8o7Z95ANiw1OeqV5pZA4zQL45E3olCFCKL4bpxFhqmMrR+bnksRktV0VcAHYraDIy6ZHORAkJCSJMGs4uXZIWiwi9L2/yRRxhov88yVLjjV3mFlY9i+MxqbVhkMwbyRMVnvzE98Pd6tZrcxN0KidWMYN2runDNcxRT3a+IozRdMb+0hNwViwusFcTd1386DQYMaXCWmjX5b4bExsb/fUg2mUyliL6Wl7ggQifVfBqjvz2ZM3QjnZzmZQb4uClLTOFyoa9y6nwGe7mQvhRauup53yN5Z04zoy2CoJ5NGHcaRhs62zHgWBxRlRfWz/+XdRu1ldlpYtS0kAgI8BnhS0MP2+7pLhk9j33B5bT2Ce/3wif0lhUz0aGmx2ZL5etht2724cT9wrYOw11iVvGCyuAXM4e3Fe0oX4WNyrmnPFBT6Po8RWiqIZGg6ZVVQWICbKUqVr4c3yt/RSfNsghqRnwcIvIjlMAXqrhFHbkPUAT8Q8JqDr58ASsnZe+VeZssNYS1V50uQH7RaETyRhTKDJ6p2R+GHucLl9Qi5P2Kpbw== 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:(13230031)(4636009)(346002)(39860400002)(376002)(396003)(136003)(230922051799003)(64100799003)(186009)(451199024)(82310400011)(1800799009)(46966006)(40470700004)(36840700001)(54906003)(70586007)(110136005)(70206006)(36756003)(316002)(83380400001)(426003)(336012)(47076005)(2906002)(6666004)(478600001)(82740400003)(8676002)(4326008)(8936002)(36860700001)(41300700001)(40460700003)(44832011)(26005)(356005)(2616005)(40480700001)(86362001)(1076003)(5660300002)(81166007)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:06:04.2580 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b9c4468f-c8f9-4f68-38f9-08dbcf2af71c 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: CY4PEPF0000EDD5.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6550 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:06:34 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019425679271285 X-GMAIL-MSGID: 1780019425679271285 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 --- Changes in v7: - None Changes in v6: - None Changes in v5: - None Changes in v4: - None Changes in v3: - None Changes in v2: - New patch in the series - Introduce new lock drivers/cdx/cdx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 0252fc92433d..75760388f5e7 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -72,6 +72,8 @@ /* IDA for CDX controllers registered with the CDX bus */ static 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,12 +544,14 @@ int cdx_register_controller(struct cdx_controller *cdx) return ret; } + mutex_lock(&cdx_controller_lock); cdx->id = ret; /* Scan all the devices */ if (cdx->ops->scan) cdx->ops->scan(cdx); cdx->controller_registered = true; + mutex_unlock(&cdx_controller_lock); return 0; } @@ -554,9 +562,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 Tue Oct 17 16:05:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154378 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4240555vqb; Tue, 17 Oct 2023 09:07:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG+Chy3omg9ibCWBG0EMXP/VUobaSI+VjwpjTQ2fHIUekawObBYwS2Q5WIRGlddJc8/FQsZ X-Received: by 2002:a17:902:cf4e:b0:1c9:e48c:7260 with SMTP id e14-20020a170902cf4e00b001c9e48c7260mr2582849plg.6.1697558840642; Tue, 17 Oct 2023 09:07:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558840; cv=pass; d=google.com; s=arc-20160816; b=h/T6Sr/OLE5tzk8b39HlqAapOG9sCjGWUnyPgJ1Y+EMm8liOq+sTYXnmzRWraAMelo QRmPOHfAHNCSuJjlLNYDOV35WXGJ08LtCFZIxXY9XDhRYf2P5vK8N7GlUeQFVPeWrwhi zWjiIWrRcP7b960P+AuzBviCpi95f11hPgbThQ2mqkcX21VYUeFsz3M4KpxpKY8La5kf oTxIM/S9k7WgEBWkpJShNxPHlSscx5nk9rT7Lo4yfnOStGnZ2ODLpPmSoMhKafl13cGw TEQfNbLg1V5oURyRbx5vPMod1AM25rQ+v7QZMNztYrS1hlHTvB1IA95aRyWoHuIG+lwM wUIQ== 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=aAbWS9qA4FErXhjbxf98yqdO1dKDkrqB/x9z3awYiGI=; fh=SGNSxjuyMcTHLwSnMJDj6IQ0H2W2KE2sPI7KCBWZS5M=; b=KWwmBJdC+pZLb7a00erJOIt8YdGFBlN0YiN9MpWLtMddKDo1IULsW/OUHcICVRzHZp CDAc7f04wicG1nuUgYY7n2b+fnoU4HDJCOaEzkWJIAPoRXVKjJNxhC4Sah6rdnSXtyhf pz+hX1nWLbbLKZyplTvbPsn+PRyYPsvNUxsoEU2yBMQflpTzsDSs1/eCjZo5lJ82XMv1 Fz50gRled59R71s5KjPRLUDQEAAUvRvhw+l/hgZztqCk0sJRqnHdt0aOubM7tgv0TXvG bb3HKIi+8U3Z3QHZpmm8o2XJnKh9vJw0oDftbN9Lbv8Y3Lm//j1VYPCaerUvj8RN6vl4 B39g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=o1oIxokP; 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::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id c4-20020a170902c1c400b001ca85b996a7si2019748plc.192.2023.10.17.09.07.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:07:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=o1oIxokP; 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::3:2 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 04D4380320C3; Tue, 17 Oct 2023 09:07:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343840AbjJQQGx (ORCPT + 20 others); Tue, 17 Oct 2023 12:06:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234686AbjJQQGv (ORCPT ); Tue, 17 Oct 2023 12:06:51 -0400 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2065.outbound.protection.outlook.com [40.107.244.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC20C95 for ; Tue, 17 Oct 2023 09:06:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gSa+eLnIMBvlYV//8oH0I4yI2wj8Stwcxunj8S6s+16p8zG1ZBjbT6y2JbSS6x/CBOp5USavdvS4ypIOX/lXQxMciwUoK6a4FW+PA3ytKgK06fKxlsmOxqDnJcxB7RwxZeF4MNLHX1Nzjf9PflGO+VAHS8FuQoMBT8AZPcBPUDaFT5CyPMYwaw1inQmD18+tNteaRTXmCsfCH5jKazJJiNpGYyY1qt/XAQ0Oan5u6Hnt/ICt4J9orxEaH0H48Mp4dTK3Fcc5AeEXi9j6a0Hqwk6fiu7bNJNuT/aDg7RS4RbkMKi6p/l9Nhmtnh4mEtBSF015rDWUF8A1xKg6i64vlQ== 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=aAbWS9qA4FErXhjbxf98yqdO1dKDkrqB/x9z3awYiGI=; b=Qc1h7zuOKDL3+3AN9wjfcvXok+/E6f6xeevnhsWID6pniA4NKtLl7xYZ26UW438DralXylMB6zpdxdRYEsurvBWKWZV0zFFHlCbhmXTt4ttHPw18VeCcTPcu6eWDLGbl9aEl7a9/YeccmMvRVxYXEn+YWVWCs6njhyc11/mP0hwZO3fzhxkd5iwBYY9imW0+TKkeFbfMr3Yyo+kavogA0NZgYcFEHWG9AbTT+j5FNnEiHSyQlKJLf7fCA4lOvgbwh6HaPpecUcNdCLL1ADpcVwrSEpFt0bFSMlMsDbiU+5+edJ9U8v8C2fqF5Q3/3QujAXzCjb7h+9k4TcJ8/Go9Lw== 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=aAbWS9qA4FErXhjbxf98yqdO1dKDkrqB/x9z3awYiGI=; b=o1oIxokPSUy0JyL3Z0HVIhrgdq3YuV9BZmOLlNuO8l6J4ohWONxg5Zx8IdCMe4aw3vOrgLdsudwwt4+sTLJL8sl4kL8gty/h5oc5HdELdYxOAN3Be7iUP/oXPKVnKEx3iCRPWhlwWsyNNLizVoygWi0B+sGAUpzupkS4pPw6JCg= Received: from CY5PR22CA0085.namprd22.prod.outlook.com (2603:10b6:930:65::10) by CH3PR12MB9098.namprd12.prod.outlook.com (2603:10b6:610:19e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:06:46 +0000 Received: from CY4PEPF0000EDD1.namprd03.prod.outlook.com (2603:10b6:930:65:cafe::f9) by CY5PR22CA0085.outlook.office365.com (2603:10b6:930:65::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36 via Frontend Transport; Tue, 17 Oct 2023 16:06:46 +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 CY4PEPF0000EDD1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:06:45 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) 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; Tue, 17 Oct 2023 11:06:34 -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; Tue, 17 Oct 2023 11:06:10 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v7 3/7] cdx: Create symbol namespaces for cdx subsystem Date: Tue, 17 Oct 2023 21:35:01 +0530 Message-ID: <20231017160505.10640-4-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD1:EE_|CH3PR12MB9098:EE_ X-MS-Office365-Filtering-Correlation-Id: 9efea302-b537-4a2d-6840-08dbcf2b0fe2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2WwhRMGEp26Opt463j8m8yOfHnt5ayB/KQsn/yRqAgMxKUZOqlgpTVis8Ty/PPvxj49zCLjKkfVZ5n+VYum+kC2awvYZIAZtCiH9sf66cINplD+GqyEhZwTjW3IJDLdOhNyRMdIuyeT+XskeLQD5chxvWx9cILyDtWSQoCxgEmSVVuxSeCkYy2GY855BLAIld1UbmGCOdDf5nBr3oZ/Jp8W+LXYMOaHBfPjnkgmjtdTlTB3sUrgutpKRrd7HjsrpUZZ1Grrlr6NUUgEFgeMElyNI0T1fYr5JcYfDRmhIIPS/uJs9z1fxeelFW6sUtqRALy8zN3jF+dmLpwP3rrDKMG72baurzLrdCk+2YuGT2z5MKhUeoP+fEnOLE/6mwQkFEOwr2NJ7/NWQNX44/zfvUw3WIrWgpZzG6Bu285meygleT0FvtTWn0o9J+avbYovIZloe0BTsnHUZCSoatinWJ8RxhxS3E2obvo7e7TBTaI6/adsdNZbK2ugVolsBstUHqu3YAwd624G8peg2Ftg4awD28Y9/YP2Sxa3d9c4JHjjtNTH3ZUlBTm3jugsLJ/Y3xmy6l0TUA0EV0ByAqo3pZ1D86cQvfUkYsMZL8eXsuZd2UL2eSTC6Q+gvMXIt67cE//9qRXCj3+QpjpTobeXLeIsj+8lF93gnPM9OVJssVjFhw9ejrwShMQG61Bb6egSNW7Ty+LWhYTTri35VJ53l1jkKuFgpNVmxzotkhsfLhQ5+k1rQtYOzL4iKEqqm1JdDpnyLqM5QTrhA0wUh1q9DKw== 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:(13230031)(4636009)(136003)(346002)(39860400002)(396003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(82310400011)(36840700001)(46966006)(40470700004)(316002)(40460700003)(70586007)(70206006)(54906003)(110136005)(2616005)(1076003)(426003)(336012)(26005)(47076005)(40480700001)(83380400001)(82740400003)(81166007)(356005)(86362001)(36860700001)(36756003)(478600001)(6666004)(2906002)(41300700001)(5660300002)(44832011)(4326008)(8676002)(8936002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:06:45.9001 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9efea302-b537-4a2d-6840-08dbcf2b0fe2 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: CY4PEPF0000EDD1.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9098 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:07:10 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019459055030289 X-GMAIL-MSGID: 1780019459055030289 Create CDX_BUS and CDX_BUS_CONTROLLER symbol namespace for cdx bus subsystem. CDX controller modules are required to import symbols from CDX_BUS_CONTROLLER namespace and other than controller modules to import from CDX_BUS namespace. Signed-off-by: Abhijit Gangurde --- Changes in v7: - New patch the the series drivers/cdx/Makefile | 2 ++ drivers/cdx/cdx.c | 6 +++--- drivers/cdx/controller/cdx_controller.c | 1 + drivers/vfio/cdx/main.c | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/cdx/Makefile b/drivers/cdx/Makefile index 0324e4914f6e..5d1ea482419f 100644 --- a/drivers/cdx/Makefile +++ b/drivers/cdx/Makefile @@ -5,4 +5,6 @@ # Copyright (C) 2022-2023, Advanced Micro Devices, Inc. # +ccflags-y += -DDEFAULT_SYMBOL_NAMESPACE=CDX_BUS + obj-$(CONFIG_CDX_BUS) += cdx.o controller/ diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 75760388f5e7..ee0913f04758 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -530,7 +530,7 @@ int cdx_device_add(struct cdx_dev_params *dev_params) return ret; } -EXPORT_SYMBOL_GPL(cdx_device_add); +EXPORT_SYMBOL_NS_GPL(cdx_device_add, CDX_BUS_CONTROLLER); int cdx_register_controller(struct cdx_controller *cdx) { @@ -555,7 +555,7 @@ int cdx_register_controller(struct cdx_controller *cdx) return 0; } -EXPORT_SYMBOL_GPL(cdx_register_controller); +EXPORT_SYMBOL_NS_GPL(cdx_register_controller, CDX_BUS_CONTROLLER); void cdx_unregister_controller(struct cdx_controller *cdx) { @@ -570,7 +570,7 @@ void cdx_unregister_controller(struct cdx_controller *cdx) mutex_unlock(&cdx_controller_lock); } -EXPORT_SYMBOL_GPL(cdx_unregister_controller); +EXPORT_SYMBOL_NS_GPL(cdx_unregister_controller, CDX_BUS_CONTROLLER); static int __init cdx_bus_init(void) { diff --git a/drivers/cdx/controller/cdx_controller.c b/drivers/cdx/controller/cdx_controller.c index bb4ae7970e21..3f86663fbacf 100644 --- a/drivers/cdx/controller/cdx_controller.c +++ b/drivers/cdx/controller/cdx_controller.c @@ -229,3 +229,4 @@ module_exit(cdx_controller_exit); MODULE_AUTHOR("AMD Inc."); MODULE_DESCRIPTION("CDX controller for AMD devices"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS(CDX_BUS_CONTROLLER); diff --git a/drivers/vfio/cdx/main.c b/drivers/vfio/cdx/main.c index de56686581ae..b3e482fa717b 100644 --- a/drivers/vfio/cdx/main.c +++ b/drivers/vfio/cdx/main.c @@ -231,3 +231,4 @@ module_driver(vfio_cdx_driver, cdx_driver_register, cdx_driver_unregister); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("VFIO for CDX devices - User Level meta-driver"); +MODULE_IMPORT_NS(CDX_BUS); From patchwork Tue Oct 17 16:05:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154381 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4241136vqb; Tue, 17 Oct 2023 09:08:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEAQ6qh4R+Ar87i/Vqft8hoirCXTVacoMQe+ONOUPOxfDYzy8S9WpKOqJwWlA1383vCX/7w X-Received: by 2002:a05:6358:72a6:b0:166:d9f6:fbbc with SMTP id w38-20020a05635872a600b00166d9f6fbbcmr2870669rwf.3.1697558886221; Tue, 17 Oct 2023 09:08:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558886; cv=pass; d=google.com; s=arc-20160816; b=qxUCa1xw0Q8bSdLZS7iGYsHEDB1IZecry2Mf/jUttsZ1he7IVMvU3OWQhaZePTOg70 v6WjKsucmv5Mv8vUIJGeJWsX0sQCsUG+s0eToTwr6aDDvXyYwtB1BC9pBhxIt/pjahyO nr7t2olspLOY9ZRcLtf4yR+3IBqDNXZcwQBrUr59y3Yd3jK5R4HwwEcTRlv1Dg0ee6ur lZBP35a/SYh6xYPwRECNlEkBGKSDbyoYXh7/ZuXFJneuY4/TQf4COXvkrXyW3lKIMcSy xTD7FEuH2+luYsOZepcYZiaOw+hHXk+waDntrGw28mZolBAH+V2bpDVAJSLnxyVWzUg5 fkKA== 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=0YozevfbJj5mDbmFW3hI0vInRjlWTpJifXbaws/599k=; fh=SGNSxjuyMcTHLwSnMJDj6IQ0H2W2KE2sPI7KCBWZS5M=; b=Sp0WeROmz5R7fCDv0/Wvp5Sq1KwqKVSNpnIMQGMAV5MubBZ9HZbVfUlYVY0KK2DsG0 37iMVSuzLng8j0HWRaw5gXRon1u7+SXonZM4B5y/B+LOsYwlVr9XHaBiU1PRMgeTM0El DNj1edgOTAYHTQCeTFWsGvtbmWi8QFaP3cNOpI1GwhLII4mO7VzkAW5UHS4hYRz5Zk8t qB98kCrFZuBqZ1IcXXD8Q7NpMJKnJOlJTLS6BspEJNiX4OrwobhZLBGgKooojDN1nqKQ Jop/dpWk2QOCWw674X12yfkB5kcFLQ83ppoO46WvxcAx7/88AV2xAfJeU463q6pSzI2s /A1A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=CPTfvZF+; 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::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id bu24-20020a632958000000b005a9f776c579si96323pgb.65.2023.10.17.09.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:08:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=CPTfvZF+; 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::3:2 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 67A7E803207F; Tue, 17 Oct 2023 09:07:56 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343611AbjJQQHf (ORCPT + 20 others); Tue, 17 Oct 2023 12:07:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343532AbjJQQHd (ORCPT ); Tue, 17 Oct 2023 12:07:33 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8187695 for ; Tue, 17 Oct 2023 09:07:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aRDL2KTbVc2EIQvPvxsW6Q47U+/e7LGWNlBNGMPAWPCyspbdFUuxiQAFp2nSUMOTlv702XaXP9W+NkdJuoS/5yYG55I8UEfIAHZnO+/L0TSFAugfbmP9QMfVlFg97aPAGLyGmnF3NNS3kWf/RQ3iSmgxVdDHTrI5SiYWmCljoTB4D+xDBRcl1eRE+wtNY1QCBt4Noalt62wOd6Tzo8cKYCsU+Jkk64pqXvF/HKfXDAX5MDltaL1/w3fMSFxlwLDxT1lQ4iO4q6zVno77ZaChdn80UmQ8mAYOGr5QqJoor2Kt2MFB4XafLcjnNY+3w26anUdgqrfnfTkQlU/Lmb22Tw== 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=0YozevfbJj5mDbmFW3hI0vInRjlWTpJifXbaws/599k=; b=Opg++0wbea1xXakZ/9vSETHWVPSv+pUGf8xSM6K9Mn1496gsvZ3o4guiDVjc1uKDC32kCMs0GyOhEaCLNJ7u/DRt4Eyh02rxvcqO38RVeXaJ6/MOkMuMkigd+GHz7Q3SvlXRWTFPb+/wvszk11jRikAU1wHvUxS8SGDsCwROWLIAJ6JcBR7+Qlg4S73ORFTS7bcmNbM30oOP4xhBHPdBz9ynTQCHGBvaFIkS4+F/2R3gd25R0hEAHE2eu0Qfu6cG41LVuy6ntaRfGrj2JH5Q9YpfsQ/2GB83FdkejFnEhmkZJoWYsxDFAb1BGsvatt+mJB8OJc79avr9SEqqJr/neA== 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=0YozevfbJj5mDbmFW3hI0vInRjlWTpJifXbaws/599k=; b=CPTfvZF+UiybMJshYMnWh5lV6hUQd80EBsEFF3Oa6TU3J2aO4Kj1YIHcs6g3ZxJrdIujCKzDcIXfIt1LMRLZKcBQ2/NiASBYw0S95B4VWqbFY6sed0XI0c+K8pXpyMgOX8hYsPD5Wai5U6flHKuc2kOUT61mkfZWMNio6FKs6+k= Received: from CY5PR19CA0109.namprd19.prod.outlook.com (2603:10b6:930:64::6) by IA1PR12MB8286.namprd12.prod.outlook.com (2603:10b6:208:3f8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:07:27 +0000 Received: from CY4PEPF0000EDD4.namprd03.prod.outlook.com (2603:10b6:930:64:cafe::34) by CY5PR19CA0109.outlook.office365.com (2603:10b6:930:64::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21 via Frontend Transport; Tue, 17 Oct 2023 16:07:27 +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 CY4PEPF0000EDD4.mail.protection.outlook.com (10.167.241.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:07:27 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) 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; Tue, 17 Oct 2023 11:06:45 -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; Tue, 17 Oct 2023 11:06:42 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v7 4/7] cdx: Register cdx bus as a device on cdx subsystem Date: Tue, 17 Oct 2023 21:35:02 +0530 Message-ID: <20231017160505.10640-5-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD4:EE_|IA1PR12MB8286:EE_ X-MS-Office365-Filtering-Correlation-Id: 5962b305-4374-4ef2-b6ab-08dbcf2b28c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OgCL0N3yIyZGZARYnJBFgGhm+detPxGwXrxNXbvxKx1oBdzolrsbJ0/4lBt5y//kA4egyLS+pISVrD2wY3V4bVTBrrOApdWrntI5dIM9Nq1v4yl1D+sKROIZQsV0dg5W7MxBgBlVwqktxtT/DAaXUfYWGJDpEiZK6Hc4JQmqLVJZG8hEZ5KAaYZ/KszeIMotOo3JrZlpIhqN2EP86Lj46hVS/inLZWJ/VFzkJ2u48WKy1dcWEXAoRUIXv9331qjbAKyoJfMhJXCKkCgbupo4C7S3gy3BEdO6piefvisE/Z3HXI2SCFpFfrpIpRsFug4XRhY/++k6YoXfbU8DEh+uXmnPRkz0XJLWBq/yxIHTCoXbg110t9qQe1l07LoT5jljrdYQ+TmD/GvYIkd9/HxtUaMg/cfoPAmMgX0c78CR43NBl1Ohdkp4zk2YwvL82H5noPGeZtjCCjAmOzbOiSEVnuSdn5jhpqqHU7LBAU7Ru225TYS3a7r4JI33o2W5PP6Rvmu2OuzyOnFsea5gdqOM3G2BGYj47u7RPRQ1lVBoSsrLg6/V3wecMk3+yd0uAUf64xHxKmoyQ3UIr2ErpQbyXL70Wdf4fxgWWLiBex33aXTM6U1YK396e7MgdbyxB5uI08hMxcAwHvCONQEkko0iI+SIrS8rso+q9/wDZHPkfSygHK4b7ra0TlJlHAwW95AEpIOv+QvNr2gd+VNbkywN8SGF91wdTtK62FTiiM1YtuYRlFWXyXWaky8oAn4BW+pE0svHUJ8WoPR2gUbeDnFzww== 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:(13230031)(4636009)(376002)(396003)(39860400002)(136003)(346002)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(82310400011)(40470700004)(36840700001)(46966006)(83380400001)(336012)(426003)(26005)(1076003)(5660300002)(8936002)(41300700001)(4326008)(110136005)(8676002)(44832011)(2616005)(36756003)(40460700003)(86362001)(356005)(40480700001)(82740400003)(81166007)(36860700001)(47076005)(2906002)(478600001)(6666004)(316002)(70586007)(54906003)(70206006)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:07:27.1839 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5962b305-4374-4ef2-b6ab-08dbcf2b28c7 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: CY4PEPF0000EDD4.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8286 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:07:56 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019506702880834 X-GMAIL-MSGID: 1780019506702880834 While scanning for CDX devices, register newly discovered bus as a cdx device. CDX device attributes are visible based on device type. Signed-off-by: Abhijit Gangurde --- Changes in v7: - None Changes in v6: - New patch in the series - Register cdx bus as a device on cdx subsystem drivers/cdx/cdx.c | 77 +++++++++++++++++++++++-- drivers/cdx/cdx.h | 14 ++++- drivers/cdx/controller/cdx_controller.c | 7 +++ include/linux/cdx/cdx_bus.h | 2 + 4 files changed, 93 insertions(+), 7 deletions(-) diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index ee0913f04758..cf5306580c21 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -125,8 +125,13 @@ static int cdx_unregister_device(struct device *dev, { struct cdx_device *cdx_dev = to_cdx_device(dev); - kfree(cdx_dev->driver_override); - cdx_dev->driver_override = NULL; + if (cdx_dev->is_bus) { + device_for_each_child(dev, NULL, cdx_unregister_device); + } else { + kfree(cdx_dev->driver_override); + cdx_dev->driver_override = NULL; + } + /* * Do not free cdx_dev here as it would be freed in * cdx_device_release() called from within put_device(). @@ -201,6 +206,9 @@ static int cdx_bus_match(struct device *dev, struct device_driver *drv) const struct cdx_device_id *found_id = NULL; const struct cdx_device_id *ids; + if (cdx_dev->is_bus) + return false; + ids = cdx_drv->match_id_table; /* When driver_override is set, only bind to the matching driver */ @@ -265,10 +273,11 @@ static int cdx_dma_configure(struct device *dev) { struct cdx_driver *cdx_drv = to_cdx_driver(dev->driver); struct cdx_device *cdx_dev = to_cdx_device(dev); + struct cdx_controller *cdx = cdx_dev->cdx; u32 input_id = cdx_dev->req_id; int ret; - ret = of_dma_configure_id(dev, dev->parent->of_node, 0, &input_id); + ret = of_dma_configure_id(dev, cdx->dev->of_node, 0, &input_id); if (ret && ret != -EPROBE_DEFER) { dev_err(dev, "of_dma_configure_id() failed\n"); return ret; @@ -374,6 +383,18 @@ static ssize_t driver_override_show(struct device *dev, } static DEVICE_ATTR_RW(driver_override); +static umode_t cdx_dev_attrs_are_visible(struct kobject *kobj, struct attribute *a, int n) +{ + struct device *dev = kobj_to_dev(kobj); + struct cdx_device *cdx_dev; + + cdx_dev = to_cdx_device(dev); + if (!cdx_dev->is_bus) + return a->mode; + + return 0; +} + static struct attribute *cdx_dev_attrs[] = { &dev_attr_remove.attr, &dev_attr_reset.attr, @@ -382,7 +403,16 @@ static struct attribute *cdx_dev_attrs[] = { &dev_attr_driver_override.attr, NULL, }; -ATTRIBUTE_GROUPS(cdx_dev); + +static const struct attribute_group cdx_dev_group = { + .attrs = cdx_dev_attrs, + .is_visible = cdx_dev_attrs_are_visible, +}; + +static const struct attribute_group *cdx_dev_groups[] = { + &cdx_dev_group, + NULL, +}; static ssize_t rescan_store(const struct bus_type *bus, const char *buf, size_t count) @@ -479,7 +509,6 @@ static void cdx_device_release(struct device *dev) int cdx_device_add(struct cdx_dev_params *dev_params) { struct cdx_controller *cdx = dev_params->cdx; - struct device *parent = cdx->dev; struct cdx_device *cdx_dev; int ret; @@ -503,7 +532,7 @@ int cdx_device_add(struct cdx_dev_params *dev_params) /* Initialize generic device */ device_initialize(&cdx_dev->dev); - cdx_dev->dev.parent = parent; + cdx_dev->dev.parent = dev_params->parent; cdx_dev->dev.bus = &cdx_bus_type; cdx_dev->dev.dma_mask = &cdx_dev->dma_mask; cdx_dev->dev.release = cdx_device_release; @@ -532,6 +561,42 @@ int cdx_device_add(struct cdx_dev_params *dev_params) } EXPORT_SYMBOL_NS_GPL(cdx_device_add, CDX_BUS_CONTROLLER); +struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num) +{ + struct cdx_device *cdx_dev; + int ret; + + cdx_dev = kzalloc(sizeof(*cdx_dev), GFP_KERNEL); + if (!cdx_dev) + return NULL; + + device_initialize(&cdx_dev->dev); + cdx_dev->cdx = cdx; + + cdx_dev->dev.parent = cdx->dev; + cdx_dev->dev.bus = &cdx_bus_type; + cdx_dev->dev.release = cdx_device_release; + cdx_dev->is_bus = true; + cdx_dev->bus_num = bus_num; + + dev_set_name(&cdx_dev->dev, "cdx-%02x", + ((cdx->id << CDX_CONTROLLER_ID_SHIFT) | (bus_num & CDX_BUS_NUM_MASK))); + + ret = device_add(&cdx_dev->dev); + if (ret) { + dev_err(&cdx_dev->dev, "cdx bus device add failed: %d\n", ret); + goto device_add_fail; + } + + return &cdx_dev->dev; + +device_add_fail: + put_device(&cdx_dev->dev); + + return NULL; +} +EXPORT_SYMBOL_NS_GPL(cdx_bus_add, CDX_BUS_CONTROLLER); + int cdx_register_controller(struct cdx_controller *cdx) { int ret; diff --git a/drivers/cdx/cdx.h b/drivers/cdx/cdx.h index c436ac7ac86f..1f593deb4c9e 100644 --- a/drivers/cdx/cdx.h +++ b/drivers/cdx/cdx.h @@ -13,7 +13,7 @@ /** * struct cdx_dev_params - CDX device parameters * @cdx: CDX controller associated with the device - * @parent: Associated CDX controller + * @parent: Associated CDX Bus device * @vendor: Vendor ID for CDX device * @device: Device ID for CDX device * @bus_num: Bus number for this CDX device @@ -24,6 +24,7 @@ */ struct cdx_dev_params { struct cdx_controller *cdx; + struct device *parent; u16 vendor; u16 device; u8 bus_num; @@ -59,4 +60,15 @@ void cdx_unregister_controller(struct cdx_controller *cdx); */ int cdx_device_add(struct cdx_dev_params *dev_params); +/** + * cdx_bus_add - Add a CDX bus. This function adds a bus on the CDX bus + * subsystem. It creates a CDX device for the corresponding bus and + * also registers an associated Linux generic device. + * @cdx: Associated CDX controller + * @us_num: Bus number + * + * Return: associated Linux generic device pointer on success or NULL on failure. + */ +struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num); + #endif /* _CDX_H_ */ diff --git a/drivers/cdx/controller/cdx_controller.c b/drivers/cdx/controller/cdx_controller.c index 3f86663fbacf..b4e0d6b40339 100644 --- a/drivers/cdx/controller/cdx_controller.c +++ b/drivers/cdx/controller/cdx_controller.c @@ -79,8 +79,14 @@ static int cdx_scan_devices(struct cdx_controller *cdx) num_cdx_bus = (u8)ret; for (bus_num = 0; bus_num < num_cdx_bus; bus_num++) { + struct device *bus_dev; u8 num_cdx_dev; + /* Add the bus on cdx subsystem */ + bus_dev = cdx_bus_add(cdx, bus_num); + if (!bus_dev) + continue; + /* MCDI FW Read: Fetch the number of devices present */ ret = cdx_mcdi_get_num_devs(cdx_mcdi, bus_num); if (ret < 0) { @@ -103,6 +109,7 @@ static int cdx_scan_devices(struct cdx_controller *cdx) continue; } dev_params.cdx = cdx; + dev_params.parent = bus_dev; /* Add the device to the cdx bus */ ret = cdx_device_add(&dev_params); diff --git a/include/linux/cdx/cdx_bus.h b/include/linux/cdx/cdx_bus.h index 82c27b8c94e1..b5e4b7e05666 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -88,6 +88,7 @@ struct cdx_controller { * @dma_mask: Default DMA mask * @flags: CDX device flags * @req_id: Requestor ID associated with CDX device + * @is_bus: Is this bus device * @driver_override: driver name to force a match; do not set directly, * because core frees it; use driver_set_override() to * set or clear it. @@ -104,6 +105,7 @@ struct cdx_device { u64 dma_mask; u16 flags; u32 req_id; + bool is_bus; const char *driver_override; }; From patchwork Tue Oct 17 16:05:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154382 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4241233vqb; Tue, 17 Oct 2023 09:08:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGs3lCPwPgof4088Yoheq9510B1x5kAew+8rCqukwNigQpjPxWqvgpAxc/Is04jQq//AfBs X-Received: by 2002:a17:90b:3b81:b0:27d:2261:73e4 with SMTP id pc1-20020a17090b3b8100b0027d226173e4mr2844777pjb.2.1697558893330; Tue, 17 Oct 2023 09:08:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558893; cv=pass; d=google.com; s=arc-20160816; b=cqxBDxVMVyr4m8sKdy3ioYQPLWF8YKQsDO/b3ec+BEtGVjhioDPcDXLy8KEUeGaQEQ uRtW4fySsiQH1nfOooRP7NlIw8sNFiA+OMNZm1nc7uSv9zQnr4avSOQOpp94kNnV2J9Q 4+h37d9vovylQy0HGDv3HFqOOMHfCZdLYVdNMwtW6TyMNw6fmiQANy9O/AFoxIWsRIGa bnhqiGK4Ee13oEoyV/6jWp0oCXCI6w+u/vEEuINgspeDafEJNedWvyZPOQ93K1EBbrRQ Mzqpkh88BgGDATxzMLfFVNnuXpQ97Ubl6ZK8Dj2DCVEEbbQkWhrCiNCFI2qrTtqN/URv R15A== 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=hFx7IQ7j9peXYZpDon6DMDgjHoY6SjNTkngRsrx3P6A=; fh=5MiHm+QdGjn5RiTrvem4uCpWq9mH9EzjO1Ea1hzViV4=; b=vuIAmO1IlfKWTSM9+5LIl0Il8Gii686LU1zPYSI4YlveK6oSBta/D+ehLdlPOTwjv5 6kFj29/JprcAW+s9MClAY56tB9c77YD0NNlg6KwlpfpNSeGkgQLKntMRu4R8E0e5eU1r Q85K6eQd+QX09T6M2leKicWcslQpHS9D87Vv+ONeqsoZSNcoUu1RtjIE5A8WzFqXA/01 ui+3j5Mlemdt1kc25RqBreZEJ6JfY+WSxwBWVv3uQH3He7uF28Iamw2fnhMEbnXObYTa VxyQ4rO+ZpxtsuGFm6HjiS0/jdtSJie3HiK8o2t6p6EHr2aeuAlR8E3CQ3Kgo4TSwlGo D8nw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=s1QKmkaP; 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::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id gz18-20020a17090b0ed200b00279866aa14csi1971930pjb.16.2023.10.17.09.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:08:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=s1QKmkaP; 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::3:3 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 4867D802645E; Tue, 17 Oct 2023 09:08:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343998AbjJQQHk (ORCPT + 20 others); Tue, 17 Oct 2023 12:07:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343532AbjJQQHh (ORCPT ); Tue, 17 Oct 2023 12:07:37 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2065.outbound.protection.outlook.com [40.107.93.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C219295 for ; Tue, 17 Oct 2023 09:07:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WJGV6NqyfuRXR0cR9hJUZePVLfiODtxTd8lxYbY+hu2uLJ33AG3uwHu2p4wSJvtC/FxxDql5saZUyueIB875AhTs9waMfX36oMJDPwCoM8WyZErgqYxLV308qu06+wRY4eoQgpV0JppwDQFR5rSPVlDzDk1qXs0FIDgnkoR4cZ6u39EfLxy9rwhand4HIOrhp8rs1fi5MF+Pmuf2nAS2QvJqGgD4niTWU+FSW6AO+4eq0+FRMR551m6Y+842+kYY5jgCndKM/nspdngmRgcw9ef4EKjHlYXxthG6uL4Qk780722iU3ev8tfcFF1nbV0ye02zc5UMcbQFOOVQKdTwjg== 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=hFx7IQ7j9peXYZpDon6DMDgjHoY6SjNTkngRsrx3P6A=; b=lhLu1P+RLItKhbK1WUD9DW5eTM6iS1dP/zXoDrgrHXeKk1Lcc6RczR7wCM9Q4Go+feqjlbiDn21TVLoL6JZT5obT/yVo2CoQLRDomOZ1v6MKPS53y7BbpZv9ehSg0Ji9lTFjIyvkNPyrcbBEiUTU4qnE4mZtW8VzdvCLLOJ+PtnJX9YuMjgmMwMNcP1nv+1oXmyUfBhF0M9T2Tb4EkYKnTuFOkSOEkNFGq8/WdQIzcdzvQz+R8f9mOCWI6Ets+/eKOJtoAZTHDBoWWiNk6ccUP1eDEwImXMpZAbO5g6KoHI48XE6dsX8CN0Hxt7TlIwD8AI9Gt73Yh1JM/eouzJMRQ== 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=hFx7IQ7j9peXYZpDon6DMDgjHoY6SjNTkngRsrx3P6A=; b=s1QKmkaPRNDOqJaW5khv+tPAQXjUYGATNwc28MU4pwIu65mRkWvA9fE4Pz+vHb9T//aF60B4BpPzMaGXHE9A1gu+N/dpO4/ZIv3rye+qpu2Qn0JYgp5d8qL/Yb0tdkAG3D/PorNUfwbqapwREEqrswWiQCQ+v4mfTTRL01L8zlc= Received: from CY5PR19CA0118.namprd19.prod.outlook.com (2603:10b6:930:64::22) by SJ1PR12MB6362.namprd12.prod.outlook.com (2603:10b6:a03:454::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:07:28 +0000 Received: from CY4PEPF0000EDD4.namprd03.prod.outlook.com (2603:10b6:930:64:cafe::b3) by CY5PR19CA0118.outlook.office365.com (2603:10b6:930:64::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.37 via Frontend Transport; Tue, 17 Oct 2023 16:07:28 +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 CY4PEPF0000EDD4.mail.protection.outlook.com (10.167.241.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:07:28 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) 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; Tue, 17 Oct 2023 11:07:19 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Tue, 17 Oct 2023 11:06:59 -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; Tue, 17 Oct 2023 11:06:51 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde , Nipun Gupta Subject: [PATCH v7 5/7] cdx: add support for bus enable and disable Date: Tue, 17 Oct 2023 21:35:03 +0530 Message-ID: <20231017160505.10640-6-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD4:EE_|SJ1PR12MB6362:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c1f1bfa-bb50-49f2-d83f-08dbcf2b294a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TMyCEtbNhs/dE070JBA5zZhN08c3Mo+gyMuP/hN8+Ryy6KydS/yeJORN1gGVXhn2BPInR76+UfmAPdUXQ/A51aQ2rzJqvO3kQWdxmNPXPPHK5xg36GNILzeSf/gpRh9zbjkBneXbm4Mu7ys6gfldrWnN2WH4bf23nelkrYZ0dptSBYJZbLiT9POb9RRykJz6MNBHwbAO65j1OC3u3+nwGBY0DSeZnkPAH5L3lKMTuSkM0amdc+B69k16xOPlUHzFQUeOZqcCNpxurEjHOZsDkazwk2SaKF8u7C4fGnm+8HqXCCgrBscorS3p21+JtWAplB0nNEn+z9AJTq55oqeJSIbJHNY9vgq2tv7apKg45VZkvNeRGRjtiHo9rfhDAYhrWVMxEWFA9MCK7Kh1VCLJ/ir4P0YBpQHtB/IHww5rKtq4Lve9eQZbQR1Tl4N+H+ITfjz8+/itYMTtj59iUfAxbAV9Vbsd1BD/Qqa1zMyGWBQXmgxq0cFfAPob/x/FsKEnjnw95FYH6eCvotK8cEvLRUVdVyS5YmgI9PMduxmAaH6gWdsibbxo0L1Czy8m6MTr24e8nNGecsfqisjgi8E/tdkX67zUlPyEPiIStHX47kDHZo2W1uYKstmka25+88mq3tgxTJcE8507RsvHQ3ZpjoF8UcnKHp8BtGQxY+H9KV+Li87CLsHu3hOu28nRhc/KKpxRVX2xkekRvt1elcPc0wJceAT8rB47v55SslWNv7CkT9mixN/Cnj/ulPSArrMoRORyQ7qKMcm2wW5nhxr6Ag== 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:(13230031)(4636009)(396003)(346002)(39860400002)(376002)(136003)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(82310400011)(36840700001)(40470700004)(46966006)(316002)(54906003)(478600001)(70586007)(70206006)(6666004)(110136005)(36860700001)(1076003)(26005)(2616005)(336012)(426003)(30864003)(44832011)(4326008)(8676002)(8936002)(2906002)(41300700001)(81166007)(36756003)(5660300002)(86362001)(82740400003)(356005)(47076005)(83380400001)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:07:28.4808 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c1f1bfa-bb50-49f2-d83f-08dbcf2b294a 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: CY4PEPF0000EDD4.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6362 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:08:03 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019513858085466 X-GMAIL-MSGID: 1780019513858085466 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 --- Changes in v7: - None Changes in v6: - Remove bus attributes enable and disable - Add enable attribute for cdx device visible only for bus device. Changes in v5: - Rebased on Linux 6.6 Changes in v4: - Add sparse marking for lock around cdx_find_controller() function Changes in v3: - Use platform bus to locate controller Changes in v2: - Improve documentation - Split sysfs entry enable to enable and disable - sysfs entry enable and disable take bus number as an argument Documentation/ABI/testing/sysfs-bus-cdx | 13 +++++ drivers/cdx/cdx.c | 72 +++++++++++++++++++++++++ drivers/cdx/controller/cdx_controller.c | 12 +++++ 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 | 10 ++++ 7 files changed, 203 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-cdx b/Documentation/ABI/testing/sysfs-bus-cdx index 7af477f49998..c12bdaa4152a 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -28,6 +28,19 @@ Description: of a device manufacturer. Combination of Vendor ID and Device ID identifies a device. +What: /sys/bus/cdx/devices/.../enable +Date: October 2023 +Contact: abhijit.gangurde@amd.com +Description: + CDX bus should be disabled before updating the devices in FPGA. + Writing n/0/off will attempt to disable the CDX bus and. + writing y/1/on will attempt to enable the CDX bus. Reading this file + gives the current state of the bus, 1 for enabled and 0 for disabled. + + For example:: + + # echo 1 > /sys/bus/cdx/.../enable + What: /sys/bus/cdx/devices/.../reset Date: March 2023 Contact: nipun.gupta@amd.com diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index cf5306580c21..8eb484c37e97 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -124,9 +124,12 @@ static int cdx_unregister_device(struct device *dev, void *data) { struct cdx_device *cdx_dev = to_cdx_device(dev); + struct cdx_controller *cdx = cdx_dev->cdx; if (cdx_dev->is_bus) { device_for_each_child(dev, NULL, cdx_unregister_device); + if (cdx_dev->enabled && cdx->ops->bus_disable) + cdx->ops->bus_disable(cdx, cdx_dev->bus_num); } else { kfree(cdx_dev->driver_override); cdx_dev->driver_override = NULL; @@ -383,6 +386,41 @@ static ssize_t driver_override_show(struct device *dev, } static DEVICE_ATTR_RW(driver_override); +static ssize_t enable_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct cdx_device *cdx_dev = to_cdx_device(dev); + struct cdx_controller *cdx = cdx_dev->cdx; + bool enable; + int ret; + + if (kstrtobool(buf, &enable) < 0) + return -EINVAL; + + if (enable == cdx_dev->enabled) + return count; + + if (enable && cdx->ops->bus_enable) + ret = cdx->ops->bus_enable(cdx, cdx_dev->bus_num); + else if (!enable && cdx->ops->bus_disable) + ret = cdx->ops->bus_disable(cdx, cdx_dev->bus_num); + else + ret = -EOPNOTSUPP; + + if (!ret) + cdx_dev->enabled = enable; + + return ret < 0 ? ret : count; +} + +static ssize_t enable_show(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct cdx_device *cdx_dev = to_cdx_device(dev); + + return sysfs_emit(buf, "%u\n", cdx_dev->enabled); +} +static DEVICE_ATTR_RW(enable); + static umode_t cdx_dev_attrs_are_visible(struct kobject *kobj, struct attribute *a, int n) { struct device *dev = kobj_to_dev(kobj); @@ -395,6 +433,18 @@ static umode_t cdx_dev_attrs_are_visible(struct kobject *kobj, struct attribute return 0; } +static umode_t cdx_bus_attrs_are_visible(struct kobject *kobj, struct attribute *a, int n) +{ + struct device *dev = kobj_to_dev(kobj); + struct cdx_device *cdx_dev; + + cdx_dev = to_cdx_device(dev); + if (cdx_dev->is_bus) + return a->mode; + + return 0; +} + static struct attribute *cdx_dev_attrs[] = { &dev_attr_remove.attr, &dev_attr_reset.attr, @@ -409,8 +459,19 @@ static const struct attribute_group cdx_dev_group = { .is_visible = cdx_dev_attrs_are_visible, }; +static struct attribute *cdx_bus_dev_attrs[] = { + &dev_attr_enable.attr, + NULL, +}; + +static const struct attribute_group cdx_bus_dev_group = { + .attrs = cdx_bus_dev_attrs, + .is_visible = cdx_bus_attrs_are_visible, +}; + static const struct attribute_group *cdx_dev_groups[] = { &cdx_dev_group, + &cdx_bus_dev_group, NULL, }; @@ -588,8 +649,19 @@ struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num) goto device_add_fail; } + if (cdx->ops->bus_enable) { + ret = cdx->ops->bus_enable(cdx, bus_num); + if (ret && ret != -EALREADY) { + dev_err(cdx->dev, "cdx bus enable failed: %d\n", ret); + goto bus_enable_fail; + } + } + + cdx_dev->enabled = true; return &cdx_dev->dev; +bus_enable_fail: + device_del(&cdx_dev->dev); device_add_fail: put_device(&cdx_dev->dev); diff --git a/drivers/cdx/controller/cdx_controller.c b/drivers/cdx/controller/cdx_controller.c index b4e0d6b40339..f2a691efd1f1 100644 --- a/drivers/cdx/controller/cdx_controller.c +++ b/drivers/cdx/controller/cdx_controller.c @@ -33,6 +33,16 @@ 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) +{ + return cdx_mcdi_bus_enable(cdx->priv, bus_num); +} + +static int cdx_bus_disable(struct cdx_controller *cdx, u8 bus_num) +{ + return cdx_mcdi_bus_disable(cdx->priv, bus_num); +} + void cdx_rpmsg_post_probe(struct cdx_controller *cdx) { /* Register CDX controller with CDX bus driver */ @@ -128,6 +138,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 b5e4b7e05666..18e95076d1d5 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -28,6 +28,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 +53,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; }; @@ -89,6 +97,7 @@ struct cdx_controller { * @flags: CDX device flags * @req_id: Requestor ID associated with CDX device * @is_bus: Is this bus device + * @enabled: is this bus enabled * @driver_override: driver name to force a match; do not set directly, * because core frees it; use driver_set_override() to * set or clear it. @@ -106,6 +115,7 @@ struct cdx_device { u16 flags; u32 req_id; bool is_bus; + bool enabled; const char *driver_override; }; From patchwork Tue Oct 17 16:05:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154380 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4241083vqb; Tue, 17 Oct 2023 09:08:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHEuQULM+VNu/FIpHrgru2I9nti8m5UBM/URmteanpjcU3m7aN8DpqFZywBrv6+ZddYIUD6 X-Received: by 2002:a17:90b:1d81:b0:27d:6009:36c7 with SMTP id pf1-20020a17090b1d8100b0027d600936c7mr2816912pjb.4.1697558881333; Tue, 17 Oct 2023 09:08:01 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558881; cv=pass; d=google.com; s=arc-20160816; b=QY1J+QJYhA0PIkZ7vXVNDy9zmy7IMMF3hnHxmzhj/7NayY4S2WxR3vQoHcnZBPNmHo PlC0Rryi9rzIEpbfOjtmBEkWTvEvQd8rzEZ1+R7mSH+LN0jvqqDo10ORN80ag0bj0Vxt KqxYc2Jqd/JT+nBYQtGBXclM7o9SjkHizuvVPmAEmD09tvCCsZPrsaglwiFbrcUgkpvo p/Yt+Zf0/JGTRsgaAp+DZog+TBRAPfD/WH+OKm88teLwDWagX7OF/tmR7/QpyPT/1M4l r7JwdyrXTdEUybDZO22H1XLy6Bpzg7KzRx33xoOsyOSu10va/Q9Ut/4P07XDUnriFWOa bM+Q== 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=18YjIp500uOkrXtBG0tI2Zpufh2vu8Cn2Qgv0SzxYns=; fh=SGNSxjuyMcTHLwSnMJDj6IQ0H2W2KE2sPI7KCBWZS5M=; b=1CAEYbiG5xyOF5KHLxXdtrIY1UFf8V2exuqOrDvBjHGV7TG/s2rwyFgfI9IKCBn2H7 LYFU0PzAfMHaQiGpenE1RfHrZ+FdHnBfGF56J7LocbSCbeWm7CD4xnDU6WviURY1INHT 2gUpNA7rgQ2fCfyIV0ojWEwx/5N98/dLermrLMOF7+m2MDkl8fOXm/uZDFbZi3Grnzwg ascJSeGmD0hkgD8Q/vlc/BTH1mndq5wZ/B8LWPigl9Ry9xwzce9yMfObrbendXwRS9vn isW8JsXKvu10mHH4yWOEUg8bfJTv37bZXNZTaCwzc8a7QpZwUHG6cOBq2/v+JHdvzTM5 T+9g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=KQkcfrdL; 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 23.128.96.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id ob9-20020a17090b390900b00262e3c1c1efsi2222797pjb.79.2023.10.17.09.07.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:08:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=KQkcfrdL; 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 23.128.96.37 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 43B5A80ECF35; Tue, 17 Oct 2023 09:07:56 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344422AbjJQQHq (ORCPT + 20 others); Tue, 17 Oct 2023 12:07:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344161AbjJQQHm (ORCPT ); Tue, 17 Oct 2023 12:07:42 -0400 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2066.outbound.protection.outlook.com [40.107.243.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C26BCED for ; Tue, 17 Oct 2023 09:07:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BlrDMCTiAW+ALUolI6gjU7KBVX3jhmyQMNgxya2FENOQwOAca5xxP3NqEaXfoMDxDftwrOoZTxVG0uGdNtm4+EAT6hoBxS+Qk8x5dUcbYyyrr4C1x9ojvPPe4n3rnknfzLIQN5928+UL//hwycZNP2mz4Mz9kDELgWidc//488PHZaqzDfoCbV1TsvIbhtVq1pq+C0kamkJ2XtcIT8OgjxPDNJlomLT6d5mFEboasMo552ABmgk6EtCC6UA9GxEBP0xX/Nqh7emHRNhW4jlzHEWpOzVCJznq27fgVGHWx3JsBN8YD7bMNCgijleAKflTyufn8K/vY3jwXaI93dsUGQ== 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=18YjIp500uOkrXtBG0tI2Zpufh2vu8Cn2Qgv0SzxYns=; b=jBUqN6gc7MFRBuo3vlp8WarQk0t9/Y+hHKl0v0C5OQFU9tijLmboH1hlw6lnJM789jbkYTDD9sI4WlNHxtEbBIwpkl1t/D6jvEaDhY84xrZMAb0pA7gFI8g9pkiCMqkTtwmLYMi0PzX1vZOqtag1/vVTtFYuv94cDpJc/j1UyyzZGRjPJk8vstDvippQO+TCVyIz9lr5GEq7ZfIBHuvl0ViWP7giTIBpHM9t3RvJbDJoIUQwJHpNPnjttIWx6JDRKpVHJqzQM/90pN49TyOuipFxt2rxnZo/cPJLaKIBHDJcJNtWNpcOwV/kQVeuamS7MLc7hzZPdKL0iAprVPW2Qw== 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=18YjIp500uOkrXtBG0tI2Zpufh2vu8Cn2Qgv0SzxYns=; b=KQkcfrdLsSqAdulq/DZvbegQEz27uINW5SfSsEZuTQGHE65nTMwaqwT+/s1onOfIqYeqRVJVeitWR7M2EsxVZsJV4JCbP/dQXnTHGdyqkkNZNwN3k1UmCJcc00b0kGWa5U7tAhaGHV5Zavujti9kHSKXZ6r45RTyxInbEKz7tnk= Received: from CY5PR19CA0132.namprd19.prod.outlook.com (2603:10b6:930:64::29) by LV2PR12MB5725.namprd12.prod.outlook.com (2603:10b6:408:14c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36; Tue, 17 Oct 2023 16:07:37 +0000 Received: from CY4PEPF0000EDD4.namprd03.prod.outlook.com (2603:10b6:930:64:cafe::a3) by CY5PR19CA0132.outlook.office365.com (2603:10b6:930:64::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21 via Frontend Transport; Tue, 17 Oct 2023 16:07:37 +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 CY4PEPF0000EDD4.mail.protection.outlook.com (10.167.241.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:07:37 +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; Tue, 17 Oct 2023 11:07:22 -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; Tue, 17 Oct 2023 11:07:04 -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; Tue, 17 Oct 2023 11:07:02 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde Subject: [PATCH v7 6/7] cdx: add sysfs for bus reset Date: Tue, 17 Oct 2023 21:35:04 +0530 Message-ID: <20231017160505.10640-7-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD4:EE_|LV2PR12MB5725:EE_ X-MS-Office365-Filtering-Correlation-Id: 7395fd47-201d-4994-6277-08dbcf2b2e84 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7JNvsRn1m588VW3lSiS36vDT+tPb6UcIBNMx6I9m8ky074Dte2jkr2E2rhraKwDH3lfMEC0C7RX3wpivn//+VcpFMjsn4pOr5nbEG/T16CE0BGnSveSo3VLCGRwTA/fIYSti3wSnUxYk98beM05W15kVT/nMmea+ftCASLQuGRea79Yn+2e7wqr69qefO0pays0NXiOOeCjqddQ5o1HfOcitZwoW8QPgUWXR/ikTGdQ82HKswqF9PKK8BpABjtF1bc8Wnv/fDOrChSwu1iwjqoTWp9v1PEjV3PeCDb36g0fHeJHy+saOpHlr3YfBfsJX0U8zNIpPa3Nke0JiTJ9SKWC2xESdkKla1+cL16/Hi4lbJO+Rm0ARBdRNhK7/mGWlLb7IAIk0rpj4HRTsW7i18+/5t9s+inIELzb7vn7zvBcY/eJIVmH+8ZQYriRuq5+Luulhq5KIe5PMt41fl2SBz3QJuhm3ufHrOKbkT379RiV6m7ujqHfvD1j5Hn84Fx4MdjT3y0ZflTBUgm99ZPn/Y4Fd5hdlbhSlysL9rMp4xDniqBUn3D+Fc0giW8LpTM0kEvnZhbXvavsBSd0WLlKGYd9ir2zyEmzNC5flZGWMbG3U/P7Ga1Ooywjw71cemDbK+NgcWvyHes2+rsLpmQM1v+M7e6vJbTZQynTUfcD7JCirEvi0lQnBqoFXk7GVyytFiv3DG6lnFmz8a+wxQtDpIUkbFUTcuPZ0afAHcQJLKgPGQ/SFC14eMDMcljzgg33xtaZu0qoy5t0JoBLr/T5O3g== 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:(13230031)(4636009)(396003)(346002)(39860400002)(376002)(136003)(230922051799003)(1800799009)(64100799003)(82310400011)(451199024)(186009)(36840700001)(46966006)(40470700004)(70206006)(70586007)(110136005)(478600001)(54906003)(26005)(426003)(1076003)(2616005)(316002)(336012)(86362001)(8676002)(8936002)(4326008)(2906002)(44832011)(5660300002)(41300700001)(81166007)(36756003)(47076005)(356005)(36860700001)(83380400001)(82740400003)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:07:37.2934 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7395fd47-201d-4994-6277-08dbcf2b2e84 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: CY4PEPF0000EDD4.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5725 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:07:56 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019501809317296 X-GMAIL-MSGID: 1780019501809317296 Add sysfs interface reset to reset all the devices on the CDX bus. Signed-off-by: Abhijit Gangurde --- Changes in v7: - None Changes in v6: - Remove reset bus attribute - Use reset attribute of cdx device for bus reset. Changes in v5: - None Changes in v4: - None Changes in v3: - None Changes in v2: - Improve documentation - sysfs entry reset takes bus number as an argument Documentation/ABI/testing/sysfs-bus-cdx | 8 ++++---- drivers/cdx/cdx.c | 26 +++++++++++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-bus-cdx b/Documentation/ABI/testing/sysfs-bus-cdx index c12bdaa4152a..c2c54abffed5 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -45,10 +45,10 @@ What: /sys/bus/cdx/devices/.../reset Date: March 2023 Contact: nipun.gupta@amd.com Description: - Writing y/1/on to this file resets the CDX device. - On resetting the device, the corresponding driver is notified - twice, once before the device is being reset, and again after - the reset has been complete. + Writing y/1/on to this file resets the CDX device or all devices + on the bus. On resetting the device, the corresponding driver is + notified twice, once before the device is being reset, and again + after the reset has been complete. For example:: diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c index 8eb484c37e97..e22a7138292e 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -110,6 +110,20 @@ int cdx_dev_reset(struct device *dev) } EXPORT_SYMBOL_GPL(cdx_dev_reset); +/** + * reset_cdx_device - Reset a CDX device + * @dev: CDX device + * @data: This is always passed as NULL, and is not used in this API, + * but is required here as the device_for_each_child() API expects + * the passed function to have this as an argument. + * + * Return: -errno on failure, 0 on success. + */ +static int reset_cdx_device(struct device *dev, void *data) +{ + return cdx_dev_reset(dev); +} + /** * cdx_unregister_device - Unregister a CDX device * @dev: CDX device @@ -343,6 +357,7 @@ static DEVICE_ATTR_WO(remove); static ssize_t reset_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + struct cdx_device *cdx_dev = to_cdx_device(dev); bool val; int ret; @@ -352,11 +367,13 @@ static ssize_t reset_store(struct device *dev, struct device_attribute *attr, if (!val) return -EINVAL; - ret = cdx_dev_reset(dev); - if (ret) - return ret; + if (cdx_dev->is_bus) + /* Reset all the devices attached to cdx bus */ + ret = device_for_each_child(dev, NULL, reset_cdx_device); + else + ret = cdx_dev_reset(dev); - return count; + return ret < 0 ? ret : count; } static DEVICE_ATTR_WO(reset); @@ -461,6 +478,7 @@ static const struct attribute_group cdx_dev_group = { static struct attribute *cdx_bus_dev_attrs[] = { &dev_attr_enable.attr, + &dev_attr_reset.attr, NULL, }; From patchwork Tue Oct 17 16:05:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gangurde, Abhijit" X-Patchwork-Id: 154379 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4241071vqb; Tue, 17 Oct 2023 09:08:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH7e9zYquNyd2dDoNQgorQI8BImxLrCEkZ80vRYbtSsqpPicfrErx35gkwCKDPDFbss3WIm X-Received: by 2002:a05:6a00:6008:b0:68f:c309:9736 with SMTP id fo8-20020a056a00600800b0068fc3099736mr2639869pfb.3.1697558880403; Tue, 17 Oct 2023 09:08:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697558880; cv=pass; d=google.com; s=arc-20160816; b=jTbgrmSU1MtdYrU+rqQgRZguAHhsgRoE9Vvu/tby/3q+aTvO6Qij8ZuCKe9ChqblOs 4Fs6cpbDeJ8hT53MlXblLC8kbBng4mLL+JHmUHYxpi/zcTfEz/uzc2hHUgm5AsbVaqGB b8VGGpwaS0Hy5v9p+Yc1rP9/kxAoAkP1UGAhhpLqx+h4wfUt18N2THsPyJ+UmN8hbhlj 8XyQoZbBdKzcaY5QYdjk7tDSTASW5vAjw/WKG2MikaKRc46PmXuspTjt6ThjrCSh0xNp sWVkXQj2VpkAgv6YzGfuqeIKyD233kkakm4gjkAG3c4+v+quaf5SMwAbYX44PDH0C4Ik lZVQ== 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=umz+4Rk6yawkyKXLyp6wAlQ2z2qafBWJd6be28L/WMw=; fh=+IugseoOSiHjgXh4+rxFqWgtcWeixHBx1U6LjH5sqQc=; b=F03+XQzltz9pGivoHk5m18RetGiNNh2eQXC8YejJ1HMpJRjSFA+m/iDzB4IHH1hzw4 eNuAZloVdwOuERHVFXJd8q/MzQY9Pi8AnQB/sNj2pnHAf0P+/xH8zsQ0Q47wiIVwGSiC tmplOwflv1f2lDPeW87OarVzW2a7yepnDg2chBYWlrJgfItj8aRjTfCJIWGFhzpP8hQv 9UbWS0OTom//goNACNoV7adawPqCYLiUe/dof78jBXHIHlMNTmQsPSG280eF2dwBsjOL 4q0uqKV/VwkE/YKFzV/1q3HUXxdXzupEfeizwsFef4S078BxQggIXob9bxRT+hL7TKRd 60WA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=PyGL3BkH; 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::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id bw18-20020a056a02049200b005a019d60ffbsi110625pgb.78.2023.10.17.09.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 09:08:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=PyGL3BkH; 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::3:7 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id E3C3780EE0C9; Tue, 17 Oct 2023 09:07:51 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344155AbjJQQHn (ORCPT + 20 others); Tue, 17 Oct 2023 12:07:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344086AbjJQQHl (ORCPT ); Tue, 17 Oct 2023 12:07:41 -0400 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2055.outbound.protection.outlook.com [40.107.212.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2981BF1 for ; Tue, 17 Oct 2023 09:07:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=chjp0DHyevhNoHYjwve8KS6Y+KMiu71iw5ONKCNcWthBS/p1XtsXlKjAlcpVN14MmvuwQkx3Ij/tF2zKsenGoDCHfmmIn2fB0xAH/VvEeT8+2wksKp8RDDmviF3EIQirO/1XrrIYWlD1nM8r/UPTasRu62lke1yjzy5epGHtCk2aKBk+n2K+Wa1tS8vuxM1RtALCe6ZLrkkJb2kuDJxksCob+GeAEVQA7dT9WyPLCE3Sm+dfBmjq0x5psmB5AL8BqhE9gP7KoGjBMFfNjqtCKCCvnNGk6ECupVo4oexloTn8ot3fv0Ibsa+fcwQSAdb/bqRCEddrQxCcsWTtE/Y40A== 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=umz+4Rk6yawkyKXLyp6wAlQ2z2qafBWJd6be28L/WMw=; b=W0Y7nBW3K4vMoHNqCgpG/Ol4xEXh9xIlg70zk8Ee5EAYxtCXzcvyZBxRwXKFJqHQALSR8MDL9/n5ki6WnE0OmXKnmw8QoqYLUJXtp2+L42wXiB+syU3weoNVvlW8bi/4HFykZCdT/iwv8vGTRZuSr1iS9AsGgVjH3a5lnIBC12GmCc7sFYmsmfEHrJ9v+nCQOA0RsVjskXK308+Ut0bIZIYHJEk0tpNU9bBlMRgGO9C9vhVeyrpayGlFulieUUtCJIhZUNotw6gYOCygQ2xNvVe1YTR5ZjmNKO+z2uwEE3myCKwfR0n1Y4atmnNQvoZMNBIZ4W3B20/Yu1HrfBNn2g== 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=umz+4Rk6yawkyKXLyp6wAlQ2z2qafBWJd6be28L/WMw=; b=PyGL3BkHftRJVoYqeWJofgfMcKbqS5dVso+qhQZxEsWt0X+P/yaRyqO89QmhM8dAANK9bYlpyHGF2+gsouPSmpMSK/6Mdokpbtve1IFfXoaT6JgxypjJMquG+2p8kr/MAHoKIPZDI3w0V2UaGBuCBX33BmQWz6sb+f/pNsoP0Vs= Received: from CY5P221CA0056.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:4::27) by CO6PR12MB5458.namprd12.prod.outlook.com (2603:10b6:5:35b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 16:07:35 +0000 Received: from CY4PEPF0000EDD2.namprd03.prod.outlook.com (2603:10b6:930:4:cafe::d2) by CY5P221CA0056.outlook.office365.com (2603:10b6:930:4::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.35 via Frontend Transport; Tue, 17 Oct 2023 16:07:35 +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 CY4PEPF0000EDD2.mail.protection.outlook.com (10.167.241.206) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 16:07:34 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) 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; Tue, 17 Oct 2023 11:07:20 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Tue, 17 Oct 2023 11:07:15 -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; Tue, 17 Oct 2023 11:07:07 -0500 From: Abhijit Gangurde To: , , CC: , , , , , Abhijit Gangurde , Nipun Gupta , "Pieter Jansen van Vuuren" Subject: [PATCH v7 7/7] cdx: add sysfs for subsystem, class and revision Date: Tue, 17 Oct 2023 21:35:05 +0530 Message-ID: <20231017160505.10640-8-abhijit.gangurde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231017160505.10640-1-abhijit.gangurde@amd.com> References: <20231017160505.10640-1-abhijit.gangurde@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD2:EE_|CO6PR12MB5458:EE_ X-MS-Office365-Filtering-Correlation-Id: 5cce923d-176c-4a57-5595-08dbcf2b2d78 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RKblKfX76RwhRY0rX61l+reIckcV48W8ZgXuRpNFy4L8vkwUq3lqZ/7c3SNFZL5jnLAelF6oBFKftzhZrJJlvLPvC/LWnQvr1R5K+DkxCuMZXB8eFycneMLX45hZIyorIqDz8EJ6bp7abvfrJgKI5CIqKLw222O7NU5R+nJc+9lbHl9q1AkMMe0pvqprwdJFS5+RI8TFEnA7kNND814NZyiSSK/+zZqFkSUXDXaeMO1sSw95S31wtYwTMpt+bFv1HadTVHxUOAPSZg5ylY3EcaS+tv2nBJ3hqYbtpnPk99Kc/xNrRvFa0W4uCrOVHFX+u3Y/qXExScT6xDzq+I2aqf+MB9CEjPDuDCHyCMDf6QCBMsWNfAuoFxSX/IwfvKjtPmev8XvavsLD2BJFXr75vRxkzHncy8tuhme3v0srQ3yusoxSEXnWX27GZzc0xHTmqaEUu7A2AEVo6pzU8Sfi6TlkuUjygQjPtNDokY+l/4gMcgxuv7N2kT3Q0D9kT+ncGwMTgr36Y0p6U7jgnKJW9szDBRV3FHnnw6wx79+20vQQY5ZCdJS+3TnYNugoGfTLz4Mr0snWX4mpeKxtt463wK+FzhmdNlJoskFAnmIlDALbJgQCSsnVvscU0hIZ9oVR5mO71skhG9FAbdKpeARHICIr/NVMV39DQvQrZrSzTh+7pNlwNpw4eZOtX45XE3oSwJzpu22UchHTvc7Go5ilOabSlANc3N6Qo73wKxhX21VotW/cB1xjEuWTwlER0vWMZ7aV6PzM7fm/hy3gNbtnqQ== 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:(13230031)(4636009)(396003)(39860400002)(346002)(136003)(376002)(230922051799003)(1800799009)(186009)(64100799003)(82310400011)(451199024)(46966006)(40470700004)(36840700001)(83380400001)(8676002)(40460700003)(26005)(336012)(2616005)(40480700001)(81166007)(82740400003)(426003)(1076003)(356005)(41300700001)(4326008)(5660300002)(44832011)(30864003)(110136005)(36756003)(70586007)(8936002)(86362001)(54906003)(70206006)(316002)(2906002)(478600001)(36860700001)(47076005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 16:07:34.9273 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5cce923d-176c-4a57-5595-08dbcf2b2d78 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: CY4PEPF0000EDD2.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR12MB5458 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 17 Oct 2023 09:07:51 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780019500890730729 X-GMAIL-MSGID: 1780019500890730729 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 --- Changes in v7: - None Changes in v6: - None Changes in v5: - None Changes in v4: - None Changes in v3: - None Changes in v2: - Improve documentation and commit message 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 c2c54abffed5..8c067ff99e54 100644 --- a/Documentation/ABI/testing/sysfs-bus-cdx +++ b/Documentation/ABI/testing/sysfs-bus-cdx @@ -28,6 +28,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/.../enable Date: October 2023 Contact: abhijit.gangurde@amd.com @@ -67,3 +97,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 e22a7138292e..3dcda7513818 100644 --- a/drivers/cdx/cdx.c +++ b/drivers/cdx/cdx.c @@ -179,7 +179,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; } @@ -329,6 +332,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, @@ -377,6 +384,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) @@ -467,6 +485,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, }; @@ -604,6 +627,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 1f593deb4c9e..300ad8be7a34 100644 --- a/drivers/cdx/cdx.h +++ b/drivers/cdx/cdx.h @@ -16,22 +16,30 @@ * @parent: Associated CDX Bus device * @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; struct device *parent; 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 18e95076d1d5..cf9738e3a957 100644 --- a/include/linux/cdx/cdx_bus.h +++ b/include/linux/cdx/cdx_bus.h @@ -38,6 +38,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. @@ -46,10 +59,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. @@ -88,6 +103,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 @@ -107,6 +126,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 7056751c29b1..2b28faca9585 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; }