From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v2 10/13] xen/pvcalls: implement poll command Date: Tue, 25 Jul 2017 14:22:07 -0700 Message-ID: <1501017730-12797-10-git-send-email-sstabellini@kernel.org> References: <1501017730-12797-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1501017730-12797-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: jgross@suse.com, Stefano Stabellini , boris.ostrovsky@oracle.com, sstabellini@kernel.org, linux-kernel@vger.kernel.org List-Id: xen-devel@lists.xenproject.org Rm9yIGFjdGl2ZSBzb2NrZXRzLCBjaGVjayB0aGUgaW5kZXhlcyBhbmQgdXNlIHRoZSBpbmZsaWdo dF9jb25uX3JlcQp3YWl0cXVldWUgdG8gd2FpdC4KCkZvciBwYXNzaXZlIHNvY2tldHMsIHNlbmQg UFZDQUxMU19QT0xMIHRvIHRoZSBiYWNrZW5kLiBVc2UgdGhlCmluZmxpZ2h0X2FjY2VwdF9yZXEg d2FpdHF1ZXVlIGlmIGFuIGFjY2VwdCBpcyBvdXRzdGFuZGluZy4gT3RoZXJ3aXNlIHVzZQp0aGUg aW5mbGlnaHRfcmVxIHdhaXRxdWV1ZTogaW5mbGlnaHRfcmVxIGlzIGF3YWtlbiB3aGVuIGEgbmV3 IHJlc3BvbnNlCmlzIHJlY2VpdmVkOyBvbiB3YWtldXAgd2UgY2hlY2sgd2hldGhlciB0aGUgUE9M TCByZXNwb25zZSBpcyBhcnJpdmVkIGJ5Cmxvb2tpbmcgYXQgdGhlIFBWQ0FMTFNfRkxBR19QT0xM X1JFVCBmbGFnLiBXZSBzZXQgdGhlIGZsYWcgZnJvbQpwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRs ZXIsIGlmIHRoZSByZXNwb25zZSB3YXMgZm9yIGEgUE9MTCBjb21tYW5kLgoKSW4gcHZjYWxsc19m cm9udF9ldmVudF9oYW5kbGVyLCBnZXQgdGhlIHN0cnVjdCBzb2NrZXQgcG9pbnRlciBmcm9tIHRo ZQpwb2xsIGlkICh3ZSBwcmV2aW91c2x5IGNvbnZlcnRlZCBzdHJ1Y3Qgc29ja2V0KiB0byB1aW50 NjRfdCBhbmQgdXNlZCBpdAphcyBpZCkuCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxp bmkgPHN0ZWZhbm9AYXBvcmV0by5jb20+CkNDOiBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbQpD Qzogamdyb3NzQHN1c2UuY29tCi0tLQogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIHwgMTM0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL3hl bi9wdmNhbGxzLWZyb250LmggfCAgIDMgKwogMiBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZjYWxscy1m cm9udC5jIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCmluZGV4IGI0Y2E1NjkuLjgzM2I3 MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYworKysgYi9kcml2ZXJz L3hlbi9wdmNhbGxzLWZyb250LmMKQEAgLTEzMCwxNyArMTMwLDM1IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQog CQlyc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmYmVkYXRhLT5yaW5nLCBiZWRhdGEtPnJpbmcucnNw X2NvbnMpOwogCiAJCXJlcV9pZCA9IHJzcC0+cmVxX2lkOwotCQlzcmMgPSAodWludDhfdCAqKSZi ZWRhdGEtPnJzcFtyZXFfaWRdOwotCQlzcmMgKz0gc2l6ZW9mKHJzcC0+cmVxX2lkKTsKLQkJZHN0 ID0gKHVpbnQ4X3QgKilyc3A7Ci0JCWRzdCArPSBzaXplb2YocnNwLT5yZXFfaWQpOwotCQltZW1j cHkoZHN0LCBzcmMsIHNpemVvZigqcnNwKSAtIHNpemVvZihyc3AtPnJlcV9pZCkpOwotCQkvKgot CQkgKiBGaXJzdCBjb3B5IHRoZSByZXN0IG9mIHRoZSBkYXRhLCB0aGVuIHJlcV9pZC4gSXQgaXMK LQkJICogcGFpcmVkIHdpdGggdGhlIGJhcnJpZXIgd2hlbiBhY2Nlc3NpbmcgYmVkYXRhLT5yc3Au Ci0JCSAqLwotCQlzbXBfd21iKCk7Ci0JCVdSSVRFX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5y ZXFfaWQsIHJzcC0+cmVxX2lkKTsKKwkJaWYgKHJzcC0+Y21kID09IFBWQ0FMTFNfUE9MTCkgewor CQkJc3RydWN0IHNvY2tldCAqc29jayA9IChzdHJ1Y3Qgc29ja2V0ICopIHJzcC0+dS5wb2xsLmlk OworCQkJc3RydWN0IHNvY2tfbWFwcGluZyAqbWFwID0KKwkJCQkoc3RydWN0IHNvY2tfbWFwcGlu ZyAqKQorCQkJCVJFQURfT05DRShzb2NrLT5zay0+c2tfc2VuZF9oZWFkKTsKKworCQkJc2V0X2Jp dChQVkNBTExTX0ZMQUdfUE9MTF9SRVQsCisJCQkJKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdz KTsKKwkJCS8qCisJCQkgKiBTZXQgUkVULCB0aGVuIGNsZWFyIElORkxJR0hULiBJdCBwYWlycyB3 aXRoCisJCQkgKiB0aGUgY2hlY2tzIGF0IHRoZSBiZWdpbm5pbmcgb2YKKwkJCSAqIHB2Y2FsbHNf ZnJvbnRfcG9sbF9wYXNzaXZlLgorCQkJICovCisJCQlzbXBfd21iKCk7CisJCQljbGVhcl9iaXQo UFZDQUxMU19GTEFHX1BPTExfSU5GTElHSFQsCisJCQkJICAodm9pZCAqKSZtYXAtPnBhc3NpdmUu ZmxhZ3MpOworCQl9IGVsc2UgeworCQkJc3JjID0gKHVpbnQ4X3QgKikmYmVkYXRhLT5yc3BbcmVx X2lkXTsKKwkJCXNyYyArPSBzaXplb2YocnNwLT5yZXFfaWQpOworCQkJZHN0ID0gKHVpbnQ4X3Qg Kilyc3A7CisJCQlkc3QgKz0gc2l6ZW9mKHJzcC0+cmVxX2lkKTsKKwkJCW1lbWNweShkc3QsIHNy Yywgc2l6ZW9mKCpyc3ApIC0gc2l6ZW9mKHJzcC0+cmVxX2lkKSk7CisJCQkvKgorCQkJICogRmly c3QgY29weSB0aGUgcmVzdCBvZiB0aGUgZGF0YSwgdGhlbiByZXFfaWQuIEl0IGlzCisJCQkgKiBw YWlyZWQgd2l0aCB0aGUgYmFycmllciB3aGVuIGFjY2Vzc2luZyBiZWRhdGEtPnJzcC4KKwkJCSAq LworCQkJc21wX3dtYigpOworCQkJV1JJVEVfT05DRShiZWRhdGEtPnJzcFtyZXFfaWRdLnJlcV9p ZCwgcnNwLT5yZXFfaWQpOworCQl9CiAKIAkJZG9uZSA9IDE7CiAJCWJlZGF0YS0+cmluZy5yc3Bf Y29ucysrOwpAQCAtNzA3LDYgKzcyNSwxMDAgQEAgaW50IHB2Y2FsbHNfZnJvbnRfYWNjZXB0KHN0 cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssIGludCBmbGFncykKIAly ZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50IHB2Y2FsbHNfZnJvbnRfcG9sbF9w YXNzaXZlKHN0cnVjdCBmaWxlICpmaWxlLAorCQkJCQkgICAgICAgc3RydWN0IHB2Y2FsbHNfYmVk YXRhICpiZWRhdGEsCisJCQkJCSAgICAgICBzdHJ1Y3Qgc29ja19tYXBwaW5nICptYXAsCisJCQkJ CSAgICAgICBwb2xsX3RhYmxlICp3YWl0KQoreworCWludCBub3RpZnksIHJlcV9pZDsKKwlzdHJ1 Y3QgeGVuX3B2Y2FsbHNfcmVxdWVzdCAqcmVxOworCisJaWYgKHRlc3RfYml0KFBWQ0FMTFNfRkxB R19BQ0NFUFRfSU5GTElHSFQsCisJCSAgICAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdzKSkg eworCQlwb2xsX3dhaXQoZmlsZSwgJm1hcC0+cGFzc2l2ZS5pbmZsaWdodF9hY2NlcHRfcmVxLCB3 YWl0KTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChQVkNBTExT X0ZMQUdfUE9MTF9SRVQsCisJCQkgICAgICAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdzKSkK KwkJcmV0dXJuIFBPTExJTjsKKworCS8qCisJICogRmlyc3QgY2hlY2sgUkVULCB0aGVuIElORkxJ R0hULiBObyBiYXJyaWVycyBuZWNlc3NhcnkgdG8KKwkgKiBlbnN1cmUgZXhlY3V0aW9uIG9yZGVy aW5nIGJlY2F1c2Ugb2YgdGhlIGNvbmRpdGlvbmFsCisJICogaW5zdHJ1Y3Rpb25zIGNyZWF0aW5n IGNvbnRyb2wgZGVwZW5kZW5jaWVzLgorCSAqLworCisJaWYgKHRlc3RfYW5kX3NldF9iaXQoUFZD QUxMU19GTEFHX1BPTExfSU5GTElHSFQsCisJCQkgICAgICh2b2lkICopJm1hcC0+cGFzc2l2ZS5m bGFncykpIHsKKwkJcG9sbF93YWl0KGZpbGUsICZiZWRhdGEtPmluZmxpZ2h0X3JlcSwgd2FpdCk7 CisJCXJldHVybiAwOworCX0KKworCXNwaW5fbG9jaygmYmVkYXRhLT5wdmNhbGxzc19sb2NrKTsK KwlyZXFfaWQgPSBiZWRhdGEtPnJpbmcucmVxX3Byb2RfcHZ0ICYgKFJJTkdfU0laRSgmYmVkYXRh LT5yaW5nKSAtIDEpOworCWlmIChSSU5HX0ZVTEwoJmJlZGF0YS0+cmluZykgfHwKKwkgICAgUkVB RF9PTkNFKGJlZGF0YS0+cnNwW3JlcV9pZF0ucmVxX2lkKSAhPSBQVkNBTExTX0lOVkFMSURfSUQp IHsKKwkJc3Bpbl91bmxvY2soJmJlZGF0YS0+cHZjYWxsc3NfbG9jayk7CisJCXJldHVybiAtRUFH QUlOOworCX0KKwlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZiZWRhdGEtPnJpbmcsIHJlcV9pZCk7 CisJcmVxLT5yZXFfaWQgPSByZXFfaWQ7CisJcmVxLT5jbWQgPSBQVkNBTExTX1BPTEw7CisJcmVx LT51LnBvbGwuaWQgPSAodWludDY0X3QpIG1hcC0+c29jazsKKworCWJlZGF0YS0+cmluZy5yZXFf cHJvZF9wdnQrKzsKKwlSSU5HX1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWSgmYmVkYXRh LT5yaW5nLCBub3RpZnkpOworCXNwaW5fdW5sb2NrKCZiZWRhdGEtPnB2Y2FsbHNzX2xvY2spOwor CWlmIChub3RpZnkpCisJCW5vdGlmeV9yZW1vdGVfdmlhX2lycShiZWRhdGEtPmlycSk7CisKKwlw b2xsX3dhaXQoZmlsZSwgJmJlZGF0YS0+aW5mbGlnaHRfcmVxLCB3YWl0KTsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHVuc2lnbmVkIGludCBwdmNhbGxzX2Zyb250X3BvbGxfYWN0aXZlKHN0cnVj dCBmaWxlICpmaWxlLAorCQkJCQkgICAgICBzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YSwK KwkJCQkJICAgICAgc3RydWN0IHNvY2tfbWFwcGluZyAqbWFwLAorCQkJCQkgICAgICBwb2xsX3Rh YmxlICp3YWl0KQoreworCXVuc2lnbmVkIGludCBtYXNrID0gMDsKKwlpbnQzMl90IGluX2Vycm9y LCBvdXRfZXJyb3I7CisJc3RydWN0IHB2Y2FsbHNfZGF0YV9pbnRmICppbnRmID0gbWFwLT5hY3Rp dmUucmluZzsKKworCW91dF9lcnJvciA9IGludGYtPm91dF9lcnJvcjsKKwlpbl9lcnJvciA9IGlu dGYtPmluX2Vycm9yOworCisJcG9sbF93YWl0KGZpbGUsICZtYXAtPmFjdGl2ZS5pbmZsaWdodF9j b25uX3JlcSwgd2FpdCk7CisJaWYgKHB2Y2FsbHNfZnJvbnRfd3JpdGVfdG9kbyhtYXApKQorCQlt YXNrIHw9IFBPTExPVVQgfCBQT0xMV1JOT1JNOworCWlmIChwdmNhbGxzX2Zyb250X3JlYWRfdG9k byhtYXApKQorCQltYXNrIHw9IFBPTExJTiB8IFBPTExSRE5PUk07CisJaWYgKGluX2Vycm9yICE9 IDAgfHwgb3V0X2Vycm9yICE9IDApCisJCW1hc2sgfD0gUE9MTEVSUjsKKworCXJldHVybiBtYXNr OworfQorCit1bnNpZ25lZCBpbnQgcHZjYWxsc19mcm9udF9wb2xsKHN0cnVjdCBmaWxlICpmaWxl LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAorCQkJICAgICAgIHBvbGxfdGFibGUgKndhaXQpCit7CisJ c3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CisJc3RydWN0IHNvY2tfbWFwcGluZyAqbWFw OworCisJaWYgKCFwdmNhbGxzX2Zyb250X2RldikKKwkJcmV0dXJuIFBPTExOVkFMOworCWJlZGF0 YSA9IGRldl9nZXRfZHJ2ZGF0YSgmcHZjYWxsc19mcm9udF9kZXYtPmRldik7CisKKwltYXAgPSAo c3RydWN0IHNvY2tfbWFwcGluZyAqKSBSRUFEX09OQ0Uoc29jay0+c2stPnNrX3NlbmRfaGVhZCk7 CisJaWYgKCFtYXApCisJCXJldHVybiBQT0xMTlZBTDsKKwlpZiAobWFwLT5hY3RpdmVfc29ja2V0 KQorCQlyZXR1cm4gcHZjYWxsc19mcm9udF9wb2xsX2FjdGl2ZShmaWxlLCBiZWRhdGEsIG1hcCwg d2FpdCk7CisJZWxzZQorCQlyZXR1cm4gcHZjYWxsc19mcm9udF9wb2xsX3Bhc3NpdmUoZmlsZSwg YmVkYXRhLCBtYXAsIHdhaXQpOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZp Y2VfaWQgcHZjYWxsc19mcm9udF9pZHNbXSA9IHsKIAl7ICJwdmNhbGxzIiB9LAogCXsgIiIgfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oIGIvZHJpdmVycy94ZW4vcHZj YWxscy1mcm9udC5oCmluZGV4IGRlMjQwNDEuLjI1ZTA1YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL3B2Y2FsbHMtZnJvbnQuaAorKysgYi9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKQEAg LTIwLDUgKzIwLDggQEAgaW50IHB2Y2FsbHNfZnJvbnRfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpz b2NrLAogCQkJICBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkgIHNpemVfdCBsZW4sCiAJCQkgIGlu dCBmbGFncyk7Cit1bnNpZ25lZCBpbnQgcHZjYWxsc19mcm9udF9wb2xsKHN0cnVjdCBmaWxlICpm aWxlLAorCQkJCXN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkJcG9sbF90YWJsZSAqd2FpdCk7CiAK ICNlbmRpZgotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK