From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HrIpQ-0002S9-Dv for qemu-devel@nongnu.org; Thu, 24 May 2007 15:18:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HrIpO-0002Rx-Tc for qemu-devel@nongnu.org; Thu, 24 May 2007 15:18:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HrIpO-0002Ru-NE for qemu-devel@nongnu.org; Thu, 24 May 2007 15:18:26 -0400 Received: from wx-out-0506.google.com ([66.249.82.229]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HrIpN-0001Yr-Ue for qemu-devel@nongnu.org; Thu, 24 May 2007 15:18:26 -0400 Received: by wx-out-0506.google.com with SMTP id t15so417694wxc for ; Thu, 24 May 2007 12:18:24 -0700 (PDT) Message-ID: Date: Thu, 24 May 2007 22:18:23 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] Timers In-Reply-To: <200705232256.40404.paul@codesourcery.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_65237_18388726.1180034303796" References: <200705230107.00962.paul@codesourcery.com> <200705232048.16793.paul@codesourcery.com> <200705232256.40404.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 Brook Cc: qemu-devel@nongnu.org ------=_Part_65237_18388726.1180034303796 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 5/24/07, Paul Brook wrote: > > > Code looks reasonable to me. The FIXME means you're changing the timer > > > parameters after starting the timer. I didn't check whether this does > > > anything sensible (this may depend on the device), hence the message. > > > It probably needs some attention when reload == 1 && s->enabled. > > > > > > Note that save/restore is not implemented. You may wish to implement > > > this > > > > I was thinking that it should be possible to save/restore all vm_clock > > based timers in qemu at QEMUTimer level so that hardware emulation > > doesn't have to bother restoring this. (the "ptimer" would still need > > to save its internal fields). > > The problem is that the timer itself doesn't know which device it is attached > to. There's no way to ensure that the state is loaded into the correct > timers. Remember that qemu can be restarted (and all timers reallocated) in > between the save and the load. > > There are already qemu_put_timer and qemu_get_timer routines. > I notice that the existing slavio_timer_{save,load} don't use these, so are > probably already broken. There were bugs in the previous version, this version passes my simple tests. I implemented save and load methods. If the 64-bit code doesn't break ARM, it's ready for commit. ------=_Part_65237_18388726.1180034303796 Content-Type: text/x-diff; name=generic_timers.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f23lweb2 Content-Disposition: attachment; filename="generic_timers.diff" SW5kZXg6IHFlbXUvaHcvc2xhdmlvX3RpbWVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3 L3NsYXZpb190aW1lci5jCTIwMDctMDUtMjQgMTc6MTI6NTQuMDAwMDAwMDAwICswMDAwCisrKyBx ZW11L2h3L3NsYXZpb190aW1lci5jCTIwMDctMDUtMjQgMTc6NTQ6MTIuMDAwMDAwMDAwICswMDAw CkBAIC00OCw2MSArNDgsMjkgQEAKICAqLwogCiB0eXBlZGVmIHN0cnVjdCBTTEFWSU9fVElNRVJT dGF0ZSB7Ci0gICAgdWludDMyX3QgbGltaXQsIGNvdW50LCBjb3VudGhpZ2g7Ci0gICAgaW50NjRf dCBjb3VudF9sb2FkX3RpbWU7Ci0gICAgaW50NjRfdCBleHBpcmVfdGltZTsKLSAgICBpbnQ2NF90 IHN0b3BfdGltZSwgdGlja19vZmZzZXQ7Ci0gICAgUUVNVVRpbWVyICppcnFfdGltZXI7CisgICAg cHRpbWVyX3N0YXRlICp0aW1lcjsKKyAgICB1aW50MzJfdCBjb3VudCwgY291bnRoaWdoLCByZWFj aGVkOworICAgIHVpbnQ2NF90IGxpbWl0OwogICAgIGludCBpcnE7Ci0gICAgaW50IHJlYWNoZWQs IHN0b3BwZWQ7CisgICAgaW50IHN0b3BwZWQ7CiAgICAgaW50IG1vZGU7IC8vIDAgPSBwcm9jZXNz b3IsIDEgPSB1c2VyLCAyID0gc3lzdGVtCiAgICAgdW5zaWduZWQgaW50IGNwdTsKICAgICB2b2lk ICppbnRjdGw7CiB9IFNMQVZJT19USU1FUlN0YXRlOwogCiAjZGVmaW5lIFRJTUVSX01BWEFERFIg MHgxZgotI2RlZmluZSBDTlRfRlJFUSAyMDAwMDAwCiAKIC8vIFVwZGF0ZSBjb3VudCwgc2V0IGly cSwgdXBkYXRlIGV4cGlyZV90aW1lCisvLyBDb252ZXJ0IGZyb20gcHRpbWVyIGNvdW50ZG93biB1 bml0cwogc3RhdGljIHZvaWQgc2xhdmlvX3RpbWVyX2dldF9vdXQoU0xBVklPX1RJTUVSU3RhdGUg KnMpCiB7Ci0gICAgaW50IG91dDsKLSAgICBpbnQ2NF90IGRpZmYsIHRpY2tzLCBjb3VudDsKLSAg ICB1aW50MzJfdCBsaW1pdDsKLQotICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBjbG9jayB0aWNrIHVu aXRzOiBDUFUgdGlja3MsIHJlZ2lzdGVyIHVuaXRzCi0gICAgLy8gKG5hbm9zZWNvbmRzKSwgYW5k IGNvdW50ZXIgdGlja3MgKDUwMCBucykuCi0gICAgaWYgKHMtPm1vZGUgPT0gMSAmJiBzLT5zdG9w cGVkKQotCXRpY2tzID0gcy0+c3RvcF90aW1lOwotICAgIGVsc2UKLQl0aWNrcyA9IHFlbXVfZ2V0 X2Nsb2NrKHZtX2Nsb2NrKSAtIHMtPnRpY2tfb2Zmc2V0OwotCi0gICAgb3V0ID0gKHRpY2tzID4g cy0+ZXhwaXJlX3RpbWUpOwotICAgIGlmIChvdXQpCi0Jcy0+cmVhY2hlZCA9IDB4ODAwMDAwMDA7 Ci0gICAgLy8gQ29udmVydCByZWdpc3RlciB1bml0cyB0byBjb3VudGVyIHRpY2tzCi0gICAgbGlt aXQgPSBzLT5saW1pdCA+PiA5OwotCi0gICAgaWYgKCFsaW1pdCkKLQlsaW1pdCA9IDB4N2ZmZmZm ZmYgPj4gOTsKLQotICAgIC8vIENvbnZlcnQgY3B1IHRpY2tzIHRvIGNvdW50ZXIgdGlja3MKLSAg ICBkaWZmID0gbXVsZGl2NjQodGlja3MgLSBzLT5jb3VudF9sb2FkX3RpbWUsIENOVF9GUkVRLCB0 aWNrc19wZXJfc2VjKTsKLQotICAgIC8vIENhbGN1bGF0ZSB3aGF0IHRoZSBjb3VudGVyIHNob3Vs ZCBiZSwgY29udmVydCB0byByZWdpc3RlcgotICAgIC8vIHVuaXRzCi0gICAgY291bnQgPSBkaWZm ICUgbGltaXQ7Ci0gICAgcy0+Y291bnQgPSBjb3VudCA8PCA5OwotICAgIHMtPmNvdW50aGlnaCA9 IGNvdW50ID4+IDIyOwotCi0gICAgLy8gRXhwaXJlIHRpbWU6IENQVSB0aWNrcyBsZWZ0IHRvIG5l eHQgaW50ZXJydXB0Ci0gICAgLy8gQ29udmVydCByZW1haW5pbmcgY291bnRlciB0aWNrcyB0byBD UFUgdGlja3MKLSAgICBzLT5leHBpcmVfdGltZSA9IHRpY2tzICsgbXVsZGl2NjQobGltaXQgLSBj b3VudCwgdGlja3NfcGVyX3NlYywgQ05UX0ZSRVEpOworICAgIHVpbnQ2NF90IGNvdW50OwogCi0g ICAgRFBSSU5URigiaXJxICVkIGxpbWl0ICVkIHJlYWNoZWQgJWQgZCAlIiBQUklkNjQgIiBjb3Vu dCAlZCBzLT5jICV4IGRpZmYgJSIgUFJJZDY0ICIgc3RvcHBlZCAlZCBtb2RlICVkXG4iLCBzLT5p cnEsIGxpbWl0LCBzLT5yZWFjaGVkPzE6MCwgKHRpY2tzLXMtPmNvdW50X2xvYWRfdGltZSksIGNv dW50LCBzLT5jb3VudCwgcy0+ZXhwaXJlX3RpbWUgLSB0aWNrcywgcy0+c3RvcHBlZCwgcy0+bW9k ZSk7Ci0KLSAgICBpZiAocy0+bW9kZSAhPSAxKQotCXBpY19zZXRfaXJxX2NwdShzLT5pbnRjdGws IHMtPmlycSwgb3V0LCBzLT5jcHUpOworICAgIGNvdW50ID0gcy0+bGltaXQgLSAocHRpbWVyX2dl dF9jb3VudChzLT50aW1lcikgPDwgOSk7CisgICAgRFBSSU5URigiZ2V0X291dDogbGltaXQgJSIg UFJJeDY0ICIgY291bnQgJXglMDh4XG4iLCBzLT5saW1pdCwgcy0+Y291bnRoaWdoLAorICAgICAg ICAgICAgcy0+Y291bnQpOworICAgIHMtPmNvdW50ID0gY291bnQgJiAweGZmZmZmZTAwOworICAg IHMtPmNvdW50aGlnaCA9IGNvdW50ID4+IDMyOwogfQogCiAvLyB0aW1lciBjYWxsYmFjawpAQCAt MTEwLDE3ICs3OCwxNyBAQAogewogICAgIFNMQVZJT19USU1FUlN0YXRlICpzID0gb3BhcXVlOwog Ci0gICAgaWYgKCFzLT5pcnFfdGltZXIpCi0gICAgICAgIHJldHVybjsKICAgICBzbGF2aW9fdGlt ZXJfZ2V0X291dChzKTsKKyAgICBEUFJJTlRGKCJjYWxsYmFjazogY291bnQgJXglMDh4XG4iLCBz LT5jb3VudGhpZ2gsIHMtPmNvdW50KTsKKyAgICBzLT5yZWFjaGVkID0gMHg4MDAwMDAwMDsKICAg ICBpZiAocy0+bW9kZSAhPSAxKQotCXFlbXVfbW9kX3RpbWVyKHMtPmlycV90aW1lciwgcy0+ZXhw aXJlX3RpbWUpOworCXBpY19zZXRfaXJxX2NwdShzLT5pbnRjdGwsIHMtPmlycSwgMSwgcy0+Y3B1 KTsKIH0KIAogc3RhdGljIHVpbnQzMl90IHNsYXZpb190aW1lcl9tZW1fcmVhZGwodm9pZCAqb3Bh cXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICBTTEFWSU9fVElNRVJTdGF0ZSAq cyA9IG9wYXF1ZTsKLSAgICB1aW50MzJfdCBzYWRkcjsKKyAgICB1aW50MzJfdCBzYWRkciwgcmV0 OwogCiAgICAgc2FkZHIgPSAoYWRkciAmIFRJTUVSX01BWEFERFIpID4+IDI7CiAgICAgc3dpdGNo IChzYWRkcikgewpAQCAtMTMxLDYwICs5OSw2OSBAQAogCSAgICAvLyBjbGVhciBpcnEKIAkgICAg cGljX3NldF9pcnFfY3B1KHMtPmludGN0bCwgcy0+aXJxLCAwLCBzLT5jcHUpOwogCSAgICBzLT5y ZWFjaGVkID0gMDsKLQkgICAgcmV0dXJuIHMtPmxpbWl0OworICAgICAgICAgICAgcmV0ID0gcy0+ bGltaXQgJiAweDdmZmZmZmZmOwogCX0KIAllbHNlIHsKIAkgICAgc2xhdmlvX3RpbWVyX2dldF9v dXQocyk7Ci0JICAgIHJldHVybiBzLT5jb3VudGhpZ2ggJiAweDdmZmZmZmZmOworICAgICAgICAg ICAgcmV0ID0gcy0+Y291bnRoaWdoICYgMHg3ZmZmZmZmZjsKIAl9CisgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgMToKIAkvLyByZWFkIGNvdW50ZXIgYW5kIHJlYWNoZWQgYml0IChzeXN0ZW0gbW9k ZSkgb3IgcmVhZCBsc2JpdHMKIAkvLyBvZiBjb3VudGVyICh1c2VyIG1vZGUpCiAJc2xhdmlvX3Rp bWVyX2dldF9vdXQocyk7CiAJaWYgKHMtPm1vZGUgIT0gMSkKLQkgICAgcmV0dXJuIChzLT5jb3Vu dCAmIDB4N2ZmZmZmZmYpIHwgcy0+cmVhY2hlZDsKKyAgICAgICAgICAgIHJldCA9IChzLT5jb3Vu dCAmIDB4N2ZmZmZmZmYpIHwgcy0+cmVhY2hlZDsKIAllbHNlCi0JICAgIHJldHVybiBzLT5jb3Vu dDsKKyAgICAgICAgICAgIHJldCA9IHMtPmNvdW50OworICAgICAgICBicmVhazsKICAgICBjYXNl IDM6CiAJLy8gcmVhZCBzdGFydC9zdG9wIHN0YXR1cwotCXJldHVybiBzLT5zdG9wcGVkOworICAg ICAgICByZXQgPSBzLT5zdG9wcGVkOworICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6CiAJLy8g cmVhZCB1c2VyL3N5c3RlbSBtb2RlCi0JcmV0dXJuIHMtPm1vZGUgJiAxOworICAgICAgICByZXQg PSBzLT5tb2RlICYgMTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLQlyZXR1cm4gMDsK KyAgICAgICAgcmV0ID0gMDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIERQUklOVEYoInJl YWQgIiBUQVJHRVRfRk1UX3BseCAiID0gJTA4eFxuIiwgYWRkciwgcmV0KTsKKworICAgIHJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIHNsYXZpb190aW1lcl9tZW1fd3JpdGVsKHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKICAgICBTTEFW SU9fVElNRVJTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICB1aW50MzJfdCBzYWRkcjsKKyAgICBpbnQg cmVsb2FkID0gMDsKIAorICAgIERQUklOVEYoIndyaXRlICIgVEFSR0VUX0ZNVF9wbHggIiAlMDh4 XG4iLCBhZGRyLCB2YWwpOwogICAgIHNhZGRyID0gKGFkZHIgJiBUSU1FUl9NQVhBRERSKSA+PiAy OwogICAgIHN3aXRjaCAoc2FkZHIpIHsKICAgICBjYXNlIDA6CiAJLy8gc2V0IGxpbWl0LCByZXNl dCBjb3VudGVyCi0Jcy0+Y291bnRfbG9hZF90aW1lID0gcWVtdV9nZXRfY2xvY2sodm1fY2xvY2sp OworICAgICAgICByZWxvYWQgPSAxOworICAgICAgICBwaWNfc2V0X2lycV9jcHUocy0+aW50Y3Rs LCBzLT5pcnEsIDAsIHMtPmNwdSk7CiAJLy8gZmFsbCB0aHJvdWdoCiAgICAgY2FzZSAyOgogCS8v IHNldCBsaW1pdCB3aXRob3V0IHJlc2V0dGluZyBjb3VudGVyCi0JaWYgKCF2YWwpCi0JICAgIHMt PmxpbWl0ID0gMHg3ZmZmZmZmZjsKLQllbHNlCi0JICAgIHMtPmxpbWl0ID0gdmFsICYgMHg3ZmZm ZmZmZjsKLQlzbGF2aW9fdGltZXJfaXJxKHMpOworICAgICAgICBzLT5saW1pdCA9IHZhbCAmIDB4 N2ZmZmZlMDBVTEw7CisgICAgICAgIGlmICghcy0+bGltaXQpCisgICAgICAgICAgICBzLT5saW1p dCA9IDB4N2ZmZmZlMDBVTEw7CisgICAgICAgIHB0aW1lcl9zZXRfbGltaXQocy0+dGltZXIsIHMt PmxpbWl0ID4+IDksIHJlbG9hZCk7CiAJYnJlYWs7CiAgICAgY2FzZSAzOgogCS8vIHN0YXJ0L3N0 b3AgdXNlciBjb3VudGVyCiAJaWYgKHMtPm1vZGUgPT0gMSkgewogCSAgICBpZiAodmFsICYgMSkg ewotCQlzLT5zdG9wX3RpbWUgPSBxZW11X2dldF9jbG9jayh2bV9jbG9jayk7CisgICAgICAgICAg ICAgICAgcHRpbWVyX3N0b3Aocy0+dGltZXIpOwogCQlzLT5zdG9wcGVkID0gMTsKIAkgICAgfQog CSAgICBlbHNlIHsKLQkJaWYgKHMtPnN0b3BwZWQpCi0JCSAgICBzLT50aWNrX29mZnNldCArPSBx ZW11X2dldF9jbG9jayh2bV9jbG9jaykgLSBzLT5zdG9wX3RpbWU7CisgICAgICAgICAgICAgICAg cHRpbWVyX3J1bihzLT50aW1lciwgMCk7CiAJCXMtPnN0b3BwZWQgPSAwOwogCSAgICB9CiAJfQpA QCAtMTkzLDYgKzE3MCwxMSBAQAogCS8vIGJpdCAwOiB1c2VyICgxKSBvciBzeXN0ZW0gKDApIGNv dW50ZXIgbW9kZQogCWlmIChzLT5tb2RlID09IDAgfHwgcy0+bW9kZSA9PSAxKQogCSAgICBzLT5t b2RlID0gdmFsICYgMTsKKyAgICAgICAgaWYgKHMtPm1vZGUgPT0gMSkgeworICAgICAgICAgICAg cGljX3NldF9pcnFfY3B1KHMtPmludGN0bCwgcy0+aXJxLCAwLCBzLT5jcHUpOworICAgICAgICAg ICAgcy0+bGltaXQgPSAtMVVMTDsKKyAgICAgICAgfQorICAgICAgICBwdGltZXJfc2V0X2xpbWl0 KHMtPnRpbWVyLCBzLT5saW1pdCA+PiA5LCAxKTsKIAlicmVhazsKICAgICBkZWZhdWx0OgogCWJy ZWFrOwpAQCAtMjE1LDM3ICsxOTcsMzIgQEAKIHsKICAgICBTTEFWSU9fVElNRVJTdGF0ZSAqcyA9 IG9wYXF1ZTsKIAotICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5saW1pdCk7CisgICAgcWVtdV9w dXRfYmU2NHMoZiwgJnMtPmxpbWl0KTsKICAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+Y291bnQp OwogICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5jb3VudGhpZ2gpOwotICAgIHFlbXVfcHV0X2Jl NjRzKGYsICZzLT5jb3VudF9sb2FkX3RpbWUpOwotICAgIHFlbXVfcHV0X2JlNjRzKGYsICZzLT5l eHBpcmVfdGltZSk7Ci0gICAgcWVtdV9wdXRfYmU2NHMoZiwgJnMtPnN0b3BfdGltZSk7Ci0gICAg cWVtdV9wdXRfYmU2NHMoZiwgJnMtPnRpY2tfb2Zmc2V0KTsKICAgICBxZW11X3B1dF9iZTMycyhm LCAmcy0+aXJxKTsKICAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+cmVhY2hlZCk7CiAgICAgcWVt dV9wdXRfYmUzMnMoZiwgJnMtPnN0b3BwZWQpOwogICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5t b2RlKTsKKyAgICBxZW11X3B1dF9wdGltZXIoZiwgcy0+dGltZXIpOwogfQogCiBzdGF0aWMgaW50 IHNsYXZpb190aW1lcl9sb2FkKFFFTVVGaWxlICpmLCB2b2lkICpvcGFxdWUsIGludCB2ZXJzaW9u X2lkKQogewogICAgIFNMQVZJT19USU1FUlN0YXRlICpzID0gb3BhcXVlOwogICAgIAotICAgIGlm ICh2ZXJzaW9uX2lkICE9IDEpCisgICAgaWYgKHZlcnNpb25faWQgIT0gMikKICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CiAKLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+bGltaXQpOworICAgIHFl bXVfZ2V0X2JlNjRzKGYsICZzLT5saW1pdCk7CiAgICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPmNv dW50KTsKICAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y291bnRoaWdoKTsKLSAgICBxZW11X2dl dF9iZTY0cyhmLCAmcy0+Y291bnRfbG9hZF90aW1lKTsKLSAgICBxZW11X2dldF9iZTY0cyhmLCAm cy0+ZXhwaXJlX3RpbWUpOwotICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZzLT5zdG9wX3RpbWUpOwot ICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZzLT50aWNrX29mZnNldCk7CiAgICAgcWVtdV9nZXRfYmUz MnMoZiwgJnMtPmlycSk7CiAgICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPnJlYWNoZWQpOwogICAg IHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5zdG9wcGVkKTsKICAgICBxZW11X2dldF9iZTMycyhmLCAm cy0+bW9kZSk7CisgICAgcWVtdV9nZXRfcHRpbWVyKGYsIHMtPnRpbWVyKTsKKwogICAgIHJldHVy biAwOwogfQogCkBAIC0yNTMsMTMgKzIzMCwxMiBAQAogewogICAgIFNMQVZJT19USU1FUlN0YXRl ICpzID0gb3BhcXVlOwogCi0gICAgcy0+bGltaXQgPSAwOworICAgIHMtPmxpbWl0ID0gMHg3ZmZm ZmUwMFVMTDsKICAgICBzLT5jb3VudCA9IDA7Ci0gICAgcy0+Y291bnRfbG9hZF90aW1lID0gcWVt dV9nZXRfY2xvY2sodm1fY2xvY2spOzsKLSAgICBzLT5zdG9wX3RpbWUgPSBzLT5jb3VudF9sb2Fk X3RpbWU7Ci0gICAgcy0+dGlja19vZmZzZXQgPSAwOwogICAgIHMtPnJlYWNoZWQgPSAwOwogICAg IHMtPm1vZGUgJj0gMjsKKyAgICBwdGltZXJfc2V0X2xpbWl0KHMtPnRpbWVyLCBzLT5saW1pdCA+ PiA5LCAxKTsKKyAgICBwdGltZXJfcnVuKHMtPnRpbWVyLCAwKTsKICAgICBzLT5zdG9wcGVkID0g MTsKICAgICBzbGF2aW9fdGltZXJfaXJxKHMpOwogfQpAQCAtMjY5LDYgKzI0NSw3IEBACiB7CiAg ICAgaW50IHNsYXZpb190aW1lcl9pb19tZW1vcnk7CiAgICAgU0xBVklPX1RJTUVSU3RhdGUgKnM7 CisgICAgUUVNVUJIICpiaDsKIAogICAgIHMgPSBxZW11X21hbGxvY3ooc2l6ZW9mKFNMQVZJT19U SU1FUlN0YXRlKSk7CiAgICAgaWYgKCFzKQpAQCAtMjc2LDEzICsyNTMsMTUgQEAKICAgICBzLT5p cnEgPSBpcnE7CiAgICAgcy0+bW9kZSA9IG1vZGU7CiAgICAgcy0+Y3B1ID0gY3B1OwotICAgIHMt PmlycV90aW1lciA9IHFlbXVfbmV3X3RpbWVyKHZtX2Nsb2NrLCBzbGF2aW9fdGltZXJfaXJxLCBz KTsKKyAgICBiaCA9IHFlbXVfYmhfbmV3KHNsYXZpb190aW1lcl9pcnEsIHMpOworICAgIHMtPnRp bWVyID0gcHRpbWVyX2luaXQoYmgpOworICAgIHB0aW1lcl9zZXRfcGVyaW9kKHMtPnRpbWVyLCA1 MDBVTEwpOwogICAgIHMtPmludGN0bCA9IGludGN0bDsKIAogICAgIHNsYXZpb190aW1lcl9pb19t ZW1vcnkgPSBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIHNsYXZpb190aW1lcl9tZW1fcmVhZCwK IAkJCQkJCSAgICBzbGF2aW9fdGltZXJfbWVtX3dyaXRlLCBzKTsKICAgICBjcHVfcmVnaXN0ZXJf cGh5c2ljYWxfbWVtb3J5KGFkZHIsIFRJTUVSX01BWEFERFIsIHNsYXZpb190aW1lcl9pb19tZW1v cnkpOwotICAgIHJlZ2lzdGVyX3NhdmV2bSgic2xhdmlvX3RpbWVyIiwgYWRkciwgMSwgc2xhdmlv X3RpbWVyX3NhdmUsIHNsYXZpb190aW1lcl9sb2FkLCBzKTsKKyAgICByZWdpc3Rlcl9zYXZldm0o InNsYXZpb190aW1lciIsIGFkZHIsIDIsIHNsYXZpb190aW1lcl9zYXZlLCBzbGF2aW9fdGltZXJf bG9hZCwgcyk7CiAgICAgcWVtdV9yZWdpc3Rlcl9yZXNldChzbGF2aW9fdGltZXJfcmVzZXQsIHMp OwogICAgIHNsYXZpb190aW1lcl9yZXNldChzKTsKIH0KSW5kZXg6IHFlbXUvaHcvcHRpbWVyLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3B0aW1lci5jCTIwMDctMDUtMjQgMTc6MTI6NTQu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3B0aW1lci5jCTIwMDctMDUtMjQgMTc6MTg6NTUu MDAwMDAwMDAwICswMDAwCkBAIC0xMSw4ICsxMSw4IEBACiBzdHJ1Y3QgcHRpbWVyX3N0YXRlCiB7 CiAgICAgaW50IGVuYWJsZWQ7IC8qIDAgPSBkaXNhYmxlZCwgMSA9IHBlcmlvZGljLCAyID0gb25l c2hvdC4gICovCi0gICAgdWludDMyX3QgbGltaXQ7Ci0gICAgdWludDMyX3QgZGVsdGE7CisgICAg dWludDY0X3QgbGltaXQ7CisgICAgdWludDY0X3QgZGVsdGE7CiAgICAgdWludDMyX3QgcGVyaW9k X2ZyYWM7CiAgICAgaW50NjRfdCBwZXJpb2Q7CiAgICAgaW50NjRfdCBsYXN0X2V2ZW50OwpAQCAt NjEsMTAgKzYxLDEwIEBACiAgICAgfQogfQogCi11aW50MzJfdCBwdGltZXJfZ2V0X2NvdW50KHB0 aW1lcl9zdGF0ZSAqcykKK3VpbnQ2NF90IHB0aW1lcl9nZXRfY291bnQocHRpbWVyX3N0YXRlICpz KQogewogICAgIGludDY0X3Qgbm93OwotICAgIHVpbnQzMl90IGNvdW50ZXI7CisgICAgdWludDY0 X3QgY291bnRlcjsKIAogICAgIGlmIChzLT5lbmFibGVkKSB7CiAgICAgICAgIG5vdyA9IHFlbXVf Z2V0X2Nsb2NrKHZtX2Nsb2NrKTsKQEAgLTc1LDggKzc1LDggQEAKICAgICAgICAgICAgICAgIHRy aWdnZXJlZC4gICovCiAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgIGludDY0X3QgcmVtOwotICAgICAgICAgICAgaW50NjRfdCBkaXY7CisgICAg ICAgICAgICB1aW50NjRfdCByZW07CisgICAgICAgICAgICB1aW50NjRfdCBkaXY7CiAKICAgICAg ICAgICAgIHJlbSA9IHMtPm5leHRfZXZlbnQgLSBub3c7CiAgICAgICAgICAgICBkaXYgPSBzLT5w ZXJpb2Q7CkBAIC04OCw3ICs4OCw3IEBACiAgICAgcmV0dXJuIGNvdW50ZXI7CiB9CiAKLXZvaWQg cHRpbWVyX3NldF9jb3VudChwdGltZXJfc3RhdGUgKnMsIHVpbnQzMl90IGNvdW50KQordm9pZCBw dGltZXJfc2V0X2NvdW50KHB0aW1lcl9zdGF0ZSAqcywgdWludDY0X3QgY291bnQpCiB7CiAgICAg cy0+ZGVsdGEgPSBjb3VudDsKICAgICBpZiAocy0+ZW5hYmxlZCkgewpAQCAtMTA4LDcgKzEwOCw3 IEBACiAgICAgcHRpbWVyX3JlbG9hZChzKTsKIH0KIAotLyogUGF1c2UgYSB0aW1lci4gIE5vdGUg dGhhdCB0aGlzIG1heSBjYXVzZSBpdCB0byAibG9vc2UiIHRpbWUsIGV2ZW4gaWYgaXQKKy8qIFBh dXNlIGEgdGltZXIuICBOb3RlIHRoYXQgdGhpcyBtYXkgY2F1c2UgaXQgdG8gImxvc2UiIHRpbWUs IGV2ZW4gaWYgaXQKICAgIGlzIGltbWVkaWF0ZWx5IHJlc3RhcnRlZC4gICovCiB2b2lkIHB0aW1l cl9zdG9wKHB0aW1lcl9zdGF0ZSAqcykKIHsKQEAgLTEyMywzMyArMTIzLDYwIEBACiAvKiBTZXQg Y291bnRlciBpbmNyZW1lbnQgaW50ZXJ2YWwgaW4gbmFub3NlY29uZHMuICAqLwogdm9pZCBwdGlt ZXJfc2V0X3BlcmlvZChwdGltZXJfc3RhdGUgKnMsIGludDY0X3QgcGVyaW9kKQogewotICAgIGlm IChzLT5lbmFibGVkKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRklYTUU6IHB0aW1lcl9z ZXRfcGVyaW9kIHdpdGggcnVubmluZyB0aW1lciIpOwotICAgIH0KICAgICBzLT5wZXJpb2QgPSBw ZXJpb2Q7CiAgICAgcy0+cGVyaW9kX2ZyYWMgPSAwOworICAgIGlmIChzLT5lbmFibGVkKSB7Cisg ICAgICAgIHMtPm5leHRfZXZlbnQgPSBxZW11X2dldF9jbG9jayh2bV9jbG9jayk7CisgICAgICAg IHB0aW1lcl9yZWxvYWQocyk7CisgICAgfQogfQogCiAvKiBTZXQgY291bnRlciBmcmVxdWVuY3kg aW4gSHouICAqLwogdm9pZCBwdGltZXJfc2V0X2ZyZXEocHRpbWVyX3N0YXRlICpzLCB1aW50MzJf dCBmcmVxKQogewotICAgIGlmIChzLT5lbmFibGVkKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJy LCAiRklYTUU6IHB0aW1lcl9zZXRfZnJlcSB3aXRoIHJ1bm5pbmcgdGltZXIiKTsKLSAgICB9CiAg ICAgcy0+cGVyaW9kID0gMTAwMDAwMDAwMGxsIC8gZnJlcTsKICAgICBzLT5wZXJpb2RfZnJhYyA9 ICgxMDAwMDAwMDAwbGwgPDwgMzIpIC8gZnJlcTsKKyAgICBpZiAocy0+ZW5hYmxlZCkgeworICAg ICAgICBzLT5uZXh0X2V2ZW50ID0gcWVtdV9nZXRfY2xvY2sodm1fY2xvY2spOworICAgICAgICBw dGltZXJfcmVsb2FkKHMpOworICAgIH0KIH0KIAogLyogU2V0IHRoZSBpbml0aWFsIGNvdW50ZG93 biB2YWx1ZS4gIElmIHJlbG9hZCBpcyBub256ZXJvIHRoZW4gYWxzbyBzZXQKICAgIGNvdW50ID0g bGltaXQuICAqLwotdm9pZCBwdGltZXJfc2V0X2xpbWl0KHB0aW1lcl9zdGF0ZSAqcywgdWludDMy X3QgbGltaXQsIGludCByZWxvYWQpCit2b2lkIHB0aW1lcl9zZXRfbGltaXQocHRpbWVyX3N0YXRl ICpzLCB1aW50NjRfdCBsaW1pdCwgaW50IHJlbG9hZCkKIHsKLSAgICBpZiAocy0+ZW5hYmxlZCkg ewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBwdGltZXJfc2V0X2xpbWl0IHdpdGgg cnVubmluZyB0aW1lciIpOwotICAgIH0KICAgICBzLT5saW1pdCA9IGxpbWl0OwogICAgIGlmIChy ZWxvYWQpCiAgICAgICAgIHMtPmRlbHRhID0gbGltaXQ7CisgICAgaWYgKHMtPmVuYWJsZWQpIHsK KyAgICAgICAgcy0+bmV4dF9ldmVudCA9IHFlbXVfZ2V0X2Nsb2NrKHZtX2Nsb2NrKTsKKyAgICAg ICAgcHRpbWVyX3JlbG9hZChzKTsKKyAgICB9Cit9CisKK3ZvaWQgcWVtdV9wdXRfcHRpbWVyKFFF TVVGaWxlICpmLCBwdGltZXJfc3RhdGUgKnMpCit7CisgICAgcWVtdV9wdXRfYnl0ZShmLCBzLT5l bmFibGVkKTsKKyAgICBxZW11X3B1dF9iZTY0cyhmLCAmcy0+bGltaXQpOworICAgIHFlbXVfcHV0 X2JlNjRzKGYsICZzLT5kZWx0YSk7CisgICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPnBlcmlvZF9m cmFjKTsKKyAgICBxZW11X3B1dF9iZTY0cyhmLCAmcy0+cGVyaW9kKTsKKyAgICBxZW11X3B1dF9i ZTY0cyhmLCAmcy0+bGFzdF9ldmVudCk7CisgICAgcWVtdV9wdXRfYmU2NHMoZiwgJnMtPm5leHRf ZXZlbnQpOworICAgIHFlbXVfcHV0X3RpbWVyKGYsIHMtPnRpbWVyKTsKK30KKwordm9pZCBxZW11 X2dldF9wdGltZXIoUUVNVUZpbGUgKmYsIHB0aW1lcl9zdGF0ZSAqcykKK3sKKyAgICBzLT5lbmFi bGVkID0gcWVtdV9nZXRfYnl0ZShmKTsKKyAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+bGltaXQp OworICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZzLT5kZWx0YSk7CisgICAgcWVtdV9nZXRfYmUzMnMo ZiwgJnMtPnBlcmlvZF9mcmFjKTsKKyAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+cGVyaW9kKTsK KyAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+bGFzdF9ldmVudCk7CisgICAgcWVtdV9nZXRfYmU2 NHMoZiwgJnMtPm5leHRfZXZlbnQpOworICAgIHFlbXVfZ2V0X3RpbWVyKGYsIHMtPnRpbWVyKTsK IH0KIAogcHRpbWVyX3N0YXRlICpwdGltZXJfaW5pdChRRU1VQkggKmJoKQpJbmRleDogcWVtdS92 bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy92bC5oCTIwMDctMDUtMjQgMTc6MTI6NTQuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L3ZsLmgJMjAwNy0wNS0yNCAxNzoxODo1NS4wMDAwMDAwMDAg KzAwMDAKQEAgLTE1ODksMTEgKzE1ODksMTMgQEAKIHB0aW1lcl9zdGF0ZSAqcHRpbWVyX2luaXQo UUVNVUJIICpiaCk7CiB2b2lkIHB0aW1lcl9zZXRfcGVyaW9kKHB0aW1lcl9zdGF0ZSAqcywgaW50 NjRfdCBwZXJpb2QpOwogdm9pZCBwdGltZXJfc2V0X2ZyZXEocHRpbWVyX3N0YXRlICpzLCB1aW50 MzJfdCBmcmVxKTsKLXZvaWQgcHRpbWVyX3NldF9saW1pdChwdGltZXJfc3RhdGUgKnMsIHVpbnQz Ml90IGxpbWl0LCBpbnQgcmVsb2FkKTsKLXVpbnQzMl90IHB0aW1lcl9nZXRfY291bnQocHRpbWVy X3N0YXRlICpzKTsKLXZvaWQgcHRpbWVyX3NldF9jb3VudChwdGltZXJfc3RhdGUgKnMsIHVpbnQz Ml90IGNvdW50KTsKK3ZvaWQgcHRpbWVyX3NldF9saW1pdChwdGltZXJfc3RhdGUgKnMsIHVpbnQ2 NF90IGxpbWl0LCBpbnQgcmVsb2FkKTsKK3VpbnQ2NF90IHB0aW1lcl9nZXRfY291bnQocHRpbWVy X3N0YXRlICpzKTsKK3ZvaWQgcHRpbWVyX3NldF9jb3VudChwdGltZXJfc3RhdGUgKnMsIHVpbnQ2 NF90IGNvdW50KTsKIHZvaWQgcHRpbWVyX3J1bihwdGltZXJfc3RhdGUgKnMsIGludCBvbmVzaG90 KTsKIHZvaWQgcHRpbWVyX3N0b3AocHRpbWVyX3N0YXRlICpzKTsKK3ZvaWQgcWVtdV9wdXRfcHRp bWVyKFFFTVVGaWxlICpmLCBwdGltZXJfc3RhdGUgKnMpOwordm9pZCBxZW11X2dldF9wdGltZXIo UUVNVUZpbGUgKmYsIHB0aW1lcl9zdGF0ZSAqcyk7CiAKICNpbmNsdWRlICJody9weGEuaCIKIApJ bmRleDogcWVtdS9NYWtlZmlsZS50YXJnZXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL01ha2Vm aWxlLnRhcmdldAkyMDA3LTA1LTI0IDE3OjEyOjU0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9N YWtlZmlsZS50YXJnZXQJMjAwNy0wNS0yNCAxNzoxODo1NS4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ0 OSw3ICs0NDksNyBAQAogZWxzZQogVkxfT0JKUys9IHN1bjRtLm8gdGN4Lm8gcGNuZXQubyBpb21t dS5vIG00OHQ1OS5vIHNsYXZpb19pbnRjdGwubwogVkxfT0JKUys9IHNsYXZpb190aW1lci5vIHNs YXZpb19zZXJpYWwubyBzbGF2aW9fbWlzYy5vIGZkYy5vIGVzcC5vIHNwYXJjMzJfZG1hLm8KLVZM X09CSlMrPSBjczQyMzEubworVkxfT0JKUys9IGNzNDIzMS5vIHB0aW1lci5vCiBlbmRpZgogZW5k aWYKIGlmZXEgKCQoVEFSR0VUX0JBU0VfQVJDSCksIGFybSkK ------=_Part_65237_18388726.1180034303796--