From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NacPW-0001RU-Gd for qemu-devel@nongnu.org; Thu, 28 Jan 2010 17:00:22 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NacPS-0001Qu-3d for qemu-devel@nongnu.org; Thu, 28 Jan 2010 17:00:22 -0500 Received: from [199.232.76.173] (port=41918 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NacPR-0001Qr-TB for qemu-devel@nongnu.org; Thu, 28 Jan 2010 17:00:17 -0500 Received: from mail-pz0-f190.google.com ([209.85.222.190]:35728) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NacPR-0000UQ-8X for qemu-devel@nongnu.org; Thu, 28 Jan 2010 17:00:17 -0500 Received: by pzk28 with SMTP id 28so862758pzk.4 for ; Thu, 28 Jan 2010 14:00:15 -0800 (PST) MIME-Version: 1.0 From: Blue Swirl Date: Thu, 28 Jan 2010 21:59:55 +0000 Message-ID: Content-Type: multipart/mixed; boundary=000e0cd28aaad4d882047e40a409 Subject: [Qemu-devel] Wrong IDE endianness List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Kovalenko Cc: qemu-devel --000e0cd28aaad4d882047e40a409 Content-Type: text/plain; charset=UTF-8 I'm wondering about this part: cmd64x 0000:00:05.0: 100% native mode on irq 1 ide0: BM-DMA at 0x1fe02000700-0x1fe02000707 ide1: BM-DMA at 0x1fe02000708-0x1fe0200070f hda: EQUMH RADDSI K, ATA DISK drive hdc: EQUMD DVR-MO, ATAPI cdrom or floppy?, assuming FLOPPY drive Why the drive names are swapped? Currently bytes are swapped at APB/PBM PCI config, apb_pci_config_readw etc. Actual data goes via pci_apb_iowritew etc unswapped. Now, I tried to change this so that instead of just apb_pci_config_readw, pci_apb_iowritew and friends do swapping globally for all IO ports. This would require also a few changes to OpenBIOS, patches attached. But Linux is even less happy: cmd64x 0000:00:05.0: IDE controller (0x1095:0x0646 rev 0x01) cmd64x 0000:00:05.0: unable to enable IDE controller cmd64x 0000:00:05.0: IDE controller (0x1095:0x0646 rev 0x01) CMD64x_IDE 0000:00:05.0: BAR 0: can't reserve I/O region [0x1fe02000500-0x1fe02000507] cmd64x 0000:00:05.0: can't reserve resources CMD64x_IDE: probe of 0000:00:05.0 failed with error -16 So I don't think this approach is correct either. It could be possible that individual devices would need byte swaps. But CMD64x is used successfully also on PPC and the same code is used for both Sparc64 and PPC OpenBIOS and Linux. --000e0cd28aaad4d882047e40a409 Content-Type: application/x-patch; name="0001-Sparc64-change-the-location-of-byte-swapping.patch" Content-Disposition: attachment; filename="0001-Sparc64-change-the-location-of-byte-swapping.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g502uav20 RnJvbSBhNDcwODJkZWJmYjljMTc5ZmQ0ODhlODRkZGYyY2M3Y2MxNDMxMWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCAyOCBKYW4gMjAxMCAyMTo0NTozMyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFNwYXJj NjQ6IGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgYnl0ZSBzd2FwcGluZwoKU2lnbmVkLW9mZi1ieTog Qmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+Ci0tLQogaHcvYXBiX3BjaS5jIHwgICAx NiArKysrKysrKy0tLS0tLS0tCiAxIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9hcGJfcGNpLmMgYi9ody9hcGJfcGNpLmMKaW5k ZXggN2Y0NThjNi4uMWViNjZmZCAxMDA2NDQKLS0tIGEvaHcvYXBiX3BjaS5jCisrKyBiL2h3L2Fw Yl9wY2kuYwpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyB2b2lkIGFwYl9wY2lfY29uZmlnX3dy aXRlbCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogewogICAgIEFQQlN0 YXRlICpzID0gb3BhcXVlOwogCi0gICAgYXBiX3BjaV9jb25maWdfd3JpdGUocywgYWRkciwgYnN3 YXAzMih2YWwpLCA0KTsKKyAgICBhcGJfcGNpX2NvbmZpZ193cml0ZShzLCBhZGRyLCB2YWwsIDQp OwogfQogCiBzdGF0aWMgdm9pZCBhcGJfcGNpX2NvbmZpZ193cml0ZXcodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBh cGJfcGNpX2NvbmZpZ193cml0ZXcodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRk ciwKIHsKICAgICBBUEJTdGF0ZSAqcyA9IG9wYXF1ZTsKIAotICAgIGFwYl9wY2lfY29uZmlnX3dy aXRlKHMsIGFkZHIsIGJzd2FwMTYodmFsKSwgMik7CisgICAgYXBiX3BjaV9jb25maWdfd3JpdGUo cywgYWRkciwgdmFsLCAyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBiX3BjaV9jb25maWdfd3JpdGVi KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCkBAIC0xNTEsMTQgKzE1MSwx NCBAQCBzdGF0aWMgdWludDMyX3QgYXBiX3BjaV9jb25maWdfcmVhZGwodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICBBUEJTdGF0ZSAqcyA9IG9wYXF1ZTsKIAot ICAgIHJldHVybiBic3dhcDMyKGFwYl9wY2lfY29uZmlnX3JlYWQocywgYWRkciwgNCkpOworICAg IHJldHVybiBhcGJfcGNpX2NvbmZpZ19yZWFkKHMsIGFkZHIsIDQpOwogfQogCiBzdGF0aWMgdWlu dDMyX3QgYXBiX3BjaV9jb25maWdfcmVhZHcodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRy X3QgYWRkcikKIHsKICAgICBBUEJTdGF0ZSAqcyA9IG9wYXF1ZTsKIAotICAgIHJldHVybiBic3dh cDE2KGFwYl9wY2lfY29uZmlnX3JlYWQocywgYWRkciwgMikpOworICAgIHJldHVybiBhcGJfcGNp X2NvbmZpZ19yZWFkKHMsIGFkZHIsIDIpOwogfQogCiBzdGF0aWMgdWludDMyX3QgYXBiX3BjaV9j b25maWdfcmVhZGIodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKQEAgLTE4 OSwxMyArMTg5LDEzIEBAIHN0YXRpYyB2b2lkIHBjaV9hcGJfaW93cml0ZWIgKHZvaWQgKm9wYXF1 ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiBzdGF0aWMgdm9pZCBwY2lfYXBiX2lvd3JpdGV3 ICh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKIHsKLSAgICBjcHVfb3V0dyhhZGRyICYg SU9QT1JUU19NQVNLLCB2YWwpOworICAgIGNwdV9vdXR3KGFkZHIgJiBJT1BPUlRTX01BU0ssIGJz d2FwMTYodmFsKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBjaV9hcGJfaW93cml0ZWwgKHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IHZhbCkKIHsKLSAgICBjcHVfb3V0bChhZGRyICYgSU9QT1JUU19NQVNL LCB2YWwpOworICAgIGNwdV9vdXRsKGFkZHIgJiBJT1BPUlRTX01BU0ssIGJzd2FwMzIodmFsKSk7 CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBwY2lfYXBiX2lvcmVhZGIgKHZvaWQgKm9wYXF1ZSwgdGFy Z2V0X3BoeXNfYWRkcl90IGFkZHIpCkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHVpbnQzMl90 IHBjaV9hcGJfaW9yZWFkdyAodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikK IHsKICAgICB1aW50MzJfdCB2YWw7CiAKLSAgICB2YWwgPSBjcHVfaW53KGFkZHIgJiBJT1BPUlRT X01BU0spOworICAgIHZhbCA9IGJzd2FwMTYoY3B1X2ludyhhZGRyICYgSU9QT1JUU19NQVNLKSk7 CiAgICAgcmV0dXJuIHZhbDsKIH0KIApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB1aW50MzJf dCBwY2lfYXBiX2lvcmVhZGwgKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIp CiB7CiAgICAgdWludDMyX3QgdmFsOwogCi0gICAgdmFsID0gY3B1X2lubChhZGRyICYgSU9QT1JU U19NQVNLKTsKKyAgICB2YWwgPSBic3dhcDMyKGNwdV9pbmwoYWRkciAmIElPUE9SVFNfTUFTSykp OwogICAgIHJldHVybiB2YWw7CiB9CiAKLS0gCjEuNS42LjUKCg== --000e0cd28aaad4d882047e40a409 Content-Type: application/x-patch; name="0001-QEMU-changed-PCI-IO-port-byte-swapping-adapt-OpenBI.patch" Content-Disposition: attachment; filename="0001-QEMU-changed-PCI-IO-port-byte-swapping-adapt-OpenBI.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g502uiod1 RnJvbSA1NDFkOTQ1MTEwNzUxYzYxYWZmMTdhMWZhMmE3NDdiNjc1MGU3MGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCAyOCBKYW4gMjAxMCAyMTo0NzoyOCArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFFFTVUg Y2hhbmdlZCBQQ0kvSU8gcG9ydCBieXRlIHN3YXBwaW5nLCBhZGFwdCBPcGVuQklPUyB0byBuZXcg d2F5CgpTaWduZWQtb2ZmLWJ5OiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KLS0t CiBhcmNoL3NwYXJjNjQvZW50cnkuUyB8ICAgIDQgKy0KIGluY2x1ZGUvc3BhcmM2NC9pby5oIHwg ICA1MiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2FyY2gvc3BhcmM2NC9lbnRyeS5TIGIvYXJjaC9zcGFyYzY0L2VudHJ5LlMKaW5kZXgg NzUwZjdiMS4uOTFhNTUwYiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2VudHJ5LlMKKysrIGIv YXJjaC9zcGFyYzY0L2VudHJ5LlMKQEAgLTU4LDcgKzU4LDcgQEAgZW50cnk6CiAKICAgICAgICAg ISBDaGVjayBzaWduYXR1cmUgIlFFTVUiCiAgICAgICAgIHNldHggICAgQ0ZHX0FERFIsICVnMiwg JWc1Ci0gICAgICAgIG1vdiAgICAgRldfQ0ZHX1NJR05BVFVSRSwgJWcyCisgICAgICAgIG1vdiAg ICAgRldfQ0ZHX1NJR05BVFVSRSA8PCA4LCAlZzIKICAgICAgICAgc3RoYSAgICAlZzIsIFslZzVd IEFTSV9QSFlTX0JZUEFTU19FQ19FCiAgICAgICAgIGluYyAgICAgJWc1CiAgICAgICAgIGxkdWJh ICAgWyVnNV0gQVNJX1BIWVNfQllQQVNTX0VDX0UsICVnMgpAQCAtOTcsNyArOTcsNyBAQCBlbnRy eToKIAogICAgICAgICAhIEdldCBtZW1vcnkgc2l6ZSBmcm9tIGNvbmZpZ3VyYXRpb24gZGV2aWNl CiAgICAgICAgICEgTkI6IGxpdHRsZSBlbmRpYW4gZm9ybWF0Ci0gICAgICAgIG1vdiAgICAgRldf Q0ZHX1JBTV9TSVpFLCAlZzIKKyAgICAgICAgbW92ICAgICBGV19DRkdfUkFNX1NJWkUgPDwgOCwg JWcyCiAgICAgICAgIGRlYyAgICAgJWc1CiAgICAgICAgIHN0aGEgICAgJWcyLCBbJWc1XSBBU0lf UEhZU19CWVBBU1NfRUNfRQogICAgICAgICBpbmMgICAgICVnNQpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9zcGFyYzY0L2lvLmggYi9pbmNsdWRlL3NwYXJjNjQvaW8uaAppbmRleCBlYTcwOWQ4Li44YjU1 NzkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3NwYXJjNjQvaW8uaAorKysgYi9pbmNsdWRlL3NwYXJj NjQvaW8uaApAQCAtNzUsMjkgKzc1LDM2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBvdXRfOCh2b2xh dGlsZSB1bnNpZ25lZCBjaGFyICphZGRyLCBpbnQgdmFsKQogCiBzdGF0aWMgaW5saW5lIGludCBp bl9sZTE2KHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICphZGRyKQogewotICAgIGludCByZXQsIHRt cDsKKyAgICBpbnQgcmV0OwogCiAgICAgLy8gWFhYCiAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o ImxkdWhhIFslMV0gMHgxNSwgJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIi KHJldCk6InIiKGFkZHIpOiJtZW1vcnkiKTsKIAotICAgIHRtcCA9IChyZXQgPDwgOCkgJiAweGZm MDA7Ci0gICAgdG1wIHw9IChyZXQgPj4gOCkgJiAweGZmOwotICAgIHJldHVybiB0bXA7CisgICAg cmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgaW5fYmUxNih2b2xhdGlsZSB1bnNp Z25lZCBzaG9ydCAqYWRkcikKIHsKLSAgICBpbnQgcmV0OworICAgIGludCByZXQsIHRtcDsKIAog ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsZHVoYSBbJTFdIDB4MTUsICUwXG5cdCIKICAgICAg ICAgICAgICAgICAgICAgICAgICA6Ij1yIihyZXQpOiJyIihhZGRyKToibWVtb3J5Iik7CiAKLSAg ICByZXR1cm4gcmV0OworICAgIHRtcCA9IChyZXQgPDwgOCkgJiAweGZmMDA7CisgICAgdG1wIHw9 IChyZXQgPj4gOCkgJiAweGZmOworICAgIHJldHVybiB0bXA7CiB9CiAKIHN0YXRpYyBpbmxpbmUg dm9pZCBvdXRfbGUxNih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqYWRkciwgaW50IHZhbCkKIHsK KworICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGhhICUwLCBbJTFdIDB4MTVcblx0IgorICAg ICAgICAgICAgICAgICAgICAgICAgIDogOiAiciIodmFsKSwgInIiKGFkZHIpOiJtZW1vcnkiKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIG91dF9iZTE2KHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0 ICphZGRyLCBpbnQgdmFsKQorewogICAgIHVuc2lnbmVkIHRtcDsKIAogICAgIC8vIFhYWApAQCAt MTA3LDQwICsxMTQsNDEgQEAgc3RhdGljIGlubGluZSB2b2lkIG91dF9sZTE2KHZvbGF0aWxlIHVu c2lnbmVkIHNob3J0ICphZGRyLCBpbnQgdmFsKQogICAgICAgICAgICAgICAgICAgICAgICAgIDog OiAiciIodG1wKSwgInIiKGFkZHIpOiJtZW1vcnkiKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk IG91dF9iZTE2KHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICphZGRyLCBpbnQgdmFsKQorc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbl9sZTMyKHZvbGF0aWxlIHVuc2lnbmVkICphZGRyKQogewotICAg IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGhhICUwLCBbJTFdIDB4MTVcblx0IgotICAgICAgICAg ICAgICAgICAgICAgICAgIDogOiAiciIodmFsKSwgInIiKGFkZHIpOiJtZW1vcnkiKTsKKyAgICB1 bnNpZ25lZCByZXQ7CisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibGR1d2EgWyUxXSAweDE1 LCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIocmV0KToiciIoYWRkcik6 Im1lbW9yeSIpOworCisgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbl9sZTMyKHZvbGF0aWxlIHVuc2lnbmVkICphZGRyKQorc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbl9iZTMyKHZvbGF0aWxlIHVuc2lnbmVkICphZGRyKQogewogICAgIHVuc2lnbmVkIHJldCwg dG1wOwogCiAgICAgLy8gWFhYCiAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxkdXdhIFslMV0g MHgxNSwgJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIiKHJldCk6InIiKGFk ZHIpOiJtZW1vcnkiKTsKLQogICAgIHRtcCA9IHJldCA8PCAyNDsKICAgICB0bXAgfD0gKHJldCA8 PCA4KSAmIDB4ZmYwMDAwOwogICAgIHRtcCB8PSAocmV0ID4+IDgpICYgMHhmZjAwOwogICAgIHRt cCB8PSAocmV0ID4+IDI0KSAmIDB4ZmY7CisKICAgICByZXR1cm4gdG1wOwogfQogCi1zdGF0aWMg aW5saW5lIHVuc2lnbmVkIGluX2JlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIpCitzdGF0aWMg aW5saW5lIHZvaWQgb3V0X2xlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIsIGludCB2YWwpCiB7 Ci0gICAgdW5zaWduZWQgcmV0OwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxkdXdhIFsl MV0gMHgxNSwgJTBcblx0IgotICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIiKHJldCk6InIi KGFkZHIpOiJtZW1vcnkiKTsKLQotICAgIHJldHVybiByZXQ7CisgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oInN0d2EgJTAsIFslMV0gMHgxNVxuXHQiCisgICAgICAgICAgICAgICAgICAgICAgICAg OiA6ICJyIih2YWwpLCAiciIoYWRkcik6Im1lbW9yeSIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv aWQgb3V0X2xlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIsIGludCB2YWwpCitzdGF0aWMgaW5s aW5lIHZvaWQgb3V0X2JlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIsIGludCB2YWwpCiB7CiAg ICAgdW5zaWduZWQgdG1wOworCiAgICAgLy8gWFhYCiAgICAgdG1wID0gdmFsIDw8IDI0OwogICAg IHRtcCB8PSAodmFsIDw8IDgpICYgMHhmZjAwMDA7CkBAIC0xNTAsMTIgKzE1OCw2IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBvdXRfbGUzMih2b2xhdGlsZSB1bnNpZ25lZCAqYWRkciwgaW50IHZhbCkK ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogInIiKHRtcCksICJyIihhZGRyKToibWVtb3J5 Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBvdXRfYmUzMih2b2xhdGlsZSB1bnNpZ25lZCAq YWRkciwgaW50IHZhbCkKLXsKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3R3YSAlMCwgWyUx XSAweDE1XG5cdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICA6IDogInIiKHZhbCksICJyIihh ZGRyKToibWVtb3J5Iik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZCBfaW5zd19ucyh2b2xhdGls ZSB1aW50MTZfdCAqIHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKQogewogCXVpbnQxNl90ICpiID0g KHVpbnQxNl90ICopIGJ1ZjsKLS0gCjEuNS42LjUKCg== --000e0cd28aaad4d882047e40a409--