From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1ILOcm-0007s4-S6 for qemu-devel@nongnu.org; Wed, 15 Aug 2007 15:33:48 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1ILOcl-0007rH-AP for qemu-devel@nongnu.org; Wed, 15 Aug 2007 15:33:47 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ILOcl-0007rE-4C for qemu-devel@nongnu.org; Wed, 15 Aug 2007 15:33:47 -0400 Received: from nf-out-0910.google.com ([64.233.182.185]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1ILOck-0003Px-Ek for qemu-devel@nongnu.org; Wed, 15 Aug 2007 15:33:46 -0400 Received: by nf-out-0910.google.com with SMTP id 30so18077nfu for ; Wed, 15 Aug 2007 12:33:45 -0700 (PDT) Message-ID: Date: Wed, 15 Aug 2007 22:33:44 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] Re: Extending qemu_irq for reset signals In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_182869_924680.1187206424965" References: <200708151822.56446.paul@codesourcery.com> <200708151842.17437.paul@codesourcery.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: paul@codesourcery.com, qemu-devel@nongnu.org ------=_Part_182869_924680.1187206424965 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 8/15/07, Blue Swirl wrote: > On 8/15/07, Paul Brook wrote: > > On Wednesday 15 August 2007, Blue Swirl wrote: > > > On 8/15/07, Paul Brook wrote: > > > > On Wednesday 15 August 2007, Paul Brook wrote: > > > > > > Okay, more explaining. This is the case where I'd want to use the > > > > > > signal: DMA controller ("upstream") can reset the slave device (ESP > > > > > > or Lance). DMA controller is created first and I also want to > > > > > > allocate reset signals at that point. Later when ESP is created, it > > > > > > should be possible to put ESP reset function and opaque data to the > > > > > > signal given but this is not possible with current API. Currently the > > > > > > DMA data would be passed to qemu_allocate_irqs. > > > > > > > > > > Ah, I see. The problem here is that you've got a cyclic dependency. For > > > > > DMA operations the ESP is in charge, so it makes sense to create the > > > > > subservient DMA device first. For the reset signals the DMA controller > > > > > is in charge so ideally you create the ESP device first. Because the > > > > > DMA interface is most complicated, it's probably takes precedence. > > > > > > > > > > I think you need to modify or use sparc32_dma_set_reset_data to take a > > > > > qemu_irq rather than a callback and opaque argument. Alternatively you > > > > > can move things around a bit and have the sun4m code do something > > > > > similar. i.e. the ESP and lance devices return the reset lines, then > > > > > the sun4m code pokes into the DMA device state. > > > > > > > > Oh, or you can pass a pointer to a qemu_irq from the DMA to the ESP and > > > > have the ESP poke its reset object in there that way. > > > > > > That's what I had in mind. Should I just extend the API for example with > > > /* Change the callback function and/or data */ > > > void qemu_irq_change(qemu_irq irq, qemu_irq_handler handler, > > > void *opaque); > > > > I'm not so keen on that. It breaks the nice property of having the IRQ lines > > owned by the receiver. I was thinking something like: > > > > struct DMAState { > > qemu_irq device_reset; > > }; > > qemu_irq *dma_init() > > { > > struct DMAState * d = malloc(); > > return &d->device_reset; > > } > > > > void esp_init(qemu_irq *resetp) > > { > > ESPState *d = malloc(); > > *reset = *qemu_irq_alloc(d, 1); > > } > > > > void sun4m_init() > > { > > qemu_irq *p = dma_init(); > > esp_init(p); > > } > > Yes, that would work. I wasn't too happy about the change function either. > I implemented reset that way with qemu_irq, the result survives some quick tests. ------=_Part_182869_924680.1187206424965 Content-Type: text/x-diff; name=sparc32_reset.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5e7x31a Content-Disposition: attachment; filename="sparc32_reset.diff" SW5kZXg6IHFlbXUvaHcvZXNwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2VzcC5jCTIw MDctMDgtMTUgMTg6NTg6MDIuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2VzcC5jCTIwMDct MDgtMTUgMTk6MjI6MzguMDAwMDAwMDAwICswMDAwCkBAIC0zNDQsNiArMzQ0LDExIEBACiAgICAg cy0+ZG9fY21kID0gMDsKIH0KIAorc3RhdGljIHZvaWQgcGFyZW50X2VzcF9yZXNldCh2b2lkICpv cGFxdWUsIGludCBpcnEsIGludCBsZXZlbCkKK3sKKyAgICBlc3BfcmVzZXQob3BhcXVlKTsKK30K Kwogc3RhdGljIHVpbnQzMl90IGVzcF9tZW1fcmVhZGIodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkcikKIHsKICAgICBFU1BTdGF0ZSAqcyA9IG9wYXF1ZTsKQEAgLTU2OSw3ICs1 NzQsNyBAQAogfQogCiB2b2lkICplc3BfaW5pdChCbG9ja0RyaXZlclN0YXRlICoqYmQsIHRhcmdl dF9waHlzX2FkZHJfdCBlc3BhZGRyLAotICAgICAgICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwg cWVtdV9pcnEgaXJxLCBxZW11X2RtYSAqcGFyZW50X2RtYSkKKyAgICAgICAgICAgICAgIHFlbXVf aXJxIGlycSwgcWVtdV9kbWEgKnBhcmVudF9kbWEsIHFlbXVfaXJxICpyZXNldCkKIHsKICAgICBF U1BTdGF0ZSAqczsKICAgICBpbnQgZXNwX2lvX21lbW9yeTsKQEAgLTU4MSw3ICs1ODYsNiBAQAog ICAgIHMtPmJkID0gYmQ7CiAgICAgcy0+aXJxID0gaXJxOwogICAgIHMtPnBhcmVudF9kbWEgPSBw YXJlbnRfZG1hOwotICAgIHNwYXJjMzJfZG1hX3NldF9yZXNldF9kYXRhKGRtYV9vcGFxdWUsIGVz cF9yZXNldCwgcyk7CiAKICAgICBlc3BfaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9y eSgwLCBlc3BfbWVtX3JlYWQsIGVzcF9tZW1fd3JpdGUsIHMpOwogICAgIGNwdV9yZWdpc3Rlcl9w aHlzaWNhbF9tZW1vcnkoZXNwYWRkciwgRVNQX1NJWkUsIGVzcF9pb19tZW1vcnkpOwpAQCAtNTkx LDUgKzU5NSw3IEBACiAgICAgcmVnaXN0ZXJfc2F2ZXZtKCJlc3AiLCBlc3BhZGRyLCAzLCBlc3Bf c2F2ZSwgZXNwX2xvYWQsIHMpOwogICAgIHFlbXVfcmVnaXN0ZXJfcmVzZXQoZXNwX3Jlc2V0LCBz KTsKIAorICAgICpyZXNldCA9ICpxZW11X2FsbG9jYXRlX2lycXMocGFyZW50X2VzcF9yZXNldCwg cywgMSk7CisKICAgICByZXR1cm4gczsKIH0KSW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0uYwkyMDA3LTA4LTE1IDE4OjU4OjAyLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9ody9zdW40bS5jCTIwMDctMDgtMTUgMTk6MDU6NTcuMDAwMDAwMDAw ICswMDAwCkBAIC0zMjIsNiArMzIyLDcgQEAKICAgICBxZW11X2lycSAqY3B1X2lycXNbTUFYX0NQ VVNdLCAqc2xhdmlvX2lycSwgKnNsYXZpb19jcHVfaXJxLAogICAgICAgICAqZXNwZG1hX2lycSwg KmxlZG1hX2lycTsKICAgICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hLCAqZHZtYSwgKmVzcF9kdm1h LCAqbGVfZHZtYTsKKyAgICBxZW11X2lycSAqZXNwX3Jlc2V0LCAqbGVfcmVzZXQ7CiAKICAgICAv KiBpbml0IENQVXMgKi8KICAgICBzcGFyY19maW5kX2J5X25hbWUoY3B1X21vZGVsLCAmZGVmKTsK QEAgLTM2MiwxMSArMzYzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBod2RlZi0+Y2xvY2tfaXJxKTsKIAogICAgIGVzcGRtYSA9IHNwYXJjMzJfZG1hX2luaXQo aHdkZWYtPmRtYV9iYXNlLCBzbGF2aW9faXJxW2h3ZGVmLT5lc3BfaXJxXSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZlc3BkbWFfaXJxLCBkdm1hLCAmZXNwX2R2bWEsIDEpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVzcGRtYV9pcnEsIGR2bWEsICZlc3BfZHZtYSwg MSwgJmVzcF9yZXNldCk7CiAKICAgICBsZWRtYSA9IHNwYXJjMzJfZG1hX2luaXQoaHdkZWYtPmRt YV9iYXNlICsgMTZVTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZpb19pcnFb aHdkZWYtPmxlX2lycV0sICZsZWRtYV9pcnEsIGR2bWEsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZsZV9kdm1hLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlX2R2 bWEsIDAsICZsZV9yZXNldCk7CiAKICAgICBpZiAoZ3JhcGhpY19kZXB0aCAhPSA4ICYmIGdyYXBo aWNfZGVwdGggIT0gMjQpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBVbnN1cHBv cnRlZCBkZXB0aDogJWRcbiIsIGdyYXBoaWNfZGVwdGgpOwpAQCAtMzc3LDcgKzM3OCw3IEBACiAK ICAgICBpZiAobmRfdGFibGVbMF0ubW9kZWwgPT0gTlVMTAogICAgICAgICB8fCBzdHJjbXAobmRf dGFibGVbMF0ubW9kZWwsICJsYW5jZSIpID09IDApIHsKLSAgICAgICAgbGFuY2VfaW5pdCgmbmRf dGFibGVbMF0sIGh3ZGVmLT5sZV9iYXNlLCBsZWRtYSwgKmxlZG1hX2lycSwgbGVfZHZtYSk7Cisg ICAgICAgIGxhbmNlX2luaXQoJm5kX3RhYmxlWzBdLCBod2RlZi0+bGVfYmFzZSwgKmxlZG1hX2ly cSwgbGVfZHZtYSwgbGVfcmVzZXQpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5kX3RhYmxlWzBd Lm1vZGVsLCAiPyIpID09IDApIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBTdXBw b3J0ZWQgTklDczogbGFuY2VcbiIpOwogICAgICAgICBleGl0ICgxKTsKQEAgLTQwMiw4ICs0MDMs OCBAQAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxfaGRzWzFdLCBzZXJpYWxfaGRzWzBd KTsKICAgICBmZGN0cmxfaW5pdChzbGF2aW9faXJxW2h3ZGVmLT5mZF9pcnFdLCAwLCAxLCBod2Rl Zi0+ZmRfYmFzZSwgZmRfdGFibGUpOwogCi0gICAgbWFpbl9lc3AgPSBlc3BfaW5pdChic190YWJs ZSwgaHdkZWYtPmVzcF9iYXNlLCBlc3BkbWEsICplc3BkbWFfaXJxLAotICAgICAgICAgICAgICAg ICAgICAgICAgZXNwX2R2bWEpOworICAgIG1haW5fZXNwID0gZXNwX2luaXQoYnNfdGFibGUsIGh3 ZGVmLT5lc3BfYmFzZSwgKmVzcGRtYV9pcnEsIGVzcF9kdm1hLAorICAgICAgICAgICAgICAgICAg ICAgICAgZXNwX3Jlc2V0KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfRElTS1M7IGkrKykg ewogICAgICAgICBpZiAoYnNfdGFibGVbaV0pIHsKSW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTA4LTE1IDE4OjU4OjAyLjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS92bC5oCTIwMDctMDgtMTUgMTk6MDU6NTcuMDAwMDAwMDAwICswMDAwCkBAIC0xMDk3 LDggKzEwOTcsOCBAQAogLyogcGNuZXQuYyAqLwogCiB2b2lkIHBjaV9wY25ldF9pbml0KFBDSUJ1 cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZuKTsKLXZvaWQgbGFuY2VfaW5pdChOSUNJbmZv ICpuZCwgdGFyZ2V0X3BoeXNfYWRkcl90IGxlYWRkciwgdm9pZCAqZG1hX29wYXF1ZSwKLSAgICAg ICAgICAgICAgICBxZW11X2lycSBpcnEsIHFlbXVfZG1hICpwYXJlbnRfZG1hKTsKK3ZvaWQgbGFu Y2VfaW5pdChOSUNJbmZvICpuZCwgdGFyZ2V0X3BoeXNfYWRkcl90IGxlYWRkciwgcWVtdV9pcnEg aXJxLAorICAgICAgICAgICAgICAgIHFlbXVfZG1hICpwYXJlbnRfZG1hLCBxZW11X2lycSAqcmVz ZXQpOwogCiAvKiB2bW1vdXNlLmMgKi8KIHZvaWQgKnZtbW91c2VfaW5pdCh2b2lkICptKTsKQEAg LTEzMDMsMTQgKzEzMDMsMTIgQEAKIC8qIGVzcC5jICovCiB2b2lkIGVzcF9zY3NpX2F0dGFjaCh2 b2lkICpvcGFxdWUsIEJsb2NrRHJpdmVyU3RhdGUgKmJkLCBpbnQgaWQpOwogdm9pZCAqZXNwX2lu aXQoQmxvY2tEcml2ZXJTdGF0ZSAqKmJkLCB0YXJnZXRfcGh5c19hZGRyX3QgZXNwYWRkciwKLSAg ICAgICAgICAgICAgIHZvaWQgKmRtYV9vcGFxdWUsIHFlbXVfaXJxIGlycSwgcWVtdV9kbWEgKnBh cmVudF9kbWEpOworICAgICAgICAgICAgICAgcWVtdV9pcnEgaXJxLCBxZW11X2RtYSAqcGFyZW50 X2RtYSwgcWVtdV9pcnEgKnJlc2V0KTsKIAogLyogc3BhcmMzMl9kbWEuYyAqLwogdm9pZCAqc3Bh cmMzMl9kbWFfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgZGFkZHIsIHFlbXVfaXJxIHBhcmVudF9p cnEsCiAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfaXJxICoqZGV2X2lycSwgcWVtdV9kbWEg KnBhcmVudF9kbWEsCi0gICAgICAgICAgICAgICAgICAgICAgIHFlbXVfZG1hICoqZGV2X2RtYSwg aW50IGlzX2VzcGRtYSk7Ci12b2lkIHNwYXJjMzJfZG1hX3NldF9yZXNldF9kYXRhKHZvaWQgKm9w YXF1ZSwgdm9pZCAoKmRldl9yZXNldCkodm9pZCAqb3BhcXVlKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqZGV2X29wYXF1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg IHFlbXVfZG1hICoqZGV2X2RtYSwgaW50IGlzX2VzcGRtYSwgcWVtdV9pcnEgKipyZXNldCk7CiAK IC8qIGNzNDIzMS5jICovCiB2b2lkIGNzX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IGJhc2UsIGlu dCBpcnEsIHZvaWQgKmludGN0bCk7CkluZGV4OiBxZW11L2h3L3BjbmV0LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2h3L3BjbmV0LmMJMjAwNy0wOC0xNSAxODo1ODowMi4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvaHcvcGNuZXQuYwkyMDA3LTA4LTE1IDE5OjA1OjU3LjAwMDAwMDAwMCArMDAw MApAQCAtMjA1Miw2ICsyMDUyLDExIEBACiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBwYXJlbnRf bGFuY2VfcmVzZXQodm9pZCAqb3BhcXVlLCBpbnQgaXJxLCBpbnQgbGV2ZWwpCit7CisgICAgcGNu ZXRfaF9yZXNldChvcGFxdWUpOworfQorCiBzdGF0aWMgdm9pZCBsYW5jZV9tZW1fd3JpdGV3KHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IHZhbCkKIHsKQEAgLTIwODcsOCArMjA5Miw4IEBACiAgICAgbGFu Y2VfbWVtX3dyaXRldywKIH07CiAKLXZvaWQgbGFuY2VfaW5pdChOSUNJbmZvICpuZCwgdGFyZ2V0 X3BoeXNfYWRkcl90IGxlYWRkciwgdm9pZCAqZG1hX29wYXF1ZSwKLSAgICAgICAgICAgICAgICBx ZW11X2lycSBpcnEsIHFlbXVfZG1hICpwYXJlbnRfZG1hKQordm9pZCBsYW5jZV9pbml0KE5JQ0lu Zm8gKm5kLCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRyLCBxZW11X2lycSBpcnEsCisgICAgICAg ICAgICAgICAgcWVtdV9kbWEgKnBhcmVudF9kbWEsIHFlbXVfaXJxICpyZXNldCkKIHsKICAgICBQ Q05ldFN0YXRlICpkOwogICAgIGludCBsYW5jZV9pb19tZW1vcnk7CkBAIC0yMTAxLDcgKzIxMDYs NyBAQAogICAgICAgICBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIGxhbmNlX21lbV9yZWFkLCBs YW5jZV9tZW1fd3JpdGUsIGQpOwogCiAgICAgZC0+ZG1hX29wYXF1ZSA9IHBhcmVudF9kbWE7Ci0g ICAgc3BhcmMzMl9kbWFfc2V0X3Jlc2V0X2RhdGEoZG1hX29wYXF1ZSwgcGNuZXRfaF9yZXNldCwg ZCk7CisgICAgKnJlc2V0ID0gKnFlbXVfYWxsb2NhdGVfaXJxcyhwYXJlbnRfbGFuY2VfcmVzZXQs IGQsIDEpOwogCiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShsZWFkZHIsIDQsIGxh bmNlX2lvX21lbW9yeSk7CiAKSW5kZXg6IHFlbXUvaHcvc3BhcmMzMl9kbWEuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvaHcvc3BhcmMzMl9kbWEuYwkyMDA3LTA4LTE1IDE4OjU4OjAyLjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9ody9zcGFyYzMyX2RtYS5jCTIwMDctMDgtMTUgMTk6MjU6NDYu MDAwMDAwMDAwICswMDAwCkBAIC01OCw5ICs1OCw4IEBACiBzdHJ1Y3QgRE1BU3RhdGUgewogICAg IHVpbnQzMl90IGRtYXJlZ3NbRE1BX1JFR1NdOwogICAgIHFlbXVfaXJxIGlycTsKLSAgICB2b2lk ICpkZXZfb3BhcXVlOwotICAgIHZvaWQgKCpkZXZfcmVzZXQpKHZvaWQgKmRldl9vcGFxdWUpOwog ICAgIHFlbXVfaXJxICpwaWM7CisgICAgcWVtdV9pcnEgZGV2X3Jlc2V0OwogICAgIHFlbXVfZG1h ICpkbWE7CiB9OwogCkBAIC0xMzIsNyArMTMxLDcgQEAKICAgICAgICAgICAgIHFlbXVfaXJxX2xv d2VyKHMtPmlycSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZhbCAmIERNQV9SRVNFVCkgewot ICAgICAgICAgICAgcy0+ZGV2X3Jlc2V0KHMtPmRldl9vcGFxdWUpOworICAgICAgICAgICAgcWVt dV9pcnFfcmFpc2Uocy0+ZGV2X3Jlc2V0KTsKICAgICAgICAgfSBlbHNlIGlmICh2YWwgJiBETUFf RFJBSU5fRklGTykgewogICAgICAgICAgICAgdmFsICY9IH5ETUFfRFJBSU5fRklGTzsKICAgICAg ICAgfSBlbHNlIGlmICh2YWwgPT0gMCkKQEAgLTE5Myw3ICsxOTIsNyBAQAogCiB2b2lkICpzcGFy YzMyX2RtYV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBkYWRkciwgcWVtdV9pcnEgcGFyZW50X2ly cSwKICAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9pcnEgKipkZXZfaXJxLCBxZW11X2RtYSAq cGFyZW50X2RtYSwKLSAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9kbWEgKipkZXZfZG1hLCBp bnQgaXNfZXNwZG1hKQorICAgICAgICAgICAgICAgICAgICAgICBxZW11X2RtYSAqKmRldl9kbWEs IGludCBpc19lc3BkbWEsIHFlbXVfaXJxICoqcmVzZXQpCiB7CiAgICAgRE1BU3RhdGUgKnM7CiAg ICAgaW50IGRtYV9pb19tZW1vcnk7CkBAIC0yMTcsMTQgKzIxNiw3IEBACiAgICAgZWxzZQogICAg ICAgICAqZGV2X2RtYSA9IHFlbXVfaW5pdF9kbWEobGVkbWFfbWVtb3J5X3J3LCBzKTsKIAotICAg IHJldHVybiBzOwotfQotCi12b2lkIHNwYXJjMzJfZG1hX3NldF9yZXNldF9kYXRhKHZvaWQgKm9w YXF1ZSwgdm9pZCAoKmRldl9yZXNldCkodm9pZCAqb3BhcXVlKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqZGV2X29wYXF1ZSkKLXsKLSAgICBETUFTdGF0ZSAqcyA9IG9w YXF1ZTsKKyAgICAqcmVzZXQgPSAmcy0+ZGV2X3Jlc2V0OwogCi0gICAgcy0+ZGV2X3Jlc2V0ID0g ZGV2X3Jlc2V0OwotICAgIHMtPmRldl9vcGFxdWUgPSBkZXZfb3BhcXVlOworICAgIHJldHVybiBz OwogfQo= ------=_Part_182869_924680.1187206424965--