Commit Graph

50392 Commits

Author SHA1 Message Date
Emil Gydesen
a3b6bc212f Bluetooth: services: Refacter OTS dir list to avoid circular dependency
Refactors the OTS directory listing object implementation to avoid
circular dependency.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
0cc408a9ac Bluetooth: Services: Ensure correct ID before getting object index
Moved the call to obj_id_to_index such that we can check for valid
ID before getting the index.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
806344c8e0 Bluetooth: Services: Adds bt_gatt_ots_obj_manager_obj_contains
Adds a ots_obj_manager function that returns true if the object is
in the object manager, or false otherwise.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
e90ec2df44 Bluetooth: services: Adds directory listing object to OTS
The directory listing object is an internal object which
content is the aggregation of all the metadata of all objects
(including the directory listing object itself). The client
can read this value to get a list of all objects with names,
lengths, and other metadata.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Guðni Már Gilbert
cd74a05011 dts: arm: st: l4: Add maximum-speed parameter to some STM32L4xx
Add optional maximum-speed parameter to USB nodes. This affects all
defined stm32l4xx, except stm32l4rx and stm32l4sx

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2021-03-17 11:29:53 +01:00
Guðni Már Gilbert
a7352378e7 dts: arm: st: l0: Add optional maximum-speed parameter for stm32l072
Add a maximum-speed parameter for stm32l072

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2021-03-17 11:29:53 +01:00
Guðni Már Gilbert
8d09a49428 dts: arm: st: l0: Add USB FS node for stm32l053
This is the same code used to define a node for stm32l072. The two MCUs
should be the same.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2021-03-17 11:29:53 +01:00
Guðni Már Gilbert
f57fafe0bd dts: arm: st: f4: Remove redundant ram-size for stm32f469
This parameter is defined for stm32f405 which and is included into
stm32f469. The include order is as follows:

st/f4/stm32f4.dtsi
st/f4/stm32f401.dtsi
st/f4/stm32f405.dtsi <-- ram_size defined here
st/f4/stm32f407.dtsi
st/f4/stm32f427.dtsi
st/f4/stm32f429.dtsi
st/f4/stm32f469.dtsi

Refer to Application Note AN4879 from ST to view ram size for each MCU.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2021-03-17 11:29:53 +01:00
Luiz Augusto von Dentz
06e18c6df5 Bluetooth: L2CAP: Fix not including all DCIDs
The order of Destination CIDs shall correspond the order of Source CIDs
including its amount so errors that don't result in all connection being
refused shall not break the order of CIDs.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
168389cccd Bluetooth: L2CAP: Fix invalid BT_L2CAP_ECRED_CONN_RSP
For errors that means all connections have been refused there is no need
to add dcids since none will be valid.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
39a3dee29d Bluetooth: L2CAP: Fix not checking for L2CAP_ECRED_CHAN_MAX
When receiving L2CAP_CREDIT_BASED_CONNECTION_REQ the remote may request
more channels than allowed so this checks if amount of channel surpasses
the maximum channels (5) and return an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Ying ming
c0b240fdf3 test: mheap: add testcase
This is an intergration testcase for mem_heap.
Add an testcase to verify that multiple threads
can share the same heap space without interfering
with each other.

Signed-off-by: Ying ming <mingx.ying@intel.com>
2021-03-17 11:28:56 +01:00
Trond Einar Snekvik
318d0928c1 Bluetooth: Mesh: Add Proxy callback structure
Adds a Proxy callback structure with a callback for Node ID enable and
disable. This API follows the Friend and LPN API pattern in mesh/main.h,
and can be expanded with more callbacks later.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2021-03-17 11:28:46 +01:00
Vinayak Kariappa Chettimada
7f62c7d531 Bluetooth: controller: Fix assertion on Ext. Advertising disable
Fix an assertion when disabling Extended Advertising with
auxiliary PDUs. Stop the auxiliary PDU scheduling after the
primary PDU scheduling is stopped first. This will avoid the
assertion caused due to a search for a stopped auxiliary PDU
offset by the primary PDU scheduling that is being stopped.

