Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-11 Thread Nicolai Hähnle
Am Montag 11 August 2008 02:53:44 schrieb Stephane Marchesin:
 On 8/2/08, Jerome Glisse [EMAIL PROTECTED] wrote:
  I might be totaly wrong so feel free to ignore these. I got the feeling
   that the user test base on linux kernel is far bigger than ours. Also
   i think that our test user base are people wanting lastest things with
   old kernel, while i understand that (building kernel is not fun on my
   ram slim computer) i think this end up being a burden to us.
 
   So in the end i think we should be better off with linux development
   tree where dev know the deadline to get feature in. I got the feeling
   that this way we could drive development on features basis like getting
   vblank rework done for a given kernel release and so get dev to focus
   more on some features and get them done in a timely fashion. This way
   we could avoid to get some new feature to rot a bit in the drm tree
   because.
 
   Also i think the linux-next or other linux bleeding edge tree would give
   us lot more tester with a lot more experience on good bug report that
   our current test base (i am not saying that we have bad tester, we have
   some very good one too which we should give credits, just that we might
   be able to get more of them).

 Judging by the current trend (where we see lots of people reporting
 the recent shmem_file_setup breakage because they tried to load git
 drm on a non-tip kernel), we have a lot of testers that don't run
 latest kernels but still get drm git. So the argument of more testers
 may not be true.

As another data point, I belong to the drm git on distribution-provided 
kernel crowd but I would be happy to switch to the proposed in-kernel tree 
system. Here's why.

As far as I can tell, there are three possible setups I could have:
1) The status quo (i.e. out-of-kernel drm tree) where I only compile the DRM 
module against my standard, distribution-provided kernel.
2) The status quo, but I compile both a recent kernel and the DRM module from 
the out-of-kernel drm tree.
3) The proposed new system where DRM development is done in the kernel tree.

Now to be honest, of all these options I do find 1) to be the simplest option, 
but that simply *fails* when the DRM depends on advanced kernel developments.

This leaves option 2) and 3) and quite frankly, I *really* don't like option 
2) because it forces me to keep track of multiple trees that are not 
explicitly coupled. This is a recipe for build failures - after all, which 
kernel tree is guaranteed to always have all the things that the latest DRM 
tree needs? Is it Linus' tree? -mm? Something else entirely?

As long as the DRM depends on recent kernel developments, option 3) is really 
the most friendly way to go forward. There's only one tree to track for me 
and I can simply use distribution-provided tools for the build.

Of course, I'm probably not really representative, so take all this with a 
grain of salt.

cu,
Nicolai

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-10 Thread Stephane Marchesin
On 8/2/08, Jerome Glisse [EMAIL PROTECTED] wrote:

 I might be totaly wrong so feel free to ignore these. I got the feeling
  that the user test base on linux kernel is far bigger than ours. Also
  i think that our test user base are people wanting lastest things with
  old kernel, while i understand that (building kernel is not fun on my
  ram slim computer) i think this end up being a burden to us.

  So in the end i think we should be better off with linux development
  tree where dev know the deadline to get feature in. I got the feeling
  that this way we could drive development on features basis like getting
  vblank rework done for a given kernel release and so get dev to focus
  more on some features and get them done in a timely fashion. This way
  we could avoid to get some new feature to rot a bit in the drm tree
  because.

  Also i think the linux-next or other linux bleeding edge tree would give
  us lot more tester with a lot more experience on good bug report that
  our current test base (i am not saying that we have bad tester, we have
  some very good one too which we should give credits, just that we might
  be able to get more of them).


Judging by the current trend (where we see lots of people reporting
the recent shmem_file_setup breakage because they tried to load git
drm on a non-tip kernel), we have a lot of testers that don't run
latest kernels but still get drm git. So the argument of more testers
may not be true.

Now that I think about it, is there a way with git to :
1. have a single main drm branch (that is, keep drm git the way it is right now)
2. inside this branch, maintain a number of changesets (each of those
changesets would be an in-development feature).

It seems to me we'd get the best of both worlds that way; the
changesets would let us submit features upstream easily, and no
push/pull would be needed to update all the repos. Seeing how most drm
developments do not overlap, requiring explicit pull/pushes with
merges sounds more complex than it needs to be.

Now I'm not sure if it's possible, but at least I don't see a
technical reason this wouldn't.

Stephane

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-08 Thread Owain Ainsworth
On Thu, Aug 07, 2008 at 04:08:49PM -0700, Eric Anholt wrote:
   a) BSD
  
  I'd like to hear Robert's concerns here, but I've been working with some of 
  the BSD folks lately, and it seems like the main concerns are:
1) making it easy for contributors to identify which portions of code are
   shared
2) licensing
  Since both the BSDs and Linux effectively copy code out of the DRM repo and 
  into their respective kernel trees at this point, having the actual repo 
  based on one of them shouldn't be an issue as long as both 1 and 2 are 
  handled.  The remaining compat macros could probably just be wrapped in 
  some 
  sort of Linux equivalent (DRM_SPINUNLOCK-spin_unlock, what's the 
  difference?), or we could annotate things for the BSD guys to run scripts 
  over.  As it stands, they still have to go over things by hand anyway...
 
 As an ex-BSD kernel maintainer, I stood against moving to a linux
 kernel-based tree for a long time.  For a long time I felt like I was
 the only guy holding back the move.  I couldn't get NetBSD to work in
 the upstream tree, and it sounds like OpenBSD's following the same
 route, so maybe I was doing it wrong all along in trying to have one
 tree for all OSes to share.

As the OpenBSD maintainer it's probably time I mention my reasons for
working out of tree. It's quite simple really, In my experience of
porting over the code, I found that the BSDs, while similar, are no
where near identical, and in the end the level of #ifdefing in the
bsd-core area just got insane, it made maintainance a nightmare. So I
started working out of tree. If i find a general  bug, I reformat
against git and send the patch upstream. Otherwise, I watch what happens
to git and merge it into my kernel tree along with any OpenBSD specific
changes i've needed. This is more like the way the BSDs have shared code
for a while now. I know myself and Robert differ on our opinions here,
though. I find it better to be able to go over things by hand, it means
I better understand what I'm merging, anyway.

For that reason, i'm not against master going to a linux kernel tree,
since it would change my process very minimally. As long as the
licensing doesn't change (IMHO drm is essentially a part of X, and thus
should be X11/MIT licensed), I'm fine with it.

Process-wise, I'm in agreement with Dave Airlie, that master should
track what's in linus' tree, with the rest on branches. Also, I think
vblank-rework is now stable enough to go upstream, i've found it has
started to work quite nicely.

Just my 2p,

-0-
-- 
There's no easy quick way out, we're gonna have to live through our
whole lives, win, lose, or draw.
-- Walt Kelly

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-07 Thread Eric Anholt
On Thu, 2008-07-31 at 19:53 -0700, Jesse Barnes wrote:
 On Thursday, July 31, 2008 6:40 pm Dave Airlie wrote:
   Well, if the overhead of merging upstream is a concern, then how about
   not worrying about bc at all and let people who want to back port deal
   with it?  Oh, and what about just keeping the drm drivers in a linux
   kernel tree?  That'll make upstream merging even easier yet...
 
  The less crap I have to remove from the diffs the better, I have a script
  and it removes stuff mostly fine, maybe someone should actually bring this
  idea up on the list with a proper plan for how to deal with
 
  a) BSD
 
 I'd like to hear Robert's concerns here, but I've been working with some of 
 the BSD folks lately, and it seems like the main concerns are:
   1) making it easy for contributors to identify which portions of code are
  shared
   2) licensing
 Since both the BSDs and Linux effectively copy code out of the DRM repo and 
 into their respective kernel trees at this point, having the actual repo 
 based on one of them shouldn't be an issue as long as both 1 and 2 are 
 handled.  The remaining compat macros could probably just be wrapped in some 
 sort of Linux equivalent (DRM_SPINUNLOCK-spin_unlock, what's the 
 difference?), or we could annotate things for the BSD guys to run scripts 
 over.  As it stands, they still have to go over things by hand anyway...

As an ex-BSD kernel maintainer, I stood against moving to a linux
kernel-based tree for a long time.  For a long time I felt like I was
the only guy holding back the move.  I couldn't get NetBSD to work in
the upstream tree, and it sounds like OpenBSD's following the same
route, so maybe I was doing it wrong all along in trying to have one
tree for all OSes to share.

Entries 1 and 2 in the list were of concern to me for quite some time,
as those championing the move to a linux tree were doing it primarily
for GPL and style motivations (at least vocally).  I didn't like the GPL
motivation, and felt like we had other avenues to fix the style
motivation (which I eventually worked on, and was about half done with I
think).

The other problem as a BSD maintainer was how to merge code.  Originally
all I had available was CVS and cp, so the shared-code system we had was
useful -- I just worked in the DRM tree and periodically copied changes
over and cvs committed.  Eventually I got perforce access, and was
trying to use that to manage merges, but CVS IDs and perforce diff
formatting and performance issues made it more work than copying diffs
by hand.  I settled on a series of seds on the DRM tree and cping it to
the BSD tree, which worked reasonably well.

Luckily, those times are past.  We've got git now.  If I was doing BSD
at this point, I would probably rather set it up as a branch of a
linux-2.6 kernel tree that I merged from:

Initial setup today:
cd linux-2.6
git-checkout -b freebsd-drm
cd drivers/gpu/drm
cp ~/src/drm/bsd-core/drm*.[ch] .
cp ~/src/drm/bsd-core/i915/Makefile i915/
cp ~/src/drm/bsd-core/i915*.[ch] i915/
(etc)
git-add .
git-commit -a -v

Next merges:
git-merge origin/master
(resolve conflicts and make it compile again as linux-specific bits
trickle in)
git commit -a

Then I could use my old script for copying an external tree into the
FreeBSD repo and continue doing mega-commits as before.  The advantage
here is that since I'm merging the linux-specific OS side, I don't have
to go and read the two side-by-side all the time to make sure they
haven't drifted too far apart, which was almost all of the time I spent
working on the BSD code.  This is assuming that the two codebases stay
close enough together for the merger to do something sane, but I think
that would be the case for the most part.  To improve that, I'd add more
compat macros to leave the FreeBSD side more linux-looking.  FreeBSD's
grown a layer for taking osol code mostly as-is for the ZFS and dtrace
ports, and I think growing some compatibility for taking mostly
linux-looking code would probably be a sensible plan for maintaining
this codebase, and would probably help various other potential FreeBSD
projects as well.

I don't think anyone is proposing changing the licensing of DRM code
this time around, so with this plan as a BSD guy I wouldn't even care
which parts of the code were shared versus os-specific.

  b) backwards compat for using updated DRM drivers on older kernels.

Since I'm now maintaining a linux-2.6 tree for getting my GEM work
merged, I'm having to deal with backporting concerns already.  The plan
I'm proposing for our project is for us to do topic branches like other
linux kernel developers, propose them for merge either through you or
directly, and maintain one branch for all the things I want on top of
current linux kernel to get what we need.  As we head towards our
quarterly release, I'll prepare a branch against the latest released
kernel of everything we need for the quarterly release, which is then
the stuff that backporters would 

Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-04 Thread Kristian Høgsberg
On Fri, Aug 1, 2008 at 6:27 PM, Dave Airlie [EMAIL PROTECTED] wrote:
 
  Personally, I only use the existing DRM repo on old kernels because that's 
  how
  it's structured.  It's actually more work for me to download  build a 
  recent
  kernel, then update  build the DRM drivers against it that it is to simply
  update the DRM drivers and build against my current kernel (or just 
  updating
  a theoretical DRM kernel tree  building for that matter).
 
  So really I don't think keeping compat *in-tree* for old kernels gives us
  extra testing.  It's really no harder or easier to do the same thing with a
  full kernel tree, just different.  IMO anyway.

 Yeah, we could keep the BC code around if we moved the drivers
 in-tree, and that would let you compile the drivers against an older
 kernel using something like:

 First you said this :)..


 Another benefit from having the DRM repo structured as linux kernel
 tree is that changes from upstream linux development (janitorial
 stuff, tree-wide api changes) only takes a 'git merge' to carry over
 to the DRM tree.  In other words, making it easier to push changes
 upstream works both ways, it also becomes easier to pull down changes
 from upstream that touches the DRM subystem. Hm, I guess that's what
 your saying in 4).

 Then this, the thing is to keep it building you need compat code, code
 that can't go into Linus tree, so we end up with a tree that isn't like
 Linus tree, and we still have to patch manage transitions so we don't save
 anything doing this over what we have now.

I was thinking that having the BC code in-tree might be acceptable.
As far as I remember, the old firewire stack did that for a while, but
maybe they've tightened up the policy on that.

 So, I very much agree with your proposal and don't feel I can add
 much, except to point out that a migration to in-tree drm development
 doesn't need to be a big and painful process.  Basically, we just
 decide to do it, and designate a kernel tree on freedesktop.org that
 we work from and start with the current state of upstream drm.  There
 will be some work in moving things over from drm.git to the kernel
 tree, but we were going to do that *anyway* as part of getting it
 upstream.  What will be different is that Dave won't have to do all
 that work, we can split it up between us and all Dave will need to do
 is to merge the branch and push it to Linus.  This is of course what
 Eric is already doing with GEM in people.fd.o/~anholt/linux-2.6, and
 that would be a great way to get the vblank rework upstream too.

 If we do this, I'm going to introduce new rules for features/patches that
 will put a lot more work on people.

 1. Nobody gets commit access to master branch except me.

 2. All work is done in topic branches that are throwaway once
   complete. So when the branch owner decides the work is upstreamable,
   They create a set of clean patches against the current master,
   send them to dri-devel for review, if they pass review then the
   branch owner creates a new clean branch and asks me to merge it,
   it also includes Signed-off-by lines.
   Some people say we want the history, Linus wants bisectable history
   so invariable when a feature reaches a useful stage it should go
   upstream in clean s-o-b patches that are bisectable and pass
   checkpatch.pl, not in a 50 separate patches with fixes in it.
   We can generate a throwaway drm-next tree that merges all the topic
   branches currently in play if people want to have some superview.

 3. All API changes to go to the list as soon as possible (should be done
   now).

That all sounds good to me, I think we will benefit from a little
stricter process instead of the free-for-all drm.git repo we have now.
 And topic branches sounds very promising; if GEM had been done in a
topic branch off of the upstream linux tree, preparing the patch would
literally be one git diff command, instead of having to sort out the
GEM changes from drm.git.  Similarly, Ian's XGI work wouldn't have
used the ttm fences and gotten upstream faster.

