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

Gabriel Huau
2014-09-03T18:45:15Z

On 09/03/2014 11:36 AM, York Sun wrote:
> 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
>

Oh! I see what you mean, my bad, sorry.
I'll propose the fix as soon as possible to revert the modification on
the include guard and modify the one for the asm/mp.h

Regards,
Gabriel