Re: rtems-libbsd support RISC-V or not

2022-10-17 Thread Sebastian Huber

Hello Padmarao,

I am not sure if rtems-libbsd was used on riscv before, however, adding 
the architecture support wouldn't be difficult.


--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: rtems-libbsd support RISC-V or not

2022-10-17 Thread Joel Sherrill
On Mon, Oct 17, 2022, 2:19 AM Sebastian Huber <
sebastian.hu...@embedded-brains.de> wrote:

> Hello Padmarao,
>
> I am not sure if rtems-libbsd was used on riscv before, however, adding
> the architecture support wouldn't be difficult.
>

I agree with Sebastian that I don't think riscv has been used before but
FreeBSD supports it. The driver added for Microblaze was added to support a
secure voting machine which is using CHERI and riscv.

Shouldn't be a huge deal especially if the driver is already in FreeBSD.


> --
> embedded brains GmbH
> Herr Sebastian HUBER
> Dornierstr. 4
> 82178 Puchheim
> Germany
> email: sebastian.hu...@embedded-brains.de
> phone: +49-89-18 94 741 - 16
> fax:   +49-89-18 94 741 - 08
>
> Registergericht: Amtsgericht München
> Registernummer: HRB 157899
> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
> Unsere Datenschutzerklärung finden Sie hier:
> https://embedded-brains.de/datenschutzerklaerung/
> ___
> 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

[PATCH] libdebugger: Add a targte break call to suspending all running threads

2022-10-17 Thread chrisj
From: Chris Johns 

- Optionally wait if there is no remote debugger connected and break
  when the remote connects

Closes #4740
---
 .../rtems/debugger/rtems-debugger-server.h|  1 +
 cpukit/include/rtems/rtems-debugger.h |  8 +++
 cpukit/libdebugger/rtems-debugger-server.c| 72 ++-
 3 files changed, 65 insertions(+), 16 deletions(-)

diff --git a/cpukit/include/rtems/debugger/rtems-debugger-server.h 
b/cpukit/include/rtems/debugger/rtems-debugger-server.h
index 2189aac873..4d0407a951 100644
--- a/cpukit/include/rtems/debugger/rtems-debugger-server.h
+++ b/cpukit/include/rtems/debugger/rtems-debugger-server.h
@@ -103,6 +103,7 @@ extern "C" {
 #define RTEMS_DEBUGGER_FLAG_MULTIPROCESS (1 << 4)
 #define RTEMS_DEBUGGER_FLAG_VERBOSE_LOCK (1 << 5)
 #define RTEMS_DEBUGGER_FLAG_VERBOSE_CMDS (1 << 6)
+#define RTEMS_DEBUGGER_FLAG_BREAK_WAITER (1 << 7)
 
 /**
  * Forward decl for the threads and targets.
diff --git a/cpukit/include/rtems/rtems-debugger.h 
b/cpukit/include/rtems/rtems-debugger.h
index 1fc8b3d522..7627e83382 100644
--- a/cpukit/include/rtems/rtems-debugger.h
+++ b/cpukit/include/rtems/rtems-debugger.h
@@ -53,6 +53,14 @@ extern int rtems_debugger_start(const char*  remote,
 rtems_task_priority  priority,
 const rtems_printer* printer);
 
+/**
+ * Suspend all running threads including the caller if not
+ * excluded. Returns when the debugger has connected and continued.
+ *
+ * If wait is true and there is no remote connected wait then break.
+ */
+extern int rtems_debugger_break(bool wait);
+
 /**
  * Stop the Debugger.
  */
diff --git a/cpukit/libdebugger/rtems-debugger-server.c 
b/cpukit/libdebugger/rtems-debugger-server.c
index 9de9421b6b..b7b9727d84 100644
--- a/cpukit/libdebugger/rtems-debugger-server.c
+++ b/cpukit/libdebugger/rtems-debugger-server.c
@@ -1678,18 +1678,30 @@ rtems_debugger_events(rtems_task_argument arg)
 
   rtems_debugger_target_enable();
 
-  while (rtems_debugger_server_events_running()) {
-rtems_debugger_server_events_wait();
-if (rtems_debugger_verbose())
-  rtems_debugger_printf("rtems-db: event woken\n");
-if (!rtems_debugger_server_events_running())
-  break;
+  if (rtems_debugger_server_flag(RTEMS_DEBUGGER_FLAG_BREAK_WAITER)) {
+rtems_debugger->flags &= ~RTEMS_DEBUGGER_FLAG_BREAK_WAITER;
 r = rtems_debugger_thread_system_suspend();
-if (r < 0)
-  break;
-r = remote_stop_reason(NULL, 0);
-if (r < 0)
-  break;
+if (rtems_debugger_verbose())
+  rtems_debugger_printf("rtems-db: break waiter\n");
+rtems_debugger_server_events_signal();
+if (rtems_debugger_verbose())
+  rtems_debugger_printf("rtems-db: break waiter: signalled\n");
+  }
+
+  if (r == 0) {
+while (rtems_debugger_server_events_running()) {
+  rtems_debugger_server_events_wait();
+  if (rtems_debugger_verbose())
+rtems_debugger_printf("rtems-db: event woken\n");
+  if (!rtems_debugger_server_events_running())
+break;
+  r = rtems_debugger_thread_system_suspend();
+  if (r < 0)
+break;
+  r = remote_stop_reason(NULL, 0);
+  if (r < 0)
+break;
+}
   }
 
   if (r < 0)
@@ -1972,6 +1984,30 @@ rtems_debugger_server_crash(void)
   rtems_debugger->remote->end(rtems_debugger->remote);
 }
 
+int
+rtems_debugger_break(bool wait)
+{
+  int r = 0;
+  if (!rtems_debugger_running()) {
+errno = EIO;
+r = -1;
+  } else {
+rtems_debugger_lock();
+if (rtems_debugger_server_events_running()) {
+  rtems_debugger_server_events_signal();
+} else if (
+  wait && !rtems_debugger_server_flag(RTEMS_DEBUGGER_FLAG_BREAK_WAITER)) {
+  rtems_debugger->flags |= RTEMS_DEBUGGER_FLAG_BREAK_WAITER;
+  rtems_debugger_server_events_wait();
+} else {
+  errno = EIO;
+  r = -1;
+}
+rtems_debugger_unlock();
+  }
+  return r;
+}
+
 int
 rtems_debugger_stop(void)
 {
@@ -1998,10 +2034,14 @@ rtems_debugger_set_verbose(bool on)
 int
 rtems_debugger_remote_debug(bool state)
 {
-  rtems_debugger_lock();
-  rtems_debugger->remote_debug = state;
-  rtems_debugger_printf("rtems-db: remote-debug is %s\n",
-rtems_debugger->remote_debug ? "on" : "off");
-  rtems_debugger_unlock();
+  if (rtems_debugger_running()) {
+rtems_debugger_lock();
+rtems_debugger->remote_debug = state;
+rtems_debugger_printf("rtems-db: remote-debug is %s\n",
+  rtems_debugger->remote_debug ? "on" : "off");
+rtems_debugger_unlock();
+  } else {
+rtems_debugger_printf("rtems-db: debug server not running\n");
+  }
   return 0;
 }
-- 
2.37.1

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


Re: [PATCH] libdebugger: Add a target break call to suspend all running threads

2022-10-17 Thread Chris Johns
I have fixed the subject line as above in the commit to push :)

Chris

On 18/10/22 7:35 am, chr...@rtems.org wrote:
> From: Chris Johns 
> 
> - Optionally wait if there is no remote debugger connected and break
>   when the remote connects
> 
> Closes #4740
> ---
>  .../rtems/debugger/rtems-debugger-server.h|  1 +
>  cpukit/include/rtems/rtems-debugger.h |  8 +++
>  cpukit/libdebugger/rtems-debugger-server.c| 72 ++-
>  3 files changed, 65 insertions(+), 16 deletions(-)
> 
> diff --git a/cpukit/include/rtems/debugger/rtems-debugger-server.h 
> b/cpukit/include/rtems/debugger/rtems-debugger-server.h
> index 2189aac873..4d0407a951 100644
> --- a/cpukit/include/rtems/debugger/rtems-debugger-server.h
> +++ b/cpukit/include/rtems/debugger/rtems-debugger-server.h
> @@ -103,6 +103,7 @@ extern "C" {
>  #define RTEMS_DEBUGGER_FLAG_MULTIPROCESS (1 << 4)
>  #define RTEMS_DEBUGGER_FLAG_VERBOSE_LOCK (1 << 5)
>  #define RTEMS_DEBUGGER_FLAG_VERBOSE_CMDS (1 << 6)
> +#define RTEMS_DEBUGGER_FLAG_BREAK_WAITER (1 << 7)
>  
>  /**
>   * Forward decl for the threads and targets.
> diff --git a/cpukit/include/rtems/rtems-debugger.h 
> b/cpukit/include/rtems/rtems-debugger.h
> index 1fc8b3d522..7627e83382 100644
> --- a/cpukit/include/rtems/rtems-debugger.h
> +++ b/cpukit/include/rtems/rtems-debugger.h
> @@ -53,6 +53,14 @@ extern int rtems_debugger_start(const char*  
> remote,
>  rtems_task_priority  priority,
>  const rtems_printer* printer);
>  
> +/**
> + * Suspend all running threads including the caller if not
> + * excluded. Returns when the debugger has connected and continued.
> + *
> + * If wait is true and there is no remote connected wait then break.
> + */
> +extern int rtems_debugger_break(bool wait);
> +
>  /**
>   * Stop the Debugger.
>   */
> diff --git a/cpukit/libdebugger/rtems-debugger-server.c 
> b/cpukit/libdebugger/rtems-debugger-server.c
> index 9de9421b6b..b7b9727d84 100644
> --- a/cpukit/libdebugger/rtems-debugger-server.c
> +++ b/cpukit/libdebugger/rtems-debugger-server.c
> @@ -1678,18 +1678,30 @@ rtems_debugger_events(rtems_task_argument arg)
>  
>rtems_debugger_target_enable();
>  
> -  while (rtems_debugger_server_events_running()) {
> -rtems_debugger_server_events_wait();
> -if (rtems_debugger_verbose())
> -  rtems_debugger_printf("rtems-db: event woken\n");
> -if (!rtems_debugger_server_events_running())
> -  break;
> +  if (rtems_debugger_server_flag(RTEMS_DEBUGGER_FLAG_BREAK_WAITER)) {
> +rtems_debugger->flags &= ~RTEMS_DEBUGGER_FLAG_BREAK_WAITER;
>  r = rtems_debugger_thread_system_suspend();
> -if (r < 0)
> -  break;
> -r = remote_stop_reason(NULL, 0);
> -if (r < 0)
> -  break;
> +if (rtems_debugger_verbose())
> +  rtems_debugger_printf("rtems-db: break waiter\n");
> +rtems_debugger_server_events_signal();
> +if (rtems_debugger_verbose())
> +  rtems_debugger_printf("rtems-db: break waiter: signalled\n");
> +  }
> +
> +  if (r == 0) {
> +while (rtems_debugger_server_events_running()) {
> +  rtems_debugger_server_events_wait();
> +  if (rtems_debugger_verbose())
> +rtems_debugger_printf("rtems-db: event woken\n");
> +  if (!rtems_debugger_server_events_running())
> +break;
> +  r = rtems_debugger_thread_system_suspend();
> +  if (r < 0)
> +break;
> +  r = remote_stop_reason(NULL, 0);
> +  if (r < 0)
> +break;
> +}
>}
>  
>if (r < 0)
> @@ -1972,6 +1984,30 @@ rtems_debugger_server_crash(void)
>rtems_debugger->remote->end(rtems_debugger->remote);
>  }
>  
> +int
> +rtems_debugger_break(bool wait)
> +{
> +  int r = 0;
> +  if (!rtems_debugger_running()) {
> +errno = EIO;
> +r = -1;
> +  } else {
> +rtems_debugger_lock();
> +if (rtems_debugger_server_events_running()) {
> +  rtems_debugger_server_events_signal();
> +} else if (
> +  wait && !rtems_debugger_server_flag(RTEMS_DEBUGGER_FLAG_BREAK_WAITER)) 
> {
> +  rtems_debugger->flags |= RTEMS_DEBUGGER_FLAG_BREAK_WAITER;
> +  rtems_debugger_server_events_wait();
> +} else {
> +  errno = EIO;
> +  r = -1;
> +}
> +rtems_debugger_unlock();
> +  }
> +  return r;
> +}
> +
>  int
>  rtems_debugger_stop(void)
>  {
> @@ -1998,10 +2034,14 @@ rtems_debugger_set_verbose(bool on)
>  int
>  rtems_debugger_remote_debug(bool state)
>  {
> -  rtems_debugger_lock();
> -  rtems_debugger->remote_debug = state;
> -  rtems_debugger_printf("rtems-db: remote-debug is %s\n",
> -rtems_debugger->remote_debug ? "on" : "off");
> -  rtems_debugger_unlock();
> +  if (rtems_debugger_running()) {
> +rtems_debugger_lock();
> +rtems_debugger->remote_debug = state;
> +rtems_debugger_printf("rtems-db: remote-debug is %s\n",
> +  rtems_debugger->remote_debug ? "on" : "off");
> +rtems_debugger_unlock();
> +  } else {
> +

Re: Ping on ticket 4728 + patch

2022-10-17 Thread Joel Sherrill
On Sun, Oct 16, 2022 at 9:32 AM Alan Cudmore  wrote:

> On Fri, Oct 14, 2022 at 9:19 AM Joel Sherrill  wrote:
> >
> > Pushed. Thanks for pinging. It does help.
> >
> > Since you are looking at the riscv BSPs, could you look at the four
> > BSP build failures reported here:
> >
> > https://lists.rtems.org/pipermail/build/2022-September/036496.html
> >
> > I think they are all variants so one fix (maybe repeated) should do it.
> > The reported message isn't much help:
> >
> >1 smp riscv/rv32iac build:
> >   configure: /home/tester/rtems-cron-6/rtems/waf configure\
> >   --prefix=/home/tester/rtems-cron-6/tools/6/bsps --top=/home/tester\
> >   /rtems-cron-6/rtems --rtems-config=config-riscv-rv32iac-smp.ini
> >  error: ld/collect2:0 error: no error message found!
> >
>
> I ran the bsp builder on the riscv BSPs with an updated toolchain and
> latest rtems master. I was able to reproduce only one of the failures
> with the rv32imafdc SMP configuration:
> Failures:
>1 smp riscv/rv32imafdc build:
>   configure: /home/alan/rtems/test-build/rtems/waf configure\
>   --prefix=/home/alan/rtems/test-build/bsps\
>   --top=/home/alan/rtems/test-build/rtems --rtems-config=config-riscv-\
>   rv32imafdc-smp.ini
>  error: ld/collect2:0 error: no error message found!
>
> Average BSP Build Time: 0:00:26.253927
> Total Time 1:04:45.581263
> Passes: 147   Failures: 1
>
> This is the detail from the log:
> [1424/1437] Compiling ../../../rtems/testsuites/samples/nsecs/init.c
> start.o: in function `.L0 ':
>
> /home/alan/rtems/test-build/rtems/build/riscv/rv32imafdc/../../../bsps/riscv/shared/start/start.S:86:(.bsp_start_text+0x5
> c): relocation truncated to fit: R_RISCV_GPREL_I against symbol
> `bsp_section_bss_size' defined in *ABS* section in /home/
>
> alan/rtems/test-build/rtems/build/riscv/rv32imafdc/testsuites/samples/minimum.exe
> collect2: error: ld returned 1 exit status
>
> This seems to be similar to the error I get when I try to build the
> frdme310arty BSP with the testsuite and posix enabled:
> [4152/4326] Compiling testsuites/validation/tr-sem-surrender.c
> start.o: in function `.L0 ':
>
> /home/alan/rtems/test-build/rtems-tmp/build/riscv/frdme310arty/../../../bsps/riscv/shared/start/start.S:86:(.bsp_start_te
> xt+0x28): relocation truncated to fit: R_RISCV_GPREL_I against symbol
> `bsp_section_bss_size' defined in *ABS* section in
>
> /home/alan/rtems/test-build/rtems-tmp/build/riscv/frdme310arty/testsuites/validation/ts-validation-io-kernel.exe
> collect2: error: ld returned 1 exit status
>
> I need to investigate this more.
>

There are two issues.

(1) The test in question does not fit on this target and needs to be
disabled.

(2) Somewhere there is parsing of this output which may be able to be more
helpful.

Chris... any pointers on (2)? Can the output of bsp builder be improved?

>
> > It might be nothing more than a test which doesn't fit in some section
> > but I have no idea beyond that they are all noted as SMP. Chris may be
> > helpful decoding the precise configuration.
> >
> > --joel
> >
> > On Thu, Oct 13, 2022 at 8:27 PM Alan Cudmore 
> wrote:
> >>
> >> Hi,
> >> Sorry, I did not set a message subject in my previous email.
> >>
> >> Ping on this patch. I built all of the riscv/riscv BSPs that use it.
> >> It works for the generic riscv/qemu BSP, the PolarFire BSP, and the
> >> RISC-V BSP I am working on where the macro failed.
> >> https://lists.rtems.org/pipermail/devel/2022-September/073390.html
> >>
> >> Thanks,
> >> Alan
> >> ___
> >> 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: Ping on ticket 4728 + patch

2022-10-17 Thread Chris Johns
On 18/10/2022 1:13 pm, Joel Sherrill wrote:
> On Sun, Oct 16, 2022 at 9:32 AM Alan Cudmore  > wrote:
> 
> On Fri, Oct 14, 2022 at 9:19 AM Joel Sherrill  > wrote:
> >
> > Pushed. Thanks for pinging. It does help.
> >
> > Since you are looking at the riscv BSPs, could you look at the four
> > BSP build failures reported here:
> >
> > https://lists.rtems.org/pipermail/build/2022-September/036496.html
> 
> >
> > I think they are all variants so one fix (maybe repeated) should do it.
> > The reported message isn't much help:
> >
> >    1 smp riscv/rv32iac build:
> >       configure: /home/tester/rtems-cron-6/rtems/waf configure\
> >       --prefix=/home/tester/rtems-cron-6/tools/6/bsps 
> --top=/home/tester\
> >       /rtems-cron-6/rtems --rtems-config=config-riscv-rv32iac-smp.ini
> >      error: ld/collect2:0 error: no error message found!
> >
> 
> I ran the bsp builder on the riscv BSPs with an updated toolchain and
> latest rtems master. I was able to reproduce only one of the failures
> with the rv32imafdc SMP configuration:
> Failures:
>    1 smp riscv/rv32imafdc build:
>       configure: /home/alan/rtems/test-build/rtems/waf configure\
>       --prefix=/home/alan/rtems/test-build/bsps\
>       --top=/home/alan/rtems/test-build/rtems 
> --rtems-config=config-riscv-\
>       rv32imafdc-smp.ini
>      error: ld/collect2:0 error: no error message found!
> 
> Average BSP Build Time: 0:00:26.253927
> Total Time 1:04:45.581263
> Passes: 147   Failures: 1
> 
> This is the detail from the log:
> [1424/1437] Compiling ../../../rtems/testsuites/samples/nsecs/init.c
> start.o: in function `.L0 ':
> 
> /home/alan/rtems/test-build/rtems/build/riscv/rv32imafdc/../../../bsps/riscv/shared/start/start.S:86:(.bsp_start_text+0x5
> c): relocation truncated to fit: R_RISCV_GPREL_I against symbol
> `bsp_section_bss_size' defined in *ABS* section in /home/
> 
> alan/rtems/test-build/rtems/build/riscv/rv32imafdc/testsuites/samples/minimum.exe
> collect2: error: ld returned 1 exit status
> 
> This seems to be similar to the error I get when I try to build the
> frdme310arty BSP with the testsuite and posix enabled:
> [4152/4326] Compiling testsuites/validation/tr-sem-surrender.c
> start.o: in function `.L0 ':
> 
> /home/alan/rtems/test-build/rtems-tmp/build/riscv/frdme310arty/../../../bsps/riscv/shared/start/start.S:86:(.bsp_start_te
> xt+0x28): relocation truncated to fit: R_RISCV_GPREL_I against symbol
> `bsp_section_bss_size' defined in *ABS* section in
> 
> /home/alan/rtems/test-build/rtems-tmp/build/riscv/frdme310arty/testsuites/validation/ts-validation-io-kernel.exe
> collect2: error: ld returned 1 exit status
> 
> I need to investigate this more.
> 
> 
> There are two issues. 
> 
> (1) The test in question does not fit on this target and needs to be disabled.
> 
> (2) Somewhere there is parsing of this output which may be able to be more 
> helpful.
> 
> Chris... any pointers on (2)? Can the output of bsp builder be improved?

1) There should be a log of all the build details. Check in that for the error.

2) Can you build it by hand and see the error?

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