From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from e28smtp03.in.ibm.com ([125.16.236.3]:54587 "EHLO e28smtp03.in.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932404AbcDMHzZ (ORCPT ); Wed, 13 Apr 2016 03:55:25 -0400 Received: from localhost by e28smtp03.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 13 Apr 2016 13:25:22 +0530 Date: Wed, 13 Apr 2016 17:53:24 +1000 From: Gavin Shan To: Alexey Kardashevskiy Cc: Gavin Shan , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, benh@kernel.crashing.org, mpe@ellerman.id.au, dja@axtens.net, bhelgaas@google.com, robherring2@gmail.com, grant.likely@linaro.org Subject: Re: [PATCH v8 08/45] powerpc/powernv: Fix initial IO and M32 segmap Message-ID: <20160413075324.GA31320@gwshan> Reply-To: Gavin Shan References: <1455680668-23298-1-git-send-email-gwshan@linux.vnet.ibm.com> <1455680668-23298-9-git-send-email-gwshan@linux.vnet.ibm.com> <570DE553.80708@ozlabs.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <570DE553.80708@ozlabs.ru> Sender: linux-pci-owner@vger.kernel.org List-ID: On Wed, Apr 13, 2016 at 04:21:07PM +1000, Alexey Kardashevskiy wrote: >On 02/17/2016 02:43 PM, Gavin Shan wrote: >>There are two arrays for IO and M32 segment maps on every PHB. >>The index of the arrays are segment number and the value stored >>in the corresponding element is PE number, indicating the segment >>is assigned to the PE. Initially, all elements in those two arrays >>are zeroes, meaning all segments are assigned to PE#0. It's wrong. >> >>This fixes the initial values in the elements of those two arrays >>to IODA_INVALID_PE, meaning all segments aren't assigned to any >>PE. > >This is ok. > >>In order to use IODA_INVALID_PE (-1) to represent invalid PE >>number, the types of those two arrays are changed from "unsigned int" >>to "int". > >"unsigned" can carry (-1) perfectly fine, just add a type cast to >IODA_INVALID_PE: > >#define IODA_INVALID_PE (unsigned int)(-1) > >Using "signed" type for indexes which cannot be negative does not make much >sense - instead of checking for the upper boundary, you have to check for "< >0" too. > >OPAL uses unsigned type for PE (uint64_t or uint32_t or uint16_t - this is >quite funny). > >pnv_ioda_pe::pe_number is "unsigned" and this pe_number is the same thing as >I can see in pnv_ioda_setup_dev_PE(). > >Some printk() print the PE number as "%x" (which implies "unsigned"). > Yes, I can simply have something like below when PE number as well as segment index are represented by "unsigned int" values, right? #define IODA_INVALID_PE 0xffffffff > >I suggest changing the pci_dn::pe_number type from "int" to "unsigned int" to >match pnv_ioda_pe::pe_number, in a separate patch. Or do not touch types for >now. > Yes, I will have a separate patch right before this one to address it. > >>Signed-off-by: Gavin Shan >>--- >> arch/powerpc/platforms/powernv/pci-ioda.c | 9 +++++++-- >> arch/powerpc/platforms/powernv/pci.h | 4 ++-- >> 2 files changed, 9 insertions(+), 4 deletions(-) >> >>diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c >>index 1d2514f..44cc5f3 100644 >>--- a/arch/powerpc/platforms/powernv/pci-ioda.c >>+++ b/arch/powerpc/platforms/powernv/pci-ioda.c >>@@ -3239,7 +3239,7 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np, >> unsigned long size, m32map_off, pemap_off, iomap_off = 0; >> const __be64 *prop64; >> const __be32 *prop32; >>- int len; >>+ int i, len; >> u64 phb_id; >> void *aux; >> long rc; >>@@ -3334,8 +3334,13 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np, >> aux = memblock_virt_alloc(size, 0); >> phb->ioda.pe_alloc = aux; >> phb->ioda.m32_segmap = aux + m32map_off; >>- if (phb->type == PNV_PHB_IODA1) >>+ for (i = 0; i < phb->ioda.total_pe_num; i++) >>+ phb->ioda.m32_segmap[i] = IODA_INVALID_PE; >>+ if (phb->type == PNV_PHB_IODA1) { >> phb->ioda.io_segmap = aux + iomap_off; >>+ for (i = 0; i < phb->ioda.total_pe_num; i++) >>+ phb->ioda.io_segmap[i] = IODA_INVALID_PE; >>+ } >> phb->ioda.pe_array = aux + pemap_off; >> set_bit(phb->ioda.reserved_pe_idx, phb->ioda.pe_alloc); >> >>diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h >>index 784882a..36c4965 100644 >>--- a/arch/powerpc/platforms/powernv/pci.h >>+++ b/arch/powerpc/platforms/powernv/pci.h >>@@ -146,8 +146,8 @@ struct pnv_phb { >> struct pnv_ioda_pe *pe_array; >> >> /* M32 & IO segment maps */ >>- unsigned int *m32_segmap; >>- unsigned int *io_segmap; >>+ int *m32_segmap; >>+ int *io_segmap; >> >> /* IRQ chip */ >> int irq_chip_init; >> > > >-- >Alexey > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gavin Shan Subject: Re: [PATCH v8 08/45] powerpc/powernv: Fix initial IO and M32 segmap Date: Wed, 13 Apr 2016 17:53:24 +1000 Message-ID: <20160413075324.GA31320@gwshan> References: <1455680668-23298-1-git-send-email-gwshan@linux.vnet.ibm.com> <1455680668-23298-9-git-send-email-gwshan@linux.vnet.ibm.com> <570DE553.80708@ozlabs.ru> Reply-To: Gavin Shan Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <570DE553.80708@ozlabs.ru> 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: Alexey Kardashevskiy Cc: devicetree@vger.kernel.org, Gavin Shan , grant.likely@linaro.org, robherring2@gmail.com, linux-pci@vger.kernel.org, bhelgaas@google.com, linuxppc-dev@lists.ozlabs.org, dja@axtens.net List-Id: devicetree@vger.kernel.org T24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMDQ6MjE6MDdQTSArMTAwMCwgQWxleGV5IEthcmRhc2hl dnNraXkgd3JvdGU6Cj5PbiAwMi8xNy8yMDE2IDAyOjQzIFBNLCBHYXZpbiBTaGFuIHdyb3RlOgo+ PlRoZXJlIGFyZSB0d28gYXJyYXlzIGZvciBJTyBhbmQgTTMyIHNlZ21lbnQgbWFwcyBvbiBldmVy eSBQSEIuCj4+VGhlIGluZGV4IG9mIHRoZSBhcnJheXMgYXJlIHNlZ21lbnQgbnVtYmVyIGFuZCB0 aGUgdmFsdWUgc3RvcmVkCj4+aW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpcyBQRSBudW1i ZXIsIGluZGljYXRpbmcgdGhlIHNlZ21lbnQKPj5pcyBhc3NpZ25lZCB0byB0aGUgUEUuIEluaXRp YWxseSwgYWxsIGVsZW1lbnRzIGluIHRob3NlIHR3byBhcnJheXMKPj5hcmUgemVyb2VzLCBtZWFu aW5nIGFsbCBzZWdtZW50cyBhcmUgYXNzaWduZWQgdG8gUEUjMC4gSXQncyB3cm9uZy4KPj4KPj5U aGlzIGZpeGVzIHRoZSBpbml0aWFsIHZhbHVlcyBpbiB0aGUgZWxlbWVudHMgb2YgdGhvc2UgdHdv IGFycmF5cwo+PnRvIElPREFfSU5WQUxJRF9QRSwgbWVhbmluZyBhbGwgc2VnbWVudHMgYXJlbid0 IGFzc2lnbmVkIHRvIGFueQo+PlBFLgo+Cj5UaGlzIGlzIG9rLgo+Cj4+SW4gb3JkZXIgdG8gdXNl IElPREFfSU5WQUxJRF9QRSAoLTEpIHRvIHJlcHJlc2VudCBpbnZhbGlkIFBFCj4+bnVtYmVyLCB0 aGUgdHlwZXMgb2YgdGhvc2UgdHdvIGFycmF5cyBhcmUgY2hhbmdlZCBmcm9tICJ1bnNpZ25lZCBp bnQiCj4+dG8gImludCIuCj4KPiJ1bnNpZ25lZCIgY2FuIGNhcnJ5ICgtMSkgcGVyZmVjdGx5IGZp bmUsIGp1c3QgYWRkIGEgdHlwZSBjYXN0IHRvCj5JT0RBX0lOVkFMSURfUEU6Cj4KPiNkZWZpbmUg SU9EQV9JTlZBTElEX1BFICAgICh1bnNpZ25lZCBpbnQpKC0xKQo+Cj5Vc2luZyAic2lnbmVkIiB0 eXBlIGZvciBpbmRleGVzIHdoaWNoIGNhbm5vdCBiZSBuZWdhdGl2ZSBkb2VzIG5vdCBtYWtlIG11 Y2gKPnNlbnNlIC0gaW5zdGVhZCBvZiBjaGVja2luZyBmb3IgdGhlIHVwcGVyIGJvdW5kYXJ5LCB5 b3UgaGF2ZSB0byBjaGVjayBmb3IgIjwKPjAiIHRvby4KPgo+T1BBTCB1c2VzIHVuc2lnbmVkIHR5 cGUgZm9yIFBFICh1aW50NjRfdCBvciB1aW50MzJfdCBvciB1aW50MTZfdCAtIHRoaXMgaXMKPnF1 aXRlIGZ1bm55KS4KPgo+cG52X2lvZGFfcGU6OnBlX251bWJlciBpcyAidW5zaWduZWQiIGFuZCB0 aGlzIHBlX251bWJlciBpcyB0aGUgc2FtZSB0aGluZyBhcwo+SSBjYW4gc2VlIGluIHBudl9pb2Rh X3NldHVwX2Rldl9QRSgpLgo+Cj5Tb21lIHByaW50aygpIHByaW50IHRoZSBQRSBudW1iZXIgYXMg IiV4IiAod2hpY2ggaW1wbGllcyAidW5zaWduZWQiKS4KPgoKWWVzLCBJIGNhbiBzaW1wbHkgaGF2 ZSBzb21ldGhpbmcgbGlrZSBiZWxvdyB3aGVuIFBFIG51bWJlciBhcyB3ZWxsIGFzCnNlZ21lbnQg aW5kZXggYXJlIHJlcHJlc2VudGVkIGJ5ICJ1bnNpZ25lZCBpbnQiIHZhbHVlcywgcmlnaHQ/Cgoj ZGVmaW5lIElPREFfSU5WQUxJRF9QRQkJMHhmZmZmZmZmZgoKPgo+SSBzdWdnZXN0IGNoYW5naW5n IHRoZSBwY2lfZG46OnBlX251bWJlciB0eXBlIGZyb20gImludCIgdG8gInVuc2lnbmVkIGludCIg dG8KPm1hdGNoIHBudl9pb2RhX3BlOjpwZV9udW1iZXIsIGluIGEgc2VwYXJhdGUgcGF0Y2guIE9y IGRvIG5vdCB0b3VjaCB0eXBlcyBmb3IKPm5vdy4KPgoKWWVzLCBJIHdpbGwgaGF2ZSBhIHNlcGFy YXRlIHBhdGNoIHJpZ2h0IGJlZm9yZSB0aGlzIG9uZSB0byBhZGRyZXNzIGl0LgoKPgo+PlNpZ25l ZC1vZmYtYnk6IEdhdmluIFNoYW4gPGd3c2hhbkBsaW51eC52bmV0LmlibS5jb20+Cj4+LS0tCj4+ ICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLWlvZGEuYyB8IDkgKysrKysrKy0t Cj4+ICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLmggICAgICB8IDQgKystLQo+ PiAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+Cj4+ ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jIGIv YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKPj5pbmRleCAxZDI1MTRm Li40NGNjNWYzIDEwMDY0NAo+Pi0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9w Y2ktaW9kYS5jCj4+KysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2Rh LmMKPj5AQCAtMzIzOSw3ICszMjM5LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHBudl9wY2lfaW5p dF9pb2RhX3BoYihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+PiAgCXVuc2lnbmVkIGxvbmcgc2l6 ZSwgbTMybWFwX29mZiwgcGVtYXBfb2ZmLCBpb21hcF9vZmYgPSAwOwo+PiAgCWNvbnN0IF9fYmU2 NCAqcHJvcDY0Owo+PiAgCWNvbnN0IF9fYmUzMiAqcHJvcDMyOwo+Pi0JaW50IGxlbjsKPj4rCWlu dCBpLCBsZW47Cj4+ICAJdTY0IHBoYl9pZDsKPj4gIAl2b2lkICphdXg7Cj4+ICAJbG9uZyByYzsK Pj5AQCAtMzMzNCw4ICszMzM0LDEzIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwbnZfcGNpX2luaXRf aW9kYV9waGIoc3RydWN0IGRldmljZV9ub2RlICpucCwKPj4gIAlhdXggPSBtZW1ibG9ja192aXJ0 X2FsbG9jKHNpemUsIDApOwo+PiAgCXBoYi0+aW9kYS5wZV9hbGxvYyA9IGF1eDsKPj4gIAlwaGIt PmlvZGEubTMyX3NlZ21hcCA9IGF1eCArIG0zMm1hcF9vZmY7Cj4+LQlpZiAocGhiLT50eXBlID09 IFBOVl9QSEJfSU9EQTEpCj4+Kwlmb3IgKGkgPSAwOyBpIDwgcGhiLT5pb2RhLnRvdGFsX3BlX251 bTsgaSsrKQo+PisJCXBoYi0+aW9kYS5tMzJfc2VnbWFwW2ldID0gSU9EQV9JTlZBTElEX1BFOwo+ PisJaWYgKHBoYi0+dHlwZSA9PSBQTlZfUEhCX0lPREExKSB7Cj4+ICAJCXBoYi0+aW9kYS5pb19z ZWdtYXAgPSBhdXggKyBpb21hcF9vZmY7Cj4+KwkJZm9yIChpID0gMDsgaSA8IHBoYi0+aW9kYS50 b3RhbF9wZV9udW07IGkrKykKPj4rCQkJcGhiLT5pb2RhLmlvX3NlZ21hcFtpXSA9IElPREFfSU5W QUxJRF9QRTsKPj4rCX0KPj4gIAlwaGItPmlvZGEucGVfYXJyYXkgPSBhdXggKyBwZW1hcF9vZmY7 Cj4+ICAJc2V0X2JpdChwaGItPmlvZGEucmVzZXJ2ZWRfcGVfaWR4LCBwaGItPmlvZGEucGVfYWxs b2MpOwo+Pgo+PmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNp LmggYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLmgKPj5pbmRleCA3ODQ4ODJh Li4zNmM0OTY1IDEwMDY0NAo+Pi0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9w Y2kuaAo+PisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2kuaAo+PkBAIC0x NDYsOCArMTQ2LDggQEAgc3RydWN0IHBudl9waGIgewo+PiAgCQlzdHJ1Y3QgcG52X2lvZGFfcGUJ KnBlX2FycmF5Owo+Pgo+PiAgCQkvKiBNMzIgJiBJTyBzZWdtZW50IG1hcHMgKi8KPj4tCQl1bnNp Z25lZCBpbnQJCSptMzJfc2VnbWFwOwo+Pi0JCXVuc2lnbmVkIGludAkJKmlvX3NlZ21hcDsKPj4r CQlpbnQJCQkqbTMyX3NlZ21hcDsKPj4rCQlpbnQJCQkqaW9fc2VnbWFwOwo+Pgo+PiAgCQkvKiBJ UlEgY2hpcCAqLwo+PiAgCQlpbnQJCQlpcnFfY2hpcF9pbml0Owo+Pgo+Cj4KPi0tIAo+QWxleGV5 Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 cHBjLWRldiBtYWlsaW5nIGxpc3QKTGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKaHR0cHM6 Ly9saXN0cy5vemxhYnMub3JnL2xpc3RpbmZvL2xpbnV4cHBjLWRldg==