On 08/02/17 10:21, Gavin Shan wrote:
On Tue, Feb 07, 2017 at 10:12:48PM +1100, Michael Ellerman wrote:
Andrew Donnellan <andrew.donnel...@au1.ibm.com> writes:

.../...

The effect of this patch is to copy the memory resources from the *real*
PHB to the vPHB, as given through the device tree. It shouldn't have any
practical effect other than squashing this message.

It sounds a bit backward to me. If we don't need the resources then
why have them?

If we have code that thinks that's an error, than maybe that's what
needs fixing, or special casing for the vPHB?


Yeah, vPHB is a special case. There are basically two stages in PCI enumeration:
probing and then resource assignment. vPHB is different from *real* PHB as the
resource assignment is skipped on it. So vPHB doesn't need any resources to be
populated. However, there is a check in probing stage and it's where the warning
message comes from.

   drivers/misc/cxl/vphb.c::cxl_pci_vphb_add()
   arch/powerpc/kernel/pci-common.c::pcibios_scan_phb()
                                     pcibios_setup_phb_resources()

   static void pcibios_setup_phb_resources(struct pci_controller *hose,
                                        struct list_head *resources)
   {
       :
       for (i = 0; i < 3; ++i) {
            res = &hose->mem_resources[i];
            if (!res->flags) {
                if (i == 0)
                    printk(KERN_ERR "PCI: Memory resource 0 not set for "
                        "host bridge %s (domain %d)\n",
                        hose->dn->full_name, hose->global_number);
                continue;
            }
       :
   }

Alternatively, we can replace prink(KERN_ERR) with pr_debug(). It's going to
affect all PHBs including the real ones. Andrew and Michael, what do you think? 
:-)

In what other circumstances do we get this error printed on real PHBs?

--
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnel...@au1.ibm.com  IBM Australia Limited

Reply via email to