From patchwork Sat Mar 28 03:19:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yinghai Lu X-Patchwork-Id: 455612 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 04C521400DE for ; Sat, 28 Mar 2015 14:19:27 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=E2AyHzOL; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752423AbbC1DTL (ORCPT ); Fri, 27 Mar 2015 23:19:11 -0400 Received: from mail-ig0-f173.google.com ([209.85.213.173]:33401 "EHLO mail-ig0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752316AbbC1DTK (ORCPT ); Fri, 27 Mar 2015 23:19:10 -0400 Received: by ignm3 with SMTP id m3so42241016ign.0; Fri, 27 Mar 2015 20:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=UlmptsVy5euR6cX9jAHF7afAp73I6yhH02vTsPdRUSI=; b=E2AyHzOLU5MVENB4uld7v/sixTkdnon6sU+uMvCfos27DYtxd86cEFoEE9zQIkGqn4 HLk4q7BZWcq3bktmiIk+44lZOZFgCQvPSPsI0lVk8zJebM4uTXF2eUdW1o2BVSt8ekZW DwFdDz4i7f/f7afq/QsJvd1vv99KHXbEvym7Bq3nR+A+vvjTQDbXY7uZkG9DE9zhzCpx apciK+ObFzwBJDtfeyK2WLpMHq52JmD4HrF/IVKqoam8iBcB0OvC8cp0Z4ci65V2aS7R 3+YsfsauDonF+BYI/pd/mD8758h+95Ruf5715V99ehrQjaqxjckCKmSW3R4UanaETBGz OiSA== MIME-Version: 1.0 X-Received: by 10.50.30.138 with SMTP id s10mr2760298igh.3.1427512749771; Fri, 27 Mar 2015 20:19:09 -0700 (PDT) Received: by 10.64.208.43 with HTTP; Fri, 27 Mar 2015 20:19:09 -0700 (PDT) In-Reply-To: <5515F782.7060301@oracle.com> References: <5514391F.2030300@oracle.com> <551495EE.20201@oracle.com> <5515F6B8.8020606@oracle.com> <5515F782.7060301@oracle.com> Date: Fri, 27 Mar 2015 20:19:09 -0700 X-Google-Sender-Auth: 87f-77yBY1cuRHofZARJvnxFNg0 Message-ID: Subject: Re: d63e2e1f3df breaks sparc/T5-8 From: Yinghai Lu To: David Ahern Cc: Bjorn Helgaas , "linux-pci@vger.kernel.org" , "sparclinux@vger.kernel.org" , LKML Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Fri, Mar 27, 2015 at 5:36 PM, David Ahern wrote: >>> >>>> Also please make sure your config have >>>> >>>> CONFIG_PCI_DEBUG=y >>>> >>>> and capture serial console with "debug ignore_loglevel", so we check if >>>> pci 0000:00:01.0 really have resource assigned. >>> >>> >>> Please check attached patch and send out boot log with above config. >> >> >> patched applied. PCI_DEBUG enabled. options added. log attached. This is >> with d63e2e1f3df reverted still. >> > > oops lied about that last one; I forgot to revert the patch this round. That > the system booted with it applied is progress. Good. But we still have annoying warning about "no compatible window". Please try attached patch that support 64bit pci mem space for sparc. BTW, looks like you still do not have CONFIG_PCI_DEBUG=y in your .config. otherwise we should more verbose print out. Or did you have DYNAMIC_DEBUG enabled ? If it is that case, can you remove that? Thanks Yinghai Subject: [RFC PATCH] sparc/PCI: Add mem64 resource parsing for root bus Found no compatible bridge window warning in boot log from T5-8. pci 0000:00:01.0: can't claim BAR 15 [mem 0x100000000-0x4afffffff pref]: no compatible bridge window and root bus only report io and mem32. pci_sun4v f02dbcfc: PCI host bridge to bus 0000:00 pci_bus 0000:00: root bus resource [io 0x804000000000-0x80400fffffff] (bus address [0x0000-0xfffffff]) pci_bus 0000:00: root bus resource [mem 0x800000000000-0x80007effffff] (bus address [0x00000000-0x7effffff]) pci_bus 0000:00: root bus resource [bus 00-77] Add mem64 handling in pci_common for sparc, so we can have 64bit resource registered for bus at first. Signed-off-by: Yinghai Lu --- arch/sparc/kernel/pci.c | 3 +++ arch/sparc/kernel/pci_common.c | 15 +++++++++++++-- arch/sparc/kernel/pci_impl.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) Index: linux-2.6/arch/sparc/kernel/pci.c =================================================================== --- linux-2.6.orig/arch/sparc/kernel/pci.c +++ linux-2.6/arch/sparc/kernel/pci.c @@ -663,6 +663,9 @@ struct pci_bus *pci_scan_one_pbm(struct pbm->io_space.start); pci_add_resource_offset(&resources, &pbm->mem_space, pbm->mem_space.start); + if (pbm->mem64_space.flags) + pci_add_resource_offset(&resources, &pbm->mem64_space, + pbm->mem64_space.start); pbm->busn.start = pbm->pci_first_busno; pbm->busn.end = pbm->pci_last_busno; pbm->busn.flags = IORESOURCE_BUS; Index: linux-2.6/arch/sparc/kernel/pci_common.c =================================================================== --- linux-2.6.orig/arch/sparc/kernel/pci_common.c +++ linux-2.6/arch/sparc/kernel/pci_common.c @@ -406,6 +406,7 @@ void pci_determine_mem_io_space(struct p } num_pbm_ranges = i / sizeof(*pbm_ranges); + memset(&pbm->mem64_space, 0, sizeof(struct resource)); for (i = 0; i < num_pbm_ranges; i++) { const struct linux_prom_pci_ranges *pr = &pbm_ranges[i]; @@ -451,7 +452,11 @@ void pci_determine_mem_io_space(struct p break; case 3: - /* XXX 64-bit MEM handling XXX */ + /* 64-bit MEM handling */ + pbm->mem64_space.start = a; + pbm->mem64_space.end = a + size - 1UL; + pbm->mem64_space.flags = IORESOURCE_MEM; + break; default: break; @@ -465,15 +470,21 @@ void pci_determine_mem_io_space(struct p prom_halt(); } - printk("%s: PCI IO[%llx] MEM[%llx]\n", + printk("%s: PCI IO[%llx] MEM[%llx]", pbm->name, pbm->io_space.start, pbm->mem_space.start); + if (pbm->mem64_space.flags) + printk(" MEM64[%llx]", + pbm->mem64_space.start); + printk("\n"); pbm->io_space.name = pbm->mem_space.name = pbm->name; request_resource(&ioport_resource, &pbm->io_space); request_resource(&iomem_resource, &pbm->mem_space); + if (pbm->mem64_space.flags) + request_resource(&iomem_resource, &pbm->mem64_space); pci_register_legacy_regions(&pbm->io_space, &pbm->mem_space); Index: linux-2.6/arch/sparc/kernel/pci_impl.h =================================================================== --- linux-2.6.orig/arch/sparc/kernel/pci_impl.h +++ linux-2.6/arch/sparc/kernel/pci_impl.h @@ -97,6 +97,7 @@ struct pci_pbm_info { /* PBM I/O and Memory space resources. */ struct resource io_space; struct resource mem_space; + struct resource mem64_space; struct resource busn; /* Base of PCI Config space, can be per-PBM or shared. */