Fixes #32866.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-17 11:28:36 +01:00
Kumar Gala
48d01cfcb3 drivers: pcie: endpoint: Convert dma to use DEVICE_DT_GET
Replace device_get_binding with DEVICE_DT_GET for getting access
to the dma controller device.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2021-03-17 11:28:31 +01:00
Anas Nashif
a983a99318 twister: set verdict on tests after evaluating results
Do not set results before we finished parsing output.

Fixes #32514

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-03-17 11:28:22 +01:00
Torsten Rasmussen
6360593f99 cmake: west: do not print error if west topdir fails
`west` is an optional tool.
Although `west` is optional, a developer might be working with both west
and non-west based projects, like
- vanilla Zephyr (using west)
- downstream project (not using west)

and thus have west installed, but not always in use.

In the downstream project scenario not using west, then running CMake
will print the following error:
```
FATAL ERROR: no west workspace found from "<path>/zephyr";
"west topdir" requires one.
Things to try:
  - Change directory to somewhere inside a west workspace and retry.
  - Set ZEPHYR_BASE to a zephyr repository path in a west workspace.
  - Run "west init" to set up a workspace here.
  - Run "west init -h" for additional information.
```

This commit sets `WEST` CMake variable to `WEST-NOTFOUND` when west is
found but Zephyr is not in a west workspace (`west topdir` fails)

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-03-17 11:28:14 +01:00
Cezar Burlacu
91ab6bf8d6 samples: can: shell send fix
This fixes the limitation of sending an extended CAN frame.
Because the default value of `CONFIG_SHELL_ARGC_MAX` is 12 the maximum
number of bytes for an extended CAN frame is 7.

Increasing it to 13 to allow all 8 bytes to be sent from the shell.

Tested on nucleo_f767zi.

Signed-off-by: Cezar Burlacu <cezar@embeddedp.ro>
2021-03-17 11:25:50 +01:00
Eduardo Montoya
ddf5f607e1 net: openthread: enable deterministic ECDSA
When using `OPENTHREAD_ECDSA` deterministic variant has to be
enabled after some OpenThread changes. Also generic public key
functions are required.

Signed-off-by: Eduardo Montoya <eduardo.montoya@nordicsemi.no>
2021-03-17 09:25:04 +02:00
Eduardo Montoya
d8932d607d crypto: mbedtls: add enablers for public key layer
Kconfig support for `MBEDTLS_PK_WRITE_C`.

Signed-off-by: Eduardo Montoya <eduardo.montoya@nordicsemi.no>
2021-03-17 09:25:04 +02:00
Eduardo Montoya
ace6aefef8 manifest: update mbedtls with PK support
Pull new mbedtls revision with support for generic public key
configuration.

Signed-off-by: Eduardo Montoya <eduardo.montoya@nordicsemi.no>
2021-03-17 09:25:04 +02:00
Jukka Rissanen
d8d721e09b net: dhcpv4: Add locking
Add locking when accessing interface list and the DHCPv4 config
struct that is found in net_if.

Fixes #33348

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2021-03-17 09:23:00 +02:00
Ioannis Glaropoulos
35f0ed23c9 boards: reel_board: introduce board-specific pyocd.yaml
Add a pyocd.yaml for reel_board, to pass board-specific
pyocd configuration.

Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
2021-03-16 20:01:53 -04:00
Ioannis Glaropoulos
488e7ef39a west commands: runners: support for including config file in pyocd
Add support for including a board-specific config.yaml file
in the pyocd flash command. Similary to openOCD, the config
file is placed in the board directory under support/.

Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
2021-03-16 20:01:53 -04:00
Peter Bigot
d7049b57d5 samples: microbit: pong: update work API usage
Use the reschedule solution as there may be cases where a newer
deadline should supersede an older one.

The implementation has no locking and so has data races between the
handler and external events.  Emit a console diagnostic in one case
where the race can be detected.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-03-16 19:58:12 -04:00
Kumar Gala
c960aa4785 boards: bbc_microbit_v2: Fix docs
The board name wasn't updated to bbc_microbit_v2

