From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589980908; cv=none; d=zohomail.com; s=zohoarc; b=DMBWFVj+YgIoBg0+x2kbdDFYALYPTnfjlA2lvgsYU+mUd8n/80Ta22M+nITOraz5TooZKnUyfUZ4nUZxYvqWdmJvfCpa8a3OyW8liG+c3RA0NxNnXVX8qNTrNz2HyXLJnIcmTA6/VvzYcwsTxErl1CHvSLEnaY1rbVWz0h3gu9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589980908; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=RWN5wmxMnkODqDehtEEUeaEitvVLGrAewLAcbu9aisk=; b=bQW5r93W+Qu5NeaEoHyitd88tc5OheJaYnLi3+YSvJH6GgrW1cT+P0mKKDU1eQxyUaufqJ6fmI6ay7x8FHFLs63IzoaGM1QC52+8Ql51epBikF8qg7PAPIOlY6boprFcDmgHXEYAHT7PykguUokaHwyi0w2I4MVo5ptPsGnDQq0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589980908505474.0689372597103; Wed, 20 May 2020 06:21:48 -0700 (PDT) Received: from localhost ([::1]:58934 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOfL-0004Xy-2u for importer@patchew.org; Wed, 20 May 2020 09:21:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47602) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOdy-0001dy-O3 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:22 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:52751 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOdx-00007w-6F for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:21 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-440-_4-0MF52MF2ZbOGiRkED8Q-1; Wed, 20 May 2020 09:20:16 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D00F41902EA0; Wed, 20 May 2020 13:20:14 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id E2C705C1BE; Wed, 20 May 2020 13:20:04 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 9422C9DAD; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=RWN5wmxMnkODqDehtEEUeaEitvVLGrAewLAcbu9aisk=; b=c8ueCYF2XViB0axlI8s48nx56sQHQxDTw5+/7FEBcas5VchVjPx89Xc+taOlnFq95ZSIT2 eJwkjMEfrovrFWfQ1Ttn60+fXE3QYIE7dVoQGPKAF1o+g0JYeE7NlWqgaFqrXrXY2fqLQ1 9dCTJfA5ncsY/srsyys6J9M5OqFSiKY= X-MC-Unique: _4-0MF52MF2ZbOGiRkED8Q-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 01/22] microvm: name qboot binary qboot.bin Date: Wed, 20 May 2020 15:19:42 +0200 Message-Id: <20200520132003.9492-2-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" qboot isn't a bios and shouldnt be named that way. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/microvm.c | 4 ++-- pc-bios/{bios-microvm.bin =3D> qboot.bin} | Bin roms/Makefile | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) rename pc-bios/{bios-microvm.bin =3D> qboot.bin} (100%) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 937db10ae6a5..867d3d652145 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -47,7 +47,7 @@ #include "kvm_i386.h" #include "hw/xen/start_info.h" =20 -#define MICROVM_BIOS_FILENAME "bios-microvm.bin" +#define MICROVM_QBOOT_FILENAME "qboot.bin" =20 static void microvm_set_rtc(MicrovmMachineState *mms, ISADevice *s) { @@ -158,7 +158,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 if (bios_name =3D=3D NULL) { - bios_name =3D MICROVM_BIOS_FILENAME; + bios_name =3D MICROVM_QBOOT_FILENAME; } x86_bios_rom_init(get_system_memory(), true); } diff --git a/pc-bios/bios-microvm.bin b/pc-bios/qboot.bin similarity index 100% rename from pc-bios/bios-microvm.bin rename to pc-bios/qboot.bin diff --git a/roms/Makefile b/roms/Makefile index f9acf39954dc..d6d4948bfc31 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -68,7 +68,7 @@ default help: @echo " opensbi64-virt -- update OpenSBI for 64-bit virt machine" @echo " opensbi32-sifive_u -- update OpenSBI for 32-bit sifive_u machine" @echo " opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u machine" - @echo " bios-microvm -- update bios-microvm.bin (qboot)" + @echo " qboot -- update qboot" @echo " clean -- delete the files generated by the previous= " \ "build targets" =20 @@ -194,9 +194,9 @@ opensbi64-sifive_u: PLATFORM=3D"sifive/fu540" cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/op= ensbi-riscv64-sifive_u-fw_jump.bin =20 -bios-microvm: +qboot: $(MAKE) -C qboot - cp qboot/bios.bin ../pc-bios/bios-microvm.bin + cp qboot/bios.bin ../pc-bios/qboot.bin =20 clean: rm -rf seabios/.config seabios/out seabios/builds --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589980911; cv=none; d=zohomail.com; s=zohoarc; b=iX7wVeQvOboxxYz2CjRDjX84pPrC3/pbmOmq1JuhF8O0ryOlc4Stufz8Vcv3ymn9IQg8rEjghJFhXapkJd4lIcuRDKY474jbord4G6IYK8Is/09rRlOKnGb8VdNWYhg+8F2Y6FEFM7VfOIkSOpKPZqcI8cX0yhnMmU6MuDd1YY8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589980911; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=vZeX+8kRW9FCrYnJbDk7AmYBGJYPTpHVWKR9X+Nk4SU=; b=c+B0sZlDq7C/sbIe4IYspKkGRENCCoBqttAM+fsAj+uIjtyibWn/NCPE69R3oJYDbU0ruvvUI5B4pNtC9ciMWuUJcelMRFS3xAlwN16iQAN1/Vbi+NPzQ9eFU+VUjZtb9zF20Bmz1CfEoQJIKrb64upWjffQva4uO6/X/kG1drs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589980911380984.870952679275; Wed, 20 May 2020 06:21:51 -0700 (PDT) Received: from localhost ([::1]:59192 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOfN-0004eG-MX for importer@patchew.org; Wed, 20 May 2020 09:21:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe1-0001jU-Si for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:25 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:23314 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe1-0000CD-6j for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:25 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-475-ocikM8gsOiCdm6uDePCEJg-1; Wed, 20 May 2020 09:20:20 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 08947107ACF2; Wed, 20 May 2020 13:20:19 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id D266D5D9E2; Wed, 20 May 2020 13:20:04 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 9CDE59DAE; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=vZeX+8kRW9FCrYnJbDk7AmYBGJYPTpHVWKR9X+Nk4SU=; b=A32bLQgcyTGSH9zgjgtnhOn5jWyEmYdgVsqP2dTNlghKPkPFw/nhYurljeG82WjS0QfCHh fyvAKA3Dag+XFAH6ZtziZpnOuzptvM064k3elUDF18+rMqwANS27cth+txpO5tyGUhEpN8 32VphBVBwp09hrjuW/5Fp5NlnKtyCcw= X-MC-Unique: ocikM8gsOiCdm6uDePCEJg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 02/22] [testing] seabios: update submodule to master snapshot Date: Wed, 20 May 2020 15:19:43 +0200 Message-Id: <20200520132003.9492-3-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Gerd Hoffmann --- roms/seabios | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roms/seabios b/roms/seabios index f21b5a4aeb02..b8eda1319544 160000 --- a/roms/seabios +++ b/roms/seabios @@ -1 +1 @@ -Subproject commit f21b5a4aeb020f2a5e2c6503f906a9349dd2f069 +Subproject commit b8eda131954452bb5a236100a6572fe8f27d8021 --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981019; cv=none; d=zohomail.com; s=zohoarc; b=EfPFapoUXUKm89hlsSS9/FwTAeCH7R2lQoE8S6Ncws0FYykAZRk1A6HzicPkwrXNyzw79e15hiyxx6Btj/5cHu/t+qMe1aNZ88aOa0t97ccYOPjjT+5E+Zwqgog6SC66JcWM7JPd0YcdVXoiQD9bEvujZLUFLgkbM6AYciPdCKA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981019; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=MzZODsBz007pRLcd54leFfF+Mh0RbKq9+V9Rg9SxbkY=; b=BGpnGOiDCTf3TH/ApiOx5dminpTyURDdmF6OpkdQdzkIQ84mcTJjY1HqGmk2lMTcHv/qkoufcpElUMjjbyM/uPWfvEFCXhYMv2pwfYBsGlZ4YIJxQE6Ij1w3VzXfpal2GPVDPle4O2fPEEl08gxnMOUtKhXXgGdhhUCs9nhX0r0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981019812553.7400685980552; Wed, 20 May 2020 06:23:39 -0700 (PDT) Received: from localhost ([::1]:39282 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOh8-00080t-H2 for importer@patchew.org; Wed, 20 May 2020 09:23:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOdz-0001fr-Vk for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:23 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:22885 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOdz-0000AV-5Z for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:23 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-54-0xj23SLuOHSRLVNCn_danQ-1; Wed, 20 May 2020 09:20:18 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 872DA8015D1; Wed, 20 May 2020 13:20:17 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id E5BDF6AD0F; Wed, 20 May 2020 13:20:09 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id A865E9DAF; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=MzZODsBz007pRLcd54leFfF+Mh0RbKq9+V9Rg9SxbkY=; b=XHJaghFrTxSsiA37jwlhbp6Cl0xQDQCGQ94zZmGaDjc4F6a7j1mwvrqqV4ixaC92eXKYIF QpLDZCoCKGCFoKfFbUK9S/0owbsQ0SsW07gKAb0B27q2AhPW1aADTEcCa2a4K9NwipeuSB FP8ZSOGt2qRK1ojtLZmbavVlSfoEzdE= X-MC-Unique: 0xj23SLuOHSRLVNCn_danQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 03/22] [testing] seabios: update config & build rules Date: Wed, 20 May 2020 15:19:44 +0200 Message-Id: <20200520132003.9492-4-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Gerd Hoffmann --- roms/Makefile | 5 ++++- roms/config.seabios-128k | 3 +++ roms/config.seabios-microvm | 26 ++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 roms/config.seabios-microvm diff --git a/roms/Makefile b/roms/Makefile index d6d4948bfc31..f7cdad027374 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -72,9 +72,12 @@ default help: @echo " clean -- delete the files generated by the previous= " \ "build targets" =20 -bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k +bios: build-seabios-config-seabios-128k \ + build-seabios-config-seabios-256k \ + build-seabios-config-seabios-microvm cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin cp seabios/builds/seabios-256k/bios.bin ../pc-bios/bios-256k.bin + cp seabios/builds/seabios-microvm/bios.bin ../pc-bios/bios-microvm.bin =20 vgabios seavgabios: $(patsubst %,seavgabios-%,$(vgabios_variants)) =20 diff --git a/roms/config.seabios-128k b/roms/config.seabios-128k index c43912bf9de4..d18c802c46e9 100644 --- a/roms/config.seabios-128k +++ b/roms/config.seabios-128k @@ -11,8 +11,11 @@ CONFIG_USB_UAS=3Dn CONFIG_SDCARD=3Dn CONFIG_TCGBIOS=3Dn CONFIG_MPT_SCSI=3Dn +CONFIG_ESP_SCSI=3Dn +CONFIG_MEGASAS=3Dn CONFIG_PVSCSI=3Dn CONFIG_NVME=3Dn CONFIG_USE_SMM=3Dn CONFIG_VGAHOOKS=3Dn CONFIG_HOST_BIOS_GEOMETRY=3Dn +CONFIG_ACPI_PARSE=3Dn diff --git a/roms/config.seabios-microvm b/roms/config.seabios-microvm new file mode 100644 index 000000000000..a253e2edc6ec --- /dev/null +++ b/roms/config.seabios-microvm @@ -0,0 +1,26 @@ +CONFIG_QEMU=3Dy +CONFIG_QEMU_HARDWARE=3Dy +CONFIG_PERMIT_UNALIGNED_PCIROM=3Dy +CONFIG_ROM_SIZE=3D128 +CONFIG_XEN=3Dn +CONFIG_BOOTSPLASH=3Dn +CONFIG_ATA=3Dn +CONFIG_AHCI=3Dn +CONFIG_SDCARD=3Dn +CONFIG_PVSCSI=3Dn +CONFIG_ESP_SCSI=3Dn +CONFIG_LSI_SCSI=3Dn +CONFIG_MEGASAS=3Dn +CONFIG_MPT_SCSI=3Dn +CONFIG_FLOPPY=3Dn +CONFIG_FLASH_FLOPPY=3Dn +CONFIG_NVME=3Dn +CONFIG_PS2PORT=3Dn +CONFIG_USB=3Dn +CONFIG_LPT=3Dn +CONFIG_RTC_TIMER=3Dn +CONFIG_USE_SMM=3Dn +CONFIG_PMTIMER=3Dn +CONFIG_TCGBIOS=3Dn +CONFIG_HARDWARE_IRQ=3Dn +CONFIG_ACPI_PARSE=3Dy --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981309; cv=none; d=zohomail.com; s=zohoarc; b=ee68KjoRviegsGjwHYy1XzdjKsqoC2BBM7KoOtxNqEwZc/7cWRkDxi445AN5A1tuolnib+js8ZfhOMhWE5edlCeWGpvzVLws/w2gLTy14gLzU0bZMLzdpgvEC18UIAg4a/Z1iMTrbhnwTrFgwbwGGa5iSXmhasMkkehIXd9Ryfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981309; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Wg8OCV8T4QOuA37BwXNgZfOlf/YUfN58fJ3ChnWxlp8=; b=awaQv9XbijSRnKW+TQi/rvu2ITekmUn3t6en2d18eMOF3MQf2257RlvU29sftlK0/cVJJ48OETdhK22FonOj3vwQCxxWqccWnleiry6tlKgU/tPywuTHj6bQxT2X/B9TWRqE5njiC94aYt3E70KdWqf592KZlyxNvZ/zaft5eTU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981309685898.5230888311527; Wed, 20 May 2020 06:28:29 -0700 (PDT) Received: from localhost ([::1]:33204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOln-000149-Op for importer@patchew.org; Wed, 20 May 2020 09:28:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47904) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeZ-0002xe-4j for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:59 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:31035 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe6-0000GW-9C for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:58 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-59-AKytteVzOHGgC-cLL_195A-1; Wed, 20 May 2020 09:20:25 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3801DEC1AA; Wed, 20 May 2020 13:20:24 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id C9B7819C58; Wed, 20 May 2020 13:20:04 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id B779B9DB0; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980829; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=Wg8OCV8T4QOuA37BwXNgZfOlf/YUfN58fJ3ChnWxlp8=; b=gyXkiJt3PUFOgbiWoPJmIEjAqunOs3UdJoJfDIBkCf5ehU297bEArQD2P90UBZ2AOn5a2b x54r9d4zQ9i2TMFMnso84516Jazx+6bK27mZDOYEPQJbTxWv2Jd5Q7cLdaBqICPupZc9dX 2zLVJeIA0fb6c3LZSDz1qQinwGMy/Gc= X-MC-Unique: AKytteVzOHGgC-cLL_195A-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 04/22] [testing] seabios: update binaries to master snapshot Date: Wed, 20 May 2020 15:19:45 +0200 Message-Id: <20200520132003.9492-5-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, LOTS_OF_MONEY=0.001, NORMAL_HTTP_TO_IP=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Gerd Hoffmann --- pc-bios/bios-256k.bin | Bin 262144 -> 262144 bytes pc-bios/bios-microvm.bin | Bin 0 -> 131072 bytes pc-bios/bios.bin | Bin 131072 -> 131072 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pc-bios/bios-microvm.bin diff --git a/pc-bios/bios-256k.bin b/pc-bios/bios-256k.bin index 4af7f7d5a91bcc19905e1742b0706e034e2a655c..f3471dafea16d7ce43deade0099= 54afa2e60ab35 100644 GIT binary patch delta 76435 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 R{qVkFJ$r@q>!)eZ{4Zqo(7ONt delta 69079 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 =3D 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 BpOpXr literal 0 HcmV?d00001 diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin index 67874c31b8b0284eb292deb2c9ebc191fa2d73b6..e7ed9c9347333631fb59d125bad= 3017f5fae4af8 100644 GIT binary patch delta 45947 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 AO8@`> delta 46795 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 (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 15899811389281000.3391409067009; Wed, 20 May 2020 06:25:38 -0700 (PDT) Received: from localhost ([::1]:49220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOj3-0004CO-JF for importer@patchew.org; Wed, 20 May 2020 09:25:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47730) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe8-00020y-Rf for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:32 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:43176 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe7-0000H1-31 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-293-P--15fHJPPafMrBkPsPUyg-1; Wed, 20 May 2020 09:20:28 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 18874835B41; Wed, 20 May 2020 13:20:27 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 52C1582A35; Wed, 20 May 2020 13:20:18 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id C0B669D54; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980830; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pB5IeYNuFWRx8NQO1DyFF01+N5UZOrGfWLQbEq2lfaY=; b=Pk5W5dqZOn4LOdSPxoI3rMgYVkEvtSd5YHetG9oWKbg0eVnpcw0A0xMfEs9crrwkqUnjfS E3Gh/BbfIT1nsWtvLKzAkgSglhcodKcMw6Hff1K8j+NMxrT63GWX7KfzWhLyHySGYT6L1s w3tko4feXxT8BVWrsv8JmzdsM6E8vw0= X-MC-Unique: P--15fHJPPafMrBkPsPUyg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 05/22] acpi: make build_madt() more generic. Date: Wed, 20 May 2020 15:19:46 +0200 Message-Id: <20200520132003.9492-6-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.81; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 04:09:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Remove PCMachineState dependency from build_madt(). Pass AcpiDeviceIf as separate argument instead of depending on PCMachineState->acpi_dev. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Igor Mammedov --- hw/i386/acpi-build.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 1afb47b09ee9..4f6418d60b05 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -366,14 +366,13 @@ void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, } =20 static void -build_madt(GArray *table_data, BIOSLinker *linker, PCMachineState *pcms) +build_madt(GArray *table_data, BIOSLinker *linker, + X86MachineState *x86ms, AcpiDeviceIf *adev) { - MachineClass *mc =3D MACHINE_GET_CLASS(pcms); - X86MachineState *x86ms =3D X86_MACHINE(pcms); - const CPUArchIdList *apic_ids =3D mc->possible_cpu_arch_ids(MACHINE(pc= ms)); + MachineClass *mc =3D MACHINE_GET_CLASS(x86ms); + const CPUArchIdList *apic_ids =3D mc->possible_cpu_arch_ids(MACHINE(x8= 6ms)); int madt_start =3D table_data->len; - AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_GET_CLASS(pcms->acpi_dev); - AcpiDeviceIf *adev =3D ACPI_DEVICE_IF(pcms->acpi_dev); + AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_GET_CLASS(adev); bool x2apic_mode =3D false; =20 AcpiMultipleApicTable *madt; @@ -2534,7 +2533,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState= *machine) aml_len +=3D tables_blob->len - fadt; =20 acpi_add_table(table_offsets, tables_blob); - build_madt(tables_blob, tables->linker, pcms); + build_madt(tables_blob, tables->linker, x86ms, + ACPI_DEVICE_IF(pcms->acpi_dev)); =20 vmgenid_dev =3D find_vmgenid_dev(); if (vmgenid_dev) { --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981174; cv=none; d=zohomail.com; s=zohoarc; b=TwjI3ASMfddF6rjewd1G+gY2QnaS1AxM5tA2gQdcCnv0Losty6L2WhOUV4jCESo8PyUR9Fe4jsPcSF/oFstJeI49q7qPymhDkYEMnNkmogAe8DsZNoJKsADOOUBTZnjMmjC5Vg0owOXMu54FWv8KCoX1fdgAYuAvvgsU00uY3z0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981174; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=7tUcg7e4dkAmmmnxqYqykrpPOiXx7xD2DlTHg0SqWb8=; b=QsQsz/kizezsPa+O8u+NYEUGpgaUIU8c6KHrhx7auPg6OWGpqNtx1W88p2Zvhj37snAMlSuv9M2pt8OUDEX7DXNF6IeX400yEFTTqXhMWDwS1/3hHVe8VRfYrwQSJ/45pASuHerv4+r07Dvk007rLETNBmVdFjPFHoVH6zNJJ8Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981174428877.4525774549624; Wed, 20 May 2020 06:26:14 -0700 (PDT) Received: from localhost ([::1]:52112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOjd-0005ig-0Z for importer@patchew.org; Wed, 20 May 2020 09:26:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe7-0001xz-Rw for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:31 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:29679 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0000Ff-NM for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:31 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-389-xyN4j7dQNiaheTsSgywLSw-1; Wed, 20 May 2020 09:20:22 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 55CE11902EA8; Wed, 20 May 2020 13:20:21 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 71B971943D; Wed, 20 May 2020 13:20:18 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id CEDD79D55; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=7tUcg7e4dkAmmmnxqYqykrpPOiXx7xD2DlTHg0SqWb8=; b=WDsA4ib3ntxhCRrThWbUYGxvOl7pWATxsuJiFAkQ49Vh7WKqH10glQIjBzJWamAV7moXiU 5y0PigeJBNuPvHXiFQNXdnQstC7BKrSffQOqXsY0Te4H6eK69rEV9stRPDfFEGO8OTzsVZ lCcB26MoMyDk/NUX7OqwsNxEp+yFIsM= X-MC-Unique: xyN4j7dQNiaheTsSgywLSw-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 06/22] acpi: create acpi-common.c and move madt code Date: Wed, 20 May 2020 15:19:47 +0200 Message-Id: <20200520132003.9492-7-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.81; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 04:09:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We'll need madt support for microvm. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/acpi-common.h | 14 ++++ hw/i386/acpi-build.c | 126 +--------------------------------- hw/i386/acpi-common.c | 152 ++++++++++++++++++++++++++++++++++++++++++ hw/i386/Makefile.objs | 1 + 4 files changed, 170 insertions(+), 123 deletions(-) create mode 100644 hw/i386/acpi-common.h create mode 100644 hw/i386/acpi-common.c diff --git a/hw/i386/acpi-common.h b/hw/i386/acpi-common.h new file mode 100644 index 000000000000..c30e461f1854 --- /dev/null +++ b/hw/i386/acpi-common.h @@ -0,0 +1,14 @@ +#ifndef HW_I386_ACPI_COMMON_H +#define HW_I386_ACPI_COMMON_H +#include "include/hw/acpi/acpi_dev_interface.h" + +#include "include/hw/acpi/bios-linker-loader.h" +#include "include/hw/i386/x86.h" + +/* Default IOAPIC ID */ +#define ACPI_BUILD_IOAPIC_ID 0x0 + +void acpi_build_madt(GArray *table_data, BIOSLinker *linker, + X86MachineState *x86ms, AcpiDeviceIf *adev); + +#endif diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 4f6418d60b05..c0fdd539a640 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -24,6 +24,7 @@ #include "qapi/error.h" #include "qapi/qmp/qnum.h" #include "acpi-build.h" +#include "acpi-common.h" #include "qemu/bitmap.h" #include "qemu/error-report.h" #include "hw/pci/pci.h" @@ -89,9 +90,6 @@ #define ACPI_BUILD_DPRINTF(fmt, ...) #endif =20 -/* Default IOAPIC ID */ -#define ACPI_BUILD_IOAPIC_ID 0x0 - typedef struct AcpiPmInfo { bool s3_disabled; bool s4_disabled; @@ -327,124 +325,6 @@ build_facs(GArray *table_data) facs->length =3D cpu_to_le32(sizeof(*facs)); } =20 -void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, - const CPUArchIdList *apic_ids, GArray *entry) -{ - uint32_t apic_id =3D apic_ids->cpus[uid].arch_id; - - /* ACPI spec says that LAPIC entry for non present - * CPU may be omitted from MADT or it must be marked - * as disabled. However omitting non present CPU from - * MADT breaks hotplug on linux. So possible CPUs - * should be put in MADT but kept disabled. - */ - if (apic_id < 255) { - AcpiMadtProcessorApic *apic =3D acpi_data_push(entry, sizeof *apic= ); - - apic->type =3D ACPI_APIC_PROCESSOR; - apic->length =3D sizeof(*apic); - apic->processor_id =3D uid; - apic->local_apic_id =3D apic_id; - if (apic_ids->cpus[uid].cpu !=3D NULL) { - apic->flags =3D cpu_to_le32(1); - } else { - apic->flags =3D cpu_to_le32(0); - } - } else { - AcpiMadtProcessorX2Apic *apic =3D acpi_data_push(entry, sizeof *ap= ic); - - apic->type =3D ACPI_APIC_LOCAL_X2APIC; - apic->length =3D sizeof(*apic); - apic->uid =3D cpu_to_le32(uid); - apic->x2apic_id =3D cpu_to_le32(apic_id); - if (apic_ids->cpus[uid].cpu !=3D NULL) { - apic->flags =3D cpu_to_le32(1); - } else { - apic->flags =3D cpu_to_le32(0); - } - } -} - -static void -build_madt(GArray *table_data, BIOSLinker *linker, - X86MachineState *x86ms, AcpiDeviceIf *adev) -{ - MachineClass *mc =3D MACHINE_GET_CLASS(x86ms); - const CPUArchIdList *apic_ids =3D mc->possible_cpu_arch_ids(MACHINE(x8= 6ms)); - int madt_start =3D table_data->len; - AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_GET_CLASS(adev); - bool x2apic_mode =3D false; - - AcpiMultipleApicTable *madt; - AcpiMadtIoApic *io_apic; - AcpiMadtIntsrcovr *intsrcovr; - int i; - - madt =3D acpi_data_push(table_data, sizeof *madt); - madt->local_apic_address =3D cpu_to_le32(APIC_DEFAULT_ADDRESS); - madt->flags =3D cpu_to_le32(1); - - for (i =3D 0; i < apic_ids->len; i++) { - adevc->madt_cpu(adev, i, apic_ids, table_data); - if (apic_ids->cpus[i].arch_id > 254) { - x2apic_mode =3D true; - } - } - - io_apic =3D acpi_data_push(table_data, sizeof *io_apic); - io_apic->type =3D ACPI_APIC_IO; - io_apic->length =3D sizeof(*io_apic); - io_apic->io_apic_id =3D ACPI_BUILD_IOAPIC_ID; - io_apic->address =3D cpu_to_le32(IO_APIC_DEFAULT_ADDRESS); - io_apic->interrupt =3D cpu_to_le32(0); - - if (x86ms->apic_xrupt_override) { - intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); - intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; - intsrcovr->length =3D sizeof(*intsrcovr); - intsrcovr->source =3D 0; - intsrcovr->gsi =3D cpu_to_le32(2); - intsrcovr->flags =3D cpu_to_le16(0); /* conforms to bus specifica= tions */ - } - for (i =3D 1; i < 16; i++) { -#define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11)) - if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) { - /* No need for a INT source override structure. */ - continue; - } - intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); - intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; - intsrcovr->length =3D sizeof(*intsrcovr); - intsrcovr->source =3D i; - intsrcovr->gsi =3D cpu_to_le32(i); - intsrcovr->flags =3D cpu_to_le16(0xd); /* active high, level trig= gered */ - } - - if (x2apic_mode) { - AcpiMadtLocalX2ApicNmi *local_nmi; - - local_nmi =3D acpi_data_push(table_data, sizeof *local_nmi); - local_nmi->type =3D ACPI_APIC_LOCAL_X2APIC_NMI; - local_nmi->length =3D sizeof(*local_nmi); - local_nmi->uid =3D 0xFFFFFFFF; /* all processors */ - local_nmi->flags =3D cpu_to_le16(0); - local_nmi->lint =3D 1; /* ACPI_LINT1 */ - } else { - AcpiMadtLocalNmi *local_nmi; - - local_nmi =3D acpi_data_push(table_data, sizeof *local_nmi); - local_nmi->type =3D ACPI_APIC_LOCAL_NMI; - local_nmi->length =3D sizeof(*local_nmi); - local_nmi->processor_id =3D 0xff; /* all processors */ - local_nmi->flags =3D cpu_to_le16(0); - local_nmi->lint =3D 1; /* ACPI_LINT1 */ - } - - build_header(linker, table_data, - (void *)(table_data->data + madt_start), "APIC", - table_data->len - madt_start, 1, NULL, NULL); -} - static void build_append_pcihp_notify_entry(Aml *method, int slot) { Aml *if_ctx; @@ -2533,8 +2413,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState= *machine) aml_len +=3D tables_blob->len - fadt; =20 acpi_add_table(table_offsets, tables_blob); - build_madt(tables_blob, tables->linker, x86ms, - ACPI_DEVICE_IF(pcms->acpi_dev)); + acpi_build_madt(tables_blob, tables->linker, x86ms, + ACPI_DEVICE_IF(pcms->acpi_dev)); =20 vmgenid_dev =3D find_vmgenid_dev(); if (vmgenid_dev) { diff --git a/hw/i386/acpi-common.c b/hw/i386/acpi-common.c new file mode 100644 index 000000000000..5caca16a0b59 --- /dev/null +++ b/hw/i386/acpi-common.c @@ -0,0 +1,152 @@ +/* Support for generating ACPI tables and passing them to Guests + * + * Copyright (C) 2008-2010 Kevin O'Connor + * Copyright (C) 2006 Fabrice Bellard + * Copyright (C) 2013 Red Hat Inc + * + * Author: Michael S. Tsirkin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" + +#include "exec/memory.h" +#include "hw/acpi/acpi.h" +#include "hw/acpi/aml-build.h" +#include "hw/acpi/utils.h" +#include "hw/i386/pc.h" +#include "target/i386/cpu.h" + +#include "acpi-build.h" +#include "acpi-common.h" + +void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, + const CPUArchIdList *apic_ids, GArray *entry) +{ + uint32_t apic_id =3D apic_ids->cpus[uid].arch_id; + + /* ACPI spec says that LAPIC entry for non present + * CPU may be omitted from MADT or it must be marked + * as disabled. However omitting non present CPU from + * MADT breaks hotplug on linux. So possible CPUs + * should be put in MADT but kept disabled. + */ + if (apic_id < 255) { + AcpiMadtProcessorApic *apic =3D acpi_data_push(entry, sizeof *apic= ); + + apic->type =3D ACPI_APIC_PROCESSOR; + apic->length =3D sizeof(*apic); + apic->processor_id =3D uid; + apic->local_apic_id =3D apic_id; + if (apic_ids->cpus[uid].cpu !=3D NULL) { + apic->flags =3D cpu_to_le32(1); + } else { + apic->flags =3D cpu_to_le32(0); + } + } else { + AcpiMadtProcessorX2Apic *apic =3D acpi_data_push(entry, sizeof *ap= ic); + + apic->type =3D ACPI_APIC_LOCAL_X2APIC; + apic->length =3D sizeof(*apic); + apic->uid =3D cpu_to_le32(uid); + apic->x2apic_id =3D cpu_to_le32(apic_id); + if (apic_ids->cpus[uid].cpu !=3D NULL) { + apic->flags =3D cpu_to_le32(1); + } else { + apic->flags =3D cpu_to_le32(0); + } + } +} + +void acpi_build_madt(GArray *table_data, BIOSLinker *linker, + X86MachineState *x86ms, AcpiDeviceIf *adev) +{ + MachineClass *mc =3D MACHINE_GET_CLASS(x86ms); + const CPUArchIdList *apic_ids =3D mc->possible_cpu_arch_ids(MACHINE(x8= 6ms)); + int madt_start =3D table_data->len; + AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_GET_CLASS(adev); + bool x2apic_mode =3D false; + + AcpiMultipleApicTable *madt; + AcpiMadtIoApic *io_apic; + AcpiMadtIntsrcovr *intsrcovr; + int i; + + madt =3D acpi_data_push(table_data, sizeof *madt); + madt->local_apic_address =3D cpu_to_le32(APIC_DEFAULT_ADDRESS); + madt->flags =3D cpu_to_le32(1); + + for (i =3D 0; i < apic_ids->len; i++) { + adevc->madt_cpu(adev, i, apic_ids, table_data); + if (apic_ids->cpus[i].arch_id > 254) { + x2apic_mode =3D true; + } + } + + io_apic =3D acpi_data_push(table_data, sizeof *io_apic); + io_apic->type =3D ACPI_APIC_IO; + io_apic->length =3D sizeof(*io_apic); + io_apic->io_apic_id =3D ACPI_BUILD_IOAPIC_ID; + io_apic->address =3D cpu_to_le32(IO_APIC_DEFAULT_ADDRESS); + io_apic->interrupt =3D cpu_to_le32(0); + + if (x86ms->apic_xrupt_override) { + intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); + intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; + intsrcovr->length =3D sizeof(*intsrcovr); + intsrcovr->source =3D 0; + intsrcovr->gsi =3D cpu_to_le32(2); + intsrcovr->flags =3D cpu_to_le16(0); /* conforms to bus specifica= tions */ + } + for (i =3D 1; i < 16; i++) { +#define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11)) + if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) { + /* No need for a INT source override structure. */ + continue; + } + intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); + intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; + intsrcovr->length =3D sizeof(*intsrcovr); + intsrcovr->source =3D i; + intsrcovr->gsi =3D cpu_to_le32(i); + intsrcovr->flags =3D cpu_to_le16(0xd); /* active high, level trig= gered */ + } + + if (x2apic_mode) { + AcpiMadtLocalX2ApicNmi *local_nmi; + + local_nmi =3D acpi_data_push(table_data, sizeof *local_nmi); + local_nmi->type =3D ACPI_APIC_LOCAL_X2APIC_NMI; + local_nmi->length =3D sizeof(*local_nmi); + local_nmi->uid =3D 0xFFFFFFFF; /* all processors */ + local_nmi->flags =3D cpu_to_le16(0); + local_nmi->lint =3D 1; /* ACPI_LINT1 */ + } else { + AcpiMadtLocalNmi *local_nmi; + + local_nmi =3D acpi_data_push(table_data, sizeof *local_nmi); + local_nmi->type =3D ACPI_APIC_LOCAL_NMI; + local_nmi->length =3D sizeof(*local_nmi); + local_nmi->processor_id =3D 0xff; /* all processors */ + local_nmi->flags =3D cpu_to_le16(0); + local_nmi->lint =3D 1; /* ACPI_LINT1 */ + } + + build_header(linker, table_data, + (void *)(table_data->data + madt_start), "APIC", + table_data->len - madt_start, 1, NULL, NULL); +} + diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs index 8ce1b265335b..6abc74551a72 100644 --- a/hw/i386/Makefile.objs +++ b/hw/i386/Makefile.objs @@ -16,4 +16,5 @@ obj-$(CONFIG_VMMOUSE) +=3D vmmouse.o obj-$(CONFIG_PC) +=3D port92.o =20 obj-y +=3D kvmvapic.o +obj-$(CONFIG_ACPI) +=3D acpi-common.o obj-$(CONFIG_PC) +=3D acpi-build.o --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981021; cv=none; d=zohomail.com; s=zohoarc; b=NKSMbj63GfOOfBjyTxPWmgJuScK2ymiXxO/eGYh+IF5BvrxOkzxcbkWTbbdtE71qX7NFGL0sSkFskdsjd+lAO4447NIfvJvlxWU3ePZ4CsMOI8HHHyxHYn37BV26KdUtnrtIBg+GRanxlKG+IBNwXnUsUfkOpd9WoP0yqtbuahE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981021; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=+LpZn95fCyMj5LlBHQAcVb5mRTpszyydwOnQVComLXw=; b=WoDkOe5tHOiq1Glqkc4qMjBH4Rb/87L1Ss8vtaahbIAP9vsKHT4vTPP20Q3S2iaCujz7nMbCD7O/++uJRzkRzg85l2Iw48v3YYUGqM7DXhIb1oGfawc4RRb5/s/HsUeQ5xdnJm254oOdl/duwMx+OPuSywotGqlVwRY0/6PGZiM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981021552685.2026217463539; Wed, 20 May 2020 06:23:41 -0700 (PDT) Received: from localhost ([::1]:39462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOhA-00087N-2b for importer@patchew.org; Wed, 20 May 2020 09:23:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47654) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0001ov-DM for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:28 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:42538 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe2-0000EH-TF for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:27 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-443-xI7otfMqN4GRE8mHKW9wnQ-1; Wed, 20 May 2020 09:20:24 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B4B8D8014D7; Wed, 20 May 2020 13:20:22 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id AFC2E1943D; Wed, 20 May 2020 13:20:21 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id DB0559D56; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980825; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+LpZn95fCyMj5LlBHQAcVb5mRTpszyydwOnQVComLXw=; b=PS7fRYxEw/ZYsig+oHB1tRlSHe//X9NdqGjyqpX923/oiGESXpOUU9slgClwDQDTU/lhqb g4U3U+8GaT0Y9k7+m8FNi3PUdMCt1N8lMSMkhQO2LMLbCpFOuiettDVdY0uuqHsPQ4OlWj r3BKJj7WgNpbawgEZVC3H2MdIHJ9MPA= X-MC-Unique: xI7otfMqN4GRE8mHKW9wnQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 07/22] acpi: madt: skip pci override on pci-less systems. Date: Wed, 20 May 2020 15:19:48 +0200 Message-Id: <20200520132003.9492-8-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Needed for microvm. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/acpi-common.h | 3 ++- hw/i386/acpi-build.c | 2 +- hw/i386/acpi-common.c | 26 +++++++++++++++----------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/hw/i386/acpi-common.h b/hw/i386/acpi-common.h index c30e461f1854..9cac18dddf5b 100644 --- a/hw/i386/acpi-common.h +++ b/hw/i386/acpi-common.h @@ -9,6 +9,7 @@ #define ACPI_BUILD_IOAPIC_ID 0x0 =20 void acpi_build_madt(GArray *table_data, BIOSLinker *linker, - X86MachineState *x86ms, AcpiDeviceIf *adev); + X86MachineState *x86ms, AcpiDeviceIf *adev, + bool has_pci); =20 #endif diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index c0fdd539a640..583bb58d6f0c 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2414,7 +2414,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState= *machine) =20 acpi_add_table(table_offsets, tables_blob); acpi_build_madt(tables_blob, tables->linker, x86ms, - ACPI_DEVICE_IF(pcms->acpi_dev)); + ACPI_DEVICE_IF(pcms->acpi_dev), true); =20 vmgenid_dev =3D find_vmgenid_dev(); if (vmgenid_dev) { diff --git a/hw/i386/acpi-common.c b/hw/i386/acpi-common.c index 5caca16a0b59..ab9b00581a15 100644 --- a/hw/i386/acpi-common.c +++ b/hw/i386/acpi-common.c @@ -72,7 +72,8 @@ void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, } =20 void acpi_build_madt(GArray *table_data, BIOSLinker *linker, - X86MachineState *x86ms, AcpiDeviceIf *adev) + X86MachineState *x86ms, AcpiDeviceIf *adev, + bool has_pci) { MachineClass *mc =3D MACHINE_GET_CLASS(x86ms); const CPUArchIdList *apic_ids =3D mc->possible_cpu_arch_ids(MACHINE(x8= 6ms)); @@ -111,18 +112,21 @@ void acpi_build_madt(GArray *table_data, BIOSLinker *= linker, intsrcovr->gsi =3D cpu_to_le32(2); intsrcovr->flags =3D cpu_to_le16(0); /* conforms to bus specifica= tions */ } - for (i =3D 1; i < 16; i++) { + + if (has_pci) { + for (i =3D 1; i < 16; i++) { #define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11)) - if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) { - /* No need for a INT source override structure. */ - continue; + if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) { + /* No need for a INT source override structure. */ + continue; + } + intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); + intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; + intsrcovr->length =3D sizeof(*intsrcovr); + intsrcovr->source =3D i; + intsrcovr->gsi =3D cpu_to_le32(i); + intsrcovr->flags =3D cpu_to_le16(0xd); /* active high, level = triggered */ } - intsrcovr =3D acpi_data_push(table_data, sizeof *intsrcovr); - intsrcovr->type =3D ACPI_APIC_XRUPT_OVERRIDE; - intsrcovr->length =3D sizeof(*intsrcovr); - intsrcovr->source =3D i; - intsrcovr->gsi =3D cpu_to_le32(i); - intsrcovr->flags =3D cpu_to_le16(0xd); /* active high, level trig= gered */ } =20 if (x2apic_mode) { --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589980970; cv=none; d=zohomail.com; s=zohoarc; b=JiukMQra5CGJxPdKVM7M5aVXfxtjzdb6rkWtE8lQrvR++rZF8dB+5Nj7zbFkY8HEHYVdbaDF73CGE5Nptww/fZpnaeKCq9mLMp+f5GjclRJlKgIHvh5XQ0B8lPdYfo875Q5NTkl3m/JbFhb4ihZ6qI38wwz0PCUEIei/23g3x4U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589980970; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=9dP5pJMHATRMU7jZoSy5VOed74vhNKA3Gi6pt3jrRpI=; b=J7SYrwQBfgWf6HHA1FC1nTr2b0fofOGg9QjqMdW2RUMlVs3837ZaoAhCTEzpVwZJTR3ivEoYlXVjR/Rpt6yzpbM9diXG1menI9qaDX/EHLD79ikEdumqnum24JapIZiWrnHB4QWRRaha+Yg6YKScAQy9VVEKW2DZoT+4UMDSjJ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589980970766203.35097511166953; Wed, 20 May 2020 06:22:50 -0700 (PDT) Received: from localhost ([::1]:34384 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOgL-00061m-G4 for importer@patchew.org; Wed, 20 May 2020 09:22:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47682) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe5-0001se-SE for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:29 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:52067 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0000FX-MP for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:29 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-Vn6kj1qfOVOLDr2UmnhKlQ-1; Wed, 20 May 2020 09:20:23 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 871631800D42; Wed, 20 May 2020 13:20:22 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id B5ED32E170; Wed, 20 May 2020 13:20:21 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id E55E19D57; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=9dP5pJMHATRMU7jZoSy5VOed74vhNKA3Gi6pt3jrRpI=; b=GbdwIzR2OGsL5bsKe/+VSmv9hk1O0Oorj7vYSzBD3xbAIzSUZQGbhh/D+Pq5T3ygOeYLz/ +jBcv5Hn5ytKgGF4aUO0kymp4BDodHv9dj0010WbnGQH3P3AXQ9y/wgS6yu5Q8gLnfYRUt xbfiBvQPbRKGxOYA+oSiWYEGNB8jU7k= X-MC-Unique: Vn6kj1qfOVOLDr2UmnhKlQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 08/22] acpi: fadt: add hw-reduced sleep register support Date: Wed, 20 May 2020 15:19:49 +0200 Message-Id: <20200520132003.9492-9-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.61; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 02:22:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add fields to struct AcpiFadtData and update build_fadt() to properly generate sleep register entries. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov --- include/hw/acpi/acpi-defs.h | 2 ++ hw/acpi/aml-build.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h index c13327fa7867..3be9ab504968 100644 --- a/include/hw/acpi/acpi-defs.h +++ b/include/hw/acpi/acpi-defs.h @@ -88,6 +88,8 @@ typedef struct AcpiFadtData { struct AcpiGenericAddress pm_tmr; /* PM_TMR_BLK */ struct AcpiGenericAddress gpe0_blk; /* GPE0_BLK */ struct AcpiGenericAddress reset_reg; /* RESET_REG */ + struct AcpiGenericAddress sleep_ctl; /* SLEEP_CONTROL_REG */ + struct AcpiGenericAddress sleep_sts; /* SLEEP_STATUS_REG */ uint8_t reset_val; /* RESET_VALUE */ uint8_t rev; /* Revision */ uint32_t flags; /* Flags */ diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 3681ec6e3d88..a894e2581fa2 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1865,9 +1865,9 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, cons= t AcpiFadtData *f, } =20 /* SLEEP_CONTROL_REG */ - build_append_gas(tbl, AML_AS_SYSTEM_MEMORY, 0 , 0, 0, 0); + build_append_gas_from_struct(tbl, &f->sleep_ctl); /* SLEEP_STATUS_REG */ - build_append_gas(tbl, AML_AS_SYSTEM_MEMORY, 0 , 0, 0, 0); + build_append_gas_from_struct(tbl, &f->sleep_sts); =20 /* TODO: extra fields need to be added to support revisions above rev5= */ assert(f->rev =3D=3D 5); --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981585; cv=none; d=zohomail.com; s=zohoarc; b=YJcrHlsyHx8edqSerRISgyiRVxPhSh1onWRUP+VFlYxXacPx4kQ1Z0IbmxsMC7a/8svVtzWuJ27QnvQyCufGjEYPjm39/P1w38v2D/0sM2CSHa1YCwDyTbuvrd3tm4Nj1wm8491BJ9SUridEcZv+Zp6EOOSHylpuXR2P6h1x12c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981585; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=i1JF1/s5d2KxdED5roCcOah1am+4MqlOUBOB584bBVA=; b=HQ/TDIF40duN6oxGFLwxYPDezhBYSWhohszeAYTlKCFVatoN7ORX3UcmHPA5UtQQClj5Gkh4VN434jDQz/6qVDF4lR9hHmGTv5T04y3uB0F+KfTV/t7VZhiM6qxkEHyxvtP1w+vBVf4kmNErdzjhdOuwueNsn5HkFSxgVOf2k5k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981585050948.1282005407236; Wed, 20 May 2020 06:33:05 -0700 (PDT) Received: from localhost ([::1]:54288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOqF-0002IY-QT for importer@patchew.org; Wed, 20 May 2020 09:33:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeD-0002EW-KS for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:37 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:37124 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeC-0000J0-AY for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:37 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-279-70bRxdEOPKenfAXzdrTccQ-1; Wed, 20 May 2020 09:20:33 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A647D835B42; Wed, 20 May 2020 13:20:31 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id CAA0782A1D; Wed, 20 May 2020 13:20:21 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id EFB3D9D58; Wed, 20 May 2020 15:20:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=i1JF1/s5d2KxdED5roCcOah1am+4MqlOUBOB584bBVA=; b=KjMMBQnReK6o3MAORWATidajBw8VRyTCCCOZVMn/Z98Z1fLw7I4Mwndg+HPrfH24Bqb+Pp B4JVe3pw9ZpmwytNI0SqaiiNI4JJw2E/7zOMAWaPSFR7cRHMmOo//E1nTqixtRL1g/UcDj B/QVh8nfORzuuy38vUgwDpj/jw5NScY= X-MC-Unique: 70bRxdEOPKenfAXzdrTccQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 09/22] acpi: ged: rename event memory region Date: Wed, 20 May 2020 15:19:50 +0200 Message-Id: <20200520132003.9492-10-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.81; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 04:09:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Rename memory region and callbacks and ops to carry "evt" in the name because a second region will be added shortly. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedow Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/acpi/generic_event_device.h | 2 +- hw/acpi/generic_event_device.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/gener= ic_event_device.h index 83917de02425..90a9180db572 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -86,7 +86,7 @@ #define ACPI_GED_NVDIMM_HOTPLUG_EVT 0x4 =20 typedef struct GEDState { - MemoryRegion io; + MemoryRegion evt; uint32_t sel; } GEDState; =20 diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index b1cbdd86b66c..1cb34111e59a 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -142,7 +142,7 @@ void build_ged_aml(Aml *table, const char *name, Hotplu= gHandler *hotplug_dev, } =20 /* Memory read by the GED _EVT AML dynamic method */ -static uint64_t ged_read(void *opaque, hwaddr addr, unsigned size) +static uint64_t ged_evt_read(void *opaque, hwaddr addr, unsigned size) { uint64_t val =3D 0; GEDState *ged_st =3D opaque; @@ -161,14 +161,14 @@ static uint64_t ged_read(void *opaque, hwaddr addr, u= nsigned size) } =20 /* Nothing is expected to be written to the GED memory region */ -static void ged_write(void *opaque, hwaddr addr, uint64_t data, - unsigned int size) +static void ged_evt_write(void *opaque, hwaddr addr, uint64_t data, + unsigned int size) { } =20 -static const MemoryRegionOps ged_ops =3D { - .read =3D ged_read, - .write =3D ged_write, +static const MemoryRegionOps ged_evt_ops =3D { + .read =3D ged_evt_read, + .write =3D ged_evt_write, .endianness =3D DEVICE_LITTLE_ENDIAN, .valid =3D { .min_access_size =3D 4, @@ -287,9 +287,9 @@ static void acpi_ged_initfn(Object *obj) SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); GEDState *ged_st =3D &s->ged_state; =20 - memory_region_init_io(&ged_st->io, obj, &ged_ops, ged_st, + memory_region_init_io(&ged_st->evt, obj, &ged_evt_ops, ged_st, TYPE_ACPI_GED, ACPI_GED_EVT_SEL_LEN); - sysbus_init_mmio(sbd, &ged_st->io); + sysbus_init_mmio(sbd, &ged_st->evt); =20 sysbus_init_irq(sbd, &s->irq); =20 --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981081; cv=none; d=zohomail.com; s=zohoarc; b=fj82TfX+8E73dVDwLSmy9FC1QRracsIYoDTANw4G3LiRKFLwjsVCcjZ/NBBO9ef1nwM8aAR731z4DWoPWctcksV5fhJBHW8JRYUR0y185C765+9gJa+ONMjoRDsC/TFwccIKYVW7RF7hrSSotKP+jOlkhFRHVrmfL/7aurGMZ6A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981081; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=y4l/wLNM+Ws5zx05lfTKUy0HcJz6AmubwM0kMg2Czgk=; b=oBl5dU5cpeDIaiw2lyQa4b6ebb35DWpQt6nlLo6V9k6BWBRlR8TK5ZN1qheLw7h40fRLIzfBisyuGIsWX7UzMFsqvmW5tfk1baSVUnmM+z2a3YKJkPwBCMLdQJV4sOOC7znE4YmIAkUWbuwj4Gu40XtybQTEXURlTBfJpSz21nw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981081090942.3281427395939; Wed, 20 May 2020 06:24:41 -0700 (PDT) Received: from localhost ([::1]:44726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOi7-0001xS-Rl for importer@patchew.org; Wed, 20 May 2020 09:24:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47780) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeC-0002BI-Fb for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:36 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:23785 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe9-0000I9-Vh for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:35 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-302-xEFuaHAUMYKws5UVsgIEeQ-1; Wed, 20 May 2020 09:20:31 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AE9E31005510; Wed, 20 May 2020 13:20:24 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF3065D9CA; Wed, 20 May 2020 13:20:21 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 060249D59; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=y4l/wLNM+Ws5zx05lfTKUy0HcJz6AmubwM0kMg2Czgk=; b=grEMs9WzUeLWzbYwL/KOqkHtSCDSRKUp6NxHeQmiQXNtC+nJot88ri6pbXMG9wnms6W6nh TOezBfGFyZu36XLaihrRgaFLkhuZ8xTuzxXH0kT3v59wpIQAyvumrVAi3mvnihAddvbJrR uql2ED9i9W+LAQI9SYxpy65DR5QgCFw= X-MC-Unique: xEFuaHAUMYKws5UVsgIEeQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 10/22] acpi: ged: add control regs Date: Wed, 20 May 2020 15:19:51 +0200 Message-Id: <20200520132003.9492-11-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add control regs (sleep, reset) for hw-reduced acpi. Signed-off-by: Gerd Hoffmann --- include/hw/acpi/generic_event_device.h | 7 ++++ hw/acpi/generic_event_device.c | 44 ++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/gener= ic_event_device.h index 90a9180db572..474c92198080 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -72,6 +72,12 @@ #define ACPI_GED_EVT_SEL_OFFSET 0x0 #define ACPI_GED_EVT_SEL_LEN 0x4 =20 +#define ACPI_GED_REG_SLEEP_CTL 0x00 +#define ACPI_GED_REG_SLEEP_STS 0x01 +#define ACPI_GED_REG_RESET 0x02 +#define ACPI_GED_RESET_VALUE 0x42 +#define ACPI_GED_REG_COUNT 0x03 + #define GED_DEVICE "GED" #define AML_GED_EVT_REG "EREG" #define AML_GED_EVT_SEL "ESEL" @@ -87,6 +93,7 @@ =20 typedef struct GEDState { MemoryRegion evt; + MemoryRegion regs; uint32_t sel; } GEDState; =20 diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index 1cb34111e59a..3072fb4ab32b 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -20,6 +20,7 @@ #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/error-report.h" +#include "sysemu/runstate.h" =20 static const uint32_t ged_supported_events[] =3D { ACPI_GED_MEM_HOTPLUG_EVT, @@ -176,6 +177,45 @@ static const MemoryRegionOps ged_evt_ops =3D { }, }; =20 +static uint64_t ged_regs_read(void *opaque, hwaddr addr, unsigned size) +{ + return 0; +} + +static void ged_regs_write(void *opaque, hwaddr addr, uint64_t data, + unsigned int size) +{ + bool slp_en; + int slp_typ; + + switch (addr) { + case ACPI_GED_REG_SLEEP_CTL: + slp_typ =3D (data >> 2) & 0x07; + slp_en =3D (data >> 5) & 0x01; + if (slp_en && slp_typ =3D=3D 5) { + qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); + } + return; + case ACPI_GED_REG_SLEEP_STS: + return; + case ACPI_GED_REG_RESET: + if (data =3D=3D ACPI_GED_RESET_VALUE) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); + } + return; + } +} + +static const MemoryRegionOps ged_regs_ops =3D { + .read =3D ged_regs_read, + .write =3D ged_regs_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 1, + }, +}; + static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { @@ -305,6 +345,10 @@ static void acpi_ged_initfn(Object *obj) sysbus_init_mmio(sbd, &s->container_memhp); acpi_memory_hotplug_init(&s->container_memhp, OBJECT(dev), &s->memhp_state, 0); + + memory_region_init_io(&ged_st->regs, obj, &ged_regs_ops, ged_st, + TYPE_ACPI_GED "-regs", ACPI_GED_REG_COUNT); + sysbus_init_mmio(sbd, &ged_st->regs); } =20 static void acpi_ged_class_init(ObjectClass *class, void *data) --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981548; cv=none; d=zohomail.com; s=zohoarc; b=WRgcvGwTV264+XVGLQWJuz1oJm+F1uaaJXpaXLjUlJpG0ySmaseTd9bJt6AtvyzDNzFiuBMjuMBpNZa1CnC3R/da+H8PgB7F4/P7GLo7cIT4ddZ4AouZGk2Mkmee6uboDk3R6OPUKiDqSZDMxXz2B0VGrYpOS6Ofp7lei8ghfgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981548; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=yL+6hHgQ5mwgkDZlEEeB9fTkTZmIC02loIxG6Wm0FRc=; b=ZUJI9C10tkMeUzGLwEVXsYmanwJgn5VrPmbG7akSmGdBvW9OzZ79O92+0Vq6AxWQtsMf1muOEmUzxz7eodKuRceC6G00vdRGMmi0xedsTfcOJEqoA31LAu6waRxMMM1MZqqb+Fkkzvd67CcaIPPMXDu64OD2xEYggA0dXY6ueUo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 158998154813920.19299922714731; Wed, 20 May 2020 06:32:28 -0700 (PDT) Received: from localhost ([::1]:50776 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOpd-0000ZN-SG for importer@patchew.org; Wed, 20 May 2020 09:32:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeN-0002TZ-72 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:47 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:37686 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeF-0000Ks-A7 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:46 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-438-sJeM_RbmM_W2-MXB1-1Nlw-1; Wed, 20 May 2020 09:20:36 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 20D5C8015D1; Wed, 20 May 2020 13:20:35 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id E20B960BEC; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 11F6F9D5A; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980838; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=yL+6hHgQ5mwgkDZlEEeB9fTkTZmIC02loIxG6Wm0FRc=; b=HT0WOBc9qBgZKok1GJp8OVNwCVWDnyBU490xm84EFJhOJfm29uFWDe88dMRs9iGAMpJxpC u1zPw/N8fTeKDRWEnIQQCCEKaymBAvN4wbgnpkYnEE8TV5zJ2q7GdR9Id9kioVmO7hMvKa NH2Woa9Q0jCSdls5KsScZQCqkvSM78A= X-MC-Unique: sJeM_RbmM_W2-MXB1-1Nlw-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 11/22] acpi: ged: add x86 device variant. Date: Wed, 20 May 2020 15:19:52 +0200 Message-Id: <20200520132003.9492-12-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Set AcpiDeviceIfClass->madt_cpu, otherwise identical to TYPE_ACPI_GED. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov --- include/hw/acpi/generic_event_device.h | 4 +++ hw/i386/generic_event_device_x86.c | 36 ++++++++++++++++++++++++++ hw/i386/Makefile.objs | 1 + 3 files changed, 41 insertions(+) create mode 100644 hw/i386/generic_event_device_x86.c diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/gener= ic_event_device.h index 474c92198080..9687cb524258 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -69,6 +69,10 @@ #define ACPI_GED(obj) \ OBJECT_CHECK(AcpiGedState, (obj), TYPE_ACPI_GED) =20 +#define TYPE_ACPI_GED_X86 "acpi-ged-x86" +#define ACPI_GED_X86(obj) \ + OBJECT_CHECK(AcpiGedX86State, (obj), TYPE_ACPI_GED_X86) + #define ACPI_GED_EVT_SEL_OFFSET 0x0 #define ACPI_GED_EVT_SEL_LEN 0x4 =20 diff --git a/hw/i386/generic_event_device_x86.c b/hw/i386/generic_event_dev= ice_x86.c new file mode 100644 index 000000000000..e26fb02a2ef6 --- /dev/null +++ b/hw/i386/generic_event_device_x86.c @@ -0,0 +1,36 @@ +/* + * x86 variant of the generic event device for hw reduced acpi + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + */ + +#include "qemu/osdep.h" +#include "hw/acpi/generic_event_device.h" +#include "hw/i386/pc.h" + +static void acpi_ged_x86_class_init(ObjectClass *class, void *data) +{ + AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_CLASS(class); + + adevc->madt_cpu =3D pc_madt_cpu_entry; +} + +static const TypeInfo acpi_ged_x86_info =3D { + .name =3D TYPE_ACPI_GED_X86, + .parent =3D TYPE_ACPI_GED, + .class_init =3D acpi_ged_x86_class_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_HOTPLUG_HANDLER }, + { TYPE_ACPI_DEVICE_IF }, + { } + } +}; + +static void acpi_ged_x86_register_types(void) +{ + type_register_static(&acpi_ged_x86_info); +} + +type_init(acpi_ged_x86_register_types) diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs index 6abc74551a72..622739305882 100644 --- a/hw/i386/Makefile.objs +++ b/hw/i386/Makefile.objs @@ -17,4 +17,5 @@ obj-$(CONFIG_PC) +=3D port92.o =20 obj-y +=3D kvmvapic.o obj-$(CONFIG_ACPI) +=3D acpi-common.o +obj-$(CONFIG_ACPI_HW_REDUCED) +=3D generic_event_device_x86.o obj-$(CONFIG_PC) +=3D acpi-build.o --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981112; cv=none; d=zohomail.com; s=zohoarc; b=nLVR9mPqOdwIfuNZnGEa9zci+Vgz15yO0pzBBM30lSvlvCJ2jIFRKlbvZXuh3il81oFX5vAUIuOPHt4wQQrqZYzCOFYA4NoNHFef0x+DQvTRtKygxMHSAg6igKW+sOq9GLRATzbkMK7Rdpgzt+t41/vnZ/rV0mR7DA7sr1F7ePI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981112; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=32ngCCY5XQvXtiBfjV3PXfYOD4t6Ktpz2yP0bM/R6jk=; b=gSJ3RW7jmCk1MTVkT+1g8RtOMzEYXIBFDIoB0el/+yileUVBlDn9IIti3Ss+kDEYo76+8cOkI1dQTL150mZXDSTobNQSlgfAeGzE/lrjBhRZ4nLCHLf2D2N8Yn3vLVaftFX+zkFWigTPQrDkmWAVbCnqe8wy9dkG0MY3xfVpl+w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981112699380.2772145209941; Wed, 20 May 2020 06:25:12 -0700 (PDT) Received: from localhost ([::1]:48028 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOid-0003a1-HU for importer@patchew.org; Wed, 20 May 2020 09:25:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe5-0001sc-U6 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:29 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:32739 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0000FT-AN for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:29 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-466-IX0FXKg7N7q2837GRwzVaQ-1; Wed, 20 May 2020 09:20:25 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 53A371902EA0; Wed, 20 May 2020 13:20:24 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id E695D5C1BE; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 1DCA99D5B; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=32ngCCY5XQvXtiBfjV3PXfYOD4t6Ktpz2yP0bM/R6jk=; b=Ufeo10wM1uoffesx9cVHPoKIVoUWakJ0NCqIXKRYCN+DhNt6sWlsap11GzUTC+0HSwx4Sy 0jjtyS3yvWnV3NuMaAyetcwppCex8Bi/4dG8Ahr5syoVb6tvcwJNZxMdkvBBA6cbnzFLI/ Hbwp5WJe0iLzrMerx6ZNk+F3OEgedBs= X-MC-Unique: IX0FXKg7N7q2837GRwzVaQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 12/22] acpi: move acpi_dsdt_add_power_button() to ged Date: Wed, 20 May 2020 15:19:53 +0200 Message-Id: <20200520132003.9492-13-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Allow reuse for microvm. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/acpi/generic_event_device.h | 1 + hw/acpi/generic_event_device.c | 8 ++++++++ hw/arm/virt-acpi-build.c | 8 -------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/gener= ic_event_device.h index 9687cb524258..ebed1ffe4231 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -113,5 +113,6 @@ typedef struct AcpiGedState { =20 void build_ged_aml(Aml *table, const char* name, HotplugHandler *hotplug_d= ev, uint32_t ged_irq, AmlRegionSpace rs, hwaddr ged_base); +void acpi_dsdt_add_power_button(Aml *scope); =20 #endif diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index 3072fb4ab32b..cde50da5b3ca 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -142,6 +142,14 @@ void build_ged_aml(Aml *table, const char *name, Hotpl= ugHandler *hotplug_dev, aml_append(table, dev); } =20 +void acpi_dsdt_add_power_button(Aml *scope) +{ + Aml *dev =3D aml_device(ACPI_POWER_BUTTON_DEVICE); + aml_append(dev, aml_name_decl("_HID", aml_string("PNP0C0C"))); + aml_append(dev, aml_name_decl("_UID", aml_int(0))); + aml_append(scope, dev); +} + /* Memory read by the GED _EVT AML dynamic method */ static uint64_t ged_evt_read(void *opaque, hwaddr addr, unsigned size) { diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 1b0a584c7b62..49eacc622219 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -354,14 +354,6 @@ static void acpi_dsdt_add_gpio(Aml *scope, const MemMa= pEntry *gpio_memmap, aml_append(scope, dev); } =20 -static void acpi_dsdt_add_power_button(Aml *scope) -{ - Aml *dev =3D aml_device(ACPI_POWER_BUTTON_DEVICE); - aml_append(dev, aml_name_decl("_HID", aml_string("PNP0C0C"))); - aml_append(dev, aml_name_decl("_UID", aml_int(0))); - aml_append(scope, dev); -} - static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) { --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981421; cv=none; d=zohomail.com; s=zohoarc; b=B4szcJn/uS9dq73FX27eLnzDPnlxe5f1WD89z4fwKdHApWZDD2SdxnQVIt5RHxynLlBfh2n0LP3Fg4V4FxOXxxIb+DjR2ALbu7qqxqW2jPMO9jPpLAjpCEiFQa5YLMrYOGom3CTHRcYLeyGpMdzGiTcoAGwWEFjAv6HwDs3Lb6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981421; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=DhTu4SHuEE+qnNe/cas8B3sShJ0o08ypXNC4O0JdhEc=; b=lH0DcN/HCHLsMA6dpPTyvfrrYrLsLhE9Cy+/LPFwkW+MOQXmOuRx7KeZAxBRoQy7poKE4f7QHbMVQuMKtem8xi3b6JJ+7dPAWd8xsb9rL1Vy8lFKaAxg9atcHgUXOVQqV4akj1vdg5H9J8KK3YJUCphOUfaIleUrFg//RNmXEAo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981421448890.1253548679624; Wed, 20 May 2020 06:30:21 -0700 (PDT) Received: from localhost ([::1]:44194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOnc-0005V5-0L for importer@patchew.org; Wed, 20 May 2020 09:30:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47866) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeN-0002Ta-97 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:47 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:25239 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeJ-0000NF-3Z for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:46 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-396-LJnAUd0KMz--apsdEF2McA-1; Wed, 20 May 2020 09:20:37 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2EC98EC1A7; Wed, 20 May 2020 13:20:36 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3B00A6EA22; Wed, 20 May 2020 13:20:27 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 26D349D60; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980841; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=DhTu4SHuEE+qnNe/cas8B3sShJ0o08ypXNC4O0JdhEc=; b=a8knkYXH8WEjgk1RHmXavmagjQ+g2x80EHTucRDTG6YkwfmUw0l4VKrRR3/4KTCiMjsUNx plPvBHSXGH302vDo3kQXYjOiGwD4ogI9SpGWCkjk3TVFF7GH9QJuBjeguKfAAe6D8d0pOY 6aNBpCZOtQyB8PO4wGpugp3uyUU7iFM= X-MC-Unique: LJnAUd0KMz--apsdEF2McA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 13/22] x86: coldplug cpus Date: Wed, 20 May 2020 15:19:54 +0200 Message-Id: <20200520132003.9492-14-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.61; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 02:22:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" microvm needs this, for correct madt creation (make sure enable bit is set). Signed-off-by: Gerd Hoffmann --- hw/i386/x86.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 7a3bc7ab6639..ac7a0a958781 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -118,6 +118,7 @@ uint32_t x86_cpu_apic_id_from_index(X86MachineState *x8= 6ms, =20 void x86_cpu_new(X86MachineState *x86ms, int64_t apic_id, Error **errp) { + MachineClass *mc =3D MACHINE_GET_CLASS(x86ms); Object *cpu =3D NULL; Error *local_err =3D NULL; =20 @@ -126,6 +127,16 @@ void x86_cpu_new(X86MachineState *x86ms, int64_t apic_= id, Error **errp) object_property_set_uint(cpu, apic_id, "apic-id", &local_err); object_property_set_bool(cpu, true, "realized", &local_err); =20 + if (!mc->has_hotpluggable_cpus) { + /* coldplug cpu */ + MachineState *ms =3D MACHINE(x86ms); + int i =3D 0; + while (ms->possible_cpus->cpus[i].arch_id !=3D apic_id) { + i++; + } + ms->possible_cpus->cpus[i].cpu =3D cpu; + } + object_unref(cpu); error_propagate(errp, local_err); } --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981297; cv=none; d=zohomail.com; s=zohoarc; b=HFu4yDUVMYdD/S0bVFJB9OlYuVnqfSA1ETlpzS/lsi6MiHOPWs6qA9dSo6ncMCe3BPO8Xot8j18KBO2plwKfNvtZvGLui4HnuKn6AqxTzJx9RuxIdbQiaManlWRHf+N0gToJGNPQcZeex+WXe4J2cUumQf+mvNqyhq4RYvYQwhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981297; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=U3Kp89IQYcNRqAlCdrRlNpaRks/G1xSNRxYkCXPLrAk=; b=lYuBIIBH04m0hGhLA7o9WHfteP8gsakRasTSqeCV2bzbskItvm8xplGa3D5BE3QET+FSX5HrP4mVpYeDWvI/rn4RzdjbAWLp1KmCj6yIC+ItiHKrqChh8QIeGmMhLSwRJ83x/XxOlwEJQ/mx1viNAYsG5/NLCe1wFTcDNqIb3Eg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981297536291.8900496114725; Wed, 20 May 2020 06:28:17 -0700 (PDT) Received: from localhost ([::1]:32916 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOlb-0000x7-U0 for importer@patchew.org; Wed, 20 May 2020 09:28:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47804) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeE-0002Fx-8i for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:38 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:46066 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeB-0000Im-Ju for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:37 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-122-qFKAUKJBPm2ybdlSypxsdg-1; Wed, 20 May 2020 09:20:33 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BA5F5835B45; Wed, 20 May 2020 13:20:31 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 52A3A10016E8; Wed, 20 May 2020 13:20:30 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 2FD3C9D61; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980834; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=U3Kp89IQYcNRqAlCdrRlNpaRks/G1xSNRxYkCXPLrAk=; b=MJA/PaOu2XQhrgEnEUuX/Js9lxc+h6kDe77b5aRkVNxEU+1MsHJ/7VLQhjwkCP7jjrzLCa k5UDRzisO1pcbUKS2OSBR7QXMWjzLt+VBq+yCsZozhkAjXxO5/7F1sUMIZgeZyNtnq6GNB Xp/zvKrMlMUMuQD/gqac/wnk6Fpz3tg= X-MC-Unique: qFKAUKJBPm2ybdlSypxsdg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 14/22] microvm: use 2G split unconditionally Date: Wed, 20 May 2020 15:19:55 +0200 Message-Id: <20200520132003.9492-15-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.61; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 02:22:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Looks like the logiv was copied over from q35. q35 does this for backward compatibility, there is no reason to do this on microvm though. So split @ 2G unconditionally. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/microvm.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 867d3d652145..b8f0d3283758 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -170,23 +170,9 @@ static void microvm_memory_init(MicrovmMachineState *m= ms) MemoryRegion *ram_below_4g, *ram_above_4g; MemoryRegion *system_memory =3D get_system_memory(); FWCfgState *fw_cfg; - ram_addr_t lowmem; + ram_addr_t lowmem =3D 0x80000000; /* 2G */ int i; =20 - /* - * Check whether RAM fits below 4G (leaving 1/2 GByte for IO memory - * and 256 Mbytes for PCI Express Enhanced Configuration Access Mapping - * also known as MMCFG). - * If it doesn't, we need to split it in chunks below and above 4G. - * In any case, try to make sure that guest addresses aligned at - * 1G boundaries get mapped to host addresses aligned at 1G boundaries. - */ - if (machine->ram_size >=3D 0xb0000000) { - lowmem =3D 0x80000000; - } else { - lowmem =3D 0xb0000000; - } - /* * Handle the machine opt max-ram-below-4g. It is basically doing * min(qemu limit, user limit). --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589980932; cv=none; d=zohomail.com; s=zohoarc; b=eTZ2O2aooNNhSkZnk2yZjWMqTodaKihHZDwUQ+vip5oMRbzG7LN8FczArFlD/1J2JKsBG1IoZ7+zRTcWomPwIweOlcYxWvkTsdmJoai9Y3P6+qYSpZHq6I7RjdN1AfKKtcSbKiAsrZ2AXnkufbXThkIm5e7dtfV/zDH0vNaWkfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589980932; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ayTOjZA+mWiirp+gT+H+MOdev/oonlWKrbzvptzCSKI=; b=OSOH+BcCYZAQcQKxIhWJ2/1nEo4cF4+ylez2itYbl2n2KtlOzjuqlUD+2n7WK15bZekR2dkPib2H8c4Raw4bc2hbN9zV/5jWvHHoNo+npbfTUyH9Ky9u8rsktYZc72lGX+JJlSgy4VFAwBwK6J+/fjFaTNA0a3A5ES8ptqy14SI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589980932212185.51054374095008; Wed, 20 May 2020 06:22:12 -0700 (PDT) Received: from localhost ([::1]:60314 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOfi-00055t-WD for importer@patchew.org; Wed, 20 May 2020 09:22:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47660) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0001pl-OY for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:28 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:44100 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe3-0000ER-3v for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:28 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-427-_yzXIlu4Mo-gV2jgqL4erQ-1; Wed, 20 May 2020 09:20:24 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 588028018AD; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 009AF2E16D; Wed, 20 May 2020 13:20:22 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3A4C49D63; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980826; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=ayTOjZA+mWiirp+gT+H+MOdev/oonlWKrbzvptzCSKI=; b=JJo2I2fLa2ps+uBXXz2h/eyQx3nuS/B1m2S83nZI+YBq1rCUCZL690UsN22dpy5nL5gIXd 7zkKVjd1t0obAR5/R4qVo5W87WI6yf5OALzg4ghpYjxnyw98K0WoCL1433N9LtOaC86jmh wcKaeZu6eH5aaMSigh2NhFAUlAwvtso= X-MC-Unique: _yzXIlu4Mo-gV2jgqL4erQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 15/22] microvm: make virtio irq base runtime configurable Date: Wed, 20 May 2020 15:19:56 +0200 Message-Id: <20200520132003.9492-16-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Gerd Hoffmann Reviewed-by: Sergio Lopez Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/i386/microvm.h | 2 +- hw/i386/microvm.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h index ba68d1f22bb3..2709306c4016 100644 --- a/include/hw/i386/microvm.h +++ b/include/hw/i386/microvm.h @@ -27,7 +27,6 @@ =20 /* Platform virtio definitions */ #define VIRTIO_MMIO_BASE 0xc0000000 -#define VIRTIO_IRQ_BASE 5 #define VIRTIO_NUM_TRANSPORTS 8 #define VIRTIO_CMDLINE_MAXLEN 64 =20 @@ -57,6 +56,7 @@ typedef struct { bool auto_kernel_cmdline; =20 /* Machine state */ + uint32_t virtio_irq_base; bool kernel_cmdline_fixed; } MicrovmMachineState; =20 diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index b8f0d3283758..ea4460714a99 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -121,10 +121,11 @@ static void microvm_devices_init(MicrovmMachineState = *mms) =20 kvmclock_create(); =20 + mms->virtio_irq_base =3D 8; for (i =3D 0; i < VIRTIO_NUM_TRANSPORTS; i++) { sysbus_create_simple("virtio-mmio", VIRTIO_MMIO_BASE + i * 512, - x86ms->gsi[VIRTIO_IRQ_BASE + i]); + x86ms->gsi[mms->virtio_irq_base + i]); } =20 /* Optional and legacy devices */ @@ -246,7 +247,7 @@ static void microvm_memory_init(MicrovmMachineState *mm= s) x86ms->ioapic_as =3D &address_space_memory; } =20 -static gchar *microvm_get_mmio_cmdline(gchar *name) +static gchar *microvm_get_mmio_cmdline(gchar *name, uint32_t virtio_irq_ba= se) { gchar *cmdline; gchar *separator; @@ -266,7 +267,7 @@ static gchar *microvm_get_mmio_cmdline(gchar *name) ret =3D g_snprintf(cmdline, VIRTIO_CMDLINE_MAXLEN, " virtio_mmio.device=3D512@0x%lx:%ld", VIRTIO_MMIO_BASE + index * 512, - VIRTIO_IRQ_BASE + index); + virtio_irq_base + index); if (ret < 0 || ret >=3D VIRTIO_CMDLINE_MAXLEN) { g_free(cmdline); return NULL; @@ -278,6 +279,7 @@ static gchar *microvm_get_mmio_cmdline(gchar *name) static void microvm_fix_kernel_cmdline(MachineState *machine) { X86MachineState *x86ms =3D X86_MACHINE(machine); + MicrovmMachineState *mms =3D MICROVM_MACHINE(machine); BusState *bus; BusChild *kid; char *cmdline; @@ -301,7 +303,8 @@ static void microvm_fix_kernel_cmdline(MachineState *ma= chine) BusState *mmio_bus =3D &mmio_virtio_bus->parent_obj; =20 if (!QTAILQ_EMPTY(&mmio_bus->children)) { - gchar *mmio_cmdline =3D microvm_get_mmio_cmdline(mmio_bus-= >name); + gchar *mmio_cmdline =3D microvm_get_mmio_cmdline + (mmio_bus->name, mms->virtio_irq_base); if (mmio_cmdline) { char *newcmd =3D g_strjoin(NULL, cmdline, mmio_cmdline= , NULL); g_free(mmio_cmdline); --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981317; cv=none; d=zohomail.com; s=zohoarc; b=SMp/zTUs5l6RxWjDv7EYa3tYh9zTR/WjYzsKQLFL0hHZAgl7JXIw/e8TIIUPO+I4tBgZ4EvcfpSvRgsazB9MYXnGDb0Oh1K5yInaQzYi8yaGBJ29+gSzTA4nj/0RJWBh6ze5sr8Ew6x6WcKZzGrHUPhqvpsOIH0QMjyWaxwgzB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981317; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=PBtQLgkYjfF+X6AIUo+9FpfGHUUBSO9SnuABdGvUHRU=; b=QsehB2FtlJ4gi28XhyiF0EvBCwlRbaYQThvuJTEg/F1JQwXNVmx9E9aXjmPl3RM1GGjnlcfEr4PfTf1DL502mzVAGtyE68lU2gjXfxgPsvrOTVu6Up2SqJSvXcHG0wgJTukERf5z1WKIaCZNasY/d4nS6T9+w1RWfY8KUuUK9fA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981317158888.3975985985165; Wed, 20 May 2020 06:28:37 -0700 (PDT) Received: from localhost ([::1]:34938 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOlv-0001ka-On for importer@patchew.org; Wed, 20 May 2020 09:28:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47854) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeL-0002Py-14 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:45 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:29105 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeD-0000Jg-L9 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:43 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-306-nVqUH29ANB2phOtxPKh7FQ-1; Wed, 20 May 2020 09:20:34 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5AF151800D42; Wed, 20 May 2020 13:20:33 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 643071057051; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 4B8739D68; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=PBtQLgkYjfF+X6AIUo+9FpfGHUUBSO9SnuABdGvUHRU=; b=PCm2BG8KQiZtK8YobOdktGHcO4/6i8oPQrqgRmMJb1EDvYjHuBo/+fgxChDqnRPurHiMgE 2QK9VG73W+YJQ0+cda1L/2qRFkKZbW9IAIl1v7c5Kzm8F/V9rQ6ROWh6vmJd98hIjGK3C9 mIs1cvj1CEY9I0H6XFivGudC0lbxGMY= X-MC-Unique: nVqUH29ANB2phOtxPKh7FQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 16/22] microvm/acpi: add minimal acpi support Date: Wed, 20 May 2020 15:19:57 +0200 Message-Id: <20200520132003.9492-17-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.61; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 02:22:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" $subject says all. Can be controlled using -M microvm,acpi=3Don/off. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov --- hw/i386/acpi-microvm.h | 6 ++ include/hw/i386/microvm.h | 9 ++ hw/i386/acpi-microvm.c | 182 ++++++++++++++++++++++++++++++++++++++ hw/i386/microvm.c | 37 ++++++++ hw/i386/Kconfig | 1 + hw/i386/Makefile.objs | 1 + 6 files changed, 236 insertions(+) create mode 100644 hw/i386/acpi-microvm.h create mode 100644 hw/i386/acpi-microvm.c diff --git a/hw/i386/acpi-microvm.h b/hw/i386/acpi-microvm.h new file mode 100644 index 000000000000..6a6c2967102b --- /dev/null +++ b/hw/i386/acpi-microvm.h @@ -0,0 +1,6 @@ +#ifndef HW_I386_ACPI_MICROVM_H +#define HW_I386_ACPI_MICROVM_H + +void acpi_setup_microvm(void); + +#endif diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h index 2709306c4016..ebd7f49d5de8 100644 --- a/include/hw/i386/microvm.h +++ b/include/hw/i386/microvm.h @@ -24,12 +24,18 @@ =20 #include "hw/boards.h" #include "hw/i386/x86.h" +#include "hw/acpi/acpi_dev_interface.h" =20 /* Platform virtio definitions */ #define VIRTIO_MMIO_BASE 0xc0000000 #define VIRTIO_NUM_TRANSPORTS 8 #define VIRTIO_CMDLINE_MAXLEN 64 =20 +#define GED_MMIO_BASE 0xc1000000 +#define GED_MMIO_BASE_MEMHP (GED_MMIO_BASE + 0x100) +#define GED_MMIO_BASE_REGS (GED_MMIO_BASE + 0x200) +#define GED_MMIO_IRQ 9 + /* Machine type options */ #define MICROVM_MACHINE_PIT "pit" #define MICROVM_MACHINE_PIC "pic" @@ -58,6 +64,9 @@ typedef struct { /* Machine state */ uint32_t virtio_irq_base; bool kernel_cmdline_fixed; + Notifier machine_done; + Notifier powerdown_req; + AcpiDeviceIf *acpi_dev; } MicrovmMachineState; =20 #define TYPE_MICROVM_MACHINE MACHINE_TYPE_NAME("microvm") diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c new file mode 100644 index 000000000000..d2dd024909cc --- /dev/null +++ b/hw/i386/acpi-microvm.c @@ -0,0 +1,182 @@ +/* Support for generating ACPI tables and passing them to Guests + * + * Copyright (C) 2008-2010 Kevin O'Connor + * Copyright (C) 2006 Fabrice Bellard + * Copyright (C) 2013 Red Hat Inc + * + * Author: Michael S. Tsirkin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" + +#include "exec/memory.h" +#include "hw/acpi/acpi.h" +#include "hw/acpi/aml-build.h" +#include "hw/acpi/bios-linker-loader.h" +#include "hw/acpi/generic_event_device.h" +#include "hw/acpi/utils.h" +#include "hw/boards.h" +#include "hw/i386/fw_cfg.h" +#include "hw/i386/microvm.h" + +#include "acpi-common.h" +#include "acpi-microvm.h" + +static void +build_dsdt_microvm(GArray *table_data, BIOSLinker *linker, + MicrovmMachineState *mms) +{ + X86MachineState *x86ms =3D X86_MACHINE(mms); + Aml *dsdt, *sb_scope, *scope, *pkg; + bool ambiguous; + Object *isabus; + + isabus =3D object_resolve_path_type("", TYPE_ISA_BUS, &ambiguous); + assert(isabus); + assert(!ambiguous); + + dsdt =3D init_aml_allocator(); + + /* Reserve space for header */ + acpi_data_push(dsdt->buf, sizeof(AcpiTableHeader)); + + sb_scope =3D aml_scope("_SB"); + fw_cfg_add_acpi_dsdt(sb_scope, x86ms->fw_cfg); + isa_build_aml(ISA_BUS(isabus), sb_scope); + build_ged_aml(sb_scope, GED_DEVICE, HOTPLUG_HANDLER(mms->acpi_dev), + GED_MMIO_IRQ, AML_SYSTEM_MEMORY, GED_MMIO_BASE); + acpi_dsdt_add_power_button(sb_scope); + aml_append(dsdt, sb_scope); + + scope =3D aml_scope("\\"); + pkg =3D aml_package(4); + aml_append(pkg, aml_int(5)); /* SLEEP_CONTROL_REG.SLP_TYP */ + aml_append(pkg, aml_int(0)); /* ignored */ + aml_append(pkg, aml_int(0)); /* reserved */ + aml_append(pkg, aml_int(0)); /* reserved */ + aml_append(scope, aml_name_decl("_S5", pkg)); + aml_append(dsdt, scope); + + /* copy AML table into ACPI tables blob and patch header there */ + g_array_append_vals(table_data, dsdt->buf->data, dsdt->buf->len); + build_header(linker, table_data, + (void *)(table_data->data + table_data->len - dsdt->buf->len), + "DSDT", dsdt->buf->len, 5, NULL, NULL); + free_aml_allocator(); +} + +static void acpi_build_microvm(AcpiBuildTables *tables, + MicrovmMachineState *mms) +{ + MachineState *machine =3D MACHINE(mms); + GArray *table_offsets; + GArray *tables_blob =3D tables->table_data; + unsigned dsdt, xsdt; + AcpiFadtData pmfadt =3D { + .rev =3D 5, + .minor_ver =3D 1, + .flags =3D ((1 << ACPI_FADT_F_HW_REDUCED_ACPI) | + (1 << ACPI_FADT_F_RESET_REG_SUP)), + .sleep_ctl =3D { + .space_id =3D AML_AS_SYSTEM_MEMORY, + .bit_width =3D 8, + .address =3D GED_MMIO_BASE_REGS + ACPI_GED_REG_SLEEP_CTL, + }, + .sleep_sts =3D { + .space_id =3D AML_AS_SYSTEM_MEMORY, + .bit_width =3D 8, + .address =3D GED_MMIO_BASE_REGS + ACPI_GED_REG_SLEEP_STS, + }, + .reset_reg =3D { + .space_id =3D AML_AS_SYSTEM_MEMORY, + .bit_width =3D 8, + .address =3D GED_MMIO_BASE_REGS + ACPI_GED_REG_RESET, + }, + .reset_val =3D ACPI_GED_RESET_VALUE, + }; + + table_offsets =3D g_array_new(false, true /* clear */, + sizeof(uint32_t)); + bios_linker_loader_alloc(tables->linker, + ACPI_BUILD_TABLE_FILE, tables_blob, + 64 /* Ensure FACS is aligned */, + false /* high memory */); + + dsdt =3D tables_blob->len; + build_dsdt_microvm(tables_blob, tables->linker, mms); + + pmfadt.dsdt_tbl_offset =3D &dsdt; + pmfadt.xdsdt_tbl_offset =3D &dsdt; + acpi_add_table(table_offsets, tables_blob); + build_fadt(tables_blob, tables->linker, &pmfadt, NULL, NULL); + + acpi_add_table(table_offsets, tables_blob); + acpi_build_madt(tables_blob, tables->linker, X86_MACHINE(machine), + mms->acpi_dev, false); + + xsdt =3D tables_blob->len; + build_xsdt(tables_blob, tables->linker, table_offsets, NULL, NULL); + + /* RSDP is in FSEG memory, so allocate it separately */ + { + AcpiRsdpData rsdp_data =3D { + .revision =3D 2, + .oem_id =3D ACPI_BUILD_APPNAME6, + .xsdt_tbl_offset =3D &xsdt, + .rsdt_tbl_offset =3D NULL, + }; + build_rsdp(tables->rsdp, tables->linker, &rsdp_data); + } + + /* Cleanup memory that's no longer used. */ + g_array_free(table_offsets, true); +} + +static void acpi_build_no_update(void *build_opaque) +{ + /* nothing, microvm tables don't change at runtime */ +} + +void acpi_setup_microvm(void) +{ + MicrovmMachineState *mms =3D MICROVM_MACHINE(qdev_get_machine()); + X86MachineState *x86ms =3D X86_MACHINE(mms); + AcpiBuildTables tables; + + assert(x86ms->fw_cfg); + + if (!x86_machine_is_acpi_enabled(x86ms)) { + return; + } + + acpi_build_tables_init(&tables); + acpi_build_microvm(&tables, mms); + + /* Now expose it all to Guest */ + acpi_add_rom_blob(acpi_build_no_update, NULL, + tables.table_data, + ACPI_BUILD_TABLE_FILE, + ACPI_BUILD_TABLE_MAX_SIZE); + acpi_add_rom_blob(acpi_build_no_update, NULL, + tables.linker->cmd_blob, + "etc/table-loader", 0); + acpi_add_rom_blob(acpi_build_no_update, NULL, + tables.rsdp, + ACPI_BUILD_RSDP_FILE, 0); + + acpi_build_tables_cleanup(&tables, false); +} diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index ea4460714a99..b38321112baa 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -26,6 +26,8 @@ #include "sysemu/cpus.h" #include "sysemu/numa.h" #include "sysemu/reset.h" +#include "sysemu/runstate.h" +#include "acpi-microvm.h" =20 #include "hw/loader.h" #include "hw/irq.h" @@ -41,6 +43,8 @@ #include "hw/i386/e820_memory_layout.h" #include "hw/i386/fw_cfg.h" #include "hw/virtio/virtio-mmio.h" +#include "hw/acpi/acpi.h" +#include "hw/acpi/generic_event_device.h" =20 #include "cpu.h" #include "elf.h" @@ -129,6 +133,17 @@ static void microvm_devices_init(MicrovmMachineState *= mms) } =20 /* Optional and legacy devices */ + if (x86_machine_is_acpi_enabled(x86ms)) { + DeviceState *dev =3D qdev_create(NULL, TYPE_ACPI_GED_X86); + qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE); + /* sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, GED_MMIO_BASE_MEMHP); */ + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 2, GED_MMIO_BASE_REGS); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, + x86ms->gsi[GED_MMIO_IRQ]); + qdev_init_nofail(dev); + mms->acpi_dev =3D ACPI_DEVICE_IF(dev); + } =20 if (mms->pic =3D=3D ON_OFF_AUTO_ON || mms->pic =3D=3D ON_OFF_AUTO_AUTO= ) { qemu_irq *i8259; @@ -457,6 +472,23 @@ static void microvm_machine_set_auto_kernel_cmdline(Ob= ject *obj, bool value, mms->auto_kernel_cmdline =3D value; } =20 +static void microvm_machine_done(Notifier *notifier, void *data) +{ + acpi_setup_microvm(); +} + +static void microvm_powerdown_req(Notifier *notifier, void *data) +{ + MicrovmMachineState *mms =3D container_of(notifier, MicrovmMachineStat= e, + powerdown_req); + + if (mms->acpi_dev) { + Object *obj =3D OBJECT(mms->acpi_dev); + AcpiDeviceIfClass *adevc =3D ACPI_DEVICE_IF_GET_CLASS(obj); + adevc->send_event(mms->acpi_dev, ACPI_POWER_DOWN_STATUS); + } +} + static void microvm_machine_initfn(Object *obj) { MicrovmMachineState *mms =3D MICROVM_MACHINE(obj); @@ -471,6 +503,11 @@ static void microvm_machine_initfn(Object *obj) =20 /* State */ mms->kernel_cmdline_fixed =3D false; + + mms->machine_done.notify =3D microvm_machine_done; + qemu_add_machine_init_done_notifier(&mms->machine_done); + mms->powerdown_req.notify =3D microvm_powerdown_req; + qemu_register_powerdown_notifier(&mms->powerdown_req); } =20 static void microvm_class_init(ObjectClass *oc, void *data) diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index c93f32f6579d..be746bcb49eb 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -102,6 +102,7 @@ config MICROVM select I8259 select MC146818RTC select VIRTIO_MMIO + select ACPI_HW_REDUCED =20 config X86_IOMMU bool diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs index 622739305882..bbb2fe78f3cd 100644 --- a/hw/i386/Makefile.objs +++ b/hw/i386/Makefile.objs @@ -19,3 +19,4 @@ obj-y +=3D kvmvapic.o obj-$(CONFIG_ACPI) +=3D acpi-common.o obj-$(CONFIG_ACPI_HW_REDUCED) +=3D generic_event_device_x86.o obj-$(CONFIG_PC) +=3D acpi-build.o +obj-$(CONFIG_MICROVM) +=3D acpi-microvm.o --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981330; cv=none; d=zohomail.com; s=zohoarc; b=IGjmAndF1fuhTNPa7V0tbpvXnsjkXUvyO3TYyhM5lOA95CBKYKp8wqrzpEok7+OImCXLbm6c5lODfOk/ApcaKcg+0nJdHgky//6UQ0e9P5jDwGkmaqDOTJ5y5mWxn+lSLRF0JDDzMCq7/8snUm9YvhAnSGq9mK9cFBB9nilu/K8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981330; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Cs+xA9nlQJb+xFVefGhp9a99zyys5aZQFZRxKPaRqOU=; b=f5Bvl7dnuCPcg5biOuQ5Qk0ieyqG9jKVMrVQVDROXmqHvdmOZKT8onUzR4zKLbLMAlfDkB8QZPQcWCotJ0/MGisWEQwK2qAbcu2Kb0eBhAAdJ+Os/yyd6ZlxU8dGx7OE1eDk4JfISPHm6iACHxgCIataqdnT1UO+Qa0un5iX5mg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981330474283.3088178880457; Wed, 20 May 2020 06:28:50 -0700 (PDT) Received: from localhost ([::1]:35904 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOm9-0002Bb-6X for importer@patchew.org; Wed, 20 May 2020 09:28:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe8-0001zc-CT for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:32 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:38188 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe5-0000G0-BU for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:31 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-346-diUIxhKgPyGNqvQqPfzVsg-1; Wed, 20 May 2020 09:20:26 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 82DE6835B40; Wed, 20 May 2020 13:20:25 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 32D6D19451; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 549FD9D69; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980828; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=Cs+xA9nlQJb+xFVefGhp9a99zyys5aZQFZRxKPaRqOU=; b=aLxAm3S+HEY9OWWewY9F/EXTUalq8o4t1GFXXDPwpr4igbx/F5qyENeg66Vga89fhJ1KNU baBh2YCrkFa0ajbzMdtjKBQtnmlaRp9q0wAHaoUJrLaBD7uXys3nfiE05yWA7IiXbqaw2Q pCJn8Abq/gVf2gzmI1zcmBDqY3VL0AI= X-MC-Unique: diUIxhKgPyGNqvQqPfzVsg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 17/22] microvm/acpi: add acpi_dsdt_add_virtio() for x86 Date: Wed, 20 May 2020 15:19:58 +0200 Message-Id: <20200520132003.9492-18-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Makes x86 linux kernel find virtio-mmio devices automatically. Signed-off-by: Gerd Hoffmann Reviewed-by: Sergio Lopez Reviewed-by: Igor Mammedov --- hw/i386/acpi-microvm.c | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c index d2dd024909cc..12060939ff6c 100644 --- a/hw/i386/acpi-microvm.c +++ b/hw/i386/acpi-microvm.c @@ -21,6 +21,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/cutils.h" #include "qapi/error.h" =20 #include "exec/memory.h" @@ -32,10 +33,60 @@ #include "hw/boards.h" #include "hw/i386/fw_cfg.h" #include "hw/i386/microvm.h" +#include "hw/virtio/virtio-mmio.h" =20 #include "acpi-common.h" #include "acpi-microvm.h" =20 +static void acpi_dsdt_add_virtio(Aml *scope, + MicrovmMachineState *mms) +{ + gchar *separator; + long int index; + BusState *bus; + BusChild *kid; + + bus =3D sysbus_get_default(); + QTAILQ_FOREACH(kid, &bus->children, sibling) { + DeviceState *dev =3D kid->child; + Object *obj =3D object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MMIO); + + if (obj) { + VirtIOMMIOProxy *mmio =3D VIRTIO_MMIO(obj); + VirtioBusState *mmio_virtio_bus =3D &mmio->bus; + BusState *mmio_bus =3D &mmio_virtio_bus->parent_obj; + + if (QTAILQ_EMPTY(&mmio_bus->children)) { + continue; + } + separator =3D g_strrstr(mmio_bus->name, "."); + if (!separator) { + continue; + } + if (qemu_strtol(separator + 1, NULL, 10, &index) !=3D 0) { + continue; + } + + uint32_t irq =3D mms->virtio_irq_base + index; + hwaddr base =3D VIRTIO_MMIO_BASE + index * 512; + hwaddr size =3D 512; + + Aml *dev =3D aml_device("VR%02u", (unsigned)index); + aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0005"))); + aml_append(dev, aml_name_decl("_UID", aml_int(index))); + aml_append(dev, aml_name_decl("_CCA", aml_int(1))); + + Aml *crs =3D aml_resource_template(); + aml_append(crs, aml_memory32_fixed(base, size, AML_READ_WRITE)= ); + aml_append(crs, + aml_interrupt(AML_CONSUMER, AML_LEVEL, AML_ACTIVE_H= IGH, + AML_EXCLUSIVE, &irq, 1)); + aml_append(dev, aml_name_decl("_CRS", crs)); + aml_append(scope, dev); + } + } +} + static void build_dsdt_microvm(GArray *table_data, BIOSLinker *linker, MicrovmMachineState *mms) @@ -60,6 +111,7 @@ build_dsdt_microvm(GArray *table_data, BIOSLinker *linke= r, build_ged_aml(sb_scope, GED_DEVICE, HOTPLUG_HANDLER(mms->acpi_dev), GED_MMIO_IRQ, AML_SYSTEM_MEMORY, GED_MMIO_BASE); acpi_dsdt_add_power_button(sb_scope); + acpi_dsdt_add_virtio(sb_scope, mms); aml_append(dsdt, sb_scope); =20 scope =3D aml_scope("\\"); --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981433; cv=none; d=zohomail.com; s=zohoarc; b=KUxXhwlRU9dD3Q+8htPAb7w3Nyh/EdNQbafol6yUWYb6RY8Ecf0//ylgIAVquwJqJteKszVUV1RdAvx2bWxhKCqLrLrKDlvIfLYNHbWr6F6yDhtkZEpJt+Sdp1FvBK98mwwz6nRPRPNu0p8/evKmf7OrfKo6u2s0iB07Y3enuKg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981433; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=bXE+h2BI+iedXQwFImxfC59sUb0E26EyoIxiNHNhE28=; b=IlTXnZs78+5wplfPehdMfhGnOg37D9LZ2dE3+C7aLMRmPEy9RG8BtK9+jUPcYNZTOrXxW3OK1jUTpVyKl3RtF23MeC7lnrD7P387g3AwnRBgp+tBj/y+Onav5H75OqHtB+c10zijRfCDFLYfUhRUq3UH0FD0HVKYvNvKZBGSAKY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 15899814336357.624807923767889; Wed, 20 May 2020 06:30:33 -0700 (PDT) Received: from localhost ([::1]:45292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOnm-0005wx-Rr for importer@patchew.org; Wed, 20 May 2020 09:30:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47746) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeA-000248-2e for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:34 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:59749 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe8-0000Hj-UA for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:33 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-217-oS24YF-UPQamE7gIf4q4rQ-1; Wed, 20 May 2020 09:20:28 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2735C1005512; Wed, 20 May 2020 13:20:27 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 96E7882E72; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 5D8479D6A; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980832; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=bXE+h2BI+iedXQwFImxfC59sUb0E26EyoIxiNHNhE28=; b=Jxpepg1AsoMMiyagUACedBxrYZziKuYC32ksbIsKL0IRq29OvVMgaGYP0TpuZ4ZWBe5Q2n z/zM1PRmmx5tnr0xbZ0D+B1SDQKoTGX84GQrbulbSMcrKWLr6OHVmnTauCOVzCUu8AIxy2 qFDXP8yQahz+c754svDYOFbpE+RHupU= X-MC-Unique: oS24YF-UPQamE7gIf4q4rQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 18/22] microvm/acpi: use GSI 16-23 for virtio Date: Wed, 20 May 2020 15:19:59 +0200 Message-Id: <20200520132003.9492-19-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.81; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 04:09:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" With ACPI enabled and IO-APIC being properly declared in the ACPI tables we can use interrupt lines 16-23 for virtio and avoid shared interrupts. With acpi disabled we continue to use lines 8-15. Signed-off-by: Gerd Hoffmann Reviewed-by: Sergio Lopez Reviewed-by: Igor Mammedov --- hw/i386/microvm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index b38321112baa..7d8174809ae1 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -125,7 +125,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) =20 kvmclock_create(); =20 - mms->virtio_irq_base =3D 8; + mms->virtio_irq_base =3D x86_machine_is_acpi_enabled(x86ms) ? 16 : 8; for (i =3D 0; i < VIRTIO_NUM_TRANSPORTS; i++) { sysbus_create_simple("virtio-mmio", VIRTIO_MMIO_BASE + i * 512, --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981218; cv=none; d=zohomail.com; s=zohoarc; b=Y37rLiAtouTW/xc/nRvxfTVR/swUGuPlWvmcweR5t3BfrT7mp+9K67eier8J57RFW8HeHyFT7jucvAvjrzfvIcwyRDhVVM8zMya5ksJSU8bHLEukqWnythSlsSNTOAk3A7IQIY29GFQUWx/YWK/fLquDqW0C89ICPH9c25SJCd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981218; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=5/bLq9KGCPysYPYe9QiKsWgS2E2AvDpIpEzAaMPZmiE=; b=kB1FOhh0a4c6LY4TsAeHBzKBWSDC79gkyeenWP2I4B5aUfF6feY51t2ixDV0ubWbKxmy3488Bspc5l8l6V/Qa6eK9KLjDa7jTF8376+hMKjEJxqA3dBmF/6wLznsgQe6nEi00NB8vYUuaq6qj4M5ib2X4Uya5OOuLkIBr2M5E5g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981218665273.1814426598512; Wed, 20 May 2020 06:26:58 -0700 (PDT) Received: from localhost ([::1]:56420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOkL-0007Ry-FC for importer@patchew.org; Wed, 20 May 2020 09:26:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47704) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOe6-0001v4-Vf for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:31 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:27790 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOe4-0000FO-42 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:30 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-513-d0NoXSp3PZudtJrC8OAcrg-1; Wed, 20 May 2020 09:20:25 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3390A100CCCB; Wed, 20 May 2020 13:20:24 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD3682E170; Wed, 20 May 2020 13:20:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 668A49D71; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=5/bLq9KGCPysYPYe9QiKsWgS2E2AvDpIpEzAaMPZmiE=; b=fCY1FjWjOy231gNzlCygMRUZ+tA21mUHvMxV/CYnhiKSe11r7dODwZSiPLOXhQjL9DzeYE vZhmwPNae5l5t65nJtMEbEIhQ6tIpk6Cjo47u02WxKbVD58RrHMzcCRt8Rl5xySECdsgbW 4202uriANNaaCJKWlvYuecgdUTlNxL0= X-MC-Unique: d0NoXSp3PZudtJrC8OAcrg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 19/22] microvm/acpi: use seabios with acpi=on Date: Wed, 20 May 2020 15:20:00 +0200 Message-Id: <20200520132003.9492-20-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" With acpi=3Doff continue to use qboot. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov --- hw/i386/microvm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 7d8174809ae1..ddb8570a2915 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -52,6 +52,7 @@ #include "hw/xen/start_info.h" =20 #define MICROVM_QBOOT_FILENAME "qboot.bin" +#define MICROVM_BIOS_FILENAME "bios-microvm.bin" =20 static void microvm_set_rtc(MicrovmMachineState *mms, ISADevice *s) { @@ -174,7 +175,9 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 if (bios_name =3D=3D NULL) { - bios_name =3D MICROVM_QBOOT_FILENAME; + bios_name =3D x86_machine_is_acpi_enabled(x86ms) + ? MICROVM_BIOS_FILENAME + : MICROVM_QBOOT_FILENAME; } x86_bios_rom_init(get_system_memory(), true); } --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981670; cv=none; d=zohomail.com; s=zohoarc; b=XIwsKqzqTEP+coBMtZVJ/UsWHOaub+MncsSFH01VsjUy6hJ7WOvSCmDJNGEMy/mbEt05PsAt7iTimBScr+wxuMl77oa3H2QAgE3TmJZjppusyGC74D20yUAkhybS1EnPAcg6p5Oce5sKdgrpNemvZCIVKFxoiWfqVcPm/vfmVrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981670; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=2msO/1+vqpbDkNl4/pvOT0xxBfnL++oCQrrjhXIepns=; b=TWaJYuxys91zarHpf2ejVmDaeayrS4Brqx1VGL2aekotCXqv5VNCxzoMRknMRVMXsz8jy61ILX4OLmVhlWQueY/KGo0bthoLTHnrMvmbUQBEQKdZsEOoWtp/I0q278kyioAf3oJ5ypcvQgpoEGF4Why1AfQ+R5Hat5JnGg4Wo5k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 15899816705300.2825995836567472; Wed, 20 May 2020 06:34:30 -0700 (PDT) Received: from localhost ([::1]:33130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOrd-0005db-66 for importer@patchew.org; Wed, 20 May 2020 09:34:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeF-0002Iu-6Z for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:39 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:58657 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeC-0000J6-J7 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:38 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-108-tONqx_N0Nry61XJifatxmA-1; Wed, 20 May 2020 09:20:33 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 648551902EC6; Wed, 20 May 2020 13:20:32 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 57E8C60C84; Wed, 20 May 2020 13:20:24 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 6F9679D72; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=2msO/1+vqpbDkNl4/pvOT0xxBfnL++oCQrrjhXIepns=; b=W+zvR8f6cGCzNTP9FUTnHjrUV4xVQSqjjCO4PsmjJGTT9AEgutDJ2xdfSibO8OOpX1DGFw eyXnqh/OFWspo6EC+HOuItOKOcmmKIPRhk6dkv1kBK7+K5GLKnTZ0Sifuw4P8YhUYDFPJy E4IHhY6eI77S1LN5AsmveOxfnoJlnSk= X-MC-Unique: tONqx_N0Nry61XJifatxmA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 20/22] microvm/acpi: disable virtio-mmio cmdline hack Date: Wed, 20 May 2020 15:20:01 +0200 Message-Id: <20200520132003.9492-21-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=205.139.110.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 22:48:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" ... in case we are using ACPI. Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov --- hw/i386/microvm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index ddb8570a2915..602c6a8f75f3 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -362,7 +362,8 @@ static void microvm_machine_reset(MachineState *machine) CPUState *cs; X86CPU *cpu; =20 - if (machine->kernel_filename !=3D NULL && + if (!x86_machine_is_acpi_enabled(X86_MACHINE(machine)) && + machine->kernel_filename !=3D NULL && mms->auto_kernel_cmdline && !mms->kernel_cmdline_fixed) { microvm_fix_kernel_cmdline(machine); mms->kernel_cmdline_fixed =3D true; --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981386; cv=none; d=zohomail.com; s=zohoarc; b=Ha08zMf0UbdW15e3WZadPD24K7uidwwvwo1r+dLVhPbYdLnY3wpvMTmPdPhRXn/9Se/C/ZcZOOPpmpepUGVkA12XMQBVbzX2vqdh6FHctq0QIa8QJV92/llguSuqs4scZ36RL8BYstJZW5kvXZYZgE6ZVMyAlhcpJgfoKjCIl/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981386; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=6OIxpUflKpjw9oFHZKmMc0sFoAZYdcP0pMC2r+iLubc=; b=hJrwbzY0aixgNS/fUAQkzBhUtfP7qbDJ/42zIPwSHd8odvR8D0ZDOXo0zWPF+/XDuXyIM0lqVb8Iz5Oin8eJ/x7bviEH8UiLbzwTdltvDhrmA4hS2y7E+KB2iACSFVc8RpSIuJcNzVQ3cjEo13llMnRPBk8R3ju4Jde79L2E3aM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981386586698.4296879368259; Wed, 20 May 2020 06:29:46 -0700 (PDT) Received: from localhost ([::1]:40676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOn3-00046n-Ad for importer@patchew.org; Wed, 20 May 2020 09:29:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47828) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeH-0002M6-Gj for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:42 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:46348 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeD-0000Jx-R8 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:41 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-391-9KxStO4rPR61EXfnfpNnJA-1; Wed, 20 May 2020 09:20:34 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 85527464; Wed, 20 May 2020 13:20:33 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 125D019C58; Wed, 20 May 2020 13:20:25 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 7A1469D73; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=6OIxpUflKpjw9oFHZKmMc0sFoAZYdcP0pMC2r+iLubc=; b=gmBRUY44K1svrWmqDBViY87OzI28H0rV1130ierxU9wXHbh5MrbmwS2NLRl6i6xzvaQWcz HxiBjCoLEnxk6kzyO0Z9xmPgB9Ma/SOQVPkIUfrdmvwZMmpbh8no+2xMp1DAnIeZY/3KL3 5J5CrUpZdXBjPQpC7V/ekxbf0+9TNTE= X-MC-Unique: 9KxStO4rPR61EXfnfpNnJA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 21/22] [RfC] acpi: add per machine type acpi default Date: Wed, 20 May 2020 15:20:02 +0200 Message-Id: <20200520132003.9492-22-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Allow setting acpi default value for each machine type. Signed-off-by: Gerd Hoffmann --- include/hw/i386/x86.h | 1 + hw/i386/x86.c | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index b52285481687..d2fffa8252ff 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -37,6 +37,7 @@ typedef struct { bool save_tsc_khz; /* Enables contiguous-apic-ID mode */ bool compat_apic_id_mode; + bool acpi_default; } X86MachineClass; =20 typedef struct { diff --git a/hw/i386/x86.c b/hw/i386/x86.c index ac7a0a958781..3a56a157c5f0 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -940,10 +940,22 @@ static void x86_machine_set_smm(Object *obj, Visitor = *v, const char *name, =20 bool x86_machine_is_acpi_enabled(X86MachineState *x86ms) { - if (x86ms->acpi =3D=3D ON_OFF_AUTO_OFF) { - return false; + X86MachineClass *x86mc =3D X86_MACHINE_GET_CLASS(x86ms); + bool enabled; + + switch (x86ms->acpi) { + case ON_OFF_AUTO_ON: + enabled =3D true; + break; + case ON_OFF_AUTO_OFF: + enabled =3D false; + break; + case ON_OFF_AUTO_AUTO: + default: + enabled =3D x86mc->acpi_default; + break; } - return true; + return enabled; } =20 static void x86_machine_get_acpi(Object *obj, Visitor *v, const char *name, @@ -991,6 +1003,9 @@ static void x86_machine_class_init(ObjectClass *oc, vo= id *data) x86mc->save_tsc_khz =3D true; nc->nmi_monitor_handler =3D x86_nmi; =20 + /* acpi is on by default */ + x86mc->acpi_default =3D true; + object_class_property_add(oc, X86_MACHINE_MAX_RAM_BELOW_4G, "size", x86_machine_get_max_ram_below_4g, x86_machine_set_max_ram_below_4g, NULL, NULL); --=20 2.18.4 From nobody Tue May 21 18:25:28 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589981195; cv=none; d=zohomail.com; s=zohoarc; b=ctQB0zYz3Ka1XMDzcxc8WHEyTGUTB06BXlyeZfS66NTwvKSeM8npMK4CoOtfZDTZiVamMkxM8OtJs0HPd07g5JvCjz4+N2b0dG5NBaNa8Tv+pdRFbzXvKDChBq+aePMvQBSEbCH8IR7P2dsXjfF5poZTNuzQ33EEaf2FDjS3yk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589981195; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Sr2/mO9x3+V1w5jPR6muuF5U5yNtB/8Q3ABWiRShk38=; b=BoACw7AYw6IL95IIWISbVra8ofSdglbaKAWLsBEQV0APJqD53W1qOPkFnaFoPwIG0xlEq9EeicLjnzSXxSCtlecd4lU/SYgzJFrvLuKf9B5a2/91chocw0mrJEgAJzstCa2ls249eDUQGljcmF8Ps2lNQCKX7Tv3EebOf6KZRe0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1589981195483601.4959747648523; Wed, 20 May 2020 06:26:35 -0700 (PDT) Received: from localhost ([::1]:54274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbOjy-0006aD-8l for importer@patchew.org; Wed, 20 May 2020 09:26:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47846) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbOeJ-0002NI-Oc for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:44 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:36720 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jbOeE-0000KL-E1 for qemu-devel@nongnu.org; Wed, 20 May 2020 09:20:43 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-453-J1lfdg2OPbClFeAetMAepg-1; Wed, 20 May 2020 09:20:36 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C2C33EC1A0; Wed, 20 May 2020 13:20:34 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-113-50.ams2.redhat.com [10.36.113.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1AAFC5C1BE; Wed, 20 May 2020 13:20:25 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 82FDE9D74; Wed, 20 May 2020 15:20:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589980837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=Sr2/mO9x3+V1w5jPR6muuF5U5yNtB/8Q3ABWiRShk38=; b=Um/R9trVXQC8/tGSG3eJj4hJBMWWhCO+UQyF88kCJ4XBvwZQhjIJNNCJaXNjBlYXHwVYp4 CLCgWSER2/HlUIqAiJ08wOulBxUEqgQEgVsLRNOAXFFuU9ysqIw6oNK6i+hVkizMCaZ4on ZDDwC06dfaM4HT+JcMYd803yIL/EFGs= X-MC-Unique: J1lfdg2OPbClFeAetMAepg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PATCH v3 22/22] [RfC] acpi: flip default to off for microvm Date: Wed, 20 May 2020 15:20:03 +0200 Message-Id: <20200520132003.9492-23-kraxel@redhat.com> In-Reply-To: <20200520132003.9492-1-kraxel@redhat.com> References: <20200520132003.9492-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=207.211.31.120; envelope-from=kraxel@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 01:34:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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: , Cc: Peter Maydell , Eduardo Habkost , Sergio Lopez , "Michael S. Tsirkin" , Shannon Zhao , qemu-arm@nongnu.org, Gerd Hoffmann , Paolo Bonzini , Igor Mammedov , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Gerd Hoffmann --- hw/i386/microvm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 602c6a8f75f3..b5c445b5403b 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -517,6 +517,7 @@ static void microvm_machine_initfn(Object *obj) static void microvm_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); + X86MachineClass *x86mc =3D X86_MACHINE_CLASS(oc); =20 mc->init =3D microvm_machine_state_init; =20 @@ -537,6 +538,9 @@ static void microvm_class_init(ObjectClass *oc, void *d= ata) /* Machine class handlers */ mc->reset =3D microvm_machine_reset; =20 + /* acpi is off by default */ + x86mc->acpi_default =3D false; + object_class_property_add(oc, MICROVM_MACHINE_PIC, "OnOffAuto", microvm_machine_get_pic, microvm_machine_set_pic, --=20 2.18.4