On Mon, Jan 09, 2012 at 10:07:02AM +0100, Thomas Hellstrom wrote:
On 01/06/2012 04:51 PM, James Simmons wrote:
You can achieve what you want by either adding a new domain so you would have system, vram, agp, pcidma and object can be bound to one and only one. Or you can hack your own agp ttm backend that could bind bo to agp or pci or both at the same time depending on what you want to achieve.
The question is how does one know which domain you want in tt_create. Currenty drivers are using there dev_priv but if you have have more than one option available how does one choose? Would you be okay with passing in a domain flag?
Well i agree that something would be usefull there so the driver know which bind/unbind function it should use. Thomas i would prefer passing the bo to the tt_create callback but a flag is the minimum we need.
We can discuss this after the merge widow. Jerome your patch does fix a regression whereas my proposal is a enhancement.
..Back from parental leave.
I'm not 100% sure I understand the problem correctly, but I assume the problem is that you receive a "bind" request for pages allocated out of the wrong DMA pool? Is that correct?
In that case we need to make both the following happen:
- The backend should be required to supply a fallback that can bind
anyway by allocating the correct page type and copy. 2) I'm OK with providing a hint to tt_create. IIRC we're passing bo::mem to tt_bind. Would it be ok to pass the same to tt_create?
/Thomas
Issue here is that different backend (AGP or PCI DMA or someother communication way btw GPU and system memory) needs to use different page allocator/backend. Thus tt_create need either to know about the bo or at least about bo:mem.
Cheers, Jerome