Kristian

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-04 Thread Jesse Barnes
  As we discussed on IRC last night, I think these changes are perfectly
  reasonable (in fact just what I'd expect if we moved to this model). 
  Sure, it will force contributors to be more disciplined, but that's
  probably a good thing anyway.  I'd still like to hear from the BSD guys
  about how we can best keep shareable code obvious and contribution
  conditions clear, but so far I haven't heard any serious problems.

 Well, I'm only like a third of a developer, but I'll give it a shot.
 You are correct that the most important thing for me is being able to
 readily identify what code is or should be portable and licensed
 appropriately.  I suppose in many ways this is easier for oga to swallow
 because he already works in his own tree.  I however work entirely out
 of drm.git and just drop that into our cvs/svn tree for releases.  If we
 move to a linux tree, does that mean that I will have to pull a full
 linux git tree and then try to hand pick the drm bits out?

Yeah, that's what I'd expect.

 Where would 
 the bsd specific code live?

I guess it would be in the apprpriate BSD CVS or something?

 What about libdrm?

That should probably be in its own repo.

 Do I have to setup my  
 own repo for the bsd parts and just try to merge stuff from the linux
 tree?

Yeah, although given what Dave mentioned, you'd also see patches proposed  
submitted more visibly on dri-devel before going into the repo.  A BSD DRM 
maintainer could actually setup a separate, BSD specific repo along the lines 
of the Linux one, and merge patches just like Dave will be doing for Linux.  
That might be easiest (and who knows, maybe even better than what we have 
currently from a BSD perspective).

 As for BC, as the code stands now, the bsd side of the house has a few
 ifdefs that enable certain features from certain releases of bsd, but it
 pretty much can just drop into any 6,7,8 release as-is.  That may become
 more of a pain as I try and rework various code paths taking advantage
 of newer features, but for now it mostly just works.

Sounds like the BSD camp moves its internal APIs a bit more slowly than Linux.  
Certainly makes things easier for driver people...

 I realize that some of the new features KMS and GEM are relying much
 more heavily on specific kernel features, which already makes my task
 daunting.  I don't think that anyone is intentionally trying to make
 things more difficult, but I don't see how this move doesn't make it
 even more difficult for me to try and keep pace with linux crowd.  I
 know I need help already and if I have to keep up with every patch and
 bugfix that goes in and cherry-pick it, I won't have time to do much
 else.

If anything, I think this will actually slow down the pace of commits on the 
Linux side.  We should see fewer, higher quality commits than under the 
current scheme, so with a BSD gatekeeper setup like I mentioned above 
things might even get easier...

Thanks,
Jesse

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-04 Thread Dave Airlie

 
  Then this, the thing is to keep it building you need compat code, code
  that can't go into Linus tree, so we end up with a tree that isn't like
  Linus tree, and we still have to patch manage transitions so we don't save
  anything doing this over what we have now.
 
 I was thinking that having the BC code in-tree might be acceptable.
 As far as I remember, the old firewire stack did that for a while, but
 maybe they've tightened up the policy on that.

Not allowed anymore, including version.h is a red flag nowadays..

 stricter process instead of the free-for-all drm.git repo we have now.
  And topic branches sounds very promising; if GEM had been done in a
 topic branch off of the upstream linux tree, preparing the patch would
 literally be one git diff command, instead of having to sort out the
 GEM changes from drm.git.  Similarly, Ian's XGI work wouldn't have
 used the ttm fences and gotten upstream faster.


Well XGI isn't going upstream as last I heard from IBM it still didn't 
work, and they scrapped the XGI plan and bought a bunch of X1650s once 
Ben and myself fixed the endianness issues.

While I'd like to believe preparing the patch would be one git diff away,
I suspect it would have been 15 cherry-picks, a couple of merges, a few 
interactive rebases and a batch of checkpatch.pls away. Nothing is ever a 
git diff away from upstream.

So we would need to find a way to get all the compat hacks into two/three 
files with no version checks in the actual code. Sounds icky. Or someone 
who cared enough would need to maintain a separate repo for old kernels.

Dave.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-02 Thread Jerome Glisse
On Fri, 1 Aug 2008 17:29:39 +0100
Keith Whitwell [EMAIL PROTECTED] wrote:

  The biggest thing I have against this is that it cuts our testing base
  down, we have a small testing base already, cutting it further jsut to
  benefit some developers who are frustrated isn't really a gain.
 
 
 I don't have a particular attachment to the standalone drm tree
 concept.  It really does date from another era.
 
 Back then we had different ideas about how people would get their
 drivers and what OS's would be enthusiastic enough to want to join the
 party.
 
 It is nice to be able to build new drm against older kernels, however
 -- I'd be a bit sad to lose that possibility.  If that can somehow be
 preserved, at least for relatively recent kernels (perhaps a 1 year
 window??), then there's nothing I've got against this.
 

I might be totaly wrong so feel free to ignore these. I got the feeling
that the user test base on linux kernel is far bigger than ours. Also
i think that our test user base are people wanting lastest things with
old kernel, while i understand that (building kernel is not fun on my
ram slim computer) i think this end up being a burden to us.

So in the end i think we should be better off with linux development
tree where dev know the deadline to get feature in. I got the feeling
that this way we could drive development on features basis like getting
vblank rework done for a given kernel release and so get dev to focus
more on some features and get them done in a timely fashion. This way
we could avoid to get some new feature to rot a bit in the drm tree
because.

Also i think the linux-next or other linux bleeding edge tree would give
us lot more tester with a lot more experience on good bug report that
our current test base (i am not saying that we have bad tester, we have
some very good one too which we should give credits, just that we might
be able to get more of them).

Thought, i might be wrong, just my feelings here.

Cheers,
Jerome Glisse [EMAIL PROTECTED]

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-01 Thread Kristian Høgsberg
On Thu, Jul 31, 2008 at 10:53 PM, Jesse Barnes [EMAIL PROTECTED] wrote:
 On Thursday, July 31, 2008 6:40 pm Dave Airlie wrote:
  Well, if the overhead of merging upstream is a concern, then how about
  not worrying about bc at all and let people who want to back port deal
  with it?  Oh, and what about just keeping the drm drivers in a linux
  kernel tree?  That'll make upstream merging even easier yet...

 The less crap I have to remove from the diffs the better, I have a script
 and it removes stuff mostly fine, maybe someone should actually bring this
 idea up on the list with a proper plan for how to deal with

 a) BSD

Jesse, thanks for writing this up more coherently and politely than I
could ever do.  It's easy for me to say that's what I had in mind
now that you've written it all down, that is pretty much the case.

 I'd like to hear Robert's concerns here, but I've been working with some of
 the BSD folks lately, and it seems like the main concerns are:
  1) making it easy for contributors to identify which portions of code are
 shared
  2) licensing
 Since both the BSDs and Linux effectively copy code out of the DRM repo and
 into their respective kernel trees at this point, having the actual repo
 based on one of them shouldn't be an issue as long as both 1 and 2 are
 handled.  The remaining compat macros could probably just be wrapped in some
 sort of Linux equivalent (DRM_SPINUNLOCK-spin_unlock, what's the
 difference?), or we could annotate things for the BSD guys to run scripts
 over.  As it stands, they still have to go over things by hand anyway...

 I think both of the above can be addressed fairly easily no matter which tree
 we choose (obviously I'd like to see a Linux kernel based tree :), by
 appropriately commenting shared files and making sure contributors understand
 the licensing implications of their contributions (maybe a drivers/gpu
 specific README.licensing or somesuch).

Agree on all this.

 b) backwards compat for using updated DRM drivers on older kernels.

 Personally, I only use the existing DRM repo on old kernels because that's how
 it's structured.  It's actually more work for me to download  build a recent
 kernel, then update  build the DRM drivers against it that it is to simply
 update the DRM drivers and build against my current kernel (or just updating
 a theoretical DRM kernel tree  building for that matter).

 So really I don't think keeping compat *in-tree* for old kernels gives us
 extra testing.  It's really no harder or easier to do the same thing with a
 full kernel tree, just different.  IMO anyway.

Yeah, we could keep the BC code around if we moved the drivers
in-tree, and that would let you compile the drivers against an older
kernel using something like:

  make -C /lib/modules/$(uname -r)/build M=$PWD

from the drivers/gpu/drm directory.

 If enough DRI developers are willing to take the stand that they don't
 care about a or b, then I'm willing to change the development model. So
 far I've hear grumbles and mumbling, where I expect coherent proposal or
 gtfo.

 The biggest thing I have against this is that it cuts our testing base
 down, we have a small testing base already, cutting it further jsut to
 benefit some developers who are frustrated isn't really a gain.

Testing is part of the problem with the current set up.  What are
people actually testing when they run drm.git drivers with their
distro kernel?  Right now drm.git has the vblank bits, the ttm bits
and various smaller stuff.  Much of this stuff interacts in
non-trivial ways, such as the intel irq handler, and hand picking
changes, editing the patch to apply upstream, pretty much invalidates
any testing done on the drm.git repo.  So the closer the drm repo can
be to upstream, the more effective the testing will be.

