On 30/12/15 16:47, Programmingkid wrote: > I did disable the change I made to the pci_dma_read() function and applied > this > patch to OpenBIOS. It makes Mac OS X stop booting. This is the message it is > stuck at when Zoltan's patch is applied: > mig_table_max_displ = 70 > > I even removed the rtl8139 from QEMU's options and Mac OS X still stopped > booting > at the same exact spot.
Okay. I've just posted a revised patchset to the OpenBIOS list which may (or may not) help, so please test with that aswell to see if it makes a difference. >> It looks like we have to face up to the reality that Apple's OF >> implementation likes to enable bus mastering for some cards and emulate >> this behaviour in OpenBIOS, since because of this some drivers don't >> explicitly enable bus mastering and so fail under emulation. >> >> I'll go back and revisit Zoltan's patches to see if we can come up with >> something that works better for OpenBIOS upstream. In the meantime I >> still can't quite work out why you still need to swap the BARs around as >> AFAICT both the mmio and io BARs are mapped onto the chip registers - >> any chance you could add some debugging to QEMU in order to figure out >> what is going wrong without your patch? > > I have done a lot of debugging. With only the pci_dma_read() change applied > to QEMU, nothing the Mac OS X driver does ever accesses any of the functions > from the rtl8139.c file (as far as I can tell). I will add that when this > code "if ( csrRead8( RTL_CM ) & R_CM_RST )" is executed by the driver, the > value is 16. It appeared to be pretty consistent. The value returned by just > "csrRead8( RTL_CM )" is 24. Right, so then the question to ask is what is the difference in behaviours both before and after the BAR swap? It seems that you're getting a value back but presumably it must be a different value with your patch applied. ATB, Mark.