From nobody Sun Feb 8 05:42:22 2026 Received: from mail-ot1-f73.google.com (mail-ot1-f73.google.com [209.85.210.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 32B111A08AF for ; Wed, 14 Jan 2026 00:30:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768350622; cv=none; b=NT9dWfBngG/2bbwC5KFsBja9EKm3bSunxFnza69DhYsf3p9IAyDcRM3IfqduwFpZvZv1yOWCJJK4PowOT2GIhSy1pRPzC+NA/9RNFIRGxyva3pClG0RqSNL4jc+yy10SmAJobvj/bciLg6SQKaTindzxe0mHe5dNMNWft90nhVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768350622; c=relaxed/simple; bh=Sww1KhC26DhzRX8vj6+jeZjMA0ohksUqS7ewJwBUchw=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=SvDLNdaqcZie+0664K1D+BFjrL947UFgN//W6DocAAKzVnA23YLCMldUf0MAh+jsQsylG8KHnouRFBhKSbThGXlr4RDh0oe17zHsRU8ZJ8eRanL50ByqA3zl5fQYX3VZzanLxMav3RL80EHMEfj1P6d1JMzK6qR1m+KFAU2ezbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--sagis.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Hb65YCRc; arc=none smtp.client-ip=209.85.210.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--sagis.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Hb65YCRc" Received: by mail-ot1-f73.google.com with SMTP id 46e09a7af769-7c7046514a2so13541022a34.0 for ; Tue, 13 Jan 2026 16:30:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1768350619; x=1768955419; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=mDqQzZpBqG5DC4HlLuHkP1lRxnE+ttALMGnQiFNcgcU=; b=Hb65YCRcWPftMCNljS8ZQNYlX26ShYHvBZ3D5Ek7ctmkcY4hfPtCWGgHxxA7BTjBvz 7M5Qmjg39od9eni8zea5bP8L0ceoUKefK24ze07jLh4QKJkWwbl/V4HvugOLAmJ2PGis pYwj3XYZYLsG0QJu8YfOjZmgC1jcjawqHf16oEZt4ScYfHt5tDJEfwPU8H5yoWDcjDbq I/LDGjcA2bH7ouLkP5MBkx6qBBpAyctCdMQ8KPYQ2T0e0Bivy8Cigz6tToX2qXCkvF75 40beVaWs8W4sUnk07uMqUrtBkq2JdHFg2lFTcay0MbMHcnSdBazMivpJKYAV5vHCE3th PXSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768350619; x=1768955419; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=mDqQzZpBqG5DC4HlLuHkP1lRxnE+ttALMGnQiFNcgcU=; b=XB7rV6E9SbV+eIAd33AyqmnQfDZYXnlyk26k6LlyQOeNT1y8CO3LzjRz7SQf2NkjZ6 zFdZ3mQKJi45p1KVjt93zivYRDA6iA7k+C8zbqnQeHOYHFZ1seS0u31qONmoWrVfRr8p WpGvgyvJxJSvX6WqAvDp2iFVJ/XEx7dlKgdkPOAoZ2sqLx70DE9LkdcOIxqjIFJroy+P IbVpCvW0QbLufhDH7UNN4TRPo3EWJQOcICqRHurstc1Y2bs2jWtyLs7XNfGkCRS7EoXy Mfaksh0WNLNNGnk/G+Lklt2wHjlg7krQVPGvewFoJS5TU0YjWA4T71eOwCQrs4XaUq+B 1f9w== X-Forwarded-Encrypted: i=1; AJvYcCXg9rWiGwzV6JQmZb8GSbFCQIdP/LSp+pPGFExWwOrezmUs2T0S9QU/rklYaEUMIVZfO/LbBr2L9mxnW3Y=@vger.kernel.org X-Gm-Message-State: AOJu0YxI748U4CIiL7E/Bktr1FTe4dqsNRaTRRN4JfhKodGvmIH50TaE EQn57HicxzGsj0esNFcWhkW+7uKGY7NazAvJozRzFRemBpfVomVEXthdSZBlE6qZZNFg9+QR9iQ r2Q== X-Received: from jajn1.prod.google.com ([2002:a05:6638:2101:b0:5ca:5a1e:2501]) (user=sagis job=prod-delivery.src-stubby-dispatcher) by 2002:a4a:d858:0:b0:65f:cda0:ed8f with SMTP id 006d021491bc7-6610064cecbmr551777eaf.35.1768350619122; Tue, 13 Jan 2026 16:30:19 -0800 (PST) Date: Wed, 14 Jan 2026 00:30:15 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.52.0.457.g6b5491de43-goog Message-ID: <20260114003015.1386066-1-sagis@google.com> Subject: [PATCH] KVM: TDX: Allow userspace to return errors to guest for MAPGPA From: Sagi Shahar To: Sean Christopherson , Paolo Bonzini , Dave Hansen , Kiryl Shutsemau , Rick Edgecombe Cc: Thomas Gleixner , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-coco@lists.linux.dev, Vishal Annapurve , Sagi Shahar Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vishal Annapurve MAPGPA request from TDX VMs gets split into chunks by KVM using a loop of userspace exits until the complete range is handled. In some cases userspace VMM might decide to break the MAPGPA operation and continue it later. For example: in the case of intrahost migration userspace might decide to continue the MAPGPA operation after the migrration is completed. Allow userspace to signal to TDX guests that the MAPGPA operation should be retried the next time the guest is scheduled. Signed-off-by: Vishal Annapurve Co-developed-by: Sagi Shahar Signed-off-by: Sagi Shahar --- arch/x86/kvm/vmx/tdx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c index 2d7a4d52ccfb..3244064b1a04 100644 --- a/arch/x86/kvm/vmx/tdx.c +++ b/arch/x86/kvm/vmx/tdx.c @@ -1189,7 +1189,13 @@ static int tdx_complete_vmcall_map_gpa(struct kvm_vc= pu *vcpu) struct vcpu_tdx *tdx =3D to_tdx(vcpu); =20 if (vcpu->run->hypercall.ret) { - tdvmcall_set_return_code(vcpu, TDVMCALL_STATUS_INVALID_OPERAND); + if (vcpu->run->hypercall.ret =3D=3D -EBUSY) + tdvmcall_set_return_code(vcpu, TDVMCALL_STATUS_RETRY); + else if (vcpu->run->hypercall.ret =3D=3D -EINVAL) + tdvmcall_set_return_code(vcpu, TDVMCALL_STATUS_INVALID_OPERAND); + else + return -EINVAL; + tdx->vp_enter_args.r11 =3D tdx->map_gpa_next; return 1; } --=20 2.52.0.457.g6b5491de43-goog