From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 23/34] drm/i915: Share per-timeline HWSP using a slab suballocator Date: Mon, 21 Jan 2019 22:21:06 +0000 Message-ID: <20190121222117.23305-24-chris@chris-wilson.co.uk> References: <20190121222117.23305-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id C07A36E23D for ; Mon, 21 Jan 2019 22:21:49 +0000 (UTC) In-Reply-To: <20190121222117.23305-1-chris@chris-wilson.co.uk> 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 SWYgd2UgcmVzdHJpY3Qgb3Vyc2VsdmVzIHRvIG9ubHkgdXNpbmcgYSBjYWNoZWxpbmUgZm9yIGVh Y2ggdGltZWxpbmUncwpIV1NQICh3ZSBjb3VsZCBnbyBzbWFsbGVyLCBidXQgd2FudCB0byBhdm9p ZCBuZWVkbGVzcyBwb2xsdXRpbmcKY2FjaGVsaW5lcyBvbiBkaWZmZXJlbnQgZW5naW5lcyBiZXR3 ZWVuIGRpZmZlcmVudCBjb250ZXh0cyksIHRoZW4gd2UgY2FuCnN1YmFsbG9jYXRlIGEgc2luZ2xl IDRrIHBhZ2UgaW50byA2NCBkaWZmZXJlbnQgdGltZWxpbmUgSFdTUC4gQnkKdHJlYXRpbmcgZWFj aCBmcmVzaCBhbGxvY2F0aW9uIGFzIGEgc2xhYiBvZiA2NCBlbnRyaWVzLCB3ZSBjYW4ga2VlcCBp dAphcm91bmQgZm9yIHRoZSBuZXh0IDY0IGFsbG9jYXRpb24gYXR0ZW1wdHMgdW50aWwgd2UgbmVl ZCB0byByZWZyZXNoIHRoZQpzbGFiIGNhY2hlLgoKSm9obiBIYXJyaXNvbiBub3RlZCB0aGUgaXNz dWUgb2YgZnJhZ21lbnRhdGlvbiBsZWFkaW5nIHRvIHRoZSBzYW1lIHdvcnN0CmNhc2UgcGVyZm9y bWFuY2Ugb2Ygb25lIHBhZ2UgcGVyIHRpbWVsaW5lIGFzIGJlZm9yZSwgd2hpY2ggY2FuIGJlCm1p dGlnYXRlZCBieSBhZG9wdGluZyBhIGZyZWVsaXN0LgoKdjI6IEtlZXAgYWxsIHBhcnRpYWxseSBh bGxvY2F0ZWQgSFdTUCBvbiBhIGZyZWVsaXN0CgpUaGlzIGlzIHN0aWxsIHdpdGhvdXQgbWlncmF0 aW9uLCBzbyBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHN5c3RlbSB0byBlbmQKdXAgd2l0aCBlYWNo IHRpbWVsaW5lIGluIGl0cyBvd24gcGFnZSwgYnV0IHdlIGVuc3VyZSB0aGF0IG5vIG5ldwphbGxv Y2F0aW9uIHdvdWxkIG5lZWRsZXNzIGFsbG9jYXRlIGEgZnJlc2ggcGFnZSEKCnYzOiBUaHJvdyBh IHNlbGZ0ZXN0IGF0IHRoZSBhbGxvY2F0b3IgdG8gdHJ5IGFuZCBjYXRjaCBpbnZhbGlkIGNhY2hl bGluZQpyZXVzZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgpDYzogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDQg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jICAgICAgICAgIHwgMTE3ICsr KysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oICAgICAg ICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgICAg ICB8ICAxMiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmMg IHwgIDMzICsrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20u aCAgfCAgIDMgKwogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jICAg IHwgMTQwICsrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyODIgaW5zZXJ0aW9u cygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMzY0MDY3 ZjgxMWY3Li5jMDBlYWYyODg5ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTk3OCw2 ICsxOTc4LDEwIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJc3RydWN0IGk5MTVfZ3Rf dGltZWxpbmVzIHsKIAkJCXN0cnVjdCBtdXRleCBtdXRleDsgLyogcHJvdGVjdHMgbGlzdCwgdGFp bnRlZCBieSBHUFUgKi8KIAkJCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCQkJLyogUGFjayBt dWx0aXBsZSB0aW1lbGluZXMnIHNlcW5vcyBpbnRvIHRoZSBzYW1lIHBhZ2UgKi8KKwkJCXNwaW5s b2NrX3QgaHdzcF9sb2NrOworCQkJc3RydWN0IGxpc3RfaGVhZCBod3NwX2ZyZWVfbGlzdDsKIAkJ fSB0aW1lbGluZXM7CiAKIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfcmluZ3M7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKaW5kZXggOGQ1NzkyMzExYThmLi42OWVlMzNkZmEzNDAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKQEAgLTksNiArOSwxMiBAQAogI2lu Y2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKICNpbmNsdWRlICJpOTE1X3N5bmNtYXAuaCIKIAorc3Ry dWN0IGk5MTVfdGltZWxpbmVfaHdzcCB7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJc3RydWN0 IGxpc3RfaGVhZCBmcmVlX2xpbms7CisJdTY0IGZyZWVfYml0bWFwOworfTsKKwogc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqX19od3NwX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC0yNywyOCArMzMsOTIg QEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19od3NwX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCXJldHVybiB2bWE7CiB9CiAKLXN0YXRpYyBpbnQgaHdzcF9hbGxvYyhz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoK K2h3c3BfYWxsb2Moc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLCBpbnQgKm9mZnNldCkK IHsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHRpbWVsaW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSAmaTkx NS0+Z3QudGltZWxpbmVzOworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3A7CisJaW50 IGNhY2hlbGluZTsKIAotCXZtYSA9IF9faHdzcF9hbGxvYyh0aW1lbGluZS0+aTkxNSk7Ci0JaWYg KElTX0VSUih2bWEpKQotCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCUJVSUxEX0JVR19PTihCSVRT X1BFUl9UWVBFKHU2NCkgKiBDQUNIRUxJTkVfQllURVMgPiBQQUdFX1NJWkUpOwogCi0JdGltZWxp bmUtPmh3c3BfZ2d0dCA9IHZtYTsKLQl0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSAwOworCXNwaW5f bG9jaygmZ3QtPmh3c3BfbG9jayk7CiAKLQlyZXR1cm4gMDsKKwkvKiBod3NwX2ZyZWVfbGlzdCBv bmx5IGNvbnRhaW5zIEhXU1AgdGhhdCBoYXZlIGF2YWlsYWJsZSBjYWNoZWxpbmVzICovCisJaHdz cCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZ3QtPmh3c3BfZnJlZV9saXN0LAorCQkJCQl0 eXBlb2YoKmh3c3ApLCBmcmVlX2xpbmspOworCWlmICghaHdzcCkgeworCQlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKKworCQlzcGluX3VubG9jaygmZ3QtPmh3c3BfbG9jayk7CisKKwkJaHdzcCA9IGtt YWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghaHdzcCkKKwkJCXJldHVy biBFUlJfUFRSKC1FTk9NRU0pOworCisJCXZtYSA9IF9faHdzcF9hbGxvYyhpOTE1KTsKKwkJaWYg KElTX0VSUih2bWEpKSB7CisJCQlrZnJlZShod3NwKTsKKwkJCXJldHVybiB2bWE7CisJCX0KKwor CQl2bWEtPnByaXZhdGUgPSBod3NwOworCQlod3NwLT52bWEgPSB2bWE7CisJCWh3c3AtPmZyZWVf Yml0bWFwID0gfjB1bGw7CisKKwkJc3Bpbl9sb2NrKCZndC0+aHdzcF9sb2NrKTsKKwkJbGlzdF9h ZGQoJmh3c3AtPmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7CisJfQorCisJR0VNX0JV R19PTighaHdzcC0+ZnJlZV9iaXRtYXApOworCWNhY2hlbGluZSA9IF9fZmZzNjQoaHdzcC0+ZnJl ZV9iaXRtYXApOworCWh3c3AtPmZyZWVfYml0bWFwICY9IH5CSVRfVUxMKGNhY2hlbGluZSk7CisJ aWYgKCFod3NwLT5mcmVlX2JpdG1hcCkKKwkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7CisK KwlzcGluX3VubG9jaygmZ3QtPmh3c3BfbG9jayk7CisKKwlHRU1fQlVHX09OKGh3c3AtPnZtYS0+ cHJpdmF0ZSAhPSBod3NwKTsKKworCSpvZmZzZXQgPSBjYWNoZWxpbmUgKiBDQUNIRUxJTkVfQllU RVM7CisJcmV0dXJuIGh3c3AtPnZtYTsKK30KKworc3RhdGljIHZvaWQgaHdzcF9mcmVlKHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKK3sKKwlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMg Kmd0ID0gJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGluZXM7CisJc3RydWN0IGk5MTVfdGltZWxp bmVfaHdzcCAqaHdzcDsKKworCWh3c3AgPSBpOTE1X3RpbWVsaW5lX2h3c3AodGltZWxpbmUpOwor CWlmICghaHdzcCkgLyogbGVhdmUgZ2xvYmFsIEhXU1AgYWxvbmUhICovCisJCXJldHVybjsKKwor CXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7CisKKwkvKiBBcyBhIGNhY2hlbGluZSBiZWNvbWVz IGF2YWlsYWJsZSwgcHVibGlzaCB0aGUgSFdTUCBvbiB0aGUgZnJlZWxpc3QgKi8KKwlpZiAoIWh3 c3AtPmZyZWVfYml0bWFwKQorCQlsaXN0X2FkZF90YWlsKCZod3NwLT5mcmVlX2xpbmssICZndC0+ aHdzcF9mcmVlX2xpc3QpOworCisJaHdzcC0+ZnJlZV9iaXRtYXAgfD0gQklUX1VMTCh0aW1lbGlu ZS0+aHdzcF9vZmZzZXQgLyBDQUNIRUxJTkVfQllURVMpOworCisJLyogQW5kIGlmIG5vIG9uZSBp cyBsZWZ0IHVzaW5nIGl0LCBnaXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3RlbSAqLworCWlm IChod3NwLT5mcmVlX2JpdG1hcCA9PSB+MHVsbCkgeworCQlpOTE1X3ZtYV9wdXQoaHdzcC0+dm1h KTsKKwkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7CisJCWtmcmVlKGh3c3ApOworCX0KKwor CXNwaW5fdW5sb2NrKCZndC0+aHdzcF9sb2NrKTsKIH0KIAogaW50IGk5MTVfdGltZWxpbmVfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAgICAgIHN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0aW1lbGluZSwKIAkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0JCSAgICAgICBz dHJ1Y3QgaTkxNV92bWEgKmdsb2JhbF9od3NwKQorCQkgICAgICAgc3RydWN0IGk5MTVfdm1hICpo d3NwKQogewogCXN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSAmaTkxNS0+Z3QudGltZWxp bmVzOwogCXZvaWQgKnZhZGRyOwotCWludCBlcnI7CiAKIAkvKgogCSAqIElkZWFsbHkgd2Ugd2Fu dCBhIHNldCBvZiBlbmdpbmVzIG9uIGEgc2luZ2xlIGxlYWYgYXMgd2UgZXhwZWN0CkBAIC02NCwx OCArMTM0LDE4IEBAIGludCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCiAJdGltZWxpbmUtPm5hbWUgPSBuYW1lOwogCXRpbWVsaW5lLT5waW5fY291bnQg PSAwOwogCi0JaWYgKGdsb2JhbF9od3NwKSB7Ci0JCXRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1 X3ZtYV9nZXQoZ2xvYmFsX2h3c3ApOwotCQl0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBJOTE1X0dF TV9IV1NfU0VRTk9fQUREUjsKLQl9IGVsc2UgewotCQllcnIgPSBod3NwX2FsbG9jKHRpbWVsaW5l KTsKLQkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CisJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0g STkxNV9HRU1fSFdTX1NFUU5PX0FERFI7CisJaWYgKCFod3NwKSB7CisJCWh3c3AgPSBod3NwX2Fs bG9jKHRpbWVsaW5lLCAmdGltZWxpbmUtPmh3c3Bfb2Zmc2V0KTsKKwkJaWYgKElTX0VSUihod3Nw KSkKKwkJCXJldHVybiBQVFJfRVJSKGh3c3ApOwogCX0KKwl0aW1lbGluZS0+aHdzcF9nZ3R0ID0g aTkxNV92bWFfZ2V0KGh3c3ApOwogCi0JdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh0 aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmosIEk5MTVfTUFQX1dCKTsKKwl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGh3c3AtPm9iaiwgSTkxNV9NQVBfV0IpOwogCWlmIChJU19FUlIodmFk ZHIpKSB7Ci0JCWk5MTVfdm1hX3B1dCh0aW1lbGluZS0+aHdzcF9nZ3R0KTsKKwkJaHdzcF9mcmVl KHRpbWVsaW5lKTsKKwkJaTkxNV92bWFfcHV0KGh3c3ApOwogCQlyZXR1cm4gUFRSX0VSUih2YWRk cik7CiAJfQogCkBAIC0xMDUsNiArMTc1LDkgQEAgdm9pZCBpOTE1X3RpbWVsaW5lc19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCW11dGV4X2luaXQoJmd0LT5tdXRleCk7CiAJ SU5JVF9MSVNUX0hFQUQoJmd0LT5saXN0KTsKIAorCXNwaW5fbG9ja19pbml0KCZndC0+aHdzcF9s b2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmZ3QtPmh3c3BfZnJlZV9saXN0KTsKKwogCS8qIHZpYSBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKCkgKi8KIAlpOTE1X2dlbV9zaHJpbmtlcl90YWludHNfbXV0 ZXgoaTkxNSwgJmd0LT5tdXRleCk7CiB9CkBAIC0xNDQsMTIgKzIxNywxMyBAQCB2b2lkIGk5MTVf dGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCiAJR0VNX0JVR19P Tih0aW1lbGluZS0+cGluX2NvdW50KTsKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0aW1lbGlu ZS0+cmVxdWVzdHMpKTsKIAotCWk5MTVfc3luY21hcF9mcmVlKCZ0aW1lbGluZS0+c3luYyk7Ci0K IAltdXRleF9sb2NrKCZndC0+bXV0ZXgpOwogCWxpc3RfZGVsKCZ0aW1lbGluZS0+bGluayk7CiAJ bXV0ZXhfdW5sb2NrKCZndC0+bXV0ZXgpOwogCisJaTkxNV9zeW5jbWFwX2ZyZWUoJnRpbWVsaW5l LT5zeW5jKTsKKwlod3NwX2ZyZWUodGltZWxpbmUpOworCiAJaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOwogCWk5MTVfdm1hX3B1dCh0aW1lbGluZS0+ aHdzcF9nZ3R0KTsKIH0KQEAgLTIyNiw2ICszMDAsNyBAQCB2b2lkIGk5MTVfdGltZWxpbmVzX2Zp bmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJc3RydWN0IGk5MTVfZ3RfdGltZWxp bmVzICpndCA9ICZpOTE1LT5ndC50aW1lbGluZXM7CiAKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5 KCZndC0+bGlzdCkpOworCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmd0LT5od3NwX2ZyZWVfbGlz dCkpOwogCiAJbXV0ZXhfZGVzdHJveSgmZ3QtPm11dGV4KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdGltZWxpbmUuaAppbmRleCAwYzM3MzlkNTNkNzkuLmFiNzM2ZTJlNTcwNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImk5 MTVfdXRpbHMuaCIKIAogc3RydWN0IGk5MTVfdm1hOworc3RydWN0IGk5MTVfdGltZWxpbmVfaHdz cDsKIAogc3RydWN0IGk5MTVfdGltZWxpbmUgewogCXU2NCBmZW5jZV9jb250ZXh0OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmgKaW5kZXggNTc5M2FiZTUwOWEyLi40NmViODE4ZWQzMDkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92bWEuaApAQCAtMjI2LDYgKzIyNiwxOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBp OTE1X2dndHRfcGluX2JpYXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIGk5MTVfdm1f dG9fZ2d0dCh2bWEtPnZtKS0+cGluX2JpYXM7CiB9CiAKKy8qIFhYWCBpbmxpbmUgc3BhZ2hldHRp ICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKgoraTkxNV90aW1l bGluZV9od3NwKGNvbnN0IHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwlyZXR1cm4gdGwt Pmh3c3BfZ2d0dC0+cHJpdmF0ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGk5MTVfdGltZWxp bmVfaXNfZ2xvYmFsKGNvbnN0IHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwlyZXR1cm4g IWk5MTVfdGltZWxpbmVfaHdzcCh0bCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVf dm1hICppOTE1X3ZtYV9nZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJaTkxNV9nZW1fb2Jq ZWN0X2dldCh2bWEtPm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9yYW5kb20uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X3JhbmRvbS5jCmluZGV4IDFmNDE1Y2U0NzAxOC4uNzE2YTNmMTlmMDMwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uYwpAQCAtNDEsMTggKzQxLDM3IEBA IHU2NCBpOTE1X3ByYW5kb21fdTY0X3N0YXRlKHN0cnVjdCBybmRfc3RhdGUgKnJuZCkKIAlyZXR1 cm4geDsKIH0KIAotdm9pZCBpOTE1X3JhbmRvbV9yZW9yZGVyKHVuc2lnbmVkIGludCAqb3JkZXIs IHVuc2lnbmVkIGludCBjb3VudCwKLQkJCSBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSkKK3ZvaWQg aTkxNV9wcmFuZG9tX3NodWZmbGUodm9pZCAqYXJyLCBzaXplX3QgZWxzeiwgc2l6ZV90IGNvdW50 LAorCQkJICBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSkKIHsKLQl1bnNpZ25lZCBpbnQgaSwgajsK KwljaGFyIHN0YWNrWzEyOF07CisKKwlpZiAoV0FSTl9PTihlbHN6ID4gc2l6ZW9mKHN0YWNrKSB8 fCBjb3VudCA+IFUzMl9NQVgpKQorCQlyZXR1cm47CisKKwlpZiAoIWVsc3ogfHwgIWNvdW50KQor CQlyZXR1cm47CisKKwkvKiBGaXNoZXItWWF0ZXMgc2h1ZmZsZSBjb3VydGVzeSBvZiBLbnV0aCAq LworCXdoaWxlICgtLWNvdW50KSB7CisJCXNpemVfdCBzd3A7CisKKwkJc3dwID0gaTkxNV9wcmFu ZG9tX3UzMl9tYXhfc3RhdGUoY291bnQgKyAxLCBzdGF0ZSk7CisJCWlmIChzd3AgPT0gY291bnQp CisJCQljb250aW51ZTsKIAotCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0JCUJVSUxE X0JVR19PTihzaXplb2YodW5zaWduZWQgaW50KSA+IHNpemVvZih1MzIpKTsKLQkJaiA9IGk5MTVf cHJhbmRvbV91MzJfbWF4X3N0YXRlKGNvdW50LCBzdGF0ZSk7Ci0JCXN3YXAob3JkZXJbaV0sIG9y ZGVyW2pdKTsKKwkJbWVtY3B5KHN0YWNrLCBhcnIgKyBjb3VudCAqIGVsc3osIGVsc3opOworCQlt ZW1jcHkoYXJyICsgY291bnQgKiBlbHN6LCBhcnIgKyBzd3AgKiBlbHN6LCBlbHN6KTsKKwkJbWVt Y3B5KGFyciArIHN3cCAqIGVsc3osIHN0YWNrLCBlbHN6KTsKIAl9CiB9CiAKK3ZvaWQgaTkxNV9y YW5kb21fcmVvcmRlcih1bnNpZ25lZCBpbnQgKm9yZGVyLCB1bnNpZ25lZCBpbnQgY291bnQsCisJ CQkgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpCit7CisJaTkxNV9wcmFuZG9tX3NodWZmbGUob3Jk ZXIsIHNpemVvZigqb3JkZXIpLCBjb3VudCwgc3RhdGUpOworfQorCiB1bnNpZ25lZCBpbnQgKmk5 MTVfcmFuZG9tX29yZGVyKHVuc2lnbmVkIGludCBjb3VudCwgc3RydWN0IHJuZF9zdGF0ZSAqc3Rh dGUpCiB7CiAJdW5zaWduZWQgaW50ICpvcmRlciwgaTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgKaW5kZXggN2RmZmVkYzUwMWNhLi44ZTFmZjljMTA1YjYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oCkBAIC01 NCw0ICs1NCw3IEBAIHZvaWQgaTkxNV9yYW5kb21fcmVvcmRlcih1bnNpZ25lZCBpbnQgKm9yZGVy LAogCQkJIHVuc2lnbmVkIGludCBjb3VudCwKIAkJCSBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSk7 CiAKK3ZvaWQgaTkxNV9wcmFuZG9tX3NodWZmbGUodm9pZCAqYXJyLCBzaXplX3QgZWxzeiwgc2l6 ZV90IGNvdW50LAorCQkJICBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSk7CisKICNlbmRpZiAvKiAh X19JOTE1X1NFTEZURVNUU19SQU5ET01fSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYwppbmRleCAxNTg1YjYxNDUxMGQuLjFjZWNjNzFmYmE3 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxp bmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5j CkBAIC00LDYgKzQsOCBAQAogICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBJbnRlbCBDb3Jwb3Jh dGlvbgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9wcmltZV9udW1iZXJzLmg+CisKICNpbmNsdWRl ICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9yYW5kb20uaCIKIApAQCAtMTEs NiArMTMsMTQzIEBACiAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgiCiAjaW5jbHVkZSAibW9j a190aW1lbGluZS5oIgogCitzdGF0aWMgc3RydWN0IHBhZ2UgKmh3c3BfcGFnZShzdHJ1Y3QgaTkx NV90aW1lbGluZSAqdGwpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHRs LT5od3NwX2dndHQtPm9iajsKKworCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9oYXNfcGlu bmVkX3BhZ2VzKG9iaikpOworCXJldHVybiBzZ19wYWdlKG9iai0+bW0ucGFnZXMtPnNnbCk7Cit9 CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGh3c3BfY2FjaGVsaW5lKHN0cnVjdCBpOTE1X3RpbWVs aW5lICp0bCkKK3sKKwl1bnNpZ25lZCBsb25nIGFkZHJlc3MgPSAodW5zaWduZWQgbG9uZylwYWdl X2FkZHJlc3MoaHdzcF9wYWdlKHRsKSk7CisKKwlyZXR1cm4gKGFkZHJlc3MgKyB0bC0+aHdzcF9v ZmZzZXQpIC8gQ0FDSEVMSU5FX0JZVEVTOworfQorCisjZGVmaW5lIENBQ0hFTElORVNfUEVSX1BB R0UgKFBBR0VfU0laRSAvIENBQ0hFTElORV9CWVRFUykKKworc3RydWN0IG1vY2tfaHdzcF9mcmVl bGlzdCB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisJc3RydWN0IHJhZGl4X3Ry ZWVfcm9vdCBjYWNoZWxpbmVzOworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICoqaGlzdG9yeTsKKwl1 bnNpZ25lZCBsb25nIGNvdW50LCBtYXg7CisJc3RydWN0IHJuZF9zdGF0ZSBwcm5nOworfTsKKwor ZW51bSB7CisJU0hVRkZMRSA9IEJJVCgwKSwKK307CisKK3N0YXRpYyB2b2lkIF9fbW9ja19od3Nw X3JlY29yZChzdHJ1Y3QgbW9ja19od3NwX2ZyZWVsaXN0ICpzdGF0ZSwKKwkJCSAgICAgICB1bnNp Z25lZCBpbnQgaWR4LAorCQkJICAgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwl0 bCA9IHhjaGcoJnN0YXRlLT5oaXN0b3J5W2lkeF0sIHRsKTsKKwlpZiAodGwpIHsKKwkJcmFkaXhf dHJlZV9kZWxldGUoJnN0YXRlLT5jYWNoZWxpbmVzLCBod3NwX2NhY2hlbGluZSh0bCkpOworCQlp OTE1X3RpbWVsaW5lX3B1dCh0bCk7CisJfQorfQorCitzdGF0aWMgaW50IF9fbW9ja19od3NwX3Rp bWVsaW5lKHN0cnVjdCBtb2NrX2h3c3BfZnJlZWxpc3QgKnN0YXRlLAorCQkJCXVuc2lnbmVkIGlu dCBjb3VudCwKKwkJCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGk5MTVfdGltZWxp bmUgKnRsOworCXVuc2lnbmVkIGludCBpZHg7CisKKwl3aGlsZSAoY291bnQtLSkgeworCQl1bnNp Z25lZCBsb25nIGNhY2hlbGluZTsKKwkJaW50IGVycjsKKworCQl0bCA9IGk5MTVfdGltZWxpbmVf Y3JlYXRlKHN0YXRlLT5pOTE1LCAibW9jayIsIE5VTEwpOworCQlpZiAoSVNfRVJSKHRsKSkKKwkJ CXJldHVybiBQVFJfRVJSKHRsKTsKKworCQljYWNoZWxpbmUgPSBod3NwX2NhY2hlbGluZSh0bCk7 CisJCWVyciA9IHJhZGl4X3RyZWVfaW5zZXJ0KCZzdGF0ZS0+Y2FjaGVsaW5lcywgY2FjaGVsaW5l LCB0bCk7CisJCWlmIChlcnIpIHsKKwkJCWlmIChlcnIgPT0gLUVFWElTVCkgeworCQkJCXByX2Vy cigiSFdTUCBjYWNoZWxpbmUgJWx1IGFscmVhZHkgdXNlZDsgZHVwbGljYXRlIGFsbG9jYXRpb24h XG4iLAorCQkJCSAgICAgICBjYWNoZWxpbmUpOworCQkJfQorCQkJaTkxNV90aW1lbGluZV9wdXQo dGwpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCisJCWlkeCA9IHN0YXRlLT5jb3VudCsrICUgc3Rh dGUtPm1heDsKKwkJX19tb2NrX2h3c3BfcmVjb3JkKHN0YXRlLCBpZHgsIHRsKTsKKwl9CisKKwlp ZiAoZmxhZ3MgJiBTSFVGRkxFKQorCQlpOTE1X3ByYW5kb21fc2h1ZmZsZShzdGF0ZS0+aGlzdG9y eSwKKwkJCQkgICAgIHNpemVvZigqc3RhdGUtPmhpc3RvcnkpLAorCQkJCSAgICAgbWluKHN0YXRl LT5jb3VudCwgc3RhdGUtPm1heCksCisJCQkJICAgICAmc3RhdGUtPnBybmcpOworCisJY291bnQg PSBpOTE1X3ByYW5kb21fdTMyX21heF9zdGF0ZShtaW4oc3RhdGUtPmNvdW50LCBzdGF0ZS0+bWF4 KSwKKwkJCQkJICAgJnN0YXRlLT5wcm5nKTsKKwl3aGlsZSAoY291bnQtLSkgeworCQlpZHggPSAt LXN0YXRlLT5jb3VudCAlIHN0YXRlLT5tYXg7CisJCV9fbW9ja19od3NwX3JlY29yZChzdGF0ZSwg aWR4LCBOVUxMKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtb2NrX2h3c3Bf ZnJlZWxpc3Qodm9pZCAqYXJnKQoreworCXN0cnVjdCBtb2NrX2h3c3BfZnJlZWxpc3Qgc3RhdGU7 CisJY29uc3Qgc3RydWN0IHsKKwkJY29uc3QgY2hhciAqbmFtZTsKKwkJdW5zaWduZWQgaW50IGZs YWdzOworCX0gcGhhc2VzW10gPSB7CisJCXsgImxpbmVhciIsIDAgfSwKKwkJeyAic2h1ZmZsZWQi LCBTSFVGRkxFIH0sCisJCXsgfSwKKwl9LCAqcDsKKwl1bnNpZ25lZCBpbnQgbmE7CisJaW50IGVy ciA9IDA7CisKKwlJTklUX1JBRElYX1RSRUUoJnN0YXRlLmNhY2hlbGluZXMsIEdGUF9LRVJORUwp OworCXN0YXRlLnBybmcgPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0 LnJhbmRvbV9zZWVkKTsKKworCXN0YXRlLmk5MTUgPSBtb2NrX2dlbV9kZXZpY2UoKTsKKwlpZiAo IXN0YXRlLmk5MTUpCisJCXJldHVybiAtRU5PTUVNOworCisJLyoKKwkgKiBDcmVhdGUgYSBidW5j aCBvZiB0aW1lbGluZXMgYW5kIGNoZWNrIHRoYXQgdGhlaXIgSFdTUCBkbyBub3Qgb3ZlcmxhcC4K KwkgKiBGcmVlIHNvbWUsIGFuZCB0cnkgYWdhaW4uCisJICovCisKKwlzdGF0ZS5tYXggPSBQQUdF X1NJWkUgLyBzaXplb2YoKnN0YXRlLmhpc3RvcnkpOworCXN0YXRlLmNvdW50ID0gMDsKKwlzdGF0 ZS5oaXN0b3J5ID0ga2NhbGxvYyhzdGF0ZS5tYXgsIHNpemVvZigqc3RhdGUuaGlzdG9yeSksIEdG UF9LRVJORUwpOworCWlmICghc3RhdGUuaGlzdG9yeSkgeworCQllcnIgPSAtRU5PTUVNOworCQln b3RvIG91dDsKKwl9CisKKwlmb3IgKHAgPSBwaGFzZXM7IHAtPm5hbWU7IHArKykgeworCQlwcl9k ZWJ1ZygiJXMoJXMpXG4iLCBfX2Z1bmNfXywgcC0+bmFtZSk7CisJCWZvcl9lYWNoX3ByaW1lX251 bWJlcl9mcm9tKG5hLCAxLCAyICogQ0FDSEVMSU5FU19QRVJfUEFHRSkgeworCQkJZXJyID0gX19t b2NrX2h3c3BfdGltZWxpbmUoJnN0YXRlLCBuYSwgcC0+ZmxhZ3MpOworCQkJaWYgKGVycikKKwkJ CQlnb3RvIG91dDsKKwkJfQorCX0KKworb3V0OgorCWZvciAobmEgPSAwOyBuYSA8IHN0YXRlLm1h eDsgbmErKykKKwkJX19tb2NrX2h3c3BfcmVjb3JkKCZzdGF0ZSwgbmEsIE5VTEwpOworCWtmcmVl KHN0YXRlLmhpc3RvcnkpOworCWRybV9kZXZfcHV0KCZzdGF0ZS5pOTE1LT5kcm0pOworCXJldHVy biBlcnI7Cit9CisKIHN0cnVjdCBfX2lndF9zeW5jIHsKIAljb25zdCBjaGFyICpuYW1lOwogCXUz MiBzZXFubzsKQEAgLTI2MCw2ICszOTksNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAq YXJnKQogaW50IGk5MTVfdGltZWxpbmVfbW9ja19zZWxmdGVzdHModm9pZCkKIHsKIAlzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0geworCQlTVUJURVNUKG1vY2tfaHdz cF9mcmVlbGlzdCksCiAJCVNVQlRFU1QoaWd0X3N5bmMpLAogCQlTVUJURVNUKGJlbmNoX3N5bmMp LAogCX07Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=