From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: [PATCH v10 2/3] SMAF: add CMA allocator Date: Tue, 4 Oct 2016 13:47:23 +0200 Message-ID: <1475581644-10600-3-git-send-email-benjamin.gaignard@linaro.org> References: <1475581644-10600-1-git-send-email-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2460D6E624 for ; Tue, 4 Oct 2016 11:47:45 +0000 (UTC) Received: by mail-wm0-x22c.google.com with SMTP id f193so162799253wmg.0 for ; Tue, 04 Oct 2016 04:47:45 -0700 (PDT) In-Reply-To: <1475581644-10600-1-git-send-email-benjamin.gaignard@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, cc.ma@mediatek.com, joakim.bech@linaro.org, burt.lien@linaro.org, linus.walleij@linaro.org Cc: linaro-mm-sig@lists.linaro.org, linaro-kernel@lists.linaro.org List-Id: dri-devel@lists.freedesktop.org U01BRiBDTUEgYWxsb2NhdG9yIGltcGxlbWVudCBoZWxwZXJzIGZ1bmN0aW9ucyB0byBhbGxvdyBT TUFGCnRvIGFsbG9jYXRlIGNvbnRpZ3VvdXMgbWVtb3J5LgoKbWF0Y2goKSBlYWNoIGlmIGF0IGxl YXN0IG9uZSBvZiB0aGUgYXR0YWNoZWQgZGV2aWNlcyBoYXZlIGNvaGVyZW50X2RtYV9tYXNrCnNl dCB0byBETUFfQklUX01BU0soMzIpLgoKRm9yIGFsbG9jYXRpb24gaXQgdXNlIGRtYV9hbGxvY19h dHRycygpIHdpdGggRE1BX0FUVFJfV1JJVEVfQ09NQklORSBhbmQgbm90CmRtYV9hbGxvY193cml0 ZWNvbWJpbmUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEFSTSA2NGJpdHMgYXJjaGl0ZWN0dXJlCgpT aWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJv Lm9yZz4KLS0tCiBkcml2ZXJzL3NtYWYvS2NvbmZpZyAgICB8ICAgNiArKwogZHJpdmVycy9zbWFm L01ha2VmaWxlICAgfCAgIDEgKwogZHJpdmVycy9zbWFmL3NtYWYtY21hLmMgfCAxODYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDE5MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zbWFmL3Nt YWYtY21hLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NtYWYvS2NvbmZpZyBiL2RyaXZlcnMvc21h Zi9LY29uZmlnCmluZGV4IGQzNjY1MWEuLmNmZGZmZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc21h Zi9LY29uZmlnCisrKyBiL2RyaXZlcnMvc21hZi9LY29uZmlnCkBAIC0zLDMgKzMsOSBAQCBjb25m aWcgU01BRgogCWRlcGVuZHMgb24gRE1BX1NIQVJFRF9CVUZGRVIKIAloZWxwCiAJICBDaG9vc2Ug dGhpcyBvcHRpb24gdG8gZW5hYmxlIFNlY3VyZSBNZW1vcnkgQWxsb2NhdGlvbiBGcmFtZXdvcmsK KworY29uZmlnIFNNQUZfQ01BCisJdHJpc3RhdGUgIlNNQUYgQ01BIGFsbG9jYXRvciIKKwlkZXBl bmRzIG9uIFNNQUYKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gdG8gZW5hYmxlIENNQSBh bGxvY2F0aW9uIHdpdGhpbiBTTUFGCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NtYWYvTWFrZWZpbGUg Yi9kcml2ZXJzL3NtYWYvTWFrZWZpbGUKaW5kZXggNDBjZDg4Mi4uMDViYWIwMWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc21hZi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3NtYWYvTWFrZWZpbGUKQEAg LTEgKzEsMiBAQAogb2JqLSQoQ09ORklHX1NNQUYpICs9IHNtYWYtY29yZS5vCitvYmotJChDT05G SUdfU01BRl9DTUEpICs9IHNtYWYtY21hLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc21hZi9zbWFm LWNtYS5jIGIvZHJpdmVycy9zbWFmL3NtYWYtY21hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNmM5ODQwYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc21hZi9zbWFm LWNtYS5jCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogc21hZi1jbWEuYworICoKKyAqIENvcHly aWdodCAoQykgTGluYXJvIFNBIDIwMTUKKyAqIEF1dGhvcjogQmVuamFtaW4gR2FpZ25hcmQgPGJl bmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+IGZvciBMaW5hcm8uCisgKiBMaWNlbnNlIHRlcm1z OiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCksIHZlcnNpb24gMgorICovCisKKyNp bmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9zbWFmLWFsbG9jYXRvci5o PgorCitzdHJ1Y3Qgc21hZl9jbWFfYnVmZmVyX2luZm8geworCXN0cnVjdCBkZXZpY2UgKmRldjsK KwlzaXplX3Qgc2l6ZTsKKwl2b2lkICp2YWRkcjsKKwlkbWFfYWRkcl90IHBhZGRyOworfTsKKwor LyoqCisgKiBmaW5kX21hdGNoaW5nX2RldmljZSAtIGl0ZXJhdGUgb3ZlciB0aGUgYXR0YWNoZWQg ZGV2aWNlcyB0byBmaW5kIG9uZQorICogd2l0aCBjb2hlcmVudF9kbWFfbWFzayBjb3JyZWN0bHkg c2V0IHRvIERNQV9CSVRfTUFTSygzMikuCisgKiBNYXRjaGluZyBkZXZpY2UgKGlmIGFueSkgd2ls bCBiZSB1c2VkIHRvIGFpbSBDTUEgYXJlYS4KKyAqLworc3RhdGljIHN0cnVjdCBkZXZpY2UgKmZp bmRfbWF0Y2hpbmdfZGV2aWNlKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNoX29iajsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoYXR0 YWNoX29iaiwgJmRtYWJ1Zi0+YXR0YWNobWVudHMsIG5vZGUpIHsKKwkJaWYgKGF0dGFjaF9vYmot PmRldi0+Y29oZXJlbnRfZG1hX21hc2sgPT0gRE1BX0JJVF9NQVNLKDMyKSkKKwkJCXJldHVybiBh dHRhY2hfb2JqLT5kZXY7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogc21hZl9j bWFfbWF0Y2ggLSByZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZGV2aWNlIGhhcyBiZWVuIGZv dW5kCisgKi8KK3N0YXRpYyBib29sIHNtYWZfY21hX21hdGNoKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYpCit7CisJcmV0dXJuICEhZmluZF9tYXRjaGluZ19kZXZpY2UoZG1hYnVmKTsKK30KKworc3Rh dGljIHZvaWQgc21hZl9jbWFfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQoreworCXN0 cnVjdCBzbWFmX2NtYV9idWZmZXJfaW5mbyAqaW5mbyA9IGRtYWJ1Zi0+cHJpdjsKKworCWRtYV9m cmVlX2F0dHJzKGluZm8tPmRldiwgaW5mby0+c2l6ZSwgaW5mby0+dmFkZHIsCisJCSAgICAgICBp bmZvLT5wYWRkciwgRE1BX0FUVFJfV1JJVEVfQ09NQklORSk7CisKKwlrZnJlZShpbmZvKTsKK30K Kworc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqc21hZl9jbWFfbWFwKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisJCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXJlY3Rpb24pCit7CisJc3RydWN0IHNtYWZfY21hX2J1ZmZlcl9pbmZvICppbmZvID0gYXR0YWNo bWVudC0+ZG1hYnVmLT5wcml2OworCXN0cnVjdCBzZ190YWJsZSAqc2d0OworCWludCByZXQ7CisK KwlzZ3QgPSBremFsbG9jKHNpemVvZigqc2d0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzZ3QpCisJ CXJldHVybiBOVUxMOworCisJcmV0ID0gZG1hX2dldF9zZ3RhYmxlKGluZm8tPmRldiwgc2d0LCBp bmZvLT52YWRkciwKKwkJCSAgICAgIGluZm8tPnBhZGRyLCBpbmZvLT5zaXplKTsKKwlpZiAocmV0 IDwgMCkKKwkJZ290byBvdXQ7CisKKwlzZ19kbWFfYWRkcmVzcyhzZ3QtPnNnbCkgPSBpbmZvLT5w YWRkcjsKKwlyZXR1cm4gc2d0OworCitvdXQ6CisJa2ZyZWUoc2d0KTsKKwlyZXR1cm4gTlVMTDsK K30KKworc3RhdGljIHZvaWQgc21hZl9jbWFfdW5tYXAoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNobWVudCwKKwkJCSAgIHN0cnVjdCBzZ190YWJsZSAqc2d0LAorCQkJICAgZW51bSBk bWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCS8qIGRvIG5vdGhpbmcgKi8KK30KKwor c3RhdGljIGludCBzbWFmX2NtYV9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBzbWFmX2NtYV9idWZmZXJfaW5mbyAqaW5m byA9IGRtYWJ1Zi0+cHJpdjsKKworCWlmIChpbmZvLT5zaXplIDwgdm1hLT52bV9lbmQgLSB2bWEt PnZtX3N0YXJ0KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fSU8g fCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVA7CisJcmV0dXJuIGRtYV9t bWFwX2F0dHJzKGluZm8tPmRldiwgdm1hLCBpbmZvLT52YWRkciwgaW5mby0+cGFkZHIsCisJCQkg ICAgICBpbmZvLT5zaXplLCBETUFfQVRUUl9XUklURV9DT01CSU5FKTsKK30KKworc3RhdGljIHZv aWQgKnNtYWZfY21hX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKK3sKKwlzdHJ1Y3Qgc21h Zl9jbWFfYnVmZmVyX2luZm8gKmluZm8gPSBkbWFidWYtPnByaXY7CisKKwlyZXR1cm4gaW5mby0+ dmFkZHI7Cit9CisKK3N0YXRpYyB2b2lkICpzbWFmX2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVm ICpkbWFidWYsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQoreworCXN0cnVjdCBzbWFmX2NtYV9idWZm ZXJfaW5mbyAqaW5mbyA9IGRtYWJ1Zi0+cHJpdjsKKworCXJldHVybiAodm9pZCAqKWluZm8tPnZh ZGRyICsgb2Zmc2V0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIHNtYWZf Y21hX29wcyA9IHsKKwkubWFwX2RtYV9idWYgPSBzbWFmX2NtYV9tYXAsCisJLnVubWFwX2RtYV9i dWYgPSBzbWFmX2NtYV91bm1hcCwKKwkubW1hcCA9IHNtYWZfY21hX21tYXAsCisJLnJlbGVhc2Ug PSBzbWFmX2NtYV9yZWxlYXNlLAorCS5rbWFwX2F0b21pYyA9IHNtYWZfa21hcF9hdG9taWMsCisJ LmttYXAgPSBzbWFmX2ttYXBfYXRvbWljLAorCS52bWFwID0gc21hZl9jbWFfdm1hcCwKK307CisK K3N0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAqc21hZl9jbWFfYWxsb2NhdGUoc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgc2l6ZV90IGxlbmd0aCkKK3sKKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2hfb2JqOworCXN0cnVjdCBzbWFmX2NtYV9idWZmZXJfaW5mbyAqaW5mbzsKKwlzdHJ1Y3Qg ZG1hX2J1ZiAqY21hX2RtYWJ1ZjsKKworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cG9y dCk7CisKKwlpbmZvID0ga3phbGxvYyhzaXplb2YoKmluZm8pLCBHRlBfS0VSTkVMKTsKKwlpZiAo IWluZm8pCisJCXJldHVybiBOVUxMOworCisJaW5mby0+ZGV2ID0gZmluZF9tYXRjaGluZ19kZXZp Y2UoZG1hYnVmKTsKKwlpbmZvLT5zaXplID0gbGVuZ3RoOworCWluZm8tPnZhZGRyID0gZG1hX2Fs bG9jX2F0dHJzKGluZm8tPmRldiwgaW5mby0+c2l6ZSwgJmluZm8tPnBhZGRyLAorCQkJCSAgICAg IEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4sCisJCQkJICAgICAgRE1BX0FUVFJfV1JJVEVfQ09N QklORSk7CisJaWYgKCFpbmZvLT52YWRkcikKKwkJZ290byBhbGxvY19lcnJvcjsKKworCWV4cG9y dC5vcHMgPSAmc21hZl9jbWFfb3BzOworCWV4cG9ydC5zaXplID0gaW5mby0+c2l6ZTsKKwlleHBv cnQucHJpdiA9IGluZm87CisKKwljbWFfZG1hYnVmID0gZG1hX2J1Zl9leHBvcnQoJmV4cG9ydCk7 CisJaWYgKElTX0VSUihjbWFfZG1hYnVmKSkKKwkJZ290byBleHBvcnRfZXJyb3I7CisKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGF0dGFjaF9vYmosICZkbWFidWYtPmF0dGFjaG1lbnRzLCBub2RlKSB7 CisJCWRtYV9idWZfYXR0YWNoKGNtYV9kbWFidWYsIGF0dGFjaF9vYmotPmRldik7CisJfQorCisJ cmV0dXJuIGNtYV9kbWFidWY7CisKK2V4cG9ydF9lcnJvcjoKKwlkbWFfZnJlZV9hdHRycyhpbmZv LT5kZXYsIGluZm8tPnNpemUsICZpbmZvLT5wYWRkciwKKwkJICAgICAgIEdGUF9LRVJORUwgfCBf X0dGUF9OT1dBUk4sIERNQV9BVFRSX1dSSVRFX0NPTUJJTkUpOworYWxsb2NfZXJyb3I6CisJa2Zy ZWUoaW5mbyk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc21hZl9hbGxvY2F0 b3Igc21hZl9jbWEgPSB7CisJLm1hdGNoID0gc21hZl9jbWFfbWF0Y2gsCisJLmFsbG9jYXRlID0g c21hZl9jbWFfYWxsb2NhdGUsCisJLm5hbWUgPSAic21hZi1jbWEiLAorCS5yYW5raW5nID0gMCwK K307CisKK3N0YXRpYyBpbnQgX19pbml0IHNtYWZfY21hX2luaXQodm9pZCkKK3sKKwlyZXR1cm4g c21hZl9yZWdpc3Rlcl9hbGxvY2F0b3IoJnNtYWZfY21hKTsKK30KK21vZHVsZV9pbml0KHNtYWZf Y21hX2luaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgc21hZl9jbWFfZGVpbml0KHZvaWQpCit7 CisJc21hZl91bnJlZ2lzdGVyX2FsbG9jYXRvcigmc21hZl9jbWEpOworfQorbW9kdWxlX2V4aXQo c21hZl9jbWFfZGVpbml0KTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJTTUFGIENNQSBtb2R1bGUi KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKK01PRFVMRV9BVVRIT1IoIkJlbmphbWluIEdh aWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8ub3JnPiIpOwotLSAKMS45LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=