From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v2 6/9] xen/vpci: trap access to the list of PCI capabilities Date: Thu, 20 Apr 2017 16:17:40 +0100 Message-ID: <20170420151743.90889-7-roger.pau@citrix.com> References: <20170420151743.90889-1-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 1d1DrL-00062Z-Vd for xen-devel@lists.xenproject.org; Thu, 20 Apr 2017 15:19:04 +0000 In-Reply-To: <20170420151743.90889-1-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 , boris.ostrovsky@oracle.com, Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWRkIHRyYXBzIHRvIGVhY2ggY2FwYWJpbGl0eSBQQ0lfQ0FQX0xJU1RfTkVYVCBmaWVsZCBpbiBv cmRlciB0byBtYXNrIHRoZW0gb24KcmVxdWVzdC4KCkFsbCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUg ZGV2aWNlIGFyZSBmZXRjaGVkIGFuZCBzdG9yZWQgaW4gYW4gaW50ZXJuYWwgbGlzdCwKdGhhdCdz IGxhdGVyIHVzZWQgaW4gb3JkZXIgdG8gcmV0dXJuIHRoZSBuZXh0IGNhcGFiaWxpdHkgdG8gdGhl IGd1ZXN0LiBOb3RlCnRoYXQgdGhpcyBvbmx5IHJlbW92ZXMgdGhlIGNhcGFiaWxpdHkgZnJvbSB0 aGUgbGlua2VkIGxpc3QgYXMgc2VlbiBieSB0aGUKZ3Vlc3QsIGJ1dCB0aGUgYWN0dWFsIGNhcGFi aWxpdHkgc3RydWN0dXJlIGNvdWxkIHN0aWxsIGJlIGFjY2Vzc2VkIGJ5IHRoZQpndWVzdCwgcHJv dmlkZWQgdGhhdCBpdCdzIHBvc2l0aW9uIGNhbiBiZSBmb3VuZCB1c2luZyBhbm90aGVyIG1lY2hh bmlzbS4KRmluYWxseSB0aGUgTVNJIGFuZCBNU0ktWCBjYXBhYmlsaXRpZXMgYXJlIG1hc2tlZCB1 bnRpbCBYZW4ga25vd3MgaG93IHRvCnByb3Blcmx5IGhhbmRsZSBhY2Nlc3NlcyB0byB0aGVtLgoK VGhpcyBzaG91bGQgYWxsb3cgYSBQVkggRG9tMCB0byBib290IG9uIHNvbWUgaGFyZHdhcmUsIHBy b3ZpZGVkIHRoYXQgdGhlCmhhcmR3YXJlIGRvZXNuJ3QgcmVxdWlyZSBNU0kvTVNJLVggYW5kIHRo YXQgdGhlcmUgYXJlIG5vIFNSLUlPViBkZXZpY2VzIGluIHRoZQpzeXN0ZW0sIHNvIHRoZSBwYW5p YyBhdCB0aGUgZW5kIG9mIHRoZSBQVkggRG9tMCBidWlsZCBpcyByZXBsYWNlZCBieSBhCndhcm5p bmcuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNv bT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2MToKIC0g QWRkIG1pc3NpbmcgbmV3bGluZSBiZXR3ZWVuIGNtZCBoYW5kbGVycy4KIC0gU3dpdGNoIHRoZSBo YW5kbGVyIHRvIHVzZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlIGluc3RlYWQgb2YgYSB3 cm9uZwogICBvcGVuLWNvZGVkIHZlcnNpb24gb2YgaXQuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9k b20wX2J1aWxkLmMgICB8ICAgMiArLQogeGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZSAgICAgICB8 ICAgMiArLQogeGVuL2RyaXZlcnMvdnBjaS9jYXBhYmlsaXRpZXMuYyB8IDE1OSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vdnBjaS5oICAg ICAgICAgIHwgICAzICsKIDQgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2RyaXZlcnMvdnBjaS9jYXBhYmlsaXRp ZXMuYwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jIGIveGVuL2Fy Y2gveDg2L2h2bS9kb20wX2J1aWxkLmMKaW5kZXggNjVmNjA2ZDMzYS4uYmNkMTBiZDY5YyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS9kb20wX2J1aWxkLmMKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIGludCBfX2luaXQgZG9tMF9j b25zdHJ1Y3RfcHZoKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IG1vZHVsZV90ICppbWFnZSwKICAg ICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAotICAgIHBhbmljKCJCdWlsZGluZyBhIFBWSHYyIERv bTAgaXMgbm90IHlldCBzdXBwb3J0ZWQuIik7CisgICAgcHJpbnRrKCJXQVJOSU5HOiBQVkggaXMg YW4gZXhwZXJpbWVudGFsIG1vZGUgd2l0aCBsaW1pdGVkIGZ1bmN0aW9uYWxpdHlcbiIpOwogICAg IHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL01ha2VmaWxlIGIv eGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZQppbmRleCAyNDE0NjcyMTJmLi5jM2YzMDg1YzkzIDEw MDY0NAotLS0gYS94ZW4vZHJpdmVycy92cGNpL01ha2VmaWxlCisrKyBiL3hlbi9kcml2ZXJzL3Zw Y2kvTWFrZWZpbGUKQEAgLTEgKzEgQEAKLW9iai15ICs9IHZwY2kubyBoZWFkZXIubworb2JqLXkg Kz0gdnBjaS5vIGhlYWRlci5vIGNhcGFiaWxpdGllcy5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy92cGNpL2NhcGFiaWxpdGllcy5jIGIveGVuL2RyaXZlcnMvdnBjaS9jYXBhYmlsaXRpZXMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMmEzMzI2YWE3Ci0tLSAvZGV2 L251bGwKKysrIGIveGVuL2RyaXZlcnMvdnBjaS9jYXBhYmlsaXRpZXMuYwpAQCAtMCwwICsxLDE1 OSBAQAorLyoKKyAqIEdlbmVyaWMgZnVuY3Rpb25hbGl0eSBmb3IgaGFuZGxpbmcgYWNjZXNzZXMg dG8gdGhlIFBDSSBjYXBhYmlsaXRpZXMgZnJvbQorICogdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2Uu CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENpdHJpeCBTeXN0ZW1zIFImRAorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vc2No ZWQuaD4KKyNpbmNsdWRlIDx4ZW4vdnBjaS5oPgorCitzdHJ1Y3QgdnBjaV9jYXBhYmlsaXR5IHsK KyAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7CisgICAgdWludDhfdCBvZmZzZXQ7CisgICAgYm9v bCBtYXNrZWQ7Cit9OworCitzdGF0aWMgaW50IHZwY2lfY2FwX3JlYWQoc3RydWN0IHBjaV9kZXYg KnBkZXYsIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24g dnBjaV92YWwgKnZhbCwgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgdnBjaV9jYXBhYmlsaXR5 ICpjYXAgPSBkYXRhOworCisgICAgdmFsLT5oYWxmX3dvcmQgPSAwOworCisgICAgLyogUmV0dXJu IHRoZSBwb3NpdGlvbiBvZiB0aGUgbmV4dCBub24tbWFza2VkIGNhcGFiaWxpdHkuICovCisgICAg bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZSAoIGNhcCwgJnBkZXYtPnZwY2ktPmNhcF9saXN0 LCBuZXh0ICkKKyAgICB7CisgICAgICAgIGlmICggIWNhcC0+bWFza2VkICkKKyAgICAgICAgewor ICAgICAgICAgICAgdmFsLT5oYWxmX3dvcmQgPSBjYXAtPm9mZnNldDsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg dnBjaV9jYXBfd3JpdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHZwY2lfdmFsIHZhbCwgdm9pZCAqZGF0YSkK K3sKKyAgICAvKiBJZ25vcmVkLiAqLworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZw Y2lfaW5kZXhfY2FwYWJpbGl0aWVzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworICAgIHVpbnQ4 X3Qgc2VnID0gcGRldi0+c2VnLCBidXMgPSBwZGV2LT5idXM7CisgICAgdWludDhfdCBzbG90ID0g UENJX1NMT1QocGRldi0+ZGV2Zm4pLCBmdW5jID0gUENJX0ZVTkMocGRldi0+ZGV2Zm4pOworICAg IHVpbnQ4X3QgcG9zID0gUENJX0NBUEFCSUxJVFlfTElTVDsKKyAgICB1aW50MTZfdCBzdGF0dXM7 CisgICAgdW5zaWduZWQgaW50IG1heF9jYXAgPSA0ODsKKyAgICBzdHJ1Y3QgdnBjaV9jYXBhYmls aXR5ICpjYXA7CisgICAgaW50IHJjOworCisgICAgSU5JVF9MSVNUX0hFQUQoJnBkZXYtPnZwY2kt PmNhcF9saXN0KTsKKworICAgIC8qIENoZWNrIGlmIGRldmljZSBoYXMgY2FwYWJpbGl0aWVzLiAq LworICAgIHN0YXR1cyA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgUENJ X1NUQVRVUyk7CisgICAgaWYgKCAhKHN0YXR1cyAmIFBDSV9TVEFUVVNfQ0FQX0xJU1QpICkKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBBZGQgdGhlIHJvb3QgY2FwYWJpbGl0eSBwb2ludGVy LiAqLworICAgIGNhcCA9IHh6YWxsb2Moc3RydWN0IHZwY2lfY2FwYWJpbGl0eSk7CisgICAgaWYg KCAhY2FwICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBjYXAtPm9mZnNldCA9IHBv czsKKyAgICBsaXN0X2FkZF90YWlsKCZjYXAtPm5leHQsICZwZGV2LT52cGNpLT5jYXBfbGlzdCk7 CisgICAgcmMgPSB4ZW5fdnBjaV9hZGRfcmVnaXN0ZXIocGRldiwgdnBjaV9jYXBfcmVhZCwgdnBj aV9jYXBfd3JpdGUsIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBjYXAp OworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICAvKgorICAgICAqIEl0 ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBjYXBhYmlsaXRpZXMgcHJlc2VudCBpbiB0aGUgZGV2aWNl LCBhbmQKKyAgICAgKiBhZGQgYSBoYW5kbGVyIGZvciBlYWNoIHJlZ2lzdGVyIHBvaW50ZXIgdG8g dGhlIG5leHQgaXRlbQorICAgICAqIChQQ0lfQ0FQX0xJU1RfTkVYVCkuCisgICAgICovCisgICAg d2hpbGUgKCBtYXhfY2FwLS0gKQorICAgIHsKKyAgICAgICAgcG9zID0gcGNpX2NvbmZfcmVhZDgo c2VnLCBidXMsIHNsb3QsIGZ1bmMsIHBvcyk7CisgICAgICAgIGlmICggcG9zIDwgMHg0MCApCisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXAgPSB4emFsbG9jKHN0cnVjdCB2cGNpX2Nh cGFiaWxpdHkpOworICAgICAgICBpZiAoICFjYXAgKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07CisKKyAgICAgICAgY2FwLT5vZmZzZXQgPSBwb3M7CisgICAgICAgIGxpc3RfYWRkX3RhaWwo JmNhcC0+bmV4dCwgJnBkZXYtPnZwY2ktPmNhcF9saXN0KTsKKyAgICAgICAgcG9zICs9IFBDSV9D QVBfTElTVF9ORVhUOworICAgICAgICByYyA9IHhlbl92cGNpX2FkZF9yZWdpc3RlcihwZGV2LCB2 cGNpX2NhcF9yZWFkLCB2cGNpX2NhcF93cml0ZSwgcG9zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxLCBjYXApOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHJl dHVybiByYzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdnBjaV9t YXNrX2NhcGFiaWxpdHkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVpbnQ4X3QgY2FwX2lkKQorewor ICAgIHN0cnVjdCB2cGNpX2NhcGFiaWxpdHkgKmNhcDsKKyAgICB1aW50OF90IGNhcF9vZmZzZXQ7 CisKKyAgICBjYXBfb2Zmc2V0ID0gcGNpX2ZpbmRfY2FwX29mZnNldChwZGV2LT5zZWcsIHBkZXYt PmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChwZGV2 LT5kZXZmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMo cGRldi0+ZGV2Zm4pLCBjYXBfaWQpOworICAgIGlmICggIWNhcF9vZmZzZXQgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggY2FwLCAmcGRldi0+dnBjaS0+Y2Fw X2xpc3QsIG5leHQgKQorICAgIHsKKyAgICAgICAgaWYgKCBjYXAtPm9mZnNldCA9PSBjYXBfb2Zm c2V0ICkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwLT5tYXNrZWQgPSB0cnVlOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgdnBjaV9jYXBh YmlsaXRpZXNfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKyAgICBpbnQgcmM7CisKKyAg ICByYyA9IHZwY2lfaW5kZXhfY2FwYWJpbGl0aWVzKHBkZXYpOworICAgIGlmICggcmMgKQorICAg ICAgICByZXR1cm4gcmM7CisKKyAgICAvKiBNYXNrIE1TSSBhbmQgTVNJLVggY2FwYWJpbGl0aWVz IHVudGlsIFhlbiBoYW5kbGVzIHRoZW0uICovCisgICAgdnBjaV9tYXNrX2NhcGFiaWxpdHkocGRl diwgUENJX0NBUF9JRF9NU0kpOworICAgIHZwY2lfbWFza19jYXBhYmlsaXR5KHBkZXYsIFBDSV9D QVBfSURfTVNJWCk7CisKKyAgICByZXR1cm4gMDsKK30KKworUkVHSVNURVJfVlBDSV9JTklUKHZw Y2lfY2FwYWJpbGl0aWVzX2luaXQpOworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9k ZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRh Yi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KKwpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3ZwY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi92cGNpLmgK aW5kZXggNjhhMmFiOWNkNS4uNTM0NDNmNTE2NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVu L3ZwY2kuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vdnBjaS5oCkBAIC03Niw2ICs3Niw5IEBAIHN0 cnVjdCB2cGNpIHsKICAgICAgICAgICAgIGJvb2wgc2l6aW5nOwogICAgICAgICB9IGJhcnNbNl07 CiAgICAgfSBoZWFkZXI7CisKKyAgICAvKiBMaXN0IG9mIGNhcGFiaWxpdGllcyBzdXBwb3J0ZWQg YnkgdGhlIGRldmljZS4gKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNhcF9saXN0OwogI2VuZGlm CiB9OwogCi0tIAoyLjExLjAgKEFwcGxlIEdpdC04MSkKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK