Re: [PATCH 4/4] Code refactor xilinx-zynq BSP MMU initialization

2015-08-24 Thread Rohini Kulkarni
OK, thanks all for the views. That gave plenty insight into the details I
had not thought of earlier. Clearly not the way to go.

But then is such refactoring a good idea? These changes even if modified
will apply only to cp15 ARM BSPs.
On 24 Aug 2015 21:20, Pavel Pisa p...@cmp.felk.cvut.cz wrote:

 Hello Chris and Rohini,

 I have returned and catching the emails flow.

 But please, consider that for some architectures it is critical
 to have MMU table runtime alterable.

 I.e. on RPi the actual memory division to cacheable
 and peripheral area is know only at runtime. It depends
 on user provided content of configuration files on SDcard
 and actual boot loader and VideoCore firmware located
 on the SDcard.

 On the other hand there could exist even ARM systems
 where linker script defined
   bsp_translation_table_base = ORIGIN (RAM_MMU)
 can be precomputed at compile time and reside in Flash.

 But for sure, hardcoding of CP15 setup over all platforms
 is incorrect way to go.

 As for description how to configure fill the translation table,
 i.e.

   const arm_cp15_start_section_config arm_cp15_start_mmu_config_table[] = {

 I do not think that it has to be global and it would be even
 better if its type is not declared in
   c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
 because then it can be much easier declared as const on
 options.

  BSP_START_DATA_SECTION extern const arm_cp15_start_section_config
   arm_cp15_start_mmu_config_table[];

 On the other hand it has quite complex attributes and placement
 requirements to be available before memory and workspace
 setup, so the global define which enforces these is the best
 solution.

 We need, for sure, to be able to modify entries in the translation
 table at runtime at least during startup phase. When PCI/PCIe becomes
 more widespread in embedded/ARM systems then it starts to be even
 important because then drivers which find a and map device PCI BARs
 into memory space have to select right access and cache variants
 according to the device and CPU characteristic. On the other hand,
 more new SoC from Ti and FreeScale have option to switch busses
 not only to be cache coherent between multiple CPU cores but even
 for all/some subset of peripherals. Then even many peripheral
 regions can be setup as cached on such systems without need
 of special flush, invalidate cache operation before DMA/peripheral
 coprocessor data passing.

 So please, take in consideration these scenarios.

 Making definitions as globals and use of these directly
 without passing as parameters of initialization functions
 make me worry.

 May be some other layering and rearrangement could be better
 but static and dynamic (BSP code cotrolled) use options needs
 to be provided.

 Best wishes,

  Pavel



___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH 4/4] Code refactor xilinx-zynq BSP MMU initialization

2015-08-15 Thread Rohini Kulkarni
On Fri, Aug 14, 2015 at 12:41 PM, Rohini Kulkarni krohini1...@gmail.com
wrote:



 On Fri, Aug 14, 2015 at 8:33 AM, Chris Johns chr...@rtems.org wrote:

 On 14/08/2015 7:44 am, Rohini Kulkarni wrote:
  ---
 
  -BSP_START_DATA_SECTION static const arm_cp15_start_section_config
  -zynq_mmu_config_table[] = {
  +BSP_START_DATA_SECTION const arm_cp15_start_section_config
  +arm_cp15_start_mmu_config_table[] = {
 ARMV7_CP15_START_DEFAULT_SECTIONS,
 {
   .begin = 0xe000U,

 Why not pass the table to the bsp_memory_management_initialize call and
 avoid making this table global ? Maybe all these tables should be static
 and local to their file's in all ARM bsps that do this type MMU set up.

 This global table and referencing it in the call limits its use and I
 think makes things a little more fragile. See below.

 I saw Raspberry Pi and altera define the arm_cp15_start_mmu_config_table.
 The table is declared in the arm-cp15-start.h and mminit.c uses this as the
 default table. So I didn't really understand why some had static tables
 while others didn't.


 Do all ARMs devices with MMUs have cp15 or is this limited to a specific
 family ? The only reason I ask is bsp_memory_management_initialize is a
 generic name.

 Not all ARM devices have cp15. The existing definition of
 bsp_memory_management_initialize supports only cp15. The definition would
 not be useful to other devices. And this definition was being replicated by
 some cp15 bsps again. So the reason for making these changes.


 If something else exists does this call need to be updated ?

 Yes, a different definition will be required.


 I am still a little confused what the changes gives us. Should the RPi
 not use the call and it be removed ? I do not know.

  @@ -39,17 +40,15 @@ zynq_mmu_config_table[] = {
   BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void)
 __attribute__ ((weak));

 If all this code is going to be touched I feel adding weak versions for
 all boards is a good thing.

 The Zynq and I suspect the Cyclone need this because the memory mapped
 can depend on what is loaded into the programmable logic (PL) side of
 these devices. I currently override the weak Zynq call in production
 code based on the PL logic loaded at run time. I wonder if this change
 will break code. I am concerned it needs to get a clean link yet we now
 have globals and other code referencing those globals. If the file is
 not referenced and nothing else depends on it things are more robust.

 I still don't have the deeper insight needed so I don't see dependencies.
 But if having static tables is much more robust then we should apply that
 to all.


 
   BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void)
  -{
  -  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
  -ARM_CP15_CTRL_A,
  -ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
  -  );
  -
  -  arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
  -ctrl,
  -(uint32_t *) bsp_translation_table_base,
  -ARM_MMU_DEFAULT_CLIENT_DOMAIN,
  -zynq_mmu_config_table[0],
  -RTEMS_ARRAY_SIZE(zynq_mmu_config_table)
  +{
  +  uint32_t bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE |
 ARM_CP15_CTRL_Z;
  +  uint32_t bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
  +
  +  bsp_memory_management_initialize(
  +bsp_initial_mmu_ctrl_set,
  +bsp_initial_mmu_ctrl_clear
 );
   }
  +
  +const size_t arm_cp15_start_mmu_config_table_size =
  +  RTEMS_ARRAY_SIZE(arm_cp15_start_mmu_config_table);

 Same here. I think we should avoid globals.

 Then I think raspberry Pi and altera should also follow this if this is
 much more appropriate.


So what is the way out here?


 Chris

  \ No newline at end of file
 




 --
 Rohini Kulkarni




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH 4/4] Code refactor xilinx-zynq BSP MMU initialization

2015-08-14 Thread Rohini Kulkarni
On Fri, Aug 14, 2015 at 8:33 AM, Chris Johns chr...@rtems.org wrote:

 On 14/08/2015 7:44 am, Rohini Kulkarni wrote:
  ---
 
  -BSP_START_DATA_SECTION static const arm_cp15_start_section_config
  -zynq_mmu_config_table[] = {
  +BSP_START_DATA_SECTION const arm_cp15_start_section_config
  +arm_cp15_start_mmu_config_table[] = {
 ARMV7_CP15_START_DEFAULT_SECTIONS,
 {
   .begin = 0xe000U,

 Why not pass the table to the bsp_memory_management_initialize call and
 avoid making this table global ? Maybe all these tables should be static
 and local to their file's in all ARM bsps that do this type MMU set up.

 This global table and referencing it in the call limits its use and I
 think makes things a little more fragile. See below.

I saw Raspberry Pi and altera define the arm_cp15_start_mmu_config_table.
The table is declared in the arm-cp15-start.h and mminit.c uses this as the
default table. So I didn't really understand why some had static tables
while others didn't.


 Do all ARMs devices with MMUs have cp15 or is this limited to a specific
 family ? The only reason I ask is bsp_memory_management_initialize is a
 generic name.

Not all ARM devices have cp15. The existing definition of
bsp_memory_management_initialize supports only cp15. The definition would
not be useful to other devices. And this definition was being replicated by
some cp15 bsps again. So the reason for making these changes.


 If something else exists does this call need to be updated ?

Yes, a different definition will be required.


 I am still a little confused what the changes gives us. Should the RPi
 not use the call and it be removed ? I do not know.

  @@ -39,17 +40,15 @@ zynq_mmu_config_table[] = {
   BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void)
 __attribute__ ((weak));

 If all this code is going to be touched I feel adding weak versions for
 all boards is a good thing.

 The Zynq and I suspect the Cyclone need this because the memory mapped
 can depend on what is loaded into the programmable logic (PL) side of
 these devices. I currently override the weak Zynq call in production
 code based on the PL logic loaded at run time. I wonder if this change
 will break code. I am concerned it needs to get a clean link yet we now
 have globals and other code referencing those globals. If the file is
 not referenced and nothing else depends on it things are more robust.

I still don't have the deeper insight needed so I don't see dependencies.
But if having static tables is much more robust then we should apply that
to all.


 
   BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void)
  -{
  -  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
  -ARM_CP15_CTRL_A,
  -ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
  -  );
  -
  -  arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
  -ctrl,
  -(uint32_t *) bsp_translation_table_base,
  -ARM_MMU_DEFAULT_CLIENT_DOMAIN,
  -zynq_mmu_config_table[0],
  -RTEMS_ARRAY_SIZE(zynq_mmu_config_table)
  +{
  +  uint32_t bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE |
 ARM_CP15_CTRL_Z;
  +  uint32_t bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
  +
  +  bsp_memory_management_initialize(
  +bsp_initial_mmu_ctrl_set,
  +bsp_initial_mmu_ctrl_clear
 );
   }
  +
  +const size_t arm_cp15_start_mmu_config_table_size =
  +  RTEMS_ARRAY_SIZE(arm_cp15_start_mmu_config_table);

 Same here. I think we should avoid globals.

Then I think raspberry Pi and altera should also follow this if this is
much more appropriate.


 Chris

  \ No newline at end of file
 




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH] Code refactor changes to mm.h and mminit.c

2015-08-13 Thread Rohini Kulkarni
---
 c/src/lib/libbsp/arm/shared/mminit.c |   17 +++--
 c/src/lib/libbsp/shared/include/mm.h |5 -
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/c/src/lib/libbsp/arm/shared/mminit.c 
b/c/src/lib/libbsp/arm/shared/mminit.c
index acfbfc0..f2617f8 100644
--- a/c/src/lib/libbsp/arm/shared/mminit.c
+++ b/c/src/lib/libbsp/arm/shared/mminit.c
@@ -11,14 +11,19 @@
 #include bsp/start.h
 #include bsp/arm-cp15-start.h
 #include bsp/linker-symbols.h
+#include libcpu/arm-cp15.h
 #include bsp/mm.h
 
-BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
+BSP_START_TEXT_SECTION void bsp_memory_management_initialize(
+  uint32_t bsp_initial_mmu_ctrl_set,
+  uint32_t bsp_initial_mmu_ctrl_clear
+)
 {
-  uint32_t ctrl = arm_cp15_get_control();
-
-  ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP;
-
+  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
+bsp_initial_mmu_ctrl_clear,
+bsp_initial_mmu_ctrl_set  
+  );
+  
   arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
 ctrl,
 (uint32_t *) bsp_translation_table_base,
@@ -26,4 +31,4 @@ BSP_START_TEXT_SECTION void 
bsp_memory_management_initialize(void)
 arm_cp15_start_mmu_config_table[0],
 arm_cp15_start_mmu_config_table_size
   );
-}
+}
\ No newline at end of file
diff --git a/c/src/lib/libbsp/shared/include/mm.h 
b/c/src/lib/libbsp/shared/include/mm.h
index 2152f68..aad6b05 100644
--- a/c/src/lib/libbsp/shared/include/mm.h
+++ b/c/src/lib/libbsp/shared/include/mm.h
@@ -33,7 +33,10 @@ extern C {
  *  @brief MM Support Package
  */
 
-void bsp_memory_management_initialize(void);
+void bsp_memory_management_initialize(
+  uint32_t bsp_initial_mmu_ctrl_set,
+  uint32_t bsp_initial_mmu_ctrl_clear
+);
 
 #ifdef __cplusplus
 }
-- 
1.7.9.5

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH 3/4] Code refactor realview-pbx-a9 BSP MMU initialization

2015-08-13 Thread Rohini Kulkarni
---
 c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am   |4 +++
 .../arm/realview-pbx-a9/startup/bspstarthooks.c|   27 ++--
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am 
b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am
index 2cc7aa0..606f510 100644
--- a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am
+++ b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am
@@ -28,6 +28,7 @@ nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
 
 include_bsp_HEADERS =
 include_bsp_HEADERS += ../../shared/include/utility.h
+include_bsp_HEADERS += ../../../libbsp/shared/include/mm.h
 include_bsp_HEADERS += ../../shared/include/irq-generic.h
 include_bsp_HEADERS += ../../shared/include/irq-info.h
 include_bsp_HEADERS += ../../shared/include/stackalloc.h
@@ -131,6 +132,9 @@ libbsp_a_CPPFLAGS += 
-I$(srcdir)/../../../libcpu/arm/shared/include
 # Start hooks
 libbsp_a_SOURCES += startup/bspstarthooks.c
 
+# LIBMM
+libbsp_a_SOURCES += ../shared/mminit.c
+
 # Framebuffer
 libbsp_a_SOURCES += ../shared/arm-pl111-fb.c
 libbsp_a_SOURCES += startup/fb-config.c
diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/startup/bspstarthooks.c 
b/c/src/lib/libbsp/arm/realview-pbx-a9/startup/bspstarthooks.c
index ab766e8..74391b5 100644
--- a/c/src/lib/libbsp/arm/realview-pbx-a9/startup/bspstarthooks.c
+++ b/c/src/lib/libbsp/arm/realview-pbx-a9/startup/bspstarthooks.c
@@ -15,12 +15,13 @@
 #define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
 
 #include bsp.h
+#include bsp/mm.h
 #include bsp/start.h
 #include bsp/arm-cp15-start.h
 #include bsp/arm-a9mpcore-start.h
 
-BSP_START_DATA_SECTION static const arm_cp15_start_section_config
-rvpbxa9_mmu_config_table[] = {
+BSP_START_DATA_SECTION const arm_cp15_start_section_config
+arm_cp15_start_mmu_config_table[] = {
   ARMV7_CP15_START_DEFAULT_SECTIONS,
   {
 .begin = 0x1000U,
@@ -37,19 +38,17 @@ rvpbxa9_mmu_config_table[] = {
   }
 };
 
+const size_t arm_cp15_start_mmu_config_table_size =
+  RTEMS_ARRAY_SIZE(arm_cp15_start_mmu_config_table);
+
 BSP_START_TEXT_SECTION static void setup_mmu_and_cache(void)
 {
-  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
-ARM_CP15_CTRL_A,
-ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
-  );
-
-  arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
-ctrl,
-(uint32_t *) bsp_translation_table_base,
-ARM_MMU_DEFAULT_CLIENT_DOMAIN,
-rvpbxa9_mmu_config_table[0],
-RTEMS_ARRAY_SIZE(rvpbxa9_mmu_config_table)
+  uint32_t bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z;
+  uint32_t bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
+  
+  bsp_memory_management_initialize(
+bsp_initial_mmu_ctrl_set,
+bsp_initial_mmu_ctrl_clear
   );
 }
 
@@ -78,4 +77,4 @@ BSP_START_TEXT_SECTION void bsp_start_hook_1(void)
   bsp_start_copy_sections();
   setup_mmu_and_cache();
   bsp_start_clear_bss();
-}
+}
\ No newline at end of file
-- 
1.7.9.5

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH 4/4] Code refactor xilinx-zynq BSP MMU initialization

2015-08-13 Thread Rohini Kulkarni
---
 c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am   |4 +++
 .../libbsp/arm/xilinx-zynq/startup/bspstartmmu.c   |   27 ++--
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am 
b/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am
index df4aa15..f7b23bd 100644
--- a/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am
+++ b/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am
@@ -28,6 +28,7 @@ nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
 
 include_bsp_HEADERS =
 include_bsp_HEADERS += ../../shared/include/utility.h
+include_bsp_HEADERS += ../../../libbsp/shared/include/mm.h
 include_bsp_HEADERS += ../../shared/include/irq-generic.h
 include_bsp_HEADERS += ../../shared/include/irq-info.h
 include_bsp_HEADERS += ../../shared/include/stackalloc.h
@@ -133,6 +134,9 @@ libbsp_a_CPPFLAGS += -I$(srcdir)/../shared/arm-l2c-310
 # Start hooks
 libbsp_a_SOURCES += startup/bspstarthooks.c startup/bspstartmmu.c
 
+# LIBMM
+libbsp_a_SOURCES += ../shared/mminit.c
+
 ###
 #  Special Rules  #
 ###
diff --git a/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstartmmu.c 
b/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstartmmu.c
index c7a1089..e33e18b 100644
--- a/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstartmmu.c
+++ b/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstartmmu.c
@@ -15,12 +15,13 @@
 #define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
 
 #include bsp.h
+#include bsp/mm.h
 #include bsp/start.h
 #include bsp/arm-cp15-start.h
 #include bsp/arm-a9mpcore-start.h
 
-BSP_START_DATA_SECTION static const arm_cp15_start_section_config
-zynq_mmu_config_table[] = {
+BSP_START_DATA_SECTION const arm_cp15_start_section_config
+arm_cp15_start_mmu_config_table[] = {
   ARMV7_CP15_START_DEFAULT_SECTIONS,
   {
 .begin = 0xe000U,
@@ -39,17 +40,15 @@ zynq_mmu_config_table[] = {
 BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void) __attribute__ 
((weak));
 
 BSP_START_TEXT_SECTION void zynq_setup_mmu_and_cache(void)
-{
-  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
-ARM_CP15_CTRL_A,
-ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
-  );
-
-  arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
-ctrl,
-(uint32_t *) bsp_translation_table_base,
-ARM_MMU_DEFAULT_CLIENT_DOMAIN,
-zynq_mmu_config_table[0],
-RTEMS_ARRAY_SIZE(zynq_mmu_config_table)
+{  
+  uint32_t bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z;
+  uint32_t bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
+  
+  bsp_memory_management_initialize(
+bsp_initial_mmu_ctrl_set,
+bsp_initial_mmu_ctrl_clear
   );
 }
+
+const size_t arm_cp15_start_mmu_config_table_size =
+  RTEMS_ARRAY_SIZE(arm_cp15_start_mmu_config_table);
\ No newline at end of file
-- 
1.7.9.5

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


Re: Fwd: SMP support for Raspberry Pi 2

2015-08-12 Thread Rohini Kulkarni
Hi,

It would be great if somebody can help here.
[1] How are the mailbox registers available for each core of Pi2 to be
used.

[2] Another thing is that I don't know which registers of Pi 1 are
available for Pi2 as well. The ones in this link
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
, are quite different from the ones for Pi 1.

[3] Can the same mailbox interface as Pi1 be used?

Thanks.

On Wed, Aug 12, 2015 at 1:29 AM, Joel Sherrill joel.sherr...@oarcorp.com
wrote:



 On 8/11/2015 2:06 PM, Rohini Kulkarni wrote:

 Hi,

 I would have to register the related mailbox interrupt and associate it
 with a handler that should be same as
 _SMP_Inter_processor_interrupt_handler(). Am I right?


 That sounds correct.

  From where can I get a reference of how to do this?


 I would look at the Xilinx code that registers interrupts. The API
 should be the same. Also the clock driver, etc. The actual handler
 and IRQ number will vary.


 On 11 Aug 2015 00:41, Joel Sherrill joel.sherr...@oarcorp.com mailto:
 joel.sherr...@oarcorp.com wrote:

 The source for the CPU supplement is in doc/cpu_supplement in
 the RTEMS tree.

 I do not know when the latest online was built so reading it
 there is probably safest.

 To build it, you will likely have to install some texinfo and
 texlive tools.

 cd $r/doc
 ../bootstrap
 cd ../..
 mkdir b-doc
 cd b-doc
 $r/doc/configure --enable-maintainer-mode \
--prefix=DIRECTORY
 make
 make install

 That should be similar to how it is built.

 --joel


 On 8/10/2015 1:35 PM, Rohini Kulkarni wrote:

 The documentation that Sebastian was referring to.

 On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber 
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

  Hello Rohini,

  please use the devel list.

  On 28/07/15 07:41, Rohini Kulkarni wrote:

  Hi,

  I wish to understand where the interprocessor interrupts
 are used during the boot process. During final initialization of SMP I can
 see

  rtems_interrupt_handler_install(
 ARM_GIC_IRQ_SGI_0,
 IPI,
 RTEMS_INTERRUPT_UNIQUE,
 bsp_inter_processor_interrupt,
 NULL
   );

  Raspberry Pi 2 does not have the generic interrupt
 controller. Interrupt routing will have to be handled differently. So I
 wish to understand how/ where it is used. I suppose this might be the
 problem.


  Sorry, that the documentation is so scattered.  I think we
 should move everything into the CPU Architecture Supplement. It would be
 nice if you can help to improve the documentation since you have a
 different view point.

 What is the CPU Architecture Supplement?


  You must install the IPI during the system initialization.
 It is raised via the _CPU_SMP_Send_interrupt() function, for an example see
 arm-a9mpcore-smp.c.



  Thanks.

  On Wed, Jul 22, 2015 at 7:08 PM, Rohini Kulkarni 
 krohini1...@gmail.com mailto:krohini1...@gmail.com mailto:
 krohini1...@gmail.com mailto:krohini1...@gmail.com mailto:
 krohini1...@gmail.com mailto:krohini1...@gmail.com mailto:
 krohini1...@gmail.com mailto:krohini1...@gmail.com wrote:

   Ok. Qemu suggestion seems helpful for the cache
 configuration
   issue though. I am trying with Pi 1.

   Thanks.

   On 22 Jul 2015 18:59, Sebastian Huber
   sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
   mailto:sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

   Sorry, I cannot help you here since I never
 worked with a
   Raspberry Pi.

   -- Sebastian Huber, embedded brains GmbH

   Address : Dornierstr. 4, D-82178 Puchheim,
 Germany
   Phone   : +49 89 189 47 41-16
   Fax : +49 89 189 47 41-09
   E-Mail  : sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
   mailto:sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu

Re: Fwd: SMP support for Raspberry Pi 2

2015-08-11 Thread Rohini Kulkarni
Hi,

I would have to register the related mailbox interrupt and associate it
with a handler that should be same as
_SMP_Inter_processor_interrupt_handler(). Am I right?

From where can I get a reference of how to do this?


On 11 Aug 2015 00:41, Joel Sherrill joel.sherr...@oarcorp.com wrote:

 The source for the CPU supplement is in doc/cpu_supplement in
 the RTEMS tree.

 I do not know when the latest online was built so reading it
 there is probably safest.

 To build it, you will likely have to install some texinfo and
 texlive tools.

 cd $r/doc
 ../bootstrap
 cd ../..
 mkdir b-doc
 cd b-doc
 $r/doc/configure --enable-maintainer-mode \
   --prefix=DIRECTORY
 make
 make install

 That should be similar to how it is built.

 --joel


 On 8/10/2015 1:35 PM, Rohini Kulkarni wrote:

 The documentation that Sebastian was referring to.

 On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber 
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

 Hello Rohini,

 please use the devel list.

 On 28/07/15 07:41, Rohini Kulkarni wrote:

 Hi,

 I wish to understand where the interprocessor interrupts are used
 during the boot process. During final initialization of SMP I can see

 rtems_interrupt_handler_install(
ARM_GIC_IRQ_SGI_0,
IPI,
RTEMS_INTERRUPT_UNIQUE,
bsp_inter_processor_interrupt,
NULL
  );

 Raspberry Pi 2 does not have the generic interrupt controller.
 Interrupt routing will have to be handled differently. So I wish to
 understand how/ where it is used. I suppose this might be the problem.


 Sorry, that the documentation is so scattered.  I think we should
 move everything into the CPU Architecture Supplement. It would be nice if
 you can help to improve the documentation since you have a different view
 point.

 What is the CPU Architecture Supplement?


 You must install the IPI during the system initialization. It is
 raised via the _CPU_SMP_Send_interrupt() function, for an example see
 arm-a9mpcore-smp.c.



 Thanks.

 On Wed, Jul 22, 2015 at 7:08 PM, Rohini Kulkarni 
 krohini1...@gmail.com mailto:krohini1...@gmail.com mailto:
 krohini1...@gmail.com mailto:krohini1...@gmail.com wrote:

  Ok. Qemu suggestion seems helpful for the cache configuration
  issue though. I am trying with Pi 1.

  Thanks.

  On 22 Jul 2015 18:59, Sebastian Huber
  sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
  mailto:sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

  Sorry, I cannot help you here since I never worked with a
  Raspberry Pi.

  -- Sebastian Huber, embedded brains GmbH

  Address : Dornierstr. 4, D-82178 Puchheim, Germany
  Phone   : +49 89 189 47 41-16
  Fax : +49 89 189 47 41-09
  E-Mail  : sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
  mailto:sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
  PGP : Public key available on request.

  Diese Nachricht ist keine geschäftliche Mitteilung im
 Sinne
  des EHUG.




 --
 Rohini Kulkarni


 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




 --
 Rohini Kulkarni


 --
 Joel Sherrill, Ph.D. Director of Research  Development
 joel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: Fwd: Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-08-11 Thread Rohini Kulkarni
Yes I have tried this. Didn't work out :(
On 11 Aug 2015 19:56, Joel Sherrill joel.sherr...@oarcorp.com wrote:

 Hi

 Has this been tried?


  Forwarded Message 
 Subject: Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support
 Date: Tue, 28 Jul 2015 01:57:44 -0500
 From: Sebastian Huber sebastian.hu...@embedded-brains.de
 To: Rohini Kulkarni krohini1...@gmail.com, Gedare Bloom ged...@gwu.edu
 CC: rtems-de...@rtems.org devel@rtems.org



 On 24/07/15 21:55, Rohini Kulkarni wrote:

 Hi,

 I have attached the report containing outputs of arm-rtems4.11-size
 and arm-rtems4.11-nm -S.

 From arm-rtems4.11-nm -S I don't see how memset() is accessing .text
 section. The start and end values for both are not overlapping.


 Maybe this patch helps:

 diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/linkcmds
 b/c/src/lib/libbsp/arm/raspberrypi/startup/linkcmds
 index f1ad11c..f3b6232 100644
 --- a/c/src/lib/libbsp/arm/raspberrypi/startup/linkcmds
 +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/linkcmds
 @@ -62,7 +62,8 @@ REGION_ALIAS (REGION_NOCACHE_LOAD, RAM);
   bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size
 : 4096;
   bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size
 : 1024;

 -bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ?
 bsp_section_robarrier_align : 1M;
 +bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ?
 bsp_section_rwbarrier_align : 1M;
 +
   bsp_translation_table_base = ORIGIN (RAM_MMU);

   INCLUDE linkcmds.armv4

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel


 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-08-09 Thread Rohini Kulkarni
There is no documentation or information from forums I can find to get a
lead. I suppose i will go ahead with mailboxes. Each core has 4 mailboxes,
usage being left to us. One of the mailboxes can be used here.

On Sun, Aug 9, 2015 at 2:28 AM, Joel Sherrill joel.sherr...@oarcorp.com
wrote:



 On August 8, 2015 3:17:01 PM CDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 Can mailboxes be useful here? Nothing else that is coming to my mind
 

 They may be and I am seeing references to ARM's own mpcore which uses the
 GIC. This appears to be SOC specific but ARM has recommendations which may
 be followed by the SOC manufacturer

 On Sun, Aug 9, 2015 at 1:44 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 
 Hi,
 
 I am stuck at how to set up IPI for Pi 2. This is a document I have
 referred to get an idea of interrupts. Would be great to get some help
 on how to proceed.
 
 
 On Fri, Jul 31, 2015 at 7:33 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:
 
 
 
 On 7/31/2015 8:11 AM, Rohini Kulkarni wrote:
 
 Hi,
 
 How is the number of processors to be used for an application
 specified?
 The used count minimum of that supported in hardware and that
 configured. How to specify the latter?
 
 
 
 https://docs.rtems.org/doc-current/share/rtems/html/c_user/Configuring-a-System-SMP-Specific-Configuration-Parameters.html#Configuring-a-System-SMP-Specific-Configuration-Parameters
 
 and see the smptests. Many of which do specify the maximum.
 
 Thanks.
 
 On 29 Jul 2015 15:29, Sebastian Huber
 sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de wrote:
 
 
 
 On 29/07/15 11:52, Rohini Kulkarni wrote:
 
 
 
 On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber
 sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de wrote:
 
  Hello Rohini,
 
  please use the devel list.
 
  On 28/07/15 07:41, Rohini Kulkarni wrote:
 
  Hi,
 
I wish to understand where the interprocessor interrupts are
used during the boot process. During final initialization of
  SMP I can see
 
  rtems_interrupt_handler_install(
ARM_GIC_IRQ_SGI_0,
IPI,
RTEMS_INTERRUPT_UNIQUE,
bsp_inter_processor_interrupt,
NULL
  );
 
  Raspberry Pi 2 does not have the generic interrupt controller.
 Interrupt routing will have to be handled differently. So I
  wish to understand how/ where it is used. I suppose this might
  be the problem.
 
 
   Sorry, that the documentation is so scattered.  I think we should
   move everything into the CPU Architecture Supplement. It would be
  nice if you can help to improve the documentation since you have a
  different view point.
 
You must install the IPI during the system initialization. It is
   raised via the _CPU_SMP_Send_interrupt() function, for an example
  see arm-a9mpcore-smp.c.
 
 I could locate the function in  arm-a9mpcore-smp.c. but it would be
 helpful if I can know where this being called from, a deeper call
 hierarchy, so that I can ascertain this is a problem. I can see a
 Send_messgae function call this. But don't know where the send message
 is being called from.
 
 
 You can run one of the SMP tests on the realview_pbx_a9_qemu_smp BSP on
 Qemu and set a break point to _CPU_SMP_Send_interrupt() if you want to
 know how it is used.
 
 --
 Sebastian Huber, embedded brains GmbH
 
 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 
 E-Mail  : sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.
 
   Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
 
 
 --
 Joel Sherrill, Ph.D. Director of Research  Development
 joel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985
 
 
 
 
 --
 
 Rohini Kulkarni
 
 
 
 
 --
 
 Rohini Kulkarni

 --joel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-08-08 Thread Rohini Kulkarni
Can mailboxes be useful here? Nothing else that is coming to my mind

On Sun, Aug 9, 2015 at 1:44 AM, Rohini Kulkarni krohini1...@gmail.com
wrote:

 Hi,

 I am stuck at how to set up IPI for Pi 2. This
 https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
 is a document I have referred to get an idea of interrupts. Would be great
 to get some help on how to proceed.

 On Fri, Jul 31, 2015 at 7:33 PM, Joel Sherrill joel.sherr...@oarcorp.com
 wrote:



 On 7/31/2015 8:11 AM, Rohini Kulkarni wrote:

 Hi,

 How is the number of processors to be used for an application specified?
 The used count minimum of that supported in hardware and that
 configured. How to specify the latter?



 https://docs.rtems.org/doc-current/share/rtems/html/c_user/Configuring-a-System-SMP-Specific-Configuration-Parameters.html#Configuring-a-System-SMP-Specific-Configuration-Parameters

 and see the smptests. Many of which do specify the maximum.

 Thanks.

 On 29 Jul 2015 15:29, Sebastian Huber 
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:



 On 29/07/15 11:52, Rohini Kulkarni wrote:



 On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber 
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

  Hello Rohini,

  please use the devel list.

  On 28/07/15 07:41, Rohini Kulkarni wrote:

  Hi,

  I wish to understand where the interprocessor
 interrupts are
  used during the boot process. During final
 initialization of
  SMP I can see

  rtems_interrupt_handler_install(
ARM_GIC_IRQ_SGI_0,
IPI,
RTEMS_INTERRUPT_UNIQUE,
bsp_inter_processor_interrupt,
NULL
  );

  Raspberry Pi 2 does not have the generic interrupt
 controller.
  Interrupt routing will have to be handled differently.
 So I
  wish to understand how/ where it is used. I suppose
 this might
  be the problem.


  Sorry, that the documentation is so scattered.  I think we
 should
  move everything into the CPU Architecture Supplement. It
 would be
  nice if you can help to improve the documentation since you
 have a
  different view point.

  You must install the IPI during the system initialization.
 It is
  raised via the _CPU_SMP_Send_interrupt() function, for an
 example
  see arm-a9mpcore-smp.c.

 I could locate the function in  arm-a9mpcore-smp.c. but it would
 be helpful if I can know where this being called from, a deeper call
 hierarchy, so that I can ascertain this is a problem. I can see a
 Send_messgae function call this. But don't know where the send message is
 being called from.


 You can run one of the SMP tests on the realview_pbx_a9_qemu_smp BSP
 on Qemu and set a break point to _CPU_SMP_Send_interrupt() if you want to
 know how it is used.

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


 --
 Joel Sherrill, Ph.D. Director of Research  Development
 joel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985




 --
 Rohini Kulkarni




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-08-04 Thread Rohini Kulkarni
On 5 Aug 2015 01:47, Gedare Bloom ged...@gwu.edu wrote:

 On Tue, Aug 4, 2015 at 2:18 PM, Rohini Kulkarni krohini1...@gmail.com
wrote:
 
 
  On Tue, Jul 28, 2015 at 5:51 AM, Pavel Pisa ppisa4li...@pikron.com
wrote:
 
  Hello Rohini and Gedare,
 
  On Friday 24 of July 2015 15:33:03 Gedare Bloom wrote:
   What are the values of bsp_section_bss_begin, and
bsp_section_bss_size?
  
   Apparently, the memset is trying to write into the .text (code)
   section, which is a very bad thing to do indeed.
  
 
  Qiao Yang in RPi 1 BSP now works in the similar
  area to enable right graphic memory mapping.
 
  So my guess is that there could be problem caused
  by used MMU mode granularity, which is is 1 MB so
  if RO and RW sections are present in the same 1MB
  aligned block ten there can be problem. It depends
  which section is filled the first. If data and then
  text (RO) the troubles begin. If the order is vice
  versa then some part of text can be RW instead of RO,
  but it should work and cache should not be a problem.
 
  But I have not dig into this case too much.
  Only short glimpse.
 
  One option is to define 1 MB alignment between text
  ad data for RPi case. There is quite a lot of memory
  when compared to most RTEMS embedded targets to the
  waste is not so important.
 
 
  I didn't quite get what this means. I have no clue on how to proceed
with
  this.
 The MMU defines memory regions in 1MB chunks. Each chunk can have its
 own permissions (read-only, or read-write) set. If the .text and .data
 (or some other section) overlaps in the same 1MB chunk, and the wrong
 permission gets set, then there can be a problem e.g. part of .data
 might be RO or part of .text might be RW.

 Did you try the code Sebastian posted? to change the robarrier to
rwbarrier?

Ya, but its not helping either. Actually with the change the boot up is
hanging even with read/write permission for .text section.


 Gedare

 
 
  Best wishes,
 
Pavel
 
  On Friday 24 of July 2015 21:55:00 Rohini Kulkarni wrote:
   Hi,
  
   I have attached the report containing outputs of arm-rtems4.11-size
and
   arm-rtems4.11-nm -S.
  
   From arm-rtems4.11-nm -S I don't see how memset() is accessing .text
   section. The start and end values for both are not overlapping.
  
   On Fri, Jul 24, 2015 at 7:03 PM, Gedare Bloom ged...@gwu.edu wrote:
On Fri, Jul 24, 2015 at 3:30 AM, Rohini Kulkarni
krohini1...@gmail.com
   
wrote:
 On 24 Jul 2015 12:35, Sebastian Huber 
   
sebastian.hu...@embedded-brains.de
   
 wrote:
 On 23/07/15 23:24, Rohini Kulkarni wrote:
 I could finally get back to this issue. I used Pi 1 for
debugging,
 but the reason for this problem will apply to Pi 2 also.
 With text section set to ARMV7_MMU_CODE_CACHED ( which implies
 read
   
only)
   
 , a data abort exception occurs with memset() inside
   
bsp_start_clear_bss()
   
 function. An illegal write access to an address according to
me.

 Which exception and which address? Something is not working
here.

 This is a part of the debugging output. When I used
   
ARMV7_MMU_CODE_CACHED.
   
 (gdb) s
 bsp_start_clear_bss ()
 at
../../../../../.././raspberrypi/lib/include/bsp/start.h:126
 126  memset(bsp_section_bss_begin, 0, (size_t)
 bsp_section_bss_size);
   
What are the values of bsp_section_bss_begin, and
bsp_section_bss_size?
   
Apparently, the memset is trying to write into the .text (code)
section, which is a very bad thing to do indeed.
   
 (gdb) s
 memset (m=0x1157e0, c=0, n=64176)
 at ../../../../../gcc-4.9.2/newlib/libc/string/memset.c:59
 59../../../../../gcc-4.9.2/newlib/libc/string/memset.c: No
such
 file
   
or
   
 directory.
 (gdb) s
 49in ../../../../../gcc-4.9.2/newlib/libc/string/memset.c
 (gdb) s
 _ARMV4_Exception_data_abort_default ()
 at
   
   
   
../../../../../../../../rtems-local/rtems/c/src/../../cpukit/score/cpu/ar
   m/armv4-exception-default.S:71
   
 71subsp, #MORE_CONTEXT_SIZE

 When I set text section flag to ARMV7_MMU_READ_WRITE, the system
 starts
 successfully.

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des
 EHUG.

 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel
 
 
 
 
  --
  Rohini Kulkarni
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel
___
devel mailing

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-08-04 Thread Rohini Kulkarni
On Wed, Aug 5, 2015 at 1:47 AM, Gedare Bloom ged...@gwu.edu wrote:

 On Tue, Aug 4, 2015 at 2:18 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 
 
  On Tue, Jul 28, 2015 at 5:51 AM, Pavel Pisa ppisa4li...@pikron.com
 wrote:
 
  Hello Rohini and Gedare,
 
  On Friday 24 of July 2015 15:33:03 Gedare Bloom wrote:
   What are the values of bsp_section_bss_begin, and
 bsp_section_bss_size?
  
   Apparently, the memset is trying to write into the .text (code)
   section, which is a very bad thing to do indeed.
  
 
  Qiao Yang in RPi 1 BSP now works in the similar
  area to enable right graphic memory mapping.
 
  So my guess is that there could be problem caused
  by used MMU mode granularity, which is is 1 MB so
  if RO and RW sections are present in the same 1MB
  aligned block ten there can be problem. It depends
  which section is filled the first. If data and then
  text (RO) the troubles begin. If the order is vice
  versa then some part of text can be RW instead of RO,
  but it should work and cache should not be a problem.
 
  But I have not dig into this case too much.
  Only short glimpse.
 
  One option is to define 1 MB alignment between text
  ad data for RPi case. There is quite a lot of memory
  when compared to most RTEMS embedded targets to the
  waste is not so important.
 
 
  I didn't quite get what this means. I have no clue on how to proceed with
  this.
 The MMU defines memory regions in 1MB chunks. Each chunk can have its
 own permissions (read-only, or read-write) set. If the .text and .data
 (or some other section) overlaps in the same 1MB chunk, and the wrong
 permission gets set, then there can be a problem e.g. part of .data
 might be RO or part of .text might be RW.

 Did you try the code Sebastian posted? to change the robarrier to
 rwbarrier?


What exactly are these barriers?


 Gedare

 
 
  Best wishes,
 
Pavel
 
  On Friday 24 of July 2015 21:55:00 Rohini Kulkarni wrote:
   Hi,
  
   I have attached the report containing outputs of arm-rtems4.11-size
 and
   arm-rtems4.11-nm -S.
  
   From arm-rtems4.11-nm -S I don't see how memset() is accessing .text
   section. The start and end values for both are not overlapping.
  
   On Fri, Jul 24, 2015 at 7:03 PM, Gedare Bloom ged...@gwu.edu wrote:
On Fri, Jul 24, 2015 at 3:30 AM, Rohini Kulkarni
krohini1...@gmail.com
   
wrote:
 On 24 Jul 2015 12:35, Sebastian Huber 
   
sebastian.hu...@embedded-brains.de
   
 wrote:
 On 23/07/15 23:24, Rohini Kulkarni wrote:
 I could finally get back to this issue. I used Pi 1 for
 debugging,
 but the reason for this problem will apply to Pi 2 also.
 With text section set to ARMV7_MMU_CODE_CACHED ( which implies
 read
   
only)
   
 , a data abort exception occurs with memset() inside
   
bsp_start_clear_bss()
   
 function. An illegal write access to an address according to me.

 Which exception and which address? Something is not working here.

 This is a part of the debugging output. When I used
   
ARMV7_MMU_CODE_CACHED.
   
 (gdb) s
 bsp_start_clear_bss ()
 at ../../../../../.././raspberrypi/lib/include/bsp/start.h:126
 126  memset(bsp_section_bss_begin, 0, (size_t)
 bsp_section_bss_size);
   
What are the values of bsp_section_bss_begin, and
bsp_section_bss_size?
   
Apparently, the memset is trying to write into the .text (code)
section, which is a very bad thing to do indeed.
   
 (gdb) s
 memset (m=0x1157e0, c=0, n=64176)
 at ../../../../../gcc-4.9.2/newlib/libc/string/memset.c:59
 59../../../../../gcc-4.9.2/newlib/libc/string/memset.c: No
 such
 file
   
or
   
 directory.
 (gdb) s
 49in ../../../../../gcc-4.9.2/newlib/libc/string/memset.c
 (gdb) s
 _ARMV4_Exception_data_abort_default ()
 at
   
   
   
 ../../../../../../../../rtems-local/rtems/c/src/../../cpukit/score/cpu/ar
   m/armv4-exception-default.S:71
   
 71subsp, #MORE_CONTEXT_SIZE

 When I set text section flag to ARMV7_MMU_READ_WRITE, the system
 starts
 successfully.

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des
 EHUG.

 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel
 
 
 
 
  --
  Rohini Kulkarni
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-08-04 Thread Rohini Kulkarni
On Tue, Jul 28, 2015 at 5:51 AM, Pavel Pisa ppisa4li...@pikron.com wrote:

 Hello Rohini and Gedare,

 On Friday 24 of July 2015 15:33:03 Gedare Bloom wrote:
  What are the values of bsp_section_bss_begin, and bsp_section_bss_size?
 
  Apparently, the memset is trying to write into the .text (code)
  section, which is a very bad thing to do indeed.
 

 Qiao Yang in RPi 1 BSP now works in the similar
 area to enable right graphic memory mapping.

 So my guess is that there could be problem caused
 by used MMU mode granularity, which is is 1 MB so
 if RO and RW sections are present in the same 1MB
 aligned block ten there can be problem. It depends
 which section is filled the first. If data and then
 text (RO) the troubles begin. If the order is vice
 versa then some part of text can be RW instead of RO,
 but it should work and cache should not be a problem.

 But I have not dig into this case too much.
 Only short glimpse.

 One option is to define 1 MB alignment between text
 ad data for RPi case. There is quite a lot of memory
 when compared to most RTEMS embedded targets to the
 waste is not so important.


I didn't quite get what this means. I have no clue on how to proceed with
this.


 Best wishes,

   Pavel

 On Friday 24 of July 2015 21:55:00 Rohini Kulkarni wrote:
  Hi,
 
  I have attached the report containing outputs of arm-rtems4.11-size and
  arm-rtems4.11-nm -S.
 
  From arm-rtems4.11-nm -S I don't see how memset() is accessing .text
  section. The start and end values for both are not overlapping.
 
  On Fri, Jul 24, 2015 at 7:03 PM, Gedare Bloom ged...@gwu.edu wrote:
   On Fri, Jul 24, 2015 at 3:30 AM, Rohini Kulkarni 
 krohini1...@gmail.com
  
   wrote:
On 24 Jul 2015 12:35, Sebastian Huber 
  
   sebastian.hu...@embedded-brains.de
  
wrote:
On 23/07/15 23:24, Rohini Kulkarni wrote:
I could finally get back to this issue. I used Pi 1 for debugging,
but the reason for this problem will apply to Pi 2 also.
With text section set to ARMV7_MMU_CODE_CACHED ( which implies read
  
   only)
  
, a data abort exception occurs with memset() inside
  
   bsp_start_clear_bss()
  
function. An illegal write access to an address according to me.
   
Which exception and which address? Something is not working here.
   
This is a part of the debugging output. When I used
  
   ARMV7_MMU_CODE_CACHED.
  
(gdb) s
bsp_start_clear_bss ()
at ../../../../../.././raspberrypi/lib/include/bsp/start.h:126
126  memset(bsp_section_bss_begin, 0, (size_t)
bsp_section_bss_size);
  
   What are the values of bsp_section_bss_begin, and bsp_section_bss_size?
  
   Apparently, the memset is trying to write into the .text (code)
   section, which is a very bad thing to do indeed.
  
(gdb) s
memset (m=0x1157e0, c=0, n=64176)
at ../../../../../gcc-4.9.2/newlib/libc/string/memset.c:59
59../../../../../gcc-4.9.2/newlib/libc/string/memset.c: No such
file
  
   or
  
directory.
(gdb) s
49in ../../../../../gcc-4.9.2/newlib/libc/string/memset.c
(gdb) s
_ARMV4_Exception_data_abort_default ()
at
  
  
 ../../../../../../../../rtems-local/rtems/c/src/../../cpukit/score/cpu/ar
  m/armv4-exception-default.S:71
  
71subsp, #MORE_CONTEXT_SIZE
   
When I set text section flag to ARMV7_MMU_READ_WRITE, the system
 starts
successfully.
   
--
Sebastian Huber, embedded brains GmbH
   
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
   
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des
 EHUG.
   
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-07-31 Thread Rohini Kulkarni
Hi,

How is the number of processors to be used for an application specified?
The used count minimum of that supported in hardware and that configured.
How to specify the latter?

Thanks.
On 29 Jul 2015 15:29, Sebastian Huber sebastian.hu...@embedded-brains.de
wrote:



 On 29/07/15 11:52, Rohini Kulkarni wrote:



 On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber 
 sebastian.hu...@embedded-brains.de mailto:
 sebastian.hu...@embedded-brains.de wrote:

 Hello Rohini,

 please use the devel list.

 On 28/07/15 07:41, Rohini Kulkarni wrote:

 Hi,

 I wish to understand where the interprocessor interrupts are
 used during the boot process. During final initialization of
 SMP I can see

 rtems_interrupt_handler_install(
   ARM_GIC_IRQ_SGI_0,
   IPI,
   RTEMS_INTERRUPT_UNIQUE,
   bsp_inter_processor_interrupt,
   NULL
 );

 Raspberry Pi 2 does not have the generic interrupt controller.
 Interrupt routing will have to be handled differently. So I
 wish to understand how/ where it is used. I suppose this might
 be the problem.


 Sorry, that the documentation is so scattered.  I think we should
 move everything into the CPU Architecture Supplement. It would be
 nice if you can help to improve the documentation since you have a
 different view point.

 You must install the IPI during the system initialization. It is
 raised via the _CPU_SMP_Send_interrupt() function, for an example
 see arm-a9mpcore-smp.c.

 I could locate the function in  arm-a9mpcore-smp.c. but it would be
 helpful if I can know where this being called from, a deeper call
 hierarchy, so that I can ascertain this is a problem. I can see a
 Send_messgae function call this. But don't know where the send message is
 being called from.


 You can run one of the SMP tests on the realview_pbx_a9_qemu_smp BSP on
 Qemu and set a break point to _CPU_SMP_Send_interrupt() if you want to know
 how it is used.

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-07-29 Thread Rohini Kulkarni
On Tue, Jul 28, 2015 at 12:24 PM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:

 Hello Rohini,

 please use the devel list.

 On 28/07/15 07:41, Rohini Kulkarni wrote:

 Hi,

 I wish to understand where the interprocessor interrupts are used during
 the boot process. During final initialization of SMP I can see

 rtems_interrupt_handler_install(
   ARM_GIC_IRQ_SGI_0,
   IPI,
   RTEMS_INTERRUPT_UNIQUE,
   bsp_inter_processor_interrupt,
   NULL
 );

 Raspberry Pi 2 does not have the generic interrupt controller. Interrupt
 routing will have to be handled differently. So I wish to understand how/
 where it is used. I suppose this might be the problem.


 Sorry, that the documentation is so scattered.  I think we should move
 everything into the CPU Architecture Supplement. It would be nice if you
 can help to improve the documentation since you have a different view point.

 You must install the IPI during the system initialization. It is raised
 via the _CPU_SMP_Send_interrupt() function, for an example see
 arm-a9mpcore-smp.c.

I could locate the function in  arm-a9mpcore-smp.c. but it would be helpful
if I can know where this being called from, a deeper call hierarchy, so
that I can ascertain this is a problem. I can see a Send_messgae function
call this. But don't know where the send message is being called from.




 Thanks.

 On Wed, Jul 22, 2015 at 7:08 PM, Rohini Kulkarni krohini1...@gmail.com
 mailto:krohini1...@gmail.com wrote:

 Ok. Qemu suggestion seems helpful for the cache configuration
 issue though. I am trying with Pi 1.

 Thanks.

 On 22 Jul 2015 18:59, Sebastian Huber
 sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de wrote:

 Sorry, I cannot help you here since I never worked with a
 Raspberry Pi.

 -- Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne
 des EHUG.




 --
 Rohini Kulkarni


 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-07-24 Thread Rohini Kulkarni
On 24 Jul 2015 12:35, Sebastian Huber sebastian.hu...@embedded-brains.de
wrote:



 On 23/07/15 23:24, Rohini Kulkarni wrote:

 I could finally get back to this issue. I used Pi 1 for debugging, but
 the reason for this problem will apply to Pi 2 also.
 With text section set to ARMV7_MMU_CODE_CACHED ( which implies read only)
 , a data abort exception occurs with memset() inside bsp_start_clear_bss()
 function. An illegal write access to an address according to me.


 Which exception and which address? Something is not working here.


This is a part of the debugging output. When I used ARMV7_MMU_CODE_CACHED.
(gdb) s
bsp_start_clear_bss ()
at ../../../../../.././raspberrypi/lib/include/bsp/start.h:126
126  memset(bsp_section_bss_begin, 0, (size_t) bsp_section_bss_size);
(gdb) s
memset (m=0x1157e0, c=0, n=64176)
at ../../../../../gcc-4.9.2/newlib/libc/string/memset.c:59
59../../../../../gcc-4.9.2/newlib/libc/string/memset.c: No such file or
directory.
(gdb) s
49in ../../../../../gcc-4.9.2/newlib/libc/string/memset.c
(gdb) s
_ARMV4_Exception_data_abort_default ()
at
../../../../../../../../rtems-local/rtems/c/src/../../cpukit/score/cpu/arm/armv4-exception-default.S:71
71subsp, #MORE_CONTEXT_SIZE

When I set text section flag to ARMV7_MMU_READ_WRITE, the system starts
successfully.


 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-07-24 Thread Rohini Kulkarni
On Fri, Jul 24, 2015 at 7:03 PM, Gedare Bloom ged...@gwu.edu wrote:

 On Fri, Jul 24, 2015 at 3:30 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  On 24 Jul 2015 12:35, Sebastian Huber 
 sebastian.hu...@embedded-brains.de
  wrote:
 
 
 
  On 23/07/15 23:24, Rohini Kulkarni wrote:
 
  I could finally get back to this issue. I used Pi 1 for debugging, but
  the reason for this problem will apply to Pi 2 also.
  With text section set to ARMV7_MMU_CODE_CACHED ( which implies read
 only)
  , a data abort exception occurs with memset() inside
 bsp_start_clear_bss()
  function. An illegal write access to an address according to me.
 
 
  Which exception and which address? Something is not working here.
 
 
  This is a part of the debugging output. When I used
 ARMV7_MMU_CODE_CACHED.
  (gdb) s
  bsp_start_clear_bss ()
  at ../../../../../.././raspberrypi/lib/include/bsp/start.h:126
  126  memset(bsp_section_bss_begin, 0, (size_t) bsp_section_bss_size);
 What are the values of bsp_section_bss_begin, and bsp_section_bss_size?

 Apparently, the memset is trying to write into the .text (code)
 section, which is a very bad thing to do indeed.

  (gdb) s
  memset (m=0x1157e0, c=0, n=64176)


These memset parameters indicate the start location bsp_section_bss_begin
and size of bss section bsp_section_bss_size.


 at ../../../../../gcc-4.9.2/newlib/libc/string/memset.c:59
  59../../../../../gcc-4.9.2/newlib/libc/string/memset.c: No such file
 or
  directory.
  (gdb) s
  49in ../../../../../gcc-4.9.2/newlib/libc/string/memset.c
  (gdb) s
  _ARMV4_Exception_data_abort_default ()
  at
 
 ../../../../../../../../rtems-local/rtems/c/src/../../cpukit/score/cpu/arm/armv4-exception-default.S:71
  71subsp, #MORE_CONTEXT_SIZE
 
  When I set text section flag to ARMV7_MMU_READ_WRITE, the system starts
  successfully.
 
 
  --
  Sebastian Huber, embedded brains GmbH
 
  Address : Dornierstr. 4, D-82178 Puchheim, Germany
  Phone   : +49 89 189 47 41-16
  Fax : +49 89 189 47 41-09
  E-Mail  : sebastian.hu...@embedded-brains.de
  PGP : Public key available on request.
 
  Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
 
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-07-23 Thread Rohini Kulkarni
On Tue, Jun 23, 2015 at 4:27 PM, Rohini Kulkarni krohini1...@gmail.com
wrote:




 On Tue, Jun 23, 2015 at 1:44 PM, Sebastian Huber 
 sebastian.hu...@embedded-brains.de wrote:

 Please avoid unnecessary white-space changes and white-space at the end
 of line.

 Something went wrong with the whitespace. I couldn't see that change in
 my code. I'll rectify it.


 On 22/06/15 22:59, Rohini Kulkarni wrote:

 ---
  .../arm/raspberrypi/startup/mm_config_table.c  |   18
 +++
  c/src/lib/libbsp/arm/shared/mminit.c   |   23
 
  2 files changed, 32 insertions(+), 9 deletions(-)

 diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 index 8a6d37a..dd1941e 100644
 --- a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 @@ -31,39 +31,39 @@ const arm_cp15_start_section_config
 arm_cp15_start_mmu_config_table[] = {
}, {
  .begin = (uint32_t) bsp_section_fast_data_begin,
  .end = (uint32_t) bsp_section_fast_data_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_start_begin,
  .end = (uint32_t) bsp_section_start_end,
 -.flags = ARMV7_MMU_CODE_CACHED
 +.flags = ARMV7_MMU_CODE_CACHED
}, {
  .begin = (uint32_t) bsp_section_vector_begin,
  .end = (uint32_t) bsp_section_vector_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_text_begin,
  .end = (uint32_t) bsp_section_text_end,
 -.flags = ARMV7_MMU_READ_WRITE
 +.flags = ARMV7_MMU_READ_WRITE | ARM_MMU_SECT_C | ARM_MMU_SECT_B


 Why is this not ARMV7_MMU_CODE_CACHED?  Why can't this BSP use
 ARMV7_CP15_START_DEFAULT_SECTIONS?

 One question that came up when I figured out last night that this was the
 only required change. This was the only uncached normal memory section in
 the table. So there were many changes I tried before I made this cacheable.
 Why was it not made cacheable (MMU_CODE_CACHED is read only. But then yes,
 why is this made read write, differently from
 ARMV7_CP15_START_DEFAULT_SECTIONS)


I could finally get back to this issue. I used Pi 1 for debugging, but the
reason for this problem will apply to Pi 2 also.
With text section set to ARMV7_MMU_CODE_CACHED ( which implies read only) ,
a data abort exception occurs with memset() inside bsp_start_clear_bss()
function. An illegal write access to an address according to me.
Making this text section ARMV7_MMU_READ_WRITE causes no problem.


 The TEX bits 2 and 1 have been assigned the value for cacheable memory but
 are used in the defines for CACHED sections.



 }, {
  .begin = (uint32_t) bsp_section_rodata_begin,
  .end = (uint32_t) bsp_section_rodata_end,
 -.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
 +.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
}, {
  .begin = (uint32_t) bsp_section_data_begin,
  .end = (uint32_t) bsp_section_data_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_bss_begin,
  .end = (uint32_t) bsp_section_bss_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_work_begin,
  .end = (uint32_t) bsp_section_work_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_stack_begin,
  .end = (uint32_t) bsp_section_stack_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = RPI_PERIPHERAL_BASE,
  .end =   RPI_PERIPHERAL_BASE + RPI_PERIPHERAL_SIZE,
 diff --git a/c/src/lib/libbsp/arm/shared/mminit.c
 b/c/src/lib/libbsp/arm/shared/mminit.c
 index acfbfc0..96ca1ec 100644
 --- a/c/src/lib/libbsp/arm/shared/mminit.c
 +++ b/c/src/lib/libbsp/arm/shared/mminit.c
 @@ -13,6 +13,28 @@
  #include bsp/linker-symbols.h
  #include bsp/mm.h

 +#if (BSP_IS_RPI2 == 1)


 Such a construct in a shared folder makes no sense.


 Thats right. Will change the integration for the two memory
 initializations


  +BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
 +{
 +  /* Enable SMP in auxiliary control */
 +  uint32_t actlr = arm_cp15_get_auxiliary_control();
 +  actlr |= ARM_CORTEX_A9_ACTL_SMP;
 +  arm_cp15_set_auxiliary_control(actlr);
 +
 +  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
 +ARM_CP15_CTRL_A,
 +ARM_CP15_CTRL_AFE| ARM_CP15_CTRL_Z
 +  );
 +
 + arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
 +ctrl,
 +(uint32_t *) bsp_translation_table_base,
 +ARM_MMU_DEFAULT_CLIENT_DOMAIN,
 +arm_cp15_start_mmu_config_table[0

Raspberry Pi 2 SMP debug

2015-07-22 Thread Rohini Kulkarni
Hi,

I need to debug my code to check what is going wrong with SMP
initialization. Any suggestions on how I can go about this in the absence
of actual debugging hardware?

Thanks.

-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-07-12 Thread Rohini Kulkarni
Hi,

I don't have #define RTEMS_SMP 1 in cpuopts.h.

Have made changes only to libbsp/arm/raspberrypi/configure .

On Sun, Jul 12, 2015 at 1:50 AM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:

 In the build tree, there are exactly two identical cpuopts.h files. In
 this file you must find a:

 /* if SMP is enabled */
 #define RTEMS_SMP 1

 --

 Sebastian Huber, embedded brains GmbH


 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.huber at embedded-brains.de 
 http://lists.rtems.org/mailman/listinfo/devel
 PGP : Public key available on request.


 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] Code refactor: Changes to memory management initialization

2015-07-12 Thread Rohini Kulkarni
Hi,

Please review the changes. I will work on the suggestions and make the
required modifications.

Thanks.
On 9 Jul 2015 19:24, krohini1...@gmail.com wrote:

From: Rohini Kulkarni krohini1...@gmail.com

---
 c/src/lib/libbsp/arm/raspberrypi/Makefile.am   |1 +
 c/src/lib/libbsp/arm/raspberrypi/include/bsp.h |   14 
 .../libbsp/arm/raspberrypi/startup/bspstarthooks.c |8 ++---
 .../libbsp/arm/raspberrypi/startup/bspstartmmu.c   |   34

 c/src/lib/libbsp/arm/shared/mminit.c   |   20 
 c/src/lib/libbsp/shared/include/mm.h   |6 +++-
 6 files changed, 65 insertions(+), 18 deletions(-)
 create mode 100644 c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c

diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
index d59263c..74545d6 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
+++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
@@ -131,6 +131,7 @@ libbsp_a_CPPFLAGS +=
-I$(srcdir)/../../../libcpu/arm/shared/include

 # Start hooks
 libbsp_a_SOURCES += startup/bspstarthooks.c
+libbsp_a_SOURCES += startup/bspstartmmu.c

 # LIBMM
 libbsp_a_SOURCES += startup/mm_config_table.c
diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
index c05a410..410d9ab 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
+++ b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
@@ -33,12 +33,6 @@ extern C {

 #define BSP_FEATURE_IRQ_EXTENSION

-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */
-
 /**
  * @defgroup arm_raspberrypi Raspberry Pi Support
  *
@@ -47,3 +41,11 @@ extern C {
  * @brief Raspberry Pi support package
  *
  */
+
+void raspberrypi_setup_mmu_and_cache(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c
b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c
index 047c8ad..107649f 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c
@@ -26,15 +26,15 @@
 #include bsp/start.h
 #include bsp/raspberrypi.h
 #include bsp/mm.h
+#include bsp.h

 void BSP_START_TEXT_SECTION bsp_start_hook_0(void)
-{
+{
 }

-
 void BSP_START_TEXT_SECTION bsp_start_hook_1(void)
 {
   bsp_start_copy_sections();
-  bsp_memory_management_initialize();
+  raspberrypi_setup_mmu_and_cache();
   bsp_start_clear_bss();
-}
+}
\ No newline at end of file
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c
b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c
new file mode 100644
index 000..3741070
--- /dev/null
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c
@@ -0,0 +1,34 @@
+#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
+
+#include bsp/start.h
+#include bsp/arm-cp15-start.h
+#include bsp/linker-symbols.h
+#include libcpu/arm-cp15.h
+#include bsp/mm.h
+#include bsp.h
+
+void raspberrypi_setup_mmu_and_cache(void)
+{
+  uint32_t bsp_initial_mmu_ctrl_set;
+  uint32_t bsp_initial_mmu_ctrl_clear;
+  uint32_t domain_set;
+
+#if (BSP_IS_RPI2 == 1)
+  /* Enable SMP in auxiliary control */
+  uint32_t actlr = arm_cp15_get_auxiliary_control();
+  actlr |= ARM_CORTEX_A9_ACTL_SMP;
+  arm_cp15_set_auxiliary_control(actlr);
+  bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
+  bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z;
+#else
+  bsp_initial_mmu_ctrl_clear = 0;
+  bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S |
ARM_CP15_CTRL_XP;
+#endif
+  domain_set = ARM_MMU_DEFAULT_CLIENT_DOMAIN;
+
+  bsp_memory_management_initialize(
+bsp_initial_mmu_ctrl_set,
+bsp_initial_mmu_ctrl_clear,
+domain_set
+  );
+}
\ No newline at end of file
diff --git a/c/src/lib/libbsp/arm/shared/mminit.c
b/c/src/lib/libbsp/arm/shared/mminit.c
index acfbfc0..b477482 100644
--- a/c/src/lib/libbsp/arm/shared/mminit.c
+++ b/c/src/lib/libbsp/arm/shared/mminit.c
@@ -11,19 +11,25 @@
 #include bsp/start.h
 #include bsp/arm-cp15-start.h
 #include bsp/linker-symbols.h
+#include libcpu/arm-cp15.h
 #include bsp/mm.h

-BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
-{
-  uint32_t ctrl = arm_cp15_get_control();
-
-  ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP;

+BSP_START_TEXT_SECTION void bsp_memory_management_initialize(
+  uint32_t bsp_initial_mmu_ctrl_set,
+  uint32_t bsp_initial_mmu_ctrl_clear,
+  uint32_t domain_set
+)
+{
+  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
+bsp_initial_mmu_ctrl_clear,
+bsp_initial_mmu_ctrl_set  );
+
   arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
 ctrl,
 (uint32_t *) bsp_translation_table_base,
-ARM_MMU_DEFAULT_CLIENT_DOMAIN,
+domain_set,
 arm_cp15_start_mmu_config_table[0],
 arm_cp15_start_mmu_config_table_size
   );
-}
+}
\ No newline at end

Re: SMP support for Raspberry Pi 2

2015-07-11 Thread Rohini Kulkarni
Hi,

I am building with the --enable-smp option. But RTEMS_SMP is not getting
defined.
I have referred to the configure files of other BSPs which includes the
script for --enable-smp option and changed the configure script for
raspberry pi. What can be the reason, I am unable to understand what I am
missing.

Thanks.
On 3 Jul 2015 22:43, Joel Sherrill joel.sherr...@oarcorp.com wrote:



 On July 3, 2015 11:53:07 AM CDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 Any help that I can with this?
 
 On 1 Jul 2015 16:59, Rohini Kulkarni krohini1...@gmail.com wrote:
 
 Hi all,
 
 I wish to know where the maximum number of processors for a variant are
 configured. I took a look at some configure scripts. I could see the
 processor count defined for xilinx-zynq in its configuration file as
 ZYNQ_CPUS=2.

 This looks to be BSP specific and could originate in configure.ac or a .h
 file.

 It is likely that each BSP has an underlying hardware limit.

 
 rtems_configuration_get_maximum_processors() called in gets this
 configured number. But I don't know from where.

 This is set initially based on the confdefs.h parameter
 CONFIGURE_SMP_MAXIMUM_PROCESSORS or something close to that (on phone).

 Ultimately the maximum CPUs for an application is the lower of those
 available or RTEMS is configured for.

 Also where is RTEMS_SMP defined for a bsp?

 A side-effect of building with --enable-smp.


 Thanks.
 
 
 --
 
 Rohini Kulkarni

 --joel

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: Code refactor for ARM bsp MMU initialization

2015-07-09 Thread Rohini Kulkarni
Hi,

I have made the suggested changes.

git send-email is failing to send the patch, need to settle it. Please
review the attached file.

Thanks.

On Wed, Jul 8, 2015 at 7:04 PM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:



 On 08/07/15 15:10, Rohini Kulkarni wrote:



 On Wed, Jul 8, 2015 at 6:29 PM, Sebastian Huber
 sebastian.hu...@embedded-brains.de
 mailto:sebastian.hu...@embedded-brains.de wrote:

 Hello Rohini,

 please use git format-patch to generate the patches.

 Actually,that is what I have used. I pasted the patch here from the
 resulting file.


 Better use git send-email, or send the file as is since this will preserve
 the commit message and author.



 On 08/07/15 14:44, Rohini Kulkarni wrote:

 +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c
 @@ -0,0 +1,30 @@
 +#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
 +
 +#include bsp/start.h
 +#include bsp/arm-cp15-start.h
 +#include bsp/linker-symbols.h
 +#include libcpu/arm-cp15.h
 +#include bsp/mm.h
 +#include bsp.h
 +
 +uint32_t bsp_initial_mmu_ctrl_set;
 +uint32_t bsp_initial_mmu_ctrl_clear;
 +uint32_t domain_set;
 +
 +void raspberrypi_setup_mmu_and_cache(void)
 +{
 +#if (BSP_IS_RPI2 == 1)
 +  /* Enable SMP in auxiliary control */
 +  uint32_t actlr = arm_cp15_get_auxiliary_control();
 +  actlr |= ARM_CORTEX_A9_ACTL_SMP;
 +  arm_cp15_set_auxiliary_control(actlr);
 +  bsp_initial_mmu_ctrl_clear = ARM_CP15_CTRL_A;
 +  bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z;
 +#else
 +  bsp_initial_mmu_ctrl_clear = 0;
 +  bsp_initial_mmu_ctrl_set = ARM_CP15_CTRL_AFE |
 ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP;
 +#endif
 +  domain_set = ARM_MMU_DEFAULT_CLIENT_DOMAIN;
 +
 +  bsp_memory_management_initialize();
 +}


 Is there a reason, why you use global variables instead of
 function parameters?

 I have set them as extern in mm.h and are directly used in mminit.c
 instead of being passed to bsp_memory_management_initialize. They will
 be set by the bsp the source is being compiled for.


 You should avoid global variables and functions in general. I don't see a
 necessity for them here.

 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
From fa03daaa813419a0996e0b5cad0025ef85eebfbe Mon Sep 17 00:00:00 2001
From: RCK rck@ubuntu.(none)
Date: Thu, 9 Jul 2015 17:16:49 +0530
Subject: [PATCH 15/15] Code refactor: Changes to memory management initialization

---
 c/src/lib/libbsp/arm/raspberrypi/Makefile.am   |1 +
 c/src/lib/libbsp/arm/raspberrypi/include/bsp.h |   14 
 .../libbsp/arm/raspberrypi/startup/bspstarthooks.c |8 ++---
 .../libbsp/arm/raspberrypi/startup/bspstartmmu.c   |   34 
 c/src/lib/libbsp/arm/shared/mminit.c   |   20 
 c/src/lib/libbsp/shared/include/mm.h   |6 +++-
 6 files changed, 65 insertions(+), 18 deletions(-)
 create mode 100644 c/src/lib/libbsp/arm/raspberrypi/startup/bspstartmmu.c

diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
index d59263c..74545d6 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
+++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am
@@ -131,6 +131,7 @@ libbsp_a_CPPFLAGS += -I$(srcdir)/../../../libcpu/arm/shared/include
 
 # Start hooks
 libbsp_a_SOURCES += startup/bspstarthooks.c
+libbsp_a_SOURCES += startup/bspstartmmu.c
 
 # LIBMM
 libbsp_a_SOURCES += startup/mm_config_table.c
diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
index c05a410..410d9ab 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
+++ b/c/src/lib/libbsp/arm/raspberrypi/include/bsp.h
@@ -33,12 +33,6 @@ extern C {
 
 #define BSP_FEATURE_IRQ_EXTENSION
 
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */
-
 /**
  * @defgroup arm_raspberrypi Raspberry Pi Support
  *
@@ -47,3 +41,11 @@ extern C {
  * @brief Raspberry Pi support package
  *
  */
+
+void raspberrypi_setup_mmu_and_cache(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* LIBBSP_ARM_RASPBERRYPI_BSP_H */
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c b/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c
index 047c8ad..107649f 100644
--- a/c/src

Code refactor for ARM bsp MMU initialization

2015-07-08 Thread Rohini Kulkarni
 C {
  *  @brief MM Support Package
  */

+extern uint32_t bsp_initial_mmu_ctrl_set;
+extern uint32_t bsp_initial_mmu_ctrl_clear;
+extern uint32_t domain_set;
+
 void bsp_memory_management_initialize(void);

 #ifdef __cplusplus
-- 
1.7.9.5


-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: SMP support for Raspberry Pi 2

2015-07-08 Thread Rohini Kulkarni
On Wed, Jul 8, 2015 at 6:25 PM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:



 On 08/07/15 14:54, Rohini Kulkarni wrote:

 This piece of code gets the configured number of CPUs. I suppose this
 number is not specified and will have to be specified by me somewhere in
 the configurations. But I am unable to find out where.


 For examples, please have a look at testsuite/smptests.

Umm,I don't see how the smptests will help figure out where to configure
the number of processors. Don't they just use the number already configured
for the variant.


 --
 Sebastian Huber, embedded brains GmbH

 Address : Dornierstr. 4, D-82178 Puchheim, Germany
 Phone   : +49 89 189 47 41-16
 Fax : +49 89 189 47 41-09
 E-Mail  : sebastian.hu...@embedded-brains.de
 PGP : Public key available on request.

 Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

SMP on ARM

2015-06-23 Thread Rohini Kulkarni
Hi all,

I am trying to understand boot up for ARM BSPs so as to be able to
implement SMP support for Pi 2.

Please correct me where I am wrong. (It is verbose. But I have tried to
make things as clear as I could)

[1] From start.S for ARM, all cores start together. They run the bsp_start
hook 0 and 1 and then go to boot_card() .
boot_card() calls rtems_data_sructure_initialize() which further does SMP
related initilazations.

[2] the bsp_start_hooks include cpu initialization for cache/mmu etc. This
is done for all cores before SMP initializations from boot_card(). For
Raspberry Pi 2, only primary core, which is core 0, will run after reset,
while other cores will wait for a jump address from where to execute.
I need to ensure the sequence remains consistent for Pi 2. So before
boot_card is called() , I need to get other cores to do the initialization
from start.S while core0 waits. Is there something else that can be done?

[3] Where do the other cores start waiting for an interrupt from primary
core. Where does the interprocessor interrupt come into picture.

Thanks!
-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: [PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-06-23 Thread Rohini Kulkarni
On Tue, Jun 23, 2015 at 1:44 PM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:

 Please avoid unnecessary white-space changes and white-space at the end of
 line.

 Something went wrong with the whitespace. I couldn't see that change in my
code. I'll rectify it.


 On 22/06/15 22:59, Rohini Kulkarni wrote:

 ---
  .../arm/raspberrypi/startup/mm_config_table.c  |   18 +++
  c/src/lib/libbsp/arm/shared/mminit.c   |   23
 
  2 files changed, 32 insertions(+), 9 deletions(-)

 diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 index 8a6d37a..dd1941e 100644
 --- a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
 @@ -31,39 +31,39 @@ const arm_cp15_start_section_config
 arm_cp15_start_mmu_config_table[] = {
}, {
  .begin = (uint32_t) bsp_section_fast_data_begin,
  .end = (uint32_t) bsp_section_fast_data_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_start_begin,
  .end = (uint32_t) bsp_section_start_end,
 -.flags = ARMV7_MMU_CODE_CACHED
 +.flags = ARMV7_MMU_CODE_CACHED
}, {
  .begin = (uint32_t) bsp_section_vector_begin,
  .end = (uint32_t) bsp_section_vector_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_text_begin,
  .end = (uint32_t) bsp_section_text_end,
 -.flags = ARMV7_MMU_READ_WRITE
 +.flags = ARMV7_MMU_READ_WRITE | ARM_MMU_SECT_C | ARM_MMU_SECT_B


 Why is this not ARMV7_MMU_CODE_CACHED?  Why can't this BSP use
 ARMV7_CP15_START_DEFAULT_SECTIONS?

 One question that came up when I figured out last night that this was the
only required change. This was the only uncached normal memory section in
the table. So there were many changes I tried before I made this cacheable.
Why was it not made cacheable (MMU_CODE_CACHED is read only. But then yes,
why is this made read write, differently from
ARMV7_CP15_START_DEFAULT_SECTIONS)

The TEX bits 2 and 1 have been assigned the value for cacheable memory but
are used in the defines for CACHED sections.



 }, {
  .begin = (uint32_t) bsp_section_rodata_begin,
  .end = (uint32_t) bsp_section_rodata_end,
 -.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
 +.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
}, {
  .begin = (uint32_t) bsp_section_data_begin,
  .end = (uint32_t) bsp_section_data_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_bss_begin,
  .end = (uint32_t) bsp_section_bss_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_work_begin,
  .end = (uint32_t) bsp_section_work_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = (uint32_t) bsp_section_stack_begin,
  .end = (uint32_t) bsp_section_stack_end,
 -.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
 +.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
}, {
  .begin = RPI_PERIPHERAL_BASE,
  .end =   RPI_PERIPHERAL_BASE + RPI_PERIPHERAL_SIZE,
 diff --git a/c/src/lib/libbsp/arm/shared/mminit.c
 b/c/src/lib/libbsp/arm/shared/mminit.c
 index acfbfc0..96ca1ec 100644
 --- a/c/src/lib/libbsp/arm/shared/mminit.c
 +++ b/c/src/lib/libbsp/arm/shared/mminit.c
 @@ -13,6 +13,28 @@
  #include bsp/linker-symbols.h
  #include bsp/mm.h

 +#if (BSP_IS_RPI2 == 1)


 Such a construct in a shared folder makes no sense.


Thats right. Will change the integration for the two memory initializations


  +BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
 +{
 +  /* Enable SMP in auxiliary control */
 +  uint32_t actlr = arm_cp15_get_auxiliary_control();
 +  actlr |= ARM_CORTEX_A9_ACTL_SMP;
 +  arm_cp15_set_auxiliary_control(actlr);
 +
 +  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
 +ARM_CP15_CTRL_A,
 +ARM_CP15_CTRL_AFE| ARM_CP15_CTRL_Z
 +  );
 +
 + arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
 +ctrl,
 +(uint32_t *) bsp_translation_table_base,
 +ARM_MMU_DEFAULT_CLIENT_DOMAIN,
 +arm_cp15_start_mmu_config_table[0],
 +arm_cp15_start_mmu_config_table_size
 +  );
 +}
 +#else
  BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
  {
uint32_t ctrl = arm_cp15_get_control();
 @@ -27,3 +49,4 @@ BSP_START_TEXT_SECTION void
 bsp_memory_management_initialize(void)
  arm_cp15_start_mmu_config_table_size
);
  }
 +#endif
 \ No newline at end of file
 --
 1.7.9.5

 --
 Rohini Kulkarni


 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org

[PATCH] GSoC: Cache configurations Raspberry Pi 2 support

2015-06-22 Thread Rohini Kulkarni
---
 .../arm/raspberrypi/startup/mm_config_table.c  |   18 +++
 c/src/lib/libbsp/arm/shared/mminit.c   |   23

 2 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
index 8a6d37a..dd1941e 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
@@ -31,39 +31,39 @@ const arm_cp15_start_section_config
arm_cp15_start_mmu_config_table[] = {
   }, {
 .begin = (uint32_t) bsp_section_fast_data_begin,
 .end = (uint32_t) bsp_section_fast_data_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_start_begin,
 .end = (uint32_t) bsp_section_start_end,
-.flags = ARMV7_MMU_CODE_CACHED
+.flags = ARMV7_MMU_CODE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_vector_begin,
 .end = (uint32_t) bsp_section_vector_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_text_begin,
 .end = (uint32_t) bsp_section_text_end,
-.flags = ARMV7_MMU_READ_WRITE
+.flags = ARMV7_MMU_READ_WRITE | ARM_MMU_SECT_C | ARM_MMU_SECT_B
   }, {
 .begin = (uint32_t) bsp_section_rodata_begin,
 .end = (uint32_t) bsp_section_rodata_end,
-.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
+.flags = ARMV7_MMU_DATA_READ_ONLY_CACHED
   }, {
 .begin = (uint32_t) bsp_section_data_begin,
 .end = (uint32_t) bsp_section_data_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_bss_begin,
 .end = (uint32_t) bsp_section_bss_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_work_begin,
 .end = (uint32_t) bsp_section_work_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = (uint32_t) bsp_section_stack_begin,
 .end = (uint32_t) bsp_section_stack_end,
-.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
+.flags = ARMV7_MMU_DATA_READ_WRITE_CACHED
   }, {
 .begin = RPI_PERIPHERAL_BASE,
 .end =   RPI_PERIPHERAL_BASE + RPI_PERIPHERAL_SIZE,
diff --git a/c/src/lib/libbsp/arm/shared/mminit.c
b/c/src/lib/libbsp/arm/shared/mminit.c
index acfbfc0..96ca1ec 100644
--- a/c/src/lib/libbsp/arm/shared/mminit.c
+++ b/c/src/lib/libbsp/arm/shared/mminit.c
@@ -13,6 +13,28 @@
 #include bsp/linker-symbols.h
 #include bsp/mm.h

+#if (BSP_IS_RPI2 == 1)
+BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
+{
+  /* Enable SMP in auxiliary control */
+  uint32_t actlr = arm_cp15_get_auxiliary_control();
+  actlr |= ARM_CORTEX_A9_ACTL_SMP;
+  arm_cp15_set_auxiliary_control(actlr);
+
+  uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
+ARM_CP15_CTRL_A,
+ARM_CP15_CTRL_AFE| ARM_CP15_CTRL_Z
+  );
+
+  arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(
+ctrl,
+(uint32_t *) bsp_translation_table_base,
+ARM_MMU_DEFAULT_CLIENT_DOMAIN,
+arm_cp15_start_mmu_config_table[0],
+arm_cp15_start_mmu_config_table_size
+  );
+}
+#else
 BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)
 {
   uint32_t ctrl = arm_cp15_get_control();
@@ -27,3 +49,4 @@ BSP_START_TEXT_SECTION void
bsp_memory_management_initialize(void)
 arm_cp15_start_mmu_config_table_size
   );
 }
+#endif
\ No newline at end of file
-- 
1.7.9.5

-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-21 Thread Rohini Kulkarni
Hello,

Are these the relevant functions from
~/rtems/cpukit/score/cpu/arm/rtems/score/cpu.h?
_CPU_SMP_Get_current_processor()
_CPU_SMP_Send_interrupt()
_CPU_SMP_Processor_event_broadcast()
_CPU_SMP_Processor_event_receive()

I am unable to understand how
~/rtems/cpukit/score/cpu/no_cpu/rtems/score/no_cpu.h can be used.

And am I right if I say these are in addition to what I have identified?

Thanks!


On Sun, Jun 21, 2015 at 12:50 PM, Sebastian Huber 
sebastian.hu...@embedded-brains.de wrote:

 Hello Rohini,

 the CPU functions relevant for SMP are documented in the no_cpu/cpu.h file.

 - Am 20. Jun 2015 um 22:02 schrieb Rohini Kulkarni 
 krohini1...@gmail.com:

 Hi,

 I have added an SMP related post to my blog to define where exactly in the
 code I need to work. Some feedback to indicate if I am identifying the work
 area correctly would be very helpful!




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-21 Thread Rohini Kulkarni
Hi all,

I have managed to get a significant performance improvement with some
changes in configurations.

The measured time was for dhrystones reduced from 12 to too small to be
measured 

For dhrystones the time was 0.4.

The number of dhrystones per second increased from approximately 8 to
250 :)

Thanks!

On Sun, Jun 21, 2015 at 1:32 AM, Rohini Kulkarni krohini1...@gmail.com
wrote:

 Hi,

 I have added an SMP related post to my blog to define where exactly in the
 code I need to work. Some feedback to indicate if I am identifying the work
 area correctly would be very helpful!

 Thanks!
  On 18 Jun 2015 03:37, Rohini Kulkarni krohini1...@gmail.com wrote:

 Hi all,

 I have updated my blog to reflect my understanding and attempts for cache
 performance issue.

 Lately I have been trying around memory attributes for the
 mm_config_table. One set of configurations for cacheable memory (inner and
 outer levels)ended up reducing performance further ( which I really thought
 would improve). So this table set up certainly controls performance.

 The results are not improving after turning on cache. So memory sections
 are perhaps not even getting cached.
 I get a feeling it has got to do with this mm_config_table.

 Updates from the github code and blog might help in further discussion.

 Link to github code:https://github.com/krohini1593/rtems/tree/rohini

 Link to Blog http://rohiniwithrpi2.blogspot.in/p/blog-page_3.html

 Thanks!

 On Mon, Jun 15, 2015 at 8:29 PM, Alan Cudmore alan.cudm...@gmail.com
 wrote:

 Hi,
 Some of the code examples may give you some clues. Like this one:
 https://github.com/mrvn/test/blob/master/smp.cc

 Or this:
 https://github.com/PeterLemon/RaspberryPi/tree/master/SMP/SMPINIT

 If you still can't figure it out, you can always join the
 raspberrypi.org forums and ask on this thread:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 When it comes to the Pi 2 and SMP, you are our RTEMS expert :)

 Thanks,
 Alan


 On Sat, Jun 13, 2015 at 2:29 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Hi,

 This is regarding Pi 2 SMP support. After powering on, the secondary
 mailboxes read one of their four mailbox registers and wait for a non-zero
 content to be written. This content is to be the physical address of the
 location from where the cores are expected to start execution.

 I am stuck at figuring out this address. How should I go about
 understanding this?

 Thanks!
 On 3 Jun 2015 19:44, Gedare Bloom ged...@gwu.edu wrote:

 On Wed, Jun 3, 2015 at 2:39 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  But, I can't say cache configurations have a role here.
 
  I'll push my code to my github project soon.
 
  P.S. The Pi2 board I possess seems to have broken down. It just isn't
  turning on. Unable to test further. Will order one immediately.
 
 Ouch. Make sure you put it in a safe space for development, clear of
 threats like moisture, static shock, and cats.

  On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 
  Hi,
 
  Alan, your suggestion has resulted in much improvement
 
  arm_control=0x1000
 
  This has simply worked! Looks like the other cores were taking up
 plenty
  of time.
  I was aware from references that the other cores run a WFI, but ya,
 did
  not get its impact.
  Time for each dhrystone has reduced to 7 from 13 and the no of
 dhrystones
  per second also increased.
 
  But this is a change only in the config.txt not actually in the
 boot code.
 
  Thanks
 
  Rohini
 
 
 
  On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore 
 alan.cudm...@gmail.com
  wrote:
 
  The caches are being enabled on the RPI 1 BSP. The same code is
 being
  executed by the RPI 2 BSP, but obviously it’s not sufficient for
 the cache
  setup.
  I have been reading through this long thread, and it is very
 informative:
  https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
 
  I am starting to understand the setup that is required to enable
 caches
  on the RPI 2. For example this message near the bottom of page 3
 gives a
  good indication of the speedup available by configuring the MMU
 and caches
  correctly:
  Quote from above thread
  --
  Enabling I/D caches and branch prediction, just like the julia
 demo uses,
  it takes ~12 seconds, or ~21 fps. It's just one core but also a
 much smaller
  loop than the julia demo has.
 
  Enabling the MMU and mapping memory inner/outer write-back, write
  allocate and the framebuffer inner write-through, no write
 allocate + outer
  write-back, write-allocate it takes ~8 seconds, of 32 fps.
 
  PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2
 cache
  effect.
  -
  End of quote
 
  The person who posted the above comment (mrvn) posted the code
 here:
  https://github.com/mrvn/test/blob/master/mmu.cc
 
 
  Also, it seems that when the Pi 2 starts up, cores 1-3 are put in
 a wait
  loop always accessing the bus. By putting this option

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-21 Thread Rohini Kulkarni
:)
There is very little code that had to be added.
I need to clean the code and add conditional call for Pi 2. Then I would be
ready to submit a patch.
 On 22 Jun 2015 00:52, Gedare Bloom ged...@gwu.edu wrote:

 On Sun, Jun 21, 2015 at 3:04 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  I missed mentioning the number of dhrystones in the previous mail.
 
  Originally it was 1 million.
  The new number of dhrystones I executed is 100 million.
 
 The next thing to do is to figure out what changes are contributing to
 the performance improvement, and then prepare patches. :) Great work

  On Mon, Jun 22, 2015 at 12:29 AM, Rohini Kulkarni krohini1...@gmail.com
 
  wrote:
 
  Hi all,
 
  I have managed to get a significant performance improvement with some
  changes in configurations.
 
  The measured time was for dhrystones reduced from 12 to too small to be
  measured 
 
  For dhrystones the time was 0.4.
 
  The number of dhrystones per second increased from approximately 8
 to
  250 :)
 
  Thanks!
 
  On Sun, Jun 21, 2015 at 1:32 AM, Rohini Kulkarni krohini1...@gmail.com
 
  wrote:
 
  Hi,
 
  I have added an SMP related post to my blog to define where exactly in
  the code I need to work. Some feedback to indicate if I am identifying
 the
  work area correctly would be very helpful!
 
  Thanks!
 
  On 18 Jun 2015 03:37, Rohini Kulkarni krohini1...@gmail.com wrote:
 
  Hi all,
 
  I have updated my blog to reflect my understanding and attempts for
  cache performance issue.
 
  Lately I have been trying around memory attributes for the
  mm_config_table. One set of configurations for cacheable memory
 (inner and
  outer levels)ended up reducing performance further ( which I really
 thought
  would improve). So this table set up certainly controls performance.
 
  The results are not improving after turning on cache. So memory
 sections
  are perhaps not even getting cached.
  I get a feeling it has got to do with this mm_config_table.
 
  Updates from the github code and blog might help in further
 discussion.
 
  Link to github code:https://github.com/krohini1593/rtems/tree/rohini
 
  Link to Blog
 
  Thanks!
 
  On Mon, Jun 15, 2015 at 8:29 PM, Alan Cudmore alan.cudm...@gmail.com
 
  wrote:
 
  Hi,
  Some of the code examples may give you some clues. Like this one:
  https://github.com/mrvn/test/blob/master/smp.cc
 
  Or this:
  https://github.com/PeterLemon/RaspberryPi/tree/master/SMP/SMPINIT
 
  If you still can't figure it out, you can always join the
  raspberrypi.org forums and ask on this thread:
  https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
 
  When it comes to the Pi 2 and SMP, you are our RTEMS expert :)
 
  Thanks,
  Alan
 
 
  On Sat, Jun 13, 2015 at 2:29 PM, Rohini Kulkarni
  krohini1...@gmail.com wrote:
 
  Hi,
 
  This is regarding Pi 2 SMP support. After powering on, the secondary
  mailboxes read one of their four mailbox registers and wait for a
 non-zero
  content to be written. This content is to be the physical address
 of the
  location from where the cores are expected to start execution.
 
  I am stuck at figuring out this address. How should I go about
  understanding this?
 
  Thanks!
 
  On 3 Jun 2015 19:44, Gedare Bloom ged...@gwu.edu wrote:
 
  On Wed, Jun 3, 2015 at 2:39 AM, Rohini Kulkarni
  krohini1...@gmail.com wrote:
   But, I can't say cache configurations have a role here.
  
   I'll push my code to my github project soon.
  
   P.S. The Pi2 board I possess seems to have broken down. It just
   isn't
   turning on. Unable to test further. Will order one immediately.
  
  Ouch. Make sure you put it in a safe space for development, clear
 of
  threats like moisture, static shock, and cats.
 
   On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com
   wrote:
  
   Hi,
  
   Alan, your suggestion has resulted in much improvement
  
   arm_control=0x1000
  
   This has simply worked! Looks like the other cores were taking
 up
   plenty
   of time.
   I was aware from references that the other cores run a WFI, but
   ya, did
   not get its impact.
   Time for each dhrystone has reduced to 7 from 13 and the no of
   dhrystones
   per second also increased.
  
   But this is a change only in the config.txt not actually in the
   boot code.
  
   Thanks
  
   Rohini
  
  
  
   On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore
   alan.cudm...@gmail.com
   wrote:
  
   The caches are being enabled on the RPI 1 BSP. The same code is
   being
   executed by the RPI 2 BSP, but obviously it’s not sufficient
 for
   the cache
   setup.
   I have been reading through this long thread, and it is very
   informative:
   https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
  
   I am starting to understand the setup that is required to
 enable
   caches
   on the RPI 2. For example this message near the bottom of page
 3
   gives a
   good indication of the speedup available by configuring the MMU
   and caches
   correctly:
   Quote from above thread

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-21 Thread Rohini Kulkarni
I missed mentioning the number of dhrystones in the previous mail.