Fixes #32969

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2021-03-16 19:34:04 -04:00
Jian Kang
ba51bbd73d tests: kernel: Change a mbox testcase that condition unsuitable
Fix issue #33114 #33120. Modify the testcase that run failed on iotdk
and nsim. This testing do not need receive thread ID when invoke
k_mbox_data_get() with NULL param. The testcase purpose is invoke
this API with NULL buffer and NULL receive_id. It will cause fatal
error if use a uninitialize receive id.

Signed-off-by: Jian Kang <jianx.kang@intel.com>
2021-03-16 17:07:17 -05:00
Manojkumar Subramaniam
5b6c8986cb dts: arm: st: h723: Add the UART9 nodes to STM32H723 SoC
Add the available UART9 nodes to STM32H723 series SoC dtsi

Signed-off-by: Manojkumar Subramaniam <manoj@electrolance.com>
2021-03-16 17:03:26 -05:00
Torsten Rasmussen
ffff2124d3 cmake: zephyr_file() now accepts BOARD and BOARD_REVISION as argument
With the introduction of #32556 changing the BOARD now prints a warning.

Zephyr provides `zephyr_file()` to look up overlays and Kconfig
fragments for a specified board, and it used to be possible and safe to
do:
```
function(my_func)
  set(BOARD <local_scope_board>)
  zephyr_file(CONF_FILES ...)
endfunction(my_func)
```

As the BOARD inside `my_func` is locally scoped, this is safe to do.
But with introduction of #32556 a warning is now printed when running
CMake.

Therefore `zephyr_file` has been extended to allow for optional BOARD
and BOARD_REVISION arguments.
If BOARD is not given as argument the current BOARD in the build system
will be used.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-03-16 17:03:04 -05:00
Torsten Rasmussen
b3bb1d6ad2 cmake: make WATCH an optional argument to zephyr_check_cache()
Watching of specific Zephyr CMake build variables ensure users cannot
accidentally set important variables, such as BOARD, SHIELD, CONF_FILES
late in the build process.

This was also added to zephyr_check_cache() function.
However, the BOARD provided by the user may look as `<board>@<revision>`
and will be kept in the cache in that form.

However, the BOARD value from cache is spit into internal build
variables as: BOARD=<board> and BOARD_REVISION=<revision>.
However, this is done after `zephyr_check_cache()` which then triggers
the variable watch to trigger, and printing a warning when using board
revisions.

Therefore WATCH is now optional for `zephyr_check_cache()` and watch for
BOARD variable will be enabled when boilerplate has completed all board
handling.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-03-16 17:03:04 -05:00
Johann Fischer
44a02c5ec5 twister: use edt.label2node in dt_compat_enabled_with_label DT filter
Use edt.label2node in dt_compat_enabled_with_label DT filter.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
Co-authored-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-03-16 17:01:34 -05:00
Kumar Gala
ea36f9bdfc tests: spi_loopback: exclude atmel sam0 boards
The spi loopback tests enables SPI ASYNC which for the SAM0 SPI driver
requires DMA support is configured.  None of the current SAM0 based
boards configure DMA for SPI and thus we exclude these boards as the
test will not compile for these boards.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2021-03-16 17:01:15 -05:00
Kumar Gala
f4c5bdf008 tests: uart_async_api: exclude atmel sam0 boards
The SAM0 uart driver requires dma configured for async support and
the uart async support assumes all UARTs support async.  None of the
atmel SAM0 boards are configured this way and thus the tests will
not currently build for these boards.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2021-03-16 17:01:15 -05:00
Daniel Leung
f0a4b5beb2 doc: guides: virtual memory on x86
This adds a new page as a developer guide about virtual memory
on x86.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
0c540126c0 x86: gen_mmu: unify size display in hex
This unifies all the display of region size in hex.
Some of them are there to aid in figuring out the end of
a memory region so it is easier if they are already in hex.

This also fixes the display of address range where the end
is off by one and should be (base + size - 1).

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
83b46ae9bb boards: qemu_x86_virt: remove ELF modifying script
The linker script has been updated to have correct load address
in the ELF file, so there is no need for the horrible hack.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
c650721a0f x86: ia32: use virtual address for interrupt stack at boot
After page table is load, we should be executing in virtual
address space. Therefore we need to set ESP to the virtual
address of interrupt stack for the boot process.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
9109fbb1a2 x86: ia32: load GDT in virtual memory after loading page table
This reverts commit d40e8ede8e.

