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

Re: [Xen-devel] Using mini-os ioremap()



 My box doesn't have more than 4GB. I've tried this on 32 bit and 64 bit.

I tried nuking the mfn_is_ram check. When I do that the call returns a virtual memory address but when I try to read and write to it, it appears to act just like a normal page of memory and not the device.

Does anyone know offhand of a mini-os project that either tested the ioremap() call or actually does some memory mapped io operations?

On 01/05/2011 05:55 PM, Samuel Thibault wrote:
Matthew Fioravante, le Wed 05 Jan 2011 14:24:55 -0500, a écrit :
  I'm trying to map some mmio pages into my mini-os domain to use a
hardware device. The device is at address fed40000. I'm calling
ioremap() on this address but its failing, telling me that mfn fed40 is
in ram space. (Its failing the mfn_is_ram() check.)

What am I doing wrong here?
Mmm, I don't think anything you're doing is wrong. Notice the comment:

static long system_ram_end_mfn;
int mfn_is_ram(unsigned long mfn)
{
     /* very crude check if a given MFN is memory or not. Probably should
      * make this a little more sophisticated ;) */
     return (mfn<= system_ram_end_mfn) ? 1 : 0;
}

Do you have more than 4GiB memory, i.e. 0xfed40000 is actually between
two RAM areas?  In such case mfn_is_ram has to really get more
sophisticated.

(In the interim you could just comment the mfn_is_ram() test from
do_ioremap to make things work)

Samuel


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.