Originally it was 1 million.
The new number of dhrystones I executed is 100 million.

On Mon, Jun 22, 2015 at 12:29 AM, Rohini Kulkarni krohini1...@gmail.com
wrote:

 Hi all,

 I have managed to get a significant performance improvement with some
 changes in configurations.

 The measured time was for dhrystones reduced from 12 to too small to be
 measured 

 For dhrystones the time was 0.4.

 The number of dhrystones per second increased from approximately 8 to
 250 :)

 Thanks!

 On Sun, Jun 21, 2015 at 1:32 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Hi,

 I have added an SMP related post to my blog to define where exactly in
 the code I need to work. Some feedback to indicate if I am identifying the
 work area correctly would be very helpful!

 Thanks!
  On 18 Jun 2015 03:37, Rohini Kulkarni krohini1...@gmail.com wrote:

 Hi all,

 I have updated my blog to reflect my understanding and attempts for
 cache performance issue.

 Lately I have been trying around memory attributes for the
 mm_config_table. One set of configurations for cacheable memory (inner and
 outer levels)ended up reducing performance further ( which I really thought
 would improve). So this table set up certainly controls performance.

 The results are not improving after turning on cache. So memory sections
 are perhaps not even getting cached.
 I get a feeling it has got to do with this mm_config_table.

 Updates from the github code and blog might help in further discussion.

 Link to github code:https://github.com/krohini1593/rtems/tree/rohini

 Link to Blog http://rohiniwithrpi2.blogspot.in/p/blog-page_3.html

 Thanks!

 On Mon, Jun 15, 2015 at 8:29 PM, Alan Cudmore alan.cudm...@gmail.com
 wrote:

 Hi,
 Some of the code examples may give you some clues. Like this one:
 https://github.com/mrvn/test/blob/master/smp.cc

 Or this:
 https://github.com/PeterLemon/RaspberryPi/tree/master/SMP/SMPINIT

 If you still can't figure it out, you can always join the
 raspberrypi.org forums and ask on this thread:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 When it comes to the Pi 2 and SMP, you are our RTEMS expert :)

 Thanks,
 Alan


 On Sat, Jun 13, 2015 at 2:29 PM, Rohini Kulkarni krohini1...@gmail.com
  wrote:

 Hi,

 This is regarding Pi 2 SMP support. After powering on, the secondary
 mailboxes read one of their four mailbox registers and wait for a non-zero
 content to be written. This content is to be the physical address of the
 location from where the cores are expected to start execution.

 I am stuck at figuring out this address. How should I go about
 understanding this?

 Thanks!
 On 3 Jun 2015 19:44, Gedare Bloom ged...@gwu.edu wrote:

 On Wed, Jun 3, 2015 at 2:39 AM, Rohini Kulkarni 
 krohini1...@gmail.com wrote:
  But, I can't say cache configurations have a role here.
 
  I'll push my code to my github project soon.
 
  P.S. The Pi2 board I possess seems to have broken down. It just
 isn't
  turning on. Unable to test further. Will order one immediately.
 
 Ouch. Make sure you put it in a safe space for development, clear of
 threats like moisture, static shock, and cats.

  On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 
  Hi,
 
  Alan, your suggestion has resulted in much improvement
 
  arm_control=0x1000
 
  This has simply worked! Looks like the other cores were taking up
 plenty
  of time.
  I was aware from references that the other cores run a WFI, but
 ya, did
  not get its impact.
  Time for each dhrystone has reduced to 7 from 13 and the no of
 dhrystones
  per second also increased.
 
  But this is a change only in the config.txt not actually in the
 boot code.
 
  Thanks
 
  Rohini
 
 
 
  On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore 
 alan.cudm...@gmail.com
  wrote:
 
  The caches are being enabled on the RPI 1 BSP. The same code is
 being
  executed by the RPI 2 BSP, but obviously it’s not sufficient for
 the cache
  setup.
  I have been reading through this long thread, and it is very
 informative:
  https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
 
  I am starting to understand the setup that is required to enable
 caches
  on the RPI 2. For example this message near the bottom of page 3
 gives a
  good indication of the speedup available by configuring the MMU
 and caches
  correctly:
  Quote from above thread
  --
  Enabling I/D caches and branch prediction, just like the julia
 demo uses,
  it takes ~12 seconds, or ~21 fps. It's just one core but also a
 much smaller
  loop than the julia demo has.
 
  Enabling the MMU and mapping memory inner/outer write-back, write
  allocate and the framebuffer inner write-through, no write
 allocate + outer
  write-back, write-allocate it takes ~8 seconds, of 32 fps.
 
  PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2
 cache
  effect.
  -
  End of quote

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-20 Thread Rohini Kulkarni
Hi,

I have added an SMP related post to my blog to define where exactly in the
code I need to work. Some feedback to indicate if I am identifying the work
area correctly would be very helpful!

Thanks!
 On 18 Jun 2015 03:37, Rohini Kulkarni krohini1...@gmail.com wrote:

 Hi all,

 I have updated my blog to reflect my understanding and attempts for cache
 performance issue.

 Lately I have been trying around memory attributes for the
 mm_config_table. One set of configurations for cacheable memory (inner and
 outer levels)ended up reducing performance further ( which I really thought
 would improve). So this table set up certainly controls performance.

 The results are not improving after turning on cache. So memory sections
 are perhaps not even getting cached.
 I get a feeling it has got to do with this mm_config_table.

 Updates from the github code and blog might help in further discussion.

 Link to github code:https://github.com/krohini1593/rtems/tree/rohini

 Link to Blog http://rohiniwithrpi2.blogspot.in/p/blog-page_3.html

 Thanks!

 On Mon, Jun 15, 2015 at 8:29 PM, Alan Cudmore alan.cudm...@gmail.com
 wrote:

 Hi,
 Some of the code examples may give you some clues. Like this one:
 https://github.com/mrvn/test/blob/master/smp.cc

 Or this:
 https://github.com/PeterLemon/RaspberryPi/tree/master/SMP/SMPINIT

 If you still can't figure it out, you can always join the raspberrypi.org
 forums and ask on this thread:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 When it comes to the Pi 2 and SMP, you are our RTEMS expert :)

 Thanks,
 Alan


 On Sat, Jun 13, 2015 at 2:29 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Hi,

 This is regarding Pi 2 SMP support. After powering on, the secondary
 mailboxes read one of their four mailbox registers and wait for a non-zero
 content to be written. This content is to be the physical address of the
 location from where the cores are expected to start execution.

 I am stuck at figuring out this address. How should I go about
 understanding this?

 Thanks!
 On 3 Jun 2015 19:44, Gedare Bloom ged...@gwu.edu wrote:

 On Wed, Jun 3, 2015 at 2:39 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  But, I can't say cache configurations have a role here.
 
  I'll push my code to my github project soon.
 
  P.S. The Pi2 board I possess seems to have broken down. It just isn't
  turning on. Unable to test further. Will order one immediately.
 
 Ouch. Make sure you put it in a safe space for development, clear of
 threats like moisture, static shock, and cats.

  On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com wrote:
 
  Hi,
 
  Alan, your suggestion has resulted in much improvement
 
  arm_control=0x1000
 
  This has simply worked! Looks like the other cores were taking up
 plenty
  of time.
  I was aware from references that the other cores run a WFI, but ya,
 did
  not get its impact.
  Time for each dhrystone has reduced to 7 from 13 and the no of
 dhrystones
  per second also increased.
 
  But this is a change only in the config.txt not actually in the boot
 code.
 
  Thanks
 
  Rohini
 
 
 
  On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore alan.cudm...@gmail.com
 
  wrote:
 
  The caches are being enabled on the RPI 1 BSP. The same code is
 being
  executed by the RPI 2 BSP, but obviously it’s not sufficient for
 the cache
  setup.
  I have been reading through this long thread, and it is very
 informative:
  https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
 
  I am starting to understand the setup that is required to enable
 caches
  on the RPI 2. For example this message near the bottom of page 3
 gives a
  good indication of the speedup available by configuring the MMU and
 caches
  correctly:
  Quote from above thread
  --
  Enabling I/D caches and branch prediction, just like the julia demo
 uses,
  it takes ~12 seconds, or ~21 fps. It's just one core but also a
 much smaller
  loop than the julia demo has.
 
  Enabling the MMU and mapping memory inner/outer write-back, write
  allocate and the framebuffer inner write-through, no write allocate
 + outer
  write-back, write-allocate it takes ~8 seconds, of 32 fps.
 
  PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2
 cache
  effect.
  -
  End of quote
 
  The person who posted the above comment (mrvn) posted the code here:
  https://github.com/mrvn/test/blob/master/mmu.cc
 
 
  Also, it seems that when the Pi 2 starts up, cores 1-3 are put in a
 wait
  loop always accessing the bus. By putting this option in the
 config.txt file
  you can put the other cores to sleep, speeding up the code on core
 1.
   arm_control=0x1000
  It would be worth trying that option to see if the benchmark speeds
 up.
 
 
  Alan
 
  On Jun 2, 2015, at 8:05 AM, Hesham ALMatary 
 heshamelmat...@gmail.com
  wrote:
 
  On Tue, Jun 2, 2015 at 12:41 PM, Rohini Kulkarni 
 krohini1...@gmail.com
  wrote:
 
  From what I saw, they have

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-17 Thread Rohini Kulkarni
Hi all,

I have updated my blog to reflect my understanding and attempts for cache
performance issue.

Lately I have been trying around memory attributes for the mm_config_table.
One set of configurations for cacheable memory (inner and outer
levels)ended up reducing performance further ( which I really thought would
improve). So this table set up certainly controls performance.

The results are not improving after turning on cache. So memory sections
are perhaps not even getting cached.
I get a feeling it has got to do with this mm_config_table.

Updates from the github code and blog might help in further discussion.

Link to github code:https://github.com/krohini1593/rtems/tree/rohini

Link to Blog http://rohiniwithrpi2.blogspot.in/p/blog-page_3.html

Thanks!

On Mon, Jun 15, 2015 at 8:29 PM, Alan Cudmore alan.cudm...@gmail.com
wrote:

 Hi,
 Some of the code examples may give you some clues. Like this one:
 https://github.com/mrvn/test/blob/master/smp.cc

 Or this:
 https://github.com/PeterLemon/RaspberryPi/tree/master/SMP/SMPINIT

 If you still can't figure it out, you can always join the raspberrypi.org
 forums and ask on this thread:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 When it comes to the Pi 2 and SMP, you are our RTEMS expert :)

 Thanks,
 Alan


 On Sat, Jun 13, 2015 at 2:29 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Hi,

 This is regarding Pi 2 SMP support. After powering on, the secondary
 mailboxes read one of their four mailbox registers and wait for a non-zero
 content to be written. This content is to be the physical address of the
 location from where the cores are expected to start execution.

 I am stuck at figuring out this address. How should I go about
 understanding this?

 Thanks!
 On 3 Jun 2015 19:44, Gedare Bloom ged...@gwu.edu wrote:

 On Wed, Jun 3, 2015 at 2:39 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  But, I can't say cache configurations have a role here.
 
  I'll push my code to my github project soon.
 
  P.S. The Pi2 board I possess seems to have broken down. It just isn't
  turning on. Unable to test further. Will order one immediately.
 
 Ouch. Make sure you put it in a safe space for development, clear of
 threats like moisture, static shock, and cats.

  On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com wrote:
 
  Hi,
 
  Alan, your suggestion has resulted in much improvement
 
  arm_control=0x1000
 
  This has simply worked! Looks like the other cores were taking up
 plenty
  of time.
  I was aware from references that the other cores run a WFI, but ya,
 did
  not get its impact.
  Time for each dhrystone has reduced to 7 from 13 and the no of
 dhrystones
  per second also increased.
 
  But this is a change only in the config.txt not actually in the boot
 code.
 
  Thanks
 
  Rohini
 
 
 
  On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore alan.cudm...@gmail.com
  wrote:
 
  The caches are being enabled on the RPI 1 BSP. The same code is being
  executed by the RPI 2 BSP, but obviously it’s not sufficient for the
 cache
  setup.
  I have been reading through this long thread, and it is very
 informative:
  https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904
 
  I am starting to understand the setup that is required to enable
 caches
  on the RPI 2. For example this message near the bottom of page 3
 gives a
  good indication of the speedup available by configuring the MMU and
 caches
  correctly:
  Quote from above thread
  --
  Enabling I/D caches and branch prediction, just like the julia demo
 uses,
  it takes ~12 seconds, or ~21 fps. It's just one core but also a much
 smaller
  loop than the julia demo has.
 
  Enabling the MMU and mapping memory inner/outer write-back, write
  allocate and the framebuffer inner write-through, no write allocate
 + outer
  write-back, write-allocate it takes ~8 seconds, of 32 fps.
 
  PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2
 cache
  effect.
  -
  End of quote
 
  The person who posted the above comment (mrvn) posted the code here:
  https://github.com/mrvn/test/blob/master/mmu.cc
 
 
  Also, it seems that when the Pi 2 starts up, cores 1-3 are put in a
 wait
  loop always accessing the bus. By putting this option in the
 config.txt file
  you can put the other cores to sleep, speeding up the code on core 1.
   arm_control=0x1000
  It would be worth trying that option to see if the benchmark speeds
 up.
 
 
  Alan
 
  On Jun 2, 2015, at 8:05 AM, Hesham ALMatary 
 heshamelmat...@gmail.com
  wrote:
 
  On Tue, Jun 2, 2015 at 12:41 PM, Rohini Kulkarni 
 krohini1...@gmail.com
  wrote:
 
  From what I saw, they have to be enabled separately. Cache/mmu are
  disabled
  upon reset.
 
  For the existing Raspberry BSP [1] there's a code for MMU/Cache init,
  however I don't know about Pi2 and where its code is.
 
  [1]
 
 https://github.com/RTEMS/rtems/tree/master/c/src/lib/libbsp/arm/raspberrypi
 
  On 2

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-03 Thread Rohini Kulkarni
But, I can't say cache configurations have a role here.

I'll push my code to my github project soon.

P.S. The Pi2 board I possess seems to have broken down. It just isn't
turning on. Unable to test further. Will order one immediately.
On 3 Jun 2015 09:03, Rohini Kulkarni krohini1...@gmail.com wrote:

 Hi,

 Alan, your suggestion has resulted in much improvement

 arm_control=0x1000

 This has simply worked! Looks like the other cores were taking up plenty
 of time.
 I was aware from references that the other cores run a WFI, but ya, did
 not get its impact.
 Time for each dhrystone has reduced to 7 from 13 and the no of dhrystones
 per second also increased.

 But this is a change only in the config.txt not actually in the boot code.


 Thanks

 Rohini



 On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore alan.cudm...@gmail.com
 wrote:

 The caches are being enabled on the RPI 1 BSP. The same code is being
 executed by the RPI 2 BSP, but obviously it’s not sufficient for the cache
 setup.
 I have been reading through this long thread, and it is very informative:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 I am starting to understand the setup that is required to enable caches
 on the RPI 2. For example this message near the bottom of page 3 gives a
 good indication of the speedup available by configuring the MMU and caches
 correctly:
 Quote from above thread
 --
 Enabling I/D caches and branch prediction, just like the julia demo uses,
 it takes ~12 seconds, or ~21 fps. It's just one core but also a much
 smaller loop than the julia demo has.

 Enabling the MMU and mapping memory inner/outer write-back, write
 allocate and the framebuffer inner write-through, no write allocate + outer
 write-back, write-allocate it takes ~8 seconds, of 32 fps.

 PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2 cache
 effect.
 -
 End of quote

 The person who posted the above comment (mrvn) posted the code here:
 https://github.com/mrvn/test/blob/master/mmu.cc


 Also, it seems that when the Pi 2 starts up, cores 1-3 are put in a wait
 loop always accessing the bus. By putting this option in the config.txt
 file you can put the other cores to sleep, speeding up the code on core 1.
  arm_control=0x1000
 It would be worth trying that option to see if the benchmark speeds up.


 Alan

 On Jun 2, 2015, at 8:05 AM, Hesham ALMatary heshamelmat...@gmail.com
 wrote:

 On Tue, Jun 2, 2015 at 12:41 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 From what I saw, they have to be enabled separately. Cache/mmu are
 disabled
 upon reset.

 For the existing Raspberry BSP [1] there's a code for MMU/Cache init,
 however I don't know about Pi2 and where its code is.

 [1]
 https://github.com/RTEMS/rtems/tree/master/c/src/lib/libbsp/arm/raspberrypi

 On 2 Jun 2015 16:59, Hesham ALMatary heshamelmat...@gmail.com wrote:


 Hi,

 Aren't the MMU/Caches enabled by default for RPi [1]?

 [1]

 https://github.com/RTEMS/rtems/blob/master/c/src/lib/libbsp/arm/shared/mminit.c

 On Tue, Jun 2, 2015 at 12:18 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:



 On June 2, 2015 7:01:21 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Dr. Joel,

 So we can't say something solely on the basis of this result?


 I don't think so. If Linux performs the same, then what you did is as
 good as it gets.

 However, if Linux is faster then some setting still isn't right.

 You need a reference measurement to have any confidence. It is possible
 you did something but didn't actually turn the cache (or all the cache)
 on.

 On 2 Jun 2015 16:28, Rohini Kulkarni krohini1...@gmail.com wrote:

 I have not run it under linux on pi2 yet. Will have to run and check
 the result.

 On 2 Jun 2015 16:16, Joel Sherrill joel.sherr...@oarcorp.com wrote:



 On June 2, 2015 5:58:33 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 HI,

 I tried running the dhrystone benchmark with some changes for

 cache/mmu

 set up.

 However, the output shows a reduction in performance.
 The time to run through the dhrystone has increased from 12 to 13 and
 dhrystones run per second decreased.

 According to this result, things were better with caches disabled.


 I have been working on this since two days and could not figure out an
 improvement. Any pointers?


 How did it do under Linux on the Pi2?


 Thanks.



 On Thu, May 28, 2015 at 8:41 PM, Rohini Kulkarni
 krohini1...@gmail.com wrote:

 Hi All,

 I have to implement the cache coherency support for Cortex A7. But for
 A7 MPCore, unlike for A9, I am not able to find any register
 description for the Snoop Control Unit from the TRM.

 I need help here on how to proceed.

 Additionally for A9 there is a single bit for A9 in the Auxiliary
 Control Register which enables cache broadcast operations. The

 register

 format is different for A7 and again I am unable to find how to

 achieve

 the same for A7.

 Thanks!





 On Tue, May 5

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-02 Thread Rohini Kulkarni
Hi,