This fixes triple faults after wiping the identity mapping of
physical memory when running entering userspace.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Andrew Boie
348d1315d2 x86: 32-bit: restore virtual linking capability
This reverts commit 7d32e9f9a5.

We now allow the kernel to be linked virtually. This patch:

- Properly converts between virtual/physical addresses
- Handles early boot instruction pointer transition
- Double-maps SRAM to both virtual and physical locations
  in boot page tables to facilitate instruction pointer
  transition, with logic to clean this up after completed.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
03b413712a x86: gen_mmu: double map physical/virtual memory at top level
This reuses the page directory pointer table (PAE=y) or page
directory (PAE=n) to point to next level page directory table
(PAE=y) or page tables (PAE=n) to identity map the physical
memory. This gets rid of the extra memory needed to host
the extra mappings which are only used at boot. Following
patches will have code to actual unmap physical memory
during the boot process, so this avoids some wasting of
memory.

Since no extra memory needs to be reserved, this also reverts
commit ee3d345c09
("x86: mmu: reserve more space for page table if linking in virt").

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
dd0748a979 x86: gen_mmu: use constants to refer to page level...
...instead of magic numbers. Makes it a tiny bit easier to
read code.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
b95b8fb075 x86: gen_mmu: allow more verbose messages
This allows specifying second --verbose in command line to
enable more messages. Two new ones have been added to aid
in debugging code for mapping and setting permission to
a single page.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
4bab992e80 x86: gen_mmu: consolidate map() and identity_map()
Consolidate map() and identity_map() as they are mostly
the same.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
e211d3a999 kernel: remove CONFIG_KERNEL_LINK_IN_VIRT
There actually is no need for a separate kconfig here, as
the kernel VM address and SRAM address can be used to figure
out if the kernel is linked in virtual address space.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
273a5e670b x86: remove usage of CONFIG_KERNEL_LINK_IN_VIRT
There is no need to use this kconfig, as the phys-to-virt
offset is enough to figure out if the kernel is linked in
virtual address space in gen_mmu.py.

For code, use Z_VM_KERNEL instead.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Andrew Boie
4c7bde4311 x86: 32-bit: set ENTRY properly
The entry point is at a physical memory location; use the
physical instead of virtual address of the start symbol.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2021-03-16 15:03:44 -04:00
Andrew Boie
f2e4edf51a x86: set up linker ROM region for MMU
For virtual kernels this represents where the kernel
is loaded in physical memory.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2021-03-16 15:03:44 -04:00
Andrew Boie
acda9bf9ce linker-tool-gcc: revise for MMU support
We need to do a few things differently if we are to support
a virtual memory map, i.e. CONFIG_MMU where CONFIG_KERNEL_VM_BASE
is not the same as CONFIG_SRAM_BASE_ADDRESS.

 - All sections must be specified with a VMA and LMA, where
   VMA is the virtual address and LMA is the physical memory
   location.
 - All sections must be specified with ALIGN_WITH_INPUT to
   keep VMAs and LMAs synchronized

To do this, the existing linker macros need some adjustment:

 - GROUP_LINK_IN undefined when CONFIG_KERNEL_VM_BASE is not
   the same as CONFIG_SRAM_BASE_ADDRESS.
 - New macro GROUP_ROM_LINK_IN for text/rodata sections
 - New macro GROUP_NOLOAD_LINK_IN for bss/noinit sections
 - Implicit ALIGN_WITH_INPUT for all sections

GROUP_FOLLOWS_AT is unused anywhere in the kernel for years
now and has been removed.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Daniel Leung
a120799b85 tests: mem_protect/mem_map: no need to skip test if link in virt
This reverts commit 9de70a78fe.

The tests have been updated so there is no need to skip tests
when the kernel is linked in virtual address space.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-03-16 15:03:44 -04:00
Andrew Boie
2b48f591e1 tests: mem_map: use physical address of test page
It may not be identity-mapped.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2021-03-16 15:03:44 -04:00