[U-Boot] [PATCH v6] mx6: add support of multi-processor command

York Sun
2014-09-03T18:36:53Z

On 09/03/2014 11:26 AM, Gabriel Huau wrote:
> Hi York,
>
> On 09/03/2014 11:00 AM, York Sun wrote:
>> On 07/28/2014 08:15 AM, Stefano Babic wrote:
>>> Hi Gabriel,
>>>
>>> On 26/07/2014 20:35, Gabriel Huau wrote:
>>>> This allows u-boot to load different OS or Bare Metal application on
>>>> different cores of the i.MX6 SoC.
>>>> For example: running Android on cpu0 and a RT OS like QNX/FreeRTOS on cpu1.
>>>>
>>>> Signed-off-by: Gabriel Huau <contact@huau-gabriel.fr>
>>>> ---
>>>> Changes for v2:
>>>> - Add a commit log message to explain the purpose of this patch
>>>> Changes for v3:
>>>> - Remove unnecessary check for unsigned values when they are negative
>>>> Changes for v4:
>>>> - Add CONFIG_MP to the common mx6 configuration
>>>> - Get the number of CPUs dynamically instead of using a macro
>>>> Changes for v5:
>>>> - Rebase on the last update of the tree (conflicts solved)
>>>> Changes for v6:
>>>> - Remove useless switch case
>>>> - Update board_f to not depend on mp.h unnecessary
>>>> - Fix build warnings
>>>> - Update commit message
>>>>
>> <snip>
>>
>>>> --- a/common/board_f.c
>>>> +++ b/common/board_f.c
>>>> @@ -34,6 +34,9 @@
>>>> #ifdef CONFIG_MPC5xxx
>>>> #include <mpc5xxx.h>
>>>> #endif
>>>> +#if (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
>>>> +#include <asm/mp.h>
>>>> +#endif
>>>>
>>>> #include <os.h>
>>>> #include <post.h>
>>>> @@ -43,9 +46,6 @@
>>>> #include <watchdog.h>
>>>> #include <asm/errno.h>
>>>> #include <asm/io.h>
>>>> -#ifdef CONFIG_MP
>>>> -#include <asm/mp.h>
>>>> -#endif
>>>> #include <asm/sections.h>
>>>> #ifdef CONFIG_X86
>>>> #include <asm/init_helpers.h>
>>>> @@ -381,7 +381,7 @@ static int setup_dest_addr(void)
>>>> gd->ram_top = board_get_usable_ram_top(gd->mon_len);
>>>> gd->relocaddr = gd->ram_top;
>>>> debug("Ram top: %08lX\n", (ulong)gd->ram_top);
>>>> -#if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
>>>> +#if (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
>> I didn't notice this patch until it got merged. Why dropping CONFIG_MP here?
>> This change breaks these boards
>>
>> MPC8536DS MPC8536DS_36BIT MPC8536DS_SDCARD MPC8536DS_SPIFLASH qemu-ppce500
>>
>> York
>
> Sorry, I didn't see the break for these boards.
> 'asm/mp.h' is used only for the powerpc board and using CONFIG_MP force
> the other architecture (or board) to create an empty header.
> As this header was here to use only specific features (not generic), I
> removed it and put the include guards only for the boards needed.
>
> Can't we add these boards to the board_f.c?
>

I don't mind to change the guard for asm/mp.h. But you shouldn't remove the
guard for the function call. Not all powerpc SoCs support SMP. You could use

+#if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
+#include <asm/mp.h>
+#endif

York