Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp7374951rdb; Wed, 3 Jan 2024 13:54:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1yGsswPvAUciZRq7imsJGQy1WdpdPJwhfVbESwMe5SCS07U/C5ZdSrMo7fz2lHVpemmqI X-Received: by 2002:ac5:c396:0:b0:4b6:daba:e9cb with SMTP id s22-20020ac5c396000000b004b6dabae9cbmr5395993vkk.13.1704318871357; Wed, 03 Jan 2024 13:54:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704318871; cv=none; d=google.com; s=arc-20160816; b=kq2tYsu6UWarVnTDLhBf/XxGVLhE9+G0GAUWkZD19oFgEd+/aFGDEjABOIu8gi7bRB s8xyA20we3GEMYBNJATLvMIhj+vdTfAbNmpAFHO26yemlfSws8IcZpAp+IpFqarZwf/V SqPNhAklz62xMhbneJ1I/oX6iki1CzuXJimGN9mRe98nknJ9oqGzDfJ1JomFqVHjWJVY hIa1YNaeR7bIMFWZRXlqhpHKysMf9fKjX1QFX1x1mtZKrWqs2svTZr+rLnhJIVJAtbwi mdImcRKWidmxIKqmwaYIiy51q/MqWvm9S7u+E1Us2u8iJ4k/QIhcxWsYlDsXy06VNYcl tprw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:references:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:in-reply-to:date :dkim-signature; bh=6n/47+Omzg5WW5UuXFIT8z2kd1nVf1+Oyec4DhB9CBk=; fh=gPwq7VI0ACnjr97TfzX51vyKVm6NX8dL8R/mqZ06R0A=; b=s75bXVlr8PwFiOPeUX+M/e09bYdRzjE+N6yPQ00F22OkhpGivsOCyvkb+JM1Jopk3q TPV2vTTseRVSly83HMQyh0v+0krWMU9laHWpCPmdvNa7Bv8Vg9/U9qZ9Y/eIp+ALXzfh 5gwIgRp4qjUAcVsEm0+zUxBTq6xTxnO82SIr5zULkzs3jD0iaKw880tOP5IA4jMNhMKu GYcrYcd29kv7fZ3XjdebTGNiFgsM2XGExFDcjxLRccMsti335ZnFZmHgNXEhYkndujkI jCGE6UO0F+eS6V3y6EKMZLtAo3pcm0FIsm7OfB5vSGITpWlTFUPYX2vEwGdr6LvNEF9J 4pWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ze1yS6OV; spf=pass (google.com: domain of linux-kernel+bounces-16037-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-16037-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id bp40-20020a05620a45a800b0077d72b6ab70si31529307qkb.355.2024.01.03.13.54.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 13:54:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-16037-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ze1yS6OV; spf=pass (google.com: domain of linux-kernel+bounces-16037-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-16037-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1FE6B1C24874 for ; Wed, 3 Jan 2024 21:54:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 718F91DA3D; Wed, 3 Jan 2024 21:54:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ze1yS6OV" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (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 CEE061DA24 for ; Wed, 3 Jan 2024 21:54:18 +0000 (UTC) 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--seanjc.bounces.google.com Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5eef1c0fdadso66984297b3.1 for ; Wed, 03 Jan 2024 13:54:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704318858; x=1704923658; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=6n/47+Omzg5WW5UuXFIT8z2kd1nVf1+Oyec4DhB9CBk=; b=ze1yS6OVsxYmBJDO2kfTot9d8dp4/iF6NtpejlQDx3ljvsg+xRIkOVIfVihVBn+4da nqPgY8zKa89xLlRUEVSZE9a5003Rl4dC9G3aHjnqloIn43831eCsHtUdO0AJW/9yDSEo YnyuBOcLF80JqM7V2Ri61QGKBKm4zY3/SZKdpPhUgqvmKYvuwLvTr2/h93Y5aToBOYgS 53A1ZZGHAgaGn+i7tsMiZ5OV1/0BgnThDcRUocUOx2JF8nlRgzOfcxA13AynsqlY8Gdp BxR65sVG2bQaYtD/5UUp3OLPFcocO7S3ycpt/xmyYQIEuhZyax/TkPabVnNWAUyg9iN2 p0OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704318858; x=1704923658; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6n/47+Omzg5WW5UuXFIT8z2kd1nVf1+Oyec4DhB9CBk=; b=M4XuCJeMpdSk9C1s802Rw6vr5hxcqP2lAmYtUUiNttMiMRPmVXfJllFqIjVjSjzK1V N0hl9Ekak6hdKYS00U+t7h0mv0ohMG8hdr4DHbURg+5tNorM6VvqKuY+XhO5JEp5F6Qn sdYIzu5T6+On7HcUtZRJYTCoQT0hcN7vRPJVxhtIhibDbB8LalJZMB5ArFcqvzhACvk2 DfW+cxtjHoyr625k433bABO4RiMQ5Ifyt6ExEzMm8CMQyiRY9PU0HPWkSMiH0h/MHQlK g6GT0coEeJZxUzC/I/w7eU0JOXV67Et9M5QI0ZTwaGphnl8uThADgLtlz/g1ILinGEF+ J1Og== X-Gm-Message-State: AOJu0Yx3N3POiWQcpxOieBDUrEI9bbLFFzVN5Ib08Z+NLuMHb6aoY5lM q725fGnrjiNmYvWi1u6KtfgvKCN9Mtjn4fM38Q== X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:aa49:0:b0:5f2:bc90:f1ed with SMTP id z9-20020a81aa49000000b005f2bc90f1edmr1581934ywk.4.1704318857883; Wed, 03 Jan 2024 13:54:17 -0800 (PST) Date: Wed, 3 Jan 2024 13:54:16 -0800 In-Reply-To: <864b9717-46d2-4c1d-a84c-0784caf952f3@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240102232136.38778-1-Ashish.Kalra@amd.com> <864b9717-46d2-4c1d-a84c-0784caf952f3@amd.com> Message-ID: Subject: Re: [PATCH] x86/sev: Add support for allowing zero SEV ASIDs. From: Sean Christopherson To: Ashish Kalra Cc: pbonzini@redhat.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, thomas.lendacky@amd.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, joro@8bytes.org Content-Type: text/plain; charset="us-ascii" On Wed, Jan 03, 2024, Ashish Kalra wrote: > On 1/3/2024 3:10 PM, Sean Christopherson wrote: > > > > diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c > > > > index d0c580607f00..bfac6d17462a 100644 > > > > --- a/arch/x86/kvm/svm/sev.c > > > > +++ b/arch/x86/kvm/svm/sev.c > > > > @@ -143,8 +143,20 @@ static void sev_misc_cg_uncharge(struct kvm_sev_info *sev) > > > > static int sev_asid_new(struct kvm_sev_info *sev) > > > > { > > > > - int asid, min_asid, max_asid, ret; > > > > + /* > > > > + * SEV-enabled guests must use asid from min_sev_asid to max_sev_asid. > > > > + * SEV-ES-enabled guest can use from 1 to min_sev_asid - 1. Note, the > > > > + * min ASID can end up larger than the max if basic SEV support is > > > > + * effectively disabled by disallowing use of ASIDs for SEV guests. > > > > + */ > > > > + unsigned int min_asid = sev->es_active ? 1 : min_sev_asid; > > > > + unsigned int max_asid = sev->es_active ? min_sev_asid - 1 : max_sev_asid; > > > > + unsigned int asid; > > > > bool retry = true; > > > > + int ret; > > > > + > > > > + if (min_asid > max_asid) > > > > + return -ENOTTY; > > > This will still return -EBUSY to user. > > Huh? The above is obviously -ENOTTY, and I don't see anything in the call stack > > that will convert it to -EBUSY. > > Actually, sev_asid_new() returning failure to sev_guest_init() will cause it > to return -EBUSY to user. Argh, I see it now. That too should be fixed, e.g. diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index d0c580607f00..79eb11083ad5 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -246,21 +246,20 @@ static void sev_unbind_asid(struct kvm *kvm, unsigned int handle) static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp) { struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; - int asid, ret; + int ret; if (kvm->created_vcpus) return -EINVAL; - ret = -EBUSY; if (unlikely(sev->active)) - return ret; + return -EINVAL; sev->active = true; sev->es_active = argp->id == KVM_SEV_ES_INIT; - asid = sev_asid_new(sev); - if (asid < 0) + ret = sev_asid_new(sev); + if (ret < 0) goto e_no_asid; - sev->asid = asid; + sev->asid = ret; ret = sev_platform_init(&argp->error); if (ret)