raspi2 with multiple CPU's #1

Bug #1733720 reported by Ken Dickey
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Invalid
Undecided
Unassigned

Bug Description

Greetings,

I am running a small program for raspi2 (from http://wiki.osdev.org/ARM_RaspberryPi_Tutorial_C).

This code writes "Hello World", but the output ir repeated 4 times.

My thought was that this is emulating a 4 cpu core system.

However, when I check the MPIDR registed for CPU number, it always returns 1.

I git cloned github.com/qemu/qemu.git, made & installed on Acer ARM CB5-311 under Crouton/ubuntu.

./qemu.sh
1111

Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> uname -a
Linux localhost 3.10.18 #1 SMP Mon Nov 13 16:34:10 PST 2017 armv7l armv7l armv7l GNU/Linux

Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> qemu-system-arm --version
QEMU emulator version 2.10.91 (v2.11.0-rc1-dirty)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

=====
static inline uint32_t read_mpdir(void)
{
  uint32_t id;

  asm volatile("mrc p15, 0, %[id], c0, c0, 0 @ read MIDR\n\t"
        : [id] "=r" (id));
  return id;
}
======
void kernel_main(uint32_t r0, uint32_t r1, uint32_t atags)
{
 // Declare as unused
 (void) r0;
 (void) r1;
 (void) atags;

 uint32_t cpu_id;

 cpu_id = read_mpdir() & 0x03;

 uart_putc( "01234"[cpu_id] ); /* output is "1111" */

 if (cpu_id == 0) { /* code never executes 8^( */ }

====== qemu.sh
qemu-system-arm -m 256 -M raspi2 -no-reboot -serial stdio -kernel myos.elf

Thanks much,
-KenD

Revision history for this message
Ken Dickey (ken-dickey) wrote :

NOT A BUG

Reviewed the code and found the problem.

asm volatile("mrc p15, 0, %[id], c0, c0, 0 @ read MIDR\n\t" ...

I miscopied the code above; MIDR should have been MIPDR ( 5 )

I now get:

Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> ./qemu.sh
0H312ello, kernel World!

Sorry about the bogus report!
-KenD

Changed in qemu:
status: New → Invalid
Revision history for this message
Ken Dickey (ken-dickey) wrote :

Sorry again, "MPIDR"

Gotta learn to type!

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.