El 15/08/15 a les 17.30, Jason Harmening ha escrit:
> On 08/15/15 08:05, Roger Pau Monné wrote:
>> El 14/08/15 a les 22.08, Jason A. Harmening ha escrit:
>>> Author: jah
>>> Date: Fri Aug 14 20:08:16 2015
>>> New Revision: 286787
>>> URL: https://svnweb.freebsd.org/changeset/base/286787
>>>
>>> Log:
>>>   Use pmap_quick_enter_page() to handle bouncing of unmapped buffers in the 
>>> x86 busdma_bounce implementation.  Also treat user buffers as unmapped.
>>>   This allows two things:
>>>   1. Sync'ing bounced maps in non-sleepable contexts.  The physcopy* calls 
>>> previously used could sleep on sf_buf operations in some cases.
>>>   2. Sync'ing user buffers outside the context of the owning process
>>
>> AFAICT this will break the Xen port. physcopy* uses uiomove_fromphys
>> that on the amd64 port is able to deal with pages outside of the DMAP.
>> OTOH pmap_quick_enter_page is not able to deal with pages outside of the
>> DMAP, and will simply panic.
>>
>> Roger.
>>
> 
> Is it actually possible for those non-dom0 pages to be used for I/O that
> passes through busdma? 

Yes, Qemu uses them as buffers to read/write syscalls.

> If it is, then it would be easy to make
> pmap_quick_enter_page() handle them by adding a pcpu pageframe similar
> to what we do for i386.

pmap_map_io_transient contains some of this logic, but it uses
vmem_alloc (with M_WAITOK) instead of a pcpu pageframe, which defeats
part of the purpose of this change and cannot be used as-is.

Roger.

_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to