From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 2/9] xen_backend: add grant table helpers Date: Thu, 17 May 2018 16:35:51 +0100 Message-ID: <1526571358-26685-3-git-send-email-paul.durrant@citrix.com> References: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fJKwr-0001rE-KS for xen-devel@lists.xenproject.org; Thu, 17 May 2018 15:36:09 +0000 In-Reply-To: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Anthony Perard , Paul Durrant , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGdyYW50IHRhYmxlIGhlbHBlciBmdW5jdGlvbnMgdG8gdGhlIHhlbl9i YWNrZW5kIGNvZGUgdG8KbG9jYWxpemUgZXJyb3IgcmVwb3J0aW5nIGFuZCB1c2Ugb2YgeGVuX2Rv bWlkLgoKVGhlIHBhdGNoIGFsc28gZGVmZXJzIHRoZSBjYWxsIHRvIHhlbmdudHRhYl9vcGVuKCkg dW50aWwganVzdCBiZWZvcmUgdGhlCmluaXRpYWxpc2UgbWV0aG9kIGluIFhlbkRldk9wcyBpcyBp bnZva2VkLiBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IKbWFwcGluZyB0aGUgc2hhcmVk IHJpbmcuIE5vIHByaW9yIG1ldGhvZCByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIGdyYW50IHRhYmxl LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K LS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBB bnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KCnYyOgogLSBOZXcgaW4g djIKLS0tCiBody94ZW4veGVuX2JhY2tlbmQuYyAgICAgICAgIHwgMTIzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGluY2x1ZGUvaHcveGVuL3hlbl9iYWNrZW5k LmggfCAgMzMgKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody94ZW4veGVuX2JhY2tlbmQuYyBiL2h3 L3hlbi94ZW5fYmFja2VuZC5jCmluZGV4IDc0NDViNTAuLjUwNDEyZDYgMTAwNjQ0Ci0tLSBhL2h3 L3hlbi94ZW5fYmFja2VuZC5jCisrKyBiL2h3L3hlbi94ZW5fYmFja2VuZC5jCkBAIC0xMDYsNiAr MTA2LDEwMyBAQCBpbnQgeGVuX2JlX3NldF9zdGF0ZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYs IGVudW0geGVuYnVzX3N0YXRlIHN0YXRlKQogICAgIHJldHVybiAwOwogfQogCit2b2lkIHhlbl9i ZV9zZXRfbWF4X2dyYW50X3JlZnMoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9yZWZzKQoreworICAgIGFzc2Vy dCh4ZW5kZXYtPm9wcy0+ZmxhZ3MgJiBERVZPUFNfRkxBR19ORUVEX0dOVERFVik7CisKKyAgICBp ZiAoeGVuZ250dGFiX3NldF9tYXhfZ3JhbnRzKHhlbmRldi0+Z250dGFiZGV2LCBucl9yZWZzKSkg eworICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgInhlbmdudHRhYl9zZXRfbWF4X2dy YW50cyBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5v KSk7CisgICAgfQorfQorCit2b2lkICp4ZW5fYmVfbWFwX2dyYW50X3JlZnMoc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2LCB1aW50MzJfdCAqcmVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbnJfcmVmcywgaW50IHByb3QpCit7CisgICAgdm9pZCAqcHRyOworCisg ICAgYXNzZXJ0KHhlbmRldi0+b3BzLT5mbGFncyAmIERFVk9QU19GTEFHX05FRURfR05UREVWKTsK KworICAgIHB0ciA9IHhlbmdudHRhYl9tYXBfZG9tYWluX2dyYW50X3JlZnMoeGVuZGV2LT5nbnR0 YWJkZXYsIG5yX3JlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4ZW5fZG9taWQsIHJlZnMsIHByb3QpOworICAgIGlmICghcHRyKSB7CisgICAgICAgIHhlbl9w dl9wcmludGYoeGVuZGV2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICJ4ZW5nbnR0YWJfbWFw X2RvbWFpbl9ncmFudF9yZWZzIGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAg c3RyZXJyb3IoZXJybm8pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHRyOworfQorCit2b2lkIHhl bl9iZV91bm1hcF9ncmFudF9yZWZzKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgdm9pZCAqcHRy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfcmVmcykKK3sK KyAgICBhc3NlcnQoeGVuZGV2LT5vcHMtPmZsYWdzICYgREVWT1BTX0ZMQUdfTkVFRF9HTlRERVYp OworCisgICAgaWYgKHhlbmdudHRhYl91bm1hcCh4ZW5kZXYtPmdudHRhYmRldiwgcHRyLCBucl9y ZWZzKSkgeworICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgInhlbmdudHRhYl91bm1h cCBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7 CisgICAgfQorfQorCitpbnQgeGVuX2JlX2NvcHlfZ3JhbnRfcmVmcyhzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRvX2RvbWFpbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFhlbkdyYW50Q29weVNlZ21lbnQgc2Vnc1tdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX3NlZ3MpCit7CisgICAgeGVu Z250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90ICp4ZW5nbnR0YWJfc2VnczsKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAgICBhc3NlcnQoeGVuZGV2LT5vcHMtPmZsYWdzICYg REVWT1BTX0ZMQUdfTkVFRF9HTlRERVYpOworCisgICAgeGVuZ250dGFiX3NlZ3MgPSBnX25ldzAo eGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90LCBucl9zZWdzKTsKKworICAgIGZvciAoaSA9 IDA7IGkgPCBucl9zZWdzOyBpKyspIHsKKyAgICAgICAgWGVuR3JhbnRDb3B5U2VnbWVudCAqc2Vn ID0gJnNlZ3NbaV07CisgICAgICAgIHhlbmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCAqeGVu Z250dGFiX3NlZyA9ICZ4ZW5nbnR0YWJfc2Vnc1tpXTsKKworICAgICAgICBpZiAodG9fZG9tYWlu KSB7CisgICAgICAgICAgICB4ZW5nbnR0YWJfc2VnLT5mbGFncyA9IEdOVENPUFlfZGVzdF9ncmVm OworICAgICAgICAgICAgeGVuZ250dGFiX3NlZy0+ZGVzdC5mb3JlaWduLmRvbWlkID0geGVuX2Rv bWlkOworICAgICAgICAgICAgeGVuZ250dGFiX3NlZy0+ZGVzdC5mb3JlaWduLnJlZiA9IHNlZy0+ ZGVzdC5mb3JlaWduLnJlZjsKKyAgICAgICAgICAgIHhlbmdudHRhYl9zZWctPmRlc3QuZm9yZWln bi5vZmZzZXQgPSBzZWctPmRlc3QuZm9yZWlnbi5vZmZzZXQ7CisgICAgICAgICAgICB4ZW5nbnR0 YWJfc2VnLT5zb3VyY2UudmlydCA9IHNlZy0+c291cmNlLnZpcnQ7CisgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICB4ZW5nbnR0YWJfc2VnLT5mbGFncyA9IEdOVENPUFlfc291cmNlX2dyZWY7 CisgICAgICAgICAgICB4ZW5nbnR0YWJfc2VnLT5zb3VyY2UuZm9yZWlnbi5kb21pZCA9IHhlbl9k b21pZDsKKyAgICAgICAgICAgIHhlbmdudHRhYl9zZWctPnNvdXJjZS5mb3JlaWduLnJlZiA9IHNl Zy0+c291cmNlLmZvcmVpZ24ucmVmOworICAgICAgICAgICAgeGVuZ250dGFiX3NlZy0+c291cmNl LmZvcmVpZ24ub2Zmc2V0ID0KKyAgICAgICAgICAgICAgICBzZWctPnNvdXJjZS5mb3JlaWduLm9m ZnNldDsKKyAgICAgICAgICAgIHhlbmdudHRhYl9zZWctPmRlc3QudmlydCA9IHNlZy0+ZGVzdC52 aXJ0OworICAgICAgICB9CisKKyAgICAgICAgeGVuZ250dGFiX3NlZy0+bGVuID0gc2VnLT5sZW47 CisgICAgfQorCisgICAgcmMgPSB4ZW5nbnR0YWJfZ3JhbnRfY29weSh4ZW5kZXYtPmdudHRhYmRl diwgbnJfc2VncywgeGVuZ250dGFiX3NlZ3MpOworCisgICAgaWYgKHJjKSB7CisgICAgICAgIHhl bl9wdl9wcmludGYoeGVuZGV2LCAwLCAieGVuZ250dGFiX2NvcHkgZmFpbGVkOiAlc1xuIiwKKyAg ICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgIH0KKworICAgIGZvciAo aSA9IDA7IGkgPCBucl9zZWdzOyBpKyspIHsKKyAgICAgICAgeGVuZ250dGFiX2dyYW50X2NvcHlf c2VnbWVudF90ICp4ZW5nbnR0YWJfc2VnID0KKyAgICAgICAgICAgICZ4ZW5nbnR0YWJfc2Vnc1tp XTsKKworICAgICAgICBpZiAoeGVuZ250dGFiX3NlZy0+c3RhdHVzICE9IEdOVFNUX29rYXkpIHsK KyAgICAgICAgICAgIHhlbl9wdl9wcmludGYoeGVuZGV2LCAwLCAic2VnbWVudFsldV0gc3RhdHVz OiAlZFxuIiwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuZ250dGFiX3NlZy0+c3Rh dHVzKTsKKyAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnX2Zy ZWUoeGVuZ250dGFiX3NlZ3MpOworICAgIHJldHVybiByYzsKK30KKwogLyoKICAqIGdldCB4ZW4g YmFja2VuZCBkZXZpY2UsIGFsbG9jYXRlIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0Lgog ICovCkBAIC0xNDksMTggKzI0Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5fYmVf Z2V0X3hlbmRldihjb25zdCBjaGFyICp0eXBlLCBpbnQgZG9tLCBpbnQgZGV2LAogICAgIH0KICAg ICBxZW11X3NldF9jbG9leGVjKHhlbmV2dGNobl9mZCh4ZW5kZXYtPmV2dGNobmRldikpOwogCi0g ICAgaWYgKG9wcy0+ZmxhZ3MgJiBERVZPUFNfRkxBR19ORUVEX0dOVERFVikgewotICAgICAgICB4 ZW5kZXYtPmdudHRhYmRldiA9IHhlbmdudHRhYl9vcGVuKE5VTEwsIDApOwotICAgICAgICBpZiAo eGVuZGV2LT5nbnR0YWJkZXYgPT0gTlVMTCkgewotICAgICAgICAgICAgeGVuX3B2X3ByaW50ZihO VUxMLCAwLCAiY2FuJ3Qgb3BlbiBnbnR0YWIgZGV2aWNlXG4iKTsKLSAgICAgICAgICAgIHhlbmV2 dGNobl9jbG9zZSh4ZW5kZXYtPmV2dGNobmRldik7Ci0gICAgICAgICAgICBxZGV2X3VucGx1ZyhE RVZJQ0UoeGVuZGV2KSwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAg fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHhlbmRldi0+Z250dGFiZGV2ID0gTlVMTDsKLSAgICB9 Ci0KICAgICB4ZW5fcHZfaW5zZXJ0X3hlbmRldih4ZW5kZXYpOwogCiAgICAgaWYgKHhlbmRldi0+ b3BzLT5hbGxvYykgewpAQCAtMzIyLDYgKzQwNywxNiBAQCBzdGF0aWMgaW50IHhlbl9iZV90cnlf aW5pdGlhbGlzZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgICAgIH0KICAgICB9CiAK KyAgICBpZiAoeGVuZGV2LT5vcHMtPmZsYWdzICYgREVWT1BTX0ZMQUdfTkVFRF9HTlRERVYpIHsK KyAgICAgICAgeGVuZGV2LT5nbnR0YWJkZXYgPSB4ZW5nbnR0YWJfb3BlbihOVUxMLCAwKTsKKyAg ICAgICAgaWYgKHhlbmRldi0+Z250dGFiZGV2ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHhlbl9w dl9wcmludGYoTlVMTCwgMCwgImNhbid0IG9wZW4gZ250dGFiIGRldmljZVxuIik7CisgICAgICAg ICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB4ZW5kZXYt PmdudHRhYmRldiA9IE5VTEw7CisgICAgfQorCiAgICAgaWYgKHhlbmRldi0+b3BzLT5pbml0aWFs aXNlKSB7CiAgICAgICAgIHJjID0geGVuZGV2LT5vcHMtPmluaXRpYWxpc2UoeGVuZGV2KTsKICAg ICB9CkBAIC0zNjksNiArNDY0LDEwIEBAIHN0YXRpYyB2b2lkIHhlbl9iZV9kaXNjb25uZWN0KHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCiAgICAgICAg IHhlbmRldi0+b3BzLT5kaXNjb25uZWN0KSB7CiAgICAgICAgIHhlbmRldi0+b3BzLT5kaXNjb25u ZWN0KHhlbmRldik7CiAgICAgfQorICAgIGlmICh4ZW5kZXYtPmdudHRhYmRldikgeworICAgICAg ICB4ZW5nbnR0YWJfY2xvc2UoeGVuZGV2LT5nbnR0YWJkZXYpOworICAgICAgICB4ZW5kZXYtPmdu dHRhYmRldiA9IE5VTEw7CisgICAgfQogICAgIGlmICh4ZW5kZXYtPmJlX3N0YXRlICE9IHN0YXRl KSB7CiAgICAgICAgIHhlbl9iZV9zZXRfc3RhdGUoeGVuZGV2LCBzdGF0ZSk7CiAgICAgfQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2JhY2tlbmQuaCBiL2luY2x1ZGUvaHcveGVuL3hl bl9iYWNrZW5kLmgKaW5kZXggM2EyNzY5Mi4uMjliZjFjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9o dy94ZW4veGVuX2JhY2tlbmQuaAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fYmFja2VuZC5oCkBA IC00Miw2ICs0MiwzOSBAQCB2b2lkIHhlbl9iZV9yZWdpc3Rlcl9jb21tb24odm9pZCk7CiBpbnQg eGVuX2JlX3JlZ2lzdGVyKGNvbnN0IGNoYXIgKnR5cGUsIHN0cnVjdCBYZW5EZXZPcHMgKm9wcyk7 CiBpbnQgeGVuX2JlX3NldF9zdGF0ZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGVudW0geGVu YnVzX3N0YXRlIHN0YXRlKTsKIGludCB4ZW5fYmVfYmluZF9ldnRjaG4oc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2KTsKK3ZvaWQgeGVuX2JlX3NldF9tYXhfZ3JhbnRfcmVmcyhzdHJ1Y3QgWGVuRGV2 aWNlICp4ZW5kZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IG5yX3JlZnMpOwordm9pZCAqeGVuX2JlX21hcF9ncmFudF9yZWZzKHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiwgdWludDMyX3QgKnJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG5yX3JlZnMsIGludCBwcm90KTsKK3ZvaWQgeGVuX2JlX3VubWFwX2dyYW50X3Jl ZnMoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9yZWZzKTsKKwordHlwZWRlZiBzdHJ1Y3QgWGVu R3JhbnRDb3B5U2VnbWVudCB7CisgICAgdW5pb24geworICAgICAgICB2b2lkICp2aXJ0OworICAg ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDMyX3QgcmVmOworICAgICAgICAgICAgb2Zm X3Qgb2Zmc2V0OworICAgICAgICB9IGZvcmVpZ247CisgICAgfSBzb3VyY2UsIGRlc3Q7CisgICAg c2l6ZV90IGxlbjsKK30gWGVuR3JhbnRDb3B5U2VnbWVudDsKKworaW50IHhlbl9iZV9jb3B5X2dy YW50X3JlZnMoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCB0b19kb21haW4sIFhlbkdyYW50Q29weVNlZ21lbnQgc2Vnc1tdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX3NlZ3MpOworCitzdGF0aWMgaW5s aW5lIHZvaWQgKnhlbl9iZV9tYXBfZ3JhbnRfcmVmKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVmLCBp bnQgcHJvdCkKK3sKKyAgICByZXR1cm4geGVuX2JlX21hcF9ncmFudF9yZWZzKHhlbmRldiwgJnJl ZiwgMSwgcHJvdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fYmVfdW5tYXBfZ3JhbnRf cmVmKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKnB0cikKK3sKKyAgICByZXR1cm4geGVuX2JlX3VubWFwX2dy YW50X3JlZnMoeGVuZGV2LCBwdHIsIDEpOworfQogCiAvKiBhY3R1YWwgYmFja2VuZCBkcml2ZXJz ICovCiBleHRlcm4gc3RydWN0IFhlbkRldk9wcyB4ZW5fY29uc29sZV9vcHM7ICAgICAgLyogeGVu X2NvbnNvbGUuYyAgICAgKi8KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==