Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arch: arm: Introduce SMP support for Cortex-A/R #61206

Conversation

SgrrZhf
Copy link
Member

@SgrrZhf SgrrZhf commented Aug 7, 2023

This PR do mainly things below.

  1. Introduce USE_SWITCH_SUPPORT for Cortex-A/R (AArch32).
  2. Exception entry and exit are refactored. All exceptions including IRQ share the same exception entry and exit function to save and restore context.
    • Exception entry: z_arm_cortex_ar_enter_exc
    • Exception exit: z_arm_cortex_ar_exit_exc
  3. Differentiate exception depth and interrupt depth. Exception depth is managed in the exception entry and exit code, and interrupt depth is managed in isr_wrapper code. Don't allow context switch when interrupt depth is greater than 1.
  4. Introduce SMP support for Cortex-A/R (AArch32).
  5. Enable SMP support on fvp_baser_aemv8r_aarch32_smp platform.

Note:

  1. For now, FPU_SHARING and USERSPACE are not supported.
  2. For now, only fvp_baser_aemv8r_aarch32_smp platform enabled USE_SWITCH_SUPPORT.

@SgrrZhf
Copy link
Member Author

SgrrZhf commented Aug 7, 2023

I added USE_SWITCH support in this commit e7b11e9, and it provides the same functionality as PR #60599. Please have a look at it when you have time @andyross @ibirnbaum

@SgrrZhf
Copy link
Member Author

SgrrZhf commented Aug 7, 2023

You are not on the reviewer list, but I think you must be interested in it. Please have a look when you have time. @povergoing, @ithinuel

@ithinuel
Copy link
Collaborator

ithinuel commented Aug 7, 2023

Thank you!
I'm using this as a reference for the cortex-m variant I'm working on.

@carlescufi
Copy link
Member

@ibirnbaum FYI

Copy link
Contributor

@andyross andyross left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some nitpicks and kibitzing on the switch implementation. I haven't had time to look at the full PR. On the whole it seems pretty solid though.

#if defined(CONFIG_USE_SWITCH)
extern void z_arm_exit_exc(void);
thread->switch_handle = thread;
thread->callee_saved.lr = (uint32_t)z_arm_exc_exit;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Naming: calling that value "LR" is a minor abuse; that register is for the return address. As seen here it's actually being faked as the entry (!) address of the exception return path. Which is fine as far as implementation goes, but IMHO it would be clearer to call this "PC", since it's the address at which at execution will resume. Calling it "LR" is just an implementation detail from how you implemented the cooperative switch case.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Calling it "LR" can tell the user that we save the LR register into it, I'm worried that the user may get confused if we call it "PC".

static ALWAYS_INLINE void
arch_thread_return_value_set(struct k_thread *thread, unsigned int value)
{
thread->arch.swap_return_value = value;
}

#else

static inline void arch_switch(void *switch_to, void **switched_from)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You want ALWAYS_INLINE here. This gets expanded in just a few hot paths in the kernel; we know we want it inlined, don't give the toolchain the option to mess it up.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

