Commit Graph

66 Commits

Author SHA1 Message Date
Ville Juven
09e7987121 sched/addrenv: Fix system crash when process group has been deleted
There is currently a big problem in the address environment handling which
is that the address environment is released too soon when the process is
exiting. The current MMU mappings will always be the exiting process's, which means
the system needs them AT LEAST until the next context switch happens. If
the next thread is a kernel thread, the address environment is needed for
longer.

Kernel threads "lend" the address environment of the previous user process.
This is beneficial in two ways:
- The kernel processes do not need an allocated address environment
- When a context switch happens from user -> kernel or kernel -> kernel,
  the TLB does not need to be flushed. This must be done only when
  changing to a different user address environment.

Another issue is when a new process is created; the address environment
of the new process must be temporarily instantiated by up_addrenv_select().
However, the system scheduler does not know that the process has a different
address environment to its own and when / if a context restore happens, the
wrong MMU page directory is restored and the process will either crash or
do something horribly wrong.

The following changes are needed to fix the issues:
- Add mm_curr which is the current address environment of the process
- Add a reference counter to safeguard the address environment
- Whenever an address environment is mapped to MMU, its reference counter
  is incremented
- Whenever and address environment is unmapped from MMU, its reference
  counter is decremented, and tested. If no more references -> drop the
  address environment and release the memory as well
- To limit the context switch delay, the address environment is freed in
  a separate low priority clean-up thread (LPWORK)
- When a process temporarily instantiates another process's address
  environment, the scheduler will now know of this and will restore the
  correct mappings to MMU

Why is this not causing more noticeable issues ? The problem only happens
under the aforementioned special conditions, and if a context switch or
IRQ occurs during this time.
2023-02-08 02:51:23 +08:00
Masayuki Ishikawa
50989430cd boards: sabre-6quad: Enable DEBUG_ASSERTION in citest
Summary:
- Since QEMU does not report L2CC information correctly,
  NuttX stops if DEBUG_ASSERTIONS=y.
- This commit adds DEBUG_ASSERTIONS=y to citest/defconfigs
  and disables L2CC related configs.
- Also, it disables RAMLOG to show the crash information

Impact:
- None

Testing:
- Tested with QEMU-7.1

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2023-02-06 18:26:05 +08:00
Masayuki Ishikawa
7af531f677 boards: sabre-6quad: Add netnsh_wb
Summary:
- This commits adds netnsh_wb which enables write buffers.

Impact:
- None

Testing:
- Tested with iperf (-s 205Mbps, -c 176Mbps) on QEMU-7.1

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2023-01-30 13:25:15 +08:00
Masayuki Ishikawa
138f3faeef boards: sabre-6quad: Adjust TCP and UDP configurations
Summary:
- This commit adjusts TCP and UDP configurations based on
  sabre-6quad/configs/netnsh/defconfig

Impact:
- sabre-6quad only

Testing:
- Tested with QEMU-7.1

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2023-01-19 08:09:33 +01:00
Masayuki Ishikawa
548c417858 boards: sabre-6quad: Improve iperf performance
Summary:
- This commit improves iperf performance
- Also, adjusts CONFIG_IDLETHREAD_STACKSIZE

Impact:
- None

Testing:
- Tested with QEMU-7.1

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-12-16 09:49:11 -03:00
chao an
6d8c28a83c boards/citest: disable NET_ARP for usrsocktest
Signed-off-by: chao an <anchao@xiaomi.com>
2022-11-24 20:54:18 +08:00
chao an
422272044b boards/iperf: device name will vary across different NICs
Signed-off-by: chao an <anchao@xiaomi.com>
2022-11-20 19:44:32 +08:00
Xiang Xiao
4e43fef5cd boards: Update telnetd related config after apps/nshlib change
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-11-07 15:24:29 +09:00
Xiang Xiao
28947517ca sched/spawn: Rename task_spawnattr_[get|set]stack[size|addr] to posix_spawnattr_[get|set]stack[size|addr]
since they can be not only used in task_spawn but also in posix_spawn

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-11-01 09:51:18 +09:00
nietingting
f361d1cd41 CI: add example to sim
Signed-off-by: nietingting <nietingting@xiaomi.com>
2022-10-26 10:55:50 +08:00
nietingting
8438396f33 ci: add qemu run support
Signed-off-by: nietingting <nietingting@xiaomi.com>
2022-10-21 14:57:43 +08:00
Xiang Xiao
edd68d8ae9 board: Change CONFIG_SYSTEM_NSH_SYMTAB to CONFIG_NSH_SYMTAB
follow the apps side change

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-10-18 22:18:51 +02:00
Masayuki Ishikawa
07b9ebc555 boards: sabre-6quad: Add the skeleton network driver
Summary:
- This commit adds the skeleton network driver to netnsh/defconfig
- Also, enable IPv6 to check compilation

Impact:
- None

Testing:
- Build with sabre-6quad:netnsh

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-10-07 14:34:03 +08:00
Xiang Xiao
0fa17f32f2 drivers/telnet: Remove io work thread
The thread isn't really needed but complicate the workflow

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-09-30 12:54:29 +09:00
Masayuki Ishikawa
b3795daa53 boards: sabre-6quad: Add netknsh_smp/defconfig
Summary:
- This commit adds netknsh_smp/defconfig

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-08-13 10:46:36 +08:00
Masayuki Ishikawa
b317e9058f boards: sabre-6quad: Add CONFIG_NET_GUARDSIZE=4 to defconfigs
Summary:
- This commit adds CONFIG_NET_GUARDSIZE=4 to defconfigs

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-08-12 10:30:48 -04:00
Masayuki Ishikawa
51ffd310a8 boards: sabre-6quad: Add telnetd to netknsh/defconfig
Summary:
- This commit adds telnetd to netknsh/defconfig

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-08-10 09:42:56 +03:00
Masayuki Ishikawa
714e6fda9c boards: sabre-6quad: Add iperf to netknsh/defconfig
Summary:
- This commit adds iperf to netknsh/defconfig

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-07-27 23:22:23 +08:00
Masayuki Ishikawa
6a469fe228 boards: sabre-6quad: Add adbd to netnsh/defconfig
Summary:
- This commit adds adbd to netnsh/defconfig

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-07-26 16:04:21 +08:00
Masayuki Ishikawa
79e5579837 boards: sabre-6quad: Enable to test C++ static object in ELF
Summary:
- This commit enables to test C++ static object in ELF (hello++3)

Impact:
- elf defconfig only

Testing:
- Tested with QEMU and sabre-6quad board

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-07-22 21:38:17 +08:00
Masayuki Ishikawa
2dfe88d759 boards: sabre-6quad: Add netknsh/defconfig
Summary:
- This commit adds sabre-6quad:netknsh config

Impact:
- None

Testing:
- Tested with qemu-6.2

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-07-11 09:32:52 -03:00
Oki Minabe
f0fb530eaa arch: imx6: add support kernel build and smp
Summary:
- add support BUILD_KERNEL and SMP for imx6
- prepare page tables of cpu1,2,3
- add sabre-6quad:knsh_smp config

Impact:
- imx6

Testing:
- getprime, smp on sabre-6quad:knsh_smp w/ qemu

Signed-off-by: Oki Minabe <minabe.oki@gmail.com>
2022-05-27 01:31:58 +08:00
Ville Juven
5800dd2af5 boards/xxx: Remove CONFIG_SCHED_ATEXIT/ONEXIT from all defconfigs 2022-05-25 15:28:43 +08:00
Masayuki Ishikawa
7b6ac23277 boards: sabre-6quad: Add defconfig for libcxx
Summary:
- This commit adds defconfig for libcxx

Impact:
- None

Testing:
- Tested with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-05-02 10:24:16 +03:00
Masayuki Ishikawa
2cbad5d92e boards: sabre-6quad: Enable environ and path in knsh/defconfig
Summary:
- This commit enables environ and path in knsh/defconfig

Impact:
- None

Testing:
- Tested with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-03-17 13:41:01 +08:00
Masayuki Ishikawa
023b1a5260 boards: sabre-6quad: Add CONFIG_DEBUG_FULLOPT=y to knsh/defconfig
Summary:
- I noticed that undefined instruction happens with getprime and gcc-10.3.1
- Actually, the issue does not happen with gcc-9.3.1
- This is a tentative solution to avoid the issue

