Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

#3727 new defect

RTEMS 5 raises exception on mvme2100 VME CPU board (PowerPC)

Reported by: Goetz Pfeiffer Owned by:
Priority: high Milestone:
Component: arch/powerpc Version: 5
Severity: blocker Keywords: PowerPC mvme2100 exception
Cc: Blocked By:
Blocking:

Description

Hello,
version 5 of RTEMS crashes on a mvme2100 CPU board.

Here are details of the RTEMS version:

repository  : git://git.rtems.org/rtems.git
branch      : master
version     : cbfc3415607a6943823e8fc47c38408dcc7dbd90
last commit : Thu Mar 14 08:20:54 2019 +0100

build commands:

  ./bootstrap
  mkdir -p build
  cd build
  ../configure --target=powerpc-rtems5 --enable-tests --enable-rtemsbsp="mvme2100 beatnik" --prefix /home/pfeiffer/rtems/rtems/5
  make -sj
  make install

Booted File:

  build/powerpc-rtems5/c/mvme2100/testsuites/libtests/dl10.exe

Boot Messages:

PPC5-Bug>nab

NetBoot about to Begin... Press <ESC> to Bypass, <SPC> to Continue

Network Booting from: DEC21143, Controller 0, Device 0
Device Name: /pci@fec00000/pci1011,19@e,0:0,0
Loading: /opt/IOC/idcp/dl10.exe

Client IP Address      = 193.149.12.202
Server IP Address      = 193.149.12.6
Gateway IP Address     = 193.149.12.1
Subnet IP Address Mask = 255.255.255.0
Boot File Name         = /opt/IOC/idcp/dl10.exe
Argument File Name     = 

Network Boot File load in progress... To abort hit <BREAK>

Bytes Received =&8812400, Bytes Loaded =&8812400
Bytes/Second   =&734366, Elapsed Time =12 Second(s)

Residual-Data Located at: $01F5511C

Exception: Program (Illegal Instruction)
SRR0 =00005000 SRR1 =00083040 Vector-Offset =00700
IP     =00005000 MSR    =00003040 CR     =00000000 FPSCR  =00000000
R0     =00000000 R1     =01F00000 R2     =00000000 R3     =01F5511C
R4     =00005000 R5     =00000000 R6     =00000000 R7     =00000000
R8     =00000000 R9     =00000000 R10    =00000000 R11    =00000000
R12    =00000000 R13    =00000000 R14    =00000000 R15    =00000000
R16    =00000000 R17    =00000000 R18    =00000000 R19    =00000000
R20    =00000000 R21    =00000000 R22    =00000000 R23    =00000000
R24    =00000000 R25    =00000000 R26    =00000000 R27    =00000000
R28    =00000000 R29    =00000000 R30    =00000000 R31    =00000000
SPR0   =9BBF322F SPR1   =00000000 SPR8   =00000000 SPR9   =00000000
00005000 7F454C46  WORD        $7F454C46
PPC5-Bug>

I have seen that dl10.exe compiled for the "beatnik" board support does not crash on a mvme5500 CPU board.

Change History (11)

comment:1 Changed on 03/28/19 at 14:58:42 by Goetz Pfeiffer

An exception also occurs when I build the examples-v2 project and load

examples-v2/hello/both_hello/o-optimize/both_hello.ralf

The exceprion with "hello.ralf" does not occur when I use branch "examples-v2-4-10-branch" of examples-v2 and RTEMS 4.10.

comment:2 Changed on 03/29/19 at 12:32:48 by Goetz Pfeiffer

It seems that *.exe files cannot be loaded from the mvme2100 CPU anyway, but
*.ralf files do.