Alan, your suggestion has resulted in much improvement

arm_control=0x1000

This has simply worked! Looks like the other cores were taking up plenty of
time.
I was aware from references that the other cores run a WFI, but ya, did not
get its impact.
Time for each dhrystone has reduced to 7 from 13 and the no of dhrystones
per second also increased.

But this is a change only in the config.txt not actually in the boot code.

Thanks

Rohini



On Wed, Jun 3, 2015 at 7:12 AM, Alan Cudmore alan.cudm...@gmail.com wrote:

 The caches are being enabled on the RPI 1 BSP. The same code is being
 executed by the RPI 2 BSP, but obviously it’s not sufficient for the cache
 setup.
 I have been reading through this long thread, and it is very informative:
 https://www.raspberrypi.org/forums/viewtopic.php?f=72t=98904

 I am starting to understand the setup that is required to enable caches on
 the RPI 2. For example this message near the bottom of page 3 gives a good
 indication of the speedup available by configuring the MMU and caches
 correctly:
 Quote from above thread
 --
 Enabling I/D caches and branch prediction, just like the julia demo uses,
 it takes ~12 seconds, or ~21 fps. It's just one core but also a much
 smaller loop than the julia demo has.

 Enabling the MMU and mapping memory inner/outer write-back, write allocate
 and the framebuffer inner write-through, no write allocate + outer
 write-back, write-allocate it takes ~8 seconds, of 32 fps.

 PS: 640x480x32 with MMU gets me ~256 fps. Must have a greater L2 cache
 effect.
 -
 End of quote

 The person who posted the above comment (mrvn) posted the code here:
 https://github.com/mrvn/test/blob/master/mmu.cc


 Also, it seems that when the Pi 2 starts up, cores 1-3 are put in a wait
 loop always accessing the bus. By putting this option in the config.txt
 file you can put the other cores to sleep, speeding up the code on core 1.
  arm_control=0x1000
 It would be worth trying that option to see if the benchmark speeds up.


 Alan

 On Jun 2, 2015, at 8:05 AM, Hesham ALMatary heshamelmat...@gmail.com
 wrote:

 On Tue, Jun 2, 2015 at 12:41 PM, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 From what I saw, they have to be enabled separately. Cache/mmu are disabled
 upon reset.

 For the existing Raspberry BSP [1] there's a code for MMU/Cache init,
 however I don't know about Pi2 and where its code is.

 [1]
 https://github.com/RTEMS/rtems/tree/master/c/src/lib/libbsp/arm/raspberrypi

 On 2 Jun 2015 16:59, Hesham ALMatary heshamelmat...@gmail.com wrote:


 Hi,

 Aren't the MMU/Caches enabled by default for RPi [1]?

 [1]

 https://github.com/RTEMS/rtems/blob/master/c/src/lib/libbsp/arm/shared/mminit.c

 On Tue, Jun 2, 2015 at 12:18 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:



 On June 2, 2015 7:01:21 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 Dr. Joel,

 So we can't say something solely on the basis of this result?


 I don't think so. If Linux performs the same, then what you did is as
 good as it gets.

 However, if Linux is faster then some setting still isn't right.

 You need a reference measurement to have any confidence. It is possible
 you did something but didn't actually turn the cache (or all the cache) on.

 On 2 Jun 2015 16:28, Rohini Kulkarni krohini1...@gmail.com wrote:

 I have not run it under linux on pi2 yet. Will have to run and check
 the result.

 On 2 Jun 2015 16:16, Joel Sherrill joel.sherr...@oarcorp.com wrote:



 On June 2, 2015 5:58:33 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:

 HI,

 I tried running the dhrystone benchmark with some changes for

 cache/mmu

 set up.

 However, the output shows a reduction in performance.
 The time to run through the dhrystone has increased from 12 to 13 and
 dhrystones run per second decreased.

 According to this result, things were better with caches disabled.


 I have been working on this since two days and could not figure out an
 improvement. Any pointers?


 How did it do under Linux on the Pi2?


 Thanks.



 On Thu, May 28, 2015 at 8:41 PM, Rohini Kulkarni
 krohini1...@gmail.com wrote:

 Hi All,

 I have to implement the cache coherency support for Cortex A7. But for
 A7 MPCore, unlike for A9, I am not able to find any register
 description for the Snoop Control Unit from the TRM.

 I need help here on how to proceed.

 Additionally for A9 there is a single bit for A9 in the Auxiliary
 Control Register which enables cache broadcast operations. The

 register

 format is different for A7 and again I am unable to find how to

 achieve

 the same for A7.

 Thanks!





 On Tue, May 5, 2015 at 10:42 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:



 On 5/5/2015 11:11 AM, Rohini Kulkarni wrote:

 Hi,

 I am working with the code for bsp hooks. I am referring to existing
 ARM multicore bsp codes, zync mainly.

 1. There are existing hooks for the raspberry pi. Where should the

 code

 for the  Pi2

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-02 Thread Rohini Kulkarni
From what I saw, they have to be enabled separately. Cache/mmu are disabled
upon reset.
On 2 Jun 2015 16:59, Hesham ALMatary heshamelmat...@gmail.com wrote:

 Hi,

 Aren't the MMU/Caches enabled by default for RPi [1]?

 [1]
 https://github.com/RTEMS/rtems/blob/master/c/src/lib/libbsp/arm/shared/mminit.c

 On Tue, Jun 2, 2015 at 12:18 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:
 
 
  On June 2, 2015 7:01:21 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 Dr. Joel,
 
 So we can't say something solely on the basis of this result?
 
  I don't think so. If Linux performs the same, then what you did is as
 good as it gets.
 
  However, if Linux is faster then some setting still isn't right.
 
  You need a reference measurement to have any confidence. It is possible
 you did something but didn't actually turn the cache (or all the cache) on.
 
 On 2 Jun 2015 16:28, Rohini Kulkarni krohini1...@gmail.com wrote:
 
 I have not run it under linux on pi2 yet. Will have to run and check
 the result.
 
 On 2 Jun 2015 16:16, Joel Sherrill joel.sherr...@oarcorp.com wrote:
 
 
 
 On June 2, 2015 5:58:33 AM EDT, Rohini Kulkarni krohini1...@gmail.com
 wrote:
 HI,
 
 I tried running the dhrystone benchmark with some changes for
 cache/mmu
 set up.
 
 However, the output shows a reduction in performance.
 The time to run through the dhrystone has increased from 12 to 13 and
 dhrystones run per second decreased.
 
 According to this result, things were better with caches disabled.
 
 
 I have been working on this since two days and could not figure out an
 improvement. Any pointers?
 
 How did it do under Linux on the Pi2?
 
 
 Thanks.
 
 
 
 On Thu, May 28, 2015 at 8:41 PM, Rohini Kulkarni
 krohini1...@gmail.com wrote:
 
 Hi All,
 
 I have to implement the cache coherency support for Cortex A7. But for
 A7 MPCore, unlike for A9, I am not able to find any register
 description for the Snoop Control Unit from the TRM.
 
 I need help here on how to proceed.
 
 Additionally for A9 there is a single bit for A9 in the Auxiliary
 Control Register which enables cache broadcast operations. The
 register
 format is different for A7 and again I am unable to find how to
 achieve
 the same for A7.
 
 Thanks!
 
 
 
 
 
 On Tue, May 5, 2015 at 10:42 PM, Joel Sherrill
 joel.sherr...@oarcorp.com wrote:
 
 
 
 On 5/5/2015 11:11 AM, Rohini Kulkarni wrote:
 
 Hi,
 
 I am working with the code for bsp hooks. I am referring to existing
 ARM multicore bsp codes, zync mainly.
 
 1. There are existing hooks for the raspberry pi. Where should the
 code
 for the  Pi2 hooks be added?
 
 The Pi and Pi2 are remarkably similar so Pi2 should be placed inside
 the Pi BSP directory.
 There is already a Pi2 variant of that code built. But we know
 specific
 places where there
 are variances. Depending on the scope of what is different, it can be
 as simple as
 a cpp conditional in a .h to select a value or two implementations of
 a
 single method
 and the Makefile.am picking the right file to build based on the board
 variant.
 
 The big question to always ask is: Is this specific to the Pi2 and
 incompatible with the Pi?
 
 Since the Pi BSP is still missing capabilities, it is likely code
 common to both will
 be added this summer. For example, did the mailbox interface change? I
 don't know
 but would guess that it didn't.  Each new capability added needs that
 added.
 
 And any differences need to be analyzed to pick the least intrusive
 way
 to provide
 alternate implementations. Or enable special code like the Pi2 SMP
 support which
 is dependent on --enable-smp and being a Pi2.
 
 2. Am I right in understanding that I will have to implement A7
 specific functions as have been for A9? I am referring specifically to
 the arm-a9mpcore-start.h
 
 Yes.
 
 If the code is very similar between the a7 and a9, then a discussion
 on devel@ should occur to decide the best way to minimize duplication.
 
 If you end up with a7 specific code, you should follow the location
 and
 
 naming patterns already established. That places it in
 libbsp/arm/shared/...
 so it can be used by any BSP with the right SMP core.
 
 
 I am referring to existing codes to locate and get hold of what needs
 to be done in the hooks. However, being new to such implementations, I
 am taking longer to understand the details. Any suggestions that might
 help here are welcome
 
 The answer will depend on the factors listed above. When code can
 be shared, we want to share it across as many BSPs as makes sense.
 When it is unique to a specific BSP **variant** (e.g. Pi vs Pi2), then
 you want to find the way to account for the variation in the least
 intrusive code way possible.
 
 Thanks!
 
 On 1 May 2015 12:45, Rohini Kulkarni krohini1...@gmail.com wrote:
 
 
 Hi,
 
 Excited to be a part of  this edition of GSoC! Thanks to everybody for
 helping me get here and congratulations to all the participating
 students!
 
 So, now getting to work, firstly I wish to know, specifically from

