[rtems commit] bsps/arm: remove lock in arm_cp15_set_translation_table_entries().

Pavel Pisa ppisa at rtems.org
Wed Sep 7 20:22:02 UTC 2016

Module:    rtems
Branch:    master
Commit:    5c49464108b120466c2419ce7b2f487534033851
Changeset: http://git.rtems.org/rtems/commit/?id=5c49464108b120466c2419ce7b2f487534033851

Author:    Pavel Pisa <pisa at cmp.felk.cvut.cz>
Date:      Sat Sep  3 01:30:47 2016 +0200

bsps/arm: remove lock in arm_cp15_set_translation_table_entries().

Protection by rtems_interrupt_disable() is incompatible with SMP build.
Actual page table entries manipulation function does not need locking
and disabling cache and can be run concurrently even on multiple
CPUs as long as changes do not modify same region. If the function
is called from more threads/CPUs to modify same region with different
mapping options concurrently then there is problem at another level
of virtual address space management  and has to be solved by mutex
or other locking at that level.


 c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c b/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
index f650009..c2be0f5 100644
--- a/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
+++ b/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
@@ -85,13 +85,5 @@ uint32_t arm_cp15_set_translation_table_entries(
   uint32_t section_flags
-  rtems_interrupt_level level;
-  uint32_t section_flags_of_first_entry;
-  rtems_interrupt_disable(level);
-  section_flags_of_first_entry =
-    set_translation_table_entries(begin, end, section_flags);
-  rtems_interrupt_enable(level);
-  return section_flags_of_first_entry;
+  return set_translation_table_entries(begin, end, section_flags);

More information about the vc mailing list