qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] GSoC 2015 (Mac OS 9 support) report, week 3


From: Alexander Graf
Subject: [Qemu-devel] GSoC 2015 (Mac OS 9 support) report, week 3
Date: Wed, 20 May 2015 02:24:06 +0200

[This Week]
  - Investigate MOL device tree further
    - <Mark> There is also an interesting dump of what seems to be a MOL tree
      at http://josejx.net/mol/mol-stable/mollib/oftrees/oftree.nw.old (which
      has a commented out entry for "AAPL,debug" set to -1). The interesting
      parts I see here are the "interrupt-controller" node in /chosen and
      various additional names in the "compatible" property for various
      devices.
    - The comparison will be done by tomorrow, at the moment I'm writing an
      FCode function to dump the entire tree along with properties.
    - The attached link has incomplete notes on the differences between the
      device trees; they will be completed this week.
  - Patch: Copyright string
  - Patch: RTAS node

[Next Week]
  - Remove extraneous "interrupts" property from /pci/mac-io
    - I'm having trouble tracking down where the property is actually being
      set. The mac-io devices are defined in drivers/pci_database.c, but the
      pci_dev_t struct (drivers/pci_database.h) doesn't appear to have an
      interrupts field. Much of the mac-io related functionality is defined in
      drivers/macio.c, but there's no mention of interrupts there so I'm kind
      of at a loss.
    - This originates from the PCI device's announcement of an IRQ pin which
      really shouldn't be there
  - Test and debug boot script loader
  - Progress past quiesce() client interface call
    - At the moment, this function simply closes all USB devices (`usb_exit()`)
      and sets the Instruction and Data Address Translation bits in the MSR
      (@agraf: does this cause any side effects?). The stack diagram shows no
      arguments or return values, and none of the other `ciface` functions make
      any modifications to the stack other than their arguments or return
      values.
    - Looks like `quiesce` either hangs on `mtmsr` or makes a jump out of the
      function.
    - MSR.IR and MSR.DR enable paging for instructions and data respectively.
      IIRC we disable paging when quiesce gets called because it's the last
      call that Linux runs before it executes non-OF aware code IIRC.
    - Try to run qemu with -d in_asm,cpu,int -D log and check where the code
      execution hangs :). There's a good chance we're already in the Mac OS 9
      kernel.
    - It would appear that execution has branched off into invalid memory.
      invalid/unsupported opcode: 00 - 00 - 00 (00000000) 00f03000 0     IN:
      0x00f03000:  .long 0x0
    - Awesome. What code gets executed before that? Maybe we shouldn't turn off
      IR/DR?
    - Actually looking at the code, the MSR IR/DR part is surround by a #if 0
      ... #endif pair... maybe something in usb_exit() is breaking things?
      Possibly try removing it temporarily?
    - usb_exit() doesn't appear to be causing any issues.

[Long Term]
  - Continue updating project log
  - Create and send patches
    - [ ] Patch: Boot script loader
    - [ ] ROM node
  - Enable debugging in MOL
    - The installation is now broken after a failed make. Tried reinstalling
      from Zypper but it couldn't find the config files -- do they have to be
      added manually?
    - The config files are at a different location when you compile manually,
      but I don't remember where everything was :). Just run mol with strace,
      it will tell you where it's looking for things. The current ones should
      be somewhere in /etc.



reply via email to

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