From nobody Tue Nov 11 01:38:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1560786021; cv=none; d=zoho.com; s=zohoarc; b=djSvqrcfwMmI01WTM7aKRDMq2CwMOBg7rhNanVkOeV/60LJq1LSC+h2LymMIJ+WGPAK9FR3euxK3Lps0ju/BEjDM4EaHydxgnvBZ9D2hd/eHGg9u7EPKxh2cf5ayar5gxa8Rvbz4igioWM/5AkkPVvLoNz7we9fq/QtyUKAl+Uk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560786021; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=syAgF6UVWodyfm7jwq7zefShMNqE/U+4j9xJ9ZtoV0M=; b=axG7tSLZnFvDztLMOEsWUKuol5OAc7AbBxDZZAbfiaabsMUyGsm+f2vQbERJGIagKfgDqjzelBmlM6bzokU/Uytk3uVcDyOxNA+vpz7K9vxWqIAWVKj5+v1fFZwu62W/8KytXVTJ2JnbXoss8vCL7U3eJVA52AwxvSNIGWT/RPo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1560786021838792.1032547223065; Mon, 17 Jun 2019 08:40:21 -0700 (PDT) Received: from localhost ([::1]:48596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hctjz-0002C1-RJ for importer@patchew.org; Mon, 17 Jun 2019 11:40:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53431) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hct4x-0000Tp-HV for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hct4u-0007NG-Dv for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:51 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:51756) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hct4t-0007IT-Ts for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:48 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 207so9639336wma.1 for ; Mon, 17 Jun 2019 07:57:44 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id s10sm14690750wmf.8.2019.06.17.07.57.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jun 2019 07:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=syAgF6UVWodyfm7jwq7zefShMNqE/U+4j9xJ9ZtoV0M=; b=lWWGc0FWLSOXIkIrELNOVXbrbHdCmUthde4+dW2aAXMk8v2rgS4v9KuQsEmUSsb0BB 4S2yKwbVRWJI1eu0jwIqJOwcSP6a8CvGDgmd9eHlvVA7Ur9//pNaUVxbGBO55WtLnNsi e17JEqHSwyW6OFOGXCKNh2qrm/wwfrcSZAaSTWhQVncMKp+nbXn7Y4cS+v7y7qb7HePN 7bZ2rVwudUvZ3NOhv8YKfLUAx3QlrYRrcnq32WMoHLF4Mco5TcLMJj6yWYO9qvTd2KKs Evv1tnTAD4CFIHrvBnrcHLAKnEOEwL7yFd1QjFMTSAA32/4eowy/QkXElx1/abYH3LpI qpNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=syAgF6UVWodyfm7jwq7zefShMNqE/U+4j9xJ9ZtoV0M=; b=kUMn5O6ZfWfzfj83x2hsR5LDu2BEPD1J2pOpaTGGNSz1UKNAIV/SN7bpvUgryFgUdt klY4L6UlPlQq+0i9wTfQCdBPVOnv8PUVK47g8E30FJ3W/muSXwrl8CG4+JqWNmZ1bSw7 VaZUyyMvlx8GIk4ITmJwwZvdXPrkal3nnT3xUpqhQWMURZ+4zBQJemCQ9Cgkj44Lx/8Z Tdoc3lJkEuN7VsaG7RGvmK9sonwBA3YEO4KySGvP3+lm+VAAS0aRmq4fr27bgBIWh01i lH4AZB8z9PBwPnWtn+x6/DFB0dUJ7aLUYcJnKfokjiGev+vSTGu5yZMW3pquBn7/XtjD wtNA== X-Gm-Message-State: APjAAAUNFG8nkvl4ZnRQ8z81GGiJdQ71yMrnqGTy7x7YSLWNhhWHHJX9 qT++h5ILYSnPx02+IDLEWwdkt+ixMj7huw== X-Google-Smtp-Source: APXvYqwacjwJ9YwulD6oOYthfrMaiyri0bqp1jqyvXVtdQ3OTrsFe0hRD0amZsuY35VLHrPnytYxjg== X-Received: by 2002:a1c:56d7:: with SMTP id k206mr18766768wmb.56.1560783463454; Mon, 17 Jun 2019 07:57:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Date: Mon, 17 Jun 2019 15:57:37 +0100 Message-Id: <20190617145740.9881-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617145740.9881-1-peter.maydell@linaro.org> References: <20190617145740.9881-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32b Subject: [Qemu-devel] [PULL 1/4] Convert "translator internals" docs to RST, move to devel manual X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Our user-facing manual currently has a section "translator internals" which has some high-level information about the design of the TCG translator. This should really be in our new devel/ manual. Convert it to RST format and move it there. Signed-off-by: Peter Maydell Acked-by: Richard Henderson Message-id: 20190607152827.18003-2-peter.maydell@linaro.org Reviewed-by: Stefan Hajnoczi --- docs/devel/index.rst | 1 + docs/devel/tcg.rst | 111 +++++++++++++++++++++++++++++++++++++++++++ qemu-tech.texi | 103 --------------------------------------- 3 files changed, 112 insertions(+), 103 deletions(-) create mode 100644 docs/devel/tcg.rst diff --git a/docs/devel/index.rst b/docs/devel/index.rst index 2a4ddf40ad3..1ec61fcfed9 100644 --- a/docs/devel/index.rst +++ b/docs/devel/index.rst @@ -21,3 +21,4 @@ Contents: testing decodetree secure-coding-practices + tcg diff --git a/docs/devel/tcg.rst b/docs/devel/tcg.rst new file mode 100644 index 00000000000..4956a30a4e6 --- /dev/null +++ b/docs/devel/tcg.rst @@ -0,0 +1,111 @@ +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Translator Internals +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +QEMU is a dynamic translator. When it first encounters a piece of code, +it converts it to the host instruction set. Usually dynamic translators +are very complicated and highly CPU dependent. QEMU uses some tricks +which make it relatively easily portable and simple while achieving good +performances. + +QEMU's dynamic translation backend is called TCG, for "Tiny Code +Generator". For more information, please take a look at ``tcg/README``. + +Some notable features of QEMU's dynamic translator are: + +CPU state optimisations +----------------------- + +The target CPUs have many internal states which change the way it +evaluates instructions. In order to achieve a good speed, the +translation phase considers that some state information of the virtual +CPU cannot change in it. The state is recorded in the Translation +Block (TB). If the state changes (e.g. privilege level), a new TB will +be generated and the previous TB won't be used anymore until the state +matches the state recorded in the previous TB. The same idea can be applied +to other aspects of the CPU state. For example, on x86, if the SS, +DS and ES segments have a zero base, then the translator does not even +generate an addition for the segment base. + +Direct block chaining +--------------------- + +After each translated basic block is executed, QEMU uses the simulated +Program Counter (PC) and other cpu state information (such as the CS +segment base value) to find the next basic block. + +In order to accelerate the most common cases where the new simulated PC +is known, QEMU can patch a basic block so that it jumps directly to the +next one. + +The most portable code uses an indirect jump. An indirect jump makes +it easier to make the jump target modification atomic. On some host +architectures (such as x86 or PowerPC), the ``JUMP`` opcode is +directly patched so that the block chaining has no overhead. + +Self-modifying code and translated code invalidation +---------------------------------------------------- + +Self-modifying code is a special challenge in x86 emulation because no +instruction cache invalidation is signaled by the application when code +is modified. + +User-mode emulation marks a host page as write-protected (if it is +not already read-only) every time translated code is generated for a +basic block. Then, if a write access is done to the page, Linux raises +a SEGV signal. QEMU then invalidates all the translated code in the page +and enables write accesses to the page. For system emulation, write +protection is achieved through the software MMU. + +Correct translated code invalidation is done efficiently by maintaining +a linked list of every translated block contained in a given page. Other +linked lists are also maintained to undo direct block chaining. + +On RISC targets, correctly written software uses memory barriers and +cache flushes, so some of the protection above would not be +necessary. However, QEMU still requires that the generated code always +matches the target instructions in memory in order to handle +exceptions correctly. + +Exception support +----------------- + +longjmp() is used when an exception such as division by zero is +encountered. + +The host SIGSEGV and SIGBUS signal handlers are used to get invalid +memory accesses. QEMU keeps a map from host program counter to +target program counter, and looks up where the exception happened +based on the host program counter at the exception point. + +On some targets, some bits of the virtual CPU's state are not flushed to t= he +memory until the end of the translation block. This is done for internal +emulation state that is rarely accessed directly by the program and/or cha= nges +very often throughout the execution of a translation block---this includes +condition codes on x86, delay slots on SPARC, conditional execution on +ARM, and so on. This state is stored for each target instruction, and +looked up on exceptions. + +MMU emulation +------------- + +For system emulation QEMU uses a software MMU. In that mode, the MMU +virtual to physical address translation is done at every memory +access. + +QEMU uses an address translation cache (TLB) to speed up the translation. +In order to avoid flushing the translated code each time the MMU +mappings change, all caches in QEMU are physically indexed. This +means that each basic block is indexed with its physical address. + +In order to avoid invalidating the basic block chain when MMU mappings +change, chaining is only performed when the destination of the jump +shares a page with the basic block that is performing the jump. + +The MMU can also distinguish RAM and ROM memory areas from MMIO memory +areas. Access is faster for RAM and ROM because the translation cache also +hosts the offset between guest address and host memory. Accessing MMIO +memory areas instead calls out to C code for device emulation. +Finally, the MMU helps tracking dirty pages and pages pointed to by +translation blocks. + diff --git a/qemu-tech.texi b/qemu-tech.texi index 7c3d1f05e13..eb430daacf2 100644 --- a/qemu-tech.texi +++ b/qemu-tech.texi @@ -161,109 +161,6 @@ may be created from overlay with minimal amount of ha= nd-written code. =20 @end itemize =20 -@node Translator Internals -@section Translator Internals - -QEMU is a dynamic translator. When it first encounters a piece of code, -it converts it to the host instruction set. Usually dynamic translators -are very complicated and highly CPU dependent. QEMU uses some tricks -which make it relatively easily portable and simple while achieving good -performances. - -QEMU's dynamic translation backend is called TCG, for "Tiny Code -Generator". For more information, please take a look at @code{tcg/README}. - -Some notable features of QEMU's dynamic translator are: - -@table @strong - -@item CPU state optimisations: -The target CPUs have many internal states which change the way it -evaluates instructions. In order to achieve a good speed, the -translation phase considers that some state information of the virtual -CPU cannot change in it. The state is recorded in the Translation -Block (TB). If the state changes (e.g. privilege level), a new TB will -be generated and the previous TB won't be used anymore until the state -matches the state recorded in the previous TB. The same idea can be applied -to other aspects of the CPU state. For example, on x86, if the SS, -DS and ES segments have a zero base, then the translator does not even -generate an addition for the segment base. - -@item Direct block chaining: -After each translated basic block is executed, QEMU uses the simulated -Program Counter (PC) and other cpu state information (such as the CS -segment base value) to find the next basic block. - -In order to accelerate the most common cases where the new simulated PC -is known, QEMU can patch a basic block so that it jumps directly to the -next one. - -The most portable code uses an indirect jump. An indirect jump makes -it easier to make the jump target modification atomic. On some host -architectures (such as x86 or PowerPC), the @code{JUMP} opcode is -directly patched so that the block chaining has no overhead. - -@item Self-modifying code and translated code invalidation: -Self-modifying code is a special challenge in x86 emulation because no -instruction cache invalidation is signaled by the application when code -is modified. - -User-mode emulation marks a host page as write-protected (if it is -not already read-only) every time translated code is generated for a -basic block. Then, if a write access is done to the page, Linux raises -a SEGV signal. QEMU then invalidates all the translated code in the page -and enables write accesses to the page. For system emulation, write -protection is achieved through the software MMU. - -Correct translated code invalidation is done efficiently by maintaining -a linked list of every translated block contained in a given page. Other -linked lists are also maintained to undo direct block chaining. - -On RISC targets, correctly written software uses memory barriers and -cache flushes, so some of the protection above would not be -necessary. However, QEMU still requires that the generated code always -matches the target instructions in memory in order to handle -exceptions correctly. - -@item Exception support: -longjmp() is used when an exception such as division by zero is -encountered. - -The host SIGSEGV and SIGBUS signal handlers are used to get invalid -memory accesses. QEMU keeps a map from host program counter to -target program counter, and looks up where the exception happened -based on the host program counter at the exception point. - -On some targets, some bits of the virtual CPU's state are not flushed to t= he -memory until the end of the translation block. This is done for internal -emulation state that is rarely accessed directly by the program and/or cha= nges -very often throughout the execution of a translation block---this includes -condition codes on x86, delay slots on SPARC, conditional execution on -ARM, and so on. This state is stored for each target instruction, and -looked up on exceptions. - -@item MMU emulation: -For system emulation QEMU uses a software MMU. In that mode, the MMU -virtual to physical address translation is done at every memory -access. - -QEMU uses an address translation cache (TLB) to speed up the translation. -In order to avoid flushing the translated code each time the MMU -mappings change, all caches in QEMU are physically indexed. This -means that each basic block is indexed with its physical address. - -In order to avoid invalidating the basic block chain when MMU mappings -change, chaining is only performed when the destination of the jump -shares a page with the basic block that is performing the jump. - -The MMU can also distinguish RAM and ROM memory areas from MMIO memory -areas. Access is faster for RAM and ROM because the translation cache also -hosts the offset between guest address and host memory. Accessing MMIO -memory areas instead calls out to C code for device emulation. -Finally, the MMU helps tracking dirty pages and pages pointed to by -translation blocks. -@end table - @node QEMU compared to other emulators @section QEMU compared to other emulators =20 --=20 2.20.1 From nobody Tue Nov 11 01:38:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1560785232; cv=none; d=zoho.com; s=zohoarc; b=dopdVMBrM3zeM6HZBe5e2+mSyqYRSo/wX4AVFUksY7N7aIEfdBqgajhTVf0p/oQEEwtX62gnN/uxijzFEiPZ+5SWQIQzeLcHkIg2eng2buDrxCkVbJD6xfgSt6zr6Pm6a9u6hS2+PTlFdh4/BD2pUt4sBaCyymqQaGjfXEwGoxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560785232; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=33Yo7NTImVN+1qL1xc2D0HzY3XTyzXwVzfG9kmHBf/I=; b=aPL0YYevgpYblB6MjdTIXNZlSKWD+HCu/Ha1LG0uL+kujRrzukturZRGx/eQXrxB6aq4RymwGQm5OHRBBNjQWS9eduMtldT3VOMPwofQy1J0TZiv6zzf3OZuUtGaIK+If/nj9OWJx3x7UyziJtZ6snUED0Yia2lbFtlv485WjEg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1560785232380636.9003258365465; Mon, 17 Jun 2019 08:27:12 -0700 (PDT) Received: from localhost ([::1]:48460 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hctXI-0004Qi-6g for importer@patchew.org; Mon, 17 Jun 2019 11:27:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53413) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hct4w-0000SX-O5 for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hct4u-0007Mm-7z for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:50 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:36664) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hct4t-0007JK-PP for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:47 -0400 Received: by mail-wr1-x443.google.com with SMTP id n4so2238093wrs.3 for ; Mon, 17 Jun 2019 07:57:45 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id s10sm14690750wmf.8.2019.06.17.07.57.43 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jun 2019 07:57:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=33Yo7NTImVN+1qL1xc2D0HzY3XTyzXwVzfG9kmHBf/I=; b=N6veRl11p2+McGwXXraEg+2wDRtY05iq5UVtPM5DxnSmCiVWiecYguCHU7ztQoD/15 0GGxZrI429p0r5GXzMLAFOcyrEsh/r89wWLzW68UDQM8LG5avoIvN3uW+dM1Ug9yiYJK Jb0lmvdU6kUTq5WKpe5pqLJfvjheIpU0r5Yk6RWLSp0b5s1nC1dYHWbtsuUluhGDDh+j XYMLoa71oguvrDGV/bMF9m7gQilzZTd0rHwLNL5+dit4srsQjymkVc8SkaHMDvYpOcFG Lf0vtrTCs3stZxfHaUvStc81ZKOUQAPnae9lyuLYe9GAm4Ww6NfdgDydfj2WjDJ4yhMJ G9og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=33Yo7NTImVN+1qL1xc2D0HzY3XTyzXwVzfG9kmHBf/I=; b=efJlk7SlRMFJE3alHR0wdr368haVrV3NM9GlKhMi7u9Sbddw2/S2aCXwaNfL2bQQZr 020KnXoh1fZWNIbaOn+HTH6Ml5Q9MQSiNSnIYigWLFrS2/uy41BN1xTb0KGyawb3SmOl K6rp9HoC4TmwBq8p+yQwFBSx2jio0VRyDxgTlhfCHUkjHr7ZUKHlgDij5l7fAqZtJMKr 8Ic39zITpHve8P+Wg8kSBNJz7EuSrCvnwd/0XpdcSMgfZPTJ5oOIIes886etSecI02DG 7FxvSuMy3RSEp08SViVrFTDy775bXjwuxStyKxTNkOgpOFFaybeD+lgaKO7Bj37TXh4C 5Rog== X-Gm-Message-State: APjAAAWws+94Ozn/gR6qgy0i+Fpd2jNCbfO6JR+ola47BTNv3Tf8M0Ak P/NXerKtVRJeaprA3coR2wrX6P8IEpkorA== X-Google-Smtp-Source: APXvYqwAN8+RTBxBWrpJcsOwfrGcdHFyUMx1hqcs69EXRrJGTtfCwg9tB1Dqpt/g4Yzev0E26UQeEQ== X-Received: by 2002:a5d:4708:: with SMTP id y8mr12351947wrq.85.1560783464492; Mon, 17 Jun 2019 07:57:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Date: Mon, 17 Jun 2019 15:57:38 +0100 Message-Id: <20190617145740.9881-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617145740.9881-1-peter.maydell@linaro.org> References: <20190617145740.9881-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PULL 2/4] qemu-tech.texi: Remove "QEMU compared to other emulators" section X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The "QEMU compared to other emulators" section of our documentation hasn't been updated since 2015 (and parts of the text are even older). We're clearly not very well placed to track the evolution of a dozen other emulation projects, and an inaccurate or out of date comparison doesn't serve anybody, so we're best off just removing the whole documentation section. If anybody cares strongly about maintaining a comparison page, it's probably better to do that on the project's wiki where we can update it more dynamically. Signed-off-by: Peter Maydell Reviewed-by: Daniel P. Berrang=C3=A9 Acked-by: Richard Henderson Message-id: 20190607152827.18003-3-peter.maydell@linaro.org Reviewed-by: Stefan Hajnoczi --- qemu-tech.texi | 107 ------------------------------------------------- 1 file changed, 107 deletions(-) diff --git a/qemu-tech.texi b/qemu-tech.texi index eb430daacf2..3451cfaa5be 100644 --- a/qemu-tech.texi +++ b/qemu-tech.texi @@ -161,57 +161,6 @@ may be created from overlay with minimal amount of han= d-written code. =20 @end itemize =20 -@node QEMU compared to other emulators -@section QEMU compared to other emulators - -Like bochs [1], QEMU emulates an x86 CPU. But QEMU is much faster than -bochs as it uses dynamic compilation. Bochs is closely tied to x86 PC -emulation while QEMU can emulate several processors. - -Like Valgrind [2], QEMU does user space emulation and dynamic -translation. Valgrind is mainly a memory debugger while QEMU has no -support for it (QEMU could be used to detect out of bound memory -accesses as Valgrind, but it has no support to track uninitialised data -as Valgrind does). The Valgrind dynamic translator generates better code -than QEMU (in particular it does register allocation) but it is closely -tied to an x86 host and target and has no support for precise exceptions -and system emulation. - -EM86 [3] is the closest project to user space QEMU (and QEMU still uses -some of its code, in particular the ELF file loader). EM86 was limited -to an alpha host and used a proprietary and slow interpreter (the -interpreter part of the FX!32 Digital Win32 code translator [4]). - -TWIN from Willows Software was a Windows API emulator like Wine. It is less -accurate than Wine but includes a protected mode x86 interpreter to launch -x86 Windows executables. Such an approach has greater potential because mo= st -of the Windows API is executed natively but it is far more difficult to -develop because all the data structures and function parameters exchanged -between the API and the x86 code must be converted. - -User mode Linux [5] was the only solution before QEMU to launch a -Linux kernel as a process while not needing any host kernel -patches. However, user mode Linux requires heavy kernel patches while -QEMU accepts unpatched Linux kernels. The price to pay is that QEMU is -slower. - -The Plex86 [6] PC virtualizer is done in the same spirit as the now -obsolete qemu-fast system emulator. It requires a patched Linux kernel -to work (you cannot launch the same kernel on your PC), but the -patches are really small. As it is a PC virtualizer (no emulation is -done except for some privileged instructions), it has the potential of -being faster than QEMU. The downside is that a complicated (and -potentially unsafe) host kernel patch is needed. - -The commercial PC Virtualizers (VMWare [7], VirtualPC [8]) are faster -than QEMU (without virtualization), but they all need specific, proprietary -and potentially unsafe host drivers. Moreover, they are unable to -provide cycle exact simulation as an emulator can. - -VirtualBox [9], Xen [10] and KVM [11] are based on QEMU. QEMU-SystemC -[12] uses QEMU to simulate a system where some hardware devices are -developed in SystemC. - @node Managed start up options @section Managed start up options =20 @@ -247,59 +196,3 @@ depend on an initialized machine, including but not li= mited to: @item query-status @item x-exit-preconfig @end table - -@node Bibliography -@section Bibliography - -@table @asis - -@item [1] -@url{http://bochs.sourceforge.net/}, the Bochs IA-32 Emulator Project, -by Kevin Lawton et al. - -@item [2] -@url{http://www.valgrind.org/}, Valgrind, an open-source memory debugger -for GNU/Linux. - -@item [3] -@url{http://ftp.dreamtime.org/pub/linux/Linux-Alpha/em86/v0.2/docs/em86.ht= ml}, -the EM86 x86 emulator on Alpha-Linux. - -@item [4] -@url{http://www.usenix.org/publications/library/proceedings/usenix-nt97/@/= full_papers/chernoff/chernoff.pdf}, -DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton -Chernoff and Ray Hookway. - -@item [5] -@url{http://user-mode-linux.sourceforge.net/}, -The User-mode Linux Kernel. - -@item [6] -@url{http://www.plex86.org/}, -The new Plex86 project. - -@item [7] -@url{http://www.vmware.com/}, -The VMWare PC virtualizer. - -@item [8] -@url{https://www.microsoft.com/download/details.aspx?id=3D3702}, -The VirtualPC PC virtualizer. - -@item [9] -@url{http://virtualbox.org/}, -The VirtualBox PC virtualizer. - -@item [10] -@url{http://www.xen.org/}, -The Xen hypervisor. - -@item [11] -@url{http://www.linux-kvm.org/}, -Kernel Based Virtual Machine (KVM). - -@item [12] -@url{http://www.greensocs.com/projects/QEMUSystemC}, -QEMU-SystemC, a hardware co-simulator. - -@end table --=20 2.20.1 From nobody Tue Nov 11 01:38:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1560787878; cv=none; d=zoho.com; s=zohoarc; b=IMXLhLsC7ATxeGAfAt2M7dX8DuaV8gaTH5uKRaCW7CU6jRy4s0LT1MPQNpKfY8jQRu0IjsGX2N8Kkh7KU6BpOCCvlIVMSPmBONlwBPwhA9Bs3PDHlZO3L19gdy9ghn6APVp68Fb0ObXE/eTR5T3a4u1ptTRFRHKYf7FuOs7gKTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560787878; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=R3EMjxTAgk7x/2CJ0lHu+WPGswGOg17/TQG/Vi7Uo/I=; b=UKJJ6wb6D1Qn2J7RhxEUh1l28MGmkd0OOUrxBH0ys50npUGXUX4DLeL5IHmq37gnDY4R9dyrszWe4G1Fj33uWr1KFbE5dOkJdVjOT7ON7pFU9Zn2AEf3V1qwUHSV29XJp6jmOT22GxGEushydKXfP/GLNk8utl5TrfpEZ7EqeCA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1560787878805945.2338023589094; Mon, 17 Jun 2019 09:11:18 -0700 (PDT) Received: from localhost ([::1]:48956 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hcuDz-0003Vm-SA for importer@patchew.org; Mon, 17 Jun 2019 12:11:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53400) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hct4w-0000R3-25 for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hct4u-0007N9-D6 for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:49 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:52695) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hct4t-0007KK-Vf for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:48 -0400 Received: by mail-wm1-x32a.google.com with SMTP id s3so9637420wms.2 for ; Mon, 17 Jun 2019 07:57:46 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id s10sm14690750wmf.8.2019.06.17.07.57.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jun 2019 07:57:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=R3EMjxTAgk7x/2CJ0lHu+WPGswGOg17/TQG/Vi7Uo/I=; b=mZ8sZVrIQ6jLrxw8vx1eb85f+JVXRVn1TMADsp5FxMID9wBtMwTpJUIqR1c2y1Vh/J opUr8+AaKYy6XspMA9LvWIVz5fonAaKmkMmyirYnuyCWauKDE3W/Nd0byw9DrTBN1l4/ grdIGYtdH3o4CDTXGlP54J67w/8FJlpYjRWALfNhhpU3F4uauRSsBql9T9SzZrgG0iMs XWY74F09mSZngPjdwBbDEwFz8QpTIchmF/l5a8EeiPyYnzdlo/kTsOpdHTbAS71iAnnr 0ZD1yMx7wMmDRTvSfNmUxPiLYjPYCArtQvo5xcCFcFznGHM179yayJeq31V1U3T+CS+b Ra9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=R3EMjxTAgk7x/2CJ0lHu+WPGswGOg17/TQG/Vi7Uo/I=; b=Qsl21S7IFByLllTgfLOfMxk8ycpVw8c+VCOyuV5Qw6yVUrXuCLdIbJx3MByS6ZRPQO 9gdPVImZsLncPd7xNwxoT/IE4uF1J32NChQTQnM4Fg4Y2rzAT7sppBSA98YnnMdcKWhQ /Pqq7CNtcNsARNrPW+mqSpz5hRFLE3FB8ab2ALN/w0K+c4mIFD67F+69XhXaxVpaqjBP /Q0m5dTzwms5hoeZ5IyzP0uSl7vGMBLrr4uYVAxYgl9Q4ERdjzZj4KshnKV50NRAc6A4 s13kpjHaGvggzXrvfJTt6+YzkCqhpzXqPHBlyRL/0btwZilDKgfnMzEe2gWggSMSTBYa Ptww== X-Gm-Message-State: APjAAAUeLK3xdz/vBQjaBNDrXG5HD31KcpYs+zm/d79PS5JW226++HPP 5whbnOruoNtlu46jYJP6AnwdFfGCuOwhlw== X-Google-Smtp-Source: APXvYqwd4hMVxE8H1UvtMWkg1I7wTEWF19EeYE5dZ+eFoPpMt3j6Tj4t+wr9x3U6MqWCEC9uSI+XOQ== X-Received: by 2002:a1c:740f:: with SMTP id p15mr14191354wmc.103.1560783465542; Mon, 17 Jun 2019 07:57:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Date: Mon, 17 Jun 2019 15:57:39 +0100 Message-Id: <20190617145740.9881-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617145740.9881-1-peter.maydell@linaro.org> References: <20190617145740.9881-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32a Subject: [Qemu-devel] [PULL 3/4] docs/specs/index.rst: Fix minor syntax issues X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The docs/specs/index.rst has a couple of minor issues which we didn't notice because we weren't building the manual: * the ToC entry for the new PPC XIVE docs points to a nonexistent file * the initial comment needs to be marked by '..', not '.', or it will appear in the output * the title doesn't match the capitialization used by the existing interop or devel manuals, and uses 'full-system emulation' rather than the 'system emulation' that the interop manual title uses Fix these minor issues before we start trying to build the manual. Signed-off-by: Peter Maydell Reviewed-by: C=C3=A9dric Le Goater Acked-by: Aleksandar Markovic Message-id: 20190610152444.20859-2-peter.maydell@linaro.org --- docs/specs/index.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/specs/index.rst b/docs/specs/index.rst index 2e927519c2e..40adb97c5eb 100644 --- a/docs/specs/index.rst +++ b/docs/specs/index.rst @@ -1,8 +1,8 @@ -. This is the top level page for the 'specs' manual +.. This is the top level page for the 'specs' manual =20 =20 -QEMU full-system emulation guest hardware specifications -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D +QEMU System Emulation Guest Hardware Specifications +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D =20 =20 Contents: @@ -10,4 +10,5 @@ Contents: .. toctree:: :maxdepth: 2 =20 - xive + ppc-xive + ppc-spapr-xive --=20 2.20.1 From nobody Tue Nov 11 01:38:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1560788415; cv=none; d=zoho.com; s=zohoarc; b=coWU5lnPsDHt7az/ehv51yv5QW3odN0Y+qffCnK3k5w5WI4VG3P6reX/DLaKZ9GS34HajvSpUmnhvEp3mbusduYngRER/rSQFQu2lfBNLh1fEga5WBS5MnUfKlkyVfy9oLizbp3KzaTDyKCX/FMWt8tGr6TNXwNCWCdhnwMoYE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560788415; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=aoRd/IN7MHr76s2KiDTvTo7JU64fLK5LtzUk1fqaZJY=; b=e2cqxubbnz2+4Z7THH8PDsQ3sQfnAUFfZvcrXCzIm9RJeltzTOOF3F/wP3WbOW1QndoBsCwJYvITLioeCQyuShaRTkJv3QyUyfMlD/oZXTDVwqEHwGgUC5MdzR12ge9WHg60LPaCiym+kMcqGNsl0ao4P//V5YPc6MYuJI/EB6c= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1560788415276317.90975322161796; Mon, 17 Jun 2019 09:20:15 -0700 (PDT) Received: from localhost ([::1]:49038 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hcuMd-000345-9v for importer@patchew.org; Mon, 17 Jun 2019 12:20:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53405) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hct4w-0000RW-9k for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hct4u-0007Ne-Kk for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:50 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:38841) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hct4u-0007Ld-B7 for qemu-devel@nongnu.org; Mon, 17 Jun 2019 10:57:48 -0400 Received: by mail-wm1-x329.google.com with SMTP id s15so9469161wmj.3 for ; Mon, 17 Jun 2019 07:57:48 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id s10sm14690750wmf.8.2019.06.17.07.57.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jun 2019 07:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=aoRd/IN7MHr76s2KiDTvTo7JU64fLK5LtzUk1fqaZJY=; b=bYvfy6vweBD6NJMzpBC6zQIoZJT8BwDm7As6LeqCtnO6y7Pe4UDJLL+ZPy96rawztW 54y67AeYhoR0bJuENnVXk8IkUSARx8erUnaRD9gHV4uh8HvUP8+g44xLx/t5+0Id7jNb ux4UzwkuFSJmiFaHelCWPiPNFsZI8ATJIgCOdrb/X3Yss+YkGVQvICKB9y+ev4ZP5YRr 49aN7ghrvDMPZBDrdVMLgSsFFh1LVl/QWU3/uTiGRMu6PW/p5Ja1NwOiRnl5iKsSwChG efKOiuaddMM3xv1SDdgN0rpXjg3dUmiweNFUdoMeKPhRVWd90VMgE6OfWWS243iRax0o 3YXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aoRd/IN7MHr76s2KiDTvTo7JU64fLK5LtzUk1fqaZJY=; b=bCryXq39yf9ikFdvueEsUNZD/ghCrPq2SRkxLqLUdBvhuES6e6BfI5aIxuFW2mx7/b Z+kriJ2nPw9gss1+ox6WXUP6KltBimJNmeJLGfS78Td7rFVRt8f5cJNyqsiYNRuKWboy mv8MtxC6MNJ4YrmvczE2Y0vnFrQ2MnnVl7CyoAXqxmrHOFCBwrimDl3oDnZmfnslDKgx egCGDSH7D0ur4O0wnQmu/Yo7zFh1lQY0AvKtdd9dBP0v9gAXiXyXfSaudkMfuIgb3BCs Wo+VJRUi6IeKnUSHpy4LejAqAXbt8fRn5xD7uch0+KBdkVgSF5x6wFO9km0LUSKIkZBD 7AKA== X-Gm-Message-State: APjAAAWl9R6LfCfz80LQBT3TPQUGrvXGxsyYxqdGJ/lMEUizKxBaOxs9 G4NWAiPT5Ep5XBobf38soJGMDp4o+Cl0iw== X-Google-Smtp-Source: APXvYqxaUc48hhZfTuJQJG4NoShPRMDJn7ZHuqs3HCLmyrV8tMIZmwFOobG4ELy1vWhnx9/JXKyLvQ== X-Received: by 2002:a1c:1947:: with SMTP id 68mr18621532wmz.165.1560783466917; Mon, 17 Jun 2019 07:57:46 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Date: Mon, 17 Jun 2019 15:57:40 +0100 Message-Id: <20190617145740.9881-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617145740.9881-1-peter.maydell@linaro.org> References: <20190617145740.9881-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::329 Subject: [Qemu-devel] [PULL 4/4] docs: Build and install specs manual X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Now we have some rST format docs in the docs/specs/ manual, we should actually build and install it. Signed-off-by: Peter Maydell Acked-by: Aleksandar Markovic Message-id: 20190610152444.20859-3-peter.maydell@linaro.org --- Makefile | 7 ++++++- docs/specs/conf.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 docs/specs/conf.py diff --git a/Makefile b/Makefile index 8e2fc6624c3..cfb18f15254 100644 --- a/Makefile +++ b/Makefile @@ -731,6 +731,7 @@ distclean: clean rm -rf .doctrees $(call clean-manual,devel) $(call clean-manual,interop) + $(call clean-manual,specs) for d in $(TARGET_DIRS); do \ rm -rf $$d || exit 1 ; \ done @@ -781,6 +782,7 @@ endef .PHONY: install-sphinxdocs install-sphinxdocs: sphinxdocs $(call install-manual,interop) + $(call install-manual,specs) =20 install-doc: $(DOCS) install-sphinxdocs $(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)" @@ -962,7 +964,7 @@ docs/version.texi: $(SRC_PATH)/VERSION config-host.mak # and handles "don't rebuild things unless necessary" itself. # The '.doctrees' files are cached information to speed this up. .PHONY: sphinxdocs -sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html $(MANUAL_BUILDDIR)/interop= /index.html +sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html $(MANUAL_BUILDDIR)/interop= /index.html $(MANUAL_BUILDDIR)/specs/index.html =20 # Canned command to build a single manual build-manual =3D $(call quiet-command,sphinx-build $(if $(V),,-q) -W -n -b= html -D version=3D$(VERSION) -D release=3D"$(FULL_VERSION)" -d .doctrees/$= 1 $(SRC_PATH)/docs/$1 $(MANUAL_BUILDDIR)/$1 ,"SPHINX","$(MANUAL_BUILDDIR)/$= 1") @@ -975,6 +977,9 @@ $(MANUAL_BUILDDIR)/devel/index.html: $(call manual-deps= ,devel) $(MANUAL_BUILDDIR)/interop/index.html: $(call manual-deps,interop) $(call build-manual,interop) =20 +$(MANUAL_BUILDDIR)/specs/index.html: $(call manual-deps,specs) + $(call build-manual,specs) + qemu-options.texi: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"GEN","$@= ") =20 diff --git a/docs/specs/conf.py b/docs/specs/conf.py new file mode 100644 index 00000000000..4d56f3ae13c --- /dev/null +++ b/docs/specs/conf.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +# QEMU documentation build configuration file for the 'specs' manual. +# +# This includes the top level conf file and then makes any necessary tweak= s. +import sys +import os + +qemu_docdir =3D os.path.abspath("..") +parent_config =3D os.path.join(qemu_docdir, "conf.py") +exec(compile(open(parent_config, "rb").read(), parent_config, 'exec')) + +# This slightly misuses the 'description', but is the best way to get +# the manual title to appear in the sidebar. +html_theme_options['description'] =3D \ + u'System Emulation Guest Hardware Specifications' --=20 2.20.1