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

Re: [Xen-devel] [PATCH]: Better checking in range_straddles_page_boundary



Keir Fraser wrote:
> On 22/10/08 10:05, "Chris Lalancette" <clalance@xxxxxxxxxx> wrote:
> 
>>     Attached is a simple patch to slightly rework the logic in
>> range_straddles_page_boundary().  The reason for this is to avoid a crash we
>> are
>> seeing on 32-bit dom0.  Basically, the contiguous_bitmap is allocated based 
>> on
>> max_low_pfn.  However, the swiotlb code can be passed a request (in
>> swiotlb_map_sg) that is > 1 page (I've seen 2 pages), and is also a page
>> (sg->page) > max_low_pfn.  If this combination happens, then you get a fatal
>> page fault when doing the test_bit(pfn, contiguous_bitmap).  For that reason,
>> rework the logic in range_straddles_page_boundary so that if it gets a 
>> request
>> 1 page, and it's above max_low_pfn, then we force the splitting of the
>> request.
>>  In our testing, this seems to fix the issue.
> 
> How about we just get rid of the contiguous_bitmap? We might as well if you
> are going to push that check after calling
> check_pages_physically_contiguous(), since no extent which is acceptable to
> contiguous_bitmap should fail on check_pages_physically_contiguous(). I
> think I kept contiguous_bitmap only as a fast check before calling that
> slower function.

Oh, hm, good point.  If we think that the fast check is still good to have, the
other option is to leave range_straddles_page_boundary as-is, and just allocate
contiguous_bitmap with max_pfn (or end_pfn; I can never remember which is which
i386 vs. x86_64).

Either way works for me, though; I don't think the
check_pages_physically_contiguous is a huge performance bottleneck, especially
since *most* requests are for 1 page; it's just the odd request that comes in
with 2 pages (or more, but I've never seen more than 2 pages).

-- 
Chris Lalancette

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