To be fair, this isn't all because of the out-of-tree drm.git setup.
We've failed, as a community, to get a lot of stuff upstream (vblank
stuff took a long time to get ready, there's the memory manager shoot
out etc), and as a result, the gap between drm.git and upstream has
grown hard to manage.

 Well, I think there are other potential gains.  What are the major problems
 with the current scheme, maybe we can address those without affecting the
 issues you mentioned above?  In my view, the big issues are:
  1) we don't really know what's going upstream and when (there's not
 a standard Linux s-o-b process for DRM) until it happens
  2) DRM changelogs are basically useless since they get destroyed when going
 upstream, which means many of our commit messages are unhelpful, to say
 the least (look at most of modesetting-101 for lolz)
  3) having a different development process like this increases the barrier
 to entry for potential developers (this is mostly speculative since we
 don't know how many potential developers we have, but I think it's still
 a valid point)
  4) Linux moves fast and I think having an out-of-tree project means we're
 

Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-01 Thread Dave Airlie
 
  Personally, I only use the existing DRM repo on old kernels because that's 
  how
  it's structured.  It's actually more work for me to download  build a 
  recent
  kernel, then update  build the DRM drivers against it that it is to simply
  update the DRM drivers and build against my current kernel (or just updating
  a theoretical DRM kernel tree  building for that matter).
 
  So really I don't think keeping compat *in-tree* for old kernels gives us
  extra testing.  It's really no harder or easier to do the same thing with a
  full kernel tree, just different.  IMO anyway.
 
 Yeah, we could keep the BC code around if we moved the drivers
 in-tree, and that would let you compile the drivers against an older
 kernel using something like:

First you said this :)..

 
 Another benefit from having the DRM repo structured as linux kernel
 tree is that changes from upstream linux development (janitorial
 stuff, tree-wide api changes) only takes a 'git merge' to carry over
 to the DRM tree.  In other words, making it easier to push changes
 upstream works both ways, it also becomes easier to pull down changes
 from upstream that touches the DRM subystem. Hm, I guess that's what
 your saying in 4).

Then this, the thing is to keep it building you need compat code, code 
that can't go into Linus tree, so we end up with a tree that isn't like 
Linus tree, and we still have to patch manage transitions so we don't save 
anything doing this over what we have now.

  
 So, I very much agree with your proposal and don't feel I can add
 much, except to point out that a migration to in-tree drm development
 doesn't need to be a big and painful process.  Basically, we just
 decide to do it, and designate a kernel tree on freedesktop.org that
 we work from and start with the current state of upstream drm.  There
 will be some work in moving things over from drm.git to the kernel
 tree, but we were going to do that *anyway* as part of getting it
 upstream.  What will be different is that Dave won't have to do all
 that work, we can split it up between us and all Dave will need to do
 is to merge the branch and push it to Linus.  This is of course what
 Eric is already doing with GEM in people.fd.o/~anholt/linux-2.6, and
 that would be a great way to get the vblank rework upstream too.

If we do this, I'm going to introduce new rules for features/patches that 
will put a lot more work on people.

1. Nobody gets commit access to master branch except me.

2. All work is done in topic branches that are throwaway once 
   complete. So when the branch owner decides the work is upstreamable,
   They create a set of clean patches against the current master,
   send them to dri-devel for review, if they pass review then the
   branch owner creates a new clean branch and asks me to merge it,
   it also includes Signed-off-by lines.
   Some people say we want the history, Linus wants bisectable history
   so invariable when a feature reaches a useful stage it should go
   upstream in clean s-o-b patches that are bisectable and pass
   checkpatch.pl, not in a 50 separate patches with fixes in it.
   We can generate a throwaway drm-next tree that merges all the topic
   branches currently in play if people want to have some superview.

3. All API changes to go to the list as soon as possible (should be done 
   now).

I'm sure I'll think of some more.

