From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oded Gabbay Subject: Re: [PATCH 1/3] amdkfd: Don't clear *kfd2kgd on kfd_module_init Date: Sun, 21 Dec 2014 15:06:50 +0200 Message-ID: <5496C5EA.7050200@amd.com> References: <1419108374-7020-1-git-send-email-oded.gabbay@amd.com> <1419108374-7020-2-git-send-email-oded.gabbay@amd.com> <5496AEAD.3090003@vodafone.de> <5496B04C.50502@amd.com> <5496BAE0.5090901@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0138.outbound.protection.outlook.com [157.56.110.138]) by gabe.freedesktop.org (Postfix) with ESMTP id 723A46E27A for ; Sun, 21 Dec 2014 05:07:13 -0800 (PST) In-Reply-To: <5496BAE0.5090901@vodafone.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , dri-devel@lists.freedesktop.org Cc: Alexander.Deucher@amd.com, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMi8yMS8yMDE0IDAyOjE5IFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+IEFtIDIx LjEyLjIwMTQgdW0gMTI6MzQgc2NocmllYiBPZGVkIEdhYmJheToKPj4KPj4KPj4gT24gMTIvMjEv MjAxNCAwMToyNyBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+IEFtIDIwLjEyLjIwMTQg dW0gMjE6NDYgc2NocmllYiBPZGVkIEdhYmJheToKPj4+PiBXaGVuIGFtZGtmZCBhbmQgcmFkZW9u IGFyZSBjb21waWxlZCBpbnNpZGUgdGhlIGtlcm5lbCBpbWFnZSAobm90IGFzIG1vZHVsZXMpLAo+ Pj4+IHJhZGVvbiB3aWxsIGxvYWQgYmVmb3JlIGFtZGtmZCBhbmQgd2lsbCBzZXQgKmtmZDJrZ2Qg dG8gaXRzIGludGVyZmFjZQo+Pj4+IHN0cnVjdHVyZS4gVGhlcmVmb3JlLCB3ZSBtdXN0IG5vdCBz ZXQgKmtmZDJrZ2QgdG8gTlVMTCB3aGVuIGFtZGtmZCBpcyBsb2FkZWQKPj4+PiBiZWNhdXNlIGl0 IHdpbGwgb3ZlcnJpZGUgcmFkZW9uJ3MgaW5pdGlhbGl6YXRpb24gYW5kIGNhdXNlIGtlcm5lbCBC VUcuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBPZGVkIEdhYmJheSA8b2RlZC5nYWJiYXlAYW1k LmNvbT4KPj4+Cj4+PiBZb3Ugc2hvdWxkIHByb2JhYmx5IHJhdGhlciBmaXggdGhlIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGUgdHdvIG1vZHVsZXMgdG8gZ2V0IGFuCj4+PiBkZXRlcm1pbmVkIGxvYWQg b3JkZXIgaW5zdGVhZCBvZiBkb2luZyBzdWNoIG5hc3R5IHdvcmthcm91bmRzLgo+Pj4KPj4+IENo cmlzdGlhbi4KPj4KPj4gVGhlIHByb2JsZW0gaXMgdGhhdCB3aGVuIG1vZHVsZXMgYXJlIGNvbXBp bGVkIGluc2lkZSB0aGUga2VybmVsLCB0aGVyZSBpcyBOTwo+PiBkZXRlcm1pbmVkIGxvYWQgb3Jk ZXIgYW5kIHRoZXJlIGlzIG5vIG1lY2hhbmlzbSB0byBlbmZvcmNlIHRoYXQuIElmIHRoZXJlCj4+ IGlzL3dhcyBzdWNoIGEgbWVjaGFuaXNtLCBJIHdvdWxkIG9mIGNvdXJzZSBwcmVmZXIgdG8gdXNl IGl0Lgo+Cj4gVGhlcmUgc2hvdWxkIGJlIGFuIGRldGVybWluZWQgb3JkZXIgYmFzZWQgb24gdGhl IHN5bWJvbCB1c2UsIG90aGVyd2lzZQo+IGluaXRpYWxpemluZyBtb3N0IG9mIHRoZSBrZXJuZWwg bW9kdWxlcyB3b3VsZG4ndCB3b3JrIGFzIGV4cGVjdGVkLiBGb3IgZXhhbXBsZQo+IHJhZGVvbiBk ZXBlbmRzIG9uIHRoZSBkcm0gbW9kdWxlIG11c3QgYmUgbG9hZGVkIGJlZm9yZSByYWRlb24gaXMg bG9hZGVkLgpUaGVyZSBzaG91bGQgYmUsIGJ1dCB3aGVuIHRoZSBtb2R1bGVzIGFyZSBjb21waWxl ZCBpbiwgdGhleSBhcmUgbG9hZGVkIGJhc2VkIG9uIApsaW5rIG9yZGVyIG9ubHksIGlmIHRoZXkg YXJlIGluIHRoZSBzYW1lIGdyb3VwLCBhbmQgdGhlIGdyb3VwcyBhcmUgbG9hZGVkIGJ5IGEgCnBy ZS1kZWZpbmVkIG9yZGVyLgpUaGUgZ3JvdXBzIGFyZTogcHVyZSwgY29yZSwgcG9zdGNvcmUsIGFy Y2gsIHN1YnN5cywgZnMsIGRldmljZSAod2hpY2ggcmVwcmVzZW50cyAKYWxsIHRoZSBtb2R1bGVz KSBhbmQgbGF0ZS4gU2VlIGluaXQuaAoKU28gcmFkZW9uLCBhbWRrZmQgYW5kIGFtZF9pb21tdV92 MiBhcmUgYWxsIGluIGRldmljZSBncm91cCwgYW5kIGluIHRoZSBncm91cCAKdGhleSBhcmUgb3Jk ZXJlZCBieSB0aGVpciBsaW5rIG9yZGVyLgoKWWVzLCByYWRlb24gbG9hZHMgYWZ0ZXIgZHJtLCBi ZWNhdXNlIGRybSoubyBhcmUgYmVmb3JlIHJhZGVvbioubyBpbiB0aGUgCk1ha2VmaWxlLiBTZWUg Cmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTY2OTY0Ny9saW51eC1vcmRlci1v Zi1zdGF0aWNhbGx5LWxpbmtlZC1tb2R1bGUtbG9hZGluZwoKCj4KPj4KPj4gQWN0dWFsbHksIEkg ZG9uJ3QgdW5kZXJzdGFuZCB3aHkgdGhlIGtlcm5lbCBkb2Vzbid0IGVuZm9yY2UgdGhlIG9yZGVy Cj4+IGFjY29yZGluZyB0byB0aGUgdXNlIG9mIGV4cG9ydGVkIHN5bWJvbHMsIGxpa2UgaXQgZG9l cyB3aXRoIG1vZHVsZXMuCj4KPiBZZWFoLCB0aGF0J3MgaW5kZWVkIHJhdGhlciBzdHJhbmdlLiBU aGVyZSBtdXN0IGJlIHNvbWV0aGluZyBpbiB0aGUgYW1ka2ZkIGNvZGUKPiB3aGljaCBicm9rZSB0 aGF0IHNvbWVob3cuCklNTywgdGhhdCdzIGEgZmFyLWZldGNoZWQgZ3Vlc3MuIENvdWxkIHlvdSBw b2ludCB0byBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyA/Cgo+Cj4gQXMgZmFyIGFzIEkgdW5kZXJz dGFuZCB5b3UgdGhlIGRlc2lyZWQgaW5pdCBvcmRlciBpcyByYWRlb24gYW5kIGFtZF9pb21tdV92 Mgo+IGZpcnN0IGFuZCB0aGVuIGFtZGtmZCwgcmlnaHQ/CkFjdHVhbGx5IG5vLiBUaGUgcHJlZmVy cmVkIG9yZGVyIGlzIGFtZF9pb21tdV92MiwgYW1ka2ZkIGFuZCByYWRlb24gbGFzdC4gVGhpcyAK aXMgdGhlIG9yZGVyIHRoYXQgaGFwcGVucyB3aGVuIGFsbCB0aHJlZSBhcmUgYnVpbHQgYXMgbW9k dWxlcy4gTW9yZSBhY2N1cmF0ZWx5LCAKcmFkZW9uIGluaXRzLCBidXQgaXRzIGluaXQgdHJpZ2dl cnMgYW1ka2ZkIGluaXQsIHdoaWNoIHRyaWdnZXJzIGFtZF9pb21tdV92MiAKaW5pdC4gU28gYmVm b3JlIHJhZGVvbiByZWFjaGVzIGl0cyBwcm9iZSBzdGFnZSwgYWxsIHRoZSBtb2R1bGVzIHdlcmUg aW5pdGlhbGl6ZWQuCgpTbyB3aGF0IGhhcHBlbnMgd2hlbiB5b3UgYm9vdCB3aXRoIHJhZGVvbiwK PiBhbWRfaW9tbXVfdjIgYW5kIGFtZGtmZCBibGFja2xpc3RlZCBmb3IgYXV0b21hdGljYWxseSBs b2FkIGFuZCBvbmx5IGxvYWQgYW1ka2ZkCj4gbWFudWFsbHk/CkFzIHNhaWQgYWJvdmUsIHRoYXQn cyBvay4KPgo+PiBUaGVyZSB3aWxsIGFsd2F5cyBiZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBrZ2Qg KHJhZGVvbikgYW5kIGFtZGtmZCBhbmQgYmV0d2Vlbgo+PiBhbWRrZmQgYW5kIGFtZF9pb21tdV92 Mi4gSSBkb24ndCB0aGluayBJIGNhbiBlbGltaW5hdGUgdGhvc2UgZGVwZW5kZW5jaWVzLCBub3QK Pj4gd2l0aG91dCBhIHZlcnkgY29tcGxleCBzb2x1dGlvbi4gQW5kIHRoZSBmYWN0IHRoYXQgdGhp cyBjb21wbGV4IHNvbHV0aW9uCj4+IG9jY3VycyBvbmx5IGluIGEgdmVyeSBzcGVjaWZpYyB1c2Ug Y2FzZSAoYWxsIG1vZHVsZXMgY29tcGlsZWQgaW4pLCBtYWtlcyBtZQo+PiBsZXNzIGluY2xpbmVk IHRvIGRvIHRoYXQuCj4+Cj4+IFNvIEkgZG9uJ3Qgc2VlIGl0IGFzIGEgIm5hc3R5IHdvcmthcm91 bmQiLiBJIHdvdWxkIGNhbGwgaXQganVzdCBhICJ3b3JrYXJvdW5kIgo+PiBmb3IgYSBzcGVjaWZp YyB1c2UgY2FzZSwgd2hpY2ggc2hvdWxkIGJlIHNvbHZlZCBieSBhIGdlbmVyaWMgc29sdXRpb24g dG8gdGhlCj4+IGtlcm5lbCBlbmZvcmNpbmcgbG9hZCBvcmRlcnMuCj4KPiBUaGUgbm9ybWFsIGtl cm5lbCBtb2R1bGUgaGFuZGxpbmcgYWxyZWFkeSBzaG91bGQgcHJvdmlkZSB0aGUgY29ycmVjdCBp bml0IG9yZGVyLAo+IHNvIEkgd291bGQgc3RpbGwgY2FsbCB0aGlzIGEgcmF0aGVyIG5hc3R5IHdv cmthcm91bmQgYmVjYXVzZSB3ZSBjb3VsZG4ndCBmaW5kCj4gdGhlIHVuZGVybHlpbmcgcHJvYmxl bS4KV2VsbCwgdGhlIG5vcm1hbCBrZXJuZWwgbW9kdWxlIGhhbmRsaW5nIGRvZXNuJ3Qgd29yayB3 aGVuIGFsbCBtb2R1bGVzIGFyZSAKY29tcGlsZWQgaW4uIEknbSBub3QgYSBodWdlIGV4cGVydCBv biB0aGlzIGlzc3VlIHNvIEkgaGFkIEpvZXJnIFJvZWRlbCBoZWxwIG1lIAphbmFseXplIHRoaXMg KHRoYW5rcyBKb2VyZykgYW5kIGhlIGFncmVlZCB0aGF0IHRoZXJlIGlzIG5vIGVuZm9yY2VtZW50 IG9mIG9yZGVyIAppbiB0aGlzIGNhc2UuCgo+Cj4gQ2hyaXN0aWFuLgo+Cj4+Cj4+ICAgICBPZGVk Cj4+Pgo+Pj4+IC0tLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21vZHVs ZS5jIHwgNSArKy0tLQo+Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbW9kdWxlLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9t b2R1bGUuYwo+Pj4+IGluZGV4IDk1ZDVhZjEuLjIzNjU2MmYgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21vZHVsZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX21vZHVsZS5jCj4+Pj4gQEAgLTM0LDcgKzM0LDcgQEAKPj4+ PiAgICNkZWZpbmUgS0ZEX0RSSVZFUl9NSU5PUiAgICA3Cj4+Pj4gICAjZGVmaW5lIEtGRF9EUklW RVJfUEFUQ0hMRVZFTCAgICAwCj4+Pj4gLWNvbnN0IHN0cnVjdCBrZmQya2dkX2NhbGxzICprZmQy a2dkOwo+Pj4+ICtjb25zdCBzdHJ1Y3Qga2ZkMmtnZF9jYWxscyAqa2ZkMmtnZCA9IE5VTEw7Cj4+ Pj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGtnZDJrZmRfY2FsbHMga2dkMmtmZCA9IHsKPj4+PiAg ICAgICAuZXhpdCAgICAgICAgPSBrZ2Qya2ZkX2V4aXQsCj4+Pj4gICAgICAgLnByb2JlICAgICAg ICA9IGtnZDJrZmRfcHJvYmUsCj4+Pj4gQEAgLTg0LDE0ICs4NCwxMyBAQCBFWFBPUlRfU1lNQk9M KGtnZDJrZmRfaW5pdCk7Cj4+Pj4gICB2b2lkIGtnZDJrZmRfZXhpdCh2b2lkKQo+Pj4+ICAgewo+ Pj4+ICsgICAga2ZkMmtnZCA9IE5VTEw7Cj4+Pj4gICB9Cj4+Pj4gICBzdGF0aWMgaW50IF9faW5p dCBrZmRfbW9kdWxlX2luaXQodm9pZCkKPj4+PiAgIHsKPj4+PiAgICAgICBpbnQgZXJyOwo+Pj4+ IC0gICAga2ZkMmtnZCA9IE5VTEw7Cj4+Pj4gLQo+Pj4+ICAgICAgIC8qIFZlcmlmeSBtb2R1bGUg cGFyYW1ldGVycyAqLwo+Pj4+ICAgICAgIGlmICgoc2NoZWRfcG9saWN5IDwgS0ZEX1NDSEVEX1BP TElDWV9IV1MpIHx8Cj4+Pj4gICAgICAgICAgIChzY2hlZF9wb2xpY3kgPiBLRkRfU0NIRURfUE9M SUNZX05PX0hXUykpIHsKPj4+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752837AbaLUNH0 (ORCPT ); Sun, 21 Dec 2014 08:07:26 -0500 Received: from mail-bn1bon0143.outbound.protection.outlook.com ([157.56.111.143]:5139 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752594AbaLUNHZ convert rfc822-to-8bit (ORCPT ); Sun, 21 Dec 2014 08:07:25 -0500 X-WSS-ID: 0NGXOFS-08-56G-02 X-M-MSG: Message-ID: <5496C5EA.7050200@amd.com> Date: Sun, 21 Dec 2014 15:06:50 +0200 From: Oded Gabbay Organization: AMD User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , CC: , , Joerg Roedel Subject: Re: [PATCH 1/3] amdkfd: Don't clear *kfd2kgd on kfd_module_init References: <1419108374-7020-1-git-send-email-oded.gabbay@amd.com> <1419108374-7020-2-git-send-email-oded.gabbay@amd.com> <5496AEAD.3090003@vodafone.de> <5496B04C.50502@amd.com> <5496BAE0.5090901@vodafone.de> In-Reply-To: <5496BAE0.5090901@vodafone.de> Content-Type: text/plain; charset="utf-8"; format=flowed X-Originating-IP: [10.20.0.84] Content-Transfer-Encoding: 8BIT X-EOPAttributedMessage: 0 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)(199003)(24454002)(189002)(377454003)(51704005)(479174004)(50466002)(19580395003)(83506001)(65956001)(76176999)(15395725005)(65806001)(87936001)(20776003)(80316001)(120916001)(86362001)(62966003)(106466001)(99396003)(36756003)(65816999)(23676002)(59896002)(4396001)(64706001)(97736003)(47776003)(21056001)(33656002)(31966008)(92566001)(77096005)(84676001)(64126003)(19580405001)(54356999)(1720100001)(46102003)(105586002)(77156002)(2950100001)(50986999)(107046002)(68736005)(15975445007)(101416001)(2101003);DIR:OUT;SFP:1102;SCL:1;SRVR:CO1PR02MB208;H:atltwp02.amd.com;FPR:;SPF:None;MLV:sfv;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Antispam: UriScan:; X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;SRVR:CO1PR02MB208; X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004);SRVR:CO1PR02MB208; X-Forefront-PRVS: 0432A04947 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:;SRVR:CO1PR02MB208; X-OriginatorOrg: amd4.onmicrosoft.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/21/2014 02:19 PM, Christian König wrote: > Am 21.12.2014 um 12:34 schrieb Oded Gabbay: >> >> >> On 12/21/2014 01:27 PM, Christian König wrote: >>> Am 20.12.2014 um 21:46 schrieb Oded Gabbay: >>>> When amdkfd and radeon are compiled inside the kernel image (not as modules), >>>> radeon will load before amdkfd and will set *kfd2kgd to its interface >>>> structure. Therefore, we must not set *kfd2kgd to NULL when amdkfd is loaded >>>> because it will override radeon's initialization and cause kernel BUG. >>>> >>>> Signed-off-by: Oded Gabbay >>> >>> You should probably rather fix the dependency between the two modules to get an >>> determined load order instead of doing such nasty workarounds. >>> >>> Christian. >> >> The problem is that when modules are compiled inside the kernel, there is NO >> determined load order and there is no mechanism to enforce that. If there >> is/was such a mechanism, I would of course prefer to use it. > > There should be an determined order based on the symbol use, otherwise > initializing most of the kernel modules wouldn't work as expected. For example > radeon depends on the drm module must be loaded before radeon is loaded. There should be, but when the modules are compiled in, they are loaded based on link order only, if they are in the same group, and the groups are loaded by a pre-defined order. The groups are: pure, core, postcore, arch, subsys, fs, device (which represents all the modules) and late. See init.h So radeon, amdkfd and amd_iommu_v2 are all in device group, and in the group they are ordered by their link order. Yes, radeon loads after drm, because drm*.o are before radeon*.o in the Makefile. See http://stackoverflow.com/questions/5669647/linux-order-of-statically-linked-module-loading > >> >> Actually, I don't understand why the kernel doesn't enforce the order >> according to the use of exported symbols, like it does with modules. > > Yeah, that's indeed rather strange. There must be something in the amdkfd code > which broke that somehow. IMO, that's a far-fetched guess. Could you point to something more specific ? > > As far as I understand you the desired init order is radeon and amd_iommu_v2 > first and then amdkfd, right? Actually no. The preferred order is amd_iommu_v2, amdkfd and radeon last. This is the order that happens when all three are built as modules. More accurately, radeon inits, but its init triggers amdkfd init, which triggers amd_iommu_v2 init. So before radeon reaches its probe stage, all the modules were initialized. So what happens when you boot with radeon, > amd_iommu_v2 and amdkfd blacklisted for automatically load and only load amdkfd > manually? As said above, that's ok. > >> There will always be dependencies between kgd (radeon) and amdkfd and between >> amdkfd and amd_iommu_v2. I don't think I can eliminate those dependencies, not >> without a very complex solution. And the fact that this complex solution >> occurs only in a very specific use case (all modules compiled in), makes me >> less inclined to do that. >> >> So I don't see it as a "nasty workaround". I would call it just a "workaround" >> for a specific use case, which should be solved by a generic solution to the >> kernel enforcing load orders. > > The normal kernel module handling already should provide the correct init order, > so I would still call this a rather nasty workaround because we couldn't find > the underlying problem. Well, the normal kernel module handling doesn't work when all modules are compiled in. I'm not a huge expert on this issue so I had Joerg Roedel help me analyze this (thanks Joerg) and he agreed that there is no enforcement of order in this case. > > Christian. > >> >> Oded >>> >>>> --- >>>> drivers/gpu/drm/amd/amdkfd/kfd_module.c | 5 ++--- >>>> 1 file changed, 2 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c >>>> b/drivers/gpu/drm/amd/amdkfd/kfd_module.c >>>> index 95d5af1..236562f 100644 >>>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c >>>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c >>>> @@ -34,7 +34,7 @@ >>>> #define KFD_DRIVER_MINOR 7 >>>> #define KFD_DRIVER_PATCHLEVEL 0 >>>> -const struct kfd2kgd_calls *kfd2kgd; >>>> +const struct kfd2kgd_calls *kfd2kgd = NULL; >>>> static const struct kgd2kfd_calls kgd2kfd = { >>>> .exit = kgd2kfd_exit, >>>> .probe = kgd2kfd_probe, >>>> @@ -84,14 +84,13 @@ EXPORT_SYMBOL(kgd2kfd_init); >>>> void kgd2kfd_exit(void) >>>> { >>>> + kfd2kgd = NULL; >>>> } >>>> static int __init kfd_module_init(void) >>>> { >>>> int err; >>>> - kfd2kgd = NULL; >>>> - >>>> /* Verify module parameters */ >>>> if ((sched_policy < KFD_SCHED_POLICY_HWS) || >>>> (sched_policy > KFD_SCHED_POLICY_NO_HWS)) { >>> >