From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH V5] pci: removed the is_express field since a uniform interface was inserted Date: Tue, 16 Jan 2018 06:47:21 +0200 Message-ID: <20180116064639-mutt-send-email-mst@kernel.org> References: <20171218152140.17985-1-ybettan@redhat.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.84_2) (envelope-from ) id 1ebJA0-0005Wx-0d for xen-devel@lists.xenproject.org; Tue, 16 Jan 2018 04:47:44 +0000 Content-Disposition: inline In-Reply-To: <20171218152140.17985-1-ybettan@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Yoni Bettan Cc: Kevin Wolf , Hannes Reinecke , Stefano Stabellini , Alex Williamson , "open list:X86" , "open list:nvme" , Jason Wang , qemu-devel@nongnu.org, Max Reitz , Keith Busch , Dmitry Fleytman , Paul Burton , Gerd Hoffmann , Anthony Perard , Marcel Apfelbaum , Paolo Bonzini List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBEZWMgMTgsIDIwMTcgYXQgMDU6MjE6NDBQTSArMDIwMCwgWW9uaSBCZXR0YW4gd3Jv dGU6Cj4gYWNjb3JkaW5nIHRvIEVkdWFyZG8gSGFia29zdCdzIGNvbW1pdCBmZDNiMDJjODg5IGFs bCBQQ0lFcyBub3cgaW1wbGVtZW50Cj4gSU5URVJGQUNFX1BDSUVfREVWSUNFIHNvIHdlIGRvbid0 IG5lZWQgaXNfZXhwcmVzcyBmaWVsZCBhbnltb3JlLgo+IAo+IERldmljZXMgdGhhdCBpbXBsZW1l bnRzIG9ubHkgSU5URVJGQUNFX1BDSUVfREVWSUNFIChpc19leHByZXNzID09IDEpCj4gb3IKPiBk ZXZpY2VzIHRoYXQgaW1wbGVtZW50cyBvbmx5IElOVEVSRkFDRV9DT05WRU5USU9OQUxfUENJX0RF VklDRSAoaXNfZXhwcmVzcyA9PSAwKQo+IHdoZXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY2hhbmdl Lgo+IAo+IFRoZSBvbmx5IGRldmljZXMgdGhhdCB3ZXJlIGFmZmVjdGVkIGFyZSB0aG9zZSB0aGF0 IGFyZSBoeWJyaWQgYW5kIGFsc28KPiBoYWQgKGlzX2V4cHJlc3MgPT0gMSkgLSB0aGVyZWZvciBv bmx5Ogo+ICAgLSBody92ZmlvL3BjaS5jCj4gICAtIGh3L3VzYi9oY2QteGhjaS5jCj4gICAtIGh3 L3hlbi94ZW5fcHQuYwo+IAo+IEZvciB0aG9zZSAzIEkgbWFkZSBzdXJlIHRoYXQgUUVNVV9QQ0lf Q0FQX0VYUFJFU1MgaXMgb24gaW4gaW5zdGFuY2VfaW5pdCgpCj4gCj4gU2lnbmVkLW9mZi1ieTog WW9uaSBCZXR0YW4gPHliZXR0YW5AcmVkaGF0LmNvbT4KCgpUaGFua3MhCkNvdWxkIHlvdSBwbHMg cmViYXNlIHRoaXMgb24gdG9wIG9mIHRoZSBsYXRlc3QgcGNpIGJyYW5jaD8KVGhlcmUncyBiZWVu IHNvbWUgY29uZmxpY3RpbmcgY2hhbmdlcyBzbyB0aGlzIG5vIGxvbmdlcgphcHBsaWVzIGNsZWFu bHkuCgoKPiAtLS0KPiAgZG9jcy9wY2llX3BjaV9icmlkZ2UudHh0ICAgICAgICAgICB8IDIgKy0K PiAgaHcvYmxvY2svbnZtZS5jICAgICAgICAgICAgICAgICAgICB8IDEgLQo+ICBody9uZXQvZTEw MDBlLmMgICAgICAgICAgICAgICAgICAgIHwgMSAtCj4gIGh3L3BjaS1icmlkZ2UvcGNpZV9wY2lf YnJpZGdlLmMgICAgfCAxIC0KPiAgaHcvcGNpLWJyaWRnZS9wY2llX3Jvb3RfcG9ydC5jICAgICB8 IDEgLQo+ICBody9wY2ktYnJpZGdlL3hpbzMxMzBfZG93bnN0cmVhbS5jIHwgMSAtCj4gIGh3L3Bj aS1icmlkZ2UveGlvMzEzMF91cHN0cmVhbS5jICAgfCAxIC0KPiAgaHcvcGNpLWhvc3QveGlsaW54 LXBjaWUuYyAgICAgICAgICB8IDEgLQo+ICBody9wY2kvcGNpLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgOCArKysrKystLQo+ICBody9zY3NpL21lZ2FzYXMuYyAgICAgICAgICAgICAgICAgIHwg NCAtLS0tCj4gIGh3L3VzYi9oY2QteGhjaS5jICAgICAgICAgICAgICAgICAgfCA5ICsrKysrKysr LQo+ICBody92ZmlvL3BjaS5jICAgICAgICAgICAgICAgICAgICAgIHwgNSArKysrLQo+ICBody94 ZW4veGVuX3B0LmMgICAgICAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KPiAgaW5jbHVkZS9o dy9wY2kvcGNpLmggICAgICAgICAgICAgICB8IDMgLS0tCj4gIDE0IGZpbGVzIGNoYW5nZWQsIDI3 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kb2NzL3Bj aWVfcGNpX2JyaWRnZS50eHQgYi9kb2NzL3BjaWVfcGNpX2JyaWRnZS50eHQKPiBpbmRleCA1YTQy MDNmOTdjLi5hYjM1ZWJmM2NhIDEwMDY0NAo+IC0tLSBhL2RvY3MvcGNpZV9wY2lfYnJpZGdlLnR4 dAo+ICsrKyBiL2RvY3MvcGNpZV9wY2lfYnJpZGdlLnR4dAo+IEBAIC0xMTAsNSArMTEwLDUgQEAg VG8gZW5hYmxlIGRldmljZSBob3QtcGx1ZyBpbnRvIHRoZSBicmlkZ2Ugb24gTGludXggdGhlcmUn cmUgMyB3YXlzOgo+ICBJbXBsZW1lbnRhdGlvbgo+ICA9PT09PT09PT09PT09PQo+ICBUaGUgUENJ RS1QQ0kgYnJpZGdlIGlzIGJhc2VkIG9uIFBDSS1QQ0kgYnJpZGdlLCBidXQgYWxzbyBhY2N1bXVs YXRlcyBQQ0kgRXhwcmVzcwo+IC1mZWF0dXJlcyBhcyBhIFBDSSBFeHByZXNzIGRldmljZSAoaXNf ZXhwcmVzcz0xKS4KPiArZmVhdHVyZXMgYXMgYSBQQ0kgRXhwcmVzcyBkZXZpY2UuCj4gIAo+IGRp ZmYgLS1naXQgYS9ody9ibG9jay9udm1lLmMgYi9ody9ibG9jay9udm1lLmMKPiBpbmRleCA0NDFl MjFlZDFmLi45MzI1YmMwOTExIDEwMDY0NAo+IC0tLSBhL2h3L2Jsb2NrL252bWUuYwo+ICsrKyBi L2h3L2Jsb2NrL252bWUuYwo+IEBAIC0xMDg3LDcgKzEwODcsNiBAQCBzdGF0aWMgdm9pZCBudm1l X2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKm9jLCB2b2lkICpkYXRhKQo+ICAgICAgcGMtPnZlbmRv cl9pZCA9IFBDSV9WRU5ET1JfSURfSU5URUw7Cj4gICAgICBwYy0+ZGV2aWNlX2lkID0gMHg1ODQ1 Owo+ICAgICAgcGMtPnJldmlzaW9uID0gMjsKPiAtICAgIHBjLT5pc19leHByZXNzID0gMTsKPiAg Cj4gICAgICBzZXRfYml0KERFVklDRV9DQVRFR09SWV9TVE9SQUdFLCBkYy0+Y2F0ZWdvcmllcyk7 Cj4gICAgICBkYy0+ZGVzYyA9ICJOb24tVm9sYXRpbGUgTWVtb3J5IEV4cHJlc3MiOwo+IGRpZmYg LS1naXQgYS9ody9uZXQvZTEwMDBlLmMgYi9ody9uZXQvZTEwMDBlLmMKPiBpbmRleCBmMWFmMjc5 ZThkLi5jMzYwZjBkOGM5IDEwMDY0NAo+IC0tLSBhL2h3L25ldC9lMTAwMGUuYwo+ICsrKyBiL2h3 L25ldC9lMTAwMGUuYwo+IEBAIC02NzUsNyArNjc1LDYgQEAgc3RhdGljIHZvaWQgZTEwMDBlX2Ns YXNzX2luaXQoT2JqZWN0Q2xhc3MgKmNsYXNzLCB2b2lkICpkYXRhKQo+ICAgICAgYy0+cmV2aXNp b24gPSAwOwo+ICAgICAgYy0+cm9tZmlsZSA9ICJlZmktZTEwMDBlLnJvbSI7Cj4gICAgICBjLT5j bGFzc19pZCA9IFBDSV9DTEFTU19ORVRXT1JLX0VUSEVSTkVUOwo+IC0gICAgYy0+aXNfZXhwcmVz cyA9IDE7Cj4gIAo+ICAgICAgZGMtPmRlc2MgPSAiSW50ZWwgODI1NzRMIEdiRSBDb250cm9sbGVy IjsKPiAgICAgIGRjLT5yZXNldCA9IGUxMDAwZV9xZGV2X3Jlc2V0Owo+IGRpZmYgLS1naXQgYS9o dy9wY2ktYnJpZGdlL3BjaWVfcGNpX2JyaWRnZS5jIGIvaHcvcGNpLWJyaWRnZS9wY2llX3BjaV9i cmlkZ2UuYwo+IGluZGV4IGE0ZDgyN2M5OWQuLmI3ZDllYmJlYzIgMTAwNjQ0Cj4gLS0tIGEvaHcv cGNpLWJyaWRnZS9wY2llX3BjaV9icmlkZ2UuYwo+ICsrKyBiL2h3L3BjaS1icmlkZ2UvcGNpZV9w Y2lfYnJpZGdlLmMKPiBAQCAtMTY5LDcgKzE2OSw2IEBAIHN0YXRpYyB2b2lkIHBjaWVfcGNpX2Jy aWRnZV9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkKPiAgICAgIERl dmljZUNsYXNzICpkYyA9IERFVklDRV9DTEFTUyhrbGFzcyk7Cj4gICAgICBIb3RwbHVnSGFuZGxl ckNsYXNzICpoYyA9IEhPVFBMVUdfSEFORExFUl9DTEFTUyhrbGFzcyk7Cj4gIAo+IC0gICAgay0+ aXNfZXhwcmVzcyA9IDE7Cj4gICAgICBrLT5pc19icmlkZ2UgPSAxOwo+ICAgICAgay0+dmVuZG9y X2lkID0gUENJX1ZFTkRPUl9JRF9SRURIQVQ7Cj4gICAgICBrLT5kZXZpY2VfaWQgPSBQQ0lfREVW SUNFX0lEX1JFREhBVF9QQ0lFX0JSSURHRTsKPiBkaWZmIC0tZ2l0IGEvaHcvcGNpLWJyaWRnZS9w Y2llX3Jvb3RfcG9ydC5jIGIvaHcvcGNpLWJyaWRnZS9wY2llX3Jvb3RfcG9ydC5jCj4gaW5kZXgg OWI2ZTRjZTUxMi4uNDVmOWU4Y2Q0YSAxMDA2NDQKPiAtLS0gYS9ody9wY2ktYnJpZGdlL3BjaWVf cm9vdF9wb3J0LmMKPiArKysgYi9ody9wY2ktYnJpZGdlL3BjaWVfcm9vdF9wb3J0LmMKPiBAQCAt MTQ1LDcgKzE0NSw2IEBAIHN0YXRpYyB2b2lkIHJwX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmts YXNzLCB2b2lkICpkYXRhKQo+ICAgICAgRGV2aWNlQ2xhc3MgKmRjID0gREVWSUNFX0NMQVNTKGts YXNzKTsKPiAgICAgIFBDSURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7 Cj4gIAo+IC0gICAgay0+aXNfZXhwcmVzcyA9IDE7Cj4gICAgICBrLT5pc19icmlkZ2UgPSAxOwo+ ICAgICAgay0+Y29uZmlnX3dyaXRlID0gcnBfd3JpdGVfY29uZmlnOwo+ICAgICAgay0+cmVhbGl6 ZSA9IHJwX3JlYWxpemU7Cj4gZGlmZiAtLWdpdCBhL2h3L3BjaS1icmlkZ2UveGlvMzEzMF9kb3du c3RyZWFtLmMgYi9ody9wY2ktYnJpZGdlL3hpbzMxMzBfZG93bnN0cmVhbS5jCj4gaW5kZXggMWUw OWQyYWZiNy4uNjEzYTBkNmJiNyAxMDA2NDQKPiAtLS0gYS9ody9wY2ktYnJpZGdlL3hpbzMxMzBf ZG93bnN0cmVhbS5jCj4gKysrIGIvaHcvcGNpLWJyaWRnZS94aW8zMTMwX2Rvd25zdHJlYW0uYwo+ IEBAIC0xNzcsNyArMTc3LDYgQEAgc3RhdGljIHZvaWQgeGlvMzEzMF9kb3duc3RyZWFtX2NsYXNz X2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQo+ICAgICAgRGV2aWNlQ2xhc3Mg KmRjID0gREVWSUNFX0NMQVNTKGtsYXNzKTsKPiAgICAgIFBDSURldmljZUNsYXNzICprID0gUENJ X0RFVklDRV9DTEFTUyhrbGFzcyk7Cj4gIAo+IC0gICAgay0+aXNfZXhwcmVzcyA9IDE7Cj4gICAg ICBrLT5pc19icmlkZ2UgPSAxOwo+ICAgICAgay0+Y29uZmlnX3dyaXRlID0geGlvMzEzMF9kb3du c3RyZWFtX3dyaXRlX2NvbmZpZzsKPiAgICAgIGstPnJlYWxpemUgPSB4aW8zMTMwX2Rvd25zdHJl YW1fcmVhbGl6ZTsKPiBkaWZmIC0tZ2l0IGEvaHcvcGNpLWJyaWRnZS94aW8zMTMwX3Vwc3RyZWFt LmMgYi9ody9wY2ktYnJpZGdlL3hpbzMxMzBfdXBzdHJlYW0uYwo+IGluZGV4IDIyNzk5N2NlNDYu LmQ0NjQ1YmRkZWUgMTAwNjQ0Cj4gLS0tIGEvaHcvcGNpLWJyaWRnZS94aW8zMTMwX3Vwc3RyZWFt LmMKPiArKysgYi9ody9wY2ktYnJpZGdlL3hpbzMxMzBfdXBzdHJlYW0uYwo+IEBAIC0xNDgsNyAr MTQ4LDYgQEAgc3RhdGljIHZvaWQgeGlvMzEzMF91cHN0cmVhbV9jbGFzc19pbml0KE9iamVjdENs YXNzICprbGFzcywgdm9pZCAqZGF0YSkKPiAgICAgIERldmljZUNsYXNzICpkYyA9IERFVklDRV9D TEFTUyhrbGFzcyk7Cj4gICAgICBQQ0lEZXZpY2VDbGFzcyAqayA9IFBDSV9ERVZJQ0VfQ0xBU1Mo a2xhc3MpOwo+ICAKPiAtICAgIGstPmlzX2V4cHJlc3MgPSAxOwo+ICAgICAgay0+aXNfYnJpZGdl ID0gMTsKPiAgICAgIGstPmNvbmZpZ193cml0ZSA9IHhpbzMxMzBfdXBzdHJlYW1fd3JpdGVfY29u ZmlnOwo+ICAgICAgay0+cmVhbGl6ZSA9IHhpbzMxMzBfdXBzdHJlYW1fcmVhbGl6ZTsKPiBkaWZm IC0tZ2l0IGEvaHcvcGNpLWhvc3QveGlsaW54LXBjaWUuYyBiL2h3L3BjaS1ob3N0L3hpbGlueC1w Y2llLmMKPiBpbmRleCA3NjU5MjUzMDkwLi5hNGNhM2JhMzBmIDEwMDY0NAo+IC0tLSBhL2h3L3Bj aS1ob3N0L3hpbGlueC1wY2llLmMKPiArKysgYi9ody9wY2ktaG9zdC94aWxpbngtcGNpZS5jCj4g QEAgLTI5OCw3ICsyOTgsNiBAQCBzdGF0aWMgdm9pZCB4aWxpbnhfcGNpZV9yb290X2NsYXNzX2lu aXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQo+ICAgICAgay0+ZGV2aWNlX2lkID0g MHg3MDIxOwo+ICAgICAgay0+cmV2aXNpb24gPSAwOwo+ICAgICAgay0+Y2xhc3NfaWQgPSBQQ0lf Q0xBU1NfQlJJREdFX0hPU1Q7Cj4gLSAgICBrLT5pc19leHByZXNzID0gdHJ1ZTsKPiAgICAgIGst PmlzX2JyaWRnZSA9IHRydWU7Cj4gICAgICBrLT5pbml0ID0geGlsaW54X3BjaWVfcm9vdF9pbml0 Owo+ICAgICAgay0+ZXhpdCA9IHBjaV9icmlkZ2VfZXhpdGZuOwo+IGRpZmYgLS1naXQgYS9ody9w Y2kvcGNpLmMgYi9ody9wY2kvcGNpLmMKPiBpbmRleCBiMmQxMzliZDlhLi5kYzZmYWE0NmI5IDEw MDY0NAo+IC0tLSBhL2h3L3BjaS9wY2kuYwo+ICsrKyBiL2h3L3BjaS9wY2kuYwo+IEBAIC0yMDE0 LDEyICsyMDE0LDE2IEBAIHN0YXRpYyB2b2lkIHBjaV9xZGV2X3JlYWxpemUoRGV2aWNlU3RhdGUg KnFkZXYsIEVycm9yICoqZXJycCkKPiAgewo+ICAgICAgUENJRGV2aWNlICpwY2lfZGV2ID0gKFBD SURldmljZSAqKXFkZXY7Cj4gICAgICBQQ0lEZXZpY2VDbGFzcyAqcGMgPSBQQ0lfREVWSUNFX0dF VF9DTEFTUyhwY2lfZGV2KTsKPiArICAgIE9iamVjdENsYXNzICprbGFzcyA9IE9CSkVDVF9DTEFT UyhwYyk7Cj4gICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKPiAgICAgIFBDSUJ1cyAqYnVz Owo+ICAgICAgYm9vbCBpc19kZWZhdWx0X3JvbTsKPiAgCj4gLSAgICAvKiBpbml0aWFsaXplIGNh cF9wcmVzZW50IGZvciBwY2lfaXNfZXhwcmVzcygpIGFuZCBwY2lfY29uZmlnX3NpemUoKSAqLwo+ IC0gICAgaWYgKHBjLT5pc19leHByZXNzKSB7Cj4gKyAgICAvKiBpbml0aWFsaXplIGNhcF9wcmVz ZW50IGZvciBwY2lfaXNfZXhwcmVzcygpIGFuZCBwY2lfY29uZmlnX3NpemUoKSwKPiArICAgICAq IE5vdGUgdGhhdCBoeWJyaWQgUENJcyBhcmUgbm90IHNldCBhdXRvbWF0aWNhbGx5IGFuZCBuZWVk IHRvIG1hbmFnZQo+ICsgICAgICogUUVNVV9QQ0lfQ0FQX0VYUFJFU1MgbWFudWFsbHkgKi8KPiAr ICAgIGlmIChvYmplY3RfY2xhc3NfZHluYW1pY19jYXN0KGtsYXNzLCBJTlRFUkZBQ0VfUENJRV9E RVZJQ0UpICYmCj4gKyAgICAgICAhb2JqZWN0X2NsYXNzX2R5bmFtaWNfY2FzdChrbGFzcywgSU5U RVJGQUNFX0NPTlZFTlRJT05BTF9QQ0lfREVWSUNFKSkgewo+ICAgICAgICAgIHBjaV9kZXYtPmNh cF9wcmVzZW50IHw9IFFFTVVfUENJX0NBUF9FWFBSRVNTOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEvaHcvc2NzaS9tZWdhc2FzLmMgYi9ody9zY3NpL21lZ2FzYXMuYwo+IGluZGV4IGQ1ZWFl NjIzOWEuLmVlNTFmZWRhNTkgMTAwNjQ0Cj4gLS0tIGEvaHcvc2NzaS9tZWdhc2FzLmMKPiArKysg Yi9ody9zY3NpL21lZ2FzYXMuYwo+IEBAIC0yNDQ3LDcgKzI0NDcsNiBAQCB0eXBlZGVmIHN0cnVj dCBNZWdhc2FzSW5mbyB7Cj4gICAgICB1aW50MTZfdCBzdWJzeXN0ZW1faWQ7Cj4gICAgICBpbnQg aW9wb3J0X2JhcjsKPiAgICAgIGludCBtbWlvX2JhcjsKPiAtICAgIGJvb2wgaXNfZXhwcmVzczsK PiAgICAgIGludCBvc3RzOwo+ICAgICAgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uICp2bXNkOwo+ ICAgICAgUHJvcGVydHkgKnByb3BzOwo+IEBAIC0yNDY1LDcgKzI0NjQsNiBAQCBzdGF0aWMgc3Ry dWN0IE1lZ2FzYXNJbmZvIG1lZ2FzYXNfZGV2aWNlc1tdID0gewo+ICAgICAgICAgIC5pb3BvcnRf YmFyID0gMiwKPiAgICAgICAgICAubW1pb19iYXIgPSAwLAo+ICAgICAgICAgIC5vc3RzID0gTUZJ XzEwNzhfUk0gfCAxLAo+IC0gICAgICAgIC5pc19leHByZXNzID0gZmFsc2UsCj4gICAgICAgICAg LnZtc2QgPSAmdm1zdGF0ZV9tZWdhc2FzX2dlbjEsCj4gICAgICAgICAgLnByb3BzID0gbWVnYXNh c19wcm9wZXJ0aWVzX2dlbjEsCj4gICAgICAgICAgLmludGVyZmFjZXMgPSAoSW50ZXJmYWNlSW5m b1tdKSB7Cj4gQEAgLTI0ODIsNyArMjQ4MCw2IEBAIHN0YXRpYyBzdHJ1Y3QgTWVnYXNhc0luZm8g bWVnYXNhc19kZXZpY2VzW10gPSB7Cj4gICAgICAgICAgLmlvcG9ydF9iYXIgPSAwLAo+ICAgICAg ICAgIC5tbWlvX2JhciA9IDEsCj4gICAgICAgICAgLm9zdHMgPSBNRklfR0VOMl9STSwKPiAtICAg ICAgICAuaXNfZXhwcmVzcyA9IHRydWUsCj4gICAgICAgICAgLnZtc2QgPSAmdm1zdGF0ZV9tZWdh c2FzX2dlbjIsCj4gICAgICAgICAgLnByb3BzID0gbWVnYXNhc19wcm9wZXJ0aWVzX2dlbjIsCj4g ICAgICAgICAgLmludGVyZmFjZXMgPSAoSW50ZXJmYWNlSW5mb1tdKSB7Cj4gQEAgLTI1MDYsNyAr MjUwMyw2IEBAIHN0YXRpYyB2b2lkIG1lZ2FzYXNfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqb2Ms IHZvaWQgKmRhdGEpCj4gICAgICBwYy0+c3Vic3lzdGVtX3ZlbmRvcl9pZCA9IFBDSV9WRU5ET1Jf SURfTFNJX0xPR0lDOwo+ICAgICAgcGMtPnN1YnN5c3RlbV9pZCA9IGluZm8tPnN1YnN5c3RlbV9p ZDsKPiAgICAgIHBjLT5jbGFzc19pZCA9IFBDSV9DTEFTU19TVE9SQUdFX1JBSUQ7Cj4gLSAgICBw Yy0+aXNfZXhwcmVzcyA9IGluZm8tPmlzX2V4cHJlc3M7Cj4gICAgICBlLT5tbWlvX2JhciA9IGlu Zm8tPm1taW9fYmFyOwo+ICAgICAgZS0+aW9wb3J0X2JhciA9IGluZm8tPmlvcG9ydF9iYXI7Cj4g ICAgICBlLT5vc3RzID0gaW5mby0+b3N0czsKPiBkaWZmIC0tZ2l0IGEvaHcvdXNiL2hjZC14aGNp LmMgYi9ody91c2IvaGNkLXhoY2kuYwo+IGluZGV4IGFmM2E5ZDg4ZGUuLjUwYTQwOWYwZjUgMTAw NjQ0Cj4gLS0tIGEvaHcvdXNiL2hjZC14aGNpLmMKPiArKysgYi9ody91c2IvaGNkLXhoY2kuYwo+ IEBAIC0zNjQ5LDYgKzM2NDksMTMgQEAgc3RhdGljIFByb3BlcnR5IHhoY2lfcHJvcGVydGllc1td ID0gewo+ICAgICAgREVGSU5FX1BST1BfRU5EX09GX0xJU1QoKSwKPiAgfTsKPiAgCj4gK3N0YXRp YyB2b2lkIHhoY2lfaW5zdGFuY2VfaW5pdChPYmplY3QgKm9iaikKPiArewo+ICsgICAgLyogUUVN VV9QQ0lfQ0FQX0VYUFJFU1MgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgZGVwZW5kIG9uIFFFTVUg Y29tbWFuZAo+ICsgICAgICogbGluZSwgdGhlcmVmb3JlLCBubyBuZWVkIHRvIHdhaXQgdG8gcmVh bGl6ZSBsaWtlIG90aGVyIGRldmljZXMgKi8KPiArICAgIFBDSV9ERVZJQ0Uob2JqKS0+Y2FwX3By ZXNlbnQgfD0gUUVNVV9QQ0lfQ0FQX0VYUFJFU1M7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIHho Y2lfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCj4gIHsKPiAgICAg IFBDSURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7Cj4gQEAgLTM2NjEs NyArMzY2OCw2IEBAIHN0YXRpYyB2b2lkIHhoY2lfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xh c3MsIHZvaWQgKmRhdGEpCj4gICAgICBrLT5yZWFsaXplICAgICAgPSB1c2JfeGhjaV9yZWFsaXpl Owo+ICAgICAgay0+ZXhpdCAgICAgICAgID0gdXNiX3hoY2lfZXhpdDsKPiAgICAgIGstPmNsYXNz X2lkICAgICA9IFBDSV9DTEFTU19TRVJJQUxfVVNCOwo+IC0gICAgay0+aXNfZXhwcmVzcyAgID0g MTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IFR5cGVJbmZvIHhoY2lfaW5mbyA9IHsKPiBAQCAt MzY2OSw2ICszNjc1LDcgQEAgc3RhdGljIGNvbnN0IFR5cGVJbmZvIHhoY2lfaW5mbyA9IHsKPiAg ICAgIC5wYXJlbnQgICAgICAgID0gVFlQRV9QQ0lfREVWSUNFLAo+ICAgICAgLmluc3RhbmNlX3Np emUgPSBzaXplb2YoWEhDSVN0YXRlKSwKPiAgICAgIC5jbGFzc19pbml0ICAgID0geGhjaV9jbGFz c19pbml0LAo+ICsgICAgLmluc3RhbmNlX2luaXQgPSB4aGNpX2luc3RhbmNlX2luaXQsCj4gICAg ICAuYWJzdHJhY3QgICAgICA9IHRydWUsCj4gICAgICAuaW50ZXJmYWNlcyA9IChJbnRlcmZhY2VJ bmZvW10pIHsKPiAgICAgICAgICB7IElOVEVSRkFDRV9QQ0lFX0RFVklDRSB9LAo+IGRpZmYgLS1n aXQgYS9ody92ZmlvL3BjaS5jIGIvaHcvdmZpby9wY2kuYwo+IGluZGV4IGM5NzdlZTMyN2YuLjE5 NTczMmEwMDAgMTAwNjQ0Cj4gLS0tIGEvaHcvdmZpby9wY2kuYwo+ICsrKyBiL2h3L3ZmaW8vcGNp LmMKPiBAQCAtMjk3Miw2ICsyOTcyLDEwIEBAIHN0YXRpYyB2b2lkIHZmaW9faW5zdGFuY2VfaW5p dChPYmplY3QgKm9iaikKPiAgICAgIHZkZXYtPmhvc3QuZnVuY3Rpb24gPSB+MFU7Cj4gIAo+ICAg ICAgdmRldi0+bnZfZ3B1ZGlyZWN0X2NsaXF1ZSA9IDB4RkY7Cj4gKwo+ICsgICAgLyogUUVNVV9Q Q0lfQ0FQX0VYUFJFU1MgaW5pdGlhbGl6YXRpb24gZG9lcyBub3QgZGVwZW5kIG9uIFFFTVUgY29t bWFuZAo+ICsgICAgICogbGluZSwgdGhlcmVmb3JlLCBubyBuZWVkIHRvIHdhaXQgdG8gcmVhbGl6 ZSBsaWtlIG90aGVyIGRldmljZXMgKi8KPiArICAgIHBjaV9kZXYtPmNhcF9wcmVzZW50IHw9IFFF TVVfUENJX0NBUF9FWFBSRVNTOwo+ICB9Cj4gIAo+ICBzdGF0aWMgUHJvcGVydHkgdmZpb19wY2lf ZGV2X3Byb3BlcnRpZXNbXSA9IHsKPiBAQCAtMzAyNiw3ICszMDMwLDYgQEAgc3RhdGljIHZvaWQg dmZpb19wY2lfZGV2X2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQo+ ICAgICAgcGRjLT5leGl0ID0gdmZpb19leGl0Zm47Cj4gICAgICBwZGMtPmNvbmZpZ19yZWFkID0g dmZpb19wY2lfcmVhZF9jb25maWc7Cj4gICAgICBwZGMtPmNvbmZpZ193cml0ZSA9IHZmaW9fcGNp X3dyaXRlX2NvbmZpZzsKPiAtICAgIHBkYy0+aXNfZXhwcmVzcyA9IDE7IC8qIFdlIG1pZ2h0IGJl ICovCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBUeXBlSW5mbyB2ZmlvX3BjaV9kZXZfaW5mbyA9 IHsKPiBkaWZmIC0tZ2l0IGEvaHcveGVuL3hlbl9wdC5jIGIvaHcveGVuL3hlbl9wdC5jCj4gaW5k ZXggZDU3YzZkMzQ4NS4uNmNlOWJmZTdmYiAxMDA2NDQKPiAtLS0gYS9ody94ZW4veGVuX3B0LmMK PiArKysgYi9ody94ZW4veGVuX3B0LmMKPiBAQCAtOTM3LDYgKzkzNywxMyBAQCBzdGF0aWMgUHJv cGVydHkgeGVuX3BjaV9wYXNzdGhyb3VnaF9wcm9wZXJ0aWVzW10gPSB7Cj4gICAgICBERUZJTkVf UFJPUF9FTkRfT0ZfTElTVCgpLAo+ICB9Owo+ICAKPiArc3RhdGljIHZvaWQgeGVuX3BjaV9wYXNz dGhyb3VnaF9pbnN0YW5jZV9pbml0KE9iamVjdCAqb2JqKQo+ICt7Cj4gKyAgICAvKiBRRU1VX1BD SV9DQVBfRVhQUkVTUyBpbml0aWFsaXphdGlvbiBkb2VzIG5vdCBkZXBlbmQgb24gUUVNVSBjb21t YW5kCj4gKyAgICAgKiBsaW5lLCB0aGVyZWZvcmUsIG5vIG5lZWQgdG8gd2FpdCB0byByZWFsaXpl IGxpa2Ugb3RoZXIgZGV2aWNlcyAqLwo+ICsgICAgUENJX0RFVklDRShvYmopLT5jYXBfcHJlc2Vu dCB8PSBRRU1VX1BDSV9DQVBfRVhQUkVTUzsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgeGVuX3Bj aV9wYXNzdGhyb3VnaF9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkK PiAgewo+ICAgICAgRGV2aWNlQ2xhc3MgKmRjID0gREVWSUNFX0NMQVNTKGtsYXNzKTsKPiBAQCAt OTQ2LDcgKzk1Myw2IEBAIHN0YXRpYyB2b2lkIHhlbl9wY2lfcGFzc3Rocm91Z2hfY2xhc3NfaW5p dChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCj4gICAgICBrLT5leGl0ID0geGVuX3B0 X3VucmVnaXN0ZXJfZGV2aWNlOwo+ICAgICAgay0+Y29uZmlnX3JlYWQgPSB4ZW5fcHRfcGNpX3Jl YWRfY29uZmlnOwo+ICAgICAgay0+Y29uZmlnX3dyaXRlID0geGVuX3B0X3BjaV93cml0ZV9jb25m aWc7Cj4gLSAgICBrLT5pc19leHByZXNzID0gMTsgLyogV2UgbWlnaHQgYmUgKi8KPiAgICAgIHNl dF9iaXQoREVWSUNFX0NBVEVHT1JZX01JU0MsIGRjLT5jYXRlZ29yaWVzKTsKPiAgICAgIGRjLT5k ZXNjID0gIkFzc2lnbiBhbiBob3N0IFBDSSBkZXZpY2Ugd2l0aCBYZW4iOwo+ICAgICAgZGMtPnBy b3BzID0geGVuX3BjaV9wYXNzdGhyb3VnaF9wcm9wZXJ0aWVzOwo+IEBAIC05NjUsNiArOTcxLDcg QEAgc3RhdGljIGNvbnN0IFR5cGVJbmZvIHhlbl9wY2lfcGFzc3Rocm91Z2hfaW5mbyA9IHsKPiAg ICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFhlblBDSVBhc3N0aHJvdWdoU3RhdGUpLAo+ICAg ICAgLmluc3RhbmNlX2ZpbmFsaXplID0geGVuX3BjaV9wYXNzdGhyb3VnaF9maW5hbGl6ZSwKPiAg ICAgIC5jbGFzc19pbml0ID0geGVuX3BjaV9wYXNzdGhyb3VnaF9jbGFzc19pbml0LAo+ICsgICAg Lmluc3RhbmNlX2luaXQgPSB4ZW5fcGNpX3Bhc3N0aHJvdWdoX2luc3RhbmNlX2luaXQsCj4gICAg ICAuaW50ZXJmYWNlcyA9IChJbnRlcmZhY2VJbmZvW10pIHsKPiAgICAgICAgICB7IElOVEVSRkFD RV9DT05WRU5USU9OQUxfUENJX0RFVklDRSB9LAo+ICAgICAgICAgIHsgSU5URVJGQUNFX1BDSUVf REVWSUNFIH0sCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvcGNpL3BjaS5oIGIvaW5jbHVkZS9o dy9wY2kvcGNpLmgKPiBpbmRleCA4ZDAyYTBhMzgzLi5hMjdiZTg1MTExIDEwMDY0NAo+IC0tLSBh L2luY2x1ZGUvaHcvcGNpL3BjaS5oCj4gKysrIGIvaW5jbHVkZS9ody9wY2kvcGNpLmgKPiBAQCAt MjM2LDkgKzIzNiw2IEBAIHR5cGVkZWYgc3RydWN0IFBDSURldmljZUNsYXNzIHsKPiAgICAgICAq Lwo+ICAgICAgaW50IGlzX2JyaWRnZTsKPiAgCj4gLSAgICAvKiBwY2llIHN0dWZmICovCj4gLSAg ICBpbnQgaXNfZXhwcmVzczsgICAvKiBpcyB0aGlzIGRldmljZSBwY2kgZXhwcmVzcz8gKi8KPiAt Cj4gICAgICAvKiByb20gYmFyICovCj4gICAgICBjb25zdCBjaGFyICpyb21maWxlOwo+ICB9IFBD SURldmljZUNsYXNzOwo+IC0tIAo+IDIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebJA0-0008Go-4x for qemu-devel@nongnu.org; Mon, 15 Jan 2018 23:47:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebJ9y-0004rp-Ff for qemu-devel@nongnu.org; Mon, 15 Jan 2018 23:47:44 -0500 Date: Tue, 16 Jan 2018 06:47:21 +0200 From: "Michael S. Tsirkin" Message-ID: <20180116064639-mutt-send-email-mst@kernel.org> References: <20171218152140.17985-1-ybettan@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171218152140.17985-1-ybettan@redhat.com> Subject: Re: [Qemu-devel] [PATCH V5] pci: removed the is_express field since a uniform interface was inserted List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Yoni Bettan Cc: qemu-devel@nongnu.org, Marcel Apfelbaum , Keith Busch , Kevin Wolf , Max Reitz , Dmitry Fleytman , Jason Wang , Paul Burton , Hannes Reinecke , Paolo Bonzini , Gerd Hoffmann , Alex Williamson , Stefano Stabellini , Anthony Perard , "open list:nvme" , "open list:X86" On Mon, Dec 18, 2017 at 05:21:40PM +0200, Yoni Bettan wrote: > according to Eduardo Habkost's commit fd3b02c889 all PCIEs now implement > INTERFACE_PCIE_DEVICE so we don't need is_express field anymore. > > Devices that implements only INTERFACE_PCIE_DEVICE (is_express == 1) > or > devices that implements only INTERFACE_CONVENTIONAL_PCI_DEVICE (is_express == 0) > where not affected by the change. > > The only devices that were affected are those that are hybrid and also > had (is_express == 1) - therefor only: > - hw/vfio/pci.c > - hw/usb/hcd-xhci.c > - hw/xen/xen_pt.c > > For those 3 I made sure that QEMU_PCI_CAP_EXPRESS is on in instance_init() > > Signed-off-by: Yoni Bettan Thanks! Could you pls rebase this on top of the latest pci branch? There's been some conflicting changes so this no longer applies cleanly. > --- > docs/pcie_pci_bridge.txt | 2 +- > hw/block/nvme.c | 1 - > hw/net/e1000e.c | 1 - > hw/pci-bridge/pcie_pci_bridge.c | 1 - > hw/pci-bridge/pcie_root_port.c | 1 - > hw/pci-bridge/xio3130_downstream.c | 1 - > hw/pci-bridge/xio3130_upstream.c | 1 - > hw/pci-host/xilinx-pcie.c | 1 - > hw/pci/pci.c | 8 ++++++-- > hw/scsi/megasas.c | 4 ---- > hw/usb/hcd-xhci.c | 9 ++++++++- > hw/vfio/pci.c | 5 ++++- > hw/xen/xen_pt.c | 9 ++++++++- > include/hw/pci/pci.h | 3 --- > 14 files changed, 27 insertions(+), 20 deletions(-) > > diff --git a/docs/pcie_pci_bridge.txt b/docs/pcie_pci_bridge.txt > index 5a4203f97c..ab35ebf3ca 100644 > --- a/docs/pcie_pci_bridge.txt > +++ b/docs/pcie_pci_bridge.txt > @@ -110,5 +110,5 @@ To enable device hot-plug into the bridge on Linux there're 3 ways: > Implementation > ============== > The PCIE-PCI bridge is based on PCI-PCI bridge, but also accumulates PCI Express > -features as a PCI Express device (is_express=1). > +features as a PCI Express device. > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > index 441e21ed1f..9325bc0911 100644 > --- a/hw/block/nvme.c > +++ b/hw/block/nvme.c > @@ -1087,7 +1087,6 @@ static void nvme_class_init(ObjectClass *oc, void *data) > pc->vendor_id = PCI_VENDOR_ID_INTEL; > pc->device_id = 0x5845; > pc->revision = 2; > - pc->is_express = 1; > > set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); > dc->desc = "Non-Volatile Memory Express"; > diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c > index f1af279e8d..c360f0d8c9 100644 > --- a/hw/net/e1000e.c > +++ b/hw/net/e1000e.c > @@ -675,7 +675,6 @@ static void e1000e_class_init(ObjectClass *class, void *data) > c->revision = 0; > c->romfile = "efi-e1000e.rom"; > c->class_id = PCI_CLASS_NETWORK_ETHERNET; > - c->is_express = 1; > > dc->desc = "Intel 82574L GbE Controller"; > dc->reset = e1000e_qdev_reset; > diff --git a/hw/pci-bridge/pcie_pci_bridge.c b/hw/pci-bridge/pcie_pci_bridge.c > index a4d827c99d..b7d9ebbec2 100644 > --- a/hw/pci-bridge/pcie_pci_bridge.c > +++ b/hw/pci-bridge/pcie_pci_bridge.c > @@ -169,7 +169,6 @@ static void pcie_pci_bridge_class_init(ObjectClass *klass, void *data) > DeviceClass *dc = DEVICE_CLASS(klass); > HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass); > > - k->is_express = 1; > k->is_bridge = 1; > k->vendor_id = PCI_VENDOR_ID_REDHAT; > k->device_id = PCI_DEVICE_ID_REDHAT_PCIE_BRIDGE; > diff --git a/hw/pci-bridge/pcie_root_port.c b/hw/pci-bridge/pcie_root_port.c > index 9b6e4ce512..45f9e8cd4a 100644 > --- a/hw/pci-bridge/pcie_root_port.c > +++ b/hw/pci-bridge/pcie_root_port.c > @@ -145,7 +145,6 @@ static void rp_class_init(ObjectClass *klass, void *data) > DeviceClass *dc = DEVICE_CLASS(klass); > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > - k->is_express = 1; > k->is_bridge = 1; > k->config_write = rp_write_config; > k->realize = rp_realize; > diff --git a/hw/pci-bridge/xio3130_downstream.c b/hw/pci-bridge/xio3130_downstream.c > index 1e09d2afb7..613a0d6bb7 100644 > --- a/hw/pci-bridge/xio3130_downstream.c > +++ b/hw/pci-bridge/xio3130_downstream.c > @@ -177,7 +177,6 @@ static void xio3130_downstream_class_init(ObjectClass *klass, void *data) > DeviceClass *dc = DEVICE_CLASS(klass); > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > - k->is_express = 1; > k->is_bridge = 1; > k->config_write = xio3130_downstream_write_config; > k->realize = xio3130_downstream_realize; > diff --git a/hw/pci-bridge/xio3130_upstream.c b/hw/pci-bridge/xio3130_upstream.c > index 227997ce46..d4645bddee 100644 > --- a/hw/pci-bridge/xio3130_upstream.c > +++ b/hw/pci-bridge/xio3130_upstream.c > @@ -148,7 +148,6 @@ static void xio3130_upstream_class_init(ObjectClass *klass, void *data) > DeviceClass *dc = DEVICE_CLASS(klass); > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > - k->is_express = 1; > k->is_bridge = 1; > k->config_write = xio3130_upstream_write_config; > k->realize = xio3130_upstream_realize; > diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c > index 7659253090..a4ca3ba30f 100644 > --- a/hw/pci-host/xilinx-pcie.c > +++ b/hw/pci-host/xilinx-pcie.c > @@ -298,7 +298,6 @@ static void xilinx_pcie_root_class_init(ObjectClass *klass, void *data) > k->device_id = 0x7021; > k->revision = 0; > k->class_id = PCI_CLASS_BRIDGE_HOST; > - k->is_express = true; > k->is_bridge = true; > k->init = xilinx_pcie_root_init; > k->exit = pci_bridge_exitfn; > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index b2d139bd9a..dc6faa46b9 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -2014,12 +2014,16 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp) > { > PCIDevice *pci_dev = (PCIDevice *)qdev; > PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(pci_dev); > + ObjectClass *klass = OBJECT_CLASS(pc); > Error *local_err = NULL; > PCIBus *bus; > bool is_default_rom; > > - /* initialize cap_present for pci_is_express() and pci_config_size() */ > - if (pc->is_express) { > + /* initialize cap_present for pci_is_express() and pci_config_size(), > + * Note that hybrid PCIs are not set automatically and need to manage > + * QEMU_PCI_CAP_EXPRESS manually */ > + if (object_class_dynamic_cast(klass, INTERFACE_PCIE_DEVICE) && > + !object_class_dynamic_cast(klass, INTERFACE_CONVENTIONAL_PCI_DEVICE)) { > pci_dev->cap_present |= QEMU_PCI_CAP_EXPRESS; > } > > diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c > index d5eae6239a..ee51feda59 100644 > --- a/hw/scsi/megasas.c > +++ b/hw/scsi/megasas.c > @@ -2447,7 +2447,6 @@ typedef struct MegasasInfo { > uint16_t subsystem_id; > int ioport_bar; > int mmio_bar; > - bool is_express; > int osts; > const VMStateDescription *vmsd; > Property *props; > @@ -2465,7 +2464,6 @@ static struct MegasasInfo megasas_devices[] = { > .ioport_bar = 2, > .mmio_bar = 0, > .osts = MFI_1078_RM | 1, > - .is_express = false, > .vmsd = &vmstate_megasas_gen1, > .props = megasas_properties_gen1, > .interfaces = (InterfaceInfo[]) { > @@ -2482,7 +2480,6 @@ static struct MegasasInfo megasas_devices[] = { > .ioport_bar = 0, > .mmio_bar = 1, > .osts = MFI_GEN2_RM, > - .is_express = true, > .vmsd = &vmstate_megasas_gen2, > .props = megasas_properties_gen2, > .interfaces = (InterfaceInfo[]) { > @@ -2506,7 +2503,6 @@ static void megasas_class_init(ObjectClass *oc, void *data) > pc->subsystem_vendor_id = PCI_VENDOR_ID_LSI_LOGIC; > pc->subsystem_id = info->subsystem_id; > pc->class_id = PCI_CLASS_STORAGE_RAID; > - pc->is_express = info->is_express; > e->mmio_bar = info->mmio_bar; > e->ioport_bar = info->ioport_bar; > e->osts = info->osts; > diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c > index af3a9d88de..50a409f0f5 100644 > --- a/hw/usb/hcd-xhci.c > +++ b/hw/usb/hcd-xhci.c > @@ -3649,6 +3649,13 @@ static Property xhci_properties[] = { > DEFINE_PROP_END_OF_LIST(), > }; > > +static void xhci_instance_init(Object *obj) > +{ > + /* QEMU_PCI_CAP_EXPRESS initialization does not depend on QEMU command > + * line, therefore, no need to wait to realize like other devices */ > + PCI_DEVICE(obj)->cap_present |= QEMU_PCI_CAP_EXPRESS; > +} > + > static void xhci_class_init(ObjectClass *klass, void *data) > { > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > @@ -3661,7 +3668,6 @@ static void xhci_class_init(ObjectClass *klass, void *data) > k->realize = usb_xhci_realize; > k->exit = usb_xhci_exit; > k->class_id = PCI_CLASS_SERIAL_USB; > - k->is_express = 1; > } > > static const TypeInfo xhci_info = { > @@ -3669,6 +3675,7 @@ static const TypeInfo xhci_info = { > .parent = TYPE_PCI_DEVICE, > .instance_size = sizeof(XHCIState), > .class_init = xhci_class_init, > + .instance_init = xhci_instance_init, > .abstract = true, > .interfaces = (InterfaceInfo[]) { > { INTERFACE_PCIE_DEVICE }, > diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c > index c977ee327f..195732a000 100644 > --- a/hw/vfio/pci.c > +++ b/hw/vfio/pci.c > @@ -2972,6 +2972,10 @@ static void vfio_instance_init(Object *obj) > vdev->host.function = ~0U; > > vdev->nv_gpudirect_clique = 0xFF; > + > + /* QEMU_PCI_CAP_EXPRESS initialization does not depend on QEMU command > + * line, therefore, no need to wait to realize like other devices */ > + pci_dev->cap_present |= QEMU_PCI_CAP_EXPRESS; > } > > static Property vfio_pci_dev_properties[] = { > @@ -3026,7 +3030,6 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, void *data) > pdc->exit = vfio_exitfn; > pdc->config_read = vfio_pci_read_config; > pdc->config_write = vfio_pci_write_config; > - pdc->is_express = 1; /* We might be */ > } > > static const TypeInfo vfio_pci_dev_info = { > diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c > index d57c6d3485..6ce9bfe7fb 100644 > --- a/hw/xen/xen_pt.c > +++ b/hw/xen/xen_pt.c > @@ -937,6 +937,13 @@ static Property xen_pci_passthrough_properties[] = { > DEFINE_PROP_END_OF_LIST(), > }; > > +static void xen_pci_passthrough_instance_init(Object *obj) > +{ > + /* QEMU_PCI_CAP_EXPRESS initialization does not depend on QEMU command > + * line, therefore, no need to wait to realize like other devices */ > + PCI_DEVICE(obj)->cap_present |= QEMU_PCI_CAP_EXPRESS; > +} > + > static void xen_pci_passthrough_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > @@ -946,7 +953,6 @@ static void xen_pci_passthrough_class_init(ObjectClass *klass, void *data) > k->exit = xen_pt_unregister_device; > k->config_read = xen_pt_pci_read_config; > k->config_write = xen_pt_pci_write_config; > - k->is_express = 1; /* We might be */ > set_bit(DEVICE_CATEGORY_MISC, dc->categories); > dc->desc = "Assign an host PCI device with Xen"; > dc->props = xen_pci_passthrough_properties; > @@ -965,6 +971,7 @@ static const TypeInfo xen_pci_passthrough_info = { > .instance_size = sizeof(XenPCIPassthroughState), > .instance_finalize = xen_pci_passthrough_finalize, > .class_init = xen_pci_passthrough_class_init, > + .instance_init = xen_pci_passthrough_instance_init, > .interfaces = (InterfaceInfo[]) { > { INTERFACE_CONVENTIONAL_PCI_DEVICE }, > { INTERFACE_PCIE_DEVICE }, > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h > index 8d02a0a383..a27be85111 100644 > --- a/include/hw/pci/pci.h > +++ b/include/hw/pci/pci.h > @@ -236,9 +236,6 @@ typedef struct PCIDeviceClass { > */ > int is_bridge; > > - /* pcie stuff */ > - int is_express; /* is this device pci express? */ > - > /* rom bar */ > const char *romfile; > } PCIDeviceClass; > -- > 2.14.3