nuttx/arch/arm/src/cxd56xx
Masayuki Ishikawa 409c65ce0b arch, sched: Fix global IRQ control logics for SMP
Summary:
- This commit fixes global IRQ control logic
- In previous implementation, g_cpu_irqset for a remote CPU was
  set in sched_add_readytorun(), sched_remove_readytorun() and
  up_schedule_sigaction()
- In this implementation, they are removed.
- Instead, in the pause handler, call enter_critical_setion()
  which will call up_cpu_paused() then acquire g_cpu_irqlock
- So if a new task with irqcount > 1 restarts on the remote CPU,
  the CPU will only hold a critical section. Thus, the issue such as
  'POSSIBLE FOR TWO CPUs TO HOLD A CRITICAL SECTION' could be resolved.
- Fix nxsched_resume_scheduler() so that it does not call spin_clrbit()
  if a CPU does not hold a g_cpu_irqset
- Fix nxtask_exit() so that it acquires g_cpu_irqlock
- Update TODO

Impact:
- All SMP implementations

Testing:
- Tested with smp, ostest with the following configurations
- Tested with spresense:wifi_smp (NCPUS=2,4)
- Tested with sabre-6quad:smp (QEMU, dev board)
- Tested with maix-bit:smp (QEMU)
- Tested with esp32-core:smp (QEMU)
- Tested with lc823450-xgevk:rndis

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-12-10 08:33:42 +01:00
..
hardware cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
chip.h arch: arm: Fix interrupt stack handlings for SMP 2020-10-21 11:49:45 +08:00
cxd56_adc.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_adc.h arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_allocateheap.c arm: Use a consistent type (uintptr_t) for g_idle_topstack 2020-11-16 05:46:53 -08:00
cxd56_backuplog.c arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_charger.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_charger.h arch/arm/src/cxd56xx: Cleaning up header files to match project layout. 2019-07-04 06:45:48 -06:00
cxd56_cisif.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_clock.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_clock.h arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_config.h arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_cpu1signal.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_cpu1signal.h cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_cpufifo.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_cpufifo.h Merged in alinjerpelea/nuttx (pull request #881) 2019-06-05 11:29:51 +00:00
cxd56_cpuidlestack.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_cpuindex.c arch: cxd56xx: Introduce cxd56_cpuindex.h 2020-10-06 12:42:01 +02:00
cxd56_cpuindex.h arch: cxd56xx: Introduce cxd56_cpuindex.h 2020-10-06 12:42:01 +02:00
cxd56_cpupause.c arch, sched: Fix global IRQ control logics for SMP 2020-12-10 08:33:42 +01:00
cxd56_cpustart.c arm: cxd56xx: Fix nvic settings for SMP 2020-09-09 08:31:30 +02:00
cxd56_delay.c arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_dmac_common.h arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_dmac.c arch: cxd56xx: Fix IRQ control in cxd56_dmac.c 2020-08-21 10:38:47 +02:00
cxd56_dmac.h arch: arm: cxd56xx: nxstyle updates 2020-04-03 11:49:35 +01:00
cxd56_emmc.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_emmc.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_farapi.c arch: cxd56xx: Add SMP support to cxd56_farapi.c 2020-08-16 00:03:18 +01:00
cxd56_farapi.h arch/arm/src/cxd56xx: Cleaning up header files to match project layout. 2019-07-04 06:45:48 -06:00
cxd56_farapistub.h cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_farapistub.S cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_gauge.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_gauge.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_ge2d.c sched/: Make more naming consistent 2020-05-17 14:01:00 -03:00
cxd56_geofence.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_geofence.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_gnss_api.h cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_gnss.c Fix cases where memory is allocated using malloc() 2020-08-04 20:40:57 +01:00
cxd56_gnss.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_gpio.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_gpio.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_gpioint.c arch: cxd56xx: Use spinlock API in cxd56_gpioint.c 2020-09-11 17:27:42 +08:00
cxd56_gpioint.h arch: arm: sxd56xx: nxstyle fixes 2020-04-06 20:49:54 +08:00
cxd56_i2c.c sched/wdog: Remove MAX_WDOGPARMS and related stuff 2020-08-14 08:19:50 -06:00
cxd56_i2c.h Fix some typos 2019-09-17 10:46:23 -06:00
cxd56_icc.c sched/wdog: Remove MAX_WDOGPARMS and related stuff 2020-08-14 08:19:50 -06:00
cxd56_icc.h arch/arm/src/cxd56xx: Cleaning up header files to match project layout. 2019-07-04 06:45:48 -06:00
cxd56_idle.c arch/: Trivial typos, mostly "their is" to "there is" 2020-09-09 14:09:43 -04:00
cxd56_irq.c arch/arm/src/cxd56xx/cxd56_irq.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
cxd56_irq.h arch: arm: Fix interrupt stack handlings for SMP 2020-10-21 11:49:45 +08:00
cxd56_pinconfig.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_pinconfig.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_pmic.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_pmic.h cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_powermgr_procfs.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_powermgr_procfs.h arch/arm/src/cxd56xx: Cleaning up header files to match project layout. 2019-07-04 06:45:48 -06:00
cxd56_powermgr.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_powermgr.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_pwm.c arch/arm/src/cxd56xx/cxd56_pwm.c: Fix syslog formats 2020-11-28 23:14:05 -06:00
cxd56_pwm.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_rtc_lowerhalf.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_rtc.c arch: cxd56xx: Use spinlock API in cxd56_rtc.c 2020-08-26 11:21:50 +02:00
cxd56_rtc.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_scu.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_scufifo.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_scufifo.h Merged in alinjerpelea/nuttx (pull request #909) 2019-06-18 12:46:43 +00:00
cxd56_sdhci.c arch/arm/src/cxd56xx/cxd56_sdhci.c: Fix syslog formats 2020-11-27 05:18:57 -06:00
cxd56_sdhci.h cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_serial.c arch/arm/src/cxd56xx/cxd56_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
cxd56_serial.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_sfc.c arch/arm/src/cxd56xx/cxd56_sfc.c: Fix a syslog format 2020-11-27 05:18:57 -06:00
cxd56_sfc.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_sph.c arch: cxd56xx: Introduce cxd56_testset.c 2020-09-10 08:52:22 +02:00
cxd56_sph.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_spi.c arch/arm/src/cxd56xx/cxd56_spi.c: Fix syslog formats 2020-11-27 05:18:57 -06:00
cxd56_spi.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_start.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_sysctl.c arch/arm/src/cxd56xx/cxd56_sysctl.c: Fix a syslog format 2020-11-27 05:18:57 -06:00
cxd56_sysctl.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_testset.c arch: cxd56xx: Introduce cxd56_testset.c 2020-09-10 08:52:22 +02:00
cxd56_timer.c arch/arm/src/cxd56xx/cxd56_timer.c: Fix syslog formats 2020-11-27 05:18:57 -06:00
cxd56_timer.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_timerisr.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_timerisr.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_uart0.c cxd56xx: spresense: Add some improvements and fix bugs for Spresense board 2020-07-28 09:13:05 +02:00
cxd56_uart.c arch: cxd56xx: Use spinlock API in cxd56_uart.c 2020-09-01 11:55:14 +02:00
cxd56_uart.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_udmac.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_udmac.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_uid.c arch/arm: Rename all up_*.h files to arm_*.h 2020-05-01 03:43:44 +01:00
cxd56_uid.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
cxd56_usbdev.c arch/arm/src/cxd56xx/cxd56_usbdev.c: Fix syslog formats 2020-11-27 05:18:57 -06:00
cxd56_usbdev.h cxd56xx improvements (#48) 2020-01-07 11:21:58 -03:00
cxd56_wdt.c arch/arm/src/cxd56xx/cxd56_wdt.c: Fix syslog formats 2020-11-27 05:18:57 -06:00
cxd56_wdt.h arch: arm: cxd56xx: nxstyle fixes 2020-04-07 07:27:41 -06:00
Kconfig arch: cxd56xx: Introduce cxd56_testset.c 2020-09-10 08:52:22 +02:00
Make.defs arch: cxd56xx: Introduce cxd56_testset.c 2020-09-10 08:52:22 +02:00