From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 10/13] drm/amdkfd: allow split HQD split on per-queue granularity Date: Fri, 3 Feb 2017 23:51:39 -0500 Message-ID: <20170204045142.5596-11-andresx7@gmail.com> References: <20170204045142.5596-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170204045142.5596-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, jay-gJmSnxjMpeIFV7jr3Ov9Ew@public.gmane.org, Felix.Kuehling-5C7GfCeVMHo@public.gmane.org, Andres Rodriguez , John.Bridgman-5C7GfCeVMHo@public.gmane.org VXBkYXRlIHRoZSBLR0QgdG8gS0ZEIGludGVyZmFjZSB0byBhbGxvdyBzaGFyaW5nIHBpcGVzIHdp dGggcXVldWUKZ3JhbnVsYXJpdHkgaW5zdGVhZCBvZiBwaXBlIGdyYW51bGFyaXR5LgoKVGhpcyBh bGxvd3MgZm9yIG1vcmUgaW50ZXJlc3RpbmcgcGlwZS9xdWV1ZSBzcGxpdHMuCgpTaWduZWQtb2Zm LWJ5OiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jICAgICAgICAgfCAgMjIgKysrKy0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYyAgICAgICAgICAgIHwgICA0ICsK IC4uLi9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgIHwgMTAw ICsrKysrKysrKysrKysrLS0tLS0tLQogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXIuaCAgfCAgMTAgKy0tCiAuLi4vZHJtL2FtZC9hbWRrZmQva2ZkX2Rldmlj ZV9xdWV1ZV9tYW5hZ2VyX2Npay5jICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX3BhY2tldF9tYW5hZ2VyLmMgICAgfCAgIDMgKy0KIC4uLi9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2luY2x1ZGUva2dkX2tmZF9pbnRlcmZhY2UuaCAgICB8ICAxNyArKy0tCiBkcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9rZmQuYyAgICAgICAgICAgICAgICB8ICAyMSArKysrLQogOSBm aWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jCmluZGV4IDMyMDBmZjkuLjhmYzVh YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMKQEAgLTk1 LDE0ICs5NSwzMCBAQCB2b2lkIGFtZGdwdV9hbWRrZmRfZGV2aWNlX3Byb2JlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCiB2b2lkIGFtZGdwdV9hbWRrZmRfZGV2aWNlX2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CisJaW50IGk7CisJaW50IGxhc3RfdmFsaWRfYml0Owog CWlmIChhZGV2LT5rZmQpIHsKIAkJc3RydWN0IGtnZDJrZmRfc2hhcmVkX3Jlc291cmNlcyBncHVf cmVzb3VyY2VzID0gewogCQkJLmNvbXB1dGVfdm1pZF9iaXRtYXAgPSAweEZGMDAsCi0KLQkJCS5m aXJzdF9jb21wdXRlX3BpcGUgPSAxLAotCQkJLmNvbXB1dGVfcGlwZV9jb3VudCA9IDQgLSAxLAor CQkJLm51bV9tZWMgPSBhZGV2LT5nZngubWVjLm51bV9tZWMsCisJCQkubnVtX3BpcGVfcGVyX21l YyA9IGFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYywKKwkJCS5udW1fcXVldWVfcGVyX3Bp cGUgPSBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZQogCQl9OwogCisJCS8qIHRoaXMg aXMgZ29pbmcgdG8gaGF2ZSBhIGZldyBvZiB0aGUgTVNCcyBzZXQgdGhhdCB3ZSBuZWVkIHRvCisJ CSAqIGNsZWFyICovCisJCWJpdG1hcF9jb21wbGVtZW50KGdwdV9yZXNvdXJjZXMucXVldWVfYml0 bWFwLAorCQkJCSAgYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXAsCisJCQkJICBLR0RfTUFYX1FV RVVFUyk7CisKKwkJLyogQWNjb3JkaW5nIHRvIGxpbnV4L2JpdG1hcC5oIHdlIHNob3VsZG4ndCB1 c2UgYml0bWFwX2NsZWFyIGlmCisJCSAqIG5iaXRzIGlzIG5vdCBjb21waWxlIHRpbWUgY29uc3Rh bnQgKi8KKwkJbGFzdF92YWxpZF9iaXQgPSBhZGV2LT5nZngubWVjLm51bV9tZWMKKwkJCQkqIGFk ZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYworCQkJCSogYWRldi0+Z2Z4Lm1lYy5udW1fcXVl dWVfcGVyX3BpcGU7CisJCWZvciAoaSA9IGxhc3RfdmFsaWRfYml0OyBpIDwgS0dEX01BWF9RVUVV RVM7ICsraSkKKwkJCWNsZWFyX2JpdChpLCBncHVfcmVzb3VyY2VzLnF1ZXVlX2JpdG1hcCk7CisK IAkJYW1kZ3B1X2Rvb3JiZWxsX2dldF9rZmRfaW5mbyhhZGV2LAogCQkJCSZncHVfcmVzb3VyY2Vz LmRvb3JiZWxsX3BoeXNpY2FsX2FkZHJlc3MsCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9vcmJlbGxf YXBlcnR1cmVfc2l6ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYwppbmRl eCAzZjk1ZjdjLi44ODE4N2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rldmlj ZS5jCkBAIC0yMjYsNiArMjI2LDEwIEBAIGJvb2wga2dkMmtmZF9kZXZpY2VfaW5pdChzdHJ1Y3Qg a2ZkX2RldiAqa2ZkLAogCiAJa2ZkLT5zaGFyZWRfcmVzb3VyY2VzID0gKmdwdV9yZXNvdXJjZXM7 CiAKKwkvKiBXZSBvbmx5IHVzZSB0aGUgZmlyc3QgTUVDICovCisJaWYgKGtmZC0+c2hhcmVkX3Jl c291cmNlcy5udW1fbWVjID4gMSkKKwkJa2ZkLT5zaGFyZWRfcmVzb3VyY2VzLm51bV9tZWMgPSAx OworCiAJLyogY2FsY3VsYXRlIG1heCBzaXplIG9mIG1xZHMgbmVlZGVkIGZvciBxdWV1ZXMgKi8K IAlzaXplID0gbWF4X251bV9vZl9xdWV1ZXNfcGVyX2RldmljZSAqCiAJCQlrZmQtPmRldmljZV9p bmZvLT5tcWRfc2l6ZV9hbGlnbmVkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYwppbmRleCBjMDY0ZGVhLi41MzIxZDE4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21h bmFnZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVl X21hbmFnZXIuYwpAQCAtNjMsMjEgKzYzLDQ0IEBAIGVudW0gS0ZEX01RRF9UWVBFIGdldF9tcWRf dHlwZV9mcm9tX3F1ZXVlX3R5cGUoZW51bSBrZmRfcXVldWVfdHlwZSB0eXBlKQogCXJldHVybiBL RkRfTVFEX1RZUEVfQ1A7CiB9CiAKLXVuc2lnbmVkIGludCBnZXRfZmlyc3RfcGlwZShzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKK3N0YXRpYyBib29sIGlzX3BpcGVfZW5hYmxlZChz dHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgaW50IG1lYywgaW50IHBpcGUpCit7CisJ aW50IGk7CisJaW50IHBpcGVfb2Zmc2V0ID0gbWVjICogZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJj ZXMubnVtX3BpcGVfcGVyX21lYworCQkrIHBpcGUgKiBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNl cy5udW1fcXVldWVfcGVyX3BpcGU7CisKKwkvKiBxdWV1ZSBpcyBhdmFpbGFibGUgZm9yIEtGRCB1 c2FnZSBpZiBiaXQgaXMgMCAqLworCWZvciAoaSA9IDA7IGkgPCAgZHFtLT5kZXYtPnNoYXJlZF9y ZXNvdXJjZXMubnVtX3F1ZXVlX3Blcl9waXBlOyArK2kpCisJCWlmICh0ZXN0X2JpdChwaXBlX29m ZnNldCArIGksCisJCQkgICAgICBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNlcy5xdWV1ZV9iaXRt YXApKQorCQkJcmV0dXJuIHRydWU7CisJcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBpbnQg Z2V0X21lY19udW0oc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCit7CisJQlVHX09O KCFkcW0gfHwgIWRxbS0+ZGV2KTsKKworCXJldHVybiBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNl cy5udW1fbWVjOworfQorCit1bnNpZ25lZCBpbnQgZ2V0X3F1ZXVlc19udW0oc3RydWN0IGRldmlj ZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJQlVHX09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKLQly ZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMuZmlyc3RfY29tcHV0ZV9waXBlOworCXJl dHVybiBiaXRtYXBfd2VpZ2h0KGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLnF1ZXVlX2JpdG1h cCwKKwkJCQlLR0RfTUFYX1FVRVVFUyk7CiB9CiAKLXVuc2lnbmVkIGludCBnZXRfcGlwZXNfbnVt KHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQordW5zaWduZWQgaW50IGdldF9xdWV1 ZXNfcGVyX3BpcGUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJQlVHX09O KCFkcW0gfHwgIWRxbS0+ZGV2KTsKLQlyZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMu Y29tcHV0ZV9waXBlX2NvdW50OworCXJldHVybiBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNlcy5u dW1fcXVldWVfcGVyX3BpcGU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9w aXBlc19udW1fY3BzY2godm9pZCkKK3Vuc2lnbmVkIGludCBnZXRfcGlwZXNfcGVyX21lYyhzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsKLQlyZXR1cm4gUElQRV9QRVJfTUVfQ1Bf U0NIRURVTElORzsKKwlCVUdfT04oIWRxbSB8fCAhZHFtLT5kZXYpOworCXJldHVybiBkcW0tPmRl di0+c2hhcmVkX3Jlc291cmNlcy5udW1fcGlwZV9wZXJfbWVjOwogfQogCiB2b2lkIHByb2dyYW1f c2hfbWVtX3NldHRpbmdzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLApAQCAtMjAw LDEyICsyMjMsMTYgQEAgc3RhdGljIGludCBhbGxvY2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSkKIAogCXNldCA9IGZhbHNlOwogCi0JZm9y IChwaXBlID0gZHFtLT5uZXh0X3BpcGVfdG9fYWxsb2NhdGUsIGkgPSAwOyBpIDwgZ2V0X3BpcGVz X251bShkcW0pOwotCQkJcGlwZSA9ICgocGlwZSArIDEpICUgZ2V0X3BpcGVzX251bShkcW0pKSwg KytpKSB7CisJZm9yIChwaXBlID0gZHFtLT5uZXh0X3BpcGVfdG9fYWxsb2NhdGUsIGkgPSAwOyBp IDwgZ2V0X3BpcGVzX3Blcl9tZWMoZHFtKTsKKwkJCXBpcGUgPSAoKHBpcGUgKyAxKSAlIGdldF9w aXBlc19wZXJfbWVjKGRxbSkpLCArK2kpIHsKKworCQlpZiAoIWlzX3BpcGVfZW5hYmxlZChkcW0s IDAsIHBpcGUpKQorCQkJY29udGludWU7CisKIAkJaWYgKGRxbS0+YWxsb2NhdGVkX3F1ZXVlc1tw aXBlXSAhPSAwKSB7CiAJCQliaXQgPSBmaW5kX2ZpcnN0X2JpdCgKIAkJCQkodW5zaWduZWQgbG9u ZyAqKSZkcW0tPmFsbG9jYXRlZF9xdWV1ZXNbcGlwZV0sCi0JCQkJUVVFVUVTX1BFUl9QSVBFKTsK KwkJCQlnZXRfcXVldWVzX3Blcl9waXBlKGRxbSkpOwogCiAJCQljbGVhcl9iaXQoYml0LAogCQkJ CSh1bnNpZ25lZCBsb25nICopJmRxbS0+YWxsb2NhdGVkX3F1ZXVlc1twaXBlXSk7CkBAIC0yMjIs NyArMjQ5LDcgQEAgc3RhdGljIGludCBhbGxvY2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSkKIAlwcl9kZWJ1Zygia2ZkOiBEUU0gJXMgaHFk IHNsb3QgLSBwaXBlICglZCkgcXVldWUoJWQpXG4iLAogCQkJCV9fZnVuY19fLCBxLT5waXBlLCBx LT5xdWV1ZSk7CiAJLyogaG9yaXpvbnRhbCBocWQgYWxsb2NhdGlvbiAqLwotCWRxbS0+bmV4dF9w aXBlX3RvX2FsbG9jYXRlID0gKHBpcGUgKyAxKSAlIGdldF9waXBlc19udW0oZHFtKTsKKwlkcW0t Pm5leHRfcGlwZV90b19hbGxvY2F0ZSA9IChwaXBlICsgMSkgJSBnZXRfcGlwZXNfcGVyX21lYyhk cW0pOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00NjksMzYgKzQ5NiwyNSBAQCBzZXRfcGFzaWRfdm1p ZF9tYXBwaW5nKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCB1bnNpZ25lZCBpbnQg cGFzaWQsCiAJCQkJCQl2bWlkKTsKIH0KIAotaW50IGluaXRfcGlwZWxpbmVzKHN0cnVjdCBkZXZp Y2VfcXVldWVfbWFuYWdlciAqZHFtLAotCQkJdW5zaWduZWQgaW50IHBpcGVzX251bSwgdW5zaWdu ZWQgaW50IGZpcnN0X3BpcGUpCi17Ci0JQlVHX09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKLQotCXBy X2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXNcbiIsIF9fZnVuY19fKTsKLQotCXJldHVybiAwOwotfQot CiBzdGF0aWMgdm9pZCBpbml0X2ludGVycnVwdHMoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0pCiB7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlCVUdfT04oZHFtID09IE5VTEwpOwogCi0J Zm9yIChpID0gMCA7IGkgPCBnZXRfcGlwZXNfbnVtKGRxbSkgOyBpKyspCi0JCWRxbS0+ZGV2LT5r ZmQya2dkLT5pbml0X2ludGVycnVwdHMoZHFtLT5kZXYtPmtnZCwKLQkJCQlpICsgZ2V0X2ZpcnN0 X3BpcGUoZHFtKSk7CisJZm9yIChpID0gMCA7IGkgPCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pIDsg aSsrKQorCQlpZiAoaXNfcGlwZV9lbmFibGVkKGRxbSwgMCwgaSkpCisJCQlkcW0tPmRldi0+a2Zk MmtnZC0+aW5pdF9pbnRlcnJ1cHRzKGRxbS0+ZGV2LT5rZ2QsIGkpOwogfQogCiBzdGF0aWMgaW50 IGluaXRfc2NoZWR1bGVyKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewotCWlu dCByZXR2YWw7CisJaW50IHJldHZhbCA9IDA7CiAKIAlCVUdfT04oIWRxbSk7CiAKIAlwcl9kZWJ1 Zygia2ZkOiBJbiAlc1xuIiwgX19mdW5jX18pOwogCi0JcmV0dmFsID0gaW5pdF9waXBlbGluZXMo ZHFtLCBnZXRfcGlwZXNfbnVtKGRxbSksIGdldF9maXJzdF9waXBlKGRxbSkpOwogCXJldHVybiBy ZXR2YWw7CiB9CiAKQEAgLTUwOSwyMSArNTI1LDIxIEBAIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9u b2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogCUJVR19PTighZHFtKTsK IAogCXByX2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXMgbnVtIG9mIHBpcGVzOiAlZFxuIiwKLQkJCV9f ZnVuY19fLCBnZXRfcGlwZXNfbnVtKGRxbSkpOworCQkJX19mdW5jX18sIGdldF9waXBlc19wZXJf bWVjKGRxbSkpOwogCiAJbXV0ZXhfaW5pdCgmZHFtLT5sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgm ZHFtLT5xdWV1ZXMpOwogCWRxbS0+cXVldWVfY291bnQgPSBkcW0tPm5leHRfcGlwZV90b19hbGxv Y2F0ZSA9IDA7CiAJZHFtLT5zZG1hX3F1ZXVlX2NvdW50ID0gMDsKLQlkcW0tPmFsbG9jYXRlZF9x dWV1ZXMgPSBrY2FsbG9jKGdldF9waXBlc19udW0oZHFtKSwKKwlkcW0tPmFsbG9jYXRlZF9xdWV1 ZXMgPSBrY2FsbG9jKGdldF9waXBlc19wZXJfbWVjKGRxbSksCiAJCQkJCXNpemVvZih1bnNpZ25l ZCBpbnQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRxbS0+YWxsb2NhdGVkX3F1ZXVlcykgewogCQlt dXRleF9kZXN0cm95KCZkcW0tPmxvY2spOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQlmb3Ig KGkgPSAwOyBpIDwgZ2V0X3BpcGVzX251bShkcW0pOyBpKyspCi0JCWRxbS0+YWxsb2NhdGVkX3F1 ZXVlc1tpXSA9ICgxIDw8IFFVRVVFU19QRVJfUElQRSkgLSAxOworCWZvciAoaSA9IDA7IGkgPCBn ZXRfcGlwZXNfcGVyX21lYyhkcW0pOyBpKyspCisJCWRxbS0+YWxsb2NhdGVkX3F1ZXVlc1tpXSA9 ICgxIDw8IGdldF9xdWV1ZXNfcGVyX3BpcGUoZHFtKSkgLSAxOwogCiAJZHFtLT52bWlkX2JpdG1h cCA9ICgxIDw8IFZNSURfUEVSX0RFVklDRSkgLSAxOwogCWRxbS0+c2RtYV9iaXRtYXAgPSAoMSA8 PCBDSUtfU0RNQV9RVUVVRVMpIC0gMTsKQEAgLTYzMCwxOCArNjQ2LDM0IEBAIHN0YXRpYyBpbnQg Y3JlYXRlX3NkbWFfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRx bSwKIAogc3RhdGljIGludCBzZXRfc2NoZWRfcmVzb3VyY2VzKHN0cnVjdCBkZXZpY2VfcXVldWVf bWFuYWdlciAqZHFtKQogeworCWludCBpOwogCXN0cnVjdCBzY2hlZHVsaW5nX3Jlc291cmNlcyBy ZXM7Ci0JdW5zaWduZWQgaW50IHF1ZXVlX251bSwgcXVldWVfbWFzazsKIAogCUJVR19PTighZHFt KTsKIAogCXByX2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXNcbiIsIF9fZnVuY19fKTsKIAotCXF1ZXVl X251bSA9IGdldF9waXBlc19udW1fY3BzY2goKSAqIFFVRVVFU19QRVJfUElQRTsKLQlxdWV1ZV9t YXNrID0gKDEgPDwgcXVldWVfbnVtKSAtIDE7CiAJcmVzLnZtaWRfbWFzayA9ICgxIDw8IFZNSURf UEVSX0RFVklDRSkgLSAxOwogCXJlcy52bWlkX21hc2sgPDw9IEtGRF9WTUlEX1NUQVJUX09GRlNF VDsKLQlyZXMucXVldWVfbWFzayA9IHF1ZXVlX21hc2sgPDwgKGdldF9maXJzdF9waXBlKGRxbSkg KiBRVUVVRVNfUEVSX1BJUEUpOworCisJLyogQXZvaWQgdG91Y2hpbmcgdGhlIGludGVybmFsIHJl cHJlc2VudGF0aW9uIHF1ZXVlX2JpdG1hcCBkaXJlY3RseS4KKwkgKiBFdmVuIHRob3VnaCBkb2lu ZyBhIHNpbXBsZSBtZW1jcHkgbWlnaHQgc291bmQgdGVtcHRpbmcsIGl0IHdvdWxkCisJICogc2ls ZW50bHkgYnJlYWsgaWYgdGhlIGltcGxlbWVudGF0aW9uIG9mIGJpdG1hcHMgaXMgY2hhbmdlZCAq LworCXJlcy5xdWV1ZV9tYXNrID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgS0dEX01BWF9RVUVVRVM7 ICsraSkgeworCQlpZiAoIXRlc3RfYml0KGksIGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLnF1 ZXVlX2JpdG1hcCkpCisJCQljb250aW51ZTsKKworCQkvKiBUaGlzIHNpdHVhdGlvbiBtYXkgYmUg aGl0IGluIHRoZSBmdXR1cmUgaWYgYSBuZXcgSFcKKwkJICogZ2VuZXJhdGlvbiBleHBvc2VzIG1v cmUgdGhhbiA2NCBxdWV1ZXMuIElmIHNvLCB0aGUKKwkJICogZGVmaW5pdGlvbiBvZiByZXMucXVl dWVfbWFzayBuZWVkcyB1cGRhdGluZyAqLworCQlpZiAoV0FSTl9PTihpID4gc2l6ZW9mKHJlcy5x dWV1ZV9tYXNrKSkpIHsKKwkJCXByX2VycigiSW52YWxpZCBxdWV1ZSBlbmFibGVkIGJ5IGFtZGdw dTogJWRcbiIsIGkpOworCQkJYnJlYWs7CisJCX0KKworCQlyZXMucXVldWVfbWFzayB8PSAxIDw8 IGk7CisJfQogCXJlcy5nd3NfbWFzayA9IHJlcy5vYWNfbWFzayA9IHJlcy5nZHNfaGVhcF9iYXNl ID0KIAkJCQkJCXJlcy5nZHNfaGVhcF9zaXplID0gMDsKIApAQCAtNjYwLDcgKzY5Miw3IEBAIHN0 YXRpYyBpbnQgaW5pdGlhbGl6ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRx bSkKIAlCVUdfT04oIWRxbSk7CiAKIAlwcl9kZWJ1Zygia2ZkOiBJbiBmdW5jICVzIG51bSBvZiBw aXBlczogJWRcbiIsCi0JCQlfX2Z1bmNfXywgZ2V0X3BpcGVzX251bV9jcHNjaCgpKTsKKwkJCV9f ZnVuY19fLCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pKTsKIAogCW11dGV4X2luaXQoJmRxbS0+bG9j ayk7CiAJSU5JVF9MSVNUX0hFQUQoJmRxbS0+cXVldWVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmgKaW5kZXggYTYyNWI5 MS4uNjZiOTYxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZV9xdWV1ZV9tYW5hZ2VyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X2RldmljZV9xdWV1ZV9tYW5hZ2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKICNpbmNsdWRlICJrZmRf bXFkX21hbmFnZXIuaCIKIAogI2RlZmluZSBRVUVVRV9QUkVFTVBUX0RFRkFVTFRfVElNRU9VVF9N UwkoNTAwKQotI2RlZmluZSBRVUVVRVNfUEVSX1BJUEUJCQkJKDgpCi0jZGVmaW5lIFBJUEVfUEVS X01FX0NQX1NDSEVEVUxJTkcJCSgzKQogI2RlZmluZSBDSUtfVk1JRF9OVU0JCQkJKDgpCiAjZGVm aW5lIEtGRF9WTUlEX1NUQVJUX09GRlNFVAkJCSg4KQogI2RlZmluZSBWTUlEX1BFUl9ERVZJQ0UJ CQkJQ0lLX1ZNSURfTlVNCkBAIC0xODIsMTAgKzE4MCwxMCBAQCB2b2lkIGRldmljZV9xdWV1ZV9t YW5hZ2VyX2luaXRfY2lrKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlcl9hc2ljX29wcyAqb3Bz KTsKIHZvaWQgZGV2aWNlX3F1ZXVlX21hbmFnZXJfaW5pdF92aShzdHJ1Y3QgZGV2aWNlX3F1ZXVl X21hbmFnZXJfYXNpY19vcHMgKm9wcyk7CiB2b2lkIHByb2dyYW1fc2hfbWVtX3NldHRpbmdzKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQkJCQlzdHJ1Y3QgcWNtX3Byb2Nlc3Nf ZGV2aWNlICpxcGQpOwotaW50IGluaXRfcGlwZWxpbmVzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFu YWdlciAqZHFtLAotCQl1bnNpZ25lZCBpbnQgcGlwZXNfbnVtLCB1bnNpZ25lZCBpbnQgZmlyc3Rf cGlwZSk7Ci11bnNpZ25lZCBpbnQgZ2V0X2ZpcnN0X3BpcGUoc3RydWN0IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0pOwotdW5zaWduZWQgaW50IGdldF9waXBlc19udW0oc3RydWN0IGRldmljZV9x dWV1ZV9tYW5hZ2VyICpkcW0pOwordW5zaWduZWQgaW50IGdldF9tZWNfbnVtKHN0cnVjdCBkZXZp Y2VfcXVldWVfbWFuYWdlciAqZHFtKTsKK3Vuc2lnbmVkIGludCBnZXRfcXVldWVzX251bShzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7Cit1bnNpZ25lZCBpbnQgZ2V0X3F1ZXVlc19w ZXJfcGlwZShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7Cit1bnNpZ25lZCBpbnQg Z2V0X3BpcGVzX3Blcl9tZWMoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pOwogCiBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfc2hfbWVtX2Jhc2VzXzMyKHN0cnVjdCBrZmRf cHJvY2Vzc19kZXZpY2UgKnBkZCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsuYwppbmRleCBjNmY0MzVhLi40 OGRjMDU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXJfY2lrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X2RldmljZV9xdWV1ZV9tYW5hZ2VyX2Npay5jCkBAIC0xNTEsNSArMTUxLDUgQEAgc3RhdGljIHZv aWQgaW5pdF9zZG1hX3ZtKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCBzdHJ1Y3Qg cXVldWUgKnEsCiAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9jcHNjaF9jaWsoc3RydWN0IGRldmlj ZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7Ci0JcmV0dXJuIGluaXRfcGlwZWxpbmVzKGRxbSwgZ2V0 X3BpcGVzX251bShkcW0pLCBnZXRfZmlyc3RfcGlwZShkcW0pKTsKKwlyZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3BhY2tldF9tYW5hZ2VyLmMKaW5kZXgg Y2E4YzA5My4uNzEzMTk5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX3BhY2tldF9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X3BhY2tldF9tYW5hZ2VyLmMKQEAgLTY1LDggKzY1LDcgQEAgc3RhdGljIHZvaWQgcG1fY2FsY19y bGliX3NpemUoc3RydWN0IHBhY2tldF9tYW5hZ2VyICpwbSwKIAogCS8qIGNoZWNrIGlmIHRoZXJl IGlzIG92ZXIgc3Vic2NyaXB0aW9uKi8KIAkqb3Zlcl9zdWJzY3JpcHRpb24gPSBmYWxzZTsKLQlp ZiAoKHByb2Nlc3NfY291bnQgPiAxKSB8fAotCQlxdWV1ZV9jb3VudCA+IFBJUEVfUEVSX01FX0NQ X1NDSEVEVUxJTkcgKiBRVUVVRVNfUEVSX1BJUEUpIHsKKwlpZiAoKHByb2Nlc3NfY291bnQgPiAx KSB8fCBxdWV1ZV9jb3VudCA+IGdldF9xdWV1ZXNfbnVtKHBtLT5kcW0pKSB7CiAJCSpvdmVyX3N1 YnNjcmlwdGlvbiA9IHRydWU7CiAJCXByX2RlYnVnKCJrZmQ6IG92ZXIgc3Vic2NyaWJlZCBydW5s aXN0XG4iKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf cHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf cHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMKaW5kZXggZTFmYjQwYi4uMzJjZGYyYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFn ZXIuYwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBwcW1fY3JlYXRlX3F1ZXVlKHN0cnVjdCBwcm9j ZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwKIAkJLyogY2hlY2sgaWYgdGhlcmUgaXMgb3ZlciBzdWJz Y3JpcHRpb24gKi8KIAkJaWYgKChzY2hlZF9wb2xpY3kgPT0gS0ZEX1NDSEVEX1BPTElDWV9IV1Nf Tk9fT1ZFUlNVQlNDUklQVElPTikgJiYKIAkJKChkZXYtPmRxbS0+cHJvY2Vzc2VzX2NvdW50ID49 IFZNSURfUEVSX0RFVklDRSkgfHwKLQkJKGRldi0+ZHFtLT5xdWV1ZV9jb3VudCA+PSBQSVBFX1BF Ul9NRV9DUF9TQ0hFRFVMSU5HICogUVVFVUVTX1BFUl9QSVBFKSkpIHsKKwkJKGRldi0+ZHFtLT5x dWV1ZV9jb3VudCA+PSBnZXRfcXVldWVzX251bShkZXYtPmRxbSkpKSkgewogCQkJcHJfZXJyKCJr ZmQ6IG92ZXItc3Vic2NyaXB0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHJhZGVvbl9rZmQuc2NoZWRf cG9saWN5ID09IDFcbiIpOwogCQkJcmV0dmFsID0gLUVQRVJNOwogCQkJZ290byBlcnJfY3JlYXRl X3F1ZXVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRf aW50ZXJmYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX2tmZF9pbnRlcmZh Y2UuaAppbmRleCA2N2Y2ZDE5Li45MWVmMTQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2luY2x1ZGUva2dkX2tmZF9pbnRlcmZhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2luY2x1ZGUva2dkX2tmZF9pbnRlcmZhY2UuaApAQCAtMjksMTAgKzI5LDExIEBACiAjZGVmaW5l IEtHRF9LRkRfSU5URVJGQUNFX0hfSU5DTFVERUQKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisjaW5jbHVkZSA8bGludXgvYml0bWFwLmg+CiAKIHN0cnVjdCBwY2lfZGV2OwogCi0jZGVmaW5l IEtGRF9JTlRFUkZBQ0VfVkVSU0lPTiAxCisjZGVmaW5lIEtGRF9JTlRFUkZBQ0VfVkVSU0lPTiAy CiAjZGVmaW5lIEtHRF9NQVhfUVVFVUVTIDEyOAogCiBzdHJ1Y3Qga2ZkX2RldjsKQEAgLTYyLDEx ICs2MywxNyBAQCBzdHJ1Y3Qga2dkMmtmZF9zaGFyZWRfcmVzb3VyY2VzIHsKIAkvKiBCaXQgbiA9 PSAxIG1lYW5zIFZNSUQgbiBpcyBhdmFpbGFibGUgZm9yIEtGRC4gKi8KIAl1bnNpZ25lZCBpbnQg Y29tcHV0ZV92bWlkX2JpdG1hcDsKIAotCS8qIENvbXB1dGUgcGlwZXMgYXJlIGNvdW50ZWQgc3Rh cnRpbmcgZnJvbSBNRUMwL3BpcGUwIGFzIDAuICovCi0JdW5zaWduZWQgaW50IGZpcnN0X2NvbXB1 dGVfcGlwZTsKKwkvKiBudW1iZXIgb2YgbWVjIGF2YWlsYWJsZSBmcm9tIHRoZSBoYXJkd2FyZSAq LworCXVpbnQzMl90IG51bV9tZWM7CiAKLQkvKiBOdW1iZXIgb2YgTUVDIHBpcGVzIGF2YWlsYWJs ZSBmb3IgS0ZELiAqLwotCXVuc2lnbmVkIGludCBjb21wdXRlX3BpcGVfY291bnQ7CisJLyogbnVt YmVyIG9mIHBpcGVzIHBlciBtZWMgKi8KKwl1aW50MzJfdCBudW1fcGlwZV9wZXJfbWVjOworCisJ LyogbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcGlwZSAqLworCXVpbnQzMl90IG51bV9xdWV1ZV9wZXJf cGlwZTsKKworCS8qIEJpdCBuID09IDEgbWVhbnMgUXVldWUgbiBpcyBhdmFpbGFibGUgZm9yIEtG RCAqLworCURFQ0xBUkVfQklUTUFQKHF1ZXVlX2JpdG1hcCwgS0dEX01BWF9RVUVVRVMpOwogCiAJ LyogQmFzZSBhZGRyZXNzIG9mIGRvb3JiZWxsIGFwZXJ0dXJlLiAqLwogCXBoeXNfYWRkcl90IGRv b3JiZWxsX3BoeXNpY2FsX2FkZHJlc3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9rZmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tmZC5jCmlu ZGV4IGEwNmUzYjEuLjY5OWZlN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2tmZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tmZC5jCkBA IC0xNzksMTQgKzE3OSwyOSBAQCB2b2lkIHJhZGVvbl9rZmRfZGV2aWNlX3Byb2JlKHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2KQogCiB2b2lkIHJhZGVvbl9rZmRfZGV2aWNlX2luaXQoc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiB7CisJaW50IGksIHF1ZXVlLCBwaXBlLCBtZWM7CisKIAlp ZiAocmRldi0+a2ZkKSB7CiAJCXN0cnVjdCBrZ2Qya2ZkX3NoYXJlZF9yZXNvdXJjZXMgZ3B1X3Jl c291cmNlcyA9IHsKIAkJCS5jb21wdXRlX3ZtaWRfYml0bWFwID0gMHhGRjAwLAotCi0JCQkuZmly c3RfY29tcHV0ZV9waXBlID0gMSwKLQkJCS5jb21wdXRlX3BpcGVfY291bnQgPSA0IC0gMSwKKwkJ CS5udW1fbWVjID0gMSwKKwkJCS5udW1fcGlwZV9wZXJfbWVjID0gNCwKKwkJCS5udW1fcXVldWVf cGVyX3BpcGUgPSA4CiAJCX07CiAKKwkJYml0bWFwX3plcm8oZ3B1X3Jlc291cmNlcy5xdWV1ZV9i aXRtYXAsIEtHRF9NQVhfUVVFVUVTKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgS0dEX01BWF9RVUVV RVM7ICsraSkgeworCQkJcXVldWUgPSBpICUgZ3B1X3Jlc291cmNlcy5udW1fcXVldWVfcGVyX3Bp cGU7CisJCQlwaXBlID0gKGkgLyBncHVfcmVzb3VyY2VzLm51bV9xdWV1ZV9wZXJfcGlwZSkKKwkJ CQklIGdwdV9yZXNvdXJjZXMubnVtX3BpcGVfcGVyX21lYzsKKwkJCW1lYyA9IChpIC8gZ3B1X3Jl c291cmNlcy5udW1fcXVldWVfcGVyX3BpcGUpCisJCQkJLyBncHVfcmVzb3VyY2VzLm51bV9waXBl X3Blcl9tZWM7CisKKwkJCWlmIChtZWMgPT0gMCAmJiBwaXBlID4gMCkKKwkJCQlzZXRfYml0KGks IGdwdV9yZXNvdXJjZXMucXVldWVfYml0bWFwKTsKKwkJfQorCiAJCXJhZGVvbl9kb29yYmVsbF9n ZXRfa2ZkX2luZm8ocmRldiwKIAkJCQkmZ3B1X3Jlc291cmNlcy5kb29yYmVsbF9waHlzaWNhbF9h ZGRyZXNzLAogCQkJCSZncHVfcmVzb3VyY2VzLmRvb3JiZWxsX2FwZXJ0dXJlX3NpemUsCi0tIAoy LjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1k LWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==