From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SyM2c-0003lu-Fo for qemu-devel@nongnu.org; Mon, 06 Aug 2012 08:04:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SyM2a-0002wT-6n for qemu-devel@nongnu.org; Mon, 06 Aug 2012 08:04:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56331) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SyM2Z-0002wH-U9 for qemu-devel@nongnu.org; Mon, 06 Aug 2012 08:04:08 -0400 Message-ID: <501FB2AF.9040908@redhat.com> Date: Mon, 06 Aug 2012 14:03:59 +0200 From: Gerd Hoffmann MIME-Version: 1.0 References: <1343188660.3715.41.camel@pasglop> In-Reply-To: <1343188660.3715.41.camel@pasglop> Content-Type: multipart/mixed; boundary="------------020502040804060902010402" Subject: Re: [Qemu-devel] vga-pci and MMIO BAR List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Benjamin Herrenschmidt Cc: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------020502040804060902010402 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 07/25/12 05:57, Benjamin Herrenschmidt wrote: > Hi folks ! > > Would there be any objection to adding a second MMIO BAR to qemu-vga > which mirrors the bochs magic VBE ports ? No. > Once done, I'd like to look into doing a qemudrmfb similar to the cirrus > one that pretty much gives you generic KMS support (with RandR) on top > of vga-pci. This would have the advantage of potentially lifting the > pitch and size limitations that plague cirrus. Hacked up something like that a while back (patch attached). Doesn't use DRM though, just plain old fbdev. Maybe you can reuse some bits nevertheless. /me wonders what the advantage of using drm is for non-3D hardware? cheers, Gerd --------------020502040804060902010402 Content-Type: text/plain; name="0001-add-bochs-dispi-interface-framebuffer-driver.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-add-bochs-dispi-interface-framebuffer-driver.patch" RnJvbSA2MzdmNjM3ZGY2M2EyZmM2NzZkN2ZhMDljNGZlYzQwMTcyNTU5YmFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNv bT4KRGF0ZTogVHVlLCA2IE1hciAyMDEyIDE0OjM0OjM4ICswMTAwClN1YmplY3Q6IFtQQVRD SF0gYWRkIGJvY2hzIGRpc3BpIGludGVyZmFjZSBmcmFtZWJ1ZmZlciBkcml2ZXIKClRoaXMg cGF0Y2hzIGFkZHMgYSBmcmFtZSBidWZmZXIgZHJpdmVyIGZvciAodmlydHVhbC9lbXVsYXRl ZCkgdmdhIGNhcmRzCmltcGxlbWVudGluZyB0aGUgYm9jaHMgZGlzcGkgaW50ZXJmYWNlLiAg U3VwcG9ydGVkIGhhcmR3YXJlIGFyZSB0aGUKYm9jaHMgdmdhIGNhcmQgd2l0aCB2YmUgZXh0 ZW5zaW9uIGFuZCB0aGUgcWVtdSBzdGFuZGFyZCB2Z2EuCgpUaGUgZHJpdmVyIHVzZXMgYSBm aXhlZCBkZXB0aCBvZiAzMmJwcC4gIE90aGVyd2lzZSBpdCBzdXBwb3J0cyB0aGUgZnVsbAoo YnV0IHNtYWxsKSBmZWF0dXJlIHNldCBvZiB0aGUgYm9jaHMgZGlzcGkgaW50ZXJmYWNlOiAg UmVzb2x1dGlvbgpzd2l0Y2hpbmcgYW5kIGRpc3BsYXkgcGFubmluZy4gIEl0IGlzIHR3ZWFr ZWQgdG8gbWF4aW1pemUgZmJjb24gc3BlZWQsCnNvIHlvdSdsbCBnZXQgdGhlIGNvbWZvcnQg b2YgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgaW4ga3ZtIGd1ZXN0cwp3aXRob3V0IHBlcmZv cm1hbmNlIHBlbmFsdHkuCgpTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxA cmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL3ZpZGVvL0tjb25maWcgICB8ICAgMTggKysrCiBk cml2ZXJzL3ZpZGVvL01ha2VmaWxlICB8ICAgIDEgKwogZHJpdmVycy92aWRlby9ib2Noc2Zi LmMgfCAgMzg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDQwNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vYm9jaHNmYi5jCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9LY29uZmlnIGIvZHJpdmVycy92aWRlby9LY29uZmlnCmlu ZGV4IDAyMTdmNzQuLmNmNDAxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vS2NvbmZp ZworKysgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKQEAgLTI4Niw2ICsyODYsMjQgQEAgY29u ZmlnIEZCX0NJUlJVUwogCSAgU2F5IE4gdW5sZXNzIHlvdSBoYXZlIHN1Y2ggYSBncmFwaGlj cyBib2FyZCBvciBwbGFuIHRvIGdldCBvbmUKIAkgIGJlZm9yZSB5b3UgbmV4dCByZWNvbXBp bGUgdGhlIGtlcm5lbC4KIAorY29uZmlnIEZCX0JPQ0hTCisJdHJpc3RhdGUgIkJvY2hzIGRp c3BpIGludGVyZmFjZSBzdXBwb3J0IgorCWRlcGVuZHMgb24gRkIgJiYgUENJCisJc2VsZWN0 IEZCX0NGQl9GSUxMUkVDVAorCXNlbGVjdCBGQl9DRkJfQ09QWUFSRUEKKwlzZWxlY3QgRkJf Q0ZCX0lNQUdFQkxJVAorCS0tLWhlbHAtLS0KKwkgIFRoaXMgaXMgdGhlIGZyYW1lIGJ1ZmZl ciBkcml2ZXIgZm9yICh2aXJ0dWFsL2VtdWxhdGVkKSB2Z2EKKyAgICAgICAgICBjYXJkcyBp bXBsZW1lbnRpbmcgdGhlIGJvY2hzIGRpc3BpIGludGVyZmFjZS4gIFN1cHBvcnRlZAorICAg ICAgICAgIGhhcmR3YXJlIGFyZSB0aGUgYm9jaHMgdmdhIGNhcmQgd2l0aCB2YmUgZXh0ZW5z aW9uIGFuZCB0aGUKKyAgICAgICAgICBxZW11IHN0YW5kYXJkIHZnYS4KKworICAgICAgICAg IFRoZSBkcml2ZXIgaGFuZGxlcyB0aGUgUENJIHZhcmlhbnRzIG9ubHkuICBJdCB1c2VzIGEg Zml4ZWQKKyAgICAgICAgICBkZXB0aCBvZiAzMmJwcCwgYW55dGhpbmcgZWxzZSBkb2Vzbid0 IG1ha2Ugc2Vuc2UgdGhlc2UgZGF5cy4KKworICAgICAgICAgIFNheSBZIGhlcmUgaWYgeW91 IHBsYW4gdG8gcnVuIHRoZSBrZXJuZWwgaW4gYSB2aXJ0dWFsIG1hY2hpbmUKKyAgICAgICAg ICBlbXVsYXRlZCBieSBib2NocyBvciBxZW11LgorCiBjb25maWcgRkJfUE0yCiAJdHJpc3Rh dGUgIlBlcm1lZGlhMiBzdXBwb3J0IgogCWRlcGVuZHMgb24gRkIgJiYgKChBTUlHQSAmJiBC Uk9LRU4pIHx8IFBDSSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUgYi9k cml2ZXJzL3ZpZGVvL01ha2VmaWxlCmluZGV4IGVlOGRhZmIuLjgxYjc4ZjEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUKKysrIGIvZHJpdmVycy92aWRlby9NYWtlZmls ZQpAQCAtMTAyLDYgKzEwMiw3IEBAIG9iai0kKENPTkZJR19GQl9BUk1DTENEKQkgICs9IGFt YmEtY2xjZC5vCiBvYmotJChDT05GSUdfRkJfNjgzMjgpICAgICAgICAgICAgKz0gNjgzMjhm Yi5vCiBvYmotJChDT05GSUdfRkJfR0JFKSAgICAgICAgICAgICAgKz0gZ2JlZmIubwogb2Jq LSQoQ09ORklHX0ZCX0NJUlJVUykJCSAgKz0gY2lycnVzZmIubworb2JqLSQoQ09ORklHX0ZC X0JPQ0hTKQkJICArPSBib2Noc2ZiLm8KIG9iai0kKENPTkZJR19GQl9BU0lMSUFOVCkJICAr PSBhc2lsaWFudGZiLm8KIG9iai0kKENPTkZJR19GQl9QWEEpCQkgICs9IHB4YWZiLm8KIG9i ai0kKENPTkZJR19GQl9QWEExNjgpCQkgICs9IHB4YTE2OGZiLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlkZW8vYm9jaHNmYi5jIGIvZHJpdmVycy92aWRlby9ib2Noc2ZiLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhOTRkYwotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvdmlkZW8vYm9jaHNmYi5jCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICog IFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZS4gU2VlIHRoZSBmaWxlIENPUFlJ TkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZSBmb3IKKyAqICBtb3Jl IGRldGFpbHMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8 bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51 eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4 L3BtLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5o PgorI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKwor I2RlZmluZSBWQkVfRElTUElfSU9QT1JUX0lOREVYICAgICAgICAgICAweDAxQ0UKKyNkZWZp bmUgVkJFX0RJU1BJX0lPUE9SVF9EQVRBICAgICAgICAgICAgMHgwMUNGCisKKyNkZWZpbmUg VkJFX0RJU1BJX0lOREVYX0lEICAgICAgICAgICAgICAgMHgwCisjZGVmaW5lIFZCRV9ESVNQ SV9JTkRFWF9YUkVTICAgICAgICAgICAgIDB4MQorI2RlZmluZSBWQkVfRElTUElfSU5ERVhf WVJFUyAgICAgICAgICAgICAweDIKKyNkZWZpbmUgVkJFX0RJU1BJX0lOREVYX0JQUCAgICAg ICAgICAgICAgMHgzCisjZGVmaW5lIFZCRV9ESVNQSV9JTkRFWF9FTkFCTEUgICAgICAgICAg IDB4NAorI2RlZmluZSBWQkVfRElTUElfSU5ERVhfQkFOSyAgICAgICAgICAgICAweDUKKyNk ZWZpbmUgVkJFX0RJU1BJX0lOREVYX1ZJUlRfV0lEVEggICAgICAgMHg2CisjZGVmaW5lIFZC RV9ESVNQSV9JTkRFWF9WSVJUX0hFSUdIVCAgICAgIDB4NworI2RlZmluZSBWQkVfRElTUElf SU5ERVhfWF9PRkZTRVQgICAgICAgICAweDgKKyNkZWZpbmUgVkJFX0RJU1BJX0lOREVYX1lf T0ZGU0VUICAgICAgICAgMHg5CisjZGVmaW5lIFZCRV9ESVNQSV9JTkRFWF9WSURFT19NRU1P UllfNjRLIDB4YQorCisjZGVmaW5lIFZCRV9ESVNQSV9JRDAgICAgICAgICAgICAgICAgICAg IDB4QjBDMAorI2RlZmluZSBWQkVfRElTUElfSUQxICAgICAgICAgICAgICAgICAgICAweEIw QzEKKyNkZWZpbmUgVkJFX0RJU1BJX0lEMiAgICAgICAgICAgICAgICAgICAgMHhCMEMyCisj ZGVmaW5lIFZCRV9ESVNQSV9JRDMgICAgICAgICAgICAgICAgICAgIDB4QjBDMworI2RlZmlu ZSBWQkVfRElTUElfSUQ0ICAgICAgICAgICAgICAgICAgICAweEIwQzQKKyNkZWZpbmUgVkJF X0RJU1BJX0lENSAgICAgICAgICAgICAgICAgICAgMHhCMEM1CisKKyNkZWZpbmUgVkJFX0RJ U1BJX0RJU0FCTEVEICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBWQkVfRElTUElfRU5B QkxFRCAgICAgICAgICAgICAgICAweDAxCisjZGVmaW5lIFZCRV9ESVNQSV9HRVRDQVBTICAg ICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgVkJFX0RJU1BJXzhCSVRfREFDICAgICAgICAg ICAgICAgMHgyMAorI2RlZmluZSBWQkVfRElTUElfTEZCX0VOQUJMRUQgICAgICAgICAgICAw eDQwCisjZGVmaW5lIFZCRV9ESVNQSV9OT0NMRUFSTUVNICAgICAgICAgICAgIDB4ODAKKwor ZW51bSBib2Noc190eXBlcyB7CisJQk9DSFNfUUVNVV9TVERWR0EsCisJQk9DSFNfVU5LTk9X TiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpib2Noc19uYW1lc1tdID0geworCVsgQk9D SFNfUUVNVV9TVERWR0EgXSA9ICJRRU1VIHN0YW5kYXJkIHZnYSIsCisJWyBCT0NIU19VTktO T1dOIF0gICAgID0gInVua25vd24iLAorfTsKKworc3RhdGljIHN0cnVjdCBmYl9maXhfc2Ny ZWVuaW5mbyBib2Noc2ZiX2ZpeCBfX2RldmluaXRkYXRhID0geworCS5pZCAgICAgICAgICA9 ICJib2Noc2ZiIiwKKwkudHlwZSAgICAgICAgPSBGQl9UWVBFX1BBQ0tFRF9QSVhFTFMsCisJ LnZpc3VhbCAgICAgID0gRkJfVklTVUFMX1RSVUVDT0xPUiwKKwkuYWNjZWwgICAgICAgPSBG Ql9BQ0NFTF9OT05FLAorCS54cGFuc3RlcCAgICA9IDEsCisJLnlwYW5zdGVwICAgID0gMSwK K307CisKK3N0YXRpYyBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gYm9jaHNmYl92YXIgX19k ZXZpbml0ZGF0YSA9IHsKKwkueHJlcyAgICAgICAgICAgPSAxMDI0LAorCS55cmVzICAgICAg ICAgICA9IDc2OCwKKwkuYml0c19wZXJfcGl4ZWwgPSAzMiwKKyNpZmRlZiBfX0JJR19FTkRJ QU4KKwkudHJhbnNwICAgICAgICAgPSB7IC5sZW5ndGggPSA4LCAub2Zmc2V0ID0gIDAgfSwK KwkucmVkICAgICAgICAgICAgPSB7IC5sZW5ndGggPSA4LCAub2Zmc2V0ID0gIDggfSwKKwku Z3JlZW4gICAgICAgICAgPSB7IC5sZW5ndGggPSA4LCAub2Zmc2V0ID0gMTYgfSwKKwkuYmx1 ZSAgICAgICAgICAgPSB7IC5sZW5ndGggPSA4LCAub2Zmc2V0ID0gMjQgfSwKKyNlbHNlCisJ LnRyYW5zcCAgICAgICAgID0geyAubGVuZ3RoID0gOCwgLm9mZnNldCA9IDI0IH0sCisJLnJl ZCAgICAgICAgICAgID0geyAubGVuZ3RoID0gOCwgLm9mZnNldCA9IDE2IH0sCisJLmdyZWVu ICAgICAgICAgID0geyAubGVuZ3RoID0gOCwgLm9mZnNldCA9ICA4IH0sCisJLmJsdWUgICAg ICAgICAgID0geyAubGVuZ3RoID0gOCwgLm9mZnNldCA9ICAwIH0sCisjZW5kaWYKKwkuaGVp Z2h0ICAgICAgICAgPSAtMSwKKwkud2lkdGggICAgICAgICAgPSAtMSwKKwkudm1vZGUgICAg ICAgICAgPSBGQl9WTU9ERV9OT05JTlRFUkxBQ0VELAorCS5waXhjbG9jayAgICAgICA9IDEw MDAwLAorCS5sZWZ0X21hcmdpbiAgICA9IDE2LAorCS5yaWdodF9tYXJnaW4gICA9IDE2LAor CS51cHBlcl9tYXJnaW4gICA9IDE2LAorCS5sb3dlcl9tYXJnaW4gICA9IDE2LAorCS5oc3lu Y19sZW4gICAgICA9IDgsCisJLnZzeW5jX2xlbiAgICAgID0gOCwKK307CisKK3N0YXRpYyBj aGFyICptb2RlIF9fZGV2aW5pdGRhdGE7Cittb2R1bGVfcGFyYW0obW9kZSwgY2hhcnAsIDAp OworTU9EVUxFX1BBUk1fREVTQyhtb2RlLCAiSW5pdGlhbCB2aWRlbyBtb2RlIGUuZy4gJzY0 OHg0ODAnIik7CisKK3N0YXRpYyB1MTYgYm9jaHNfcmVhZCh1MTYgcmVnKQoreworCW91dHco cmVnLCBWQkVfRElTUElfSU9QT1JUX0lOREVYKTsKKwlyZXR1cm4gaW53KFZCRV9ESVNQSV9J T1BPUlRfREFUQSk7Cit9CisKK3N0YXRpYyB2b2lkIGJvY2hzX3dyaXRlKHUxNiByZWcsIHUx NiB2YWwpCit7CisJb3V0dyhyZWcsIFZCRV9ESVNQSV9JT1BPUlRfSU5ERVgpOworCW91dHco dmFsLCBWQkVfRElTUElfSU9QT1JUX0RBVEEpOworfQorCitzdGF0aWMgaW50IGJvY2hzZmJf Y2hlY2tfdmFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAorCQkJICAgICBzdHJ1 Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwl1aW50MzJfdCB4LHksIHh2LHl2LCBwaXhlbHM7CisK KwlpZiAodmFyLT5iaXRzX3Blcl9waXhlbCAhPSAzMiB8fAorCSAgICB2YXItPnhyZXMgPiA2 NTUzNSB8fAorCSAgICB2YXItPnhyZXNfdmlydHVhbCA+IDY1NTM1IHx8CisJICAgICh2YXIt PnZtb2RlICYgRkJfVk1PREVfTUFTSykgIT0gRkJfVk1PREVfTk9OSU5URVJMQUNFRCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwl4ICA9IHZhci0+eHJlcyAmIH4weDBmOworCXkgID0gdmFy LT55cmVzICYgfjB4MDM7CisJeHYgPSB2YXItPnhyZXNfdmlydHVhbCAmIH4weDBmOworCXl2 ID0gdmFyLT55cmVzX3ZpcnR1YWwgJiB+MHgwMzsKKwlpZiAoeHYgPCB4KQorCQl4diA9IHg7 CisJcGl4ZWxzID0gaW5mby0+Zml4LnNtZW1fbGVuICogOCAvIGluZm8tPnZhci5iaXRzX3Bl cl9waXhlbDsKKwl5diA9IHBpeGVscyAvIHh2OworCWlmICh5ID4geXYpCisJCXJldHVybiAt RUlOVkFMOworCisJdmFyLT54cmVzID0geDsKKwl2YXItPnlyZXMgPSB5OworCXZhci0+eHJl c192aXJ0dWFsID0geHY7CisJdmFyLT55cmVzX3ZpcnR1YWwgPSB5djsKKwl2YXItPnhvZmZz ZXQgPSAwOworCXZhci0+eW9mZnNldCA9IDA7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBib2Noc2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pCit7CisJZGV2X2Ri ZyhpbmZvLT5kZXYsICJzZXQgbW9kZTogcmVhbDogJWR4JWQsIHZpcnR1YWw6ICVkeCVkXG4i LAorCQlpbmZvLT52YXIueHJlcywgaW5mby0+dmFyLnlyZXMsCisJCWluZm8tPnZhci54cmVz X3ZpcnR1YWwsIGluZm8tPnZhci55cmVzX3ZpcnR1YWwpOworCisJaW5mby0+Zml4LmxpbmVf bGVuZ3RoID0gaW5mby0+dmFyLnhyZXMgKiBpbmZvLT52YXIuYml0c19wZXJfcGl4ZWwgLyA4 OworCisJYm9jaHNfd3JpdGUoVkJFX0RJU1BJX0lOREVYX0JQUCwgICAgICAgICBpbmZvLT52 YXIuYml0c19wZXJfcGl4ZWwpOworCWJvY2hzX3dyaXRlKFZCRV9ESVNQSV9JTkRFWF9YUkVT LCAgICAgICAgaW5mby0+dmFyLnhyZXMpOworCWJvY2hzX3dyaXRlKFZCRV9ESVNQSV9JTkRF WF9ZUkVTLCAgICAgICAgaW5mby0+dmFyLnlyZXMpOworCWJvY2hzX3dyaXRlKFZCRV9ESVNQ SV9JTkRFWF9CQU5LLCAgICAgICAgMCk7CisJYm9jaHNfd3JpdGUoVkJFX0RJU1BJX0lOREVY X1ZJUlRfV0lEVEgsICBpbmZvLT52YXIueHJlc192aXJ0dWFsKTsKKwlib2Noc193cml0ZShW QkVfRElTUElfSU5ERVhfVklSVF9IRUlHSFQsIGluZm8tPnZhci55cmVzX3ZpcnR1YWwpOwor CWJvY2hzX3dyaXRlKFZCRV9ESVNQSV9JTkRFWF9YX09GRlNFVCwgICAgaW5mby0+dmFyLnhv ZmZzZXQpOworCWJvY2hzX3dyaXRlKFZCRV9ESVNQSV9JTkRFWF9ZX09GRlNFVCwgICAgaW5m by0+dmFyLnlvZmZzZXQpOworCisJYm9jaHNfd3JpdGUoVkJFX0RJU1BJX0lOREVYX0VOQUJM RSwKKwkJICAgIFZCRV9ESVNQSV9FTkFCTEVEIHwgVkJFX0RJU1BJX0xGQl9FTkFCTEVEKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBib2Noc2ZiX3NldGNvbHJlZyh1bnNpZ25l ZCByZWdubywgdW5zaWduZWQgcmVkLCB1bnNpZ25lZCBncmVlbiwKKwkJCSAgICAgdW5zaWdu ZWQgYmx1ZSwgdW5zaWduZWQgdHJhbnNwLAorCQkJICAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5m bykKK3sKKwlpZiAocmVnbm8gPCAxNiAmJiBpbmZvLT52YXIuYml0c19wZXJfcGl4ZWwgPT0g MzIpIHsKKwkJcmVkICAgPj49IDg7CisJCWdyZWVuID4+PSA4OworCQlibHVlICA+Pj0gODsK KwkJKCh1MzIgKikoaW5mby0+cHNldWRvX3BhbGV0dGUpKVtyZWdub10gPQorCQkJKHJlZCAg IDw8IGluZm8tPnZhci5yZWQub2Zmc2V0KSAgIHwKKwkJCShncmVlbiA8PCBpbmZvLT52YXIu Z3JlZW4ub2Zmc2V0KSB8CisJCQkoYmx1ZSAgPDwgaW5mby0+dmFyLmJsdWUub2Zmc2V0KTsK Kwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9jaHNmYl9wYW5fZGlzcGxheShz dHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKKwkJCSAgICAgICBzdHJ1Y3QgZmJfaW5m byAqaW5mbykKK3sKKwlib2Noc193cml0ZShWQkVfRElTUElfSU5ERVhfWF9PRkZTRVQsIHZh ci0+eG9mZnNldCk7CisJYm9jaHNfd3JpdGUoVkJFX0RJU1BJX0lOREVYX1lfT0ZGU0VULCB2 YXItPnlvZmZzZXQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGZiX29wcyBi b2Noc2ZiX29wcyA9IHsKKwkub3duZXIJICAgICAgICA9IFRISVNfTU9EVUxFLAorCS5mYl9j aGVja192YXIgICA9IGJvY2hzZmJfY2hlY2tfdmFyLAorCS5mYl9zZXRfcGFyICAgICA9IGJv Y2hzZmJfc2V0X3BhciwKKwkuZmJfc2V0Y29scmVnICAgPSBib2Noc2ZiX3NldGNvbHJlZywK KwkuZmJfcGFuX2Rpc3BsYXkgPSBib2Noc2ZiX3Bhbl9kaXNwbGF5LAorCS5mYl9maWxscmVj dCAgICA9IGNmYl9maWxscmVjdCwKKwkuZmJfY29weWFyZWEgICAgPSBjZmJfY29weWFyZWEs CisJLmZiX2ltYWdlYmxpdCAgID0gY2ZiX2ltYWdlYmxpdCwKK307CisKK3N0YXRpYyBpbnQg X19kZXZpbml0Citib2Noc2ZiX3BjaV9pbml0KHN0cnVjdCBwY2lfZGV2ICpkcCwgY29uc3Qg c3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKK3sKKwlzdHJ1Y3QgZmJfaW5mbyAqcDsKKwl1 bnNpZ25lZCBsb25nIGFkZHIsIHNpemUsIG1lbTsKKwl1MTYgaWQ7CisJaW50IHJjID0gLUVO T0RFVjsKKworCWlkID0gYm9jaHNfcmVhZChWQkVfRElTUElfSU5ERVhfSUQpOzsKKwltZW0g PSBib2Noc19yZWFkKFZCRV9ESVNQSV9JTkRFWF9WSURFT19NRU1PUllfNjRLKSAqIDY0ICog MTAyNDsKKwlkZXZfaW5mbygmZHAtPmRldiwiRm91bmQgYm9jaHMgVkdBLCBJRCAweCV4LCBt ZW0gJWxkaywgdHlwZSBcIiVzXCIuXG4iLAorCQkgaWQsIG1lbSAvIDEwMjQsIGJvY2hzX25h bWVzW2VudC0+ZHJpdmVyX2RhdGFdKTsKKwlpZiAoKGlkICYgMHhmZmYwKSAhPSBWQkVfRElT UElfSUQwKSB7CisJCWRldl9lcnIoJmRwLT5kZXYsICJJRCBtaXNtYXRjaFxuIik7CisJCWdv dG8gZXJyX291dDsKKwl9CisKKwlpZiAocGNpX2VuYWJsZV9kZXZpY2UoZHApIDwgMCkgewor CQlkZXZfZXJyKCZkcC0+ZGV2LCAiQ2Fubm90IGVuYWJsZSBQQ0kgZGV2aWNlXG4iKTsKKwkJ Z290byBlcnJfb3V0OworCX0KKworCWlmICgoZHAtPnJlc291cmNlWzBdLmZsYWdzICYgSU9S RVNPVVJDRV9NRU0pID09IDApCisJCWdvdG8gZXJyX2Rpc2FibGU7CisJYWRkciA9IHBjaV9y ZXNvdXJjZV9zdGFydChkcCwgMCk7CisJc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4oZHAsIDAp OworCWlmIChhZGRyID09IDApCisJCWdvdG8gZXJyX2Rpc2FibGU7CisJaWYgKHNpemUgIT0g bWVtKSB7CisJCWRldl9lcnIoJmRwLT5kZXYsICJTaXplIG1pc21hdGNoOiBwY2k9JWxkLCBi b2Nocz0lbGRcbiIsIHNpemUsIG1lbSk7CisJCXNpemUgPSBtaW4oc2l6ZSwgbWVtKTsKKwl9 CisKKwlwID0gZnJhbWVidWZmZXJfYWxsb2MoMCwgJmRwLT5kZXYpOworCWlmIChwID09IE5V TEwpIHsKKwkJZGV2X2VycigmZHAtPmRldiwgIkNhbm5vdCBhbGxvY2F0ZSBmcmFtZWJ1ZmZl ciBzdHJ1Y3R1cmVcbiIpOworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gZXJyX2Rpc2FibGU7 CisJfQorCisJaWYgKHBjaV9yZXF1ZXN0X3JlZ2lvbihkcCwgMCwgImJvY2hzZmIiKSAhPSAw KSB7CisJCWRldl9lcnIoJmRwLT5kZXYsICJDYW5ub3QgcmVxdWVzdCBmcmFtZWJ1ZmZlclxu Iik7CisJCXJjID0gLUVCVVNZOworCQlnb3RvIGVycl9yZWxlYXNlX2ZiOworCX0KKworCWlm ICghcmVxdWVzdF9yZWdpb24oVkJFX0RJU1BJX0lPUE9SVF9JTkRFWCwgMiwgImJvY2hzZmIi KSkgeworCQlkZXZfZXJyKCZkcC0+ZGV2LCAiQ2Fubm90IHJlcXVlc3QgaW9wb3J0c1xuIik7 CisJCXJjID0gLUVCVVNZOworCQlnb3RvIGVycl9yZWxlYXNlX3BjaTsKKwl9CisKKwlwLT5z Y3JlZW5fYmFzZSA9IGlvcmVtYXAoYWRkciwgc2l6ZSk7CisJaWYgKHAtPnNjcmVlbl9iYXNl ID09IE5VTEwpIHsKKwkJZGV2X2VycigmZHAtPmRldiwgIkNhbm5vdCBtYXAgZnJhbWVidWZm ZXJcbiIpOworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gZXJyX3JlbGVhc2VfcG9ydHM7CisJ fQorCW1lbXNldChwLT5zY3JlZW5fYmFzZSwgMCwgc2l6ZSk7CisKKwlwY2lfc2V0X2RydmRh dGEoZHAsIHApOworCXAtPmZib3BzID0gJmJvY2hzZmJfb3BzOworCXAtPmZsYWdzID0gRkJJ TkZPX0ZMQUdfREVGQVVMVAorCQl8IEZCSU5GT19SRUFEU19GQVNUCisJCXwgRkJJTkZPX0hX QUNDRUxfWFBBTgorCQl8IEZCSU5GT19IV0FDQ0VMX1lQQU47CisJcC0+cHNldWRvX3BhbGV0 dGUgPSBrbWFsbG9jKHNpemVvZih1MzIpICogMTYsIEdGUF9LRVJORUwpOworCXAtPmZpeCA9 IGJvY2hzZmJfZml4OworCXAtPmZpeC5zbWVtX3N0YXJ0ID0gYWRkcjsKKwlwLT5maXguc21l bV9sZW4gPSBzaXplOworCisJcC0+dmFyID0gYm9jaHNmYl92YXI7CisJYm9jaHNmYl9jaGVj a192YXIoJnAtPnZhciwgcCk7CisJaWYgKG1vZGUpIHsKKwkJZmJfZmluZF9tb2RlKCZwLT52 YXIsIHAsIG1vZGUsIE5VTEwsIDAsIE5VTEwsIDMyKTsKKwl9CisKKwlpZiAocmVnaXN0ZXJf ZnJhbWVidWZmZXIocCkgPCAwKSB7CisJCWRldl9lcnIoJmRwLT5kZXYsIkZyYW1lYnVmZmVy IGZhaWxlZCB0byByZWdpc3RlclxuIik7CisJCWdvdG8gZXJyX3VubWFwOworCX0KKworCWRl dl9pbmZvKCZkcC0+ZGV2LCJmYiVkOiBib2NocyBWR0EgZnJhbWUgYnVmZmVyIGluaXRpYWxp emVkLlxuIiwKKwkJIHAtPm5vZGUpOworCisJcmV0dXJuIDA7CisKKyBlcnJfdW5tYXA6CisJ aW91bm1hcChwLT5zY3JlZW5fYmFzZSk7CisgZXJyX3JlbGVhc2VfcG9ydHM6CisJcmVsZWFz ZV9yZWdpb24oVkJFX0RJU1BJX0lPUE9SVF9JTkRFWCwgMik7CisgZXJyX3JlbGVhc2VfcGNp OgorCXBjaV9yZWxlYXNlX3JlZ2lvbihkcCwgMCk7CisgZXJyX3JlbGVhc2VfZmI6CisJZnJh bWVidWZmZXJfcmVsZWFzZShwKTsKKyBlcnJfZGlzYWJsZToKKyBlcnJfb3V0OgorCXJldHVy biByYzsKK30KKworc3RhdGljIHZvaWQgX19kZXZleGl0IGJvY2hzZmJfcmVtb3ZlKHN0cnVj dCBwY2lfZGV2ICpkcCkKK3sKKwlzdHJ1Y3QgZmJfaW5mbyAqcCA9IHBjaV9nZXRfZHJ2ZGF0 YShkcCk7CisKKwlpZiAocC0+c2NyZWVuX2Jhc2UgPT0gTlVMTCkKKwkJcmV0dXJuOworCXVu cmVnaXN0ZXJfZnJhbWVidWZmZXIocCk7CisJaW91bm1hcChwLT5zY3JlZW5fYmFzZSk7CisJ cC0+c2NyZWVuX2Jhc2UgPSBOVUxMOworCXJlbGVhc2VfcmVnaW9uKFZCRV9ESVNQSV9JT1BP UlRfSU5ERVgsIDIpOworCXBjaV9yZWxlYXNlX3JlZ2lvbihkcCwgMCk7CisJa2ZyZWUocC0+ cHNldWRvX3BhbGV0dGUpOworCWZyYW1lYnVmZmVyX3JlbGVhc2UocCk7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBib2Noc2ZiX3BjaV90YmxbXSA9IHsKKwl7CisJCS52 ZW5kb3IgICAgICA9IDB4MTIzNCwKKwkJLmRldmljZSAgICAgID0gMHgxMTExLAorCQkuc3Vi dmVuZG9yICAgPSAweDFhZjQsCisJCS5zdWJkZXZpY2UgICA9IDB4MTEwMCwKKwkJLmRyaXZl cl9kYXRhID0gQk9DSFNfUUVNVV9TVERWR0EsCisJfSwKKwl7CisJCS52ZW5kb3IgICAgICA9 IDB4MTIzNCwKKwkJLmRldmljZSAgICAgID0gMHgxMTExLAorCQkuc3VidmVuZG9yICAgPSBQ Q0lfQU5ZX0lELAorCQkuc3ViZGV2aWNlICAgPSBQQ0lfQU5ZX0lELAorCQkuZHJpdmVyX2Rh dGEgPSBCT0NIU19VTktOT1dOLAorCX0sCisJeyAvKiBlbmQgb2YgbGlzdCAqLyB9Cit9Owor CitNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYm9jaHNmYl9wY2lfdGJsKTsKKworc3RhdGlj IHN0cnVjdCBwY2lfZHJpdmVyIGJvY2hzZmJfZHJpdmVyID0geworCS5uYW1lID0JCSJib2No c2ZiIiwKKwkuaWRfdGFibGUgPQlib2Noc2ZiX3BjaV90YmwsCisJLnByb2JlID0JYm9jaHNm Yl9wY2lfaW5pdCwKKwkucmVtb3ZlID0JX19kZXZleGl0X3AoYm9jaHNmYl9yZW1vdmUpLAor fTsKKworI2lmbmRlZiBNT0RVTEUKK3N0YXRpYyBpbnQgX19pbml0IGJvY2hzZmJfc2V0dXAo Y2hhciAqb3B0aW9ucykKK3sKKwljaGFyICp0aGlzX29wdDsKKworCWlmICghb3B0aW9ucyB8 fCAhKm9wdGlvbnMpCisJCXJldHVybiAwOworCisJd2hpbGUgKCh0aGlzX29wdCA9IHN0cnNl cCgmb3B0aW9ucywgIiwiKSkgIT0gTlVMTCkgeworCQlpZiAoISp0aGlzX29wdCkKKwkJCWNv bnRpbnVlOworCQlpZiAoIXN0cm5jbXAodGhpc19vcHQsICJtb2RlOiIsIDUpKQorCQkJbW9k ZSA9IHRoaXNfb3B0ICsgNTsKKwkJZWxzZQorCQkJbW9kZSA9IHRoaXNfb3B0OworCX0KKwly ZXR1cm4gMDsKK30KKyNlbmRpZgorCitpbnQgX19pbml0IGJvY2hzX2luaXQodm9pZCkKK3sK KyNpZm5kZWYgTU9EVUxFCisJY2hhciAqb3B0aW9uID0gTlVMTDsKKworCWlmIChmYl9nZXRf b3B0aW9ucygiYm9jaHNmYiIsICZvcHRpb24pKQorCQlyZXR1cm4gLUVOT0RFVjsKKwlib2No c2ZiX3NldHVwKG9wdGlvbik7CisjZW5kaWYKKwlyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZl cigmYm9jaHNmYl9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChib2Noc19pbml0KTsKKwor c3RhdGljIHZvaWQgX19leGl0IGJvY2hzZmJfZXhpdCh2b2lkKQoreworCXBjaV91bnJlZ2lz dGVyX2RyaXZlcigmYm9jaHNmYl9kcml2ZXIpOworfQorCitNT0RVTEVfTElDRU5TRSgiR1BM Iik7CitNT0RVTEVfQVVUSE9SKCJHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4i KTsKK01PRFVMRV9ERVNDUklQVElPTigiYm9jaHMgZGlzcGkgaW50ZXJmYWNlIGZyYW1lYnVm ZmVyIGRyaXZlciIpOwotLSAKMS43LjEKCg== --------------020502040804060902010402--