All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] pci: Fix decode regions for memory banks
@ 2018-02-15  7:59 Bernhard Messerklinger
  2018-02-15  8:36 ` Hannes Schmelzer
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Bernhard Messerklinger @ 2018-02-15  7:59 UTC (permalink / raw)
  To: u-boot

Since memory banks may not be located behind each other we need to add
them separately.

Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
---

 drivers/pci/pci-uclass.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index 5a24eb6428..ad43e8a27c 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -815,7 +815,6 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
 			  ofnode node)
 {
 	int pci_addr_cells, addr_cells, size_cells;
-	phys_addr_t base = 0, size;
 	int cells_per_record;
 	const u32 *prop;
 	int len;
@@ -874,6 +873,21 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
 	}
 
 	/* Add a region for our local memory */
+#ifdef CONFIG_NR_DRAM_BANKS
+	bd_t *bd = gd->bd;
+
+	for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
+		if (bd->bi_dram[i].size) {
+			pci_set_region(hose->regions + hose->region_count++,
+				       bd->bi_dram[i].start,
+				       bd->bi_dram[i].start,
+				       bd->bi_dram[i].size,
+				       PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
+		}
+	}
+#else
+	phys_addr_t base = 0, size;
+
 	size = gd->ram_size;
 #ifdef CONFIG_SYS_SDRAM_BASE
 	base = CONFIG_SYS_SDRAM_BASE;
@@ -882,6 +896,7 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
 		size = gd->pci_ram_top - base;
 	pci_set_region(hose->regions + hose->region_count++, base, base,
 		       size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
+#endif
 
 	return 0;
 }
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] pci: Fix decode regions for memory banks
  2018-02-15  7:59 [U-Boot] [PATCH] pci: Fix decode regions for memory banks Bernhard Messerklinger
@ 2018-02-15  8:36 ` Hannes Schmelzer
  2018-02-23 18:03 ` [U-Boot] " Tom Rini
  2018-03-22  9:06 ` [U-Boot] [PATCH] " Bin Meng
  2 siblings, 0 replies; 6+ messages in thread
From: Hannes Schmelzer @ 2018-02-15  8:36 UTC (permalink / raw)
  To: u-boot

Bernhard Messerklinger <bernhard.messerklinger@br-automation.com> schrieb 
am 15.02.2018 08:59:53:

