From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= Subject: [PATCHv6 0/8] dmaengine: rcar-dmac: add iommu support for slave transfers Date: Mon, 9 May 2016 18:43:59 +0200 Message-ID: <1462812247-3414-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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: vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, =?UTF-8?q?Niklas=20S=C3=B6derlund?= , geert+renesas-gXvu3+zWzMSzQB+pC5nmwQ@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org, dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org List-Id: linux-arch.vger.kernel.org SGksCgpUaGlzIHNlcmllcyB0cmllcyB0byBzb2x2ZSB0aGUgcHJvYmxlbSB3aXRoIERNQSB3aXRo IGRldmljZSByZWdpc3RlcnMKKE1NSU8gcmVnaXN0ZXJzKSB0aGF0IGFyZSBiZWhpbmQgYW4gSU9N TVUgZm9yIHRoZSByY2FyLWRtYWMgZHJpdmVyLiBBCnJlY2VudCBwYXRjaCAnOTU3NTYzMiAoZG1h ZW5naW5lOiBtYWtlIHNsYXZlIGFkZHJlc3MgcGh5c2ljYWwpJwpjbGFyaWZpZXMgdGhhdCBETUEg c2xhdmUgYWRkcmVzcyBwcm92aWRlZCBieSBjbGllbnRzIGlzIHRoZSBwaHlzaWNhbAphZGRyZXNz LiBUaGlzIHB1dHMgdGhlIHRhc2sgb2YgbWFwcGluZyB0aGUgRE1BIHNsYXZlIGFkZHJlc3MgZnJv bSBhCnBoeXNfYWRkcl90IHRvIGEgZG1hX2FkZHJfdCBvbiB0aGUgRE1BIGVuZ2luZS4KCldpdGhv dXQgYW4gSU9NTVUgdGhpcyBpcyBlYXN5IHNpbmNlIHRoZSBwaHlzX2FkZHJfdCBhbmQgZG1hX2Fk ZHJfdCBhcmUKdGhlIHNhbWUgYW5kIG5vIHNwZWNpYWwgY2FyZSBpcyBuZWVkZWQuIEhvd2V2ZXIg aWYgeW91IGhhdmUgYSBJT01NVSB5b3UKbmVlZCB0byBtYXAgdGhlIERNQSBzbGF2ZSBwaHlzX2Fk ZHJfdCB0byBhIGRtYV9hZGRyX3QgdXNpbmcgc29tZXRoaW5nCmxpa2UgdGhpcy4KClRoaXMgc2Vy aWVzIGlzIGJhc2VkIG9uIHRvcCBvZiBhbmQgcmVxdWlyZXMgdGhlIHBhdGNoZXMgZnJvbSBSb2Jp bgpNdXJwaHkgaW4gdGhlIHRhZyAnYXJtL2lvLXBndGFibGUnIGZyb20gdGhlIGlvbW11IHJlcG9z aXRvcnkgYXQ6CgogIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp dC9qb3JvL2lvbW11LmdpdAoKSXQncyB0ZXN0ZWQgb24gYSBLb2Vsc2NoIHdpdGggQ09ORklHX0lQ TU1VX1ZNU0EgYW5kIGJ5IGVuYWJsaW5nIHRoZQppcG1tdV9kcyBub2RlIGluIHI4YTc3OTEuZHRz aS4gSSB2ZXJpZmllZCBvcGVyYXRpb24gYnkgaW50ZXJhY3Rpbmcgd2l0aAovZGV2L21tY2JsazEg YW5kIHRoZSBzZXJpYWwgY29uc29sZSB3aGljaCBib3RoIGFyZSBkZXZpY2VzIGJlaGluZCB0aGUK aW9tbXUuCgpGdXJ0aGVybW9yZSBJIGhhdmUgYXVkaXRlZCB0byB0aGUgYmVzdCBvZiBteSBhYmls aXR5IGFsbCBjYWxsIHBhdGhzCmludm9sdmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkbWFfYWRk cl90IG9idGFpbmVkIGZyb20KZG1hX21hcF9yZXNvdXJjZSgpIHRvIGlzIG5vdCB1c2VkIGluIGEg d2F5IHdoZXJlIGl0IHdvdWxkIGJlIGV4cGVjdGVkCmZvciB0aGUgbWFwcGluZyB0byBiZSBSQU0g KGhhdmUgYSBzdHJ1Y3QgcGFnZSkuIE1hbnkgdGhhbmtzIHRvIENocmlzdG9waApIZWxsd2lnIGFu ZCBMYXVyZW50IFBpbmNoYXJ0IGZvciB0aGVyZSBpbnB1dCBpbiB0aGlzIGVmZm9ydC4KCiAgKiBk cml2ZXJzL2RtYS9zaC9yY2FyLWRtYWMuYwogICAgT25jZSB0aGUgcGh5c19hZGRyX3QgaXMgbWFw cGVkIHRvIGEgZG1hX2FkZHJfdCB1c2luZwogICAgZG1hX21hcF9yZXNvdXJjZSgpIGl0IGlzIG9u bHkgdXNlZCB0byBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlcmVlIGRvIG5vdAogICAgY3Jvc3MgNEdC IGJvdW5kYXJpZXMgYW5kIHRoZW4gb25seSBkaXJlY3RseSB3cml0dGVuIHRvIEhXIHJlZ2lzdGVy cy4KCiAgKiBkcml2ZXJzL2lvbW11L2lvbW11LmMKICAgIC0gaW9tbXVfbWFwKCkKICAgICAgQ2hl Y2sgdGhhdCBpdCdzIGFsaWduIHRvIG1pbiBwYWdlIHNpemUgb3IgcmV0dXJuIC1FSU5WQUwgdGhl biBjYWxscwogICAgICBkb21haW4tPm9wcy0+bWFwKCkKCiAgKiBkcml2ZXJzL2lvbW11L2lwbW11 LXZtc2EuYwogICAgLSBpcG1tdV9tYXAoKQogICAgICBObyBsb2dpYyBvbmx5IGNhbGxzIGRvbWFp bi0+b3BzLT5tYXAoKQoKICAqIGRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uYwogICAgLSBh cm1fbHBhZV9tYXAoKQogICAgICBObyBsb2dpYyBvbmx5IGNhbGxzIF9fYXJtX2xwYWVfbWFwKCkK ICAgIC0gX19hcm1fbHBhZV9tYXAoKQogICAgICBObyBsb2dpYyBvbmx5IGNhbGxzIGFybV9scGFl X2luaXRfcHRlKCkKICAgIC0gYXJtX2xwYWVfaW5pdF9wdGUoKQogICAgICBVc2VkIHRvIGdldCBh IHB0ZToKICAgICAgICBwdGUgfD0gcGZuX3RvX2lvcHRlKHBhZGRyID4+IGRhdGEtPnBnX3NoaWZ0 LCBkYXRhKTsKCiAgKiBkcml2ZXJzL2lvbW11L2lvLXBndGFibGUtYXJtLXY3cy5jCiAgICAtIGFy bV92N3NfbWFwKCkKICAgICAgTm8gbG9naWMgb25seSBjYWxscyBfX2FybV92N3NfbWFwKCkKICAg IC0gX19hcm1fdjdzX21hcCgpCiAgICAgIE5vIGxvZ2ljIG9ubHkgY2FsbHMgYXJtX3Y3c19pbml0 X3B0ZSgpCiAgICAtIGFybV92N3NfaW5pdF9wdGUKICAgICAgVXNlZCB0byBnZXQgYSBwdGU6CiAg ICAgICAgcHRlIHw9IHBhZGRyICYgQVJNX1Y3U19MVkxfTUFTSyhsdmwpOwoKICAqIEFSTSBkbWEt bWFwcGluZwogICAgLSBkbWFfdW5tYXBfKgogICAgICBPbmx5IHZhbGlkIHVubWFwIGlzIGRtYV91 bm1hcF9yZXNvdXJjZSgpIGFsbCBvdGhlcnMgYXJlIGFuIGludmFsaWQKICAgICAgdXNlIGNhc2Uu CiAgICAtIGRtYV9zeW5jX3NpbmdsZV8qCiAgICAgIEludmFsaWQgdXNlIGNhc2UsIG1lbW9yeSB0 aGF0IGlzIG1hcHBlZCBpcyBkZXZpY2UgbWVtb3J5CiAgICAtIGRtYV9jb21tb25fbW1hcCgpIGFu ZCBkbWFfbW1hcF9hdHRycygpCiAgICAgIEludmFsaWQgdXNlIGNhc2UKICAgIC0gZG1hX2NvbW1v bl9nZXRfc2d0YWJsZSgpIGFuZCBkbWFfZ2V0X3NndGFibGVfYXR0cnMoKQogICAgICBJbnZhbGlk IHVzZSBjYXNlLCBvbmx5IGZvciBkbWFfYWxsb2NfKiBhbGxvY2F0ZWQgbWVtb3J5LAogICAgLSBk bWFfbWFwcGluZ19lcnJvcigpCiAgICAgIE9LCgpXaGlsZSB3b3JraW5nIG9uIHRoZSBkbWEtZGVi dWcgcGFydHMgb2YgdGhpcyBzZXJpZXMgSSBmb3VuZCBhbiB1bnJlbGF0ZWQKaXNzdWUgd2l0aCBk cml2ZXJzL2lvbW11L2lvLXBndGFibGUtYXJtLmMgYW5kIENPTkZJR19ETUFfQVBJX0RFQlVHIG9u CnRoZSBLb2Vsc2NoLiBJIHRyaWVkIHRvIGFkZHJlc3MgdGhpcyBpbiB0aGUgdGhyZWFkCmh0dHBz Oi8vbGttbC5vcmcvbGttbC8yMDE2LzUvOC8zMyAsIGhvd2V2ZXIgaXQgdHVybmVkIG91dCBteSBz b2x1dGlvbgp3YXMgbm90IHRoZSBjb3JyZWN0IG9uZS4gSSBoYXZlIG5vdCB0cmllZCB0byBhZGRy ZXNzIHRoaXMgZnVydGhlciBzbwpydW5uaW5nIHRoaXMgc2VyaWVzIHdpdGggQ09ORklHX0RNQV9B UElfREVCVUcgd2lsbCB0cmlnZ2VyIHRoaXMgd2FybmluZwpidXQgaXMgdW5yZWxhdGVkIHRvIHRo aXMgd29yay4KCiogQ2hhbmdlcyBzaW5jZSB2NQotIEFkZCBkbWEtZGVidWcgd29yayB3aGljaCBh ZGRzIGEgbmV3IG1hcHBpbmcgdHlwZSBmb3IgdGhlIHJlc291cmNlCiAgbWFwcGluZyB3aGljaCBj b3JyZWN0bHkgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gYSBwaHlzaWNhbCBhZGRyZXNzLgotIERyb3Ag cGF0Y2hlcyBmcm9tIFJvYmluIE11cnBoeSBzaW5jZSB0aGV5IG5vdyBhcmUgYWNjZXB0ZWQgaW4g dGhlCiAgaW9tbXUgcmVwb3NpdG9yeSBhbmQgYmFzZSB0aGUgc2VyaWVzIG9uIHRoYXQgdHJlZSBp bnN0ZWFkLgotIEFkZCBhIHJldmlldyB0YWcgZnJvbSBMYXVyZW50LgoKKiBDaGFuZ2VzIHNpbmNl IHY0Ci0gTW92ZSB0aGUgbWFwcGluZyBmcm9tIHBoeXNfYWRkcl90IHRvIGRtYV9hZGRyX3QgZnJv bSBzbGF2ZV9jb25maWcgdG8gdGhlCiAgcHJlcGFyZSBjYWxscy4gVGhpcyB3YXkgd2Uga25vdyB0 aGUgZGlyZWN0aW9uIG9mIHRoZSBtYXBwaW5nIGFuZCBkb24ndCBoYXZlCiAgdG8gdXNlIERNQV9C SURJUkVDVElPTkFMLiBUaGFua3MgVmlub2QgZm9yIHN1Z2dlc3RpbmcgdGhpcy4KLSBUbyBiZSBj bGVhciB0aGF0IHRoZSBkYXRhIHR5cGUgZm9yIHNsYXZlIGFkZHJlc3NlcyBhcmUgY2hhbmdlZCBh ZGQgYSBwYXRjaAogIHRoYXQgb25seSBjaGFuZ2VzIHRoZSBkYXRhIHR5cGUgdG8gcGh5c19hZGRy X3QuCi0gRml4ZWQgdXAgY29tbWl0IG1lc3NhZ2VzLgoKKiBDaGFuZ2VzIHNpbmNlIHYzCi0gRm9s ZGVkIGluIGEgZml4IGZyb20gUm9iaW4gdG8gaGlzIHBhdGNoLgotIEFkZGVkIGEgY2hlY2sgdG8g bWFrZSBzdXJlIGRtYV9tYXBfcmVzb3VyY2UgY2FuIG5vdCBiZSB1c2VkIHRvIG1hcCBSQU0gYXMK ICBwb2ludGVkIG91dCBieSBSb2Jpbi4gSSB1c2UgQlVHX09OIHRvIGVuZm9yY2UgdGhpcy4gSXQg bWlnaHQgbm90IGJlIHRoZSBiZXN0CiAgbWV0aG9kIGJ1dCBJIHNhdyBubyBvdGhlciBnb29kIHdh eSBzaW5jZSBETUFfRVJST1JfQ09ERSBtaWdodCBub3QgYmUgZGVmaW5lZAogIG9uIGFsbCBwbGF0 Zm9ybXMuCi0gQWRkZWQgY29tbWVudCBhYm91dCB0aGF0IERUUyBjaGFuZ2VzIHdpbGwgZGlzYWJs ZSAyIERNQSBjaGFubmVscyBkdWUgdG8gYSBIVwogICg/KSBidXQgaW4gdGhlIERNQUMuCi0gRHJv cHBlZCB0aGUgdXNlIG9mIGRtYV9hdHRycywgbm8gbG9uZ2VyIG5lZWRlZC4KLSBDb2xsZWN0ZWQg QWNrZWQtYnkgYW5kIFJldmlld2VkLWJ5IGZyb20gTGF1cmVudC4KLSBWYXJpb3VzIGluZGVudGF0 aW9uIGZpeCB1cHMuCgoqIENoYW5nZXMgc2luY2UgdjIKLSBEcm9wIHBhdGNoIHRvIGFkZCBkbWFf e21hcCx1bm1hcH1fcGFnZV9hdHRycy4KLSBBZGQgZG1hX3ttYXAsdW5tYXB9X3Jlc291cmNlIHRv IGhhbmRsZSB0aGUgbWFwcGluZyB3aXRob3V0IGludm9sdmluZyBhCiAgJ3N0cnVjdCBwYWdlJy4g VGhhbmtzIExhdXJlbnQgYW5kIFJvYmluIGZvciBwb2ludGluZyB0aGlzIG91dC4KLSBVc2Ugc2l6 ZSBpbnN0ZWFkIG9mIGFkZHJlc3MgdG8ga2VlcCB0cmFjayBvZiBpZiBhIG1hcHBpbmcgZXhpc3Qg b3Igbm90CiAgc2luY2UgYWRkciA9PSAwIGlzIHZhbGlkLiBUaGFua3MgTGF1cmVudC4KLSBQaWNr IHVwIHBhdGNoIGZyb20gUm9iaW4gd2l0aCBMYXVyZW50cyBhY2sgKGhvcGUgaXQncyBPSyBmb3Ig bWUgdG8KICBhdHRhY2ggdGhlIGFjaz8pIHRvIGFkZCBJT01NVV9NTUlPLgotIEZpeCBidWcgaW4g cmNhcl9kbWFjX2RldmljZV9jb25maWcgd2hlcmUgdGhlIGVycm9yIGNoZWNrIHdoZXJlCiAgaW52 ZXJ0ZWQuCi0gVXNlIERNQV9CSURJUkVDVElPTkFMIGluIHJjYXJfZG1hY19kZXZpY2VfY29uZmln IHNpbmNlIHdlIGF0IHRoYXQKICBwb2ludCBjYW4ndCBiZSBzdXJlIHdoYXQgZGlyZWN0aW9uIHRo ZSBtYXBwaW5nIGlzIGdvaW5nIHRvIGJlIHVzZWQuCgoqIENoYW5nZXMgc2luY2UgdjEKLSBBZGQg YW5kIHVzZSBhIGRtYV97bWFwLHVubWFwfV9wYWdlX2F0dHJzIHRvIGJlIGFibGUgdG8gbWFwIHRo ZSBwYWdlCiAgdXNpbmcgYXR0cmlidXRlcyBETUFfQVRUUl9OT19LRVJORUxfTUFQUElORyBhbmQK ICBETUFfQVRUUl9TS0lQX0NQVV9TWU5DLiBUaGFua3MgTGF1cmVudC4KLSBEcm9wIGNoZWNrIGlm IGRtYWMgaXMgcGFydCBvZiBhIGlvbW11IGdyb3VwIG9yIG5vdCwgbGV0IHRoZSBETUEKICBtYXBw aW5nIGFwaSBoYW5kbGUgaXQuCi0gTW92ZSBzbGF2ZSBjb25maWd1cmF0aW9uIGRhdGEgYXJvdW5k IGluIHJjYXItZG1hYyB0byBhdm9pZCBjb2RlCiAgZHVwbGljYXRpb24uCi0gRml4IGJ1aWxkIGlz c3VlIHJlcG9ydGVkIGJ5ICdrYnVpbGQgdGVzdCByb2JvdCcgcmVnYXJkaW5nIHBoeXNfdG9fcGFn ZQogIG5vdCBhdmFpbGFiaWxpdHkgb24gc29tZSBjb25maWd1cmF0aW9ucy4KLSBBZGQgRFQgaW5m b3JtYXRpb24gZm9yIHI4YTc3OTEuCgoqIENoYW5nZXMgc2luY2UgUkZDCi0gU3dpdGNoIHRvIHVz ZSB0aGUgZG1hLW1hcHBpbmcgYXBpIGluc3RlYWQgb2YgdXNpbmcgdGhlIGlvbW11X21hcCgpCiAg ZGlyZWN0bHkuIFR1cm5zIG91dCB0aGUgZG1hLW1hcHBlciBpcyBtdWNoIHNtYXJ0ZXIgdGhlbiBt ZS4uLgotIERyb3BwZWQgdGhlIHBhdGNoIHRvIGV4cG9zZSBkb21haW4tPm9wcy0+cGdzaXplX2Jp dG1hcCBmcm9tIHdpdGhpbiB0aGUKICBpb21tdSBhcGkuCi0gRHJvcHBlZCB0aGUgcGF0Y2ggc2hv d2luZyBob3cgSSB0ZXN0ZWQgdGhlIFJGQy4KCk5pa2xhcyBTw7ZkZXJsdW5kICg4KToKICBkbWEt bWFwcGluZzogYWRkIHttYXAsdW5tYXB9X3Jlc291cmNlIHRvIGRtYV9tYXBfb3BzCiAgZG1hLWRl YnVnOiBhZGQgc3VwcG9ydCBmb3IgcmVzb3VyY2UgbWFwcGluZ3MKICBkbWEtbWFwcGluZzogYWRk IGRtYV97bWFwLHVubWFwfV9yZXNvdXJjZQogIGFybTogZG1hLW1hcHBpbmc6IGFkZCB7bWFwLHVu bWFwfV9yZXNvdXJjZSBmb3IgaW9tbXUgb3BzCiAgZG1hZW5naW5lOiByY2FyLWRtYWM6IGdyb3Vw IHNsYXZlIGNvbmZpZ3VyYXRpb24KICBkbWFlbmdpbmU6IHJjYXItZG1hYzogYWRkIGlvbW11IHN1 cHBvcnQgZm9yIHNsYXZlIHRyYW5zZmVycwogIEFSTTogZHRzOiByOGE3NzkwOiBhZGQgaW9tbXVz IHRvIGRtYWMwIGFuZCBkbWFjMQogIEFSTTogZHRzOiByOGE3NzkxOiBhZGQgaW9tbXVzIHRvIGRt YWMwIGFuZCBkbWFjMQoKIERvY3VtZW50YXRpb24vRE1BLUFQSS50eHQgICAgICB8ICAyMiArKysr KystLQogYXJjaC9hcm0vYm9vdC9kdHMvcjhhNzc5MC5kdHNpIHwgIDMwICsrKysrKysrKysrCiBh cmNoL2FybS9ib290L2R0cy9yOGE3NzkxLmR0c2kgfCAgMzAgKysrKysrKysrKysKIGFyY2gvYXJt L21tL2RtYS1tYXBwaW5nLmMgICAgICB8ICA2MyArKysrKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2RtYS9zaC9yY2FyLWRtYWMuYyAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvZG1hLWRlYnVnLmggICAgICB8ICAxOSAr KysrKysrCiBpbmNsdWRlL2xpbnV4L2RtYS1tYXBwaW5nLmggICAgfCAgNDIgKysrKysrKysrKysr KysrCiBsaWIvZG1hLWRlYnVnLmMgICAgICAgICAgICAgICAgfCAgNTIgKysrKysrKysrKysrKysr KystCiA4IGZpbGVzIGNoYW5nZWQsIDM0NSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkK Ci0tIAoyLjguMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-3.sys.kth.se ([130.237.48.192]:38526 "EHLO smtp-3.sys.kth.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751047AbcEIQzH (ORCPT ); Mon, 9 May 2016 12:55:07 -0400 From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= Subject: [PATCHv6 0/8] dmaengine: rcar-dmac: add iommu support for slave transfers Date: Mon, 9 May 2016 18:43:59 +0200 Message-ID: <1462812247-3414-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: vinod.koul@intel.com, linux-renesas-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, iommu@lists.linux-foundation.org, hch@infradead.org Cc: robin.murphy@arm.com, laurent.pinchart@ideasonboard.com, geert+renesas@glider.be, linus.walleij@linaro.org, dan.j.williams@intel.com, arnd@arndb.de, linux-arch@vger.kernel.org, =?UTF-8?q?Niklas=20S=C3=B6derlund?= Message-ID: <20160509164359.Sjrp8ZaCq725r-oEBmOGO2rcFYWjuajiKREsJBWjP2c@z> Hi, This series tries to solve the problem with DMA with device registers (MMIO registers) that are behind an IOMMU for the rcar-dmac driver. A recent patch '9575632 (dmaengine: make slave address physical)' clarifies that DMA slave address provided by clients is the physical address. This puts the task of mapping the DMA slave address from a phys_addr_t to a dma_addr_t on the DMA engine. Without an IOMMU this is easy since the phys_addr_t and dma_addr_t are the same and no special care is needed. However if you have a IOMMU you need to map the DMA slave phys_addr_t to a dma_addr_t using something like this. This series is based on top of and requires the patches from Robin Murphy in the tag 'arm/io-pgtable' from the iommu repository at: git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git It's tested on a Koelsch with CONFIG_IPMMU_VMSA and by enabling the ipmmu_ds node in r8a7791.dtsi. I verified operation by interacting with /dev/mmcblk1 and the serial console which both are devices behind the iommu. Furthermore I have audited to the best of my ability all call paths involved to make sure that the dma_addr_t obtained from dma_map_resource() to is not used in a way where it would be expected for the mapping to be RAM (have a struct page). Many thanks to Christoph Hellwig and Laurent Pinchart for there input in this effort. * drivers/dma/sh/rcar-dmac.c Once the phys_addr_t is mapped to a dma_addr_t using dma_map_resource() it is only used to check that the transferee do not cross 4GB boundaries and then only directly written to HW registers. * drivers/iommu/iommu.c - iommu_map() Check that it's align to min page size or return -EINVAL then calls domain->ops->map() * drivers/iommu/ipmmu-vmsa.c - ipmmu_map() No logic only calls domain->ops->map() * drivers/iommu/io-pgtable-arm.c - arm_lpae_map() No logic only calls __arm_lpae_map() - __arm_lpae_map() No logic only calls arm_lpae_init_pte() - arm_lpae_init_pte() Used to get a pte: pte |= pfn_to_iopte(paddr >> data->pg_shift, data); * drivers/iommu/io-pgtable-arm-v7s.c - arm_v7s_map() No logic only calls __arm_v7s_map() - __arm_v7s_map() No logic only calls arm_v7s_init_pte() - arm_v7s_init_pte Used to get a pte: pte |= paddr & ARM_V7S_LVL_MASK(lvl); * ARM dma-mapping - dma_unmap_* Only valid unmap is dma_unmap_resource() all others are an invalid use case. - dma_sync_single_* Invalid use case, memory that is mapped is device memory - dma_common_mmap() and dma_mmap_attrs() Invalid use case - dma_common_get_sgtable() and dma_get_sgtable_attrs() Invalid use case, only for dma_alloc_* allocated memory, - dma_mapping_error() OK While working on the dma-debug parts of this series I found an unrelated issue with drivers/iommu/io-pgtable-arm.c and CONFIG_DMA_API_DEBUG on the Koelsch. I tried to address this in the thread https://lkml.org/lkml/2016/5/8/33 , however it turned out my solution was not the correct one. I have not tried to address this further so running this series with CONFIG_DMA_API_DEBUG will trigger this warning but is unrelated to this work. * Changes since v5 - Add dma-debug work which adds a new mapping type for the resource mapping which correctly can be translated to a physical address. - Drop patches from Robin Murphy since they now are accepted in the iommu repository and base the series on that tree instead. - Add a review tag from Laurent. * Changes since v4 - Move the mapping from phys_addr_t to dma_addr_t from slave_config to the prepare calls. This way we know the direction of the mapping and don't have to use DMA_BIDIRECTIONAL. Thanks Vinod for suggesting this. - To be clear that the data type for slave addresses are changed add a patch that only changes the data type to phys_addr_t. - Fixed up commit messages. * Changes since v3 - Folded in a fix from Robin to his patch. - Added a check to make sure dma_map_resource can not be used to map RAM as pointed out by Robin. I use BUG_ON to enforce this. It might not be the best method but I saw no other good way since DMA_ERROR_CODE might not be defined on all platforms. - Added comment about that DTS changes will disable 2 DMA channels due to a HW (?) but in the DMAC. - Dropped the use of dma_attrs, no longer needed. - Collected Acked-by and Reviewed-by from Laurent. - Various indentation fix ups. * Changes since v2 - Drop patch to add dma_{map,unmap}_page_attrs. - Add dma_{map,unmap}_resource to handle the mapping without involving a 'struct page'. Thanks Laurent and Robin for pointing this out. - Use size instead of address to keep track of if a mapping exist or not since addr == 0 is valid. Thanks Laurent. - Pick up patch from Robin with Laurents ack (hope it's OK for me to attach the ack?) to add IOMMU_MMIO. - Fix bug in rcar_dmac_device_config where the error check where inverted. - Use DMA_BIDIRECTIONAL in rcar_dmac_device_config since we at that point can't be sure what direction the mapping is going to be used. * Changes since v1 - Add and use a dma_{map,unmap}_page_attrs to be able to map the page using attributes DMA_ATTR_NO_KERNEL_MAPPING and DMA_ATTR_SKIP_CPU_SYNC. Thanks Laurent. - Drop check if dmac is part of a iommu group or not, let the DMA mapping api handle it. - Move slave configuration data around in rcar-dmac to avoid code duplication. - Fix build issue reported by 'kbuild test robot' regarding phys_to_page not availability on some configurations. - Add DT information for r8a7791. * Changes since RFC - Switch to use the dma-mapping api instead of using the iommu_map() directly. Turns out the dma-mapper is much smarter then me... - Dropped the patch to expose domain->ops->pgsize_bitmap from within the iommu api. - Dropped the patch showing how I tested the RFC. Niklas Söderlund (8): dma-mapping: add {map,unmap}_resource to dma_map_ops dma-debug: add support for resource mappings dma-mapping: add dma_{map,unmap}_resource arm: dma-mapping: add {map,unmap}_resource for iommu ops dmaengine: rcar-dmac: group slave configuration dmaengine: rcar-dmac: add iommu support for slave transfers ARM: dts: r8a7790: add iommus to dmac0 and dmac1 ARM: dts: r8a7791: add iommus to dmac0 and dmac1 Documentation/DMA-API.txt | 22 ++++++-- arch/arm/boot/dts/r8a7790.dtsi | 30 +++++++++++ arch/arm/boot/dts/r8a7791.dtsi | 30 +++++++++++ arch/arm/mm/dma-mapping.c | 63 ++++++++++++++++++++++ drivers/dma/sh/rcar-dmac.c | 116 +++++++++++++++++++++++++++++++++-------- include/linux/dma-debug.h | 19 +++++++ include/linux/dma-mapping.h | 42 +++++++++++++++ lib/dma-debug.c | 52 +++++++++++++++++- 8 files changed, 345 insertions(+), 29 deletions(-) -- 2.8.2