Re: [RFC] PCI: designware: missing *config* reg space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 05/10/2015 08:54 AM, Pratyush Anand wrote:
On Tue, Apr 28, 2015 at 1:57 AM, Murali Karicheri <m-karicheri2@xxxxxx> 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
Murali Karicheri
Linux Kernel, Keystone

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux