From patchwork Sat Dec 20 20:46:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oded Gabbay X-Patchwork-Id: 5523251 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id B4CD69F30B for ; Sat, 20 Dec 2014 20:46:48 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CE6C320155 for ; Sat, 20 Dec 2014 20:46:47 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id F3CFC2010E for ; Sat, 20 Dec 2014 20:46:46 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4E8026E18C; Sat, 20 Dec 2014 12:46:46 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0145.outbound.protection.outlook.com [207.46.100.145]) by gabe.freedesktop.org (Postfix) with ESMTP id 8D5336E18C for ; Sat, 20 Dec 2014 12:46:44 -0800 (PST) Received: from BN1PR02CA0018.namprd02.prod.outlook.com (10.141.56.18) by DM2PR0201MB1087.namprd02.prod.outlook.com (25.160.221.144) with Microsoft SMTP Server (TLS) id 15.1.31.17; Sat, 20 Dec 2014 20:46:43 +0000 Received: from BN1AFFO11FD055.protection.gbl (2a01:111:f400:7c10::111) by BN1PR02CA0018.outlook.office365.com (2a01:111:e400:2a::18) with Microsoft SMTP Server (TLS) id 15.1.49.12 via Frontend Transport; Sat, 20 Dec 2014 20:46:42 +0000 Received: from atltwp02.amd.com (165.204.84.222) by BN1AFFO11FD055.mail.protection.outlook.com (10.58.53.70) with Microsoft SMTP Server id 15.1.26.17 via Frontend Transport; Sat, 20 Dec 2014 20:46:42 +0000 X-WSS-ID: 0NGWF1Q-08-D74-02 X-M-MSG: Received: from satlvexedge01.amd.com (satlvexedge01.amd.com [10.177.96.28]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by atltwp02.amd.com (Axway MailGate 5.3.1) with ESMTPS id 23C64BD88DA; Sat, 20 Dec 2014 14:46:37 -0600 (CST) Received: from SATLEXDAG03.amd.com (10.181.40.7) by satlvexedge01.amd.com (10.177.96.28) with Microsoft SMTP Server (TLS) id 14.3.195.1; Sat, 20 Dec 2014 14:46:52 -0600 Received: from odedg-home.amd.com (10.180.168.240) by satlexdag03.amd.com (10.181.40.7) with Microsoft SMTP Server (TLS) id 14.3.195.1; Sat, 20 Dec 2014 15:46:38 -0500 From: Oded Gabbay To: Subject: [PATCH 2/3] amdkfd: Track when amdkfd init is complete Date: Sat, 20 Dec 2014 22:46:13 +0200 Message-ID: <1419108374-7020-3-git-send-email-oded.gabbay@amd.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1419108374-7020-1-git-send-email-oded.gabbay@amd.com> References: <1419108374-7020-1-git-send-email-oded.gabbay@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-EOPAttributedMessage: 0 Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is 165.204.84.222) smtp.mailfrom=Oded.Gabbay@amd.com; X-Forefront-Antispam-Report: CIP:165.204.84.222; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(428002)(189002)(199003)(89996001)(76176999)(106466001)(101416001)(21056001)(105586002)(19580395003)(87936001)(62966003)(77096005)(19580405001)(99396003)(84676001)(31966008)(50986999)(97736003)(46102003)(229853001)(64706001)(4396001)(107046002)(47776003)(2351001)(50466002)(86362001)(20776003)(92566001)(53416004)(50226001)(33646002)(36756003)(2950100001)(120916001)(68736005)(110136001)(48376002)(77156002); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR0201MB1087; H:atltwp02.amd.com; FPR:; SPF:None; MLV:sfv; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Antispam: UriScan:; X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;SRVR:DM2PR0201MB1087; X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004); SRVR:DM2PR0201MB1087; X-Forefront-PRVS: 0431F981D8 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:; SRVR:DM2PR0201MB1087; X-OriginatorOrg: amd4.onmicrosoft.com Cc: linux-kernel@vger.kernel.org, Alexander.Deucher@amd.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch adds a new function to amdkfd, which returns 1 if the amdkfd initialization function has completed, and 0 otherwise. This is necessary for the case when amdkfd and radeon are both compiled inside the kernel image (not as modules). In that case, radeon probes the existing GPU before amdkfd is even loaded. When radeon encounters an AMD GPU, it will pass that information to amdkfd. However, if amdkfd is not loaded than that call will fail and when amdkfd is eventually loaded, it won't know about that GPU. Even if that call is delayed to a later stage, we will still need to know whether amdkfd has already been initialized. Note that when the two modules are compiled as modules, this situation can't occur as the kernel enforces the order of loading. Signed-off-by: Oded Gabbay --- drivers/gpu/drm/amd/amdkfd/kfd_module.c | 9 +++++++++ drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c index 236562f..848ebed 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c @@ -60,6 +60,13 @@ module_param(max_num_of_queues_per_process, int, 0444); MODULE_PARM_DESC(max_num_of_queues_per_process, "Kernel cmdline parameter that defines the amdkfd maximum number of supported queues per process"); +static int amdkfd_init_completed; + +int amdkfd_is_init_completed(void) +{ + return amdkfd_init_completed; +} + bool kgd2kfd_init(unsigned interface_version, const struct kfd2kgd_calls *f2g, const struct kgd2kfd_calls **g2f) @@ -128,6 +135,8 @@ static int __init kfd_module_init(void) dev_info(kfd_device, "Initialized module\n"); + amdkfd_init_completed = 1; + return 0; err_topology: diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h index f9fb81e..01df7e6 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@ -153,6 +153,8 @@ struct kfd_dev { bool interrupts_active; }; +int amdkfd_is_init_completed(void); + /* KGD2KFD callbacks */ void kgd2kfd_exit(void); struct kfd_dev *kgd2kfd_probe(struct kgd_dev *kgd, struct pci_dev *pdev);