From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dulloor Subject: [PATCH 05/11] [XEN] Basic cpumap utils Date: Sun, 4 Apr 2010 15:30:25 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e6d7e6818b97f704836e3edc Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --0016e6d7e6818b97f704836e3edc Content-Type: text/plain; charset=ISO-8859-1 This patch implements very basic helper functions (all of ~130 lines) for xenctl_cpumap. The patch also uses these macros in xc_get/set_vcpuaffinity as an example. There are other places that use xc_get/set_vcpuaffinity too, which I will attend to later. -dulloor Signed-off-by: Dulloor Rao --0016e6d7e6818b97f704836e3edc Content-Type: text/x-patch; charset=US-ASCII; name="xen-05-basic-cpumap-utils.patch" Content-Disposition: attachment; filename="xen-05-basic-cpumap-utils.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7m8rhh50 ZGlmZiAtciBkNmI3YWJmMGQyZDUgLXIgNmViYTYyMDkyY2I0IHRvb2xzL2xpYnhjL3hjX2NwdW1h cC5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv b2xzL2xpYnhjL3hjX2NwdW1hcC5jCVRodSBBcHIgMDEgMTM6MDY6MTQgMjAxMCAtMDQwMApAQCAt MCwwICsxLDg4IEBACisjaW5jbHVkZSAieGNfY3B1bWFwLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4K KworLyogQXV0aG9yIDogRHVsbG9vciAoZHVsbG9vckBnYXRlY2guZWR1KSAqLworCit1aW50MzJf dCB4Y19jcHVtYXBfbmV4dChpbnQgY3B1LCBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqc3JjcCkKK3sK KyAgICB1aW50OF90ICpwLCBwb3M7CisgICAgdWludDhfdCAqYWRkciA9IHhjX2NwdW1hcF9iaXRz KHNyY3ApOworICAgIHVpbnQzMl90IHNpemUgPSB4Y19jcHVtYXBfbGVuKHNyY3ApOworICAgIHVp bnQzMl90IG9mZnNldCA9IGNwdSsxOyAvKiBGaW5kIHRoZSBuZXh0IHNldCBjcHUgKi8KKworICAg IGlmIChvZmZzZXQgPj0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIHNpemU7CisKKyAgICBwID0gYWRk ciArIFhDX0JJVE1BUF9CWVRFKG9mZnNldCk7CisgICAgcG9zID0gWENfQklUTUFQX0JZVEVfT0ZG U0VUKG9mZnNldCk7CisKKyAgICBkbyB7CisgICAgICAgIGZvciAoOyAocG9zIDwgWENfQklUU19Q RVJfQllURSkgJiYgISgoKnApJigxPDxwb3MpKTsgcG9zKyspOworICAgICAgICBpZiAocG9zIDwg WENfQklUU19QRVJfQllURSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBwb3MgPSAwOyBw Kys7CisgICAgfSB3aGlsZSAocCA8IChhZGRyK3NpemUpKTsKKworICAgIHJldHVybiAoKChwLWFk ZHIpKlhDX0JJVFNfUEVSX0JZVEUpICsgcG9zKTsKK30KKwordm9pZCBfX3hjX2NwdW1hcF9vcihz dHJ1Y3QgeGVuY3RsX2NwdW1hcCAqZHN0cCwKKyAgICAgICAgc3RydWN0IHhlbmN0bF9jcHVtYXAg KnNyYzFwLCBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqc3JjMnApCit7CisgICAgdWludDhfdCAqZHAg PSB4Y19jcHVtYXBfYml0cyhkc3RwKTsKKyAgICB1aW50OF90ICpzMXAgPSB4Y19jcHVtYXBfYml0 cyhzcmMxcCk7CisgICAgdWludDhfdCAqczJwID0geGNfY3B1bWFwX2JpdHMoc3JjMnApOworICAg IGludCBuciA9IFhDX0JJVFNfVE9fQllURVMoeGNfY3B1bWFwX2xlbihkc3RwKSk7CisgICAgaW50 IGs7CisgICAgZm9yIChrPTA7IGs8bnI7IGsrKykKKyAgICAgICAgZHBba10gPSBzMXBba10gfCBz MnBba107Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBod2VpZ2h0OCh1aW50OF90IHcpCit7 CisgICAgdWludDhfdCByZXMgPSAodyAmIDB4NTUpICsgKCh3ID4+IDEpICYgMHg1NSk7CisgICAg cmVzID0gKHJlcyAmIDB4MzMpICsgKChyZXMgPj4gMikgJiAweDMzKTsKKyAgICByZXR1cm4gKHJl cyAmIDB4MEYpICsgKChyZXMgPj4gNCkgJiAweDBGKTsKK30KKworaW50IF9feGNfY3B1bWFwX3dl aWdodChzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqc3JjcCkKK3sKKyAgICBjb25zdCB1aW50OF90ICpz cCA9IHhjX2NwdW1hcF9iaXRzKHNyY3ApOworICAgIGludCBrLCB3ID0gMCwgbGltID0gWENfQklU U19UT19CWVRFUyh4Y19jcHVtYXBfbGVuKHNyY3ApKTsKKyAgICBmb3IgKGs9MDsgayA8bGltOyBr KyspCisgICAgICAgIHcgKz0gaHdlaWdodDgoc3Bba10pOworICAgIHJldHVybiB3OworfQorCisv KiB4ZW5jdGxfY3B1bWFwIHByaW50IGZ1bmN0aW9uICovCisjZGVmaW5lIENIVU5LU1oJOAorI2Rl ZmluZSByb3VuZHVwX3Bvd2VyMih2YWwsbW9kdWx1cykJKCgodmFsKSArIChtb2R1bHVzKSAtIDEp ICYgfigobW9kdWx1cykgLSAxKSkKKworaW50IF9feGNfY3B1bWFwX3NucHJpbnRmKGNoYXIgKmJ1 ZiwgdW5zaWduZWQgaW50IGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqY3B1bWFwKQoreworICAgIGNvbnN0 IHVpbnQ4X3QgKm1hc2twID0geGNfY3B1bWFwX2JpdHMoY3B1bWFwKTsKKyAgICBpbnQgbm1hc2ti aXRzID0geGNfY3B1bWFwX2xlbihjcHVtYXApOworCWludCBpLCB3b3JkLCBiaXQsIGxlbiA9IDA7 CisJdW5zaWduZWQgbG9uZyB2YWw7CisJY29uc3QgY2hhciAqc2VwID0gIiI7CisJaW50IGNodW5r c3o7CisJdWludDhfdCBjaHVua21hc2s7CisKKwljaHVua3N6ID0gbm1hc2tiaXRzICYgKENIVU5L U1ogLSAxKTsKKwlpZiAoY2h1bmtzeiA9PSAwKQorCQljaHVua3N6ID0gQ0hVTktTWjsKKworCWkg PSByb3VuZHVwX3Bvd2VyMihubWFza2JpdHMsIENIVU5LU1opIC0gQ0hVTktTWjsKKwlmb3IgKDsg aSA+PSAwOyBpIC09IENIVU5LU1opIHsKKwkJY2h1bmttYXNrID0gKCgxVUxMIDw8IGNodW5rc3op IC0gMSk7CisJCXdvcmQgPSBpIC8gWENfQklUU19QRVJfQllURTsKKwkJYml0ID0gaSAlIFhDX0JJ VFNfUEVSX0JZVEU7CisJCXZhbCA9IChtYXNrcFt3b3JkXSA+PiBiaXQpICYgY2h1bmttYXNrOwor CQlsZW4gKz0gc25wcmludGYoYnVmK2xlbiwgYnVmbGVuLWxlbiwgIiVzJTAqbHgiLCBzZXAsCisJ CQkoY2h1bmtzeiszKS80LCB2YWwpOworCQljaHVua3N6ID0gQ0hVTktTWjsKKwkJc2VwID0gIiwi OworCX0KKwlyZXR1cm4gbGVuOworfQpkaWZmIC1yIGQ2YjdhYmYwZDJkNSAtciA2ZWJhNjIwOTJj YjQgdG9vbHMvbGlieGMveGNfY3B1bWFwLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw OjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbGlieGMveGNfY3B1bWFwLmgJVGh1IEFwciAwMSAx MzowNjoxNCAyMDEwIC0wNDAwCkBAIC0wLDAgKzEsMTQ0IEBACisjaWZuZGVmIF9fWEVOQ1RMX0NQ VU1BUF9ICisjZGVmaW5lIF9fWEVOQ1RMX0NQVU1BUF9ICisKKyNpbmNsdWRlICJ4Y19wcml2YXRl LmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNkZWZpbmUg WENfQklUU19QRVJfQllURSA4CisjZGVmaW5lIFhDX0JJVFNfVE9fQllURVMoYml0cykgXAorICAg ICgoKGJpdHMpK1hDX0JJVFNfUEVSX0JZVEUtMSkvWENfQklUU19QRVJfQllURSkKKyNkZWZpbmUg WENfQklUTUFQX0JJVChucikgICAoMSA8PCAobnIpKQorI2RlZmluZSBYQ19CSVRNQVBfQklUX01B U0sobnIpICAoMSA8PCAoKG5yKSAlIFhDX0JJVFNfUEVSX0JZVEUpKQorI2RlZmluZSBYQ19CSVRN QVBfQllURShucikgICgobnIpIC8gWENfQklUU19QRVJfQllURSkKKyNkZWZpbmUgWENfQklUTUFQ X0JZVEVfT0ZGU0VUKG5yKSAgKChucikgJSBYQ19CSVRTX1BFUl9CWVRFKQorI2RlZmluZSBYQ19C SVRNQVBfQllURV9NQVNLICgweEZGKQorI2RlZmluZSBYQ19CSVRNQVBfTEFTVF9CWVRFX01BU0so bmJpdHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoKChuYml0 cykgJSBYQ19CSVRTX1BFUl9CWVRFKSA/ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgKCgxPDwoKG5iaXRzKSAlIFhDX0JJVFNfUEVSX0JZVEUpKS0xKSA6 ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ19C SVRNQVBfQllURV9NQVNLKQorCisjZGVmaW5lIHhjX2NwdW1hcF9iaXRzKG1hc2twKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICh7ICB1aW50OF90ICpiaXRtYXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICAgICAgICAgICAgICBnZXRfeGVuX2d1ZXN0X2hhbmRsZShiaXRtYXAsIChtYXNr cCktPmJpdG1hcCk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXA7IH0pCisjZGVm aW5lIHhjX2NwdW1hcF9sZW4obWFza3ApICgobWFza3ApLT5ucl9jcHVzKQorCisvKiBGb3IgaXRl cmF0aW5nIG92ZXIgdGhlIGNwdXMgc2V0IGluIHRoZSBjcHVtYXAgKi8KKyNkZWZpbmUgeGNfZm9y X2VhY2hfY3B1KGNwdSwgbWFzaykJCQkJXAorICAgICAgICAgICAgX194Y19mb3JfZWFjaF9jcHUo Y3B1LCAmKG1hc2spKQorI2RlZmluZSBfX3hjX2Zvcl9lYWNoX2NwdShjcHUsIG1hc2spICAgICAg ICAgICAgXAorCWZvciAoKGNwdSkgPSAtMTsJCQkJICAgICAgICAgICAgXAorCQkoY3B1KSA9IHhj X2NwdW1hcF9uZXh0KChjcHUpLCAobWFzaykpLAlcCisJCShjcHUpIDwgeGNfY3B1bWFwX2xlbiht YXNrKTspCitleHRlcm4gdWludDMyX3QgeGNfY3B1bWFwX25leHQoaW50IG4sIHN0cnVjdCB4ZW5j dGxfY3B1bWFwICpzcmNwKTsKKworI2RlZmluZSB4Y19jcHVtYXBfc2V0X2NwdShjcHUsIGRzdCkg X194Y19jcHVtYXBfc2V0X2NwdShjcHUsICYoZHN0KSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3hj X2NwdW1hcF9zZXRfY3B1KGludCBjcHUsIHN0cnVjdCB4ZW5jdGxfY3B1bWFwICpkc3RwKQorewor ICAgIHVpbnQ4X3QgbWFzayA9IFhDX0JJVE1BUF9CSVRfTUFTSyhjcHUpOworICAgIHVpbnQ4X3Qg KnAgPSAoKHVpbnQ4X3QgKil4Y19jcHVtYXBfYml0cyhkc3RwKSkgKyBYQ19CSVRNQVBfQllURShj cHUpOworICAgICpwIHw9IG1hc2s7Cit9CisKKyNkZWZpbmUgeGNfY3B1bWFwX2NsZWFyX2NwdShj cHUsIGRzdCkgX194Y19jcHVtYXBfY2xlYXJfY3B1KGNwdSwgJihkc3QpKQorc3RhdGljIGlubGlu ZSB2b2lkIF9feGNfY3B1bWFwX2NsZWFyX2NwdShpbnQgY3B1LCBzdHJ1Y3QgeGVuY3RsX2NwdW1h cCAqZHN0cCkKK3sKKyAgICB1aW50OF90IG1hc2sgPSBYQ19CSVRNQVBfQklUX01BU0soY3B1KTsK KyAgICB1aW50OF90ICpwID0gKCh1aW50OF90ICopeGNfY3B1bWFwX2JpdHMoZHN0cCkpICsgWENf QklUTUFQX0JZVEUoY3B1KTsKKyAgICAqcCAmPSB+bWFzazsKK30KKworI2RlZmluZSB4Y19jcHVt YXBfdGVzdF9jcHUoY3B1LCBkc3QpIF9feGNfY3B1bWFwX3Rlc3RfY3B1KGNwdSwgJihkc3QpKQor c3RhdGljIGlubGluZSBpbnQgX194Y19jcHVtYXBfdGVzdF9jcHUoaW50IGNwdSwgc3RydWN0IHhl bmN0bF9jcHVtYXAgKmRzdHApCit7CisgICAgdWludDhfdCBtYXNrID0gWENfQklUTUFQX0JJVF9N QVNLKGNwdSk7CisgICAgdWludDhfdCAqcCA9ICgodWludDhfdCAqKXhjX2NwdW1hcF9iaXRzKGRz dHApKSArIFhDX0JJVE1BUF9CWVRFKGNwdSk7CisgICAgcmV0dXJuICpwICYgbWFzazsKK30KKwor I2RlZmluZSB4Y19jcHVtYXBfc2V0YWxsKGRzdCkgX194Y19jcHVtYXBfc2V0YWxsKCYoZHN0KSkK K3N0YXRpYyBpbmxpbmUgdm9pZCBfX3hjX2NwdW1hcF9zZXRhbGwoc3RydWN0IHhlbmN0bF9jcHVt YXAgKmRzdHApCit7CisgICAgdWludDhfdCAqZHAgPSB4Y19jcHVtYXBfYml0cyhkc3RwKTsKKyAg ICBpbnQgbmJpdHMgPSB4Y19jcHVtYXBfbGVuKGRzdHApOworICAgIHNpemVfdCBuYnl0ZXMgPSBY Q19CSVRTX1RPX0JZVEVTKG5iaXRzKTsKKyAgICBpZiAobmJ5dGVzID4gMSkKKyAgICAgICAgbWVt c2V0KGRwLCAweGZmLCBuYnl0ZXMpOworICAgIGRwW25ieXRlcy0xXSA9IFhDX0JJVE1BUF9MQVNU X0JZVEVfTUFTSyhuYml0cyk7Cit9CisKKyNkZWZpbmUgeGNfY3B1bWFwX2NsZWFyYWxsKGRzdCkg X194Y19jcHVtYXBfY2xlYXJhbGwoJihkc3QpKQorc3RhdGljIGlubGluZSB2b2lkIF9feGNfY3B1 bWFwX2NsZWFyYWxsKHN0cnVjdCB4ZW5jdGxfY3B1bWFwICpkc3RwKQoreworICAgIHNpemVfdCBu Ynl0ZXMgPSBYQ19CSVRTX1RPX0JZVEVTKHhjX2NwdW1hcF9sZW4oZHN0cCkpOworICAgIGlmIChu Ynl0ZXMgPiAxKQorICAgICAgICBtZW1zZXQoeGNfY3B1bWFwX2JpdHMoZHN0cCksIDB4MDAsIG5i eXRlcyk7IAorfQorCisjZGVmaW5lIHhjX2NwdW1hcF9vcihkc3QsIHNyYzEsIHNyYzIpIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgIF9feGNfY3B1bWFwX29yKCYoZHN0KSwgJihzcmMxKSwgJihz cmMyKSkKK2V4dGVybiB2b2lkIF9feGNfY3B1bWFwX29yKHN0cnVjdCB4ZW5jdGxfY3B1bWFwICpk c3RwLAorICAgICAgICBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqc3JjMXAsIHN0cnVjdCB4ZW5jdGxf Y3B1bWFwICpzcmMycCk7CisKKyNkZWZpbmUgeGNfY3B1bWFwX3dlaWdodChzcmMpIF9feGNfY3B1 bWFwX3dlaWdodCgmKHNyYykpCitleHRlcm4gaW50IF9feGNfY3B1bWFwX3dlaWdodChzdHJ1Y3Qg eGVuY3RsX2NwdW1hcCAqc3JjcCk7CisKKyNkZWZpbmUgeGNfY3B1bWFwX3NucHJpbnRmKGJ1Ziwg bGVuLCBzcmMpIFwKKwkJCV9feGNfY3B1bWFwX3NucHJpbnRmKChidWYpLCAobGVuKSwgJihzcmMp KQorZXh0ZXJuIGludCBfX3hjX2NwdW1hcF9zbnByaW50ZihjaGFyICpidWYsIHVuc2lnbmVkIGlu dCBsZW4sCisJCQkJCSAgICAgICAgY29uc3Qgc3RydWN0IHhlbmN0bF9jcHVtYXAgKnNyY3ApOwor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbmxpbmUgaW50Cit4Y19jcHVtYXBfYWxsb2N6 X2JpdG1hcChpbnQgeGNfaGFuZGxlLCBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCAqbWFwKQoreworICAg IGludCBucl9jcHVzOworICAgIHVpbnQ4X3QgKmJpdG1hcDsKKyAgICB4Y19waHlzaW5mb190IHBp bmZvID0geyAwIH07CisKKyAgICBpZiAoeGNfcGh5c2luZm8oeGNfaGFuZGxlLCAmcGluZm8pKQor ICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICBucl9jcHVzID0gcGluZm8ubWF4X2NwdV9pZCsxOwor CisgICAgaWYgKCEoYml0bWFwID0gbWFsbG9jKFhDX0JJVFNfVE9fQllURVMobnJfY3B1cykpKSkK KyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgbWVtc2V0KGJpdG1hcCwgMHgwMCwgWENfQklUU19U T19CWVRFUyhucl9jcHVzKSk7CisKKyAgICBtYXAtPm5yX2NwdXMgPSBucl9jcHVzOworICAgIHNl dF94ZW5fZ3Vlc3RfaGFuZGxlKG1hcC0+Yml0bWFwLCBiaXRtYXApOworICAgIHJldHVybiAwOwor ZmFpbGVkOgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit4Y19jcHVt YXBfZnJlZV9iaXRtYXAoc3RydWN0IHhlbmN0bF9jcHVtYXAgKm1hcCkKK3sKKyAgICB1aW50OF90 ICpiaXRtYXA7CisgICAgZ2V0X3hlbl9ndWVzdF9oYW5kbGUoYml0bWFwLCBtYXAtPmJpdG1hcCk7 CisgICAgZnJlZShiaXRtYXApOworfQorCitzdGF0aWMgaW5saW5lIGludAoreGNfY3B1bWFwX2xv Y2tfcGFnZXMoc3RydWN0IHhlbmN0bF9jcHVtYXAgKm1hcCkKK3sKKyAgICB1aW50OF90ICpiaXRt YXA7CisgICAgdWludDMyX3QgbnJfYnl0ZXMgPSBYQ19CSVRTX1RPX0JZVEVTKG1hcC0+bnJfY3B1 cyk7CisgICAgZ2V0X3hlbl9ndWVzdF9oYW5kbGUoYml0bWFwLCBtYXAtPmJpdG1hcCk7CisgICAg aWYgKGxvY2tfcGFnZXMoYml0bWFwLCBucl9ieXRlcykpCisgICAgICAgIHJldHVybiAtMTsKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit4Y19jcHVtYXBfdW5sb2NrX3Bh Z2VzKHN0cnVjdCB4ZW5jdGxfY3B1bWFwICptYXApCit7CisgICAgdWludDhfdCAqYml0bWFwOwor ICAgIHVpbnQzMl90IG5yX2J5dGVzID0gWENfQklUU19UT19CWVRFUyhtYXAtPm5yX2NwdXMpOwor ICAgIGdldF94ZW5fZ3Vlc3RfaGFuZGxlKGJpdG1hcCwgbWFwLT5iaXRtYXApOworICAgIHVubG9j a19wYWdlcyhiaXRtYXAsIG5yX2J5dGVzKTsKK30KKworI2VuZGlmIC8qIF9fWEVOQ1RMX0NQVU1B UF9IICovCmRpZmYgLXIgZDZiN2FiZjBkMmQ1IC1yIDZlYmE2MjA5MmNiNCB0b29scy9saWJ4Yy94 ZW5jdHJsLmgKLS0tIGEvdG9vbHMvbGlieGMveGVuY3RybC5oCVdlZCBNYXIgMzEgMTk6Mzk6NTgg MjAxMCAtMDQwMAorKysgYi90b29scy9saWJ4Yy94ZW5jdHJsLmgJVGh1IEFwciAwMSAxMzowNjox NCAyMDEwIC0wNDAwCkBAIC0zMDksMTMgKzMwOSwxMSBAQAogaW50IHhjX3ZjcHVfc2V0YWZmaW5p dHkoaW50IHhjX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlk LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCi0gICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCAqY3B1bWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNwdXNp emUpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbmN0bF9jcHVtYXAgKmNwdW1h cCk7CiBpbnQgeGNfdmNwdV9nZXRhZmZpbml0eShpbnQgeGNfaGFuZGxlLAogICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg dmNwdSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpjcHVtYXAsCi0gICAgICAg ICAgICAgICAgICAgICAgICBpbnQgY3B1c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgeGVuY3RsX2NwdW1hcCAqY3B1bWFwKTsKIAogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IG9uZSBvciBtb3JlIGRvbWFpbnMuIEl0IGlzCmRp ZmYgLXIgZDZiN2FiZjBkMmQ1IC1yIDZlYmE2MjA5MmNiNCB0b29scy9weXRob24veGVuL2xvd2xl dmVsL3hjL3hjLmMKLS0tIGEvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jCVdlZCBN YXIgMzEgMTk6Mzk6NTggMjAxMCAtMDQwMAorKysgYi90b29scy9weXRob24veGVuL2xvd2xldmVs L3hjL3hjLmMJVGh1IEFwciAwMSAxMzowNjoxNCAyMDEwIC0wNDAwCkBAIC0xOCw2ICsxOCw3IEBA CiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAKICNpbmNsdWRlICJ4ZW5jdHJsLmgiCisjaW5jbHVk ZSAieGNfY3B1bWFwLmgiCiAjaW5jbHVkZSA8eGVuL2VsZm5vdGUuaD4KICNpbmNsdWRlIDx4ZW4v dG1lbS5oPgogI2luY2x1ZGUgInhjX2RvbS5oIgpAQCAtMjE1LDExICsyMTYsOCBAQAogewogICAg IHVpbnQzMl90IGRvbTsKICAgICBpbnQgdmNwdSA9IDAsIGk7Ci0gICAgdWludDY0X3QgICpjcHVt YXA7CisgICAgc3RydWN0IHhlbmN0bF9jcHVtYXAgY3B1bWFwOwogICAgIFB5T2JqZWN0ICpjcHVs aXN0ID0gTlVMTDsKLSAgICBpbnQgbnJfY3B1cywgc2l6ZTsKLSAgICB4Y19waHlzaW5mb190IGlu Zm8gPSB7MH07IAotICAgIHVpbnQ2NF90IGNwdW1hcF9zaXplID0gc2l6ZW9mKCpjcHVtYXApOyAK IAogICAgIHN0YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyAiZG9taWQiLCAidmNwdSIsICJjcHVt YXAiLCBOVUxMIH07CiAKQEAgLTIyNywzNiArMjI1LDI1IEBACiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkb20sICZ2Y3B1LCAmY3B1bGlzdCkgKQogICAgICAgICByZXR1 cm4gTlVMTDsKIAotICAgIGlmICggeGNfcGh5c2luZm8oc2VsZi0+eGNfaGFuZGxlLCAmaW5mbykg IT0gMCApCisgICAgaWYgKHhjX2NwdW1hcF9hbGxvY3pfYml0bWFwKHNlbGYtPnhjX2hhbmRsZSwg JmNwdW1hcCkpCiAgICAgICAgIHJldHVybiBweXhjX2Vycm9yX3RvX2V4Y2VwdGlvbigpOwogICAK LSAgICBucl9jcHVzID0gaW5mby5ucl9jcHVzOwotCi0gICAgc2l6ZSA9IChucl9jcHVzICsgY3B1 bWFwX3NpemUgKiA4IC0gMSkvIChjcHVtYXBfc2l6ZSAqIDgpOwotICAgIGNwdW1hcCA9IG1hbGxv YyhjcHVtYXBfc2l6ZSAqIHNpemUpOwotICAgIGlmKGNwdW1hcCA9PSBOVUxMKQotICAgICAgICBy ZXR1cm4gcHl4Y19lcnJvcl90b19leGNlcHRpb24oKTsKLQogICAgIGlmICggKGNwdWxpc3QgIT0g TlVMTCkgJiYgUHlMaXN0X0NoZWNrKGNwdWxpc3QpICkKICAgICB7Ci0gICAgICAgIGZvciAoIGkg PSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjcHVtYXBbaV0gPSAw VUxMOwotICAgICAgICB9CiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgUHlMaXN0X1NpemUoY3B1 bGlzdCk7IGkrKyApIAogICAgICAgICB7CiAgICAgICAgICAgICBsb25nIGNwdSA9IFB5SW50X0Fz TG9uZyhQeUxpc3RfR2V0SXRlbShjcHVsaXN0LCBpKSk7Ci0gICAgICAgICAgICBjcHVtYXBbY3B1 IC8gKGNwdW1hcF9zaXplICogOCldIHw9ICh1aW50NjRfdCkxIDw8IChjcHUgJSAoY3B1bWFwX3Np emUgKiA4KSk7CisgICAgICAgICAgICB4Y19jcHVtYXBfc2V0X2NwdShjcHUsIGNwdW1hcCk7CiAg ICAgICAgIH0KLSAgICB9Ci0gIAotICAgIGlmICggeGNfdmNwdV9zZXRhZmZpbml0eShzZWxmLT54 Y19oYW5kbGUsIGRvbSwgdmNwdSwgY3B1bWFwLCBzaXplICogY3B1bWFwX3NpemUpICE9IDAgKQor ICAgICB9CisgICAgCisgICAgaWYgKCB4Y192Y3B1X3NldGFmZmluaXR5KHNlbGYtPnhjX2hhbmRs ZSwgZG9tLCB2Y3B1LCAmY3B1bWFwKSAhPSAwICkKICAgICB7Ci0gICAgICAgIGZyZWUoY3B1bWFw KTsKKyAgICAgICAgeGNfY3B1bWFwX2ZyZWVfYml0bWFwKCZjcHVtYXApOwogICAgICAgICByZXR1 cm4gcHl4Y19lcnJvcl90b19leGNlcHRpb24oKTsKICAgICB9CiAgICAgUHlfSU5DUkVGKHplcm8p OwotICAgIGZyZWUoY3B1bWFwKTsgCisgICAgeGNfY3B1bWFwX2ZyZWVfYml0bWFwKCZjcHVtYXAp OwogICAgIHJldHVybiB6ZXJvOwogfQogCkBAIC0zNzUsMTAgKzM2Miw3IEBACiAgICAgdWludDMy X3QgZG9tLCB2Y3B1ID0gMDsKICAgICB4Y192Y3B1aW5mb190IGluZm87CiAgICAgaW50IHJjLCBp OwotICAgIHVpbnQ2NF90ICpjcHVtYXA7Ci0gICAgaW50IG5yX2NwdXMsIHNpemU7Ci0gICAgeGNf cGh5c2luZm9fdCBwaW5mbyA9IHsgMCB9OwotICAgIHVpbnQ2NF90IGNwdW1hcF9zaXplID0gc2l6 ZW9mKCpjcHVtYXApOworICAgIHN0cnVjdCB4ZW5jdGxfY3B1bWFwIGNwdW1hcDsKIAogICAgIHN0 YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyAiZG9taWQiLCAidmNwdSIsIE5VTEwgfTsKICAgICAK QEAgLTM4NiwyMyArMzcwLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZkb20sICZ2Y3B1KSApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCB4Y19w aHlzaW5mbyhzZWxmLT54Y19oYW5kbGUsICZwaW5mbykgIT0gMCApIAotICAgICAgICByZXR1cm4g cHl4Y19lcnJvcl90b19leGNlcHRpb24oKTsKLSAgICBucl9jcHVzID0gcGluZm8ubnJfY3B1czsK LQotICAgIHJjID0geGNfdmNwdV9nZXRpbmZvKHNlbGYtPnhjX2hhbmRsZSwgZG9tLCB2Y3B1LCAm aW5mbyk7Ci0gICAgaWYgKCByYyA8IDAgKQorICAgIGlmICggeGNfY3B1bWFwX2FsbG9jel9iaXRt YXAoc2VsZi0+eGNfaGFuZGxlLCAmY3B1bWFwKSApIAogICAgICAgICByZXR1cm4gcHl4Y19lcnJv cl90b19leGNlcHRpb24oKTsKIAotICAgIHNpemUgPSAobnJfY3B1cyArIGNwdW1hcF9zaXplICog OCAtIDEpLyAoY3B1bWFwX3NpemUgKiA4KTsgCi0gICAgaWYoKGNwdW1hcCA9IG1hbGxvYyhjcHVt YXBfc2l6ZSAqIHNpemUpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gcHl4Y19lcnJvcl90b19l eGNlcHRpb24oKTsgCi0gICAgbWVtc2V0KGNwdW1hcCwgMCwgY3B1bWFwX3NpemUgKiBzaXplKTsK KyAgICBpZiAoKHJjID0geGNfdmNwdV9nZXRpbmZvKHNlbGYtPnhjX2hhbmRsZSwgZG9tLCB2Y3B1 LCAmaW5mbykpIDwgMCkKKyAgICAgICAgcmV0dXJuIHB5eGNfZXJyb3JfdG9fZXhjZXB0aW9uKCk7 CiAKLSAgICByYyA9IHhjX3ZjcHVfZ2V0YWZmaW5pdHkoc2VsZi0+eGNfaGFuZGxlLCBkb20sIHZj cHUsIGNwdW1hcCwgY3B1bWFwX3NpemUgKiBzaXplKTsKLSAgICBpZiAoIHJjIDwgMCApCisgICAg aWYgKChyYyA9IHhjX3ZjcHVfZ2V0YWZmaW5pdHkoc2VsZi0+eGNfaGFuZGxlLCBkb20sIHZjcHUs ICZjcHVtYXApKSA8IDApCiAgICAgewotICAgICAgICBmcmVlKGNwdW1hcCk7CisgICAgICAgIHhj X2NwdW1hcF9mcmVlX2JpdG1hcCgmY3B1bWFwKTsKICAgICAgICAgcmV0dXJuIHB5eGNfZXJyb3Jf dG9fZXhjZXB0aW9uKCk7CiAgICAgfQogCkBAIC00MTMsMTggKzM4OSwxNSBAQAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImNwdV90aW1lIiwgaW5mby5jcHVfdGltZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJjcHUiLCAgICAgIGluZm8uY3B1KTsKICAgICBjcHVsaXN0 ID0gUHlMaXN0X05ldygwKTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2NwdXM7IGkrKyApCisg ICAgeGNfZm9yX2VhY2hfY3B1KGksIGNwdW1hcCkKICAgICB7Ci0gICAgICAgIGlmICgqKGNwdW1h cCArIGkgLyAoY3B1bWFwX3NpemUgKiA4KSkgJiAxICkgewotICAgICAgICAgICAgUHlPYmplY3Qg KnB5aW50ID0gUHlJbnRfRnJvbUxvbmcoaSk7Ci0gICAgICAgICAgICBQeUxpc3RfQXBwZW5kKGNw dWxpc3QsIHB5aW50KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihweWludCk7Ci0gICAgICAgIH0K LSAgICAgICAgY3B1bWFwW2kgLyAoY3B1bWFwX3NpemUgKiA4KV0gPj49IDE7CisgICAgICAgIFB5 T2JqZWN0ICpweWludCA9IFB5SW50X0Zyb21Mb25nKGkpOworICAgICAgICBQeUxpc3RfQXBwZW5k KGNwdWxpc3QsIHB5aW50KTsKKyAgICAgICAgUHlfREVDUkVGKHB5aW50KTsKICAgICB9CiAgICAg UHlEaWN0X1NldEl0ZW1TdHJpbmcoaW5mb19kaWN0LCAiY3B1bWFwIiwgY3B1bGlzdCk7CiAgICAg UHlfREVDUkVGKGNwdWxpc3QpOwotICAgIGZyZWUoY3B1bWFwKTsKKyAgICB4Y19jcHVtYXBfZnJl ZV9iaXRtYXAoJmNwdW1hcCk7CiAgICAgcmV0dXJuIGluZm9fZGljdDsKIH0KIAo= --0016e6d7e6818b97f704836e3edc Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --0016e6d7e6818b97f704836e3edc--