Impact:
- sabre-6quad:knsh only

Testing:
- Tested with hello/getprime

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-03-12 11:49:53 +08:00
Huang Qi
bfedbf1c05 arm/imx6: Enable setjmp test in ostest
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2022-03-08 21:00:29 +08:00
Masayuki Ishikawa
955153aac4 boards: sabre-6quad: Add knsh
Summary:

- Add sabre-6quad:knsh to test BUILD_KERNEL with qemu
- Update README.txt to run the nuttx with qemu

Impact:
- None

Testing:
- Tested with QEMU
- NOTE: getprime crashes with undefined instruction when
  compiled with gcc 10.3.x (please use 9.3.1)

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-03-01 09:57:57 -03:00
Xiang Xiao
9836c6be9b boards: Remove CONFIG_CLOCK_MONOTONIC from all defconfig
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-02-23 01:21:26 +08:00
ligd
412d030149 boards: move USERMAIN_XX out of INIT_ENTRYPOINT
Signed-off-by: ligd <liguiding1@xiaomi.com>
2021-12-24 08:23:30 -06:00
Xiang Xiao
7c5c77ff7b boards/imx6: Fix symbol value '' invalid for TESTING_OSTEST_FPUSIZE
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-11-10 09:17:19 +01:00
Alin Jerpelea
9d870e1502 defconfig: allow use of BSD components
several configs are used for testing and need the BSD components

more information about license can be found here
https://www.apache.org/legal/resolved.html#category-a

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-09-02 09:00:43 -03:00
Alin Jerpelea
cf884b7460 Revert "defconfig: remove NFS from defconfig"
This reverts commit ff07cb8b2f.
2021-09-02 09:00:43 -03:00
Alin Jerpelea
ff07cb8b2f defconfig: remove NFS from defconfig
NFS uses BSD license and should not be enabled by default

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-08-30 22:39:04 +08:00
Xiang Xiao
b12f588140 Rename CONFIG_LIB_BOARDCTL to CONFIG_BOARDCTL
since boardctl isn't a libc feature

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-08-06 13:58:26 +02:00
Xiang Xiao
5025fbef8d Rename LIB_ to LIBC_ for all libc Kconfig
follow other libc component naming convention

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-08-05 19:45:24 +02:00
Jiuzhu Dong
85470176e7 sched/task: delete CONFIG_MAX_TASKS limit
Change-Id: I583015a95dbcebd352f81ecb3104ffdbd646a9ec
Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
2021-07-11 19:42:30 -07:00
Masayuki Ishikawa
d8ca691e2a boards: sabre-6quad: Add ELF support to netnsh and netnsh_smp
Summary:
- This commit adds ELF support to netnsh and netnsh_smp

Impact:
- None

Testing:
- Tested with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-05-16 22:30:55 -05:00
Masayuki Ishikawa
a036546feb boards: sabre-6quad: Add posix_spawn/defconfig
Summary:
- This commit adds sabre-6quad/configs/posix_spawn/defconfig

Impact:
- None

Testing:
- Tested with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-05-16 22:30:55 -05:00
Masayuki Ishikawa
bd0e586c23 boards: sabre-6quad: Add elf/defconfig
Summary:
- This commit adds sabre-6quad/configs/elf/defconfig

Impact:
- None

Testing:
-Tested with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-05-16 22:30:55 -05:00
Masayuki Ishikawa
129229f430 boards: sabre-6quad: Update netnsh/netnsh_smp defconfigs
Summary:
- Add the following configs
  +CONFIG_CODECS_HASH_MD5=y
  +CONFIG_NETUTILS_CODECS=y
  +CONFIG_NFS=y

Impact:
- None

Testing:
- Tested with NFS server on Ubuntu 18.04 (x86_64)

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-05-13 22:33:12 -03:00
Abdelatif Guettouche
f43f066018 boards: Update the iperf configs.
Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
2021-04-21 13:44:18 -05:00
Masayuki Ishikawa
1a9e7efde5 smp: Remove CONFIG_SMP_IDLETHREAD_STACKSIZE
Summary:
- The CONFIG_SMP_IDLETHREAD_STACKSIZE was introduced to optimize
  the idle stack size for other than CPU0
