All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Raslan, KarimAllah" <karahmed@amazon.de>
To: "helgaas@kernel.org" <helgaas@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"bhelgaas@google.com" <bhelgaas@google.com>
Subject: Re: [PATCH v3 1/2] PCI/IOV: Store more data about VFs into the SRIOV struct
Date: Tue, 6 Mar 2018 10:37:02 +0000	[thread overview]
Message-ID: <1520332621.28771.13.camel@amazon.de> (raw)
In-Reply-To: <20180302213639.GC202062@bhelgaas-glaptop.roam.corp.google.com>

T24gRnJpLCAyMDE4LTAzLTAyIGF0IDE1OjM2IC0wNjAwLCBCam9ybiBIZWxnYWFzIHdyb3RlOg0K
PiBPbiBUaHUsIE1hciAwMSwgMjAxOCBhdCAxMDozMTozNlBNICswMTAwLCBLYXJpbUFsbGFoIEFo
bWVkIHdyb3RlOg0KPiA+IA0KPiA+IFN0b3JlIG1vcmUgZGF0YSBhYm91dCBQQ0kgVkZzIGludG8g
dGhlIFNSSU9WIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBmcm9tIHRoZQ0KPiA+IGNvbmZpZyBzcGFj
ZSBvZiBhbGwgdGhlIFBDSSBWRnMuIFRoaXMgaXMgc3BlY2lhbGx5IGEgdXNlZnVsIG9wdGltaXph
dGlvbg0KPiA+IHdoZW4gYnJpbmdpbmcgdXAgdGhvdXNhbmRzIG9mIFZGcy4NCj4gPiANCj4gPiBD
YzogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4NCj4gPiBDYzogbGludXgtcGNp
QHZnZXIua2VybmVsLm9yZw0KPiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+
ID4gU2lnbmVkLW9mZi1ieTogS2FyaW1BbGxhaCBBaG1lZCA8a2FyYWhtZWRAYW1hem9uLmRlPg0K
PiANCj4gQXBwbGllZCB0byBwY2kvdmlydHVhbGl6YXRpb24gZm9yIHY0LjE3LCB0aGFua3MhDQo+
IA0KPiBJIHJlbW92ZWQgdGhlIHBjaV9zcmlvdi5kZXZpY2UgZmllbGQsIHdoaWNoIHNlZW1lZCB0
byBiZSB1bnVzZWQsIGFuZA0KPiB0d2Vha2VkIGEgZmV3IG90aGVyIHRoaW5ncywgc28gbWFrZSBz
dXJlIEkgZGlkbid0IGJyZWFrIGFueXRoaW5nLg0KDQpZdXAsIHN0aWxsIGxvb2tzIGdvb2QgKGFu
ZCB3b3JrcykgZm9yIG1lLiBUaGFua3MuDQoNCj4gSGVyZSdzIHdoYXQgSSBoYXZlIGN1cnJlbnRs
eSBhcHBsaWVkOg0KPiANCj4gY29tbWl0IGUxN2I3YjQyOWIwOTUyMDBmOTNhZDM3YzRlZmViN2E5
OWI2ZmNlM2INCj4gQXV0aG9yOiBLYXJpbUFsbGFoIEFobWVkIDxrYXJhaG1lZEBhbWF6b24uZGU+
DQo+IERhdGU6ICAgVGh1IE1hciAxIDIyOjMxOjM2IDIwMTggKzAxMDANCj4gDQo+ICAgICBQQ0kv
SU9WOiBVc2UgVkYwIGNhY2hlZCBjb25maWcgcmVnaXN0ZXJzIGZvciBvdGhlciBWRnMNCj4gICAg
IA0KPiAgICAgQ2FjaGUgc29tZSBjb25maWcgZGF0YSBmcm9tIFZGMCBhbmQgdXNlIGl0IGZvciBh
bGwgb3RoZXIgVkZzIGluc3RlYWQgb2YNCj4gICAgIHJlYWRpbmcgaXQgZnJvbSB0aGUgY29uZmln
IHNwYWNlIG9mIGVhY2ggVkYuICBXZSBhc3N1bWUgdGhlc2UgaXRlbXMgYXJlIHRoZQ0KPiAgICAg
c2FtZSBhY3Jvc3MgYWxsIGFzc29jaWF0ZWQgVkZzOg0KPiAgICAgDQo+ICAgICAgIFJldmlzaW9u
IElEDQo+ICAgICAgIENsYXNzIENvZGUNCj4gICAgICAgU3Vic3lzdGVtIFZlbmRvciBJRA0KPiAg
ICAgICBTdWJzeXN0ZW0gSUQNCj4gICAgIA0KPiAgICAgVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24g
d2hlbiBlbmFibGluZyBTUi1JT1Ygb24gYSBkZXZpY2Ugd2l0aCBtYW55IFZGcy4NCj4gICAgIA0K
PiAgICAgU2lnbmVkLW9mZi1ieTogS2FyaW1BbGxhaCBBaG1lZCA8a2FyYWhtZWRAYW1hem9uLmRl
Pg0KPiAgICAgW2JoZWxnYWFzOiBjaGFuZ2Vsb2csIHNpbXBsaWZ5IGNvbW1lbnRzLCByZW1vdmUg
dW51c2VkICJkZXZpY2UiXQ0KPiAgICAgU2lnbmVkLW9mZi1ieTogQmpvcm4gSGVsZ2FhcyA8aGVs
Z2Fhc0BrZXJuZWwub3JnPg0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2lvdi5jIGIv
ZHJpdmVycy9wY2kvaW92LmMNCj4gaW5kZXggNjc3OTI0YWUwMzUwLi4zMGJmOGY3MDZlZDkgMTAw
NjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGNpL2lvdi5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2lvdi5j
DQo+IEBAIC0xMTQsNiArMTE0LDI5IEBAIHJlc291cmNlX3NpemVfdCBwY2lfaW92X3Jlc291cmNl
X3NpemUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKQ0KPiAgCXJldHVybiBkZXYtPnNy
aW92LT5iYXJzeltyZXNubyAtIFBDSV9JT1ZfUkVTT1VSQ0VTXTsNCj4gIH0NCj4gIA0KPiArc3Rh
dGljIHZvaWQgcGNpX3JlYWRfdmZfY29uZmlnX2NvbW1vbihzdHJ1Y3QgcGNpX2RldiAqdmlydGZu
KQ0KPiArew0KPiArCXN0cnVjdCBwY2lfZGV2ICpwaHlzZm4gPSB2aXJ0Zm4tPnBoeXNmbjsNCj4g
Kw0KPiArCS8qDQo+ICsJICogU29tZSBjb25maWcgcmVnaXN0ZXJzIGFyZSB0aGUgc2FtZSBhY3Jv
c3MgYWxsIGFzc29jaWF0ZWQgVkZzLg0KPiArCSAqIFJlYWQgdGhlbSBvbmNlIGZyb20gVkYwIHNv
IHdlIGNhbiBza2lwIHJlYWRpbmcgdGhlbSBmcm9tIHRoZQ0KPiArCSAqIG90aGVyIFZGcy4NCj4g
KwkgKg0KPiArCSAqIFBDSWUgcjQuMCwgc2VjIDkuMy40LjEsIHRlY2huaWNhbGx5IGRvZXNuJ3Qg
cmVxdWlyZSBhbGwgVkZzIHRvDQo+ICsJICogaGF2ZSB0aGUgc2FtZSBSZXZpc2lvbiBJRCBhbmQg
U3Vic3lzdGVtIElELCBidXQgd2UgYXNzdW1lIHRoZXkNCj4gKwkgKiBkby4NCj4gKwkgKi8NCj4g
KwlwY2lfcmVhZF9jb25maWdfZHdvcmQodmlydGZuLCBQQ0lfQ0xBU1NfUkVWSVNJT04sDQo+ICsJ
CQkgICAgICAmcGh5c2ZuLT5zcmlvdi0+Y2xhc3MpOw0KPiArCXBjaV9yZWFkX2NvbmZpZ19ieXRl
KHZpcnRmbiwgUENJX0hFQURFUl9UWVBFLA0KPiArCQkJICAgICAmcGh5c2ZuLT5zcmlvdi0+aGRy
X3R5cGUpOw0KPiArCXBjaV9yZWFkX2NvbmZpZ193b3JkKHZpcnRmbiwgUENJX1NVQlNZU1RFTV9W
RU5ET1JfSUQsDQo+ICsJCQkgICAgICZwaHlzZm4tPnNyaW92LT5zdWJzeXN0ZW1fdmVuZG9yKTsN
Cj4gKwlwY2lfcmVhZF9jb25maWdfd29yZCh2aXJ0Zm4sIFBDSV9TVUJTWVNURU1fSUQsDQo+ICsJ
CQkgICAgICZwaHlzZm4tPnNyaW92LT5zdWJzeXN0ZW1fZGV2aWNlKTsNCj4gK30NCj4gKw0KPiAg
aW50IHBjaV9pb3ZfYWRkX3ZpcnRmbihzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgaWQpDQo+ICB7
DQo+ICAJaW50IGk7DQo+IEBAIC0xMzYsMTMgKzE1OSwxNyBAQCBpbnQgcGNpX2lvdl9hZGRfdmly
dGZuKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBpZCkNCj4gIAl2aXJ0Zm4tPmRldmZuID0gcGNp
X2lvdl92aXJ0Zm5fZGV2Zm4oZGV2LCBpZCk7DQo+ICAJdmlydGZuLT52ZW5kb3IgPSBkZXYtPnZl
bmRvcjsNCj4gIAl2aXJ0Zm4tPmRldmljZSA9IGlvdi0+dmZfZGV2aWNlOw0KPiArCXZpcnRmbi0+
aXNfdmlydGZuID0gMTsNCj4gKwl2aXJ0Zm4tPnBoeXNmbiA9IHBjaV9kZXZfZ2V0KGRldik7DQo+
ICsNCj4gKwlpZiAoaWQgPT0gMCkNCj4gKwkJcGNpX3JlYWRfdmZfY29uZmlnX2NvbW1vbih2aXJ0
Zm4pOw0KPiArDQo+ICAJcmMgPSBwY2lfc2V0dXBfZGV2aWNlKHZpcnRmbik7DQo+ICAJaWYgKHJj
KQ0KPiAtCQlnb3RvIGZhaWxlZDA7DQo+ICsJCWdvdG8gZmFpbGVkMTsNCj4gIA0KPiAgCXZpcnRm
bi0+ZGV2LnBhcmVudCA9IGRldi0+ZGV2LnBhcmVudDsNCj4gLQl2aXJ0Zm4tPnBoeXNmbiA9IHBj
aV9kZXZfZ2V0KGRldik7DQo+IC0JdmlydGZuLT5pc192aXJ0Zm4gPSAxOw0KPiAgCXZpcnRmbi0+
bXVsdGlmdW5jdGlvbiA9IDA7DQo+ICANCj4gIAlmb3IgKGkgPSAwOyBpIDwgUENJX1NSSU9WX05V
TV9CQVJTOyBpKyspIHsNCj4gQEAgLTE2MywxMCArMTkwLDEwIEBAIGludCBwY2lfaW92X2FkZF92
aXJ0Zm4oc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IGlkKQ0KPiAgCXNwcmludGYoYnVmLCAidmly
dGZuJXUiLCBpZCk7DQo+ICAJcmMgPSBzeXNmc19jcmVhdGVfbGluaygmZGV2LT5kZXYua29iaiwg
JnZpcnRmbi0+ZGV2LmtvYmosIGJ1Zik7DQo+ICAJaWYgKHJjKQ0KPiAtCQlnb3RvIGZhaWxlZDE7
DQo+ICsJCWdvdG8gZmFpbGVkMjsNCj4gIAlyYyA9IHN5c2ZzX2NyZWF0ZV9saW5rKCZ2aXJ0Zm4t
PmRldi5rb2JqLCAmZGV2LT5kZXYua29iaiwgInBoeXNmbiIpOw0KPiAgCWlmIChyYykNCj4gLQkJ
Z290byBmYWlsZWQyOw0KPiArCQlnb3RvIGZhaWxlZDM7DQo+ICANCj4gIAlrb2JqZWN0X3VldmVu
dCgmdmlydGZuLT5kZXYua29iaiwgS09CSl9DSEFOR0UpOw0KPiAgDQo+IEBAIC0xNzQsMTEgKzIw
MSwxMiBAQCBpbnQgcGNpX2lvdl9hZGRfdmlydGZuKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBp
ZCkNCj4gIA0KPiAgCXJldHVybiAwOw0KPiAgDQo+IC1mYWlsZWQyOg0KPiArZmFpbGVkMzoNCj4g
IAlzeXNmc19yZW1vdmVfbGluaygmZGV2LT5kZXYua29iaiwgYnVmKTsNCj4gK2ZhaWxlZDI6DQo+
ICsJcGNpX3N0b3BfYW5kX3JlbW92ZV9idXNfZGV2aWNlKHZpcnRmbik7DQo+ICBmYWlsZWQxOg0K
PiAgCXBjaV9kZXZfcHV0KGRldik7DQo+IC0JcGNpX3N0b3BfYW5kX3JlbW92ZV9idXNfZGV2aWNl
KHZpcnRmbik7DQo+ICBmYWlsZWQwOg0KPiAgCXZpcnRmbl9yZW1vdmVfYnVzKGRldi0+YnVzLCBi
dXMpOw0KPiAgZmFpbGVkOg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmggYi9kcml2
ZXJzL3BjaS9wY2kuaA0KPiBpbmRleCBmY2Q4MTkxMWIxMjcuLmRiNzY5MzNiZTg1OSAxMDA2NDQN
Cj4gLS0tIGEvZHJpdmVycy9wY2kvcGNpLmgNCj4gKysrIGIvZHJpdmVycy9wY2kvcGNpLmgNCj4g
QEAgLTI3MSw2ICsyNzEsMTAgQEAgc3RydWN0IHBjaV9zcmlvdiB7DQo+ICAJdTE2CQlkcml2ZXJf
bWF4X1ZGczsJLyogTWF4IG51bSBWRnMgZHJpdmVyIHN1cHBvcnRzICovDQo+ICAJc3RydWN0IHBj
aV9kZXYJKmRldjsJCS8qIExvd2VzdCBudW1iZXJlZCBQRiAqLw0KPiAgCXN0cnVjdCBwY2lfZGV2
CSpzZWxmOwkJLyogVGhpcyBQRiAqLw0KPiArCXUzMgkJY2xhc3M7CQkvKiBWRiBjbGFzcyAqLw0K
PiArCXU4CQloZHJfdHlwZTsJLyogVkYgaGVhZGVyIHR5cGUgKi8NCj4gKwl1MTYJCXN1YnN5c3Rl
bV92ZW5kb3I7IC8qIFZGIHN1YnN5c3RlbSB2ZW5kb3IgKi8NCj4gKwl1MTYJCXN1YnN5c3RlbV9k
ZXZpY2U7IC8qIFZGIHN1YnN5c3RlbSBkZXZpY2UgKi8NCj4gIAlyZXNvdXJjZV9zaXplX3QJYmFy
c3pbUENJX1NSSU9WX05VTV9CQVJTXTsJLyogVkYgQkFSIHNpemUgKi8NCj4gIAlib29sCQlkcml2
ZXJzX2F1dG9wcm9iZTsgLyogQXV0byBwcm9iaW5nIG9mIFZGcyBieSBkcml2ZXIgKi8NCj4gIH07
DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wcm9iZS5jIGIvZHJpdmVycy9wY2kvcHJvYmUu
Yw0KPiBpbmRleCBhMWNkZGNhMzc3OTMuLjc4ZGViOTUwYmRhMSAxMDA2NDQNCj4gLS0tIGEvZHJp
dmVycy9wY2kvcHJvYmUuYw0KPiArKysgYi9kcml2ZXJzL3BjaS9wcm9iZS5jDQo+IEBAIC0xNDYx
LDcgKzE0NjEsOSBAQCBpbnQgcGNpX3NldHVwX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQ0K
PiAgCXN0cnVjdCBwY2lfYnVzX3JlZ2lvbiByZWdpb247DQo+ICAJc3RydWN0IHJlc291cmNlICpy
ZXM7DQo+ICANCj4gLQlpZiAocGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBQQ0lfSEVBREVSX1RZ
UEUsICZoZHJfdHlwZSkpDQo+ICsJaWYgKGRldi0+aXNfdmlydGZuKQ0KPiArCQloZHJfdHlwZSA9
IGRldi0+cGh5c2ZuLT5zcmlvdi0+aGRyX3R5cGU7DQo+ICsJZWxzZSBpZiAocGNpX3JlYWRfY29u
ZmlnX2J5dGUoZGV2LCBQQ0lfSEVBREVSX1RZUEUsICZoZHJfdHlwZSkpDQo+ICAJCXJldHVybiAt
RUlPOw0KPiAgDQo+ICAJZGV2LT5zeXNkYXRhID0gZGV2LT5idXMtPnN5c2RhdGE7DQo+IEBAIC0x
NDg0LDcgKzE0ODYsMTAgQEAgaW50IHBjaV9zZXR1cF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRl
dikNCj4gIAkJICAgICBkZXYtPmJ1cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXYtPmRldmZuKSwNCj4g
IAkJICAgICBQQ0lfRlVOQyhkZXYtPmRldmZuKSk7DQo+ICANCj4gLQlwY2lfcmVhZF9jb25maWdf
ZHdvcmQoZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZjbGFzcyk7DQo+ICsJaWYgKGRldi0+aXNf
dmlydGZuKQ0KPiArCQljbGFzcyA9IGRldi0+cGh5c2ZuLT5zcmlvdi0+Y2xhc3M7DQo+ICsJZWxz
ZQ0KPiArCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZj
bGFzcyk7DQo+ICAJZGV2LT5yZXZpc2lvbiA9IGNsYXNzICYgMHhmZjsNCj4gIAlkZXYtPmNsYXNz
ID0gY2xhc3MgPj4gODsJCSAgICAvKiB1cHBlciAzIGJ5dGVzICovDQo+ICANCj4gQEAgLTE1MjQs
OCArMTUyOSwxMyBAQCBpbnQgcGNpX3NldHVwX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQ0K
PiAgCQkJZ290byBiYWQ7DQo+ICAJCXBjaV9yZWFkX2lycShkZXYpOw0KPiAgCQlwY2lfcmVhZF9i
YXNlcyhkZXYsIDYsIFBDSV9ST01fQUREUkVTUyk7DQo+IC0JCXBjaV9yZWFkX2NvbmZpZ193b3Jk
KGRldiwgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQsICZkZXYtPnN1YnN5c3RlbV92ZW5kb3IpOw0K
PiAtCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9TVUJTWVNURU1fSUQsICZkZXYtPnN1
YnN5c3RlbV9kZXZpY2UpOw0KPiArCQlpZiAoZGV2LT5pc192aXJ0Zm4pIHsNCj4gKwkJCWRldi0+
c3Vic3lzdGVtX3ZlbmRvciA9IGRldi0+cGh5c2ZuLT5zcmlvdi0+c3Vic3lzdGVtX3ZlbmRvcjsN
Cj4gKwkJCWRldi0+c3Vic3lzdGVtX2RldmljZSA9IGRldi0+cGh5c2ZuLT5zcmlvdi0+c3Vic3lz
dGVtX2RldmljZTsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRl
diwgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQsICZkZXYtPnN1YnN5c3RlbV92ZW5kb3IpOw0KPiAr
CQkJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBQQ0lfU1VCU1lTVEVNX0lELCAmZGV2LT5zdWJz
eXN0ZW1fZGV2aWNlKTsNCj4gKwkJfQ0KPiAgDQo+ICAJCS8qDQo+ICAJCSAqIERvIHRoZSB1Z2x5
IGxlZ2FjeSBtb2RlIHN0dWZmIGhlcmUgcmF0aGVyIHRoYW4gYnJva2VuIGNoaXANCj4gDQpBbWF6
b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApCZXJsaW4gLSBEcmVzZGVuIC0gQWFj
aGVuCm1haW4gb2ZmaWNlOiBLcmF1c2Vuc3RyLiAzOCwgMTAxMTcgQmVybGluCkdlc2NoYWVmdHNm
dWVocmVyOiBEci4gUmFsZiBIZXJicmljaCwgQ2hyaXN0aWFuIFNjaGxhZWdlcgpVc3QtSUQ6IERF
Mjg5MjM3ODc5CkVpbmdldHJhZ2VuIGFtIEFtdHNnZXJpY2h0IENoYXJsb3R0ZW5idXJnIEhSQiAx
NDkxNzMgQgo=

