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

Re: [Xen-devel] mmap in PV xen-4.0.1




On Mon, Aug 15, 2011 at 10:06 PM, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
On Mon, Aug 15, 2011 at 08:13:37PM -0700, Ranjith Ravi wrote:
> > Looking into the kernel source, a check in range_is_allowed failed so
> > I just can't map /dev/mem with specified range (-EPERM).
>
>  mmap() and read access  works on 2.6.37.6
> ( dom0 - fc13 xen 4.0.2)
> Tried it after disabling 'CONFIG_STRICT_DEVMEM' in kernel config.

So it did not work with CONFIG_STRICT_DEVMEM=y?


mmap() returns failure with CONFIG_STRICT_DEVMEM=y

>
> Can someone point out the changes/patches in 2.6.37.6 which fixes mmap()
> problem ?

Um, so 2.6.37 did not work?
>
 
mmap()/read access worked on 2.6.37.6
Would like to try the same changes on 2.6.32 (Debian 6.0-pvops)
if some one can point the changes/patches.


 
> Thanks
> Ranjith
>
>
> On Fri, Aug 12, 2011 at 10:20 AM, Eric Camachat <eric.camachat@xxxxxxxxx>wrote:
>
> > On Thu, Aug 11, 2011 at 9:26 PM, Wei Liu <liuw@xxxxxxxxx> wrote:
> > > On Thu, Aug 11, 2011 at 10:11:20AM -0700, Eric Camachat wrote:
> > >>
> > >> Let us back to my original concern:
> > >> Why remap_pfn_range() woks with my own device node, but deesn't work
> > >> with /dev/mem node?
> > >> This behavior is confused me.
> > >>
> > >> /Eric
> > >
> > > Well, I slightly modify your code -- remove the ioctl and hardcoded
> > > *base into mapper, and run on my box in dom0 (Xen 4.2 + 2.6.39 PVOPS),
> > > I get following output and kernel log:
> > >
> > > paddr = 0x6d368000
> > >  mem = 0xffffffffffffffff
> > >  map = 0x7fa928e88000
> > > map[0]= 1234
> > > map[1]= abcd
> > >
> > > [  405.039120] memtest: registering /dev/memtest (886)
> > > [  405.039125] memtest: size of phys_addr_t is 8 bytes
> > > [  405.039132] memtest: _vbase = 0xffff88006d368000
> > > [  405.039134] memtest: _pbase = 0x6d368000
> > > [  405.039135] memtest: _mbase = 0x6fbaa000
> > > [  781.414747] Program mapper tried to access /dev/mem between
> > 6d368000->6d36c000.
> > > [  781.414764] memtest_vma_open: virt 0x7f327a275000, phys 0x6d368000
> > > [  781.414942] mapper[2744]: segfault at ffffffffffffffff ip
> > 00000000004008d7 sp 00007fff233638e0 error 4 in mapper[400000+1000]
> > > [  781.415064] memtest_vma_close
> > > [  891.350796] Program mapper tried to access /dev/mem between
> > 6d368000->6d36c000.
> > > [  891.350813] memtest_vma_open: virt 0x7fa928e88000, phys 0x6d368000
> > > [  891.350987] mapper[2811]: segfault at ffffffffffffffff ip
> > 00000000004008d7 sp 00007fffc154efd0 error 4 in mapper[400000+1000]
> > > [  891.351102] memtest_vma_close
> > >
> > > Looking into the kernel source, a check in range_is_allowed failed so
> > > I just can't map /dev/mem with specified range (-EPERM).
> > >
> > > But please note that my output of map[0] and map[1] are correct, while
> > > your output is not correct ('4C4C4C4C'), which you ignored
> >
> > That's I memset() 'L' to _vbase. Sorry, I pasted wrong output.
> >
> > > previously. Why not make sure your mapper works correctly? Or can you
> > > try newer kernel and Xen?
> > >
> > > Wei.
> > >
> >
> > It works with newer kernel (like 2.6.37), so I think its not XEN's problem.
> > Thanks for your help!
> >
> > /Eric
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> >

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


_______________________________________________
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®.