Skip to content

Conversation

sudeep-mohanty
Copy link
Contributor

@sudeep-mohanty sudeep-mohanty commented Oct 9, 2024

This PR adds support for granular locking to the FreeRTOS kernel.

Description

Granular locking introduces the concept of having localized locks per kernel data group for SMP configuration. This method is an optional replacement of the existing kernel locks and is controlled by a new port layer configuration, viz., portUSING_GRANULAR_LOCKS. More details about the approach can be found here.

Test Steps

The implementation has been tested on Espressif SoC targets, viz., the ESP32 using the ESP-IDF framework.

1. Testing on an esp32 target

  • To test the implementation of the granular locking scheme on esp32, setup the ESP-IDF environment on your local machine. The steps to follow are listed in the Getting Started Guide.
  • Instead of the main ESP-IDF repository, the granular locks implementation resides in this froked repository - https://github.com/sudeep-mohanty/esp-idf.
  • Once you have cloned the forked repository and setup the ESP-IDF environment, change your branch to feat/granular_locks_tests.
  • To run the FreeRTOS unit tests, change the directory to components/freertos/test_apps/freertos where all the test cases are located.
  • Performance tests are located in the performance subfolder at the same location.
  • Setup the target device with the command idf.py seet-target esp32.
  • Select the Amazon FreeRTOS SMP kernel using the menuconfig options. To do this you must enter the command -idf.py menuconfig -> Component config -> FreeRTOS -> Kernel -> Run the Amazon SMP FreeRTOS kernel instead (FEATURE UNDER DEVELOPMENT). Save the configuration and exit the menuconfig.
  • Now, build and flash the unit test application with the command idf.py build flash monitor.
  • Once the app is up, you can enter the number of the test case and run the unity test case.

TODO

  • Test setup for other targets (Raspberry Pi Pico)
  • Generic target tests to be uploaded to the FreeRTOS repository.

Checklist:

  • I have tested my changes. No regression in existing tests.
  • I have modified and/or added unit-tests to cover the code changes in this Pull Request.

Related Issue

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@sudeep-mohanty
Copy link
Contributor Author

@chinglee-iot @aggarg This PR introduces the granular locks changes to the FreeRTOS kernel. Please have a look and we could have discussions/changes in this PR context. Thank you.

cc: @ESP-Marius @Dazza0

@rawalexe
Copy link
Member

rawalexe commented Oct 9, 2024

Thank you for your contribution, I'll forward this request to the team. There are few error in the PR can you please try fixing them

@rawalexe
Copy link
Member

Hello @sudeep-mohanty, I am just following up if you had time to fix the build issues

@sudeep-mohanty sudeep-mohanty marked this pull request as draft October 15, 2024 08:25
@sudeep-mohanty
Copy link
Contributor Author

@rawalexe Yes! I shall work on the failures and would also do some refactoring for an easier review process. For now, I've put this PR in draft.

@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch 9 times, most recently from 0159a4a to 5bf8c33 Compare October 30, 2024 10:26
@sudeep-mohanty sudeep-mohanty marked this pull request as ready for review October 30, 2024 10:34
@sudeep-mohanty sudeep-mohanty requested a review from a team as a code owner October 30, 2024 10:34
@ActoryOu
Copy link
Member

Hi @sudeep-mohanty,
Could you help check CI failing?

@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch from 5bf8c33 to 9f8acc7 Compare October 31, 2024 09:25
@sudeep-mohanty
Copy link
Contributor Author

Hi @sudeep-mohanty, Could you help check CI failing?

Hi @ActoryOu, I've made some updates which should fix the CI failures however I could not understand why the link-verifier action fails. Seems more like a script failure to me. So this action would still fail. If you have more information on what is causing it, could you let me know and I shall fix it. Thanks.

@sudeep-mohanty
Copy link
Contributor Author

sudeep-mohanty commented Nov 1, 2024

Created a PR to fix the CI failure - FreeRTOS/FreeRTOS#1292

@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch 4 times, most recently from 70eb466 to edc1c98 Compare November 4, 2024 15:38
Copy link

sonarqubecloud bot commented Nov 4, 2024

@sudeep-mohanty sudeep-mohanty marked this pull request as draft November 15, 2024 14:25
@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch from 7df6202 to cc09d63 Compare August 15, 2025 15:14
This commit removes the need for suspending the scheduler when calling
some event_groups.c APIs as the non-deterministic operations are
happening with the event group being locked and the preemption being
disabled from the current task.
@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch from b118a8b to 1b57169 Compare August 21, 2025 13:13
@sudeep-mohanty sudeep-mohanty force-pushed the feature/smp_granular_locks_v4 branch from 1b57169 to 12d3d5d Compare August 21, 2025 13:19
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Granular Lock for SMP
5 participants