From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id CEE126E872 for ; Tue, 12 May 2020 08:24:07 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 12 May 2020 10:23:58 +0200 Message-Id: <20200512082402.26792-3-zbigniew.kempczynski@intel.com> In-Reply-To: <20200512082402.26792-1-zbigniew.kempczynski@intel.com> References: <20200512082402.26792-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/6] lib/intel_batchbuffer: Introduce intel_bb List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: U2ltcGxlIGJhdGNoYnVmZmVyIGZhY2lsaXR5IHdoaWNoIGdhdGhlcnMgYW5kIG91dHB1dHMgcmVs b2NhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3 LmtlbXBjenluc2tpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgotLS0KIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIHwgMjAyICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIHwg IDc4ICsrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjgwIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1 ZmZlci5jCmluZGV4IGYxYTQ1YjQ3Li5jN2Y1MmYwMSAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2Jh dGNoYnVmZmVyLmMKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKQEAgLTQxLDYgKzQxLDcg QEAKICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAibWVkaWFfZmlsbC5oIgogI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgogI2lu Y2x1ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRlICJncGdwdV9maWxsLmgiCiAjaW5jbHVkZSAi aWd0X2F1eC5oIgpAQCAtMTE3MSwzICsxMTcyLDIwNCBAQCBpZ3RfbWVkaWFfc3BpbmZ1bmNfdCBp Z3RfZ2V0X21lZGlhX3NwaW5mdW5jKGludCBkZXZpZCkKIAogCXJldHVybiBzcGluOwogfQorCisv KiBJbnRlbCBiYXRjaGJ1ZmZlciB2MiAqLworc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVh dGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpCit7CisJc3RydWN0IGludGVsX2JiICppYmIgPSBj YWxsb2MoMSwgc2l6ZW9mKCppYmIpKTsKKworCWlndF9hc3NlcnQoaWJiKTsKKworCWliYi0+aTkx NSA9IGk5MTU7CisJaWJiLT5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSk7CisJaWJi LT5nZW4gPSBpbnRlbF9nZW4oaWJiLT5kZXZpZCk7CisJaWJiLT5oYW5kbGUgPSBnZW1fY3JlYXRl KGk5MTUsIHNpemUpOworCWliYi0+c2l6ZSA9IHNpemU7CisJaWJiLT5iYXRjaCA9IGdlbV9tbWFw X19jcHVfY29oZXJlbnQoaTkxNSwgaWJiLT5oYW5kbGUsIDAsIHNpemUsCisJCQkJCSAgICBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFKTsKKwltZW1zZXQoaWJiLT5iYXRjaCwgMCwgc2l6ZSk7CisJaWJi LT5wdHIgPSBpYmItPmJhdGNoOworCWliYi0+b2JqZWN0cyA9IE5VTEw7CisKKwlyZXR1cm4gaWJi OworfQorCit2b2lkIGludGVsX2JiX2Rlc3Ryb3koc3RydWN0IGludGVsX2JiICppYmIpCit7CisJ dWludDMyX3QgaTsKKworCWlndF9hc3NlcnQoaWJiKTsKKworCS8qIEZyZWUgcmVsb2NhdGlvbnMg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0czsgaSsrKSB7CisJCWlmICgodm9p ZCAqKSBpYmItPm9iamVjdHMtPnJlbG9jc19wdHIpCisJCQlmcmVlKCh2b2lkICopIGliYi0+b2Jq ZWN0cy0+cmVsb2NzX3B0cik7CisJfQorCisJZnJlZShpYmItPm9iamVjdHMpOworCisJbXVubWFw KGliYi0+YmF0Y2gsIGliYi0+c2l6ZSk7CisJZ2VtX2Nsb3NlKGliYi0+aTkxNSwgaWJiLT5oYW5k bGUpOworCisJZnJlZShpYmIpOworfQorCit2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgYm9vbCBkZWJ1ZykKK3sKKwlpYmItPmRlYnVnID0gZGVidWc7Cit9CisK K3N0YXRpYyB2b2lkIGludGVsX2JiX2FkZF9oYW5kbGUoc3RydWN0IGludGVsX2JiICppYmIsIHVp bnQzMl90IGhhbmRsZSkKK3sKKwl1aW50MzJfdCBpOworCisJaWd0X2Fzc2VydChpYmIpOworCisJ LyogU2tpcCBiYiBhcyBvYmplY3QsIGl0IHdpbGwgYmUgYWRkZWQgYmVmb3JlIGV4ZWMgKi8KKwlp ZiAoaWJiLT5oYW5kbGUgPT0gaGFuZGxlKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwg aWJiLT5udW1fb2JqZWN0czsgaSsrKQorCQlpZiAoaWJiLT5vYmplY3RzW2ldLmhhbmRsZSA9PSBo YW5kbGUpCisJCQlyZXR1cm47CisKKwlpID0gaWJiLT5udW1fb2JqZWN0czsKKwlpYmItPm9iamVj dHMgPSByZWFsbG9jKGliYi0+b2JqZWN0cywKKwkJCSAgICAgICBzaXplb2YoKmliYi0+b2JqZWN0 cykgKiAoaSArIDEpKTsKKwlpZ3RfYXNzZXJ0KGliYi0+b2JqZWN0cyk7CisKKwltZW1zZXQoJmli Yi0+b2JqZWN0c1tpXSwgMCwgc2l6ZW9mKCppYmItPm9iamVjdHMpKTsKKwlpYmItPm9iamVjdHNb aV0uaGFuZGxlID0gaGFuZGxlOworCisJaWJiLT5udW1fb2JqZWN0cysrOworfQorCitzdGF0aWMg dm9pZCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCXVpbnQz Ml90IGhhbmRsZSwKKwkJCQl1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJdWludDMyX3Qgd3Jp dGVfZG9tYWluLAorCQkJCXVpbnQ2NF90IGRlbHRhLAorCQkJCXVpbnQ2NF90IG9mZnNldCwKKwkJ CQlib29sIHVzZV9vZmZzZXQsCisJCQkJYm9vbCBvdXQpCisKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jczsKKwl1aW50MzJfdCBpOworCisJaW50ZWxfYmJf YWRkX2hhbmRsZShpYmIsIGhhbmRsZSk7CisKKwlyZWxvY3MgPSBpYmItPnJlbG9jczsKKwlpZiAo aWJiLT5udW1fcmVsb2NzID09IGliYi0+YWxsb2NhdGVkX3JlbG9jcykgeworCQlpYmItPmFsbG9j YXRlZF9yZWxvY3MgKz0gNDA5NiAvIHNpemVvZigqcmVsb2NzKTsKKwkJcmVsb2NzID0gcmVhbGxv YyhyZWxvY3MsIHNpemVvZigqcmVsb2NzKSAqIGliYi0+YWxsb2NhdGVkX3JlbG9jcyk7CisJCWln dF9hc3NlcnQocmVsb2NzKTsKKwkJaWJiLT5yZWxvY3MgPSByZWxvY3M7CisJfQorCisJaSA9IGli Yi0+bnVtX3JlbG9jcysrOworCW1lbXNldCgmcmVsb2NzW2ldLCAwLCBzaXplb2YoKnJlbG9jcykp OworCXJlbG9jc1tpXS50YXJnZXRfaGFuZGxlID0gaGFuZGxlOworCXJlbG9jc1tpXS5yZWFkX2Rv bWFpbnMgPSByZWFkX2RvbWFpbnM7CisJcmVsb2NzW2ldLndyaXRlX2RvbWFpbiA9IHdyaXRlX2Rv bWFpbjsKKwlyZWxvY3NbaV0uZGVsdGEgPSBkZWx0YTsKKwlpZiAodXNlX29mZnNldCkKKwkJcmVs b2NzW2ldLm9mZnNldCA9IG9mZnNldDsKKwllbHNlCisJCXJlbG9jc1tpXS5vZmZzZXQgPSBpbnRl bF9iYl9vZmZzZXQoaWJiKTsKKworCWlmIChvdXQpIHsKKwkJaW50ZWxfYmJfb3V0KGliYiwgZGVs dGEpOworCQlpZiAoaWJiLT5nZW4gPj0gOCkKKwkJCWludGVsX2JiX291dChpYmIsIGRlbHRhID4+ IDMyKTsKKwl9Cit9CisKK3ZvaWQgaW50ZWxfYmJfb3V0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAq aWJiLAorCQkJdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJdWludDMyX3Qgd3JpdGVfZG9tYWlu LAorCQkJdWludDY0X3QgZGVsdGEpCisKK3sKKwlpZ3RfYXNzZXJ0KGliYik7CisKKwlpbnRlbF9i Yl9lbWl0X3JlbG9jKGliYiwgaWJiLT5oYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWlu LAorCQkJICAgIGRlbHRhLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJCSAgICBmYWxzZSwgdHJ1 ZSk7Cit9CisKK3ZvaWQgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJi LCB1aW50MzJfdCBoYW5kbGUsCisJCQkgICB1aW50MzJfdCBvZmZzZXQsCisJCQkgICB1aW50MzJf dCByZWFkX2RvbWFpbnMsCisJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4pCit7CisJaWd0X2Fz c2VydChpYmIpOworCisJaW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGhhbmRsZSwgcmVhZF9kb21h aW5zLCB3cml0ZV9kb21haW4sCisJCQkgICAgMCwgb2Zmc2V0LCB0cnVlLCBmYWxzZSk7Cit9CisK K3N0YXRpYyB2b2lkIGludGVsX2JiX2R1bXBfZXhlY2J1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyICpleGVjYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy ICpvYmplY3RzOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2Nz LCAqcmVsb2M7CisJaW50IGksIGo7CisKKwlpZ3RfaW5mbygiZXhlY2J1ZiBiYXRjaCBsZW46ICV1 LCBzdGFydCBvZmZzZXQ6IDB4JXgsICIKKwkJICJEUjE6IDB4JXgsIERSNDogMHgleCwgIgorCQkg Im51bSBjbGlwOiAldSwgY2xpcHB0cjogMHglbGx4LCAiCisJCSAiZmxhZ3M6IDB4JWxseCwgcnN2 ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxuIiwKKwkJIGV4ZWNidWYtPmJhdGNoX2xlbiwgZXhl Y2J1Zi0+YmF0Y2hfc3RhcnRfb2Zmc2V0LAorCQkgZXhlY2J1Zi0+RFIxLCBleGVjYnVmLT5EUjQs CisJCSBleGVjYnVmLT5udW1fY2xpcHJlY3RzLCBleGVjYnVmLT5jbGlwcmVjdHNfcHRyLAorCQkg ZXhlY2J1Zi0+ZmxhZ3MsIGV4ZWNidWYtPnJzdmQxLCBleGVjYnVmLT5yc3ZkMik7CisKKwlpZ3Rf aW5mbygiZXhlY2J1ZiBidWZmZXJfY291bnQ6ICVkXG4iLCBleGVjYnVmLT5idWZmZXJfY291bnQp OworCWZvciAoaSA9IDA7IGkgPCBleGVjYnVmLT5idWZmZXJfY291bnQ7IGkrKykgeworCQlvYmpl Y3RzID0gJigoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKikgZXhlY2J1Zi0+YnVm ZmVyc19wdHIpW2ldOworCQlyZWxvY3MgPSAoc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9u X2VudHJ5ICopIG9iamVjdHMtPnJlbG9jc19wdHI7CisJCWlndF9pbmZvKCIgWyVkXSA8aGFuZGxl OiAldSwgcmVsb2NfY291bnQ6ICVkLCByZWxvY19wdHI6ICVwLCAiCisJCQkgImFsaWduOiAlbGx4 LCBvZmZzZXQ6ICVsbHgsIGZsYWdzOiAlbGx4LCByc3ZkMTogJWxseCwgcnN2ZDI6ICVsbHhcbiIs CisJCQkgaSwgb2JqZWN0cy0+aGFuZGxlLCBvYmplY3RzLT5yZWxvY2F0aW9uX2NvdW50LAorCQkJ ICh2b2lkICopIG9iamVjdHMtPnJlbG9jc19wdHIsIG9iamVjdHMtPmFsaWdubWVudCwgb2JqZWN0 cy0+b2Zmc2V0LAorCQkJIG9iamVjdHMtPmZsYWdzLCBvYmplY3RzLT5yc3ZkMSwgb2JqZWN0cy0+ cnN2ZDIpOworCQlpZiAob2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCkgeworCQkJaWd0X2luZm8o ImV4ZWNidWYgcmVsb2NzOlxuIik7CisJCQlmb3IgKGogPSAwOyBqIDwgb2JqZWN0cy0+cmVsb2Nh dGlvbl9jb3VudDsgaisrKSB7CisJCQkJcmVsb2MgPSAmcmVsb2NzW2pdOworCQkJCWlndF9pbmZv KCIgWyVkXSA8dGFyZ2V0IGhhbmRsZTogJXUsIGRlbHRhOiAleCwgb2Zmc2V0OiAlbGx4LCAiCisJ CQkJCSAicHJlc3VtZWRfb2Zmc2V0OiAlbGx4LCByZWFkX2RvbWFpbnM6ICV4LCB3cml0ZV9kb21h aW46ICV4XG4iLAorCQkJCWosIHJlbG9jLT50YXJnZXRfaGFuZGxlLCByZWxvYy0+ZGVsdGEsIHJl bG9jLT5vZmZzZXQsCisJCQkJcmVsb2MtPnByZXN1bWVkX29mZnNldCwgcmVsb2MtPnJlYWRfZG9t YWlucywgcmVsb2MtPndyaXRlX2RvbWFpbik7CisJCQl9CisJCX0KKwl9Cit9CisKK3ZvaWQgaW50 ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisJdWludDMyX3QgaTsK KwlpbnQ2NF90IHRpbWVvdXQgPSBOU0VDX1BFUl9TRUMgLyAyOworCisJaSA9IGliYi0+bnVtX29i amVjdHMrKzsKKwlpYmItPm9iamVjdHMgPSByZWFsbG9jKGliYi0+b2JqZWN0cywgc2l6ZW9mKCpp YmItPm9iamVjdHMpICogKGkgKyAxKSk7CisJaWd0X2Fzc2VydChpYmItPm9iamVjdHMpOworCisJ bWVtc2V0KCZpYmItPm9iamVjdHNbaV0sIDAsIHNpemVvZigqaWJiLT5vYmplY3RzKSk7CisJaWJi LT5vYmplY3RzW2ldLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoaWJiLT5yZWxvY3MpOwor CWliYi0+b2JqZWN0c1tpXS5yZWxvY2F0aW9uX2NvdW50ID0gaWJiLT5udW1fcmVsb2NzOworCWli Yi0+b2JqZWN0c1tpXS5oYW5kbGUgPSBpYmItPmhhbmRsZTsKKworCW1lbXNldCgmZXhlY2J1Ziwg MCwgc2l6ZW9mKGV4ZWNidWYpKTsKKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRwdHJfdCkg aWJiLT5vYmplY3RzOworCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gaWJiLT5udW1fb2JqZWN0czsK KwlleGVjYnVmLmJhdGNoX2xlbiA9IGVuZF9vZmZzZXQ7CisJZXhlY2J1Zi5mbGFncyA9IEk5MTVf RVhFQ19ERUZBVUxUOworCisJZ2VtX2V4ZWNidWYoaWJiLT5pOTE1LCAmZXhlY2J1Zik7CisJZ2Vt X3dhaXQoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSwgJnRpbWVvdXQpOworCisJaWYgKGliYi0+ZGVi dWcpCisJCWludGVsX2JiX2R1bXBfZXhlY2J1ZigmZXhlY2J1Zik7Cit9CmRpZmYgLS1naXQgYS9s aWIvaW50ZWxfYmF0Y2hidWZmZXIuaCBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCmluZGV4IDQ0 MmYzYTE4Li44MmUzZmQ5MSAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysr IGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKQEAgLTcsNiArNyw3IEBACiAKICNpbmNsdWRlICJp Z3RfY29yZS5oIgogI2luY2x1ZGUgImludGVsX3JlZy5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIK IAogI2RlZmluZSBCQVRDSF9TWiA0MDk2CiAjZGVmaW5lIEJBVENIX1JFU0VSVkVEIDE2CkBAIC00 MjIsNCArNDIzLDgxIEBAIHR5cGVkZWYgdm9pZCAoKmlndF9tZWRpYV9zcGluZnVuY190KShzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCiBpZ3RfbWVkaWFfc3BpbmZ1bmNfdCBpZ3Rf Z2V0X21lZGlhX3NwaW5mdW5jKGludCBkZXZpZCk7CiAKKworLyoKKyAqIEJhdGNoYnVmZmVyIHdp dGhvdXQgbGliZHJtIGRlcGVuZGVuY3kKKyAqLworc3RydWN0IGludGVsX2JiIHsKKwlpbnQgaTkx NTsKKwlpbnQgZ2VuOworCWJvb2wgZGVidWc7CisJdWludDMyX3QgZGV2aWQ7CisJdWludDMyX3Qg aGFuZGxlOworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgKmJhdGNoOworCXVpbnQzMl90ICpw dHI7CisKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqZWN0czsKKwl1aW50 MzJfdCBudW1fb2JqZWN0czsKKworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRy eSAqcmVsb2NzOworCXVpbnQzMl90IG51bV9yZWxvY3M7CisJdWludDMyX3QgYWxsb2NhdGVkX3Jl bG9jczsKK307CisKK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1 aW50MzJfdCBzaXplKTsKK3ZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIgKmli Yik7Cit2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBk ZWJ1Zyk7CisKK2lubGluZSB1aW50MzJfdCBpbnRlbF9iYl9vZmZzZXQoc3RydWN0IGludGVsX2Ji ICppYmIpCit7CisJcmV0dXJuICh1aW50MzJfdCkgKCh1aW50OF90ICopIGliYi0+cHRyIC0gKHVp bnQ4X3QgKikgaWJiLT5iYXRjaCk7Cit9CisKK2lubGluZSB2b2lkIGludGVsX2JiX3B0cl9zZXQo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IG9mZnNldCkKK3sKKwlpYmItPnB0ciA9ICh2 b2lkICopICgodWludDhfdCAqKSBpYmItPmJhdGNoICsgb2Zmc2V0KTsKKworCWlndF9hc3NlcnQo aW50ZWxfYmJfb2Zmc2V0KGliYikgPCBpYmItPnNpemUpOworfQorCitpbmxpbmUgdm9pZCBpbnRl bF9iYl9wdHJfYWRkKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBvZmZzZXQpCit7CisJ aWJiLT5wdHIgPSAodm9pZCAqKSAoKHVpbnQ4X3QgKikgaWJiLT5wdHIgKyBvZmZzZXQpOworCisJ aWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9CisKK2lubGlu ZSB2b2lkIGludGVsX2JiX3B0cl9hbGlnbihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qg YWxpZ25tZW50KQoreworCWliYi0+cHRyID0gKHZvaWQgKikgQUxJR04oKHVpbnRwdHJfdCkgaWJi LT5wdHIsICh1aW50cHRyX3QpIGFsaWdubWVudCk7CisKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29m ZnNldChpYmIpIDwgaWJiLT5zaXplKTsKK30KKworaW5saW5lIHZvaWQgKmludGVsX2JiX3B0cihz dHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlyZXR1cm4gKHZvaWQgKikgaWJiLT5wdHI7Cit9CisK K2lubGluZSB2b2lkIGludGVsX2JiX291dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qg ZHdvcmQpCit7CisJKmliYi0+cHRyID0gZHdvcmQ7CisJaWJiLT5wdHIrKzsKKworCWlndF9hc3Nl cnQoaW50ZWxfYmJfb2Zmc2V0KGliYikgPCBpYmItPnNpemUpOworfQorCit2b2lkIGludGVsX2Ji X291dF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCXVpbnQzMl90IHJlYWRfZG9tYWlu cywKKwkJCXVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCXVpbnQ2NF90IGRlbHRhKTsKKwordm9p ZCBpbnRlbF9iYl9vZmZzZXRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhh bmRsZSwKKwkJCSAgIHVpbnQzMl90IG9mZnNldCwKKwkJCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlu cywKKwkJCSAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7CisKK3ZvaWQgaW50ZWxfYmJfZXhlYyhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCk7CisKICNlbmRpZgotLSAK Mi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK