From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gavin Shan Subject: [PATCH v9 10/22] powerpc/powernv: Dynamically release PE Date: Tue, 3 May 2016 23:22:41 +1000 Message-ID: <1462281773-26438-11-git-send-email-gwshan@linux.vnet.ibm.com> References: <1462281773-26438-1-git-send-email-gwshan@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1462281773-26438-1-git-send-email-gwshan@linux.vnet.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" To: linuxppc-dev@lists.ozlabs.org Cc: devicetree@vger.kernel.org, alistair@popple.id.au, aik@ozlabs.ru, linux-pci@vger.kernel.org, Gavin Shan , robherring2@gmail.com, bhelgaas@google.com, dja@axtens.net List-Id: devicetree@vger.kernel.org VGhpcyBzdXBwb3J0cyByZWxlYXNpbmcgUEVzIGR5bmFtaWNhbGx5LiBBIHJlZmVyZW5jZSBjb3Vu dCBpcwppbnRyb2R1Y2VkIHRvIFBFIHJlcHJlc2VudGluZyBudW1iZXIgb2YgUENJIGRldmljZXMg YXNzb2NpYXRlZAp3aXRoIHRoZSBQRS4gVGhlIHJlZmVyZW5jZSBjb3VudCBpcyBpbmNyZWFzZWQg d2hlbiBQQ0kgZGV2aWNlCmpvaW5zIHRoZSBQRSBhbmQgZGVjcmVhc2VkIHdoZW4gUENJIGRldmlj ZSBsZWF2ZXMgdGhlIFBFIGluCnBudl9wY2lfcmVsZWFzZV9kZXZpY2UoKS4gV2hlbiB0aGUgY291 bnQgYmVjb21lcyB6ZXJvLCB0aGUgUEUKYW5kIGl0cyBjb25zdW1lZCByZXNvdXJjZXMgYXJlIHJl bGVhc2VkLiBOb3RlIHRoYXQgdGhlIGNvdW50CmlzIGFjY2Vzc2VkIGNvbmN1cnJlbnRseS4gU28g YSBjb3VudGVyIHdpdGggImludCIgdHlwZSBpcyBlbm91Z2gKaGVyZS4KCkluIG9yZGVyIHRvIHJl bGVhc2UgdGhlIHNvdXJjZXMgY29uc3VtZWQgYnkgdGhlIFBFLCBjb3VwbGUgb2YKaGVscGVyIGZ1 bmN0aW9ucyBhcmUgaW50cm9kdWNlZCBhcyBiZWxvdzoKCiAgICogcG52X3BjaV9pb2RhMV91bnNl dF93aW5kb3coKSAtIFVuc2V0IElPREExIERNQTMyIHdpbmRvdwogICAqIHBudl9wY2lfaW9kYTFf cmVsZWFzZV9kbWFfcGUoKSAtIFJlbGVhc2UgSU9EQTEgRE1BMzIgc2VnbWVudHMKICAgKiBwbnZf cGNpX2lvZGEyX3JlbGVhc2VfZG1hX3BlKCkgLSBSZWxlYXNlIElPREEyIERNQSByZXNvdXJjZQog ICAqIHBudl9pb2RhX3JlbGVhc2VfcGVfc2VnKCkgLSBVbm1hcCBJTy9NMzIvTTY0IHNlZ21lbnRz CgpTaWduZWQtb2ZmLWJ5OiBHYXZpbiBTaGFuIDxnd3NoYW5AbGludXgudm5ldC5pYm0uY29tPgot LS0KIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jIHwgMTc0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52 L3BjaS5oICAgICAgfCAgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jIGIv YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKaW5kZXggYjMyMDIxYi4u ZWU1NmVkMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1p b2RhLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKQEAg LTEwMzcsNiArMTAzNyw3IEBAIHN0YXRpYyB2b2lkIHBudl9pb2RhX3NldHVwX3NhbWVfUEUoc3Ry dWN0IHBjaV9idXMgKmJ1cywgc3RydWN0IHBudl9pb2RhX3BlICpwZSkKIAkJaWYgKHBkbi0+cGVf bnVtYmVyICE9IElPREFfSU5WQUxJRF9QRSkKIAkJCWNvbnRpbnVlOwogCisJCXBlLT5kZXZpY2Vf Y291bnQrKzsKIAkJcGRuLT5wY2lkZXYgPSBkZXY7CiAJCXBkbi0+cGVfbnVtYmVyID0gcGUtPnBl X251bWJlcjsKIAkJaWYgKChwZS0+ZmxhZ3MgJiBQTlZfSU9EQV9QRV9CVVNfQUxMKSAmJiBkZXYt PnN1Ym9yZGluYXRlKQpAQCAtMzMwMiw2ICszMzAzLDE3OCBAQCBzdGF0aWMgYm9vbCBwbnZfcGNp X2VuYWJsZV9kZXZpY2VfaG9vayhzdHJ1Y3QgcGNpX2RldiAqZGV2KQogCXJldHVybiB0cnVlOwog fQogCitzdGF0aWMgbG9uZyBwbnZfcGNpX2lvZGExX3Vuc2V0X3dpbmRvdyhzdHJ1Y3QgaW9tbXVf dGFibGVfZ3JvdXAgKnRhYmxlX2dyb3VwLAorCQkJCSAgICAgICBpbnQgbnVtKQoreworCXN0cnVj dCBwbnZfaW9kYV9wZSAqcGUgPSBjb250YWluZXJfb2YodGFibGVfZ3JvdXAsCisJCQkJCSAgICAg IHN0cnVjdCBwbnZfaW9kYV9wZSwgdGFibGVfZ3JvdXApOworCXN0cnVjdCBwbnZfcGhiICpwaGIg PSBwZS0+cGhiOworCXVuc2lnbmVkIGludCBpZHg7CisJbG9uZyByYzsKKworCXBlX2luZm8ocGUs ICJSZW1vdmluZyBETUEgd2luZG93ICMlZFxuIiwgbnVtKTsKKwlmb3IgKGlkeCA9IDA7IGlkeCA8 IHBoYi0+aW9kYS5kbWEzMl9jb3VudDsgaWR4KyspIHsKKwkJaWYgKHBoYi0+aW9kYS5kbWEzMl9z ZWdtYXBbaWR4XSAhPSBwZS0+cGVfbnVtYmVyKQorCQkJY29udGludWU7CisKKwkJcmMgPSBvcGFs X3BjaV9tYXBfcGVfZG1hX3dpbmRvdyhwaGItPm9wYWxfaWQsIHBlLT5wZV9udW1iZXIsCisJCQkJ CQlpZHgsIDAsIDB1bCwgMHVsLCAwdWwpOworCQlpZiAocmMgIT0gT1BBTF9TVUNDRVNTKSB7CisJ CQlwZV93YXJuKHBlLCAiRmFpbHVyZSAlbGQgdW5tYXBwaW5nIERNQTMyIHNlZ21lbnQjJWRcbiIs CisJCQkJcmMsIGlkeCk7CisJCQlyZXR1cm4gcmM7CisJCX0KKworCQlwaGItPmlvZGEuZG1hMzJf c2VnbWFwW2lkeF0gPSBJT0RBX0lOVkFMSURfUEU7CisJfQorCisJcG52X3BjaV91bmxpbmtfdGFi bGVfYW5kX2dyb3VwKHRhYmxlX2dyb3VwLT50YWJsZXNbbnVtXSwgdGFibGVfZ3JvdXApOworCXJl dHVybiBPUEFMX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIHBudl9wY2lfaW9kYTFfcmVsZWFz ZV9kbWFfcGUoc3RydWN0IHBudl9pb2RhX3BlICpwZSkKK3sKKwl1bnNpZ25lZCBpbnQgd2VpZ2h0 ID0gcG52X3BjaV9pb2RhX3BlX2RtYV93ZWlnaHQocGUpOworCXN0cnVjdCBpb21tdV90YWJsZSAq dGJsID0gcGUtPnRhYmxlX2dyb3VwLnRhYmxlc1swXTsKKwlpbnQ2NF90IHJjOworCisJaWYgKCF3 ZWlnaHQpCisJCXJldHVybjsKKworCXJjID0gcG52X3BjaV9pb2RhMV91bnNldF93aW5kb3coJnBl LT50YWJsZV9ncm91cCwgMCk7CisJaWYgKHJjICE9IE9QQUxfU1VDQ0VTUykKKwkJcmV0dXJuOwor CisJcG52X3BjaV9pb2RhMV90Y2VfaW52YWxpZGF0ZSh0YmwsIHRibC0+aXRfb2Zmc2V0LCB0Ymwt Pml0X3NpemUsIGZhbHNlKTsKKwlpZiAocGUtPnRhYmxlX2dyb3VwLmdyb3VwKSB7CisJCWlvbW11 X2dyb3VwX3B1dChwZS0+dGFibGVfZ3JvdXAuZ3JvdXApOworCQlXQVJOX09OKHBlLT50YWJsZV9n cm91cC5ncm91cCk7CisJfQorCisJZnJlZV9wYWdlcyh0YmwtPml0X2Jhc2UsIGdldF9vcmRlcih0 YmwtPml0X3NpemUgPDwgMykpOworCWlvbW11X2ZyZWVfdGFibGUodGJsLCAicG52Iik7Cit9CisK K3N0YXRpYyB2b2lkIHBudl9wY2lfaW9kYTJfcmVsZWFzZV9kbWFfcGUoc3RydWN0IHBudl9pb2Rh X3BlICpwZSkKK3sKKwlzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCA9IHBlLT50YWJsZV9ncm91cC50 YWJsZXNbMF07CisJdW5zaWduZWQgaW50IHdlaWdodCA9IHBudl9wY2lfaW9kYV9wZV9kbWFfd2Vp Z2h0KHBlKTsKKyNpZmRlZiBDT05GSUdfSU9NTVVfQVBJCisJaW50NjRfdCByYzsKKyNlbmRpZgor CisJaWYgKCF3ZWlnaHQpCisJCXJldHVybjsKKworI2lmZGVmIENPTkZJR19JT01NVV9BUEkKKwly YyA9IHBudl9wY2lfaW9kYTJfdW5zZXRfd2luZG93KCZwZS0+dGFibGVfZ3JvdXAsIDApOworCWlm IChyYykKKwkJcGVfd2FybihwZSwgIk9QQUwgZXJyb3IgJWxkIHJlbGVhc2UgRE1BIHdpbmRvd1xu IiwgcmMpOworI2VuZGlmCisKKwlwbnZfcGNpX2lvZGEyX3NldF9ieXBhc3MocGUsIGZhbHNlKTsK KwlpZiAocGUtPnRhYmxlX2dyb3VwLmdyb3VwKSB7CisJCWlvbW11X2dyb3VwX3B1dChwZS0+dGFi bGVfZ3JvdXAuZ3JvdXApOworCQlXQVJOX09OKHBlLT50YWJsZV9ncm91cC5ncm91cCk7CisJfQor CisJcG52X3BjaV9pb2RhMl90YWJsZV9mcmVlX3BhZ2VzKHRibCk7CisJaW9tbXVfZnJlZV90YWJs ZSh0YmwsICJwbnYiKTsKK30KKworc3RhdGljIHZvaWQgcG52X2lvZGFfZnJlZV9wZV9zZWcoc3Ry dWN0IHBudl9pb2RhX3BlICpwZSwKKwkJCQkgdW5zaWduZWQgc2hvcnQgd2luLAorCQkJCSB1bnNp Z25lZCBpbnQgKm1hcCkKK3sKKwlzdHJ1Y3QgcG52X3BoYiAqcGhiID0gcGUtPnBoYjsKKwlpbnQg aWR4OworCWludDY0X3QgcmM7CisKKwlmb3IgKGlkeCA9IDA7IGlkeCA8IHBoYi0+aW9kYS50b3Rh bF9wZV9udW07IGlkeCsrKSB7CisJCWlmIChtYXBbaWR4XSAhPSBwZS0+cGVfbnVtYmVyKQorCQkJ Y29udGludWU7CisKKwkJaWYgKHdpbiA9PSBPUEFMX002NF9XSU5ET1dfVFlQRSkKKwkJCXJjID0g b3BhbF9wY2lfbWFwX3BlX21taW9fd2luZG93KHBoYi0+b3BhbF9pZCwKKwkJCQkJcGhiLT5pb2Rh LnJlc2VydmVkX3BlX2lkeCwgd2luLAorCQkJCQlpZHggLyBQTlZfSU9EQTFfTTY0X1NFR1MsCisJ CQkJCWlkeCAlIFBOVl9JT0RBMV9NNjRfU0VHUyk7CisJCWVsc2UKKwkJCXJjID0gb3BhbF9wY2lf bWFwX3BlX21taW9fd2luZG93KHBoYi0+b3BhbF9pZCwKKwkJCQkJcGhiLT5pb2RhLnJlc2VydmVk X3BlX2lkeCwgd2luLCAwLCBpZHgpOworCisJCWlmIChyYyAhPSBPUEFMX1NVQ0NFU1MpCisJCQlw ZV93YXJuKHBlLCAiRXJyb3IgJWxkIHVubWFwcGluZyAoJWQpIHNlZ21lbnQjJWRcbiIsCisJCQkJ cmMsIHdpbiwgaWR4KTsKKworCQltYXBbaWR4XSA9IElPREFfSU5WQUxJRF9QRTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIHBudl9pb2RhX3JlbGVhc2VfcGVfc2VnKHN0cnVjdCBwbnZfaW9kYV9wZSAq cGUpCit7CisJc3RydWN0IHBudl9waGIgKnBoYiA9IHBlLT5waGI7CisKKwlpZiAocGhiLT50eXBl ID09IFBOVl9QSEJfSU9EQTEpIHsKKwkJcG52X2lvZGFfZnJlZV9wZV9zZWcocGUsIE9QQUxfSU9f V0lORE9XX1RZUEUsCisJCQkJICAgICBwaGItPmlvZGEuaW9fc2VnbWFwKTsKKwkJcG52X2lvZGFf ZnJlZV9wZV9zZWcocGUsIE9QQUxfTTMyX1dJTkRPV19UWVBFLAorCQkJCSAgICAgcGhiLT5pb2Rh Lm0zMl9zZWdtYXApOworCQlwbnZfaW9kYV9mcmVlX3BlX3NlZyhwZSwgT1BBTF9NNjRfV0lORE9X X1RZUEUsCisJCQkJICAgICBwaGItPmlvZGEubTY0X3NlZ21hcCk7CisJfSBlbHNlIGlmIChwaGIt PnR5cGUgPT0gUE5WX1BIQl9JT0RBMikgeworCQlwbnZfaW9kYV9mcmVlX3BlX3NlZyhwZSwgT1BB TF9NMzJfV0lORE9XX1RZUEUsCisJCQkJICAgICBwaGItPmlvZGEubTMyX3NlZ21hcCk7CisJfQor fQorCitzdGF0aWMgdm9pZCBwbnZfaW9kYV9yZWxlYXNlX3BlKHN0cnVjdCBwbnZfaW9kYV9wZSAq cGUpCit7CisJc3RydWN0IHBudl9waGIgKnBoYiA9IHBlLT5waGI7CisJc3RydWN0IHBudl9pb2Rh X3BlICpzbGF2ZSwgKnRtcDsKKworCS8qIFJlbGVhc2Ugc2xhdmUgUEVzIGluIGNvbXBvdW5kIFBF ICovCisJaWYgKHBlLT5mbGFncyAmIFBOVl9JT0RBX1BFX01BU1RFUikgeworCQlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUoc2xhdmUsIHRtcCwgJnBlLT5zbGF2ZXMsIGxpc3QpCisJCQlwbnZfaW9k YV9yZWxlYXNlX3BlKHNsYXZlKTsKKwl9CisKKwlsaXN0X2RlbCgmcGUtPmxpc3QpOworCXN3aXRj aCAocGhiLT50eXBlKSB7CisJY2FzZSBQTlZfUEhCX0lPREExOgorCQlwbnZfcGNpX2lvZGExX3Jl bGVhc2VfZG1hX3BlKHBlKTsKKwkJYnJlYWs7CisJY2FzZSBQTlZfUEhCX0lPREEyOgorCQlwbnZf cGNpX2lvZGEyX3JlbGVhc2VfZG1hX3BlKHBlKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJV0FS Tl9PTigxKTsKKwl9CisKKwlwbnZfaW9kYV9yZWxlYXNlX3BlX3NlZyhwZSk7CisJcG52X2lvZGFf ZGVjb25maWd1cmVfcGUocGUtPnBoYiwgcGUpOworCXBudl9pb2RhX2ZyZWVfcGUocGUpOworfQor CitzdGF0aWMgdm9pZCBwbnZfcGNpX3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQoreworCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSA9IHBjaV9idXNfdG9faG9zdChwZGV2 LT5idXMpOworCXN0cnVjdCBwbnZfcGhiICpwaGIgPSBob3NlLT5wcml2YXRlX2RhdGE7CisJc3Ry dWN0IHBjaV9kbiAqcGRuID0gcGNpX2dldF9wZG4ocGRldik7CisJc3RydWN0IHBudl9pb2RhX3Bl ICpwZTsKKworCWlmIChwZGV2LT5pc192aXJ0Zm4pCisJCXJldHVybjsKKworCWlmICghcGRuIHx8 IHBkbi0+cGVfbnVtYmVyID09IElPREFfSU5WQUxJRF9QRSkKKwkJcmV0dXJuOworCisJcGUgPSAm cGhiLT5pb2RhLnBlX2FycmF5W3Bkbi0+cGVfbnVtYmVyXTsKKwlXQVJOX09OKC0tcGUtPmRldmlj ZV9jb3VudCA8IDApOworCWlmIChwZS0+ZGV2aWNlX2NvdW50ID09IDApCisJCXBudl9pb2RhX3Jl bGVhc2VfcGUocGUpOworfQorCiBzdGF0aWMgdm9pZCBwbnZfcGNpX2lvZGFfc2h1dGRvd24oc3Ry dWN0IHBjaV9jb250cm9sbGVyICpob3NlKQogewogCXN0cnVjdCBwbnZfcGhiICpwaGIgPSBob3Nl LT5wcml2YXRlX2RhdGE7CkBAIC0zMzE4LDYgKzM0OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHBjaV9jb250cm9sbGVyX29wcyBwbnZfcGNpX2lvZGFfY29udHJvbGxlcl9vcHMgPSB7CiAJLnRl YXJkb3duX21zaV9pcnFzCT0gcG52X3RlYXJkb3duX21zaV9pcnFzLAogI2VuZGlmCiAJLmVuYWJs ZV9kZXZpY2VfaG9vawk9IHBudl9wY2lfZW5hYmxlX2RldmljZV9ob29rLAorCS5yZWxlYXNlX2Rl dmljZQkJPSBwbnZfcGNpX3JlbGVhc2VfZGV2aWNlLAogCS53aW5kb3dfYWxpZ25tZW50CT0gcG52 X3BjaV93aW5kb3dfYWxpZ25tZW50LAogCS5zZXR1cF9icmlkZ2UJCT0gcG52X3BjaV9zZXR1cF9i cmlkZ2UsCiAJLnJlc2V0X3NlY29uZGFyeV9idXMJPSBwbnZfcGNpX3Jlc2V0X3NlY29uZGFyeV9i dXMsCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLmggYi9h cmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLmgKaW5kZXggYTgxYmYwMS4uZGRhNWZh NyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS5oCisrKyBi L2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2kuaApAQCAtMzEsNiArMzEsNyBAQCBz dHJ1Y3QgcG52X3BoYjsKIHN0cnVjdCBwbnZfaW9kYV9wZSB7CiAJdW5zaWduZWQgbG9uZwkJZmxh Z3M7CiAJc3RydWN0IHBudl9waGIJCSpwaGI7CisJaW50CQkJZGV2aWNlX2NvdW50OwogCiAjZGVm aW5lIFBOVl9JT0RBX01BWF9QRUVSX1BFUwk4CiAJc3RydWN0IHBudl9pb2RhX3BlCSpwZWVyc1tQ TlZfSU9EQV9NQVhfUEVFUl9QRVNdOwotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4cHBjLWRldiBtYWlsaW5nIGxpc3QKTGludXhw cGMtZGV2QGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3JnL2xpc3RpbmZv L2xpbnV4cHBjLWRldg==