WARNING: multiple messages have this Message-ID (diff)
From: "Raslan, KarimAllah" <karahmed@amazon.de>
To: "helgaas@kernel.org" <helgaas@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"bhelgaas@google.com" <bhelgaas@google.com>
Subject: Re: [PATCH v3 1/2] PCI/IOV: Store more data about VFs into the SRIOV struct
Date: Tue, 6 Mar 2018 10:37:02 +0000	[thread overview]
Message-ID: <1520332621.28771.13.camel@amazon.de> (raw)
In-Reply-To: <20180302213639.GC202062@bhelgaas-glaptop.roam.corp.google.com>

On Fri, 2018-03-02 at 15:36 -0600, Bjorn Helgaas wrote:
> On Thu, Mar 01, 2018 at 10:31:36PM +0100, KarimAllah Ahmed wrote:
> > 
> > Store more data about PCI VFs into the SRIOV to avoid reading them from the
> > config space of all the PCI VFs. This is specially a useful optimization
> > when bringing up thousands of VFs.
> > 
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: linux-pci@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
> 
> Applied to pci/virtualization for v4.17, thanks!
> 
> I removed the pci_sriov.device field, which seemed to be unused, and
> tweaked a few other things, so make sure I didn't break anything.

Yup, still looks good (and works) for me. Thanks.

