From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4FB22C433F5 for ; Mon, 13 Dec 2021 00:50:31 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id B5D1C4096A; Mon, 13 Dec 2021 00:50:30 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Byl-RG3NLZqh; Mon, 13 Dec 2021 00:50:29 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 46D82400D2; Mon, 13 Dec 2021 00:50:29 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0FE2DC002F; Mon, 13 Dec 2021 00:50:29 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 26041C0012 for ; Mon, 13 Dec 2021 00:50:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 11DDC4094F for ; Mon, 13 Dec 2021 00:50:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id n3vGlNOOUidb for ; Mon, 13 Dec 2021 00:50:27 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by smtp2.osuosl.org (Postfix) with ESMTPS id 05535400D2 for ; Mon, 13 Dec 2021 00:50:26 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10195"; a="219320593" X-IronPort-AV: E=Sophos;i="5.88,201,1635231600"; d="scan'208";a="219320593" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2021 16:50:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,201,1635231600"; d="scan'208";a="517543569" Received: from allen-box.sh.intel.com (HELO [10.239.159.118]) ([10.239.159.118]) by orsmga008.jf.intel.com with ESMTP; 12 Dec 2021 16:50:18 -0800 Subject: Re: [PATCH v3 04/18] driver core: platform: Add driver dma ownership management To: Jason Gunthorpe , Greg Kroah-Hartman , Christoph Hellwig References: <20211206015903.88687-1-baolu.lu@linux.intel.com> <20211206015903.88687-5-baolu.lu@linux.intel.com> <20211206150647.GE4670@nvidia.com> <56a63776-48ca-0d6e-c25c-016dc016e0d5@linux.intel.com> <20211207131627.GA6385@nvidia.com> From: Lu Baolu Message-ID: <5d537286-2cb3-cf91-c0de-019355110aa1@linux.intel.com> Date: Mon, 13 Dec 2021 08:50:05 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Cc: Stuart Yoder , rafael@kernel.org, David Airlie , linux-pci@vger.kernel.org, Thierry Reding , Diana Craciun , Dmitry Osipenko , Will Deacon , Ashok Raj , Jonathan Hunter , Kevin Tian , Chaitanya Kulkarni , Alex Williamson , kvm@vger.kernel.org, Bjorn Helgaas , Dan Williams , Cornelia Huck , linux-kernel@vger.kernel.org, Li Yang , iommu@lists.linux-foundation.org, Jacob jun Pan , Daniel Vetter , Robin Murphy X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gMTIvMTAvMjEgOToyMyBBTSwgTHUgQmFvbHUgd3JvdGU6Cj4gSGkgR3JlZywgSmFzb24gYW5k IENocmlzdG9waCwKPiAKPiBPbiAxMi85LzIxIDk6MjAgQU0sIEx1IEJhb2x1IHdyb3RlOgo+PiBP biAxMi83LzIxIDk6MTYgUE0sIEphc29uIEd1bnRob3JwZSB3cm90ZToKPj4+IE9uIFR1ZSwgRGVj IDA3LCAyMDIxIGF0IDEwOjU3OjI1QU0gKzA4MDAsIEx1IEJhb2x1IHdyb3RlOgo+Pj4+IE9uIDEy LzYvMjEgMTE6MDYgUE0sIEphc29uIEd1bnRob3JwZSB3cm90ZToKPj4+Pj4gT24gTW9uLCBEZWMg MDYsIDIwMjEgYXQgMDY6MzY6MjdBTSAtMDgwMCwgQ2hyaXN0b3BoIEhlbGx3aWcgd3JvdGU6Cj4+ Pj4+PiBJIHJlYWxseSBoYXRlIHRoZSBhbW91bnQgb2YgYm9pbGVycGxhdGUgY29kZSB0aGF0IGhh dmluZyB0aGlzIGluIGVhY2gKPj4+Pj4+IGJ1cyB0eXBlIGNhdXNlcy4KPj4+Pj4gKzEKPj4+Pj4K Pj4+Pj4gSSBsaWtlZCB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGlzIHNlcmllcyBiZXR0ZXIgd2l0 aCB0aGUgY29kZSBuZWFyCj4+Pj4+IHJlYWxseV9wcm9iZSgpLgo+Pj4+Pgo+Pj4+PiBDYW4gd2Ug Z28gYmFjayB0byB0aGF0IHdpdGggc29tZSBkZXZpY2VfY29uZmlndXJlX2RtYSgpIHdyYXBwZXIK Pj4+Pj4gY29uZHRpb25hbGx5IGNhbGxlZCBieSByZWFsbHlfcHJvYmUgYXMgd2UgZGlzY3Vzc2Vk Pwo+IAo+IFsuLi5dCj4gCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZGQuYyBiL2Ry aXZlcnMvYmFzZS9kZC5jCj4+IGluZGV4IDY4ZWExZjk0OWRhYS4uNjhjYTVhNTc5ZWIxIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2Jhc2UvZGQuYwo+PiArKysgYi9kcml2ZXJzL2Jhc2UvZGQuYwo+ PiBAQCAtNTM4LDYgKzUzOCwzMiBAQCBzdGF0aWMgaW50IGNhbGxfZHJpdmVyX3Byb2JlKHN0cnVj dCBkZXZpY2UgKmRldiwgCj4+IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCj4+IMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqDCoH0KPj4KPj4gK3N0YXRpYyBpbnQgZGV2aWNlX2Rt YV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgCj4+IGRldmljZV9kcml2ZXIg KmRydikKPj4gK3sKPj4gK8KgwqDCoMKgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqDCoMKg wqAgaWYgKCFkZXYtPmJ1cy0+ZG1hX2NvbmZpZ3VyZSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoCByZXQgPSBkZXYtPmJ1cy0+ ZG1hX2NvbmZpZ3VyZShkZXYpOwo+PiArwqDCoMKgwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoCBp ZiAoIWRydi0+c3VwcHJlc3NfYXV0b19jbGFpbV9kbWFfb3duZXIpCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldCA9IGlvbW11X2RldmljZV9zZXRfZG1hX293bmVyKGRldiwgCj4+ IERNQV9PV05FUl9ETUFfQVBJLCBOVUxMKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRldmljZV9kbWFfY2xlYW51cChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCAKPj4gZGV2aWNlX2RyaXZlciAqZHJ2KQo+PiArewo+PiArwqDC oMKgwqDCoMKgIGlmICghZGV2LT5idXMtPmRtYV9jb25maWd1cmUpCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgwqDCoMKgIGlmICghZHJ2LT5z dXBwcmVzc19hdXRvX2NsYWltX2RtYV9vd25lcikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW9tbXVfZGV2aWNlX3JlbGVhc2VfZG1hX293bmVyKGRldiwgRE1BX09XTkVSX0RNQV9B UEkpOwo+PiArfQo+PiArCj4+IMKgwqBzdGF0aWMgaW50IHJlYWxseV9wcm9iZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCj4+IMKgwqB7Cj4+IMKgwqDCoMKg wqDCoMKgwqAgYm9vbCB0ZXN0X3JlbW92ZSA9IAo+PiBJU19FTkFCTEVEKENPTkZJR19ERUJVR19U RVNUX0RSSVZFUl9SRU1PVkUpICYmCj4+IEBAIC01NzQsMTEgKzYwMCw4IEBAIHN0YXRpYyBpbnQg cmVhbGx5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgCj4+IHN0cnVjdCBkZXZpY2VfZHJpdmVy ICpkcnYpCj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBwaW5jdHJsX2JpbmRfZmFpbGVkOwo+Pgo+PiAtwqDCoMKgwqDC oMKgIGlmIChkZXYtPmJ1cy0+ZG1hX2NvbmZpZ3VyZSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSBkZXYtPmJ1cy0+ZG1hX2NvbmZpZ3VyZShkZXYpOwo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBwcm9iZV9mYWlsZWQ7Cj4+IC3CoMKgwqDCoMKg wqAgfQo+PiArwqDCoMKgwqDCoMKgIGlmIChkZXZpY2VfZG1hX2NvbmZpZ3VyZShkZXYsIGRydikp Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gcGluY3RybF9iaW5kX2ZhaWxl ZDsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkcml2ZXJfc3lzZnNfYWRkKGRldik7Cj4+ IMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkgewo+PiBAQCAtNjYwLDYgKzY4Myw4IEBAIHN0YXRp YyBpbnQgcmVhbGx5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IAo+PiBkZXZpY2Vf ZHJpdmVyICpkcnYpCj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRldi0+YnVzKQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZk ZXYtPmJ1cy0+cC0+YnVzX25vdGlmaWVyLAo+Pgo+PiBCVVNfTk9USUZZX0RSSVZFUl9OT1RfQk9V TkQsIGRldik7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoCBkZXZpY2VfZG1hX2NsZWFudXAoZGV2LCBk cnYpOwo+PiDCoMKgcGluY3RybF9iaW5kX2ZhaWxlZDoKPj4gwqDCoMKgwqDCoMKgwqDCoCBkZXZp Y2VfbGlua3Nfbm9fZHJpdmVyKGRldik7Cj4+IMKgwqDCoMKgwqDCoMKgwqAgZGV2cmVzX3JlbGVh c2VfYWxsKGRldik7Cj4+IEBAIC0xMjA0LDYgKzEyMjksNyBAQCBzdGF0aWMgdm9pZCBfX2Rldmlj ZV9yZWxlYXNlX2RyaXZlcihzdHJ1Y3QgCj4+IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpw YXJlbnQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGRydi0+ cmVtb3ZlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZHJ2LT5yZW1vdmUoZGV2KTsKPj4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2aWNlX2RtYV9jbGVhbnVwKGRldiwgZHJ2KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGV2aWNlX2xpbmtzX2RyaXZlcl9jbGVhbnVwKGRldik7Cj4+Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldnJlc19yZWxlYXNlX2FsbChkZXYpOwo+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmggCj4+IGIvaW5jbHVkZS9saW51 eC9kZXZpY2UvZHJpdmVyLmgKPj4gaW5kZXggYTQ5OGViY2Y0OTkzLi4zNzRhM2MyY2MxMGQgMTAw NjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oCj4+ICsrKyBiL2luY2x1 ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oCj4+IEBAIC0xMDAsNiArMTAwLDcgQEAgc3RydWN0IGRl dmljZV9kcml2ZXIgewo+PiDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXLCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqbW9kX25hbWU7wqDCoMKgwqDCoCAvKiB1c2VkIGZvciBidWlsdC1pbiAK Pj4gbW9kdWxlcyAqLwo+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgc3VwcHJlc3NfYmluZF9h dHRyczvCoMKgwqDCoMKgwqAgLyogZGlzYWJsZXMgYmluZC91bmJpbmQgdmlhIAo+PiBzeXNmcyAq Lwo+PiArwqDCoMKgwqDCoMKgIGJvb2wgc3VwcHJlc3NfYXV0b19jbGFpbV9kbWFfb3duZXI7Cj4+ IMKgwqDCoMKgwqDCoMKgwqAgZW51bSBwcm9iZV90eXBlIHByb2JlX3R5cGU7Cj4+Cj4+IMKgwqDC oMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZMKgwqDCoMKgwqDCoCAqb2ZfbWF0 Y2hfdGFibGU7Cj4gCj4gRG9lcyB0aGlzIHdvcmsgZm9yIHlvdT8gQ2FuIEkgd29yayB0b3dhcmRz IHRoaXMgaW4gdGhlIG5leHQgdmVyc2lvbj8KCkEga2luZGx5IHBpbmcgLi4uIElzIHRoaXMgaGVh ZGluZyB0aGUgcmlnaHQgZGlyZWN0aW9uPyBJIG5lZWQgeW91cgphZHZpY2UgdG8gbW92ZSBhaGVh ZC4gOi0pCgpCZXN0IHJlZ2FyZHMsCmJhb2x1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1m b3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9s aXN0aW5mby9pb21tdQ== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2070FC433EF for ; Mon, 13 Dec 2021 00:50:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230452AbhLMAu2 (ORCPT ); Sun, 12 Dec 2021 19:50:28 -0500 Received: from mga18.intel.com ([134.134.136.126]:31491 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229540AbhLMAu0 (ORCPT ); Sun, 12 Dec 2021 19:50:26 -0500 X-IronPort-AV: E=McAfee;i="6200,9189,10195"; a="225499505" X-IronPort-AV: E=Sophos;i="5.88,201,1635231600"; d="scan'208";a="225499505" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2021 16:50:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,201,1635231600"; d="scan'208";a="517543569" Received: from allen-box.sh.intel.com (HELO [10.239.159.118]) ([10.239.159.118]) by orsmga008.jf.intel.com with ESMTP; 12 Dec 2021 16:50:18 -0800 Cc: baolu.lu@linux.intel.com, Joerg Roedel , Alex Williamson , Bjorn Helgaas , Kevin Tian , Ashok Raj , Will Deacon , Robin Murphy , Dan Williams , rafael@kernel.org, Diana Craciun , Cornelia Huck , Eric Auger , Liu Yi L , Jacob jun Pan , Chaitanya Kulkarni , Stuart Yoder , Laurentiu Tudor , Thierry Reding , David Airlie , Daniel Vetter , Jonathan Hunter , Li Yang , Dmitry Osipenko , iommu@lists.linux-foundation.org, linux-pci@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 04/18] driver core: platform: Add driver dma ownership management To: Jason Gunthorpe , Greg Kroah-Hartman , Christoph Hellwig References: <20211206015903.88687-1-baolu.lu@linux.intel.com> <20211206015903.88687-5-baolu.lu@linux.intel.com> <20211206150647.GE4670@nvidia.com> <56a63776-48ca-0d6e-c25c-016dc016e0d5@linux.intel.com> <20211207131627.GA6385@nvidia.com> From: Lu Baolu Message-ID: <5d537286-2cb3-cf91-c0de-019355110aa1@linux.intel.com> Date: Mon, 13 Dec 2021 08:50:05 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On 12/10/21 9:23 AM, Lu Baolu wrote: > Hi Greg, Jason and Christoph, > > On 12/9/21 9:20 AM, Lu Baolu wrote: >> On 12/7/21 9:16 PM, Jason Gunthorpe wrote: >>> On Tue, Dec 07, 2021 at 10:57:25AM +0800, Lu Baolu wrote: >>>> On 12/6/21 11:06 PM, Jason Gunthorpe wrote: >>>>> On Mon, Dec 06, 2021 at 06:36:27AM -0800, Christoph Hellwig wrote: >>>>>> I really hate the amount of boilerplate code that having this in each >>>>>> bus type causes. >>>>> +1 >>>>> >>>>> I liked the first version of this series better with the code near >>>>> really_probe(). >>>>> >>>>> Can we go back to that with some device_configure_dma() wrapper >>>>> condtionally called by really_probe as we discussed? > > [...] > >> >> diff --git a/drivers/base/dd.c b/drivers/base/dd.c >> index 68ea1f949daa..68ca5a579eb1 100644 >> --- a/drivers/base/dd.c >> +++ b/drivers/base/dd.c >> @@ -538,6 +538,32 @@ static int call_driver_probe(struct device *dev, >> struct device_driver *drv) >>          return ret; >>   } >> >> +static int device_dma_configure(struct device *dev, struct >> device_driver *drv) >> +{ >> +       int ret; >> + >> +       if (!dev->bus->dma_configure) >> +               return 0; >> + >> +       ret = dev->bus->dma_configure(dev); >> +       if (ret) >> +               return ret; >> + >> +       if (!drv->suppress_auto_claim_dma_owner) >> +               ret = iommu_device_set_dma_owner(dev, >> DMA_OWNER_DMA_API, NULL); >> + >> +       return ret; >> +} >> + >> +static void device_dma_cleanup(struct device *dev, struct >> device_driver *drv) >> +{ >> +       if (!dev->bus->dma_configure) >> +               return; >> + >> +       if (!drv->suppress_auto_claim_dma_owner) >> +               iommu_device_release_dma_owner(dev, DMA_OWNER_DMA_API); >> +} >> + >>   static int really_probe(struct device *dev, struct device_driver *drv) >>   { >>          bool test_remove = >> IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE) && >> @@ -574,11 +600,8 @@ static int really_probe(struct device *dev, >> struct device_driver *drv) >>          if (ret) >>                  goto pinctrl_bind_failed; >> >> -       if (dev->bus->dma_configure) { >> -               ret = dev->bus->dma_configure(dev); >> -               if (ret) >> -                       goto probe_failed; >> -       } >> +       if (device_dma_configure(dev, drv)) >> +               goto pinctrl_bind_failed; >> >>          ret = driver_sysfs_add(dev); >>          if (ret) { >> @@ -660,6 +683,8 @@ static int really_probe(struct device *dev, struct >> device_driver *drv) >>          if (dev->bus) >>                  blocking_notifier_call_chain(&dev->bus->p->bus_notifier, >> >> BUS_NOTIFY_DRIVER_NOT_BOUND, dev); >> + >> +       device_dma_cleanup(dev, drv); >>   pinctrl_bind_failed: >>          device_links_no_driver(dev); >>          devres_release_all(dev); >> @@ -1204,6 +1229,7 @@ static void __device_release_driver(struct >> device *dev, struct device *parent) >>                  else if (drv->remove) >>                          drv->remove(dev); >> >> +               device_dma_cleanup(dev, drv); >>                  device_links_driver_cleanup(dev); >> >>                  devres_release_all(dev); >> diff --git a/include/linux/device/driver.h >> b/include/linux/device/driver.h >> index a498ebcf4993..374a3c2cc10d 100644 >> --- a/include/linux/device/driver.h >> +++ b/include/linux/device/driver.h >> @@ -100,6 +100,7 @@ struct device_driver { >>          const char              *mod_name;      /* used for built-in >> modules */ >> >>          bool suppress_bind_attrs;       /* disables bind/unbind via >> sysfs */ >> +       bool suppress_auto_claim_dma_owner; >>          enum probe_type probe_type; >> >>          const struct of_device_id       *of_match_table; > > Does this work for you? Can I work towards this in the next version? A kindly ping ... Is this heading the right direction? I need your advice to move ahead. :-) Best regards, baolu