Since virtio devices intentionally access memory directly, we are not actually dependant on the iommu patches in order to make progress. Merely fixing the PCI interrupt setup was enough to get the virtio-pci interface working.
We now make it quite a long way into the Debian Lenny install. At some random point during the install, it hangs. I assume we're somehow losing an interrupt or something, but it's very hard to tell. The cpu is still running, servicing timer interrupts, but the userland process is stuck. I hope to get the vga console working next. That should allow me multiple vt's, which should allow me to poke at the install process from within the VM. I still havn't gotten any substantive review of the hw/ side of the patches, which is the part of Qemu that I'm least familiar with. Pretty please? r~ Changes from v3 -> v4 * Rebased vs mainline (85097db). * PCI IDE, VGA devices added; * PS2 keyboard device added. * PCI interrupt setup fixed. * Git submodule and blob updated to current. - Copyright notices added, as appropritate - PCI initialization added. - Very beginnings of an SRM prompt. Changes from v2 -> v3 * Emulation target is now CLIPPER instead of SX164. * Allow the CPU to halt til the next interrupt. * Allow the CPU access to the host clock, and a high-res alarm. * Fix gdb single-stepping in the presence of timer interrupts. * Fix gdb single-stepping past branches. * We now make it all the way into userland. Richard Henderson (35): Export the unassigned_mem read/write functions. target-alpha: Disassemble EV6 PALcode instructions. pci: Export pci_to_cpu_addr. target-alpha: Single-step properly across branches. target-alpha: Remove partial support for palcode emulation. target-alpha: Enable the alpha-softmmu target. target-alpha: Tidy exception constants. target-alpha: Rationalize internal processor registers. target-alpha: Cleanup MMU modes. target-alpha: Fixup translation of PALmode instructions. target-alpha: Add IPRs to be used by the emulation PALcode. target-alpha: Tidy up arithmetic exceptions. target-alpha: Use do_restore_state for arithmetic exceptions. target-alpha: Merge HW_REI and HW_RET implementations. target-alpha: Implement do_interrupt for system mode. target-alpha: Swap shadow registers moving to/from PALmode. target-alpha: Add various symbolic constants. target-alpha: Use kernel mmu_idx for pal_mode. target-alpha: All ISA checks to use TB->FLAGS. target-alpha: Disable interrupts properly. target-alpha: Implement more CALL_PAL values inline. target-alpha: Implement cpu_alpha_handle_mmu_fault for system mode. target-alpha: Remap PIO space for 43-bit KSEG for EV6. target-alpha: Trap for unassigned and unaligned addresses. target-alpha: Include the PCC_OFS in the RPCC return value. target-alpha: Use a fixed frequency for the RPCC in system mode. target-alpha: Implement TLB flush primitives. target-alpha: Add custom PALcode image for CLIPPER emulation. target-alpha: Add CLIPPER emulation. target-alpha: Implement WAIT IPR. target-alpha: Implement HALT IPR. target-alpha: Add high-resolution access to wall clock and an alarm. target-alpha: Properly select the VGA controler to use. target-alpha: Enable PCI IDE target-alpha: Add ps2 keyboard. .gitmodules | 3 + Makefile | 3 +- Makefile.target | 4 +- alpha-dis.c | 4 - configure | 9 +- cpu-common.h | 7 + cpu-exec.c | 33 +- default-configs/alpha-softmmu.mak | 11 + dis-asm.h | 3 + disas.c | 2 +- exec-all.h | 2 +- exec.c | 24 +- hw/alpha_dp264.c | 188 +++++++ hw/alpha_palcode.c | 1048 ------------------------------------- hw/alpha_pci.c | 358 +++++++++++++ hw/alpha_sys.h | 44 ++ hw/alpha_typhoon.c | 799 ++++++++++++++++++++++++++++ hw/pci.c | 3 +- hw/pci.h | 1 + linux-user/main.c | 50 +-- pc-bios/README | 3 + pc-bios/palcode-clipper | Bin 0 -> 176851 bytes roms/qemu-palcode | 1 + target-alpha/cpu.h | 378 ++++++-------- target-alpha/exec.h | 12 +- target-alpha/helper.c | 589 +++++++++------------ target-alpha/helper.h | 37 +- target-alpha/machine.c | 87 +++ target-alpha/op_helper.c | 289 +++++------ target-alpha/translate.c | 836 +++++++++++++++++------------ 30 files changed, 2659 insertions(+), 2169 deletions(-) create mode 100644 default-configs/alpha-softmmu.mak create mode 100644 hw/alpha_dp264.c delete mode 100644 hw/alpha_palcode.c create mode 100644 hw/alpha_pci.c create mode 100644 hw/alpha_sys.h create mode 100644 hw/alpha_typhoon.c create mode 100755 pc-bios/palcode-clipper create mode 160000 roms/qemu-palcode create mode 100644 target-alpha/machine.c -- 1.7.4.4