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

Re: [Xen-devel] Problem with MMAP on Xen kernel



On 21/01/15 14:38, Szwed, Maciej wrote:
> Hi again,
> Error that I'm getting is:
> EBUSY           16      /* Device or resource busy */
> 
> Kernel version is: 
> Linux XXX 3.12.28-2-xen #1 SMP Mon Sep 8 11:15:37 UTC 2014 (aff039d) x86_64 
> x86_64 x86_64 GNU/Linux
> 
> I'm trying to map the memory of NIC with our own driver.

If the MMIO BARs you are trying to map are above the end of RAM you need
at least 3.16 for this to work.

Specifically you need "x86/xen: set regions above the end of RAM as 1:1"
(25b884a83d4) and its prerequisites (at least: "x86/xen: compactly store
large identity ranges in the p2m" (3cb83e46d032) but probably others).

David

> -----Original Message-----
> From: Szwed, Maciej 
> Sent: Tuesday, January 20, 2015 2:49 PM
> To: David Vrabel; Dugger, Donald D; xen-devel@xxxxxxxxxxxxx
> Cc: Ronciak, John
> Subject: RE: [Xen-devel] Problem with MMAP on Xen kernel
> 
> Hi,
> Sorry for late response. I will provide required information tomorrow. 
> 
> Regards,
> Maciej
> 
> -----Original Message-----
> From: David Vrabel [mailto:david.vrabel@xxxxxxxxxx]
> Sent: Friday, January 16, 2015 7:45 PM
> To: Dugger, Donald D; xen-devel@xxxxxxxxxxxxx
> Cc: Ronciak, John; Szwed, Maciej
> Subject: Re: [Xen-devel] Problem with MMAP on Xen kernel
> 
> On 16/01/15 18:24, Dugger, Donald D wrote:
>> One of our engineers, Maciek, is working on a driver and stumbled upon 
>> what looks like a bug in the Xen kernel.  The report I got was:
>>
>>  
>>
>> We recently started to provide mmap functionality in our driver for 
>> Linux. Function for this:
>>
>>  
>>
>> /int/
>>
>> /NalMmap(/
>>
>> /    struct file*                            File,/
>>
>> /    struct vm_area_struct*  Vma/
>>
>> /    )/
>>
>> /{/
>>
>> /    if(remap_pfn_range(Vma,/
>>
>> /        Vma->vm_start,/
>>
>> /        Vma->vm_pgoff,/
>>
>> /        Vma->vm_end - Vma->vm_start,/
>>
>> /        Vma->vm_page_prot))/
>>
>> /    {/
>>
>> /        return -EAGAIN;/
>>
>> /    }/
>>
>> / /
>>
>> /    return 0;/
>>
>> /}/
>>
>>  
>>
>> We discovered that this doesn't work for xen kernels (but it doesn't 
>> return any error, just does not map). I found that it is suggested to 
>> use io_remap_pfn_range instead of remap_pfn_range. After switching 
>> function everything still works on standard kernel, but on xen this 
>> time it returns error.
> 
> Not a lot to go on here.  What kernel version?  What PFNs are you trying to 
> map (RAM? MMIO?)  What error do you get?
> 
> Can you provide a minimal driver that shows the problem?
> 
> David


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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