From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v5 04/13] xen/pvcalls: implement socket command and handle events Date: Fri, 6 Oct 2017 17:30:18 -0700 Message-ID: <1507336227-20477-4-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 U2VuZCBhIFBWQ0FMTFNfU09DS0VUIGNvbW1hbmQgdG8gdGhlIGJhY2tlbmQsIHVzZSB0aGUgbWFz a2VkCnJlcV9wcm9kX3B2dCBhcyByZXFfaWQuIFRoaXMgd2F5LCByZXFfaWQgaXMgZ3VhcmFudGVl ZCB0byBiZSBiZXR3ZWVuIDAKYW5kIFBWQ0FMTFNfTlJfUkVRX1BFUl9SSU5HLiBXZSBhbHJlYWR5 IGhhdmUgYSBzbG90IGluIHRoZSByc3AgYXJyYXkKcmVhZHkgZm9yIHRoZSByZXNwb25zZSwgYW5k IHRoZXJlIGNhbm5vdCBiZSB0d28gb3V0c3RhbmRpbmcgcmVzcG9uc2VzCndpdGggdGhlIHNhbWUg cmVxX2lkLgoKV2FpdCBmb3IgdGhlIHJlc3BvbnNlIGJ5IHdhaXRpbmcgb24gdGhlIGluZmxpZ2h0 X3JlcSB3YWl0cXVldWUgYW5kCmNoZWNrIGZvciB0aGUgcmVxX2lkIGZpZWxkIGluIHJzcFtyZXFf aWRdLiBVc2UgYXRvbWljIGFjY2Vzc2VzIGFuZApiYXJyaWVycyB0byByZWFkIHRoZSBmaWVsZC4g Tm90ZSB0aGF0IHRoZSBiYXJyaWVycyBhcmUgc2ltcGxlIHNtcApiYXJyaWVycyAoYXMgb3Bwb3Nl ZCB0byB2aXJ0IGJhcnJpZXJzKSBiZWNhdXNlIHRoZXkgYXJlIGZvciBpbnRlcm5hbApmcm9udGVu ZCBzeW5jaHJvbml6YXRpb24sIG5vdCBmcm9udGVuZDwtPmJhY2tlbmQgY29tbXVuaWNhdGlvbi4K Ck9uY2UgYSByZXNwb25zZSBpcyByZWNlaXZlZCwgY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgcnNw IHNsb3QgYnkgc2V0dGluZwpyZXFfaWQgdG8gUFZDQUxMU19JTlZBTElEX0lELiBOb3RlIHRoYXQg UFZDQUxMU19JTlZBTElEX0lEIGlzIGludmFsaWQKb25seSBmcm9tIHRoZSBmcm9udGVuZCBwb2lu dCBvZiB2aWV3LiBJdCBpcyBub3QgcGFydCBvZiB0aGUgUFZDYWxscwpwcm90b2NvbC4KCnB2Y2Fs bHNfZnJvbnRfZXZlbnRfaGFuZGxlciBpcyBpbiBjaGFyZ2Ugb2YgY29weWluZyByZXNwb25zZXMg ZnJvbSB0aGUKcmluZyB0byB0aGUgYXBwcm9wcmlhdGUgcnNwIHNsb3QuIEl0IGlzIGRvbmUgYnkg Y29weWluZyB0aGUgYm9keSBvZiB0aGUKcmVzcG9uc2UgZmlyc3QsIHRoZW4gYnkgY29weWluZyBy ZXFfaWQgYXRvbWljYWxseS4gQWZ0ZXIgdGhlIGNvcGllcywKd2FrZSB1cCBhbnlib2R5IHdhaXRp bmcgb24gd2FpdHF1ZXVlLgoKc29ja2V0X2xvY2sgcHJvdGVjdHMgYWNjZXNzZXMgdG8gdGhlIHJp bmcuCgpDcmVhdGUgYSBuZXcgc3RydWN0IHNvY2tfbWFwcGluZyBhbmQgY29udmVydCB0aGUgcG9p bnRlciBpbnRvIGFuCnVpbnQ2NF90IGFuZCB1c2UgaXQgYXMgaWQgZm9yIHRoZSBuZXcgc29ja2V0 IHRvIHBhc3MgdG8gdGhlIGJhY2tlbmQuIFRoZQpzdHJ1Y3Qgd2lsbCBiZSBmdWxseSBpbml0aWFs aXplZCBsYXRlciBvbiBjb25uZWN0IG9yIGJpbmQuIEluIHRoaXMgcGF0Y2gKdGhlIHN0cnVjdCBz b2NrX21hcHBpbmcgaXMgZW1wdHksIHRoZSBmaWVsZHMgd2lsbCBiZSBhZGRlZCBieSB0aGUgbmV4 dApwYXRjaC4KCnNvY2stPnNrLT5za19zZW5kX2hlYWQgaXMgbm90IHVzZWQgZm9yIGlwIHNvY2tl dHM6IHJldXNlIHRoZSBmaWVsZCB0bwpzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBzb2Nr X21hcHBpbmcgY29ycmVzcG9uZGluZyB0byB0aGUgc29ja2V0LgpUaGlzIHdheSwgd2UgY2FuIGVh c2lseSBnZXQgdGhlIHN0cnVjdCBzb2NrX21hcHBpbmcgZnJvbSB0aGUgc3RydWN0CnNvY2tldC4K ClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub0BhcG9yZXRvLmNvbT4K Q0M6IGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tCkNDOiBqZ3Jvc3NAc3VzZS5jb20KLS0tCiBk cml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMgfCAxMzMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaCB8ICAgOCAr KysKIDIgZmlsZXMgY2hhbmdlZCwgMTQxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9w dmNhbGxzLWZyb250LmMgYi9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMKaW5kZXggNDkwYzRj MS4uOTVhOTg1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCisrKyBi L2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYwpAQCAtMjAsNiArMjAsOCBAQAogI2luY2x1ZGUg PHhlbi94ZW5idXMuaD4KICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3B2Y2FsbHMuaD4KIAor I2luY2x1ZGUgInB2Y2FsbHMtZnJvbnQuaCIKKwogI2RlZmluZSBQVkNBTExTX0lOVkFMSURfSUQg VUlOVF9NQVgKICNkZWZpbmUgUFZDQUxMU19SSU5HX09SREVSIFhFTkJVU19NQVhfUklOR19HUkFO VF9PUkRFUgogI2RlZmluZSBQVkNBTExTX05SX1JFUV9QRVJfUklORyBfX0NPTlNUX1JJTkdfU0la RSh4ZW5fcHZjYWxscywgWEVOX1BBR0VfU0laRSkKQEAgLTUwLDggKzUyLDY0IEBAIHN0cnVjdCBw dmNhbGxzX2JlZGF0YSB7CiAJYXRvbWljX2RlYygmcHZjYWxsc19yZWZjb3VudCk7ICAgICAgXAog fQogCitzdHJ1Y3Qgc29ja19tYXBwaW5nIHsKKwlib29sIGFjdGl2ZV9zb2NrZXQ7CisJc3RydWN0 IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBzb2NrZXQgKnNvY2s7Cit9OworCitzdGF0aWMgaW5s aW5lIGludCBnZXRfcmVxdWVzdChzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YSwgaW50ICpy ZXFfaWQpCit7CisJKnJlcV9pZCA9IGJlZGF0YS0+cmluZy5yZXFfcHJvZF9wdnQgJiAoUklOR19T SVpFKCZiZWRhdGEtPnJpbmcpIC0gMSk7CisJaWYgKFJJTkdfRlVMTCgmYmVkYXRhLT5yaW5nKSB8 fAorCSAgICBiZWRhdGEtPnJzcFsqcmVxX2lkXS5yZXFfaWQgIT0gUFZDQUxMU19JTlZBTElEX0lE KQorCQlyZXR1cm4gLUVBR0FJTjsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGlycXJldHVybl90 IHB2Y2FsbHNfZnJvbnRfZXZlbnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CisJ c3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IGRldl9pZDsKKwlzdHJ1Y3QgcHZjYWxsc19iZWRh dGEgKmJlZGF0YTsKKwlzdHJ1Y3QgeGVuX3B2Y2FsbHNfcmVzcG9uc2UgKnJzcDsKKwl1aW50OF90 ICpzcmMsICpkc3Q7CisJaW50IHJlcV9pZCA9IDAsIG1vcmUgPSAwLCBkb25lID0gMDsKKworCWlm IChkZXYgPT0gTlVMTCkKKwkJcmV0dXJuIElSUV9IQU5ETEVEOworCisJcHZjYWxsc19lbnRlcigp OworCWJlZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmZGV2LT5kZXYpOworCWlmIChiZWRhdGEgPT0g TlVMTCkgeworCQlwdmNhbGxzX2V4aXQoKTsKKwkJcmV0dXJuIElSUV9IQU5ETEVEOworCX0KKwor YWdhaW46CisJd2hpbGUgKFJJTkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKCZiZWRhdGEtPnJp bmcpKSB7CisJCXJzcCA9IFJJTkdfR0VUX1JFU1BPTlNFKCZiZWRhdGEtPnJpbmcsIGJlZGF0YS0+ cmluZy5yc3BfY29ucyk7CisKKwkJcmVxX2lkID0gcnNwLT5yZXFfaWQ7CisJCWRzdCA9ICh1aW50 OF90ICopJmJlZGF0YS0+cnNwW3JlcV9pZF0gKyBzaXplb2YocnNwLT5yZXFfaWQpOworCQlzcmMg PSAodWludDhfdCAqKXJzcCArIHNpemVvZihyc3AtPnJlcV9pZCk7CisJCW1lbWNweShkc3QsIHNy Yywgc2l6ZW9mKCpyc3ApIC0gc2l6ZW9mKHJzcC0+cmVxX2lkKSk7CisJCS8qCisJCSAqIEZpcnN0 IGNvcHkgdGhlIHJlc3Qgb2YgdGhlIGRhdGEsIHRoZW4gcmVxX2lkLiBJdCBpcworCQkgKiBwYWly ZWQgd2l0aCB0aGUgYmFycmllciB3aGVuIGFjY2Vzc2luZyBiZWRhdGEtPnJzcC4KKwkJICovCisJ CXNtcF93bWIoKTsKKwkJYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXFfaWQgPSByc3AtPnJlcV9pZDsK KworCQlkb25lID0gMTsKKwkJYmVkYXRhLT5yaW5nLnJzcF9jb25zKys7CisJfQorCisJUklOR19G SU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCZiZWRhdGEtPnJpbmcsIG1vcmUpOworCWlmIChtb3Jl KQorCQlnb3RvIGFnYWluOworCWlmIChkb25lKQorCQl3YWtlX3VwKCZiZWRhdGEtPmluZmxpZ2h0 X3JlcSk7CisJcHZjYWxsc19leGl0KCk7CiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCkBAIC02 MCw2ICsxMTgsODEgQEAgc3RhdGljIHZvaWQgcHZjYWxsc19mcm9udF9mcmVlX21hcChzdHJ1Y3Qg cHZjYWxsc19iZWRhdGEgKmJlZGF0YSwKIHsKIH0KIAoraW50IHB2Y2FsbHNfZnJvbnRfc29ja2V0 KHN0cnVjdCBzb2NrZXQgKnNvY2spCit7CisJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7 CisJc3RydWN0IHNvY2tfbWFwcGluZyAqbWFwID0gTlVMTDsKKwlzdHJ1Y3QgeGVuX3B2Y2FsbHNf cmVxdWVzdCAqcmVxOworCWludCBub3RpZnksIHJlcV9pZCwgcmV0OworCisJLyoKKwkgKiBQVkNh bGxzIG9ubHkgc3VwcG9ydHMgZG9tYWluIEFGX0lORVQsCisJICogdHlwZSBTT0NLX1NUUkVBTSBh bmQgcHJvdG9jb2wgMCBzb2NrZXRzIGZvciBub3cuCisJICoKKwkgKiBDaGVjayBzb2NrZXQgdHlw ZSBoZXJlLCBBRl9JTkVUIGFuZCBwcm90b2NvbCBjaGVja3MgYXJlIGRvbmUKKwkgKiBieSB0aGUg Y2FsbGVyLgorCSAqLworCWlmIChzb2NrLT50eXBlICE9IFNPQ0tfU1RSRUFNKQorCQlyZXR1cm4g LUVOT1RTVVBQOworCisJcHZjYWxsc19lbnRlcigpOworCWlmICghcHZjYWxsc19mcm9udF9kZXYp IHsKKwkJcHZjYWxsc19leGl0KCk7CisJCXJldHVybiAtRUFDQ0VTOworCX0KKwliZWRhdGEgPSBk ZXZfZ2V0X2RydmRhdGEoJnB2Y2FsbHNfZnJvbnRfZGV2LT5kZXYpOworCisJbWFwID0ga3phbGxv YyhzaXplb2YoKm1hcCksIEdGUF9LRVJORUwpOworCWlmIChtYXAgPT0gTlVMTCkgeworCQlwdmNh bGxzX2V4aXQoKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJc3Bpbl9sb2NrKCZiZWRhdGEt PnNvY2tldF9sb2NrKTsKKworCXJldCA9IGdldF9yZXF1ZXN0KGJlZGF0YSwgJnJlcV9pZCk7CisJ aWYgKHJldCA8IDApIHsKKwkJa2ZyZWUobWFwKTsKKwkJc3Bpbl91bmxvY2soJmJlZGF0YS0+c29j a2V0X2xvY2spOworCQlwdmNhbGxzX2V4aXQoKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKgor CSAqIHNvY2stPnNrLT5za19zZW5kX2hlYWQgaXMgbm90IHVzZWQgZm9yIGlwIHNvY2tldHM6IHJl dXNlIHRoZQorCSAqIGZpZWxkIHRvIHN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3RydWN0IHNvY2tf bWFwcGluZworCSAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNvY2tldC4gVGhpcyB3YXksIHdlIGNh biBlYXNpbHkgZ2V0IHRoZQorCSAqIHN0cnVjdCBzb2NrX21hcHBpbmcgZnJvbSB0aGUgc3RydWN0 IHNvY2tldC4KKwkgKi8KKwlzb2NrLT5zay0+c2tfc2VuZF9oZWFkID0gKHZvaWQgKiltYXA7CisJ bGlzdF9hZGRfdGFpbCgmbWFwLT5saXN0LCAmYmVkYXRhLT5zb2NrZXRfbWFwcGluZ3MpOworCisJ cmVxID0gUklOR19HRVRfUkVRVUVTVCgmYmVkYXRhLT5yaW5nLCByZXFfaWQpOworCXJlcS0+cmVx X2lkID0gcmVxX2lkOworCXJlcS0+Y21kID0gUFZDQUxMU19TT0NLRVQ7CisJcmVxLT51LnNvY2tl dC5pZCA9ICh1aW50NjRfdCkgbWFwOworCXJlcS0+dS5zb2NrZXQuZG9tYWluID0gQUZfSU5FVDsK KwlyZXEtPnUuc29ja2V0LnR5cGUgPSBTT0NLX1NUUkVBTTsKKwlyZXEtPnUuc29ja2V0LnByb3Rv Y29sID0gSVBQUk9UT19JUDsKKworCWJlZGF0YS0+cmluZy5yZXFfcHJvZF9wdnQrKzsKKwlSSU5H X1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWSgmYmVkYXRhLT5yaW5nLCBub3RpZnkpOwor CXNwaW5fdW5sb2NrKCZiZWRhdGEtPnNvY2tldF9sb2NrKTsKKwlpZiAobm90aWZ5KQorCQlub3Rp ZnlfcmVtb3RlX3ZpYV9pcnEoYmVkYXRhLT5pcnEpOworCisJd2FpdF9ldmVudChiZWRhdGEtPmlu ZmxpZ2h0X3JlcSwKKwkJICAgUkVBRF9PTkNFKGJlZGF0YS0+cnNwW3JlcV9pZF0ucmVxX2lkKSA9 PSByZXFfaWQpOworCisJLyogcmVhZCByZXFfaWQsIHRoZW4gdGhlIGNvbnRlbnQgKi8KKwlzbXBf cm1iKCk7CisJcmV0ID0gYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXQ7CisJYmVkYXRhLT5yc3BbcmVx X2lkXS5yZXFfaWQgPSBQVkNBTExTX0lOVkFMSURfSUQ7CisKKwlwdmNhbGxzX2V4aXQoKTsKKwly ZXR1cm4gcmV0OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2VfaWQgcHZj YWxsc19mcm9udF9pZHNbXSA9IHsKIAl7ICJwdmNhbGxzIiB9LAogCXsgIiIgfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9u dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZGFiZWQKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKQEAgLTAsMCArMSw4IEBACisj aWZuZGVmIF9fUFZDQUxMU19GUk9OVF9IX18KKyNkZWZpbmUgX19QVkNBTExTX0ZST05UX0hfXwor CisjaW5jbHVkZSA8bGludXgvbmV0Lmg+CisKK2ludCBwdmNhbGxzX2Zyb250X3NvY2tldChzdHJ1 Y3Qgc29ja2V0ICpzb2NrKTsKKworI2VuZGlmCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=