Commit Graph

142 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
25a6448a1a boards: sabre-6quad: Update README.txt
Summary:
- This commit updates README.txt regarding QEMU with DEBUG_ASSERTIONS=y

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
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
Fotis Panagiotopoulos
bbf3f2866d Fixed non-UTF8 characters. 2022-09-28 09:38:55 +08:00
chao an
a2cd1b0db3 arm/armlink: add support of link time optimization(lto)
Optimization goal(Code size)

Smaller                           GCC(-Os) GCC(-flto -Os) CLANG(-flto -Oz) ARMCLANG(-flto -Oz/-Omin)
lm3s6965-ek/qemu-flat(Cortex-M3)   208662      193893           199525             195464
                                               -7.07%           -4.37%             -6.32%
sabre-6quad/smp(Cortex-A9)         131360      122500            N/A               123988
                                               -6.74%            N/A               -5.61%

Faster performance                GCC(-O3) GCC(-flto -O3) CLANG(-flto -Ofast) ARMCLANG(-flto -Ofast) ARMCLANG(-flto -Omax)
lm3s6965-ek/qemu-flat(Cortex-M3)   257502      296364           369465             346696                  384204
                                              +15.00%          +43.40%            +34.60%                 +49.20%
sabre-6quad/smp(Cortex-A9)         166520      196004             N/A              207908                  224140
                                              +17.70%             N/A             +24.85%                 +34.60%

Reference:
https://developer.arm.com/documentation/101754/0618/armclang-Reference/armclang-Command-line-Options/-O--armclang-

Signed-off-by: chao an <anchao@xiaomi.com>
2022-09-26 18:23:27 +08:00
chao an
0c4ca8dd21 boards/arm/ac6: add scatter linker script for sabre-6quad/lm3s6965-ek
add armclang compiler(AC6) support for board sabre-6quad/lm3s6965-ek

Verified config:
1. lm3s6965-ek:qemu-flat (Disable file apps)
./tools/configure.sh lm3s6965-ek:qemu-flat

-CONFIG_BOARDCTL_APP_SYMTAB=y
-CONFIG_ELF=y
-CONFIG_EXAMPLES_ELF=y
-CONFIG_EXAMPLES_ELF_DEVPATH="/dev/ram5"
-CONFIG_EXAMPLES_HELLO=y
-CONFIG_EXAMPLES_MODULE=y
-CONFIG_EXAMPLES_MODULE_DEVPATH="/dev/ram6"
-CONFIG_EXAMPLES_NETTEST=m
-CONFIG_EXAMPLES_WGET=y
-CONFIG_HOST_MACOS=y
-CONFIG_LIBC_DLFCN=y
-CONFIG_NSH_FILE_APPS=y

2. sabre-6quad/smp

Signed-off-by: chao an <anchao@xiaomi.com>
2022-09-18 00:08:42 +08:00
chao an
0f0a94186f arch/arm/toolchain: migrate the toolchain define to arch/arm/Kconfig
migrate the toolchain define to arch/arm/Kconfig to simplify new toolchain registration

Signed-off-by: chao an <anchao@xiaomi.com>
2022-09-16 14:47:27 +08: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
ad322ef67d boards: arm: Update README.txt regarding CONFIG_BUILD_KERNEL=y
Summary:
- This commit updates README.txt regarding

Impact:
- CONFIG_BUILD_KERNEL=y

Testing:
- build only

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-07-27 23:22:23 +08: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
Xiang Xiao
1f920e55d3 Move warning option from Make.defs to Toolchain.defs
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-15 15:40:35 +03: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
c5af689180 boards: sabre-6quad: Fix dramboot.ld for libcxx
Summary:
- I noticed that cxxtest does not work correctly.
- Finally, I found that initializers for c++ is not called.
- This commit fixes this issue

Impact:
- None

Testing:
- Tested with cxxtest (defconfig will be added later)

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-05-02 10:24:16 +03:00
Xiang Xiao
aeb9c5d822 boards: Move -fno-strict-aliasing from Make.defs to Toolchain.defs
and migrate MAXOPTIMIZATION into ARCHOPTIMIZATION

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-01 11:36:41 +03:00
Xiang Xiao
8f8ee25a9c boards: Move -g from Make.defs to Toolchain.defs
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-25 16:23:03 +03:00
Xiang Xiao
75326e563d boards: Move -fno-common from Make.defs to Toolchain.defs
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-25 07:57:29 +03:00
Xiang Xiao
547c85b0ae boards: Switch the elf link script to binfmt/libelf/gnu-elf.ld
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-24 17:02:37 +02:00
chao.an
64d7326ed5 compile/opt: add config DEBUG_OPT_UNUSED_SECTIONS
Enable this option to optimization the unused input sections with the
linker by compiling with " -ffunction-sections -fdata-sections ", and
linking with " --gc-sections ".

Signed-off-by: chao.an <anchao@xiaomi.com>
2022-04-22 01:37:23 +08:00
chao.an
2246afcdd8 arch/armv7-m: Unify the toolchain definition of eabi/clang/iar for linux and windows
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-04-19 23:17:27 +08:00
Gustavo Henrique Nihei
e1f28c19c2 arch/arm: Make CXX exception and RTTI depend on Kconfig options
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-03-30 11:19:29 +08:00
Huang Qi
edef327655 arch/arm: Move ARCHCPUFLAGS to Toolchain.defs
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2022-03-19 02:24:00 +08: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
Xiang Xiao
54e630e14d arch: Merge up_arch.h into up_internal.h
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-03-14 09:32:17 +02: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
Xiang Xiao
ee931c137f boards: Remove -fno-builtin
it's more efficent to generate the machine code directly if possible

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-03-10 19:46:01 +02: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
Masayuki Ishikawa
de95a8550f arch, board: Add thumb support to i.MX6
Summary:
- This commit adds thumb support to i.MX6
- Also, applies the same coding style to arch_elf.c

Impact:
- i.MX6 only

Testing:
- Tested with sabre-6quad:smp (QEMU, Dev board)
- Tested with sabre-6quad:netnsh (QEMU)
- Tested with sabre-6quad:netknsh (QEMU, not merged yet)

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2022-02-25 10:51:12 +08: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
Xiang Xiao
163fe4ff0b boards: Replace CONFIG_CYGWIN_WINTOOL with CONVERT_PATH
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-02-20 21:15:36 +01:00
Xiang Xiao
1d1bdd85a3 Remove the double blank line from source files
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-02-20 20:10:14 +01:00