> Here's what I have currently applied:
> 
> commit e17b7b429b095200f93ad37c4efeb7a99b6fce3b
> Author: KarimAllah Ahmed <karahmed@amazon.de>
> Date:   Thu Mar 1 22:31:36 2018 +0100
> 
>     PCI/IOV: Use VF0 cached config registers for other VFs
>     
>     Cache some config data from VF0 and use it for all other VFs instead of
>     reading it from the config space of each VF.  We assume these items are the
>     same across all associated VFs:
>     
>       Revision ID
>       Class Code
>       Subsystem Vendor ID
>       Subsystem ID
>     
>     This is an optimization when enabling SR-IOV on a device with many VFs.
>     
>     Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
>     [bhelgaas: changelog, simplify comments, remove unused "device"]
>     Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
> 
> diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
> index 677924ae0350..30bf8f706ed9 100644
> --- a/drivers/pci/iov.c
> +++ b/drivers/pci/iov.c
> @@ -114,6 +114,29 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
>  	return dev->sriov->barsz[resno - PCI_IOV_RESOURCES];
>  }
>  
> +static void pci_read_vf_config_common(struct pci_dev *virtfn)
> +{
> +	struct pci_dev *physfn = virtfn->physfn;
> +
> +	/*
> +	 * Some config registers are the same across all associated VFs.
> +	 * Read them once from VF0 so we can skip reading them from the
> +	 * other VFs.
> +	 *
> +	 * PCIe r4.0, sec 9.3.4.1, technically doesn't require all VFs to
> +	 * have the same Revision ID and Subsystem ID, but we assume they
> +	 * do.
> +	 */
> +	pci_read_config_dword(virtfn, PCI_CLASS_REVISION,
> +			      &physfn->sriov->class);
> +	pci_read_config_byte(virtfn, PCI_HEADER_TYPE,
> +			     &physfn->sriov->hdr_type);
> +	pci_read_config_word(virtfn, PCI_SUBSYSTEM_VENDOR_ID,
> +			     &physfn->sriov->subsystem_vendor);
> +	pci_read_config_word(virtfn, PCI_SUBSYSTEM_ID,
> +			     &physfn->sriov->subsystem_device);
> +}
> +
>  int pci_iov_add_virtfn(struct pci_dev *dev, int id)
>  {
>  	int i;
> @@ -136,13 +159,17 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
>  	virtfn->devfn = pci_iov_virtfn_devfn(dev, id);
>  	virtfn->vendor = dev->vendor;
>  	virtfn->device = iov->vf_device;
> +	virtfn->is_virtfn = 1;
> +	virtfn->physfn = pci_dev_get(dev);
> +
> +	if (id == 0)
> +		pci_read_vf_config_common(virtfn);
> +
>  	rc = pci_setup_device(virtfn);
>  	if (rc)
> -		goto failed0;
> +		goto failed1;
>  
>  	virtfn->dev.parent = dev->dev.parent;
> -	virtfn->physfn = pci_dev_get(dev);
> -	virtfn->is_virtfn = 1;
>  	virtfn->multifunction = 0;
>  
>  	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> @@ -163,10 +190,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
>  	sprintf(buf, "virtfn%u", id);
>  	rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);
>  	if (rc)
> -		goto failed1;
> +		goto failed2;
>  	rc = sysfs_create_link(&virtfn->dev.kobj, &dev->dev.kobj, "physfn");
>  	if (rc)
> -		goto failed2;
> +		goto failed3;
>  
>  	kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE);
>  
> @@ -174,11 +201,12 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
>  
>  	return 0;
>  
> -failed2:
> +failed3:
>  	sysfs_remove_link(&dev->dev.kobj, buf);
> +failed2:
> +	pci_stop_and_remove_bus_device(virtfn);
>  failed1:
>  	pci_dev_put(dev);
> -	pci_stop_and_remove_bus_device(virtfn);
>  failed0:
>  	virtfn_remove_bus(dev->bus, bus);
>  failed:
> diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
> index fcd81911b127..db76933be859 100644
> --- a/drivers/pci/pci.h
> +++ b/drivers/pci/pci.h
> @@ -271,6 +271,10 @@ struct pci_sriov {
>  	u16		driver_max_VFs;	/* Max num VFs driver supports */
>  	struct pci_dev	*dev;		/* Lowest numbered PF */
>  	struct pci_dev	*self;		/* This PF */
> +	u32		class;		/* VF class */
> +	u8		hdr_type;	/* VF header type */
> +	u16		subsystem_vendor; /* VF subsystem vendor */
> +	u16		subsystem_device; /* VF subsystem device */
>  	resource_size_t	barsz[PCI_SRIOV_NUM_BARS];	/* VF BAR size */
>  	bool		drivers_autoprobe; /* Auto probing of VFs by driver */
>  };
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index a1cddca37793..78deb950bda1 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1461,7 +1461,9 @@ int pci_setup_device(struct pci_dev *dev)
>  	struct pci_bus_region region;
>  	struct resource *res;
>  
> -	if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
> +	if (dev->is_virtfn)
> +		hdr_type = dev->physfn->sriov->hdr_type;
> +	else if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
>  		return -EIO;
>  
>  	dev->sysdata = dev->bus->sysdata;
> @@ -1484,7 +1486,10 @@ int pci_setup_device(struct pci_dev *dev)
>  		     dev->bus->number, PCI_SLOT(dev->devfn),
>  		     PCI_FUNC(dev->devfn));
>  
> -	pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
> +	if (dev->is_virtfn)
> +		class = dev->physfn->sriov->class;
> +	else
> +		pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
>  	dev->revision = class & 0xff;
>  	dev->class = class >> 8;		    /* upper 3 bytes */
>  
> @@ -1524,8 +1529,13 @@ int pci_setup_device(struct pci_dev *dev)
>  			goto bad;
>  		pci_read_irq(dev);
>  		pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
> -		pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
> -		pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
> +		if (dev->is_virtfn) {
> +			dev->subsystem_vendor = dev->physfn->sriov->subsystem_vendor;
> +			dev->subsystem_device = dev->physfn->sriov->subsystem_device;
> +		} else {
> +			pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
> +			pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
> +		}
>  
>  		/*
>  		 * Do the ugly legacy mode stuff here rather than broken chip
> 
Amazon Development Center Germany GmbH
Berlin - Dresden - Aachen
main office: Krausenstr. 38, 10117 Berlin
Geschaeftsfuehrer: Dr. Ralf Herbrich, Christian Schlaeger
Ust-ID: DE289237879
Eingetragen am Amtsgericht Charlottenburg HRB 149173 B

  reply	other threads:[~2018-03-06 10:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-01 21:31 [PATCH v3 1/2] PCI/IOV: Store more data about VFs into the SRIOV struct KarimAllah Ahmed
2018-03-01 21:31 ` [PATCH v3 2/2] PCI/IOV: Use the cached VF BARs size instead of re-reading them KarimAllah Ahmed
2018-03-02 21:48   ` Bjorn Helgaas
2018-03-03  4:34     ` Raslan, KarimAllah
2018-03-03  4:34       ` Raslan, KarimAllah
2018-03-02 21:36 ` [PATCH v3 1/2] PCI/IOV: Store more data about VFs into the SRIOV struct Bjorn Helgaas
2018-03-06 10:37   ` Raslan, KarimAllah [this message]
2018-03-06 10:37     ` Raslan, KarimAllah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1520332621.28771.13.camel@amazon.de \
    --to=karahmed@amazon.de \
    --cc=bhelgaas@google.com \
    --cc=helgaas@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.