From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,2/2] drivers: remove force dma flag from buses From: Bjorn Helgaas Message-Id: <20180410192151.GB54986@bhelgaas-glaptop.roam.corp.google.com> Date: Tue, 10 Apr 2018 14:21:51 -0500 To: Nipun Gupta Cc: robin.murphy@arm.com, hch@lst.de, linux@armlinux.org.uk, gregkh@linuxfoundation.org, m.szyprowski@samsung.com, bhelgaas@google.com, zajec5@gmail.com, andy.gross@linaro.org, david.brown@linaro.org, dan.j.williams@intel.com, vinod.koul@intel.com, thierry.reding@gmail.com, robh+dt@kernel.org, frowand.list@gmail.com, jarkko.sakkinen@linux.intel.com, rafael.j.wysocki@intel.com, dmitry.torokhov@gmail.com, johan@kernel.org, msuchanek@suse.de, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-wireless@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, dmaengine@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-pci@vger.kernel.org, bharat.bhushan@nxp.com, leoyang.li@nxp.com List-ID: T24gRnJpLCBNYXIgMzAsIDIwMTggYXQgMDE6MjQ6NDVQTSArMDUzMCwgTmlwdW4gR3VwdGEgd3Jv dGU6Cj4gV2l0aCBlYWNoIGJ1cyBpbXBsZW1lbnRpbmcgaXRzIG93biBETUEgY29uZmlndXJhdGlv biBjYWxsYmFjaywKPiB0aGVyZSBpcyBubyBuZWVkIGZvciBidXMgdG8gZXhwbGljaXRseSBoYXZl IGZvcmNlX2RtYSBpbiBpdHMKPiBnbG9iYWwgc3RydWN0dXJlLiBUaGlzIHBhdGNoIG1vZGlmaWVz IG9mX2RtYV9jb25maWd1cmUgQVBJIHRvCj4gYWNjZXB0IGFuIGlucHV0IHBhcmFtZXRlciB3aGlj aCBzcGVjaWZpZXMgaWYgaW1wbGljaXQgRE1BCj4gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBl dmVuIHdoZW4gaXQgaXMgbm90IGRlc2NyaWJlZCBieSB0aGUKPiBmaXJtd2FyZS4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBOaXB1biBHdXB0YSA8bmlwdW4uZ3VwdGFAbnhwLmNvbT4KCkFja2VkLWJ5OiBC am9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPiAgIyBQQ0kgcGFydHMKCj4gLS0tCj4g Q2hhbmdlcyBpbiB2MjoKPiAgIC0gVGhpcyBpcyBhIG5ldyBjaGFuZ2Ugc3VnZ2VzdGVkIGJ5IFJv YmluIGFuZCBDaHJpc3RvcGgKPiAgICAgYW5kIGlzIGFkZGVkIHRvIHRoZSBzZXJpZXMuCj4gCj4g Q2hhbmdlcyBpbiB2MzoKPiAgIC0gUmViYXNlIGFuZCBjaGFuZ2VzIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGNoYW5nZXMgaW4gcGF0Y2ggMS8yCj4gCj4gIGRyaXZlcnMvYW1iYS9idXMuYyAgICAgICAg ICAgIHwgMSAtCj4gIGRyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jICAgICAgIHwgMyArLS0KPiAgZHJp dmVycy9iY21hL21haW4uYyAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvZG1hL3Fjb20vaGlk bWFfbWdtdC5jIHwgMiArLQo+ICBkcml2ZXJzL2dwdS9ob3N0MXgvYnVzLmMgICAgICB8IDUgKyst LS0KPiAgZHJpdmVycy9vZi9kZXZpY2UuYyAgICAgICAgICAgfCA2ICsrKystLQo+ICBkcml2ZXJz L29mL29mX3Jlc2VydmVkX21lbS5jICB8IDIgKy0KPiAgZHJpdmVycy9wY2kvcGNpLWRyaXZlci5j ICAgICAgfCAzICstLQo+ICBpbmNsdWRlL2xpbnV4L2RldmljZS5oICAgICAgICB8IDQgLS0tLQo+ ICBpbmNsdWRlL2xpbnV4L29mX2RldmljZS5oICAgICB8IDggKysrKysrLS0KPiAgMTAgZmlsZXMg Y2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvYW1iYS9idXMuYyBiL2RyaXZlcnMvYW1iYS9idXMuYwo+IGluZGV4IDg2N2Rj MmIuLmFiZTczYzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9hbWJhL2J1cy5jCj4gKysrIGIvZHJp dmVycy9hbWJhL2J1cy5jCj4gQEAgLTE5OSw3ICsxOTksNiBAQCBzdHJ1Y3QgYnVzX3R5cGUgYW1i YV9idXN0eXBlID0gewo+ICAJLnVldmVudAkJPSBhbWJhX3VldmVudCwKPiAgCS5kbWFfY29uZmln dXJlCT0gcGxhdGZvcm1fZG1hX2NvbmZpZ3VyZSwKPiAgCS5wbQkJPSAmYW1iYV9wbSwKPiAtCS5m b3JjZV9kbWEJPSB0cnVlLAo+ICB9Owo+ICAKPiAgc3RhdGljIGludCBfX2luaXQgYW1iYV9pbml0 KHZvaWQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jIGIvZHJpdmVycy9i YXNlL3BsYXRmb3JtLmMKPiBpbmRleCA3MmZkYmY2Li5jZmJjNTY5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvYmFzZS9wbGF0Zm9ybS5jCj4gKysrIGIvZHJpdmVycy9iYXNlL3BsYXRmb3JtLmMKPiBA QCAtMTEzNiw3ICsxMTM2LDcgQEAgaW50IHBsYXRmb3JtX2RtYV9jb25maWd1cmUoc3RydWN0IGRl dmljZSAqZGV2KQo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ICAJaWYgKGRldi0+b2Zfbm9kZSkgewo+ IC0JCXJldCA9IG9mX2RtYV9jb25maWd1cmUoZGV2LCBkZXYtPm9mX25vZGUpOwo+ICsJCXJldCA9 IG9mX2RtYV9jb25maWd1cmUoZGV2LCBkZXYtPm9mX25vZGUsIHRydWUpOwo+ICAJfSBlbHNlIGlm IChoYXNfYWNwaV9jb21wYW5pb24oZGV2KSkgewo+ICAJCWF0dHIgPSBhY3BpX2dldF9kbWFfYXR0 cih0b19hY3BpX2RldmljZV9ub2RlKGRldi0+Zndub2RlKSk7Cj4gIAkJaWYgKGF0dHIgIT0gREVW X0RNQV9OT1RfU1VQUE9SVEVEKQo+IEBAIC0xMTU5LDcgKzExNTksNiBAQCBzdHJ1Y3QgYnVzX3R5 cGUgcGxhdGZvcm1fYnVzX3R5cGUgPSB7Cj4gIAkudWV2ZW50CQk9IHBsYXRmb3JtX3VldmVudCwK PiAgCS5kbWFfY29uZmlndXJlCT0gcGxhdGZvcm1fZG1hX2NvbmZpZ3VyZSwKPiAgCS5wbQkJPSAm cGxhdGZvcm1fZGV2X3BtX29wcywKPiAtCS5mb3JjZV9kbWEJPSB0cnVlLAo+ICB9Owo+ICBFWFBP UlRfU1lNQk9MX0dQTChwbGF0Zm9ybV9idXNfdHlwZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2JjbWEvbWFpbi5jIGIvZHJpdmVycy9iY21hL21haW4uYwo+IGluZGV4IGU2OTg2YzcuLmZj MWY0YWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9iY21hL21haW4uYwo+ICsrKyBiL2RyaXZlcnMv YmNtYS9tYWluLmMKPiBAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB2b2lkIGJjbWFfb2ZfZmls bF9kZXZpY2Uoc3RydWN0IGRldmljZSAqcGFyZW50LAo+ICAKPiAgCWNvcmUtPmlycSA9IGJjbWFf b2ZfZ2V0X2lycShwYXJlbnQsIGNvcmUsIDApOwo+ICAKPiAtCW9mX2RtYV9jb25maWd1cmUoJmNv cmUtPmRldiwgbm9kZSk7Cj4gKwlvZl9kbWFfY29uZmlndXJlKCZjb3JlLT5kZXYsIG5vZGUsIGZh bHNlKTsKPiAgfQo+ICAKPiAgdW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFf ZGV2aWNlICpjb3JlLCBpbnQgbnVtKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9xY29tL2hp ZG1hX21nbXQuYyBiL2RyaXZlcnMvZG1hL3Fjb20vaGlkbWFfbWdtdC5jCj4gaW5kZXggMDAwYzcw MTkuLmQ2NGVkZWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEvcWNvbS9oaWRtYV9tZ210LmMK PiArKysgYi9kcml2ZXJzL2RtYS9xY29tL2hpZG1hX21nbXQuYwo+IEBAIC0zOTgsNyArMzk4LDcg QEAgc3RhdGljIGludCBfX2luaXQgaGlkbWFfbWdtdF9vZl9wb3B1bGF0ZV9jaGFubmVscyhzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wKQo+ICAJCX0KPiAgCQlvZl9ub2RlX2dldChjaGlsZCk7Cj4gIAkJ bmV3X3BkZXYtPmRldi5vZl9ub2RlID0gY2hpbGQ7Cj4gLQkJb2ZfZG1hX2NvbmZpZ3VyZSgmbmV3 X3BkZXYtPmRldiwgY2hpbGQpOwo+ICsJCW9mX2RtYV9jb25maWd1cmUoJm5ld19wZGV2LT5kZXYs IGNoaWxkLCB0cnVlKTsKPiAgCQkvKgo+ICAJCSAqIEl0IGlzIGFzc3VtZWQgdGhhdCBjYWxsaW5n IG9mX21zaV9jb25maWd1cmUgaXMgc2FmZSBvbgo+ICAJCSAqIHBsYXRmb3JtcyB3aXRoIG9yIHdp dGhvdXQgTVNJIHN1cHBvcnQuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9idXMu YyBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9idXMuYwo+IGluZGV4IGE5ZWM5OWQuLmIzOWMxZTkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvaG9zdDF4L2J1cy5jCj4gKysrIGIvZHJpdmVycy9ncHUv aG9zdDF4L2J1cy5jCj4gQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgaW50IGhvc3QxeF9kZXZp Y2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KQo+ ICBzdGF0aWMgaW50IGhvc3QxeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAg ewo+ICAJaWYgKGRldi0+b2Zfbm9kZSkKPiAtCQlyZXR1cm4gb2ZfZG1hX2NvbmZpZ3VyZShkZXYs IGRldi0+b2Zfbm9kZSk7Cj4gKwkJcmV0dXJuIG9mX2RtYV9jb25maWd1cmUoZGV2LCBkZXYtPm9m X25vZGUsIHRydWUpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTMzNSw3ICszMzUsNiBA QCBzdHJ1Y3QgYnVzX3R5cGUgaG9zdDF4X2J1c190eXBlID0gewo+ICAJLm1hdGNoID0gaG9zdDF4 X2RldmljZV9tYXRjaCwKPiAgCS5kbWFfY29uZmlndXJlCT0gaG9zdDF4X2RtYV9jb25maWd1cmUs Cj4gIAkucG0gPSAmaG9zdDF4X2RldmljZV9wbV9vcHMsCj4gLQkuZm9yY2VfZG1hID0gdHJ1ZSwK PiAgfTsKPiAgCj4gIHN0YXRpYyB2b2lkIF9faG9zdDF4X2RldmljZV9kZWwoc3RydWN0IGhvc3Qx eF9kZXZpY2UgKmRldmljZSkKPiBAQCAtNDI0LDcgKzQyMyw3IEBAIHN0YXRpYyBpbnQgaG9zdDF4 X2RldmljZV9hZGQoc3RydWN0IGhvc3QxeCAqaG9zdDF4LAo+ICAJZGV2aWNlLT5kZXYuYnVzID0g Jmhvc3QxeF9idXNfdHlwZTsKPiAgCWRldmljZS0+ZGV2LnBhcmVudCA9IGhvc3QxeC0+ZGV2Owo+ ICAKPiAtCW9mX2RtYV9jb25maWd1cmUoJmRldmljZS0+ZGV2LCBob3N0MXgtPmRldi0+b2Zfbm9k ZSk7Cj4gKwlvZl9kbWFfY29uZmlndXJlKCZkZXZpY2UtPmRldiwgaG9zdDF4LT5kZXYtPm9mX25v ZGUsIHRydWUpOwo+ICAKPiAgCWVyciA9IGhvc3QxeF9kZXZpY2VfcGFyc2VfZHQoZGV2aWNlLCBk cml2ZXIpOwo+ICAJaWYgKGVyciA8IDApIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9kZXZp Y2UuYyBiL2RyaXZlcnMvb2YvZGV2aWNlLmMKPiBpbmRleCAwNjRjODE4Li4zM2Q4NTUxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvb2YvZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL29mL2RldmljZS5j Cj4gQEAgLTc2LDYgKzc2LDggQEAgaW50IG9mX2RldmljZV9hZGQoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqb2ZkZXYpCj4gICAqIG9mX2RtYV9jb25maWd1cmUgLSBTZXR1cCBETUEgY29uZmlndXJh dGlvbgo+ICAgKiBAZGV2OglEZXZpY2UgdG8gYXBwbHkgRE1BIGNvbmZpZ3VyYXRpb24KPiAgICog QG5wOgkJUG9pbnRlciB0byBPRiBub2RlIGhhdmluZyBETUEgY29uZmlndXJhdGlvbgo+ICsgKiBA Zm9yY2VfZG1hOiAgV2hldGhlciBkZXZpY2UgaXMgdG8gYmUgc2V0IHVwIGJ5IG9mX2RtYV9jb25m aWd1cmUoKSBldmVuIGlmCj4gKyAqCQlETUEgY2FwYWJpbGl0eSBpcyBub3QgZXhwbGljaXRseSBk ZXNjcmliZWQgYnkgZmlybXdhcmUuCj4gICAqCj4gICAqIFRyeSB0byBnZXQgZGV2aWNlcydzIERN QSBjb25maWd1cmF0aW9uIGZyb20gRFQgYW5kIHVwZGF0ZSBpdAo+ICAgKiBhY2NvcmRpbmdseS4K PiBAQCAtODQsNyArODYsNyBAQCBpbnQgb2ZfZGV2aWNlX2FkZChzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpvZmRldikKPiAgICogY2FuIHVzZSBhIHBsYXRmb3JtIGJ1cyBub3RpZmllciBhbmQgaGFu ZGxlIEJVU19OT1RJRllfQUREX0RFVklDRSBldmVudHMKPiAgICogdG8gZml4IHVwIERNQSBjb25m aWd1cmF0aW9uLgo+ICAgKi8KPiAtaW50IG9mX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQo+ICtpbnQgb2ZfZG1hX2NvbmZpZ3VyZShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGJvb2wgZm9yY2VfZG1hKQo+ ICB7Cj4gIAl1NjQgZG1hX2FkZHIsIHBhZGRyLCBzaXplID0gMDsKPiAgCWludCByZXQ7Cj4gQEAg LTEwMCw3ICsxMDIsNyBAQCBpbnQgb2ZfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gIAkJICogRE1BIGNvbmZpZ3VyYXRpb24gcmVnYXJk bGVzcyBvZiB3aGV0aGVyICJkbWEtcmFuZ2VzIiBpcwo+ICAJCSAqIGNvcnJlY3RseSBzcGVjaWZp ZWQgb3Igbm90Lgo+ICAJCSAqLwo+IC0JCWlmICghZGV2LT5idXMtPmZvcmNlX2RtYSkKPiArCQlp ZiAoIWZvcmNlX2RtYSkKPiAgCQkJcmV0dXJuIHJldCA9PSAtRU5PREVWID8gMCA6IHJldDsKPiAg Cj4gIAkJZG1hX2FkZHIgPSBvZmZzZXQgPSAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL29mL29m X3Jlc2VydmVkX21lbS5jIGIvZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYwo+IGluZGV4IDlh NGY0MjQ2Li44OTVjODNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVt LmMKPiArKysgYi9kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jCj4gQEAgLTM1Myw3ICszNTMs NyBAQCBpbnQgb2ZfcmVzZXJ2ZWRfbWVtX2RldmljZV9pbml0X2J5X2lkeChzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4gIAkJLyogZW5zdXJlIHRoYXQgZG1hX29wcyBpcyBzZXQgZm9yIHZpcnR1YWwgZGV2 aWNlcwo+ICAJCSAqIHVzaW5nIHJlc2VydmVkIG1lbW9yeQo+ICAJCSAqLwo+IC0JCW9mX2RtYV9j b25maWd1cmUoZGV2LCBucCk7Cj4gKwkJb2ZfZG1hX2NvbmZpZ3VyZShkZXYsIG5wLCB0cnVlKTsK PiAgCj4gIAkJZGV2X2luZm8oZGV2LCAiYXNzaWduZWQgcmVzZXJ2ZWQgbWVtb3J5IG5vZGUgJXNc biIsIHJtZW0tPm5hbWUpOwo+ICAJfSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv cGNpLWRyaXZlci5jIGIvZHJpdmVycy9wY2kvcGNpLWRyaXZlci5jCj4gaW5kZXggNzhlNTA3Zi4u MjdjODMyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMKPiArKysgYi9k cml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMKPiBAQCAtMTU0MCw3ICsxNTQwLDcgQEAgc3RhdGljIGlu dCBwY2lfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAo+ICAJaWYgKElTX0VO QUJMRUQoQ09ORklHX09GKSAmJiBicmlkZ2UtPnBhcmVudCAmJgo+ICAJICAgIGJyaWRnZS0+cGFy ZW50LT5vZl9ub2RlKSB7Cj4gLQkJcmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZShkZXYsIGJyaWRnZS0+ cGFyZW50LT5vZl9ub2RlKTsKPiArCQlyZXQgPSBvZl9kbWFfY29uZmlndXJlKGRldiwgYnJpZGdl LT5wYXJlbnQtPm9mX25vZGUsIHRydWUpOwo+ICAJfSBlbHNlIGlmIChoYXNfYWNwaV9jb21wYW5p b24oYnJpZGdlKSkgewo+ICAJCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiA9IHRvX2FjcGlfZGV2 aWNlX25vZGUoYnJpZGdlLT5md25vZGUpOwo+ICAJCWVudW0gZGV2X2RtYV9hdHRyIGF0dHIgPSBh Y3BpX2dldF9kbWFfYXR0cihhZGV2KTsKPiBAQCAtMTU2Niw3ICsxNTY2LDYgQEAgc3RydWN0IGJ1 c190eXBlIHBjaV9idXNfdHlwZSA9IHsKPiAgCS5wbQkJPSBQQ0lfUE1fT1BTX1BUUiwKPiAgCS5u dW1fdmYJCT0gcGNpX2J1c19udW1fdmYsCj4gIAkuZG1hX2NvbmZpZ3VyZQk9IHBjaV9kbWFfY29u ZmlndXJlLAo+IC0JLmZvcmNlX2RtYQk9IHRydWUsCj4gIH07Cj4gIEVYUE9SVF9TWU1CT0wocGNp X2J1c190eXBlKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9p bmNsdWRlL2xpbnV4L2RldmljZS5oCj4gaW5kZXggMTgzMmQ5MC4uOTJjNTMwZSAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2Uu aAo+IEBAIC05OCw4ICs5OCw2IEBAIGV4dGVybiBpbnQgX19tdXN0X2NoZWNrIGJ1c19jcmVhdGVf ZmlsZShzdHJ1Y3QgYnVzX3R5cGUgKiwKPiAgICogQHA6CQlUaGUgcHJpdmF0ZSBkYXRhIG9mIHRo ZSBkcml2ZXIgY29yZSwgb25seSB0aGUgZHJpdmVyIGNvcmUgY2FuCj4gICAqCQl0b3VjaCB0aGlz Lgo+ICAgKiBAbG9ja19rZXk6CUxvY2sgY2xhc3Mga2V5IGZvciB1c2UgYnkgdGhlIGxvY2sgdmFs aWRhdG9yCj4gLSAqIEBmb3JjZV9kbWE6CUFzc3VtZSBkZXZpY2VzIG9uIHRoaXMgYnVzIHNob3Vs ZCBiZSBzZXQgdXAgYnkgZG1hX2NvbmZpZ3VyZSgpCj4gLSAqIAkJZXZlbiBpZiBETUEgY2FwYWJp bGl0eSBpcyBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgYnkgZmlybXdhcmUuCj4gICAqCj4gICAq IEEgYnVzIGlzIGEgY2hhbm5lbCBiZXR3ZWVuIHRoZSBwcm9jZXNzb3IgYW5kIG9uZSBvciBtb3Jl IGRldmljZXMuIEZvciB0aGUKPiAgICogcHVycG9zZXMgb2YgdGhlIGRldmljZSBtb2RlbCwgYWxs IGRldmljZXMgYXJlIGNvbm5lY3RlZCB2aWEgYSBidXMsIGV2ZW4gaWYKPiBAQCAtMTQwLDggKzEz OCw2IEBAIHN0cnVjdCBidXNfdHlwZSB7Cj4gIAo+ICAJc3RydWN0IHN1YnN5c19wcml2YXRlICpw Owo+ICAJc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5Owo+IC0KPiAtCWJvb2wgZm9yY2Vf ZG1hOwo+ICB9Owo+ICAKPiAgZXh0ZXJuIGludCBfX211c3RfY2hlY2sgYnVzX3JlZ2lzdGVyKHN0 cnVjdCBidXNfdHlwZSAqYnVzKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZl9kZXZp Y2UuaCBiL2luY2x1ZGUvbGludXgvb2ZfZGV2aWNlLmgKPiBpbmRleCA4ZGE1YTFiLi4xNjVmZDMw IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvb2ZfZGV2aWNlLmgKPiArKysgYi9pbmNsdWRl L2xpbnV4L29mX2RldmljZS5oCj4gQEAgLTU1LDcgKzU1LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgZGV2aWNlX25vZGUgKm9mX2NwdV9kZXZpY2Vfbm9kZV9nZXQoaW50IGNwdSkKPiAgCXJldHVy biBvZl9ub2RlX2dldChjcHVfZGV2LT5vZl9ub2RlKTsKPiAgfQo+ICAKPiAtaW50IG9mX2RtYV9j b25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTsKPiAr aW50IG9mX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCSAgICAgc3RydWN0 IGRldmljZV9ub2RlICpucCwKPiArCQkgICAgIGJvb2wgZm9yY2VfZG1hKTsKPiAgdm9pZCBvZl9k bWFfZGVjb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KTsKPiAgI2Vsc2UgLyogQ09ORklHX09G ICovCj4gIAo+IEBAIC0xMDUsNyArMTA3LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZGV2aWNl X25vZGUgKm9mX2NwdV9kZXZpY2Vfbm9kZV9nZXQoaW50IGNwdSkKPiAgCXJldHVybiBOVUxMOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGludCBvZl9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCkKPiArc3RhdGljIGlubGluZSBpbnQgb2Zf ZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wLAo+ICsJCQkJICAgYm9vbCBmb3JjZV9kbWEpCj4gIHsKPiAgCXJldHVybiAwOwo+ ICB9Cj4gLS0gCj4gMS45LjEKPgotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNl bmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGRtYWVuZ2luZSIgaW4KdGhlIGJvZHkgb2YgYSBtZXNz YWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAg aHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.kernel.org ([198.145.29.99]:48190 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752434AbeDJTVx (ORCPT ); Tue, 10 Apr 2018 15:21:53 -0400 Date: Tue, 10 Apr 2018 14:21:51 -0500 From: Bjorn Helgaas To: Nipun Gupta Cc: robin.murphy@arm.com, hch@lst.de, linux@armlinux.org.uk, gregkh@linuxfoundation.org, m.szyprowski@samsung.com, bhelgaas@google.com, zajec5@gmail.com, andy.gross@linaro.org, david.brown@linaro.org, dan.j.williams@intel.com, vinod.koul@intel.com, thierry.reding@gmail.com, robh+dt@kernel.org, frowand.list@gmail.com, jarkko.sakkinen@linux.intel.com, rafael.j.wysocki@intel.com, dmitry.torokhov@gmail.com, johan@kernel.org, msuchanek@suse.de, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-wireless@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, dmaengine@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-pci@vger.kernel.org, bharat.bhushan@nxp.com, leoyang.li@nxp.com Subject: Re: [PATCH v3 2/2] drivers: remove force dma flag from buses Message-ID: <20180410192151.GB54986@bhelgaas-glaptop.roam.corp.google.com> (sfid-20180410_212159_554166_88701413) References: <1520868292-2479-1-git-send-email-nipun.gupta@nxp.com> <1522396485-10248-1-git-send-email-nipun.gupta@nxp.com> <1522396485-10248-2-git-send-email-nipun.gupta@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <1522396485-10248-2-git-send-email-nipun.gupta@nxp.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: On Fri, Mar 30, 2018 at 01:24:45PM +0530, Nipun Gupta wrote: > With each bus implementing its own DMA configuration callback, > there is no need for bus to explicitly have force_dma in its > global structure. This patch modifies of_dma_configure API to > accept an input parameter which specifies if implicit DMA > configuration is required even when it is not described by the > firmware. > > Signed-off-by: Nipun Gupta Acked-by: Bjorn Helgaas # PCI parts > --- > Changes in v2: > - This is a new change suggested by Robin and Christoph > and is added to the series. > > Changes in v3: > - Rebase and changes corresponding to the changes in patch 1/2 > > drivers/amba/bus.c | 1 - > drivers/base/platform.c | 3 +-- > drivers/bcma/main.c | 2 +- > drivers/dma/qcom/hidma_mgmt.c | 2 +- > drivers/gpu/host1x/bus.c | 5 ++--- > drivers/of/device.c | 6 ++++-- > drivers/of/of_reserved_mem.c | 2 +- > drivers/pci/pci-driver.c | 3 +-- > include/linux/device.h | 4 ---- > include/linux/of_device.h | 8 ++++++-- > 10 files changed, 17 insertions(+), 19 deletions(-) > > diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c > index 867dc2b..abe73c4 100644 > --- a/drivers/amba/bus.c > +++ b/drivers/amba/bus.c > @@ -199,7 +199,6 @@ struct bus_type amba_bustype = { > .uevent = amba_uevent, > .dma_configure = platform_dma_configure, > .pm = &amba_pm, > - .force_dma = true, > }; > > static int __init amba_init(void) > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 72fdbf6..cfbc569 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -1136,7 +1136,7 @@ int platform_dma_configure(struct device *dev) > int ret = 0; > > if (dev->of_node) { > - ret = of_dma_configure(dev, dev->of_node); > + ret = of_dma_configure(dev, dev->of_node, true); > } else if (has_acpi_companion(dev)) { > attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); > if (attr != DEV_DMA_NOT_SUPPORTED) > @@ -1159,7 +1159,6 @@ struct bus_type platform_bus_type = { > .uevent = platform_uevent, > .dma_configure = platform_dma_configure, > .pm = &platform_dev_pm_ops, > - .force_dma = true, > }; > EXPORT_SYMBOL_GPL(platform_bus_type); > > diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c > index e6986c7..fc1f4ac 100644 > --- a/drivers/bcma/main.c > +++ b/drivers/bcma/main.c > @@ -207,7 +207,7 @@ static void bcma_of_fill_device(struct device *parent, > > core->irq = bcma_of_get_irq(parent, core, 0); > > - of_dma_configure(&core->dev, node); > + of_dma_configure(&core->dev, node, false); > } > > unsigned int bcma_core_irq(struct bcma_device *core, int num) > diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c > index 000c7019..d64edeb 100644 > --- a/drivers/dma/qcom/hidma_mgmt.c > +++ b/drivers/dma/qcom/hidma_mgmt.c > @@ -398,7 +398,7 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np) > } > of_node_get(child); > new_pdev->dev.of_node = child; > - of_dma_configure(&new_pdev->dev, child); > + of_dma_configure(&new_pdev->dev, child, true); > /* > * It is assumed that calling of_msi_configure is safe on > * platforms with or without MSI support. > diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c > index a9ec99d..b39c1e9 100644 > --- a/drivers/gpu/host1x/bus.c > +++ b/drivers/gpu/host1x/bus.c > @@ -317,7 +317,7 @@ static int host1x_device_match(struct device *dev, struct device_driver *drv) > static int host1x_dma_configure(struct device *dev) > { > if (dev->of_node) > - return of_dma_configure(dev, dev->of_node); > + return of_dma_configure(dev, dev->of_node, true); > return 0; > } > > @@ -335,7 +335,6 @@ struct bus_type host1x_bus_type = { > .match = host1x_device_match, > .dma_configure = host1x_dma_configure, > .pm = &host1x_device_pm_ops, > - .force_dma = true, > }; > > static void __host1x_device_del(struct host1x_device *device) > @@ -424,7 +423,7 @@ static int host1x_device_add(struct host1x *host1x, > device->dev.bus = &host1x_bus_type; > device->dev.parent = host1x->dev; > > - of_dma_configure(&device->dev, host1x->dev->of_node); > + of_dma_configure(&device->dev, host1x->dev->of_node, true); > > err = host1x_device_parse_dt(device, driver); > if (err < 0) { > diff --git a/drivers/of/device.c b/drivers/of/device.c > index 064c818..33d8551 100644 > --- a/drivers/of/device.c > +++ b/drivers/of/device.c > @@ -76,6 +76,8 @@ int of_device_add(struct platform_device *ofdev) > * of_dma_configure - Setup DMA configuration > * @dev: Device to apply DMA configuration > * @np: Pointer to OF node having DMA configuration > + * @force_dma: Whether device is to be set up by of_dma_configure() even if > + * DMA capability is not explicitly described by firmware. > * > * Try to get devices's DMA configuration from DT and update it > * accordingly. > @@ -84,7 +86,7 @@ int of_device_add(struct platform_device *ofdev) > * can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events > * to fix up DMA configuration. > */ > -int of_dma_configure(struct device *dev, struct device_node *np) > +int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) > { > u64 dma_addr, paddr, size = 0; > int ret; > @@ -100,7 +102,7 @@ int of_dma_configure(struct device *dev, struct device_node *np) > * DMA configuration regardless of whether "dma-ranges" is > * correctly specified or not. > */ > - if (!dev->bus->force_dma) > + if (!force_dma) > return ret == -ENODEV ? 0 : ret; > > dma_addr = offset = 0; > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > index 9a4f4246..895c83e 100644 > --- a/drivers/of/of_reserved_mem.c > +++ b/drivers/of/of_reserved_mem.c > @@ -353,7 +353,7 @@ int of_reserved_mem_device_init_by_idx(struct device *dev, > /* ensure that dma_ops is set for virtual devices > * using reserved memory > */ > - of_dma_configure(dev, np); > + of_dma_configure(dev, np, true); > > dev_info(dev, "assigned reserved memory node %s\n", rmem->name); > } else { > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c > index 78e507f..27c832f 100644 > --- a/drivers/pci/pci-driver.c > +++ b/drivers/pci/pci-driver.c > @@ -1540,7 +1540,7 @@ static int pci_dma_configure(struct device *dev) > > if (IS_ENABLED(CONFIG_OF) && bridge->parent && > bridge->parent->of_node) { > - ret = of_dma_configure(dev, bridge->parent->of_node); > + ret = of_dma_configure(dev, bridge->parent->of_node, true); > } else if (has_acpi_companion(bridge)) { > struct acpi_device *adev = to_acpi_device_node(bridge->fwnode); > enum dev_dma_attr attr = acpi_get_dma_attr(adev); > @@ -1566,7 +1566,6 @@ struct bus_type pci_bus_type = { > .pm = PCI_PM_OPS_PTR, > .num_vf = pci_bus_num_vf, > .dma_configure = pci_dma_configure, > - .force_dma = true, > }; > EXPORT_SYMBOL(pci_bus_type); > > diff --git a/include/linux/device.h b/include/linux/device.h > index 1832d90..92c530e 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -98,8 +98,6 @@ extern int __must_check bus_create_file(struct bus_type *, > * @p: The private data of the driver core, only the driver core can > * touch this. > * @lock_key: Lock class key for use by the lock validator > - * @force_dma: Assume devices on this bus should be set up by dma_configure() > - * even if DMA capability is not explicitly described by firmware. > * > * A bus is a channel between the processor and one or more devices. For the > * purposes of the device model, all devices are connected via a bus, even if > @@ -140,8 +138,6 @@ struct bus_type { > > struct subsys_private *p; > struct lock_class_key lock_key; > - > - bool force_dma; > }; > > extern int __must_check bus_register(struct bus_type *bus); > diff --git a/include/linux/of_device.h b/include/linux/of_device.h > index 8da5a1b..165fd30 100644 > --- a/include/linux/of_device.h > +++ b/include/linux/of_device.h > @@ -55,7 +55,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) > return of_node_get(cpu_dev->of_node); > } > > -int of_dma_configure(struct device *dev, struct device_node *np); > +int of_dma_configure(struct device *dev, > + struct device_node *np, > + bool force_dma); > void of_dma_deconfigure(struct device *dev); > #else /* CONFIG_OF */ > > @@ -105,7 +107,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) > return NULL; > } > > -static inline int of_dma_configure(struct device *dev, struct device_node *np) > +static inline int of_dma_configure(struct device *dev, > + struct device_node *np, > + bool force_dma) > { > return 0; > } > -- > 1.9.1 > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bjorn Helgaas Subject: Re: [PATCH v3 2/2] drivers: remove force dma flag from buses Date: Tue, 10 Apr 2018 14:21:51 -0500 Message-ID: <20180410192151.GB54986@bhelgaas-glaptop.roam.corp.google.com> References: <1520868292-2479-1-git-send-email-nipun.gupta@nxp.com> <1522396485-10248-1-git-send-email-nipun.gupta@nxp.com> <1522396485-10248-2-git-send-email-nipun.gupta@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1522396485-10248-2-git-send-email-nipun.gupta-3arQi8VN3Tc@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Nipun Gupta Cc: zajec5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, david.brown-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, hch-jcswGhMUV9g@public.gmane.org, vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org, andy.gross-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, msuchanek-l3A5Bk7waGM@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, johan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, linux-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, leoyang.li-3arQi8VN3Tc@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-tegra@vger.kernel.org On Fri, Mar 30, 2018 at 01:24:45PM +0530, Nipun Gupta wrote: > With each bus implementing its own DMA configuration callback, > there is no need for bus to explicitly have force_dma in its > global structure. This patch modifies of_dma_configure API to > accept an input parameter which specifies if implicit DMA > configuration is required even when it is not described by the > firmware. > > Signed-off-by: Nipun Gupta Acked-by: Bjorn Helgaas # PCI parts > --- > Changes in v2: > - This is a new change suggested by Robin and Christoph > and is added to the series. > > Changes in v3: > - Rebase and changes corresponding to the changes in patch 1/2 > > drivers/amba/bus.c | 1 - > drivers/base/platform.c | 3 +-- > drivers/bcma/main.c | 2 +- > drivers/dma/qcom/hidma_mgmt.c | 2 +- > drivers/gpu/host1x/bus.c | 5 ++--- > drivers/of/device.c | 6 ++++-- > drivers/of/of_reserved_mem.c | 2 +- > drivers/pci/pci-driver.c | 3 +-- > include/linux/device.h | 4 ---- > include/linux/of_device.h | 8 ++++++-- > 10 files changed, 17 insertions(+), 19 deletions(-) > > diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c > index 867dc2b..abe73c4 100644 > --- a/drivers/amba/bus.c > +++ b/drivers/amba/bus.c > @@ -199,7 +199,6 @@ struct bus_type amba_bustype = { > .uevent = amba_uevent, > .dma_configure = platform_dma_configure, > .pm = &amba_pm, > - .force_dma = true, > }; > > static int __init amba_init(void) > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 72fdbf6..cfbc569 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -1136,7 +1136,7 @@ int platform_dma_configure(struct device *dev) > int ret = 0; > > if (dev->of_node) { > - ret = of_dma_configure(dev, dev->of_node); > + ret = of_dma_configure(dev, dev->of_node, true); > } else if (has_acpi_companion(dev)) { > attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); > if (attr != DEV_DMA_NOT_SUPPORTED) > @@ -1159,7 +1159,6 @@ struct bus_type platform_bus_type = { > .uevent = platform_uevent, > .dma_configure = platform_dma_configure, > .pm = &platform_dev_pm_ops, > - .force_dma = true, > }; > EXPORT_SYMBOL_GPL(platform_bus_type); > > diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c > index e6986c7..fc1f4ac 100644 > --- a/drivers/bcma/main.c > +++ b/drivers/bcma/main.c > @@ -207,7 +207,7 @@ static void bcma_of_fill_device(struct device *parent, > > core->irq = bcma_of_get_irq(parent, core, 0); > > - of_dma_configure(&core->dev, node); > + of_dma_configure(&core->dev, node, false); > } > > unsigned int bcma_core_irq(struct bcma_device *core, int num) > diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c > index 000c7019..d64edeb 100644 > --- a/drivers/dma/qcom/hidma_mgmt.c > +++ b/drivers/dma/qcom/hidma_mgmt.c > @@ -398,7 +398,7 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np) > } > of_node_get(child); > new_pdev->dev.of_node = child; > - of_dma_configure(&new_pdev->dev, child); > + of_dma_configure(&new_pdev->dev, child, true); > /* > * It is assumed that calling of_msi_configure is safe on > * platforms with or without MSI support. > diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c > index a9ec99d..b39c1e9 100644 > --- a/drivers/gpu/host1x/bus.c > +++ b/drivers/gpu/host1x/bus.c > @@ -317,7 +317,7 @@ static int host1x_device_match(struct device *dev, struct device_driver *drv) > static int host1x_dma_configure(struct device *dev) > { > if (dev->of_node) > - return of_dma_configure(dev, dev->of_node); > + return of_dma_configure(dev, dev->of_node, true); > return 0; > } > > @@ -335,7 +335,6 @@ struct bus_type host1x_bus_type = { > .match = host1x_device_match, > .dma_configure = host1x_dma_configure, > .pm = &host1x_device_pm_ops, > - .force_dma = true, > }; > > static void __host1x_device_del(struct host1x_device *device) > @@ -424,7 +423,7 @@ static int host1x_device_add(struct host1x *host1x, > device->dev.bus = &host1x_bus_type; > device->dev.parent = host1x->dev; > > - of_dma_configure(&device->dev, host1x->dev->of_node); > + of_dma_configure(&device->dev, host1x->dev->of_node, true); > > err = host1x_device_parse_dt(device, driver); > if (err < 0) { > diff --git a/drivers/of/device.c b/drivers/of/device.c > index 064c818..33d8551 100644 > --- a/drivers/of/device.c > +++ b/drivers/of/device.c > @@ -76,6 +76,8 @@ int of_device_add(struct platform_device *ofdev) > * of_dma_configure - Setup DMA configuration > * @dev: Device to apply DMA configuration > * @np: Pointer to OF node having DMA configuration > + * @force_dma: Whether device is to be set up by of_dma_configure() even if > + * DMA capability is not explicitly described by firmware. > * > * Try to get devices's DMA configuration from DT and update it > * accordingly. > @@ -84,7 +86,7 @@ int of_device_add(struct platform_device *ofdev) > * can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events > * to fix up DMA configuration. > */ > -int of_dma_configure(struct device *dev, struct device_node *np) > +int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) > { > u64 dma_addr, paddr, size = 0; > int ret; > @@ -100,7 +102,7 @@ int of_dma_configure(struct device *dev, struct device_node *np) > * DMA configuration regardless of whether "dma-ranges" is > * correctly specified or not. > */ > - if (!dev->bus->force_dma) > + if (!force_dma) > return ret == -ENODEV ? 0 : ret; > > dma_addr = offset = 0; > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > index 9a4f4246..895c83e 100644 > --- a/drivers/of/of_reserved_mem.c > +++ b/drivers/of/of_reserved_mem.c > @@ -353,7 +353,7 @@ int of_reserved_mem_device_init_by_idx(struct device *dev, > /* ensure that dma_ops is set for virtual devices > * using reserved memory > */ > - of_dma_configure(dev, np); > + of_dma_configure(dev, np, true); > > dev_info(dev, "assigned reserved memory node %s\n", rmem->name); > } else { > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c > index 78e507f..27c832f 100644 > --- a/drivers/pci/pci-driver.c > +++ b/drivers/pci/pci-driver.c > @@ -1540,7 +1540,7 @@ static int pci_dma_configure(struct device *dev) > > if (IS_ENABLED(CONFIG_OF) && bridge->parent && > bridge->parent->of_node) { > - ret = of_dma_configure(dev, bridge->parent->of_node); > + ret = of_dma_configure(dev, bridge->parent->of_node, true); > } else if (has_acpi_companion(bridge)) { > struct acpi_device *adev = to_acpi_device_node(bridge->fwnode); > enum dev_dma_attr attr = acpi_get_dma_attr(adev); > @@ -1566,7 +1566,6 @@ struct bus_type pci_bus_type = { > .pm = PCI_PM_OPS_PTR, > .num_vf = pci_bus_num_vf, > .dma_configure = pci_dma_configure, > - .force_dma = true, > }; > EXPORT_SYMBOL(pci_bus_type); > > diff --git a/include/linux/device.h b/include/linux/device.h > index 1832d90..92c530e 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -98,8 +98,6 @@ extern int __must_check bus_create_file(struct bus_type *, > * @p: The private data of the driver core, only the driver core can > * touch this. > * @lock_key: Lock class key for use by the lock validator > - * @force_dma: Assume devices on this bus should be set up by dma_configure() > - * even if DMA capability is not explicitly described by firmware. > * > * A bus is a channel between the processor and one or more devices. For the > * purposes of the device model, all devices are connected via a bus, even if > @@ -140,8 +138,6 @@ struct bus_type { > > struct subsys_private *p; > struct lock_class_key lock_key; > - > - bool force_dma; > }; > > extern int __must_check bus_register(struct bus_type *bus); > diff --git a/include/linux/of_device.h b/include/linux/of_device.h > index 8da5a1b..165fd30 100644 > --- a/include/linux/of_device.h > +++ b/include/linux/of_device.h > @@ -55,7 +55,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) > return of_node_get(cpu_dev->of_node); > } > > -int of_dma_configure(struct device *dev, struct device_node *np); > +int of_dma_configure(struct device *dev, > + struct device_node *np, > + bool force_dma); > void of_dma_deconfigure(struct device *dev); > #else /* CONFIG_OF */ > > @@ -105,7 +107,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) > return NULL; > } > > -static inline int of_dma_configure(struct device *dev, struct device_node *np) > +static inline int of_dma_configure(struct device *dev, > + struct device_node *np, > + bool force_dma) > { > return 0; > } > -- > 1.9.1 >