So, in order to reproduce the bug you have to check out examples-v2 (https://git.rtems.org/examples-v2), build it and load "both_hello.ralf".

On the mvme2100 cpu this still gives an exception.

The command

hexdump both_hello.ralf | less 

shows that the file starts with ".ELF" in ASCII representation, so it is an probably an ELF file. This is probably not the format the CPU bootloader can load.

I verified that for the "beatnik" board support, the file "both_hello.ralf" does not start with ".ELF", and there the hello world example works.

comment:3 Changed on 03/29/19 at 13:22:00 by Joel Sherrill

The transformation step on linked executables (.exe) to downloadable images (.ralf) was dropped from the build system between 4.11 and 5. This is now something that should be done manually.

Specifically the bsp-post-link step is no longer performed. For BSPs that had one, the bsp-post-link definition is still present but not used in the RTEMS build tree. I am unsure offhand it if is used when building applications against the installed RTEMS image like the examples-v2 do with the rtems_waf build system (assuming waf is what you used there)

https://git.rtems.org/rtems/tree/bsps/powerpc/motorola_powerpc/config/mvme2100.cfg

I think this may be what you are seeing.

comment:4 in reply to:  3 Changed on 03/29/19 at 22:33:47 by Chris Johns

Replying to Joel Sherrill:

I am unsure offhand it if is used when building applications against the installed RTEMS image like the examples-v2 do with the rtems_waf build system (assuming waf is what you used there)

It will depend on the build system used to build examples-v2. The 4.10 would be Makefile.inc based and if the internal change to drop the post link conversion is exposed to the make build of examples-v2 it would also be dropped. The waf build does not support any post link conversions because there is no clean way this information could be captured. The work to add this type of support in a uniform way is complex and large given the number of BSPs we have.

comment:5 Changed on 05/27/19 at 08:25:57 by Sebastian Huber <sebastian.huber@…>

In [changeset:"f419349a1370ffed9cb3d2322d01e801e012134e/rtems" f419349/rtems]:

bsps/powerpc: Adjust ppcboot.lds

The GNU ld had a couple of changes which resulted in a broken bootloader
image generation. Recent linker versions tie assignments to their
nearest output section statement. Place all absolute symbols which are
used with @sectoff relocations into a special section.

See also:

"Binutils 2.28 on PowerPC: dangerous relocation: generic linker can't
handle R_PPC_SECTOFF_HA"

https://www.sourceware.org/ml/binutils/2019-05/msg00183.html

Update #3727

comment:6 Changed on 05/27/19 at 08:38:09 by Sebastian Huber <sebastian.huber@…>

In [changeset:"a00052a341010ac7cf688e6366d7a3a96b48926f/rtems-docs" a00052a/rtems-docs]:

user: Document boot image generation

Update #3727.

comment:7 Changed on 06/27/19 at 12:39:56 by Sebastian Huber <sebastian.huber@…>

In [changeset:"9b858ee6ef0805fc0671ed226d66295395d26cbc/rtems" 9b858ee/rtems]:

bsp/motorola_powerpc: Fix linker command file

Fix the size symbol value to reflect the total size of the bootloader.
This prevents a bootloader crash with application images above a certain
threshold (e.g. fileio sample program).

Update #3727.

comment:8 Changed on 02/07/21 at 22:09:14 by Chris Johns

Is the issue in this ticket fixed? Can the ticket be closed?

comment:9 Changed on 02/08/21 at 04:48:35 by Joel Sherrill

If this runs on the board you have access to, close it.

comment:10 in reply to:  9 Changed on 02/09/21 at 22:36:53 by Chris Johns

Replying to Joel Sherrill:

If this runs on the board you have access to, close it.

Who is this too?

If me, I do not have a mvme2100. The defines in the code means the mvme2100 is built differently to the mvme2[67]00.

comment:11 Changed on 02/09/21 at 23:22:49 by Joel Sherrill

It was to you Chris. Ask on the list for someone with an MVME2100 to test with. I don't remember who Richard added mvme2100 support for. I might be able to dig it up. But we need a tester. Otherwise, we just may have to close this.

Note: See TracTickets for help on using tickets.