From mboxrd@z Thu Jan 1 00:00:00 1970 From: ANNIE LI Subject: Re: [PATCH 2/3] xen/granttable: Grant tables V2 implementation Date: Fri, 18 Nov 2011 18:13:57 +0800 Message-ID: <4EC62FE5.2080608@oracle.com> References: <4EC3B62F.6080702@oracle.com> <1321451372-13596-1-git-send-email-annie.li@oracle.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080805070607050504050807" Return-path: In-Reply-To: <1321451372-13596-1-git-send-email-annie.li@oracle.com> Sender: linux-kernel-owner@vger.kernel.org To: xen-devel@lists.xensource.com, linux-kernel@vger.kernel.org, konrad.wilk@oracle.com, jeremy@goop.org, paul.durrant@citrix.com, Ian.Campbell@citrix.com Cc: annie.li@oracle.com, kurt.hackel@oracle.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------080805070607050504050807 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Defining a function pointer structure gnttab_v2_ops, the changes correspond to those in [PATCH 1/3] xen/granttable: Introducing grant table V2 stucture. Thanks Annie --------------080805070607050504050807 Content-Type: text/plain; name="0003-xen-granttable-Grant-tables-V2-implementation.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0003-xen-granttable-Grant-tables-V2-implementation.patch" RnJvbSBmYTUwOWY0YTNhODBmZGI4YTYwNGVmZTZkNjhkOWRjOGNlMjU1MTFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbm5pZSBMaSA8YW5uaWUubGlAb3JhY2xlLmNvbT4K RGF0ZTogRnJpLCAxOCBOb3YgMjAxMSAxNjo1MzozNyArMDgwMApTdWJqZWN0OiBbUEFUQ0gg My80XSB4ZW4vZ3JhbnR0YWJsZTogR3JhbnQgdGFibGVzIFYyIGltcGxlbWVudGF0aW9uCgpS ZWNlaXZlci1zaWRlIGNvcHlpbmcgb2YgcGFja2V0cyBpcyBiYXNlZCBvbiB0aGlzIGltcGxl bWVudGF0aW9uLCBpdCBnaXZlcwpiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGJldHRlciBDUFUg YWNjb3VudGluZy4gSXQgdG90YWxseSBzdXBwb3J0cyB0aHJlZSB0eXBlczoKZnVsbC1wYWdl LCBzdWItcGFnZSBhbmQgdHJhbnNpdGl2ZSBncmFudHMuCgpIb3dldmVyIHRoaXMgcGF0Y2gg ZG9lcyBub3QgY292ZXIgc3ViLXBhZ2UgYW5kIHRyYW5zaXRpdmUgZ3JhbnRzLCBpdCBtYWlu bHkKZm9jdXMgb24gRnVsbC1wYWdlIHBhcnQgYW5kIGltcGxlbWVudHMgZ3JhbnQgdGFibGUg VjIgaW50ZXJmYWNlcyBjb3JyZXNwb25kaW5nCnRvIHdoYXQgYWxyZWFkeSBleGlzdHMgaW4g Z3JhbnQgdGFibGUgVjEsIHN1Y2ggYXM6IGdyYW50IHRhYmxlIFYyCmluaXRpYWxpemF0aW9u LCBtYXBwaW5nLCByZWxlYXNpbmcgYW5kIGV4cG9ydGVkIGludGVyZmFjZXMuCgpFYWNoIGd1 ZXN0IGNhbiBvbmx5IHN1cHBvcnRzIG9uZSB0eXBlIG9mIGdyYW50IHRhYmxlIHR5cGUsIGV2 ZXJ5IGVudHJ5IGluIGdyYW50CnRhYmxlIHNob3VsZCBiZSB0aGUgc2FtZSB2ZXJzaW9uLiBJ dCBpcyBuZWNlc3NhcnkgdG8gc2V0IFYxIG9yIFYyIHZlcnNpb24gYmVmb3JlCmluaXRpYWxp emluZyB0aGUgZ3JhbnQgdGFibGUuCgpHcmFudCB0YWJsZSBleHBvcnRlZCBpbnRlcmZhY2Vz IG9mIFYyIGFyZSBzYW1lIHdpdGggdGhvc2Ugb2YgVjEsIFhlbiBpcwpyZXNwb25zaWJsZSB0 byBqdWRnZSB3aGF0IGdyYW50IHRhYmxlIHZlcnNpb24gZ3Vlc3RzIGFyZSB1c2luZyBpbiBl dmVyeSBncmFudApvcGVyYXRpb24uCgpWMiBmdWxmaWxscyB0aGUgc2FtZSByb2xlIG9mIFYx LCBhbmQgaXQgaXMgdG90YWxseSBiYWNrd2FyZHMgY29tcGl0YWJsZSB3aXRoIFYxLgpJZiBk b20wIHN1cHBvcnQgZ3JhbnQgdGFibGUgVjIsIHRoZSBndWVzdHMgcnVuaW5nIG9uIGl0IGNh biBydW4gd2l0aCBlaXRoZXIgVjEKb3IgVjIuCgpTaWduZWQtb2ZmLWJ5OiBBbm5pZSBMaSA8 YW5uaWUubGlAb3JhY2xlLmNvbT4KLS0tCiBhcmNoL3g4Ni94ZW4vZ3JhbnQtdGFibGUuYyB8 ICAgMzcgKysrKysrKysrLQogZHJpdmVycy94ZW4vZ3JhbnQtdGFibGUuYyAgfCAgMTc1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBpbmNsdWRlL3hl bi9ncmFudF90YWJsZS5oICB8ICAgIDYgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjExIGluc2Vy dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL2dy YW50LXRhYmxlLmMgYi9hcmNoL3g4Ni94ZW4vZ3JhbnQtdGFibGUuYwppbmRleCBjNmFiMmU3 Li41MTBmY2EwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4vZ3JhbnQtdGFibGUuYworKysg Yi9hcmNoL3g4Ni94ZW4vZ3JhbnQtdGFibGUuYwpAQCAtNTQsNiArNTQsMjAgQEAgc3RhdGlj IGludCBtYXBfcHRlX2ZuKHB0ZV90ICpwdGUsIHN0cnVjdCBwYWdlICpwbWRfcGFnZSwKIAly ZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBtYXAgc2hh cmVkIGZyYW1lcyB0byBzdG9yZSBncmFudCBzdGF0dXMuIEl0IGlzCisgKiBkaWZmZXJlbnQg ZnJvbSBtYXBfcHRlX2ZuIGFib3ZlLCB0aGUgZnJhbWVzIHR5cGUgaGVyZSBpcyB1aW50NjRf dC4KKyAqLworc3RhdGljIGludCBtYXBfcHRlX2ZuX3N0YXR1cyhwdGVfdCAqcHRlLCBzdHJ1 Y3QgcGFnZSAqcG1kX3BhZ2UsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAq ZGF0YSkKK3sKKwl1aW50NjRfdCAqKmZyYW1lcyA9ICh1aW50NjRfdCAqKilkYXRhOworCisJ c2V0X3B0ZV9hdCgmaW5pdF9tbSwgYWRkciwgcHRlLCBtZm5fcHRlKCgqZnJhbWVzKVswXSwg UEFHRV9LRVJORUwpKTsKKwkoKmZyYW1lcykrKzsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGlj IGludCB1bm1hcF9wdGVfZm4ocHRlX3QgKnB0ZSwgc3RydWN0IHBhZ2UgKnBtZF9wYWdlLAog CQkJdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKQogewpAQCAtODMsNyArOTcsMjgg QEAgaW50IGFyY2hfZ250dGFiX21hcF9zaGFyZWQodW5zaWduZWQgbG9uZyAqZnJhbWVzLCB1 bnNpZ25lZCBsb25nIG5yX2dmcmFtZXMsCiAJcmV0dXJuIHJjOwogfQogCi12b2lkIGFyY2hf Z250dGFiX3VubWFwX3NoYXJlZCh2b2lkICpzaGFyZWQsIHVuc2lnbmVkIGxvbmcgbnJfZ2Zy YW1lcykKK2ludCBhcmNoX2dudHRhYl9tYXBfc3RhdHVzKHVpbnQ2NF90ICpmcmFtZXMsIHVu c2lnbmVkIGxvbmcgbnJfZ2ZyYW1lcywKKwkJCSAgIHVuc2lnbmVkIGxvbmcgbWF4X25yX2dm cmFtZXMsCisJCQkgICBncmFudF9zdGF0dXNfdCAqKl9fc2hhcmVkKQoreworCWludCByYzsK KwlncmFudF9zdGF0dXNfdCAqc2hhcmVkID0gKl9fc2hhcmVkOworCisJaWYgKHNoYXJlZCA9 PSBOVUxMKSB7CisJCXN0cnVjdCB2bV9zdHJ1Y3QgKmFyZWEgPQorCQkJYWxsb2Nfdm1fYXJl YShQQUdFX1NJWkUgKiBtYXhfbnJfZ2ZyYW1lcyk7CisJCUJVR19PTihhcmVhID09IE5VTEwp OworCQlzaGFyZWQgPSBhcmVhLT5hZGRyOworCQkqX19zaGFyZWQgPSBzaGFyZWQ7CisJfQor CisJcmMgPSBhcHBseV90b19wYWdlX3JhbmdlKCZpbml0X21tLCAodW5zaWduZWQgbG9uZylz aGFyZWQsCisJCQkJIFBBR0VfU0laRSAqIG5yX2dmcmFtZXMsCisJCQkJIG1hcF9wdGVfZm5f c3RhdHVzLCAmZnJhbWVzKTsKKwlyZXR1cm4gcmM7Cit9CisKK3ZvaWQgYXJjaF9nbnR0YWJf dW5tYXAodm9pZCAqc2hhcmVkLCB1bnNpZ25lZCBsb25nIG5yX2dmcmFtZXMpCiB7CiAJYXBw bHlfdG9fcGFnZV9yYW5nZSgmaW5pdF9tbSwgKHVuc2lnbmVkIGxvbmcpc2hhcmVkLAogCQkJ ICAgIFBBR0VfU0laRSAqIG5yX2dmcmFtZXMsIHVubWFwX3B0ZV9mbiwgTlVMTCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jIGIvZHJpdmVycy94ZW4vZ3JhbnQt dGFibGUuYwppbmRleCBmMzMwNDFlLi5jYTA3NWU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi9ncmFudC10YWJsZS5jCisrKyBiL2RyaXZlcnMveGVuL2dyYW50LXRhYmxlLmMKQEAgLTQ0 LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx4ZW4vcGFnZS5oPgogI2luY2x1ZGUgPHhlbi9ncmFu dF90YWJsZS5oPgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvbWVtb3J5Lmg+CisjaW5jbHVk ZSA8eGVuL2h2Yy1jb25zb2xlLmg+CiAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcmNhbGwuaD4K IAogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CkBAIC01Myw3ICs1NCwxMCBAQAogLyogRXh0 ZXJuYWwgdG9vbHMgcmVzZXJ2ZSBmaXJzdCBmZXcgZ3JhbnQgdGFibGUgZW50cmllcy4gKi8K ICNkZWZpbmUgTlJfUkVTRVJWRURfRU5UUklFUyA4CiAjZGVmaW5lIEdOVFRBQl9MSVNUX0VO RCAweGZmZmZmZmZmCi0jZGVmaW5lIEdSRUZTX1BFUl9HUkFOVF9GUkFNRSAoUEFHRV9TSVpF IC8gc2l6ZW9mKHN0cnVjdCBncmFudF9lbnRyeV92MSkpCisjZGVmaW5lIEdSRUZTX1BFUl9H UkFOVF9GUkFNRSBcCisoZ3JhbnRfdGFibGVfdmVyc2lvbiA9PSAxID8gICAgICAgICAgICAg ICAgICAgICAgXAorIChQQUdFX1NJWkUgLyBzaXplb2Yoc3RydWN0IGdyYW50X2VudHJ5X3Yx KSkgOiAgIFwKKyAoUEFHRV9TSVpFIC8gc2l6ZW9mKHVuaW9uIGdyYW50X2VudHJ5X3YyKSkp CiAKIHN0YXRpYyBncmFudF9yZWZfdCAqKmdudHRhYl9saXN0Owogc3RhdGljIHVuc2lnbmVk IGludCBucl9ncmFudF9mcmFtZXM7CkBAIC02Niw2ICs3MCw3IEBAIEVYUE9SVF9TWU1CT0xf R1BMKHhlbl9odm1fcmVzdW1lX2ZyYW1lcyk7CiAKIHN0YXRpYyB1bmlvbiB7CiAJc3RydWN0 IGdyYW50X2VudHJ5X3YxICp2MTsKKwl1bmlvbiBncmFudF9lbnRyeV92MiAqdjI7CiAJdm9p ZCAqYWRkcjsKIH0gZ250dGFiX3NoYXJlZDsKIApAQCAtMTE5LDggKzEyNCwxMiBAQCBzdHJ1 Y3QgZ250dGFiX29wcyB7CiB9OwogCiBzdGF0aWMgc3RydWN0IGdudHRhYl9vcHMgZ250dGFi X3YxX29wczsKK3N0YXRpYyBzdHJ1Y3QgZ250dGFiX29wcyBnbnR0YWJfdjJfb3BzOwogc3Rh dGljIHN0cnVjdCBnbnR0YWJfb3BzICpnbnR0YWJfaW50ZXJmYWNlOwogCisvKlRoaXMgcmVm bGVjdHMgc3RhdHVzIG9mIGdyYW50IGVudHJpZXMsIHNvIGFjdCBhcyBhIGdsb2JhbCB2YWx1 ZSovCitzdGF0aWMgZ3JhbnRfc3RhdHVzX3QgKmdyc3RhdHVzOworCiBzdGF0aWMgaW50IGdy YW50X3RhYmxlX3ZlcnNpb247CiAKIHN0YXRpYyBzdHJ1Y3QgZ250dGFiX2ZyZWVfY2FsbGJh Y2sgKmdudHRhYl9mcmVlX2NhbGxiYWNrX2xpc3Q7CkBAIC0xMjgsNiArMTM3LDcgQEAgc3Rh dGljIHN0cnVjdCBnbnR0YWJfZnJlZV9jYWxsYmFjayAqZ250dGFiX2ZyZWVfY2FsbGJhY2tf bGlzdDsKIHN0YXRpYyBpbnQgZ250dGFiX2V4cGFuZCh1bnNpZ25lZCBpbnQgcmVxX2VudHJp ZXMpOwogCiAjZGVmaW5lIFJQUCAoUEFHRV9TSVpFIC8gc2l6ZW9mKGdyYW50X3JlZl90KSkK KyNkZWZpbmUgU1BQIChQQUdFX1NJWkUgLyBzaXplb2YoZ3JhbnRfc3RhdHVzX3QpKQogCiBz dGF0aWMgaW5saW5lIGdyYW50X3JlZl90ICpfX2dudHRhYl9lbnRyeShncmFudF9yZWZfdCBl bnRyeSkKIHsKQEAgLTIwMCw2ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBwdXRfZnJlZV9lbnRy eShncmFudF9yZWZfdCByZWYpCiB9CiAKIC8qCisgKiBGb2xsb3dpbmcgY29tbWVudHMgYXBw bHkgdG8gdXBkYXRlX2dyYW50X2VudHJ5X3YxIGFuZCB1cGRhdGVfZ3JhbnRfZW50cnlfdjIu CiAgKiBJbnRyb2R1Y2luZyBhIHZhbGlkIGVudHJ5IGludG8gdGhlIGdyYW50IHRhYmxlOgog ICogIDEuIFdyaXRlIGVudC0+ZG9taWQuCiAgKiAgMi4gV3JpdGUgZW50LT5mcmFtZToKQEAg LTIxOCw2ICsyMjksMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2dyYW50X2VudHJ5X3YxKGdy YW50X3JlZl90IHJlZiwgZG9taWRfdCBkb21pZCwKIAlnbnR0YWJfc2hhcmVkLnYxW3JlZl0u ZmxhZ3MgPSBmbGFnczsKIH0KIAorc3RhdGljIHZvaWQgdXBkYXRlX2dyYW50X2VudHJ5X3Yy KGdyYW50X3JlZl90IHJlZiwgZG9taWRfdCBkb21pZCwKKwkJCQkgIHVuc2lnbmVkIGxvbmcg ZnJhbWUsIHVuc2lnbmVkIGZsYWdzKQoreworCWdudHRhYl9zaGFyZWQudjJbcmVmXS5oZHIu ZG9taWQgPSBkb21pZDsKKwlnbnR0YWJfc2hhcmVkLnYyW3JlZl0uZnVsbF9wYWdlLmZyYW1l ID0gZnJhbWU7CisJd21iKCk7CisJZ250dGFiX3NoYXJlZC52MltyZWZdLmhkci5mbGFncyA9 IEdURl9wZXJtaXRfYWNjZXNzIHwgZmxhZ3M7Cit9CisKIC8qCiAgKiBQdWJsaWMgZ3JhbnQt aXNzdWluZyBpbnRlcmZhY2UgZnVuY3Rpb25zCiAgKi8KQEAgLTI0OSw2ICsyNjksMTEgQEAg c3RhdGljIGludCBnbnR0YWJfcXVlcnlfZm9yZWlnbl9hY2Nlc3NfdjEoZ3JhbnRfcmVmX3Qg cmVmKQogCXJldHVybiBnbnR0YWJfc2hhcmVkLnYxW3JlZl0uZmxhZ3MgJiAoR1RGX3JlYWRp bmd8R1RGX3dyaXRpbmcpOwogfQogCitzdGF0aWMgaW50IGdudHRhYl9xdWVyeV9mb3JlaWdu X2FjY2Vzc192MihncmFudF9yZWZfdCByZWYpCit7CisJcmV0dXJuIGdyc3RhdHVzW3JlZl0g JiAoR1RGX3JlYWRpbmd8R1RGX3dyaXRpbmcpOworfQorCiBpbnQgZ250dGFiX3F1ZXJ5X2Zv cmVpZ25fYWNjZXNzKGdyYW50X3JlZl90IHJlZikKIHsKIAlyZXR1cm4gZ250dGFiX2ludGVy ZmFjZS0+cXVlcnlfZm9yZWlnbl9hY2Nlc3MocmVmKTsKQEAgLTI3Myw2ICsyOTgsMjkgQEAg c3RhdGljIGludCBnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZl92MShncmFudF9yZWZf dCByZWYsIGludCByZWFkb25seSkKIAlyZXR1cm4gMTsKIH0KIAorc3RhdGljIGludCBnbnR0 YWJfZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZl92MihncmFudF9yZWZfdCByZWYsIGludCByZWFk b25seSkKK3sKKwlnbnR0YWJfc2hhcmVkLnYyW3JlZl0uaGRyLmZsYWdzID0gMDsKKwltYigp OworCWlmIChncnN0YXR1c1tyZWZdICYgKEdURl9yZWFkaW5nfEdURl93cml0aW5nKSkgewor CQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQkvKiBUaGUgcmVhZCBvZiBncnN0YXR1cyBuZWVk cyB0byBoYXZlIGFjcXVpcmUKKwkJc2VtYW50aWNzLiAgT24geDg2LCByZWFkcyBhbHJlYWR5 IGhhdmUKKwkJdGhhdCwgYW5kIHdlIGp1c3QgbmVlZCB0byBwcm90ZWN0IGFnYWluc3QKKwkJ Y29tcGlsZXIgcmVvcmRlcmluZ3MuICBPbiBvdGhlcgorCQlhcmNoaXRlY3R1cmVzIHdlIG1h eSBuZWVkIGEgZnVsbAorCQliYXJyaWVyLiAqLworI2lmZGVmIENPTkZJR19YODYKKwkJYmFy cmllcigpOworI2Vsc2UKKwkJbWIoKTsKKyNlbmRpZgorCQl9CisKKwlyZXR1cm4gMTsKK30K KwogaW50IGdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKGdyYW50X3JlZl90IHJlZiwg aW50IHJlYWRvbmx5KQogewogCXJldHVybiBnbnR0YWJfaW50ZXJmYWNlLT5lbmRfZm9yZWln bl9hY2Nlc3NfcmVmKHJlZiwgcmVhZG9ubHkpOwpAQCAtMzQ2LDYgKzM5NCwzNyBAQCBzdGF0 aWMgdW5zaWduZWQgbG9uZyBnbnR0YWJfZW5kX2ZvcmVpZ25fdHJhbnNmZXJfcmVmX3YxKGdy YW50X3JlZl90IHJlZikKIAlyZXR1cm4gZnJhbWU7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBs b25nIGdudHRhYl9lbmRfZm9yZWlnbl90cmFuc2Zlcl9yZWZfdjIoZ3JhbnRfcmVmX3QgcmVm KQoreworCXVuc2lnbmVkIGxvbmcgZnJhbWU7CisJdTE2ICAgICAgICAgICBmbGFnczsKKwl1 MTYgICAgICAgICAgKnBmbGFnczsKKworCXBmbGFncyA9ICZnbnR0YWJfc2hhcmVkLnYyW3Jl Zl0uaGRyLmZsYWdzOworCisJLyoKKwkgKiBJZiBhIHRyYW5zZmVyIGlzIG5vdCBldmVuIHll dCBzdGFydGVkLCB0cnkgdG8gcmVjbGFpbSB0aGUgZ3JhbnQKKwkgKiByZWZlcmVuY2UgYW5k IHJldHVybiBmYWlsdXJlICg9PSAwKS4KKwkgKi8KKwl3aGlsZSAoISgoZmxhZ3MgPSAqcGZs YWdzKSAmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQpKSB7CisJCWlmIChzeW5jX2NtcHhjaGco cGZsYWdzLCBmbGFncywgMCkgPT0gZmxhZ3MpCisJCQlyZXR1cm4gMDsKKwkJY3B1X3JlbGF4 KCk7CisJfQorCisJLyogSWYgYSB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyB0aGVuIHdhaXQg dW50aWwgaXQgaXMgY29tcGxldGVkLiAqLworCXdoaWxlICghKGZsYWdzICYgR1RGX3RyYW5z ZmVyX2NvbXBsZXRlZCkpIHsKKwkJZmxhZ3MgPSAqcGZsYWdzOworCQljcHVfcmVsYXgoKTsK Kwl9CisKKwlybWIoKTsgIC8qIFJlYWQgdGhlIGZyYW1lIG51bWJlciAvYWZ0ZXIvIHJlYWRp bmcgY29tcGxldGlvbiBzdGF0dXMuICovCisJZnJhbWUgPSBnbnR0YWJfc2hhcmVkLnYyW3Jl Zl0uZnVsbF9wYWdlLmZyYW1lOworCUJVR19PTihmcmFtZSA9PSAwKTsKKworCXJldHVybiBm cmFtZTsKK30KKwogdW5zaWduZWQgbG9uZyBnbnR0YWJfZW5kX2ZvcmVpZ25fdHJhbnNmZXJf cmVmKGdyYW50X3JlZl90IHJlZikKIHsKIAlyZXR1cm4gZ250dGFiX2ludGVyZmFjZS0+ZW5k X2ZvcmVpZ25fdHJhbnNmZXJfcmVmKHJlZik7CkBAIC01OTMsNiArNjcyLDExIEBAIGludCBn bnR0YWJfdW5tYXBfcmVmcyhzdHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiAqdW5tYXBf b3BzLAogfQogRVhQT1JUX1NZTUJPTF9HUEwoZ250dGFiX3VubWFwX3JlZnMpOwogCitzdGF0 aWMgdW5zaWduZWQgbnJfc3RhdHVzX2ZyYW1lcyh1bnNpZ25lZCBucl9ncmFudF9mcmFtZXMp Cit7CisJcmV0dXJuIChucl9ncmFudF9mcmFtZXMgKiBHUkVGU19QRVJfR1JBTlRfRlJBTUUg KyBTUFAgLSAxKSAvIFNQUDsKK30KKwogc3RhdGljIGludCBnbnR0YWJfbWFwX2ZyYW1lc192 MSh1bnNpZ25lZCBsb25nICpmcmFtZXMsIHVuc2lnbmVkIGludCBucl9nZnJhbWVzKQogewog CWludCByYzsKQEAgLTYwNyw3ICs2OTEsNTYgQEAgc3RhdGljIGludCBnbnR0YWJfbWFwX2Zy YW1lc192MSh1bnNpZ25lZCBsb25nICpmcmFtZXMsIHVuc2lnbmVkIGludCBucl9nZnJhbWVz KQogCiBzdGF0aWMgdm9pZCBnbnR0YWJfdW5tYXBfZnJhbWVzX3YxKHZvaWQpCiB7Ci0JYXJj aF9nbnR0YWJfdW5tYXBfc2hhcmVkKGdudHRhYl9zaGFyZWQuYWRkciwgbnJfZ3JhbnRfZnJh bWVzKTsKKwlhcmNoX2dudHRhYl91bm1hcChnbnR0YWJfc2hhcmVkLmFkZHIsIG5yX2dyYW50 X2ZyYW1lcyk7Cit9CisKK3N0YXRpYyBpbnQgZ250dGFiX21hcF9mcmFtZXNfdjIodW5zaWdu ZWQgbG9uZyAqZnJhbWVzLCB1bnNpZ25lZCBpbnQgbnJfZ2ZyYW1lcykKK3sKKwl1aW50NjRf dCAqc2ZyYW1lczsKKwl1bnNpZ25lZCBpbnQgbnJfc2ZyYW1lczsKKwlzdHJ1Y3QgZ250dGFi X2dldF9zdGF0dXNfZnJhbWVzIGdldGZyYW1lczsKKwlpbnQgcmM7CisKKwlucl9zZnJhbWVz ID0gbnJfc3RhdHVzX2ZyYW1lcyhucl9nZnJhbWVzKTsKKworCS8qIE5vIG5lZWQgZm9yIGt6 YWxsb2MgYXMgaXQgaXMgaW5pdGlhbGl6ZWQgaW4gZm9sbG93aW5nIGh5cGVyY2FsbAorCSAq IEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzLgorCSAqLworCXNmcmFtZXMgPSBrbWFsbG9j KG5yX3NmcmFtZXMgICogc2l6ZW9mKHVpbnQ2NF90KSwgR0ZQX0FUT01JQyk7CisJaWYgKCFz ZnJhbWVzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWdldGZyYW1lcy5kb20gICAgICAgID0g RE9NSURfU0VMRjsKKwlnZXRmcmFtZXMubnJfZnJhbWVzICA9IG5yX3NmcmFtZXM7CisJc2V0 X3hlbl9ndWVzdF9oYW5kbGUoZ2V0ZnJhbWVzLmZyYW1lX2xpc3QsIHNmcmFtZXMpOworCisJ cmMgPSBIWVBFUlZJU09SX2dyYW50X3RhYmxlX29wKEdOVFRBQk9QX2dldF9zdGF0dXNfZnJh bWVzLAorCQkJCSAgICAgICAmZ2V0ZnJhbWVzLCAxKTsKKwlpZiAocmMgPT0gLUVOT1NZUykg eworCQlrZnJlZShzZnJhbWVzKTsKKwkJcmV0dXJuIC1FTk9TWVM7CisJfQorCisJQlVHX09O KHJjIHx8IGdldGZyYW1lcy5zdGF0dXMpOworCisJcmMgPSBhcmNoX2dudHRhYl9tYXBfc3Rh dHVzKHNmcmFtZXMsIG5yX3NmcmFtZXMsCisJCQkJICAgIG5yX3N0YXR1c19mcmFtZXMoZ250 dGFiX21heF9ncmFudF9mcmFtZXMoKSksCisJCQkJICAgICZncnN0YXR1cyk7CisJQlVHX09O KHJjKTsKKwlrZnJlZShzZnJhbWVzKTsKKworCXJjID0gYXJjaF9nbnR0YWJfbWFwX3NoYXJl ZChmcmFtZXMsIG5yX2dmcmFtZXMsCisJCQkJICAgIGdudHRhYl9tYXhfZ3JhbnRfZnJhbWVz KCksCisJCQkJICAgICZnbnR0YWJfc2hhcmVkLmFkZHIpOworCUJVR19PTihyYyk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ250dGFiX3VubWFwX2ZyYW1lc192Mih2b2lk KQoreworCWFyY2hfZ250dGFiX3VubWFwKGdudHRhYl9zaGFyZWQuYWRkciwgbnJfZ3JhbnRf ZnJhbWVzKTsKKwlhcmNoX2dudHRhYl91bm1hcChncnN0YXR1cywgbnJfc3RhdHVzX2ZyYW1l cyhucl9ncmFudF9mcmFtZXMpKTsKIH0KIAogc3RhdGljIGludCBnbnR0YWJfbWFwKHVuc2ln bmVkIGludCBzdGFydF9pZHgsIHVuc2lnbmVkIGludCBlbmRfaWR4KQpAQCAtNjQxLDYgKzc3 NCw5IEBAIHN0YXRpYyBpbnQgZ250dGFiX21hcCh1bnNpZ25lZCBpbnQgc3RhcnRfaWR4LCB1 bnNpZ25lZCBpbnQgZW5kX2lkeCkKIAkJcmV0dXJuIHJjOwogCX0KIAorCS8qIE5vIG5lZWQg Zm9yIGt6YWxsb2MgYXMgaXQgaXMgaW5pdGlhbGl6ZWQgaW4gZm9sbG93aW5nIGh5cGVyY2Fs bAorCSAqIEdOVFRBQk9QX3NldHVwX3RhYmxlLgorCSAqLwogCWZyYW1lcyA9IGttYWxsb2Mo bnJfZ2ZyYW1lcyAqIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQX0FUT01JQyk7CiAJaWYg KCFmcmFtZXMpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtNjczLDEwICs4MDksNDEgQEAgc3Rh dGljIHN0cnVjdCBnbnR0YWJfb3BzIGdudHRhYl92MV9vcHMgPSB7CiAJLnF1ZXJ5X2ZvcmVp Z25fYWNjZXNzCQk9IGdudHRhYl9xdWVyeV9mb3JlaWduX2FjY2Vzc192MSwKIH07CiAKK3N0 YXRpYyBzdHJ1Y3QgZ250dGFiX29wcyBnbnR0YWJfdjJfb3BzID0geworCS5tYXBfZnJhbWVz CQkJPSBnbnR0YWJfbWFwX2ZyYW1lc192MiwKKwkudW5tYXBfZnJhbWVzCQkJPSBnbnR0YWJf dW5tYXBfZnJhbWVzX3YyLAorCS51cGRhdGVfZW50cnkJCQk9IHVwZGF0ZV9ncmFudF9lbnRy eV92MiwKKwkuZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZgkJPSBnbnR0YWJfZW5kX2ZvcmVpZ25f YWNjZXNzX3JlZl92MiwKKwkuZW5kX2ZvcmVpZ25fdHJhbnNmZXJfcmVmCT0gZ250dGFiX2Vu ZF9mb3JlaWduX3RyYW5zZmVyX3JlZl92MiwKKwkucXVlcnlfZm9yZWlnbl9hY2Nlc3MJCT0g Z250dGFiX3F1ZXJ5X2ZvcmVpZ25fYWNjZXNzX3YyLAorfTsKKwogc3RhdGljIHZvaWQgZ250 dGFiX3JlcXVlc3RfdmVyc2lvbih2b2lkKQogewotCWdyYW50X3RhYmxlX3ZlcnNpb24gPSAx OwotCWdudHRhYl9pbnRlcmZhY2UgPSAmZ250dGFiX3YxX29wczsKKwlpbnQgcmM7CisJc3Ry dWN0IGdudHRhYl9zZXRfdmVyc2lvbiBnc3Y7CisJY29uc3QgY2hhciAqc3RyID0gIndlIG5l ZWQgZ3JhbnQgdGFibGVzIHZlcnNpb24gMiwgYnV0IG9ubHkgdmVyc2lvbiAxIGlzIGF2YWls YWJsZVxuIjsKKworCWdzdi52ZXJzaW9uID0gMjsKKwlyYyA9IEhZUEVSVklTT1JfZ3JhbnRf dGFibGVfb3AoR05UVEFCT1Bfc2V0X3ZlcnNpb24sICZnc3YsIDEpOworCWlmIChyYyA9PSAw KSB7CisJCWdyYW50X3RhYmxlX3ZlcnNpb24gPSAyOworCQlnbnR0YWJfaW50ZXJmYWNlID0g JmdudHRhYl92Ml9vcHM7CisJfSBlbHNlIHsKKwkJaWYgKGdyYW50X3RhYmxlX3ZlcnNpb24g PT0gMikgeworCQkJLyoKKwkJCSAqIElmIHdlJ3ZlIGFscmVhZHkgdXNlZCB2ZXJzaW9uIDIg ZmVhdHVyZXMsCisJCQkgKiBidXQgdGhlbiBzdWRkZW5seSBkaXNjb3ZlciB0aGF0IHRoZXkn cmUgbm90CisJCQkgKiBhdmFpbGFibGUgKGUuZy4gbWlncmF0aW5nIHRvIGFuIG9sZGVyCisJ CQkgKiB2ZXJzaW9uIG9mIFhlbiksIGFsbW9zdCB1bmJvdW5kZWQgYmFkbmVzcworCQkJICog Y2FuIGhhcHBlbi4KKwkJCSAqLworCQkJeGVuX3Jhd19wcmludGsoc3RyKTsKKwkJCXBhbmlj KHN0cik7CisJCX0KKwkJZ3JhbnRfdGFibGVfdmVyc2lvbiA9IDE7CisJCWdudHRhYl9pbnRl cmZhY2UgPSAmZ250dGFiX3YxX29wczsKKwl9CiAJcHJpbnRrKEtFUk5fSU5GTyAiR3JhbnQg dGFibGVzIHVzaW5nIHZlcnNpb24gJWQgbGF5b3V0LlxuIiwKIAkJZ3JhbnRfdGFibGVfdmVy c2lvbik7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oIGIvaW5j bHVkZS94ZW4vZ3JhbnRfdGFibGUuaAppbmRleCBjN2E0MGY4Li41NDk0YzQwIDEwMDY0NAot LS0gYS9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oCisrKyBiL2luY2x1ZGUveGVuL2dyYW50 X3RhYmxlLmgKQEAgLTE0Niw4ICsxNDYsMTAgQEAgZ250dGFiX3NldF91bm1hcF9vcChzdHJ1 Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiAqdW5tYXAsIHBoeXNfYWRkcl90IGFkZHIsCiBp bnQgYXJjaF9nbnR0YWJfbWFwX3NoYXJlZCh1bnNpZ25lZCBsb25nICpmcmFtZXMsIHVuc2ln bmVkIGxvbmcgbnJfZ2ZyYW1lcywKIAkJCSAgIHVuc2lnbmVkIGxvbmcgbWF4X25yX2dmcmFt ZXMsCiAJCQkgICB2b2lkICoqX19zaGFyZWQpOwotdm9pZCBhcmNoX2dudHRhYl91bm1hcF9z aGFyZWQodm9pZCAqc2hhcmVkLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBucl9nZnJhbWVz KTsKK2ludCBhcmNoX2dudHRhYl9tYXBfc3RhdHVzKHVpbnQ2NF90ICpmcmFtZXMsIHVuc2ln bmVkIGxvbmcgbnJfZ2ZyYW1lcywKKwkJCSAgIHVuc2lnbmVkIGxvbmcgbWF4X25yX2dmcmFt ZXMsCisJCQkgICBncmFudF9zdGF0dXNfdCAqKl9fc2hhcmVkKTsKK3ZvaWQgYXJjaF9nbnR0 YWJfdW5tYXAodm9pZCAqc2hhcmVkLCB1bnNpZ25lZCBsb25nIG5yX2dmcmFtZXMpOwogCiBl eHRlcm4gdW5zaWduZWQgbG9uZyB4ZW5faHZtX3Jlc3VtZV9mcmFtZXM7CiB1bnNpZ25lZCBp bnQgZ250dGFiX21heF9ncmFudF9mcmFtZXModm9pZCk7Ci0tIAoxLjcuNi40Cgo= --------------080805070607050504050807--