/* save old thread into switch handle which is required by
* z_sched_switch_spin()
*/
str r1, [r1, #___thread_t_switch_handle_OFFSET]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW: this must be the very last thing done with the old thread context. Since someone will be coming back here to add FPU support later, it might be nice for the comment to warn about that and/or mention the docs in arch_interface.h that explain the requirement.

Also, at least on SMP Cortex-A you need a write barrier immediately before this store, so that no other CPU can possibly see the earlier stores cross with it and miss some of the saved data.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

ldr r2, =_thread_offset_to_callee_saved
add r2, r1, r2

stm r2, {r4-r11, sp, lr}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is pleasingly simple, but FWIW making it a function call is an extra set of instructions that you really don't need in the cooperative switch case It wouldn't be much more complicated to make arch_switch() an inline assembly expansion that does mostly the same stuff, adds a clobber for r0-3 and r12 [1], and stores the address of the following instruction into the thread context via a simple assembly symbol.

[1] Probably. I'm winging my knowledge of the ARM ABI based on general intuition and a copy of the AAPCS spec I just googled in another window. Apply salt.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm reconsidering this now.

MMU or MPU unit need to be initialized by its own CPU.

- Primary core initialize MMU or MPU unit in z_arm_prep_c.
- Secondary core initialize MMU or MPU unit in z_arm_secondary_start.

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
Replace the TLS base address pointer from TPIDRURO to TPIDRURW.

The difference between them is that TPIDRURO is read-only in user mode
but TPIDRURW isn't. So TPIDRURO is much more suitable for store
the address of _kernel.CPU[n]. For this reason, this commit replaces
the base pointer of the TLS area.

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
Store the current CPU's struct _cpu instance into TPIDRURO, so that the
CPU core can get its struct _cpu instance by reading TPIDRURO. This is
useful in the SMP system.

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
This commit introduce 'USE_SWITCH' feature into cortex-A/R(aarch32)
architecture

For introducing USE_SWITCH, the exception entry and exit are unified via
`z_arm_cortex_ar_enter_exc` and `z_arm_cortex_ar_exit_exc`. All
exceptions including ISR are using this way to enter and exit exception
handler.

Differentiate exception depth and interrupt depth. Allow doing
context switch when exception depth greater than 1 but not allow doing
this when interrupt depth greater than 1.

Currently, USE_SWITCH doesn't support FPU_SHARING and USERSPACE.

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
This commit introduces SMP support into Cortex-A/R aarch32 architecture.

For now, this only supports multiple core start together and only allow
one CPU initialize system as primary core, others loop at the beginning
as the secondary cores and wait for wake up.

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
This commit add a new board named 'fvp_baser_aemv8r_aarch32_smp'

Signed-off-by: Huifeng Zhang <Huifeng.Zhang@arm.com>
@SgrrZhf SgrrZhf force-pushed the topics/huizha01/cortex-ar/introduce-smp branch from e80aee1 to c9f2ef9 Compare November 2, 2023 06:24
@SgrrZhf SgrrZhf removed the DNM This PR should not be merged (Do Not Merge) label Nov 2, 2023
@SgrrZhf
Copy link
Member Author

SgrrZhf commented Nov 2, 2023

Now, USE_SWITCH_SUPPORT is stable on Cortex-A/R (AArch32), and all testcases passed on fvp_baser_aemv8r_aarch32_smp

west twister --force-color --inline-logs -v -N -M --retry-failed 0 --clobber-output --integration -p fvp_baser_aemv8r_aarch32_smp
Deleting output directory /home/huizha01/workspace/arm/zephyr-base/zephyr/twister-out
INFO    - Using Ninja..
INFO    - Zephyr version: zephyr-v3.4.0-6179-g008ce27b1fa7
INFO    - Using 'zephyr' toolchain.
INFO    - Building initial testsuite list...
INFO    - Writing JSON report /home/huizha01/workspace/arm/zephyr-base/zephyr/twister-out/testplan.json
INFO    - JOBS: 8
INFO    - Adding tasks to the queue...
INFO    - Added initial list of jobs to queue
INFO    - 2573/2722 fvp_baser_aemv8r_aarch32_smp samples/modules/lvgl/demos/sample.modules.lvgl.demo_benchmark SKIPPED (runtime filter)
INFO    - 2574/2722 fvp_baser_aemv8r_aarch32_smp samples/modules/lvgl/demos/sample.modules.lvgl.demo_stress SKIPPED (runtime filter)
INFO    - 2575/2722 fvp_baser_aemv8r_aarch32_smp samples/modules/lvgl/demos/sample.modules.lvgl.demo_music SKIPPED (runtime filter)
INFO    - 2576/2722 fvp_baser_aemv8r_aarch32_smp samples/drivers/misc/timeaware_gpio/sample.drivers.misc.timeaware_gpio SKIPPED (runtime filter)
INFO    - 2577/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/futex/kernel.futex        SKIPPED (runtime filter)
INFO    - 2578/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/mem_protect/kernel.memory_protection SKIPPED (runtime filter)
INFO    - 2579/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/syscalls/kernel.memory_protection.syscalls SKIPPED (runtime filter)
INFO    - 2580/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/obj_validation/kernel.memory_protection.obj_validation SKIPPED (runtime filter)
INFO    - 2581/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/userspace/kernel.memory_protection.userspace SKIPPED (runtime filter)
INFO    - 2582/2722 fvp_baser_aemv8r_aarch32_smp samples/synchronization/sample.kernel.synchronization PASSED (armfvp 3.549s)
INFO    - 2583/2722 fvp_baser_aemv8r_aarch32_smp samples/subsys/zbus/confirmed_channel/sample.zbus.confirmed_message PASSED (armfvp 3.647s)
INFO    - 2584/2722 fvp_baser_aemv8r_aarch32_smp samples/subsys/llext/shell_loader/sample.llext.shell PASSED (build)
INFO    - 2585/2722 fvp_baser_aemv8r_aarch32_smp samples/arch/mpu/mpu_test/sample.mpu.mpu_test      PASSED (build)
INFO    - 2586/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/stackprot/kernel.memory_protection.stackprot_tls SKIPPED (runtime filter)
INFO    - 2587/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/sys_sem/kernel.memory_protection.sys_sem SKIPPED (runtime filter)
INFO    - 2588/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random PASSED (armfvp 3.658s)
INFO    - 2589/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/protection/kernel.memory_protection.protection PASSED (armfvp 3.684s)
INFO    - 2590/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/stackprot/kernel.memory_protection.stackprot PASSED (armfvp 4.183s)
INFO    - 2591/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/context/kernel.context                PASSED (armfvp 6.799s)
INFO    - 2592/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/pipe/pipe_api/kernel.pipe.api         PASSED (armfvp 4.096s)
INFO    - 2593/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/pipe/pipe/kernel.pipe                 PASSED (armfvp 3.763s)
INFO    - 2594/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/stack/stack/kernel.stack.usage        PASSED (armfvp 3.636s)
INFO    - 2595/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/context/kernel.context.minimallibc    PASSED (armfvp 4.941s)
INFO    - 2596/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_protect/sys_sem/kernel.memory_protection.sys_sem.nouser PASSED (armfvp 12.560s)
INFO    - 2597/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/poll/kernel.poll                      PASSED (armfvp 3.585s)
INFO    - 2598/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/poll/kernel.poll.minimallibc          PASSED (armfvp 3.439s)
INFO    - 2599/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common.picolibc         PASSED (armfvp 16.263s)
INFO    - 2600/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/profiling/profiling_api/kernel.common.profiling PASSED (armfvp 6.044s)
INFO    - 2601/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common                  PASSED (armfvp 16.160s)
INFO    - 2602/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common.nano64           PASSED (armfvp 15.720s)
INFO    - 2603/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common.nano32           PASSED (armfvp 13.753s)
INFO    - 2604/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common.minimallibc      PASSED (armfvp 13.658s)
INFO    - 2605/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/obj_tracking/kernel.objects.tracking.minimallibc PASSED (armfvp 3.624s)
INFO    - 2606/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/common/kernel.common.tls              PASSED (armfvp 11.182s)
INFO    - 2607/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/obj_tracking/kernel.objects.tracking  PASSED (armfvp 5.499s)
INFO    - 2608/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_slab/mslab_concept/kernel.memory_slabs.concept PASSED (armfvp 3.437s)
INFO    - 2609/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_slab/mslab_stats/kernel.memory_slabs.stats PASSED (armfvp 3.892s)
INFO    - 2610/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_slab/mslab_threadsafe/kernel.memory_slabs.threadsafe PASSED (armfvp 3.266s)
INFO    - 2611/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_slab/mslab/kernel.memory_slabs    PASSED (armfvp 3.273s)
INFO    - 2612/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_slab/mslab_api/kernel.memory_slabs.api PASSED (armfvp 3.204s)
INFO    - 2613/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/interrupt/arch.interrupt.minimallibc  PASSED (armfvp 22.595s)
INFO    - 2614/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/interrupt/arch.shared_interrupt       PASSED (armfvp 22.808s)
INFO    - 2615/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/queue/kernel.queue                    PASSED (armfvp 7.799s)
INFO    - 2616/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/events/event_api/kernel.events        PASSED (armfvp 8.817s)
INFO    - 2617/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/interrupt/arch.interrupt              PASSED (armfvp 11.655s)
INFO    - 2618/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/events/sys_event/kernel.events.usage  SKIPPED (runtime filter)
INFO    - 2619/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/semaphore/sys_sem/kernel.semaphore.usage SKIPPED (runtime filter)
INFO    - 2620/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/queue/kernel.queue.minimallibc        PASSED (armfvp 6.191s)
INFO    - 2621/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mbox/mbox_usage/kernel.mailbox.usage  PASSED (armfvp 5.480s)
INFO    - 2622/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mbox/mbox_api/kernel.mailbox.api      PASSED (armfvp 4.442s)
INFO    - 2623/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/pending/kernel.objects                PASSED (armfvp 3.870s)
INFO    - 2624/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/metairq/kernel.scheduler.metairq PASSED (armfvp 3.904s)
INFO    - 2625/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/pending/kernel.objects.minimallibc    PASSED (armfvp 3.692s)
INFO    - 2626/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/deadline/kernel.scheduler.deadline PASSED (armfvp 4.039s)
INFO    - 2627/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/semaphore/semaphore/kernel.semaphore  PASSED (armfvp 33.565s)
INFO    - 2628/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/preempt/kernel.scheduler.preempt PASSED (armfvp 6.361s)
INFO    - 2629/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.dumb_no_timeslicing PASSED (armfvp 8.017s)
INFO    - 2630/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.multiq_no_timeslicing PASSED (armfvp 6.843s)
INFO    - 2631/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.no_timeslicing PASSED (armfvp 7.660s)
INFO    - 2632/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/lifo/lifo_usage/kernel.lifo.usage     PASSED (armfvp 7.352s)
INFO    - 2633/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/workq/user_work/kernel.workqueue.user SKIPPED (runtime filter)
INFO    - 2634/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/lifo/lifo_api/kernel.lifo             PASSED (armfvp 4.565s)
INFO    - 2635/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/workq/work_queue/kernel.workqueue     PASSED (armfvp 3.682s)
INFO    - 2636/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_heap/k_heap_api/kernel.k_heap_api PASSED (armfvp 3.682s)
INFO    - 2637/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.dumb_timeslicing PASSED (armfvp 69.554s)
INFO    - 2638/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/workq/work/kernel.workqueue.api       PASSED (armfvp 22.941s)
INFO    - 2639/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.multiq PASSED (armfvp 67.943s)
INFO    - 2640/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mem_heap/mheap_api_concept/kernel.memory_heap PASSED (armfvp 3.543s)
INFO    - 2641/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler   PASSED (armfvp 61.530s)
INFO    - 2642/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sleep/kernel.common.timing            PASSED (armfvp 4.113s)
INFO    - 2643/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sleep/kernel.common.timing.minimallibc PASSED (armfvp 3.851s)
INFO    - 2644/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/sched/schedule_api/kernel.scheduler.slice_perthread PASSED (armfvp 76.913s)
INFO    - 2645/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/tickless/tickless_concept/kernel.tickless.concept PASSED (armfvp 4.560s)
INFO    - 2646/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/msgq/msgq_usage/kernel.message_queue.usage PASSED (armfvp 4.055s)
INFO    - 2647/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fatal/exception/kernel.common.stack_protection_no_userspace SKIPPED (runtime filter)
INFO    - 2648/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fatal/exception/kernel.common.stack_protection SKIPPED (runtime filter)
INFO    - 2649/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/msgq/msgq_api/kernel.message_queue    PASSED (armfvp 13.600s)
INFO    - 2650/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fatal/message_capture/kernel.logging.message_capture PASSED (armfvp 3.431s)
INFO    - 2651/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/threads/thread_apis/kernel.threads.apis PASSED (armfvp 4.840s)
INFO    - 2652/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/early_sleep/kernel.common.sleep       PASSED (armfvp 3.539s)
INFO    - 2653/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/threads/thread_init/kernel.threads.init PASSED (armfvp 11.746s)
INFO    - 2654/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/early_sleep/kernel.common.sleep.minimallibc PASSED (armfvp 3.939s)
INFO    - 2655/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/condvar/condvar_api/kernel.condvar    PASSED (armfvp 4.542s)
INFO    - 2656/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fifo/fifo_timeout/kernel.fifo.timeout PASSED (armfvp 4.812s)
INFO    - 2657/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fifo/fifo_usage/kernel.fifo.usage     PASSED (armfvp 3.708s)
INFO    - 2658/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fifo/fifo_api/kernel.fifo             PASSED (armfvp 5.065s)
INFO    - 2659/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timer_monotonic/kernel.timer.monotonic PASSED (armfvp 3.828s)
INFO    - 2660/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timer_behavior/kernel.timer.timer_behavior_external SKIPPED (runtime filter)
INFO    - 2661/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/cycle64/kernel.timer.cycle64    PASSED (build)
INFO    - 2662/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timepoints/kernel.timer.timepoints PASSED (armfvp 3.323s)
INFO    - 2663/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fpu_sharing/float_disable/kernel.fpu_sharing.float_disable SKIPPED (runtime filter)
INFO    - 2664/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/fpu_sharing/generic/kernel.fpu_sharing.generic.arm SKIPPED (runtime filter)
INFO    - 2665/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mutex/mutex_error_case/kernel.mutex.error SKIPPED (runtime filter)
INFO    - 2666/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timer_error_case/kernel.timer.error_case PASSED (armfvp 3.415s)
INFO    - 2667/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mutex/sys_mutex/kernel.mutex.system   SKIPPED (runtime filter)
INFO    - 2668/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timer_api/kernel.timer.tickless PASSED (armfvp 14.421s)
INFO    - 2669/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/timer/timer_api/kernel.timer          PASSED (armfvp 13.877s)
INFO    - 2670/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mutex/mutex_api/kernel.mutex          PASSED (armfvp 3.585s)
INFO    - 2671/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/mutex/sys_mutex/kernel.mutex.system.nouser PASSED (armfvp 3.410s)
INFO    - 2672/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/charger/sbs_charger/drivers.charger.sbs.emulated SKIPPED (runtime filter)
INFO    - 2673/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/entropy/api/drivers.entropy.psa_crypto SKIPPED (runtime filter)
INFO    - 2674/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/entropy/api/drivers.entropy          SKIPPED (runtime filter)
INFO    - 2675/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.esp_at.async.build SKIPPED (runtime filter)
INFO    - 2676/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/gnss/gnss_nmea0183/drivers.gnss.gnss_nmea0183 PASSED (armfvp 4.838s)
INFO    - 2677/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/gnss/gnss_parse/drivers.gnss.gnss_parse PASSED (armfvp 3.240s)
INFO    - 2678/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/console/drivers.console.uart         PASSED (armfvp 3.131s)
INFO    - 2679/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.gsm_mux.build PASSED (build)
INFO    - 2680/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.quectel_bg9x.build PASSED (build)
INFO    - 2681/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.esp_at.build PASSED (build)
INFO    - 2682/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.gsm.build PASSED (build)
INFO    - 2683/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.simcom_sim7080.build PASSED (build)
INFO    - 2684/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/modem/drivers.modem.ublox_sara.build PASSED (build)
INFO    - 2685/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/build_all/display/drivers.display.ili9342c.build PASSED (build)
INFO    - 2686/2722 fvp_baser_aemv8r_aarch32_smp tests/drivers/hwinfo/api/drivers.hwinfo.api        PASSED (armfvp 6.017s)
INFO    - 2687/2722 fvp_baser_aemv8r_aarch32_smp tests/net/buf/net.buf                              PASSED (armfvp 5.684s)
INFO    - 2688/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/smp_version/mgmt.mcumgr.smp.version PASSED (armfvp 3.422s)
INFO    - 2689/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/smp_version/mgmt.mcumgr.smp.version_no_legacy PASSED (armfvp 3.473s)
INFO    - 2690/2722 fvp_baser_aemv8r_aarch32_smp tests/net/lib/mqtt_sn_packet/net.mqtt_sn.packet    PASSED (armfvp 4.719s)
INFO    - 2691/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/os_mgmt_echo/mgmt.mcumgr.os.echo PASSED (armfvp 4.507s)
INFO    - 2692/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/fs/fat_fs_api/filesystem.fat.api.mmc  SKIPPED (runtime filter)
INFO    - 2693/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/os_mgmt_info/mgmt.mcumgr.os.info.limited_size PASSED (armfvp 4.119s)
INFO    - 2694/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/os_mgmt_info/mgmt.mcumgr.os.info.build_date PASSED (armfvp 4.604s)
INFO    - 2695/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/os_mgmt_info/mgmt.mcumgr.os.info.no_hooks PASSED (armfvp 3.493s)
INFO    - 2696/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/mgmt/mcumgr/os_mgmt_info/mgmt.mcumgr.os.info PASSED (armfvp 3.730s)
INFO    - 2697/2722 fvp_baser_aemv8r_aarch32_smp tests/benchmarks/latency_measure/benchmark.kernel.latency.stm32 SKIPPED (runtime filter)
INFO    - 2698/2722 fvp_baser_aemv8r_aarch32_smp tests/ztest/error_hook/testing.ztest.error_hook    SKIPPED (runtime filter)
INFO    - 2699/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/llext/llext.simple.arm                PASSED (armfvp 4.243s)
INFO    - 2700/2722 fvp_baser_aemv8r_aarch32_smp tests/benchmarks/sys_kernel/benchmark.kernel.core  PASSED (armfvp 4.165s)
INFO    - 2701/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/common/ramfunc/arch.common.ramfunc      SKIPPED (runtime filter)
INFO    - 2702/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm64/arm64_psci/arch.arm64.psci        SKIPPED (runtime filter)
INFO    - 2703/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_thread_swap/arch.arm.swap.common.fpu_sharing SKIPPED (runtime filter)
INFO    - 2704/2722 fvp_baser_aemv8r_aarch32_smp tests/subsys/logging/log_syst/logging.mipi_syst.text PASSED (armfvp 4.568s)
INFO    - 2705/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_thread_swap/arch.arm.swap.common SKIPPED (runtime filter)
INFO    - 2706/2722 fvp_baser_aemv8r_aarch32_smp tests/ztest/summary/testing.ztest.summary.shared_unit_test PASSED (armfvp 3.109s)
INFO    - 2707/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_mem_protect/arch.arm.mem_protect.syscalls SKIPPED (runtime filter)
INFO    - 2708/2722 fvp_baser_aemv8r_aarch32_smp tests/ztest/error_hook/testing.ztest.error_hook.no_userspace PASSED (armfvp 3.295s)
INFO    - 2709/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_runtime_nmi/arch.interrupt.arm.nmi SKIPPED (runtime filter)
INFO    - 2710/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_irq_advanced_features/arch.arm.irq_advanced_features.secure_fw SKIPPED (runtime filter)
INFO    - 2711/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_irq_advanced_features/arch.arm.irq_advanced_features SKIPPED (runtime filter)
INFO    - 2712/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_interrupt/arch.interrupt.extra_exception_info SKIPPED (runtime filter)
INFO    - 2713/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_interrupt/arch.interrupt.no_optimizations SKIPPED (runtime filter)
INFO    - 2714/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_interrupt/arch.interrupt.arm    SKIPPED (runtime filter)
INFO    - 2715/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_hardfault_validation/arch.interrupt.arm.hardfault_validation SKIPPED (runtime filter)
INFO    - 2716/2722 fvp_baser_aemv8r_aarch32_smp tests/arch/arm/arm_irq_vector_table/arch.arm.irq_vector_table SKIPPED (runtime filter)
INFO    - 2717/2722 fvp_baser_aemv8r_aarch32_smp tests/kconfig/configdefault/kconfig.configdefault  PASSED (armfvp 3.615s)
INFO    - 2718/2722 fvp_baser_aemv8r_aarch32_smp tests/misc/iterable_sections/linker.iterable_sections PASSED (armfvp 4.199s)
INFO    - 2719/2722 fvp_baser_aemv8r_aarch32_smp tests/posix/common/portability.posix.common.signal.big_nsig PASSED (armfvp 6.701s)
INFO    - 2720/2722 fvp_baser_aemv8r_aarch32_smp tests/posix/common/portability.posix.common.signal.strsignal_no_desc PASSED (armfvp 6.755s)
INFO    - 2721/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/smp/kernel.multiprocessing.smp        PASSED (armfvp 1141.964s)
INFO    - 2722/2722 fvp_baser_aemv8r_aarch32_smp tests/kernel/smp/kernel.multiprocessing.smp.minimallibc PASSED (armfvp 1162.743s)

INFO    - 2529 test scenarios (2722 test instances) selected, 2613 configurations skipped (2572 by static filter, 41 at runtime).
INFO    - 109 of 2722 test configurations passed (100.00%), 0 failed, 0 errored, 2613 skipped with 0 warnings in 1286.66 seconds
INFO    - In total 1047 test cases were executed, 12558 skipped on 124 out of total 631 platforms (19.65%)
INFO    - 99 test configurations executed on platforms, 10 test configurations were only built.
INFO    - Saving reports...
INFO    - Writing JSON report /home/huizha01/workspace/arm/zephyr-base/zephyr/twister-out/twister.json
INFO    - Writing xunit report /home/huizha01/workspace/arm/zephyr-base/zephyr/twister-out/twister.xml...
INFO    - Writing xunit report /home/huizha01/workspace/arm/zephyr-base/zephyr/twister-out/twister_report.xml...
INFO    - Run completed

Copy link
Member

@povergoing povergoing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, there are still a lot of things that need to be refined but definitely belong to another PR.

Copy link
Member

@microbuilder microbuilder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a fairly important change. Can you add a note to the 3.6 release notes for it? There's a boilerplate release notes file for 3.6 in tree already. Thanks!

Copy link
Contributor

@andyross andyross left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't see if I ever dropped a +1 on this or not, but doing so now. All my concerns seem addressed.

@microbuilder
Copy link
Member

This is a fairly important change. Can you add a note to the 3.6 release notes for it? There's a boilerplate release notes file for 3.6 in tree already. Thanks!

@SgrrZhf Why don't we do a new documentation PR with the release notes update there instead, and maybe see if anything in doc/ should be updated. No point losing the +1s for something we can address and review separately. I'll add my own +1 here now.

@MaureenHelm MaureenHelm added the Release Notes To be mentioned in the release notes label Nov 6, 2023
@MaureenHelm MaureenHelm merged commit 0be647c into zephyrproject-rtos:main Nov 6, 2023
33 of 34 checks passed
@SgrrZhf SgrrZhf deleted the topics/huizha01/cortex-ar/introduce-smp branch November 7, 2023 02:58
@SgrrZhf
Copy link
Member Author

SgrrZhf commented Nov 7, 2023

@SgrrZhf Why don't we do a new documentation PR with the release notes update there instead, and maybe see if anything in doc/ should be updated. No point losing the +1s for something we can address and review separately. I'll add my own +1 here now.

Ok, I‘ll update the release notes in another PR later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Architectures area: ARM ARM (32-bit) Architecture area: Build System area: Toolchains Toolchains area: Zbus Release Notes To be mentioned in the release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants