[git pull] drm fixes

Ilija Hadzic ihadzic at research.bell-labs.com
Fri Mar 25 07:52:08 PDT 2011


This thread turned into much more than what its scope is and I hoped I 
would stay out of the "fight" (especially after the vocabulary got very 
"liberal"). Yet, my code (as trivial as it is) has sparked up some old 
issues and seems to be referred to over and over again, so I want to make 
a few technical points straight:

* There is no way for an application to see the VBLANK events without
   crossing into the kernel. VBLANKs are interrupts from the hardware
   and only kernel knows them. Any userspace-only fix would be an ugly
   hack (as Dave pointed) and maybe the application would look like it's
   not stuck but it would not be doing the right thing no matter what you
   do in the user space. So if I was fixing this, I figured I would do it
   right. If anyone knows better than me and can technically prove (in
   code, not in words) that an application can synchronize to (a correct)
   VBLANK without calling the kernel, be my guest: submit your code and
   evict mine. I have no problem with that, but if something breaks then,
   it *will* be a regression.

* Most comments about DDX pertained to old-kernel/new-userland
   situation, which for most users using distros won't happen because
   distros will make sure they have they have consistent packages.
   Still, even that situation was taken care of in the sense that
   it does not cause bogus errors (BTW, that comment was made and
   was legitimate and I took care of it) nor any other "damage" to the
   kernel. Discussing whether visual behavior in this case (a case that is
   actually an installation/dependency problem) should be the same as in
   old versions or still broken but masked out in appearance is a waste
   of time and bandwidth.

* Saying that "kernel was not supposed to work with more two CRTCs" is
   just plain wrong (and probably based on superficial understanding of
   the kernel code). I spent considerable time analyzing the kernel from
   the driver up and the userland from the application down and found that
   *everything* in the kernel is capable of supporting up to 32 CRTCs and
   so is in the userland. It's only that one ioctl was stopping
   the information flow between the userland and the kernel so I fixed it.
   That may have been the legacy from old days when kernel didn't support
   multiple CRTCs, but now it does. Also, there is now hardware with
   multiple CRTCs, so kernel (and associated ioctls) should better support
   it.

* My fix alone, does not justify introducing a new ioctl and nobody can
   convince me that it does. In fact, being too liberal on introducing
   new ioctls is just bad programming. Recognizing that the existing ioctl
   has other shortcomings and coming up with a totally new ioctl with
   many other features and then adjusting the userland to use it is a long
   term project. My fix was a short term thing to get things that are
   broken working.

And just a few non-technical things in conclusion and a few of my own 
thoughts and views: Although I didn't mention any names so far, everyone 
smart enough reading this will know that most of my responses are a) 
directed to Michel and b) are just a repeat of what I have already said on 
the list (in response to his repeat of what was also already said). Let me 
just say that I value everyone's comments and I respect the knowledge, 
work and time effort of everyone in this group. However, in every 
development model (including the open-source) there is a point after which 
you have to move on (even if the proposed thing is not perfect) and there 
is someone whose word should be final.

My understanding is that for the DRM, the final say comes from Dave. So, 
fine, there were imperfections in my proposed modification to the ioctl, 
there was one comment that I (mistakenly) oversaw and that Michel found 
utterly important (although I still think that it wasn't that much of a 
big deal), but if Dave accepted the original change, that implicitly meant 
that he took into accounts the discussion, follow-up modifications and 
rebuttals and that the issue should be behind us. Continuing to insist 
after that point is just plain destructive (and could be in part the 
reason why DRM, besides the lack of resources, is behind closed-source 
drivers).

And there is another point that Dave made that I fully support. To all of 
you, I am a newcomer, and a plain garden-variety user who instead of 
whining on Bugzilla and hoping that some hacker out there will show some 
"mercy", actually stepped up to fix the problem (and to be allowed to do 
that, I had to convince a few higher-ups that this would actually be in 
the interest of those who write my paycheck). Some of you have shown 
appreciation for that (thanks!), but some of you have seen it as an 
opportunity to publicly prove that you are smarter than me (for which I 
frankly don't care, as long as it does not impact the progress of the 
development, but in this case it did).

I may be new to Linux/DRM "club", but I am not new to the large system 
development (including a wide variety of kernels and other very complex 
subsystems). Now if I can get my own (very reasonable, technically 
correct, generally well written, and useful for the community) fixes into 
open-source without sparking up major fights, then in my day-job, I have a 
strong case to present to a bunch of MBAs in three-piece suits that we 
should be basing more of our products on open-source code. That alone, in 
the long run helps the community, which is, I presume, a common interest 
of all of us.

'nuff said

-- Ilija



More information about the dri-devel mailing list