On Wed, Dec 23, 2015 at 04:25:24PM -0800, Andrew Baumann wrote: > This patch series adds initial support for Raspberry Pi 2 > (bcm2836). It is heavily based on the original (out of tree) work of > Gregory Estrade, Stefan Weil and others to support Raspberry Pi 1. > > At the end of this series, it is possible to boot a recent raspbian > kernel to a serial console using an invocation such as: > > qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img -sd > 2015-09-24-raspbian-jessie.vhd -append "rw earlyprintk loglevel=8 > console=ttyAMA0 root=/dev/mmcblk0p2" -serial stdio > > (where raspbian-boot is the boot partition from the matching image, > and after commenting-out or removing /etc/ld.so.preload to avoid an > unimplemented setend instruction). > > I plan to add DMA, USB, framebuffer, timers, and other system devices > (vchiq, power, mphi, aux/uart1) in future patches. In the meantime, > the complete code is available at: https://github.com/0xabu/qemu
Hi Andrew, many thanks for this patch series. I'm very interested in this effort from Linux perspective. And would like to help with testing and maybe some development. First, I tried your code from raspi branch (ar7-raspi doesn't compile [1]). Using recent Raspbian 2015-11-21-raspbian-jessie (same results I saw for 2015-09-24). I'm getting kernel panic: [ 6.892677] random: systemd urandom read with 7 bits of entropy available [ 6.908292] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 [ 6.908292] [ 6.909692] CPU: 0 PID: 1 Comm: systemd Not tainted 4.1.13-v7+ #826 [ 6.910106] Hardware name: BCM2709 [ 6.911818] [<80018444>] (unwind_backtrace) from [<80013e08>] (show_stack+0x20/0x24) [ 6.912539] [<80013e08>] (show_stack) from [<8055a188>] (dump_stack+0x98/0xe0) [ 6.913074] [<8055a188>] (dump_stack) from [<80556340>] (panic+0xa4/0x204) [ 6.913721] [<80556340>] (panic) from [<800293c8>] (do_exit+0xa0c/0xa64) [ 6.914181] [<800293c8>] (do_exit) from [<800294b8>] (do_group_exit+0x4c/0xcc) [ 6.914770] [<800294b8>] (do_group_exit) from [<80033f1c>] (get_signal+0x2b0/0x6e0) [ 6.915311] [<80033f1c>] (get_signal) from [<80013190>] (do_signal+0x98/0x3ac) [ 6.915825] [<80013190>] (do_signal) from [<8001368c>] (do_work_pending+0xb8/0xc8) [ 6.916352] [<8001368c>] (do_work_pending) from [<8000f9e4>] (work_pending+0xc/0x20) [ 6.917774] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 [ 6.917774] Full log [3]. Third test I tried is to apply patches from this series on top of master (38a762fec63f), what cause hang on: [ 15.094558 ] mmc0: Timeout waiting for hardware interrupt Full log [2]. I do not follow this mailing list, so maybe I missing some pieces. If I need some other patches to test this series please let me know. My questions: Does 2015-09-24-raspbian-jessie.vhd extracted Linux partition from raspbian image or simply img converted to vhd format ? Is there any problem with using img ? Would you mind to issue tracking on GitHub and pull requests or you want whole communication and possible fixes go through QEMU mailing list ? I think that it maybe useful for code that is not ready for upstreaming. I saw you have issue tracking disabled. Any other pointers how to fix those issues are appreciated. [1] https://gist.github.com/pietrushnic/d2b7714524f0a2db3530 [2] https://gist.github.com/pietrushnic/cfe3d8d70d883a683250 [3] https://gist.github.com/pietrushnic/7daff0f1227de79d1af3 > > Although this series includes many of the peripherals common to Pi1 > (aka bcm2835 aka Pi0), it's not yet possible to boot a Pi1, because it > requires additional peripherals, so I'll also add that SoC and machine > in a later patch. > > v2 changes: > * cleanup based on reviews of mbox and ic devices by Peter Crosthwaite > (see specific notes on each patch) > * removed custom SD controller in favour of sdhci > > Cheers, > Andrew > > Andrew Baumann (7): > bcm2835_mbox: add BCM2835 mailboxes > bcm2835_property: add bcm2835 property channel > bcm2835_ic: add bcm2835 interrupt controller > bcm2835_peripherals: add rollup device for bcm2835 peripherals > bcm2836_control: add bcm2836 ARM control logic > bcm2836: add bcm2836 soc device > raspi: add raspberry pi 2 machine > > default-configs/arm-softmmu.mak | 1 + > hw/arm/Makefile.objs | 1 + > hw/arm/bcm2835_peripherals.c | 198 ++++++++++++++++++++ > hw/arm/bcm2836.c | 135 ++++++++++++++ > hw/arm/raspi.c | 179 +++++++++++++++++++ > hw/intc/Makefile.objs | 1 + > hw/intc/bcm2835_ic.c | 233 ++++++++++++++++++++++++ > hw/intc/bcm2836_control.c | 338 > +++++++++++++++++++++++++++++++++++ > hw/misc/Makefile.objs | 2 + > hw/misc/bcm2835_mbox.c | 323 +++++++++++++++++++++++++++++++++ > hw/misc/bcm2835_property.c | 277 ++++++++++++++++++++++++++++ > include/hw/arm/bcm2835_peripherals.h | 42 +++++ > include/hw/arm/bcm2836.h | 33 ++++ > include/hw/arm/raspi_platform.h | 161 +++++++++++++++++ > include/hw/intc/bcm2835_ic.h | 33 ++++ > include/hw/intc/bcm2836_control.h | 51 ++++++ > include/hw/misc/bcm2835_mbox.h | 37 ++++ > include/hw/misc/bcm2835_mbox_defs.h | 26 +++ > include/hw/misc/bcm2835_property.h | 29 +++ > 19 files changed, 2100 insertions(+) > create mode 100644 hw/arm/bcm2835_peripherals.c > create mode 100644 hw/arm/bcm2836.c > create mode 100644 hw/arm/raspi.c > create mode 100644 hw/intc/bcm2835_ic.c > create mode 100644 hw/intc/bcm2836_control.c > create mode 100644 hw/misc/bcm2835_mbox.c > create mode 100644 hw/misc/bcm2835_property.c > create mode 100644 include/hw/arm/bcm2835_peripherals.h > create mode 100644 include/hw/arm/bcm2836.h > create mode 100644 include/hw/arm/raspi_platform.h > create mode 100644 include/hw/intc/bcm2835_ic.h > create mode 100644 include/hw/intc/bcm2836_control.h > create mode 100644 include/hw/misc/bcm2835_mbox.h > create mode 100644 include/hw/misc/bcm2835_mbox_defs.h > create mode 100644 include/hw/misc/bcm2835_property.h > > -- > 2.5.3 > > Best Regards, -- Piotr Król Embedded Systems Consultant http://3mdeb.com | @3mdeb_com