Dave.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-08-01 Thread Robert Noland
On Fri, 2008-08-01 at 15:45 -0700, Jesse Barnes wrote:
 On Friday, August 1, 2008 3:27:33 pm Dave Airlie wrote:
   So, I very much agree with your proposal and don't feel I can add
   much, except to point out that a migration to in-tree drm development
   doesn't need to be a big and painful process.  Basically, we just
   decide to do it, and designate a kernel tree on freedesktop.org that
   we work from and start with the current state of upstream drm.  There
   will be some work in moving things over from drm.git to the kernel
   tree, but we were going to do that *anyway* as part of getting it
   upstream.  What will be different is that Dave won't have to do all
   that work, we can split it up between us and all Dave will need to do
   is to merge the branch and push it to Linus.  This is of course what
   Eric is already doing with GEM in people.fd.o/~anholt/linux-2.6, and
   that would be a great way to get the vblank rework upstream too.
 
  If we do this, I'm going to introduce new rules for features/patches that
  will put a lot more work on people.
 
  1. Nobody gets commit access to master branch except me.
 
  2. All work is done in topic branches that are throwaway once
 complete. So when the branch owner decides the work is upstreamable,
 They create a set of clean patches against the current master,
 send them to dri-devel for review, if they pass review then the
 branch owner creates a new clean branch and asks me to merge it,
 it also includes Signed-off-by lines.
 Some people say we want the history, Linus wants bisectable history
 so invariable when a feature reaches a useful stage it should go
 upstream in clean s-o-b patches that are bisectable and pass
 checkpatch.pl, not in a 50 separate patches with fixes in it.
 We can generate a throwaway drm-next tree that merges all the topic
 branches currently in play if people want to have some superview.
 
  3. All API changes to go to the list as soon as possible (should be done
 now).
 
  I'm sure I'll think of some more.
 
 As we discussed on IRC last night, I think these changes are perfectly 
 reasonable (in fact just what I'd expect if we moved to this model).  Sure, 
 it will force contributors to be more disciplined, but that's probably a good 
 thing anyway.  I'd still like to hear from the BSD guys about how we can best 
 keep shareable code obvious and contribution conditions clear, but so far I 
 haven't heard any serious problems.

Well, I'm only like a third of a developer, but I'll give it a shot.
You are correct that the most important thing for me is being able to
readily identify what code is or should be portable and licensed
appropriately.  I suppose in many ways this is easier for oga to swallow
because he already works in his own tree.  I however work entirely out
of drm.git and just drop that into our cvs/svn tree for releases.  If we
move to a linux tree, does that mean that I will have to pull a full
linux git tree and then try to hand pick the drm bits out?  Where would
the bsd specific code live?  What about libdrm?  Do I have to setup my
own repo for the bsd parts and just try to merge stuff from the linux
tree?  I want us to be able to move as quickly as we can to deliver new
features and functionality, but I see this move as just another step
towards making drm even more linux-centric.

As for BC, as the code stands now, the bsd side of the house has a few
ifdefs that enable certain features from certain releases of bsd, but it
pretty much can just drop into any 6,7,8 release as-is.  That may become
more of a pain as I try and rework various code paths taking advantage
of newer features, but for now it mostly just works.

I realize that some of the new features KMS and GEM are relying much
more heavily on specific kernel features, which already makes my task
daunting.  I don't think that anyone is intentionally trying to make
things more difficult, but I don't see how this move doesn't make it
even more difficult for me to try and keep pace with linux crowd.  I
know I need help already and if I have to keep up with every patch and
bugfix that goes in and cherry-pick it, I won't have time to do much
else.

robert.
 
 If you're still nervous about making the move (I would be), we could consider 
 doing a trial run of the new development model for 2.6.28, but we'd probably 
 want to start right away if 2.6.28 really is our target.
 
 Jesse
 
 -
 This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
 Build the coolest Linux based applications with Moblin SDK  win great prizes
 Grand prize is a trip for two to an Open Source event anywhere in the world
 http://moblin-contest.org/redirect.php?banner_id=100url=/
 --
 ___
 Dri-devel mailing list
 Dri-devel@lists.sourceforge.net
 

Re: [PATCH 1/1] Adapt on_each_cpu

2008-07-31 Thread Kristian Høgsberg
On Wed, Jul 30, 2008 at 10:58 PM, Dave Airlie [EMAIL PROTECTED] wrote:
  What do you think?

 We try to keep #ifdef's out of the code and in drm_compat.h instead.
 Something like

   #if linuxversion = 2.6.27
   #define drm_on_each_cpu(handler, data, wait) ...
   #else
   ...
   #endif

 and then just user drm_on_each_cpu in the code.


 I'd prefer not to do that at all, it makes upstream merging a lot messier.

 The ifdefs make life easier as I have a script to remove them :)

Well, if the overhead of merging upstream is a concern, then how about
not worrying about bc at all and let people who want to back port deal
with it?  Oh, and what about just keeping the drm drivers in a linux
kernel tree?  That'll make upstream merging even easier yet...

Kristian

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-07-31 Thread Dave Airlie

 
 Well, if the overhead of merging upstream is a concern, then how about
 not worrying about bc at all and let people who want to back port deal
 with it?  Oh, and what about just keeping the drm drivers in a linux
 kernel tree?  That'll make upstream merging even easier yet...

The less crap I have to remove from the diffs the better, I have a script 
and it removes stuff mostly fine, maybe someone should actually bring this 
idea up on the list with a proper plan for how to deal with

a) BSD
b) backwards compat for using updated DRM drivers on older kernels.

If someone writes a coherent proposal I'm all ears, all I'm hearing is 
other kernel subsystems, but on my review 2 other kernel subsystem have 
a major userspace part to worry about, alsa and v4l. They both developed 
in out-of-tree with backwards compat code.

If enough DRI developers are willing to take the stand that they don't 
care about a or b, then I'm willing to change the development model. So 
far I've hear grumbles and mumbling, where I expect coherent proposal or 
gtfo.

The biggest thing I have against this is that it cuts our testing base 
down, we have a small testing base already, cutting it further jsut to 
benefit some developers who are frustrated isn't really a gain.

Dave.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-07-31 Thread Jesse Barnes
On Thursday, July 31, 2008 6:40 pm Dave Airlie wrote:
  Well, if the overhead of merging upstream is a concern, then how about
  not worrying about bc at all and let people who want to back port deal
  with it?  Oh, and what about just keeping the drm drivers in a linux
  kernel tree?  That'll make upstream merging even easier yet...

 The less crap I have to remove from the diffs the better, I have a script
 and it removes stuff mostly fine, maybe someone should actually bring this
 idea up on the list with a proper plan for how to deal with

 a) BSD

