[U-Boot] [PATCH] pci: fix checking PCI_REGION_MEM in pci_hose_phys_to_bus()
Bin Meng
bmeng.cn at gmail.com
Sun Oct 25 03:36:25 CET 2015
On Sat, Oct 24, 2015 at 5:48 AM, Cheng Gu <chenggu at marvell.com> wrote:
> When converting between PCI bus and phys addresses, a two pass search
> was introduced with preference to non-PCI_REGION_SYS_MEMORY regions.
> See commit 2d43e873a29ca4959ba6a30fc7fb396d3fd0dccf.
>
> However, since PCI_REGION_MEM is defined as 0, the if statement was
> always asserted true: ((flags & PCI_REGION_MEM) == PCI_REGION_MEM)
>
> This patch uses PCI_REGION_TYPE bit to check if the region is
> PCI_REGION_MEM: ((flags & PCI_REGION_TYPE) == PCI_REGION_MEM)
>
> Signed-off-by: Cheng Gu <chenggu at marvell.com>
> ---
> drivers/pci/pci_common.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/pci_common.c b/drivers/pci/pci_common.c
> index 07f1726..a64792f 100644
> --- a/drivers/pci/pci_common.c
> +++ b/drivers/pci/pci_common.c
> @@ -231,7 +231,7 @@ phys_addr_t pci_hose_bus_to_phys(struct pci_controller *hose,
> * if PCI_REGION_MEM is set we do a two pass search with preference
> * on matches that don't have PCI_REGION_SYS_MEMORY set
> */
> - if ((flags & PCI_REGION_MEM) == PCI_REGION_MEM) {
> + if ((flags & PCI_REGION_TYPE) == PCI_REGION_MEM) {
> ret = __pci_hose_bus_to_phys(hose, bus_addr,
> flags, PCI_REGION_SYS_MEMORY, &phys_addr);
> if (!ret)
> @@ -298,7 +298,7 @@ pci_addr_t pci_hose_phys_to_bus(struct pci_controller *hose,
> * if PCI_REGION_MEM is set we do a two pass search with preference
> * on matches that don't have PCI_REGION_SYS_MEMORY set
> */
> - if ((flags & PCI_REGION_MEM) == PCI_REGION_MEM) {
> + if ((flags & PCI_REGION_TYPE) == PCI_REGION_MEM) {
> ret = __pci_hose_phys_to_bus(hose, phys_addr,
> flags, PCI_REGION_SYS_MEMORY, &bus_addr);
> if (!ret)
> --
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
More information about the U-Boot
mailing list