From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 B098B4508E4 for ; Thu, 30 Jul 2026 18:24:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785435882; cv=none; b=fvPUphDY1mG9DouGw586P/+2zmE7mBZB31BZ0SRS+pdZCCyghSK86ZXBN1neUhqQIwXZr9VGat51gy08xoAVdnjYNs/7ZDrQnMXMf3DL0yuvHZe2qAzTEkEAt6zAfe/aygMvaaHsMBzECIv3/3Xf8uFyMlfWfJgJvKe/ogXFAfQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785435882; c=relaxed/simple; bh=O14zjjovGhUS1oisSmIPImyZNtw8PEWRZRj6BhjFqXc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I5T9if0DsZo3I3HDThEDhV0czL38p8zBUsYTwV6glN3K2OPYs7JRulQ/OA79mKsXlqlgBRVmLUyWbQExOhysOzwgEVHvV5o9S+V/L05vEVznWnxfBzoZEO7jfiHxe+ovT0/NtBJfutxgP1aMSwIabgBWcMAZ8YipnfCaGQ4xJsE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=mokaldYi; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="mokaldYi" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-49553515a8bso1055095e9.1 for ; Thu, 30 Jul 2026 11:24:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1785435875; x=1786040675; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=flDxck68r8K2V0lreAAuQvFuepl9jlGM1LdPTHPMSDc=; b=mokaldYi7J7Pf10stqOrObcnJXzIGGGMd6j8NPwU6LrLjpFybAPW7BxrhTlDAKxtbo GyfLb9bUjmhr0dSsYqWV+ddiISgko7ojqKYRAi/Stm7Yir6Fv3LTcmk9yqJFev4c1dIt YW2LAaPXQqnoW4md+2+kdg4lVLvvYvzhgG62Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785435875; x=1786040675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=flDxck68r8K2V0lreAAuQvFuepl9jlGM1LdPTHPMSDc=; b=tYxhLg2vszsxNAbQ84eIsy3EQqdQCPqIBJ22Ir6Enfx8++tsKoYW0twSF7KnDVRMrT jmoBd/G68nc9oCLMd3aDyQAWQDmcqIk07B1vqwdHEXIS/EtNuseEyHosGsg5PB+d+I6G kNTWvUwpxOSVs6KTfiNUQngkSnRHa4GsJo5GRTbX73Z3c3RdSQaYYaA6ppkY3dTLjKrh uDHcMEKt74IkUYEQBmbYFwOydImVJrX57M/xrF5uscnNrfCvBJ0Nw5uzzcpG8AMnMpRo jD/+yJ9guSeNep7ooZPjI0pfy0SG5vi4Zwh6qzcIa6q4e8ibR2YvaKrUUdbyXfXDZ1SX 4/5A== X-Forwarded-Encrypted: i=1; AHgh+Ro0nnmzXdEvBlPikDNylUhPyf+rqILg8Spss8EjzvaNJ8Rhv+w86NOt8fh1ycIBZAM8ilQWgMA5pXIaOhU=@vger.kernel.org X-Gm-Message-State: AOJu0YxRBkHOVAATs3xwi0XZnmy9ZQoyvkh44aelMhMntpD5LjA5Lepe OD6plQGP4i1h9PFCs0PkHSLF6iB87pucXm6Y0HqKd36TeH0FCGhuMozDDkgOZuojIA== X-Gm-Gg: AR+sD13d+pQ0BpSpRy5r6+n6YrbvuZfJ24TO2hVEB8BvJLofflSG2Ht9LJfStE4A5fS KOsFBuyVmSp0rHdxcORdBXBeW110VKkL8URSm9gnM7KnUvJHIVCo1fl+/T1g7Yb8T/SlSZBPgS4 Xg/0lNkGhwVFgmKRWR840Z7PSjfsqqLyeGa8fmKJBfsTpAfQr4cfvhPfOARiNFWs2tKrpmNUVrY qwJIkGh78o1H3tvs2JwjjNIBhJTUbZclrSoAjRBOLoQnCZLaLq7nAvGC0VLqcMidpjmPnQN3Btl FIwBotbTWsRnexSVvREHVlNGF9BNTT/tffkai3fRH+mma0GXQRSojV28cpioIqj0VL5ZQ8qHMSn s2tK18sBy+COSKNERTTIzBnDuFQUp8CuzZ0Corywi+UvTlH59QGehwWK4UBA19hCqT7ZJ6Q6PpE 7BnUxXz+DKz1ZFiooFjiHS38bO68imzV1FoqffI+/TgLlrZtORJPoFB0vgZNXW8MCwLeiWE8DK+ zyCt7HLkm794LIWyrXqVSkUM0HtRUxjoo87lx2F0fMRjIP2p7g0wFY= X-Received: by 2002:a05:600c:4e89:b0:498:28b:1025 with SMTP id 5b1f17b1804b1-498028b10f7mr47675555e9.5.1785435874942; Thu, 30 Jul 2026 11:24:34 -0700 (PDT) Received: from dmaluka.c.googlers.com.com (110.121.148.146.bc.googleusercontent.com. [146.148.121.110]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-498010aade3sm84008685e9.14.2026.07.30.11.24.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 11:24:34 -0700 (PDT) From: Dmytro Maluka To: Sean Christopherson Cc: Paolo Bonzini , Dave Hansen , Mathias Krause , kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Vineeth Pillai , Chuanxiao Dong , Aashish Sharma , Grzegorz Jaszczyk , Dmytro Maluka Subject: [PATCH 3/3] Documentation: KVM: Clarify that KVM_CAP_MAX_VCPU_ID is exclusive Date: Thu, 30 Jul 2026 18:24:25 +0000 Message-ID: <20260730182425.1223530-4-dmaluka@chromium.org> X-Mailer: git-send-email 2.55.0.508.g3f0d502094-goog In-Reply-To: <20260730182425.1223530-1-dmaluka@chromium.org> References: <20260730182425.1223530-1-dmaluka@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The KVM_CAP_MAX_VCPU_ID capability value is exclusive, i.e. valid APIC ID values are only values below this value, not including it. Its documentation doesn't make that clear, and even suggests otherwise. Fix it and explicitly state that it is exclusive. Signed-off-by: Dmytro Maluka --- Documentation/virt/kvm/api.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index e3003a241d5b..dab9a28c0fb5 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -8593,21 +8593,24 @@ KVM_X86_QUIRK_NESTED_SVM_SHARED_PAT By default, KVM for nested SVM guests :Architectures: x86 :Target: VM -:Parameters: args[0] - maximum APIC ID value set for current VM +:Parameters: args[0] - maximum APIC ID value (plus one) set for current VM :Returns: 0 on success, -EINVAL if args[0] is beyond KVM_MAX_VCPU_IDS supported in KVM or if it has been set. -This capability allows userspace to specify maximum possible APIC ID +This capability allows userspace to specify a limit on APIC ID values assigned for current VM session prior to the creation of vCPUs, saving memory for data structures indexed by the APIC ID. Userspace is able to calculate the limit to APIC ID values from designated CPU topology. -The value can be changed only until KVM_ENABLE_CAP is set to a nonzero +The limit is not inclusive, i.e. the maximum possible APIC ID value is +args[0] - 1. + +The capability value can only be changed until it is set to a nonzero value or until a vCPU is created. Upon creation of the first vCPU, if the value was set to zero or KVM_ENABLE_CAP was not invoked, KVM -uses the return value of KVM_CHECK_EXTENSION(KVM_CAP_MAX_VCPU_ID) as -the maximum APIC ID. +uses the return value of KVM_CHECK_EXTENSION(KVM_CAP_MAX_VCPU_ID) - 1 +as the maximum APIC ID. 7.33 KVM_CAP_X86_NOTIFY_VMEXIT ------------------------------ -- 2.55.0.508.g3f0d502094-goog