tech-x11 archive

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

Re: redundant xf86-video-intel patches



On Sun, Jan 25, 2015 at 03:57:48PM +0000, Patrick Welche wrote:
> We have local patches to use
> 1) drmIoctl instead of do_ioctl
> 2) drmMap   instead of mmap
> 
> 1) The only difference between drmIoctl and do_ioctl is that do_ioctl calls
>    sched_yield() if ioctl returns EAGAIN. Why is calling sched_yield() a
>    bad idea?
> 
>    The sched_yield() call was added upstream in:
> 
>    Author: Chris Wilson <chris%chris-wilson.co.uk@localhost>
>    Date:   Mon Jan 20 09:32:50 2014 +0000
> 
>     sna: Yield the processor if the kernel reports EAGAIN
>     
>     An artifact of our kernel/userspace interaction is that under certain
>     circumstances the kernel will report EAGAIN in order for it to have CPU
>     time to run its own workqueues before it can process the userspace
>     request. We can be cooperative and yield ourselves rather than busy-spin
>     waiting for the scheduler to demote us.
> 
> 2)  Again, anyone remember what lead to us thinking that __kgem_bo_size()
>     is doing the wrong thing?
> 
>     drmMap:
>       pagesize_mask = getpagesize() - 1;
>       size = (size + pagesize_mask) & ~pagesize_mask;
>     mmap with call to bytes() => __kgem_bo_size():
>       return PAGE_SIZE * bo->size.pages.count;
> 
> A poor experiment is that without those two changes, I can run
> intel_drv.so on NetBSD-current/amd64 on a Sandy Bridge, which
> suggests that they might no longer be necessary.
> 
> It is a poor experiment in the sense that that is probably a well
> tested configuration... 32-bit and old intel would be better.

I can test on i386 on a 965GM if you provide patches against netbsd-7.
Note that accelleration doens't work well on this platform anyway,
I see display corruption (especially in fonts)

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index