- However, there are no big differences between the idle stacks.
- This commit removes the config to simplify the kernel code

Impact:
- All SMP configurations

Testing:
- Tested with ostest with the following configs
- spresense:smp, spresense:rndis_smp
- esp32-devkitc:smp (QEMU), maix-bit:smp (QEMU)
- sabre-6quad:smp (QEMU), sabre-6quad:netnsh_smp (QEMU)
- raspberrypi-pico:smp, sim:smp (x86_64)

Signed-off-by: Masayuki Ishikawa <asayuki.Ishikawa@jp.sony.com>
2021-04-19 21:46:39 -05:00
Masayuki Ishikawa
9cce09e58a boards: Remove SCHED_INSTRUMENTATION from all SMP related configs
Summary:
- This commit removes SCHED_INSTRUMENTATION which has been used
  to debug NuttX SMP kernel

Impact:
- None

Testing:
- Tested with ostest

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-03-22 19:47:56 -07:00
Jiuzhu Dong
59eb4fa8d6 fs: delete NFILE_DESCRIPTORS for allocating dynamically
Change-Id: Id06d215063796d222b9792d25ab2d6742167729f
Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
2021-03-17 06:46:42 -07:00
Masayuki Ishikawa
5de82de889 boards: sabre-6quad: Add netnsh_smp configuration
Summary:
- This commit adds sabre-6quad:netnsh_smp configuration

Impact:
- None

Testing:
- Tested with telnetd, iperf (both -c and -s) with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-03-08 04:14:03 -08:00
Masayuki Ishikawa
6ba23aabda Revert "boards: sabre-6quad: The iperf works with CONFIG_NET_TCP_WRITE_BUFFERS"
Summary:
- Let me revert the commit because I noticed that performance
  with iperf -s is much worth than before.

Impact:
- sabre-6quad:netnsh oly

Testing:
- Tested with iperf (both -c and -s) with QEMU

This reverts commit 07e7ccb80c.

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-03-07 22:48:17 -08:00
Masayuki Ishikawa
ad2e85433a boards, include, sched: Remove CONFIG_SPINLOCK_IRQ
Summary:
- This commit removes CONFIG_SPINLOCK_IRQ to avoid complexity

Impact:
- None

Testing:
- Tested with the following configs
- spresense:wifi, spresense:smp
- esp32-devkitc:smp (QEMU), sabre-6quad:smp (QEMU)
- maix-bit:smp (QEMU), sim:smp
- stm32f4discovery:wifi
2021-02-05 22:50:04 -08:00
Masayuki Ishikawa
07e7ccb80c boards: sabre-6quad: The iperf works with CONFIG_NET_TCP_WRITE_BUFFERS
Summary:
- This commit makes the iperf work with CONFIG_NET_TCP_WRITE_BUFFERS
- Since the iperf sends a large packet (e.g. 16KB), CONFIG_IOB_NBUFFERS
  must be increased enough to hold the packet
- To improve performance CONFIG_IMX_ENET_NTXBUFFERS was changed to
  the default (i.e. 2)

Impact:
- sabre-6quad:netnsh only

Testing:
- Tested with iperf with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-01-29 00:05:01 -08:00
Masayuki Ishikawa
0356a6db31 boards: sabre-6quad: Update netnsh/defconfig
Summary:
- This commit updates the followings
- Remove CONFIG_DEBUG_XXX except for CONFIG_DEBUG_FULLOPT and CONFIG_DEBUG_SYMBOLS
- Add CONFIG_EXAMPLES_IPERF=y and CONFIG_EXAMPLES_TCPBLASTER=y
- Set CONFIG_IMX_ENET_NTXBUFFERS=1 and CONFIG_NET_ETH_PKTSIZE=1514
- Add CONFIG_SCHED_LPWORK=y and CONFIG_SYSLOG_TIMESTAMP=y
- Add CONFIG_SYSTEM_DHCPC_RENEW=y and CONFIG_SYSTEM_DHCPC_RENEW=y

Impact:
- sabre-6quad:netnsh only

Testing:
- Tested with sabre-6quad:netnsh with QEMU

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-01-28 18:41:34 -08:00