Re: [RFC v2 14/32] x86/tdx: Handle port I/O
From: Andi Kleen
Date: Mon May 10 2021 - 20:01:26 EST
On Mon, May 10, 2021 at 04:34:34PM -0700, Dan Williams wrote:
> > > Outside the boot decompression code isn't this branch of the "ifdef
> > > BOOT_COMPRESSED_MISC_H" handled by #VE? I also don't see any usage of
> > > __{in,out}() in this patch.
> >
> > I thought it was all alternative after decompression, so the #VE code
> > shouldn't be called. We still have it for some reason though.
>
> Right, I'm struggling to understand where these spurious in/out
> instructions are coming from that are not replaced by the
> alternative's code?
There should be nothing in the main tree at least.
> Shouldn't those be dropped on the floor and warned
> about rather than handled?
It might be related to eventually handling them in ring 3, but
I believe we disallow that currently too and it's not all that useful
anyways. So yes it could be forbidden.
> I.e. shouldn't port-io instruction escapes
> that would cause #VE be precluded at build-time?
You mean in objtool? That would seem like overkill for a more theoretical
problem.
> > There used to be SAVE_ALL/SAVE_REGS, but they have been all removed in
> > some past refactorings.
>
> Not a huge deal, but at a minimum it seems a generic construct that
> deserves to be declared centrally rather than tdx-guest-port-io local.
Yes I agree. We should just bring SAVE_ALL/SAVE_REGS back.
-Andi