From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L3nvA-0006Gw-9P for qemu-devel@nongnu.org; Sat, 22 Nov 2008 03:32:52 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L3nv8-0006FP-Ji for qemu-devel@nongnu.org; Sat, 22 Nov 2008 03:32:51 -0500 Received: from [199.232.76.173] (port=38633 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L3nv8-0006FM-C3 for qemu-devel@nongnu.org; Sat, 22 Nov 2008 03:32:50 -0500 Received: from smtp5-g19.free.fr ([212.27.42.35]:46112) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L3nv7-0003yP-M8 for qemu-devel@nongnu.org; Sat, 22 Nov 2008 03:32:50 -0500 Received: from smtp5-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp5-g19.free.fr (Postfix) with ESMTP id 026013EA1C0 for ; Sat, 22 Nov 2008 09:32:49 +0100 (CET) Received: from [192.168.0.32] (rob92-10-88-171-126-33.fbx.proxad.net [88.171.126.33]) by smtp5-g19.free.fr (Postfix) with ESMTP id 8BD823EA1B2 for ; Sat, 22 Nov 2008 09:32:48 +0100 (CET) Message-ID: <4927C38C.20508@reactos.org> Date: Sat, 22 Nov 2008 09:32:12 +0100 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010105000900020909020606" Subject: [Qemu-devel] [RFC] Floppy controller: break relation with PC-style DMA Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------010105000900020909020606 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hi, Currently, floppy disk controller is tied to PC-style DMA controller. Attached patch is an attempt to break the link between those, by=20 introducing function pointers for dma operations (read, write, hold,=20 release). This will allow me to fix fdc DMA handling on MIPS Magnum/Acer Pica 61,=20 where fdc is connected to rc4030 DMA controller. Please comment. Herv=E9 --------------010105000900020909020606 Content-Type: plain/text; name="floppy_dma.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="floppy_dma.diff" SW5kZXg6IGh3L2ZkYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gaHcvZmRjLmMJKHJldmlzaW9u IDU3NzEpDQorKysgaHcvZmRjLmMJKHdvcmtpbmcgY29weSkNCkBAIC00NzEsNyArNDcxLDEy IEBADQogICAgIHVpbnQ4X3QgdmVyc2lvbjsKICAgICAvKiBIVyAqLwogICAgIHFlbXVfaXJx IGlycTsKLSAgICBpbnQgZG1hX2NoYW5uOworICAgIGZkY2RtYV9tZW1vcnlfcmVhZF93cml0 ZSBkbWFfbWVtb3J5X3JlYWQ7CisgICAgZmRjZG1hX21lbW9yeV9yZWFkX3dyaXRlIGRtYV9t ZW1vcnlfd3JpdGU7CisgICAgZmRjZG1hX2hvbGRfcmVsZWFzZSBkbWFfaG9sZDsKKyAgICBm ZGNkbWFfaG9sZF9yZWxlYXNlIGRtYV9yZWxlYXNlOworICAgIHZvaWQgKmRtYV9vcGFxdWU7 CisgICAgaW50IGk4MjU3X2RtYV9jaGFubjsKICAgICB0YXJnZXRfcGh5c19hZGRyX3QgaW9f YmFzZTsKICAgICAvKiBDb250cm9sbGVyIHN0YXRlICovCiAgICAgUUVNVVRpbWVyICpyZXN1 bHRfdGltZXI7CkBAIC03NzEsNyArNzc2LDcgQEANCiAgICAgICAgIGZkY3RybC0+c3JhIHw9 IEZEX1NSQV9uRFJWMjsKICAgICBmZGN0cmwtPmN1cl9kcnYgPSAwOwogICAgIGZkY3RybC0+ ZG9yID0gRkRfRE9SX25SRVNFVDsKLSAgICBmZGN0cmwtPmRvciB8PSAoZmRjdHJsLT5kbWFf Y2hhbm4gIT0gLTEpID8gRkRfRE9SX0RNQUVOIDogMDsKKyAgICBmZGN0cmwtPmRvciB8PSAo ZmRjdHJsLT5kbWFfbWVtb3J5X3JlYWQgJiYgZmRjdHJsLT5kbWFfbWVtb3J5X3dyaXRlKSA/ IEZEX0RPUl9ETUFFTiA6IDA7CiAgICAgZmRjdHJsLT5tc3IgPSBGRF9NU1JfUlFNOwogICAg IC8qIEZJRk8gc3RhdGUgKi8KICAgICBmZGN0cmwtPmRhdGFfcG9zID0gMDsKQEAgLTEwNjgs OCArMTA3Myw4IEBADQogICAgIGZkY3RybC0+Zmlmb1s1XSA9IGN1cl9kcnYtPnNlY3Q7CiAg ICAgZmRjdHJsLT5maWZvWzZdID0gRkRfU0VDVE9SX1NDOwogICAgIGZkY3RybC0+ZGF0YV9k aXIgPSBGRF9ESVJfUkVBRDsKLSAgICBpZiAoIShmZGN0cmwtPm1zciAmIEZEX01TUl9OT05E TUEpKSB7Ci0gICAgICAgIERNQV9yZWxlYXNlX0RSRVEoZmRjdHJsLT5kbWFfY2hhbm4pOwor ICAgIGlmICghKGZkY3RybC0+bXNyICYgRkRfTVNSX05PTkRNQSkgJiYgZmRjdHJsLT5kbWFf cmVsZWFzZSkgeworICAgICAgICBmZGN0cmwtPmRtYV9yZWxlYXNlKGZkY3RybC0+ZG1hX29w YXF1ZSk7CiAgICAgfQogICAgIGZkY3RybC0+bXNyIHw9IEZEX01TUl9SUU0gfCBGRF9NU1Jf RElPOwogICAgIGZkY3RybC0+bXNyICY9IH5GRF9NU1JfTk9ORE1BOwpAQCAtMTE0NCwyOSAr MTE0OSwxNSBAQA0KICAgICB9CiAgICAgZmRjdHJsLT5lb3QgPSBmZGN0cmwtPmZpZm9bNl07 CiAgICAgaWYgKGZkY3RybC0+ZG9yICYgRkRfRE9SX0RNQUVOKSB7Ci0gICAgICAgIGludCBk bWFfbW9kZTsKLSAgICAgICAgLyogRE1BIHRyYW5zZmVyIGFyZSBlbmFibGVkLiBDaGVjayBp ZiBETUEgY2hhbm5lbCBpcyB3ZWxsIHByb2dyYW1tZWQgKi8KLSAgICAgICAgZG1hX21vZGUg PSBETUFfZ2V0X2NoYW5uZWxfbW9kZShmZGN0cmwtPmRtYV9jaGFubik7Ci0gICAgICAgIGRt YV9tb2RlID0gKGRtYV9tb2RlID4+IDIpICYgMzsKLSAgICAgICAgRkxPUFBZX0RQUklOVEYo ImRtYV9tb2RlPSVkIGRpcmVjdGlvbj0lZCAoJWQgLSAlZClcbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgIGRtYV9tb2RlLCBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAg ICgxMjggPDwgZmRjdHJsLT5maWZvWzVdKSAqCi0gICAgICAgICAgICAgICAgICAgICAgIChj dXJfZHJ2LT5sYXN0X3NlY3QgLSBrcyArIDEpLCBmZGN0cmwtPmRhdGFfbGVuKTsKLSAgICAg ICAgaWYgKCgoZGlyZWN0aW9uID09IEZEX0RJUl9TQ0FORSB8fCBkaXJlY3Rpb24gPT0gRkRf RElSX1NDQU5MIHx8Ci0gICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBGRF9ESVJfU0NBTkgp ICYmIGRtYV9tb2RlID09IDApIHx8Ci0gICAgICAgICAgICAoZGlyZWN0aW9uID09IEZEX0RJ Ul9XUklURSAmJiBkbWFfbW9kZSA9PSAyKSB8fAotICAgICAgICAgICAgKGRpcmVjdGlvbiA9 PSBGRF9ESVJfUkVBRCAmJiBkbWFfbW9kZSA9PSAxKSkgewotICAgICAgICAgICAgLyogTm8g YWNjZXNzIGlzIGFsbG93ZWQgdW50aWwgRE1BIHRyYW5zZmVyIGhhcyBjb21wbGV0ZWQgKi8K KyAgICAgICAgLyogRE1BIHRyYW5zZmVyIGFyZSBlbmFibGVkICovCisgICAgICAgIGlmIChm ZGN0cmwtPmRtYV9ob2xkKSB7CisgICAgICAgICAgICBmZGN0cmwtPmRtYV9ob2xkKGZkY3Ry bC0+ZG1hX29wYXF1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBEbyB0 aGUgdHJhbnNmZXIgc3luY2hyb25vdXNseS4uLiAqLwogICAgICAgICAgICAgZmRjdHJsLT5t c3IgJj0gfkZEX01TUl9SUU07Ci0gICAgICAgICAgICAvKiBOb3csIHdlIGp1c3QgaGF2ZSB0 byB3YWl0IGZvciB0aGUgRE1BIGNvbnRyb2xsZXIgdG8KLSAgICAgICAgICAgICAqIHJlY2Fs bCB1cy4uLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBETUFfaG9sZF9EUkVRKGZk Y3RybC0+ZG1hX2NoYW5uKTsKLSAgICAgICAgICAgIERNQV9zY2hlZHVsZShmZGN0cmwtPmRt YV9jaGFubik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICBGTE9QUFlfRVJST1IoImRtYV9tb2RlPSVkIGRpcmVjdGlvbj0lZFxuIiwgZG1h X21vZGUsIGRpcmVjdGlvbik7CisgICAgICAgICAgICBmZGN0cmxfdHJhbnNmZXJfaGFuZGxl cihmZGN0cmwsIC0xLCAwLCBmZGN0cmwtPmRhdGFfbGVuKTsKICAgICAgICAgfQorICAgICAg ICByZXR1cm47CiAgICAgfQogICAgIEZMT1BQWV9EUFJJTlRGKCJzdGFydCBub24tRE1BIHRy YW5zZmVyXG4iKTsKICAgICBmZGN0cmwtPm1zciB8PSBGRF9NU1JfTk9ORE1BOwpAQCAtMTE3 NCw4ICsxMTY1LDYgQEANCiAgICAgICAgIGZkY3RybC0+bXNyIHw9IEZEX01TUl9ESU87CiAg ICAgLyogSU8gYmFzZWQgdHJhbnNmZXI6IGNhbGN1bGF0ZSBsZW4gKi8KICAgICBmZGN0cmxf cmFpc2VfaXJxKGZkY3RybCwgMHgwMCk7Ci0KLSAgICByZXR1cm47CiB9CiAKIC8qIFByZXBh cmUgYSB0cmFuc2ZlciBvZiBkZWxldGVkIGRhdGEgKi8KQEAgLTEyNDEsMTMgKzEyMzAsMTEg QEANCiAgICAgICAgIHN3aXRjaCAoZmRjdHJsLT5kYXRhX2RpcikgewogICAgICAgICBjYXNl IEZEX0RJUl9SRUFEOgogICAgICAgICAgICAgLyogUkVBRCBjb21tYW5kcyAqLwotICAgICAg ICAgICAgRE1BX3dyaXRlX21lbW9yeSAobmNoYW4sIGZkY3RybC0+ZmlmbyArIHJlbF9wb3Ms Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfcG9zLCBsZW4p OworICAgICAgICAgICAgZmRjdHJsLT5kbWFfbWVtb3J5X3dyaXRlKGZkY3RybC0+ZG1hX29w YXF1ZSwgZmRjdHJsLT5maWZvICsgcmVsX3BvcywgbGVuKTsKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBjYXNlIEZEX0RJUl9XUklURToKICAgICAgICAgICAgIC8qIFdSSVRFIGNv bW1hbmRzICovCi0gICAgICAgICAgICBETUFfcmVhZF9tZW1vcnkgKG5jaGFuLCBmZGN0cmwt PmZpZm8gKyByZWxfcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZGN0cmwt PmRhdGFfcG9zLCBsZW4pOworICAgICAgICAgICAgZmRjdHJsLT5kbWFfbWVtb3J5X3JlYWQo ZmRjdHJsLT5kbWFfb3BhcXVlLCBmZGN0cmwtPmZpZm8gKyByZWxfcG9zLCBsZW4pOwogICAg ICAgICAgICAgaWYgKGJkcnZfd3JpdGUoY3VyX2Rydi0+YnMsIGZkX3NlY3RvcihjdXJfZHJ2 KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkY3RybC0+ZmlmbywgMSkgPCAwKSB7 CiAgICAgICAgICAgICAgICAgRkxPUFBZX0VSUk9SKCJ3cml0aW5nIHNlY3RvciAlZFxuIiwg ZmRfc2VjdG9yKGN1cl9kcnYpKTsKQEAgLTEyNjAsNyArMTI0Nyw3IEBADQogICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgIHVpbnQ4X3QgdG1wYnVmW0ZEX1NFQ1RPUl9MRU5dOwog ICAgICAgICAgICAgICAgIGludCByZXQ7Ci0gICAgICAgICAgICAgICAgRE1BX3JlYWRfbWVt b3J5IChuY2hhbiwgdG1wYnVmLCBmZGN0cmwtPmRhdGFfcG9zLCBsZW4pOworICAgICAgICAg ICAgICAgIGZkY3RybC0+ZG1hX21lbW9yeV9yZWFkKGZkY3RybC0+ZG1hX29wYXF1ZSwgdG1w YnVmLCBsZW4pOwogICAgICAgICAgICAgICAgIHJldCA9IG1lbWNtcCh0bXBidWYsIGZkY3Ry bC0+ZmlmbyArIHJlbF9wb3MsIGxlbik7CiAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAw KSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXR1czIgPSBGRF9TUjJfU0VIOwpAQCAtMTgz Myw3ICsxODIwLDEyIEBADQogfQogCiAvKiBJbml0IGZ1bmN0aW9ucyAqLwotc3RhdGljIGZk Y3RybF90ICpmZGN0cmxfaW5pdF9jb21tb24gKHFlbXVfaXJxIGlycSwgaW50IGRtYV9jaGFu biwKK3N0YXRpYyBmZGN0cmxfdCAqZmRjdHJsX2luaXRfY29tbW9uIChxZW11X2lycSBpcnEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRjZG1hX21lbW9yeV9y ZWFkX3dyaXRlIGRtYV9tZW1vcnlfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmZGNkbWFfbWVtb3J5X3JlYWRfd3JpdGUgZG1hX21lbW9yeV93cml0ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZGNkbWFfaG9sZF9yZWxl YXNlIGRtYV9ob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZk Y2RtYV9ob2xkX3JlbGVhc2UgZG1hX3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgaW9fYmFzZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0RyaXZlclN0YXRlICoqZmRzKQog ewpAQCAtMTg2MiwxMiArMTg1NCwxMyBAQA0KIAogICAgIGZkY3RybC0+dmVyc2lvbiA9IDB4 OTA7IC8qIEludGVsIDgyMDc4IGNvbnRyb2xsZXIgKi8KICAgICBmZGN0cmwtPmlycSA9IGly cTsKLSAgICBmZGN0cmwtPmRtYV9jaGFubiA9IGRtYV9jaGFubjsKKyAgICBmZGN0cmwtPmRt YV9tZW1vcnlfcmVhZCA9IGRtYV9tZW1vcnlfcmVhZDsKKyAgICBmZGN0cmwtPmRtYV9tZW1v cnlfd3JpdGUgPSBkbWFfbWVtb3J5X3dyaXRlOworICAgIGZkY3RybC0+ZG1hX2hvbGQgPSBk bWFfaG9sZDsKKyAgICBmZGN0cmwtPmRtYV9yZWxlYXNlID0gZG1hX3JlbGVhc2U7CisgICAg ZmRjdHJsLT5kbWFfb3BhcXVlID0gZG1hX29wYXF1ZTsKICAgICBmZGN0cmwtPmlvX2Jhc2Ug PSBpb19iYXNlOwogICAgIGZkY3RybC0+Y29uZmlnID0gRkRfQ09ORklHX0VJUyB8IEZEX0NP TkZJR19FRklGTzsgLyogSW1wbGljaXQgc2VlaywgcG9sbGluZyAmIEZJRk8gZW5hYmxlZCAq LwotICAgIGlmIChmZGN0cmwtPmRtYV9jaGFubiAhPSAtMSkgewotICAgICAgICBETUFfcmVn aXN0ZXJfY2hhbm5lbChkbWFfY2hhbm4sICZmZGN0cmxfdHJhbnNmZXJfaGFuZGxlciwgZmRj dHJsKTsKLSAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9GRDsgaSsrKSB7CiAgICAg ICAgIGZkX2luaXQoJmZkY3RybC0+ZHJpdmVzW2ldLCBmZHNbaV0pOwogICAgIH0KQEAgLTE4 ODEsMTQgKzE4NzQsMjEgQEANCiAgICAgcmV0dXJuIGZkY3RybDsKIH0KIAotZmRjdHJsX3Qg KmZkY3RybF9pbml0IChxZW11X2lycSBpcnEsIGludCBkbWFfY2hhbm4sIGludCBtZW1fbWFw cGVkLAorZmRjdHJsX3QgKmZkY3RybF9pbml0IChxZW11X2lycSBpcnEsCisgICAgICAgICAg ICAgICAgICAgICAgIGZkY2RtYV9tZW1vcnlfcmVhZF93cml0ZSBkbWFfbWVtb3J5X3JlYWQs CisgICAgICAgICAgICAgICAgICAgICAgIGZkY2RtYV9tZW1vcnlfcmVhZF93cml0ZSBkbWFf bWVtb3J5X3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICBmZGNkbWFfaG9sZF9yZWxl YXNlIGRtYV9ob2xkLAorICAgICAgICAgICAgICAgICAgICAgICBmZGNkbWFfaG9sZF9yZWxl YXNlIGRtYV9yZWxlYXNlLAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkbWFfb3Bh cXVlLCBpbnQgbWVtX21hcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Bo eXNfYWRkcl90IGlvX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVy U3RhdGUgKipmZHMpCiB7CiAgICAgZmRjdHJsX3QgKmZkY3RybDsKICAgICBpbnQgaW9fbWVt OwogCi0gICAgZmRjdHJsID0gZmRjdHJsX2luaXRfY29tbW9uKGlycSwgZG1hX2NoYW5uLCBp b19iYXNlLCBmZHMpOworICAgIGZkY3RybCA9IGZkY3RybF9pbml0X2NvbW1vbihpcnEsIGRt YV9tZW1vcnlfcmVhZCwgZG1hX21lbW9yeV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG1hX2hvbGQsIGRtYV9yZWxlYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkbWFfb3BhcXVlLCBpb19iYXNlLCBmZHMpOwogCiAgICAgZmRjdHJs LT5zdW40bSA9IDA7CiAgICAgaWYgKG1lbV9tYXBwZWQpIHsKQEAgLTE5MTUsNyArMTkxNSw3 IEBADQogICAgIGZkY3RybF90ICpmZGN0cmw7CiAgICAgaW50IGlvX21lbTsKIAotICAgIGZk Y3RybCA9IGZkY3RybF9pbml0X2NvbW1vbihpcnEsIC0xLCBpb19iYXNlLCBmZHMpOworICAg IGZkY3RybCA9IGZkY3RybF9pbml0X2NvbW1vbihpcnEsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIGlvX2Jhc2UsIGZkcyk7CiAgICAgZmRjdHJsLT5zdW40bSA9IDE7CiAgICAg aW9fbWVtID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBmZGN0cmxfbWVtX3JlYWRfc3Ry aWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRjdHJsX21lbV93 cml0ZV9zdHJpY3QsCkBAIC0xOTI1LDMgKzE5MjUsODEgQEANCiAKICAgICByZXR1cm4gZmRj dHJsOwogfQorCitzdGF0aWMgdm9pZCBpODI1N19kbWFfcmVhZCh2b2lkICpvcGFxdWUsIHVp bnQ4X3QgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICBmZGN0cmxfdCAqZmRjdHJsID0gb3BhcXVl OworICAgIERNQV9yZWFkX21lbW9yeShmZGN0cmwtPmk4MjU3X2RtYV9jaGFubiwgYnVmLCBm ZGN0cmwtPmRhdGFfcG9zLCBsZW4pOworfQorCitzdGF0aWMgdm9pZCBpODI1N19kbWFfd3Jp dGUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pCit7CisgICAgZmRjdHJs X3QgKmZkY3RybCA9IG9wYXF1ZTsKKyAgICBETUFfd3JpdGVfbWVtb3J5KGZkY3RybC0+aTgy NTdfZG1hX2NoYW5uLCBidWYsIGZkY3RybC0+ZGF0YV9wb3MsIGxlbik7Cit9CisKK3N0YXRp YyB2b2lkIGk4MjU3X2RtYV9ob2xkKHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBmZGN0cmxfdCAq ZmRjdHJsID0gb3BhcXVlOworICAgIGludCBkbWFfbW9kZTsKKyAgICBpbnQgZGlyZWN0aW9u ID0gZmRjdHJsLT5kYXRhX2RpcjsKKworICAgIC8qIERNQSB0cmFuc2ZlciBhcmUgZW5hYmxl ZC4gQ2hlY2sgaWYgRE1BIGNoYW5uZWwgaXMgd2VsbCBwcm9ncmFtbWVkICovCisgICAgZG1h X21vZGUgPSBETUFfZ2V0X2NoYW5uZWxfbW9kZShmZGN0cmwtPmk4MjU3X2RtYV9jaGFubik7 CisgICAgZG1hX21vZGUgPSAoZG1hX21vZGUgPj4gMikgJiAzOworICAgIEZMT1BQWV9EUFJJ TlRGKCJkbWFfbW9kZT0lZCBkaXJlY3Rpb249JWQgKCVkIC0gJWQpXG4iLAorICAgICAgICAg ICAgICAgICAgIGRtYV9tb2RlLCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgKDEy OCA8PCBmZGN0cmwtPmZpZm9bNV0pICoKKyAgICAgICAgICAgICAgICAgICAoY3VyX2Rydi0+ bGFzdF9zZWN0IC0gZmRjdHJsLT5maWZvWzRdICsgMSksIGZkY3RybC0+ZGF0YV9sZW4pOwor ICAgIGlmICgoKGRpcmVjdGlvbiA9PSBGRF9ESVJfU0NBTkUgfHwgZGlyZWN0aW9uID09IEZE X0RJUl9TQ0FOTCB8fAorICAgICAgICAgIGRpcmVjdGlvbiA9PSBGRF9ESVJfU0NBTkgpICYm IGRtYV9tb2RlID09IDApIHx8CisgICAgICAgIChkaXJlY3Rpb24gPT0gRkRfRElSX1dSSVRF ICYmIGRtYV9tb2RlID09IDIpIHx8CisgICAgICAgIChkaXJlY3Rpb24gPT0gRkRfRElSX1JF QUQgJiYgZG1hX21vZGUgPT0gMSkpIHsKKyAgICAgICAgLyogTm8gYWNjZXNzIGlzIGFsbG93 ZWQgdW50aWwgRE1BIHRyYW5zZmVyIGhhcyBjb21wbGV0ZWQgKi8KKyAgICAgICAgZmRjdHJs LT5tc3IgJj0gfkZEX01TUl9SUU07CisgICAgICAgIC8qIE5vdywgd2UganVzdCBoYXZlIHRv IHdhaXQgZm9yIHRoZSBETUEgY29udHJvbGxlciB0bworICAgICAgICAgKiByZWNhbGwgdXMu Li4KKyAgICAgICAgICovCisgICAgICAgIERNQV9ob2xkX0RSRVEoZmRjdHJsLT5pODI1N19k bWFfY2hhbm4pOworICAgICAgICBETUFfc2NoZWR1bGUoZmRjdHJsLT5pODI1N19kbWFfY2hh bm4pOworICAgIH0gZWxzZSB7CisgICAgICAgIEZMT1BQWV9FUlJPUigiZG1hX21vZGU9JWQg ZGlyZWN0aW9uPSVkXG4iLCBkbWFfbW9kZSwgZGlyZWN0aW9uKTsKKyAgICB9Cit9CisKK3N0 YXRpYyB2b2lkIGk4MjU3X2RtYV9yZWxlYXNlKHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBmZGN0 cmxfdCAqZmRjdHJsID0gb3BhcXVlOworICAgIERNQV9yZWxlYXNlX0RSRVEoZmRjdHJsLT5p ODI1N19kbWFfY2hhbm4pOworfQorCitmZGN0cmxfdCAqZmRjdHJsX2k4MjU3X2luaXQgKHFl bXVfaXJxIGlycSwgaW50IGk4MjU3X2RtYV9jaGFubiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IG1lbV9tYXBwZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9waHlzX2FkZHJfdCBpb19iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCbG9ja0RyaXZlclN0YXRlICoqZmRzKQoreworICAgIGZkY2RtYV9tZW1vcnlfcmVh ZF93cml0ZSBkbWFfbWVtb3J5X3JlYWQgPSBOVUxMOworICAgIGZkY2RtYV9tZW1vcnlfcmVh ZF93cml0ZSBkbWFfbWVtb3J5X3dyaXRlID0gTlVMTDsKKyAgICBmZGNkbWFfaG9sZF9yZWxl YXNlIGRtYV9ob2xkID0gTlVMTDsKKyAgICBmZGNkbWFfaG9sZF9yZWxlYXNlIGRtYV9yZWxl YXNlID0gTlVMTDsKKyAgICBmZGN0cmxfdCAqZmRjdHJsOworCisgICAgaWYgKGk4MjU3X2Rt YV9jaGFubiAhPSAtMSkgeworICAgICAgICBkbWFfbWVtb3J5X3JlYWQgPSBpODI1N19kbWFf cmVhZDsKKyAgICAgICAgZG1hX21lbW9yeV93cml0ZSA9IGk4MjU3X2RtYV93cml0ZTsKKyAg ICAgICAgZG1hX2hvbGQgPSBpODI1N19kbWFfaG9sZDsKKyAgICAgICAgZG1hX3JlbGVhc2Ug PSBpODI1N19kbWFfcmVsZWFzZTsKKyAgICB9CisKKyAgICBmZGN0cmwgPSBmZGN0cmxfaW5p dChpcnEsIGRtYV9tZW1vcnlfcmVhZCwgZG1hX21lbW9yeV93cml0ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBpODI1N19kbWFfaG9sZCwgaTgyNTdfZG1hX3JlbGVhc2UsIE5VTEws CisgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX21hcHBlZCwgaW9fYmFzZSwgZmRzKTsK KworICAgIGlmIChpODI1N19kbWFfY2hhbm4gIT0gLTEpIHsKKyAgICAgICAgZmRjdHJsLT5k bWFfb3BhcXVlID0gZmRjdHJsOworICAgICAgICBmZGN0cmwtPmk4MjU3X2RtYV9jaGFubiA9 IGk4MjU3X2RtYV9jaGFubjsKKyAgICAgICAgRE1BX3JlZ2lzdGVyX2NoYW5uZWwoZmRjdHJs LT5pODI1N19kbWFfY2hhbm4sICZmZGN0cmxfdHJhbnNmZXJfaGFuZGxlciwgZmRjdHJsKTsK KyAgICB9CisKKyAgICByZXR1cm4gZmRjdHJsOworfQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlDQpJbmRleDogaHcvZmRjLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBody9mZGMuaAko cmV2aXNpb24gNTc3MSkNCisrKyBody9mZGMuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMsOSAr MywyMCBAQA0KIAogdHlwZWRlZiBzdHJ1Y3QgZmRjdHJsX3QgZmRjdHJsX3Q7CiAKLWZkY3Ry bF90ICpmZGN0cmxfaW5pdCAocWVtdV9pcnEgaXJxLCBpbnQgZG1hX2NoYW5uLCBpbnQgbWVt X21hcHBlZCwKK3R5cGVkZWYgdm9pZCAoKmZkY2RtYV9tZW1vcnlfcmVhZF93cml0ZSkodm9p ZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pOwordHlwZWRlZiB2b2lkICgqZmRj ZG1hX2hvbGRfcmVsZWFzZSkodm9pZCAqb3BhcXVlKTsKK2ZkY3RybF90ICpmZGN0cmxfaW5p dCAocWVtdV9pcnEgaXJxLAorICAgICAgICAgICAgICAgICAgICAgICBmZGNkbWFfbWVtb3J5 X3JlYWRfd3JpdGUgZG1hX21lbW9yeV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICBm ZGNkbWFfbWVtb3J5X3JlYWRfd3JpdGUgZG1hX21lbW9yeV93cml0ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgZmRjZG1hX2hvbGRfcmVsZWFzZSBkbWFfaG9sZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgZmRjZG1hX2hvbGRfcmVsZWFzZSBkbWFfcmVsZWFzZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwgaW50IG1lbV9tYXBwZWQsCiAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBpb19iYXNlLAogICAgICAg ICAgICAgICAgICAgICAgICBCbG9ja0RyaXZlclN0YXRlICoqZmRzKTsKK2ZkY3RybF90ICpm ZGN0cmxfaTgyNTdfaW5pdCAocWVtdV9pcnEgaXJxLCBpbnQgaTgyNTdfZG1hX2NoYW5uLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtX21hcHBlZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGlvX2Jhc2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyU3RhdGUgKipmZHMpOwogZmRj dHJsX3QgKnN1bjRtX2ZkY3RybF9pbml0IChxZW11X2lycSBpcnEsIHRhcmdldF9waHlzX2Fk ZHJfdCBpb19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0RyaXZl clN0YXRlICoqZmRzLCBxZW11X2lycSAqZmRjX3RjKTsKIGludCBmZGN0cmxfZ2V0X2RyaXZl X3R5cGUoZmRjdHJsX3QgKmZkY3RybCwgaW50IGRyaXZlX251bSk7CkluZGV4OiBody9taXBz X2phenouYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGh3L21pcHNfamF6ei5jCShyZXZpc2lvbiA1 NzcxKQ0KKysrIGh3L21pcHNfamF6ei5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMjIxLDcgKzIy MSw3IEBADQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmZHNbbl0gPSBOVUxMOwogICAg IH0KLSAgICBmZGN0cmxfaW5pdChyYzQwMzBbMV0sIDAsIDEsIDB4ODAwMDMwMDAsIGZkcyk7 CisgICAgZmRjdHJsX2luaXQocmM0MDMwWzFdLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCAxLCAweDgwMDAzMDAwLCBmZHMpOwogCiAgICAgLyogUmVhbCB0aW1lIGNsb2NrICov CiAgICAgcnRjX2luaXQoMHg3MCwgaTgyNTlbOF0pOwpJbmRleDogaHcvbWlwc19tYWx0YS5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gaHcvbWlwc19tYWx0YS5jCShyZXZpc2lvbiA1NzcxKQ0K KysrIGh3L21pcHNfbWFsdGEuYwkod29ya2luZyBjb3B5KQ0KQEAgLTkyOSw3ICs5MjksNyBA QA0KICAgICAgICBlbHNlCiAgICAgICAgICAgIGZkW2ldID0gTlVMTDsKICAgICB9Ci0gICAg ZmxvcHB5X2NvbnRyb2xsZXIgPSBmZGN0cmxfaW5pdChpODI1OVs2XSwgMiwgMCwgMHgzZjAs IGZkKTsKKyAgICBmbG9wcHlfY29udHJvbGxlciA9IGZkY3RybF9pODI1N19pbml0KGk4MjU5 WzZdLCAyLCAwLCAweDNmMCwgZmQpOwogCiAgICAgLyogU291bmQgY2FyZCAqLwogI2lmZGVm IEhBU19BVURJTwpJbmRleDogaHcvcGMuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGh3L3BjLmMJ KHJldmlzaW9uIDU3NzEpDQorKysgaHcvcGMuYwkod29ya2luZyBjb3B5KQ0KQEAgLTEwNTIs NyArMTA1Miw3IEBADQogCWVsc2UKIAkgICAgZmRbaV0gPSBOVUxMOwogICAgIH0KLSAgICBm bG9wcHlfY29udHJvbGxlciA9IGZkY3RybF9pbml0KGk4MjU5WzZdLCAyLCAwLCAweDNmMCwg ZmQpOworICAgIGZsb3BweV9jb250cm9sbGVyID0gZmRjdHJsX2k4MjU3X2luaXQoaTgyNTlb Nl0sIDIsIDAsIDB4M2YwLCBmZCk7CiAKICAgICBjbW9zX2luaXQoYmVsb3dfNGdfbWVtX3Np emUsIGFib3ZlXzRnX21lbV9zaXplLCBib290X2RldmljZSwgaGQpOwogCkluZGV4OiBody9w cGNfcHJlcC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gaHcvcHBjX3ByZXAuYwkocmV2aXNpb24g NTc3MSkNCisrKyBody9wcGNfcHJlcC5jCSh3b3JraW5nIGNvcHkpDQpAQCAtNzA5LDcgKzcw OSw3IEBADQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmZFtpXSA9IE5VTEw7CiAgICAg fQotICAgIGZkY3RybF9pbml0KGk4MjU5WzZdLCAyLCAwLCAweDNmMCwgZmQpOworICAgIGZk Y3RybF9pODI1N19pbml0KGk4MjU5WzZdLCAyLCAwLCAweDNmMCwgZmQpOwogCiAgICAgLyog UmVnaXN0ZXIgc3BlYWtlciBwb3J0ICovCiAgICAgcmVnaXN0ZXJfaW9wb3J0X3JlYWQoMHg2 MSwgMSwgMSwgc3BlYWtlcl9pb3BvcnRfcmVhZCwgTlVMTCk7CkluZGV4OiBody9zdW40bS5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gaHcvc3VuNG0uYwkocmV2aXNpb24gNTc3MSkNCisrKyBo dy9zdW40bS5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMTU4OSw3ICsxNTg5LDcgQEANCiAKICAg ICBpZiAoaHdkZWYtPmZkX2Jhc2UgIT0gKHRhcmdldF9waHlzX2FkZHJfdCktMSkgewogICAg ICAgICAvKiB0aGVyZSBpcyB6ZXJvIG9yIG9uZSBmbG9wcHkgZHJpdmUgKi8KLSAgICAgICAg ZmRbMV0gPSBmZFswXSA9IE5VTEw7CisgICAgICAgIG1lbXNldChmZCwgMCwgc2l6ZW9mKGZk KSk7CiAgICAgICAgIGRyaXZlX2luZGV4ID0gZHJpdmVfZ2V0X2luZGV4KElGX0ZMT1BQWSwg MCwgMCk7CiAgICAgICAgIGlmIChkcml2ZV9pbmRleCAhPSAtMSkKICAgICAgICAgICAgIGZk WzBdID0gZHJpdmVzX3RhYmxlW2RyaXZlX2luZGV4XS5iZHJ2OwpJbmRleDogaHcvc3VuNHUu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KLS0tIGh3L3N1bjR1LmMJKHJldmlzaW9uIDU3NzEpDQorKysg aHcvc3VuNHUuYwkod29ya2luZyBjb3B5KQ0KQEAgLTUwOCw3ICs1MDgsNyBAQA0KICAgICAg ICBlbHNlCiAgICAgICAgICAgIGZkW2ldID0gTlVMTDsKICAgICB9Ci0gICAgZmxvcHB5X2Nv bnRyb2xsZXIgPSBmZGN0cmxfaW5pdChOVUxMLyo2Ki8sIDIsIDAsIDB4M2YwLCBmZCk7Cisg ICAgZmxvcHB5X2NvbnRyb2xsZXIgPSBmZGN0cmxfaTgyNTdfaW5pdChOVUxMLyo2Ki8sIDIs IDAsIDB4M2YwLCBmZCk7CiAgICAgbnZyYW0gPSBtNDh0NTlfaW5pdChOVUxMLyo4Ki8sIDAs IDB4MDA3NCwgTlZSQU1fU0laRSwgNTkpOwogICAgIHN1bjR1X05WUkFNX3NldF9wYXJhbXMo bnZyYW0sIE5WUkFNX1NJWkUsICJTdW40dSIsIFJBTV9zaXplLCBib290X2RldmljZXMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBLRVJORUxfTE9BRF9BRERSLCBrZXJuZWxfc2l6 ZSwK --------------010105000900020909020606--