I'd like to hear Robert's concerns here, but I've been working with some of 
the BSD folks lately, and it seems like the main concerns are:
  1) making it easy for contributors to identify which portions of code are
 shared
  2) licensing
Since both the BSDs and Linux effectively copy code out of the DRM repo and 
into their respective kernel trees at this point, having the actual repo 
based on one of them shouldn't be an issue as long as both 1 and 2 are 
handled.  The remaining compat macros could probably just be wrapped in some 
sort of Linux equivalent (DRM_SPINUNLOCK-spin_unlock, what's the 
difference?), or we could annotate things for the BSD guys to run scripts 
over.  As it stands, they still have to go over things by hand anyway...

I think both of the above can be addressed fairly easily no matter which tree 
we choose (obviously I'd like to see a Linux kernel based tree :), by 
appropriately commenting shared files and making sure contributors understand 
the licensing implications of their contributions (maybe a drivers/gpu 
specific README.licensing or somesuch).

 b) backwards compat for using updated DRM drivers on older kernels.

Personally, I only use the existing DRM repo on old kernels because that's how 
it's structured.  It's actually more work for me to download  build a recent 
kernel, then update  build the DRM drivers against it that it is to simply 
update the DRM drivers and build against my current kernel (or just updating 
a theoretical DRM kernel tree  building for that matter).

So really I don't think keeping compat *in-tree* for old kernels gives us 
extra testing.  It's really no harder or easier to do the same thing with a 
full kernel tree, just different.  IMO anyway.

And if there *were* a regular, Linux-style DRM tree, it would be easier to 
pull in changes from other subsystem trees for testing purposes (e.g. the PCI 
read base stuff, or the shmem stuff assuming Al has a tree somewhere with it, 
or the suspend/resume API stuff or what have you).

 If someone writes a coherent proposal I'm all ears, all I'm hearing is
 other kernel subsystems, but on my review 2 other kernel subsystem have
 a major userspace part to worry about, alsa and v4l. They both developed
 in out-of-tree with backwards compat code.

Unfortunately, I don't think either of those code bases do things particularly 
well either.  Upstream changes are often invisible to actual users for much 
longer than they should be, and the conflation of the userspace code with the 
external repo means that compatibility is actually *harder* to maintain, not 
easier, since interfaces aren't separated enough to force people to think 
about them.  Or in the case of v4l, things just progress really slowly until 
the next rewrite.

To be fair, I think we haven't been horrible about this in the DRM (yet).  
Generally old stuff still works on new kernels, which is important.  But we 
also don't have a userspace component nearly as large as the ALSA guys for 
example; the number of ioctls we have is still pretty manageable.

 If enough DRI developers are willing to take the stand that they don't
 care about a or b, then I'm willing to change the development model. So
 far I've hear grumbles and mumbling, where I expect coherent proposal or
 gtfo.

 The biggest thing I have against this is that it cuts our testing base
 down, we have a small testing base already, cutting it further jsut to
 benefit some developers who are frustrated isn't really a gain.

Well, I think there are other potential gains.  What are the major problems 
with the current scheme, maybe we can address those without affecting the 
issues you mentioned above?  In my view, the big issues are:
  1) we don't really know what's going upstream and when (there's not
 a standard Linux s-o-b process for DRM) until it happens
  2) DRM changelogs are basically useless since they get destroyed when going
 upstream, which means many of our commit messages are unhelpful, to say
 the least (look at most of modesetting-101 for lolz)
  3) having a different development process like this increases the barrier
 to entry for potential developers (this is mostly speculative since we
 don't know how many potential developers we have, but I think it's still
 a valid point)
  4) Linux moves fast and I think having an out-of-tree project means we're
 often out of date, see the recent 

Re: [PATCH 1/1] Adapt on_each_cpu

2008-07-30 Thread Kristian Høgsberg
On Wed, Jul 30, 2008 at 8:19 AM, Johannes Engel [EMAIL PROTECTED] wrote:
 Hi folks,

 this rather trivial patch makes drm compile again on kernel = 2.6.27. It is
 necessary since in kernel 2.6.27 on_each_cpu (defined in
 include/linux/smp.h) lost the third argument (retry).
 What do you think?

We try to keep #ifdef's out of the code and in drm_compat.h instead.
Something like

  #if linuxversion = 2.6.27
  #define drm_on_each_cpu(handler, data, wait) ...
  #else
  ...
  #endif

and then just user drm_on_each_cpu in the code.

thanks,
Kristian

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH 1/1] Adapt on_each_cpu

2008-07-30 Thread Dave Airlie
  What do you think?
 
 We try to keep #ifdef's out of the code and in drm_compat.h instead.
 Something like
 
   #if linuxversion = 2.6.27
   #define drm_on_each_cpu(handler, data, wait) ...
   #else
   ...
   #endif
 
 and then just user drm_on_each_cpu in the code.
 

I'd prefer not to do that at all, it makes upstream merging a lot messier.

The ifdefs make life easier as I have a script to remove them :)

Dave.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel