qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [RFC v3 00/10] hw/m68k: add Apple Machinto


From: Mark Cave-Ayland
Subject: Re: [Qemu-block] [Qemu-devel] [RFC v3 00/10] hw/m68k: add Apple Machintosh Quadra 800 machine
Date: Fri, 29 Jun 2018 19:20:32 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

On 28/06/18 00:29, Laurent Vivier wrote:

I'm rebasing some of these patches for seven years now,
too many years...

if you want to test the machine, I'm sorry, it doesn't boot
a MacROM, but you can boot a linux kernel from the command line.

You can install your own disk using debian-installer, with:

     ...
     -M q800 \
     -serial none -serial mon:stdio \
     -m 1000M -drive file=m68k.qcow2,format=qcow2 \
     -net nic,model=dp83932,addr=09:00:07:12:34:57 \
     -append "console=ttyS0 vga=off" \
     -kernel vmlinux-4.15.0-2-m68k \
     -initrd initrd.gz \
     -drive file=debian-9.0-m68k-NETINST-1.iso \
     -drive file=m68k.qcow2,format=qcow2 \
     -nographic

If you use a graphic adapter instead of "-nographic", you can use "-g" to set 
the
size of the display (I use "-g 1600x800x24").

You can get the ISO from:

https://cdimage.debian.org/mirror/cdimage/ports/9.0/m68k/iso-cd/debian-9.0-m68k-NETINST-1.iso

and extract the kernel and initrd.gz:

guestfish --add debian-9.0-m68k-NETINST-1.iso --ro \
           --mount /dev/sda:/ <<_EOF_
copy-out /install/cdrom/initrd.gz .
copy-out /install/kernels/vmlinux-4.15.0-2-m68k .
_EOF_

The mirror to use is: http://ftp.ports.debian.org/debian-ports/
when it fails, continue without boot loader.

In the same way, you can extract the kernel and the initramfs from the qcow2
image to use it with "-kernel" and "-initrd":

guestfish --add m68k.qcow2 --mount /dev/sda2:/ <<_EOF_
copy-out /boot/vmlinux-4.15.0-2-m68k .
copy-out /boot/initrd.img-4.15.0-2-m68k .
_EOF_

and boot with:

    ...
    -append "root=/dev/sda2 rw console=ttyS0 console=tty \
    -kernel vmlinux-4.15.0-2-m68k \
    -initrd initrd.img-4.15.0-2-m68k

v3: fix subject prefix "C" -> "RFC"

v2: remove the dp8393x fixes, because one of the patch breaks something
     Update "dp8393x: manage big endian bus" with idea from Thomas
     Mark has reworked most of the patches:
     - use mos6522
     - some code move, renamings and cleanup

Laurent Vivier (10):
   hw/m68k: add via support
   ADB: VIA probes ADB bus when it is idle
   escc: introduce a selector for the register bit
   hw/m68k: add video card
   hw/m68k: Apple Sound Chip (ASC) emulation
   ESP: add pseudo-DMA as used by Macintosh
   hw/m68k: add Nubus support
   hw/m68k: add a dummy SWIM floppy controller
   dp8393x: manage big endian bus
   hw/m68k: define Macintosh Quadra 800

  MAINTAINERS                         |  19 +
  arch_init.c                         |   4 +
  default-configs/m68k-softmmu.mak    |  14 +
  hw/Makefile.objs                    |   1 +
  hw/audio/Makefile.objs              |   1 +
  hw/audio/asc.c                      | 463 +++++++++++++++++++++++
  hw/block/Makefile.objs              |   1 +
  hw/block/swim.c                     | 284 ++++++++++++++
  hw/char/escc.c                      |  30 +-
  hw/display/Makefile.objs            |   1 +
  hw/display/macfb-template.h         | 158 ++++++++
  hw/display/macfb.c                  | 308 +++++++++++++++
  hw/input/adb-kbd.c                  |   4 +
  hw/input/adb-mouse.c                |   4 +
  hw/input/adb.c                      | 115 ++++++
  hw/intc/Makefile.objs               |   1 +
  hw/intc/q800_irq.c                  |  73 ++++
  hw/m68k/Makefile.objs               |   6 +-
  hw/m68k/bootinfo.h                  | 100 +++++
  hw/m68k/q800.c                      | 385 +++++++++++++++++++
  hw/mips/mips_jazz.c                 |   2 +-
  hw/misc/Makefile.objs               |   1 +
  hw/misc/mac_via.c                   | 731 ++++++++++++++++++++++++++++++++++++
  hw/net/dp8393x.c                    |  88 +++--
  hw/nubus/Makefile.objs              |   4 +
  hw/nubus/mac-nubus-bridge.c         |  45 +++
  hw/nubus/nubus-bridge.c             |  34 ++
  hw/nubus/nubus-bus.c                | 111 ++++++
  hw/nubus/nubus-device.c             | 210 +++++++++++
  hw/scsi/esp.c                       | 297 +++++++++++++--
  include/hw/audio/asc.h              |  48 +++
  include/hw/block/swim.h             |  53 +++
  include/hw/char/escc.h              |   1 +
  include/hw/display/macfb.h          |  63 ++++
  include/hw/input/adb.h              |  10 +
  include/hw/intc/q800_irq.h          |  39 ++
  include/hw/misc/mac_via.h           | 107 ++++++
  include/hw/nubus/mac-nubus-bridge.h |  24 ++
  include/hw/nubus/nubus.h            |  69 ++++
  include/hw/scsi/esp.h               |  11 +-
  qemu-options.hx                     |   2 +-
  tests/qom-test.c                    |   5 +
  tests/test-hmp.c                    |   3 +-
  vl.c                                |   3 +-
  44 files changed, 3857 insertions(+), 76 deletions(-)
  create mode 100644 hw/audio/asc.c
  create mode 100644 hw/block/swim.c
  create mode 100644 hw/display/macfb-template.h
  create mode 100644 hw/display/macfb.c
  create mode 100644 hw/intc/q800_irq.c
  create mode 100644 hw/m68k/bootinfo.h
  create mode 100644 hw/m68k/q800.c
  create mode 100644 hw/misc/mac_via.c
  create mode 100644 hw/nubus/Makefile.objs
  create mode 100644 hw/nubus/mac-nubus-bridge.c
  create mode 100644 hw/nubus/nubus-bridge.c
  create mode 100644 hw/nubus/nubus-bus.c
  create mode 100644 hw/nubus/nubus-device.c
  create mode 100644 include/hw/audio/asc.h
  create mode 100644 include/hw/block/swim.h
  create mode 100644 include/hw/display/macfb.h
  create mode 100644 include/hw/intc/q800_irq.h
  create mode 100644 include/hw/misc/mac_via.h
  create mode 100644 include/hw/nubus/mac-nubus-bridge.h
  create mode 100644 include/hw/nubus/nubus.h

I'm fairly happy with the majority of these patches apart from 2 of them which I will reply to separately.

A couple of minor points around files/naming:

- mac_via.c seems a bit vague, for example we already have 2 mac VIAs for PPC Macs (CUDA and PMU). Should it be q800_via.c or have some other designation to show that it is for 68K macs?

- Same as above for mac-nubus-bridge.c and macfb.c, could we name them differently to indicate they are related to the 68K macs and not PPC macs?

- As part of the work I did, I turned the interrupt "controller" into a separate controller and also moved it to a separate file (q800_irq.c), but looking at it again it is really just a priority-based CPU interrupt.

If there is no other complexity other than prioritising the CPU interrupts, then perhaps the QOM Q800_INTC device should be moved into q800.c rather than living in a separate file?


ATB,

Mark.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]