From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 3/3] drm/msm: hijack firmware fb's memory Date: Tue, 11 Jul 2017 09:38:22 -0400 Message-ID: <20170711133822.31978-4-robdclark@gmail.com> References: <20170711133822.31978-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170711133822.31978-1-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org, Bartlomiej Zolnierkiewicz List-Id: linux-arm-msm@vger.kernel.org SWYgd2UgYXJlIGtpY2tpbmcgb3V0IGVmaWZiIG9yIHNpbXBsZWZiIHRoZW4gd2Ugd2FudCB0byBo aWphY2sgdGhlCm91dGdvaW5nIGZiJ3MgbWVtb3J5IGFuZCB3cmFwIGl0IGluIGEgZ2VtIG9iamVj dCBzbyB0aGF0IGl0IGNhbgpiZSBhbGxvY2F0ZWQgZm9yIHVzZSBieSBmYmRldiBoZWxwZXJzLiAg VGhpcyB3YXkgd2Uga2VlcCB0aGUgc2FtZQpzY2Fub3V0IGJ1ZmZlciB0aGF0IHRoZSBkaXNwbGF5 IGlzIGFscmVhZHkgdXNpbmcuCgpUaGlzIGlzIHByZXAtd29yayBmb3IgZW5hYmxpbmcgZHJtL21z bSB0byB0YWtlIG92ZXIgYSBkaXNwbGF5IHRoYXQKaXMgZW5hYmxlZCBhbHJlYWR5IGJ5IHRoZSBi b290bG9hZGVyLgoKU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIHwgODIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlv bnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggZjQ4NzQzN2Zi OWQwLi43YzFmZjI2YTNjMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC0zMDQsNiArMzA0LDQ1 IEBAIHN0YXRpYyB2b2lkIGtpY2tfb3V0X2Zpcm13YXJlX2ZiKHZvaWQpCiAJa2ZyZWUoYXApOwog fQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBoaWphY2tfZmlybXdhcmVfZmIoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwl1bnNpZ25lZCBsb25nIHNpemU7CisJaW50IGk7CisKKwkvKiBpZiB3ZSBoYXZl IHNpbXBsZWZiL2VmaWZiLCBmaW5kIGl0J3MgYXBlcnR1cmUgYW5kIGhpamFjaworCSAqIHRoYXQg YmVmb3JlIHdlIGtpY2sgb3V0IHRoZSBmaXJtd2FyZSBmYidzLgorCSAqCisJICogVE9ETyB3ZSBw cm9iYWJseSBzaG91bGQgaG9sZCByZWdpc3RyYXRpb25fbG9jaworCSAqLworCWZvciAoaSA9IDA7 IGkgPCBGQl9NQVg7IGkrKykgeworCQlzdHJ1Y3QgZmJfaW5mbyAqZmIgPSBnZXRfZmJfaW5mbyhp KTsKKworCQlpZiAoSVNfRVJSX09SX05VTEwoZmIpKQorCQkJY29udGludWU7CisKKwkJaWYgKCFm Yi0+YXBlcnR1cmVzLT5jb3VudCkKKwkJCWNvbnRpbnVlOworCisJCS8qIGlmIHdlIGZpbmQgZWZp ZmIgb3Igc2ltcGxlZmIsIHdlIGFyZSBhYm91dCB0bworCQkgKiBraWNrIHRoZW0gb3V0LCBzbyBo aWphY2sgdGhlaXIgbWVtb3J5OgorCQkgKi8KKwkJaWYgKChzdHJjbXAoZmItPmZpeC5pZCwgIkVG SSBWR0EiKSA9PSAwKSB8fAorCQkJCShzdHJjbXAoZmItPmZpeC5pZCwgInNpbXBsZSIpID09IDAp KSB7CisKKwkJCXByaXYtPnZyYW0ucGFkZHIgPSBmYi0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uYmFz ZTsKKwkJCXNpemUgPSBmYi0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uc2l6ZTsKKwkJfQorCisJCXB1 dF9mYl9pbmZvKGZiKTsKKworCQlpZiAoc2l6ZSkKKwkJCXJldHVybiBzaXplOworCX0KKworCXJl dHVybiAwOworfQorCiBzdGF0aWMgaW50IG1zbV9pbml0X3ZyYW0oc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIHsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKQEAgLTMzNSwzOSArMzc0LDQ2IEBAIHN0YXRpYyBpbnQgbXNtX2luaXRfdnJhbShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCQlvZl9ub2RlX3B1dChub2RlKTsKIAkJaWYgKHJldCkKIAkJCXJl dHVybiByZXQ7Ci0JCXNpemUgPSByLmVuZCAtIHIuc3RhcnQ7CisJCXNpemUgPSByLmVuZCAtIHIu c3RhcnQgLSAxOwogCQlEUk1fSU5GTygidXNpbmcgVlJBTSBjYXJ2ZW91dDogJWx4QCVwYVxuIiwg c2l6ZSwgJnIuc3RhcnQpOwogCisJfSBlbHNlIGlmICgoc2l6ZSA9IGhpamFja19maXJtd2FyZV9m YihkZXYpKSkgeworCQlEUk1fSU5GTygiaGlqYWNraW5nIFZSQU0gY2FydmVvdXQ6ICVseEAlcGFc biIsCisJCQkJc2l6ZSwgJnByaXYtPnZyYW0ucGFkZHIpOworCX0gZWxzZSBpZiAoIWlvbW11X3By ZXNlbnQoJnBsYXRmb3JtX2J1c190eXBlKSkgewogCQkvKiBpZiB3ZSBoYXZlIG5vIElPTU1VLCB0 aGVuIHdlIG5lZWQgdG8gdXNlIGNhcnZlb3V0IGFsbG9jYXRvci4KIAkJICogR3JhYiB0aGUgZW50 aXJlIENNQSBjaHVuayBjYXJ2ZWQgb3V0IGluIGVhcmx5IHN0YXJ0dXAgaW4KIAkJICogbWFjaC1t c206CiAJCSAqLwotCX0gZWxzZSBpZiAoIWlvbW11X3ByZXNlbnQoJnBsYXRmb3JtX2J1c190eXBl KSkgewogCQlEUk1fSU5GTygidXNpbmcgJXMgVlJBTSBjYXJ2ZW91dFxuIiwgdnJhbSk7CiAJCXNp emUgPSBtZW1wYXJzZSh2cmFtLCBOVUxMKTsKIAl9CiAKIAlpZiAoc2l6ZSkgewotCQl1bnNpZ25l ZCBsb25nIGF0dHJzID0gMDsKLQkJdm9pZCAqcDsKLQogCQlwcml2LT52cmFtLnNpemUgPSBzaXpl OwogCi0JCWRybV9tbV9pbml0KCZwcml2LT52cmFtLm1tLCAwLCAoc2l6ZSA+PiBQQUdFX1NISUZU KSAtIDEpOworCQlkcm1fbW1faW5pdCgmcHJpdi0+dnJhbS5tbSwgMCwgKHNpemUgPj4gUEFHRV9T SElGVCkpOwogCQlzcGluX2xvY2tfaW5pdCgmcHJpdi0+dnJhbS5sb2NrKTsKIAotCQlhdHRycyB8 PSBETUFfQVRUUl9OT19LRVJORUxfTUFQUElORzsKLQkJYXR0cnMgfD0gRE1BX0FUVFJfV1JJVEVf Q09NQklORTsKLQotCQkvKiBub3RlIHRoYXQgZm9yIG5vLWtlcm5lbC1tYXBwaW5nLCB0aGUgdmFk ZHIgcmV0dXJuZWQKLQkJICogaXMgYm9ndXMsIGJ1dCBub24tbnVsbCBpZiBhbGxvY2F0aW9uIHN1 Y2NlZWRlZDoKLQkJICovCi0JCXAgPSBkbWFfYWxsb2NfYXR0cnMoZGV2LT5kZXYsIHNpemUsCi0J CQkJJnByaXYtPnZyYW0ucGFkZHIsIEdGUF9LRVJORUwsIGF0dHJzKTsKLQkJaWYgKCFwKSB7Ci0J CQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIFZSQU1cbiIpOwotCQkJcHJp di0+dnJhbS5wYWRkciA9IDA7Ci0JCQlyZXR1cm4gLUVOT01FTTsKKwkJaWYgKCFwcml2LT52cmFt LnBhZGRyKSB7CisJCQl1bnNpZ25lZCBsb25nIGF0dHJzID0gMDsKKwkJCXZvaWQgKnA7CisKKwkJ CWF0dHJzIHw9IERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HOworCQkJYXR0cnMgfD0gRE1BX0FU VFJfV1JJVEVfQ09NQklORTsKKworCQkJLyogbm90ZSB0aGF0IGZvciBuby1rZXJuZWwtbWFwcGlu ZywgdGhlIHZhZGRyIHJldHVybmVkCisJCQkgKiBpcyBib2d1cywgYnV0IG5vbi1udWxsIGlmIGFs bG9jYXRpb24gc3VjY2VlZGVkOgorCQkJICovCisJCQlwID0gZG1hX2FsbG9jX2F0dHJzKGRldi0+ ZGV2LCBzaXplLAorCQkJCQkmcHJpdi0+dnJhbS5wYWRkciwgR0ZQX0tFUk5FTCwgYXR0cnMpOwor CQkJaWYgKCFwKSB7CisJCQkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBW UkFNXG4iKTsKKwkJCQlwcml2LT52cmFtLnBhZGRyID0gMDsKKwkJCQlyZXR1cm4gLUVOT01FTTsK KwkJCX0KKwkJfSBlbHNlIHsKKwkJCXJlcXVlc3RfcmVnaW9uKHByaXYtPnZyYW0ucGFkZHIsIHNp emUsICJzdG9sZW4iKTsKIAkJfQogCiAJCWRldl9pbmZvKGRldi0+ZGV2LCAiVlJBTTogJTA4eC0+ JTA4eFxuIiwKLS0gCjIuMTMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==