On 16 December 2014 at 18:56, Daniel Vetter <daniel at ffwll.ch> wrote: > On Tue, Dec 16, 2014 at 04:34:39PM +1000, Dave Airlie wrote: >> From: Dave Airlie <airlied at redhat.com> >> >> nouveau userspace back at 1.0.1 used to call the X server >> DRIOpenDRMMaster interface even for DRI2 (doh!), this attempts >> to map the sarea and fails if it can't. >> >> Since 884c6dabb0eafe7227f099c9e78e514191efaf13 from Daniel, >> this fails, but only ancient drivers would see it. >> >> Revert the nouveau bits of that fix, and hope it works. >> >> Signed-off-by: Dave Airlie <airlied at redhat.com> > > Argh, sorry for missing that in my git history digging. > > Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch> > > Now curious question: Would return 0 also work? As long as userspace only > cares about the errno of the ioctl call and doesn't actually look at the > sarea itself we could keep the cake and eat it, too. I've used a similar > trick in legacy context code, again because old nouveau had copypasta from > dri1, but only cared about the errno and not whether the contexts actually > did anything useful.
if (drmMap(tmp.drmFD, tmp.hLSAREA, sAreaSize, (drmAddressPtr) (&tmp.pLSAREA)) < 0) { DRIDrvMsg(-1, X_INFO, "[drm] Mapping SAREA for DRM lock failed.\n"); tmp.pLSAREA = NULL; goto out_err; } memset(tmp.pLSAREA, 0, sAreaSize); seems unlikely return 0 will work! Dave.