[Top][All Lists]

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

Re: [Qemu-discuss] phys_page_find() returning &sections[PHYS_SECTION_UNA

From: Programmingkid
Subject: Re: [Qemu-discuss] phys_page_find() returning &sections[PHYS_SECTION_UNASSIGNED]
Date: Thu, 24 Dec 2015 12:15:39 -0500

On Dec 24, 2015, at 10:34 AM, Peter Maydell wrote:

> On 24 December 2015 at 01:00, Programmingkid <address@hidden> 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
>> &sections[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. 

reply via email to

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