From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v2 19/30] xen/dcpi: add a dpci passthrough handler for hardware domain Date: Tue, 27 Sep 2016 17:57:14 +0200 Message-ID: <1474991845-27962-20-git-send-email-roger.pau@citrix.com> References: <1474991845-27962-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1boum8-0007vr-6n for xen-devel@lists.xenproject.org; Tue, 27 Sep 2016 15:58:32 +0000 In-Reply-To: <1474991845-27962-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Jan Beulich , boris.ostrovsky@oracle.com, Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIFBDSSB0cmFwIHVzZWQgZm9yIHRoZSB0cmFkaXRp b25hbCBQVihIKSBEb20wLgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu cGF1QGNpdHJpeC5jb20+Ci0tLQpDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9pby5j ICAgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAgICAgICB8IDM5IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyB8IDM5ICsrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vcGNpLmggICAgICAgICB8ICAyICsrCiA0IGZpbGVzIGNo YW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKaW5kZXggMWU3YTVm OS4uMzFkNTRkYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pby5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vaW8uYwpAQCAtMjQ3LDEyICsyNDcsNzkgQEAgc3RhdGljIGludCBkcGNpX3Bv cnRpb193cml0ZShjb25zdCBzdHJ1Y3QgaHZtX2lvX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKIH0KIAorc3RhdGljIGJvb2xfdCBod19kcGNpX3BvcnRpb19hY2Nl cHQoY29uc3Qgc3RydWN0IGh2bV9pb19oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW9yZXFfdCAqcCkKK3sKKyAgICBpZiAoIChwLT5h ZGRyID09IDB4Y2Y4ICYmIHAtPnNpemUgPT0gNCkgfHwgKHAtPmFkZHIgJiAweGZmZmMpID09IDB4 Y2ZjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgaHdfZHBjaV9wb3J0aW9fcmVhZChjb25zdCBzdHJ1Y3QgaHZtX2lvX2hh bmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgYWRk ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKQoreworICAgIHN0cnVjdCBkb21haW4g KmN1cnJkID0gY3VycmVudC0+ZG9tYWluOworCisgICAgaWYgKCBhZGRyID09IDB4Y2Y4ICkKKyAg ICB7CisgICAgICAgIEFTU0VSVChzaXplID09IDQpOworICAgICAgICAqZGF0YSA9IGN1cnJkLT5h cmNoLnBjaV9jZjg7CisgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CisgICAgfQorCisgICAg QVNTRVJUKChhZGRyICYgMHhmZmZjKSA9PSAweGNmYyk7CisgICAgc2l6ZSA9IG1pbihzaXplLCA0 IC0gKCh1aW50MzJfdClhZGRyICYgMykpOworICAgIGlmICggc2l6ZSA9PSAzICkKKyAgICAgICAg c2l6ZSA9IDI7CisgICAgaWYgKCBwY2lfY2ZnX29rKGN1cnJkLCBhZGRyICYgMywgc2l6ZSwgTlVM TCkgKQorICAgICAgICAqZGF0YSA9IHBjaV9jb25mX3JlYWQoY3VycmQtPmFyY2gucGNpX2NmOCwg YWRkciAmIDMsIHNpemUpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGlj IGludCBod19kcGNpX3BvcnRpb193cml0ZShjb25zdCBzdHJ1Y3QgaHZtX2lvX2hhbmRsZXIgKmhh bmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCit7CisgICAgc3RydWN0IGRvbWFp biAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgdWludDMyX3QgZGF0YTMyOworCisgICAg aWYgKCBhZGRyID09IDB4Y2Y4ICkKKyAgICB7CisgICAgICAgICAgICBBU1NFUlQoc2l6ZSA9PSA0 KTsKKyAgICAgICAgICAgIGN1cnJkLT5hcmNoLnBjaV9jZjggPSBkYXRhOworICAgICAgICAgICAg cmV0dXJuIFg4NkVNVUxfT0tBWTsKKyAgICB9CisKKyAgICBBU1NFUlQoKGFkZHIgJiAweGZmZmMp ID09IDB4Y2ZjKTsKKyAgICBzaXplID0gbWluKHNpemUsIDQgLSAoKHVpbnQzMl90KWFkZHIgJiAz KSk7CisgICAgaWYgKCBzaXplID09IDMgKQorICAgICAgICBzaXplID0gMjsKKyAgICBkYXRhMzIg PSBkYXRhOworICAgIGlmICggcGNpX2NmZ19vayhjdXJyZCwgYWRkciAmIDMsIHNpemUsICZkYXRh MzIpICkKKyAgICAgICAgcGNpX2NvbmZfd3JpdGUoY3VycmQtPmFyY2gucGNpX2NmOCwgYWRkciAm IDMsIHNpemUsIGRhdGEpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBodm1faW9fb3BzIGRwY2lfcG9ydGlvX29wcyA9IHsKICAgICAuYWNjZXB0 ID0gZHBjaV9wb3J0aW9fYWNjZXB0LAogICAgIC5yZWFkID0gZHBjaV9wb3J0aW9fcmVhZCwKICAg ICAud3JpdGUgPSBkcGNpX3BvcnRpb193cml0ZQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBo dm1faW9fb3BzIGh3X2RwY2lfcG9ydGlvX29wcyA9IHsKKyAgICAuYWNjZXB0ID0gaHdfZHBjaV9w b3J0aW9fYWNjZXB0LAorICAgIC5yZWFkID0gaHdfZHBjaV9wb3J0aW9fcmVhZCwKKyAgICAud3Jp dGUgPSBod19kcGNpX3BvcnRpb193cml0ZQorfTsKKwogdm9pZCByZWdpc3Rlcl9kcGNpX3BvcnRp b19oYW5kbGVyKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0IGh2bV9pb19oYW5kbGVy ICpoYW5kbGVyID0gaHZtX25leHRfaW9faGFuZGxlcihkKTsKQEAgLTI2MSw3ICszMjgsMTAgQEAg dm9pZCByZWdpc3Rlcl9kcGNpX3BvcnRpb19oYW5kbGVyKHN0cnVjdCBkb21haW4gKmQpCiAgICAg ICAgIHJldHVybjsKIAogICAgIGhhbmRsZXItPnR5cGUgPSBJT1JFUV9UWVBFX1BJTzsKLSAgICBo YW5kbGVyLT5vcHMgPSAmZHBjaV9wb3J0aW9fb3BzOworICAgIGlmICggaXNfaGFyZHdhcmVfZG9t YWluKGQpICkKKyAgICAgICAgaGFuZGxlci0+b3BzID0gJmh3X2RwY2lfcG9ydGlvX29wczsKKyAg ICBlbHNlCisgICAgICAgIGhhbmRsZXItPm9wcyA9ICZkcGNpX3BvcnRpb19vcHM7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhcHMuYyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5j CmluZGV4IDI0ZDE3M2YuLmYzYzVjOWUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90cmFwcy5j CisrKyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jCkBAIC0yMDc2LDQ1ICsyMDc2LDYgQEAgc3RhdGlj IGJvb2xfdCBhZG1pbl9pb19va2F5KHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgYnl0 ZXMsCiAgICAgcmV0dXJuIGlvcG9ydHNfYWNjZXNzX3Blcm1pdHRlZChkLCBwb3J0LCBwb3J0ICsg Ynl0ZXMgLSAxKTsKIH0KIAotc3RhdGljIGJvb2xfdCBwY2lfY2ZnX29rKHN0cnVjdCBkb21haW4g KmN1cnJkLCB1bnNpZ25lZCBpbnQgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHNpemUsIHVpbnQzMl90ICp3cml0ZSkKLXsKLSAgICB1aW50MzJfdCBtYWNoaW5l X2JkZjsKLQotICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihjdXJyZCkgKQotICAgICAgICBy ZXR1cm4gMDsKLQotICAgIGlmICggIUNGOF9FTkFCTEVEKGN1cnJkLT5hcmNoLnBjaV9jZjgpICkK LSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBtYWNoaW5lX2JkZiA9IENGOF9CREYoY3VycmQtPmFy Y2gucGNpX2NmOCk7Ci0gICAgaWYgKCB3cml0ZSApCi0gICAgewotICAgICAgICBjb25zdCB1bnNp Z25lZCBsb25nICpyb19tYXAgPSBwY2lfZ2V0X3JvX21hcCgwKTsKLQotICAgICAgICBpZiAoIHJv X21hcCAmJiB0ZXN0X2JpdChtYWNoaW5lX2JkZiwgcm9fbWFwKSApCi0gICAgICAgICAgICByZXR1 cm4gMDsKLSAgICB9Ci0gICAgc3RhcnQgfD0gQ0Y4X0FERFJfTE8oY3VycmQtPmFyY2gucGNpX2Nm OCk7Ci0gICAgLyogQU1EIGV4dGVuZGVkIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzPyAqLwot ICAgIGlmICggQ0Y4X0FERFJfSEkoY3VycmQtPmFyY2gucGNpX2NmOCkgJiYKLSAgICAgICAgIGJv b3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0FNRCAmJgotICAgICAgICAgYm9v dF9jcHVfZGF0YS54ODYgPj0gMHgxMCAmJiBib290X2NwdV9kYXRhLng4NiA8PSAweDE3ICkKLSAg ICB7Ci0gICAgICAgIHVpbnQ2NF90IG1zcl92YWw7Ci0KLSAgICAgICAgaWYgKCByZG1zcl9zYWZl KE1TUl9BTUQ2NF9OQl9DRkcsIG1zcl92YWwpICkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg ICAgICBpZiAoIG1zcl92YWwgJiAoMVVMTCA8PCBBTUQ2NF9OQl9DRkdfQ0Y4X0VYVF9FTkFCTEVf QklUKSApCi0gICAgICAgICAgICBzdGFydCB8PSBDRjhfQUREUl9ISShjdXJyZC0+YXJjaC5wY2lf Y2Y4KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gIXdyaXRlID8KLSAgICAgICAgICAgeHNtX3BjaV9j b25maWdfcGVybWlzc2lvbihYU01fSE9PSywgY3VycmQsIG1hY2hpbmVfYmRmLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBzdGFydCArIHNpemUgLSAxLCAwKSA9 PSAwIDoKLSAgICAgICAgICAgcGNpX2NvbmZfd3JpdGVfaW50ZXJjZXB0KDAsIG1hY2hpbmVfYmRm LCBzdGFydCwgc2l6ZSwgd3JpdGUpID49IDA7Ci19Ci0KIHVpbnQzMl90IGd1ZXN0X2lvX3JlYWQo dW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGludCBieXRlcywKICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRvbWFpbiAqY3VycmQpCiB7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCmluZGV4IGRk MjkxYTIuLmE1M2I0YzggMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5j CisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCkBAIC05NjYsNiArOTY2LDQ1IEBA IHZvaWQgcGNpX2NoZWNrX2Rpc2FibGVfZGV2aWNlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4p CiAgICAgICAgICAgICAgICAgICAgICBQQ0lfQ09NTUFORCwgY3dvcmQgJiB+UENJX0NPTU1BTkRf TUFTVEVSKTsKIH0KIAorYm9vbF90IHBjaV9jZmdfb2soc3RydWN0IGRvbWFpbiAqY3VycmQsIHVu c2lnbmVkIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg c2l6ZSwgdWludDMyX3QgKndyaXRlKQoreworICAgIHVpbnQzMl90IG1hY2hpbmVfYmRmOworCisg ICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJkKSApCisgICAgICAgIHJldHVybiAwOwor CisgICAgaWYgKCAhQ0Y4X0VOQUJMRUQoY3VycmQtPmFyY2gucGNpX2NmOCkgKQorICAgICAgICBy ZXR1cm4gMTsKKworICAgIG1hY2hpbmVfYmRmID0gQ0Y4X0JERihjdXJyZC0+YXJjaC5wY2lfY2Y4 KTsKKyAgICBpZiAoIHdyaXRlICkKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg KnJvX21hcCA9IHBjaV9nZXRfcm9fbWFwKDApOworCisgICAgICAgIGlmICggcm9fbWFwICYmIHRl c3RfYml0KG1hY2hpbmVfYmRmLCByb19tYXApICkKKyAgICAgICAgICAgIHJldHVybiAwOworICAg IH0KKyAgICBzdGFydCB8PSBDRjhfQUREUl9MTyhjdXJyZC0+YXJjaC5wY2lfY2Y4KTsKKyAgICAv KiBBTUQgZXh0ZW5kZWQgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3M/ICovCisgICAgaWYgKCBD RjhfQUREUl9ISShjdXJyZC0+YXJjaC5wY2lfY2Y4KSAmJgorICAgICAgICAgYm9vdF9jcHVfZGF0 YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EICYmCisgICAgICAgICBib290X2NwdV9kYXRh Lng4NiA+PSAweDEwICYmIGJvb3RfY3B1X2RhdGEueDg2IDw9IDB4MTcgKQorICAgIHsKKyAgICAg ICAgdWludDY0X3QgbXNyX3ZhbDsKKworICAgICAgICBpZiAoIHJkbXNyX3NhZmUoTVNSX0FNRDY0 X05CX0NGRywgbXNyX3ZhbCkgKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICgg bXNyX3ZhbCAmICgxVUxMIDw8IEFNRDY0X05CX0NGR19DRjhfRVhUX0VOQUJMRV9CSVQpICkKKyAg ICAgICAgICAgIHN0YXJ0IHw9IENGOF9BRERSX0hJKGN1cnJkLT5hcmNoLnBjaV9jZjgpOworICAg IH0KKworICAgIHJldHVybiAhd3JpdGUgPworICAgICAgICAgICB4c21fcGNpX2NvbmZpZ19wZXJt aXNzaW9uKFhTTV9IT09LLCBjdXJyZCwgbWFjaGluZV9iZGYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0YXJ0ICsgc2l6ZSAtIDEsIDApID09IDAgOgorICAg ICAgICAgICBwY2lfY29uZl93cml0ZV9pbnRlcmNlcHQoMCwgbWFjaGluZV9iZGYsIHN0YXJ0LCBz aXplLCB3cml0ZSkgPj0gMDsKK30KKwogLyoKICAqIHNjYW4gcGNpIGRldmljZXMgdG8gYWRkIGFs bCBleGlzdGVkIFBDSSBkZXZpY2VzIHRvIGFsbGRldnNfbGlzdCwKICAqIGFuZCBzZXR1cCBwY2kg aGllcmFyY2h5IGluIGFycmF5IGJ1czJicmlkZ2UuCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94 ZW4vcGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKaW5kZXggMDg3MjQwMS4uZjE5MTc3MyAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3BjaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9w Y2kuaApAQCAtMTYyLDYgKzE2Miw4IEBAIGNvbnN0IGNoYXIgKnBhcnNlX3BjaShjb25zdCBjaGFy ICosIHVuc2lnbmVkIGludCAqc2VnLCB1bnNpZ25lZCBpbnQgKmJ1cywKIAogYm9vbF90IHBjaWVf YWVyX2dldF9maXJtd2FyZV9maXJzdChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsKIAorYm9vbF90 IHBjaV9jZmdfb2soc3RydWN0IGRvbWFpbiAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwg dWludDMyX3QgKik7CisKIHN0cnVjdCBwaXJxOwogaW50IG1zaXh0YmxfcHRfcmVnaXN0ZXIoc3Ry dWN0IGRvbWFpbiAqLCBzdHJ1Y3QgcGlycSAqLCB1aW50NjRfdCBndGFibGUpOwogdm9pZCBtc2l4 dGJsX3B0X3VucmVnaXN0ZXIoc3RydWN0IGRvbWFpbiAqLCBzdHJ1Y3QgcGlycSAqKTsKLS0gCjIu Ny40IChBcHBsZSBHaXQtNjYpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==