From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 04/13] xen/pvcalls: implement socket command and handle events Date: Mon, 31 Jul 2017 15:57:26 -0700 Message-ID: <1501541855-7354-4-git-send-email-sstabellini@kernel.org> References: <1501541855-7354-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: <1501541855-7354-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 bmcgb24gd2FpdHF1ZXVlLgoKcHZjYWxsc3NfbG9jayBwcm90ZWN0cyBhY2Nlc3NlcyB0byB0aGUg cmluZy4KCkNyZWF0ZSBhIG5ldyBzdHJ1Y3Qgc29ja19tYXBwaW5nIGFuZCBjb252ZXJ0IHRoZSBw b2ludGVyIGludG8gYW4KdWludDY0X3QgYW5kIHVzZSBpdCBhcyBpZCBmb3IgdGhlIG5ldyBzb2Nr ZXQgdG8gcGFzcyB0byB0aGUgYmFja2VuZC4gVGhlCnN0cnVjdCB3aWxsIGJlIGZ1bGx5IGluaXRp YWxpemVkIGxhdGVyIG9uIGNvbm5lY3Qgb3IgYmluZC4gSW4gdGhpcyBwYXRjaAp0aGUgc3RydWN0 IHNvY2tfbWFwcGluZyBpcyBlbXB0eSwgdGhlIGZpZWxkcyB3aWxsIGJlIGFkZGVkIGJ5IHRoZSBu ZXh0CnBhdGNoLgoKc29jay0+c2stPnNrX3NlbmRfaGVhZCBpcyBub3QgdXNlZCBmb3IgaXAgc29j a2V0czogcmV1c2UgdGhlIGZpZWxkIHRvCnN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3RydWN0IHNv Y2tfbWFwcGluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBzb2NrZXQuClRoaXMgd2F5LCB3ZSBjYW4g ZWFzaWx5IGdldCB0aGUgc3RydWN0IHNvY2tfbWFwcGluZyBmcm9tIHRoZSBzdHJ1Y3QKc29ja2V0 LgoKU2lnbmVkLW9mZi1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vQGFwb3JldG8uY29t PgpDQzogYm9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20KQ0M6IGpncm9zc0BzdXNlLmNvbQotLS0K IGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYyB8IDExOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oIHwgICA4 ICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVu L3B2Y2FsbHMtZnJvbnQuYyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYwppbmRleCAyYWZl MzZkLi43YzRhN2NiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMKKysr IGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5jbHVk ZSA8eGVuL3hlbmJ1cy5oPgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvaW8vcHZjYWxscy5oPgog CisjaW5jbHVkZSAicHZjYWxscy1mcm9udC5oIgorCiAjZGVmaW5lIFBWQ0FMTFNfSU5WQUxJRF9J RCBVSU5UX01BWAogI2RlZmluZSBQVkNBTExTX1JJTkdfT1JERVIgWEVOQlVTX01BWF9SSU5HX0dS QU5UX09SREVSCiAjZGVmaW5lIFBWQ0FMTFNfTlJfUkVRX1BFUl9SSU5HIF9fQ09OU1RfUklOR19T SVpFKHhlbl9wdmNhbGxzLCBYRU5fUEFHRV9TSVpFKQpAQCAtMzgsMTEgKzQwLDEyOCBAQCBzdHJ1 Y3QgcHZjYWxsc19iZWRhdGEgewogfTsKIHN0YXRpYyBzdHJ1Y3QgeGVuYnVzX2RldmljZSAqcHZj YWxsc19mcm9udF9kZXY7CiAKK3N0cnVjdCBzb2NrX21hcHBpbmcgeworCWJvb2wgYWN0aXZlX3Nv Y2tldDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJc3RydWN0IHNvY2tldCAqc29jazsKK307 CisKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9yZXF1ZXN0KHN0cnVjdCBwdmNhbGxzX2JlZGF0YSAq YmVkYXRhLCBpbnQgKnJlcV9pZCkKK3sKKwkqcmVxX2lkID0gYmVkYXRhLT5yaW5nLnJlcV9wcm9k X3B2dCAmIChSSU5HX1NJWkUoJmJlZGF0YS0+cmluZykgLSAxKTsKKwlpZiAoUklOR19GVUxMKCZi ZWRhdGEtPnJpbmcpIHx8CisJICAgIFJFQURfT05DRShiZWRhdGEtPnJzcFsqcmVxX2lkXS5yZXFf aWQpICE9IFBWQ0FMTFNfSU5WQUxJRF9JRCkKKwkJcmV0dXJuIC1FQUdBSU47CisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqZGV2X2lkKQogeworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYgPSBkZXZf aWQ7CisJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CisJc3RydWN0IHhlbl9wdmNhbGxz X3Jlc3BvbnNlICpyc3A7CisJdWludDhfdCAqc3JjLCAqZHN0OworCWludCByZXFfaWQgPSAwLCBt b3JlID0gMCwgZG9uZSA9IDA7CisKKwlpZiAoZGV2ID09IE5VTEwpCisJCXJldHVybiBJUlFfSEFO RExFRDsKKworCWJlZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmZGV2LT5kZXYpOworCWlmIChiZWRh dGEgPT0gTlVMTCkKKwkJcmV0dXJuIElSUV9IQU5ETEVEOworCithZ2FpbjoKKwl3aGlsZSAoUklO R19IQVNfVU5DT05TVU1FRF9SRVNQT05TRVMoJmJlZGF0YS0+cmluZykpIHsKKwkJcnNwID0gUklO R19HRVRfUkVTUE9OU0UoJmJlZGF0YS0+cmluZywgYmVkYXRhLT5yaW5nLnJzcF9jb25zKTsKKwor CQlyZXFfaWQgPSByc3AtPnJlcV9pZDsKKwkJZHN0ID0gKHVpbnQ4X3QgKikmYmVkYXRhLT5yc3Bb cmVxX2lkXSArIHNpemVvZihyc3AtPnJlcV9pZCk7CisJCXNyYyA9ICh1aW50OF90ICopcnNwICsg c2l6ZW9mKHJzcC0+cmVxX2lkKTsKKwkJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2YoKnJzcCkgLSBz aXplb2YocnNwLT5yZXFfaWQpKTsKKwkJLyoKKwkJICogRmlyc3QgY29weSB0aGUgcmVzdCBvZiB0 aGUgZGF0YSwgdGhlbiByZXFfaWQuIEl0IGlzCisJCSAqIHBhaXJlZCB3aXRoIHRoZSBiYXJyaWVy IHdoZW4gYWNjZXNzaW5nIGJlZGF0YS0+cnNwLgorCQkgKi8KKwkJc21wX3dtYigpOworCQlXUklU RV9PTkNFKGJlZGF0YS0+cnNwW3JlcV9pZF0ucmVxX2lkLCByc3AtPnJlcV9pZCk7CisKKwkJZG9u ZSA9IDE7CisJCWJlZGF0YS0+cmluZy5yc3BfY29ucysrOworCX0KKworCVJJTkdfRklOQUxfQ0hF Q0tfRk9SX1JFU1BPTlNFUygmYmVkYXRhLT5yaW5nLCBtb3JlKTsKKwlpZiAobW9yZSkKKwkJZ290 byBhZ2FpbjsKKwlpZiAoZG9uZSkKKwkJd2FrZV91cCgmYmVkYXRhLT5pbmZsaWdodF9yZXEpOwog CXJldHVybiBJUlFfSEFORExFRDsKIH0KIAoraW50IHB2Y2FsbHNfZnJvbnRfc29ja2V0KHN0cnVj dCBzb2NrZXQgKnNvY2spCit7CisJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CisJc3Ry dWN0IHNvY2tfbWFwcGluZyAqbWFwID0gTlVMTDsKKwlzdHJ1Y3QgeGVuX3B2Y2FsbHNfcmVxdWVz dCAqcmVxOworCWludCBub3RpZnksIHJlcV9pZCwgcmV0OworCisJaWYgKCFwdmNhbGxzX2Zyb250 X2RldikKKwkJcmV0dXJuIC1FQUNDRVM7CisJLyoKKwkgKiBQVkNhbGxzIG9ubHkgc3VwcG9ydHMg ZG9tYWluIEFGX0lORVQsCisJICogdHlwZSBTT0NLX1NUUkVBTSBhbmQgcHJvdG9jb2wgMCBzb2Nr ZXRzIGZvciBub3cuCisJICoKKwkgKiBDaGVjayBzb2NrZXQgdHlwZSBoZXJlLCBBRl9JTkVUIGFu ZCBwcm90b2NvbCBjaGVja3MgYXJlIGRvbmUKKwkgKiBieSB0aGUgY2FsbGVyLgorCSAqLworCWlm IChzb2NrLT50eXBlICE9IFNPQ0tfU1RSRUFNKQorCSAgICByZXR1cm4gLUVOT1RTVVBQOworCisJ YmVkYXRhID0gZGV2X2dldF9kcnZkYXRhKCZwdmNhbGxzX2Zyb250X2Rldi0+ZGV2KTsKKworCW1h cCA9IGt6YWxsb2Moc2l6ZW9mKCptYXApLCBHRlBfS0VSTkVMKTsKKwlpZiAobWFwID09IE5VTEwp CisJCXJldHVybiAtRU5PTUVNOworCS8qCisJICogc29jay0+c2stPnNrX3NlbmRfaGVhZCBpcyBu b3QgdXNlZCBmb3IgaXAgc29ja2V0czogcmV1c2UgdGhlCisJICogZmllbGQgdG8gc3RvcmUgYSBw b2ludGVyIHRvIHRoZSBzdHJ1Y3Qgc29ja19tYXBwaW5nCisJICogY29ycmVzcG9uZGluZyB0byB0 aGUgc29ja2V0LiBUaGlzIHdheSwgd2UgY2FuIGVhc2lseSBnZXQgdGhlCisJICogc3RydWN0IHNv Y2tfbWFwcGluZyBmcm9tIHRoZSBzdHJ1Y3Qgc29ja2V0LgorCSAqLworCVdSSVRFX09OQ0Uoc29j ay0+c2stPnNrX3NlbmRfaGVhZCwgKHZvaWQgKiltYXApOworCisJc3Bpbl9sb2NrKCZiZWRhdGEt PnB2Y2FsbHNzX2xvY2spOworCWxpc3RfYWRkX3RhaWwoJm1hcC0+bGlzdCwgJmJlZGF0YS0+c29j a2V0X21hcHBpbmdzKTsKKworCXJldCA9IGdldF9yZXF1ZXN0KGJlZGF0YSwgJnJlcV9pZCk7CisJ aWYgKHJldCA8IDApIHsKKwkJc3Bpbl91bmxvY2soJmJlZGF0YS0+cHZjYWxsc3NfbG9jayk7CisJ CXJldHVybiByZXQ7CisJfQorCXJlcSA9IFJJTkdfR0VUX1JFUVVFU1QoJmJlZGF0YS0+cmluZywg cmVxX2lkKTsKKwlyZXEtPnJlcV9pZCA9IHJlcV9pZDsKKwlyZXEtPmNtZCA9IFBWQ0FMTFNfU09D S0VUOworCXJlcS0+dS5zb2NrZXQuaWQgPSAodWludDY0X3QpIG1hcDsKKwlyZXEtPnUuc29ja2V0 LmRvbWFpbiA9IEFGX0lORVQ7CisJcmVxLT51LnNvY2tldC50eXBlID0gU09DS19TVFJFQU07CisJ cmVxLT51LnNvY2tldC5wcm90b2NvbCA9IDA7CisKKwliZWRhdGEtPnJpbmcucmVxX3Byb2RfcHZ0 Kys7CisJUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkoJmJlZGF0YS0+cmluZywg bm90aWZ5KTsKKwlzcGluX3VubG9jaygmYmVkYXRhLT5wdmNhbGxzc19sb2NrKTsKKwlpZiAobm90 aWZ5KQorCQlub3RpZnlfcmVtb3RlX3ZpYV9pcnEoYmVkYXRhLT5pcnEpOworCisJd2FpdF9ldmVu dChiZWRhdGEtPmluZmxpZ2h0X3JlcSwKKwkJICAgUkVBRF9PTkNFKGJlZGF0YS0+cnNwW3JlcV9p ZF0ucmVxX2lkKSA9PSByZXFfaWQpOworCisJcmV0ID0gYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXQ7 CisJLyogcmVhZCByZXQsIHRoZW4gc2V0IHRoaXMgcnNwIHNsb3QgdG8gYmUgcmV1c2VkICovCisJ c21wX21iKCk7CisJV1JJVEVfT05DRShiZWRhdGEtPnJzcFtyZXFfaWRdLnJlcV9pZCwgUFZDQUxM U19JTlZBTElEX0lEKTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg eGVuYnVzX2RldmljZV9pZCBwdmNhbGxzX2Zyb250X2lkc1tdID0gewogCXsgInB2Y2FsbHMiIH0s CiAJeyAiIiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmggYi9kcml2 ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYjdkYWJlZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQu aApAQCAtMCwwICsxLDggQEAKKyNpZm5kZWYgX19QVkNBTExTX0ZST05UX0hfXworI2RlZmluZSBf X1BWQ0FMTFNfRlJPTlRfSF9fCisKKyNpbmNsdWRlIDxsaW51eC9uZXQuaD4KKworaW50IHB2Y2Fs bHNfZnJvbnRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2spOworCisjZW5kaWYKLS0gCjEuOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==