From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: [PATCH] [RFC] kernel/cpu: Use lockref for online CPU reference counting Date: Mon, 15 Feb 2016 14:36:43 +0200 Message-ID: <1455539803-13913-1-git-send-email-joonas.lahtinen@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 6EFD36E633 for ; Mon, 15 Feb 2016 12:36:54 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel graphics driver community testing & development Cc: "Gautham R. Shenoy" , Peter Zijlstra , Linux kernel development , David Hildenbrand , "Paul E. McKenney" , Ingo Molnar List-Id: intel-gfx@lists.freedesktop.org SW5zdGVhZCBvZiBpbXBsZW1lbnRpbmcgYSBjdXN0b20gbG9ja2VkIHJlZmVyZW5jZSBjb3VudGlu ZywgdXNlIGxvY2tyZWYuCgpDdXJyZW50IGltcGxlbWVudGF0aW9uIGxlYWRzIHRvIGEgZGVhZGxv Y2sgc3BsYXQgb24gSW50ZWwgU0tMIHBsYXRmb3Jtcwp3aGVuIGxvY2tkZXAgZGVidWdnaW5nIGlz IGVuYWJsZWQuCgpUaGlzIGlzIGR1ZSB0byBmZXcgb2YgQ1BVZnJlcSBkcml2ZXJzIChpbmNsdWRp bmcgSW50ZWwgUC1zdGF0ZSkgaGF2aW5nIHRoaXM7CnBvbGljeS0+cndzZW0gaXMgbG9ja2VkIGR1 cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSBmdW5jdGlvbnMgY2FsbGVkCmR1cmlu ZyBpbml0IHRoYXQgYWN0dWFsbHkgYXBwbHkgQ1BVIGxpbWl0cyB1c2UgZ2V0X29ubGluZV9jcHVz IChiZWNhdXNlIHRoZXkKaGF2ZSBvdGhlciBjYWxsaW5nIHBhdGhzIHRvbyksIHdoaWNoIHdpbGwg YnJpZWZseSBsb2NrIGNwdV9ob3RwbHVnLmxvY2sgdG8KaW5jcmVhc2UgY3B1X2hvdHBsdWcucmVm Y291bnQuCgpPbiBsYXRlciBjYWxsaW5nIHBhdGgsIHdoZW4gZG9pbmcgYSBzdXNwZW5kLCB3aGVu IGNwdV9ob3RwbHVnX2JlZ2luKCkgaXMgY2FsbGVkCmluIGRpc2FibGVfbm9uYm9vdF9jcHVzKCks IGNhbGxiYWNrcyB0byBDUFVmcmVxIGZ1bmN0aW9ucyBnZXQgY2FsbGVkIGFmdGVyLAp3aGljaCB3 aWxsIGxvY2sgcG9saWN5LT5yd3NlbSBhbmQgY3B1X2hvdHBsdWcubG9jayBpcyBhbHJlYWR5IGhl bGQgYnkKY3B1X2hvdHBsdWdfYmVnaW4oKSBhbmQgd2UgZG8gaGF2ZSBhIHBvdGVudGlhbCBkZWFk bG9jayBzY2VuYXJpbyByZXBvcnRlZCBieQpvdXIgQ0kgc3lzdGVtICh0aG91Z2ggaXQgaXMgYSB2 ZXJ5IHVubGlrZWx5IG9uZSkuIFNlZSB0aGUgQnVnemlsbGEgbGluayBmb3IgbW9yZQpkZXRhaWxz LgoKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTkzMjk0CkNjOiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgPGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc+CkNjOiBJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KQ2M6IFBldGVyIFpp amxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KQ2M6IERhdmlkIEhpbGRlbmJyYW5kIDxkYWhp QGxpbnV4LnZuZXQuaWJtLmNvbT4KQ2M6IFBhdWwgRS4gTWNLZW5uZXkgPHBhdWxtY2tAbGludXgu dm5ldC5pYm0uY29tPgpDYzogR2F1dGhhbSBSLiBTaGVub3kgPGVnb0BsaW51eC52bmV0LmlibS5j b20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9m Zi1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgot LS0KIGtlcm5lbC9jcHUuYyB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU0IGluc2VydGlvbnMo KyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9jcHUuYyBiL2tlcm5lbC9j cHUuYwppbmRleCA1YjlkMzk2Li44YWNlYzgzIDEwMDY0NAotLS0gYS9rZXJuZWwvY3B1LmMKKysr IGIva2VybmVsL2NwdS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8bGludXgva3RocmVh ZC5oPgogI2luY2x1ZGUgPGxpbnV4L3N0b3BfbWFjaGluZS5oPgogI2luY2x1ZGUgPGxpbnV4L211 dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvbG9ja3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L2dmcC5o PgogI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4KICNpbmNsdWRlIDxsaW51eC9sb2NrZGVwLmg+ CkBAIC02MiwxMyArNjMsMTAgQEAgc3RhdGljIHN0cnVjdCB7CiAJc3RydWN0IHRhc2tfc3RydWN0 ICphY3RpdmVfd3JpdGVyOwogCS8qIHdhaXQgcXVldWUgdG8gd2FrZSB1cCB0aGUgYWN0aXZlX3dy aXRlciAqLwogCXdhaXRfcXVldWVfaGVhZF90IHdxOwotCS8qIHZlcmlmaWVzIHRoYXQgbm8gd3Jp dGVyIHdpbGwgZ2V0IGFjdGl2ZSB3aGlsZSByZWFkZXJzIGFyZSBhY3RpdmUgKi8KLQlzdHJ1Y3Qg bXV0ZXggbG9jazsKLQkvKgotCSAqIEFsc28gYmxvY2tzIHRoZSBuZXcgcmVhZGVycyBkdXJpbmcK LQkgKiBhbiBvbmdvaW5nIGNwdSBob3RwbHVnIG9wZXJhdGlvbi4KLQkgKi8KLQlhdG9taWNfdCBy ZWZjb3VudDsKKwkvKiB3YWl0IHF1ZXVlIHRvIHdha2UgdXAgcmVhZGVycyAqLworCXdhaXRfcXVl dWVfaGVhZF90IHJlYWRlcl93cTsKKwkvKiB0cmFjayBvbmxpbmUgQ1BVIHVzZXJzICovCisJc3Ry dWN0IGxvY2tyZWYgbG9ja3JlZjsKIAogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DCiAJ c3RydWN0IGxvY2tkZXBfbWFwIGRlcF9tYXA7CkBAIC03Niw3ICs3NCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgewogfSBjcHVfaG90cGx1ZyA9IHsKIAkuYWN0aXZlX3dyaXRlciA9IE5VTEwsCiAJLndxID0g X19XQUlUX1FVRVVFX0hFQURfSU5JVElBTElaRVIoY3B1X2hvdHBsdWcud3EpLAotCS5sb2NrID0g X19NVVRFWF9JTklUSUFMSVpFUihjcHVfaG90cGx1Zy5sb2NrKSwKKwkucmVhZGVyX3dxID0gX19X QUlUX1FVRVVFX0hFQURfSU5JVElBTElaRVIoY3B1X2hvdHBsdWcucmVhZGVyX3dxKSwKICNpZmRl ZiBDT05GSUdfREVCVUdfTE9DS19BTExPQwogCS5kZXBfbWFwID0gey5uYW1lID0gImNwdV9ob3Rw bHVnLmxvY2siIH0sCiAjZW5kaWYKQEAgLTkyLDUyICs5MCw2NCBAQCBzdGF0aWMgc3RydWN0IHsK IAogdm9pZCBnZXRfb25saW5lX2NwdXModm9pZCkKIHsKLQltaWdodF9zbGVlcCgpOworCURFRklO RV9XQUlUKHdhaXQpOworCiAJaWYgKGNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPT0gY3VycmVu dCkKIAkJcmV0dXJuOworCiAJY3B1aHBfbG9ja19hY3F1aXJlX3JlYWQoKTsKLQltdXRleF9sb2Nr KCZjcHVfaG90cGx1Zy5sb2NrKTsKLQlhdG9taWNfaW5jKCZjcHVfaG90cGx1Zy5yZWZjb3VudCk7 Ci0JbXV0ZXhfdW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKKworCS8qIEZpcnN0IHRvIGdldCBt aWdodCBoYXZlIHRvIHdhaXQgb3ZlciBhIGhvdHBsdWcgb3BlcmF0aW9uLiAqLworCXdoaWxlICgh bG9ja3JlZl9nZXRfb3JfbG9jaygmY3B1X2hvdHBsdWcubG9ja3JlZikpIHsKKwkJaWYgKGNwdV9o b3RwbHVnLmxvY2tyZWYuY291bnQgPT0gMCkgeworCQkJY3B1X2hvdHBsdWcubG9ja3JlZi5jb3Vu dCsrOworCQkJc3Bpbl91bmxvY2soJmNwdV9ob3RwbHVnLmxvY2tyZWYubG9jayk7CisJCQlicmVh azsKKwkJfQorCQlzcGluX3VubG9jaygmY3B1X2hvdHBsdWcubG9ja3JlZi5sb2NrKTsKKworCQlw cmVwYXJlX3RvX3dhaXQoJmNwdV9ob3RwbHVnLnJlYWRlcl93cSwgJndhaXQsIFRBU0tfVU5JTlRF UlJVUFRJQkxFKTsKKwkJc2NoZWR1bGUoKTsKKwkJZmluaXNoX3dhaXQoJmNwdV9ob3RwbHVnLnJl YWRlcl93cSwgJndhaXQpOworCX0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGdldF9vbmxpbmVfY3B1 cyk7CiAKIHZvaWQgcHV0X29ubGluZV9jcHVzKHZvaWQpCiB7Ci0JaW50IHJlZmNvdW50OwotCiAJ aWYgKGNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPT0gY3VycmVudCkKIAkJcmV0dXJuOwogCi0J cmVmY291bnQgPSBhdG9taWNfZGVjX3JldHVybigmY3B1X2hvdHBsdWcucmVmY291bnQpOwotCWlm IChXQVJOX09OKHJlZmNvdW50IDwgMCkpIC8qIHRyeSB0byBmaXggdGhpbmdzIHVwICovCi0JCWF0 b21pY19pbmMoJmNwdV9ob3RwbHVnLnJlZmNvdW50KTsKKwkvKiBMYXN0IHRvIHJlbGVhc2UgbWln aHQgaGF2ZSB0byB3YWtlIHF1ZXVlZCBob3RwbHVnIG9wZXJhdGlvbi4gKi8KKwlpZiAoIWxvY2ty ZWZfcHV0X29yX2xvY2soJmNwdV9ob3RwbHVnLmxvY2tyZWYpKSB7CisJCVdBUk5fT04oY3B1X2hv dHBsdWcubG9ja3JlZi5jb3VudCA8PSAwKTsKKwkJY3B1X2hvdHBsdWcubG9ja3JlZi5jb3VudCA9 IDA7CisJCXNwaW5fdW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrcmVmLmxvY2spOwogCi0JaWYgKHJl ZmNvdW50IDw9IDAgJiYgd2FpdHF1ZXVlX2FjdGl2ZSgmY3B1X2hvdHBsdWcud3EpKQotCQl3YWtl X3VwKCZjcHVfaG90cGx1Zy53cSk7CisJCWlmICh3YWl0cXVldWVfYWN0aXZlKCZjcHVfaG90cGx1 Zy53cSkpCisJCQl3YWtlX3VwKCZjcHVfaG90cGx1Zy53cSk7CisJfQogCiAJY3B1aHBfbG9ja19y ZWxlYXNlKCk7Ci0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHB1dF9vbmxpbmVfY3B1cyk7CiAKIC8q CiAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgaG90cGx1ZyBvcGVyYXRpb24gY2FuIGJlZ2luIG9u bHkgd2hlbiB0aGUKLSAqIHJlZmNvdW50IGdvZXMgdG8gemVyby4KKyAqIGNwdV9ob3RwbHVnLmxv Y2tyZWYgZ29lcyB0byB6ZXJvLgogICoKICAqIE5vdGUgdGhhdCBkdXJpbmcgYSBjcHUtaG90cGx1 ZyBvcGVyYXRpb24sIHRoZSBuZXcgcmVhZGVycywgaWYgYW55LAotICogd2lsbCBiZSBibG9ja2Vk IGJ5IHRoZSBjcHVfaG90cGx1Zy5sb2NrCisgKiB3aWxsIGJlIGJsb2NrZWQgYnkgdGhlIGNwdV9o b3RwbHVnLmxvY2tyZWYgYmVpbmcgZGVhZC4KICAqCiAgKiBTaW5jZSBjcHVfaG90cGx1Z19iZWdp bigpIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgaW52b2tpbmcKICAqIGNwdV9tYXBzX3VwZGF0ZV9i ZWdpbigpLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IG9ubHkgb25lIHdyaXRlciBpcyBhY3RpdmUuCiAg KgogICogTm90ZSB0aGF0IHRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2Yg YSBsaXZlbG9jazoKLSAqIC0gUmVmY291bnQgZ29lcyB0byB6ZXJvLCBsYXN0IHJlYWRlciB3YWtl cyB1cCB0aGUgc2xlZXBpbmcKKyAqIC0gTG9ja3JlZiBnb2VzIHRvIHplcm8sIGxhc3QgcmVhZGVy IHdha2VzIHVwIHRoZSBzbGVlcGluZwogICogICB3cml0ZXIuCi0gKiAtIExhc3QgcmVhZGVyIHVu bG9ja3MgdGhlIGNwdV9ob3RwbHVnLmxvY2suCi0gKiAtIEEgbmV3IHJlYWRlciBhcnJpdmVzIGF0 IHRoaXMgbW9tZW50LCBidW1wcyB1cCB0aGUgcmVmY291bnQuCi0gKiAtIFRoZSB3cml0ZXIgYWNx dWlyZXMgdGhlIGNwdV9ob3RwbHVnLmxvY2sgZmluZHMgdGhlIHJlZmNvdW50Ci0gKiAgIG5vbiB6 ZXJvIGFuZCBnb2VzIHRvIHNsZWVwIGFnYWluLgorICogLSBBIG5ldyByZWFkZXIgYXJyaXZlcyBh dCB0aGlzIG1vbWVudCwgYnVtcHMgdXAgdGhlIGxvY2tyZWYuCisgKiAtIFRoZSB3b2tlbiB1cCB3 cml0ZXIgZmluZHMgdGhlIGxvY2tyZWYgbm9uLXplcm8gYW5kIGdvZXMKKyAqICAgdG8gc2xlZXAg YWdhaW4uCiAgKgogICogSG93ZXZlciwgdGhpcyBpcyB2ZXJ5IGRpZmZpY3VsdCB0byBhY2hpZXZl IGluIHByYWN0aWNlIHNpbmNlCiAgKiBnZXRfb25saW5lX2NwdXMoKSBub3QgYW4gYXBpIHdoaWNo IGlzIGNhbGxlZCBhbGwgdGhhdCBvZnRlbi4KQEAgLTE1MSwyMCArMTYxLDMxIEBAIHZvaWQgY3B1 X2hvdHBsdWdfYmVnaW4odm9pZCkKIAljcHVocF9sb2NrX2FjcXVpcmUoKTsKIAogCWZvciAoOzsp IHsKLQkJbXV0ZXhfbG9jaygmY3B1X2hvdHBsdWcubG9jayk7CisJCXNwaW5fbG9jaygmY3B1X2hv dHBsdWcubG9ja3JlZi5sb2NrKTsKKwkJaWYgKGNwdV9ob3RwbHVnLmxvY2tyZWYuY291bnQgPD0g MCkKKwkJCWJyZWFrOworCQlzcGluX3VubG9jaygmY3B1X2hvdHBsdWcubG9ja3JlZi5sb2NrKTsK KwogCQlwcmVwYXJlX3RvX3dhaXQoJmNwdV9ob3RwbHVnLndxLCAmd2FpdCwgVEFTS19VTklOVEVS UlVQVElCTEUpOwotCQlpZiAobGlrZWx5KCFhdG9taWNfcmVhZCgmY3B1X2hvdHBsdWcucmVmY291 bnQpKSkKLQkJCQlicmVhazsKLQkJbXV0ZXhfdW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKIAkJ c2NoZWR1bGUoKTsKKwkJZmluaXNoX3dhaXQoJmNwdV9ob3RwbHVnLndxLCAmd2FpdCk7CiAJfQot CWZpbmlzaF93YWl0KCZjcHVfaG90cGx1Zy53cSwgJndhaXQpOworCisJV0FSTl9PTihfX2xvY2ty ZWZfaXNfZGVhZCgmY3B1X2hvdHBsdWcubG9ja3JlZikpOworCWxvY2tyZWZfbWFya19kZWFkKCZj cHVfaG90cGx1Zy5sb2NrcmVmKTsKKwlzcGluX3VubG9jaygmY3B1X2hvdHBsdWcubG9ja3JlZi5s b2NrKTsKIH0KIAogdm9pZCBjcHVfaG90cGx1Z19kb25lKHZvaWQpCiB7CisJV0FSTl9PTighX19s b2NrcmVmX2lzX2RlYWQoJmNwdV9ob3RwbHVnLmxvY2tyZWYpKTsKKwljcHVfaG90cGx1Zy5sb2Nr cmVmLmNvdW50ID0gMDsKKwlzcGluX3VubG9jaygmY3B1X2hvdHBsdWcubG9ja3JlZi5sb2NrKTsK KworCWlmICh3YWl0cXVldWVfYWN0aXZlKCZjcHVfaG90cGx1Zy5yZWFkZXJfd3EpKQorCQl3YWtl X3VwKCZjcHVfaG90cGx1Zy5yZWFkZXJfd3EpOworCiAJY3B1X2hvdHBsdWcuYWN0aXZlX3dyaXRl ciA9IE5VTEw7Ci0JbXV0ZXhfdW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKIAljcHVocF9sb2Nr X3JlbGVhc2UoKTsKIH0KIAotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=