On Dec 24, 2015, at 5:45 PM, BALATON Zoltan wrote: > On Thu, 24 Dec 2015, Programmingkid wrote: >> On Dec 24, 2015, at 10:34 AM, Peter Maydell wrote: >>> On 24 December 2015 at 01:00, Programmingkid <programmingk...@gmail.com> >>> wrote: >>>> I'm having problems with the pci_dma_read() function. When using >>>> a Mac OS X guest, the data that this function returns is all zeros. >>>> After doing a lot of instruction tracing, I tracked the problem to a >>>> function called phys_page_find(). It always returns >>>> §ions[PHYS_SECTION_UNASSIGNED]. What I would like to know is >>>> what is an unassigned section? How is memory suppose to be assigned? >>> >>> Unassigned here is an area of the physical address space which has >>> nothing in it (no RAM, no device, just nothing). Depending on the >>> guest CPU architecture, accessing this might cause a bus fault >>> or might just return a dummy value. (It looks like it's the latter >>> for your case.) >>> >>> One way to get this is if the guest mis-programs the PCI DMA >>> so that it tries to do DMA from a wrong address. Or maybe the >>> PCI host controller emulation isn't right and we're not >>> using the right DMA address. Or there's some RAM or something >>> that the guest expects to be present in the machine but which >>> is not implemented by us. >>> >>> You need to find out why we're trying to DMA to/from this >>> bogus address, I think. >> >> Mac OS X has to give the RTL8139 network interface card an address to a >> memory buffer. It is used to send packets to the network interface card from >> the guest. How the address is allocated in Mac OS X seems simple enough. >> This address is a physical address and not a virtual address, so that seems >> good. One address that is used is 0x13d9000. I think that would be around >> the 19 MB area. It should be ok for the rtl8139 to access because it is in >> the "system" memory region. > > Not sure this is relevant here but previously I've found a patch was > necessary to OpenBIOS for me to make DMA work with RTL8139 otherwise sending > data was not working correctly. Here's the patch in case it could help or > give you an idea: > > http://www.openfirmware.info/pipermail/openbios/2014-June/008363.html > > But it could be your problem is different and the patch is not relevant. > > Regards, > BALATON Zoltan
Thank you very much for the help. It looks like the Mac OS X driver already sets the bus mastering bit.