From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v2 11/18] xen/pvcalls: implement accept command Date: Fri, 19 May 2017 16:22:52 -0700 Message-ID: <1495236179-27776-11-git-send-email-sstabellini@kernel.org> References: <1495236179-27776-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: <1495236179-27776-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 SW1wbGVtZW50IHRoZSBhY2NlcHQgY29tbWFuZCBieSBjYWxsaW5nIGluZXRfYWNjZXB0LiBUbyBh dm9pZCBibG9ja2luZwppbiB0aGUga2VybmVsLCBjYWxsIGluZXRfYWNjZXB0KE9fTk9OQkxPQ0sp IGZyb20gYSB3b3JrcXVldWUsIHdoaWNoIGdldApzY2hlZHVsZWQgb24gc2tfZGF0YV9yZWFkeSAo Zm9yIGEgcGFzc2l2ZSBzb2NrZXQsIGl0IG1lYW5zIHRoYXQgdGhlcmUKYXJlIGNvbm5lY3Rpb25z IHRvIGFjY2VwdCkuCgpVc2UgdGhlIHJlcWNvcHkgZmllbGQgdG8gc3RvcmUgdGhlIHJlcXVlc3Qu IEFjY2VwdCB0aGUgbmV3IHNvY2tldCBmcm9tCnRoZSBkZWxheWVkIHdvcmsgZnVuY3Rpb24sIGNy ZWF0ZSBhIG5ldyBzb2NrX21hcHBpbmcgZm9yIGl0LCBtYXAKdGhlIGluZGV4ZXMgcGFnZSBhbmQg ZGF0YSByaW5nLCBhbmQgcmVwbHkgdG8gdGhlIG90aGVyIGVuZC4gQWxsb2NhdGUgYW4KaW93b3Jr ZXIgZm9yIHRoZSBzb2NrZXQuCgpPbmx5IHN1cHBvcnQgb25lIG91dHN0YW5kaW5nIGJsb2NraW5n IGFjY2VwdCByZXF1ZXN0IGZvciBldmVyeSBzb2NrZXQgYXQKYW55IHRpbWUuCgpBZGQgYSBmaWVs ZCB0byBzb2NrX21hcHBpbmcgdG8gcmVtZW1iZXIgdGhlIHBhc3NpdmUgc29ja2V0IGZyb20gd2hp Y2ggYW4KYWN0aXZlIHNvY2tldCB3YXMgY3JlYXRlZC4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3RlZmFub0BhcG9yZXRvLmNvbT4KQ0M6IGJvcmlzLm9zdHJvdnNreUBvcmFj bGUuY29tCkNDOiBqZ3Jvc3NAc3VzZS5jb20KLS0tCiBkcml2ZXJzL3hlbi9wdmNhbGxzLWJhY2su YyB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtYmFjay5jIGIvZHJpdmVycy94ZW4vcHZjYWxscy1iYWNr LmMKaW5kZXggZGU4MmJmNS4uYmM2NDFhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcHZjYWxs cy1iYWNrLmMKKysrIGIvZHJpdmVycy94ZW4vcHZjYWxscy1iYWNrLmMKQEAgLTY2LDYgKzY2LDcg QEAgc3RydWN0IHB2Y2FsbHNfaW93b3JrZXIgewogc3RydWN0IHNvY2tfbWFwcGluZyB7CiAJc3Ry dWN0IGxpc3RfaGVhZCBsaXN0OwogCXN0cnVjdCBwdmNhbGxzX2JhY2tfcHJpdiAqcHJpdjsKKwlz dHJ1Y3Qgc29ja3Bhc3NfbWFwcGluZyAqc29ja3Bhc3M7CiAJc3RydWN0IHNvY2tldCAqc29jazsK IAl1aW50NjRfdCBpZDsKIAlncmFudF9yZWZfdCByZWY7CkBAIC0yNjcsMTAgKzI2OCwxMzEgQEAg c3RhdGljIGludCBwdmNhbGxzX2JhY2tfcmVsZWFzZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2 LAogCiBzdGF0aWMgdm9pZCBfX3B2Y2FsbHNfYmFja19hY2NlcHQoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQogeworCXN0cnVjdCBzb2NrcGFzc19tYXBwaW5nICptYXBwYXNzID0gY29udGFpbmVy X29mKAorCQl3b3JrLCBzdHJ1Y3Qgc29ja3Bhc3NfbWFwcGluZywgcmVnaXN0ZXJfd29yayk7CisJ c3RydWN0IHNvY2tfbWFwcGluZyAqbWFwOworCXN0cnVjdCBwdmNhbGxzX2lvd29ya2VyICppb3c7 CisJc3RydWN0IHB2Y2FsbHNfYmFja19wcml2ICpwcml2OworCXN0cnVjdCB4ZW5fcHZjYWxsc19y ZXNwb25zZSAqcnNwOworCXN0cnVjdCB4ZW5fcHZjYWxsc19yZXF1ZXN0ICpyZXE7CisJdm9pZCAq cGFnZSA9IE5VTEw7CisJaW50IG5vdGlmeTsKKwlpbnQgcmV0ID0gLUVJTlZBTDsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJcHJpdiA9IG1hcHBhc3MtPnByaXY7CisJLyogV2Ugb25seSBuZWVk IHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiAiY21kIiBhdG9taWNhbGx5IG9uIHJlYWQuICovCisJc3Bp bl9sb2NrX2lycXNhdmUoJm1hcHBhc3MtPmNvcHlfbG9jaywgZmxhZ3MpOworCXJlcSA9ICZtYXBw YXNzLT5yZXFjb3B5OworCWlmIChyZXEtPmNtZCAhPSBQVkNBTExTX0FDQ0VQVCkgeworCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZtYXBwYXNzLT5jb3B5X2xvY2ssIGZsYWdzKTsKKwkJcmV0dXJu OworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtYXBwYXNzLT5jb3B5X2xvY2ssIGZsYWdz KTsKKworCW1hcCA9IGt6YWxsb2Moc2l6ZW9mKCptYXApLCBHRlBfS0VSTkVMKTsKKwlpZiAobWFw ID09IE5VTEwpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRfZXJyb3I7CisJfQorCisJ bWFwLT5zb2NrID0gc29ja19hbGxvYygpOworCWlmICghbWFwLT5zb2NrKQorCQlnb3RvIG91dF9l cnJvcjsKKworCW1hcC0+cmVmID0gcmVxLT51LmFjY2VwdC5yZWY7CisKKwltYXAtPnByaXYgPSBw cml2OworCW1hcC0+c29ja3Bhc3MgPSBtYXBwYXNzOworCW1hcC0+c29jay0+dHlwZSA9IG1hcHBh c3MtPnNvY2stPnR5cGU7CisJbWFwLT5zb2NrLT5vcHMgPSBtYXBwYXNzLT5zb2NrLT5vcHM7CisJ bWFwLT5pZCA9IHJlcS0+dS5hY2NlcHQuaWRfbmV3OworCisJcmV0ID0geGVuYnVzX21hcF9yaW5n X3ZhbGxvYyhwcml2LT5kZXYsICZyZXEtPnUuYWNjZXB0LnJlZiwgMSwgJnBhZ2UpOworCWlmIChy ZXQgPCAwKQorCQlnb3RvIG91dF9lcnJvcjsKKwltYXAtPnJpbmcgPSBwYWdlOworCW1hcC0+cmlu Z19vcmRlciA9IG1hcC0+cmluZy0+cmluZ19vcmRlcjsKKwkvKiBmaXJzdCByZWFkIHRoZSBvcmRl ciwgdGhlbiBtYXAgdGhlIGRhdGEgcmluZyAqLworCXZpcnRfcm1iKCk7CisJaWYgKG1hcC0+cmlu Z19vcmRlciA+IE1BWF9SSU5HX09SREVSKSB7CisJCXJldCA9IC1FRkFVTFQ7CisJCWdvdG8gb3V0 X2Vycm9yOworCX0KKwlyZXQgPSB4ZW5idXNfbWFwX3JpbmdfdmFsbG9jKHByaXYtPmRldiwgbWFw LT5yaW5nLT5yZWYsCisJCQkJICAgICAoMSA8PCBtYXAtPnJpbmdfb3JkZXIpLCAmcGFnZSk7CisJ aWYgKHJldCA8IDApCisJCWdvdG8gb3V0X2Vycm9yOworCW1hcC0+Ynl0ZXMgPSBwYWdlOworCisJ cmV0ID0gYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5fdG9faXJxaGFuZGxlcihwcml2LT5kZXYtPm90 aGVyZW5kX2lkLAorCQkJCQkJICAgIHJlcS0+dS5hY2NlcHQuZXZ0Y2huLAorCQkJCQkJICAgIHB2 Y2FsbHNfYmFja19jb25uX2V2ZW50LAorCQkJCQkJICAgIDAsCisJCQkJCQkgICAgInB2Y2FsbHMt YmFja2VuZCIsCisJCQkJCQkgICAgbWFwKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBvdXRfZXJy b3I7CisJbWFwLT5pcnEgPSByZXQ7CisKKwltYXAtPmRhdGEuaW4gPSBtYXAtPmJ5dGVzOworCW1h cC0+ZGF0YS5vdXQgPSBtYXAtPmJ5dGVzICsgWEVOX0ZMRVhfUklOR19TSVpFKG1hcC0+cmluZ19v cmRlcik7CisKKwltYXAtPmlvd29ya2VyLndxID0gYWxsb2Nfd29ya3F1ZXVlKCJwdmNhbGxzX2lv IiwgV1FfVU5CT1VORCwgMSk7CisJaWYgKCFtYXAtPmlvd29ya2VyLndxKSB7CisJICAgIHJldCA9 IC1FTk9NRU07CisJICAgIGdvdG8gb3V0X2Vycm9yOworCX0KKwltYXAtPmlvd29ya2VyLmNwdSA9 IGdldF9yYW5kb21faW50KCkgJSBudW1fb25saW5lX2NwdXMoKTsKKwlhdG9taWNfc2V0KCZtYXAt PmlvLCAxKTsKKwlJTklUX1dPUksoJm1hcC0+aW93b3JrZXIucmVnaXN0ZXJfd29yaywJcHZjYWxs c19iYWNrX2lvd29ya2VyKTsKKworCWRvd24oJnByaXYtPnNvY2tldF9sb2NrKTsKKwlsaXN0X2Fk ZF90YWlsKCZtYXAtPmxpc3QsICZwcml2LT5zb2NrZXRfbWFwcGluZ3MpOworCXVwKCZwcml2LT5z b2NrZXRfbG9jayk7CisKKwlyZXQgPSBpbmV0X2FjY2VwdChtYXBwYXNzLT5zb2NrLCBtYXAtPnNv Y2ssIE9fTk9OQkxPQ0ssIHRydWUpOworCWlmIChyZXQgPT0gLUVBR0FJTikKKwkJZ290byBvdXRf ZXJyb3I7CisKKwl3cml0ZV9sb2NrX2JoKCZtYXAtPnNvY2stPnNrLT5za19jYWxsYmFja19sb2Nr KTsKKwltYXAtPnNhdmVkX2RhdGFfcmVhZHkgPSBtYXAtPnNvY2stPnNrLT5za19kYXRhX3JlYWR5 OworCW1hcC0+c29jay0+c2stPnNrX3VzZXJfZGF0YSA9IG1hcDsKKwltYXAtPnNvY2stPnNrLT5z a19kYXRhX3JlYWR5ID0gcHZjYWxsc19za19kYXRhX3JlYWR5OworCW1hcC0+c29jay0+c2stPnNr X3N0YXRlX2NoYW5nZSA9IHB2Y2FsbHNfc2tfc3RhdGVfY2hhbmdlOworCXdyaXRlX3VubG9ja19i aCgmbWFwLT5zb2NrLT5zay0+c2tfY2FsbGJhY2tfbG9jayk7CisKKwlpb3cgPSAmbWFwLT5pb3dv cmtlcjsKKwlhdG9taWNfaW5jKCZtYXAtPnJlYWQpOworCWF0b21pY19pbmMoJm1hcC0+aW8pOwor CXF1ZXVlX3dvcmtfb24oaW93LT5jcHUsIGlvdy0+d3EsICZpb3ctPnJlZ2lzdGVyX3dvcmspOwor CitvdXRfZXJyb3I6CisJaWYgKHJldCA8IDApCisJCXB2Y2FsbHNfYmFja19yZWxlYXNlX2FjdGl2 ZShwcml2LT5kZXYsIHByaXYsIG1hcCk7CisKKwlyc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmcHJp di0+cmluZywgcHJpdi0+cmluZy5yc3BfcHJvZF9wdnQrKyk7CisJcnNwLT5yZXFfaWQgPSByZXEt PnJlcV9pZDsKKwlyc3AtPmNtZCA9IHJlcS0+Y21kOworCXJzcC0+dS5hY2NlcHQuaWQgPSByZXEt PnUuYWNjZXB0LmlkOworCXJzcC0+cmV0ID0gcmV0OworCVJJTkdfUFVTSF9SRVNQT05TRVNfQU5E X0NIRUNLX05PVElGWSgmcHJpdi0+cmluZywgbm90aWZ5KTsKKwlpZiAobm90aWZ5KQorCQlub3Rp ZnlfcmVtb3RlX3ZpYV9pcnEocHJpdi0+aXJxKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZtYXBw YXNzLT5jb3B5X2xvY2ssIGZsYWdzKTsKKwltYXBwYXNzLT5yZXFjb3B5LmNtZCA9IDA7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmbWFwcGFzcy0+Y29weV9sb2NrLCBmbGFncyk7CiB9CiAKIHN0 YXRpYyB2b2lkIHB2Y2FsbHNfcGFzc19za19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpzb2NrKQog eworCXN0cnVjdCBzb2NrcGFzc19tYXBwaW5nICptYXBwYXNzID0gc29jay0+c2tfdXNlcl9kYXRh OworCisJaWYgKG1hcHBhc3MgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJcXVldWVfd29yayhtYXBw YXNzLT53cSwgJm1hcHBhc3MtPnJlZ2lzdGVyX3dvcmspOwogfQogCiBzdGF0aWMgaW50IHB2Y2Fs bHNfYmFja19iaW5kKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCkBAIC0zNzIsNyArNDk0LDQ0 IEBAIHN0YXRpYyBpbnQgcHZjYWxsc19iYWNrX2xpc3RlbihzdHJ1Y3QgeGVuYnVzX2RldmljZSAq ZGV2LAogc3RhdGljIGludCBwdmNhbGxzX2JhY2tfYWNjZXB0KHN0cnVjdCB4ZW5idXNfZGV2aWNl ICpkZXYsCiAJCQkgICAgICAgc3RydWN0IHhlbl9wdmNhbGxzX3JlcXVlc3QgKnJlcSkKIHsKLQly ZXR1cm4gMDsKKwlzdHJ1Y3QgcHZjYWxsc19iYWNrX3ByaXYgKnByaXY7CisJc3RydWN0IHNvY2tw YXNzX21hcHBpbmcgKm1hcHBhc3M7CisJaW50IHJldCA9IC1FSU5WQUw7CisJc3RydWN0IHhlbl9w dmNhbGxzX3Jlc3BvbnNlICpyc3A7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXByaXYgPSBk ZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsKKworCW1hcHBhc3MgPSByYWRpeF90cmVlX2xvb2t1 cCgmcHJpdi0+c29ja2V0cGFzc19tYXBwaW5ncywKKwkJcmVxLT51LmFjY2VwdC5pZCk7CisJaWYg KG1hcHBhc3MgPT0gTlVMTCkKKwkJZ290byBvdXRfZXJyb3I7CisKKwkvKiAKKwkgKiBMaW1pdGF0 aW9uIG9mIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uOiBvbmx5IHN1cHBvcnQgb25lCisJICog Y29uY3VycmVudCBhY2NlcHQgb3IgcG9sbCBjYWxsIG9uIG9uZSBzb2NrZXQuCisJICovCisJc3Bp bl9sb2NrX2lycXNhdmUoJm1hcHBhc3MtPmNvcHlfbG9jaywgZmxhZ3MpOworCWlmIChtYXBwYXNz LT5yZXFjb3B5LmNtZCAhPSAwKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1hcHBhc3Mt PmNvcHlfbG9jaywgZmxhZ3MpOworCQlyZXQgPSAtRUlOVFI7CisJCWdvdG8gb3V0X2Vycm9yOwor CX0KKworCW1hcHBhc3MtPnJlcWNvcHkgPSAqcmVxOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo Jm1hcHBhc3MtPmNvcHlfbG9jaywgZmxhZ3MpOworCXF1ZXVlX3dvcmsobWFwcGFzcy0+d3EsICZt YXBwYXNzLT5yZWdpc3Rlcl93b3JrKTsKKworCS8qIFRlbGwgdGhlIGNhbGxlciB3ZSBkb24ndCBu ZWVkIHRvIHNlbmQgYmFjayBhIG5vdGlmaWNhdGlvbiB5ZXQgKi8KKwlyZXR1cm4gLTE7CisKK291 dF9lcnJvcjoKKwlyc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmcHJpdi0+cmluZywgcHJpdi0+cmlu Zy5yc3BfcHJvZF9wdnQrKyk7CisJcnNwLT5yZXFfaWQgPSByZXEtPnJlcV9pZDsKKwlyc3AtPmNt ZCA9IHJlcS0+Y21kOworCXJzcC0+dS5hY2NlcHQuaWQgPSByZXEtPnUuYWNjZXB0LmlkOworCXJz cC0+cmV0ID0gcmV0OworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcHZjYWxsc19iYWNr X3BvbGwoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKLS0gCjEuOS4xCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==