[U-Boot] [PATCH 1/3] pci: Add error values definitions from the kernel

Bin Meng bmeng.cn at gmail.com
Fri Jan 8 01:46:49 CET 2016


Hi Fabio,

On Thu, Jan 7, 2016 at 9:31 PM, Fabio Estevam <festevam at gmail.com> wrote:
> On Thu, Jan 7, 2016 at 10:58 AM, Bin Meng <bmeng.cn at gmail.com> wrote:
>
>> Ah, yes! Sorry I wanted to say the original proposal to "return 0"
>> instead. But now I failed to understand why this fixed the issue
>> because those error numbers are not zero.
>
> The problem only happens if we return a negative value.

OK, now I am pretty sure this fix is not correct, that "the problem
only happens if we return a negative value".

The imx and layerscape PCIe driver registers PCI config ops as following:

pci_set_ops(hose,
   pci_hose_read_config_byte_via_dword,
   pci_hose_read_config_word_via_dword,
   ls_pcie_read_config,
   pci_hose_write_config_byte_via_dword,
   pci_hose_write_config_word_via_dword,
   ls_pcie_write_config);

The pci_hose_read_config_byte_via_dword() and
pci_hose_read_config_word_via_dword() only return -1 if the error
number < 0. What if I call:

u32 data;
ret = pci_read_config_dword(dev, PCI_VENDOR_ID, &data);

This will fail with error number 0x86, but if we do:

u16 data;
ret = pci_read_config_dword(dev, PCI_VENDOR_ID, &data);

This will _not_ fail. This is inconsistent. You are just trying to
workaround the 'pciinfo' command to make it output no error message.

>
>> And why returning zero is bad? From a working PCIe controller (either
>
> It is not bad, but I still prefer to keep in sync with the kernel driver.

Regards,
Bin


More information about the U-Boot mailing list