Re: GSoC 2015: Raspberry Pi 2 Support

2015-06-02 Thread Rohini Kulkarni
HI,

I tried running the dhrystone benchmark with some changes for cache/mmu set
up.

However, the output shows a reduction in performance.
The time to run through the dhrystone has increased from 12 to 13 and
dhrystones run per second decreased.
According to this result, things were better with caches disabled.

I have been working on this since two days and could not figure out an
improvement. Any pointers?

Thanks.


On Thu, May 28, 2015 at 8:41 PM, Rohini Kulkarni krohini1...@gmail.com
wrote:

 Hi All,

 I have to implement the cache coherency support for Cortex A7. But for A7
 MPCore, unlike for A9, I am not able to find any register description for
 the Snoop Control Unit from the TRM.
 I need help here on how to proceed.

 Additionally for A9 there is a single bit for A9 in the Auxiliary Control
 Register which enables cache broadcast operations. The register format is
 different for A7 and again I am unable to find how to achieve the same for
 A7.

 Thanks!




 On Tue, May 5, 2015 at 10:42 PM, Joel Sherrill joel.sherr...@oarcorp.com
 wrote:



 On 5/5/2015 11:11 AM, Rohini Kulkarni wrote:

 Hi,

 I am working with the code for bsp hooks. I am referring to existing ARM
 multicore bsp codes, zync mainly.

 1. There are existing hooks for the raspberry pi. Where should the code
 for the  Pi2 hooks be added?

 The Pi and Pi2 are remarkably similar so Pi2 should be placed inside the
 Pi BSP directory.
 There is already a Pi2 variant of that code built. But we know specific
 places where there
 are variances. Depending on the scope of what is different, it can be as
 simple as
 a cpp conditional in a .h to select a value or two implementations of a
 single method
 and the Makefile.am picking the right file to build based on the board
 variant.

 The big question to always ask is: Is this specific to the Pi2 and
 incompatible with the Pi?

 Since the Pi BSP is still missing capabilities, it is likely code common
 to both will
 be added this summer. For example, did the mailbox interface change? I
 don't know
 but would guess that it didn't.  Each new capability added needs that
 added.

 And any differences need to be analyzed to pick the least intrusive way
 to provide
 alternate implementations. Or enable special code like the Pi2 SMP
 support which
 is dependent on --enable-smp and being a Pi2.

 2. Am I right in understanding that I will have to implement A7 specific
 functions as have been for A9? I am referring specifically to the
 arm-a9mpcore-start.h

 Yes.

 If the code is very similar between the a7 and a9, then a discussion
 on devel@ should occur to decide the best way to minimize duplication.

 If you end up with a7 specific code, you should follow the location and
 naming patterns already established. That places it in
 libbsp/arm/shared/...
 so it can be used by any BSP with the right SMP core.


  I am referring to existing codes to locate and get hold of what needs
 to be done in the hooks. However, being new to such implementations, I am
 taking longer to understand the details. Any suggestions that might help
 here are welcome

 The answer will depend on the factors listed above. When code can
 be shared, we want to share it across as many BSPs as makes sense.
 When it is unique to a specific BSP **variant** (e.g. Pi vs Pi2), then
 you want to find the way to account for the variation in the least
 intrusive code way possible.

 Thanks!
 On 1 May 2015 12:45, Rohini Kulkarni krohini1...@gmail.com wrote:


  Hi,

  Excited to be a part of  this edition of GSoC! Thanks to everybody for
 helping me get here and congratulations to all the participating students!

  So, now getting to work, firstly I wish to know, specifically from my
 mentors, any changes that must be made to my proposed project or schedule.

 Secondly, are there any specifics for the development blog that we need
 to create for the project? Over time what is the blog expected to convey.

 Also, I have to create a new wiki page for my project as none exists. I
 want to know how to add one.

  --
  Rohini Kulkarni


 --
 Joel Sherrill, Ph.D. Director of Research  
 developmentjoel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985




 --
 Rohini Kulkarni




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC 2015: Raspberry Pi 2 Support

2015-05-28 Thread Rohini Kulkarni
Hi All,

I have to implement the cache coherency support for Cortex A7. But for A7
MPCore, unlike for A9, I am not able to find any register description for
the Snoop Control Unit from the TRM.
I need help here on how to proceed.

Additionally for A9 there is a single bit for A9 in the Auxiliary Control
Register which enables cache broadcast operations. The register format is
different for A7 and again I am unable to find how to achieve the same for
A7.

Thanks!




On Tue, May 5, 2015 at 10:42 PM, Joel Sherrill joel.sherr...@oarcorp.com
wrote:



 On 5/5/2015 11:11 AM, Rohini Kulkarni wrote:

 Hi,

 I am working with the code for bsp hooks. I am referring to existing ARM
 multicore bsp codes, zync mainly.

 1. There are existing hooks for the raspberry pi. Where should the code
 for the  Pi2 hooks be added?

 The Pi and Pi2 are remarkably similar so Pi2 should be placed inside the
 Pi BSP directory.
 There is already a Pi2 variant of that code built. But we know specific
 places where there
 are variances. Depending on the scope of what is different, it can be as
 simple as
 a cpp conditional in a .h to select a value or two implementations of a
 single method
 and the Makefile.am picking the right file to build based on the board
 variant.

 The big question to always ask is: Is this specific to the Pi2 and
 incompatible with the Pi?

 Since the Pi BSP is still missing capabilities, it is likely code common
 to both will
 be added this summer. For example, did the mailbox interface change? I
 don't know
 but would guess that it didn't.  Each new capability added needs that
 added.

 And any differences need to be analyzed to pick the least intrusive way to
 provide
 alternate implementations. Or enable special code like the Pi2 SMP support
 which
 is dependent on --enable-smp and being a Pi2.

 2. Am I right in understanding that I will have to implement A7 specific
 functions as have been for A9? I am referring specifically to the
 arm-a9mpcore-start.h

 Yes.

 If the code is very similar between the a7 and a9, then a discussion
 on devel@ should occur to decide the best way to minimize duplication.

 If you end up with a7 specific code, you should follow the location and
 naming patterns already established. That places it in
 libbsp/arm/shared/...
 so it can be used by any BSP with the right SMP core.


  I am referring to existing codes to locate and get hold of what needs to
 be done in the hooks. However, being new to such implementations, I am
 taking longer to understand the details. Any suggestions that might help
 here are welcome

 The answer will depend on the factors listed above. When code can
 be shared, we want to share it across as many BSPs as makes sense.
 When it is unique to a specific BSP **variant** (e.g. Pi vs Pi2), then
 you want to find the way to account for the variation in the least
 intrusive code way possible.

 Thanks!
 On 1 May 2015 12:45, Rohini Kulkarni krohini1...@gmail.com wrote:


  Hi,

  Excited to be a part of  this edition of GSoC! Thanks to everybody for
 helping me get here and congratulations to all the participating students!

  So, now getting to work, firstly I wish to know, specifically from my
 mentors, any changes that must be made to my proposed project or schedule.

 Secondly, are there any specifics for the development blog that we need
 to create for the project? Over time what is the blog expected to convey.

 Also, I have to create a new wiki page for my project as none exists. I
 want to know how to add one.

  --
  Rohini Kulkarni


 --
 Joel Sherrill, Ph.D. Director of Research  
 developmentjoel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

GSoC 2015: Raspberry Pi 2 Support

2015-05-05 Thread Rohini Kulkarni
Hi,

I am working with the code for bsp hooks. I am referring to existing ARM
multicore bsp codes, zync mainly.

1. There are existing hooks for the raspberry pi. Where should the code for
the  Pi2 hooks be added?

2. Am I right in understanding that I will have to implement A7 specific
functions as have been for A9? I am referring specifically to the
arm-a9mpcore-start.h

I am referring to existing codes to locate and get hold of what needs to be
done in the hooks. However, being new to such implementations, I am taking
longer to understand the details. Any suggestions that might help here are
welcome

Thanks!
On 1 May 2015 12:45, Rohini Kulkarni krohini1...@gmail.com wrote:


 Hi,

 Excited to be a part of  this edition of GSoC! Thanks to everybody for
 helping me get here and congratulations to all the participating students!

 So, now getting to work, firstly I wish to know, specifically from my
 mentors, any changes that must be made to my proposed project or schedule.

 Secondly, are there any specifics for the development blog that we need to
 create for the project? Over time what is the blog expected to convey.

 Also, I have to create a new wiki page for my project as none exists. I
 want to know how to add one.

 --
 Rohini Kulkarni

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GS0C 2015-Hello Word

2015-04-01 Thread Rohini Kulkarni
Hi,

I was yet to submit the patch for hello world.
Attaching it here.

On Thu, Mar 26, 2015 at 7:15 PM, Gedare Bloom ged...@gwu.edu wrote:

 Yes this is acceptable, thanks! Please post your patch too.
 -Gedare

 On Thu, Mar 26, 2015 at 1:07 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  Hi All,
 
  I have chosen Raspberry Pi 2 support as my project. I recently received
 the
  raspberry pi board, but do not have a console set up yet. I have run the
 the
  hello world using QEMU for raspberry pi. Can this be accepted as proof? I
  will get the actual pi running as soon as possible.
 
  Please find the attached screenshot.
 
  Thanks!
 
  --
  Rohini Kulkarni
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
diff --git a/testsuites/samples/hello/init.c b/testsuites/samples/hello/init.c
index d8fe450..4a57c96 100644
--- a/testsuites/samples/hello/init.c
+++ b/testsuites/samples/hello/init.c
@@ -28,7 +28,9 @@ rtems_task Init(
 )
 {
   rtems_test_begin();
-  printf( Hello World\n );
+  printf( \n\n*** HELLO WORLD TEST ***\n );
+  printf( Hello this is Rohini Kulkarni\n );
+  printf( *** END OF HELLO WORLD TEST ***\n );
   rtems_test_end();
   exit( 0 );
 }
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC Raspberry pi 2 project

2015-03-23 Thread Rohini Kulkarni
Hi,

I want to know what is the current work going on for Raspberry pi 2
support?

The projects looks towards implementing arm architecture support, cache
configuration and enabling SMP support. These are all parts of the
Raspberry pi 2 BSP right? What work has already been done for the support.

Thanks!
On 21 Mar 2015 10:40, Rohini Kulkarni krohini1...@gmail.com wrote:

Hello,

I had a look at updated the project groups for raspberry pi improvements
for my proposal. Because I had not tracked the page for a few days I was
not aware that the Raspberry pi 2 support tasks had been defined.
As I had also asked about SMP support earlier, this projects interests me
more.
Yes, I am new to bringing up an architecture support. Is the project
considered suitable for somebody new to rtems.
I want to prepare a draft proposal soon so that it can be reviewed in time.
How can I get an idea about the time requirements in order to do my
proposal? Some references to start with would be useful to know the current
status. Also level of familiarity required and other requirements for
implementation.

Thanks!
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Raspberry pi 2 project

2015-03-20 Thread Rohini Kulkarni
Hello,

I had a look at updated the project groups for raspberry pi improvements
for my proposal. Because I had not tracked the page for a few days I was
not aware that the Raspberry pi 2 support tasks had been defined.
As I had also asked about SMP support earlier, this projects interests me
more.
Yes, I am new to bringing up an architecture support. Is the project
considered suitable for somebody new to rtems.
I want to prepare a draft proposal soon so that it can be reviewed in time.
How can I get an idea about the time requirements in order to do my
proposal? Some references to start with would be useful to know the current
status. Also level of familiarity required and other requirements for
implementation.

Thanks!
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: RTEMS build problem

2015-03-19 Thread Rohini Kulkarni
To tell exactly what I am doing, this is how I am updating the autoconf
everytime with reference from the source builder documentation

$ ../source-builder/sb-set-builder --log=l-4.11-at.txt
--prefix=$HOME/development/rtems/4.11 4.11/rtems-autotools

and then go on to build the toolset
$ export PATH=~/development/rtems/4.11/bin:$PATH
$ ../source-builder/sb-set-builder --log=l-4.11-sparc.txt
--prefix=$HOME/development/rtems/4.11 4.11/rtems-sparc



On Thu, Mar 19, 2015 at 12:41 PM, Chris Johns chr...@rtems.org wrote:

 On 19/03/2015 4:49 pm, Rohini Kulkarni wrote:


 There is an issue I've run into a few times. Everytime I run bootstrap
 script for rtems(say after restarting my machine) the bootstrap says
 autoconf version is not updated. So I have to build the toolset every
 such time when I have already built it and only want to compile rtems.

 Is there something that needs to be done that I'm missing out!


 Is the build procedure asking you to set your path to the location of the
 tools ?

 This error is normally due your path not being set.

 Chris
 ___
 devel mailing list
 devel@rtems.org
 http://lists.rtems.org/mailman/listinfo/devel




-- 
Rohini Kulkarni
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

RTEMS build problem

2015-03-18 Thread Rohini Kulkarni
Hi!

There is an issue I've run into a few times. Everytime I run bootstrap
script for rtems(say after restarting my machine) the bootstrap says
autoconf version is not updated. So I have to build the toolset every such
time when I have already built it and only want to compile rtems.

Is there something that needs to be done that I'm missing out!
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC 2015 - Raspberry Pi improvements

2015-03-13 Thread Rohini Kulkarni
Hi,

I am new to using Raspberry pi. I saw the  READ ME for Raspberry pi BSP. I
have got the files stated there, except the config.txt. I also read some
steps on the Raspberry pi website regarding getting the image onto the SD
card.
Also, I do not understand what the stripping step will do. I need some help
to figure  out booting RTEMS on the board.

Thanks!
On 11 Mar 2015 19:29, Gedare Bloom ged...@gwu.edu wrote:

 On Wed, Mar 11, 2015 at 9:52 AM, Rohini Kulkarni krohini1...@gmail.com
 wrote:
  Hi,
 
  I am interested in contributing to this project. I referred the page
  Raspberry Pi improvements and also took a look at the work done under
  GSoc2013. It would be great if the mentors could help me with some
 queries.
 
  [1] Is there any reference for already proposed ideas. On the page Beagle
  BSP improvements , I saw a list of missing peripherals. Is there such a
 list
  for Raspberry Pi as well?
 
 There was an email thread about this recently, see [1]. I think there
 is plenty of work to do.

  [2] What are the requirements and how should I proceed for this project.
 
 You need to own a Raspberry Pi, or a Raspberry Pi 2. If you have an
 RPi2, you may consider adding it as a BSP variant and getting SMP
 working on it as a nice project. You should ideally demonstrate that
 you can build the tools and boot RTEMS on the RPi.

 [1] https://lists.rtems.org/pipermail/devel/2015-March/010181.html

 
  Thanks!
 
 
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

GSOC 2015 - SMP Projects

2015-03-10 Thread Rohini Kulkarni
Hi All,
I am interested in doing a project under SMP  (Improvements to SMP
support). Are there any suitable SMP projects which can be undertaken as
part of GSOC. However,I do not have an experience with such kind of
development.

Thanks!
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: Starting with RTEMS

2015-02-19 Thread Rohini Kulkarni
Hi,

How can I figure out which targets can be tested with a simulator. I would
like to  set up an environment which I can work with further.

Thank you.
On 17 Feb 2015 06:11, Joel Sherrill joel.sherr...@oarcorp.com wrote:


 On 2/16/2015 6:33 PM, Nick Withers wrote:
  On Mon, 2015-02-16 at 22:57 +0530, Rohini Kulkarni wrote:
  Hi,
 
 
  I am trying to build RTEMS for arm. I want to know what --enable
  -rtemsbsp in config does, when building RTEMS.
  Hi Rohini!
 
  It selects which Board Support Package(s) (BSP(s)) you'd like to compile
  RTEMS for - or, if you prefer, which BSPs' code should be compiled - it
  takes a while for each and building the lot is almost always going to be
  unnecessary.
 
  There're a lot of different ARM variants and boards, what kind do you
  have?
 
  P.S., As a could you help be to use this kind o' question, this one'd
  probably be best on the users@ list :-)
 Good answer and I will pitch in that for many cases, you want one that will
 run on a simulator. Especially if you are looking at potential GSoC
 projects. :)
  Thank you.
 
  --
  Rohini Kulkarni
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel
 
  ___
  devel mailing list
  devel@rtems.org
  http://lists.rtems.org/mailman/listinfo/devel

 --
 Joel Sherrill, Ph.D. Director of Research  Development
 joel.sherr...@oarcorp.comOn-Line Applications Research
 Ask me about RTEMS: a free RTOS  Huntsville AL 35805
 Support Available(256) 722-9985


___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel