[RFC] Add DMA_RESV_USAGE flags
Christian König
ckoenig.leichtzumerken at gmail.com
Fri May 21 07:24:16 UTC 2021
Am 20.05.21 um 19:23 schrieb Jason Ekstrand:
> [SNIP]
>>>> I'd argue then that making amdgpu poll semantics match those of other drivers is a pre-requisite for the new ioctl, otherwise it seems unlikely that the ioctl will be widely adopted.
>>> This seems backwards, because that means useful improvements in all
>>> other drivers are stalled until amdgpu is fixed.
>> Well there is nothing to fix in amdgpu, what we need to is to come up
>> with an DMA-buf implicit syncing model which works for everyone.
>>
>> I've pointed this problem out at FOSDEM roughly 6 years ago, before
>> DMA-buf was even merged upstream and way before amdgpu even existed. And
>> the response was yeah, maybe we need to look at this as well.
>>
>> Over the years I've mentioned now at least 5 times that this isn't going
>> to work in some situations and came up with different approaches how to
>> fix it.
>>
>> And you still have the nerves to tell me that this isn't a problem and
>> we should fix amdgpu instead? Sorry, but I'm really running out of ideas
>> how to explain why this isn't working for everybody.
> I'm trying really hard to not fuel a flame war here but I tend to lean
> Daniel's direction on this. Stepping back from the individual needs
> of amdgpu and looking at things from the PoV of Linux as a whole, AMD
> being a special snowflake here is bad. I think we have two problems:
> amdgpu doesn't play by the established rules, and the rules don't work
> well for amdgpu. We need to solve BOTH problems. Does that mean we
> need to smash something into amdgpu to force it into the dma-buf model
> today? Maybe not; stuff's working well enough, I guess. But we can't
> just rewrite all the rules and break everyone else either.
Totally agree. Key point is I think I really expressed why some of the
rules needs some changes and that at least requires an audit of
everything currently using the dma_resv object.
>> That amdgpu wants to be special is true, but it is a fundamental problem
>> that we have designed the implicit sync in DMA-buf only around the needs
>> of DRM drivers at that time instead of going a step back and saying hey
>> what would be an approach which works for everyone.
> How else was it supposed to be designed? Based on the needs of
> non-existent future drivers? That's just not fair. We (Intel) are
> being burned by various aspects of dma-buf these days too. It does no
> good to blame past developers or our past selves for not knowing the
> future. It sucks but it's what we have. And, to move forward, we
> need to fix it. Let's do that.
Yeah, coming up with a design which also works for future needs is
always hard.
But what annoys me is that I've noted those problems way before DMA-buf
was merged or amdgpu even existed. I could really kick my own ass to not
have pushed back on this harder.
> My concern with the flags approach as I'm beginning to digest it is
> that it's a bit too much of an attempt to rewrite history for my
> liking. What do I mean by that? I mean that any solution we come up
> with needs ensure that legacy drivers and modern drivers can play
> nicely together. Either that or we need to modernize all the users of
> dma-buf implicit sync. I really don't like the "as long as AMD+Intel
> works, we're good" approach.
Seconded. That's why I'm saying that we need to take a step back and
look at what would be a good design for drivers in general.
After sleeping a night over it I think what Daniel noted to have
something similar to the moving fence of TTM inside the dma_resv object
is a really good step into the right direction.
When we combine that with an ability to add fences which should never
play with implicit sync and only resource management I think we could
solve this.
This essentially untangles resource management from implicit sync and
results in the following four categories:
1. A moving fence used by resource management only. Userspace can't in
any way mess with that one.
2. The existing exclusive fence which is set by CS and/or your new IOCTL.
3. The existing shared fences which can be added by CS.
4. A new group of fences which don't participate in resource management,
but not in implicit sync.
Number 1 requires an audit of all places which currently do CS or page flip.
Number 4 requires an audit of all places which do resource management.
I can tackle those and I'm perfectly aware that it might take some time.
Regards,
Christian.
More information about the dri-devel
mailing list