From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v5 11/13] xen/pvcalls: implement poll command Date: Fri, 6 Oct 2017 17:30:25 -0700 Message-ID: <1507336227-20477-11-git-send-email-sstabellini@kernel.org> References: <1507336227-20477-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: <1507336227-20477-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 dF9jb25uX3JlcQp3YWl0cXVldWUgdG8gd2FpdC4KCkZvciBwYXNzaXZlIHNvY2tldHMgaWYgYW4g YWNjZXB0IGlzIG91dHN0YW5kaW5nCihQVkNBTExTX0ZMQUdfQUNDRVBUX0lORkxJR0hUKSwgY2hl Y2sgaWYgaXQgaGFzIGJlZW4gYW5zd2VyZWQgYnkgbG9va2luZwphdCBiZWRhdGEtPnJzcFtyZXFf aWRdLiBJZiBzbywgcmV0dXJuIFBPTExJTi4gIE90aGVyd2lzZSB1c2UgdGhlCmluZmxpZ2h0X2Fj Y2VwdF9yZXEgd2FpdHF1ZXVlLgoKSWYgbm8gYWNjZXB0cyBhcmUgaW5mbGlnaHQsIHNlbmQgUFZD QUxMU19QT0xMIHRvIHRoZSBiYWNrZW5kLiBJZiB3ZSBoYXZlCm91dHN0YW5kaW5nIFBPTEwgcmVx dWVzdHMgYXdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgdXNlIHRoZSBpbmZsaWdodF9yZXEKd2FpdHF1 ZXVlOiBpbmZsaWdodF9yZXEgaXMgYXdha2VuIHdoZW4gYSBuZXcgcmVzcG9uc2UgaXMgcmVjZWl2 ZWQ7IG9uCndha2V1cCB3ZSBjaGVjayB3aGV0aGVyIHRoZSBQT0xMIHJlc3BvbnNlIGlzIGFycml2 ZWQgYnkgbG9va2luZyBhdCB0aGUKUFZDQUxMU19GTEFHX1BPTExfUkVUIGZsYWcuIFdlIHNldCB0 aGUgZmxhZyBmcm9tCnB2Y2FsbHNfZnJvbnRfZXZlbnRfaGFuZGxlciwgaWYgdGhlIHJlc3BvbnNl IHdhcyBmb3IgYSBQT0xMIGNvbW1hbmQuCgpJbiBwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRsZXIs IGdldCB0aGUgc3RydWN0IHNvY2tfbWFwcGluZyBmcm9tIHRoZQpwb2xsIGlkICh3ZSBwcmV2aW91 c2x5IGNvbnZlcnRlZCBzdHJ1Y3Qgc29ja19tYXBwaW5nKiB0byB1aW50NjRfdCBhbmQKdXNlZCBp dCBhcyBpZCkuCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm9AYXBv cmV0by5jb20+CkNDOiBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbQpDQzogamdyb3NzQHN1c2Uu Y29tCi0tLQogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIHwgMTQ0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250 LmggfCAgIDMgKwogMiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMgYi9kcml2ZXJz L3hlbi9wdmNhbGxzLWZyb250LmMKaW5kZXggMTYxZjg4Yi4uYWNhMmIzMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJv bnQuYwpAQCAtODQsNiArODQsOCBAQCBzdHJ1Y3Qgc29ja19tYXBwaW5nIHsKIAkJICogT25seSBv bmUgcG9sbCBvcGVyYXRpb24gY2FuIGJlIGluZmxpZ2h0IGZvciBhIGdpdmVuIHNvY2tldC4KIAkJ ICovCiAjZGVmaW5lIFBWQ0FMTFNfRkxBR19BQ0NFUFRfSU5GTElHSFQgMAorI2RlZmluZSBQVkNB TExTX0ZMQUdfUE9MTF9JTkZMSUdIVCAgIDEKKyNkZWZpbmUgUFZDQUxMU19GTEFHX1BPTExfUkVU ICAgICAgICAyCiAJCQl1aW50OF90IGZsYWdzOwogCQkJdWludDMyX3QgaW5mbGlnaHRfcmVxX2lk OwogCQkJc3RydWN0IHNvY2tfbWFwcGluZyAqYWNjZXB0X21hcDsKQEAgLTE1NSwxNSArMTU3LDMy IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRsZXIoaW50IGly cSwgdm9pZCAqZGV2X2lkKQogCQlyc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmYmVkYXRhLT5yaW5n LCBiZWRhdGEtPnJpbmcucnNwX2NvbnMpOwogCiAJCXJlcV9pZCA9IHJzcC0+cmVxX2lkOwotCQlk c3QgPSAodWludDhfdCAqKSZiZWRhdGEtPnJzcFtyZXFfaWRdICsgc2l6ZW9mKHJzcC0+cmVxX2lk KTsKLQkJc3JjID0gKHVpbnQ4X3QgKilyc3AgKyBzaXplb2YocnNwLT5yZXFfaWQpOwotCQltZW1j cHkoZHN0LCBzcmMsIHNpemVvZigqcnNwKSAtIHNpemVvZihyc3AtPnJlcV9pZCkpOwotCQkvKgot CQkgKiBGaXJzdCBjb3B5IHRoZSByZXN0IG9mIHRoZSBkYXRhLCB0aGVuIHJlcV9pZC4gSXQgaXMK LQkJICogcGFpcmVkIHdpdGggdGhlIGJhcnJpZXIgd2hlbiBhY2Nlc3NpbmcgYmVkYXRhLT5yc3Au Ci0JCSAqLwotCQlzbXBfd21iKCk7Ci0JCWJlZGF0YS0+cnNwW3JlcV9pZF0ucmVxX2lkID0gcnNw LT5yZXFfaWQ7CisJCWlmIChyc3AtPmNtZCA9PSBQVkNBTExTX1BPTEwpIHsKKwkJCXN0cnVjdCBz b2NrX21hcHBpbmcgKm1hcCA9IChzdHJ1Y3Qgc29ja19tYXBwaW5nICopCisJCQkJCQkgICByc3At PnUucG9sbC5pZDsKKworCQkJY2xlYXJfYml0KFBWQ0FMTFNfRkxBR19QT0xMX0lORkxJR0hULAor CQkJCSAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdzKTsKKwkJCS8qCisJCQkgKiBjbGVhciBJ TkZMSUdIVCwgdGhlbiBzZXQgUkVULiBJdCBwYWlycyB3aXRoCisJCQkgKiB0aGUgY2hlY2tzIGF0 IHRoZSBiZWdpbm5pbmcgb2YKKwkJCSAqIHB2Y2FsbHNfZnJvbnRfcG9sbF9wYXNzaXZlLgorCQkJ ICovCisJCQlzbXBfd21iKCk7CisJCQlzZXRfYml0KFBWQ0FMTFNfRkxBR19QT0xMX1JFVCwKKwkJ CQkodm9pZCAqKSZtYXAtPnBhc3NpdmUuZmxhZ3MpOworCQl9IGVsc2UgeworCQkJZHN0ID0gKHVp bnQ4X3QgKikmYmVkYXRhLT5yc3BbcmVxX2lkXSArCisJCQkgICAgICBzaXplb2YocnNwLT5yZXFf aWQpOworCQkJc3JjID0gKHVpbnQ4X3QgKilyc3AgKyBzaXplb2YocnNwLT5yZXFfaWQpOworCQkJ bWVtY3B5KGRzdCwgc3JjLCBzaXplb2YoKnJzcCkgLSBzaXplb2YocnNwLT5yZXFfaWQpKTsKKwkJ CS8qCisJCQkgKiBGaXJzdCBjb3B5IHRoZSByZXN0IG9mIHRoZSBkYXRhLCB0aGVuIHJlcV9pZC4g SXQgaXMKKwkJCSAqIHBhaXJlZCB3aXRoIHRoZSBiYXJyaWVyIHdoZW4gYWNjZXNzaW5nIGJlZGF0 YS0+cnNwLgorCQkJICovCisJCQlzbXBfd21iKCk7CisJCQliZWRhdGEtPnJzcFtyZXFfaWRdLnJl cV9pZCA9IHJlcV9pZDsKKwkJfQogCiAJCWRvbmUgPSAxOwogCQliZWRhdGEtPnJpbmcucnNwX2Nv bnMrKzsKQEAgLTg0Miw2ICs4NjEsMTEzIEBAIGludCBwdmNhbGxzX2Zyb250X2FjY2VwdChzdHJ1 Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLCBpbnQgZmxhZ3MpCiAJcmV0 dXJuIHJldDsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGludCBwdmNhbGxzX2Zyb250X3BvbGxfcGFz c2l2ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCQkJICAgICAgIHN0cnVjdCBwdmNhbGxzX2JlZGF0 YSAqYmVkYXRhLAorCQkJCQkgICAgICAgc3RydWN0IHNvY2tfbWFwcGluZyAqbWFwLAorCQkJCQkg ICAgICAgcG9sbF90YWJsZSAqd2FpdCkKK3sKKwlpbnQgbm90aWZ5LCByZXFfaWQsIHJldDsKKwlz dHJ1Y3QgeGVuX3B2Y2FsbHNfcmVxdWVzdCAqcmVxOworCisJaWYgKHRlc3RfYml0KFBWQ0FMTFNf RkxBR19BQ0NFUFRfSU5GTElHSFQsCisJCSAgICAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdz KSkgeworCQl1aW50MzJfdCByZXFfaWQgPSBSRUFEX09OQ0UobWFwLT5wYXNzaXZlLmluZmxpZ2h0 X3JlcV9pZCk7CisKKwkJaWYgKHJlcV9pZCAhPSBQVkNBTExTX0lOVkFMSURfSUQgJiYKKwkJICAg IFJFQURfT05DRShiZWRhdGEtPnJzcFtyZXFfaWRdLnJlcV9pZCkgPT0gcmVxX2lkKQorCQkJcmV0 dXJuIFBPTExJTiB8IFBPTExSRE5PUk07CisKKwkJcG9sbF93YWl0KGZpbGUsICZtYXAtPnBhc3Np dmUuaW5mbGlnaHRfYWNjZXB0X3JlcSwgd2FpdCk7CisJCXJldHVybiAwOworCX0KKworCWlmICh0 ZXN0X2FuZF9jbGVhcl9iaXQoUFZDQUxMU19GTEFHX1BPTExfUkVULAorCQkJICAgICAgICh2b2lk ICopJm1hcC0+cGFzc2l2ZS5mbGFncykpCisJCXJldHVybiBQT0xMSU4gfCBQT0xMUkROT1JNOwor CisJLyoKKwkgKiBGaXJzdCBjaGVjayBSRVQsIHRoZW4gSU5GTElHSFQuIE5vIGJhcnJpZXJzIG5l Y2Vzc2FyeSB0bworCSAqIGVuc3VyZSBleGVjdXRpb24gb3JkZXJpbmcgYmVjYXVzZSBvZiB0aGUg Y29uZGl0aW9uYWwKKwkgKiBpbnN0cnVjdGlvbnMgY3JlYXRpbmcgY29udHJvbCBkZXBlbmRlbmNp ZXMuCisJICovCisKKwlpZiAodGVzdF9hbmRfc2V0X2JpdChQVkNBTExTX0ZMQUdfUE9MTF9JTkZM SUdIVCwKKwkJCSAgICAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdzKSkgeworCQlwb2xsX3dh aXQoZmlsZSwgJmJlZGF0YS0+aW5mbGlnaHRfcmVxLCB3YWl0KTsKKwkJcmV0dXJuIDA7CisJfQor CisJc3Bpbl9sb2NrKCZiZWRhdGEtPnNvY2tldF9sb2NrKTsKKwlyZXQgPSBnZXRfcmVxdWVzdChi ZWRhdGEsICZyZXFfaWQpOworCWlmIChyZXQgPCAwKSB7CisJCXNwaW5fdW5sb2NrKCZiZWRhdGEt PnNvY2tldF9sb2NrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmVxID0gUklOR19HRVRfUkVRVUVT VCgmYmVkYXRhLT5yaW5nLCByZXFfaWQpOworCXJlcS0+cmVxX2lkID0gcmVxX2lkOworCXJlcS0+ Y21kID0gUFZDQUxMU19QT0xMOworCXJlcS0+dS5wb2xsLmlkID0gKHVpbnQ2NF90KSBtYXA7CisK KwliZWRhdGEtPnJpbmcucmVxX3Byb2RfcHZ0Kys7CisJUklOR19QVVNIX1JFUVVFU1RTX0FORF9D SEVDS19OT1RJRlkoJmJlZGF0YS0+cmluZywgbm90aWZ5KTsKKwlzcGluX3VubG9jaygmYmVkYXRh LT5zb2NrZXRfbG9jayk7CisJaWYgKG5vdGlmeSkKKwkJbm90aWZ5X3JlbW90ZV92aWFfaXJxKGJl ZGF0YS0+aXJxKTsKKworCXBvbGxfd2FpdChmaWxlLCAmYmVkYXRhLT5pbmZsaWdodF9yZXEsIHdh aXQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHB2Y2FsbHNfZnJvbnRf cG9sbF9hY3RpdmUoc3RydWN0IGZpbGUgKmZpbGUsCisJCQkJCSAgICAgIHN0cnVjdCBwdmNhbGxz X2JlZGF0YSAqYmVkYXRhLAorCQkJCQkgICAgICBzdHJ1Y3Qgc29ja19tYXBwaW5nICptYXAsCisJ CQkJCSAgICAgIHBvbGxfdGFibGUgKndhaXQpCit7CisJdW5zaWduZWQgaW50IG1hc2sgPSAwOwor CWludDMyX3QgaW5fZXJyb3IsIG91dF9lcnJvcjsKKwlzdHJ1Y3QgcHZjYWxsc19kYXRhX2ludGYg KmludGYgPSBtYXAtPmFjdGl2ZS5yaW5nOworCisJb3V0X2Vycm9yID0gaW50Zi0+b3V0X2Vycm9y OworCWluX2Vycm9yID0gaW50Zi0+aW5fZXJyb3I7CisKKwlwb2xsX3dhaXQoZmlsZSwgJm1hcC0+ YWN0aXZlLmluZmxpZ2h0X2Nvbm5fcmVxLCB3YWl0KTsKKwlpZiAocHZjYWxsc19mcm9udF93cml0 ZV90b2RvKG1hcCkpCisJCW1hc2sgfD0gUE9MTE9VVCB8IFBPTExXUk5PUk07CisJaWYgKHB2Y2Fs bHNfZnJvbnRfcmVhZF90b2RvKG1hcCkpCisJCW1hc2sgfD0gUE9MTElOIHwgUE9MTFJETk9STTsK KwlpZiAoaW5fZXJyb3IgIT0gMCB8fCBvdXRfZXJyb3IgIT0gMCkKKwkJbWFzayB8PSBQT0xMRVJS OworCisJcmV0dXJuIG1hc2s7Cit9CisKK3Vuc2lnbmVkIGludCBwdmNhbGxzX2Zyb250X3BvbGwo c3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkgICAgICAgcG9sbF90 YWJsZSAqd2FpdCkKK3sKKwlzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKKwlzdHJ1Y3Qg c29ja19tYXBwaW5nICptYXA7CisJaW50IHJldDsKKworCXB2Y2FsbHNfZW50ZXIoKTsKKwlpZiAo IXB2Y2FsbHNfZnJvbnRfZGV2KSB7CisJCXB2Y2FsbHNfZXhpdCgpOworCQlyZXR1cm4gUE9MTE5W QUw7CisJfQorCWJlZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmcHZjYWxsc19mcm9udF9kZXYtPmRl dik7CisKKwltYXAgPSAoc3RydWN0IHNvY2tfbWFwcGluZyAqKSBzb2NrLT5zay0+c2tfc2VuZF9o ZWFkOworCWlmICghbWFwKSB7CisJCXB2Y2FsbHNfZXhpdCgpOworCQlyZXR1cm4gUE9MTE5WQUw7 CisJfQorCWlmIChtYXAtPmFjdGl2ZV9zb2NrZXQpCisJCXJldCA9IHB2Y2FsbHNfZnJvbnRfcG9s bF9hY3RpdmUoZmlsZSwgYmVkYXRhLCBtYXAsIHdhaXQpOworCWVsc2UKKwkJcmV0ID0gcHZjYWxs c19mcm9udF9wb2xsX3Bhc3NpdmUoZmlsZSwgYmVkYXRhLCBtYXAsIHdhaXQpOworCXB2Y2FsbHNf ZXhpdCgpOworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeGVuYnVzX2Rl dmljZV9pZCBwdmNhbGxzX2Zyb250X2lkc1tdID0gewogCXsgInB2Y2FsbHMiIH0sCiAJeyAiIiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmggYi9kcml2ZXJzL3hlbi9w dmNhbGxzLWZyb250LmgKaW5kZXggZGUyNDA0MS4uMjVlMDViOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy94ZW4vcHZjYWxscy1mcm9udC5oCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaApA QCAtMjAsNSArMjAsOCBAQCBpbnQgcHZjYWxsc19mcm9udF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQg KnNvY2ssCiAJCQkgIHN0cnVjdCBtc2doZHIgKm1zZywKIAkJCSAgc2l6ZV90IGxlbiwKIAkJCSAg aW50IGZsYWdzKTsKK3Vuc2lnbmVkIGludCBwdmNhbGxzX2Zyb250X3BvbGwoc3RydWN0IGZpbGUg KmZpbGUsCisJCQkJc3RydWN0IHNvY2tldCAqc29jaywKKwkJCQlwb2xsX3RhYmxlICp3YWl0KTsK IAogI2VuZGlmCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=