From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57923) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XcYVV-00043a-UE for qemu-devel@nongnu.org; Fri, 10 Oct 2014 07:37:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XcYVR-0000oT-Pj for qemu-devel@nongnu.org; Fri, 10 Oct 2014 07:37:13 -0400 Received: from mail-wi0-x231.google.com ([2a00:1450:400c:c05::231]:57109) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XcYVR-0000oC-E6 for qemu-devel@nongnu.org; Fri, 10 Oct 2014 07:37:09 -0400 Received: by mail-wi0-f177.google.com with SMTP id fb4so1720400wid.16 for ; Fri, 10 Oct 2014 04:37:08 -0700 (PDT) Received: from ?IPv6:2a01:4240:53f0:43fb::cbb? ([2a01:4240:53f0:43fb::cbb]) by mx.google.com with ESMTPSA id di1sm2320443wib.21.2014.10.10.04.37.06 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Oct 2014 04:37:06 -0700 (PDT) Sender: Jiri Slaby Message-ID: <5437C4E1.8010500@suse.cz> Date: Fri, 10 Oct 2014 13:37:05 +0200 From: Jiri Slaby MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080401090409090903060907" Subject: [Qemu-devel] [patch] qemu educational device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu Developers This is a multi-part message in MIME format. --------------080401090409090903060907 Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: 8bit Hello guys, I am using qemu for teaching the Linux kernel at our university. I wrote a simple PCI device that can answer to writes/reads, generate interrupts and perform DMA. As I am dragging it locally over 2 years, would you be interested in including it upstream? thanks, -- js suse labs --------------080401090409090903060907 Content-Type: application/mbox; name="training-driver.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="training-driver.patch" LS0tCiBody9wY2ktaG9zdC9NYWtlZmlsZS5vYmpzIHwgICAgMSAKIGh3L3BjaS1ob3N0L2Vk dS5jICAgICAgICAgfCAgMzM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzM3IGluc2VydGlvbnMoKykKCi0tLSBh L2h3L3BjaS1ob3N0L01ha2VmaWxlLm9ianMKKysrIGIvaHcvcGNpLWhvc3QvTWFrZWZpbGUu b2JqcwpAQCAtMTMsNSArMTMsNiBAQCBjb21tb24tb2JqLSQoQ09ORklHX1ZFUlNBVElMRV9Q Q0kpICs9IHZlCiAKIGNvbW1vbi1vYmotJChDT05GSUdfUENJX0FQQikgKz0gYXBiLm8KIGNv bW1vbi1vYmotJChDT05GSUdfRlVMT05HKSArPSBib25pdG8ubworY29tbW9uLW9iai0kKENP TkZJR19QQ0kpICs9IGVkdS5vCiBjb21tb24tb2JqLSQoQ09ORklHX1BDSV9QSUlYKSArPSBw aWl4Lm8KIGNvbW1vbi1vYmotJChDT05GSUdfUENJX1EzNSkgKz0gcTM1Lm8KLS0tIC9kZXYv bnVsbAorKysgYi9ody9wY2ktaG9zdC9lZHUuYwpAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAq IFFFTVUgZWR1Y2F0aW9uIFBDSSBkZXZpY2UKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIg SmlyaSBTbGFieQorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiaHcvcGNpL3BjaS5o IgorI2luY2x1ZGUgInFlbXUvdGltZXIuaCIKKworI2RlZmluZSBETUFfU1RBUlQJMHg0MDAw MAorI2RlZmluZSBETUFfU0laRQk0MDk2CisjZGVmaW5lIERNQV9JUlEJCTB4MDAwMDAxMDAK KwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFBDSURldmljZSBwZGV2OworICAgIE1lbW9yeVJl Z2lvbiBtbWlvOworCisgICAgUWVtdVRocmVhZCB0aHJlYWQ7CisgICAgUWVtdU11dGV4IHRo cl9tdXRleDsKKyAgICBRZW11Q29uZCB0aHJfY29uZDsKKyAgICBib29sIHN0b3BwaW5nOwor CisgICAgdWludDMyX3QgYWRkcjQ7CisgICAgdWludDMyX3QgZmFjdDsKKyNkZWZpbmUgRURV X1NUQVRVU19DT01QVVRJTkcJMHgxCisgICAgdWludDMyX3Qgc3RhdHVzOworCisgICAgdWlu dDMyX3QgaXJxX3N0YXR1czsKKyAgICBRZW11TXV0ZXggaXJxX211dGV4OworCisjZGVmaW5l IEVEVV9ETUFfUlVOCQkweDEKKyNkZWZpbmUgRURVX0RNQV9ESVIoY21kKQkoKChjbWQpICYg MHgyKSA+PiAxKQorIyBkZWZpbmUgRURVX0RNQV9GUk9NX1BDSQkwCisjIGRlZmluZSBFRFVf RE1BX1RPX1BDSQkJMQorI2RlZmluZSBFRFVfRE1BX0lSUQkJMHg0CisgICAgc3RydWN0IGRt YV9zdGF0ZSB7CisJICAgIHVpbnQzMl90IHNyYzsKKwkgICAgdWludDMyX3QgZHN0OworCSAg ICB1aW50MzJfdCBjbnQ7CisJICAgIHVpbnQzMl90IGNtZDsKKyAgICB9IGRtYTsKKyAgICBR RU1VVGltZXIgKmRtYV90aW1lcjsKKyAgICBRZW11TXV0ZXggZG1hX211dGV4OworICAgIGNo YXIgZG1hX2J1ZltETUFfU0laRV07Cit9IEVkdVN0YXRlOworCitzdGF0aWMgYm9vbCB3aXRo aW4odWludDMyX3QgYWRkciwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCkKK3sKKwly ZXR1cm4gc3RhcnQgPD0gYWRkciAmJiBhZGRyIDwgZW5kOworfQorCitzdGF0aWMgdm9pZCBj aGVja19yYW5nZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCBzaXplMSwgdWludDMyX3Qgc3Rh cnQsCisJCXVpbnQzMl90IHNpemUyKQoreworCXVpbnQzMl90IGVuZDEgPSBhZGRyICsgc2l6 ZTE7CisJdWludDMyX3QgZW5kMiA9IHN0YXJ0ICsgc2l6ZTI7CisKKwlpZiAod2l0aGluKGFk ZHIsIHN0YXJ0LCBlbmQyKSAmJgorCQkJZW5kMSA+IGFkZHIgJiYgd2l0aGluKGVuZDEsIHN0 YXJ0LCBlbmQyKSkKKwkJcmV0dXJuOworCisJaHdfZXJyb3IoIkVEVTogRE1BIHJhbmdlIDB4 JS44eC0weCUuOHggb3V0IG9mIGJvdW5kcyAoMHglLjh4LTB4JS44eCkhIiwKKwkJCWFkZHIs IGVuZDEgLSAxLCBzdGFydCwgZW5kMiAtIDEpOworfQorCitzdGF0aWMgdm9pZCBlZHVfZG1h X3RpbWVyKHZvaWQgKm9wYXF1ZSkKK3sKKwlFZHVTdGF0ZSAqZWR1ID0gb3BhcXVlOworCWJv b2wgcmFpc2VfaXJxID0gZmFsc2U7CisKKwlxZW11X211dGV4X2xvY2soJmVkdS0+ZG1hX211 dGV4KTsKKwlpZiAoIShlZHUtPmRtYS5jbWQgJiBFRFVfRE1BX1JVTikpCisJCWdvdG8gZW5k OworCisJaWYgKEVEVV9ETUFfRElSKGVkdS0+ZG1hLmNtZCkgPT0gRURVX0RNQV9GUk9NX1BD SSkgeworCQl1aW50MzJfdCBkc3QgPSBlZHUtPmRtYS5kc3Q7CisJCWNoZWNrX3JhbmdlKGRz dCwgZWR1LT5kbWEuY250LCBETUFfU1RBUlQsIERNQV9TSVpFKTsKKwkJZHN0IC09IERNQV9T VEFSVDsKKwkJcGNpX2RtYV9yZWFkKCZlZHUtPnBkZXYsIGVkdS0+ZG1hLnNyYywgZWR1LT5k bWFfYnVmICsgZHN0LAorCQkJCWVkdS0+ZG1hLmNudCk7CisJfSBlbHNlIHsKKwkJdWludDMy X3Qgc3JjID0gZWR1LT5kbWEuc3JjOworCQljaGVja19yYW5nZShzcmMsIGVkdS0+ZG1hLmNu dCwgRE1BX1NUQVJULCBETUFfU0laRSk7CisJCXNyYyAtPSBETUFfU1RBUlQ7CisJCXBjaV9k bWFfd3JpdGUoJmVkdS0+cGRldiwgZWR1LT5kbWEuZHN0LCBlZHUtPmRtYV9idWYgKyBzcmMs CisJCQkJZWR1LT5kbWEuY250KTsKKwl9CisKKwllZHUtPmRtYS5jbWQgJj0gfkVEVV9ETUFf UlVOOworCWlmIChlZHUtPmRtYS5jbWQgJiBFRFVfRE1BX0lSUSkKKwkJcmFpc2VfaXJxID0g dHJ1ZTsKK2VuZDoKKwlxZW11X211dGV4X3VubG9jaygmZWR1LT5kbWFfbXV0ZXgpOworCisJ aWYgKHJhaXNlX2lycSkgeworCQlxZW11X211dGV4X2xvY2soJmVkdS0+aXJxX211dGV4KTsK KwkJZWR1LT5pcnFfc3RhdHVzIHw9IERNQV9JUlE7CisJCXBjaV9zZXRfaXJxKCZlZHUtPnBk ZXYsIDEpOworCQlxZW11X211dGV4X3VubG9jaygmZWR1LT5pcnFfbXV0ZXgpOworCX0KK30K Kworc3RhdGljIHZvaWQgZG1hX3J3KEVkdVN0YXRlICplZHUsIGJvb2wgd3JpdGUsIHVpbnQ2 NF90ICp2YWwsIHVpbnQzMl90ICpkbWEsCisJCWJvb2wgdGltZXIpCit7CisJcWVtdV9tdXRl eF9sb2NrKCZlZHUtPmRtYV9tdXRleCk7CisJaWYgKHdyaXRlICYmIChlZHUtPmRtYS5jbWQg JiBFRFVfRE1BX1JVTikpIHsKKwkJcWVtdV9tdXRleF91bmxvY2soJmVkdS0+ZG1hX211dGV4 KTsKKwkJcmV0dXJuOworCX0KKwlpZiAod3JpdGUpCisJCSpkbWEgPSAqdmFsOworCWVsc2UK KwkJKnZhbCA9ICpkbWE7CisJaWYgKHRpbWVyKQorCQl0aW1lcl9tb2QoZWR1LT5kbWFfdGlt ZXIsCisJCQkJcWVtdV9jbG9ja19nZXRfbXMoUUVNVV9DTE9DS19WSVJUVUFMKSArIDEwMCk7 CisJcWVtdV9tdXRleF91bmxvY2soJmVkdS0+ZG1hX211dGV4KTsKK30KKworc3RhdGljIHVp bnQ2NF90IGVkdV9tbWlvX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwgdW5zaWdu ZWQgc2l6ZSkKK3sKKyAgICBFZHVTdGF0ZSAqZWR1ID0gb3BhcXVlOworICAgIHVpbnQ2NF90 IHZhbCA9IH4wVUxMOworCisgICAgaWYgKHNpemUgIT0gNCkKKwlyZXR1cm4gdmFsOworCisg ICAgc3dpdGNoIChhZGRyKSB7CisgICAgY2FzZSAweDAwOgorCXZhbCA9IDB4MDEwMDAwZWR1 OworCWJyZWFrOworICAgIGNhc2UgMHgwNDoKKwl2YWwgPSBlZHUtPmFkZHI0OworCWJyZWFr OworICAgIGNhc2UgMHgwODoKKwl2YWwgPSBlZHUtPmZhY3Q7CisJYnJlYWs7CisgICAgY2Fz ZSAweDIwOgorCXZhbCA9IGVkdS0+c3RhdHVzOworCWJyZWFrOworICAgIGNhc2UgMHgyNDoK KwlxZW11X211dGV4X2xvY2soJmVkdS0+aXJxX211dGV4KTsKKwl2YWwgPSBlZHUtPmlycV9z dGF0dXM7CisJcWVtdV9tdXRleF91bmxvY2soJmVkdS0+aXJxX211dGV4KTsKKwlicmVhazsK KyAgICBjYXNlIDB4ODA6CisJZG1hX3J3KGVkdSwgZmFsc2UsICZ2YWwsICZlZHUtPmRtYS5z cmMsIGZhbHNlKTsKKwlicmVhazsKKyAgICBjYXNlIDB4ODQ6CisJZG1hX3J3KGVkdSwgZmFs c2UsICZ2YWwsICZlZHUtPmRtYS5kc3QsIGZhbHNlKTsKKwlicmVhazsKKyAgICBjYXNlIDB4 ODg6CisJZG1hX3J3KGVkdSwgZmFsc2UsICZ2YWwsICZlZHUtPmRtYS5jbnQsIGZhbHNlKTsK KwlicmVhazsKKyAgICBjYXNlIDB4OGM6CisJZG1hX3J3KGVkdSwgZmFsc2UsICZ2YWwsICZl ZHUtPmRtYS5jbWQsIGZhbHNlKTsKKwlicmVhazsKKyAgICB9CisjaWZkZWYgUENORVRfREVC VUdfSU8KKyAgICBwcmludGYoImVkdV9tbWlvX3JlYWRsIGFkZHI9MHgiIFRBUkdFVF9GTVRf cGx4ICIgdmFsPTB4JTY0bHhcbiIsIGFkZHIsCisgICAgICAgICAgIHZhbCk7CisjZW5kaWYK KyAgICByZXR1cm4gdmFsOworfQorCitzdGF0aWMgdm9pZCBlZHVfbW1pb193cml0ZSh2b2lk ICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1aW50NjRfdCB2YWwsCisJCXVuc2lnbmVkIHNpemUp Cit7CisgICAgRWR1U3RhdGUgKmVkdSA9IG9wYXF1ZTsKKworICAgIGlmIChzaXplICE9IDQp CisJcmV0dXJuOworCisgICAgc3dpdGNoIChhZGRyKSB7CisgICAgY2FzZSAweDA0OgorCWVk dS0+YWRkcjQgPSB+dmFsOworCWJyZWFrOworICAgIGNhc2UgMHgwODoKKwlpZiAoZWR1LT5z dGF0dXMgJiBFRFVfU1RBVFVTX0NPTVBVVElORykKKwkJYnJlYWs7CisJZWR1LT5zdGF0dXMg fD0gRURVX1NUQVRVU19DT01QVVRJTkc7CisJZWR1LT5mYWN0ID0gdmFsOworCXFlbXVfbXV0 ZXhfbG9jaygmZWR1LT50aHJfbXV0ZXgpOworCXFlbXVfY29uZF9zaWduYWwoJmVkdS0+dGhy X2NvbmQpOworCXFlbXVfbXV0ZXhfdW5sb2NrKCZlZHUtPnRocl9tdXRleCk7CisJYnJlYWs7 CisgICAgY2FzZSAweDYwOgorCXFlbXVfbXV0ZXhfbG9jaygmZWR1LT5pcnFfbXV0ZXgpOwor CWVkdS0+aXJxX3N0YXR1cyB8PSB2YWw7CisJcGNpX3NldF9pcnEoJmVkdS0+cGRldiwgMSk7 CisJcWVtdV9tdXRleF91bmxvY2soJmVkdS0+aXJxX211dGV4KTsKKwlicmVhazsKKyAgICBj YXNlIDB4NjQ6CisJcWVtdV9tdXRleF9sb2NrKCZlZHUtPmlycV9tdXRleCk7CisJZWR1LT5p cnFfc3RhdHVzICY9IH52YWw7CisJaWYgKCFlZHUtPmlycV9zdGF0dXMpCisJCXBjaV9zZXRf aXJxKCZlZHUtPnBkZXYsIDApOworCXFlbXVfbXV0ZXhfdW5sb2NrKCZlZHUtPmlycV9tdXRl eCk7CisJYnJlYWs7CisgICAgY2FzZSAweDgwOgorCWRtYV9ydyhlZHUsIHRydWUsICZ2YWws ICZlZHUtPmRtYS5zcmMsIGZhbHNlKTsKKwlicmVhazsKKyAgICBjYXNlIDB4ODQ6CisJZG1h X3J3KGVkdSwgdHJ1ZSwgJnZhbCwgJmVkdS0+ZG1hLmRzdCwgZmFsc2UpOworCWJyZWFrOwor ICAgIGNhc2UgMHg4ODoKKwlkbWFfcncoZWR1LCB0cnVlLCAmdmFsLCAmZWR1LT5kbWEuY250 LCBmYWxzZSk7CisJYnJlYWs7CisgICAgY2FzZSAweDhjOgorCWlmICghKHZhbCAmIEVEVV9E TUFfUlVOKSkKKwkJYnJlYWs7CisJZG1hX3J3KGVkdSwgdHJ1ZSwgJnZhbCwgJmVkdS0+ZG1h LmNtZCwgdHJ1ZSk7CisJYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgTWVtb3J5 UmVnaW9uT3BzIGVkdV9tbWlvX29wcyA9IHsKKyAgICAucmVhZCA9IGVkdV9tbWlvX3JlYWQs CisgICAgLndyaXRlID0gZWR1X21taW9fd3JpdGUsCisgICAgLmVuZGlhbm5lc3MgPSBERVZJ Q0VfTkFUSVZFX0VORElBTiwKK307CisKK3N0YXRpYyB2b2lkICplZHVfZmFjdF90aHJlYWQo dm9pZCAqb3BhcXVlKQoreworCUVkdVN0YXRlICplZHUgPSBvcGFxdWU7CisKKwl3aGlsZSAo MSkgeworCQl1aW50MzJfdCB2YWwsIHJldCA9IDE7CisKKwkJcWVtdV9tdXRleF9sb2NrKCZl ZHUtPnRocl9tdXRleCk7CisJCXFlbXVfY29uZF93YWl0KCZlZHUtPnRocl9jb25kLCAmZWR1 LT50aHJfbXV0ZXgpOworCQlxZW11X211dGV4X3VubG9jaygmZWR1LT50aHJfbXV0ZXgpOwor CisJCWlmIChlZHUtPnN0b3BwaW5nKQorCQkJYnJlYWs7CisKKwkJdmFsID0gZWR1LT5mYWN0 OworCQl3aGlsZSAodmFsID4gMCkKKwkJCXJldCAqPSB2YWwtLTsKKworCQllZHUtPmZhY3Qg PSByZXQ7CisJCXNtcF93bWIoKTsKKwkJZWR1LT5zdGF0dXMgJj0gfkVEVV9TVEFUVVNfQ09N UFVUSU5HOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IHBjaV9lZHVf aW5pdChQQ0lEZXZpY2UgKnBkZXYpCit7CisgICAgRWR1U3RhdGUgKmVkdSA9IERPX1VQQ0FT VChFZHVTdGF0ZSwgcGRldiwgcGRldik7CisgICAgdWludDhfdCAqcGNpX2NvbmYgPSBwZGV2 LT5jb25maWc7CisKKyAgICBlZHUtPmRtYV90aW1lciA9IHRpbWVyX25ld19tcyhRRU1VX0NM T0NLX1ZJUlRVQUwsIGVkdV9kbWFfdGltZXIsIGVkdSk7CisKKyAgICBxZW11X211dGV4X2lu aXQoJmVkdS0+ZG1hX211dGV4KTsKKyAgICBxZW11X211dGV4X2luaXQoJmVkdS0+aXJxX211 dGV4KTsKKyAgICBxZW11X211dGV4X2luaXQoJmVkdS0+dGhyX211dGV4KTsKKyAgICBxZW11 X2NvbmRfaW5pdCgmZWR1LT50aHJfY29uZCk7CisgICAgcWVtdV90aHJlYWRfY3JlYXRlKCZl ZHUtPnRocmVhZCwgImVkdSIsIGVkdV9mYWN0X3RocmVhZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgZWR1LCBRRU1VX1RIUkVBRF9KT0lOQUJMRSk7CisKKyAgICBwY2lfc2V0X3dvcmQo cGNpX2NvbmYgKyBQQ0lfU1VCU1lTVEVNX1ZFTkRPUl9JRCwgMHgwKTsKKyAgICBwY2lfc2V0 X3dvcmQocGNpX2NvbmYgKyBQQ0lfU1VCU1lTVEVNX0lELCAweDApOworCisgICAgcGNpX2Nv bmZpZ19zZXRfaW50ZXJydXB0X3BpbihwY2lfY29uZiwgMSk7CisKKyAgICBtZW1vcnlfcmVn aW9uX2luaXRfaW8oJmVkdS0+bW1pbywgT0JKRUNUKGVkdSksICZlZHVfbW1pb19vcHMsIGVk dSwKKwkJICAgICJlZHUtbW1pbyIsIDEgPDwgMjApOworICAgIHBjaV9yZWdpc3Rlcl9iYXIo cGRldiwgMCwgUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlksICZlZHUtPm1taW8pOwor CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBjaV9lZHVfdW5pbml0KFBDSURl dmljZSAqcGRldikKK3sKKyAgICBFZHVTdGF0ZSAqZWR1ID0gRE9fVVBDQVNUKEVkdVN0YXRl LCBwZGV2LCBwZGV2KTsKKworICAgIG1lbW9yeV9yZWdpb25fZGVzdHJveSgmZWR1LT5tbWlv KTsKKworICAgIGVkdS0+c3RvcHBpbmcgPSB0cnVlOworICAgIHFlbXVfY29uZF9zaWduYWwo JmVkdS0+dGhyX2NvbmQpOworICAgIHFlbXVfdGhyZWFkX2pvaW4oJmVkdS0+dGhyZWFkKTsK KworICAgIHFlbXVfY29uZF9kZXN0cm95KCZlZHUtPnRocl9jb25kKTsKKyAgICBxZW11X211 dGV4X2Rlc3Ryb3koJmVkdS0+dGhyX211dGV4KTsKKyAgICBxZW11X211dGV4X2Rlc3Ryb3ko JmVkdS0+aXJxX211dGV4KTsKKyAgICBxZW11X211dGV4X2Rlc3Ryb3koJmVkdS0+ZG1hX211 dGV4KTsKKworICAgIHRpbWVyX2RlbChlZHUtPmRtYV90aW1lcik7CisgICAgdGltZXJfZnJl ZShlZHUtPmRtYV90aW1lcik7Cit9CisKK3N0YXRpYyB2b2lkIGVkdV9jbGFzc19pbml0KE9i amVjdENsYXNzICpjbGFzcywgdm9pZCAqZGF0YSkKK3sKKyAgICBQQ0lEZXZpY2VDbGFzcyAq ayA9IFBDSV9ERVZJQ0VfQ0xBU1MoY2xhc3MpOworCisgICAgay0+aW5pdCA9IHBjaV9lZHVf aW5pdDsKKyAgICBrLT5leGl0ID0gcGNpX2VkdV91bmluaXQ7CisgICAgay0+dmVuZG9yX2lk ID0gUENJX1ZFTkRPUl9JRF9RRU1VOworICAgIGstPmRldmljZV9pZCA9IDB4MTFlODsKKyAg ICBrLT5yZXZpc2lvbiA9IDB4MTA7CisgICAgay0+Y2xhc3NfaWQgPSBQQ0lfQ0xBU1NfT1RI RVJTOworfQorCitzdGF0aWMgdm9pZCBwY2lfZWR1X3JlZ2lzdGVyX3R5cGVzKHZvaWQpCit7 CisgICAgc3RhdGljIGNvbnN0IFR5cGVJbmZvIGVkdV9pbmZvID0geworCS5uYW1lICAgICAg ICAgID0gImVkdSIsCisJLnBhcmVudCAgICAgICAgPSBUWVBFX1BDSV9ERVZJQ0UsCisJLmlu c3RhbmNlX3NpemUgPSBzaXplb2YoRWR1U3RhdGUpLAorCS5jbGFzc19pbml0ICAgID0gZWR1 X2NsYXNzX2luaXQsCisgICAgfTsKKworICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZlZHVf aW5mbyk7Cit9Cit0eXBlX2luaXQocGNpX2VkdV9yZWdpc3Rlcl90eXBlcykK --------------080401090409090903060907--