<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Am 27.06.24 um 16:40 schrieb <a class="moz-txt-link-abbreviated" href="mailto:mripard@kernel.org">mripard@kernel.org</a>:<br>
<blockquote type="cite" cite="mid:20240627-impetuous-aboriginal-cougar-cdcbbf@houat">[SNIP]<span style="white-space: pre-wrap">
</span>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<pre class="moz-quote-pre" wrap=""></pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">Why can't you get this information from userspace?
</pre>
</blockquote>
</blockquote>
<pre class="moz-quote-pre" wrap="">Same reason amd and i915/xe also pass this around internally in the
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">kernel, it's just that for those gpus the render and kms node are the
same
driver so this is easy.
</pre>
</blockquote>
</blockquote>
<pre class="moz-quote-pre" wrap="">
The reason I ask is that encryption here looks just like another parameter
for the buffer, e.g. like format, stride, tilling etc..
So instead of this during buffer import:
mtk_gem->secure = (!strncmp(attach->dmabuf->exp_name, "restricted", 10));
mtk_gem->dma_addr = sg_dma_address(sg->sgl);
mtk_gem->size = attach->dmabuf->size;
mtk_gem->sg = sg;
You can trivially say during use hey this buffer is encrypted.
At least that's my 10 mile high view, maybe I'm missing some extensive key
exchange or something like that.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
That doesn't work in all cases, unfortunately.
If you're doing secure video playback, the firmware is typically in
charge of the frame decryption/decoding, and you'd get dma-buf back that
aren't accessible by the CPU (or at least, not at the execution level
Linux runs with).</pre>
</blockquote>
<br>
Yeah, that's perfectly fine. At least the AMD encryption solution
works exactly like that as well.<span style="white-space: pre-wrap">
</span>
<blockquote type="cite" cite="mid:20240627-impetuous-aboriginal-cougar-cdcbbf@houat">
<pre class="moz-quote-pre" wrap="">
So nobody can map that buffer, and the firmware driver is the one who
knows that this buffer cannot be accessed by anyone.</pre>
</blockquote>
<br>
On most hw I know you can actually map that buffer, it's just that
the CPU sees only garbage in it because you don't have the necessary
decryption keys around.<br>
<br>
<blockquote type="cite" cite="mid:20240627-impetuous-aboriginal-cougar-cdcbbf@houat">
<pre class="moz-quote-pre" wrap="">Putting this on the userspace to know would be pretty weird, and wouldn't solve the case
where the kernel would try to map it.</pre>
</blockquote>
<br>
But that's exactly how all other implementations work as far as I
know. I mean what do you do if the kernel maps the encrypted buffer?<br>
<br>
On AMD we also block userspace and kernel CPU accesses, but that is
only done to make it easier to find bugs not for correctness.<br>
<br>
And userspace absolutely needs to be aware that a buffer is
encrypted, cause otherwise it could potentially try to access it
with the CPU.<br>
<br>
Regards,<br>
Christian.<br>
<br>
<blockquote type="cite" cite="mid:20240627-impetuous-aboriginal-cougar-cdcbbf@houat">
<pre class="moz-quote-pre" wrap="">
Maxime
</pre>
</blockquote>
<br>
</body>
</html>