Avi Kivity wrote:
> Anthony Liguori wrote:
>> Avi Kivity wrote:
>>> Anthony Liguori wrote:
>>>
>>>> I think it's just a matter of calling do_mmap() with the
>>>> appropriate parameters. It looks likes there's some drivers call
>>>> do_mmap() directly.
>>>>
>>>>
>>>
>>> This will halve the maximum size of virtual machines on i386 since
>>> userspace will also mmap() the memory, and the virtual address space is
>>> restricted to 3GB.
>>>
>>
>> I wonder if there is a way to force the mmap() to return the
>> userspace address we previously allocated.
>>
>
> Yes:
>
>>
>> unsigned long
>> get_unmapped_area(struct file *file, unsigned long addr, unsigned
>> long len,
>> unsigned long pgoff, unsigned long flags)
>> {
>> unsigned long (*get_area)(struct file *, unsigned long,
>> unsigned long, unsigned long,
>> unsigned long);
>>
>> get_area = current->mm->get_unmapped_area;
>> if (file && file->f_op && file->f_op->get_unmapped_area)
>> get_area = file->f_op->get_unmapped_area;
>> addr = get_area(file, addr, len, pgoff, flags);
Hrm, so you can return the area that should be used but you still
install vma_ops? Wouldn't that result in an infinite loop when
userspace attempted to map the area since we'll try to satisfy the
nopage handler by doing a get_user_pages?
Regards,
Anthony Liguori
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel