All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerome Glisse <glisse@freedesktop.org>
To: "Thomas Hellström" <thomas@shipmail.org>
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.sf.net
Subject: Re: ttm_mem_global
Date: Wed, 29 Jul 2009 15:04:51 +0200	[thread overview]
Message-ID: <1248872692.2886.0.camel@localhost> (raw)
In-Reply-To: <4A7018DA.807@shipmail.org>

On Wed, 2009-07-29 at 11:39 +0200, Thomas Hellström wrote:
> Jerome Glisse wrote:
> > On Tue, 2009-07-28 at 20:55 +0200, Thomas Hellström wrote:
> >   
> >> Jerome Glisse skrev:
> >>     
> >>> On Wed, 2009-07-22 at 10:37 +0200, Thomas Hellström wrote:
> >>>   
> >>>       
> >>>> TTM has a device struct per device and an optional global struct that is 
> >>>> common for all devices and intended to be per subsystem.
> >>>>
> >>>> The only subsystem currently having a global structure is the memory 
> >>>> accounting subsystem:
> >>>> struct ttm_mem_global
> >>>>     
> >>>>         
> >>> Thomas i don't think the way we init ttm_mem_global today make
> >>> it follow the 1 struct ttm_mem_global for everyone. I think it
> >>> should be initialized and refcounted by device struct.
> >>>
> >>> So on first device creation a ttm_mem_global is created and
> >>> then anytime a new device is created the refcount of ttm_mem_global
> >>> is increased. 
> >>>       
> >> Jerome,
> >> This is exactly what the current code intends to do.
> >>
> >> Are you seeing something different?
> >>     
> >
> > I definitly don't see that :) In radeon we do create a structure
> > which hold the ttm_mem_global struct so it's not shared at all
> > it got inited & destroyed along the driver. This is why i think
> > it's better to remove the driver initialization and let bo_device
> > init path take care of initializing one and only one object which
> > can be shared by multiple driverttm_mem_global_inits.
> >
> >   
> Which radeon struct is holding the ttm_mem_global struct?
> 
> The radeon code looks very similar to the openchrome code in which the 
> struct ttm_mem_global is allocated at ttm_global.c, line 74 and freed at 
> ttm_global.c, line 108 when its refcount has reached zero.
> 
> So the device holds a struct ttm_global_reference that *only points* to 
> the global item, and which is destroyed on device takedown. If there are 
> more than one device pointing to the mem_global object, it won't get 
> destroyed.
> 
> So the code should be working perfectly fine unless there is a bug.
> 
> > So what i propose is remove mem_glob parameter from :
> > ttm_bo_device_init, add a call to ttm_mem_global_init in
> > ttm_bo_device_init 
> 
> Nope, The ttm_mem_global object is used by other  ttm subsystems 
> (fencing, user-space objects),
> so that can't be done.
> 
> > and add some static refcount in ttm_memory.c
> > if refcount = 0 then ttm_mem_global_init create a ttm_mem_global
> > struct and initialize things, if refcount > 0 then it gives
> > back the already initialized ttm_mem_global.
> >
> >   
> 
> This is exactly what ttm_global was created to do, and what it hopefully 
> does. If you create two radeon devices the ttm_mem_global object should 
> be the same, even though the global references pointing to it are of 
> course different. Have you actually tried this?
> 
> /Thomas
> 

Ok code wasn't clear for me until i read ttm_global.c

Cheers,
Jerome


  reply	other threads:[~2009-07-29 13:06 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-25 12:01 TTM page pool allocator Jerome Glisse
2009-06-25 15:53 ` Thomas Hellström
2009-07-21 17:34   ` Jerome Glisse
2009-07-21 18:00     ` Jerome Glisse
2009-07-21 19:22       ` Jerome Glisse
2009-07-22  8:37         ` Thomas Hellström
2009-07-28 16:48           ` ttm_mem_global Jerome Glisse
2009-07-28 18:55             ` ttm_mem_global Thomas Hellström
2009-07-29  8:59               ` ttm_mem_global Jerome Glisse
2009-07-29  9:39                 ` ttm_mem_global Thomas Hellström
2009-07-29 13:04                   ` Jerome Glisse [this message]
2009-07-22 13:16         ` TTM page pool allocator Michel Dänzer
2009-07-22 13:31           ` Jerome Glisse
2009-07-22 19:13             ` Thomas Hellström
2009-07-22 22:35               ` Jerome Glisse
2009-07-22 23:24                 ` Keith Whitwell
2009-07-22 23:27                   ` Dave Airlie
2009-07-22  8:27     ` Thomas Hellström
2009-07-22 12:12       ` Jerome Glisse
2009-07-22 19:10         ` Thomas Hellström
2009-06-26  0:00 ` Dave Airlie
2009-06-26  6:31   ` Thomas Hellström
2009-06-26  7:33     ` Jerome Glisse
2009-06-26  7:31   ` Jerome Glisse
2009-06-26  7:38     ` Dave Airlie
2009-06-26 13:59   ` Jerome Glisse
2009-06-29 21:12     ` Thomas Hellström
2009-07-09  6:06       ` Dave Airlie
2009-07-09  8:48         ` Michel Dänzer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1248872692.2886.0.camel@localhost \
    --to=glisse@freedesktop.org \
    --cc=dri-devel@lists.sf.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=thomas@shipmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.