<div dir="ltr"><div>Can you please summarize what this is about?</div><div><br></div><div>Thanks,</div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 1, 2022 at 8:40 AM Christian König <<a href="mailto:christian.koenig@amd.com">christian.koenig@amd.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey guys,<br>
<br>
so today Bas came up with a new requirement regarding the explicit <br>
synchronization to VM updates and a bunch of prototype patches.<br>
<br>
I've been thinking about that stuff for quite some time before, but to <br>
be honest it's one of the most trickiest parts of the driver.<br>
<br>
So my current thinking is that we could potentially handle those <br>
requirements like this:<br>
<br>
1. We add some new EXPLICIT flag to context (or CS?) and VM IOCTL. This <br>
way we either get the new behavior for the whole CS+VM or the old one, <br>
but never both mixed.<br>
<br>
2. When memory is unmapped we keep around the last unmap operation <br>
inside the bo_va.<br>
<br>
3. When memory is freed we add all the CS fences which could access that <br>
memory + the last unmap operation as BOOKKEEP fences to the BO and as <br>
mandatory sync fence to the VM.<br>
<br>
Memory freed either because of an eviction or because of userspace <br>
closing the handle will be seen as a combination of unmap+free.<br>
<br>
<br>
The result is the following semantic for userspace to avoid implicit <br>
synchronization as much as possible:<br>
<br>
1. When you allocate and map memory it is mandatory to either wait for <br>
the mapping operation to complete or to add it as dependency for your CS.<br>
     If this isn't followed the application will run into CS faults <br>
(that's what we pretty much already implemented).<br>
<br>
2. When memory is freed you must unmap that memory first and then wait <br>
for this unmap operation to complete before freeing the memory.<br>
     If this isn't followed the kernel will add a forcefully wait to the <br>
next CS to block until the unmap is completed.<br>
<br>
3. All VM operations requested by userspace will still be executed in <br>
order, e.g. we can't run unmap + map in parallel or something like this.<br>
<br>
Is that something you guys can live with? As far as I can see it should <br>
give you the maximum freedom possible, but is still doable.<br>
<br>
Regards,<br>
Christian.<br>
</blockquote></div>