2022-03-17 21:52:01

by Peter Gonda

[permalink] [raw]
Subject: [PATCH] x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

Replace the hlt loop in handle_vc_boot_ghcb() with an
sev_es_terminate(). The hlt gives the system no indication the guest is
unhappy. The termination request will signal there was an error during
VC handling during boot.


Cc: Borislav Petkov <[email protected]>
Cc: Tom Lendacky <[email protected]>
Cc: Brijesh Singh <[email protected]>
Cc: Joerg Roedel <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Peter Gonda <[email protected]>
---
arch/x86/kernel/sev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c
index e6d316a01fdd..ae87fbf27724 100644
--- a/arch/x86/kernel/sev.c
+++ b/arch/x86/kernel/sev.c
@@ -1425,6 +1425,5 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs)
fail:
show_regs(regs);

- while (true)
- halt();
+ sev_es_terminate(GHCB_SEV_ES_GEN_REQ);
}
--
2.35.1.894.gb6a874cedc-goog


2022-03-21 07:24:01

by Jörg Rödel

[permalink] [raw]
Subject: Re: [PATCH] x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

On Thu, Mar 17, 2022 at 02:19:13PM -0700, Peter Gonda wrote:
> Replace the hlt loop in handle_vc_boot_ghcb() with an
> sev_es_terminate(). The hlt gives the system no indication the guest is
> unhappy. The termination request will signal there was an error during
> VC handling during boot.
>
>
> Cc: Borislav Petkov <[email protected]>
> Cc: Tom Lendacky <[email protected]>
> Cc: Brijesh Singh <[email protected]>
> Cc: Joerg Roedel <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Signed-off-by: Peter Gonda <[email protected]>
> ---
> arch/x86/kernel/sev.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c
> index e6d316a01fdd..ae87fbf27724 100644
> --- a/arch/x86/kernel/sev.c
> +++ b/arch/x86/kernel/sev.c
> @@ -1425,6 +1425,5 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs)
> fail:
> show_regs(regs);
>
> - while (true)
> - halt();
> + sev_es_terminate(GHCB_SEV_ES_GEN_REQ);

Reviewed-by: Joerg Roedel <[email protected]>

Subject: [tip: x86/sev] x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

The following commit has been merged into the x86/sev branch of tip:

Commit-ID: 453e580abcdb53f688d5711c68bec96bea35430d
Gitweb: https://git.kernel.org/tip/453e580abcdb53f688d5711c68bec96bea35430d
Author: Peter Gonda <[email protected]>
AuthorDate: Thu, 17 Mar 2022 14:19:13 -07:00
Committer: Borislav Petkov <[email protected]>
CommitterDate: Tue, 05 Apr 2022 19:33:55 +02:00

x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

Replace the halt loop in handle_vc_boot_ghcb() with an
sev_es_terminate(). The HLT gives the system no indication the guest is
unhappy. The termination request will signal there was an error during
VC handling during boot.

Signed-off-by: Peter Gonda <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Reviewed-by: Joerg Roedel <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
arch/x86/kernel/sev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c
index e6d316a..ae87fbf 100644
--- a/arch/x86/kernel/sev.c
+++ b/arch/x86/kernel/sev.c
@@ -1425,6 +1425,5 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs)
fail:
show_regs(regs);

- while (true)
- halt();
+ sev_es_terminate(GHCB_SEV_ES_GEN_REQ);
}

Subject: [tip: x86/sev] x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

The following commit has been merged into the x86/sev branch of tip:

Commit-ID: e720ea52e85c9d00cf8c5769795d0a3e585524f6
Gitweb: https://git.kernel.org/tip/e720ea52e85c9d00cf8c5769795d0a3e585524f6
Author: Peter Gonda <[email protected]>
AuthorDate: Thu, 17 Mar 2022 14:19:13 -07:00
Committer: Borislav Petkov <[email protected]>
CommitterDate: Fri, 08 Apr 2022 10:57:35 +02:00

x86/sev-es: Replace open-coded hlt-loop with sev_es_terminate()

Replace the halt loop in handle_vc_boot_ghcb() with an
sev_es_terminate(). The HLT gives the system no indication the guest is
unhappy. The termination request will signal there was an error during
VC handling during boot.

[ bp: Update it to pass the reason set too. ]

Signed-off-by: Peter Gonda <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Reviewed-by: Joerg Roedel <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
arch/x86/kernel/sev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c
index ace43e1..f01f455 100644
--- a/arch/x86/kernel/sev.c
+++ b/arch/x86/kernel/sev.c
@@ -1982,8 +1982,7 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs)
fail:
show_regs(regs);

- while (true)
- halt();
+ sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ);
}

/*