From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 08/13] xen/pvcalls: implement accept command Date: Mon, 31 Jul 2017 15:57:30 -0700 Message-ID: <1501541855-7354-8-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 SW50cm9kdWNlIGEgd2FpdHF1ZXVlIHRvIGFsbG93IG9ubHkgb25lIG91dHN0YW5kaW5nIGFjY2Vw dCBjb21tYW5kIGF0CmFueSBnaXZlbiB0aW1lIGFuZCB0byBpbXBsZW1lbnQgcG9sbGluZyBvbiB0 aGUgcGFzc2l2ZSBzb2NrZXQuIEludHJvZHVjZQphIGZsYWdzIGZpZWxkIHRvIGtlZXAgdHJhY2sg b2YgaW4tZmxpZ2h0IGFjY2VwdCBhbmQgcG9sbCBjb21tYW5kcy4KClNlbmQgUFZDQUxMU19BQ0NF UFQgdG8gdGhlIGJhY2tlbmQuIEFsbG9jYXRlIGEgbmV3IGFjdGl2ZSBzb2NrZXQuIE1ha2UKc3Vy ZSB0aGF0IG9ubHkgb25lIGFjY2VwdCBjb21tYW5kIGlzIGV4ZWN1dGVkIGF0IGFueSBnaXZlbiB0 aW1lIGJ5CnNldHRpbmcgUFZDQUxMU19GTEFHX0FDQ0VQVF9JTkZMSUdIVCBhbmQgd2FpdGluZyBv biB0aGUKaW5mbGlnaHRfYWNjZXB0X3JlcSB3YWl0cXVldWUuCgpDb252ZXJ0IHRoZSBuZXcgc3Ry dWN0IHNvY2tfbWFwcGluZyBwb2ludGVyIGludG8gYW4gdWludDY0X3QgYW5kIHVzZSBpdAphcyBp ZCBmb3IgdGhlIG5ldyBzb2NrZXQgdG8gcGFzcyB0byB0aGUgYmFja2VuZC4KCkNoZWNrIGlmIHRo ZSBhY2NlcHQgY2FsbCBpcyBub24tYmxvY2tpbmc6IGluIHRoYXQgY2FzZSBhZnRlciBzZW5kaW5n IHRoZQpBQ0NFUFQgY29tbWFuZCB0byB0aGUgYmFja2VuZCBzdG9yZSB0aGUgc29ja19tYXBwaW5n IHBvaW50ZXIgb2YgdGhlIG5ldwpzdHJ1Y3QgYW5kIHRoZSBpbmZsaWdodCByZXFfaWQgdGhlbiBy ZXR1cm4gLUVBR0FJTiAod2hpY2ggd2lsbCByZXNwb25kCm9ubHkgd2hlbiB0aGVyZSBpcyBzb21l dGhpbmcgdG8gYWNjZXB0KS4gTmV4dCB0aW1lIGFjY2VwdCBpcyBjYWxsZWQsCndlJ2xsIGNoZWNr IGlmIHRoZSBBQ0NFUFQgY29tbWFuZCBoYXMgYmVlbiBhbnN3ZXJlZCwgaWYgc28gd2UnbGwgcGlj ayB1cAp3aGVyZSB3ZSBsZWZ0IG9mZiwgb3RoZXJ3aXNlIHdlIHJldHVybiAtRUFHQUlOIGFnYWlu LgoKTm90ZSB0aGF0LCBkaWZmZXJlbnRseSBmcm9tIHRoZSBvdGhlciBjb21tYW5kcywgd2UgY2Fu IHVzZQp3YWl0X2V2ZW50X2ludGVycnVwdGlibGUgKGluc3RlYWQgb2Ygd2FpdF9ldmVudCkgaW4g dGhlIGNhc2Ugb2YgYWNjZXB0CmFzIHdlIGFyZSBhYmxlIHRvIHRyYWNrIHRoZSByZXFfaWQgb2Yg dGhlIEFDQ0VQVCByZXNwb25zZSB0aGF0IHdlIGFyZQp3YWl0aW5nLgoKU2lnbmVkLW9mZi1ieTog U3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vQGFwb3JldG8uY29tPgpDQzogYm9yaXMub3N0cm92 c2t5QG9yYWNsZS5jb20KQ0M6IGpncm9zc0BzdXNlLmNvbQotLS0KIGRyaXZlcnMveGVuL3B2Y2Fs bHMtZnJvbnQuYyB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oIHwgICAzICsrCiAyIGZpbGVzIGNoYW5n ZWQsIDExNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZjYWxscy1m cm9udC5jIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCmluZGV4IGIyNzU3ZjUuLmY4M2I5 MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYworKysgYi9kcml2ZXJz L3hlbi9wdmNhbGxzLWZyb250LmMKQEAgLTY1LDYgKzY1LDE2IEBAIHN0cnVjdCBzb2NrX21hcHBp bmcgewogI2RlZmluZSBQVkNBTExTX1NUQVRVU19CSU5EICAgICAgICAgIDEKICNkZWZpbmUgUFZD QUxMU19TVEFUVVNfTElTVEVOICAgICAgICAyCiAJCQl1aW50OF90IHN0YXR1czsKKwkJLyoKKwkJ ICogSW50ZXJuYWwgc3RhdGUtbWFjaGluZSBmbGFncy4KKwkJICogT25seSBvbmUgYWNjZXB0IG9w ZXJhdGlvbiBjYW4gYmUgaW5mbGlnaHQgZm9yIGEgc29ja2V0LgorCQkgKiBPbmx5IG9uZSBwb2xs IG9wZXJhdGlvbiBjYW4gYmUgaW5mbGlnaHQgZm9yIGEgZ2l2ZW4gc29ja2V0LgorCQkgKi8KKyNk ZWZpbmUgUFZDQUxMU19GTEFHX0FDQ0VQVF9JTkZMSUdIVCAwCisJCQl1aW50OF90IGZsYWdzOwor CQkJdWludDMyX3QgaW5mbGlnaHRfcmVxX2lkOworCQkJc3RydWN0IHNvY2tfbWFwcGluZyAqYWNj ZXB0X21hcDsKKwkJCXdhaXRfcXVldWVfaGVhZF90IGluZmxpZ2h0X2FjY2VwdF9yZXE7CiAJCX0g cGFzc2l2ZTsKIAl9OwogfTsKQEAgLTQxNCw2ICs0MjQsMTA3IEBAIGludCBwdmNhbGxzX2Zyb250 X2xpc3RlbihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgYmFja2xvZykKIAlyZXR1cm4gcmV0Owog fQogCitpbnQgcHZjYWxsc19mcm9udF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0 IHNvY2tldCAqbmV3c29jaywgaW50IGZsYWdzKQoreworCXN0cnVjdCBwdmNhbGxzX2JlZGF0YSAq YmVkYXRhOworCXN0cnVjdCBzb2NrX21hcHBpbmcgKm1hcDsKKwlzdHJ1Y3Qgc29ja19tYXBwaW5n ICptYXAyID0gTlVMTDsKKwlzdHJ1Y3QgeGVuX3B2Y2FsbHNfcmVxdWVzdCAqcmVxOworCWludCBu b3RpZnksIHJlcV9pZCwgcmV0LCBldnRjaG4sIG5vbmJsb2NrOworCisJaWYgKCFwdmNhbGxzX2Zy b250X2RldikKKwkJcmV0dXJuIC1FTk9UQ09OTjsKKwliZWRhdGEgPSBkZXZfZ2V0X2RydmRhdGEo JnB2Y2FsbHNfZnJvbnRfZGV2LT5kZXYpOworCisJbWFwID0gKHN0cnVjdCBzb2NrX21hcHBpbmcg KikgUkVBRF9PTkNFKHNvY2stPnNrLT5za19zZW5kX2hlYWQpOworCWlmICghbWFwKQorCQlyZXR1 cm4gLUVOT1RTT0NLOworCisJaWYgKG1hcC0+cGFzc2l2ZS5zdGF0dXMgIT0gUFZDQUxMU19TVEFU VVNfTElTVEVOKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW5vbmJsb2NrID0gZmxhZ3MgJiBTT0NL X05PTkJMT0NLOworCS8qCisJICogQmFja2VuZCBvbmx5IHN1cHBvcnRzIDEgaW5mbGlnaHQgYWNj ZXB0IHJlcXVlc3QsIHdpbGwgcmV0dXJuCisJICogZXJyb3JzIGZvciB0aGUgb3RoZXJzCisJICov CisJaWYgKHRlc3RfYW5kX3NldF9iaXQoUFZDQUxMU19GTEFHX0FDQ0VQVF9JTkZMSUdIVCwKKwkJ CSAgICAgKHZvaWQgKikmbWFwLT5wYXNzaXZlLmZsYWdzKSkgeworCQlyZXFfaWQgPSBSRUFEX09O Q0UobWFwLT5wYXNzaXZlLmluZmxpZ2h0X3JlcV9pZCk7CisJCWlmIChyZXFfaWQgIT0gUFZDQUxM U19JTlZBTElEX0lEICYmCisJCSAgICBSRUFEX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXFf aWQpID09IHJlcV9pZCkKKwkJCWdvdG8gcmVjZWl2ZWQ7CisJCWlmIChub25ibG9jaykKKwkJCXJl dHVybiAtRUFHQUlOOworCQlpZiAod2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKG1hcC0+cGFzc2l2 ZS5pbmZsaWdodF9hY2NlcHRfcmVxLAorCQkJIXRlc3RfYW5kX3NldF9iaXQoUFZDQUxMU19GTEFH X0FDQ0VQVF9JTkZMSUdIVCwKKwkJCQkJICAodm9pZCAqKSZtYXAtPnBhc3NpdmUuZmxhZ3MpKSkK KwkJCXJldHVybiAtRUlOVFI7CisJfQorCisJc3Bpbl9sb2NrKCZiZWRhdGEtPnB2Y2FsbHNzX2xv Y2spOworCXJldCA9IGdldF9yZXF1ZXN0KGJlZGF0YSwgJnJlcV9pZCk7CisJaWYgKHJldCA8IDAp IHsKKwkJc3Bpbl91bmxvY2soJmJlZGF0YS0+cHZjYWxsc3NfbG9jayk7CisJCXJldHVybiByZXQ7 CisJfQkKKwltYXAyID0ga3phbGxvYyhzaXplb2YoKm1hcDIpLCBHRlBfS0VSTkVMKTsKKwlpZiAo bWFwMiA9PSBOVUxMKQorCSAgICByZXR1cm4gLUVOT01FTTsKKwlyZXQgPSAgY3JlYXRlX2FjdGl2 ZShtYXAyLCAmZXZ0Y2huKTsKKwlpZiAocmV0IDwgMCkgeworCSAgICBrZnJlZShtYXAyKTsKKwkg ICAgcmV0dXJuIC1FTk9NRU07CisJfQorCWxpc3RfYWRkX3RhaWwoJm1hcDItPmxpc3QsICZiZWRh dGEtPnNvY2tldF9tYXBwaW5ncyk7CisKKwlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZiZWRhdGEt PnJpbmcsIHJlcV9pZCk7CisJcmVxLT5yZXFfaWQgPSByZXFfaWQ7CisJcmVxLT5jbWQgPSBQVkNB TExTX0FDQ0VQVDsKKwlyZXEtPnUuYWNjZXB0LmlkID0gKHVpbnQ2NF90KSBtYXA7CisJcmVxLT51 LmFjY2VwdC5yZWYgPSBtYXAyLT5hY3RpdmUucmVmOworCXJlcS0+dS5hY2NlcHQuaWRfbmV3ID0g KHVpbnQ2NF90KSBtYXAyOworCXJlcS0+dS5hY2NlcHQuZXZ0Y2huID0gZXZ0Y2huOworCW1hcC0+ cGFzc2l2ZS5hY2NlcHRfbWFwID0gbWFwMjsKKworCWJlZGF0YS0+cmluZy5yZXFfcHJvZF9wdnQr KzsKKwlSSU5HX1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWSgmYmVkYXRhLT5yaW5nLCBu b3RpZnkpOworCXNwaW5fdW5sb2NrKCZiZWRhdGEtPnB2Y2FsbHNzX2xvY2spOworCWlmIChub3Rp ZnkpCisJCW5vdGlmeV9yZW1vdGVfdmlhX2lycShiZWRhdGEtPmlycSk7CisJaWYgKG5vbmJsb2Nr KSB7CisJCVdSSVRFX09OQ0UobWFwLT5wYXNzaXZlLmluZmxpZ2h0X3JlcV9pZCwgcmVxX2lkKTsK KwkJcmV0dXJuIC1FQUdBSU47CisJfQorCisJaWYgKHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShi ZWRhdGEtPmluZmxpZ2h0X3JlcSwKKwkJUkVBRF9PTkNFKGJlZGF0YS0+cnNwW3JlcV9pZF0ucmVx X2lkKSA9PSByZXFfaWQpKQorCSAgICByZXR1cm4gLUVJTlRSOworCityZWNlaXZlZDoKKwltYXAy ID0gbWFwLT5wYXNzaXZlLmFjY2VwdF9tYXA7CisJbWFwMi0+c29jayA9IG5ld3NvY2s7CisJbmV3 c29jay0+c2sgPSBremFsbG9jKHNpemVvZigqbmV3c29jay0+c2spLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIW5ld3NvY2stPnNrKSB7CisJICAgIFdSSVRFX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5y ZXFfaWQsIFBWQ0FMTFNfSU5WQUxJRF9JRCk7CisJICAgIFdSSVRFX09OQ0UobWFwLT5wYXNzaXZl LmluZmxpZ2h0X3JlcV9pZCwgUFZDQUxMU19JTlZBTElEX0lEKTsKKwkgICAgcHZjYWxsc19mcm9u dF9mcmVlX21hcChiZWRhdGEsIG1hcDIpOworCSAgICBrZnJlZShtYXAyKTsKKwkgICAgcmV0dXJu IC1FTk9NRU07CisJfQorCVdSSVRFX09OQ0UobmV3c29jay0+c2stPnNrX3NlbmRfaGVhZCwgKHZv aWQgKiltYXAyKTsKKworCWNsZWFyX2JpdChQVkNBTExTX0ZMQUdfQUNDRVBUX0lORkxJR0hULCAo dm9pZCAqKSZtYXAtPnBhc3NpdmUuZmxhZ3MpOworCXdha2VfdXAoJm1hcC0+cGFzc2l2ZS5pbmZs aWdodF9hY2NlcHRfcmVxKTsKKworCXJldCA9IGJlZGF0YS0+cnNwW3JlcV9pZF0ucmV0OworCS8q IHJlYWQgcmV0LCB0aGVuIHNldCB0aGlzIHJzcCBzbG90IHRvIGJlIHJldXNlZCAqLworCXNtcF9t YigpOworCVdSSVRFX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXFfaWQsIFBWQ0FMTFNfSU5W QUxJRF9JRCk7CisJV1JJVEVfT05DRShtYXAtPnBhc3NpdmUuaW5mbGlnaHRfcmVxX2lkLCBQVkNB TExTX0lOVkFMSURfSUQpOworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg eGVuYnVzX2RldmljZV9pZCBwdmNhbGxzX2Zyb250X2lkc1tdID0gewogCXsgInB2Y2FsbHMiIH0s CiAJeyAiIiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmggYi9kcml2 ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKaW5kZXggYWE4ZmUxMC4uYWI0ZjFkYSAxMDA2NDQKLS0t IGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMt ZnJvbnQuaApAQCAtMTAsNSArMTAsOCBAQCBpbnQgcHZjYWxsc19mcm9udF9iaW5kKHN0cnVjdCBz b2NrZXQgKnNvY2ssCiAJCSAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCiAJCSAgICAgICBp bnQgYWRkcl9sZW4pOwogaW50IHB2Y2FsbHNfZnJvbnRfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNv Y2ssIGludCBiYWNrbG9nKTsKK2ludCBwdmNhbGxzX2Zyb250X2FjY2VwdChzdHJ1Y3Qgc29ja2V0 ICpzb2NrLAorCQkJIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCisJCQkgaW50IGZsYWdzKTsKIAog I2VuZGlmCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=