> Von: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
> An: u-boot at lists.denx.de
> Kopie: hannes.schmelzer at br-automation.com, Bernhard Messerklinger 
> <bernhard.messerklinger@br-automation.com>, Simon Glass 
<sjg@chromium.org>, 
> Masahiro Yamada <yamada.masahiro@socionext.com>, Tuomas Tynkkynen 
> <tuomas.tynkkynen@iki.fi>, Bin Meng <bmeng.cn@gmail.com>, 
"xypron.glpk at gmx.de"
> <xypron.glpk@gmx.de>, Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
> Datum: 15.02.2018 09:00
> Betreff: [PATCH] pci: Fix decode regions for memory banks
> 
> Since memory banks may not be located behind each other we need to add
> them separately.
> 
> Signed-off-by: Bernhard Messerklinger 
<bernhard.messerklinger@br-automation.com>
> ---
> 
>  drivers/pci/pci-uclass.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
> index 5a24eb6428..ad43e8a27c 100644
> --- a/drivers/pci/pci-uclass.c
> +++ b/drivers/pci/pci-uclass.c
> @@ -815,7 +815,6 @@ static int decode_regions(struct pci_controller 
*hose, 
> ofnode parent_node,
>             ofnode node)
>  {
>     int pci_addr_cells, addr_cells, size_cells;
> -   phys_addr_t base = 0, size;
>     int cells_per_record;
>     const u32 *prop;
>     int len;
> @@ -874,6 +873,21 @@ static int decode_regions(struct pci_controller 
*hose, 
> ofnode parent_node,
>     }
> 
>     /* Add a region for our local memory */
> +#ifdef CONFIG_NR_DRAM_BANKS
> +   bd_t *bd = gd->bd;
> +
> +   for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
> +      if (bd->bi_dram[i].size) {
> +         pci_set_region(hose->regions + hose->region_count++,
> +                   bd->bi_dram[i].start,
> +                   bd->bi_dram[i].start,
> +                   bd->bi_dram[i].size,
> +                   PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
> +      }
> +   }
> +#else
> +   phys_addr_t base = 0, size;
> +
>     size = gd->ram_size;
>  #ifdef CONFIG_SYS_SDRAM_BASE
>     base = CONFIG_SYS_SDRAM_BASE;
> @@ -882,6 +896,7 @@ static int decode_regions(struct pci_controller 
*hose, 
> ofnode parent_node,
>        size = gd->pci_ram_top - base;
>     pci_set_region(hose->regions + hose->region_count++, base, base,
>               size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
> +#endif
> 
>     return 0;
>  }
> -- 
> 2.16.1
> 

Reviewed-by: Hannes Schmelzer <hannes.schmelzer@br-automation.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] pci: Fix decode regions for memory banks
  2018-02-15  7:59 [U-Boot] [PATCH] pci: Fix decode regions for memory banks Bernhard Messerklinger
  2018-02-15  8:36 ` Hannes Schmelzer
@ 2018-02-23 18:03 ` Tom Rini
  2018-03-22  9:06 ` [U-Boot] [PATCH] " Bin Meng
  2 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2018-02-23 18:03 UTC (permalink / raw)
  To: u-boot

On Thu, Feb 15, 2018 at 08:59:53AM +0100, Bernhard Messerklinger wrote:

> Since memory banks may not be located behind each other we need to add
> them separately.
> 
> Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
> Reviewed-by: Hannes Schmelzer <hannes.schmelzer@br-automation.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180223/5d6d3ede/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] pci: Fix decode regions for memory banks
  2018-02-15  7:59 [U-Boot] [PATCH] pci: Fix decode regions for memory banks Bernhard Messerklinger
  2018-02-15  8:36 ` Hannes Schmelzer
  2018-02-23 18:03 ` [U-Boot] " Tom Rini
@ 2018-03-22  9:06 ` Bin Meng
  2018-03-22 16:27   ` Bernhard Messerklinger
  2 siblings, 1 reply; 6+ messages in thread
From: Bin Meng @ 2018-03-22  9:06 UTC (permalink / raw)
  To: u-boot

Hi,

On Thu, Feb 15, 2018 at 3:59 PM, Bernhard Messerklinger
<bernhard.messerklinger@br-automation.com> wrote:
> Since memory banks may not be located behind each other we need to add
> them separately.
>
> Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
> ---
>
>  drivers/pci/pci-uclass.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
> index 5a24eb6428..ad43e8a27c 100644
> --- a/drivers/pci/pci-uclass.c
> +++ b/drivers/pci/pci-uclass.c
> @@ -815,7 +815,6 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>                           ofnode node)
>  {
>         int pci_addr_cells, addr_cells, size_cells;
> -       phys_addr_t base = 0, size;
>         int cells_per_record;
>         const u32 *prop;
>         int len;
> @@ -874,6 +873,21 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>         }
>
>         /* Add a region for our local memory */
> +#ifdef CONFIG_NR_DRAM_BANKS
> +       bd_t *bd = gd->bd;
> +
> +       for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
> +               if (bd->bi_dram[i].size) {
> +                       pci_set_region(hose->regions + hose->region_count++,
> +                                      bd->bi_dram[i].start,
> +                                      bd->bi_dram[i].start,
> +                                      bd->bi_dram[i].size,
> +                                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
> +               }
> +       }
> +#else

Sorry for jumping out. With this commit, Intel Galileo board does not
boot any more. x86 defines CONFIG_NR_DRAM_BANKS in x86-common.h, so
this commit forces x86 to use the new logic instead of the old one,
which breaks things. I have not debugged this on how to fix it. Any
ideas?

> +       phys_addr_t base = 0, size;
> +
>         size = gd->ram_size;
>  #ifdef CONFIG_SYS_SDRAM_BASE
>         base = CONFIG_SYS_SDRAM_BASE;
> @@ -882,6 +896,7 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>                 size = gd->pci_ram_top - base;
>         pci_set_region(hose->regions + hose->region_count++, base, base,
>                        size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
> +#endif
>
>         return 0;
>  }
> --

Regards,
Bin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] pci: Fix decode regions for memory banks
  2018-03-22  9:06 ` [U-Boot] [PATCH] " Bin Meng
@ 2018-03-22 16:27   ` Bernhard Messerklinger
  2018-03-27  7:03     ` Bin Meng
  0 siblings, 1 reply; 6+ messages in thread
From: Bernhard Messerklinger @ 2018-03-22 16:27 UTC (permalink / raw)
  To: u-boot

Hi,

Thanks for the report.
I am answering from my private email. At the moment I can't find any issue
regarding my patch. It should make no difference since dram_init_banksize in
quark/dram.c should set the dram bank. I will continue my investigation and
contact you if I find out something.

Regards,
Bernhard

On Thu, Mar 22, 2018 at 10:06 AM, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi,
>
> On Thu, Feb 15, 2018 at 3:59 PM, Bernhard Messerklinger
> <bernhard.messerklinger@br-automation.com> wrote:
>> Since memory banks may not be located behind each other we need to add
>> them separately.
>>
>> Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
>> ---
>>
>>  drivers/pci/pci-uclass.c | 17 ++++++++++++++++-
>>  1 file changed, 16 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
>> index 5a24eb6428..ad43e8a27c 100644
>> --- a/drivers/pci/pci-uclass.c
>> +++ b/drivers/pci/pci-uclass.c
>> @@ -815,7 +815,6 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>>                           ofnode node)
>>  {
>>         int pci_addr_cells, addr_cells, size_cells;
>> -       phys_addr_t base = 0, size;
>>         int cells_per_record;
>>         const u32 *prop;
>>         int len;
>> @@ -874,6 +873,21 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>>         }
>>
>>         /* Add a region for our local memory */
>> +#ifdef CONFIG_NR_DRAM_BANKS
>> +       bd_t *bd = gd->bd;
>> +
>> +       for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
>> +               if (bd->bi_dram[i].size) {
>> +                       pci_set_region(hose->regions + hose->region_count++,
>> +                                      bd->bi_dram[i].start,
>> +                                      bd->bi_dram[i].start,
>> +                                      bd->bi_dram[i].size,
>> +                                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
>> +               }
>> +       }
>> +#else
>
> Sorry for jumping out. With this commit, Intel Galileo board does not
> boot any more. x86 defines CONFIG_NR_DRAM_BANKS in x86-common.h, so
> this commit forces x86 to use the new logic instead of the old one,
> which breaks things. I have not debugged this on how to fix it. Any
> ideas?
>
>> +       phys_addr_t base = 0, size;
>> +
>>         size = gd->ram_size;
>>  #ifdef CONFIG_SYS_SDRAM_BASE
>>         base = CONFIG_SYS_SDRAM_BASE;
>> @@ -882,6 +896,7 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node,
>>                 size = gd->pci_ram_top - base;
>>         pci_set_region(hose->regions + hose->region_count++, base, base,
>>                        size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
>> +#endif
>>
>>         return 0;
>>  }
>> --
>
> Regards,
> Bin
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] pci: Fix decode regions for memory banks
  2018-03-22 16:27   ` Bernhard Messerklinger
@ 2018-03-27  7:03     ` Bin Meng
  0 siblings, 0 replies; 6+ messages in thread
From: Bin Meng @ 2018-03-27  7:03 UTC (permalink / raw)
  To: u-boot

Hi Bernhard,

On Fri, Mar 23, 2018 at 12:27 AM, Bernhard Messerklinger
<messerklingerb@gmail.com> wrote:
> Hi,
>
> Thanks for the report.
> I am answering from my private email. At the moment I can't find any issue
> regarding my patch. It should make no difference since dram_init_banksize in
> quark/dram.c should set the dram bank. I will continue my investigation and
> contact you if I find out something.
>

I've figured out where the bug is. Will send a patch soon.

Regards,
Bin

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-03-27  7:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-15  7:59 [U-Boot] [PATCH] pci: Fix decode regions for memory banks Bernhard Messerklinger
2018-02-15  8:36 ` Hannes Schmelzer
2018-02-23 18:03 ` [U-Boot] " Tom Rini
2018-03-22  9:06 ` [U-Boot] [PATCH] " Bin Meng
2018-03-22 16:27   ` Bernhard Messerklinger
2018-03-27  7:03     ` Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.