From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: Re: [patch net] devlink: convert occ_get op to separate registration Date: Thu, 5 Apr 2018 14:55:58 -0600 Message-ID: <0880af20-f0a2-bc19-6b1d-0e42a7937184@gmail.com> References: <20180405201321.16626-1-jiri@resnulli.us> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------EABC20F871E29702F1F19C9F" Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com To: Jiri Pirko , netdev@vger.kernel.org Return-path: Received: from mail-pl0-f45.google.com ([209.85.160.45]:33577 "EHLO mail-pl0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751277AbeDEU4B (ORCPT ); Thu, 5 Apr 2018 16:56:01 -0400 Received: by mail-pl0-f45.google.com with SMTP id s10-v6so18992619plp.0 for ; Thu, 05 Apr 2018 13:56:01 -0700 (PDT) In-Reply-To: <20180405201321.16626-1-jiri@resnulli.us> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------EABC20F871E29702F1F19C9F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 4/5/18 2:13 PM, Jiri Pirko wrote: > From: Jiri Pirko > > This resolves race during initialization where the resources with > ops are registered before driver and the structures used by occ_get > op is initialized. So keep occ_get callbacks registered only when > all structs are initialized. > > The example flows, as it is in mlxsw: > 1) driver load/asic probe: > mlxsw_core > -> mlxsw_sp_resources_register > -> mlxsw_sp_kvdl_resources_register > -> devlink_resource_register IDX > mlxsw_spectrum > -> mlxsw_sp_kvdl_init > -> mlxsw_sp_kvdl_parts_init > -> mlxsw_sp_kvdl_part_init > -> devlink_resource_size_get IDX (to get the current setup > size from devlink) > -> devlink_resource_occ_get_register IDX (register current > occupancy getter) > 2) reload triggered by devlink command: > -> mlxsw_devlink_core_bus_device_reload > -> mlxsw_sp_fini > -> mlxsw_sp_kvdl_fini > -> devlink_resource_occ_get_unregister IDX > (struct mlxsw_sp *mlxsw_sp is freed at this point, call to occ get > which is using mlxsw_sp would cause use-after free) > -> mlxsw_sp_init > -> mlxsw_sp_kvdl_init > -> mlxsw_sp_kvdl_parts_init > -> mlxsw_sp_kvdl_part_init > -> devlink_resource_size_get IDX (to get the current setup > size from devlink) > -> devlink_resource_occ_get_register IDX (register current > occupancy getter) > > Fixes: d9f9b9a4d05f ("devlink: Add support for resource abstraction") > Signed-off-by: Jiri Pirko > --- Why won't something like the attached work as opposed to playing register / unregister games? --------------EABC20F871E29702F1F19C9F Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="mlxsw-reload.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mlxsw-reload.patch" ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUu YyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYwppbmRleCA5 M2VhNTY2MjBhMjQuLmRjZGVkNjEzZmFhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seHN3L2NvcmUuYwpAQCAtMTEzLDYgKzExMyw3IEBAIHN0cnVjdCBtbHhz d19jb3JlIHsKIAlzdHJ1Y3QgbWx4c3dfdGhlcm1hbCAqdGhlcm1hbDsKIAlzdHJ1Y3QgbWx4 c3dfY29yZV9wb3J0ICpwb3J0czsKIAl1bnNpZ25lZCBpbnQgbWF4X3BvcnRzOworCWJvb2wg cmVsb2FkX2luX3Byb2dyZXNzOwogCWJvb2wgcmVsb2FkX2ZhaWw7CiAJdW5zaWduZWQgbG9u ZyBkcml2ZXJfcHJpdlswXTsKIAkvKiBkcml2ZXJfcHJpdiBoYXMgdG8gYmUgYWx3YXlzIHRo ZSBsYXN0IGl0ZW0gKi8KQEAgLTE1NCw2ICsxNTUsMTIgQEAgdm9pZCAqbWx4c3dfY29yZV9k cml2ZXJfcHJpdihzdHJ1Y3QgbWx4c3dfY29yZSAqbWx4c3dfY29yZSkKIH0KIEVYUE9SVF9T WU1CT0wobWx4c3dfY29yZV9kcml2ZXJfcHJpdik7CiAKK2Jvb2wgbWx4c3dfY29yZV9yZWxv YWRfaW5fcHJvZ3Jlc3Moc3RydWN0IG1seHN3X2NvcmUgKm1seHN3X2NvcmUpCit7CisJcmV0 dXJuIG1seHN3X2NvcmUtPm1seHN3X2NvcmVfZHJpdmVyX3ByaXY7Cit9CitFWFBPUlRfU1lN Qk9MKG1seHN3X2NvcmVfcmVsb2FkX2luX3Byb2dyZXNzKTsKKwogc3RydWN0IG1seHN3X3J4 X2xpc3RlbmVyX2l0ZW0gewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAlzdHJ1Y3QgbWx4 c3dfcnhfbGlzdGVuZXIgcnhsOwpAQCAtOTcyLDEyICs5NzksMTYgQEAgc3RhdGljIGludCBt bHhzd19kZXZsaW5rX2NvcmVfYnVzX2RldmljZV9yZWxvYWQoc3RydWN0IGRldmxpbmsgKmRl dmxpbmspCiAJaWYgKCFtbHhzd19idXMtPnJlc2V0KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7 CiAKKwltbHhzd19jb3JlLT5yZWxvYWRfaW5fcHJvZ3Jlc3MgPSB0cnVlOworCiAJbWx4c3df Y29yZV9idXNfZGV2aWNlX3VucmVnaXN0ZXIobWx4c3dfY29yZSwgdHJ1ZSk7CiAJbWx4c3df YnVzLT5yZXNldChtbHhzd19jb3JlLT5idXNfcHJpdik7CiAJZXJyID0gbWx4c3dfY29yZV9i dXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2NvcmUtPmJ1c19pbmZvLAogCQkJCQkgICAgIG1s eHN3X2NvcmUtPmJ1cywKIAkJCQkJICAgICBtbHhzd19jb3JlLT5idXNfcHJpdiwgdHJ1ZSwK IAkJCQkJICAgICBkZXZsaW5rKTsKKwltbHhzd19jb3JlLT5yZWxvYWRfaW5fcHJvZ3Jlc3Mg PSBmYWxzZTsKKwogCWlmIChlcnIpCiAJCW1seHN3X2NvcmUtPnJlbG9hZF9mYWlsID0gdHJ1 ZTsKIAlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4c3cvY29yZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 c3cvY29yZS5oCmluZGV4IDA5MmQzOTM5OWYzYy4uZmZhMWRiMTU0NzU3IDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmgKKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5oCkBAIC02MCw2ICs2MCw3 IEBAIHN0cnVjdCBtbHhzd19idXNfaW5mbzsKIHVuc2lnbmVkIGludCBtbHhzd19jb3JlX21h eF9wb3J0cyhjb25zdCBzdHJ1Y3QgbWx4c3dfY29yZSAqbWx4c3dfY29yZSk7CiAKIHZvaWQg Km1seHN3X2NvcmVfZHJpdmVyX3ByaXYoc3RydWN0IG1seHN3X2NvcmUgKm1seHN3X2NvcmUp OworYm9vbCBtbHhzd19jb3JlX3JlbG9hZF9pbl9wcm9ncmVzcyhzdHJ1Y3QgbWx4c3dfY29y ZSAqbWx4c3dfY29yZSk7CiAKIGludCBtbHhzd19jb3JlX2RyaXZlcl9yZWdpc3RlcihzdHJ1 Y3QgbWx4c3dfZHJpdmVyICptbHhzd19kcml2ZXIpOwogdm9pZCBtbHhzd19jb3JlX2RyaXZl cl91bnJlZ2lzdGVyKHN0cnVjdCBtbHhzd19kcml2ZXIgKm1seHN3X2RyaXZlcik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5j IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYwppbmRl eCA1M2ZmZmQwOWQxMzMuLjA5Yjg5YWYzN2Q4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYworKysgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jCkBAIC0zODA4LDggKzM4MDgsMTIg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19jb25maWdfcHJvZmlsZSBtbHhzd19zcF9j b25maWdfcHJvZmlsZSA9IHsKIHN0YXRpYyB1NjQgbWx4c3dfc3BfcmVzb3VyY2Vfa3ZkX2xp bmVhcl9vY2NfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKQogewogCXN0cnVjdCBtbHhz d19jb3JlICptbHhzd19jb3JlID0gZGV2bGlua19wcml2KGRldmxpbmspOwotCXN0cnVjdCBt bHhzd19zcCAqbWx4c3dfc3AgPSBtbHhzd19jb3JlX2RyaXZlcl9wcml2KG1seHN3X2NvcmUp OworCXN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3A7CisKKwlpZiAobWx4c3dfY29yZV9yZWxv YWRfaW5fcHJvZ3Jlc3MobWx4c3dfY29yZSkpCisJCXJldHVybiAwOwogCisJbWx4c3dfc3Ag PSBtbHhzd19jb3JlX2RyaXZlcl9wcml2KG1seHN3X2NvcmUpOwogCXJldHVybiBtbHhzd19z cF9rdmRsX29jY19nZXQobWx4c3dfc3ApOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9rdmRsLmMgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9rdmRsLmMKaW5kZXggODc5NmRi NDRkY2MzLi5kZDY2Mjg1YmFmYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2t2ZGwuYworKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9rdmRsLmMKQEAgLTMyOSw5ICszMjksMTMg QEAgdTY0IG1seHN3X3NwX2t2ZGxfb2NjX2dldChjb25zdCBzdHJ1Y3QgbWx4c3dfc3AgKm1s eHN3X3NwKQogc3RhdGljIHU2NCBtbHhzd19zcF9rdmRsX3NpbmdsZV9vY2NfZ2V0KHN0cnVj dCBkZXZsaW5rICpkZXZsaW5rKQogewogCXN0cnVjdCBtbHhzd19jb3JlICptbHhzd19jb3Jl ID0gZGV2bGlua19wcml2KGRldmxpbmspOwotCXN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3Ag PSBtbHhzd19jb3JlX2RyaXZlcl9wcml2KG1seHN3X2NvcmUpOwogCXN0cnVjdCBtbHhzd19z cF9rdmRsX3BhcnQgKnBhcnQ7CisJc3RydWN0IG1seHN3X3NwICptbHhzd19zcDsKIAorCWlm IChtbHhzd19jb3JlX3JlbG9hZF9pbl9wcm9ncmVzcyhtbHhzd19jb3JlKSkKKwkJcmV0dXJu IDA7CisKKwltbHhzd19zcCA9IG1seHN3X2NvcmVfZHJpdmVyX3ByaXYobWx4c3dfY29yZSk7 CiAJcGFydCA9IG1seHN3X3NwLT5rdmRsLT5wYXJ0c1tNTFhTV19TUF9LVkRMX1BBUlRfSURf U0lOR0xFXTsKIAlyZXR1cm4gbWx4c3dfc3Bfa3ZkbF9wYXJ0X29jYyhwYXJ0KTsKIH0KQEAg LTMzOSw4ICszNDMsMTMgQEAgc3RhdGljIHU2NCBtbHhzd19zcF9rdmRsX3NpbmdsZV9vY2Nf Z2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKQogc3RhdGljIHU2NCBtbHhzd19zcF9rdmRs X2NodW5rc19vY2NfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKQogewogCXN0cnVjdCBt bHhzd19jb3JlICptbHhzd19jb3JlID0gZGV2bGlua19wcml2KGRldmxpbmspOwotCXN0cnVj dCBtbHhzd19zcCAqbWx4c3dfc3AgPSBtbHhzd19jb3JlX2RyaXZlcl9wcml2KG1seHN3X2Nv cmUpOwogCXN0cnVjdCBtbHhzd19zcF9rdmRsX3BhcnQgKnBhcnQ7CisJc3RydWN0IG1seHN3 X3NwICptbHhzd19zcDsKKworCWlmIChtbHhzd19jb3JlX3JlbG9hZF9pbl9wcm9ncmVzcyht bHhzd19jb3JlKSkKKwkJcmV0dXJuIDA7CisKKwltbHhzd19zcCA9IG1seHN3X2NvcmVfZHJp dmVyX3ByaXYobWx4c3dfY29yZSk7CiAKIAlwYXJ0ID0gbWx4c3dfc3AtPmt2ZGwtPnBhcnRz W01MWFNXX1NQX0tWRExfUEFSVF9JRF9DSFVOS1NdOwogCXJldHVybiBtbHhzd19zcF9rdmRs X3BhcnRfb2NjKHBhcnQpOwpAQCAtMzQ5LDkgKzM1OCwxMyBAQCBzdGF0aWMgdTY0IG1seHN3 X3NwX2t2ZGxfY2h1bmtzX29jY19nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmspCiBzdGF0 aWMgdTY0IG1seHN3X3NwX2t2ZGxfbGFyZ2VfY2h1bmtzX29jY19nZXQoc3RydWN0IGRldmxp bmsgKmRldmxpbmspCiB7CiAJc3RydWN0IG1seHN3X2NvcmUgKm1seHN3X2NvcmUgPSBkZXZs aW5rX3ByaXYoZGV2bGluayk7Ci0Jc3RydWN0IG1seHN3X3NwICptbHhzd19zcCA9IG1seHN3 X2NvcmVfZHJpdmVyX3ByaXYobWx4c3dfY29yZSk7CiAJc3RydWN0IG1seHN3X3NwX2t2ZGxf cGFydCAqcGFydDsKKwlzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwOworCisJaWYgKG1seHN3 X2NvcmVfcmVsb2FkX2luX3Byb2dyZXNzKG1seHN3X2NvcmUpKQorCQlyZXR1cm4gMDsKIAor CW1seHN3X3NwID0gbWx4c3dfY29yZV9kcml2ZXJfcHJpdihtbHhzd19jb3JlKTsKIAlwYXJ0 ID0gbWx4c3dfc3AtPmt2ZGwtPnBhcnRzW01MWFNXX1NQX0tWRExfUEFSVF9JRF9MQVJHRV9D SFVOS1NdOwogCXJldHVybiBtbHhzd19zcF9rdmRsX3BhcnRfb2NjKHBhcnQpOwogfQo= --------------EABC20F871E29702F1F19C9F--