rientjes at google.com
Sat Aug 1 04:20:07 EDT 2020
On Fri, 31 Jul 2020, David Rientjes wrote:
> > > Hi Nicolas, Christoph,
> > >
> > > Just out of curiosity, I'm wondering if we can restore the earlier
> > > behaviour and make DMA atomic allocation configured thru platform
> > > specific device tree instead?
> > >
> > > Or if you can allow a more hackish approach to restore the earlier
> > > logic, using of_machine_is_compatible() just for my device for the
> > > time being. Meanwhile I'm checking with other developers running the
> > > mainline kernel on sdm845 phones like OnePlus 6/6T, if they see this
> > > issue too.
> > If we don't find a fix for your platform I'm going to send Linus a
> > last minute revert this weekend, to stick to the no regressions policy.
> > I still hope we can fix the issue for real.
> What would be the scope of this potential revert?
To follow-up on this, the introduction of the DMA atomic pools in 5.8
fixes an issue for any AMD SEV enabled guest that has a driver that
requires atomic DMA allocations (for us, nvme) because runtime decryption
of memory allocated through the DMA API may block. This manifests itself
as "sleeping in invalid context" BUGs for any confidential VM user in
I unfortunately don't have Amit's device to be able to independently debug
this issue and certainly could not have done a better job at working the
bug than Nicolas and Christoph have done so far. I'm as baffled by the
results as anybody else.
I fully understand the no regressions policy. I'd also ask that we
consider that *all* SEV guests are currently broken if they use nvme or
any other driver that does atomic DMA allocations. It's an extremely
serious issue for cloud. If there is *anything* that I can do to make
forward progress on this issue for 5.8, including some of the workarounds
above that Amit requested, I'd be very happy to help. Christoph will make
the right decision for DMA in 5.8, but I simply wanted to state how
critical working SEV guests are to users.
More information about the linux-rpi-kernel