From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 14D4CFA1FD7 for ; Wed, 22 Apr 2026 16:50:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6288F10EECA; Wed, 22 Apr 2026 16:49:59 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=bootlin.com header.i=@bootlin.com header.b="x2kkX277"; dkim-atps=neutral Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) by gabe.freedesktop.org (Postfix) with ESMTPS id 196D310EECA for ; Wed, 22 Apr 2026 16:49:53 +0000 (UTC) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id AFAF0C5EF04; Wed, 22 Apr 2026 16:50:32 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id CD55E5FA8F; Wed, 22 Apr 2026 16:49:51 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 036FD10460C02; Wed, 22 Apr 2026 18:49:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1776876590; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=AH9hqEqCVLoQvY7VoCfKColq6Xiw+ZL4aa0k2HpCk4w=; b=x2kkX2776vj38T7Q+6GiSHpLWdutYrW3wr0qlYiL7XUMxZVhbdbIVdrIQSSqJEcQ5zsa93 JpLNlyXLuEafcHbcupcDE0Ub4lKZE1WuxA1PDga7dlPZprYIP6SHyOzUqU5WqSmsYwLWdU B6jMk8+/i0WkQKddFTTIrQPmX7tjk+3zpnb2Pq09PA8w2R3/R2TPqtT0lRYdcdz5WlQ3Ne VqepAQitzLVqHvKb/AeHMG9Ntfbe1z/pTAZHRlymNaH4GzMNpKzyid9Cmmr+lIY/MqKG86 O0ORTYkhAS898vmh+caWmkYAW/krGxNSvnrqX5AWfg75ak4aMghQwUO4jVNgRg== From: Louis Chauvet Date: Wed, 22 Apr 2026 18:48:19 +0200 Subject: [PATCH v4 22/37] drm/vkms: Introduce configfs for plane format MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260422-vkms-all-config-v4-22-dbb52e9aadc3@bootlin.com> References: <20260422-vkms-all-config-v4-0-dbb52e9aadc3@bootlin.com> In-Reply-To: <20260422-vkms-all-config-v4-0-dbb52e9aadc3@bootlin.com> To: Haneen Mohammed , Simona Vetter , Melissa Wen , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , jose.exposito89@gmail.com, Jonathan Corbet , Shuah Khan , Miguel Ojeda , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: victoria@system76.com, sebastian.wick@redhat.com, victoria@system76.com, airlied@gmail.com, thomas.petazzoni@bootlin.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Louis Chauvet , llvm@lists.linux.dev X-Mailer: b4 0.16-dev X-Last-TLS-Session-Version: TLSv1.3 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VG8gYWxsb3cgdGhlIHVzZXJzcGFjZSB0byB0ZXN0IG1hbnkgaGFyZHdhcmUgY29uZmlndXJhdGlv biwgaW50cm9kdWNlIGEKbmV3IGludGVyZmFjZSB0byBjb25maWd1cmUgdGhlIGF2YWlsYWJsZSBm b3JtYXRzIHBlciBwbGFuZXMuIFZLTVMgc3VwcG9ydHMKbXVsdGlwbGUgZm9ybWF0cywgc28gdGhl IHVzZXJzcGFjZSBjYW4gY2hvb3NlIGFueSBjb21iaW5hdGlvbi4KClRoZSBzdXBwb3J0ZWQgZm9y bWF0cyBhcmUgY29uZmlndXJlZCBieSB3cml0aW5nIHRoZSBmb3VyY2MgY29kZSBpbgpzdXBwb3J0 ZWRfZm9ybWF0czoKICMgZW5hYmxlIEFSMjQgZm9ybWF0CiAgZWNobyAnK0FSMjQnID4gL2NvbmZp Zy92a21zL0RFVklDRV8xL3BsYW5lcy9QTEFORV8xL3N1cHBvcnRlZF9mb3JtYXRzCiAjIGRpc2Fi bGUgQVIyNCBmb3JtYXQKICBlY2hvICctQVIyNCcgPiAvY29uZmlnL3ZrbXMvREVWSUNFXzEvcGxh bmVzL1BMQU5FXzEvc3VwcG9ydGVkX2Zvcm1hdHMKICMgZW5hYmxlIGFsbCBmb3JtYXQgc3VwcG9y dGVkIGJ5IFZLTVMKICBlY2hvICcrKicgPiAvY29uZmlnL3ZrbXMvREVWSUNFXzEvcGxhbmVzL1BM QU5FXzEvc3VwcG9ydGVkX2Zvcm1hdHMKICMgZGlzYWJsZSBhbGwgZm9ybWF0cwogIGVjaG8gJy0q JyA+IC9jb25maWcvdmttcy9ERVZJQ0VfMS9wbGFuZXMvUExBTkVfMS9zdXBwb3J0ZWRfZm9ybWF0 cwoKU2lnbmVkLW9mZi1ieTogTG91aXMgQ2hhdXZldCA8bG91aXMuY2hhdXZldEBib290bGluLmNv bT4KLS0tCiBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXZrbXMgICAgICAgICB8 ICAgOSArKwogRG9jdW1lbnRhdGlvbi9ncHUvdmttcy5yc3QgICAgICAgICAgICAgICAgICAgICAg fCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS92a21zL3Rlc3RzL01ha2VmaWxlICAgICAgICAgICAg IHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vdmttcy90ZXN0cy92a21zX2NvbmZpZ2ZzX3Rlc3Qu YyB8IDEwMiArKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNf Y29uZmlnZnMuYyAgICAgICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19jb25maWdmcy5oICAgICAgICAgICAgfCAgIDQgKwogNiBm aWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXZrbXMgYi9Eb2N1bWVudGF0 aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXZrbXMKaW5kZXggOTc2ODExMDhhZjFjLi5kYWU4Yjll OWQ2YmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdmtt cworKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXZrbXMKQEAgLTE1Myw2 ICsxNTMsMTUgQEAgRGVzY3JpcHRpb246CiAJRGVmYXVsdCBjb2xvciByYW5nZSBwcmVzZW50ZWQg dG8gdXNlcnNwYWNlLCBzYW1lCiAJdmFsdWVzIGFzIHN1cHBvcnRlZF9jb2xvcl9yYW5nZXMuCiAK K1doYXQ6CQkvc3lzL2tlcm5lbC9jb25maWcvdmttcy88ZGV2aWNlPi9wbGFuZXMvPHBsYW5lPi9z dXBwb3J0ZWRfZm9ybWF0cworRGF0ZToJCU5vdiAyMDI1CitDb250YWN0OglkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCitEZXNjcmlwdGlvbjoKKwlMaXN0IG9mIHN1cHBvcnRlZCBmb3Jt YXRzIGZvciB0aGlzIHBsYW5lLiBUbyBhZGQgYSBuZXcKKwlpdGVtLCB3cml0ZSBpdHMgZm91cmNj IGNvZGUgcHJlZml4ZWQgd2l0aCAnKycuIFRvIHJlbW92ZSwKKwl1c2UgJy0nIHByZWZpeC4gVXNl ICcrKicgdG8gYWRkIGFsbCBmb3JtYXRzLCAnLSonIHRvCisJcmVtb3ZlIGFsbC4KKwogV2hhdDoJ CS9zeXMva2VybmVsL2NvbmZpZy92a21zLzxkZXZpY2U+L3BsYW5lcy88cGxhbmU+L3Bvc3NpYmxl X2NydGNzCiBEYXRlOgkJTm92IDIwMjUKIENvbnRhY3Q6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L3ZrbXMucnN0IGIvRG9jdW1l bnRhdGlvbi9ncHUvdmttcy5yc3QKaW5kZXggOGJhMGIwMzUzMzc2Li45NGY3YjBkODVjYTcgMTAw NjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L3ZrbXMucnN0CisrKyBiL0RvY3VtZW50YXRpb24v Z3B1L3ZrbXMucnN0CkBAIC04Nyw3ICs4Nyw3IEBAIFN0YXJ0IGJ5IGNyZWF0aW5nIG9uZSBvciBt b3JlIHBsYW5lczo6CiAKICAgc3VkbyBta2RpciAvY29uZmlnL3ZrbXMvbXktdmttcy9wbGFuZXMv cGxhbmUwCiAKLVBsYW5lcyBoYXZlIDggY29uZmlndXJhYmxlIGF0dHJpYnV0ZXM6CitQbGFuZXMg aGF2ZSA5IGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGVzOgogCiAtIHR5cGU6IFBsYW5lIHR5cGU6IDAg b3ZlcmxheSwgMSBwcmltYXJ5LCAyIGN1cnNvciAoc2FtZSB2YWx1ZXMgYXMgdGhvc2UKICAgZXhw b3NlZCBieSB0aGUgInR5cGUiIHByb3BlcnR5IG9mIGEgcGxhbmUpCkBAIC0xMDksNiArMTA5LDEx IEBAIFBsYW5lcyBoYXZlIDggY29uZmlndXJhYmxlIGF0dHJpYnV0ZXM6CiAgIG11c3QgYmUgc2V0 IHRvby4KIC0gZGVmYXVsdF9jb2xvcl9yYW5nZTogRGVmYXVsdCBjb2xvciByYW5nZSBwcmVzZW50 ZWQgdG8gdGhlIHVzZXJzcGFjZSwgc2FtZQogICB2YWx1ZXMgYXMgc3VwcG9ydGVkX2NvbG9yX3Jh bmdlcworLSBzdXBwb3J0ZWRfZm9ybWF0czogTGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cyBmb3Ig dGhpcyBwbGFuZS4gVG8gYWRkIGEgbmV3IGl0ZW0gaW4gdGhlCisgIGxpc3QsIHdyaXRlIGl0IHVz aW5nIGEgcGx1cyBhbmQgZm91cmNjIGNvZGU6ICtYUjI0CisgIFRvIHJlbW92ZSBhIGZvcm1hdCwg dXNlIGEgbWludXMgYW5kIGl0cyBmb3VyY2M6IC1YUjI0CisgIFRvIGFkZCBhbGwgZm9ybWF0cyB1 c2UgKyoKKyAgVG8gcmVtb3ZlIGFsbCBmb3JtYXRzLCB1c2UgLSoKIAogQ29udGludWUgYnkgY3Jl YXRpbmcgb25lIG9yIG1vcmUgQ1JUQ3M6OgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmttcy90ZXN0cy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Rlc3RzL01ha2VmaWxl CmluZGV4IGQ0ZDliYThkNGM1NC4uOTJjZmE3MjYyYmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmttcy90ZXN0cy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy90ZXN0 cy9NYWtlZmlsZQpAQCAtMyw2ICszLDcgQEAKIHZrbXMta3VuaXQtdGVzdHMteSA6PSBcCiAJdmtt c19jb25maWdfdGVzdC5vIFwKIAl2a21zX2Zvcm1hdF90ZXN0Lm8gXAotCXZrbXNfY29sb3JfdGVz dC5vCisJdmttc19jb2xvcl90ZXN0Lm8gXAorCXZrbXNfY29uZmlnZnNfdGVzdC5vIFwKIAogb2Jq LSQoQ09ORklHX0RSTV9WS01TX0tVTklUX1RFU1QpICs9IHZrbXMta3VuaXQtdGVzdHMubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdGVzdHMvdmttc19jb25maWdmc190ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy90ZXN0cy92a21zX2NvbmZpZ2ZzX3Rlc3QuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhkMDJjMmM0NTlkOQotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Rlc3RzL3ZrbXNfY29uZmlnZnNfdGVzdC5j CkBAIC0wLDAgKzEsMTAyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsK KworI2luY2x1ZGUgImxpbnV4L3ByaW50ay5oIgorI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KKwor I2luY2x1ZGUgIi4uL3ZrbXNfY29uZmlnZnMuaCIKKworTU9EVUxFX0lNUE9SVF9OUygiRVhQT1JU RURfRk9SX0tVTklUX1RFU1RJTkciKTsKKworLyoqCisgKiBzdHJ1Y3Qgdmttc19jb25maWdmc19w YXJzZV9mb3JtYXRfY2FzZSAtIFN0b3JlIHRlc3QgY2FzZSBmb3IgZm9ybWF0IHBhcnNpbmcKKyAq IEBzdHI6IENvbnRhaW5zIHRoZSBzdHJpbmcgdG8gcGFyc2UKKyAqIEBzdHJfbGVuOiBzdHIgbGVu CisgKiBAZXhwZWN0ZWRfbGVuOiBleHBlY3RlZCBsZW4gb2YgdGhlIG1hdGNoZWQgZm9ybWF0Cisg KiBAZXhwZWN0ZWRfb2Zmc2V0OiBleHBlY3RlZCBvZmZzZXQgaW4gdGhlIHN0cmluZyBmb3IgdGhl IHBhcnNlZCBmb3JtYXQKKyAqLworc3RydWN0IHZrbXNfY29uZmlnZnNfcGFyc2VfZm9ybWF0X2Nh c2UgeworCWNvbnN0IGNoYXIgKnN0cjsKKwlpbnQgc3RyX2xlbjsKKwlpbnQgZXhwZWN0ZWRfbGVu OworCWludCBleHBlY3RlZF9vZmZzZXQ7Cit9OworCitzdHJ1Y3Qgdmttc19jb25maWdmc19wYXJz ZV9mb3JtYXRfY2FzZSB2a21zX2NvbmZpZ2ZzX3BhcnNlX2Zvcm1hdF90ZXN0X2Nhc2VzW10gPSB7 CisJeworCQkuc3RyID0gIitSRzI0IiwKKwkJLnN0cl9sZW4gPSA2LAorCQkuZXhwZWN0ZWRfbGVu ID0gNSwKKwkJLmV4cGVjdGVkX29mZnNldCA9IDAsCisJfSwgeworCQkuc3RyID0gIi1SRzI0IiwK KwkJLnN0cl9sZW4gPSA2LAorCQkuZXhwZWN0ZWRfbGVuID0gNSwKKwkJLmV4cGVjdGVkX29mZnNl dCA9IDAKKwl9LCB7CisJCS5zdHIgPSAiICAtUkcyNCIsCisJCS5zdHJfbGVuID0gOCwKKwkJLmV4 cGVjdGVkX2xlbiA9IDUsCisJCS5leHBlY3RlZF9vZmZzZXQgPSAyCisJfSwgeworCQkuc3RyID0g IisqIiwKKwkJLnN0cl9sZW4gPSAzLAorCQkuZXhwZWN0ZWRfbGVuID0gMiwKKwkJLmV4cGVjdGVk X29mZnNldCA9IDAKKwl9LCB7CisJCS5zdHIgPSAiLVJHMjQrUkcyNCIsCisJCS5zdHJfbGVuID0g MTEsCisJCS5leHBlY3RlZF9sZW4gPSA1LAorCQkuZXhwZWN0ZWRfb2Zmc2V0ID0gMAorCX0sIHsK KwkJLnN0ciA9ICItUjErUkcyNCIsCisJCS5zdHJfbGVuID0gOSwKKwkJLmV4cGVjdGVkX2xlbiA9 IDMsCisJCS5leHBlY3RlZF9vZmZzZXQgPSAwCisJfSwgeworCQkuc3RyID0gIlxuLVIxIiwKKwkJ LnN0cl9sZW4gPSA1LAorCQkuZXhwZWN0ZWRfbGVuID0gMywKKwkJLmV4cGVjdGVkX29mZnNldCA9 IDEKKwl9LCB7CisJCS5zdHIgPSAiLVIxMTExIiwKKwkJLnN0cl9sZW4gPSAzLAorCQkuZXhwZWN0 ZWRfbGVuID0gMywKKwkJLmV4cGVjdGVkX29mZnNldCA9IDAKKwl9Cit9OworCitzdGF0aWMgdm9p ZCB2a21zX2NvbmZpZ2ZzX3Rlc3RfcGFyc2VfZm9ybWF0KHN0cnVjdCBrdW5pdCAqdGVzdCkKK3sK Kwljb25zdCBzdHJ1Y3Qgdmttc19jb25maWdmc19wYXJzZV9mb3JtYXRfY2FzZSAqcGFyYW0gPSB0 ZXN0LT5wYXJhbV92YWx1ZTsKKwljaGFyICpvdXQ7CisJaW50IGxlbiA9IHZrbXNfY29uZmlnZnNf cGFyc2VfbmV4dF9mb3JtYXQocGFyYW0tPnN0ciwgcGFyYW0tPnN0ciArIHBhcmFtLT5zdHJfbGVu LCAmb3V0KTsKKworCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBsZW4sIHBhcmFtLT5leHBlY3RlZF9s ZW4pOworCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgb3V0LCBwYXJhbS0+c3RyICsgcGFyYW0t PmV4cGVjdGVkX29mZnNldCk7Cit9CisKK3N0YXRpYyB2b2lkIHZrbXNfY29uZmlnZnNfdGVzdF9w YXJzZV9mb3JtYXRfZ2V0X2Rlc2Moc3RydWN0IHZrbXNfY29uZmlnZnNfcGFyc2VfZm9ybWF0X2Nh c2UgKnQsCisJCQkJCQkgICAgIGNoYXIgKmRlc2MpCit7CisJc25wcmludGYoZGVzYywgS1VOSVRf UEFSQU1fREVTQ19TSVpFLCAiJXMiLCB0LT5zdHIpOworfQorCitLVU5JVF9BUlJBWV9QQVJBTSh2 a21zX2NvbmZpZ2ZzX3Rlc3RfcGFyc2VfZm9ybWF0LCB2a21zX2NvbmZpZ2ZzX3BhcnNlX2Zvcm1h dF90ZXN0X2Nhc2VzLAorCQkgIHZrbXNfY29uZmlnZnNfdGVzdF9wYXJzZV9mb3JtYXRfZ2V0X2Rl c2MKKyk7CisKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB2a21zX2NvbmZpZ2ZzX3Rlc3RfY2Fz ZXNbXSA9IHsKKwlLVU5JVF9DQVNFX1BBUkFNKHZrbXNfY29uZmlnZnNfdGVzdF9wYXJzZV9mb3Jt YXQsCisJCQkgdmttc19jb25maWdmc190ZXN0X3BhcnNlX2Zvcm1hdF9nZW5fcGFyYW1zKSwKKwl7 fQorfTsKKworc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSB2a21zX2NvbmZpZ2ZzX3Rlc3Rfc3Vp dGUgPSB7CisJLm5hbWUgPSAidmttcy1jb25maWdmcyIsCisJLnRlc3RfY2FzZXMgPSB2a21zX2Nv bmZpZ2ZzX3Rlc3RfY2FzZXMsCit9OworCitrdW5pdF90ZXN0X3N1aXRlKHZrbXNfY29uZmlnZnNf dGVzdF9zdWl0ZSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElP TigiS3VuaXQgdGVzdCBmb3IgdmttcyBjb25maWdmcyB1dGlsaXR5Iik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NvbmZpZ2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2NvbmZpZ2ZzLmMKaW5kZXggODU1YjFkNWY1ZDMxLi5iMzhkNzI0Y2ZiOTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY29uZmlnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2NvbmZpZ2ZzLmMKQEAgLTMsNiArMyw4IEBACiAjaW5jbHVkZSA8 bGludXgvY29uZmlnZnMuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxrdW5pdC92 aXNpYmlsaXR5Lmg+CiAKICNpbmNsdWRlICJ2a21zX2Rydi5oIgogI2luY2x1ZGUgInZrbXNfY29u ZmlnLmgiCkBAIC02MzYsNiArNjM4LDExNSBAQCBzdGF0aWMgc3NpemVfdCBwbGFuZV9kZWZhdWx0 X2NvbG9yX2VuY29kaW5nX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAlyZXR1cm4g Y291bnQ7CiB9CiAKK3N0YXRpYyBzc2l6ZV90IHBsYW5lX3N1cHBvcnRlZF9mb3JtYXRzX3Nob3co c3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQoreworCXN0cnVjdCB2a21zX2Nv bmZpZ2ZzX3BsYW5lICpwbGFuZTsKKworCXBsYW5lID0gcGxhbmVfaXRlbV90b192a21zX2NvbmZp Z2ZzX3BsYW5lKGl0ZW0pOworCisJcGFnZVswXSA9ICdcMCc7CisKKwlzY29wZWRfZ3VhcmQobXV0 ZXgsICZwbGFuZS0+ZGV2LT5sb2NrKSB7CisJCXUzMiAqZm9ybWF0cyA9IHZrbXNfY29uZmlnX3Bs YW5lX2dldF9zdXBwb3J0ZWRfZm9ybWF0cyhwbGFuZS0+Y29uZmlnKTsKKworCQlmb3IgKGludCBp ID0gMDsKKwkJICAgICBpIDwgdmttc19jb25maWdfcGxhbmVfZ2V0X3N1cHBvcnRlZF9mb3JtYXRz X2NvdW50KHBsYW5lLT5jb25maWcpOworCQkgICAgIGkrKykgeworCQkJY2hhciB0bXBbNl0gPSB7 IDAgfTsKKwkJCWNvbnN0IHNzaXplX3QgcmV0ID0gc25wcmludGYodG1wLCBBUlJBWV9TSVpFKHRt cCksICIlLipzXG4iLAorCQkJCQkgICAgICAgKGludClzaXplb2YoKmZvcm1hdHMpLAorCQkJCQkg ICAgICAgKGNoYXIgKikmZm9ybWF0c1tpXSk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4g cmV0OworCQkJLyoKKwkJCSAqIExpbWl0YXRpb24gb2YgQ29uZmlnRlMgYXR0cmlidXRlcywgYW4g YXR0cmlidXRlIGNhbid0IGJlIGJpZ2dlcgorCQkJICogdGhhbiBQQUdFX1NJWkUuIFRoaXMgd2ls bCBjcm9wIHRoZSByZXN1bHQgaWYgdGhpcyBwbGFuZSBzdXBwb3J0CisJCQkgKiBtb3JlIHRoYW4g 4omIMTAwMCBmb3JtYXRzLgorCQkJICovCisJCQlpZiAocmV0ICsgc3RybGVuKHBhZ2UpID4gUEFH RV9TSVpFIC0gMSkKKwkJCQlyZXR1cm4gLUVOT01FTTsKKwkJCXN0cm5jYXQocGFnZSwgdG1wLCBB UlJBWV9TSVpFKHRtcCkpOworCQl9CisJfQorCisJcmV0dXJuIHN0cmxlbihwYWdlKTsKK30KKwor LyoqCisgKiB2a21zX2NvbmZpZ2ZzX3BhcnNlX25leHRfZm9ybWF0KCkgLSBQYXJzZSB0aGUgbmV4 dCBmb3JtYXQgaW4gcGFnZSwKKyAqCQkJCSAgICAgICBza2lwcGluZyBhbGwgbm9uIGZvdXJjYy1y ZWxhdGVkIGNoYXJhY3RlcnMKKyAqIEBwYWdlOiBwYWdlIHRvIHNlYXJjaCBpbnRvCisgKiBAcGFn ZV9lbmQ6IGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBwYWdlCisgKiBAb3V0OiBPdXRwdXQgcG9pbnRl ciwgd2lsbCBwb2ludCBpbnNpZGUgcGFnZQorICoKKyAqIFJldHVybnM6IHNpemUgb2YgdGhlIG1h dGNoZWQgZm9ybWF0LCBAb3V0IHdpbGwgcG9pbnQgdG8gdGhlICsgb3IgLQorICovCitWSVNJQkxF X0lGX0tVTklUCitpbnQgdmttc19jb25maWdmc19wYXJzZV9uZXh0X2Zvcm1hdChjb25zdCBjaGFy ICpwYWdlLCBjb25zdCBjaGFyICpwYWdlX2VuZCwgY2hhciAqKm91dCkKK3sKKwlpbnQgY291bnQg PSBwYWdlIC0gcGFnZV9lbmQ7CisJY2hhciAqdG1wX3BsdXMgPSBzdHJuY2hyKHBhZ2UsIGNvdW50 LCAnKycpOworCWNoYXIgKnRtcF9taW51cyA9IHN0cm5jaHIocGFnZSwgY291bnQsICctJyk7CisK KwlpZiAoIXRtcF9wbHVzICYmICF0bXBfbWludXMpCisJCXJldHVybiAwOworCWlmICghdG1wX3Bs dXMpCisJCSpvdXQgPSB0bXBfbWludXM7CisJZWxzZSBpZiAoIXRtcF9taW51cykKKwkJKm91dCA9 IHRtcF9wbHVzOworCWVsc2UKKwkJKm91dCA9IG1pbih0bXBfcGx1cywgdG1wX21pbnVzKTsKKwor CWNoYXIgKmVuZCA9ICpvdXQgKyAxOworCisJd2hpbGUgKGVuZCA8IHBhZ2VfZW5kKSB7CisJCWlm ICghaXNhbG51bSgqZW5kKSAmJiAqZW5kICE9ICcqJykKKwkJCWJyZWFrOworCQllbmQrKzsKKwl9 CisKKwlyZXR1cm4gZW5kIC0gKm91dDsKK30KK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQodmttc19j b25maWdmc19wYXJzZV9uZXh0X2Zvcm1hdCk7CisKK3N0YXRpYyBzc2l6ZV90IHBsYW5lX3N1cHBv cnRlZF9mb3JtYXRzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKKwkJCQkJICAgICBj b25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHZrbXNfY29uZmlnZnNf cGxhbmUgKnBsYW5lOworCisJcGxhbmUgPSBwbGFuZV9pdGVtX3RvX3ZrbXNfY29uZmlnZnNfcGxh bmUoaXRlbSk7CisJaW50IHJldCA9IDA7CisKKwlpZiAoY291bnQgPCAyIHx8IGNvdW50ID4gNSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocGFnZVswXSAhPSAnKycgJiYgcGFnZVswXSAhPSAn LScpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHBhZ2VbMV0gPT0gJyonICYmIGNvdW50ICE9 IDIpCisJCXJldHVybiAtRUlOVkFMOworCisJc2NvcGVkX2d1YXJkKG11dGV4LCAmcGxhbmUtPmRl di0+bG9jaykgeworCQljaGFyIGZtdFs0XSA9IHsnICcsICcgJywgJyAnLCAnICd9OworCisJCW1l bWNweShmbXQsICZwYWdlWzFdLCBtaW4oY291bnQgLSAxLCA0KSk7CisKKwkJaWYgKHBhZ2VbMF0g PT0gJysnICYmIHBhZ2VbMV0gPT0gJyonKQorCQkJcmV0ID0gdmttc19jb25maWdfcGxhbmVfYWRk X2FsbF9mb3JtYXRzKHBsYW5lLT5jb25maWcpOworCQllbHNlIGlmIChwYWdlWzBdID09ICctJyAm JiBwYWdlWzFdID09ICcqJykKKwkJCXZrbXNfY29uZmlnX3BsYW5lX3JlbW92ZV9hbGxfZm9ybWF0 cyhwbGFuZS0+Y29uZmlnKTsKKwkJZWxzZSBpZiAocGFnZVswXSA9PSAnKycpCisJCQlyZXQgPSB2 a21zX2NvbmZpZ19wbGFuZV9hZGRfZm9ybWF0KHBsYW5lLT5jb25maWcsICooaW50ICopZm10KTsK KwkJZWxzZSBpZiAocGFnZVswXSA9PSAnLScpCisJCQl2a21zX2NvbmZpZ19wbGFuZV9yZW1vdmVf Zm9ybWF0KHBsYW5lLT5jb25maWcsICooaW50ICopZm10KTsKKworCQlpZiAocmV0KQorCQkJcmV0 dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisKIENPTkZJR0ZTX0FUVFIocGxhbmVf LCB0eXBlKTsKIENPTkZJR0ZTX0FUVFIocGxhbmVfLCBuYW1lKTsKIENPTkZJR0ZTX0FUVFIocGxh bmVfLCBzdXBwb3J0ZWRfcm90YXRpb25zKTsKQEAgLTY0NCw2ICs3NTUsNyBAQCBDT05GSUdGU19B VFRSKHBsYW5lXywgc3VwcG9ydGVkX2NvbG9yX3Jhbmdlcyk7CiBDT05GSUdGU19BVFRSKHBsYW5l XywgZGVmYXVsdF9jb2xvcl9yYW5nZSk7CiBDT05GSUdGU19BVFRSKHBsYW5lXywgc3VwcG9ydGVk X2NvbG9yX2VuY29kaW5ncyk7CiBDT05GSUdGU19BVFRSKHBsYW5lXywgZGVmYXVsdF9jb2xvcl9l bmNvZGluZyk7CitDT05GSUdGU19BVFRSKHBsYW5lXywgc3VwcG9ydGVkX2Zvcm1hdHMpOwogCiBz dGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqcGxhbmVfaXRlbV9hdHRyc1tdID0gewog CSZwbGFuZV9hdHRyX3R5cGUsCkBAIC02NTQsNiArNzY2LDcgQEAgc3RhdGljIHN0cnVjdCBjb25m aWdmc19hdHRyaWJ1dGUgKnBsYW5lX2l0ZW1fYXR0cnNbXSA9IHsKIAkmcGxhbmVfYXR0cl9kZWZh dWx0X2NvbG9yX3JhbmdlLAogCSZwbGFuZV9hdHRyX3N1cHBvcnRlZF9jb2xvcl9lbmNvZGluZ3Ms CiAJJnBsYW5lX2F0dHJfZGVmYXVsdF9jb2xvcl9lbmNvZGluZywKKwkmcGxhbmVfYXR0cl9zdXBw b3J0ZWRfZm9ybWF0cywKIAlOVUxMLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19jb25maWdmcy5oIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jb25maWdm cy5oCmluZGV4IGU5MDIwYjAwNDNkYi4uNzNiZTY2MDQxMmNhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2NvbmZpZ2ZzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19jb25maWdmcy5oCkBAIC01LDQgKzUsOCBAQAogaW50IHZrbXNfY29uZmlnZnNfcmVnaXN0 ZXIodm9pZCk7CiB2b2lkIHZrbXNfY29uZmlnZnNfdW5yZWdpc3Rlcih2b2lkKTsKIAorI2lmIElT X0VOQUJMRUQoQ09ORklHX0tVTklUKQoraW50IHZrbXNfY29uZmlnZnNfcGFyc2VfbmV4dF9mb3Jt YXQoY29uc3QgY2hhciAqcGFnZSwgY29uc3QgY2hhciAqZW5kX3BhZ2UsIGNoYXIgKipvdXQpOwor I2VuZGlmCisKICNlbmRpZiAvKiBfVktNU19DT05GSUdGU19IXyAqLwoKLS0gCjIuNTQuMAoK