From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 7/8] drm/amdgpu: activate paging queue on SDMA v4 Date: Mon, 8 Oct 2018 15:35:20 +0200 Message-ID: <20181008133521.3237-7-christian.koenig@amd.com> References: <20181008133521.3237-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181008133521.3237-1-christian.koenig-5C7GfCeVMHo@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 SW1wbGVtZW50IGFsbCB0aGUgbmVjZXNzYXJ5IHN0dWZmIHRvIGdldCB0aG9zZSBleHRyYSByaW5n cyB3b3JraW5nLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtv ZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5j IHwgMzI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQs IDI3NCBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjRfMC5jCmluZGV4IDU1Mzg0YmFkN2E3MC4uYTM2MjkwNGQ3M2Y3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwpAQCAtNDI3LDYgKzQyNyw1NyBAQCBzdGF0 aWMgdm9pZCBzZG1hX3Y0XzBfcmluZ19zZXRfd3B0cihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcp CiAJfQogfQogCisvKioKKyAqIHNkbWFfdjRfMF9wYWdlX3JpbmdfZ2V0X3dwdHIgLSBnZXQgdGhl IGN1cnJlbnQgd3JpdGUgcG9pbnRlcgorICoKKyAqIEByaW5nOiBhbWRncHUgcmluZyBwb2ludGVy CisgKgorICogR2V0IHRoZSBjdXJyZW50IHdwdHIgZnJvbSB0aGUgaGFyZHdhcmUgKFZFR0ExMCsp LgorICovCitzdGF0aWMgdWludDY0X3Qgc2RtYV92NF8wX3BhZ2VfcmluZ19nZXRfd3B0cihzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBy aW5nLT5hZGV2OworCXU2NCB3cHRyOworCisJaWYgKHJpbmctPnVzZV9kb29yYmVsbCkgeworCQkv KiBYWFggY2hlY2sgaWYgc3dhcHBpbmcgaXMgbmVjZXNzYXJ5IG9uIEJFICovCisJCXdwdHIgPSBS RUFEX09OQ0UoKigodTY0ICopJmFkZXYtPndiLndiW3JpbmctPndwdHJfb2Zmc10pKTsKKwl9IGVs c2UgeworCQl3cHRyID0gUlJFRzMyX1NETUEocmluZy0+bWUsIG1tU0RNQTBfUEFHRV9SQl9XUFRS X0hJKTsKKwkJd3B0ciA9IHdwdHIgPDwgMzI7CisJCXdwdHIgfD0gUlJFRzMyX1NETUEocmluZy0+ bWUsIG1tU0RNQTBfUEFHRV9SQl9XUFRSKTsKKwl9CisKKwlyZXR1cm4gd3B0ciA+PiAyOworfQor CisvKioKKyAqIHNkbWFfdjRfMF9yaW5nX3NldF93cHRyIC0gY29tbWl0IHRoZSB3cml0ZSBwb2lu dGVyCisgKgorICogQHJpbmc6IGFtZGdwdSByaW5nIHBvaW50ZXIKKyAqCisgKiBXcml0ZSB0aGUg d3B0ciBiYWNrIHRvIHRoZSBoYXJkd2FyZSAoVkVHQTEwKykuCisgKi8KK3N0YXRpYyB2b2lkIHNk bWFfdjRfMF9wYWdlX3Jpbmdfc2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQorewor CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKKworCWlmIChyaW5nLT51 c2VfZG9vcmJlbGwpIHsKKwkJdTY0ICp3YiA9ICh1NjQgKikmYWRldi0+d2Iud2JbcmluZy0+d3B0 cl9vZmZzXTsKKworCQkvKiBYWFggY2hlY2sgaWYgc3dhcHBpbmcgaXMgbmVjZXNzYXJ5IG9uIEJF ICovCisJCVdSSVRFX09OQ0UoKndiLCAocmluZy0+d3B0ciA8PCAyKSk7CisJCVdET09SQkVMTDY0 KHJpbmctPmRvb3JiZWxsX2luZGV4LCByaW5nLT53cHRyIDw8IDIpOworCX0gZWxzZSB7CisJCXVp bnQ2NF90IHdwdHIgPSByaW5nLT53cHRyIDw8IDI7CisKKwkJV1JFRzMyX1NETUEocmluZy0+bWUs IG1tU0RNQTBfUEFHRV9SQl9XUFRSLAorCQkJICAgIGxvd2VyXzMyX2JpdHMod3B0cikpOworCQlX UkVHMzJfU0RNQShyaW5nLT5tZSwgbW1TRE1BMF9QQUdFX1JCX1dQVFJfSEksCisJCQkgICAgdXBw ZXJfMzJfYml0cyh3cHRyKSk7CisJfQorfQorCiBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfcmluZ19p bnNlcnRfbm9wKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgY291bnQpCiB7CiAJ c3RydWN0IGFtZGdwdV9zZG1hX2luc3RhbmNlICpzZG1hID0gYW1kZ3B1X2dldF9zZG1hX2luc3Rh bmNlKHJpbmcpOwpAQCAtNTk3LDYgKzY0OCwzNSBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfcmxj X3N0b3Aoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJLyogWFhYIHRvZG8gKi8KIH0KIAor LyoqCisgKiBzZG1hX3Y0XzBfcGFnZV9zdG9wIC0gc3RvcCB0aGUgcGFnZSBhc3luYyBkbWEgZW5n aW5lcworICoKKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKKyAqCisgKiBTdG9wIHRo ZSBwYWdlIGFzeW5jIGRtYSByaW5nIGJ1ZmZlcnMgKFZFR0ExMCkuCisgKi8KK3N0YXRpYyB2b2lk IHNkbWFfdjRfMF9wYWdlX3N0b3Aoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJc3Ry dWN0IGFtZGdwdV9yaW5nICpzZG1hMCA9ICZhZGV2LT5zZG1hLmluc3RhbmNlWzBdLnBhZ2U7CisJ c3RydWN0IGFtZGdwdV9yaW5nICpzZG1hMSA9ICZhZGV2LT5zZG1hLmluc3RhbmNlWzFdLnBhZ2U7 CisJdTMyIHJiX2NudGwsIGliX2NudGw7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYWRl di0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKKwkJcmJfY250bCA9IFJSRUczMl9TRE1BKGks IG1tU0RNQTBfUEFHRV9SQl9DTlRMKTsKKwkJcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250 bCwgU0RNQTBfUEFHRV9SQl9DTlRMLAorCQkJCQlSQl9FTkFCTEUsIDApOworCQlXUkVHMzJfU0RN QShpLCBtbVNETUEwX1BBR0VfUkJfQ05UTCwgcmJfY250bCk7CisJCWliX2NudGwgPSBSUkVHMzJf U0RNQShpLCBtbVNETUEwX1BBR0VfSUJfQ05UTCk7CisJCWliX2NudGwgPSBSRUdfU0VUX0ZJRUxE KGliX2NudGwsIFNETUEwX1BBR0VfSUJfQ05UTCwKKwkJCQkJSUJfRU5BQkxFLCAwKTsKKwkJV1JF RzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX0lCX0NOVEwsIGliX2NudGwpOworCX0KKworCXNkbWEw LT5yZWFkeSA9IGZhbHNlOworCXNkbWExLT5yZWFkeSA9IGZhbHNlOworfQorCiAvKioKICAqIHNk bWFfdl8wX2N0eF9zd2l0Y2hfZW5hYmxlIC0gc3RvcCB0aGUgYXN5bmMgZG1hIGVuZ2luZXMgY29u dGV4dCBzd2l0Y2gKICAqCkBAIC02NjQsNiArNzQ0LDcgQEAgc3RhdGljIHZvaWQgc2RtYV92NF8w X2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiAJaWYgKGVu YWJsZSA9PSBmYWxzZSkgewogCQlzZG1hX3Y0XzBfZ2Z4X3N0b3AoYWRldik7CiAJCXNkbWFfdjRf MF9ybGNfc3RvcChhZGV2KTsKKwkJc2RtYV92NF8wX3BhZ2Vfc3RvcChhZGV2KTsKIAl9CiAKIAlm b3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKQEAgLTY3Myw2 ICs3NTQsMjMgQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiAJfQogfQogCisvKioKKyAqIHNkbWFfdjRfMF9yYl9j bnRsIC0gZ2V0IHBhcmFtZXRlcnMgZm9yIHJiX2NudGwKKyAqLworc3RhdGljIHVpbnQzMl90IHNk bWFfdjRfMF9yYl9jbnRsKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgcmJfY250 bCkKK3sKKwkvKiBTZXQgcmluZyBidWZmZXIgc2l6ZSBpbiBkd29yZHMgKi8KKwl1aW50MzJfdCBy Yl9idWZzeiA9IG9yZGVyX2Jhc2VfMihyaW5nLT5yaW5nX3NpemUgLyA0KTsKKworCXJiX2NudGwg PSBSRUdfU0VUX0ZJRUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLCBSQl9TSVpFLCByYl9i dWZzeik7CisjaWZkZWYgX19CSUdfRU5ESUFOCisJcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJf Y250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJCX1NXQVBfRU5BQkxFLCAxKTsKKwlyYl9jbnRsID0g UkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwKKwkJCQlSUFRSX1dSSVRF QkFDS19TV0FQX0VOQUJMRSwgMSk7CisjZW5kaWYKKwlyZXR1cm4gcmJfY250bDsKK30KKwogLyoq CiAgKiBzZG1hX3Y0XzBfZ2Z4X3Jlc3VtZSAtIHNldHVwIGFuZCBzdGFydCB0aGUgYXN5bmMgZG1h IGVuZ2luZXMKICAqCkBAIC02ODYsNyArNzg0LDYgQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX2dm eF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGludCBpKQogewog CXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmc7 CiAJdTMyIHJiX2NudGwsIGliX2NudGwsIHdwdHJfcG9sbF9jbnRsOwotCXUzMiByYl9idWZzejsK IAl1MzIgd2Jfb2Zmc2V0OwogCXUzMiBkb29yYmVsbDsKIAl1MzIgZG9vcmJlbGxfb2Zmc2V0OwpA QCAtNjk0LDE1ICs3OTEsOCBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfZ2Z4X3Jlc3VtZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCiAKIAl3Yl9vZmZzZXQgPSAo cmluZy0+cnB0cl9vZmZzICogNCk7CiAKLQkvKiBTZXQgcmluZyBidWZmZXIgc2l6ZSBpbiBkd29y ZHMgKi8KLQlyYl9idWZzeiA9IG9yZGVyX2Jhc2VfMihyaW5nLT5yaW5nX3NpemUgLyA0KTsKIAly Yl9jbnRsID0gUlJFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfQ05UTCk7Ci0JcmJfY250bCA9 IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJCX1NJWkUsIHJiX2J1 ZnN6KTsKLSNpZmRlZiBfX0JJR19FTkRJQU4KLQlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9j bnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwgUkJfU1dBUF9FTkFCTEUsIDEpOwotCXJiX2NudGwgPSBS RUdfU0VUX0ZJRUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLAotCQkJCVJQVFJfV1JJVEVC QUNLX1NXQVBfRU5BQkxFLCAxKTsKLSNlbmRpZgorCXJiX2NudGwgPSBzZG1hX3Y0XzBfcmJfY250 bChyaW5nLCByYl9jbnRsKTsKIAlXUkVHMzJfU0RNQShpLCBtbVNETUEwX0dGWF9SQl9DTlRMLCBy Yl9jbnRsKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHJpbmcgYnVmZmVyJ3MgcmVhZCBhbmQgd3Jp dGUgcG9pbnRlcnMgKi8KQEAgLTcxNyw3ICs4MDcsOCBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBf Z2Z4X3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCiAJ V1JFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfUlBUUl9BRERSX0xPLAogCSAgICAgICBsb3dl cl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsgd2Jfb2Zmc2V0KSAmIDB4RkZGRkZGRkMpOwog Ci0JcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJQ VFJfV1JJVEVCQUNLX0VOQUJMRSwgMSk7CisJcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250 bCwgU0RNQTBfR0ZYX1JCX0NOVEwsCisJCQkJUlBUUl9XUklURUJBQ0tfRU5BQkxFLCAxKTsKIAog CVdSRUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX1JCX0JBU0UsIHJpbmctPmdwdV9hZGRyID4+IDgp OwogCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX1JCX0JBU0VfSEksIHJpbmctPmdwdV9hZGRy ID4+IDQwKTsKQEAgLTczMCwxMyArODIxLDExIEBAIHN0YXRpYyB2b2lkIHNkbWFfdjRfMF9nZnhf cmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBpbnQgaSkKIAlkb29y YmVsbCA9IFJSRUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMKTsKIAlkb29yYmVsbF9v ZmZzZXQgPSBSUkVHMzJfU0RNQShpLCBtbVNETUEwX0dGWF9ET09SQkVMTF9PRkZTRVQpOwogCi0J aWYgKHJpbmctPnVzZV9kb29yYmVsbCkgewotCQlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9v cmJlbGwsIFNETUEwX0dGWF9ET09SQkVMTCwgRU5BQkxFLCAxKTsKLQkJZG9vcmJlbGxfb2Zmc2V0 ID0gUkVHX1NFVF9GSUVMRChkb29yYmVsbF9vZmZzZXQsIFNETUEwX0dGWF9ET09SQkVMTF9PRkZT RVQsCi0JCQkJT0ZGU0VULCByaW5nLT5kb29yYmVsbF9pbmRleCk7Ci0JfSBlbHNlIHsKLQkJZG9v cmJlbGwgPSBSRUdfU0VUX0ZJRUxEKGRvb3JiZWxsLCBTRE1BMF9HRlhfRE9PUkJFTEwsIEVOQUJM RSwgMCk7Ci0JfQorCWRvb3JiZWxsID0gUkVHX1NFVF9GSUVMRChkb29yYmVsbCwgU0RNQTBfR0ZY X0RPT1JCRUxMLCBFTkFCTEUsCisJCQkJIHJpbmctPnVzZV9kb29yYmVsbCk7CisJZG9vcmJlbGxf b2Zmc2V0ID0gUkVHX1NFVF9GSUVMRChkb29yYmVsbF9vZmZzZXQsCisJCQkJCVNETUEwX0dGWF9E T09SQkVMTF9PRkZTRVQsCisJCQkJCU9GRlNFVCwgcmluZy0+ZG9vcmJlbGxfaW5kZXgpOwogCVdS RUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMLCBkb29yYmVsbCk7CiAJV1JFRzMyX1NE TUEoaSwgbW1TRE1BMF9HRlhfRE9PUkJFTExfT0ZGU0VULCBkb29yYmVsbF9vZmZzZXQpOwogCWFk ZXYtPm5iaW9fZnVuY3MtPnNkbWFfZG9vcmJlbGxfcmFuZ2UoYWRldiwgaSwgcmluZy0+dXNlX2Rv b3JiZWxsLApAQCAtNzU0LDEwICs4NDMsOSBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfZ2Z4X3Jl c3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCiAJV1JFRzMy X1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0FERFJfSEksCiAJCSAgICB1cHBlcl8z Ml9iaXRzKHdwdHJfZ3B1X2FkZHIpKTsKIAl3cHRyX3BvbGxfY250bCA9IFJSRUczMl9TRE1BKGks IG1tU0RNQTBfR0ZYX1JCX1dQVFJfUE9MTF9DTlRMKTsKLQlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFk ZXYpKQotCQl3cHRyX3BvbGxfY250bCA9IFJFR19TRVRfRklFTEQod3B0cl9wb2xsX2NudGwsIFNE TUEwX0dGWF9SQl9XUFRSX1BPTExfQ05UTCwgRjMyX1BPTExfRU5BQkxFLCAxKTsKLQllbHNlCi0J CXdwdHJfcG9sbF9jbnRsID0gUkVHX1NFVF9GSUVMRCh3cHRyX3BvbGxfY250bCwgU0RNQTBfR0ZY X1JCX1dQVFJfUE9MTF9DTlRMLCBGMzJfUE9MTF9FTkFCTEUsIDApOworCXdwdHJfcG9sbF9jbnRs ID0gUkVHX1NFVF9GSUVMRCh3cHRyX3BvbGxfY250bCwKKwkJCQkgICAgICAgU0RNQTBfR0ZYX1JC X1dQVFJfUE9MTF9DTlRMLAorCQkJCSAgICAgICBGMzJfUE9MTF9FTkFCTEUsIGFtZGdwdV9zcmlv dl92ZihhZGV2KSk7CiAJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0NO VEwsIHdwdHJfcG9sbF9jbnRsKTsKIAogCS8qIGVuYWJsZSBETUEgUkIgKi8KQEAgLTc3NSw2ICs4 NjMsOTkgQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGludCBpKQogCXJpbmctPnJlYWR5ID0gdHJ1ZTsKIH0KIAor LyoqCisgKiBzZG1hX3Y0XzBfcGFnZV9yZXN1bWUgLSBzZXR1cCBhbmQgc3RhcnQgdGhlIGFzeW5j IGRtYSBlbmdpbmVzCisgKgorICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgorICogQGk6 IGluc3RhbmNlIHRvIHJlc3VtZQorICoKKyAqIFNldCB1cCB0aGUgcGFnZSBETUEgcmluZyBidWZm ZXJzIGFuZCBlbmFibGUgdGhlbSAoVkVHQTEwKS4KKyAqIFJldHVybnMgMCBmb3Igc3VjY2Vzcywg ZXJyb3IgZm9yIGZhaWx1cmUuCisgKi8KK3N0YXRpYyB2b2lkIHNkbWFfdjRfMF9wYWdlX3Jlc3Vt ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCit7CisJc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nID0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucGFnZTsKKwl1MzIg cmJfY250bCwgaWJfY250bCwgd3B0cl9wb2xsX2NudGw7CisJdTMyIHdiX29mZnNldDsKKwl1MzIg ZG9vcmJlbGw7CisJdTMyIGRvb3JiZWxsX29mZnNldDsKKwl1NjQgd3B0cl9ncHVfYWRkcjsKKwor CXdiX29mZnNldCA9IChyaW5nLT5ycHRyX29mZnMgKiA0KTsKKworCXJiX2NudGwgPSBSUkVHMzJf U0RNQShpLCBtbVNETUEwX1BBR0VfUkJfQ05UTCk7CisJcmJfY250bCA9IHNkbWFfdjRfMF9yYl9j bnRsKHJpbmcsIHJiX2NudGwpOworCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9SQl9DTlRM LCByYl9jbnRsKTsKKworCS8qIEluaXRpYWxpemUgdGhlIHJpbmcgYnVmZmVyJ3MgcmVhZCBhbmQg d3JpdGUgcG9pbnRlcnMgKi8KKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfUkJfUlBUUiwg MCk7CisJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX1JQVFJfSEksIDApOworCVdSRUcz Ml9TRE1BKGksIG1tU0RNQTBfUEFHRV9SQl9XUFRSLCAwKTsKKwlXUkVHMzJfU0RNQShpLCBtbVNE TUEwX1BBR0VfUkJfV1BUUl9ISSwgMCk7CisKKwkvKiBzZXQgdGhlIHdiIGFkZHJlc3Mgd2hldGhl ciBpdCdzIGVuYWJsZWQgb3Igbm90ICovCisJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JC X1JQVFJfQUREUl9ISSwKKwkgICAgICAgdXBwZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciAr IHdiX29mZnNldCkgJiAweEZGRkZGRkZGKTsKKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0Vf UkJfUlBUUl9BRERSX0xPLAorCSAgICAgICBsb3dlcl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRy ICsgd2Jfb2Zmc2V0KSAmIDB4RkZGRkZGRkMpOworCisJcmJfY250bCA9IFJFR19TRVRfRklFTEQo cmJfY250bCwgU0RNQTBfUEFHRV9SQl9DTlRMLAorCQkJCVJQVFJfV1JJVEVCQUNLX0VOQUJMRSwg MSk7CisKKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfUkJfQkFTRSwgcmluZy0+Z3B1X2Fk ZHIgPj4gOCk7CisJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX0JBU0VfSEksIHJpbmct PmdwdV9hZGRyID4+IDQwKTsKKworCXJpbmctPndwdHIgPSAwOworCisJLyogYmVmb3JlIHByb2dy YW1pbmcgd3B0ciB0byBhIGxlc3MgdmFsdWUsIG5lZWQgc2V0IG1pbm9yX3B0cl91cGRhdGUgZmly c3QgKi8KKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfTUlOT1JfUFRSX1VQREFURSwgMSk7 CisKKwlkb29yYmVsbCA9IFJSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9ET09SQkVMTCk7CisJ ZG9vcmJlbGxfb2Zmc2V0ID0gUlJFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX0RPT1JCRUxMX09G RlNFVCk7CisKKwlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9vcmJlbGwsIFNETUEwX1BBR0Vf RE9PUkJFTEwsIEVOQUJMRSwKKwkJCQkgcmluZy0+dXNlX2Rvb3JiZWxsKTsKKwlkb29yYmVsbF9v ZmZzZXQgPSBSRUdfU0VUX0ZJRUxEKGRvb3JiZWxsX29mZnNldCwKKwkJCQkJU0RNQTBfUEFHRV9E T09SQkVMTF9PRkZTRVQsCisJCQkJCU9GRlNFVCwgcmluZy0+ZG9vcmJlbGxfaW5kZXgpOworCVdS RUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9ET09SQkVMTCwgZG9vcmJlbGwpOworCVdSRUczMl9T RE1BKGksIG1tU0RNQTBfUEFHRV9ET09SQkVMTF9PRkZTRVQsIGRvb3JiZWxsX29mZnNldCk7CisJ LyogVE9ETzogZW5hYmxlIGRvb3JiZWxsIHN1cHBvcnQgKi8KKwkvKmFkZXYtPm5iaW9fZnVuY3Mt PnNkbWFfZG9vcmJlbGxfcmFuZ2UoYWRldiwgaSwgcmluZy0+dXNlX2Rvb3JiZWxsLAorCQkJCQkg ICAgICByaW5nLT5kb29yYmVsbF9pbmRleCk7Ki8KKworCXNkbWFfdjRfMF9yaW5nX3NldF93cHRy KHJpbmcpOworCisJLyogc2V0IG1pbm9yX3B0cl91cGRhdGUgdG8gMCBhZnRlciB3cHRyIHByb2dy YW1lZCAqLworCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9NSU5PUl9QVFJfVVBEQVRFLCAw KTsKKworCS8qIHNldHVwIHRoZSB3cHRyIHNoYWRvdyBwb2xsaW5nICovCisJd3B0cl9ncHVfYWRk ciA9IGFkZXYtPndiLmdwdV9hZGRyICsgKHJpbmctPndwdHJfb2ZmcyAqIDQpOworCVdSRUczMl9T RE1BKGksIG1tU0RNQTBfUEFHRV9SQl9XUFRSX1BPTExfQUREUl9MTywKKwkJICAgIGxvd2VyXzMy X2JpdHMod3B0cl9ncHVfYWRkcikpOworCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9SQl9X UFRSX1BPTExfQUREUl9ISSwKKwkJICAgIHVwcGVyXzMyX2JpdHMod3B0cl9ncHVfYWRkcikpOwor CXdwdHJfcG9sbF9jbnRsID0gUlJFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX1dQVFJfUE9M TF9DTlRMKTsKKwl3cHRyX3BvbGxfY250bCA9IFJFR19TRVRfRklFTEQod3B0cl9wb2xsX2NudGws CisJCQkJICAgICAgIFNETUEwX1BBR0VfUkJfV1BUUl9QT0xMX0NOVEwsCisJCQkJICAgICAgIEYz Ml9QT0xMX0VOQUJMRSwgYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKTsKKwlXUkVHMzJfU0RNQShpLCBt bVNETUEwX1BBR0VfUkJfV1BUUl9QT0xMX0NOVEwsIHdwdHJfcG9sbF9jbnRsKTsKKworCS8qIGVu YWJsZSBETUEgUkIgKi8KKwlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9Q QUdFX1JCX0NOVEwsIFJCX0VOQUJMRSwgMSk7CisJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdF X1JCX0NOVEwsIHJiX2NudGwpOworCisJaWJfY250bCA9IFJSRUczMl9TRE1BKGksIG1tU0RNQTBf UEFHRV9JQl9DTlRMKTsKKwlpYl9jbnRsID0gUkVHX1NFVF9GSUVMRChpYl9jbnRsLCBTRE1BMF9Q QUdFX0lCX0NOVEwsIElCX0VOQUJMRSwgMSk7CisjaWZkZWYgX19CSUdfRU5ESUFOCisJaWJfY250 bCA9IFJFR19TRVRfRklFTEQoaWJfY250bCwgU0RNQTBfUEFHRV9JQl9DTlRMLCBJQl9TV0FQX0VO QUJMRSwgMSk7CisjZW5kaWYKKwkvKiBlbmFibGUgRE1BIElCcyAqLworCVdSRUczMl9TRE1BKGks IG1tU0RNQTBfUEFHRV9JQl9DTlRMLCBpYl9jbnRsKTsKKworCXJpbmctPnJlYWR5ID0gdHJ1ZTsK K30KKwogc3RhdGljIHZvaWQKIHNkbWFfdjRfMV91cGRhdGVfcG93ZXJfZ2F0aW5nKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIHsKQEAgLTkzMiw2ICsxMTEzLDcgQEAg c3RhdGljIGludCBzZG1hX3Y0XzBfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAK IAkJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9TRU1fV0FJVF9GQUlMX1RJTUVSX0NOVEwsIDApOwog CQlzZG1hX3Y0XzBfZ2Z4X3Jlc3VtZShhZGV2LCBpKTsKKwkJc2RtYV92NF8wX3BhZ2VfcmVzdW1l KGFkZXYsIGkpOwogCiAJCS8qIHNldCB1dGMgbDEgZW5hYmxlIGZsYWcgYWx3YXlzIHRvIDEgKi8K IAkJdGVtcCA9IFJSRUczMl9TRE1BKGksIG1tU0RNQTBfQ05UTCk7CkBAIC0xMzM3LDYgKzE1MTks MTkgQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCiAJCQkJICAg ICBBTURHUFVfU0RNQV9JUlFfVFJBUDEpOwogCQlpZiAocikKIAkJCXJldHVybiByOworCisJCXJp bmcgPSAmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5wYWdlOworCQlyaW5nLT5yaW5nX29iaiA9IE5V TEw7CisJCXJpbmctPnVzZV9kb29yYmVsbCA9IGZhbHNlOworCisJCXNwcmludGYocmluZy0+bmFt ZSwgInBhZ2UlZCIsIGkpOworCQlyID0gYW1kZ3B1X3JpbmdfaW5pdChhZGV2LCByaW5nLCAxMDI0 LAorCQkJCSAgICAgJmFkZXYtPnNkbWEudHJhcF9pcnEsCisJCQkJICAgICAoaSA9PSAwKSA/CisJ CQkJICAgICBBTURHUFVfU0RNQV9JUlFfVFJBUDAgOgorCQkJCSAgICAgQU1ER1BVX1NETUFfSVJR X1RSQVAxKTsKKwkJaWYgKHIpCisJCQlyZXR1cm4gcjsKIAl9CiAKIAlyZXR1cm4gcjsKQEAgLTEz NDcsOCArMTU0MiwxMCBAQCBzdGF0aWMgaW50IHNkbWFfdjRfMF9zd19maW5pKHZvaWQgKmhhbmRs ZSkKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0 YW5jZXM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBp KyspIHsKIAkJYW1kZ3B1X3JpbmdfZmluaSgmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5yaW5nKTsK KwkJYW1kZ3B1X3JpbmdfZmluaSgmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5wYWdlKTsKKwl9CiAK IAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKIAkJcmVs ZWFzZV9maXJtd2FyZShhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3KTsKQEAgLTE0NjIsMzkgKzE2 NTksMzIgQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfcHJvY2Vzc190cmFwX2lycShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNvdXJj ZSwKIAkJCQkgICAgICBzdHJ1Y3QgYW1kZ3B1X2l2X2VudHJ5ICplbnRyeSkKIHsKKwl1aW50MzJf dCBpbnN0YW5jZTsKKwogCURSTV9ERUJVRygiSUg6IFNETUEgdHJhcFxuIik7CiAJc3dpdGNoIChl bnRyeS0+Y2xpZW50X2lkKSB7CiAJY2FzZSBTT0MxNV9JSF9DTElFTlRJRF9TRE1BMDoKLQkJc3dp dGNoIChlbnRyeS0+cmluZ19pZCkgewotCQljYXNlIDA6Ci0JCQlhbWRncHVfZmVuY2VfcHJvY2Vz cygmYWRldi0+c2RtYS5pbnN0YW5jZVswXS5yaW5nKTsKLQkJCWJyZWFrOwotCQljYXNlIDE6Ci0J CQkvKiBYWFggY29tcHV0ZSAqLwotCQkJYnJlYWs7Ci0JCWNhc2UgMjoKLQkJCS8qIFhYWCBjb21w dXRlICovCi0JCQlicmVhazsKLQkJY2FzZSAzOgotCQkJLyogWFhYIHBhZ2UgcXVldWUqLwotCQkJ YnJlYWs7Ci0JCX0KKwkJaW5zdGFuY2UgPSAwOwogCQlicmVhazsKIAljYXNlIFNPQzE1X0lIX0NM SUVOVElEX1NETUExOgotCQlzd2l0Y2ggKGVudHJ5LT5yaW5nX2lkKSB7Ci0JCWNhc2UgMDoKLQkJ CWFtZGdwdV9mZW5jZV9wcm9jZXNzKCZhZGV2LT5zZG1hLmluc3RhbmNlWzFdLnJpbmcpOwotCQkJ YnJlYWs7Ci0JCWNhc2UgMToKLQkJCS8qIFhYWCBjb21wdXRlICovCi0JCQlicmVhazsKLQkJY2Fz ZSAyOgotCQkJLyogWFhYIGNvbXB1dGUgKi8KLQkJCWJyZWFrOwotCQljYXNlIDM6Ci0JCQkvKiBY WFggcGFnZSBxdWV1ZSovCi0JCQlicmVhazsKLQkJfQorCQlpbnN0YW5jZSA9IDE7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KKworCXN3aXRjaCAoZW50cnktPnJpbmdfaWQp IHsKKwljYXNlIDA6CisJCWFtZGdwdV9mZW5jZV9wcm9jZXNzKCZhZGV2LT5zZG1hLmluc3RhbmNl W2luc3RhbmNlXS5yaW5nKTsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQkvKiBYWFggY29tcHV0ZSAq LworCQlicmVhazsKKwljYXNlIDI6CisJCS8qIFhYWCBjb21wdXRlICovCisJCWJyZWFrOworCWNh c2UgMzoKKwkJYW1kZ3B1X2ZlbmNlX3Byb2Nlc3MoJmFkZXYtPnNkbWEuaW5zdGFuY2VbaW5zdGFu Y2VdLnBhZ2UpOwogCQlicmVhazsKIAl9CiAJcmV0dXJuIDA7CkBAIC0xNzIyLDYgKzE5MTIsMzgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyBzZG1hX3Y0XzBfcmluZ19m dW5jcyA9IHsKIAkuZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXQgPSBhbWRncHVfcmluZ19lbWl0X3Jl Z193cml0ZV9yZWdfd2FpdF9oZWxwZXIsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdw dV9yaW5nX2Z1bmNzIHNkbWFfdjRfMF9wYWdlX3JpbmdfZnVuY3MgPSB7CisJLnR5cGUgPSBBTURH UFVfUklOR19UWVBFX1NETUEsCisJLmFsaWduX21hc2sgPSAweGYsCisJLm5vcCA9IFNETUFfUEtU X05PUF9IRUFERVJfT1AoU0RNQV9PUF9OT1ApLAorCS5zdXBwb3J0XzY0Yml0X3B0cnMgPSB0cnVl LAorCS52bWh1YiA9IEFNREdQVV9NTUhVQiwKKwkuZ2V0X3JwdHIgPSBzZG1hX3Y0XzBfcmluZ19n ZXRfcnB0ciwKKwkuZ2V0X3dwdHIgPSBzZG1hX3Y0XzBfcGFnZV9yaW5nX2dldF93cHRyLAorCS5z ZXRfd3B0ciA9IHNkbWFfdjRfMF9wYWdlX3Jpbmdfc2V0X3dwdHIsCisJLmVtaXRfZnJhbWVfc2l6 ZSA9CisJCTYgKyAvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X2hkcF9mbHVzaCAqLworCQkzICsgLyog aGRwIGludmFsaWRhdGUgKi8KKwkJNiArIC8qIHNkbWFfdjRfMF9yaW5nX2VtaXRfcGlwZWxpbmVf c3luYyAqLworCQkvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X3ZtX2ZsdXNoICovCisJCVNPQzE1X0ZM VVNIX0dQVV9UTEJfTlVNX1dSRUcgKiAzICsKKwkJU09DMTVfRkxVU0hfR1BVX1RMQl9OVU1fUkVH X1dBSVQgKiA2ICsKKwkJMTAgKyAxMCArIDEwLCAvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X2ZlbmNl IHgzIGZvciB1c2VyIGZlbmNlLCB2bSBmZW5jZSAqLworCS5lbWl0X2liX3NpemUgPSA3ICsgNiwg Lyogc2RtYV92NF8wX3JpbmdfZW1pdF9pYiAqLworCS5lbWl0X2liID0gc2RtYV92NF8wX3Jpbmdf ZW1pdF9pYiwKKwkuZW1pdF9mZW5jZSA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfZmVuY2UsCisJLmVt aXRfcGlwZWxpbmVfc3luYyA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYywKKwku ZW1pdF92bV9mbHVzaCA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfdm1fZmx1c2gsCisJLmVtaXRfaGRw X2ZsdXNoID0gc2RtYV92NF8wX3JpbmdfZW1pdF9oZHBfZmx1c2gsCisJLnRlc3RfcmluZyA9IHNk bWFfdjRfMF9yaW5nX3Rlc3RfcmluZywKKwkudGVzdF9pYiA9IHNkbWFfdjRfMF9yaW5nX3Rlc3Rf aWIsCisJLmluc2VydF9ub3AgPSBzZG1hX3Y0XzBfcmluZ19pbnNlcnRfbm9wLAorCS5wYWRfaWIg PSBzZG1hX3Y0XzBfcmluZ19wYWRfaWIsCisJLmVtaXRfd3JlZyA9IHNkbWFfdjRfMF9yaW5nX2Vt aXRfd3JlZywKKwkuZW1pdF9yZWdfd2FpdCA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfcmVnX3dhaXQs CisJLmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0ID0gYW1kZ3B1X3JpbmdfZW1pdF9yZWdfd3JpdGVf cmVnX3dhaXRfaGVscGVyLAorfTsKKwogc3RhdGljIHZvaWQgc2RtYV92NF8wX3NldF9yaW5nX2Z1 bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWludCBpOwpAQCAtMTcyOSw2ICsx OTUxLDggQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0YW5j ZXM7IGkrKykgewogCQlhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmcuZnVuY3MgPSAmc2RtYV92 NF8wX3JpbmdfZnVuY3M7CiAJCWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucmluZy5tZSA9IGk7CisJ CWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucGFnZS5mdW5jcyA9ICZzZG1hX3Y0XzBfcGFnZV9yaW5n X2Z1bmNzOworCQlhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnBhZ2UubWUgPSBpOwogCX0KIH0KIAot LSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK