From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 1/5] drm/i915/pmu: Make more struct i915_pmu centric Date: Thu, 1 Aug 2019 15:17:28 +0100 Message-ID: <20190801141732.31335-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E4FA6E650 for ; Thu, 1 Aug 2019 14:17:57 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkp1c3QgdGlk eSB0aGUgY29kZSBhIGJpdCBieSByZW1vdmluZyBhIHNlYSBvZiBvdmVybHkgdmVyYm9zZSBpOTE1 LT5wbXUuKi4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIHwgMTk0ICsrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMo KyksIDkwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IGVmZjg2NDgz YmVjMC4uMTIwMDg5NjZiMDBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTc0LDggKzc0 LDkgQEAgc3RhdGljIHVuc2lnbmVkIGludCBldmVudF9lbmFibGVkX2JpdChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCiAJcmV0dXJuIGNvbmZpZ19lbmFibGVkX2JpdChldmVudC0+YXR0ci5jb25m aWcpOwogfQogCi1zdGF0aWMgYm9vbCBwbXVfbmVlZHNfdGltZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIGJvb2wgZ3B1X2FjdGl2ZSkKK3N0YXRpYyBib29sIHBtdV9uZWVkc190aW1l cihzdHJ1Y3QgaTkxNV9wbXUgKnBtdSwgYm9vbCBncHVfYWN0aXZlKQogeworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gY29udGFpbmVyX29mKHBtdSwgdHlwZW9mKCppOTE1KSwgcG11 KTsKIAl1NjQgZW5hYmxlOwogCiAJLyoKQEAgLTgzLDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgcG11 X25lZWRzX3RpbWVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGdwdV9hY3Rp dmUpCiAJICoKIAkgKiBXZSBzdGFydCB3aXRoIGEgYml0bWFzayBvZiBhbGwgY3VycmVudGx5IGVu YWJsZWQgZXZlbnRzLgogCSAqLwotCWVuYWJsZSA9IGk5MTUtPnBtdS5lbmFibGU7CisJZW5hYmxl ID0gcG11LT5lbmFibGU7CiAKIAkvKgogCSAqIE1hc2sgb3V0IGFsbCB0aGUgb25lcyB3aGljaCBk byBub3QgbmVlZCB0aGUgdGltZXIsIG9yIGluCkBAIC0xMTQsMjQgKzExNSwyNiBAQCBzdGF0aWMg Ym9vbCBwbXVfbmVlZHNfdGltZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wg Z3B1X2FjdGl2ZSkKIAogdm9pZCBpOTE1X3BtdV9ndF9wYXJrZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiB7Ci0JaWYgKCFpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0KQorCXN0cnVj dCBpOTE1X3BtdSAqcG11ID0gJmk5MTUtPnBtdTsKKworCWlmICghcG11LT5iYXNlLmV2ZW50X2lu aXQpCiAJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnEoJmk5MTUtPnBtdS5sb2NrKTsKKwlzcGlu X2xvY2tfaXJxKCZwbXUtPmxvY2spOwogCS8qCiAJICogU2lnbmFsIHNhbXBsaW5nIHRpbWVyIHRv IHN0b3AgaWYgb25seSBlbmdpbmUgZXZlbnRzIGFyZSBlbmFibGVkIGFuZAogCSAqIEdQVSB3ZW50 IGlkbGUuCiAJICovCi0JaTkxNS0+cG11LnRpbWVyX2VuYWJsZWQgPSBwbXVfbmVlZHNfdGltZXIo aTkxNSwgZmFsc2UpOwotCXNwaW5fdW5sb2NrX2lycSgmaTkxNS0+cG11LmxvY2spOworCXBtdS0+ dGltZXJfZW5hYmxlZCA9IHBtdV9uZWVkc190aW1lcihwbXUsIGZhbHNlKTsKKwlzcGluX3VubG9j a19pcnEoJnBtdS0+bG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIF9faTkxNV9wbXVfbWF5YmVfc3Rh cnRfdGltZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitzdGF0aWMgdm9pZCBfX2k5 MTVfcG11X21heWJlX3N0YXJ0X3RpbWVyKHN0cnVjdCBpOTE1X3BtdSAqcG11KQogewotCWlmICgh aTkxNS0+cG11LnRpbWVyX2VuYWJsZWQgJiYgcG11X25lZWRzX3RpbWVyKGk5MTUsIHRydWUpKSB7 Ci0JCWk5MTUtPnBtdS50aW1lcl9lbmFibGVkID0gdHJ1ZTsKLQkJaTkxNS0+cG11LnRpbWVyX2xh c3QgPSBrdGltZV9nZXQoKTsKLQkJaHJ0aW1lcl9zdGFydF9yYW5nZV9ucygmaTkxNS0+cG11LnRp bWVyLAorCWlmICghcG11LT50aW1lcl9lbmFibGVkICYmIHBtdV9uZWVkc190aW1lcihwbXUsIHRy dWUpKSB7CisJCXBtdS0+dGltZXJfZW5hYmxlZCA9IHRydWU7CisJCXBtdS0+dGltZXJfbGFzdCA9 IGt0aW1lX2dldCgpOworCQlocnRpbWVyX3N0YXJ0X3JhbmdlX25zKCZwbXUtPnRpbWVyLAogCQkJ CSAgICAgICBuc190b19rdGltZShQRVJJT0QpLCAwLAogCQkJCSAgICAgICBIUlRJTUVSX01PREVf UkVMX1BJTk5FRCk7CiAJfQpAQCAtMTM5LDE1ICsxNDIsMTcgQEAgc3RhdGljIHZvaWQgX19pOTE1 X3BtdV9tYXliZV9zdGFydF90aW1lcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAog dm9pZCBpOTE1X3BtdV9ndF91bnBhcmtlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IHsKLQlpZiAoIWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQpCisJc3RydWN0IGk5MTVfcG11ICpw bXUgPSAmaTkxNS0+cG11OworCisJaWYgKCFwbXUtPmJhc2UuZXZlbnRfaW5pdCkKIAkJcmV0dXJu OwogCi0Jc3Bpbl9sb2NrX2lycSgmaTkxNS0+cG11LmxvY2spOworCXNwaW5fbG9ja19pcnEoJnBt dS0+bG9jayk7CiAJLyoKIAkgKiBSZS1lbmFibGUgc2FtcGxpbmcgdGltZXIgd2hlbiBHUFUgZ29l cyBhY3RpdmUuCiAJICovCi0JX19pOTE1X3BtdV9tYXliZV9zdGFydF90aW1lcihpOTE1KTsKLQlz cGluX3VubG9ja19pcnEoJmk5MTUtPnBtdS5sb2NrKTsKKwlfX2k5MTVfcG11X21heWJlX3N0YXJ0 X3RpbWVyKHBtdSk7CisJc3Bpbl91bmxvY2tfaXJxKCZwbXUtPmxvY2spOwogfQogCiBzdGF0aWMg dm9pZApAQCAtMjUxLDE1ICsyNTYsMTYgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGk5 MTVfc2FtcGxlKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0KIAkJY29udGFpbmVyX29mKGhydGltZXIsIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlLCBwbXUudGltZXIpOworCXN0cnVjdCBpOTE1X3BtdSAqcG11ID0gJmk5MTUtPnBtdTsK IAl1bnNpZ25lZCBpbnQgcGVyaW9kX25zOwogCWt0aW1lX3Qgbm93OwogCi0JaWYgKCFSRUFEX09O Q0UoaTkxNS0+cG11LnRpbWVyX2VuYWJsZWQpKQorCWlmICghUkVBRF9PTkNFKHBtdS0+dGltZXJf ZW5hYmxlZCkpCiAJCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKIAogCW5vdyA9IGt0aW1lX2dl dCgpOwotCXBlcmlvZF9ucyA9IGt0aW1lX3RvX25zKGt0aW1lX3N1Yihub3csIGk5MTUtPnBtdS50 aW1lcl9sYXN0KSk7Ci0JaTkxNS0+cG11LnRpbWVyX2xhc3QgPSBub3c7CisJcGVyaW9kX25zID0g a3RpbWVfdG9fbnMoa3RpbWVfc3ViKG5vdywgcG11LT50aW1lcl9sYXN0KSk7CisJcG11LT50aW1l cl9sYXN0ID0gbm93OwogCiAJLyoKIAkgKiBTdHJpY3RseSBzcGVha2luZyB0aGUgcGFzc2VkIGlu IHBlcmlvZCBtYXkgbm90IGJlIDEwMCUgYWNjdXJhdGUgZm9yCkBAIC00NDMsNiArNDQ5LDcgQEAg c3RhdGljIHU2NCBnZXRfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogI2lm IElTX0VOQUJMRUQoQ09ORklHX1BNKQogCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0gPSAm aTkxNS0+cnVudGltZV9wbTsKKwlzdHJ1Y3QgaTkxNV9wbXUgKnBtdSA9ICZpOTE1LT5wbXU7CiAJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1NjQgdmFs OwpAQCAtNDU4LDE2ICs0NjUsMTYgQEAgc3RhdGljIHU2NCBnZXRfcmM2KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCQkgKiBwcmV2aW91c2x5LgogCQkgKi8KIAotCQlzcGluX2xvY2tf aXJxc2F2ZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnBt dS0+bG9jaywgZmxhZ3MpOwogCi0JCWlmICh2YWwgPj0gaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVf U0FNUExFX1JDNl9FU1RJTUFURURdLmN1cikgewotCQkJaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVf U0FNUExFX1JDNl9FU1RJTUFURURdLmN1ciA9IDA7Ci0JCQlpOTE1LT5wbXUuc2FtcGxlW19fSTkx NV9TQU1QTEVfUkM2XS5jdXIgPSB2YWw7CisJCWlmICh2YWwgPj0gcG11LT5zYW1wbGVbX19JOTE1 X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXIpIHsKKwkJCXBtdS0+c2FtcGxlW19fSTkxNV9TQU1Q TEVfUkM2X0VTVElNQVRFRF0uY3VyID0gMDsKKwkJCXBtdS0+c2FtcGxlW19fSTkxNV9TQU1QTEVf UkM2XS5jdXIgPSB2YWw7CiAJCX0gZWxzZSB7Ci0JCQl2YWwgPSBpOTE1LT5wbXUuc2FtcGxlW19f STkxNV9TQU1QTEVfUkM2X0VTVElNQVRFRF0uY3VyOworCQkJdmFsID0gcG11LT5zYW1wbGVbX19J OTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXI7CiAJCX0KIAotCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwbXUtPmxvY2ssIGZsYWdzKTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgZGV2aWNlICprZGV2ID0g cnBtLT5rZGV2OwogCkBAIC00NzgsNyArNDg1LDcgQEAgc3RhdGljIHU2NCBnZXRfcmM2KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQkgKiBvbiB0b3Agb2YgdGhlIGxhc3Qga25vd24g cmVhbCB2YWx1ZSwgYXMgdGhlIGFwcHJveGltYXRlZCBSQzYKIAkJICogY291bnRlciB2YWx1ZS4K IAkJICovCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOworCQlz cGluX2xvY2tfaXJxc2F2ZSgmcG11LT5sb2NrLCBmbGFncyk7CiAKIAkJLyoKIAkJICogQWZ0ZXIg dGhlIGFib3ZlIGJyYW5jaCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UgZmFpbGVkCkBA IC00OTQsMjAgKzUwMSwyMCBAQCBzdGF0aWMgdTY0IGdldF9yYzYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiAJCWlmIChwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoa2RldikpIHsK IAkJCXZhbCA9IHBtX3J1bnRpbWVfc3VzcGVuZGVkX3RpbWUoa2Rldik7CiAKLQkJCWlmICghaTkx NS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX1JDNl9FU1RJTUFURURdLmN1cikKLQkJCQlpOTE1 LT5wbXUuc3VzcGVuZGVkX3RpbWVfbGFzdCA9IHZhbDsKKwkJCWlmICghcG11LT5zYW1wbGVbX19J OTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXIpCisJCQkJcG11LT5zdXNwZW5kZWRfdGltZV9s YXN0ID0gdmFsOwogCi0JCQl2YWwgLT0gaTkxNS0+cG11LnN1c3BlbmRlZF90aW1lX2xhc3Q7Ci0J CQl2YWwgKz0gaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX1JDNl0uY3VyOworCQkJdmFs IC09IHBtdS0+c3VzcGVuZGVkX3RpbWVfbGFzdDsKKwkJCXZhbCArPSBwbXUtPnNhbXBsZVtfX0k5 MTVfU0FNUExFX1JDNl0uY3VyOwogCi0JCQlpOTE1LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVf UkM2X0VTVElNQVRFRF0uY3VyID0gdmFsOwotCQl9IGVsc2UgaWYgKGk5MTUtPnBtdS5zYW1wbGVb X19JOTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXIpIHsKLQkJCXZhbCA9IGk5MTUtPnBtdS5z YW1wbGVbX19JOTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXI7CisJCQlwbXUtPnNhbXBsZVtf X0k5MTVfU0FNUExFX1JDNl9FU1RJTUFURURdLmN1ciA9IHZhbDsKKwkJfSBlbHNlIGlmIChwbXUt PnNhbXBsZVtfX0k5MTVfU0FNUExFX1JDNl9FU1RJTUFURURdLmN1cikgeworCQkJdmFsID0gcG11 LT5zYW1wbGVbX19JOTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXI7CiAJCX0gZWxzZSB7Ci0J CQl2YWwgPSBpOTE1LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVfUkM2XS5jdXI7CisJCQl2YWwg PSBwbXUtPnNhbXBsZVtfX0k5MTVfU0FNUExFX1JDNl0uY3VyOwogCQl9CiAKLQkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcG11LT5sb2NrLCBmbGFncyk7CiAJfQogCiAJcmV0dXJuIHZhbDsKQEAgLTUyMCw2 ICs1MjcsNyBAQCBzdGF0aWMgdTY0IF9faTkxNV9wbXVfZXZlbnRfcmVhZChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQogCQljb250 YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwgcG11LmJhc2UpOworCXN0cnVjdCBp OTE1X3BtdSAqcG11ID0gJmk5MTUtPnBtdTsKIAl1NjQgdmFsID0gMDsKIAogCWlmIChpc19lbmdp bmVfZXZlbnQoZXZlbnQpKSB7CkBAIC01NDIsMTIgKzU1MCwxMiBAQCBzdGF0aWMgdTY0IF9faTkx NV9wbXVfZXZlbnRfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJCXN3aXRjaCAoZXZl bnQtPmF0dHIuY29uZmlnKSB7CiAJCWNhc2UgSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWToKIAkJ CXZhbCA9Ci0JCQkgICBkaXZfdTY0KGk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9GUkVR X0FDVF0uY3VyLAorCQkJICAgZGl2X3U2NChwbXUtPnNhbXBsZVtfX0k5MTVfU0FNUExFX0ZSRVFf QUNUXS5jdXIsCiAJCQkJICAgVVNFQ19QRVJfU0VDIC8qIHRvIE1IeiAqLyk7CiAJCQlicmVhazsK IAkJY2FzZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZOgogCQkJdmFsID0KLQkJCSAgIGRp dl91NjQoaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX0ZSRVFfUkVRXS5jdXIsCisJCQkg ICBkaXZfdTY0KHBtdS0+c2FtcGxlW19fSTkxNV9TQU1QTEVfRlJFUV9SRVFdLmN1ciwKIAkJCQkg ICBVU0VDX1BFUl9TRUMgLyogdG8gTUh6ICovKTsKIAkJCWJyZWFrOwogCQljYXNlIEk5MTVfUE1V X0lOVEVSUlVQVFM6CkBAIC01ODIsMjQgKzU5MCwyNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9l bmFibGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0KIAkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqaTkxNSksIHBtdS5i YXNlKTsKIAl1bnNpZ25lZCBpbnQgYml0ID0gZXZlbnRfZW5hYmxlZF9iaXQoZXZlbnQpOworCXN0 cnVjdCBpOTE1X3BtdSAqcG11ID0gJmk5MTUtPnBtdTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwog Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPnBtdS5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2Nr X2lycXNhdmUoJnBtdS0+bG9jaywgZmxhZ3MpOwogCiAJLyoKIAkgKiBVcGRhdGUgdGhlIGJpdG1h c2sgb2YgZW5hYmxlZCBldmVudHMgYW5kIGluY3JlbWVudAogCSAqIHRoZSBldmVudCByZWZlcmVu Y2UgY291bnRlci4KIAkgKi8KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShpOTE1LT5wbXUuZW5h YmxlX2NvdW50KSAhPSBJOTE1X1BNVV9NQVNLX0JJVFMpOwotCUdFTV9CVUdfT04oYml0ID49IEFS UkFZX1NJWkUoaTkxNS0+cG11LmVuYWJsZV9jb3VudCkpOwotCUdFTV9CVUdfT04oaTkxNS0+cG11 LmVuYWJsZV9jb3VudFtiaXRdID09IH4wKTsKLQlpOTE1LT5wbXUuZW5hYmxlIHw9IEJJVF9VTEwo Yml0KTsKLQlpOTE1LT5wbXUuZW5hYmxlX2NvdW50W2JpdF0rKzsKKwlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShwbXUtPmVuYWJsZV9jb3VudCkgIT0gSTkxNV9QTVVfTUFTS19CSVRTKTsKKwlHRU1f QlVHX09OKGJpdCA+PSBBUlJBWV9TSVpFKHBtdS0+ZW5hYmxlX2NvdW50KSk7CisJR0VNX0JVR19P TihwbXUtPmVuYWJsZV9jb3VudFtiaXRdID09IH4wKTsKKwlwbXUtPmVuYWJsZSB8PSBCSVRfVUxM KGJpdCk7CisJcG11LT5lbmFibGVfY291bnRbYml0XSsrOwogCiAJLyoKIAkgKiBTdGFydCB0aGUg c2FtcGxpbmcgdGltZXIgaWYgbmVlZGVkIGFuZCBub3QgYWxyZWFkeSBlbmFibGVkLgogCSAqLwot CV9faTkxNV9wbXVfbWF5YmVfc3RhcnRfdGltZXIoaTkxNSk7CisJX19pOTE1X3BtdV9tYXliZV9z dGFydF90aW1lcihwbXUpOwogCiAJLyoKIAkgKiBGb3IgcGVyLWVuZ2luZSBldmVudHMgdGhlIGJp dG1hc2sgYW5kIHJlZmVyZW5jZSBjb3VudGluZwpAQCAtNjI1LDcgKzYzNCw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJCWVuZ2luZS0+ cG11LmVuYWJsZV9jb3VudFtzYW1wbGVdKys7CiAJfQogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwbXUt PmxvY2ssIGZsYWdzKTsKIAogCS8qCiAJICogU3RvcmUgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1 ZSBzbyB3ZSBjYW4gcmVwb3J0IHRoZSBjb3JyZWN0IGRlbHRhCkBAIC02NDAsOSArNjQ5LDEwIEBA IHN0YXRpYyB2b2lkIGk5MTVfcG11X2Rpc2FibGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KIAkJY29udGFpbmVyX29mKGV2ZW50LT5w bXUsIHR5cGVvZigqaTkxNSksIHBtdS5iYXNlKTsKIAl1bnNpZ25lZCBpbnQgYml0ID0gZXZlbnRf ZW5hYmxlZF9iaXQoZXZlbnQpOworCXN0cnVjdCBpOTE1X3BtdSAqcG11ID0gJmk5MTUtPnBtdTsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPnBtdS5s b2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnBtdS0+bG9jaywgZmxhZ3MpOwogCiAJ aWYgKGlzX2VuZ2luZV9ldmVudChldmVudCkpIHsKIAkJdTggc2FtcGxlID0gZW5naW5lX2V2ZW50 X3NhbXBsZShldmVudCk7CkBAIC02NjQsMTggKzY3NCwxOCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Bt dV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAkJCWVuZ2luZS0+cG11LmVuYWJs ZSAmPSB+QklUKHNhbXBsZSk7CiAJfQogCi0JR0VNX0JVR19PTihiaXQgPj0gQVJSQVlfU0laRShp OTE1LT5wbXUuZW5hYmxlX2NvdW50KSk7Ci0JR0VNX0JVR19PTihpOTE1LT5wbXUuZW5hYmxlX2Nv dW50W2JpdF0gPT0gMCk7CisJR0VNX0JVR19PTihiaXQgPj0gQVJSQVlfU0laRShwbXUtPmVuYWJs ZV9jb3VudCkpOworCUdFTV9CVUdfT04ocG11LT5lbmFibGVfY291bnRbYml0XSA9PSAwKTsKIAkv KgogCSAqIERlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGFuZCBjbGVhciB0aGUgZW5hYmxl ZAogCSAqIGJpdG1hc2sgd2hlbiB0aGUgbGFzdCBsaXN0ZW5lciBvbiBhbiBldmVudCBnb2VzIGF3 YXkuCiAJICovCi0JaWYgKC0taTkxNS0+cG11LmVuYWJsZV9jb3VudFtiaXRdID09IDApIHsKLQkJ aTkxNS0+cG11LmVuYWJsZSAmPSB+QklUX1VMTChiaXQpOwotCQlpOTE1LT5wbXUudGltZXJfZW5h YmxlZCAmPSBwbXVfbmVlZHNfdGltZXIoaTkxNSwgdHJ1ZSk7CisJaWYgKC0tcG11LT5lbmFibGVf Y291bnRbYml0XSA9PSAwKSB7CisJCXBtdS0+ZW5hYmxlICY9IH5CSVRfVUxMKGJpdCk7CisJCXBt dS0+dGltZXJfZW5hYmxlZCAmPSBwbXVfbmVlZHNfdGltZXIocG11LCB0cnVlKTsKIAl9CiAKLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOworCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnBtdS0+bG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1 X3BtdV9ldmVudF9zdGFydChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykKQEAg LTgyNCw4ICs4MzQsOSBAQCBhZGRfcG11X2F0dHIoc3RydWN0IHBlcmZfcG11X2V2ZW50c19hdHRy ICphdHRyLCBjb25zdCBjaGFyICpuYW1lLAogfQogCiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq KgotY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CitjcmVhdGVfZXZlbnRfYXR0cmlidXRlcyhzdHJ1Y3QgaTkxNV9wbXUgKnBtdSkKIHsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGNvbnRhaW5lcl9vZihwbXUsIHR5cGVvZigqaTkx NSksIHBtdSk7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAJCXU2NCBjb25maWc7CiAJCWNvbnN0 IGNoYXIgKm5hbWU7CkBAIC05MzksOCArOTUwLDggQEAgY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCX0KIAl9CiAKLQlpOTE1LT5wbXUuaTkx NV9hdHRyID0gaTkxNV9hdHRyOwotCWk5MTUtPnBtdS5wbXVfYXR0ciA9IHBtdV9hdHRyOworCXBt dS0+aTkxNV9hdHRyID0gaTkxNV9hdHRyOworCXBtdS0+cG11X2F0dHIgPSBwbXVfYXR0cjsKIAog CXJldHVybiBhdHRyOwogCkBAIC05NTYsNyArOTY3LDcgQEAgZXJyOjsKIAlyZXR1cm4gTlVMTDsK IH0KIAotc3RhdGljIHZvaWQgZnJlZV9ldmVudF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQorc3RhdGljIHZvaWQgZnJlZV9ldmVudF9hdHRyaWJ1dGVzKHN0cnVjdCBp OTE1X3BtdSAqcG11KQogewogCXN0cnVjdCBhdHRyaWJ1dGUgKiphdHRyX2l0ZXIgPSBpOTE1X3Bt dV9ldmVudHNfYXR0cl9ncm91cC5hdHRyczsKIApAQCAtOTY0LDEyICs5NzUsMTIgQEAgc3RhdGlj IHZvaWQgZnJlZV9ldmVudF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogCQlrZnJlZSgoKmF0dHJfaXRlciktPm5hbWUpOwogCiAJa2ZyZWUoaTkxNV9wbXVfZXZlbnRz X2F0dHJfZ3JvdXAuYXR0cnMpOwotCWtmcmVlKGk5MTUtPnBtdS5pOTE1X2F0dHIpOwotCWtmcmVl KGk5MTUtPnBtdS5wbXVfYXR0cik7CisJa2ZyZWUocG11LT5pOTE1X2F0dHIpOworCWtmcmVlKHBt dS0+cG11X2F0dHIpOwogCiAJaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAuYXR0cnMgPSBOVUxM OwotCWk5MTUtPnBtdS5pOTE1X2F0dHIgPSBOVUxMOwotCWk5MTUtPnBtdS5wbXVfYXR0ciA9IE5V TEw7CisJcG11LT5pOTE1X2F0dHIgPSBOVUxMOworCXBtdS0+cG11X2F0dHIgPSBOVUxMOwogfQog CiBzdGF0aWMgaW50IGk5MTVfcG11X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0 IGhsaXN0X25vZGUgKm5vZGUpCkBAIC0xMDA2LDcgKzEwMTcsNyBAQCBzdGF0aWMgaW50IGk5MTVf cG11X2NwdV9vZmZsaW5lKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2Rl KQogCiBzdGF0aWMgZW51bSBjcHVocF9zdGF0ZSBjcHVocF9zbG90ID0gQ1BVSFBfSU5WQUxJRDsK IAotc3RhdGljIGludCBpOTE1X3BtdV9yZWdpc3Rlcl9jcHVocF9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKK3N0YXRpYyBpbnQgaTkxNV9wbXVfcmVnaXN0ZXJfY3B1aHBfc3Rh dGUoc3RydWN0IGk5MTVfcG11ICpwbXUpCiB7CiAJZW51bSBjcHVocF9zdGF0ZSBzbG90OwogCWlu dCByZXQ7CkBAIC0xMDE5LDcgKzEwMzAsNyBAQCBzdGF0aWMgaW50IGk5MTVfcG11X3JlZ2lzdGVy X2NwdWhwX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlyZXR1cm4gcmV0 OwogCiAJc2xvdCA9IHJldDsKLQlyZXQgPSBjcHVocF9zdGF0ZV9hZGRfaW5zdGFuY2Uoc2xvdCwg Jmk5MTUtPnBtdS5ub2RlKTsKKwlyZXQgPSBjcHVocF9zdGF0ZV9hZGRfaW5zdGFuY2Uoc2xvdCwg JnBtdS0+bm9kZSk7CiAJaWYgKHJldCkgewogCQljcHVocF9yZW1vdmVfbXVsdGlfc3RhdGUoc2xv dCk7CiAJCXJldHVybiByZXQ7CkBAIC0xMDI5LDE1ICsxMDQwLDE2IEBAIHN0YXRpYyBpbnQgaTkx NV9wbXVfcmVnaXN0ZXJfY3B1aHBfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGk5MTVfcG11X3VucmVnaXN0ZXJfY3B1aHBf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitzdGF0aWMgdm9pZCBpOTE1X3Bt dV91bnJlZ2lzdGVyX2NwdWhwX3N0YXRlKHN0cnVjdCBpOTE1X3BtdSAqcG11KQogewogCVdBUk5f T04oY3B1aHBfc2xvdCA9PSBDUFVIUF9JTlZBTElEKTsKLQlXQVJOX09OKGNwdWhwX3N0YXRlX3Jl bW92ZV9pbnN0YW5jZShjcHVocF9zbG90LCAmaTkxNS0+cG11Lm5vZGUpKTsKKwlXQVJOX09OKGNw dWhwX3N0YXRlX3JlbW92ZV9pbnN0YW5jZShjcHVocF9zbG90LCAmcG11LT5ub2RlKSk7CiAJY3B1 aHBfcmVtb3ZlX211bHRpX3N0YXRlKGNwdWhwX3Nsb3QpOwogfQogCiB2b2lkIGk5MTVfcG11X3Jl Z2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogeworCXN0cnVjdCBpOTE1X3Bt dSAqcG11ID0gJmk5MTUtPnBtdTsKIAlpbnQgcmV0OwogCiAJaWYgKElOVEVMX0dFTihpOTE1KSA8 PSAyKSB7CkBAIC0xMDQ1LDU2ICsxMDU3LDU4IEBAIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCXJldHVybjsKIAl9CiAKLQlpOTE1X3BtdV9l dmVudHNfYXR0cl9ncm91cC5hdHRycyA9IGNyZWF0ZV9ldmVudF9hdHRyaWJ1dGVzKGk5MTUpOwor CWk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzID0gY3JlYXRlX2V2ZW50X2F0dHJpYnV0 ZXMocG11KTsKIAlpZiAoIWk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzKSB7CiAJCXJl dCA9IC1FTk9NRU07CiAJCWdvdG8gZXJyOwogCX0KIAotCWk5MTUtPnBtdS5iYXNlLmF0dHJfZ3Jv dXBzCT0gaTkxNV9wbXVfYXR0cl9ncm91cHM7Ci0JaTkxNS0+cG11LmJhc2UudGFza19jdHhfbnIJ PSBwZXJmX2ludmFsaWRfY29udGV4dDsKLQlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0CT0gaTkx NV9wbXVfZXZlbnRfaW5pdDsKLQlpOTE1LT5wbXUuYmFzZS5hZGQJCT0gaTkxNV9wbXVfZXZlbnRf YWRkOwotCWk5MTUtPnBtdS5iYXNlLmRlbAkJPSBpOTE1X3BtdV9ldmVudF9kZWw7Ci0JaTkxNS0+ cG11LmJhc2Uuc3RhcnQJCT0gaTkxNV9wbXVfZXZlbnRfc3RhcnQ7Ci0JaTkxNS0+cG11LmJhc2Uu c3RvcAkJPSBpOTE1X3BtdV9ldmVudF9zdG9wOwotCWk5MTUtPnBtdS5iYXNlLnJlYWQJCT0gaTkx NV9wbXVfZXZlbnRfcmVhZDsKLQlpOTE1LT5wbXUuYmFzZS5ldmVudF9pZHgJPSBpOTE1X3BtdV9l dmVudF9ldmVudF9pZHg7Ci0KLQlzcGluX2xvY2tfaW5pdCgmaTkxNS0+cG11LmxvY2spOwotCWhy dGltZXJfaW5pdCgmaTkxNS0+cG11LnRpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9E RV9SRUwpOwotCWk5MTUtPnBtdS50aW1lci5mdW5jdGlvbiA9IGk5MTVfc2FtcGxlOwotCi0JcmV0 ID0gcGVyZl9wbXVfcmVnaXN0ZXIoJmk5MTUtPnBtdS5iYXNlLCAiaTkxNSIsIC0xKTsKKwlwbXUt PmJhc2UuYXR0cl9ncm91cHMJPSBpOTE1X3BtdV9hdHRyX2dyb3VwczsKKwlwbXUtPmJhc2UudGFz a19jdHhfbnIJPSBwZXJmX2ludmFsaWRfY29udGV4dDsKKwlwbXUtPmJhc2UuZXZlbnRfaW5pdAk9 IGk5MTVfcG11X2V2ZW50X2luaXQ7CisJcG11LT5iYXNlLmFkZAkJPSBpOTE1X3BtdV9ldmVudF9h ZGQ7CisJcG11LT5iYXNlLmRlbAkJPSBpOTE1X3BtdV9ldmVudF9kZWw7CisJcG11LT5iYXNlLnN0 YXJ0CQk9IGk5MTVfcG11X2V2ZW50X3N0YXJ0OworCXBtdS0+YmFzZS5zdG9wCQk9IGk5MTVfcG11 X2V2ZW50X3N0b3A7CisJcG11LT5iYXNlLnJlYWQJCT0gaTkxNV9wbXVfZXZlbnRfcmVhZDsKKwlw bXUtPmJhc2UuZXZlbnRfaWR4CT0gaTkxNV9wbXVfZXZlbnRfZXZlbnRfaWR4OworCisJc3Bpbl9s b2NrX2luaXQoJnBtdS0+bG9jayk7CisJaHJ0aW1lcl9pbml0KCZwbXUtPnRpbWVyLCBDTE9DS19N T05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOworCXBtdS0+dGltZXIuZnVuY3Rpb24gPSBpOTE1 X3NhbXBsZTsKKworCXJldCA9IHBlcmZfcG11X3JlZ2lzdGVyKCZwbXUtPmJhc2UsICJpOTE1Iiwg LTEpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyOwogCi0JcmV0ID0gaTkxNV9wbXVfcmVnaXN0ZXJf Y3B1aHBfc3RhdGUoaTkxNSk7CisJcmV0ID0gaTkxNV9wbXVfcmVnaXN0ZXJfY3B1aHBfc3RhdGUo cG11KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl91bnJlZzsKIAogCXJldHVybjsKIAogZXJyX3Vu cmVnOgotCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUtPnBtdS5iYXNlKTsKKwlwZXJmX3BtdV91 bnJlZ2lzdGVyKCZwbXUtPmJhc2UpOwogZXJyOgotCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQg PSBOVUxMOwotCWZyZWVfZXZlbnRfYXR0cmlidXRlcyhpOTE1KTsKKwlwbXUtPmJhc2UuZXZlbnRf aW5pdCA9IE5VTEw7CisJZnJlZV9ldmVudF9hdHRyaWJ1dGVzKHBtdSk7CiAJRFJNX05PVEUoIkZh aWxlZCB0byByZWdpc3RlciBQTVUhIChlcnI9JWQpXG4iLCByZXQpOwogfQogCiB2b2lkIGk5MTVf cG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JaWYgKCFp OTE1LT5wbXUuYmFzZS5ldmVudF9pbml0KQorCXN0cnVjdCBpOTE1X3BtdSAqcG11ID0gJmk5MTUt PnBtdTsKKworCWlmICghcG11LT5iYXNlLmV2ZW50X2luaXQpCiAJCXJldHVybjsKIAotCVdBUk5f T04oaTkxNS0+cG11LmVuYWJsZSk7CisJV0FSTl9PTihwbXUtPmVuYWJsZSk7CiAKLQlocnRpbWVy X2NhbmNlbCgmaTkxNS0+cG11LnRpbWVyKTsKKwlocnRpbWVyX2NhbmNlbCgmcG11LT50aW1lcik7 CiAKLQlpOTE1X3BtdV91bnJlZ2lzdGVyX2NwdWhwX3N0YXRlKGk5MTUpOworCWk5MTVfcG11X3Vu cmVnaXN0ZXJfY3B1aHBfc3RhdGUocG11KTsKIAotCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUt PnBtdS5iYXNlKTsKLQlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0ID0gTlVMTDsKLQlmcmVlX2V2 ZW50X2F0dHJpYnV0ZXMoaTkxNSk7CisJcGVyZl9wbXVfdW5yZWdpc3RlcigmcG11LT5iYXNlKTsK KwlwbXUtPmJhc2UuZXZlbnRfaW5pdCA9IE5VTEw7CisJZnJlZV9ldmVudF9hdHRyaWJ1dGVzKHBt dSk7CiB9Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA==