Message ID | CAHM4w1krq0vHd6EMpKV-NhHGggDBrrDGZw=V3XLcQDZ7XsXbsQ@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On 05/10/2015 08:54 AM, Pratyush Anand wrote: > On Tue, Apr 28, 2015 at 1:57 AM, Murali Karicheri <m-karicheri2@ti.com> wrote: >> All, >> >> I would like to take action to resolve the following print message thrown by >> PCI designware core driver when kernel boots up on Keystone. >> >> [ 0.415778] keystone-pcie 21801000.pcie: missing *config* reg space >> >> As per DT documentation introduced by commit >> 4dd964df36d0e548e1806ec2ec275b62d4dc46e8 "PCI: designware: Look for >> configuration space in 'reg', not 'ranges' >> >> This is introduced to stop abusing the range property for defining resource >> for config space. However if the device binding doesn't have >> reg-name = "config" defined, this throws out an unnecessary log message >> at boot which seems to me not right. AFAIK, reg-names is not mandatory. >> config space address in Keystone case is defined using index. So for >> keystone this needs to be fixed. >> >> I propose to add the following check in the designware code to address >> this. Keystone uses an older version of the Designware IP and doesn't have >> the ATU support. So va_cfg0_base and va_cfg1_base are already set up in >> ks_dw_pcie_host_init() before calling dw_pcie_host_init() and points to the >> remote config space address (both same for keystone). I think for other DW >> drivers, these variables are NULL. So add a check and avoid this error >> message for Keystone. Any comments? >> > or may be just following one liner should do the job for you. > > diff --git a/drivers/pci/host/pcie-designware.c > b/drivers/pci/host/pcie-designware.c > index 2e9f84fdd9ce..4ff5308f0cc6 100644 > --- a/drivers/pci/host/pcie-designware.c > +++ b/drivers/pci/host/pcie-designware.c > @@ -371,7 +371,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > addrp = of_get_address(np, index, NULL, NULL); > pp->cfg0_mod_base = of_read_number(addrp, ns); > pp->cfg1_mod_base = pp->cfg0_mod_base + pp->cfg0_size; > - } else { > + } else if (!pp->va_cfg0_base) { > dev_err(pp->dev, "missing *config* reg space\n"); > } Yes. That will work. I will post a patch for this. Murali > > ~Pratyush > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c index 2e9f84fdd9ce..4ff5308f0cc6 100644 --- a/drivers/pci/host/pcie-designware.c +++ b/drivers/pci/host/pcie-designware.c @@ -371,7 +371,7 @@ int dw_pcie_host_init(struct pcie_port *pp) addrp = of_get_address(np, index, NULL, NULL); pp->cfg0_mod_base = of_read_number(addrp, ns); pp->cfg1_mod_base = pp->cfg0_mod_base + pp->cfg0_size; - } else { + } else if (!pp->va_cfg0_base) { dev_err(pp->dev, "missing *config* reg space\n"); }