Re: Decrypting tt maps in ttm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 9/18/23 17:52, Zack Rusin wrote:
On Mon, 2023-09-18 at 17:13 +0200, Thomas Hellström wrote:
Hi,

On 9/18/23 16:56, Thomas Hellström wrote:
Hi Zack, Christian

On 9/18/23 13:36, Christian König wrote:
Hi Zack,

adding Thomas and Daniel.

I briefly remember that I talked with Thomas and some other people
about that quite a while ago as well, but I don't fully remember the
outcome.
Found one old thread, but didn't read it:

https://lists.freedesktop.org/archives/dri-devel/2019-September/234100.html


/Thomas


Ugh. Now starting to read that thread I have a vague recollection it all
ended with not supporting mapping any device pages whatsoever when SEV
was enabled, but rather resorting to llvmpipe and VM-local bos.
Hi, Thomas.

Thanks for finding this! I'd (of course) like to solve it properly and get vmwgfx
running with 3d support with SEV-ES active instead of essentially disabling the
driver when SEV-ES is active.

I think there are two separate discussions there, the non-controversial one and the
controversial one:
1) The non-controversial: is there a case where drivers would want encrypted memory
for TT pages but not for io mem mappings? Because if not then as Christian pointed
out we could just add pgprot_decrypted to ttm_io_prot and be essentially done. The
current method of decrypting io mem but leaving sys mem mappings encrypted is a bit
weird anyway.

If the answer to that question is "yes, some driver does want the TT mappings to be
encrypted" then your "[PATCH v2 3/4] drm/ttm, drm/vmwgfx: Correctly support support
AMD memory encryption" solves that. I think getting one of those two in makes sense
regardless of everything else, agreed?

Well, there is more to it I think.

IIRC, the AMD SME encryption mode has a way for a device to have the memory controller (?) encrypt / decrypt device traffic by using an address range alias, so in theory it supports encrypted TT pages, and the dma-layer may indeed hand encrypted DMA pages to TTM on such systems depending on the device's DMA mask. That's why I think that force_dma_unencrypted() export was needed, and If the amdgpu driver accesses TT memory in SME mode *without* pgprot_decrypted() and it still works, then I think that mode is actually used. How could it otherwise work?

But anyway, I agree SEV-ES mode would *always* want pgprot_decrypted for dma allocated memory, whether it's in PL_SYSTEM or in PL_TT, but I guess the above SME case need to be sorted out first.


2) The controversial part of your series seems to be exporting of
force_dma_unencrypted and its usage within ttm. Personally I'm perfectly ok with
ignoring that for now. Getting #1 in is still a million times (rounded up to the
nearest million) faster than just using llvmpipe in the guest. And getting #1 also
fixes modern presentation on vmwgfx.



So #1 is "make the driver work", while #2 is an optimisation - I think we should
treat them as separate things/series. Does that make sense?

I guess that depends on the tradeoff between security and speed for people running SEV-enabled VMs. But giving them a choice is probably not a bad idea.

/Thomas



z

P.S. I forgot to cc dri-devel on the initial email, that wasn't by design. Sorry.
I'm ok with moving the discussion to dri-devel.



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux