PCI: designware: missing *config* reg space
RFC 1/1 PCI: designware: missing *config* reg space
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?
drivers/pci/host/pcie-designware.c +8 -3
@@ -348,7 +348,7 @@ int dw_pcie_host_init(struct pcie_port *pp)struct platform_device *pdev =to_platform_device (pp->dev);struct of_pci_range range;struct of_pci_range_parser parser; -struct resource *cfg_res; +struct resource *cfg_res =NULL ;u32 val, na, ns;const __be32 *addrp;int i, index, ret;
@@ -359,7 +359,11 @@ int dw_pcie_host_init(struct pcie_port *pp)of_property_read_u32 (np,"#address-cells" , &na); ns =of_n_size_cells (np); - cfg_res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"config" ); +if (!pp->va_cfg0_base && !pp->va_cfg0_base) + cfg_res =platform_get_resource_byname (pdev, +IORESOURCE_MEM , +"config" ); +if (cfg_res) { pp->cfg0_size =resource_size (cfg_res)/2 ; pp->cfg1_size =resource_size (cfg_res)/2 ;
@@ -372,7 +376,8 @@ int dw_pcie_host_init(struct pcie_port *pp) pp->cfg0_mod_base =of_read_number (addrp, ns); pp->cfg1_mod_base = pp->cfg0_mod_base + pp->cfg0_size; }else { -dev_err (pp->dev,"missing *config* reg space\n" ); +if (!pp->va_cfg0_base && !pp->va_cfg1_base) +dev_err (pp->dev,"missing *config* reg space\n" ); }
Signature · 2 lines
Murali Karicheri Linux Kernel, Texas Instruments
Quoted 18 lines · Murali Karicheri
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 spaceAs 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.
Quoted 8 lines
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_baseandva_cfg1_baseare already set up inks_dw_pcie_host_init()before callingdw_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.
(quoted diff) +0 -0
b/drivers/pci/host/pcie-designware.c
index 2e9f84fdd9ce..4ff5308f0cc6 100644
drivers/pci/host/pcie-designware.c +1 -1
@@ -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" ); }
~Pratyush
Quoted 35 lines · Pratyush Anand
Quoted 18 lines · Murali Karicheri
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 spaceAs 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.
Quoted 8 lines
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_baseandva_cfg1_baseare already set up inks_dw_pcie_host_init()before callingdw_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.
drivers/pci/host/pcie-designware.c +0
-0
drivers/pci/host/pcie-designware.c int dw_pcie_host_init(struct pcie_port *pp) · line 376
Quoted 7 lines
drivers/pci/host/pcie-designware.c +1
-1@@ -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
Quoted 6 lines
~Pratyush
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 2 lines
Murali Karicheri Linux Kernel, Keystone