Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp4836722ybi; Sat, 6 Jul 2019 14:41:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqxFbia+5FjlrN7Yr4VMI4eGFCg0YwR4WDSgdR5RryWMrcnkgsfK6/0hZN5+pjGotqdVO7Eu X-Received: by 2002:a63:89c7:: with SMTP id v190mr12447953pgd.299.1562449306571; Sat, 06 Jul 2019 14:41:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562449306; cv=none; d=google.com; s=arc-20160816; b=PE0igqyRi1BkrCcsVnNzio+a2wff/VVgAfmFbcOLHUjQCfjdGeZZa9tg2Gt5mpfPgs VIOTXbtQ1bCIgICDaPNSecBM6fUNMCmGrxE5osP17vHajNuV7Ee3E8ry5U9yE58v9VcI 524l3JjZk3HS6jxcW0BaUcu9JsHIv/ZLVbLLtnkLYSQ165ez0d8+/IXx4X+Mio45bMBA RyOF1LjidqtUrb80QguaaqAoI7XC+4pt7h458aCdzI6lDe9IsPKEnoOKDtf8OOod51oS 58P1RuOfKcEPCFygciazO1M2/Px9pZfeQwWV+1scOO+i5efpvU/Fun1lLuIcIZyzWwtE ZzJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cjzJT+Ug2ljIH+eSeawQbtkAq5PwdGtNp/nTgDIdoFk=; b=O6qEMrFegC+HAOS39d0QkoRjrdSGPh+ANRtXs5YHJqWSOTg/rX372yAWHpMkW3Pwld DuuT73W8ACOrBza8/XQOUcCzn9vWum9Xfbxr9ichJVY+4HNq5yhBjUicRZAfP9uRONIX 2sktZdICwnisMAZp/XKx26zVEtBXqCjlNwx9Y0IKaSO8Fuzb3sdy73/NBQTHlolRXb/p BfWqghZdwLV0OXfmFOSxeA5jxCh6ZZBAz8QMgvyE5eqjx3uManvlOr5w+PpWchZvOd3o /JMFTqubYUmfSSl4Q+jS6JgHyq/24Av1haDYEHaE/I+Es9BVSyi8Zk6Uu6z9otPKd2/w SIVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@eng.ucsd.edu header.s=google header.b=V9Srk96l; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ucsd.edu Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f4si9428346pgg.334.2019.07.06.14.41.31; Sat, 06 Jul 2019 14:41:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@eng.ucsd.edu header.s=google header.b=V9Srk96l; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ucsd.edu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727156AbfGFVi5 (ORCPT + 99 others); Sat, 6 Jul 2019 17:38:57 -0400 Received: from mail-lj1-f194.google.com ([209.85.208.194]:36080 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727127AbfGFViz (ORCPT ); Sat, 6 Jul 2019 17:38:55 -0400 Received: by mail-lj1-f194.google.com with SMTP id i21so12349737ljj.3 for ; Sat, 06 Jul 2019 14:38:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eng.ucsd.edu; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cjzJT+Ug2ljIH+eSeawQbtkAq5PwdGtNp/nTgDIdoFk=; b=V9Srk96lJmI+I1DCntkuM0AyIq6ydmZa6ScG2spce+9ttK+z+1D2dTgtpJneKqad4I 1nm+O2GigCPMFDUSH8SIoQGioEnFRp/zcGYh4LhMc1Gk+7+JHELYRDCNQDJr3T9lH60t MftEk/rwA+slBTfPUjj/GdK83sD+mvFMftQQA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cjzJT+Ug2ljIH+eSeawQbtkAq5PwdGtNp/nTgDIdoFk=; b=QybCQq+Z+OllREN5Kvh333ddNDNBAbXqrEeaQYfE5jUP4wFEDBLygFDpntZyKGDrfj qAVbiDf02wGh/bWJwGKGXaTzwCtqPDfkmeA64S2ybIj2dOULPdj5ZdmCIDTOxZtpgBk8 N8r8RoQyhDyuW2I593udmzW4tF6A3CqB0kAI/6wxIrXJYSYHY0BBO7HZMRCweWuiyX8G lALweff38eGBiKGxpQLtYxrZ/3CHfoxdaw0R7kgsEEKa49ePkrCNOOBqZK4QatAEad2P aMWRFU4DDf/j5Yl6xG5pweYv+SdwLf9XqePLY5VS2YvBIp9GiYknfDj+zcwZOY0BN9OO 1Ktg== X-Gm-Message-State: APjAAAXJ1w8SZopC5CaBL7VxI7N5M0UamrDewstbv+VIwwA/puxA3+1i HGev+kcS+hdqk29wpvG9qRKXLg== X-Received: by 2002:a2e:9ec9:: with SMTP id h9mr5659575ljk.90.1562449132999; Sat, 06 Jul 2019 14:38:52 -0700 (PDT) Received: from luke-XPS-13.home (77-255-206-190.adsl.inetia.pl. [77.255.206.190]) by smtp.gmail.com with ESMTPSA id j3sm1322449lfp.34.2019.07.06.14.38.50 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sat, 06 Jul 2019 14:38:52 -0700 (PDT) From: Luke Nowakowski-Krijger X-Google-Original-From: Luke Nowakowski-Krijger To: linux-kernel-mentees@lists.linuxfoundation.org Cc: Luke Nowakowski-Krijger , pbonzini@redhat.com, rkrcmar@redhat.com, corbet@lwn.net, kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] Documentation: kvm: Convert cpuid.txt to .rst Date: Sat, 6 Jul 2019 14:38:14 -0700 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Luke Nowakowski-Krijger Convert cpuid.txt to .rst format to be parsable by sphinx. Change format and spacing to make function definitions and return values much more clear. Also added a table that is parsable by sphinx and makes the information much more clean. Signed-off-by: Luke Nowakowski-Krijger --- Documentation/virtual/kvm/cpuid.rst | 99 +++++++++++++++++++++++++++++ Documentation/virtual/kvm/cpuid.txt | 83 ------------------------ 2 files changed, 99 insertions(+), 83 deletions(-) create mode 100644 Documentation/virtual/kvm/cpuid.rst delete mode 100644 Documentation/virtual/kvm/cpuid.txt diff --git a/Documentation/virtual/kvm/cpuid.rst b/Documentation/virtual/kvm/cpuid.rst new file mode 100644 index 000000000000..1a03336a500e --- /dev/null +++ b/Documentation/virtual/kvm/cpuid.rst @@ -0,0 +1,99 @@ +.. SPDX-License-Identifier: GPL-2.0 + +============== +KVM CPUID bits +============== + +:Author: Glauber Costa , Red Hat Inc, 2010 + +A guest running on a kvm host, can check some of its features using +cpuid. This is not always guaranteed to work, since userspace can +mask-out some, or even all KVM-related cpuid features before launching +a guest. + +KVM cpuid functions are: + +function: **KVM_CPUID_SIGNATURE (0x40000000)** + +returns:: + + eax = 0x40000001 + ebx = 0x4b4d564b + ecx = 0x564b4d56 + edx = 0x4d + +Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". +The value in eax corresponds to the maximum cpuid function present in this leaf, +and will be updated if more functions are added in the future. +Note also that old hosts set eax value to 0x0. This should +be interpreted as if the value was 0x40000001. +This function queries the presence of KVM cpuid leafs. + +function: **define KVM_CPUID_FEATURES (0x40000001)** + +returns:: + + ebx, ecx + eax = an OR'ed group of (1 << flag) + +where ``flag`` is defined as below: + ++--------------------------------+------------+---------------------------------+ +| flag | value | meaning | ++================================+============+=================================+ +| KVM_FEATURE_CLOCKSOURCE | 0 | kvmclock available at msrs | +| | | 0x11 and 0x12 | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_NOP_IO_DELAY | 1 | not necessary to perform delays | +| | | on PIO operations | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_MMU_OP | 2 | deprecated | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_CLOCKSOURCE2 | 3 | kvmclock available at msrs | +| | | 0x4b564d00 and 0x4b564d01 | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_ASYNC_PF | 4 | async pf can be enabled by | +| | | writing to msr 0x4b564d02 | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_STEAL_TIME | 5 | steal time can be enabled by | +| | | writing to msr 0x4b564d03 | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_PV_EOI | 6 | paravirtualized end of interrupt| +| | | handler can be enabled by | +| | | writing to msr 0x4b564d04. | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_PV_UNHAULT | 7 | guest checks this feature bit | +| | | before enabling paravirtualized | +| | | spinlock support | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_PV_TLB_FLUSH | 9 | guest checks this feature bit | +| | | before enabling paravirtualized | +| | | tlb flush | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_ASYNC_PF_VMEXIT | 10 | paravirtualized async PF VM EXIT| +| | | can be enabled by setting bit 2 | +| | | when writing to msr 0x4b564d02 | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_PV_SEND_IPI | 11 | guest checks this feature bit | +| | | before enabling paravirtualized | +| | | sebd IPIs | ++--------------------------------+------------+---------------------------------+ +| KVM_FEATURE_CLOCSOURCE_STABLE | 24 | host will warn if no guest-side | +| _BIT | | per-cpu warps are expeced in | +| | | kvmclock | ++--------------------------------+------------+---------------------------------+ + +:: + + edx = an OR'ed group of (1 << flag) + +Where ``flag`` here is defined as below: + ++--------------------------------+------------+---------------------------------+ +| flag | value | meaning | ++================================+============+=================================+ +| KVM_HINTS_REALTIME | 0 | guest checks this feature bit to| +| | | determine that vCPUs are never | +| | | preempted for an unlimited time | +| | | allowing optimizations | ++--------------------------------+------------+---------------------------------+ diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt deleted file mode 100644 index 97ca1940a0dc..000000000000 --- a/Documentation/virtual/kvm/cpuid.txt +++ /dev/null @@ -1,83 +0,0 @@ -KVM CPUID bits -Glauber Costa , Red Hat Inc, 2010 -===================================================== - -A guest running on a kvm host, can check some of its features using -cpuid. This is not always guaranteed to work, since userspace can -mask-out some, or even all KVM-related cpuid features before launching -a guest. - -KVM cpuid functions are: - -function: KVM_CPUID_SIGNATURE (0x40000000) -returns : eax = 0x40000001, - ebx = 0x4b4d564b, - ecx = 0x564b4d56, - edx = 0x4d. -Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". -The value in eax corresponds to the maximum cpuid function present in this leaf, -and will be updated if more functions are added in the future. -Note also that old hosts set eax value to 0x0. This should -be interpreted as if the value was 0x40000001. -This function queries the presence of KVM cpuid leafs. - - -function: define KVM_CPUID_FEATURES (0x40000001) -returns : ebx, ecx - eax = an OR'ed group of (1 << flag), where each flags is: - - -flag || value || meaning -============================================================================= -KVM_FEATURE_CLOCKSOURCE || 0 || kvmclock available at msrs - || || 0x11 and 0x12. ------------------------------------------------------------------------------- -KVM_FEATURE_NOP_IO_DELAY || 1 || not necessary to perform delays - || || on PIO operations. ------------------------------------------------------------------------------- -KVM_FEATURE_MMU_OP || 2 || deprecated. ------------------------------------------------------------------------------- -KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs - || || 0x4b564d00 and 0x4b564d01 ------------------------------------------------------------------------------- -KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by - || || writing to msr 0x4b564d02 ------------------------------------------------------------------------------- -KVM_FEATURE_STEAL_TIME || 5 || steal time can be enabled by - || || writing to msr 0x4b564d03. ------------------------------------------------------------------------------- -KVM_FEATURE_PV_EOI || 6 || paravirtualized end of interrupt - || || handler can be enabled by writing - || || to msr 0x4b564d04. ------------------------------------------------------------------------------- -KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit - || || before enabling paravirtualized - || || spinlock support. ------------------------------------------------------------------------------- -KVM_FEATURE_PV_TLB_FLUSH || 9 || guest checks this feature bit - || || before enabling paravirtualized - || || tlb flush. ------------------------------------------------------------------------------- -KVM_FEATURE_ASYNC_PF_VMEXIT || 10 || paravirtualized async PF VM exit - || || can be enabled by setting bit 2 - || || when writing to msr 0x4b564d02 ------------------------------------------------------------------------------- -KVM_FEATURE_PV_SEND_IPI || 11 || guest checks this feature bit - || || before using paravirtualized - || || send IPIs. ------------------------------------------------------------------------------- -KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side - || || per-cpu warps are expected in - || || kvmclock. ------------------------------------------------------------------------------- - - edx = an OR'ed group of (1 << flag), where each flags is: - - -flag || value || meaning -================================================================================== -KVM_HINTS_REALTIME || 0 || guest checks this feature bit to - || || determine that vCPUs are never - || || preempted for an unlimited time, - || || allowing optimizations ----------------------------------------------------------------------------------- -- 2.20.1