From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220723; cv=none; d=zohomail.com; s=zohoarc; b=GyWvmIPMn7lBOKLEvan7TLtyDScvrLNdR5sLemb8ZhaTcZ30J5lj/0+zs/rrLtFXaxHkPEDy7QB7YdApDFtA4JabsJLdoHsWlDmJyXyHX6GOoUriF6qTA4bFCbyRCvZ+vUlQow2VFa0k1pK8ERhXMvIcJh2P5RKHVC7ap5Xbv2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220723; h=Content-Type: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=KSp/4lHAXuOsrwqOC5Motkbb8RzEYnMS/koDLG8XNFw=; b=SU9gYdBwbFSFILK6HDqXiBQetXGE7F2FP9gMxX50z5bWqhRJQ9h83B9bwWAQraatwgE7Q+jrVw2RxbruhGYDRW441uVKPRHxvEdNhjh2HEn4MkmVBz42f8Mx2xOoo9liEDu6N5XwECAYE1yMRF9dQftvML1nxKfQnYnwNZ+OR+A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220723475763.4727299308712; Mon, 31 Oct 2022 05:52:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFl-0000GV-H2; Mon, 31 Oct 2022 08:50:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFh-0000Cs-8W for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFe-0002Bu-RY for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:53 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-327-XcqDq8EVNaqvTBkd0okFCw-1; Mon, 31 Oct 2022 08:50:47 -0400 Received: by mail-wr1-f69.google.com with SMTP id w23-20020adf8bd7000000b002358f733307so3026564wra.17 for ; Mon, 31 Oct 2022 05:50:47 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id t2-20020a05600c41c200b003c21ba7d7d6sm6974633wmh.44.2022.10.31.05.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220649; 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: in-reply-to:in-reply-to:references:references; bh=KSp/4lHAXuOsrwqOC5Motkbb8RzEYnMS/koDLG8XNFw=; b=LJE2T5h9DwyJvbhEEPu+BjhIla+cEKgTjpkvSwypdqgWaKRvmEcwuofafSGuXam1Cc+jq+ yO6Q+7CT3UKmmn/QgLhVtO0yDUYDN+018pV54DlQl933k1mXBugnO2W8Ew0jSA6Uqyppvj mGU8ZU8C+VwAG1h8lsyhwMsilB8dsKg= X-MC-Unique: XcqDq8EVNaqvTBkd0okFCw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KSp/4lHAXuOsrwqOC5Motkbb8RzEYnMS/koDLG8XNFw=; b=HRLUfyxZ38eEskL5X6q/puBvmpO9+4+wQ+wdXsmgIOU51JGaY347CVB/kaSrFtZs6x /kOaEea5ZYa1R9KkUV8CRNAfSfbdLK2OyuaMIoEas8p9cVPzyu8rbH61EkMWNOcu5jT1 TGvFIFyUh5ovRNNDD9lxa9firkbDROtF/8v2P4MZSYnQaVtJUOV6crzpEtDj4QOwdcD4 1xX2+H0256xxjGKDNlswM5+R6XHwOH6MoyE+lrRT78H55xf9pYkGqRAvD30x6gqV/ej0 VZlUJdqECQYF0MLxO7VJY1ehvzGH0ALQ9udgStz8QGrKS2B/L80J9bmhEARvGNsfmn7K VXzg== X-Gm-Message-State: ACrzQf3Ks/5MzRZ1sllJJo+jKUG63gApEF6iwT+w8qzlbD7s2rd9Lc3s IRtoLC8m3c7V9Dq/PjDQ5zADm0weByAN6hakG4x+srfcvz6myK3sbevYh5usjuvJF5pDvVZgU76 Yc7azTit5Ro4BFQA6Jmx6mgTFHk5nU/fKki1au0WMCkM0FsGTsYEwt7lmOQgx X-Received: by 2002:a05:600c:4f93:b0:3cc:9bc5:c454 with SMTP id n19-20020a05600c4f9300b003cc9bc5c454mr8010639wmq.84.1667220646569; Mon, 31 Oct 2022 05:50:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6GZX6Zmpmm/8XxCqmJ+Bhk4zbo+B3QB7MQbj0KZUzTU3+wLuREVb2rqmCoxj4dNM01+zzGHA== X-Received: by 2002:a05:600c:4f93:b0:3cc:9bc5:c454 with SMTP id n19-20020a05600c4f9300b003cc9bc5c454mr8010621wmq.84.1667220646255; Mon, 31 Oct 2022 05:50:46 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:43 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 01/86] bios-tables-test: do not ignore allowed diff list Message-ID: <20221031124928.128475-2-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220724124100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" we had such a beautiful structure for updating expected files, designed to keep bisect working. It turns out that we ignored the result of the allow list checks unless all tables matched anyway. Sigh. Let's at least make it work going forward. Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index e6096e7f73..a72f6ca326 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -458,7 +458,7 @@ static void test_acpi_asl(test_data *data) "for instructions on how to update expected files.\n", exp_sdt->aml, sdt->aml_file, exp_sdt->aml_file); =20 - all_tables_match =3D all_tables_match && + all_tables_match =3D all_tables_match || test_acpi_find_diff_allowed(exp_sdt); =20 /* --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220748; cv=none; d=zohomail.com; s=zohoarc; b=jnAemn5X3bdavmoxpfdpnwS2knxGJH7uGl8vGtJNFBZqc7+Z1/paQwYkA5ljR9k+8OMBdZacGK9IFv98cHP0noh+lj7kVQY5RviCRUtsWSbv0tIhoCB3F+a9SXs9crQGrxNCDOZjvz8RfKLqhAbixueVxHmOi+2yXr3Euu+/o7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220748; h=Content-Type: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=B27E8fRCGiwVLH3TSXoyliisL54NW2Z5dtJ5rq2MMJU=; b=jran7F5jgw7CMNGEKFx/rd1hZqHH/vdXNK9lEw88WvAOxs+O2/DU0Q7wPWLdQRJ2IzpWkRydbLaqrvosk5DsnfIdoIOXmo3VExaEr4jwmuX7Zbor4FuWzmn5axriLmYBRbBaFVIFTuLZnVFD6OpLkbz1wg208xSbDd/3Jp9DW7E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220748915308.47220568382386; Mon, 31 Oct 2022 05:52:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFq-0000Rj-BD; Mon, 31 Oct 2022 08:51:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFj-0000FP-98 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFh-0002CY-EQ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:55 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-543--HjXrHCQOiyo4fB2_8pMXA-1; Mon, 31 Oct 2022 08:50:51 -0400 Received: by mail-wr1-f70.google.com with SMTP id j20-20020adfb314000000b002366d9f67aaso2996698wrd.3 for ; Mon, 31 Oct 2022 05:50:50 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j22-20020a05600c485600b003a601a1c2f7sm6953574wmo.19.2022.10.31.05.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220652; 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: in-reply-to:in-reply-to:references:references; bh=B27E8fRCGiwVLH3TSXoyliisL54NW2Z5dtJ5rq2MMJU=; b=Fvbyde53WKAfr99ZVokUUI1JUPpNvT6pl+amNbCQMbKMTdkmyQ3DUCf6OGrxt0706iTaJk JhYews0CWLj+vhCCxd5S3KHsruPZzTpdD1nfoeykqZ7Lljpkb81e6Ue+J9Ykafq5sY8TyX jVnFzQBjvAfmx/SEfG0XnD12zopzn8c= X-MC-Unique: -HjXrHCQOiyo4fB2_8pMXA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=B27E8fRCGiwVLH3TSXoyliisL54NW2Z5dtJ5rq2MMJU=; b=Mb8vjOTpzSsiiPmRl1KdLdYrNZHy+sJ67OQnGgANLGC1ROiMC7LZFqMarztMrl83Tl Mq+Nr2nAca3tC7tCKQI+y6y8CUKxPd51Bu+X7+h4yd+Fue1Kxd+ggsFKajxF0vhLEH7b vxd3vqhnspHSfN2AQK5teRR5r72JP5UKyIKzNGWQv20jZ7fipz0wkw4NXY0MDCb7hCxG N7O0R7Jrb5AMab8zwqVCMM0kYqZyBrEnt5L9ET2mis57H3UGQn8gnERcMkGBO2J1KIAP 6EbbygQcakIea2hcvOL8E5MZKJow2KQTzibQA2+hIdOCbWTqUBs6sSJ03EuB7cJTgzwz rbGw== X-Gm-Message-State: ACrzQf1CbhvSHylecr4yO04hdMotqDeZTYBTvMawA/Xkiw57VEVk9FZf aiNOXOtJSkRKL3osnXHLtMOozHXLg3T8uzxhTEpGhrXmZnrUgdo4x5QXrGpA4ryOvDSm26+nCKJ zuUIVRxMdtLxUBJrpty2ZowcR32vVoMC11HETujunqpoibN70caHR22mAgTt6 X-Received: by 2002:a1c:f302:0:b0:3cf:61fc:c8c8 with SMTP id q2-20020a1cf302000000b003cf61fcc8c8mr8938396wmq.21.1667220649689; Mon, 31 Oct 2022 05:50:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6pZ9Q7GZQgjw3rGGcR2scNyzQRILsTLDnlVYYVZoSgGdfRreI/wbehXkv/NB+2g2LtjvpY2w== X-Received: by 2002:a1c:f302:0:b0:3cf:61fc:c8c8 with SMTP id q2-20020a1cf302000000b003cf61fcc8c8mr8938370wmq.21.1667220649397; Mon, 31 Oct 2022 05:50:49 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Gerd Hoffmann , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Sergio Lopez Subject: [PULL 02/86] hw/i386/e820: remove legacy reserved entries for e820 Message-ID: <20221031124928.128475-3-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220750657100011 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ani Sinha e820 reserved entries were used before the dynamic entries with fw config f= iles were intoduced. Please see the following change: 7d67110f2d9a6("pc: add etc/e820 fw_cfg file") Identical support was introduced into seabios as well with the following co= mmit: ce39bd4031820 ("Add support for etc/e820 fw_cfg file") Both the above commits are now quite old. QEMU machines 1.7 and newer no lo= nger use the reserved entries. Seabios uses fw config files and dynamic e820 entries by default and only falls back to using reserved entri= es when it has to work with old qemu (versions earlier than 1.7). Please see functions qemu_cfg_e820() and qemu_early_e820(). It is safe to remove legacy FW_CFG_E820_TABLE and associated code now as QEMU 7.0 has deprecated i440fx machines 1.7 and older. It would be incredibly rare to run the latest qemu version with a very old version of seabios that did not support fw config f= iles for e820. As far as I could see, edk2/ovfm never supported reserved entries and uses = fw config files from the beginning. So there should be no incompatibilities wi= th ovfm as well. CC: Gerd Hoffmann Signed-off-by: Ani Sinha Acked-by: Gerd Hoffmann Message-Id: <20220831045311.33083-1-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/e820_memory_layout.h | 8 -------- hw/i386/fw_cfg.h | 1 - hw/i386/e820_memory_layout.c | 20 +------------------- hw/i386/fw_cfg.c | 3 --- hw/i386/microvm.c | 2 -- 5 files changed, 1 insertion(+), 33 deletions(-) diff --git a/hw/i386/e820_memory_layout.h b/hw/i386/e820_memory_layout.h index 04f93780f9..7c239aa033 100644 --- a/hw/i386/e820_memory_layout.h +++ b/hw/i386/e820_memory_layout.h @@ -16,20 +16,12 @@ #define E820_NVS 4 #define E820_UNUSABLE 5 =20 -#define E820_NR_ENTRIES 16 - struct e820_entry { uint64_t address; uint64_t length; uint32_t type; } QEMU_PACKED __attribute((__aligned__(4))); =20 -struct e820_table { - uint32_t count; - struct e820_entry entry[E820_NR_ENTRIES]; -} QEMU_PACKED __attribute((__aligned__(4))); - -extern struct e820_table e820_reserve; extern struct e820_entry *e820_table; =20 int e820_add_entry(uint64_t address, uint64_t length, uint32_t type); diff --git a/hw/i386/fw_cfg.h b/hw/i386/fw_cfg.h index 275f15c1c5..86ca7c1c0c 100644 --- a/hw/i386/fw_cfg.h +++ b/hw/i386/fw_cfg.h @@ -17,7 +17,6 @@ #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0) #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1) #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2) -#define FW_CFG_E820_TABLE (FW_CFG_ARCH_LOCAL + 3) #define FW_CFG_HPET (FW_CFG_ARCH_LOCAL + 4) =20 FWCfgState *fw_cfg_arch_create(MachineState *ms, diff --git a/hw/i386/e820_memory_layout.c b/hw/i386/e820_memory_layout.c index bcf9eaf837..06970ac44a 100644 --- a/hw/i386/e820_memory_layout.c +++ b/hw/i386/e820_memory_layout.c @@ -11,29 +11,11 @@ #include "e820_memory_layout.h" =20 static size_t e820_entries; -struct e820_table e820_reserve; struct e820_entry *e820_table; =20 int e820_add_entry(uint64_t address, uint64_t length, uint32_t type) { - int index =3D le32_to_cpu(e820_reserve.count); - struct e820_entry *entry; - - if (type !=3D E820_RAM) { - /* old FW_CFG_E820_TABLE entry -- reservations only */ - if (index >=3D E820_NR_ENTRIES) { - return -EBUSY; - } - entry =3D &e820_reserve.entry[index++]; - - entry->address =3D cpu_to_le64(address); - entry->length =3D cpu_to_le64(length); - entry->type =3D cpu_to_le32(type); - - e820_reserve.count =3D cpu_to_le32(index); - } - - /* new "etc/e820" file -- include ram too */ + /* new "etc/e820" file -- include ram and reserved entries */ e820_table =3D g_renew(struct e820_entry, e820_table, e820_entries + 1= ); e820_table[e820_entries].address =3D cpu_to_le64(address); e820_table[e820_entries].length =3D cpu_to_le64(length); diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c index a283785a8d..72a42f3c66 100644 --- a/hw/i386/fw_cfg.c +++ b/hw/i386/fw_cfg.c @@ -36,7 +36,6 @@ const char *fw_cfg_arch_key_name(uint16_t key) {FW_CFG_ACPI_TABLES, "acpi_tables"}, {FW_CFG_SMBIOS_ENTRIES, "smbios_entries"}, {FW_CFG_IRQ0_OVERRIDE, "irq0_override"}, - {FW_CFG_E820_TABLE, "e820_table"}, {FW_CFG_HPET, "hpet"}, }; =20 @@ -127,8 +126,6 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms, #endif fw_cfg_add_i32(fw_cfg, FW_CFG_IRQ0_OVERRIDE, 1); =20 - fw_cfg_add_bytes(fw_cfg, FW_CFG_E820_TABLE, - &e820_reserve, sizeof(e820_reserve)); fw_cfg_add_file(fw_cfg, "etc/e820", e820_table, sizeof(struct e820_entry) * e820_get_num_entries()); =20 diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index ffd1884100..170a331e3f 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -324,8 +324,6 @@ static void microvm_memory_init(MicrovmMachineState *mm= s) fw_cfg_add_i16(fw_cfg, FW_CFG_MAX_CPUS, machine->smp.max_cpus); fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)machine->ram_size); fw_cfg_add_i32(fw_cfg, FW_CFG_IRQ0_OVERRIDE, 1); - fw_cfg_add_bytes(fw_cfg, FW_CFG_E820_TABLE, - &e820_reserve, sizeof(e820_reserve)); fw_cfg_add_file(fw_cfg, "etc/e820", e820_table, sizeof(struct e820_entry) * e820_get_num_entries()); =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221035; cv=none; d=zohomail.com; s=zohoarc; b=efWU1KU6cq9jqn5ZoeI0IYiYcYN6IiAu8YWphDNvOxU2suEk5PHUmZ2o1HWXfN7RuTAq9/HpHPw2fN4jHdKu4vdLJRYULkkebIZ1P4zZC3WdHqKKJcrW0z6cIFtYgwiG8VJKm1JlI+hZvFxp2PQB7j3htR04v+51/xXYS8eIkqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221035; h=Content-Type: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=qB+QR/y0D4MCSKP9awdun72O5OoRrhEdXbqEi5lEsaQ=; b=Kpxrb6jWMMZt3nzpQZ53Uc7HUmnfRmqGGL+BAG8wZamY47wO10CBg/eDNYdem8BkVZylmHpU2M1cMVARtIErAlk3vuckCoFDyq5QAke/F5ZzaiD6PeJN3eJqaZyPgqa+gmzKCNCCOU1002MkpdQqBS5QDou9zfP5nvP6AnB+g5o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221035645271.9368316143235; Mon, 31 Oct 2022 05:57:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFr-0000VP-9H; Mon, 31 Oct 2022 08:51:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFl-0000Gg-8A for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFj-0002Cy-Qd for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:56 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-373-5iwD7JLvNx-wZhvUMs8_Dw-1; Mon, 31 Oct 2022 08:50:54 -0400 Received: by mail-wm1-f71.google.com with SMTP id l1-20020a7bc341000000b003bfe1273d6cso2571515wmj.4 for ; Mon, 31 Oct 2022 05:50:53 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id h9-20020a05600c414900b003b49ab8ff53sm7229838wmm.8.2022.10.31.05.50.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220655; 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: in-reply-to:in-reply-to:references:references; bh=qB+QR/y0D4MCSKP9awdun72O5OoRrhEdXbqEi5lEsaQ=; b=T9VIBrC/w4Oja9v8Xbgmyu3OG+P97uG3TNXV1W0CXKdtuBsnYBLZnhF/qv9uI6keswb0uD 24zZQLOBzc2LrZ5OEtiDz8PXIYBaQH53h4UD8hxR7Bb9TgMCN99GNukTXy4Iox+0f3K5MG wdgfXE6cD3kmGWxmqmfMjRQjNurCVZg= X-MC-Unique: 5iwD7JLvNx-wZhvUMs8_Dw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qB+QR/y0D4MCSKP9awdun72O5OoRrhEdXbqEi5lEsaQ=; b=vOg36GmggAQOYGQGgYNgRzbm8X8aethYFu1Y/DSjqfz6tRGwUp1Zxwvas8SAxZ5dSd +9LTY0YGgXz3chREMbub1N+MBxt/xS6FK0IFmhV4rmR65J0CcAAhuIckaXv0OZcV6UYv qehndQv/+T0rRRKG8fPdeAfdO8385zeN3EEyNDNae3lh0V0WvcSTKvgKKTVl/tV0VRYW duOZz7iCm1NJKLvbCx4x/u+CKApFxj3uxQpbdqNN1an2T+SsRQMpp25ZYypLMu1OK7cL /7ItUk44u45SesIJ8hueZP99psYLE0PK0YK55rOPLS1fnu4nZfKLVBGjNJcKuN9jCGlS H4qQ== X-Gm-Message-State: ACrzQf0vgHuXRtkXx9UgjYoB/PK9bCyFCs2tQwHytq+zsM5121dBoRto Taj+uyer9pXWFK24v08rskq6dfJB2j3jk0DvP3Xio8ePI0F/lcmMfHxZu+piO5D/lFVYLtQ3Fap t/EzzG1aEiwXVO6hiAZJTLRnqdMhJFsL9yXT/Sqk324dOcpZC7ScVTEupVMpO X-Received: by 2002:a5d:61c8:0:b0:236:b893:9d83 with SMTP id q8-20020a5d61c8000000b00236b8939d83mr6330126wrv.354.1667220652609; Mon, 31 Oct 2022 05:50:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4SZlHbv3N6I+EbehlrFJydZM8zKqOyW1VC6CvH5TGUdce7g77BoJeG9x4r7UYoNPWWID0Bqg== X-Received: by 2002:a5d:61c8:0:b0:236:b893:9d83 with SMTP id q8-20020a5d61c8000000b00236b8939d83mr6330110wrv.354.1667220652318; Mon, 31 Oct 2022 05:50:52 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Robert Hoo , Jingqi Liu , Igor Mammedov , Ani Sinha Subject: [PULL 03/86] tests/acpi: allow SSDT changes Message-ID: <20221031124928.128475-4-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221035999100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Robert Hoo Signed-off-by: Robert Hoo Reviewed-by: Jingqi Liu Message-Id: <20220922122155.1326543-2-robert.hu@linux.intel.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..eb8bae1407 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,3 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/pc/SSDT.dimmpxm", +"tests/data/acpi/q35/SSDT.dimmpxm", --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220904; cv=none; d=zohomail.com; s=zohoarc; b=WCtTTt7o0I8eqNKd9/GY2V3FsAy6X7ED6BLzP/DEK9Y/TlXUTK1bKQNwHG/VReyh4HDCVi4ImmQDi6JYg6U3Kjg+X9UfBqd03yeUXyYDcPpPs13N4jeqmlH0x74QCcq8Vb1sNzpB6Wrv+6Z3K8NxZnF3mvTK/ltOPXEOm8k8jUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220904; h=Content-Type: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=vr1Y5Ue2DsD1Zo1HCdv3uKEJFz1/uay4tMw6YA67Sxk=; b=bl9yUMOWa0fu1zA7fLYqdMPinWgt9EkP3AcYs7mQWOJ5oJsB1+cTx5kYJIVNUYMw2BoWxmcIbmKGhCVoMidVGOPkh6Yu7J6EEbBSPwWT34Ab896Di4H/AKvhLI9yBm8b1PBYR7/6I6C793IDfn96xuGw91r/G+kN98DyOcgfarg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220904626846.696372881867; Mon, 31 Oct 2022 05:55:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFt-0000ZU-1J; Mon, 31 Oct 2022 08:51:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFn-0000Jn-N5 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFm-0002DL-7x for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:50:59 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-156-gzFyTC37NFKQL9afNRsXcQ-1; Mon, 31 Oct 2022 08:50:56 -0400 Received: by mail-wr1-f69.google.com with SMTP id u13-20020adfa18d000000b00236566b5b40so3017041wru.9 for ; Mon, 31 Oct 2022 05:50:56 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bd26-20020a05600c1f1a00b003c6b70a4d69sm7174209wmb.42.2022.10.31.05.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220657; 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: in-reply-to:in-reply-to:references:references; bh=vr1Y5Ue2DsD1Zo1HCdv3uKEJFz1/uay4tMw6YA67Sxk=; b=CeqUbJkxJ8Ge2eKCmwbrDRNcfrW6ZICBXLMSFKN8Sqkk6Gsk0ZzsWOCNgf5j69Cc+ubXtc 35jmEz0MQmqakXlpZLHUS1Ihd4pysBDncoDNgaY/yCt20SjgUX0r6OV+ifH2hntEEJA8q/ 49glwuDU+7lhNLYS2zLf3y/ptGh1p2g= X-MC-Unique: gzFyTC37NFKQL9afNRsXcQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vr1Y5Ue2DsD1Zo1HCdv3uKEJFz1/uay4tMw6YA67Sxk=; b=f+Q8IeMPFbW9wtZHuuLyTHU/Kl0TfGk0ZGRt8Eoy7AtMJmeHmlf3RAsBIj+6mbIYo+ twqU6CKZszR352liptS7B7fN8J7HQIhyEv0vkBsEJwL7KitxwsW8aGNMaHJfHoj37CiV oSUNPr8S/MyDo6eQMXQ7AmXvl+RUI/TC+q2kVOwZWR96Kb4PUhn28fAdQxTp93bwB+fv pnVXIt+0w4cPQGwMjF59GRqv42lXn0tDdYAHRgiYM+6987742QakMyYcITfmoMWXYnW+ kqc6oXyL95zIuxAwGlFrbrepGY/jiU4p6qS8M56UAJJOoHLDoxM05lg8zzfWL1RO1HZo OH/Q== X-Gm-Message-State: ACrzQf0u5GnC7+VMuk24xl3IQd+n3OoR1fcxrTY4oIZ7lVmJA0fqryjr cBZgPN0SdVA2k6sMM2OM5zJub66Q6FgMaYLJeG2jNRW5bwHVC1vtRZJRA6oAyHPjyKTOSYDaukY L8KvmailDSwhXJjk0RknL3kTwZbOeKmcZmripM/A6YHCy6/8jughps8BeGG7Y X-Received: by 2002:a05:600c:4f4d:b0:3c8:32c7:db11 with SMTP id m13-20020a05600c4f4d00b003c832c7db11mr7812224wmq.143.1667220655170; Mon, 31 Oct 2022 05:50:55 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Bfmqy2LfPVK1b/iz8RqyGXVaLGzy9WcWKzoJc9dyGMzwWqwdFjas6C070vtjThZFjFVqcAw== X-Received: by 2002:a05:600c:4f4d:b0:3c8:32c7:db11 with SMTP id m13-20020a05600c4f4d00b003c832c7db11mr7812198wmq.143.1667220654824; Mon, 31 Oct 2022 05:50:54 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Robert Hoo , Jingqi Liu , Igor Mammedov , Ani Sinha Subject: [PULL 04/86] acpi/ssdt: Fix aml_or() and aml_and() in if clause Message-ID: <20221031124928.128475-5-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220904916100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Robert Hoo In If condition, using bitwise and/or, rather than logical and/or. The result change in AML code: If (((Local6 =3D=3D Zero) | (Arg0 !=3D Local0))) =3D=3D> If (((Local6 =3D=3D Zero) || (Arg0 !=3D Local0))) If (((ObjectType (Arg3) =3D=3D 0x04) & (SizeOf (Arg3) =3D=3D One))) =3D=3D> If (((ObjectType (Arg3) =3D=3D 0x04) && (SizeOf (Arg3) =3D=3D One))) Fixes: 90623ebf603 ("nvdimm acpi: check UUID") Fixes: 4568c948066 ("nvdimm acpi: save arg3 of _DSM method") Signed-off-by: Robert Hoo Reviewed-by: Jingqi Liu Reviewed-by: Igor Mammedov Message-Id: <20220922122155.1326543-3-robert.hu@linux.intel.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/acpi/nvdimm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 31e46df0bd..201317c611 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -1037,7 +1037,7 @@ static void nvdimm_build_common_dsm(Aml *dev, =20 uuid_invalid =3D aml_lnot(aml_equal(uuid, expected_uuid)); =20 - unsupport =3D aml_if(aml_or(unpatched, uuid_invalid, NULL)); + unsupport =3D aml_if(aml_lor(unpatched, uuid_invalid)); =20 /* * function 0 is called to inquire what functions are supported by @@ -1069,10 +1069,9 @@ static void nvdimm_build_common_dsm(Aml *dev, * in the DSM Spec. */ pckg =3D aml_arg(3); - ifctx =3D aml_if(aml_and(aml_equal(aml_object_type(pckg), + ifctx =3D aml_if(aml_land(aml_equal(aml_object_type(pckg), aml_int(4 /* Package */)) /* It is a Package? */, - aml_equal(aml_sizeof(pckg), aml_int(1)) /* 1 element? *= /, - NULL)); + aml_equal(aml_sizeof(pckg), aml_int(1)) /* 1 element? *= /)); =20 pckg_index =3D aml_local(2); pckg_buf =3D aml_local(3); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220715; cv=none; d=zohomail.com; s=zohoarc; b=QNmcb5RWQq1Ry5r42lRccUQBRu2l34JnHK37zuybov+jpwJRluwqkbMk6QXZO5Iitwfmvz7TNwgBtu4zS8DNucLJdiPf2sUFDquseQmx6BuZrFjendsRBnNUJcA/CCd3IIRrcbtQ6PpQuCDZtYoX8VhJnYjKmcF3peycLFNI3SI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220715; h=Content-Type: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=NBEgnvyPuSubVpepgBU5LLBjdsEmlTwEplvXdoQGW9E=; b=mHOu5MDH6U8Vx6hGGZv8u7auaTV467bXOR6f2+GBGTWzijpiNR6rl3lPSOBMTBt5pSIum/mD9URkdANuijPL2c9NYNsOe60SCzeDgAflBiVWr1pIGigNVsV6pChmoekxz6dseMhaiVvTVhmsvMbS5/1fWA9NyVeojVTlWBQ9zJM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722071565021.31689332102485; Mon, 31 Oct 2022 05:51:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFv-0000hl-91; Mon, 31 Oct 2022 08:51:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFs-0000Yr-2I for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFq-0002El-9t for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:03 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-190-0M9NeVVzNialmEyqmDWL4g-1; Mon, 31 Oct 2022 08:50:59 -0400 Received: by mail-wm1-f69.google.com with SMTP id c130-20020a1c3588000000b003b56be513e1so5283261wma.0 for ; Mon, 31 Oct 2022 05:50:59 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id h11-20020adff18b000000b0023677e1157fsm7101531wro.56.2022.10.31.05.50.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220660; 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: in-reply-to:in-reply-to:references:references; bh=NBEgnvyPuSubVpepgBU5LLBjdsEmlTwEplvXdoQGW9E=; b=hykDoMIdk9q9PsJ29pZHUB6/Wsnu7P5WH2o+tBPUbqPiOyMBTzVXoWJCAiiv8HHFgcsONK H2GngnhKn4WbG/MEadMaH4HD3pZjs6SsRaXxAyFwnKNhL189a26zayxMcM3jMVVA1H60Vh PkgDVb+32DkWGpfDttLeyAzFTfv1TV4= X-MC-Unique: 0M9NeVVzNialmEyqmDWL4g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NBEgnvyPuSubVpepgBU5LLBjdsEmlTwEplvXdoQGW9E=; b=XmLECpYHUAlWwKOGYLVc8sbsLqfwaooS88zSoUV6CBAg3wim/24sWwKcgzHcuyj559 HXuGUJSCzkR2HLjk5jC1N9tnsvm5hg3O3nZI7tSRl1/eQAxDb7LPVb5tR+//qgbxkrFy CPgEsCSVssIOx9wbH9jP8WphbJmSwUeUw2sWhnBo2oZdeee72/TDD2ILyouUaON4Vqnj ZBTocy9rIHyijbHVb4D2cjqn1txr2A9twOybr200bN0khXhOz+R5HPebV5XWKkSjCKXv 5nw8Hw3es3V9Ax12kd+ygf49ZqRJHAh1vbytIwWqifRYd6lj4NZZIg4YcKIHQ9OJhXdo E6tg== X-Gm-Message-State: ACrzQf149jGTkEf+Pz7vMHmFIQgUUfZLqxzrNmOsEkLyGvqoMPdgEHMA al6msxZ6Obvew4+jwjsjoerhtEE2QkF/XN8UI5jdl/dBcJLJd4WM8L0t1dPgxt0foAtDbwDwZaA xP1A1TZj3vdp+GGpnsyQohEPU+eYlUNVeItwXnvTrXz35j7I15Y3rpYm8BiHe X-Received: by 2002:adf:e603:0:b0:236:80ac:5f4b with SMTP id p3-20020adfe603000000b0023680ac5f4bmr7744165wrm.83.1667220658122; Mon, 31 Oct 2022 05:50:58 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6VmcQRhlz+xSyVGchIZJlJPVFR/lycf/SInBKBUBK5hPmouV2EBMBn48kqMGBnbK39eMiJ+A== X-Received: by 2002:adf:e603:0:b0:236:80ac:5f4b with SMTP id p3-20020adfe603000000b0023680ac5f4bmr7744153wrm.83.1667220657892; Mon, 31 Oct 2022 05:50:57 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:55 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Robert Hoo , Igor Mammedov , Ani Sinha Subject: [PULL 05/86] acpi/nvdimm: define macro for NVDIMM Device _DSM Message-ID: <20221031124928.128475-6-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220716097100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Robert Hoo Since it will be heavily used in next patch, define macro NVDIMM_DEVICE_DSM_UUID for "4309AC30-0D11-11E4-9191-0800200C9A66", which is NVDIMM device specific method uuid defined in NVDIMM _DSM interface spec, Section 3. [1] No functional changes in this patch. [1] https://pmem.io/documents/IntelOptanePMem_DSM_Interface-V2.0.pdf Signed-off-by: Robert Hoo Reviewed-by: Igor Mammedov Message-Id: <20220922122155.1326543-4-robert.hu@linux.intel.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/acpi/nvdimm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 201317c611..afff911c1e 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -922,6 +922,7 @@ void nvdimm_init_acpi_state(NVDIMMState *state, MemoryR= egion *io, #define NVDIMM_DSM_RFIT_STATUS "RSTA" =20 #define NVDIMM_QEMU_RSVD_UUID "648B9CF2-CDA1-4312-8AD9-49C4AF32BD62" +#define NVDIMM_DEVICE_DSM_UUID "4309AC30-0D11-11E4-9191-0800200C9A66" =20 static void nvdimm_build_common_dsm(Aml *dev, NVDIMMState *nvdimm_state) @@ -1029,8 +1030,7 @@ static void nvdimm_build_common_dsm(Aml *dev, /* UUID for QEMU internal use */), expected_uuid)); aml_append(elsectx, ifctx); elsectx2 =3D aml_else(); - aml_append(elsectx2, aml_store( - aml_touuid("4309AC30-0D11-11E4-9191-0800200C9A66") + aml_append(elsectx2, aml_store(aml_touuid(NVDIMM_DEVICE_DSM_UUID) /* UUID for NVDIMM Devices */, expected_uuid)); aml_append(elsectx, elsectx2); aml_append(method, elsectx); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220846; cv=none; d=zohomail.com; s=zohoarc; b=lQehIlSf8qkDo6VO6GY6lXXq1HduGE9iUkMprV4VXqiLDm+lnSTH/9HIKCuJs2+AUpLG0O4k1VTbwHYX6KzWYCljRY9NwL6t5NtumE4S3L92CjiJjctj+uGtIWLWAVllGRfFE0JETzJVxgfA8eZxEFyA94H+LXA6wTXNSMsW7a8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220846; h=Content-Type: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=fHcLFrjd1DfA6XFg8BR0z1pq4IUlwt9atAyip6cgC1A=; b=TFe80uZR4EtDqJ+QJXllAo8iWBsEcVOEfs9p4J7T6E1Q8GQrHzdy5OYCKmApcXZvFq+mNiQEa3ulzHIvwp7Pgzr8vuvat2jSnk8OxVsSbBOko5pQWE7Vw6DBXfe4POJ/UxSXXv3HEDtDlAf4qCkaeOX6LCa36MQxL5fqJaYK4aA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220846384894.4980001485471; Mon, 31 Oct 2022 05:54:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUFx-0000mc-LE; Mon, 31 Oct 2022 08:51:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFv-0000iD-DQ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFs-0002Ex-Ic for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:06 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-390-efx1uCcgNoqqW3EdHOERLQ-1; Mon, 31 Oct 2022 08:51:02 -0400 Received: by mail-wm1-f71.google.com with SMTP id bg21-20020a05600c3c9500b003c2acbff422so5703977wmb.0 for ; Mon, 31 Oct 2022 05:51:02 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j7-20020a056000124700b00236883f2f5csm6918336wrx.94.2022.10.31.05.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220663; 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: in-reply-to:in-reply-to:references:references; bh=fHcLFrjd1DfA6XFg8BR0z1pq4IUlwt9atAyip6cgC1A=; b=H4p+6QiJBaat8Ew5fceWiEHjX8APoI4QNQyXfuxMUzkkg0kyEcUHBI/DC9xX8or0NzkXKr Aydw+S+yrDMHNwh6+jJF6bK/911nLJPQd/RwEnQnDWijRiYfu5vcUitJRhyjw5msrpCKhQ tJhOX7Ad9QiEoTuexJUHDChr8l2uo+A= X-MC-Unique: efx1uCcgNoqqW3EdHOERLQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=fHcLFrjd1DfA6XFg8BR0z1pq4IUlwt9atAyip6cgC1A=; b=0uxhCpF5EjuDA7l1y6zswXmnmIGBYyMu/GoPRufjq5Rc3LCsM2/QLGmpzXjpGToUty k5hyAmefKOvae+x/c16hbI4QN7hHK423d3JD4INOhMCKZbROOe483YPXBAZ0scPyquR+ LY1abDM7Y2+nRNznAcck6pNpG5CeZ52YbOGY/wRUOjlnpIRIoEdSDe94wEi8UeXyoyCz nu7//DzOAcOu/V4OTunQzQx8BAwI29j5S7sRR4vEjyGwLxmOOBa1pGqjKfOWhIOXvmt4 FMBEYYwwM04HsU1Z4XRauNvK7nMbNUdkXAUZFqeWr06cnJ2A6xFjh14VlnKlrlp04CYN /Q1A== X-Gm-Message-State: ACrzQf0109iX2YHA/N0yWZKb40lxpUc4IBYMiiUNOo8R3++xuXcWvHjk GQytfC15rUlrHIZoNCItCkHqZB6bbvTzrhiecDIioOD6edRjgTNEyU0lGyn2yDHlKq5Nsrlvrr3 boNcu1NETSVCIxNZPdSHwICcJx1J9pr7sGun8PflNPVQrwG+gK9DiWw9nBv0W X-Received: by 2002:a5d:6ac7:0:b0:236:b281:150 with SMTP id u7-20020a5d6ac7000000b00236b2810150mr7060948wrw.29.1667220660886; Mon, 31 Oct 2022 05:51:00 -0700 (PDT) X-Google-Smtp-Source: AMsMyM53dXsDhuYAZyDx+JHT3vlS0E0sfojZSasiCCWTLFEyUTTL/7SixSfqfsnqI4tv5uWlSqGs/A== X-Received: by 2002:a5d:6ac7:0:b0:236:b281:150 with SMTP id u7-20020a5d6ac7000000b00236b2810150mr7060924wrw.29.1667220660622; Mon, 31 Oct 2022 05:51:00 -0700 (PDT) Date: Mon, 31 Oct 2022 08:50:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Robert Hoo , Igor Mammedov , Ani Sinha Subject: [PULL 06/86] acpi/nvdimm: Implement ACPI NVDIMM Label Methods Message-ID: <20221031124928.128475-7-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220846625100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Robert Hoo Recent ACPI spec [1] has defined NVDIMM Label Methods _LS{I,R,W}, which deprecates corresponding _DSM Functions defined by PMEM _DSM Interface spec [2]. Since the semantics of the new Label Methods are almost same as old _DSM methods, the implementations here simply wrapper old ones. ASL form diff can be found in next patch of updating golden master binaries. [1] ACPI Spec v6.4, 6.5.10 NVDIMM Label Methods https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf [2] Intel PMEM _DSM Interface Spec v2.0, 3.10 Deprecated Functions https://pmem.io/documents/IntelOptanePMem_DSM_Interface-V2.0.pdf Signed-off-by: Robert Hoo Message-Id: <20220922122155.1326543-5-robert.hu@linux.intel.com> Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/acpi/nvdimm.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index afff911c1e..a3b25a92f3 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -1243,6 +1243,7 @@ static void nvdimm_build_fit(Aml *dev) static void nvdimm_build_nvdimm_devices(Aml *root_dev, uint32_t ram_slots) { uint32_t slot; + Aml *method, *pkg, *field, *com_call; =20 for (slot =3D 0; slot < ram_slots; slot++) { uint32_t handle =3D nvdimm_slot_to_handle(slot); @@ -1260,6 +1261,100 @@ static void nvdimm_build_nvdimm_devices(Aml *root_d= ev, uint32_t ram_slots) */ aml_append(nvdimm_dev, aml_name_decl("_ADR", aml_int(handle))); =20 + /* + * ACPI v6.4: Section 6.5.10 NVDIMM Label Methods + */ + /* _LSI */ + method =3D aml_method("_LSI", 0, AML_SERIALIZED); + com_call =3D aml_call5(NVDIMM_COMMON_DSM, + aml_touuid(NVDIMM_DEVICE_DSM_UUID), + aml_int(1), aml_int(4), aml_int(0), + aml_int(handle)); + aml_append(method, aml_store(com_call, aml_local(0))); + + aml_append(method, aml_create_dword_field(aml_local(0), + aml_int(0), "STTS")); + aml_append(method, aml_create_dword_field(aml_local(0), aml_int(4), + "SLSA")); + aml_append(method, aml_create_dword_field(aml_local(0), aml_int(8), + "MAXT")); + + pkg =3D aml_package(3); + aml_append(pkg, aml_name("STTS")); + aml_append(pkg, aml_name("SLSA")); + aml_append(pkg, aml_name("MAXT")); + aml_append(method, aml_store(pkg, aml_local(1))); + aml_append(method, aml_return(aml_local(1))); + + aml_append(nvdimm_dev, method); + + /* _LSR */ + method =3D aml_method("_LSR", 2, AML_SERIALIZED); + aml_append(method, aml_name_decl("INPT", aml_buffer(8, NULL))); + + aml_append(method, aml_create_dword_field(aml_name("INPT"), + aml_int(0), "OFST")); + aml_append(method, aml_create_dword_field(aml_name("INPT"), + aml_int(4), "LEN")); + aml_append(method, aml_store(aml_arg(0), aml_name("OFST"))); + aml_append(method, aml_store(aml_arg(1), aml_name("LEN"))); + + pkg =3D aml_package(1); + aml_append(pkg, aml_name("INPT")); + aml_append(method, aml_store(pkg, aml_local(0))); + + com_call =3D aml_call5(NVDIMM_COMMON_DSM, + aml_touuid(NVDIMM_DEVICE_DSM_UUID), + aml_int(1), aml_int(5), aml_local(0), + aml_int(handle)); + aml_append(method, aml_store(com_call, aml_local(3))); + field =3D aml_create_dword_field(aml_local(3), aml_int(0), "STTS"); + aml_append(method, field); + field =3D aml_create_field(aml_local(3), aml_int(32), + aml_shiftleft(aml_name("LEN"), aml_int(3)= ), + "LDAT"); + aml_append(method, field); + aml_append(method, aml_name_decl("LSA", aml_buffer(0, NULL))); + aml_append(method, aml_to_buffer(aml_name("LDAT"), aml_name("LSA")= )); + + pkg =3D aml_package(2); + aml_append(pkg, aml_name("STTS")); + aml_append(pkg, aml_name("LSA")); + + aml_append(method, aml_store(pkg, aml_local(1))); + aml_append(method, aml_return(aml_local(1))); + + aml_append(nvdimm_dev, method); + + /* _LSW */ + method =3D aml_method("_LSW", 3, AML_SERIALIZED); + aml_append(method, aml_store(aml_arg(2), aml_local(2))); + aml_append(method, aml_name_decl("INPT", aml_buffer(8, NULL))); + field =3D aml_create_dword_field(aml_name("INPT"), + aml_int(0), "OFST"); + aml_append(method, field); + field =3D aml_create_dword_field(aml_name("INPT"), + aml_int(4), "TLEN"); + aml_append(method, field); + aml_append(method, aml_store(aml_arg(0), aml_name("OFST"))); + aml_append(method, aml_store(aml_arg(1), aml_name("TLEN"))); + + aml_append(method, aml_concatenate(aml_name("INPT"), aml_local(2), + aml_name("INPT"))); + pkg =3D aml_package(1); + aml_append(pkg, aml_name("INPT")); + aml_append(method, aml_store(pkg, aml_local(0))); + com_call =3D aml_call5(NVDIMM_COMMON_DSM, + aml_touuid(NVDIMM_DEVICE_DSM_UUID), + aml_int(1), aml_int(6), aml_local(0), + aml_int(handle)); + aml_append(method, aml_store(com_call, aml_local(3))); + field =3D aml_create_dword_field(aml_local(3), aml_int(0), "STTS"); + aml_append(method, field); + aml_append(method, aml_return(aml_name("STTS"))); + + aml_append(nvdimm_dev, method); + nvdimm_build_device_dsm(nvdimm_dev, handle); aml_append(root_dev, nvdimm_dev); } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220749; cv=none; d=zohomail.com; s=zohoarc; b=aq6YgkNj3ZkoWO3j9k89gYtGg11u4Na/kSRwE9qRfUnBeihDXkHzfSKZIPII6pK4nqkk3NQrRjXOGrEbX7hdNzIf+JiithLjaddr+3k9prgRxoNvLank4ZdlnncX09CsvSuxXskjlLDr8qff09eJI/WoC4Wod1BbeFb179+Ix4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220749; h=Content-Type: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=Pzmg+/++J/zaOBNUtyrZfFr7Qxx00U7Iz/ZMuTqMXlQ=; b=TLJuN7KePU0EHmSOLGDoRqVUdSLWQE3DUZ9RA/BgJGfOJIhtWMFYlEnFmRn5zEUimqMSdpnDoMDsjEQO2h+MyaCt9/8uPr/6h2VpQP9MX5UI0ZfIuLQKYnwnAD683gh6xKhn+wiUoTd9jOO+UJS2itsHSDVM2wq6lWvDyCmmpkc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220749097767.6308745820384; Mon, 31 Oct 2022 05:52:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGF-0000u3-Ef; Mon, 31 Oct 2022 08:51:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG0-0000ni-28 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFw-0002FH-NX for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:10 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-222-JcnENOROORyiYkqnAuyAhw-1; Mon, 31 Oct 2022 08:51:05 -0400 Received: by mail-wm1-f72.google.com with SMTP id d13-20020a05600c34cd00b003ce1f62ac5aso8307258wmq.4 for ; Mon, 31 Oct 2022 05:51:05 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id w4-20020adfcd04000000b002366dd0e030sm7200700wrm.68.2022.10.31.05.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220667; 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: in-reply-to:in-reply-to:references:references; bh=Pzmg+/++J/zaOBNUtyrZfFr7Qxx00U7Iz/ZMuTqMXlQ=; b=FPAQ70KSRaA1yXAI8zlUhx4qmfFbMpg7iW8M5OQCWQoukiXGOqU3dPF1bCS2sC8Go+/L2h QI4qrnYpLgCQArwC/O9wH7UAd7a/Lcs94GfYFkxY/wMs7fgTUjaIQc73HdsQwXWcnohTVi T4gCeTdnjL+OQs5wZeI1k26puOMFKsU= X-MC-Unique: JcnENOROORyiYkqnAuyAhw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Pzmg+/++J/zaOBNUtyrZfFr7Qxx00U7Iz/ZMuTqMXlQ=; b=DtXSJTtY15mpfeIBM/bKOC5E42Qd7nHvkBnurLu6z+mmJsac2zYhJWUi5vX1PHI5TS RdN5Ub8wWB6Fr1tMAUdY883bTAbrASeowDzbogR5JaNfrnDSemdqDSzrWLBz8gfH2bbV zTs/9RVN3Tharoo9xCh8fOaWWG3lDcUNO27Ird/HDXa26bv5cwqRbgzHj48JZA7hxUAv 02c22/xnbpjOh436+2wQ8CmHeUUrqzVQRO/xOLGnrFzIiWTu76/GALYLPrTXeBrLE7hR 0WJFOWDyoKrgXN9JO16AF55yvOP4KWGzcYfLhQfXfKkGs9mQrPnN9jFGReP89SqieWlw MQMQ== X-Gm-Message-State: ACrzQf2rsuJaTZOfAX6o7Vic4XVbV/m26ZYqjccJCsB7zm5bbg5Tecs5 O6XZApeBbKXIH1rR1PJQDsuap52giGbpKupOQNqPN0LTihk3K16d7tBLSXghvI87St4WsJJI0pw Z6tqwKGGl1tSEH91owumoBuVQdfQR/lFZI4hsD4QEWeStc2nP4HeRzd0fg24g X-Received: by 2002:a05:6000:1f18:b0:236:8e08:68e1 with SMTP id bv24-20020a0560001f1800b002368e0868e1mr7987215wrb.67.1667220664079; Mon, 31 Oct 2022 05:51:04 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5eUw7iz+150yQiWQ0r2FathXuaVaM10LySvXmsx4hx+d9DeEv3+87Y3zi8TzGbkPUUijkzHw== X-Received: by 2002:a05:6000:1f18:b0:236:8e08:68e1 with SMTP id bv24-20020a0560001f1800b002368e0868e1mr7987188wrb.67.1667220663717; Mon, 31 Oct 2022 05:51:03 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:01 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Robert Hoo , Igor Mammedov , Ani Sinha Subject: [PULL 07/86] test/acpi/bios-tables-test: SSDT: update golden master binaries Message-ID: <20221031124928.128475-8-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220750320100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Robert Hoo And empty bios-tables-test-allowed-diff.h. Diff of ASL form, from qtest testlog.txt: @@ -1,30 +1,30 @@ /* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20180629 (64-bit version) * Copyright (c) 2000 - 2018 Intel Corporation * * Disassembling to symbolic ASL+ operators * - * Disassembly of tests/data/acpi/pc/SSDT.dimmpxm, Thu Sep 22 18:25:06 2022 + * Disassembly of /tmp/aml-YYZZS1, Thu Sep 22 18:25:06 2022 * * Original Table Header: * Signature "SSDT" - * Length 0x000002DE (734) + * Length 0x00000717 (1815) * Revision 0x01 - * Checksum 0x56 + * Checksum 0xBC * OEM ID "BOCHS " * OEM Table ID "NVDIMM" * OEM Revision 0x00000001 (1) * Compiler ID "BXPC" * Compiler Version 0x00000001 (1) */ DefinitionBlock ("", "SSDT", 1, "BOCHS ", "NVDIMM", 0x00000001) { Scope (\_SB) { Device (NVDR) { Name (_HID, "ACPI0012" /* NVDIMM Root Device */) // _HID: Har= dware ID Method (NCAL, 5, Serialized) { Local6 =3D MEMA /* \MEMA */ @@ -49,52 +49,52 @@ ODAT, 32736 } If ((Arg4 =3D=3D Zero)) { Local0 =3D ToUUID ("2f10e7a4-9e91-11e4-89d3-123b93f75c= ba") } ElseIf ((Arg4 =3D=3D 0x00010000)) { Local0 =3D ToUUID ("648b9cf2-cda1-4312-8ad9-49c4af32bd= 62") } Else { Local0 =3D ToUUID ("4309ac30-0d11-11e4-9191-0800200c9a= 66") } - If (((Local6 =3D=3D Zero) | (Arg0 !=3D Local0))) + If (((Local6 =3D=3D Zero) || (Arg0 !=3D Local0))) { If ((Arg2 =3D=3D Zero)) { Return (Buffer (One) { 0x00 = // . }) } Return (Buffer (One) { 0x01 = // . }) } HDLE =3D Arg4 REVS =3D Arg1 FUNC =3D Arg2 - If (((ObjectType (Arg3) =3D=3D 0x04) & (SizeOf (Arg3) =3D= =3D One))) + If (((ObjectType (Arg3) =3D=3D 0x04) && (SizeOf (Arg3) =3D= =3D One))) { Local2 =3D Arg3 [Zero] Local3 =3D DerefOf (Local2) FARG =3D Local3 } NTFI =3D Local6 Local1 =3D (RLEN - 0x04) If ((Local1 < 0x08)) { Local2 =3D Zero Name (TBUF, Buffer (One) { 0x00 = // . }) Local7 =3D Buffer (Zero){} @@ -161,45 +161,234 @@ Else { If ((Local1 =3D=3D Zero)) { Return (Local2) } Local3 +=3D Local1 Concatenate (Local2, Local0, Local2) } } } Device (NV00) { Name (_ADR, One) // _ADR: Address + Method (_LSI, 0, Serialized) // _LSI: Label Storage Infor= mation + { + Local0 =3D NCAL (ToUUID ("4309ac30-0d11-11e4-9191-0800= 200c9a66"), One, 0x04, Zero, One) + CreateDWordField (Local0, Zero, STTS) + CreateDWordField (Local0, 0x04, SLSA) + CreateDWordField (Local0, 0x08, MAXT) + Local1 =3D Package (0x03) + { + STTS, + SLSA, + MAXT + } + Return (Local1) + } + + Method (_LSR, 2, Serialized) // _LSR: Label Storage Read + { + Name (INPT, Buffer (0x08) + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 = // ........ + }) + CreateDWordField (INPT, Zero, OFST) + CreateDWordField (INPT, 0x04, LEN) + OFST =3D Arg0 + LEN =3D Arg1 + Local0 =3D Package (0x01) + { + INPT + } + Local3 =3D NCAL (ToUUID ("4309ac30-0d11-11e4-9191-0800= 200c9a66"), One, 0x05, Local0, One) + CreateDWordField (Local3, Zero, STTS) + CreateField (Local3, 0x20, (LEN << 0x03), LDAT) + Name (LSA, Buffer (Zero){}) + ToBuffer (LDAT, LSA) /* \_SB_.NVDR.NV00._LSR.LSA_ */ + Local1 =3D Package (0x02) + { + STTS, + LSA + } + Return (Local1) + } + + Method (_LSW, 3, Serialized) // _LSW: Label Storage Write + { + Local2 =3D Arg2 + Name (INPT, Buffer (0x08) + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 = // ........ + }) + CreateDWordField (INPT, Zero, OFST) + CreateDWordField (INPT, 0x04, TLEN) + OFST =3D Arg0 + TLEN =3D Arg1 + Concatenate (INPT, Local2, INPT) /* \_SB_.NVDR.NV00._L= SW.INPT */ + Local0 =3D Package (0x01) + { + INPT + } + Local3 =3D NCAL (ToUUID ("4309ac30-0d11-11e4-9191-0800= 200c9a66"), One, 0x06, Local0, One) + CreateDWordField (Local3, Zero, STTS) + Return (STTS) /* \_SB_.NVDR.NV00._LSW.STTS */ + } + (iterates in each NV) Message-Id: <20220922122155.1326543-6-robert.hu@linux.intel.com> Signed-off-by: Robert Hoo Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 2 -- tests/data/acpi/pc/SSDT.dimmpxm | Bin 734 -> 1815 bytes tests/data/acpi/q35/SSDT.dimmpxm | Bin 734 -> 1815 bytes tests/data/acpi/virt/SSDT.memhp | Bin 736 -> 1817 bytes 4 files changed, 2 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index eb8bae1407..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,3 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/pc/SSDT.dimmpxm", -"tests/data/acpi/q35/SSDT.dimmpxm", diff --git a/tests/data/acpi/pc/SSDT.dimmpxm b/tests/data/acpi/pc/SSDT.dimm= pxm index ac55387d57e48adb99eb738a102308688a262fb8..70f133412f5e0aa128ab210245a= 8de7304eeb843 100644 GIT binary patch literal 1815 zcmdUwyKmD_6vnUPv~g}y6emHgc**|(X$OSF0FILox3Lr1ZmHx-examI3c8|YVC!RO z2@)c;%774ZDvwC)2sTzGCN_pj>?}wOz&%bMqC!xRK#<|wbI(0K`Q7hx6kRVFqX~qV z7sa|%)dh8?Br6KtBZP{x4GGpv_2!(V7cFzGeuJKCoK=3D-eBcjxh3x)9sl%G1ON@8t< zC}l-#nk#BUt~04IjN>%dLxHlK*k;x!u1QobwmcfE+b^ zczo}A|8-XCzLj4+n|SHk{n4mic$$>>kzKymqe^LJ0ZG7X5M#F6I*C?GzXSG@cDl2fPncQ;69=3D?`MKx80Oyc z9B;|BU2{zuQ)dbV&Js%+lfN=3D#)pVIV;6G{kbZ#&Nx-i*)4_an>N&6Rd6+ zI@DnAgic;g(t#T0WVK=3DNDa_GVIQn#oVA@DG+o@4h6y0>WY85C8xG delta 135 zcmbQvcaN1TIM^lR9uortW7tG4X>Nb5nD}6)_~<4#t%(LAjJ^|Hw{uC>PEKQ(G&v)I zVKOVD5|2#vdc3J@?GX?|$Ee=3Dz7T*O(4YV z6zft|7u04+RusBN2o+}<60Di(?O97NTIOo~7CqNEt16d9M5!Sc3gZ(fKXqD_#M%f^ z%8J-Bm(_+`XHsJr$7!yK3TmZL##~83omGvBESM|j;DD``YGpwyH+7*htx7^g)UGdo zN|-Cz=3Dv1qfRiR!IjpfgY;Ecb32%p25@LlF&|Jg2o|4sIa|8e$(J-8fP@E6j695sA+ z`rzi^byn)Vm0vxdcT{mo#dk$uiW9Fa%IdxhOA>=3DbwNmt?_2s}66=3D^{?k z4H4y)gjSJ_Bv-HK1|oB?5aUFHt?j~m6{IAZp&4ZUaMxL(smx^jv*W034ARyPbC zYOr@gCod=3DIKn-)U+A#PO=3DIARNeR@zpphT46IJL~$7jHhwsZh{k|A1x4X1tz91v7Lr z=3DTT|kLF!$N8plxxi>mS%HjtAnjzK5nKsK46WH(ZzNb5nD}6)_~<4#t%(LAjJ^|Hw{uC>PEKQ(G&v)I zVKOVD5|2#vI+-M9YF^Att1yLmNzx{zTx?yqYuZI? z1Th`zLPREImV$f1om*F~+!x#nBDfImne>50v;JW#` zT-LI+*@9B7vNZtYZ#85blhaFcrj|F2HED_ERlzJPg>gx4D7oC^6lAI=3DYqC@sr`2Lr zY8tDxhEj(yfOwol*-DkF&`dzm=3Dq513*YuK-HM-|8!Iuk_Vpc8AYT43EP0p4i_4?}P zn9)szS+!EEW$Oh=3DU;PsE&v=3DVK#WYChIT_VR*;rNZU54?O#}*#pyy{w*piA7 zXziTec5J%7iPv#p6LSE|EgV~SouEbU*@Oq%NMixmb+#X1$Ry2zR*eQI@%%!&1A?mQ z5)(b9mJ~fM)JvKUbRGwaHK@>00XQx-%3(#Qk=3D3(+wV0t8u$e!$<%K%|1Em|5y<+1% z1kYw_M8HT}BpcE(oKk=3DxbJb)I7w}>Z1$QUMQKWG#Jnf4fc1-}cpC2UsQEcYiacy_m zu^eMfo~X^{a)K!pR4#LE#H?tFaKL}mD2_yd8)EBP&mvK+qDgENs?sf;rcUshu4}l5 zYdf$rN}M%RiJ;UPx|kpWdx^tO4>tgn2xlb9EHn4STL|Y&D6Fx5z%pWSZqH?c>6(#t znKXEic~@b^2@JwysyxO8&S{E7uoCA;HXUPRHxsn&{2WeajrZYjzKmoJ26_z4(L>At z368!o)c3;C-~zz a!T(E6@c)Su2b|w`f*0^VjQvV}l)nP3li&~l delta 150 zcmbQq_kfivIM^lR0TTlQqx3{BX>LdDnD}6)_~<4Nt%(LAjQ$f{cXCPAPEKQ(G&v)I zVKO_T5|2#vWc (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722072349475.01283820591686; Mon, 31 Oct 2022 05:52:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGP-0001Bg-3k; Mon, 31 Oct 2022 08:51:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG2-0000p1-Q8 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUFz-0002FX-Bg for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:14 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-258-XCp5Q3WoOnKmYnx_nKFE7A-1; Mon, 31 Oct 2022 08:51:08 -0400 Received: by mail-wm1-f70.google.com with SMTP id r187-20020a1c44c4000000b003c41e9ae97dso4791144wma.6 for ; Mon, 31 Oct 2022 05:51:08 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id c192-20020a1c35c9000000b003c6f3f6675bsm7285460wma.26.2022.10.31.05.51.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220670; 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: in-reply-to:in-reply-to:references:references; bh=Tr+igyL3+68yMMopsA9u9eqx7EVJQSYO4CT3FlSQSAo=; b=X0csoqwN07Bc/WpMkIm3wUBRIVilAQArIGXyyu7I7Yx62+EY1E6Ev9Xb1I/5er06ULgN+u Tf0FqQgdVY/N/VRNt4uWXQ2fObskn8wXv/5YMUycBC73tN6mRgHNPby4HD0XhlIShiWh34 yr8EMlN0Z7AGiCFFJq2cd8doaFX9gUQ= X-MC-Unique: XCp5Q3WoOnKmYnx_nKFE7A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Tr+igyL3+68yMMopsA9u9eqx7EVJQSYO4CT3FlSQSAo=; b=Picc2d0oYovehy7/nUFDOGUfmjZAtajQ3QERbW7mo9ofRVRQI3mIB4x95WhYJAGsTV ostmyGni7h4WV59U0W4e+hJRyAec9MjDjmszGq7HxhKkobxVSX6b+mGUNk4VTKUtcpEl YXWNY3j03wtIOv8R+1xVUqGeBRVMdJ4VClwQ61goV3YIqnYjkSP/FUuNtWjsoMGslzVe EnXYaBwqNUiXFTWzIZgV8JWR7R37mOHKfxG3ePeTIY+L4Buoq8iPCscr6hAcKj+n+4iU d6tCT5DpJM1oiCRzR3n7sICEJCj9HJmLwLSK1U2tjILDCywuj07ZYYzhunCBnMOvjkCH UULA== X-Gm-Message-State: ACrzQf0SN8On8X3BU9uLXaG/X3v3+E9moZU22cqiUP3ayTcoATJUH/nD gZaAesDwhORDY2e3hLmrcaqS6lMAqEudNF5twFweP7XawQSf3KAPpF2psJQwMFvLm4ndpbg1OLI YXu4sS0OYJB9tWnyvQOC6mInfhh8Dze730pwllLI/L1XnZAQhvmPOz1Z90KIp X-Received: by 2002:a5d:4ace:0:b0:236:6054:30f5 with SMTP id y14-20020a5d4ace000000b00236605430f5mr7801647wrs.19.1667220666924; Mon, 31 Oct 2022 05:51:06 -0700 (PDT) X-Google-Smtp-Source: AMsMyM75nEr/tbfS4YGobQrKQBXXA+t77LmzRQjJHta6SetVGZxNujoYVt+vut73lrOo/H7nzpJrdA== X-Received: by 2002:a5d:4ace:0:b0:236:6054:30f5 with SMTP id y14-20020a5d4ace000000b00236605430f5mr7801619wrs.19.1667220666417; Mon, 31 Oct 2022 05:51:06 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:03 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lei He , "Gonglei (Arei)" Subject: [PULL 08/86] virtio-crypto: Support asynchronous mode Message-ID: <20221031124928.128475-9-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220724438100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lei He virtio-crypto: Modify the current interface of virtio-crypto device to support asynchronous mode. Signed-off-by: lei he Message-Id: <20221008085030.70212-2-helei.sig11@bytedance.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/sysemu/cryptodev.h | 60 ++++-- backends/cryptodev-builtin.c | 69 +++++-- backends/cryptodev-vhost-user.c | 53 ++++-- backends/cryptodev.c | 44 +++-- hw/virtio/virtio-crypto.c | 326 ++++++++++++++++++-------------- 5 files changed, 338 insertions(+), 214 deletions(-) diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index 37c3a360fd..32e9f4cf8a 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -113,6 +113,7 @@ typedef struct CryptoDevBackendSessionInfo { CryptoDevBackendSymSessionInfo sym_sess_info; CryptoDevBackendAsymSessionInfo asym_sess_info; } u; + uint64_t session_id; } CryptoDevBackendSessionInfo; =20 /** @@ -188,21 +189,30 @@ typedef struct CryptoDevBackendOpInfo { } u; } CryptoDevBackendOpInfo; =20 +typedef void (*CryptoDevCompletionFunc) (void *opaque, int ret); struct CryptoDevBackendClass { ObjectClass parent_class; =20 void (*init)(CryptoDevBackend *backend, Error **errp); void (*cleanup)(CryptoDevBackend *backend, Error **errp); =20 - int64_t (*create_session)(CryptoDevBackend *backend, - CryptoDevBackendSessionInfo *sess_info, - uint32_t queue_index, Error **errp); + int (*create_session)(CryptoDevBackend *backend, + CryptoDevBackendSessionInfo *sess_info, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); + int (*close_session)(CryptoDevBackend *backend, - uint64_t session_id, - uint32_t queue_index, Error **errp); + uint64_t session_id, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); + int (*do_op)(CryptoDevBackend *backend, - CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, Error **errp); + CryptoDevBackendOpInfo *op_info, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); }; =20 typedef enum CryptoDevBackendOptionsType { @@ -303,15 +313,20 @@ void cryptodev_backend_cleanup( * @sess_info: parameters needed by session creating * @queue_index: queue index of cryptodev backend client * @errp: pointer to a NULL-initialized error object + * @cb: callback when session create is compeleted + * @opaque: parameter passed to callback * - * Create a session for symmetric/symmetric algorithms + * Create a session for symmetric/asymmetric algorithms * - * Returns: session id on success, or -1 on error + * Returns: 0 for success and cb will be called when creation is completed, + * negative value for error, and cb will not be called. */ -int64_t cryptodev_backend_create_session( +int cryptodev_backend_create_session( CryptoDevBackend *backend, CryptoDevBackendSessionInfo *sess_info, - uint32_t queue_index, Error **errp); + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); =20 /** * cryptodev_backend_close_session: @@ -319,34 +334,43 @@ int64_t cryptodev_backend_create_session( * @session_id: the session id * @queue_index: queue index of cryptodev backend client * @errp: pointer to a NULL-initialized error object + * @cb: callback when session create is compeleted + * @opaque: parameter passed to callback * * Close a session for which was previously * created by cryptodev_backend_create_session() * - * Returns: 0 on success, or Negative on error + * Returns: 0 for success and cb will be called when creation is completed, + * negative value for error, and cb will not be called. */ int cryptodev_backend_close_session( CryptoDevBackend *backend, uint64_t session_id, - uint32_t queue_index, Error **errp); + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); =20 /** * cryptodev_backend_crypto_operation: * @backend: the cryptodev backend object - * @opaque: pointer to a VirtIOCryptoReq object + * @opaque1: pointer to a VirtIOCryptoReq object * @queue_index: queue index of cryptodev backend client * @errp: pointer to a NULL-initialized error object + * @cb: callbacks when operation is completed + * @opaque2: parameter passed to cb * * Do crypto operation, such as encryption and * decryption * - * Returns: VIRTIO_CRYPTO_OK on success, - * or -VIRTIO_CRYPTO_* on error + * Returns: 0 for success and cb will be called when creation is completed, + * negative value for error, and cb will not be called. */ int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, - void *opaque, - uint32_t queue_index, Error **errp); + void *opaque1, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque2); =20 /** * cryptodev_backend_set_used: diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index 125cbad1d3..cda6ca3b71 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -355,42 +355,62 @@ static int cryptodev_builtin_create_akcipher_session( return index; } =20 -static int64_t cryptodev_builtin_create_session( +static int cryptodev_builtin_create_session( CryptoDevBackend *backend, CryptoDevBackendSessionInfo *sess_info, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendBuiltin *builtin =3D CRYPTODEV_BACKEND_BUILTIN(backend); CryptoDevBackendSymSessionInfo *sym_sess_info; CryptoDevBackendAsymSessionInfo *asym_sess_info; + int ret, status; + Error *local_error =3D NULL; =20 switch (sess_info->op_code) { case VIRTIO_CRYPTO_CIPHER_CREATE_SESSION: sym_sess_info =3D &sess_info->u.sym_sess_info; - return cryptodev_builtin_create_cipher_session( - builtin, sym_sess_info, errp); + ret =3D cryptodev_builtin_create_cipher_session( + builtin, sym_sess_info, &local_error); + break; =20 case VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION: asym_sess_info =3D &sess_info->u.asym_sess_info; - return cryptodev_builtin_create_akcipher_session( - builtin, asym_sess_info, errp); + ret =3D cryptodev_builtin_create_akcipher_session( + builtin, asym_sess_info, &local_error); + break; =20 case VIRTIO_CRYPTO_HASH_CREATE_SESSION: case VIRTIO_CRYPTO_MAC_CREATE_SESSION: default: - error_setg(errp, "Unsupported opcode :%" PRIu32 "", + error_setg(&local_error, "Unsupported opcode :%" PRIu32 "", sess_info->op_code); - return -1; + return -VIRTIO_CRYPTO_NOTSUPP; } =20 - return -1; + if (local_error) { + error_report_err(local_error); + } + if (ret < 0) { + status =3D -VIRTIO_CRYPTO_ERR; + } else { + sess_info->session_id =3D ret; + status =3D VIRTIO_CRYPTO_OK; + } + if (cb) { + cb(opaque, status); + } + return 0; } =20 static int cryptodev_builtin_close_session( CryptoDevBackend *backend, uint64_t session_id, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendBuiltin *builtin =3D CRYPTODEV_BACKEND_BUILTIN(backend); @@ -407,6 +427,9 @@ static int cryptodev_builtin_close_session( =20 g_free(session); builtin->sessions[session_id] =3D NULL; + if (cb) { + cb(opaque, VIRTIO_CRYPTO_OK); + } return 0; } =20 @@ -506,7 +529,9 @@ static int cryptodev_builtin_asym_operation( static int cryptodev_builtin_operation( CryptoDevBackend *backend, CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendBuiltin *builtin =3D CRYPTODEV_BACKEND_BUILTIN(backend); @@ -514,11 +539,12 @@ static int cryptodev_builtin_operation( CryptoDevBackendSymOpInfo *sym_op_info; CryptoDevBackendAsymOpInfo *asym_op_info; enum CryptoDevBackendAlgType algtype =3D op_info->algtype; - int ret =3D -VIRTIO_CRYPTO_ERR; + int status =3D -VIRTIO_CRYPTO_ERR; + Error *local_error =3D NULL; =20 if (op_info->session_id >=3D MAX_NUM_SESSIONS || builtin->sessions[op_info->session_id] =3D=3D NULL) { - error_setg(errp, "Cannot find a valid session id: %" PRIu64 "", + error_setg(&local_error, "Cannot find a valid session id: %" PRIu6= 4 "", op_info->session_id); return -VIRTIO_CRYPTO_INVSESS; } @@ -526,14 +552,21 @@ static int cryptodev_builtin_operation( sess =3D builtin->sessions[op_info->session_id]; if (algtype =3D=3D CRYPTODEV_BACKEND_ALG_SYM) { sym_op_info =3D op_info->u.sym_op_info; - ret =3D cryptodev_builtin_sym_operation(sess, sym_op_info, errp); + status =3D cryptodev_builtin_sym_operation(sess, sym_op_info, + &local_error); } else if (algtype =3D=3D CRYPTODEV_BACKEND_ALG_ASYM) { asym_op_info =3D op_info->u.asym_op_info; - ret =3D cryptodev_builtin_asym_operation(sess, op_info->op_code, - asym_op_info, errp); + status =3D cryptodev_builtin_asym_operation(sess, op_info->op_code, + asym_op_info, &local_err= or); } =20 - return ret; + if (local_error) { + error_report_err(local_error); + } + if (cb) { + cb(opaque, status); + } + return 0; } =20 static void cryptodev_builtin_cleanup( @@ -548,7 +581,7 @@ static void cryptodev_builtin_cleanup( =20 for (i =3D 0; i < MAX_NUM_SESSIONS; i++) { if (builtin->sessions[i] !=3D NULL) { - cryptodev_builtin_close_session(backend, i, 0, &error_abort); + cryptodev_builtin_close_session(backend, i, 0, NULL, NULL); } } =20 diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index 5443a59153..351b2729e0 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -259,13 +259,18 @@ static int64_t cryptodev_vhost_user_sym_create_sessio= n( return -1; } =20 -static int64_t cryptodev_vhost_user_create_session( +static int cryptodev_vhost_user_create_session( CryptoDevBackend *backend, CryptoDevBackendSessionInfo *sess_info, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { uint32_t op_code =3D sess_info->op_code; CryptoDevBackendSymSessionInfo *sym_sess_info; + int64_t ret; + Error *local_error =3D NULL; + int status; =20 switch (op_code) { case VIRTIO_CRYPTO_CIPHER_CREATE_SESSION: @@ -273,27 +278,42 @@ static int64_t cryptodev_vhost_user_create_session( case VIRTIO_CRYPTO_MAC_CREATE_SESSION: case VIRTIO_CRYPTO_AEAD_CREATE_SESSION: sym_sess_info =3D &sess_info->u.sym_sess_info; - return cryptodev_vhost_user_sym_create_session(backend, sym_sess_i= nfo, - queue_index, errp); - default: - error_setg(errp, "Unsupported opcode :%" PRIu32 "", - sess_info->op_code); - return -1; + ret =3D cryptodev_vhost_user_sym_create_session(backend, sym_sess_= info, + queue_index, &local_error); + break; =20 + default: + error_setg(&local_error, "Unsupported opcode :%" PRIu32 "", + sess_info->op_code); + return -VIRTIO_CRYPTO_NOTSUPP; } =20 - return -1; + if (local_error) { + error_report_err(local_error); + } + if (ret < 0) { + status =3D -VIRTIO_CRYPTO_ERR; + } else { + sess_info->session_id =3D ret; + status =3D VIRTIO_CRYPTO_OK; + } + if (cb) { + cb(opaque, status); + } + return 0; } =20 static int cryptodev_vhost_user_close_session( CryptoDevBackend *backend, uint64_t session_id, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendClient *cc =3D backend->conf.peers.ccs[queue_index]; CryptoDevBackendVhost *vhost_crypto; - int ret; + int ret =3D -1, status; =20 vhost_crypto =3D cryptodev_vhost_user_get_vhost(cc, backend, queue_ind= ex); if (vhost_crypto) { @@ -301,12 +321,17 @@ static int cryptodev_vhost_user_close_session( ret =3D dev->vhost_ops->vhost_crypto_close_session(dev, session_id); if (ret < 0) { - return -1; + status =3D -VIRTIO_CRYPTO_ERR; } else { - return 0; + status =3D VIRTIO_CRYPTO_OK; } + } else { + status =3D -VIRTIO_CRYPTO_NOTSUPP; } - return -1; + if (cb) { + cb(opaque, status); + } + return 0; } =20 static void cryptodev_vhost_user_cleanup( diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 33eb4e1a70..54ee8c81f5 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -26,6 +26,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "qemu/config-file.h" +#include "qemu/error-report.h" #include "qom/object_interfaces.h" #include "hw/virtio/virtio-crypto.h" =20 @@ -72,69 +73,72 @@ void cryptodev_backend_cleanup( } } =20 -int64_t cryptodev_backend_create_session( +int cryptodev_backend_create_session( CryptoDevBackend *backend, CryptoDevBackendSessionInfo *sess_info, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(backend); =20 if (bc->create_session) { - return bc->create_session(backend, sess_info, queue_index, errp); + return bc->create_session(backend, sess_info, queue_index, cb, opa= que); } - - return -1; + return -VIRTIO_CRYPTO_NOTSUPP; } =20 int cryptodev_backend_close_session( CryptoDevBackend *backend, uint64_t session_id, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(backend); =20 if (bc->close_session) { - return bc->close_session(backend, session_id, queue_index, errp); + return bc->close_session(backend, session_id, queue_index, cb, opa= que); } - - return -1; + return -VIRTIO_CRYPTO_NOTSUPP; } =20 static int cryptodev_backend_operation( CryptoDevBackend *backend, CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, Error **errp) + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) { CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(backend); =20 if (bc->do_op) { - return bc->do_op(backend, op_info, queue_index, errp); + return bc->do_op(backend, op_info, queue_index, cb, opaque); } - - return -VIRTIO_CRYPTO_ERR; + return -VIRTIO_CRYPTO_NOTSUPP; } =20 int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, - void *opaque, - uint32_t queue_index, Error **errp) + void *opaque1, + uint32_t queue_index, + CryptoDevCompletionFunc cb, void *opaque2) { - VirtIOCryptoReq *req =3D opaque; + VirtIOCryptoReq *req =3D opaque1; CryptoDevBackendOpInfo *op_info =3D &req->op_info; enum CryptoDevBackendAlgType algtype =3D req->flags; =20 if ((algtype !=3D CRYPTODEV_BACKEND_ALG_SYM) && (algtype !=3D CRYPTODEV_BACKEND_ALG_ASYM)) { - error_setg(errp, "Unsupported cryptodev alg type: %" PRIu32 "", - algtype); - + error_report("Unsupported cryptodev alg type: %" PRIu32 "", algtyp= e); return -VIRTIO_CRYPTO_NOTSUPP; } =20 - return cryptodev_backend_operation(backend, op_info, queue_index, errp= ); + return cryptodev_backend_operation(backend, op_info, queue_index, + cb, opaque2); } =20 static void diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index df4bde210b..39c8f5914e 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -27,6 +27,39 @@ =20 #define VIRTIO_CRYPTO_VM_VERSION 1 =20 +typedef struct VirtIOCryptoSessionReq { + VirtIODevice *vdev; + VirtQueue *vq; + VirtQueueElement *elem; + CryptoDevBackendSessionInfo info; + CryptoDevCompletionFunc cb; +} VirtIOCryptoSessionReq; + +static void virtio_crypto_free_create_session_req(VirtIOCryptoSessionReq *= sreq) +{ + switch (sreq->info.op_code) { + case VIRTIO_CRYPTO_CIPHER_CREATE_SESSION: + g_free(sreq->info.u.sym_sess_info.cipher_key); + g_free(sreq->info.u.sym_sess_info.auth_key); + break; + + case VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION: + g_free(sreq->info.u.asym_sess_info.key); + break; + + case VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION: + case VIRTIO_CRYPTO_HASH_DESTROY_SESSION: + case VIRTIO_CRYPTO_MAC_DESTROY_SESSION: + case VIRTIO_CRYPTO_AEAD_DESTROY_SESSION: + case VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION: + break; + + default: + error_report("Unknown opcode: %u", sreq->info.op_code); + } + g_free(sreq); +} + /* * Transfer virtqueue index to crypto queue index. * The control virtqueue is after the data virtqueues @@ -75,27 +108,24 @@ virtio_crypto_cipher_session_helper(VirtIODevice *vdev, return 0; } =20 -static int64_t +static int virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto, struct virtio_crypto_sym_create_session_req *sess_req, uint32_t queue_id, uint32_t opcode, - struct iovec *iov, unsigned int out_num) + struct iovec *iov, unsigned int out_num, + VirtIOCryptoSessionReq *sreq) { VirtIODevice *vdev =3D VIRTIO_DEVICE(vcrypto); - CryptoDevBackendSessionInfo info; - CryptoDevBackendSymSessionInfo *sym_info; - int64_t session_id; + CryptoDevBackendSymSessionInfo *sym_info =3D &sreq->info.u.sym_sess_in= fo; int queue_index; uint32_t op_type; - Error *local_err =3D NULL; int ret; =20 - memset(&info, 0, sizeof(info)); op_type =3D ldl_le_p(&sess_req->op_type); - info.op_code =3D opcode; + sreq->info.op_code =3D opcode; =20 - sym_info =3D &info.u.sym_sess_info; + sym_info =3D &sreq->info.u.sym_sess_info; sym_info->op_type =3D op_type; =20 if (op_type =3D=3D VIRTIO_CRYPTO_SYM_OP_CIPHER) { @@ -103,7 +133,7 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto, &sess_req->u.cipher.para, &iov, &out_num); if (ret < 0) { - goto err; + return ret; } } else if (op_type =3D=3D VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING) { size_t s; @@ -112,7 +142,7 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto, &sess_req->u.chain.para.cipher_param, &iov, &out_num); if (ret < 0) { - goto err; + return ret; } /* hash part */ sym_info->alg_chain_order =3D ldl_le_p( @@ -129,8 +159,7 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto, if (sym_info->auth_key_len > vcrypto->conf.max_auth_key_len) { error_report("virtio-crypto length of auth key is too big:= %u", sym_info->auth_key_len); - ret =3D -VIRTIO_CRYPTO_ERR; - goto err; + return -VIRTIO_CRYPTO_ERR; } /* get auth key */ if (sym_info->auth_key_len > 0) { @@ -140,8 +169,7 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto, if (unlikely(s !=3D sym_info->auth_key_len)) { virtio_error(vdev, "virtio-crypto authenticated key incorrect"); - ret =3D -EFAULT; - goto err; + return -EFAULT; } iov_discard_front(&iov, &out_num, sym_info->auth_key_len); } @@ -153,49 +181,30 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypt= o, } else { /* VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED */ error_report("unsupported hash mode"); - ret =3D -VIRTIO_CRYPTO_NOTSUPP; - goto err; + return -VIRTIO_CRYPTO_NOTSUPP; } } else { /* VIRTIO_CRYPTO_SYM_OP_NONE */ error_report("unsupported cipher op_type: VIRTIO_CRYPTO_SYM_OP_NON= E"); - ret =3D -VIRTIO_CRYPTO_NOTSUPP; - goto err; + return -VIRTIO_CRYPTO_NOTSUPP; } =20 queue_index =3D virtio_crypto_vq2q(queue_id); - session_id =3D cryptodev_backend_create_session( - vcrypto->cryptodev, - &info, queue_index, &local_err); - if (session_id >=3D 0) { - ret =3D session_id; - } else { - if (local_err) { - error_report_err(local_err); - } - ret =3D -VIRTIO_CRYPTO_ERR; - } - -err: - g_free(sym_info->cipher_key); - g_free(sym_info->auth_key); - return ret; + return cryptodev_backend_create_session(vcrypto->cryptodev, &sreq->inf= o, + queue_index, sreq->cb, sreq); } =20 -static int64_t +static int virtio_crypto_create_asym_session(VirtIOCrypto *vcrypto, struct virtio_crypto_akcipher_create_session_req *sess_req, uint32_t queue_id, uint32_t opcode, - struct iovec *iov, unsigned int out_num) + struct iovec *iov, unsigned int out_num, + VirtIOCryptoSessionReq *sreq) { VirtIODevice *vdev =3D VIRTIO_DEVICE(vcrypto); - CryptoDevBackendSessionInfo info =3D {0}; - CryptoDevBackendAsymSessionInfo *asym_info; - int64_t session_id; + CryptoDevBackendAsymSessionInfo *asym_info =3D &sreq->info.u.asym_sess= _info; int queue_index; uint32_t algo, keytype, keylen; - g_autofree uint8_t *key =3D NULL; - Error *local_err =3D NULL; =20 algo =3D ldl_le_p(&sess_req->para.algo); keytype =3D ldl_le_p(&sess_req->para.keytype); @@ -208,20 +217,19 @@ virtio_crypto_create_asym_session(VirtIOCrypto *vcryp= to, } =20 if (keylen) { - key =3D g_malloc(keylen); - if (iov_to_buf(iov, out_num, 0, key, keylen) !=3D keylen) { + asym_info->key =3D g_malloc(keylen); + if (iov_to_buf(iov, out_num, 0, asym_info->key, keylen) !=3D keyle= n) { virtio_error(vdev, "virtio-crypto asym key incorrect"); return -EFAULT; } iov_discard_front(&iov, &out_num, keylen); } =20 - info.op_code =3D opcode; - asym_info =3D &info.u.asym_sess_info; + sreq->info.op_code =3D opcode; + asym_info =3D &sreq->info.u.asym_sess_info; asym_info->algo =3D algo; asym_info->keytype =3D keytype; asym_info->keylen =3D keylen; - asym_info->key =3D key; switch (asym_info->algo) { case VIRTIO_CRYPTO_AKCIPHER_RSA: asym_info->u.rsa.padding_algo =3D @@ -237,45 +245,95 @@ virtio_crypto_create_asym_session(VirtIOCrypto *vcryp= to, } =20 queue_index =3D virtio_crypto_vq2q(queue_id); - session_id =3D cryptodev_backend_create_session(vcrypto->cryptodev, &i= nfo, - queue_index, &local_err); - if (session_id < 0) { - if (local_err) { - error_report_err(local_err); - } - return -VIRTIO_CRYPTO_ERR; - } - - return session_id; + return cryptodev_backend_create_session(vcrypto->cryptodev, &sreq->inf= o, + queue_index, sreq->cb, sreq); } =20 -static uint8_t +static int virtio_crypto_handle_close_session(VirtIOCrypto *vcrypto, struct virtio_crypto_destroy_session_req *close_sess_req, - uint32_t queue_id) + uint32_t queue_id, + VirtIOCryptoSessionReq *sreq) { - int ret; uint64_t session_id; - uint32_t status; - Error *local_err =3D NULL; =20 session_id =3D ldq_le_p(&close_sess_req->session_id); DPRINTF("close session, id=3D%" PRIu64 "\n", session_id); =20 - ret =3D cryptodev_backend_close_session( - vcrypto->cryptodev, session_id, queue_id, &local_err); - if (ret =3D=3D 0) { - status =3D VIRTIO_CRYPTO_OK; + return cryptodev_backend_close_session( + vcrypto->cryptodev, session_id, queue_id, sreq->cb, sreq); +} + +static void virtio_crypto_create_session_completion(void *opaque, int ret) +{ + VirtIOCryptoSessionReq *sreq =3D (VirtIOCryptoSessionReq *)opaque; + VirtQueue *vq =3D sreq->vq; + VirtQueueElement *elem =3D sreq->elem; + VirtIODevice *vdev =3D sreq->vdev; + struct virtio_crypto_session_input input; + struct iovec *in_iov =3D elem->in_sg; + unsigned in_num =3D elem->in_num; + size_t s; + + memset(&input, 0, sizeof(input)); + /* Serious errors, need to reset virtio crypto device */ + if (ret =3D=3D -EFAULT) { + virtqueue_detach_element(vq, elem, 0); + goto out; + } else if (ret =3D=3D -VIRTIO_CRYPTO_NOTSUPP) { + stl_le_p(&input.status, VIRTIO_CRYPTO_NOTSUPP); + } else if (ret =3D=3D -VIRTIO_CRYPTO_KEY_REJECTED) { + stl_le_p(&input.status, VIRTIO_CRYPTO_KEY_REJECTED); + } else if (ret !=3D VIRTIO_CRYPTO_OK) { + stl_le_p(&input.status, VIRTIO_CRYPTO_ERR); } else { - if (local_err) { - error_report_err(local_err); - } else { - error_report("destroy session failed"); - } - status =3D VIRTIO_CRYPTO_ERR; + /* Set the session id */ + stq_le_p(&input.session_id, sreq->info.session_id); + stl_le_p(&input.status, VIRTIO_CRYPTO_OK); } =20 - return status; + s =3D iov_from_buf(in_iov, in_num, 0, &input, sizeof(input)); + if (unlikely(s !=3D sizeof(input))) { + virtio_error(vdev, "virtio-crypto input incorrect"); + virtqueue_detach_element(vq, elem, 0); + goto out; + } + virtqueue_push(vq, elem, sizeof(input)); + virtio_notify(vdev, vq); + +out: + g_free(elem); + virtio_crypto_free_create_session_req(sreq); +} + +static void virtio_crypto_destroy_session_completion(void *opaque, int ret) +{ + VirtIOCryptoSessionReq *sreq =3D (VirtIOCryptoSessionReq *)opaque; + VirtQueue *vq =3D sreq->vq; + VirtQueueElement *elem =3D sreq->elem; + VirtIODevice *vdev =3D sreq->vdev; + struct iovec *in_iov =3D elem->in_sg; + unsigned in_num =3D elem->in_num; + uint8_t status; + size_t s; + + if (ret < 0) { + status =3D VIRTIO_CRYPTO_ERR; + } else { + status =3D VIRTIO_CRYPTO_OK; + } + s =3D iov_from_buf(in_iov, in_num, 0, &status, sizeof(status)); + if (unlikely(s !=3D sizeof(status))) { + virtio_error(vdev, "virtio-crypto status incorrect"); + virtqueue_detach_element(vq, elem, 0); + goto out; + } + virtqueue_push(vq, elem, sizeof(status)); + virtio_notify(vdev, vq); + +out: + g_free(elem); + g_free(sreq); } =20 static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) @@ -283,16 +341,16 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *v= dev, VirtQueue *vq) VirtIOCrypto *vcrypto =3D VIRTIO_CRYPTO(vdev); struct virtio_crypto_op_ctrl_req ctrl; VirtQueueElement *elem; - struct iovec *in_iov; - struct iovec *out_iov; - unsigned in_num; + VirtIOCryptoSessionReq *sreq; unsigned out_num; + unsigned in_num; uint32_t queue_id; uint32_t opcode; struct virtio_crypto_session_input input; - int64_t session_id; - uint8_t status; size_t s; + int ret; + struct iovec *out_iov; + struct iovec *in_iov; =20 for (;;) { g_autofree struct iovec *out_iov_copy =3D NULL; @@ -327,44 +385,34 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *v= dev, VirtQueue *vq) opcode =3D ldl_le_p(&ctrl.header.opcode); queue_id =3D ldl_le_p(&ctrl.header.queue_id); =20 - memset(&input, 0, sizeof(input)); + sreq =3D g_new0(VirtIOCryptoSessionReq, 1); + sreq->vdev =3D vdev; + sreq->vq =3D vq; + sreq->elem =3D elem; + switch (opcode) { case VIRTIO_CRYPTO_CIPHER_CREATE_SESSION: - session_id =3D virtio_crypto_create_sym_session(vcrypto, - &ctrl.u.sym_create_session, - queue_id, opcode, - out_iov, out_num); - goto check_session; + sreq->cb =3D virtio_crypto_create_session_completion; + ret =3D virtio_crypto_create_sym_session(vcrypto, + &ctrl.u.sym_create_session, + queue_id, opcode, + out_iov, out_num, + sreq); + if (ret < 0) { + virtio_crypto_create_session_completion(sreq, ret); + } + break; =20 case VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION: - session_id =3D virtio_crypto_create_asym_session(vcrypto, + sreq->cb =3D virtio_crypto_create_session_completion; + ret =3D virtio_crypto_create_asym_session(vcrypto, &ctrl.u.akcipher_create_session, queue_id, opcode, - out_iov, out_num); - -check_session: - /* Serious errors, need to reset virtio crypto device */ - if (session_id =3D=3D -EFAULT) { - virtqueue_detach_element(vq, elem, 0); - break; - } else if (session_id =3D=3D -VIRTIO_CRYPTO_NOTSUPP) { - stl_le_p(&input.status, VIRTIO_CRYPTO_NOTSUPP); - } else if (session_id =3D=3D -VIRTIO_CRYPTO_ERR) { - stl_le_p(&input.status, VIRTIO_CRYPTO_ERR); - } else { - /* Set the session id */ - stq_le_p(&input.session_id, session_id); - stl_le_p(&input.status, VIRTIO_CRYPTO_OK); + out_iov, out_num, + sreq); + if (ret < 0) { + virtio_crypto_create_session_completion(sreq, ret); } - - s =3D iov_from_buf(in_iov, in_num, 0, &input, sizeof(input)); - if (unlikely(s !=3D sizeof(input))) { - virtio_error(vdev, "virtio-crypto input incorrect"); - virtqueue_detach_element(vq, elem, 0); - break; - } - virtqueue_push(vq, elem, sizeof(input)); - virtio_notify(vdev, vq); break; =20 case VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION: @@ -372,37 +420,36 @@ check_session: case VIRTIO_CRYPTO_MAC_DESTROY_SESSION: case VIRTIO_CRYPTO_AEAD_DESTROY_SESSION: case VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION: - status =3D virtio_crypto_handle_close_session(vcrypto, - &ctrl.u.destroy_session, queue_id); - /* The status only occupy one byte, we can directly use it */ - s =3D iov_from_buf(in_iov, in_num, 0, &status, sizeof(status)); - if (unlikely(s !=3D sizeof(status))) { - virtio_error(vdev, "virtio-crypto status incorrect"); - virtqueue_detach_element(vq, elem, 0); - break; + sreq->cb =3D virtio_crypto_destroy_session_completion; + ret =3D virtio_crypto_handle_close_session(vcrypto, + &ctrl.u.destroy_session, queue_id, + sreq); + if (ret < 0) { + virtio_crypto_destroy_session_completion(sreq, ret); } - virtqueue_push(vq, elem, sizeof(status)); - virtio_notify(vdev, vq); break; + case VIRTIO_CRYPTO_HASH_CREATE_SESSION: case VIRTIO_CRYPTO_MAC_CREATE_SESSION: case VIRTIO_CRYPTO_AEAD_CREATE_SESSION: default: + memset(&input, 0, sizeof(input)); error_report("virtio-crypto unsupported ctrl opcode: %d", opco= de); stl_le_p(&input.status, VIRTIO_CRYPTO_NOTSUPP); s =3D iov_from_buf(in_iov, in_num, 0, &input, sizeof(input)); if (unlikely(s !=3D sizeof(input))) { virtio_error(vdev, "virtio-crypto input incorrect"); virtqueue_detach_element(vq, elem, 0); - break; + } else { + virtqueue_push(vq, elem, sizeof(input)); + virtio_notify(vdev, vq); } - virtqueue_push(vq, elem, sizeof(input)); - virtio_notify(vdev, vq); + g_free(sreq); + g_free(elem); =20 break; } /* end switch case */ =20 - g_free(elem); } /* end for loop */ } =20 @@ -513,11 +560,13 @@ virtio_crypto_akcipher_input_data_helper(VirtIODevice= *vdev, req->in_len =3D sizeof(struct virtio_crypto_inhdr) + asym_op_info->dst= _len; } =20 - -static void virtio_crypto_req_complete(VirtIOCryptoReq *req, uint8_t statu= s) +static void virtio_crypto_req_complete(void *opaque, int ret) { + VirtIOCryptoReq *req =3D (VirtIOCryptoReq *)opaque; VirtIOCrypto *vcrypto =3D req->vcrypto; VirtIODevice *vdev =3D VIRTIO_DEVICE(vcrypto); + uint8_t status =3D -ret; + g_autofree struct iovec *in_iov_copy =3D req->in_iov; =20 if (req->flags =3D=3D CRYPTODEV_BACKEND_ALG_SYM) { virtio_crypto_sym_input_data_helper(vdev, req, status, @@ -529,6 +578,7 @@ static void virtio_crypto_req_complete(VirtIOCryptoReq = *req, uint8_t status) stb_p(&req->in->status, status); virtqueue_push(req->vq, &req->elem, req->in_len); virtio_notify(vdev, req->vq); + virtio_crypto_free_request(req); } =20 static VirtIOCryptoReq * @@ -773,9 +823,7 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request) unsigned in_num; unsigned out_num; uint32_t opcode; - uint8_t status =3D VIRTIO_CRYPTO_ERR; CryptoDevBackendOpInfo *op_info =3D &request->op_info; - Error *local_err =3D NULL; =20 if (elem->out_num < 1 || elem->in_num < 1) { virtio_error(vdev, "virtio-crypto dataq missing headers"); @@ -815,6 +863,8 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request) */ request->in_num =3D in_num; request->in_iov =3D in_iov; + /* now, we free the in_iov_copy inside virtio_crypto_req_complete */ + in_iov_copy =3D NULL; =20 opcode =3D ldl_le_p(&req.header.opcode); op_info->session_id =3D ldq_le_p(&req.header.session_id); @@ -844,22 +894,11 @@ check_result: return -1; } else if (ret =3D=3D -VIRTIO_CRYPTO_NOTSUPP) { virtio_crypto_req_complete(request, VIRTIO_CRYPTO_NOTSUPP); - virtio_crypto_free_request(request); } else { - - /* Set request's parameter */ - ret =3D cryptodev_backend_crypto_operation(vcrypto->cryptodev, - request, queue_index, &local_err); - if (ret < 0) { - status =3D -ret; - if (local_err) { - error_report_err(local_err); - } - } else { /* ret =3D=3D VIRTIO_CRYPTO_OK */ - status =3D ret; - } - virtio_crypto_req_complete(request, status); - virtio_crypto_free_request(request); + cryptodev_backend_crypto_operation(vcrypto->cryptodev, + request, queue_index, + virtio_crypto_req_complete, + request); } break; =20 @@ -871,7 +910,6 @@ check_result: error_report("virtio-crypto unsupported dataq opcode: %u", opcode); virtio_crypto_req_complete(request, VIRTIO_CRYPTO_NOTSUPP); - virtio_crypto_free_request(request); } =20 return 0; @@ -1011,7 +1049,7 @@ static void virtio_crypto_device_realize(DeviceState = *dev, Error **errp) vcrypto->vqs[i].vcrypto =3D vcrypto; } =20 - vcrypto->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_crypto_handle_c= trl); + vcrypto->ctrl_vq =3D virtio_add_queue(vdev, 1024, virtio_crypto_handle= _ctrl); if (!cryptodev_backend_is_ready(vcrypto->cryptodev)) { vcrypto->status &=3D ~VIRTIO_CRYPTO_S_HW_READY; } else { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220749; cv=none; d=zohomail.com; s=zohoarc; b=I9CMy5X3SZHzTyxgkzsce0x06BF4Yw5Su8YSOKK5FJWNhQu9twC5AFDUCTHYq7JwkSM9OvbQ4Za2M9z+FvniiZX7k8n5ttOjDUdyS5edxhpm+td2YWIhk4YSTy85ir8qJVvt+VtznBq9LJcChfW2dVe0oSDiKmFj/W2W5z17CcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220749; 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=iTMsqZc5rnmkw6aUHSAnbfm/avqMhKXbbaRfLY+ol7o=; b=PvyTq8r6fkXSDUICmvvZNYTEKkBxUUupeYBqtbof8isBeZimkL8SYdTZ2pbhkjeqxik2a3xJt6zctPIRkqG5ShzDi4SRW2CHa294PSfYSFJ7skW7Hxo+DiCsmzOyvj8sgkQYYwgXPVjAp3oMY/2H3T/QKCMs7gf7Iy3VaB1PITU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220749325172.82699394573547; Mon, 31 Oct 2022 05:52:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGW-0001W8-7B; Mon, 31 Oct 2022 08:51:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG5-0000pi-Mz for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG2-0002Fz-9J for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:17 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-625-WXF4jlu-O9Wwf1mz7bf34w-1; Mon, 31 Oct 2022 08:51:11 -0400 Received: by mail-wm1-f71.google.com with SMTP id v188-20020a1cacc5000000b003cf76c4ae66so472589wme.7 for ; Mon, 31 Oct 2022 05:51:11 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k5-20020a05600c0b4500b003c6c4639ac6sm7131660wmr.34.2022.10.31.05.51.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220673; 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=iTMsqZc5rnmkw6aUHSAnbfm/avqMhKXbbaRfLY+ol7o=; b=hUZ3FXeQjEvCZsSf5NppnWVwWvOyT45Y8rVKeO48/Y7es3iBE9Ba7ZFkzeEb+mIzbAD2Mf /ZlmAjlaTrPLPrmMLKaEebzHfVeFj/tVm2OGynZ5DFflhjRY/GUkbRKjkmvkDlyBlgb2Rh oGt5+YleOI4FonrHN13ZXkdWTD3bglY= X-MC-Unique: WXF4jlu-O9Wwf1mz7bf34w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iTMsqZc5rnmkw6aUHSAnbfm/avqMhKXbbaRfLY+ol7o=; b=cj8Vf9oCxALFsluT0lj+Ap12OTg/QjXlwzOG7gzFQHKg9QSIYAqkSJM9gOJjP0qwm2 r0OITigUtLWBRiX5utJ1JAiClhoqK1gpmIY86K0ZB/qqHNOh1cXQHTtOq2fHbQCmnN02 yFfe5Z58wLIOvXdu1zd74LspFEbs/QGeJe+IBzcfkJKyIAmoVRb0jlyXRQorbX1sOX3A b2BulA7rvddiDoB7boS8hsyGWxPDXixfinvjl3M3CVwrTHLE5hLJ8AH2dKrpGdFSCtAp 2g+zWLHRwEFcB6pbmqx5XpEHmnVBSW8TRHMsnm23CCvDTsbIySnd6Bwx0oqgRLVCyYga CNDg== X-Gm-Message-State: ACrzQf0lQ/3aB/GvtUNzw+8aOlhfQDXVOs6cTtHtpTS+8vVgb5NFFN2n T2/lqjB5RoKRCp+Iro5Akz1kOD3mnZQMH64HEvH2s9TLZd0gLZM5S1uQmH682RSu711vcSHSPng PnTs+IxEn6ZlrbDGUCVThTSLgsz9Sgj6yFSBJoimMz1Bxuk5tt+dM3JfXLKu1 X-Received: by 2002:adf:dd45:0:b0:236:bd84:95d7 with SMTP id u5-20020adfdd45000000b00236bd8495d7mr5302140wrm.239.1667220669797; Mon, 31 Oct 2022 05:51:09 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4/+b2B69b7Grn4OfeabEt2lCOW0UMHkr5xo7rk1lQN05WMCbU8ZC7BbV3e239P8WhlAhme9w== X-Received: by 2002:adf:dd45:0:b0:236:bd84:95d7 with SMTP id u5-20020adfdd45000000b00236bd8495d7mr5302113wrm.239.1667220669223; Mon, 31 Oct 2022 05:51:09 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:06 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lei He , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= Subject: [PULL 09/86] crypto: Support DER encodings Message-ID: <20221031124928.128475-10-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220750359100008 From: Lei He Add encoding interfaces for DER encoding: 1. support decoding of 'bit string', 'octet string', 'object id' and 'context specific tag' for DER encoder. 2. implemented a simple DER encoder. 3. add more testsuits for DER encoder. Signed-off-by: lei he Message-Id: <20221008085030.70212-3-helei.sig11@bytedance.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrang=C3=A9 --- crypto/der.h | 211 ++++++++++++++++++++++- crypto/der.c | 313 ++++++++++++++++++++++++++++++++--- tests/unit/test-crypto-der.c | 126 +++++++++++--- 3 files changed, 600 insertions(+), 50 deletions(-) diff --git a/crypto/der.h b/crypto/der.h index e3d3aeacdc..0e895bbeec 100644 --- a/crypto/der.h +++ b/crypto/der.h @@ -22,6 +22,11 @@ =20 #include "qapi/error.h" =20 +typedef struct QCryptoEncodeContext QCryptoEncodeContext; + +/* rsaEncryption: 1.2.840.113549.1.1.1 */ +#define QCRYPTO_OID_rsaEncryption "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01" + /* Simple decoder used to parse DER encoded rsa keys. */ =20 /** @@ -47,14 +52,13 @@ typedef int (*QCryptoDERDecodeCb) (void *opaque, const = uint8_t *value, * will be set to the rest length of data, if cb is not NULL, must * return 0 to make decode success, at last, the length of the data * part of the decoded INTEGER will be returned. Otherwise, -1 is - * returned. + * returned and the valued of *data and *dlen keep unchanged. */ int qcrypto_der_decode_int(const uint8_t **data, size_t *dlen, QCryptoDERDecodeCb cb, void *opaque, Error **errp); - /** * qcrypto_der_decode_seq: * @@ -70,7 +74,7 @@ int qcrypto_der_decode_int(const uint8_t **data, * will be set to the rest length of data, if cb is not NULL, must * return 0 to make decode success, at last, the length of the data * part of the decoded SEQUENCE will be returned. Otherwise, -1 is - * returned. + * returned and the valued of *data and *dlen keep unchanged. */ int qcrypto_der_decode_seq(const uint8_t **data, size_t *dlen, @@ -78,4 +82,205 @@ int qcrypto_der_decode_seq(const uint8_t **data, void *opaque, Error **errp); =20 +/** + * qcrypto_der_decode_oid: + * + * Decode OID from DER-encoded data, similar with der_decode_int. + * + * @data: pointer to address of input data + * @dlen: pointer to length of input data + * @cb: callback invoked when decode succeed, if cb equals NULL, no + * callback will be invoked + * @opaque: parameter passed to cb + * + * Returns: On success, *data points to rest data, and *dlen + * will be set to the rest length of data, if cb is not NULL, must + * return 0 to make decode success, at last, the length of the data + * part of the decoded OID will be returned. Otherwise, -1 is + * returned and the valued of *data and *dlen keep unchanged. + */ +int qcrypto_der_decode_oid(const uint8_t **data, + size_t *dlen, + QCryptoDERDecodeCb cb, + void *opaque, + Error **errp); + +/** + * qcrypto_der_decode_octet_str: + * + * Decode OCTET STRING from DER-encoded data, similar with der_decode_int. + * + * @data: pointer to address of input data + * @dlen: pointer to length of input data + * @cb: callback invoked when decode succeed, if cb equals NULL, no + * callback will be invoked + * @opaque: parameter passed to cb + * + * Returns: On success, *data points to rest data, and *dlen + * will be set to the rest length of data, if cb is not NULL, must + * return 0 to make decode success, at last, the length of the data + * part of the decoded OCTET STRING will be returned. Otherwise, -1 is + * returned and the valued of *data and *dlen keep unchanged. + */ +int qcrypto_der_decode_octet_str(const uint8_t **data, + size_t *dlen, + QCryptoDERDecodeCb cb, + void *opaque, + Error **errp); + +/** + * qcrypto_der_decode_bit_str: + * + * Decode BIT STRING from DER-encoded data, similar with der_decode_int. + * + * @data: pointer to address of input data + * @dlen: pointer to length of input data + * @cb: callback invoked when decode succeed, if cb equals NULL, no + * callback will be invoked + * @opaque: parameter passed to cb + * + * Returns: On success, *data points to rest data, and *dlen + * will be set to the rest length of data, if cb is not NULL, must + * return 0 to make decode success, at last, the length of the data + * part of the decoded BIT STRING will be returned. Otherwise, -1 is + * returned and the valued of *data and *dlen keep unchanged. + */ +int qcrypto_der_decode_bit_str(const uint8_t **data, + size_t *dlen, + QCryptoDERDecodeCb cb, + void *opaque, + Error **errp); + + +/** + * qcrypto_der_decode_ctx_tag: + * + * Decode context specific tag + * + * @data: pointer to address of input data + * @dlen: pointer to length of input data + * @tag: expected value of context specific tag + * @cb: callback invoked when decode succeed, if cb equals NULL, no + * callback will be invoked + * @opaque: parameter passed to cb + * + * Returns: On success, *data points to rest data, and *dlen + * will be set to the rest length of data, if cb is not NULL, must + * return 0 to make decode success, at last, the length of the data + * part of the decoded BIT STRING will be returned. Otherwise, -1 is + * returned and the valued of *data and *dlen keep unchanged. + */ +int qcrypto_der_decode_ctx_tag(const uint8_t **data, + size_t *dlen, int tag_id, + QCryptoDERDecodeCb cb, + void *opaque, + Error **errp); + +/** + * qcrypto_der_encode_ctx_new: + * + * Allocate a context used for der encoding. + */ +QCryptoEncodeContext *qcrypto_der_encode_ctx_new(void); + +/** + * qcrypto_der_encode_seq_begin: + * @ctx: the encode context. + * + * Start encoding a SEQUENCE for ctx. + * + */ +void qcrypto_der_encode_seq_begin(QCryptoEncodeContext *ctx); + +/** + * qcrypto_der_encode_seq_begin: + * @ctx: the encode context. + * + * Finish uencoding a SEQUENCE for ctx. + * + */ +void qcrypto_der_encode_seq_end(QCryptoEncodeContext *ctx); + + +/** + * qcrypto_der_encode_oid: + * @ctx: the encode context. + * @src: the source data of oid, note it should be already encoded, this + * function only add tag and length part for it. + * + * Encode an oid into ctx. + */ +void qcrypto_der_encode_oid(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len); + +/** + * qcrypto_der_encode_int: + * @ctx: the encode context. + * @src: the source data of integer, note it should be already encoded, th= is + * function only add tag and length part for it. + * + * Encode an integer into ctx. + */ +void qcrypto_der_encode_int(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len); + +/** + * qcrypto_der_encode_null: + * @ctx: the encode context. + * + * Encode a null into ctx. + */ +void qcrypto_der_encode_null(QCryptoEncodeContext *ctx); + +/** + * qcrypto_der_encode_octet_str: + * @ctx: the encode context. + * @src: the source data of the octet string. + * + * Encode a octet string into ctx. + */ +void qcrypto_der_encode_octet_str(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len); + +/** + * qcrypto_der_encode_octet_str_begin: + * @ctx: the encode context. + * + * Start encoding a octet string, All fields between + * qcrypto_der_encode_octet_str_begin and qcrypto_der_encode_octet_str_end + * are encoded as an octet string. This is useful when we need to encode a + * encoded SEQUNCE as OCTET STRING. + */ +void qcrypto_der_encode_octet_str_begin(QCryptoEncodeContext *ctx); + +/** + * qcrypto_der_encode_octet_str_end: + * @ctx: the encode context. + * + * Finish encoding a octet string, All fields between + * qcrypto_der_encode_octet_str_begin and qcrypto_der_encode_octet_str_end + * are encoded as an octet string. This is useful when we need to encode a + * encoded SEQUNCE as OCTET STRING. + */ +void qcrypto_der_encode_octet_str_end(QCryptoEncodeContext *ctx); + +/** + * qcrypto_der_encode_ctx_buffer_len: + * @ctx: the encode context. + * + * Compute the expected buffer size to save all encoded things. + */ +size_t qcrypto_der_encode_ctx_buffer_len(QCryptoEncodeContext *ctx); + +/** + * qcrypto_der_encode_ctx_flush_and_free: + * @ctx: the encode context. + * @dst: the distination to save the encoded data, the length of dst should + * not less than qcrypto_der_encode_cxt_buffer_len + * + * Flush all encoded data into dst, then free ctx. + */ +void qcrypto_der_encode_ctx_flush_and_free(QCryptoEncodeContext *ctx, + uint8_t *dst); + #endif /* QCRYPTO_ASN1_DECODER_H */ diff --git a/crypto/der.c b/crypto/der.c index f877390bbb..dab3fe4f24 100644 --- a/crypto/der.c +++ b/crypto/der.c @@ -22,20 +22,93 @@ #include "qemu/osdep.h" #include "crypto/der.h" =20 +typedef struct QCryptoDerEncodeNode { + uint8_t tag; + struct QCryptoDerEncodeNode *parent; + struct QCryptoDerEncodeNode *next; + /* for constructed type, data is null */ + const uint8_t *data; + size_t dlen; +} QCryptoDerEncodeNode; + +typedef struct QCryptoEncodeContext { + QCryptoDerEncodeNode root; + QCryptoDerEncodeNode *current_parent; + QCryptoDerEncodeNode *tail; +} QCryptoEncodeContext; + enum QCryptoDERTypeTag { QCRYPTO_DER_TYPE_TAG_BOOL =3D 0x1, QCRYPTO_DER_TYPE_TAG_INT =3D 0x2, QCRYPTO_DER_TYPE_TAG_BIT_STR =3D 0x3, QCRYPTO_DER_TYPE_TAG_OCT_STR =3D 0x4, - QCRYPTO_DER_TYPE_TAG_OCT_NULL =3D 0x5, - QCRYPTO_DER_TYPE_TAG_OCT_OID =3D 0x6, + QCRYPTO_DER_TYPE_TAG_NULL =3D 0x5, + QCRYPTO_DER_TYPE_TAG_OID =3D 0x6, QCRYPTO_DER_TYPE_TAG_SEQ =3D 0x10, QCRYPTO_DER_TYPE_TAG_SET =3D 0x11, }; =20 -#define QCRYPTO_DER_CONSTRUCTED_MASK 0x20 +enum QCryptoDERTagClass { + QCRYPTO_DER_TAG_CLASS_UNIV =3D 0x0, + QCRYPTO_DER_TAG_CLASS_APPL =3D 0x1, + QCRYPTO_DER_TAG_CLASS_CONT =3D 0x2, + QCRYPTO_DER_TAG_CLASS_PRIV =3D 0x3, +}; + +enum QCryptoDERTagEnc { + QCRYPTO_DER_TAG_ENC_PRIM =3D 0x0, + QCRYPTO_DER_TAG_ENC_CONS =3D 0x1, +}; + +#define QCRYPTO_DER_TAG_ENC_MASK 0x20 +#define QCRYPTO_DER_TAG_ENC_SHIFT 5 + +#define QCRYPTO_DER_TAG_CLASS_MASK 0xc0 +#define QCRYPTO_DER_TAG_CLASS_SHIFT 6 + +#define QCRYPTO_DER_TAG_VAL_MASK 0x1f #define QCRYPTO_DER_SHORT_LEN_MASK 0x80 =20 +#define QCRYPTO_DER_TAG(class, enc, val) \ + (((class) << QCRYPTO_DER_TAG_CLASS_SHIFT) | \ + ((enc) << QCRYPTO_DER_TAG_ENC_SHIFT) | (val)) + +/** + * qcrypto_der_encode_length: + * @src_len: the length of source data + * @dst: distination to save the encoded 'length', if dst is NULL, only co= mpute + * the expected buffer size in bytes. + * @dst_len: output parameter, indicates how many bytes wrote. + * + * Encode the 'length' part of TLV tuple. + */ +static void qcrypto_der_encode_length(size_t src_len, + uint8_t *dst, size_t *dst_len) +{ + size_t max_length =3D 0xFF; + uint8_t length_bytes =3D 0, header_byte; + + if (src_len < QCRYPTO_DER_SHORT_LEN_MASK) { + header_byte =3D src_len; + *dst_len =3D 1; + } else { + for (length_bytes =3D 1; max_length < src_len; length_bytes++) { + max_length =3D (max_length << 8) + max_length; + } + header_byte =3D length_bytes; + header_byte |=3D QCRYPTO_DER_SHORT_LEN_MASK; + *dst_len =3D length_bytes + 1; + } + if (!dst) { + return; + } + *dst++ =3D header_byte; + /* Bigendian length bytes */ + for (; length_bytes > 0; length_bytes--) { + *dst++ =3D ((src_len >> (length_bytes - 1) * 8) & 0xFF); + } +} + static uint8_t qcrypto_der_peek_byte(const uint8_t **data, size_t *dlen) { return **data; @@ -150,40 +223,230 @@ static int qcrypto_der_extract_data(const uint8_t **= data, size_t *dlen, return qcrypto_der_extract_definite_data(data, dlen, cb, ctx, errp); } =20 -int qcrypto_der_decode_int(const uint8_t **data, size_t *dlen, - QCryptoDERDecodeCb cb, void *ctx, Error **errp) +static int qcrypto_der_decode_tlv(const uint8_t expected_tag, + const uint8_t **data, size_t *dlen, + QCryptoDERDecodeCb cb, + void *ctx, Error **errp) { + const uint8_t *saved_data =3D *data; + size_t saved_dlen =3D *dlen; uint8_t tag; + int data_length; + if (*dlen < 1) { error_setg(errp, "Need more data"); return -1; } tag =3D qcrypto_der_cut_byte(data, dlen); - - /* INTEGER must encoded in primitive-form */ - if (tag !=3D QCRYPTO_DER_TYPE_TAG_INT) { - error_setg(errp, "Invalid integer type tag: %u", tag); - return -1; + if (tag !=3D expected_tag) { + error_setg(errp, "Unexpected tag: expected: %u, actual: %u", + expected_tag, tag); + goto error; } =20 - return qcrypto_der_extract_data(data, dlen, cb, ctx, errp); + data_length =3D qcrypto_der_extract_data(data, dlen, cb, ctx, errp); + if (data_length < 0) { + goto error; + } + return data_length; + +error: + *data =3D saved_data; + *dlen =3D saved_dlen; + return -1; +} + +int qcrypto_der_decode_int(const uint8_t **data, size_t *dlen, + QCryptoDERDecodeCb cb, void *ctx, Error **errp) +{ + const uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_INT); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); } =20 int qcrypto_der_decode_seq(const uint8_t **data, size_t *dlen, QCryptoDERDecodeCb cb, void *ctx, Error **errp) { - uint8_t tag; - if (*dlen < 1) { - error_setg(errp, "Need more data"); - return -1; - } - tag =3D qcrypto_der_cut_byte(data, dlen); - - /* SEQUENCE must use constructed form */ - if (tag !=3D (QCRYPTO_DER_TYPE_TAG_SEQ | QCRYPTO_DER_CONSTRUCTED_MASK)= ) { - error_setg(errp, "Invalid type sequence tag: %u", tag); - return -1; - } - - return qcrypto_der_extract_data(data, dlen, cb, ctx, errp); + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_CONS, + QCRYPTO_DER_TYPE_TAG_SEQ); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); +} + +int qcrypto_der_decode_octet_str(const uint8_t **data, size_t *dlen, + QCryptoDERDecodeCb cb, void *ctx, Error *= *errp) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_OCT_STR); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); +} + +int qcrypto_der_decode_bit_str(const uint8_t **data, size_t *dlen, + QCryptoDERDecodeCb cb, void *ctx, Error **e= rrp) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_BIT_STR); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); +} + +int qcrypto_der_decode_oid(const uint8_t **data, size_t *dlen, + QCryptoDERDecodeCb cb, void *ctx, Error **errp) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_OID); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); +} + +int qcrypto_der_decode_ctx_tag(const uint8_t **data, size_t *dlen, int tag= _id, + QCryptoDERDecodeCb cb, void *ctx, Error **e= rrp) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_CONT, + QCRYPTO_DER_TAG_ENC_CONS, + tag_id); + return qcrypto_der_decode_tlv(tag, data, dlen, cb, ctx, errp); +} + +static void qcrypto_der_encode_prim(QCryptoEncodeContext *ctx, uint8_t tag, + const uint8_t *data, size_t dlen) +{ + QCryptoDerEncodeNode *node =3D g_new0(QCryptoDerEncodeNode, 1); + size_t nbytes_len; + + node->tag =3D tag; + node->data =3D data; + node->dlen =3D dlen; + node->parent =3D ctx->current_parent; + + qcrypto_der_encode_length(dlen, NULL, &nbytes_len); + /* 1 byte for Tag, nbyte_len for Length, and dlen for Value */ + node->parent->dlen +=3D 1 + nbytes_len + dlen; + + ctx->tail->next =3D node; + ctx->tail =3D node; +} + +QCryptoEncodeContext *qcrypto_der_encode_ctx_new(void) +{ + QCryptoEncodeContext *ctx =3D g_new0(QCryptoEncodeContext, 1); + ctx->current_parent =3D &ctx->root; + ctx->tail =3D &ctx->root; + return ctx; +} + +static void qcrypto_der_encode_cons_begin(QCryptoEncodeContext *ctx, + uint8_t tag) +{ + QCryptoDerEncodeNode *node =3D g_new0(QCryptoDerEncodeNode, 1); + + node->tag =3D tag; + node->parent =3D ctx->current_parent; + ctx->current_parent =3D node; + ctx->tail->next =3D node; + ctx->tail =3D node; +} + +static void qcrypto_der_encode_cons_end(QCryptoEncodeContext *ctx) +{ + QCryptoDerEncodeNode *cons_node =3D ctx->current_parent; + size_t nbytes_len; + + qcrypto_der_encode_length(cons_node->dlen, NULL, &nbytes_len); + /* 1 byte for Tag, nbyte_len for Length, and dlen for Value */ + cons_node->parent->dlen +=3D 1 + nbytes_len + cons_node->dlen; + ctx->current_parent =3D cons_node->parent; +} + +void qcrypto_der_encode_seq_begin(QCryptoEncodeContext *ctx) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_CONS, + QCRYPTO_DER_TYPE_TAG_SEQ); + qcrypto_der_encode_cons_begin(ctx, tag); +} + +void qcrypto_der_encode_seq_end(QCryptoEncodeContext *ctx) +{ + qcrypto_der_encode_cons_end(ctx); +} + +void qcrypto_der_encode_oid(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_OID); + qcrypto_der_encode_prim(ctx, tag, src, src_len); +} + +void qcrypto_der_encode_int(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_INT); + qcrypto_der_encode_prim(ctx, tag, src, src_len); +} + +void qcrypto_der_encode_null(QCryptoEncodeContext *ctx) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_NULL); + qcrypto_der_encode_prim(ctx, tag, NULL, 0); +} + +void qcrypto_der_encode_octet_str(QCryptoEncodeContext *ctx, + const uint8_t *src, size_t src_len) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_OCT_STR); + qcrypto_der_encode_prim(ctx, tag, src, src_len); +} + +void qcrypto_der_encode_octet_str_begin(QCryptoEncodeContext *ctx) +{ + uint8_t tag =3D QCRYPTO_DER_TAG(QCRYPTO_DER_TAG_CLASS_UNIV, + QCRYPTO_DER_TAG_ENC_PRIM, + QCRYPTO_DER_TYPE_TAG_OCT_STR); + qcrypto_der_encode_cons_begin(ctx, tag); +} + +void qcrypto_der_encode_octet_str_end(QCryptoEncodeContext *ctx) +{ + qcrypto_der_encode_cons_end(ctx); +} + +size_t qcrypto_der_encode_ctx_buffer_len(QCryptoEncodeContext *ctx) +{ + return ctx->root.dlen; +} + +void qcrypto_der_encode_ctx_flush_and_free(QCryptoEncodeContext *ctx, + uint8_t *dst) +{ + QCryptoDerEncodeNode *node, *prev; + size_t len; + + for (prev =3D &ctx->root; + (node =3D prev->next) && (prev->next =3D node->next, 1);) { + /* Tag */ + *dst++ =3D node->tag; + + /* Length */ + qcrypto_der_encode_length(node->dlen, dst, &len); + dst +=3D len; + + /* Value */ + if (node->data) { + memcpy(dst, node->data, node->dlen); + dst +=3D node->dlen; + } + g_free(node); + } + g_free(ctx); } diff --git a/tests/unit/test-crypto-der.c b/tests/unit/test-crypto-der.c index aed0f28d68..d218a7f170 100644 --- a/tests/unit/test-crypto-der.c +++ b/tests/unit/test-crypto-der.c @@ -147,13 +147,58 @@ static const uint8_t test_rsa2048_priv_key[] =3D "\x4e\x2f\x4c\xf9\xab\x97\x38\xe4\x20\x32\x32\x96\xc8\x9e\x79\xd3" "\x12"; =20 +static const uint8_t test_ecdsa_p192_priv_key[] =3D + "\x30\x53" /* SEQUENCE, offset 0, length 83 */ + "\x02\x01\x01" /* INTEGER, offset 2, length 1 */ + "\x04\x18" /* OCTET STRING, offset 5, length 24 */ + "\xcb\xc8\x86\x0e\x66\x3c\xf7\x5a\x44\x13\xb8\xef\xea\x1d\x7b\xa6" + "\x1c\xda\xf4\x1b\xc7\x67\x6b\x35" + "\xa1\x34" /* CONTEXT SPECIFIC 1, offset 31, length 52 */ + "\x03\x32" /* BIT STRING, offset 33, length 50 */ + "\x00\x04\xc4\x16\xb3\xff\xac\xd5\x87\x98\xf7\xd9\x45\xfe\xd3\x5c" + "\x17\x9d\xb2\x36\x22\xcc\x07\xb3\x6d\x3c\x4e\x04\x5f\xeb\xb6\x52" + "\x58\xfb\x36\x10\x52\xb7\x01\x62\x0e\x94\x51\x1d\xe2\xef\x10\x82" + "\x88\x78"; + +static const uint8_t test_ecdsa_p256_priv_key[] =3D + "\x30\x77" /* SEQUENCE, offset 0, length 119 */ + "\x02\x01\x01" /* INTEGER, offset 2, length 1 */ + "\x04\x20" /* OCTET STRING, offset 5, length 32 */ + "\xf6\x92\xdd\x29\x1c\x6e\xef\xb6\xb2\x73\x9f\x40\x1b\xb3\x2a\x28" + "\xd2\x37\xd6\x4a\x5b\xe4\x40\x4c\x6a\x95\x99\xfa\xf7\x92\x49\xbe" + "\xa0\x0a" /* CONTEXT SPECIFIC 0, offset 39, length 10 */ + "\x06\x08" /* OID, offset 41, length 8 */ + "\x2a\x86\x48\xce\x3d\x03\x01\x07" + "\xa1\x44" /* CONTEXT SPECIFIC 1, offset 51, length 68 */ + "\x03\x42" /* BIT STRING, offset 53, length 66 */ + "\x00\x04\xed\x42\x9c\x67\x79\xbe\x46\x83\x88\x3e\x8c\xc1\x33\xf3" + "\xc3\xf6\x2c\xf3\x13\x6a\x00\xc2\xc9\x3e\x87\x7f\x86\x39\xe6\xae" + "\xe3\xb9\xba\x2f\x58\x63\x32\x62\x62\x54\x07\x27\xf9\x5a\x3a\xc7" + "\x3a\x6b\x5b\xbc\x0d\x33\xba\xbb\xd4\xa3\xff\x4f\x9e\xdd\xf5\x59" + "\xc0\xf6"; + #define MAX_CHECKER_COUNT 32 =20 +static int qcrypto_wrapped_decode_ctx_tag0(const uint8_t **data, size_t *d= len, + QCryptoDERDecodeCb cb, void *op= aque, + Error **errp) +{ + return qcrypto_der_decode_ctx_tag(data, dlen, 0, cb, opaque, errp); +} + +static int qcrypto_wrapped_decode_ctx_tag1(const uint8_t **data, size_t *d= len, + QCryptoDERDecodeCb cb, void *op= aque, + Error **errp) +{ + return qcrypto_der_decode_ctx_tag(data, dlen, 1, cb, opaque, errp); +} + typedef struct QCryptoAns1DecoderResultChecker QCryptoAns1DecoderResultChe= cker; struct QCryptoAns1DecoderResultChecker { int (*action) (const uint8_t **data, size_t *dlen, QCryptoDERDecodeCb cb, void *opaque, Error **errp); QCryptoDERDecodeCb cb; + bool constructed; const uint8_t *exp_value; size_t exp_vlen; }; @@ -204,7 +249,7 @@ static void test_ans1(const void *opaque) g_assert(checker->action(&c->data, &c->dlen, checker_callback, (void *)checker, &error_abort) =3D=3D checker->exp_vlen); - if (checker->action =3D=3D qcrypto_der_decode_seq) { + if (checker->constructed) { ++seq_depth; ctx[seq_depth].data =3D checker->exp_value; ctx[seq_depth].dlen =3D checker->exp_vlen; @@ -225,25 +270,25 @@ static QCryptoAns1DecoderTestData test_data[] =3D { .test_data =3D test_rsa512_priv_key, .test_data_len =3D sizeof(test_rsa512_priv_key) - 1, .checker =3D { - { qcrypto_der_decode_seq, checker_callback, + { qcrypto_der_decode_seq, checker_callback, true, test_rsa512_priv_key + 4, 313 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 4 + 2, 1 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 7 + 2, 65 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 74 + 2, 3 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 79 + 2, 64 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 145 + 2, 33 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 180 + 2, 33 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 215 + 2, 32 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 249 + 2, 32 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa512_priv_key + 283 + 2, 32 }, }, }, @@ -252,29 +297,66 @@ static QCryptoAns1DecoderTestData test_data[] =3D { .test_data =3D test_rsa2048_priv_key, .test_data_len =3D sizeof(test_rsa2048_priv_key) - 1, .checker =3D { - { qcrypto_der_decode_seq, checker_callback, + { qcrypto_der_decode_seq, checker_callback, true, test_rsa2048_priv_key + 4, 1190 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 4 + 2, 1 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 7 + 4, 257 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 268 + 2, 3 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 273 + 4, 257 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 534 + 3, 129 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 666 + 3, 129 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 798 + 3, 129 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 930 + 3, 129 }, - { qcrypto_der_decode_int, checker_callback, + { qcrypto_der_decode_int, checker_callback, false, test_rsa2048_priv_key + 1062 + 3, 129 }, }, }, - +{ + .path =3D "/crypto/der/parse-ecdsa-p192-priv-key", + .test_data =3D test_ecdsa_p192_priv_key, + .test_data_len =3D sizeof(test_ecdsa_p192_priv_key) - 1, + .checker =3D { + { qcrypto_der_decode_seq, checker_callback, true, + test_ecdsa_p192_priv_key + 2, 83 }, + { qcrypto_der_decode_int, checker_callback, false, + test_ecdsa_p192_priv_key + 2 + 2, 1 }, + { qcrypto_der_decode_octet_str, checker_callback, false, + test_ecdsa_p192_priv_key + 5 + 2, 24 }, + { qcrypto_wrapped_decode_ctx_tag1, checker_callback, true, + test_ecdsa_p192_priv_key + 31 + 2, 52 }, + { qcrypto_der_decode_bit_str , checker_callback, false, + test_ecdsa_p192_priv_key + 33 + 2, 50 }, + }, +}, +{ + .path =3D "/crypto/der/parse-ecdsa-p256-priv-key", + .test_data =3D test_ecdsa_p256_priv_key, + .test_data_len =3D sizeof(test_ecdsa_p256_priv_key) - 1, + .checker =3D { + { qcrypto_der_decode_seq, checker_callback, true, + test_ecdsa_p256_priv_key + 2, 119 }, + { qcrypto_der_decode_int, checker_callback, false, + test_ecdsa_p256_priv_key + 2 + 2, 1 }, + { qcrypto_der_decode_octet_str, checker_callback, false, + test_ecdsa_p256_priv_key + 5 + 2, 32 }, + { qcrypto_wrapped_decode_ctx_tag0, checker_callback, true, + test_ecdsa_p256_priv_key + 39 + 2, 10 }, + { qcrypto_der_decode_oid, checker_callback, false, + test_ecdsa_p256_priv_key + 41 + 2, 8 }, + { qcrypto_wrapped_decode_ctx_tag1, checker_callback, true, + test_ecdsa_p256_priv_key + 51 + 2, 68 }, + { qcrypto_der_decode_bit_str , checker_callback, false, + test_ecdsa_p256_priv_key + 53 + 2, 66 }, + }, +}, }; =20 int main(int argc, char **argv) --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221017; cv=none; d=zohomail.com; s=zohoarc; b=diyywv4HwqhM71iQurVeiL59tMEvQfpN9GrZUQvga/ovaT8oLuv9sxPJ19yFGbMF3tY1uIzlcessr+SzBrTX+YcqFiF7P1ImIcyaVONKYad8pzdoc8ly4ESqrRPpI1QeDfFLlx8gChf/32O1tz3nC6Dh0FhPlm7t70SrPOHvT9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221017; 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=SPZHQzhfHMWUz5Qjgx793q/Gt+Rmc4j05x1TMLreu9M=; b=WMeaSMtLhZ4ybxpVUo5rJPggsw3lMnUwhADIOAirkKZI6Z0/BTIypJe1ddI+e0YQKMML8JymrY7fMi+RU6J1ZjgTMyhkpA2shL+BJd+HtIFwJXIdSESoXkAApNkw+Upw/qiKLY1vCSN4cvwA1yWVCfBjqCsOIcn7aU88gwUqrsk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221017026239.6081013705317; Mon, 31 Oct 2022 05:56:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGV-0001Q7-93; Mon, 31 Oct 2022 08:51:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG4-0000ph-UU for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG3-0002GF-96 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:16 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-518-Q-HZBOGsPcOlHqIJeohf4Q-1; Mon, 31 Oct 2022 08:51:13 -0400 Received: by mail-wm1-f69.google.com with SMTP id f1-20020a1cc901000000b003cf703a4f08so360300wmb.2 for ; Mon, 31 Oct 2022 05:51:13 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id b21-20020a05600c4e1500b003c6bd91caa5sm1633141wmq.17.2022.10.31.05.51.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220674; 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=SPZHQzhfHMWUz5Qjgx793q/Gt+Rmc4j05x1TMLreu9M=; b=CktT/H5sDzgmVCvIFn0ILxzByvDZ9tDdvnQOKgXjn3Zr47CI49ZDhIFk5TrpVzKdpRfyQA jg6qG5rWBjyLFUwow14P7A79USAMwe6FZy7ix2XsPN2I7ulRlwb8wtilKQt+ZDtWHNl2Ah uQHtk2I444e1bnfQgmubCFOJXsdHMfA= X-MC-Unique: Q-HZBOGsPcOlHqIJeohf4Q-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SPZHQzhfHMWUz5Qjgx793q/Gt+Rmc4j05x1TMLreu9M=; b=QLcpZUN3Vkqtg4TOszk3JtcFQ1RVWAtjm3LOWTUfCtLDb0Ze5EdwMQO9fdOwAyS6Rb CBhge7n6FsaFWH/J+OnV1VAWfxJtHsdXiE5FMlDScpVF924Cnm/3bBEW8LcHP7Bsgg0t DSqNegvpAGxfYxu5ArKJmn4Vf92OC0R3cZDrAJbEJ8yQPyo0fBGuoJBZwly8I2Itu4ad zl141vZWlLg0lL4KAKaEf9Q07p10LutBbWymUY1g2UCfeoil7wZZz1nkmu1MP0OvBkDR Sifn/671FoJ/flMPO0toEz4YPlUjngPUZvgdt2FjNuD6WIkegR7+5ubLesU8tRwM6vCg QBVA== X-Gm-Message-State: ACrzQf2Qg88zuiS7Ra3EEYaazRrkO1Bggt2sURxRSX3CLed5q9oF7p2n OuF+npwyWS+OVVY3sp6LOKfGYwtIlRbOEQSCaYL6d6+LJ2QDtm+lYHX3DJG1+o/eRAT0a10HXiu Bh/5WzTK/nNAmOkdJyBqeyG4OrdFuYEgtMDh4WBdjdcdavxKSEN7bLX0javjH X-Received: by 2002:a1c:f60d:0:b0:3be:708b:c96c with SMTP id w13-20020a1cf60d000000b003be708bc96cmr18333692wmc.168.1667220672091; Mon, 31 Oct 2022 05:51:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7gZhEBXgpngA/+//N1h40jHF1TJ4jWTLgHv++nTiAbvMcMoEv+E+/hyT8A1EWeYq0EIqNnwQ== X-Received: by 2002:a1c:f60d:0:b0:3be:708b:c96c with SMTP id w13-20020a1cf60d000000b003be708bc96cmr18333668wmc.168.1667220671736; Mon, 31 Oct 2022 05:51:11 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lei He , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= Subject: [PULL 10/86] crypto: Support export akcipher to pkcs8 Message-ID: <20221031124928.128475-11-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221018216100002 From: Lei He crypto: support export RSA private keys with PKCS#8 standard. So that users can upload this private key to linux kernel. Signed-off-by: lei he Message-Id: <20221008085030.70212-4-helei.sig11@bytedance.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrang=C3=A9 --- crypto/rsakey.h | 11 +++++++++- include/crypto/akcipher.h | 21 ++++++++++++++++++++ crypto/akcipher.c | 18 +++++++++++++++++ crypto/rsakey.c | 42 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/crypto/rsakey.h b/crypto/rsakey.h index 974b76f659..00b3eccec7 100644 --- a/crypto/rsakey.h +++ b/crypto/rsakey.h @@ -22,7 +22,6 @@ #ifndef QCRYPTO_RSAKEY_H #define QCRYPTO_RSAKEY_H =20 -#include "qemu/osdep.h" #include "qemu/host-utils.h" #include "crypto/akcipher.h" =20 @@ -84,6 +83,16 @@ QCryptoAkCipherRSAKey *qcrypto_akcipher_rsakey_parse( QCryptoAkCipherKeyType type, const uint8_t *key, size_t keylen, Error **errp); =20 +/** + * qcrypto_akcipher_rsakey_export_as_p8info: + * + * Export RSA private key to PKCS#8 private key info. + */ +void qcrypto_akcipher_rsakey_export_p8info(const uint8_t *key, + size_t keylen, + uint8_t **dst, + size_t *dlen); + void qcrypto_akcipher_rsakey_free(QCryptoAkCipherRSAKey *key); =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(QCryptoAkCipherRSAKey, diff --git a/include/crypto/akcipher.h b/include/crypto/akcipher.h index 51f5fa2774..214e58ca47 100644 --- a/include/crypto/akcipher.h +++ b/include/crypto/akcipher.h @@ -153,6 +153,27 @@ int qcrypto_akcipher_max_dgst_len(QCryptoAkCipher *akc= ipher); */ void qcrypto_akcipher_free(QCryptoAkCipher *akcipher); =20 +/** + * qcrypto_akcipher_export_p8info: + * @opts: the options of the akcipher to be exported. + * @key: the original key of the akcipher to be exported. + * @keylen: length of the 'key' + * @dst: output parameter, if export succeed, *dst is set to the + * PKCS#8 encoded private key, caller MUST free this key with + * g_free after use. + * @dst_len: output parameter, indicates the length of PKCS#8 encoded + * key. + * + * Export the akcipher into DER encoded pkcs#8 private key info, expects + * |key| stores a valid asymmetric PRIVATE key. + * + * Returns: 0 for succeed, otherwise -1 is returned. + */ +int qcrypto_akcipher_export_p8info(const QCryptoAkCipherOptions *opts, + uint8_t *key, size_t keylen, + uint8_t **dst, size_t *dst_len, + Error **errp); + G_DEFINE_AUTOPTR_CLEANUP_FUNC(QCryptoAkCipher, qcrypto_akcipher_free) =20 #endif /* QCRYPTO_AKCIPHER_H */ diff --git a/crypto/akcipher.c b/crypto/akcipher.c index ad88379c1e..e4bbc6e5f1 100644 --- a/crypto/akcipher.c +++ b/crypto/akcipher.c @@ -22,6 +22,8 @@ #include "qemu/osdep.h" #include "crypto/akcipher.h" #include "akcipherpriv.h" +#include "der.h" +#include "rsakey.h" =20 #if defined(CONFIG_GCRYPT) #include "akcipher-gcrypt.c.inc" @@ -106,3 +108,19 @@ void qcrypto_akcipher_free(QCryptoAkCipher *akcipher) =20 drv->free(akcipher); } + +int qcrypto_akcipher_export_p8info(const QCryptoAkCipherOptions *opts, + uint8_t *key, size_t keylen, + uint8_t **dst, size_t *dst_len, + Error **errp) +{ + switch (opts->alg) { + case QCRYPTO_AKCIPHER_ALG_RSA: + qcrypto_akcipher_rsakey_export_p8info(key, keylen, dst, dst_len); + return 0; + + default: + error_setg(errp, "Unsupported algorithm: %u", opts->alg); + return -1; + } +} diff --git a/crypto/rsakey.c b/crypto/rsakey.c index cc40e072f0..7d6f273aef 100644 --- a/crypto/rsakey.c +++ b/crypto/rsakey.c @@ -19,6 +19,8 @@ * */ =20 +#include "qemu/osdep.h" +#include "der.h" #include "rsakey.h" =20 void qcrypto_akcipher_rsakey_free(QCryptoAkCipherRSAKey *rsa_key) @@ -37,6 +39,46 @@ void qcrypto_akcipher_rsakey_free(QCryptoAkCipherRSAKey = *rsa_key) g_free(rsa_key); } =20 +/** + * PKCS#8 private key info for RSA + * + * PrivateKeyInfo ::=3D SEQUENCE { + * version INTEGER, + * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, + * privateKey OCTET STRING, + * attributes [0] IMPLICIT Attributes OPTIONAL + * } + */ +void qcrypto_akcipher_rsakey_export_p8info(const uint8_t *key, + size_t keylen, + uint8_t **dst, + size_t *dlen) +{ + QCryptoEncodeContext *ctx =3D qcrypto_der_encode_ctx_new(); + uint8_t version =3D 0; + + qcrypto_der_encode_seq_begin(ctx); + + /* version */ + qcrypto_der_encode_int(ctx, &version, sizeof(version)); + + /* algorithm identifier */ + qcrypto_der_encode_seq_begin(ctx); + qcrypto_der_encode_oid(ctx, (uint8_t *)QCRYPTO_OID_rsaEncryption, + sizeof(QCRYPTO_OID_rsaEncryption) - 1); + qcrypto_der_encode_null(ctx); + qcrypto_der_encode_seq_end(ctx); + + /* RSA private key */ + qcrypto_der_encode_octet_str(ctx, key, keylen); + + qcrypto_der_encode_seq_end(ctx); + + *dlen =3D qcrypto_der_encode_ctx_buffer_len(ctx); + *dst =3D g_malloc(*dlen); + qcrypto_der_encode_ctx_flush_and_free(ctx, *dst); +} + #if defined(CONFIG_NETTLE) && defined(CONFIG_HOGWEED) #include "rsakey-nettle.c.inc" #else --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220813; cv=none; d=zohomail.com; s=zohoarc; b=lqmTvDeBKZxZsbdDAug5tRanoYwzJLcU8f3GLZtUt4ii9ay1w4n3UjzoSVsRK9ys1VnWGS5rrDPsDzdi3swaDSwT/kbPUIQc5p/lnj7p5OhIVHFE5SA2sRyPCAvR72LcbUunitCwr0vxH9/d5fj0D+m3gKdqoKgegXJqL8b0tw8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220813; h=Content-Type: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=ntxTCCHtjtZjU02z7lpLlkudPuBPxCaeWiSaSIG2xK4=; b=J5RejbyJUa1L2sqIA/Q5zos4Wl2PTG00q3w3sjaWfAG5CJsZsh3VFQzJ2ck0r6Cwr6Ojx6FTnfVSe5hUy68/gm3y7jC8GMtk26mZQg5v+fJ8preE/NR/Pkn4mDzoKiXWA/uBodBiI6O2XOZv05Bl2IFTn4BVuC52OEZNpT381Zo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220813078549.8998430796704; Mon, 31 Oct 2022 05:53:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGX-0001a2-2A; Mon, 31 Oct 2022 08:51:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGA-0000sl-PI for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUG7-0002Gc-4n for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:22 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-501-VLrpfsNiNSOC7eVrTcTLQg-1; Mon, 31 Oct 2022 08:51:17 -0400 Received: by mail-wm1-f69.google.com with SMTP id i128-20020a1c3b86000000b003cf4ff1b917so5269108wma.2 for ; Mon, 31 Oct 2022 05:51:17 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id f7-20020adff987000000b00236722ebe66sm6899932wrr.75.2022.10.31.05.51.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220678; 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: in-reply-to:in-reply-to:references:references; bh=ntxTCCHtjtZjU02z7lpLlkudPuBPxCaeWiSaSIG2xK4=; b=cMNkxZFmrVlxpuuZXQwzrYyT8BcBsJ646QMrER65/Bsw0cQMXc7XVu4wpD4+IYBwa2UX90 xNZy0bgBWZN/0Z7MsoRL9VpmpcUNXrKiA+odVPPqYepy2GlTdvx3XUxOgn7PTjO6J6+2Ps xfQNObUYpmyOV+Trq8m+iXggpfz7+Rk= X-MC-Unique: VLrpfsNiNSOC7eVrTcTLQg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ntxTCCHtjtZjU02z7lpLlkudPuBPxCaeWiSaSIG2xK4=; b=tYeCLkTh4axQsrL36mf36+BLzMr+JRQigB+qCaK0wNAWDSxh49wRAhfnKrxTwcNoXK THXFZQ7qpdbshjgoY4aFNlFLT27zKHYBdBrulwJl5itXewChuBWy/4Zurk47GP4iu4PN ubIFa4dmzdOgDj0LksqqKdY7GU8JltlWAgsA/ewz23pNAxw1vvTqCzbIZqopYGEiFsgu FTqwLcUI23SWw3XvcH7mnbXqGDRwLZms6kWJbUiST0BqC3P2Wdfl9yUkPN9JC185KFyV dI4p8JU6aY/uMqWhWWdEZc7UweoT4p0sg25xqdIPTnPcYObbcO1SUfe9/0K040aMvN2c 1gfQ== X-Gm-Message-State: ACrzQf2XOGrx5uiLO3M4IaDVwxTJqgYMg9BpYKpwF+/SoC3x9hH2C8zB AFdWJ6ImMYSMuvOgkzkRt4EGS57bFdPiF9bPit72D/aDPjtC4HEvScpKSbr53dJPbvXy/xBT6en Yp5Hu01b9sJ1v8ABK/BdndtuSRMlETifCXZzGwgHK2K+tUeV3mX+CReQjKSh3 X-Received: by 2002:a5d:6485:0:b0:236:4ed2:409c with SMTP id o5-20020a5d6485000000b002364ed2409cmr7905606wri.110.1667220675585; Mon, 31 Oct 2022 05:51:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7abE+IYg0eeyf4La/0Vu7f6Cd1vFbaUokDas+isuUZwKwewyB2Ejkvr46WYEagRiCd3u0AHQ== X-Received: by 2002:a5d:6485:0:b0:236:4ed2:409c with SMTP id o5-20020a5d6485000000b002364ed2409cmr7905571wri.110.1667220675109; Mon, 31 Oct 2022 05:51:15 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:12 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lei He , "Gonglei (Arei)" , Eric Blake , Markus Armbruster , Paolo Bonzini , Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= , Eduardo Habkost Subject: [PULL 11/86] cryptodev: Add a lkcf-backend for cryptodev Message-ID: <20221031124928.128475-12-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220816524100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lei He cryptodev: Added a new type of backend named lkcf-backend for cryptodev. This backend upload asymmetric keys to linux kernel, and let kernel do the accelerations if possible. The lkcf stands for Linux Kernel Cryptography Framework. Signed-off-by: lei he Message-Id: <20221008085030.70212-5-helei.sig11@bytedance.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- qapi/qom.json | 2 + include/sysemu/cryptodev.h | 1 + backends/cryptodev-lkcf.c | 645 +++++++++++++++++++++++++++++++++++++ backends/meson.build | 3 + 4 files changed, 651 insertions(+) create mode 100644 backends/cryptodev-lkcf.c diff --git a/qapi/qom.json b/qapi/qom.json index 80dd419b39..cb83497c73 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -850,6 +850,7 @@ 'colo-compare', 'cryptodev-backend', 'cryptodev-backend-builtin', + 'cryptodev-backend-lkcf', { 'name': 'cryptodev-vhost-user', 'if': 'CONFIG_VHOST_CRYPTO' }, 'dbus-vmstate', @@ -917,6 +918,7 @@ 'colo-compare': 'ColoCompareProperties', 'cryptodev-backend': 'CryptodevBackendProperties', 'cryptodev-backend-builtin': 'CryptodevBackendProperties', + 'cryptodev-backend-lkcf': 'CryptodevBackendProperties', 'cryptodev-vhost-user': { 'type': 'CryptodevVhostUserPropertie= s', 'if': 'CONFIG_VHOST_CRYPTO' }, 'dbus-vmstate': 'DBusVMStateProperties', diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index 32e9f4cf8a..cf9b3f07fe 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -219,6 +219,7 @@ typedef enum CryptoDevBackendOptionsType { CRYPTODEV_BACKEND_TYPE_NONE =3D 0, CRYPTODEV_BACKEND_TYPE_BUILTIN =3D 1, CRYPTODEV_BACKEND_TYPE_VHOST_USER =3D 2, + CRYPTODEV_BACKEND_TYPE_LKCF =3D 3, CRYPTODEV_BACKEND_TYPE__MAX, } CryptoDevBackendOptionsType; =20 diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c new file mode 100644 index 0000000000..133bd706a4 --- /dev/null +++ b/backends/cryptodev-lkcf.c @@ -0,0 +1,645 @@ +/* + * QEMU Cryptodev backend for QEMU cipher APIs + * + * Copyright (c) 2022 Bytedance.Inc + * + * Authors: + * lei he + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + */ + +#include "qemu/osdep.h" +#include "crypto/cipher.h" +#include "crypto/akcipher.h" +#include "qapi/error.h" +#include "qemu/main-loop.h" +#include "qemu/thread.h" +#include "qemu/error-report.h" +#include "qemu/queue.h" +#include "qom/object.h" +#include "sysemu/cryptodev.h" +#include "standard-headers/linux/virtio_crypto.h" + +#include +#include + +/** + * @TYPE_CRYPTODEV_BACKEND_LKCF: + * name of backend that uses linux kernel crypto framework + */ +#define TYPE_CRYPTODEV_BACKEND_LKCF "cryptodev-backend-lkcf" + +OBJECT_DECLARE_SIMPLE_TYPE(CryptoDevBackendLKCF, CRYPTODEV_BACKEND_LKCF) + +#define INVALID_KEY_ID -1 +#define MAX_SESSIONS 256 +#define NR_WORKER_THREAD 64 + +#define KCTL_KEY_TYPE_PKEY "asymmetric" +/** + * Here the key is uploaded to the thread-keyring of worker thread, at lea= st + * util linux-6.0: + * 1. process keyring seems to behave unexpectedly if main-thread does not + * create the keyring before creating any other thread. + * 2. at present, the guest kernel never perform multiple operations on a + * session. + * 3. it can reduce the load of the main-loop because the key passed by the + * guest kernel has been already checked. + */ +#define KCTL_KEY_RING KEY_SPEC_THREAD_KEYRING + +typedef struct CryptoDevBackendLKCFSession { + uint8_t *key; + size_t keylen; + QCryptoAkCipherKeyType keytype; + QCryptoAkCipherOptions akcipher_opts; +} CryptoDevBackendLKCFSession; + +typedef struct CryptoDevBackendLKCF CryptoDevBackendLKCF; +typedef struct CryptoDevLKCFTask CryptoDevLKCFTask; +struct CryptoDevLKCFTask { + CryptoDevBackendLKCFSession *sess; + CryptoDevBackendOpInfo *op_info; + CryptoDevCompletionFunc cb; + void *opaque; + int status; + CryptoDevBackendLKCF *lkcf; + QSIMPLEQ_ENTRY(CryptoDevLKCFTask) queue; +}; + +typedef struct CryptoDevBackendLKCF { + CryptoDevBackend parent_obj; + CryptoDevBackendLKCFSession *sess[MAX_SESSIONS]; + QSIMPLEQ_HEAD(, CryptoDevLKCFTask) requests; + QSIMPLEQ_HEAD(, CryptoDevLKCFTask) responses; + QemuMutex mutex; + QemuCond cond; + QemuMutex rsp_mutex; + + /** + * There is no async interface for asymmetric keys like AF_ALG sockets, + * we don't seem to have better way than create a lots of thread. + */ + QemuThread worker_threads[NR_WORKER_THREAD]; + bool running; + int eventfd; +} CryptoDevBackendLKCF; + +static void *cryptodev_lkcf_worker(void *arg); +static int cryptodev_lkcf_close_session(CryptoDevBackend *backend, + uint64_t session_id, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque); + +static void cryptodev_lkcf_handle_response(void *opaque) +{ + CryptoDevBackendLKCF *lkcf =3D (CryptoDevBackendLKCF *)opaque; + QSIMPLEQ_HEAD(, CryptoDevLKCFTask) responses; + CryptoDevLKCFTask *task, *next; + eventfd_t nevent; + + QSIMPLEQ_INIT(&responses); + eventfd_read(lkcf->eventfd, &nevent); + + qemu_mutex_lock(&lkcf->rsp_mutex); + QSIMPLEQ_PREPEND(&responses, &lkcf->responses); + qemu_mutex_unlock(&lkcf->rsp_mutex); + + QSIMPLEQ_FOREACH_SAFE(task, &responses, queue, next) { + if (task->cb) { + task->cb(task->opaque, task->status); + } + g_free(task); + } +} + +static int cryptodev_lkcf_set_op_desc(QCryptoAkCipherOptions *opts, + char *key_desc, + size_t desc_len, + Error **errp) +{ + QCryptoAkCipherOptionsRSA *rsa_opt; + if (opts->alg !=3D QCRYPTO_AKCIPHER_ALG_RSA) { + error_setg(errp, "Unsupported alg: %u", opts->alg); + return -1; + } + + rsa_opt =3D &opts->u.rsa; + if (rsa_opt->padding_alg =3D=3D QCRYPTO_RSA_PADDING_ALG_PKCS1) { + snprintf(key_desc, desc_len, "enc=3D%s hash=3D%s", + QCryptoRSAPaddingAlgorithm_str(rsa_opt->padding_alg), + QCryptoHashAlgorithm_str(rsa_opt->hash_alg)); + + } else { + snprintf(key_desc, desc_len, "enc=3D%s", + QCryptoRSAPaddingAlgorithm_str(rsa_opt->padding_alg)); + } + return 0; +} + +static int cryptodev_lkcf_set_rsa_opt(int virtio_padding_alg, + int virtio_hash_alg, + QCryptoAkCipherOptionsRSA *opt, + Error **errp) +{ + if (virtio_padding_alg =3D=3D VIRTIO_CRYPTO_RSA_PKCS1_PADDING) { + opt->padding_alg =3D QCRYPTO_RSA_PADDING_ALG_PKCS1; + + switch (virtio_hash_alg) { + case VIRTIO_CRYPTO_RSA_MD5: + opt->hash_alg =3D QCRYPTO_HASH_ALG_MD5; + break; + + case VIRTIO_CRYPTO_RSA_SHA1: + opt->hash_alg =3D QCRYPTO_HASH_ALG_SHA1; + break; + + case VIRTIO_CRYPTO_RSA_SHA256: + opt->hash_alg =3D QCRYPTO_HASH_ALG_SHA256; + break; + + case VIRTIO_CRYPTO_RSA_SHA512: + opt->hash_alg =3D QCRYPTO_HASH_ALG_SHA512; + break; + + default: + error_setg(errp, "Unsupported rsa hash algo: %d", virtio_hash_= alg); + return -1; + } + return 0; + } + + if (virtio_padding_alg =3D=3D VIRTIO_CRYPTO_RSA_RAW_PADDING) { + opt->padding_alg =3D QCRYPTO_RSA_PADDING_ALG_RAW; + return 0; + } + + error_setg(errp, "Unsupported rsa padding algo: %u", virtio_padding_al= g); + return -1; +} + +static int cryptodev_lkcf_get_unused_session_index(CryptoDevBackendLKCF *l= kcf) +{ + size_t i; + + for (i =3D 0; i < MAX_SESSIONS; i++) { + if (lkcf->sess[i] =3D=3D NULL) { + return i; + } + } + return -1; +} + +static void cryptodev_lkcf_init(CryptoDevBackend *backend, Error **errp) +{ + /* Only support one queue */ + int queues =3D backend->conf.peers.queues, i; + CryptoDevBackendClient *cc; + CryptoDevBackendLKCF *lkcf =3D + CRYPTODEV_BACKEND_LKCF(backend); + + if (queues !=3D 1) { + error_setg(errp, + "Only support one queue in cryptodev-builtin backend"); + return; + } + lkcf->eventfd =3D eventfd(0, 0); + if (lkcf->eventfd < 0) { + error_setg(errp, "Failed to create eventfd: %d", errno); + return; + } + + cc =3D cryptodev_backend_new_client("cryptodev-lkcf", NULL); + cc->info_str =3D g_strdup_printf("cryptodev-lkcf0"); + cc->queue_index =3D 0; + cc->type =3D CRYPTODEV_BACKEND_TYPE_LKCF; + backend->conf.peers.ccs[0] =3D cc; + + backend->conf.crypto_services =3D + 1u << VIRTIO_CRYPTO_SERVICE_AKCIPHER; + backend->conf.akcipher_algo =3D 1u << VIRTIO_CRYPTO_AKCIPHER_RSA; + lkcf->running =3D true; + + QSIMPLEQ_INIT(&lkcf->requests); + QSIMPLEQ_INIT(&lkcf->responses); + qemu_mutex_init(&lkcf->mutex); + qemu_mutex_init(&lkcf->rsp_mutex); + qemu_cond_init(&lkcf->cond); + for (i =3D 0; i < NR_WORKER_THREAD; i++) { + qemu_thread_create(&lkcf->worker_threads[i], "lkcf-worker", + cryptodev_lkcf_worker, lkcf, 0); + } + qemu_set_fd_handler( + lkcf->eventfd, cryptodev_lkcf_handle_response, NULL, lkcf); + cryptodev_backend_set_ready(backend, true); +} + +static void cryptodev_lkcf_cleanup(CryptoDevBackend *backend, Error **errp) +{ + CryptoDevBackendLKCF *lkcf =3D CRYPTODEV_BACKEND_LKCF(backend); + size_t i; + int queues =3D backend->conf.peers.queues; + CryptoDevBackendClient *cc; + CryptoDevLKCFTask *task, *next; + + qemu_mutex_lock(&lkcf->mutex); + lkcf->running =3D false; + qemu_mutex_unlock(&lkcf->mutex); + qemu_cond_broadcast(&lkcf->cond); + + close(lkcf->eventfd); + for (i =3D 0; i < NR_WORKER_THREAD; i++) { + qemu_thread_join(&lkcf->worker_threads[i]); + } + + QSIMPLEQ_FOREACH_SAFE(task, &lkcf->requests, queue, next) { + if (task->cb) { + task->cb(task->opaque, task->status); + } + g_free(task); + } + + QSIMPLEQ_FOREACH_SAFE(task, &lkcf->responses, queue, next) { + if (task->cb) { + task->cb(task->opaque, task->status); + } + g_free(task); + } + + qemu_mutex_destroy(&lkcf->mutex); + qemu_cond_destroy(&lkcf->cond); + qemu_mutex_destroy(&lkcf->rsp_mutex); + + for (i =3D 0; i < MAX_SESSIONS; i++) { + if (lkcf->sess[i] !=3D NULL) { + cryptodev_lkcf_close_session(backend, i, 0, NULL, NULL); + } + } + + for (i =3D 0; i < queues; i++) { + cc =3D backend->conf.peers.ccs[i]; + if (cc) { + cryptodev_backend_free_client(cc); + backend->conf.peers.ccs[i] =3D NULL; + } + } + + cryptodev_backend_set_ready(backend, false); +} + +static void cryptodev_lkcf_execute_task(CryptoDevLKCFTask *task) +{ + CryptoDevBackendLKCFSession *session =3D task->sess; + CryptoDevBackendAsymOpInfo *asym_op_info; + bool kick =3D false; + int ret, status, op_code =3D task->op_info->op_code; + size_t p8info_len; + g_autofree uint8_t *p8info =3D NULL; + Error *local_error =3D NULL; + key_serial_t key_id =3D INVALID_KEY_ID; + char op_desc[64]; + g_autoptr(QCryptoAkCipher) akcipher =3D NULL; + + /** + * We only offload private key session: + * 1. currently, the Linux kernel can only accept public key wrapped + * with X.509 certificates, but unfortunately the cost of making a + * ceritificate with public key is too expensive. + * 2. generally, public key related compution is fast, just compute it= with + * thread-pool. + */ + if (session->keytype =3D=3D QCRYPTO_AKCIPHER_KEY_TYPE_PRIVATE) { + if (qcrypto_akcipher_export_p8info(&session->akcipher_opts, + session->key, session->keylen, + &p8info, &p8info_len, + &local_error) !=3D 0 || + cryptodev_lkcf_set_op_desc(&session->akcipher_opts, op_desc, + sizeof(op_desc), &local_error) !=3D= 0) { + error_report_err(local_error); + } else { + key_id =3D add_key(KCTL_KEY_TYPE_PKEY, "lkcf-backend-priv-key", + p8info, p8info_len, KCTL_KEY_RING); + } + } + + if (key_id < 0) { + if (!qcrypto_akcipher_supports(&session->akcipher_opts)) { + status =3D -VIRTIO_CRYPTO_NOTSUPP; + goto out; + } + akcipher =3D qcrypto_akcipher_new(&session->akcipher_opts, + session->keytype, + session->key, session->keylen, + &local_error); + if (!akcipher) { + status =3D -VIRTIO_CRYPTO_ERR; + goto out; + } + } + + asym_op_info =3D task->op_info->u.asym_op_info; + switch (op_code) { + case VIRTIO_CRYPTO_AKCIPHER_ENCRYPT: + if (key_id >=3D 0) { + ret =3D keyctl_pkey_encrypt(key_id, op_desc, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len); + } else { + ret =3D qcrypto_akcipher_encrypt(akcipher, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len, &local_error); + } + break; + + case VIRTIO_CRYPTO_AKCIPHER_DECRYPT: + if (key_id >=3D 0) { + ret =3D keyctl_pkey_decrypt(key_id, op_desc, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len); + } else { + ret =3D qcrypto_akcipher_decrypt(akcipher, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len, &local_error); + } + break; + + case VIRTIO_CRYPTO_AKCIPHER_SIGN: + if (key_id >=3D 0) { + ret =3D keyctl_pkey_sign(key_id, op_desc, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len); + } else { + ret =3D qcrypto_akcipher_sign(akcipher, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len, &local_error); + } + break; + + case VIRTIO_CRYPTO_AKCIPHER_VERIFY: + if (key_id >=3D 0) { + ret =3D keyctl_pkey_verify(key_id, op_desc, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len); + } else { + ret =3D qcrypto_akcipher_verify(akcipher, + asym_op_info->src, asym_op_info->src_len, + asym_op_info->dst, asym_op_info->dst_len, &local_error); + } + break; + + default: + error_setg(&local_error, "Unknown opcode: %u", op_code); + status =3D -VIRTIO_CRYPTO_ERR; + goto out; + } + + if (ret < 0) { + if (!local_error) { + if (errno !=3D EKEYREJECTED) { + error_report("Failed do operation with keyctl: %d", errno); + } + } else { + error_report_err(local_error); + } + status =3D op_code =3D=3D VIRTIO_CRYPTO_AKCIPHER_VERIFY ? + -VIRTIO_CRYPTO_KEY_REJECTED : -VIRTIO_CRYPTO_ERR; + } else { + status =3D VIRTIO_CRYPTO_OK; + asym_op_info->dst_len =3D ret; + } + +out: + if (key_id >=3D 0) { + keyctl_unlink(key_id, KCTL_KEY_RING); + } + task->status =3D status; + + qemu_mutex_lock(&task->lkcf->rsp_mutex); + if (QSIMPLEQ_EMPTY(&task->lkcf->responses)) { + kick =3D true; + } + QSIMPLEQ_INSERT_TAIL(&task->lkcf->responses, task, queue); + qemu_mutex_unlock(&task->lkcf->rsp_mutex); + + if (kick) { + eventfd_write(task->lkcf->eventfd, 1); + } +} + +static void *cryptodev_lkcf_worker(void *arg) +{ + CryptoDevBackendLKCF *backend =3D (CryptoDevBackendLKCF *)arg; + CryptoDevLKCFTask *task; + + for (;;) { + task =3D NULL; + qemu_mutex_lock(&backend->mutex); + while (backend->running && QSIMPLEQ_EMPTY(&backend->requests)) { + qemu_cond_wait(&backend->cond, &backend->mutex); + } + if (backend->running) { + task =3D QSIMPLEQ_FIRST(&backend->requests); + QSIMPLEQ_REMOVE_HEAD(&backend->requests, queue); + } + qemu_mutex_unlock(&backend->mutex); + + /* stopped */ + if (!task) { + break; + } + cryptodev_lkcf_execute_task(task); + } + + return NULL; +} + +static int cryptodev_lkcf_operation( + CryptoDevBackend *backend, + CryptoDevBackendOpInfo *op_info, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) +{ + CryptoDevBackendLKCF *lkcf =3D + CRYPTODEV_BACKEND_LKCF(backend); + CryptoDevBackendLKCFSession *sess; + enum CryptoDevBackendAlgType algtype =3D op_info->algtype; + CryptoDevLKCFTask *task; + + if (op_info->session_id >=3D MAX_SESSIONS || + lkcf->sess[op_info->session_id] =3D=3D NULL) { + error_report("Cannot find a valid session id: %" PRIu64 "", + op_info->session_id); + return -VIRTIO_CRYPTO_INVSESS; + } + + sess =3D lkcf->sess[op_info->session_id]; + if (algtype !=3D CRYPTODEV_BACKEND_ALG_ASYM) { + error_report("algtype not supported: %u", algtype); + return -VIRTIO_CRYPTO_NOTSUPP; + } + + task =3D g_new0(CryptoDevLKCFTask, 1); + task->op_info =3D op_info; + task->cb =3D cb; + task->opaque =3D opaque; + task->sess =3D sess; + task->lkcf =3D lkcf; + task->status =3D -VIRTIO_CRYPTO_ERR; + + qemu_mutex_lock(&lkcf->mutex); + QSIMPLEQ_INSERT_TAIL(&lkcf->requests, task, queue); + qemu_mutex_unlock(&lkcf->mutex); + qemu_cond_signal(&lkcf->cond); + + return VIRTIO_CRYPTO_OK; +} + +static int cryptodev_lkcf_create_asym_session( + CryptoDevBackendLKCF *lkcf, + CryptoDevBackendAsymSessionInfo *sess_info, + uint64_t *session_id) +{ + Error *local_error =3D NULL; + int index; + g_autofree CryptoDevBackendLKCFSession *sess =3D + g_new0(CryptoDevBackendLKCFSession, 1); + + switch (sess_info->algo) { + case VIRTIO_CRYPTO_AKCIPHER_RSA: + sess->akcipher_opts.alg =3D QCRYPTO_AKCIPHER_ALG_RSA; + if (cryptodev_lkcf_set_rsa_opt( + sess_info->u.rsa.padding_algo, sess_info->u.rsa.hash_algo, + &sess->akcipher_opts.u.rsa, &local_error) !=3D 0) { + error_report_err(local_error); + return -VIRTIO_CRYPTO_ERR; + } + break; + + default: + error_report("Unsupported asym alg %u", sess_info->algo); + return -VIRTIO_CRYPTO_NOTSUPP; + } + + switch (sess_info->keytype) { + case VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC: + sess->keytype =3D QCRYPTO_AKCIPHER_KEY_TYPE_PUBLIC; + break; + + case VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE: + sess->keytype =3D QCRYPTO_AKCIPHER_KEY_TYPE_PRIVATE; + break; + + default: + error_report("Unknown akcipher keytype: %u", sess_info->keytype); + return -VIRTIO_CRYPTO_ERR; + } + + index =3D cryptodev_lkcf_get_unused_session_index(lkcf); + if (index < 0) { + error_report("Total number of sessions created exceeds %u", + MAX_SESSIONS); + return -VIRTIO_CRYPTO_ERR; + } + + sess->keylen =3D sess_info->keylen; + sess->key =3D g_malloc(sess_info->keylen); + memcpy(sess->key, sess_info->key, sess_info->keylen); + + lkcf->sess[index] =3D g_steal_pointer(&sess); + *session_id =3D index; + + return VIRTIO_CRYPTO_OK; +} + +static int cryptodev_lkcf_create_session( + CryptoDevBackend *backend, + CryptoDevBackendSessionInfo *sess_info, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) +{ + CryptoDevBackendAsymSessionInfo *asym_sess_info; + CryptoDevBackendLKCF *lkcf =3D + CRYPTODEV_BACKEND_LKCF(backend); + int ret; + + switch (sess_info->op_code) { + case VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION: + asym_sess_info =3D &sess_info->u.asym_sess_info; + ret =3D cryptodev_lkcf_create_asym_session( + lkcf, asym_sess_info, &sess_info->session_id); + break; + + default: + ret =3D -VIRTIO_CRYPTO_NOTSUPP; + error_report("Unsupported opcode: %" PRIu32 "", + sess_info->op_code); + break; + } + if (cb) { + cb(opaque, ret); + } + return 0; +} + +static int cryptodev_lkcf_close_session(CryptoDevBackend *backend, + uint64_t session_id, + uint32_t queue_index, + CryptoDevCompletionFunc cb, + void *opaque) +{ + CryptoDevBackendLKCF *lkcf =3D CRYPTODEV_BACKEND_LKCF(backend); + CryptoDevBackendLKCFSession *session; + + assert(session_id < MAX_SESSIONS && lkcf->sess[session_id]); + session =3D lkcf->sess[session_id]; + lkcf->sess[session_id] =3D NULL; + + g_free(session->key); + g_free(session); + + if (cb) { + cb(opaque, VIRTIO_CRYPTO_OK); + } + return 0; +} + +static void cryptodev_lkcf_class_init(ObjectClass *oc, void *data) +{ + CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_CLASS(oc); + + bc->init =3D cryptodev_lkcf_init; + bc->cleanup =3D cryptodev_lkcf_cleanup; + bc->create_session =3D cryptodev_lkcf_create_session; + bc->close_session =3D cryptodev_lkcf_close_session; + bc->do_op =3D cryptodev_lkcf_operation; +} + +static const TypeInfo cryptodev_builtin_info =3D { + .name =3D TYPE_CRYPTODEV_BACKEND_LKCF, + .parent =3D TYPE_CRYPTODEV_BACKEND, + .class_init =3D cryptodev_lkcf_class_init, + .instance_size =3D sizeof(CryptoDevBackendLKCF), +}; + +static void cryptodev_lkcf_register_types(void) +{ + type_register_static(&cryptodev_builtin_info); +} + +type_init(cryptodev_lkcf_register_types); diff --git a/backends/meson.build b/backends/meson.build index b1884a88ec..954e658b25 100644 --- a/backends/meson.build +++ b/backends/meson.build @@ -12,6 +12,9 @@ softmmu_ss.add([files( softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('rng-random.c')) softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('hostmem-file.c')) softmmu_ss.add(when: 'CONFIG_LINUX', if_true: files('hostmem-memfd.c')) +if keyutils.found() + softmmu_ss.add(keyutils, files('cryptodev-lkcf.c')) +endif if have_vhost_user softmmu_ss.add(when: 'CONFIG_VIRTIO', if_true: files('vhost-user.c')) endif --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221033; cv=none; d=zohomail.com; s=zohoarc; b=UMPTJpqIjZuwY42AVeAl8APwGjL6K1KDiS9KMejNWU7I9E4kT62Wujh9i428S3rw433vGDvvW1LuINSLgvgZR0/5aj99lbn6K9ti8ogOXnRlv1SeXIJflVa6nYTll0w+KOWkMkAxSrp4DrilB5ag5SVFaf3fqxoVsLm7A/XSfDY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221033; 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=QUurT2v7QG9lBBy1769KbOksUjYP8lHwEikc8WjPnaw=; b=jryuECPbP3xb9+agr088mPUIS/Vg8Qws2FG2AvhBaPd115BAuOQnCWaQsIYlXGDYtXukPQCNbGZpavUrlFFlzD3qgOHGX52hWSdk7uDt7arJiJ9uVXOgQcoUfIuV5ymX7dif9fxJqRoRXP6LLF8aFshfSiNtZ6nfog2EaCZYxBA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16672210329921003.8105769286217; Mon, 31 Oct 2022 05:57:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGa-0001uc-Gx; Mon, 31 Oct 2022 08:51:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGI-00014I-7d for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGD-0002HD-61 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:29 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-622-9iZAvlFFPGy4so_WyGPaiw-1; Mon, 31 Oct 2022 08:51:22 -0400 Received: by mail-wm1-f70.google.com with SMTP id 133-20020a1c028b000000b003cf6fce8005so418535wmc.9 for ; Mon, 31 Oct 2022 05:51:22 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id d8-20020a5d5388000000b0023672104c24sm7187081wrv.74.2022.10.31.05.51.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220684; 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=QUurT2v7QG9lBBy1769KbOksUjYP8lHwEikc8WjPnaw=; b=eTdwZhRTI+T6H71n/Sw0+PJACw7txqS57PmLsM+2qk2cKKRvF0MlnO+l5qO/r541WQv2cT gLzUSNXjZXyzWwd7n+4EBbFh39/i447MBdj0/ASMim+1C0h069R1cX6vufnqbaK5goQBIj rw9FoiQo1qGkWGKAtmU2to35n8JVmhU= X-MC-Unique: 9iZAvlFFPGy4so_WyGPaiw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QUurT2v7QG9lBBy1769KbOksUjYP8lHwEikc8WjPnaw=; b=2Vn7AOwV1zPUhr19/fXMn5I8k7cHfbGICoIue8SzNdW6JWPP6LZdAUcCWtlC+Hx2cV Wx1BhTPKvWV0S3tLGFDoSvCZPuvLfG6HsOrM+fIlFLwVCBlzAavwwYDReu4LyAZghHE9 f7gFfxNZxwZbSkHxVFB4hduFurbbAYpc4DeHjXeYCi1ga0HOeb1u30nrxFYBI25LuN3P YAKkUd8LGS8Z1BVFasbgB1ZTIB+WZhdgNF8JFrc1fX84GXhYtvuNHS0Q/6XTR/sDo/KH MMSx7uA4OWofd4YKc3g3vGPXRLfeNfIRuMg1XHPbWmTDVhTxcXjyB/8K3pV4b4Qk+5pl TN3w== X-Gm-Message-State: ACrzQf3hTHXzPq6dOe/jE6d2F7yE5CTK1nuCFjlYTUpSD+L5PQ95N0ja URd8+EjUzKLscKDaAcaLjVCOV+2ja/Z8B6q1xdL6/3INm5qLvcFMNrWBUfDftaMEiKsFbE3Xg55 0nD8zQCgIYpqQv80lzTp2ukXlz+ZApaZTFGY5sVV25KBnmkZfUOYQ8l+ebZBv X-Received: by 2002:adf:dd45:0:b0:236:bd84:95d7 with SMTP id u5-20020adfdd45000000b00236bd8495d7mr5302641wrm.239.1667220680291; Mon, 31 Oct 2022 05:51:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Fw8bPrJgf4vLlUzDy2+XelGaJrlmZaatkUHiQuGrfXmGNCW6qc1JbwTmc1b12x+LTCxUXZQ== X-Received: by 2002:adf:dd45:0:b0:236:bd84:95d7 with SMTP id u5-20020adfdd45000000b00236bd8495d7mr5302581wrm.239.1667220679399; Mon, 31 Oct 2022 05:51:19 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin , Cleber Rosa , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Wainer dos Santos Moschetta , Beraldo Leal Subject: [PULL 12/86] acpi/tests/avocado/bits: initial commit of test scripts that are run by biosbits Message-ID: <20221031124928.128475-13-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221034148100001 From: Ani Sinha This is initial commit of cpuid, acpi and smbios python test scripts for biosbits to execute. No change has been made to them from the original code written by the biosbits author Josh Triplett. They are required to be insta= lled into the bits iso file and then run from within the virtual machine booted = off with biosbits iso. The test scripts have a ".py2" extension in order to prevent avocado from loading them. They are written in python 2.7 and are run from within bios b= its. There is no need for avocado to try to load them and call out errors on pyt= hon3 specific syntaxes. The original location of these tests are here: https://github.com/biosbits/bits/blob/master/python/testacpi.py https://github.com/biosbits/bits/blob/master/python/smbios.py https://github.com/biosbits/bits/blob/master/python/testcpuid.py For QEMU, we maintain a fork of the above repo here with numerious fixes: https://gitlab.com/qemu-project/biosbits-bits The acpi test for example is maintained here in the fork: https://gitlab.com/qemu-project/biosbits-bits/-/raw/master/python/testacpi.= py Cc: Daniel P. Berrang=C3=A9 Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Reviewed-by: Alex Benn=C3=A9e Message-Id: <20221021095108.104843-2-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/avocado/acpi-bits/bits-tests/smbios.py2 | 2430 +++++++++++++++++ .../avocado/acpi-bits/bits-tests/testacpi.py2 | 283 ++ .../acpi-bits/bits-tests/testcpuid.py2 | 83 + 3 files changed, 2796 insertions(+) create mode 100644 tests/avocado/acpi-bits/bits-tests/smbios.py2 create mode 100644 tests/avocado/acpi-bits/bits-tests/testacpi.py2 create mode 100644 tests/avocado/acpi-bits/bits-tests/testcpuid.py2 diff --git a/tests/avocado/acpi-bits/bits-tests/smbios.py2 b/tests/avocado/= acpi-bits/bits-tests/smbios.py2 new file mode 100644 index 0000000000..9667d0542c --- /dev/null +++ b/tests/avocado/acpi-bits/bits-tests/smbios.py2 @@ -0,0 +1,2430 @@ +# Copyright (c) 2015, Intel Corporation +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are m= et: +# +# * Redistributions of source code must retain the above copyright not= ice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright = notice, +# this list of conditions and the following disclaimer in the docume= ntation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contrib= utors +# may be used to endorse or promote products derived from this softw= are +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIA= BLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL D= AMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVI= CES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED = AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF= THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""SMBIOS/DMI module.""" + +import bits +import bitfields +import ctypes +import redirect +import struct +import uuid +import unpack +import ttypager +import sys + +class SMBIOS(unpack.Struct): + def __new__(cls): + if sys.platform =3D=3D "BITS-EFI": + import efi + sm_ptr =3D efi.system_table.ConfigurationTableDict.get(efi.SMB= IOS_TABLE_GUID) + else: + address =3D 0xF0000 + mem =3D bits.memory(0xF0000, 0x10000) + for offset in range(0, len(mem), 16): + signature =3D (ctypes.c_char * 4).from_address(address + o= ffset).value + if signature =3D=3D "_SM_": + entry_point_length =3D ctypes.c_ubyte.from_address(add= ress + offset + 5).value + csum =3D sum(map(ord, mem[offset:offset + entry_point_= length])) & 0xff + if csum =3D=3D 0: + sm_ptr =3D address + offset + break + else: + return None + + if not sm_ptr: + return None + + sm =3D super(SMBIOS, cls).__new__(cls) + sm._header_memory =3D bits.memory(sm_ptr, 0x1f) + return sm + + def __init__(self): + super(SMBIOS, self).__init__() + u =3D unpack.Unpackable(self._header_memory) + self.add_field('header', Header(u)) + self._structure_memory =3D bits.memory(self.header.structure_table= _address, self.header.structure_table_length) + u =3D unpack.Unpackable(self._structure_memory) + self.add_field('structures', unpack.unpack_all(u, _smbios_structur= es, self), unpack.format_each("\n\n{!r}")) + + def structure_type(self, num): + '''Dumps structure of given Type if present''' + try: + types_present =3D [self.structures[x].smbios_structure_type fo= r x in range(len(self.structures))] + matrix =3D dict() + for index in range(len(types_present)): + if types_present.count(types_present[index]) =3D=3D 1: + matrix[types_present[index]] =3D self.structures[index] + else: # if multiple structures of the same type, return a = list of structures for the type number + if matrix.has_key(types_present[index]): + matrix[types_present[index]].append(self.structure= s[index]) + else: + matrix[types_present[index]] =3D [self.structures[= index]] + return matrix[num] + except: + print "Failure: Type {} - not found".format(num) + +class Header(unpack.Struct): + def __new__(cls, u): + return super(Header, cls).__new__(cls) + + def __init__(self, u): + super(Header, self).__init__() + self.raw_data =3D u.unpack_rest() + u =3D unpack.Unpackable(self.raw_data) + self.add_field('anchor_string', u.unpack_one("4s")) + self.add_field('checksum', u.unpack_one("B")) + self.add_field('length', u.unpack_one("B")) + self.add_field('major_version', u.unpack_one("B")) + self.add_field('minor_version', u.unpack_one("B")) + self.add_field('max_structure_size', u.unpack_one(" len(self.strings): + return "(error: string index out of range)" + return self.strings[i - 1] + +class BIOSInformation(SmbiosBaseStructure): + smbios_structure_type =3D 0 + + def __init__(self, u, sm): + super(BIOSInformation, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('vendor', u.unpack_one("B"), self.fmtstr) + self.add_field('version', u.unpack_one("B"), self.fmtstr) + self.add_field('starting_address_segment', u.unpack_one("=3D (2,"4"): + characteristic_bytes =3D 2 + else: + characteristic_bytes =3D self.length - 0x12 + self.add_field('characteristics_extensions', [u.unpack_one("B"= ) for b in range(characteristic_bytes)]) + if (sm.header.major_version, minor_version_str) >=3D (2,"4"): + self.add_field('major_release', u.unpack_one("B")) + self.add_field('minor_release', u.unpack_one("B")) + self.add_field('ec_major_release', u.unpack_one("B")) + self.add_field('ec_minor_release', u.unpack_one("B")) + except: + self.decode_failure =3D True + print "Error parsing BIOSInformation" + import traceback + traceback.print_exc() + self.fini() + +class SystemInformation(SmbiosBaseStructure): + smbios_structure_type =3D 1 + + def __init__(self, u, sm): + super(SystemInformation, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('manufacturer', u.unpack_one("B"), self.fmtstr) + self.add_field('product_name', u.unpack_one("B"), self.fmtstr) + self.add_field('version', u.unpack_one("B"), self.fmtstr) + self.add_field('serial_number', u.unpack_one("B"), self.fmtstr) + if self.length > 0x8: + self.add_field('uuid', uuid.UUID(bytes_le=3Du.unpack_one("= 16s"))) + wakeup_types =3D { + 0: 'Reserved', + 1: 'Other', + 2: 'Unknown', + 3: 'APM Timer', + 4: 'Modem Ring', + 5: 'LAN Remote', + 6: 'Power Switch', + 7: 'PCI PME#', + 8: 'AC Power Restored' + } + self.add_field('wakeup_type', u.unpack_one("B"), unpack.fo= rmat_table("{}", wakeup_types)) + if self.length > 0x19: + self.add_field('sku_number', u.unpack_one("B"), self.fmtst= r) + self.add_field('family', u.unpack_one("B"), self.fmtstr) + except: + self.decode_failure =3D True + print "Error parsing SystemInformation" + import traceback + traceback.print_exc() + self.fini() + +_board_types =3D { + 1: 'Unknown', + 2: 'Other', + 3: 'Server Blade', + 4: 'Connectivity Switch', + 5: 'System Management Module', + 6: 'Processor Module', + 7: 'I/O Module', + 8: 'Memory Module', + 9: 'Daughter Board', + 0xA: 'Motherboard', + 0xB: 'Processor/Memory Module', + 0xC: 'Processor/IO Module', + 0xD: 'Interconnect Board' +} + +class BaseboardInformation(SmbiosBaseStructure): + smbios_structure_type =3D 2 + + def __init__(self, u, sm): + super(BaseboardInformation, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('manufacturer', u.unpack_one("B"), self.fmtstr) + self.add_field('product', u.unpack_one("B"), self.fmtstr) + self.add_field('version', u.unpack_one("B"), self.fmtstr) + self.add_field('serial_number', u.unpack_one("B"), self.fmtstr) + + if self.length > 0x8: + self.add_field('asset_tag', u.unpack_one("B"), self.fmtstr) + + if self.length > 0x9: + self.add_field('feature_flags', u.unpack_one("B")) + self.add_field('hosting_board', bool(bitfields.getbits(sel= f.feature_flags, 0)), "feature_flags[0]=3D{}") + self.add_field('requires_daughter_card', bool(bitfields.ge= tbits(self.feature_flags, 1)), "feature_flags[1]=3D{}") + self.add_field('removable', bool(bitfields.getbits(self.fe= ature_flags, 2)), "feature_flags[2]=3D{}") + self.add_field('replaceable', bool(bitfields.getbits(self.= feature_flags, 3)), "feature_flags[3]=3D{}") + self.add_field('hot_swappable', bool(bitfields.getbits(sel= f.feature_flags, 4)), "feature_flags[4]=3D{}") + + if self.length > 0xA: + self.add_field('location', u.unpack_one("B"), self.fmtstr) + + if self.length > 0xB: + self.add_field('chassis_handle', u.unpack_one(" 0xD: + self.add_field('board_type', u.unpack_one("B"), unpack.for= mat_table("{}", _board_types)) + + if self.length > 0xE: + self.add_field('handle_count', u.unpack_one("B")) + if self.handle_count > 0: + self.add_field('contained_object_handles', tuple(u.unp= ack_one(" 9: + chassis_states =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Safe', + 0x04: 'Warning', + 0x05: 'Critical', + 0x06: 'Non-recoverable', + } + self.add_field('bootup_state', u.unpack_one("B"), unpack.f= ormat_table("{}", chassis_states)) + self.add_field('power_supply_state', u.unpack_one("B"), un= pack.format_table("{}", chassis_states)) + self.add_field('thermal_state', u.unpack_one("B"), unpack.= format_table("{}", chassis_states)) + security_states =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'None', + 0x04: 'External interface locked out', + 0x05: 'External interface enabled', + } + self.add_field('security_status', u.unpack_one("B"), unpac= k.format_table("{}", security_states)) + if self.length > 0xd: + self.add_field('oem_defined', u.unpack_one(" 0x11: + self.add_field('height', u.unpack_one("B")) + self.add_field('num_power_cords', u.unpack_one("B")) + self.add_field('contained_element_count', u.unpack_one("B"= )) + self.add_field('contained_element_length', u.unpack_one("B= ")) + if getattr(self, 'contained_element_count', 0): + self.add_field('contained_elements', tuple(SystemEnclosure= ContainedElement(u, self.contained_element_length) for i in range(self.cont= ained_element_count))) + if self.length > (0x15 + (getattr(self, 'contained_element_cou= nt', 0) * getattr(self, 'contained_element_length', 0))): + self.add_field('sku_number', u.unpack_one("B"), self.fmtst= r) + except: + self.decode_failure =3D True + print "Error parsing SystemEnclosure" + import traceback + traceback.print_exc() + self.fini() + +class SystemEnclosureContainedElement(unpack.Struct): + def __init__(self, u, length): + super(SystemEnclosureContainedElement, self).__init__() + self.start_offset =3D u.offset + self.raw_data =3D u.unpack_raw(length) + self.u =3D unpack.Unpackable(self.raw_data) + u =3D self.u + self.add_field('contained_element_type', u.unpack_one("B")) + type_selections =3D { + 0: 'SMBIOS baseboard type enumeration', + 1: 'SMBIOS structure type enumeration', + } + self.add_field('type_select', bitfields.getbits(self.contained_ele= ment_type, 7), unpack.format_table("contained_element_type[7]=3D{}", type_s= elections)) + self.add_field('type', bitfields.getbits(self.contained_element_ty= pe, 6, 0)) + if self.type_select =3D=3D 0: + self.add_field('smbios_board_type', self.type, unpack.format_t= able("{}", _board_types)) + else: + self.add_field('smbios_structure_type', self.type) + self.add_field('minimum', u.unpack_one("B")) + self.add_field('maximum', u.unpack_one("B")) + if not u.at_end(): + self.add_field('data', u.unpack_rest()) + del self.u + +class ProcessorInformation(SmbiosBaseStructure): + smbios_structure_type =3D 4 + + def __init__(self, u, sm): + super(ProcessorInformation, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('socket_designation', u.unpack_one("B"), self.f= mtstr) + processor_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Central Processor', + 0x04: 'Math Processor', + 0x05: 'DSP Processor', + 0x06: 'Video Processor', + } + self.add_field('processor_type', u.unpack_one("B"), unpack.for= mat_table("{}", processor_types)) + self.add_field('processor_family', u.unpack_one("B")) + self.add_field('processor_manufacturer', u.unpack_one("B"), se= lf.fmtstr) + self.add_field('processor_id', u.unpack_one(" 0x1A: + self.add_field('l1_cache_handle', u.unpack_one(" 0x20: + self.add_field('serial_number', u.unpack_one("B"), self.fm= tstr) + self.add_field('asset_tag', u.unpack_one("B"), self.fmtstr) + self.add_field('part_number', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x24: + self.add_field('core_count', u.unpack_one("B")) + self.add_field('core_enabled', u.unpack_one("B")) + self.add_field('thread_count', u.unpack_one("B")) + self.add_field('processor_characteristics', u.unpack_one("= 0x28: + self.add_field('processor_family_2', u.unpack_one(" 0x2A: + self.add_field('core_count2', u.unpack_one(" 0x0F: + self.add_field('cache_speed', u.unpack_one("B")) + if self.length > 0x10: + _error_correction =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'None', + 0x04: 'Parity', + 0x05: 'Single-bit ECC', + 0x06: 'Multi-bit ECC' + } + self.add_field('error_correction', u.unpack_one("B"), unpa= ck.format_table("{}", _error_correction)) + if self.length > 0x10: + _system_cache_type =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Instruction', + 0x04: 'Data', + 0x05: 'Unified' + } + self.add_field('system_cache_type', u.unpack_one("B"), unp= ack.format_table("{}", _system_cache_type)) + if self.length > 0x12: + _associativity =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Direct Mapped', + 0x04: '2-way Set-Associative', + 0x05: '4-way Set-Associative', + 0x06: 'Fully Associative', + 0x07: '8-way Set-Associative', + 0x08: '16-way Set-Associative', + 0x09: '12-way Set-Associative', + 0x0A: '24-way Set-Associative', + 0x0B: '32-way Set-Associative', + 0x0C: '48-way Set-Associative', + 0x0D: '64-way Set-Associative', + 0x0E: '20-way Set-Associative' + } + self.add_field('associativity', u.unpack_one("B"), unpack.= format_table("{}", _associativity)) + + except: + self.decode_failure =3D True + print "Error parsing CacheInformation" + import traceback + traceback.print_exc() + self.fini() + +class PortConnectorInfo(SmbiosBaseStructure): + smbios_structure_type =3D 8 + + def __init__(self, u, sm): + super(PortConnectorInfo, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('internal_reference_designator', u.unpack_one("= B"), self.fmtstr) + connector_types =3D { + 0x00: 'None', + 0x01: 'Centronics', + 0x02: 'Mini Centronics', + 0x03: 'Proprietary', + 0x04: 'DB-25 pin male', + 0x05: 'DB-25 pin female', + 0x06: 'DB-15 pin male', + 0x07: 'DB-15 pin female', + 0x08: 'DB-9 pin male', + 0x09: 'DB-9 pin female', + 0x0A: 'RJ-11', + 0x0B: 'RJ-45', + 0x0C: '50-pin MiniSCSI', + 0x0D: 'Mini-DIN', + 0x0E: 'Micro-DIN', + 0x0F: 'PS/2', + 0x10: 'Infrared', + 0x11: 'HP-HIL', + 0x12: 'Access Bus (USB)', + 0x13: 'SSA SCSI', + 0x14: 'Circular DIN-8 male', + 0x15: 'Circular DIN-8 female', + 0x16: 'On Board IDE', + 0x17: 'On Board Floppy', + 0x18: '9-pin Dual Inline (pin 10 cut)', + 0x19: '25-pin Dual Inline (pin 26 cut)', + 0x1A: '50-pin Dual Inline', + 0x1B: '68-pin Dual Inline', + 0x1C: 'On Board Sound Input from CD-ROM', + 0x1D: 'Mini-Centronics Type-14', + 0x1E: 'Mini-Centronics Type-26', + 0x1F: 'Mini-jack (headphones)', + 0x20: 'BNC', + 0x21: '1394', + 0x22: 'SAS/SATA Plug Receptacle', + 0xA0: 'PC-98', + 0xA1: 'PC-98Hireso', + 0xA2: 'PC-H98', + 0xA3: 'PC-98Note', + 0xA4: 'PC-98Full', + 0xFF: 'Other', + } + self.add_field('internal_connector_type', u.unpack_one("B"), u= npack.format_table("{}", connector_types)) + self.add_field('external_reference_designator', u.unpack_one("= B"), self.fmtstr) + self.add_field('external_connector_type', u.unpack_one("B"), u= npack.format_table("{}", connector_types)) + port_types =3D { + 0x00: 'None', + 0x01: 'Parallel Port XT/AT Compatible', + 0x02: 'Parallel Port PS/2', + 0x03: 'Parallel Port ECP', + 0x04: 'Parallel Port EPP', + 0x05: 'Parallel Port ECP/EPP', + 0x06: 'Serial Port XT/AT Compatible', + 0x07: 'Serial Port 16450 Compatible', + 0x08: 'Serial Port 16550 Compatible', + 0x09: 'Serial Port 16550A Compatible', + 0x0A: 'SCSI Port', + 0x0B: 'MIDI Port', + 0x0C: 'Joy Stick Port', + 0x0D: 'Keyboard Port', + 0x0E: 'Mouse Port', + 0x0F: 'SSA SCSI', + 0x10: 'USB', + 0x11: 'FireWire (IEEE P1394)', + 0x12: 'PCMCIA Type I2', + 0x13: 'PCMCIA Type II', + 0x14: 'PCMCIA Type III', + 0x15: 'Cardbus', + 0x16: 'Access Bus Port', + 0x17: 'SCSI II', + 0x18: 'SCSI Wide', + 0x19: 'PC-98', + 0x1A: 'PC-98-Hireso', + 0x1B: 'PC-H98', + 0x1C: 'Video Port', + 0x1D: 'Audio Port', + 0x1E: 'Modem Port', + 0x1F: 'Network Port', + 0x20: 'SATA', + 0x21: 'SAS', + 0xA0: '8251 Compatible', + 0xA1: '8251 FIFO Compatible', + 0xFF: 'Other', + } + self.add_field('port_type', u.unpack_one("B"), unpack.format_t= able("{}", port_types)) + except: + self.decodeFailure =3D True + print "Error parsing PortConnectorInfo" + import traceback + traceback.print_exc() + self.fini() + +class SystemSlots(SmbiosBaseStructure): + smbios_structure_type =3D 9 + + def __init__(self, u, sm): + super(SystemSlots, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('designation', u.unpack_one("B"), self.fmtstr) + _slot_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'ISA', + 0x04: 'MCA', + 0x05: 'EISA', + 0x06: 'PCI', + 0x07: 'PC Card (PCMCIA)', + 0x08: 'VL-VESA', + 0x09: 'Proprietary', + 0x0A: 'Processor Card Slot', + 0x0B: 'Proprietary Memory Card Slot', + 0x0C: 'I/O Riser Card Slot', + 0x0D: 'NuBus', + 0x0E: 'PCI 66MHz Capable', + 0x0F: 'AGP', + 0x10: 'AGP 2X', + 0x11: 'AGP 4X', + 0x12: 'PCI-X', + 0x13: 'AGP 8X', + 0xA0: 'PC-98/C20', + 0xA1: 'PC-98/C24', + 0xA2: 'PC-98/E', + 0xA3: 'PC-98/Local Bus', + 0xA4: 'PC-98/Card', + 0xA5: 'PCI Express', + 0xA6: 'PCI Express x1', + 0xA7: 'PCI Express x2', + 0xA8: 'PCI Express x4', + 0xA9: 'PCI Express x8', + 0xAA: 'PCI Express x16', + 0xAB: 'PCI Express Gen 2', + 0xAC: 'PCI Express Gen 2 x1', + 0xAD: 'PCI Express Gen 2 x2', + 0xAE: 'PCI Express Gen 2 x4', + 0xAF: 'PCI Express Gen 2 x8', + 0xB0: 'PCI Express Gen 2 x16', + 0xB1: 'PCI Express Gen 3', + 0xB2: 'PCI Express Gen 3 x1', + 0xB3: 'PCI Express Gen 3 x2', + 0xB4: 'PCI Express Gen 3 x4', + 0xB5: 'PCI Express Gen 3 x8', + 0xB6: 'PCI Express Gen 3 x16', + } + self.add_field('slot_type', u.unpack_one("B"), unpack.format_t= able("{}", _slot_types)) + _slot_data_bus_widths =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: '8 bit', + 0x04: '16 bit', + 0x05: '32 bit', + 0x06: '64 bit', + 0x07: '128 bit', + 0x08: '1x or x1', + 0x09: '2x or x2', + 0x0A: '4x or x4', + 0x0B: '8x or x8', + 0x0C: '12x or x12', + 0x0D: '16x or x16', + 0x0E: '32x or x32', + } + self.add_field('slot_data_bus_width', u.unpack_one('B'), unpac= k.format_table("{}", _slot_data_bus_widths)) + _current_usages =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Available', + 0x04: 'In use', + } + self.add_field('current_usage', u.unpack_one('B'), unpack.form= at_table("{}", _current_usages)) + _slot_lengths =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Short Length', + 0x04: 'Long Length', + } + self.add_field('slot_length', u.unpack_one('B'), unpack.format= _table("{}", _slot_lengths)) + self.add_field('slot_id', u.unpack_one(' 0x0C: + self.add_field('characteristics2', u.unpack_one('B')) + self.add_field('supports_PME', bool(bitfields.getbits(self= .characteristics2, 0)), "characteristics2[0]=3D{}") + self.add_field('supports_hot_plug', bool(bitfields.getbits= (self.characteristics2, 1)), "characteristics2[1]=3D{}") + self.add_field('supports_smbus', bool(bitfields.getbits(se= lf.characteristics2, 2)), "characteristics2[2]=3D{}") + if self.length > 0x0D: + self.add_field('segment_group_number', u.unpack_one(' 0x05: + self.add_field('flags', u.unpack_one('B')) + self.add_field('abbreviated_format', bool(bitfields.getbit= s(self.flags, 0)), "flags[0]=3D{}") + if self.length > 0x6: + u.skip(15) + self.add_field('current_language', u.unpack_one('B'), self= .fmtstr) + except: + self.decodeFailure =3D True + print "Error parsing BIOSLanguageInformation" + import traceback + traceback.print_exc() + self.fini() + +class GroupAssociations(SmbiosBaseStructure): + smbios_structure_type =3D 14 + + def __init__(self, u, sm): + super(GroupAssociations, self).__init__(u, sm) + u =3D self.u + try: + self.add_field('group_name', u.unpack_one("B"), self.fmtstr) + self.add_field('item_type', u.unpack_one('B')) + self.add_field('item_handle', u.unpack_one(' 0x14: + _log_header_formats =3D { + 0: 'No header', + 1: 'Type 1 log header', + xrange(2, 0x7f): 'Available for future assignment', + xrange(0x80, 0xff): 'BIOS vendor or OEM-specific forma= t' + } + self.add_field('log_header_format', u.unpack_one("B"), unp= ack.format_table("{}", _log_header_formats)) + if self.length > 0x15: + self.add_field('num_supported_log_type_descriptors', u.unp= ack_one('B')) + if self.length > 0x16: + self.add_field('length_log_type_descriptor', u.unpack_one(= 'B')) + if self.length !=3D (0x17 + (self.num_supported_log_type_descr= iptors * self.length_log_type_descriptor)): + print "Error: structure length ({}) !=3D 0x17 + (num_suppo= rted_log_type_descriptors ({}) * length_log_type_descriptor({}))".format(se= lf.length, self.num_supported_log_type_descriptors, self.length_log_type_de= scriptor) + print "structure length =3D {}".format(self.length) + print "num_supported_log_type_descriptors =3D {}".format(s= elf.num_supported_log_type_descriptors) + print "length_log_type_descriptor =3D {}".format(self.leng= th_log_type_descriptor) + self.decodeFailure =3D True + self.add_field('descriptors', tuple(EventLogDescriptor.unpack(= u) for i in range(self.num_supported_log_type_descriptors)), unpack.format_= each("\n{!r}")) + except: + self.decodeFailure =3D True + print "Error parsing SystemEventLog" + import traceback + traceback.print_exc() + self.fini() + +class EventLogDescriptor(unpack.Struct): + @staticmethod + def _unpack(u): + _event_log_type_descriptors =3D { + 0x00: 'Reserved', + 0x01: 'Single-bit ECC memory error', + 0x02: 'Multi-bit ECC memory error', + 0x03: 'Parity memory error', + 0x04: 'Bus time-out', + 0x05: 'I/O Channel Check', + 0x06: 'Software NMI', + 0x07: 'POST Memory Resize', + 0x08: 'POST Error', + 0x09: 'PCI Parity Error', + 0x0A: 'PCI System Error', + 0x0B: 'CPU Failure', + 0x0C: 'EISA FailSafe Timer time-out', + 0x0D: 'Correctable memory log disabled', + 0x0E: 'Logging disabled for a specific Event Type - too many e= rrors of the same type received in a short amount of time', + 0x0F: 'Reserved', + 0x10: 'System Limit Exceeded', + 0x11: 'Asynchronous hardware timer expired and issued a system= reset', + 0x12: 'System configuration information', + 0x13: 'Hard-disk information', + 0x14: 'System reconfigured', + 0x15: 'Uncorrectable CPU-complex error', + 0x16: 'Log Area Reset/Cleared', + 0x17: 'System boot', + xrange(0x18, 0x7F): 'Unused, available for assignment', + xrange(0x80, 0xFE): 'Availalbe for system- and OEM-specific as= signments', + 0xFF: 'End of log' + } + yield 'log_type', u.unpack_one('B'), unpack.format_table("{}", _ev= ent_log_type_descriptors) + _event_log_format =3D { + 0x00: 'None', + 0x01: 'Handle', + 0x02: 'Multiple-Event', + 0x03: 'Multiple-Event Handle', + 0x04: 'POST Results Bitmap', + 0x05: 'System Management Type', + 0x06: 'Multiple-Event System Management Type', + xrange(0x80, 0xFF): 'OEM assigned' + } + yield 'variable_data_format_type', u.unpack_one('B'), unpack.forma= t_table("{}", _event_log_format) + +class PhysicalMemoryArray(SmbiosBaseStructure): + smbios_structure_type =3D 16 + + def __init__(self, u, sm): + super(PhysicalMemoryArray, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + _location_field =3D { + 0x01: "Other", + 0x02: "Unknown", + 0x03: "System board or motherboard", + 0x04: "ISA add-on card", + 0x05: "EISA add-on card", + 0x06: "PCI add-on card", + 0x07: "MCA add-on card", + 0x08: "PCMCIA add-on card", + 0x09: "Proprietary add-on card", + 0x0A: "NuBus", + 0xA0: "PC-98/C20 add-on card", + 0xA1: "PC-98/C24 add-on card", + 0xA2: "PC-98/E add-on card", + 0xA3: "PC-98/Local bus add-on card" + } + self.add_field('location', u.unpack_one("B"), unpack.forma= t_table("{}", _location_field)) + if self.length > 0x05: + _use =3D { + 0x01: "Other", + 0x02: "Unknown", + 0x03: "System memory", + 0x04: "Video memory", + 0x05: "Flash memory", + 0x06: "Non-volatile RAM", + 0x07: "Cache memory" + } + self.add_field('use', u.unpack_one('B'), unpack.format_tab= le("{}", _use)) + if self.length > 0x06: + _error_correction =3D { + 0x01: "Other", + 0x02: "Unknown", + 0x03: "None", + 0x04: "Parity", + 0x05: "Single-bit ECC", + 0x06: "Multi-bit ECC", + 0x07: "CRC" + } + self.add_field('memory_error_correction', u.unpack_one('B'= ), unpack.format_table("{}", _error_correction)) + if self.length > 0x07: + self.add_field('maximum_capacity', u.unpack_one(' 0x0B: + self.add_field('memory_error_information_handle', u.unpack= _one(' 0x0D: + self.add_field('num_memory_devices', u.unpack_one(' 0x0F: + self.add_field('extended_maximum_capacity', u.unpack_one('= 0x4: + self.add_field('physical_memory_array_handle', u.unpack_on= e(" 0x6: + self.add_field('memory_error_information_handle', u.unpack= _one(" 0x8: + self.add_field('total_width', u.unpack_one(" 0xA: + self.add_field('data_width', u.unpack_one(" 0xC: + self.add_field('size', u.unpack_one(" 0xE: + _form_factors =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'SIMM', + 0x04: 'SIP', + 0x05: 'Chip', + 0x06: 'DIP', + 0x07: 'ZIP', + 0x08: 'Proprietary Card', + 0x09: 'DIMM', + 0x0A: 'TSOP', + 0x0B: 'Row of chips', + 0x0C: 'RIMM', + 0x0D: 'SODIMM', + 0x0E: 'SRIMM', + 0x0F: 'FB-DIMM' + } + self.add_field('form_factor', u.unpack_one("B"), unpack.fo= rmat_table("{}", _form_factors)) + if self.length > 0xF: + self.add_field('device_set', u.unpack_one("B")) + if self.length > 0x10: + self.add_field('device_locator', u.unpack_one("B"), self.f= mtstr) + if self.length > 0x11: + self.add_field('bank_locator', u.unpack_one("B"), self.fmt= str) + if self.length > 0x12: + _memory_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'DRAM', + 0x04: 'EDRAM', + 0x05: 'VRAM', + 0x06: 'SRAM', + 0x07: 'RAM', + 0x08: 'ROM', + 0x09: 'FLASH', + 0x0A: 'EEPROM', + 0x0B: 'FEPROM', + 0x0C: 'EPROM', + 0x0D: 'CDRAM', + 0x0E: '3DRAM', + 0x0F: 'SDRAM', + 0x10: 'SGRAM', + 0x11: 'RDRAM', + 0x12: 'DDR', + 0x13: 'DDR2', + 0x14: 'DDR2 FB-DIMM', + xrange(0x15, 0x17): 'Reserved', + 0x18: 'DDR3', + 0x19: 'FBD2' + } + self.add_field('memory_type', u.unpack_one("B"), unpack.fo= rmat_table("{}", _memory_types)) + if self.length > 0x13: + self.add_field('type_detail', u.unpack_one(' 0x15: + self.add_field('speed', u.unpack_one(" 0x17: + self.add_field('manufacturer', u.unpack_one("B"), self.fmt= str) + if self.length > 0x18: + self.add_field('serial_number', u.unpack_one("B"), self.fm= tstr) + if self.length > 0x19: + self.add_field('asset_tag', u.unpack_one("B"), self.fmtstr) + if self.length > 0x1A: + self.add_field('part_number', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x1B: + self.add_field('attributes', u.unpack_one("B")) + self.add_field('rank', bitfields.getbits(self.attributes, = 3, 0), "attributes[3:0]=3D{}") + if self.length > 0x1C: + if self.size =3D=3D 0x7FFF: + self.add_field('extended_size', u.unpack_one(' 0x20: + self.add_field('configured_memory_clock_speed', u.unpack_o= ne(" 0x22: + self.add_field('minimum_voltage', u.unpack_one(" 0x24: + self.add_field('maximum_voltage', u.unpack_one(" 0x26: + self.add_field('configured_voltage', u.unpack_one(" 0x4: + _error_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'OK', + 0x04: 'Bad read', + 0x05: 'Parity error', + 0x06: 'Single-bit error', + 0x07: 'Double-bit error', + 0x08: 'Multi-bit error', + 0x09: 'Nibble error', + 0x0A: 'Checksum error', + 0x0B: 'CRC error', + 0x0C: 'Corrected single-bit error', + 0x0D: 'Corrected error', + 0x0E: 'Uncorrectable error' + } + self.add_field('error_type', u.unpack_one("B"), unpack.for= mat_table("{}", _error_types)) + if self.length > 0x5: + _error_granularity_field =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Device level', + 0x04: 'Memory partition level' + } + self.add_field('error_granularity', u.unpack_one("B"), un= pack.format_table("{}", _error_granularity_field)) + if self.length > 0x6: + _error_operation_field =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Read', + 0x04: 'Write', + 0x05: 'Partial write' + } + self.add_field('error_operation', u.unpack_one("B"), unpac= k.format_table("{}", _error_operation_field)) + if self.length > 0x7: + self.add_field('vendor_syndrome', u.unpack_one(" 0xB: + self.add_field('memory_array_error_address', u.unpack_one(= " 0xF: + self.add_field('device_error_address', u.unpack_one(" 0x13: + self.add_field('error_resolution', u.unpack_one(" 0x4: + self.add_field('starting_address', u.unpack_one(" 0x8: + self.add_field('ending_address', u.unpack_one(" 0xC: + self.add_field('memory_array_handle', u.unpack_one(" 0xE: + self.add_field('partition_width', u.unpack_one("B")) + if self.length > 0xF: + # valid if starting_address =3D FFFF FFFF + if self.starting_address =3D=3D 0xFFFFFFFF: + self.add_field('extended_starting_address', u.unpack_o= ne(" 0x17: + self.add_field('extended_ending_address', u.unpack= _one(" 0x4: + self.add_field('starting_address', u.unpack_one(" 0x8: + self.add_field('ending_address', u.unpack_one(" 0xC: + self.add_field('memory_device_handle', u.unpack_one(" 0xE: + self.add_field('memory_array_mapped_address_handle', u.unp= ack_one(" 0x10: + self.add_field('partition_row_position', u.unpack_one("B")) + if self.length > 0x11: + self.add_field('interleave_position', u.unpack_one("B")) + if self.length > 0x12: + self.add_field('interleave_data_depth', u.unpack_one("B")) + if self.length > 0x13: + # valid if starting_address =3D FFFF FFFF + if self.starting_address =3D=3D 0xFFFFFFFF: + self.add_field('extended_starting_address', u.unpack_o= ne(" 0x1B: + self.add_field('extended_ending_address', u.unpack= _one(" 0x4: + _pointing_device_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Mouse', + 0x04: 'Track Ball', + 0x05: 'Track Point', + 0x06: 'Glide Point', + 0x07: 'Touch Pad', + 0x08: 'Touch Screen', + 0x09: 'Optical Sensor' + } + self.add_field('pointing_device_type', u.unpack_one("B"), = unpack.format_table("{}", _pointing_device_types)) + if self.length > 0x5: + _interfaces =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Serial', + 0x04: 'PS/2', + 0x05: 'Infared', + 0x06: 'HP-HIL', + 0x07: 'Bus mouse', + 0x08: 'ADB (Apple Desktop Bus)', + 0x09: 'Bus mouse DB-9', + 0x0A: 'Bus mouse micro-DIN', + 0x0B: 'USB' + } + self.add_field('interface', u.unpack_one("B"), unpack.form= at_table("{}", _interfaces)) + if self.length > 0x6: + self.add_field('num_buttons', u.unpack_one("B")) + except: + self.decodeFailure =3D True + print "Error parsing BuiltInPointingDevice" + import traceback + traceback.print_exc() + self.fini() + +class PortableBattery(SmbiosBaseStructure): + smbios_structure_type =3D 22 + + def __init__(self, u, sm): + super(PortableBattery, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + self.add_field('location', u.unpack_one("B"), self.fmtstr) + if self.length > 0x5: + self.add_field('manufacturer', u.unpack_one("B"), self.fmt= str) + if self.length > 0x6: + self.add_field('manufacturer_date', u.unpack_one("B"), sel= f.fmtstr) + if self.length > 0x7: + self.add_field('serial_number', u.unpack_one("B"), self.fm= tstr) + if self.length > 0x8: + self.add_field('device_name', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x9: + _device_chemistry =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Lead Acid', + 0x04: 'Nickel Cadmium', + 0x05: 'Nickel metal hydride', + 0x06: 'Lithium-ion', + 0x07: 'Zinc air', + 0x08: 'Lithium Polymer' + } + self.add_field('device_chemistry', u.unpack_one("B"), unpa= ck.format_table("{}", _device_chemistry)) + if self.length > 0xA: + self.add_field('design_capacity', u.unpack_one(" 0xC: + self.add_field('design_voltage', u.unpack_one(" 0xE: + self.add_field('sbds_version_number', u.unpack_one("B"), s= elf.fmtstr) + if self.length > 0xF: + self.add_field('max_error_battery_data', u.unpack_one("B")= , self.fmtstr) + if self.length > 0x10: + if self.serial_number =3D=3D 0: + self.add_field('sbds_serial_number', u.unpack_one(" 0x12: + if self.manufacturer_date =3D=3D 0: + self.add_field('sbds_manufacture_date', u.unpack_one("= 0x14: + if self.device_chemistry =3D=3D 0x02: + self.add_field('sbds_device_chemistry', u.unpack_one("= B"), self.fmtstr) + else: + u.skip(1) + if self.length > 0x15: + self.add_field('design_capacity_multiplier', u.unpack_one(= "B")) + if self.length > 0x16: + self.add_field('oem_specific', u.unpack_one(" 0x4: + self.add_field('capabilities', u.unpack_one("B")) + self.add_field('contains_watchdog_timer', bool(bitfields.g= etbits(self.capabilities, 5)), "capabilities[5]=3D{}") + _boot_option =3D { + 0b00: 'Reserved, do not use', + 0b01: 'Operating System', + 0b10: 'System utilities', + 0b11: 'Do not reboot' + } + self.add_field('boot_option_on_limit', bitfields.getbits(s= elf.capabilities, 4, 3), unpack.format_table("capabilities[4:3]=3D{}", _boo= t_option)) + self.add_field('boot_option_after_watchdog_reset', bitfiel= ds.getbits(self.capabilities, 2, 1), unpack.format_table("capabilities[2:1]= =3D{}", _boot_option)) + self.add_field('system_reset_enabled_by_user', bool(bitfie= lds.getbits(self.capabilities, 0)), "capabilities[0]=3D{}") + if self.length > 0x5: + self.add_field('reset_count', u.unpack_one(" 0x5: + self.add_field('reset_limit', u.unpack_one(" 0x9: + self.add_field('timer_interval', u.unpack_one(" 0xB: + self.add_field('timeout', u.unpack_one(" 0x4: + self.add_field('hardware_security_settings', u.unpack_one(= "B")) + _status =3D { + 0x00: 'Disabled', + 0x01: 'Enabled', + 0x02: 'Not Implemented', + 0x03: 'Unknown' + } + self.add_field('power_on_password_status', bitfields.getbi= ts(self.hardware_security_settings, 7, 6), unpack.format_table("hardware_se= curity_settings[7:6]=3D{}", _status)) + self.add_field('keyboard_password_status', bitfields.getbi= ts(self.hardware_security_settings, 5, 4), unpack.format_table("hardware_se= curity_settings[5:4]=3D{}", _status)) + self.add_field('admin_password_status', bitfields.getbits(= self.hardware_security_settings, 3, 2), unpack.format_table("hardware_secur= ity_settings0[3:2]=3D{}", _status)) + self.add_field('front_panel_reset_status', bitfields.getbi= ts(self.hardware_security_settings, 1, 0), unpack.format_table("hardware_se= curity_settings[1:0]=3D{}", _status)) + except: + self.decodeFailure =3D True + print "Error parsing HardwareSecurity" + import traceback + traceback.print_exc() + self.fini() + +class SystemPowerControls(SmbiosBaseStructure): + smbios_structure_type =3D 25 + + def __init__(self, u, sm): + super(SystemPowerControls, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + self.add_field('next_scheduled_poweron_month', u.unpack_on= e("B")) + self.add_field('next_scheduled_poweron_day_of_month', u.un= pack_one("B")) + self.add_field('next_scheduled_poweron_hour', u.unpack_one= ("B")) + self.add_field('next_scheduled_poweron_minute', u.unpack_o= ne("B")) + self.add_field('next_scheduled_poweron_second', u.unpack_o= ne("B")) + except: + self.decodeFailure =3D True + print "Error parsing SystemPowerControls" + import traceback + traceback.print_exc() + self.fini() + +class VoltageProbe(SmbiosBaseStructure): + smbios_structure_type =3D 26 + + def __init__(self, u, sm): + super(VoltageProbe, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + self.add_field('description', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x5: + self.add_field('location_and_status', u.unpack_one("B")) + _status =3D { + 0b001: 'Other', + 0b010: 'Unknown', + 0b011: 'OK', + 0b100: 'Non-critical', + 0b101: 'Critical', + 0b110: 'Non-recoverable' + } + _location =3D { + 0b00001: 'Other', + 0b00010: 'Unknown', + 0b00011: 'Processor', + 0b00100: 'Disk', + 0b00101: 'Peripheral Bay', + 0b00110: 'System Management Module', + 0b00111: 'Motherboard', + 0b01000: 'Memory Module', + 0b01001: 'Processor Module', + 0b01010: 'Power Unit', + 0b01011: 'Add-in Card' + } + self.add_field('status', bitfields.getbits(self.location_a= nd_status, 7, 5), unpack.format_table("location_and_status[7:5]=3D{}", _sta= tus)) + self.add_field('location', bitfields.getbits(self.location= _and_status, 4, 0), unpack.format_table("location_and_status[4:0]=3D{}", _l= ocation)) + if self.length > 0x6: + self.add_field('max_value', u.unpack_one(" 0x8: + self.add_field('min_value', u.unpack_one(" 0xA: + self.add_field('resolution', u.unpack_one(" 0xC: + self.add_field('tolerance', u.unpack_one(" 0xE: + self.add_field('accuracy', u.unpack_one(" 0x10: + self.add_field('oem_defined', u.unpack_one(" 0x14: + self.add_field('nominal_value', u.unpack_one(" 0x4: + self.add_field('temperature_probe_handle', u.unpack_one("<= H")) + if self.length > 0x6: + self.add_field('device_type_and_status', u.unpack_one("B")) + _status =3D { + 0b001: 'Other', + 0b010: 'Unknown', + 0b011: 'OK', + 0b100: 'Non-critical', + 0b101: 'Critical', + 0b110: 'Non-recoverable' + } + _type =3D { + 0b00001: 'Other', + 0b00010: 'Unknown', + 0b00011: 'Fan', + 0b00100: 'Centrifugal Blower', + 0b00101: 'Chip Fan', + 0b00110: 'Cabinet Fan', + 0b00111: 'Power Supply Fan', + 0b01000: 'Heat Pipe', + 0b01001: 'Integrated Refrigeration', + 0b10000: 'Active Cooling', + 0b10001: 'Passive Cooling' + } + self.add_field('status', bitfields.getbits(self.device_typ= e_and_status, 7, 5), unpack.format_table("device_type_and_status[7:5]=3D{}"= , _status)) + self.add_field('device_type', bitfields.getbits(self.devic= e_type_and_status, 4, 0), unpack.format_table("device_type_and_status[4:0]= =3D{}", _type)) + if self.length > 0x7: + self.add_field('cooling_unit_group', u.unpack_one("B")) + if self.length > 0x8: + self.add_field('OEM_defined', u.unpack_one(" 0xC: + self.add_field('nominal_speed', u.unpack_one(" 0xE: + self.add_field('description', u.unpack_one("B"), self.fmtst= r) + except: + self.decodeFailure =3D True + print "Error parsing CoolingDevice" + import traceback + traceback.print_exc() + self.fini() + +class TemperatureProbe(SmbiosBaseStructure): + smbios_structure_type =3D 28 + + def __init__(self, u, sm): + super(TemperatureProbe, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + self.add_field('description', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x5: + self.add_field('location_and_status', u.unpack_one("B")) + _status =3D { + 0b001: 'Other', + 0b010: 'Unknown', + 0b011: 'OK', + 0b100: 'Non-critical', + 0b101: 'Critical', + 0b110: 'Non-recoverable' + } + _location =3D { + 0b00001: 'Other', + 0b00010: 'Unknown', + 0b00011: 'Processor', + 0b00100: 'Disk', + 0b00101: 'Peripheral Bay', + 0b00110: 'System Management Module', + 0b00111: 'Motherboard', + 0b01000: 'Memory Module', + 0b01001: 'Processor Module', + 0b01010: 'Power Unit', + 0b01011: 'Add-in Card', + 0b01100: 'Front Panel Board', + 0b01101: 'Back Panel Board', + 0b01110: 'Power System Board', + 0b01111: 'Drive Back Plane' + } + self.add_field('status', bitfields.getbits(self.location_a= nd_status, 7, 5), unpack.format_table("location_and_status[7:5]=3D{}", _sta= tus)) + self.add_field('location', bitfields.getbits(self.location= _and_status, 4, 0), unpack.format_table("location_and_status[4:0]=3D{}", _l= ocation)) + if self.length > 0x6: + self.add_field('maximum_value', u.unpack_one(" 0x8: + self.add_field('minimum_value', u.unpack_one(" 0xA: + self.add_field('resolution', u.unpack_one(" 0xC: + self.add_field('tolerance', u.unpack_one(" 0xE: + self.add_field('accuracy', u.unpack_one(" 0x10: + self.add_field('OEM_defined', u.unpack_one(" 0x14: + self.add_field('nominal_value', u.unpack_one(" 0x4: + self.add_field('description', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x5: + self.add_field('location_and_status', u.unpack_one("B")) + _status =3D { + 0b001: 'Other', + 0b010: 'Unknown', + 0b011: 'OK', + 0b100: 'Non-critical', + 0b101: 'Critical', + 0b110: 'Non-recoverable' + } + _location =3D { + 0b00001: 'Other', + 0b00010: 'Unknown', + 0b00011: 'Processor', + 0b00100: 'Disk', + 0b00101: 'Peripheral Bay', + 0b00110: 'System Management Module', + 0b00111: 'Motherboard', + 0b01000: 'Memory Module', + 0b01001: 'Processor Module', + 0b01010: 'Power Unit', + 0b01011: 'Add-in Card', + 0b01100: 'Front Panel Board', + 0b01101: 'Back Panel Board', + 0b01110: 'Power System Board', + 0b01111: 'Drive Back Plane' + } + self.add_field('status', bitfields.getbits(self.location_a= nd_status, 7, 5), unpack.format_table("location_and_status[7:5]=3D{}", _sta= tus)) + self.add_field('location', bitfields.getbits(self.location= _and_status, 4, 0), unpack.format_table("location_and_status[4:0]=3D{}", _l= ocation)) + if self.length > 0x6: + self.add_field('maximum_value', u.unpack_one(" 0x8: + self.add_field('minimum_value', u.unpack_one(" 0xA: + self.add_field('resolution', u.unpack_one(" 0xC: + self.add_field('tolerance', u.unpack_one(" 0xE: + self.add_field('accuracy', u.unpack_one(" 0x10: + self.add_field('OEM_defined', u.unpack_one(" 0x14: + self.add_field('nominal_value', u.unpack_one(" 0x4: + self.add_field('manufacturer_name', u.unpack_one("B"), sel= f.fmtstr) + if self.length > 0x5: + self.add_field('connections', u.unpack_one("B")) + self.add_field('outbound_connection_enabled', bool(bitfiel= ds.getbits(self.connections, 1)), "connections[1]=3D{}") + self.add_field('inbound_connection_enabled', bool(bitfield= s.getbits(self.connections, 0)), "connections[0]=3D{}") + except: + self.decodeFailure =3D True + print "Error parsing OutOfBandRemoteAccess" + import traceback + traceback.print_exc() + self.fini() + +class BootIntegrityServicesEntryPoint(SmbiosBaseStructure): + smbios_structure_type =3D 31 + +class SystemBootInformation(SmbiosBaseStructure): + smbios_structure_type =3D 32 + + def __init__(self, u, sm): + super(SystemBootInformation, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0xA: + u.skip(6) + _boot_status =3D { + 0: 'No errors detected', + 1: 'No bootable media', + 2: '"normal" operating system failed to load', + 3: 'Firmware-detected hardware failure, including "unk= nown" failure types', + 4: 'Operating system-detected hardware failure', + 5: 'User-requested boot, usually through a keystroke', + 6: 'System security violation', + 7: 'Previously-requested image', + 8: 'System watchdog timer expired, causing the system = to reboot', + xrange(9,127): 'Reserved for future assignment', + xrange(128, 191): 'Vendor/OEM-specific implementations= ', + xrange(192, 255): 'Product-specific implementations' + } + self.add_field('boot_status', u.unpack_one("B"), unpack.fo= rmat_table("{}", _boot_status)) + except: + self.decodeFailure =3D True + print "Error parsing SystemBootInformation" + import traceback + traceback.print_exc() + self.fini() + +class MemoryErrorInfo64Bit(SmbiosBaseStructure): + smbios_structure_type =3D 33 + + def __init__(self, u, sm): + super(MemoryErrorInfo64Bit, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + _error_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'OK', + 0x04: 'Bad read', + 0x05: 'Parity error', + 0x06: 'Single-bit error', + 0x07: 'Double-bit error', + 0x08: 'Multi-bit error', + 0x09: 'Nibble error', + 0x0A: 'Checksum error', + 0x0B: 'CRC error', + 0x0C: 'Corrected single-bit error', + 0x0D: 'Corrected error', + 0x0E: 'Uncorrectable error' + } + self.add_field('error_type', u.unpack_one("B"), unpack.for= mat_table("{}", _error_types)) + if self.length > 0x5: + _error_granularity_field =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Device level', + 0x04: 'Memory partition level' + } + self.add_field('error_granularity', u.unpack_one("B"), un= pack.format_table("{}", _error_granularity_field)) + if self.length > 0x6: + _error_operation_field =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Read', + 0x04: 'Write', + 0x05: 'Partial write' + } + self.add_field('error_operation', u.unpack_one("B"), unpac= k.format_table("{}", _error_operation_field)) + if self.length > 0x7: + self.add_field('vendor_syndrome', u.unpack_one(" 0xB: + self.add_field('memory_array_error_address', u.unpack_one(= " 0xF: + self.add_field('device_error_address', u.unpack_one(" 0x13: + self.add_field('error_resolution', u.unpack_one(" 0x4: + self.add_field('description', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x5: + _type =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'National Semiconductor LM75', + 0x04: 'National Semiconductor LM78', + 0x05: 'National Semiconductor LM79', + 0x06: 'National Semiconductor LM80', + 0x07: 'National Semiconductor LM81', + 0x08: 'Analog Devices ADM9240', + 0x09: 'Dallas Semiconductor DS1780', + 0x0A: 'Maxim 1617', + 0x0B: 'Genesys GL518SM', + 0x0C: 'Winbond W83781D', + 0x0D: 'Holtek HT82H791' + } + self.add_field('device_type', u.unpack_one("B"), unpack.fo= rmat_table("{}", _type)) + if self.length > 0x6: + self.add_field('address', u.unpack_one(" 0xA: + _address_type =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'I/O Port', + 0x04: 'Memory', + 0x05: 'SM Bus' + } + self.add_field('address_type', u.unpack_one("B"), unpack.= format_table("{}", _address_type)) + except: + self.decodeFailure =3D True + print "Error parsing ManagementDevice" + import traceback + traceback.print_exc() + self.fini() + +class ManagementDeviceComponent(SmbiosBaseStructure): + smbios_structure_type =3D 35 + + def __init__(self, u, sm): + super(ManagementDeviceComponent, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + self.add_field('description', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x5: + self.add_field('management_device_handle', u.unpack_one("<= H")) + if self.length > 0x7: + self.add_field('component_handle', u.unpack_one(" 0x9: + self.add_field('threshold_handle', u.unpack_one(" 0x4: + self.add_field('lower_threshold_noncritical', u.unpack_one= (" 0x6: + self.add_field('upper_threshold_noncritical', u.unpack_one= (" 0x8: + self.add_field('lower_threshold_critical', u.unpack_one("<= H")) + if self.length > 0xA: + self.add_field('upper_threshold_critical', u.unpack_one("<= H")) + if self.length > 0xC: + self.add_field('lower_threshold_nonrecoverable', u.unpack_= one(" 0xE: + self.add_field('upper_threshold_nonrecoverable', u.unpack_= one(" 0x4: + _channel_type =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'RamBus', + 0x04: 'SyncLink' + } + self.add_field('channel_type', u.unpack_one("B"), unpack.f= ormat_table("{}", _channel_type)) + if self.length > 0x6: + self.add_field('max_channel_load', u.unpack_one("B")) + if self.length > 0x8: + self.add_field('memory_device_count', u.unpack_one("B")) + if self.length > 0xA: + self.add_field('memory_device_load', u.unpack_one("B")) + if self.length > 0xC: + self.add_field('memory_device_handle', u.unpack_one(" 0x4: + self.add_field('power_unit_group', u.unpack_one("B")) + if self.length > 0x5: + self.add_field('location', u.unpack_one("B"), self.fmtstr) + if self.length > 0x6: + self.add_field('device_name', u.unpack_one("B"), self.fmts= tr) + if self.length > 0x7: + self.add_field('manufacturer', u.unpack_one("B"), self.fmt= str) + if self.length > 0x8: + self.add_field('serial_number', u.unpack_one("B"), self.fm= tstr) + if self.length > 0x9: + self.add_field('asset_tag', u.unpack_one("B"), self.fmtstr) + if self.length > 0xA: + self.add_field('model_part_number', u.unpack_one("B"), sel= f.fmtstr) + if self.length > 0xB: + self.add_field('revision_level', u.unpack_one("B"), self.f= mtstr) + if self.length > 0xC: + self.add_field('max_power_capacity', u.unpack_one(" 0xE: + self.add_field('power_supply_characteristics', u.unpack_on= e(" 0x10: + self.add_field('input_voltage_probe_handle', u.unpack_one(= " 0x12: + self.add_field('cooling_device_handle', u.unpack_one(" 0x14: + self.add_field('input_current_probe_handle', u.unpack_one(= " 0x4: + self.add_field('num_additional_information_entries', u.unp= ack_one("B")) + if self.length > 0x5: + self.add_field('additional_information_entry_length', u.un= pack_one("B")) + self.add_field('referenced_handle', u.unpack_one(" 0x4: + self.add_field('reference_designation', u.unpack_one("B"),= self.fmtstr) + if self.length > 0x5: + self.add_field('device_type', u.unpack_one("B")) + self.add_field('device_enabled', bool(bitfields.getbits(se= lf.device_type, 7)), "device_type[7]=3D{}") + _device_types =3D { + 0x01: 'Other', + 0x02: 'Unknown', + 0x03: 'Video', + 0x04: 'SCSI Controller', + 0x05: 'Ethernet', + 0x06: 'Token Ring', + 0x07: 'Sound', + 0x08: 'PATA Controller', + 0x09: 'SATA Controller', + 0x0A: 'SAS Controller' + } + self.add_field('type_of_device', bitfields.getbits(self.de= vice_type, 6, 0), unpack.format_table("device_type[6:0]=3D{}", _device_type= s)) + if self.length > 0x6: + self.add_field('device_type_instance', u.unpack_one("B")) + if self.length > 0x7: + self.add_field('segment_group_number', u.unpack_one(" 0x9: + self.add_field('bus_number', u.unpack_one("B"), self.fmtst= r) + if self.length > 0xA: + self.add_field('device_and_function_number', u.unpack_one(= "B")) + self.add_field('device_number', bitfields.getbits(self.dev= ice_type, 7, 3), "device_and_function_number[7:3]=3D{}") + self.add_field('function_number', bitfields.getbits(self.d= evice_type, 2, 0), "device_and_function_number[2:0]=3D{}") + except: + self.decodeFailure =3D True + print "Error parsing OnboardDevicesExtendedInformation" + import traceback + traceback.print_exc() + self.fini() + +class ManagementControllerHostInterface(SmbiosBaseStructure): + smbios_structure_type =3D 42 + + def __init__(self, u, sm): + super(ManagementControllerHostInterface, self).__init__(u, sm) + u =3D self.u + try: + if self.length > 0x4: + _interface_types =3D { + 0x00: 'Reserved', + 0x01: 'Reserved', + 0x02: 'KCS: Keyboard Controller Style', + 0x03: '8250 UART Register Compatible', + 0x04: '16450 UART Register Compatible', + 0x05: '16550/16550A UART Register Compatible', + 0x06: '16650/16650A UART Register Compatible', + 0x07: '16750/16750A UART Register Compatible', + 0x08: '16850/16850A UART Register Compatible', + 0xF0: 'OEM' + } + self.add_field('interface_type', u.unpack_one("B"), unpack= .format_table("{}", _interface_types)) + if self.length > 0x5: + self.add_field('mc_host_interface_data', u.unpack_rest(), = self.fmtstr) + except: + self.decodeFailure =3D True + print "Error parsing ManagementControllerHostInterface" + import traceback + traceback.print_exc() + self.fini() + +class Inactive(SmbiosBaseStructure): + smbios_structure_type =3D 126 + + def __init__(self, u, sm): + super(Inactive, self).__init__(u, sm) + self.fini() + +class EndOfTable(SmbiosBaseStructure): + smbios_structure_type =3D 127 + + def __init__(self, u, sm): + super(EndOfTable, self).__init__(u, sm) + self.fini() + +class SmbiosStructureUnknown(SmbiosBaseStructure): + smbios_structure_type =3D None + + def __init__(self, u, sm): + super(SmbiosStructureUnknown, self).__init__(u, sm) + self.fini() + +_smbios_structures =3D [ + BIOSInformation, + SystemInformation, + BaseboardInformation, + SystemEnclosure, + ProcessorInformation, + MemoryControllerInformation, + MemoryModuleInformation, + CacheInformation, + PortConnectorInfo, + SystemSlots, + OnBoardDevicesInformation, + OEMStrings, + SystemConfigOptions, + BIOSLanguageInformation, + GroupAssociations, + SystemEventLog, + PhysicalMemoryArray, + MemoryDevice, + MemoryErrorInfo32Bit, + MemoryArrayMappedAddress, + MemoryDeviceMappedAddress, + BuiltInPointingDevice, + PortableBattery, + SystemReset, + HardwareSecurity, + SystemPowerControls, + VoltageProbe, + CoolingDevice, + TemperatureProbe, + ElectricalCurrentProbe, + OutOfBandRemoteAccess, + BootIntegrityServicesEntryPoint, + SystemBootInformation, + MemoryErrorInfo64Bit, + ManagementDevice, + ManagementDeviceComponent, + ManagementDeviceThresholdData, + MemoryChannel, + IPMIDeviceInformation, + SystemPowerSupply, + AdditionalInformation, + OnboardDevicesExtendedInformation, + ManagementControllerHostInterface, + Inactive, + EndOfTable, + SmbiosStructureUnknown, # Must always come last +] + +def log_smbios_info(): + with redirect.logonly(): + try: + sm =3D SMBIOS() + print + if sm is None: + print "No SMBIOS structures found" + return + output =3D {} + known_types =3D (0, 1) + for sm_struct in sm.structures: + if sm_struct.type in known_types: + output.setdefault(sm_struct.type, []).append(sm_struct) + if len(output) =3D=3D len(known_types): + break + + print "SMBIOS information:" + for key in sorted(known_types): + for s in output.get(key, ["No structure of type {} found".= format(key)]): + print ttypager._wrap("{}: {}".format(key, s)) + except: + print "Error parsing SMBIOS information:" + import traceback + traceback.print_exc() + +def dump_raw(): + try: + sm =3D SMBIOS() + if sm: + s =3D "SMBIOS -- Raw bytes and structure decode.\n\n" + + s +=3D str(sm.header) + '\n' + s +=3D bits.dumpmem(sm._header_memory) + '\n' + + s +=3D "Raw bytes for the SMBIOS structures\n" + s +=3D bits.dumpmem(sm._structure_memory) + '\n' + + for sm_struct in sm.structures: + s +=3D str(sm_struct) + '\n' + s +=3D bits.dumpmem(sm_struct.raw_data) + + s +=3D "Strings:\n" + for n in range(1, len(getattr(sm_struct, "strings", [])) += 1): + s +=3D str(sm_struct.fmtstr(n)) + '\n' + s +=3D bits.dumpmem(sm_struct.raw_strings) + '\n' + else: + s =3D "No SMBIOS structures found" + ttypager.ttypager_wrap(s, indent=3DFalse) + except: + print "Error parsing SMBIOS information:" + import traceback + traceback.print_exc() + +def dump(): + try: + sm =3D SMBIOS() + if sm: + s =3D str(sm) + else: + s =3D "No SMBIOS structures found" + ttypager.ttypager_wrap(s, indent=3DFalse) + except: + print "Error parsing SMBIOS information:" + import traceback + traceback.print_exc() + +def annex_a_conformance(): + try: + sm =3D SMBIOS() + + # check: 1. The table anchor string "_SM_" is present in the addre= ss range 0xF0000 to 0xFFFFF on a 16-byte bound + + def table_entry_point_verification(): + ''' Verify table entry-point''' + if (sm.header.length < 0x1F): + print "Failure: Table entry-point - The entry-point Length= must be at least 0x1F" + if sm.header.checksum !=3D 0: + print "Failure: Table entry-point - The entry-point checks= um must evaluate to 0" + if ((sm.header.major_version < 2) and (sm.header.minor_version= < 4)): + print "Failure: Table entry-point - SMBIOS version must be= at least 2.4" + if (sm.header.intermediate_anchor_string =3D=3D '_DMI_'): + print "Failure: Table entry-point - The Intermediate Ancho= r String must be '_DMI_'" + if (sm.header.intermediate_checksum !=3D 0): + print "Failure: Table entry-point - The Intermediate check= sum must evaluate to 0" + + #check: 3. The structure-table is traversable and conforms to the = entry-point specifications: + + def req_structures(): + '''Checks for required structures and corresponding data''' + types_present =3D [sm.structures[x].smbios_structure_type for = x in range(len(sm.structures))] + required =3D [0, 1, 4, 7, 9, 16, 17, 19, 31, 32] + for s in required: + if s not in set(types_present): + print "Failure: Type {} required but not found".format= (s) + + else: + if s =3D=3D 0: + if types_present.count(s) > 1: + print "Failure: Type {} - One and only one str= ucture of this type must be present.".format(s) + if sm.structure_type(s).length < 0x18: + print "Failure: Type {} - The structure Length= field must be at least 0x18".format(s) + if sm.structure_type(s).version is None: + print "Failure: Type {} - BIOS Version string = must be present and non-null.".format(s) + if sm.structure_type(s).release_date is None: + print "Failure: Type {} - BIOS Release Date st= ring must be present, non-null, and include a 4-digit year".format(s) + if bitfields.getbits(sm.structure_type(s).characte= ristics, 3, 0) !=3D 0 or bitfields.getbits(sm.structure_type(s).characteris= tics, 31, 4) =3D=3D 0: + print "Failure: Type {} - BIOS Characteristics= : bits 3:0 must all be 0, and at least one of bits 31:4 must be set to 1.".= format(s) + elif s =3D=3D 1: + if types_present.count(s) > 1: + print "Failure: Type {} - One and only one str= ucture of this type must be present.".format(s) + if sm.structure_type(s).length < 0x1B: + print "Failure: Type {} - The structure Length= field must be at least 0x1B".format(s) + if sm.structure_type(s).manufacturer =3D=3D None: + print "Failure: Type {} - Manufacturer string = must be present and non-null.".format(s) + if sm.structure_type(s).product_name =3D=3D None: + print "Failure: Type {} - Product Name string = must be present and non-null".format(s) + if sm.structure_type(s).uuid =3D=3D '00000000 0000= 0000' and sm.structure_type(s).uuid =3D=3D 'FFFFFFFF FFFFFFFF': + print "Failure: Type {} - UUID field must be n= either 00000000 00000000 nor FFFFFFFF FFFFFFFF.".format(s) + if sm.structure_type(s).wakeup_type =3D=3D 00 and = sm.structure_type(s).wakeup_type =3D=3D 0x02: + print "Failure: Type {} - Wake-up Type field m= ust be neither 00h (Reserved) nor 02h (Unknown).".format(s) + # continue for remaining required types + + # check remaining conformance guidelines + + table_entry_point_verification() + req_structures() + except: + print "Error checking ANNEX A conformance guidelines" + import traceback + traceback.print_exc() diff --git a/tests/avocado/acpi-bits/bits-tests/testacpi.py2 b/tests/avocad= o/acpi-bits/bits-tests/testacpi.py2 new file mode 100644 index 0000000000..9ec452f330 --- /dev/null +++ b/tests/avocado/acpi-bits/bits-tests/testacpi.py2 @@ -0,0 +1,283 @@ +# Copyright (c) 2015, Intel Corporation +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are m= et: +# +# * Redistributions of source code must retain the above copyright not= ice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright = notice, +# this list of conditions and the following disclaimer in the docume= ntation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contrib= utors +# may be used to endorse or promote products derived from this softw= are +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIA= BLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL D= AMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVI= CES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED = AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF= THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests for ACPI""" + +import acpi +import bits +import bits.mwait +import struct +import testutil +import testsuite +import time + +def register_tests(): + testsuite.add_test("ACPI _MAT (Multiple APIC Table Entry) under Proces= sor objects", test_mat, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI _PSS (Pstate) table conformance tests", test_= pss, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI _PSS (Pstate) runtime tests", test_pstates, s= ubmenu=3D"ACPI Tests") + testsuite.add_test("ACPI DSDT (Differentiated System Description Table= )", test_dsdt, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI FACP (Fixed ACPI Description Table)", test_fa= cp, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI HPET (High Precision Event Timer Table)", tes= t_hpet, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI MADT (Multiple APIC Description Table)", test= _apic, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI MPST (Memory Power State Table)", test_mpst, = submenu=3D"ACPI Tests") + testsuite.add_test("ACPI RSDP (Root System Description Pointer Structu= re)", test_rsdp, submenu=3D"ACPI Tests") + testsuite.add_test("ACPI XSDT (Extended System Description Table)", te= st_xsdt, submenu=3D"ACPI Tests") + +def test_mat(): + cpupaths =3D acpi.get_cpupaths() + apic =3D acpi.parse_apic() + procid_apicid =3D apic.procid_apicid + uid_x2apicid =3D apic.uid_x2apicid + for cpupath in cpupaths: + # Find the ProcId defined by the processor object + processor =3D acpi.evaluate(cpupath) + # Find the UID defined by the processor object's _UID method + uid =3D acpi.evaluate(cpupath + "._UID") + mat_buffer =3D acpi.evaluate(cpupath + "._MAT") + if mat_buffer is None: + continue + # Process each _MAT subtable + mat =3D acpi._MAT(mat_buffer) + for index, subtable in enumerate(mat): + if subtable.subtype =3D=3D acpi.MADT_TYPE_LOCAL_APIC: + if subtable.flags.bits.enabled: + testsuite.test("{} Processor declaration ProcId =3D _M= AT ProcId".format(cpupath), processor.ProcId =3D=3D subtable.proc_id) + testsuite.print_detail("{} ProcId ({:#02x}) !=3D _MAT = ProcId ({:#02x})".format(cpupath, processor.ProcId, subtable.proc_id)) + testsuite.print_detail("Processor Declaration: {}".for= mat(processor)) + testsuite.print_detail("_MAT entry[{}]: {}".format(ind= ex, subtable)) + if testsuite.test("{} with local APIC in _MAT has loca= l APIC in MADT".format(cpupath), processor.ProcId in procid_apicid): + testsuite.test("{} ApicId derived using Processor = declaration ProcId =3D _MAT ApicId".format(cpupath), procid_apicid[processo= r.ProcId] =3D=3D subtable.apic_id) + testsuite.print_detail("{} ApicId derived from MAD= T ({:#02x}) !=3D _MAT ApicId ({:#02x})".format(cpupath, procid_apicid[proce= ssor.ProcId], subtable.apic_id)) + testsuite.print_detail("Processor Declaration: {}"= .format(processor)) + testsuite.print_detail("_MAT entry[{}]: {}".format= (index, subtable)) + if subtable.subtype =3D=3D acpi.MADT_TYPE_LOCAL_X2APIC: + if subtable.flags.bits.enabled: + if testsuite.test("{} with x2Apic in _MAT has _UID".fo= rmat(cpupath), uid is not None): + testsuite.test("{}._UID =3D _MAT UID".format(cpupa= th), uid =3D=3D subtable.uid) + testsuite.print_detail("{}._UID ({:#x}) !=3D _MAT = UID ({:#x})".format(cpupath, uid, subtable.uid)) + testsuite.print_detail("_MAT entry[{}]: {}".format= (index, subtable)) + if testsuite.test("{} with _MAT x2Apic has x2Apic in M= ADT".format(cpupath), subtable.uid in uid_x2apicid): + testsuite.test("{} x2ApicId derived from MADT usin= g UID =3D _MAT x2ApicId".format(cpupath), uid_x2apicid[subtable.uid] =3D=3D= subtable.x2apicid) + testsuite.print_detail("{} x2ApicId derived from M= ADT ({:#02x}) !=3D _MAT x2ApicId ({:#02x})".format(cpupath, uid_x2apicid[su= btable.uid], subtable.x2apicid)) + testsuite.print_detail("_MAT entry[{}]: {}".format= (index, subtable)) + +def test_pss(): + uniques =3D acpi.parse_cpu_method("_PSS") + # We special-case None here to avoid a double-failure for CPUs without= a _PSS + testsuite.test("_PSS must be identical for all CPUs", len(uniques) <= =3D 1 or (len(uniques) =3D=3D 2 and None in uniques)) + for pss, cpupaths in uniques.iteritems(): + if not testsuite.test("_PSS must exist", pss is not None): + testsuite.print_detail(acpi.factor_commonprefix(cpupaths)) + testsuite.print_detail('No _PSS exists') + continue + + if not testsuite.test("_PSS must not be empty", pss.pstates): + testsuite.print_detail(acpi.factor_commonprefix(cpupaths)) + testsuite.print_detail('_PSS is empty') + continue + + testsuite.print_detail(acpi.factor_commonprefix(cpupaths)) + for index, pstate in enumerate(pss.pstates): + testsuite.print_detail("P[{}]: {}".format(index, pstate)) + + testsuite.test("_PSS must contain at most 16 Pstates", len(pss.pst= ates) <=3D 16) + testsuite.test("_PSS must have no duplicate Pstates", len(pss.psta= tes) =3D=3D len(set(pss.pstates))) + + frequencies =3D [p.core_frequency for p in pss.pstates] + testsuite.test("_PSS must list Pstates in descending order of freq= uency", frequencies =3D=3D sorted(frequencies, reverse=3DTrue)) + + testsuite.test("_PSS must have Pstates with no duplicate frequenci= es", len(frequencies) =3D=3D len(set(frequencies))) + + dissipations =3D [p.power for p in pss.pstates] + testsuite.test("_PSS must list Pstates in descending order of powe= r dissipation", dissipations =3D=3D sorted(dissipations, reverse=3DTrue)) + +def test_pstates(): + """Execute and verify frequency for each Pstate in the _PSS""" + IA32_PERF_CTL =3D 0x199 + with bits.mwait.use_hint(), bits.preserve_msr(IA32_PERF_CTL): + cpupath_procid =3D acpi.find_procid() + cpupath_uid =3D acpi.find_uid() + apic =3D acpi.parse_apic() + procid_apicid =3D apic.procid_apicid + uid_x2apicid =3D apic.uid_x2apicid + def cpupath_apicid(cpupath): + if procid_apicid is not None: + procid =3D cpupath_procid.get(cpupath, None) + if procid is not None: + apicid =3D procid_apicid.get(procid, None) + if apicid is not None: + return apicid + if uid_x2apicid is not None: + uid =3D cpupath_uid.get(cpupath, None) + if uid is not None: + apicid =3D uid_x2apicid.get(uid, None) + if apicid is not None: + return apicid + return bits.cpus()[0] + + bclk =3D testutil.adjust_to_nearest(bits.bclk(), 100.0/12) * 10000= 00 + + uniques =3D acpi.parse_cpu_method("_PSS") + for pss, cpupaths in uniques.iteritems(): + if not testsuite.test("_PSS must exist", pss is not None): + testsuite.print_detail(acpi.factor_commonprefix(cpupaths)) + testsuite.print_detail('No _PSS exists') + continue + + for n, pstate in enumerate(pss.pstates): + for cpupath in cpupaths: + apicid =3D cpupath_apicid(cpupath) + if apicid is None: + print 'Failed to find apicid for cpupath {}'.forma= t(cpupath) + continue + bits.wrmsr(apicid, IA32_PERF_CTL, pstate.control) + + # Detecting Turbo frequency requires at least 2 pstates + # since turbo frequency =3D max non-turbo frequency + 1 + turbo =3D False + if len(pss.pstates) >=3D 2: + turbo =3D (n =3D=3D 0 and pstate.core_frequency =3D=3D= (pss.pstates[1].core_frequency + 1)) + if turbo: + # Needs to busywait, not sleep + start =3D time.time() + while (time.time() - start < 2): + pass + + for duration in (0.1, 1.0): + frequency_data =3D bits.cpu_frequency(duration) + # Abort the test if no cpu frequency is not available + if frequency_data is None: + continue + aperf =3D frequency_data[1] + aperf =3D testutil.adjust_to_nearest(aperf, bclk/2) + aperf =3D int(aperf / 1000000) + if turbo: + if aperf >=3D pstate.core_frequency: + break + else: + if aperf =3D=3D pstate.core_frequency: + break + + if turbo: + testsuite.test("P{}: Turbo measured frequency {} >=3D = expected {} MHz".format(n, aperf, pstate.core_frequency), aperf >=3D pstate= .core_frequency) + else: + testsuite.test("P{}: measured frequency {} MHz =3D=3D = expected {} MHz".format(n, aperf, pstate.core_frequency), aperf =3D=3D psta= te.core_frequency) + +def test_psd_thread_scope(): + uniques =3D acpi.parse_cpu_method("_PSD") + if not testsuite.test("_PSD (P-State Dependency) must exist for each p= rocessor", None not in uniques): + testsuite.print_detail(acpi.factor_commonprefix(uniques[None])) + testsuite.print_detail('No _PSD exists') + return + unique_num_dependencies =3D {} + unique_num_entries =3D {} + unique_revision =3D {} + unique_domain =3D {} + unique_coordination_type =3D {} + unique_num_processors =3D {} + for value, cpupaths in uniques.iteritems(): + unique_num_dependencies.setdefault(len(value.dependencies), []).ex= tend(cpupaths) + unique_num_entries.setdefault(value.dependencies[0].num_entries, [= ]).extend(cpupaths) + unique_revision.setdefault(value.dependencies[0].revision, []).ext= end(cpupaths) + unique_domain.setdefault(value.dependencies[0].domain, []).extend(= cpupaths) + unique_coordination_type.setdefault(value.dependencies[0].coordina= tion_type, []).extend(cpupaths) + unique_num_processors.setdefault(value.dependencies[0].num_process= ors, []).extend(cpupaths) + def detail(d, fmt): + for value, cpupaths in sorted(d.iteritems(), key=3D(lambda (k,v): = v)): + testsuite.print_detail(acpi.factor_commonprefix(cpupaths)) + testsuite.print_detail(fmt.format(value)) + + testsuite.test('Dependency count for each processor must be 1', unique= _num_dependencies.keys() =3D=3D [1]) + detail(unique_num_dependencies, 'Dependency count for each processor = =3D {} (Expected 1)') + testsuite.test('_PSD.num_entries must be 5', unique_num_entries.keys()= =3D=3D [5]) + detail(unique_num_entries, 'num_entries =3D {} (Expected 5)') + testsuite.test('_PSD.revision must be 0', unique_revision.keys() =3D= =3D [0]) + detail(unique_revision, 'revision =3D {}') + testsuite.test('_PSD.coordination_type must be 0xFE (HW_ALL)', unique_= coordination_type.keys() =3D=3D [0xfe]) + detail(unique_coordination_type, 'coordination_type =3D {:#x} (Expecte= d 0xFE HW_ALL)') + testsuite.test('_PSD.domain must be unique (thread-scoped) for each pr= ocessor', len(unique_domain) =3D=3D len(acpi.get_cpupaths())) + detail(unique_domain, 'domain =3D {:#x} (Expected a unique value for e= ach processor)') + testsuite.test('_PSD.num_processors must be 1', unique_num_processors.= keys() =3D=3D [1]) + detail(unique_num_processors, 'num_processors =3D {} (Expected 1)') + +def test_table_checksum(data): + csum =3D sum(ord(c) for c in data) % 0x100 + testsuite.test('ACPI table cumulative checksum must equal 0', csum =3D= =3D 0) + testsuite.print_detail("Cumulative checksum =3D {} (Expected 0)".forma= t(csum)) + +def test_apic(): + data =3D acpi.get_table("APIC") + if data is None: + return + test_table_checksum(data) + apic =3D acpi.parse_apic() + +def test_dsdt(): + data =3D acpi.get_table("DSDT") + if data is None: + return + test_table_checksum(data) + +def test_facp(): + data =3D acpi.get_table("FACP") + if data is None: + return + test_table_checksum(data) + facp =3D acpi.parse_facp() + +def test_hpet(): + data =3D acpi.get_table("HPET") + if data is None: + return + test_table_checksum(data) + hpet =3D acpi.parse_hpet() + +def test_mpst(): + data =3D acpi.get_table("MPST") + if data is None: + return + test_table_checksum(data) + mpst =3D acpi.MPST(data) + +def test_rsdp(): + data =3D acpi.get_table("RSD PTR ") + if data is None: + return + + # Checksum the first 20 bytes per ACPI 1.0 + csum =3D sum(ord(c) for c in data[:20]) % 0x100 + testsuite.test('ACPI 1.0 table first 20 bytes cummulative checksum mus= t equal 0', csum =3D=3D 0) + testsuite.print_detail("Cummulative checksum =3D {} (Expected 0)".form= at(csum)) + + test_table_checksum(data) + rsdp =3D acpi.parse_rsdp() + +def test_xsdt(): + data =3D acpi.get_table("XSDT") + if data is None: + return + test_table_checksum(data) + xsdt =3D acpi.parse_xsdt() diff --git a/tests/avocado/acpi-bits/bits-tests/testcpuid.py2 b/tests/avoca= do/acpi-bits/bits-tests/testcpuid.py2 new file mode 100644 index 0000000000..ac55d912e1 --- /dev/null +++ b/tests/avocado/acpi-bits/bits-tests/testcpuid.py2 @@ -0,0 +1,83 @@ +# Copyright (c) 2012, Intel Corporation +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are m= et: +# +# * Redistributions of source code must retain the above copyright not= ice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright = notice, +# this list of conditions and the following disclaimer in the docume= ntation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contrib= utors +# may be used to endorse or promote products derived from this softw= are +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIA= BLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL D= AMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVI= CES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED = AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF= THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests and helpers for CPUID.""" + +import bits +import testsuite +import testutil + +def cpuid_helper(function, index=3DNone, shift=3D0, mask=3D~0, eax_mask=3D= ~0, ebx_mask=3D~0, ecx_mask=3D~0, edx_mask=3D~0): + if index is None: + index =3D 0 + indexdesc =3D "" + else: + indexdesc =3D " index {0:#x}".format(index) + + def find_mask(m): + if m =3D=3D ~0: + return mask + return m + masks =3D map(find_mask, [eax_mask, ebx_mask, ecx_mask, edx_mask]) + + uniques =3D {} + for cpu in bits.cpus(): + regs =3D bits.cpuid_result(*[(r >> shift) & m for r, m in zip(bits= .cpuid(cpu, function, index), masks)]) + uniques.setdefault(regs, []).append(cpu) + + desc =3D ["CPUID function {:#x}{}".format(function, indexdesc)] + + if shift !=3D 0: + desc.append("Register values have been shifted by {}".format(shift= )) + if mask !=3D ~0 or eax_mask !=3D ~0 or ebx_mask !=3D ~0 or ecx_mask != =3D ~0 or edx_mask !=3D ~0: + desc.append("Register values have been masked:") + shifted_masks =3D bits.cpuid_result(*[m << shift for m in masks]) + desc.append("Masks: eax=3D{eax:#010x} ebx=3D{ebx:#010x} = ecx=3D{ecx:#010x} edx=3D{edx:#010x}".format(**shifted_masks._asdict())) + + if len(uniques) > 1: + regvalues =3D zip(*uniques.iterkeys()) + common_masks =3D bits.cpuid_result(*map(testutil.find_common_mask,= regvalues)) + common_values =3D bits.cpuid_result(*[v[0] & m for v, m in zip(reg= values, common_masks)]) + desc.append('Register values are not unique across all logical pro= cessors') + desc.append("Common bits: eax=3D{eax:#010x} ebx=3D{ebx:#010x} = ecx=3D{ecx:#010x} edx=3D{edx:#010x}".format(**common_values._asdict())) + desc.append("Mask of common bits: {eax:#010x} {ebx:#010x} = {ecx:#010x} {edx:#010x}".format(**common_masks._asdict())) + + for regs in sorted(uniques.iterkeys()): + cpus =3D uniques[regs] + desc.append("Register value: eax=3D{eax:#010x} ebx=3D{ebx:#010x} = ecx=3D{ecx:#010x} edx=3D{edx:#010x}".format(**regs._asdict())) + desc.append("On {0} CPUs: {1}".format(len(cpus), testutil.apicid_l= ist(cpus))) + + return uniques, desc + +def test_cpuid_consistency(text, function, index=3DNone, shift=3D0, mask= =3D~0, eax_mask=3D~0, ebx_mask=3D~0, ecx_mask=3D~0, edx_mask=3D~0): + uniques, desc =3D cpuid_helper(function, index, shift, mask, eax_mask,= ebx_mask, ecx_mask, edx_mask) + desc[0] +=3D " Consistency Check" + if text: + desc.insert(0, text) + status =3D testsuite.test(desc[0], len(uniques) =3D=3D 1) + for line in desc[1:]: + testsuite.print_detail(line) + return status --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222356; cv=none; d=zohomail.com; s=zohoarc; b=BeiUwTc4AuA00kJR8+f2YhXhYwFL1AHLnVWQZOMFV06nXGNov9idI/ClHVyNBI6Gt2HlP7cbKZpxn3rCGO6b+SYC+NFhY3gYuUcMcyHf2x0XJXYxCwjDRmwx3kHfczKGMayTwJydqdXckA3SJgf+8rCZ3HwL8G+De4FijfZw+Mw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222356; 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=lZrzez510xiVz7CEUkck5REzpmtbqexQFYk8M50bGII=; b=IYzo7Msic1IPF7yfracqDFlXBp0BiGohhw46D7278EPvpIWJWXbQHXBTwluWwDO/5KTai/xs+RhqxAVKnQMPN1pDNsBM3hd+M4C3MHcbLyaUh1Ks4Y4LsWJMc9gQj5DBZW1wCAM66CUD70XKQNdFMiYnlP4Hje86EfYr3Fcg3VE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667222356733644.2497015931378; Mon, 31 Oct 2022 06:19:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGd-00025s-6f; Mon, 31 Oct 2022 08:51:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGJ-00016Y-Mo for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGE-0002HT-Lv for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:31 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-97-8gg1oy2NOgG5oIXGCAC0Vg-1; Mon, 31 Oct 2022 08:51:24 -0400 Received: by mail-wr1-f71.google.com with SMTP id p7-20020adfba87000000b0022cc6f805b1so3046053wrg.21 for ; Mon, 31 Oct 2022 05:51:24 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id n2-20020a7bc5c2000000b003c6c5a5a651sm7100417wmk.28.2022.10.31.05.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220685; 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=lZrzez510xiVz7CEUkck5REzpmtbqexQFYk8M50bGII=; b=BvxlrDBvbJ/k9mfpcm5PdK1ULnnaVuSqMuoF0p7nozIzpkw5ne3LHA+eGvEyxRT93ocsbF SvSCsjRXZuQMAVTXMRqsIigHA/pemav6ggqG+0D5cMGhLhr3wn9iTvMy1VIvOAIb8bi7x7 TmV9EiSXnpRIctk51u1Qz1dle6HphXw= X-MC-Unique: 8gg1oy2NOgG5oIXGCAC0Vg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lZrzez510xiVz7CEUkck5REzpmtbqexQFYk8M50bGII=; b=vNjdCTWbjgYXQrTGnNteoLB13JbAT5kLQ2pSF2F3gpNZSbCYUhgjgLrhdYmDBp4F4n wPlaK+q4V2N7HqDO1eOZ3aOmRDjQa4Hr8iwxlQ5/l64jbZcqGbB4Yaoe90LzcVM0dRJz cuuu0tKRjCRBBiXQ6J/ppXX+NC2QlXhGWh1qA20X7mUIzwD0RqYsLI9/z/TU/yG0w27f MYAezBAsIme3+UsiO4z0c+Y8HgCyBCj7U3l+18fYcbLGJ3MO9csWoGDAZWeYlIJKfNGe 5ETCThSA1vq7Ea7jJDuPOgkfy3edL4+ezvEwgOz9HZTAPOikrcWxiMQA4/2yw/fuekOf kMIQ== X-Gm-Message-State: ACrzQf0U+5chppHs/PMOAfnRBChAEFl+Kh4lvZmPCkNVQKJCUnh9YRQM Vz1JHGP10UTZ+48kw6fKnVdJk3KnJ1v8RwYgv3lsKwumm+4pDzBsKX7arbOn1B0glGCiWsLMCDa 4LxgqD0/4dufeN2X4kQYXoHad+wrqkw+9bw9MdYeaALW65m6PplNI8NZ2kLCf X-Received: by 2002:a05:600c:168a:b0:3cf:68c0:a9b0 with SMTP id k10-20020a05600c168a00b003cf68c0a9b0mr6616049wmn.101.1667220683363; Mon, 31 Oct 2022 05:51:23 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4PpgG4S3+DVN8AocMtavwPqnRAkaukmkVzctpo/HvyToPzXrws1iw2vMjdlvGq8g8iUPkTVQ== X-Received: by 2002:a05:600c:168a:b0:3cf:68c0:a9b0 with SMTP id k10-20020a05600c168a00b003cf68c0a9b0mr6616028wmn.101.1667220683127; Mon, 31 Oct 2022 05:51:23 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:19 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin , Cleber Rosa , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Wainer dos Santos Moschetta , Beraldo Leal Subject: [PULL 13/86] acpi/tests/avocado/bits: disable acpi PSS tests that are failing in biosbits Message-ID: <20221031124928.128475-14-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222358640100003 From: Ani Sinha PSS tests in acpi test suite seems to be failing in biosbits. This is becau= se the test is unable to find PSS support in QEMU bios. Let us disable them for now so that make check does not fail. We can fix the tests and re-enable them later. Example failure: Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Michael S. Tsirkin ---- ACPI _PSS (Pstate) table conformance tests ---- [assert] _PSS must exist FAIL \_SB_.CPUS.C000 No _PSS exists Summary: 1 passed, 1 failed ---- ACPI _PSS (Pstate) runtime tests ---- [assert] _PSS must exist FAIL \_SB_.CPUS.C000 No _PSS exists Summary: 0 passed, 1 failed Cc: Daniel P. Berrang=C3=A9 Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Reviewed-by: Alex Benn=C3=A9e Message-Id: <20221021095108.104843-4-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/avocado/acpi-bits/bits-tests/testacpi.py2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/avocado/acpi-bits/bits-tests/testacpi.py2 b/tests/avocad= o/acpi-bits/bits-tests/testacpi.py2 index 9ec452f330..dbc150076e 100644 --- a/tests/avocado/acpi-bits/bits-tests/testacpi.py2 +++ b/tests/avocado/acpi-bits/bits-tests/testacpi.py2 @@ -36,8 +36,8 @@ import time =20 def register_tests(): testsuite.add_test("ACPI _MAT (Multiple APIC Table Entry) under Proces= sor objects", test_mat, submenu=3D"ACPI Tests") - testsuite.add_test("ACPI _PSS (Pstate) table conformance tests", test_= pss, submenu=3D"ACPI Tests") - testsuite.add_test("ACPI _PSS (Pstate) runtime tests", test_pstates, s= ubmenu=3D"ACPI Tests") +# testsuite.add_test("ACPI _PSS (Pstate) table conformance tests", test= _pss, submenu=3D"ACPI Tests") +# testsuite.add_test("ACPI _PSS (Pstate) runtime tests", test_pstates, = submenu=3D"ACPI Tests") testsuite.add_test("ACPI DSDT (Differentiated System Description Table= )", test_dsdt, submenu=3D"ACPI Tests") testsuite.add_test("ACPI FACP (Fixed ACPI Description Table)", test_fa= cp, submenu=3D"ACPI Tests") testsuite.add_test("ACPI HPET (High Precision Event Timer Table)", tes= t_hpet, submenu=3D"ACPI Tests") --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220878; cv=none; d=zohomail.com; s=zohoarc; b=KwjrgaPyRhiykRroDUJh4iQumGomOtGLSWO7JZYCmbNpjtH5N6+n8ejpJ4GNA2n/sD3ZZHYYAx3ibdKAbIJ7aWrGkgdsMp20FBw+kDBZSG5odwtmEoXl8dRDcN6bbj9WfCI6Nvm9W+oc3eTEk32nZQaAelAoipcAIK83EfX+b30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220878; 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=QV55IR7eujU4B3oXa/XKl/tm8iHeHPiunvIEBSbyaF4=; b=EyV+vzcMX6oDDIHVrtQn05ssdVZ9d9I4KwUeZv5AXY0qvnQr6f/EBXKFJ/nrD9zNfy7KhvyRx0l01RtPJWgHl9ZRnagmbU6wISUi490eg21AmojcavIq8ySqyrLsC461ofSv2g2atLge3TDZ1Err6+m9bBL5WftnwBpViPbpmbo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220878640655.8130617032336; Mon, 31 Oct 2022 05:54:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHE-0002rs-Cs; Mon, 31 Oct 2022 08:52:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGZ-0001rK-Q7 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGJ-0002I0-V8 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:47 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-448-1HJznIGrNkyoZiWBtnegHA-1; Mon, 31 Oct 2022 08:51:29 -0400 Received: by mail-wm1-f69.google.com with SMTP id d13-20020a05600c34cd00b003ce1f62ac5aso8307662wmq.4 for ; Mon, 31 Oct 2022 05:51:29 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id o17-20020a05600c4fd100b003a5f3f5883dsm7617661wmq.17.2022.10.31.05.51.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220690; 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=QV55IR7eujU4B3oXa/XKl/tm8iHeHPiunvIEBSbyaF4=; b=boYb/pGMon2fFa3LIVw8CzPJcwx6ODbieu9WVjeBr3pp/w7xFsXe0GA5b3lIbbScLvquIE a4WnJwcWVqdA4etXRkdCsQpVgM3q6iKZsgsz2WfoRF2oZU+e9TiIbAQq6pAQQNPBxTaE2I +Mm/2AUv5kUN889sNKRh+4QMu5/9jtQ= X-MC-Unique: 1HJznIGrNkyoZiWBtnegHA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QV55IR7eujU4B3oXa/XKl/tm8iHeHPiunvIEBSbyaF4=; b=jwdAX19cTnwS6jPWtLObkYWeAWMNNiHCCZskK4k4/gRZWQ4RirxMpPDXfZregUs3SA rN29FfT8UxZS1IrBSjrGOXeqjeUN/9CT8t8PxNA68/moEguHm6dmzEZKP4w3Kb68NlmD t80BBJzaC/lChNNZRPai9f8QLiTgekWEN3y9pZ0uA6UTLexe5WzPoPJoR7+vFUS72nOA f1VQ65H0nETby9YfOas1dX/uCehJocOjpI8d7Gq3uT7stv3FkQXRA6mAG6OCZ6FKnXi7 D08y5WiAxKj5aeZX0VnWX8MPpHeHL0AdKuOAVtPYIbHvTofEys/OGng7L69sMbuUo5bt tJbA== X-Gm-Message-State: ACrzQf20Ef4cxpHfcPJTGHJf0+pKjy2y4cWBAHSwxkB3Pzq160eIYnl/ +WgxQqd+SObHehsBwVkLZQUdEbORl14oY8Z43d0gsFMb/ie4RH8ZV42BeA35z4bFeh93BMzybNj 7BtkMyXc9YW3CwcXdDFKOBgy5ioqPKqi7t05oHpcBiMAVjA7mbQB/B6JaC6Km X-Received: by 2002:a5d:4390:0:b0:236:6e79:3948 with SMTP id i16-20020a5d4390000000b002366e793948mr7540950wrq.284.1667220686900; Mon, 31 Oct 2022 05:51:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6GVSjE//F4z+SV7DeUHUjKnWKuByU3l6sRuvY5waq4KDymYPyty8RGpIoICIJGD/ZSVL3iiQ== X-Received: by 2002:a5d:4390:0:b0:236:6e79:3948 with SMTP id i16-20020a5d4390000000b002366e793948mr7540922wrq.284.1667220686553; Mon, 31 Oct 2022 05:51:26 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:23 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin , Cleber Rosa , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Wainer dos Santos Moschetta , Beraldo Leal Subject: [PULL 14/86] acpi/tests/avocado/bits: add biosbits config file for running bios tests Message-ID: <20221031124928.128475-15-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220880805100003 From: Ani Sinha This change adds initial biosbits config file that instructs biosbits to run bios test suits in batch mode. Additionally acpi and smbios structures are = also dumped. Cc: Daniel P. Berrang=C3=A9 Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Reviewed-by: Alex Benn=C3=A9e Message-Id: <20221021095108.104843-5-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- .../avocado/acpi-bits/bits-config/bits-cfg.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/avocado/acpi-bits/bits-config/bits-cfg.txt diff --git a/tests/avocado/acpi-bits/bits-config/bits-cfg.txt b/tests/avoca= do/acpi-bits/bits-config/bits-cfg.txt new file mode 100644 index 0000000000..8010804453 --- /dev/null +++ b/tests/avocado/acpi-bits/bits-config/bits-cfg.txt @@ -0,0 +1,18 @@ +# BITS configuration file +[bits] + +# To run BITS in batch mode, set batch to a list of one or more of the +# following keywords; BITS will then run all of the requested operations, = then +# save the log file to disk. +# +# test: Run the full BITS testsuite. +# acpi: Dump all ACPI structures. +# smbios: Dump all SMBIOS structures. +# +# Leave batch set to an empty string to disable batch mode. +# batch =3D + +# Uncomment the following to run all available batch operations +# please take a look at boot/python/init.py in bits zip file +# to see how these options are parsed and used. +batch =3D test acpi smbios --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220749; cv=none; d=zohomail.com; s=zohoarc; b=A2a3nUdjHHuLQDIvWd8tV4drRJU3kky+467XOamiJBVp+l7PleyBnI0RvT4kCjpYJBSFZq5NsFlN2YbuIBrrG7RFxTPRto8qh43Fw1WUL0vBY62zi1VpS0u6ZJnOZk5LLPJQ4RrKNfZKvVAbyE4I3u29J99BRoWauMVCRPxLb44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220749; 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=EQF6/tGiVwngpAoH4xDpyZjugGx9ZiIk6FcDicaLIJc=; b=gZf8aWdBgq6RBP0ojZq+JeOgoXDWtusjhXOg57zonTDWpFMhJNPoLC775aDOVT495XDDpb57lt0pqcwNCyJWztX/rRDh6XjNUzU0GWBTkYUiMW+JD2JtOUfcY/d0VazUhNKOefrIVj/6fvIRYz1zZUilKJl/0deVgDEHh1Onj5w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722074980099.92363937242578; Mon, 31 Oct 2022 05:52:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGj-0002K3-7b; Mon, 31 Oct 2022 08:51:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGP-0001GV-L6 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGM-0002JR-R8 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:37 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-177-Kg1QWF8mPR2QJzxj3Uj7tA-1; Mon, 31 Oct 2022 08:51:32 -0400 Received: by mail-wm1-f71.google.com with SMTP id h204-20020a1c21d5000000b003cf4e055442so5267262wmh.1 for ; Mon, 31 Oct 2022 05:51:32 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k3-20020a5d5183000000b00231ed902a4esm7197356wrv.5.2022.10.31.05.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220693; 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=EQF6/tGiVwngpAoH4xDpyZjugGx9ZiIk6FcDicaLIJc=; b=GIAB/uTO8hpUKnpu793snKpTUhwhxZRchWZ7X0B73Cae/+3+NqgeumrVDxq+4Voen28Ygl U5/sWO7yEF6FSvZzWXE+ZcmTYJP/SY23qG7rFn325sPveqhmZPfb8+UYFCwWAVgQIRTey+ pUdYpjwHI1APlR9S0ANaq26YpVA9fgg= X-MC-Unique: Kg1QWF8mPR2QJzxj3Uj7tA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EQF6/tGiVwngpAoH4xDpyZjugGx9ZiIk6FcDicaLIJc=; b=2mOdsqbZS2lw1X8kgk/+grZDOwpA/8gYfhVptk4p+2mlYznUJoR+Xaf8G0rwx2+Pse mo7XO0SY28zHo0Cnbn+mPSkLPPuwcjUrXtR0GFlYebZSkE8xVHxoB6IDGAekNlYIgIyP d5YfnQ14oT1et2y7+tq/v4R1lcdr17roj9zjcH1dwpYN2wooOB2B83ysReSFqiyDwVjK xhZYT2kDaWmr81wHT4dY+A62cEmI82Rb0S9/sCn5mgUm1BQZpyLPgQkzre7l0INxYr10 gHKWAz/Sfr+pkVitX2V+iRHSIwmVro5EuCmZENA3BxmcPvJxe+eokp/TMwMVwM752EK8 NneA== X-Gm-Message-State: ACrzQf3TzAApuTq4PWqcAoYhmFm/8b6GVkAZ+L0wPEP4j4VM5eIaamMn e5F6L4zOHqzBYtidDMqQsVUMPunf5Im3bCvN+ZWLFLEIklwVSSjddbkACMhiTfzCbb/T9DhQSIG 2o33rUg7GA34aWwnboeu1+A/qKN3IWvHw9NOD9JhcerMD4X/MYR46yXzw5zmP X-Received: by 2002:adf:f5d0:0:b0:236:5866:eefe with SMTP id k16-20020adff5d0000000b002365866eefemr8307436wrp.339.1667220690241; Mon, 31 Oct 2022 05:51:30 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4b1ZKUFFnNmUZgK8duB1jnHpm31zKjS9CrjX7fnNJGQo254VG2keNULt1e8Y4xGhvw3te55A== X-Received: by 2002:adf:f5d0:0:b0:236:5866:eefe with SMTP id k16-20020adff5d0000000b002365866eefemr8307402wrp.339.1667220689896; Mon, 31 Oct 2022 05:51:29 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin , Cleber Rosa , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Wainer dos Santos Moschetta , Beraldo Leal Subject: [PULL 15/86] acpi/tests/avocado/bits: add acpi and smbios avocado tests that uses biosbits Message-ID: <20221031124928.128475-16-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220750338100006 From: Ani Sinha This introduces QEMU acpi/smbios biosbits avocado test which is run from within the python virtual environment. When the bits tests are run, bi= ts binaries are downloaded from an external repo/location, bios bits iso is regenerated containing the acpi/smbios bits tests that are maintained as a = part of the QEMU source under tests/avocado/acpi-bits/bits-test . When the VM is spawned with the iso, it runs the tests in batch mode and the results are p= ushed out from the VM to the test machine where they are analyzed by this script = and pass/fail results are reported. Cc: Daniel P. Berrang=C3=A9 Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Message-Id: <20221021095108.104843-6-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/avocado/acpi-bits.py | 396 +++++++++++++++++++++++++++++++++++++ 1 file changed, 396 insertions(+) create mode 100644 tests/avocado/acpi-bits.py diff --git a/tests/avocado/acpi-bits.py b/tests/avocado/acpi-bits.py new file mode 100644 index 0000000000..8745a58a76 --- /dev/null +++ b/tests/avocado/acpi-bits.py @@ -0,0 +1,396 @@ +#!/usr/bin/env python3 +# group: rw quick +# Exercize QEMU generated ACPI/SMBIOS tables using biosbits, +# https://biosbits.org/ +# +# 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 . +# +# +# Author: +# Ani Sinha + +# pylint: disable=3Dinvalid-name +# pylint: disable=3Dconsider-using-f-string + +""" +This is QEMU ACPI/SMBIOS avocado tests using biosbits. +Biosbits is available originally at https://biosbits.org/. +This test uses a fork of the upstream bits and has numerous fixes +including an upgraded acpica. The fork is located here: +https://gitlab.com/qemu-project/biosbits-bits . +""" + +import logging +import os +import platform +import re +import shutil +import subprocess +import tarfile +import tempfile +import time +import zipfile +from typing import ( + List, + Optional, + Sequence, +) +from qemu.machine import QEMUMachine +from avocado import skipIf +from avocado_qemu import QemuBaseTest + +deps =3D ["xorriso"] # dependent tools needed in the test setup/box. +supported_platforms =3D ['x86_64'] # supported test platforms. + + +def which(tool): + """ looks up the full path for @tool, returns None if not found + or if @tool does not have executable permissions. + """ + paths=3Dos.getenv('PATH') + for p in paths.split(os.path.pathsep): + p =3D os.path.join(p, tool) + if os.path.exists(p) and os.access(p, os.X_OK): + return p + return None + +def missing_deps(): + """ returns True if any of the test dependent tools are absent. + """ + for dep in deps: + if which(dep) is None: + return True + return False + +def supported_platform(): + """ checks if the test is running on a supported platform. + """ + return platform.machine() in supported_platforms + +class QEMUBitsMachine(QEMUMachine): # pylint: disable=3Dtoo-few-public-met= hods + """ + A QEMU VM, with isa-debugcon enabled and bits iso passed + using -cdrom to QEMU commandline. + + """ + def __init__(self, + binary: str, + args: Sequence[str] =3D (), + wrapper: Sequence[str] =3D (), + name: Optional[str] =3D None, + base_temp_dir: str =3D "/var/tmp", + debugcon_log: str =3D "debugcon-log.txt", + debugcon_addr: str =3D "0x403", + sock_dir: Optional[str] =3D None, + qmp_timer: Optional[float] =3D None): + # pylint: disable=3Dtoo-many-arguments + + if name is None: + name =3D "qemu-bits-%d" % os.getpid() + if sock_dir is None: + sock_dir =3D base_temp_dir + super().__init__(binary, args, wrapper=3Dwrapper, name=3Dname, + base_temp_dir=3Dbase_temp_dir, + sock_dir=3Dsock_dir, qmp_timer=3Dqmp_timer) + self.debugcon_log =3D debugcon_log + self.debugcon_addr =3D debugcon_addr + self.base_temp_dir =3D base_temp_dir + + @property + def _base_args(self) -> List[str]: + args =3D super()._base_args + args.extend([ + '-chardev', + 'file,path=3D%s,id=3Ddebugcon' %os.path.join(self.base_temp_di= r, + self.debugcon_log), + '-device', + 'isa-debugcon,iobase=3D%s,chardev=3Ddebugcon' %self.debugcon_a= ddr, + ]) + return args + + def base_args(self): + """return the base argument to QEMU binary""" + return self._base_args + +@skipIf(not supported_platform() or missing_deps() or os.getenv('GITLAB_CI= '), + 'incorrect platform or dependencies (%s) not installed ' \ + 'or running on GitLab' % ','.join(deps)) +class AcpiBitsTest(QemuBaseTest): #pylint: disable=3Dtoo-many-instance-att= ributes + """ + ACPI and SMBIOS tests using biosbits. + + :avocado: tags=3Darch:x86_64 + :avocado: tags=3Dacpi + + """ + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._vm =3D None + self._workDir =3D None + self._baseDir =3D None + + # following are some standard configuration constants + self._bitsInternalVer =3D 2020 + self._bitsCommitHash =3D 'b48b88ff' # commit hash must match + # the artifact tag below + self._bitsTag =3D "qemu-bits-10182022" # this is the latest bits + # release as of today. + self._bitsArtSHA1Hash =3D 'b04790ac9b99b5662d0416392c73b97580641fe= 5' + self._bitsArtURL =3D ("https://gitlab.com/qemu-project/" + "biosbits-bits/-/jobs/artifacts/%s/" + "download?job=3Dqemu-bits-build" %self._bitsTa= g) + self._debugcon_addr =3D '0x403' + self._debugcon_log =3D 'debugcon-log.txt' + logging.basicConfig(level=3Dlogging.INFO) + self.logger =3D logging.getLogger('acpi-bits') + + def _print_log(self, log): + self.logger.info('\nlogs from biosbits follows:') + self.logger.info('=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D\n') + self.logger.info(log) + self.logger.info('=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D\n') + + def copy_bits_config(self): + """ copies the bios bits config file into bits. + """ + config_file =3D 'bits-cfg.txt' + bits_config_dir =3D os.path.join(self._baseDir, 'acpi-bits', + 'bits-config') + target_config_dir =3D os.path.join(self._workDir, + 'bits-%d' %self._bitsInternalVer, + 'boot') + self.assertTrue(os.path.exists(bits_config_dir)) + self.assertTrue(os.path.exists(target_config_dir)) + self.assertTrue(os.access(os.path.join(bits_config_dir, + config_file), os.R_OK)) + shutil.copy2(os.path.join(bits_config_dir, config_file), + target_config_dir) + self.logger.info('copied config file %s to %s', + config_file, target_config_dir) + + def copy_test_scripts(self): + """copies the python test scripts into bits. """ + + bits_test_dir =3D os.path.join(self._baseDir, 'acpi-bits', + 'bits-tests') + target_test_dir =3D os.path.join(self._workDir, + 'bits-%d' %self._bitsInternalVer, + 'boot', 'python') + + self.assertTrue(os.path.exists(bits_test_dir)) + self.assertTrue(os.path.exists(target_test_dir)) + + for filename in os.listdir(bits_test_dir): + if os.path.isfile(os.path.join(bits_test_dir, filename)) and \ + filename.endswith('.py2'): + # all test scripts are named with extension .py2 so that + # avocado does not try to load them. These scripts are + # written for python 2.7 not python 3 and hence if avocado + # loaded them, it would complain about python 3 specific + # syntaxes. + newfilename =3D os.path.splitext(filename)[0] + '.py' + shutil.copy2(os.path.join(bits_test_dir, filename), + os.path.join(target_test_dir, newfilename)) + self.logger.info('copied test file %s to %s', + filename, target_test_dir) + + # now remove the pyc test file if it exists, otherwise the + # changes in the python test script won't be executed. + testfile_pyc =3D os.path.splitext(filename)[0] + '.pyc' + if os.access(os.path.join(target_test_dir, testfile_pyc), + os.F_OK): + os.remove(os.path.join(target_test_dir, testfile_pyc)) + self.logger.info('removed compiled file %s', + os.path.join(target_test_dir, + testfile_pyc)) + + def fix_mkrescue(self, mkrescue): + """ grub-mkrescue is a bash script with two variables, 'prefix' and + 'libdir'. They must be pointed to the right location so that t= he + iso can be generated appropriately. We point the two variables= to + the directory where we have extracted our pre-built bits grub + tarball. + """ + grub_x86_64_mods =3D os.path.join(self._workDir, 'grub-inst-x86_64= -efi') + grub_i386_mods =3D os.path.join(self._workDir, 'grub-inst') + + self.assertTrue(os.path.exists(grub_x86_64_mods)) + self.assertTrue(os.path.exists(grub_i386_mods)) + + new_script =3D "" + with open(mkrescue, 'r', encoding=3D'utf-8') as filehandle: + orig_script =3D filehandle.read() + new_script =3D re.sub('(^prefix=3D)(.*)', + r'\1"%s"' %grub_x86_64_mods, + orig_script, flags=3Dre.M) + new_script =3D re.sub('(^libdir=3D)(.*)', r'\1"%s/lib"' %grub_= i386_mods, + new_script, flags=3Dre.M) + + with open(mkrescue, 'w', encoding=3D'utf-8') as filehandle: + filehandle.write(new_script) + + def generate_bits_iso(self): + """ Uses grub-mkrescue to generate a fresh bits iso with the python + test scripts + """ + bits_dir =3D os.path.join(self._workDir, + 'bits-%d' %self._bitsInternalVer) + iso_file =3D os.path.join(self._workDir, + 'bits-%d.iso' %self._bitsInternalVer) + mkrescue_script =3D os.path.join(self._workDir, + 'grub-inst-x86_64-efi', 'bin', + 'grub-mkrescue') + + self.assertTrue(os.access(mkrescue_script, + os.R_OK | os.W_OK | os.X_OK)) + + self.fix_mkrescue(mkrescue_script) + + self.logger.info('using grub-mkrescue for generating biosbits iso = ...') + + try: + if os.getenv('V'): + subprocess.check_call([mkrescue_script, '-o', iso_file, + bits_dir], stderr=3Dsubprocess.STDO= UT) + else: + subprocess.check_call([mkrescue_script, '-o', + iso_file, bits_dir], + stderr=3Dsubprocess.DEVNULL, + stdout=3Dsubprocess.DEVNULL) + except Exception as e: # pylint: disable=3Dbroad-except + self.skipTest("Error while generating the bits iso. " + "Pass V=3D1 in the environment to get more detai= ls. " + + str(e)) + + self.assertTrue(os.access(iso_file, os.R_OK)) + + self.logger.info('iso file %s successfully generated.', iso_file) + + def setUp(self): # pylint: disable=3Darguments-differ + super().setUp('qemu-system-') + + self._baseDir =3D os.getenv('AVOCADO_TEST_BASEDIR') + + # workdir could also be avocado's own workdir in self.workdir. + # At present, I prefer to maintain my own temporary working + # directory. It gives us more control over the generated bits + # log files and also for debugging, we may chose not to remove + # this working directory so that the logs and iso can be + # inspected manually and archived if needed. + self._workDir =3D tempfile.mkdtemp(prefix=3D'acpi-bits-', + suffix=3D'.tmp') + self.logger.info('working dir: %s', self._workDir) + + prebuiltDir =3D os.path.join(self._workDir, 'prebuilt') + if not os.path.isdir(prebuiltDir): + os.mkdir(prebuiltDir, mode=3D0o775) + + bits_zip_file =3D os.path.join(prebuiltDir, 'bits-%d-%s.zip' + %(self._bitsInternalVer, + self._bitsCommitHash)) + grub_tar_file =3D os.path.join(prebuiltDir, + 'bits-%d-%s-grub.tar.gz' + %(self._bitsInternalVer, + self._bitsCommitHash)) + + bitsLocalArtLoc =3D self.fetch_asset(self._bitsArtURL, + asset_hash=3Dself._bitsArtSHA1H= ash) + self.logger.info("downloaded bits artifacts to %s", bitsLocalArtLo= c) + + # extract the bits artifact in the temp working directory + with zipfile.ZipFile(bitsLocalArtLoc, 'r') as zref: + zref.extractall(prebuiltDir) + + # extract the bits software in the temp working directory + with zipfile.ZipFile(bits_zip_file, 'r') as zref: + zref.extractall(self._workDir) + + with tarfile.open(grub_tar_file, 'r', encoding=3D'utf-8') as tarba= ll: + tarball.extractall(self._workDir) + + self.copy_test_scripts() + self.copy_bits_config() + self.generate_bits_iso() + + def parse_log(self): + """parse the log generated by running bits tests and + check for failures. + """ + debugconf =3D os.path.join(self._workDir, self._debugcon_log) + log =3D "" + with open(debugconf, 'r', encoding=3D'utf-8') as filehandle: + log =3D filehandle.read() + + matchiter =3D re.finditer(r'(.*Summary: )(\d+ passed), (\d+ failed= ).*', + log) + for match in matchiter: + # verify that no test cases failed. + try: + self.assertEqual(match.group(3).split()[0], '0', + 'Some bits tests seems to have failed. ' \ + 'Please check the test logs for more info= .') + except AssertionError as e: + self._print_log(log) + raise e + else: + if os.getenv('V'): + self._print_log(log) + + def tearDown(self): + """ + Lets do some cleanups. + """ + if self._vm: + self.assertFalse(not self._vm.is_running) + self.logger.info('removing the work directory %s', self._workDir) + shutil.rmtree(self._workDir) + super().tearDown() + + def test_acpi_smbios_bits(self): + """The main test case implementaion.""" + + iso_file =3D os.path.join(self._workDir, + 'bits-%d.iso' %self._bitsInternalVer) + + self.assertTrue(os.access(iso_file, os.R_OK)) + + self._vm =3D QEMUBitsMachine(binary=3Dself.qemu_bin, + base_temp_dir=3Dself._workDir, + debugcon_log=3Dself._debugcon_log, + debugcon_addr=3Dself._debugcon_addr) + + self._vm.add_args('-cdrom', '%s' %iso_file) + # the vm needs to be run under icount so that TCG emulation is + # consistent in terms of timing. smilatency tests have consistent + # timing requirements. + self._vm.add_args('-icount', 'auto') + + args =3D " ".join(str(arg) for arg in self._vm.base_args()) + \ + " " + " ".join(str(arg) for arg in self._vm.args) + + self.logger.info("launching QEMU vm with the following arguments: = %s", + args) + + self._vm.launch() + # biosbits has been configured to run all the specified test suites + # in batch mode and then automatically initiate a vm shutdown. + # sleep for maximum of one minute + max_sleep_time =3D time.monotonic() + 60 + while self._vm.is_running() and time.monotonic() < max_sleep_time: + time.sleep(1) + + self.assertFalse(time.monotonic() > max_sleep_time, + 'The VM seems to have failed to shutdown in time') + + self.parse_log() --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222088; cv=none; d=zohomail.com; s=zohoarc; b=JW/FVlqmLOdgPdR3f/mzsnRyIYZMbwG6K3Y57o1Js535V3wj+BoRYxbWmTjAG/W8yxYnjHaGvAij8KB0k9Bp0AR7si45E3aH6zSzZM/xS+Z2pQgB6d74PcYL4uDjD6LszN/QWIwM9yNfk34ABH6X5Ege87fBn+4Wc5qp3nPQHEg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222088; 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=m3FHixKkG/soQHBQxHKtxJZpm4FNMe+a1ZZo7qWndEQ=; b=h7ubKIGKv1jmkl6X7EDOQvtRourjlP4U2rWb40Lu0ydKqMqBA1d8phhyn8VOiaXRnPsaVCdj1jmMcbmZP51r3N8HplANFRLZGxTEzIVuPOqkYXfr3o9CXCnXWjAKD+IxK3Np9qlKfOw48iuSNlKZIYsvQucEOZyolcGK3CRofxw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722208821151.18212315384278; Mon, 31 Oct 2022 06:14:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUGs-0002TJ-72; Mon, 31 Oct 2022 08:52:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGY-0001i3-AW for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGT-0002Lt-UF for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:46 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-98-ks9XDttIPeOMkLdzFeePPQ-1; Mon, 31 Oct 2022 08:51:35 -0400 Received: by mail-wm1-f71.google.com with SMTP id bg21-20020a05600c3c9500b003c2acbff422so5704495wmb.0 for ; Mon, 31 Oct 2022 05:51:35 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j3-20020a05600c1c0300b003b4ff30e566sm25744163wms.3.2022.10.31.05.51.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220696; 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=m3FHixKkG/soQHBQxHKtxJZpm4FNMe+a1ZZo7qWndEQ=; b=UqeB+ukCt0zexWeByeOFrnKbPsn9KlKyrFvvB+FFbJxo1YuZScHWWAE1Zliz1QBHavLvuy j9GC7SsMRq/2gTFpxQEv//wGJcwjq49icM2hBrIpaZBBKg+FzZ0JmboWAcYQcOm71Cd/36 LDmfhGae3K7XPx01ZFPI/QVCGoZyE78= X-MC-Unique: ks9XDttIPeOMkLdzFeePPQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=m3FHixKkG/soQHBQxHKtxJZpm4FNMe+a1ZZo7qWndEQ=; b=DZOQtk/1j26mKlbaPjEd3jLYFlSeuRfEtz50J7Qf2IBhV9CnOt8dw81Fiu45b8eDdp nWWYgl5abHnc08NZ7fNeQ4aQaPJrU63S4lYhqb5/M076kz8EpywtGjMt+tZsLtxkFH0z OV54WPlovmKOLxrzt5Q+FrAuuPuLWd75+8OuhsqQGqlCCWAfn+VXBXdWRYpGvdp+NiJD HV1slF4meQw7AbJrV0SAl+4o8tFfuZQhVj5eRqboDS0yGULF4mjBC2TOr/43MXluytGj CEGvAwHyHKSaNBL3ydYEU55pmMesZP4NX+BOrT1p8yJmB8lQGXK7sUDdz1CWCqF+Za3L L01w== X-Gm-Message-State: ACrzQf1nYPLkoynqGjP4gPVrs+uxxqHt+8sLEGzLbfkme0BxbLW+J9Vx B54tMO7CYdZdGGlrZN4hHGDO12PCPQi3u+txQ+JmfxgTm3Ow65DKll61V9fZ0uApHOfcpK4wd8Q Zjvs62DmWJr4kUcvE9jyX/84sdiahdQfPhjeD8PXhc72ncf865W3X5dYPVcsj X-Received: by 2002:a5d:4acc:0:b0:236:6665:b471 with SMTP id y12-20020a5d4acc000000b002366665b471mr8185220wrs.633.1667220693297; Mon, 31 Oct 2022 05:51:33 -0700 (PDT) X-Google-Smtp-Source: AMsMyM60NZ7oRk9iRuNZRtqiswdO+1lmPCQ6pjwQRwZQPp0smN5rGB9JqxBk8zUYoEqUX/CHobCusw== X-Received: by 2002:a5d:4acc:0:b0:236:6665:b471 with SMTP id y12-20020a5d4acc000000b002366665b471mr8185191wrs.633.1667220692944; Mon, 31 Oct 2022 05:51:32 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:30 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin Subject: [PULL 16/86] acpi/tests/avocado/bits/doc: add a doc file to describe the acpi bits test Message-ID: <20221031124928.128475-17-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222089760100001 From: Ani Sinha A doc file is added under docs/devel that describes the purpose of the vari= ous test files and gives guidance to developers on where and how to make change= s. Cc: Daniel P. Berrange" Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Message-Id: <20221021095108.104843-7-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- docs/devel/acpi-bits.rst | 145 +++++++++++++++++++++++++++++++++++++ docs/devel/index-build.rst | 1 + 2 files changed, 146 insertions(+) create mode 100644 docs/devel/acpi-bits.rst diff --git a/docs/devel/acpi-bits.rst b/docs/devel/acpi-bits.rst new file mode 100644 index 0000000000..c9564d871a --- /dev/null +++ b/docs/devel/acpi-bits.rst @@ -0,0 +1,145 @@ +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D +ACPI/SMBIOS avocado tests using biosbits +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D + +Biosbits is a software written by Josh Triplett that can be downloaded +from https://biosbits.org/. The github codebase can be found +`here `__. It is a software = that executes +the bios components such as acpi and smbios tables directly through acpica +bios interpreter (a freely available C based library written by Intel, +downloadable from https://acpica.org/ and is included with biosbits) witho= ut an +operating system getting involved in between. +There are several advantages to directly testing the bios in a real physic= al +machine or VM as opposed to indirectly discovering bios issues through the +operating system. For one thing, the OSes tend to hide bios problems from = the +end user. The other is that we have more control of what we wanted to test +and how by directly using acpica interpreter on top of the bios on a runni= ng +system. More details on the inspiration for developing biosbits and its re= al +life uses can be found in [#a]_ and [#b]_. +This directory contains tests written in python using avocado framework th= at +exercises the QEMU bios components using biosbits and reports test failure= s. +For QEMU, we maintain a fork of bios bits in gitlab along with all the +dependent submodules: +https://gitlab.com/qemu-project/biosbits-bits +This fork contains numerous fixes, a newer acpica and changes specific to +running this avocado QEMU tests using bits. The author of this document +is the sole maintainer of the QEMU fork of bios bits repo. + +Under the directory ``tests/avocado/``, ``acpi-bits.py`` is a QEMU avocado +test that drives all this. + +A brief description of the various test files follows. + +Under ``tests/avocado/`` as the root we have: + +:: + + =E2=94=9C=E2=94=80=E2=94=80 acpi-bits + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 bits-config + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 bits-cfg.txt + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 bits-tests + =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 smbios.py2 + =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 testacpi.py2 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 testcpuid.py2 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 README + =E2=94=9C=E2=94=80=E2=94=80 acpi-bits.py + +* ``tests/avocado``: + + ``acpi-bits.py``: + This is the main python avocado test script that generates a + biosbits iso. It then spawns a QEMU VM with it, collects the log and re= ports + test failures. This is the script one would be interested in if they wa= nted + to add or change some component of the log parsing, add a new command l= ine + to alter how QEMU is spawned etc. Test writers typically would not need= to + modify this script unless they wanted to enhance or change the log pars= ing + for their tests. In order to enable debugging, you can set **V=3D1** + environment variable. This enables verbose mode for the test and also d= umps + the entire log from bios bits and more information in case failure happ= ens. + + In order to run this test, please perform the following steps from the = QEMU + build directory: + :: + + $ make check-venv (needed only the first time to create the venv) + $ ./tests/venv/bin/avocado run -t acpi tests/avocado + + The above will run all acpi avocado tests including this one. + In order to run the individual tests, perform the following: + :: + + $ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py --tap - + + The above will produce output in tap format. You can omit "--tap -" in = the + end and it will produce output like the following: + :: + + $ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py + Fetching asset from tests/avocado/acpi-bits.py:AcpiBitsTest.test_acp= i_smbios_bits + JOB ID : eab225724da7b64c012c65705dc2fa14ab1defef + JOB LOG : /home/anisinha/avocado/job-results/job-2022-10-10T17.58= -eab2257/job.log + (1/1) tests/avocado/acpi-bits.py:AcpiBitsTest.test_acpi_smbios_bits:= PASS (33.09 s) + RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT= 0 | CANCEL 0 + JOB TIME : 39.22 s + + You can inspect the log file for more information about the run or in o= rder + to diagnoze issues. If you pass V=3D1 in the environment, more diagnost= ic logs + would be found in the test log. + +* ``tests/avocado/acpi-bits/bits-config``: + + This location contains biosbits configuration files that determine how = the + software runs the tests. + + ``bits-config.txt``: + This is the biosbits config file that determines what tests + or actions are performed by bits. The description of the config options= are + provided in the file itself. + +* ``tests/avocado/acpi-bits/bits-tests``: + + This directory contains biosbits python based tests that are run from w= ithin + the biosbits environment in the spawned VM. New additions of test cases= can + be made in the appropriate test file. For example, new acpi tests can go + into testacpi.py2 and one would call testsuite.add_test() to register t= he new + test so that it gets executed as a part of the ACPI tests. + It might be occasionally necessary to disable some subtests or add a new + test that belongs to a test suite not already present in this directory= . To + do this, please clone the bits source from + https://gitlab.com/qemu-project/biosbits-bits/-/tree/qemu-bits. + Note that this is the "qemu-bits" branch and not the "bits" branch of t= he + repository. "qemu-bits" is the branch where we have made all the QEMU + specific enhancements and we must use the source from this branch only. + Copy the test suite/script that needs modification (addition of new tes= ts + or disabling them) from python directory into this directory. For + example, in order to change cpuid related tests, copy the following + file into this directory and rename it with .py2 extension: + https://gitlab.com/qemu-project/biosbits-bits/-/blob/qemu-bits/python/t= estcpuid.py + Then make your additions and changes here. Therefore, the steps are: + + (a) Copy unmodified test script to this directory from bits source. + (b) Add a SPDX license header. + (c) Perform modifications to the test. + + Commits (a), (b) and (c) should go under separate commits so that the o= riginal + test script and the changes we have made are separated and clear. + + The test framework will then use your modified test script to run the t= est. + No further changes would be needed. Please check the logs to make sure = that + appropriate changes have taken effect. + + The tests have an extension .py2 in order to indicate that: + + (a) They are python2.7 based scripts and not python 3 scripts. + (b) They are run from within the bios bits VM and is not subjected to Q= EMU + build/test python script maintainance and dependency resolutions. + (c) They need not be loaded by avocado framework when running tests. + + +Author: Ani Sinha + +References: +----------- +.. [#a] https://blog.linuxplumbersconf.org/2011/ocw/system/presentations/8= 67/original/bits.pdf +.. [#b] https://www.youtube.com/watch?v=3D36QIepyUuhg + diff --git a/docs/devel/index-build.rst b/docs/devel/index-build.rst index 1002a533a6..57e8d39d98 100644 --- a/docs/devel/index-build.rst +++ b/docs/devel/index-build.rst @@ -11,6 +11,7 @@ the basics if you are adding new files and targets to the= build. build-system kconfig testing + acpi-bits qtest ci qapi-code-gen --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220763; cv=none; d=zohomail.com; s=zohoarc; b=i3OVx5sNUZPO9Mu0885I8PuWlDcev5LbzhaA2Ar12X+meGnIeLxQozANwTVcoi2LtiMQxvriN926QLs0b1Hggzrt/FXi0i1RmDk5ynUzxozclGB+N0eBz5bNNiSClkF2+gIxzT4rNsnzDw6B4mgiK+7UfttRTyH1J+97kdlcz7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220763; 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=oOh1HLJjiZGbBo3ZKq+CicPAufMrxh5O/nCB7GKJexA=; b=Lh+rsO24h+SamjxKoYqG0bC0I1FQaJVYxKz9xAklPhp7mvpWMS3wo7KNfkLTKzex2I3bRXIHdxowbr+mWvn4cEL3LBKg6diz7lgY272b5a2PIN2P2z6fdJBKfYwmB0cIeryUM/Z69VefFOj3fXu1KRNqKqBCOixHJZv7/eUcsSg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220763929283.23091477412424; Mon, 31 Oct 2022 05:52:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHJ-0003WN-1D; Mon, 31 Oct 2022 08:52:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGj-0002Mw-MY for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGW-0002NM-8b for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:57 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-591-4dPt7aMiPzmxi54Y3geLLw-1; Mon, 31 Oct 2022 08:51:38 -0400 Received: by mail-wm1-f69.google.com with SMTP id s7-20020a1cf207000000b003cf56bad2e2so2211669wmc.9 for ; Mon, 31 Oct 2022 05:51:37 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id l24-20020a1c7918000000b003cf7928e731sm434856wme.9.2022.10.31.05.51.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220699; 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=oOh1HLJjiZGbBo3ZKq+CicPAufMrxh5O/nCB7GKJexA=; b=hdu2Xlw35aVx4gzWlGqGHLhwSc+67WEB/Yoe88ZbR/G0kGxBC0kD0c5Toov62mmwJtJ/bo Zr0wDx82xzjSZO/8+3mGgZv2wEC7opHYiKM+ho0hgXAOzmzuLoj7/662eHXN8hFNT9cvz+ 0iGcb3C50C0zOv7Pg/MEqoe0rK8xXws= X-MC-Unique: 4dPt7aMiPzmxi54Y3geLLw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oOh1HLJjiZGbBo3ZKq+CicPAufMrxh5O/nCB7GKJexA=; b=1gGRL1Z8vTf2UAeBbrMSR54xv7XhcCPUEl0RURkWwt1ozRHEtncnnz5JHxrnWFs/sj g/bEoThz48tWsbcYYr2ErfSXBYGu9RTrzYVOUAnaG5PIPiqOQ7EF2H6vOR80HEa2kgxt 1I+TPAFzSuQzNG+WOTYNpFOrzL6SM1IOc+k52GUSni5iuEkfGUCjTZsGBPXsNTUrO+al ivz3cFr0saKTZwXdC4GQGvp8fgCm0SpOF9ds9YZeUU0M14mgbuKi8WwPaURyehHI7Hom AOo3qne1gM1SOCnbewVXhsiN3+xHhvTE+cufh9BEjMjP4r54mpxsXWo5AkuIzUtQ92+1 eg6Q== X-Gm-Message-State: ACrzQf0tRt/44rh1wRQnkGLCVFHvFNMiKKuu6DjQY2TajpOpMoKCWv6f odWL959mJ34XT4QbXfNjl2SfaRJqucIDVFNFlXjwTdGAlhbNoPwvKkYhSRcC/kcxSafs28jRr3D vCz0HkqaLsX9OkU6th74hBPFL76XprXFSkIT+dWi0HIQnptUF1NgnFVdH9V3G X-Received: by 2002:adf:e911:0:b0:236:73b7:e668 with SMTP id f17-20020adfe911000000b0023673b7e668mr7903600wrm.96.1667220696578; Mon, 31 Oct 2022 05:51:36 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7LrnxxpNfuuPQjQpAxa0W7JjWQfj8vUU7E2ffR3WQLKCIeYf/MahJ8C5zwn3rByIPchXDVBA== X-Received: by 2002:adf:e911:0:b0:236:73b7:e668 with SMTP id f17-20020adfe911000000b0023673b7e668mr7903572wrm.96.1667220696284; Mon, 31 Oct 2022 05:51:36 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:33 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Ani Sinha , Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= , Paolo Bonzini , John Snow , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= , Igor Mammedov , Michael Tsirkin , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 17/86] MAINTAINERS: add myself as the maintainer for acpi biosbits avocado tests Message-ID: <20221031124928.128475-18-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220766399100007 From: Ani Sinha I wrote the biosbits avocado tests for testing QEMU's ACPI/SMBIOS implement= ation and all the related changes including fixes in biosbits software itself. Ma= king myself as the maintainer for QEMU's biosbits related files and test scripts. Cc: Daniel P. Berrang=C3=A9 Cc: Paolo Bonzini Cc: Maydell Peter Cc: John Snow Cc: Thomas Huth Cc: Alex Benn=C3=A9e Cc: Igor Mammedov Cc: Michael Tsirkin Signed-off-by: Ani Sinha Reviewed-by: Alex Benn=C3=A9e Message-Id: <20221021095108.104843-8-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 64893e36bc..8ea193c812 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1859,6 +1859,13 @@ S: Supported F: hw/acpi/viot.c F: hw/acpi/viot.h =20 +ACPI/AVOCADO/BIOSBITS +M: Ani Sinha +S: Supported +F: tests/avocado/acpi-bits/* +F: tests/avocado/acpi-bits.py +F: docs/devel/acpi-bits.rst + ACPI/HEST/GHES R: Dongjiu Geng L: qemu-arm@nongnu.org --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220781; cv=none; d=zohomail.com; s=zohoarc; b=By+s2v6zaEbOg/Ak3WzRdLCZumS/ueXzKPiay5hBXXndcxVO2H1syrd5Ux1Yezs7DiQoOt6IReAadPKdoLI4RvntWki/LTYdHbGkdVnBpxY254aaHeGF3tXXUWPu9JS4ZXbJWyzf8RGagmiTkWFsm560XOSXVOQmrFXSz0qgu90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220781; h=Content-Type: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=LO/qtuNrZ89fDPCMFSkl2M7QRcm1BKFrenr7dPdjQIM=; b=ioMng6APRhwYsuPvms8XjsLnsz5gBgaW3UtRzTmobMcrl10JmP5h9hYONew+HdlJAF3+FdJzGBvNxNZDyg3zZ1xYUv51X5t9P4n90aOcyFhRv5/PP09DR3i4pejSLqBXdYfBwsPJvvvGdhtg22rq38wZYKJNTTKcdXv3kCcT+vg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722078181780.26967553761438; Mon, 31 Oct 2022 05:53:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHS-0004Vo-8U; Mon, 31 Oct 2022 08:52:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGu-0002XO-NX for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGf-0002V2-Ug for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:08 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-76-ajyr5rTaODOR8EFW52IOOw-1; Mon, 31 Oct 2022 08:51:40 -0400 Received: by mail-wm1-f70.google.com with SMTP id d13-20020a05600c34cd00b003ce1f62ac5aso8307809wmq.4 for ; Mon, 31 Oct 2022 05:51:40 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id l13-20020a05600c2ccd00b003a2f2bb72d5sm8137327wmc.45.2022.10.31.05.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220709; 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: in-reply-to:in-reply-to:references:references; bh=LO/qtuNrZ89fDPCMFSkl2M7QRcm1BKFrenr7dPdjQIM=; b=RDVaa9hAX75sAxS2pusda8vdIy1RQma7PscVtxvisoJP6pj60kVTw1jGQj4TMX538XcSh7 dK4jQ/zIMaqwVp/8Omhq0z+uP8Jg24cYozDeeAY54cKU3OVn1o1lXRR/EiuXe13aZ411/G wqwqjHyVUQayXxL0vJkEiR06CDz27Bs= X-MC-Unique: ajyr5rTaODOR8EFW52IOOw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LO/qtuNrZ89fDPCMFSkl2M7QRcm1BKFrenr7dPdjQIM=; b=3LasC47/V2+a+mWuPa2f0C7pEmOnQYm4nuqSYcupt9P1e900lGfuNeZapuEXhzwv2I TY0rmLn/EnITI/WlagPEboFpa2LgbyjYTHhJ/UMQ8UGU8XlwsOqLqCiipaFLshR7tPY4 5JtPHD+BSLEDRBTVGmrnkAUvqh9bU0jB1XZIv1+skGro0aK461ZTKlRCfj0fyg8SHGqp eSuwKx7nEE0Modv/qK9n1fWIO6fnPOhf5N34jc5ax15VWh1pyFQTzAKlXY/71zjpCdpP vV7LPW16DvsKWNrOjY476wxOeHEwD3MgBv9Uz0op8D8vdND5xIfBvNyZJXhI//XZuEOC 3xZg== X-Gm-Message-State: ACrzQf3zaRBS99BBmb3+kOzzSa2Z1//SlUqLKRG1uYu9bNzl2LWtIa3Z cPUjtbA3qsHI1CQb06M77w//PKoHkZuPvMnP+7QtE8RmeJhLWh/KJt7YNtEv0roBunbtlRtmDfc IduRBvgfhpqS7WZhxrRehc1QKh8NgBviW7RiVZqAJHT/O1VMN+vGEA7juVicO X-Received: by 2002:a05:600c:4f10:b0:3c6:dcc6:51d7 with SMTP id l16-20020a05600c4f1000b003c6dcc651d7mr7964050wmq.91.1667220699063; Mon, 31 Oct 2022 05:51:39 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5DmVXKiYbpvBP5dNZIRNZT7dTN+iB6PC3vli4+JiafoZz0F/2TBWaSORdodtlHSmqZrSpGOg== X-Received: by 2002:a05:600c:4f10:b0:3c6:dcc6:51d7 with SMTP id l16-20020a05600c4f1000b003c6dcc651d7mr7964032wmq.91.1667220698784; Mon, 31 Oct 2022 05:51:38 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:36 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Julia Suvorova , Igor Mammedov , Ani Sinha Subject: [PULL 18/86] hw/smbios: add core_count2 to smbios table type 4 Message-ID: <20221031124928.128475-19-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220782539100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Julia Suvorova In order to use the increased number of cpus, we need to bring smbios tables in line with the SMBIOS 3.0 specification. This allows us to introduce core_count2 which acts as a duplicate of core_count if we have fewer cores than 256, and contains the actual core number per socket if we have more. core_enabled2 and thread_count2 fields work the same way. Signed-off-by: Julia Suvorova Reviewed-by: Igor Mammedov Message-Id: <20220731162141.178443-2-jusual@redhat.com> Message-Id: <20221011111731.101412-2-jusual@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/smbios/smbios_build.h | 9 +++++++-- include/hw/firmware/smbios.h | 12 ++++++++++++ hw/smbios/smbios.c | 19 ++++++++++++++++--- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/hw/smbios/smbios_build.h b/hw/smbios/smbios_build.h index 56b5a1e3f3..351660024e 100644 --- a/hw/smbios/smbios_build.h +++ b/hw/smbios/smbios_build.h @@ -27,6 +27,11 @@ extern unsigned smbios_table_max; extern unsigned smbios_table_cnt; =20 #define SMBIOS_BUILD_TABLE_PRE(tbl_type, tbl_handle, tbl_required) \ + SMBIOS_BUILD_TABLE_PRE_SIZE(tbl_type, tbl_handle, tbl_required, \ + sizeof(struct smbios_type_##tbl_type))\ + +#define SMBIOS_BUILD_TABLE_PRE_SIZE(tbl_type, tbl_handle, \ + tbl_required, tbl_len) \ struct smbios_type_##tbl_type *t; \ size_t t_off; /* table offset into smbios_tables */ \ int str_index =3D 0; = \ @@ -39,12 +44,12 @@ extern unsigned smbios_table_cnt; /* use offset of table t within smbios_tables */ \ /* (pointer must be updated after each realloc) */ \ t_off =3D smbios_tables_len; = \ - smbios_tables_len +=3D sizeof(*t); = \ + smbios_tables_len +=3D tbl_len; = \ smbios_tables =3D g_realloc(smbios_tables, smbios_tables_len); = \ t =3D (struct smbios_type_##tbl_type *)(smbios_tables + t_off); = \ \ t->header.type =3D tbl_type; = \ - t->header.length =3D sizeof(*t); = \ + t->header.length =3D tbl_len; = \ t->header.handle =3D cpu_to_le16(tbl_handle); = \ } while (0) =20 diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h index e7d386f7c8..7f3259a630 100644 --- a/include/hw/firmware/smbios.h +++ b/include/hw/firmware/smbios.h @@ -18,6 +18,8 @@ =20 =20 #define SMBIOS_MAX_TYPE 127 +#define offsetofend(TYPE, MEMBER) \ + (offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER)) =20 /* memory area description, used by type 19 table */ struct smbios_phys_mem_area { @@ -187,8 +189,18 @@ struct smbios_type_4 { uint8_t thread_count; uint16_t processor_characteristics; uint16_t processor_family2; + /* SMBIOS spec 3.0.0, Table 21 */ + uint16_t core_count2; + uint16_t core_enabled2; + uint16_t thread_count2; } QEMU_PACKED; =20 +typedef enum smbios_type_4_len_ver { + SMBIOS_TYPE_4_LEN_V28 =3D offsetofend(struct smbios_type_4, + processor_family2), + SMBIOS_TYPE_4_LEN_V30 =3D offsetofend(struct smbios_type_4, thread_cou= nt2), +} smbios_type_4_len_ver; + /* SMBIOS type 8 - Port Connector Information */ struct smbios_type_8 { struct smbios_structure_header header; diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 51437ca09f..b4243de735 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -711,8 +711,14 @@ static void smbios_build_type_3_table(void) static void smbios_build_type_4_table(MachineState *ms, unsigned instance) { char sock_str[128]; + size_t tbl_len =3D SMBIOS_TYPE_4_LEN_V28; =20 - SMBIOS_BUILD_TABLE_PRE(4, T4_BASE + instance, true); /* required */ + if (smbios_ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_64) { + tbl_len =3D SMBIOS_TYPE_4_LEN_V30; + } + + SMBIOS_BUILD_TABLE_PRE_SIZE(4, T4_BASE + instance, + true, tbl_len); /* required */ =20 snprintf(sock_str, sizeof(sock_str), "%s%2x", type4.sock_pfx, instance= ); SMBIOS_TABLE_SET_STR(4, socket_designation_str, sock_str); @@ -739,8 +745,15 @@ static void smbios_build_type_4_table(MachineState *ms= , unsigned instance) SMBIOS_TABLE_SET_STR(4, serial_number_str, type4.serial); SMBIOS_TABLE_SET_STR(4, asset_tag_number_str, type4.asset); SMBIOS_TABLE_SET_STR(4, part_number_str, type4.part); - t->core_count =3D t->core_enabled =3D ms->smp.cores; - t->thread_count =3D ms->smp.threads; + + t->core_count =3D (ms->smp.cores > 255) ? 0xFF : ms->smp.cores; + t->core_enabled =3D t->core_count; + + t->core_count2 =3D t->core_enabled2 =3D cpu_to_le16(ms->smp.cores); + + t->thread_count =3D (ms->smp.threads > 255) ? 0xFF : ms->smp.threads; + t->thread_count2 =3D cpu_to_le16(ms->smp.threads); + t->processor_characteristics =3D cpu_to_le16(0x02); /* Unknown */ t->processor_family2 =3D cpu_to_le16(0x01); /* Other */ =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220787; cv=none; d=zohomail.com; s=zohoarc; b=GVFKg6CiVkyEN9L5cfme2QHu4cPkjWYKWdffxwWwKiYIbnTzC4azk3IZ2lEhfGz8ODdKH8kTU8mMB+OoBRyOlrvdocCxYpeTIU2AxaA3HIfI2+PISDpPum4pZUj8bC8DWHXQTLEeylC9lKgl7YC0uj1HmBqPrOzNyqEWxLHLKcA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220787; h=Content-Type: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=mg2N2ztf9ds/09j8FrL7e+rOS/4ERui/tR3BrzyphxQ=; b=Ea1rJk6ot9tmf/FMYgiU0M2nr1cz6MeIKTjYkF2xIXeCwTTHSJhXMTPlBZ+vXybE75HEabxIkLdzgYpWX2FaCt8p0+Z29mG9gUm8bkGyD3+C/klDtxzzhjPHMXWj2hLHS03UEpmaC+UG8tWXHl+5fWhTWc8Q6k3dl3wK5SZU1IQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220787318260.4202208714755; Mon, 31 Oct 2022 05:53:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHT-0004hK-SR; Mon, 31 Oct 2022 08:52:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGv-0002X8-MA for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGa-0002Qw-CK for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:06 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-499-4O9ojdBEO7ek_c5dywy5tw-1; Mon, 31 Oct 2022 08:51:43 -0400 Received: by mail-wm1-f70.google.com with SMTP id i7-20020a1c3b07000000b003c5e6b44ebaso3416162wma.9 for ; Mon, 31 Oct 2022 05:51:43 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bq9-20020a5d5a09000000b0022ae0965a8asm7269271wrb.24.2022.10.31.05.51.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220705; 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: in-reply-to:in-reply-to:references:references; bh=mg2N2ztf9ds/09j8FrL7e+rOS/4ERui/tR3BrzyphxQ=; b=Z3vwEpIvB1NJGvK9XTV+iTTL9n4e5srbvCwDNVsNckM0XdypOAiXH9yVrYSietEUupbEx5 ZamdKYm2F/bfJFV26I+ylJPRyG7GVQ8Y7QqGNybZ6QzTk/l06p4rixUVTxxKxZZrB5F6nP sR8Q1HjJXgh1/yGMZQAuxfB9ClrtiEU= X-MC-Unique: 4O9ojdBEO7ek_c5dywy5tw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=mg2N2ztf9ds/09j8FrL7e+rOS/4ERui/tR3BrzyphxQ=; b=vuBpb6M1fqos6rAWSVuOZkM1Od+lmzhx2BgrvzkL1kEdqZ5ZPr8b65p0VSsXQPH3qw EBOqRewYszoUNlopBQim0SqImwoVT1/uW01H2pkUrNqHzTDR+gpn+qgIE+rVXLQNgp3T FRp7ZVn411UPctRku0OUgHTmjzIrQ9QLxbo5YlU9kUkEgqJxcrmQMlRGjWswu347q+8z 6tPgJiN3yqBnpHtRYU3KWT1Pnb48u1jNirQ0Aqi5tSmXIIAVKlsigAPWOY7sEKoTLBd/ pRnAybyNXLt0H1xLe2Iu7P2dmYUVZMxHNUVzQ3K4/LJFWp5L3EpSRMNp46tBL/jyre4Z 9osQ== X-Gm-Message-State: ACrzQf3oRdcz/X3gAIW0FrWxi71pfhTqlNNmoZLtOQ21zmdoXx+XrmYe OunOpyokcocaPKbu7X4J3UXyPnp8rztvSFjDIOGIknnGKadk6ye+m8Lt7jnUMW5dvKvgCFJHfBf /fqsfulhPX7yVONk64V95389cXKvT3z0ThBzQzw8TtAsebPxt4GFl3PQN+S8u X-Received: by 2002:a1c:f214:0:b0:3be:4e7c:1717 with SMTP id s20-20020a1cf214000000b003be4e7c1717mr8114011wmc.171.1667220701722; Mon, 31 Oct 2022 05:51:41 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7GQ8Gaf/Lg+5RjDrtPiHhq1/71wHlOHWbCrHoVj+msZwhb83n73KxJNoJAZNrA2t1MacUR/g== X-Received: by 2002:a1c:f214:0:b0:3be:4e7c:1717 with SMTP id s20-20020a1cf214000000b003be4e7c1717mr8113992wmc.171.1667220701391; Mon, 31 Oct 2022 05:51:41 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:39 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Julia Suvorova , Igor Mammedov , Ani Sinha Subject: [PULL 19/86] bios-tables-test: teach test to use smbios 3.0 tables Message-ID: <20221031124928.128475-20-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220788578100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Julia Suvorova Introduce the 64-bit entry point. Since we no longer have a total number of structures, stop checking for the new ones at the EOF structure (type 127). Signed-off-by: Julia Suvorova Reviewed-by: Igor Mammedov Message-Id: <20220731162141.178443-3-jusual@redhat.com> Message-Id: <20221011111731.101412-3-jusual@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test.c | 100 +++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 24 deletions(-) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index a72f6ca326..d4fbe6791d 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -88,8 +88,8 @@ typedef struct { uint64_t rsdp_addr; uint8_t rsdp_table[36 /* ACPI 2.0+ RSDP size */]; GArray *tables; - uint32_t smbios_ep_addr; - struct smbios_21_entry_point smbios_ep_table; + uint64_t smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE__MAX]; + SmbiosEntryPoint smbios_ep_table; uint16_t smbios_cpu_max_speed; uint16_t smbios_cpu_curr_speed; uint8_t *required_struct_types; @@ -533,10 +533,9 @@ static void test_acpi_asl(test_data *data) free_test_data(&exp_data); } =20 -static bool smbios_ep_table_ok(test_data *data) +static bool smbios_ep2_table_ok(test_data *data, uint32_t addr) { - struct smbios_21_entry_point *ep_table =3D &data->smbios_ep_table; - uint32_t addr =3D data->smbios_ep_addr; + struct smbios_21_entry_point *ep_table =3D &data->smbios_ep_table.ep21; =20 qtest_memread(data->qts, addr, ep_table, sizeof(*ep_table)); if (memcmp(ep_table->anchor_string, "_SM_", 4)) { @@ -559,13 +558,29 @@ static bool smbios_ep_table_ok(test_data *data) return true; } =20 -static void test_smbios_entry_point(test_data *data) +static bool smbios_ep3_table_ok(test_data *data, uint64_t addr) +{ + struct smbios_30_entry_point *ep_table =3D &data->smbios_ep_table.ep30; + + qtest_memread(data->qts, addr, ep_table, sizeof(*ep_table)); + if (memcmp(ep_table->anchor_string, "_SM3_", 5)) { + return false; + } + + if (acpi_calc_checksum((uint8_t *)ep_table, sizeof *ep_table)) { + return false; + } + + return true; +} + +static SmbiosEntryPointType test_smbios_entry_point(test_data *data) { uint32_t off; =20 /* find smbios entry point structure */ for (off =3D 0xf0000; off < 0x100000; off +=3D 0x10) { - uint8_t sig[] =3D "_SM_"; + uint8_t sig[] =3D "_SM_", sig3[] =3D "_SM3_"; int i; =20 for (i =3D 0; i < sizeof sig - 1; ++i) { @@ -574,14 +589,30 @@ static void test_smbios_entry_point(test_data *data) =20 if (!memcmp(sig, "_SM_", sizeof sig)) { /* signature match, but is this a valid entry point? */ - data->smbios_ep_addr =3D off; - if (smbios_ep_table_ok(data)) { + if (smbios_ep2_table_ok(data, off)) { + data->smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE_32] =3D off; + } + } + + for (i =3D 0; i < sizeof sig3 - 1; ++i) { + sig3[i] =3D qtest_readb(data->qts, off + i); + } + + if (!memcmp(sig3, "_SM3_", sizeof sig3)) { + if (smbios_ep3_table_ok(data, off)) { + data->smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE_64] =3D off; + /* found 64-bit entry point, no need to look for 32-bit on= e */ break; } } } =20 - g_assert_cmphex(off, <, 0x100000); + /* found at least one entry point */ + g_assert_true(data->smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE_32] || + data->smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE_64]); + + return data->smbios_ep_addr[SMBIOS_ENTRY_POINT_TYPE_64] ? + SMBIOS_ENTRY_POINT_TYPE_64 : SMBIOS_ENTRY_POINT_TYPE_32; } =20 static inline bool smbios_single_instance(uint8_t type) @@ -625,16 +656,23 @@ static bool smbios_cpu_test(test_data *data, uint32_t= addr) return true; } =20 -static void test_smbios_structs(test_data *data) +static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_t= ype) { DECLARE_BITMAP(struct_bitmap, SMBIOS_MAX_TYPE+1) =3D { 0 }; - struct smbios_21_entry_point *ep_table =3D &data->smbios_ep_table; - uint32_t addr =3D le32_to_cpu(ep_table->structure_table_address); - int i, len, max_len =3D 0; + + SmbiosEntryPoint *ep_table =3D &data->smbios_ep_table; + int i =3D 0, len, max_len =3D 0; uint8_t type, prv, crt; + uint64_t addr; + + if (ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_32) { + addr =3D le32_to_cpu(ep_table->ep21.structure_table_address); + } else { + addr =3D le64_to_cpu(ep_table->ep30.structure_table_address); + } =20 /* walk the smbios tables */ - for (i =3D 0; i < le16_to_cpu(ep_table->number_of_structures); i++) { + do { =20 /* grab type and formatted area length from struct header */ type =3D qtest_readb(data->qts, addr); @@ -660,19 +698,33 @@ static void test_smbios_structs(test_data *data) } =20 /* keep track of max. struct size */ - if (max_len < len) { + if (ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_32 && max_len < len) { max_len =3D len; - g_assert_cmpuint(max_len, <=3D, ep_table->max_structure_size); + g_assert_cmpuint(max_len, <=3D, ep_table->ep21.max_structure_s= ize); } =20 /* start of next structure */ addr +=3D len; - } =20 - /* total table length and max struct size must match entry point value= s */ - g_assert_cmpuint(le16_to_cpu(ep_table->structure_table_length), =3D=3D, - addr - le32_to_cpu(ep_table->structure_table_address)= ); - g_assert_cmpuint(le16_to_cpu(ep_table->max_structure_size), =3D=3D, ma= x_len); + /* + * Until all structures have been scanned (ep21) + * or an EOF structure is found (ep30) + */ + } while (ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_32 ? + ++i < le16_to_cpu(ep_table->ep21.number_of_structures) : + type !=3D 127); + + if (ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_32) { + /* + * Total table length and max struct size + * must match entry point values + */ + g_assert_cmpuint(le16_to_cpu(ep_table->ep21.structure_table_length= ), =3D=3D, + addr - le32_to_cpu(ep_table->ep21.structure_table_address)); + + g_assert_cmpuint(le16_to_cpu(ep_table->ep21.max_structure_size), = =3D=3D, + max_len); + } =20 /* required struct types must all be present */ for (i =3D 0; i < data->required_struct_types_len; i++) { @@ -756,8 +808,8 @@ static void test_acpi_one(const char *params, test_data= *data) * https://bugs.launchpad.net/qemu/+bug/1821884 */ if (!use_uefi) { - test_smbios_entry_point(data); - test_smbios_structs(data); + SmbiosEntryPointType ep_type =3D test_smbios_entry_point(data); + test_smbios_structs(data, ep_type); } =20 qtest_quit(data->qts); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221155; cv=none; d=zohomail.com; s=zohoarc; b=mF7HTmMbuh/1xkgq4nxLlmHGyESGZCZX43a/+fAbBXTOLQ+SjyEzd+JPA4YXOR/JVuFM5YBxNSta/+AI+0nVDcXx7i9vtZdwDu5VTwxveKDG0obHs+4vCL3ztk9WVnsnGbiWf46813DMRgA8VjtLSIKfjqAPSHqK3+zWePPvsXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221155; h=Content-Type: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=owrr89MfJhRkFKdG0BWvvHnNNotD1TbvhM1y5znIgb4=; b=atdRqjjpJVvmKK9SRSRBdzLtgmbbP90pU6AvTz2o8Hwx1pDZJWruiNeG3tz4QO52hHUXvrRKtlb5g2RSNylpDgj9as9ez6FRH+X13CdF67SCX4wwuF3SXyOCIKJyfS5gcM+62LWA1b3s/enqVchB1Cf/PYWePj85RxjgqAhso38= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221155961644.5991340102707; Mon, 31 Oct 2022 05:59:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHH-0003Fa-2Y; Mon, 31 Oct 2022 08:52:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGb-0001zW-Au for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGZ-0002SH-MB for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:49 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-152-b9Ynet0nO_Sv693Fkjfnww-1; Mon, 31 Oct 2022 08:51:45 -0400 Received: by mail-wm1-f72.google.com with SMTP id r6-20020a1c4406000000b003cf4d3b6644so1084856wma.6 for ; Mon, 31 Oct 2022 05:51:45 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id m8-20020a7bcb88000000b003c6d21a19a0sm7014394wmi.29.2022.10.31.05.51.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220707; 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: in-reply-to:in-reply-to:references:references; bh=owrr89MfJhRkFKdG0BWvvHnNNotD1TbvhM1y5znIgb4=; b=SwvT0q2peAyDVsG1K2t37nfRiY5yMLhffwx74KppOPzFJ87sOamQCUsQTjd0hmc03X4Gg2 QZkkY08SMrv/4Hrh0wb3jCJ5ogn7mCQW1bBnXosyCbftLwMMb9NnwCUngaFNnAFl2mQMkc XKsmdT9+IqTFJWV6zrC+RNkr/XHB8sw= X-MC-Unique: b9Ynet0nO_Sv693Fkjfnww-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=owrr89MfJhRkFKdG0BWvvHnNNotD1TbvhM1y5znIgb4=; b=F0ZI30gL1G5cvk72rsBGkCDOuIPtgMe8dXBfdVIO1exZpNSMzFCZ1EJfkqL3WA+4Xt iuEN+e/qG0nHWk0emyJJyBwy8Rq9JbWqJJcz1H7pmFgaMuU6PzRqvbAKmloZz9jdcmNk 0NWo8j7AmORDPMutEH2nWzMJUKqsL7eOPpkI96YeYOUNdDQIXSDWciK1XBlyjE9ZgqVK XM1Y2+YLi5y1ysY5CZjEUNnZ4l1UJed0G2+yvGgCBViGV+l7z/SFG5b3wjs4nYljDSJo FZACCjIjE8SsuYj00qt3ZsLA3nWieOF6LGwSFQhvqfIXTJrXc/NCsl/+4vMGB2S/YXU4 e6EQ== X-Gm-Message-State: ACrzQf25dM5D9g3PYYI0n5fjR829Qesco4ZOX+6Av0C1XfzXBxCP5MF3 KBUeDojPPpiGvi3ukQ0jPW8+SkkwoZjHgov9k+2ZvWRVMOvGBsDSrKHOedx+zhbghYFb7vGanFC PPrwGdoab+SxO/S7SfEiiCvPwyhiypA3yDchKyTu0KJZIQF4FjFJqUW6BIK5I X-Received: by 2002:a5d:5c04:0:b0:234:88dc:3d19 with SMTP id cc4-20020a5d5c04000000b0023488dc3d19mr7555900wrb.681.1667220704328; Mon, 31 Oct 2022 05:51:44 -0700 (PDT) X-Google-Smtp-Source: AMsMyM74ca/kEZbh4L2DCx2rvj4HEMBxoue6JIdVDMDscgDUHx9Ywat3ZFKHggpIxyzvuGXCXvAEcA== X-Received: by 2002:a5d:5c04:0:b0:234:88dc:3d19 with SMTP id cc4-20020a5d5c04000000b0023488dc3d19mr7555877wrb.681.1667220704036; Mon, 31 Oct 2022 05:51:44 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:41 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Julia Suvorova , Igor Mammedov , Ani Sinha Subject: [PULL 20/86] tests/acpi: allow changes for core_count2 test Message-ID: <20221031124928.128475-21-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221157324100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Julia Suvorova Signed-off-by: Julia Suvorova Message-Id: <20220731162141.178443-4-jusual@redhat.com> Message-Id: <20221011111731.101412-4-jusual@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Igor Mammedov --- tests/qtest/bios-tables-test-allowed-diff.h | 3 +++ tests/data/acpi/q35/APIC.core-count2 | 0 tests/data/acpi/q35/DSDT.core-count2 | 0 tests/data/acpi/q35/FACP.core-count2 | 0 4 files changed, 3 insertions(+) create mode 100644 tests/data/acpi/q35/APIC.core-count2 create mode 100644 tests/data/acpi/q35/DSDT.core-count2 create mode 100644 tests/data/acpi/q35/FACP.core-count2 diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..e81dc67a2e 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,4 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/q35/APIC.core-count2", +"tests/data/acpi/q35/DSDT.core-count2", +"tests/data/acpi/q35/FACP.core-count2", diff --git a/tests/data/acpi/q35/APIC.core-count2 b/tests/data/acpi/q35/API= C.core-count2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/DSDT.core-count2 b/tests/data/acpi/q35/DSD= T.core-count2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/FACP.core-count2 b/tests/data/acpi/q35/FAC= P.core-count2 new file mode 100644 index 0000000000..e69de29bb2 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220770; cv=none; d=zohomail.com; s=zohoarc; b=UsjvvIYKmSNUN42nt9pfRMc+mFwAEzyVyKr8dy/1Xb4Kzi/h5SEu+sPDeTrqOwwpaGBK9cz5C9bfNXb7UBR4f0V1/2js4H4Eh8G8slAcQQUU/JMi3Rr0hRHUYJ8xR8pbfbwhdirDFl7/nXoJv82Nw57dYFWq2/gKlzBHx01A54s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220770; h=Content-Type: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=o13JY5YCx8gj9VljHcIBP5/cdaG4cm7x8QO0SOJPY3M=; b=UEUr9wd+vc7mX+gmQdvjDtyQQtyRGKSBuFEcF/lee/QZKOGoG22fG4cUFjRCCDDwQn5How0l0R9QCOjYNVhMdAqGhu2qoVJun6bZ3f2c9uGBIIlTNWF/UzP2WcCVRb70X1P+9lDdU2ITHoFpst/CQLHd+IZYKvmBPOlgmqg4wOo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722077057721.82370610978853; Mon, 31 Oct 2022 05:52:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHL-0003hR-5P; Mon, 31 Oct 2022 08:52:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGj-0002M9-VE for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGc-0002V6-7h for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:51:55 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-277-geLbPnsJOfaB7Tt4vX03cw-1; Mon, 31 Oct 2022 08:51:48 -0400 Received: by mail-wm1-f72.google.com with SMTP id x10-20020a05600c420a00b003cf4dbff2e4so5767508wmh.8 for ; Mon, 31 Oct 2022 05:51:48 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id x3-20020a5d4443000000b0023659925b2asm7039945wrr.51.2022.10.31.05.51.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220709; 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: in-reply-to:in-reply-to:references:references; bh=o13JY5YCx8gj9VljHcIBP5/cdaG4cm7x8QO0SOJPY3M=; b=GFwhX70djEmQIRXoCRCNQzdG69xeuAYgKpe/JdzQsGgRYzG+vkQZ+1pd4HIF9s8okqYAF3 6e6S6i5dwMbDZRen6ZHD0/Th6GQrRfgtb8kdWBGHjAex4mF/vBdx9+k4WCHVqJ32sqfeee 8k9/s8+a+mrUO7SJaZwdkdYh5u9MqDk= X-MC-Unique: geLbPnsJOfaB7Tt4vX03cw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o13JY5YCx8gj9VljHcIBP5/cdaG4cm7x8QO0SOJPY3M=; b=sDlDz6GsLiyMmUNGzTxwv2qLsfyCV7wbzubaZaVMD+b8f/KDXOH4BwxbwImnTrrUGa l5H/W9Yk5m+4Cp9loVY5fP6dI5fNLleDl1EJ5TLMcNlkbdPokW0icEhCpmMo6SpTv+55 TXQrcXgBntlIz5UX9F7qz+mSvkVzBN4aXU1gV0NtAsg6xKr/NSAgcHpMOlpkFrcQ7BuI SdR8zveKv4GlCwId2Thv9hBeVOieyRyhgcQRPssoN5egs7r95YcKHJjynZiU5KpoUdDA 9hbeDaxWQWS/MegMBc2R29KNKWiU6KTO9IAmToKRcaFOitwM313RY09v8P+2YHEwdbSm M+/A== X-Gm-Message-State: ACrzQf2OPuyweTCOeZDG9P8x6BPxwk7rRPIove68TnevnO9MbmsmwKkJ eNhmaCDnhq/FkHB9iITXfvJriy+U8Yzat7+v7bPAOy3+m28KibM7P7O8toalajsp5c9Irw8Hxgq mMuWqcN4EF8VWdk8dYDhcYJnMSUdJgV1t1PATD7iUXQdxNAuo/jNlUzKUKr9A X-Received: by 2002:a05:600c:6008:b0:3c6:c3fa:c173 with SMTP id az8-20020a05600c600800b003c6c3fac173mr8380481wmb.190.1667220707048; Mon, 31 Oct 2022 05:51:47 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6QJROF3E4VApWLWvmUQ3Ry+uAk9oR7W/El+IuYxYnxQ7V56Fwq61nVjnM4L04uxgazalGP9A== X-Received: by 2002:a05:600c:6008:b0:3c6:c3fa:c173 with SMTP id az8-20020a05600c600800b003c6c3fac173mr8380458wmb.190.1667220706720; Mon, 31 Oct 2022 05:51:46 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:44 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Julia Suvorova , Igor Mammedov , Ani Sinha Subject: [PULL 21/86] bios-tables-test: add test for number of cores > 255 Message-ID: <20221031124928.128475-22-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220772501100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Julia Suvorova The new test is run with a large number of cpus and checks if the core_count field in smbios_cpu_test (structure type 4) is correct. Choose q35 as it allows to run with -smp > 255. Signed-off-by: Julia Suvorova Message-Id: <20220731162141.178443-5-jusual@redhat.com> Message-Id: <20221011111731.101412-5-jusual@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Igor Mammedov --- tests/qtest/bios-tables-test.c | 58 ++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index d4fbe6791d..e402b57d46 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -92,6 +92,8 @@ typedef struct { SmbiosEntryPoint smbios_ep_table; uint16_t smbios_cpu_max_speed; uint16_t smbios_cpu_curr_speed; + uint8_t smbios_core_count; + uint16_t smbios_core_count2; uint8_t *required_struct_types; int required_struct_types_len; QTestState *qts; @@ -631,29 +633,42 @@ static inline bool smbios_single_instance(uint8_t typ= e) } } =20 -static bool smbios_cpu_test(test_data *data, uint32_t addr) +static void smbios_cpu_test(test_data *data, uint32_t addr, + SmbiosEntryPointType ep_type) { - uint16_t expect_speed[2]; - uint16_t real; + uint8_t core_count, expected_core_count =3D data->smbios_core_count; + uint16_t speed, expected_speed[2]; + uint16_t core_count2, expected_core_count2 =3D data->smbios_core_count= 2; int offset[2]; int i; =20 /* Check CPU speed for backward compatibility */ offset[0] =3D offsetof(struct smbios_type_4, max_speed); offset[1] =3D offsetof(struct smbios_type_4, current_speed); - expect_speed[0] =3D data->smbios_cpu_max_speed ? : 2000; - expect_speed[1] =3D data->smbios_cpu_curr_speed ? : 2000; + expected_speed[0] =3D data->smbios_cpu_max_speed ? : 2000; + expected_speed[1] =3D data->smbios_cpu_curr_speed ? : 2000; =20 for (i =3D 0; i < 2; i++) { - real =3D qtest_readw(data->qts, addr + offset[i]); - if (real !=3D expect_speed[i]) { - fprintf(stderr, "Unexpected SMBIOS CPU speed: real %u expect %= u\n", - real, expect_speed[i]); - return false; - } + speed =3D qtest_readw(data->qts, addr + offset[i]); + g_assert_cmpuint(speed, =3D=3D, expected_speed[i]); } =20 - return true; + core_count =3D qtest_readb(data->qts, + addr + offsetof(struct smbios_type_4, core_count)); + + if (expected_core_count) { + g_assert_cmpuint(core_count, =3D=3D, expected_core_count); + } + + if (ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_64) { + core_count2 =3D qtest_readw(data->qts, + addr + offsetof(struct smbios_type_4, core_count= 2)); + + /* Core Count has reached its limit, checking Core Count 2 */ + if (expected_core_count =3D=3D 0xFF && expected_core_count2) { + g_assert_cmpuint(core_count2, =3D=3D, expected_core_count2); + } + } } =20 static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_t= ype) @@ -686,7 +701,7 @@ static void test_smbios_structs(test_data *data, Smbios= EntryPointType ep_type) set_bit(type, struct_bitmap); =20 if (type =3D=3D 4) { - g_assert(smbios_cpu_test(data, addr)); + smbios_cpu_test(data, addr, ep_type); } =20 /* seek to end of unformatted string area of this struct ("\0\0") = */ @@ -908,6 +923,21 @@ static void test_acpi_q35_tcg(void) free_test_data(&data); } =20 +static void test_acpi_q35_tcg_core_count2(void) +{ + test_data data =3D { + .machine =3D MACHINE_Q35, + .variant =3D ".core-count2", + .required_struct_types =3D base_required_struct_types, + .required_struct_types_len =3D ARRAY_SIZE(base_required_struct_typ= es), + .smbios_core_count =3D 0xFF, + .smbios_core_count2 =3D 275, + }; + + test_acpi_one("-machine smbios-entry-point-type=3D64 -smp 275", &data); + free_test_data(&data); +} + static void test_acpi_q35_tcg_bridge(void) { test_data data; @@ -1859,6 +1889,8 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/tpm12-tis", test_acpi_q35_tcg_tpm12_tis); } + qtest_add_func("acpi/q35/core-count2", + test_acpi_q35_tcg_core_count2); qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge); qtest_add_func("acpi/q35/multif-bridge", test_acpi_q35_multif_bridge); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220820; cv=none; d=zohomail.com; s=zohoarc; b=V2kt9ldxihHmgL1eAjK/9nnDnlXdTGoDEIOLavrVZgFsNpAuDd947k8JU2jz/iMe0GGIhWLIOTu3s89ywz+vh6UqLvTRDTsO/Ew599KtdOwx3o0NTTzfe2+X4EMzaPDnXto06mNDR7QqPaJzTeHLGNDgs87ig2Cl+nbXRP49B8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220820; h=Content-Type: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=YpTVCBQx97soKNip9HU8Kk4s7a5FTa8L9iC2RWQgKTs=; b=faxAVEYvMsKLTJ7lNJCvwcjHYswmO3H4fvW/g9TwmhPLS5l8Bi7oUN3j/qms8MyxkxGYze5LN9LHm9gCr0YlE5cMWpegrxtskBThZ5RtYk7jdxPu0fDrcSO/+T3T3w9Zn+hqPPY18euClLhsYCjwnZ9QOjqN5BcGJB1Q2Wl/5KA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220820249974.4207790139277; Mon, 31 Oct 2022 05:53:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHQ-0004H8-Ab; Mon, 31 Oct 2022 08:52:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGt-0002XB-Vs for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGh-0002WY-NM for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:07 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-148-bMUcqmsHPdGT9Dw2Ivia5w-1; Mon, 31 Oct 2022 08:51:52 -0400 Received: by mail-wm1-f72.google.com with SMTP id v191-20020a1cacc8000000b003bdf7b78dccso5267747wme.3 for ; Mon, 31 Oct 2022 05:51:51 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bu15-20020a056000078f00b0022ac1be009esm4732572wrb.16.2022.10.31.05.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220713; 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: in-reply-to:in-reply-to:references:references; bh=YpTVCBQx97soKNip9HU8Kk4s7a5FTa8L9iC2RWQgKTs=; b=NK9L1hvgY0oX175blTq31hy8kLQfvR5Rl7zYnlQggyl4ikSM/Wsr2PMdgFMhresVe4bGhs jFod62uJuBw0hI7fYDewKVMcbnhLQzvnnforI2l/0Hl2oKgFdGJOeCrbvw71FqMQWBC1iY wVLJSKmc5tBQjiOH8Zs1ufy+5FCoQY8= X-MC-Unique: bMUcqmsHPdGT9Dw2Ivia5w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YpTVCBQx97soKNip9HU8Kk4s7a5FTa8L9iC2RWQgKTs=; b=s8och4xVsSMoTKUyP9c9QnsT2zohxVm/BjxRaeCUxUvNEt0Wyzno/LaBdHjcZC7Gdq 1YXXF2qrGuJG+NT1SXVGdVHl5JAQTnpG+NnAdk4gR1TxsBZSe29pv5/X+mTkjIQqUcYW IU9lfVDQXkxsDzHT/88hHA/l14kYCa0kDP22r+wip3JDOIMqLWpOZLqoduBisQ3Y9A2z VV8riVwfGt069Lg6PTWu2hb5Ad7IPGXkh7taf9cpvvw65IzcUVuF0zjEgy57xYHX2XKv iNFqJuG2ALq5lwkRCj2ye7hQ2OnmS+1Iiz+LKNcUXzE3tXdNYewX/pb4GKBYlteqpNm1 dpAQ== X-Gm-Message-State: ACrzQf1CmBd2QoAz2TYbjAJZDcnm/O4Lru0yxXWWz/HKuK1gDfHpz4Pc I6FlSvPtL6F6N7gtkZs6yKHwFgkKmnNhS+zqE+5nR+BPeCDuMP+NHD/VYIAUwy/zmH71oE0Hr8H zkrgmfIaLk1WhoA6Dt30x42z3dvGfzrIZdP68lMKYdF+XZgyhMXUo03hQ5btX X-Received: by 2002:a05:6000:22e:b0:236:6e38:4d9b with SMTP id l14-20020a056000022e00b002366e384d9bmr8281285wrz.4.1667220710105; Mon, 31 Oct 2022 05:51:50 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7O72CQOIcCM/ck2GctaJpBqJx3GLkerNULkC4YWQh4W9Sigtalb1a4f4BXynp7bUUZaY4mGQ== X-Received: by 2002:a05:6000:22e:b0:236:6e38:4d9b with SMTP id l14-20020a056000022e00b002366e384d9bmr8281254wrz.4.1667220709486; Mon, 31 Oct 2022 05:51:49 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Julia Suvorova , Igor Mammedov , Ani Sinha Subject: [PULL 22/86] tests/acpi: update tables for new core count test Message-ID: <20221031124928.128475-23-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220822453100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Julia Suvorova Changes in the tables (for 275 cores): FACP: + Use APIC Cluster Model (V4) : 1 APIC: +[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] +[02Dh 0045 1] Length : 08 +[02Eh 0046 1] Processor ID : 00 +[02Fh 0047 1] Local Apic ID : 00 +[030h 0048 4] Flags (decoded below) : 00000001 + Processor Enabled : 1 ... + +[81Ch 2076 1] Subtable Type : 00 [Processor Local APIC] +[81Dh 2077 1] Length : 08 +[81Eh 2078 1] Processor ID : FE +[81Fh 2079 1] Local Apic ID : FE +[820h 2080 4] Flags (decoded below) : 00000001 + Processor Enabled : 1 + Runtime Online Capable : 0 + +[824h 2084 1] Subtable Type : 09 [Processor Local x2APIC] +[825h 2085 1] Length : 10 +[826h 2086 2] Reserved : 0000 +[828h 2088 4] Processor x2Apic ID : 000000FF +[82Ch 2092 4] Flags (decoded below) : 00000001 + Processor Enabled : 1 +[830h 2096 4] Processor UID : 000000FF ... DSDT: + Processor (C001, 0x01, 0x00000000, 0x00) + { + Method (_STA, 0, Serialized) // _STA: Status + { + Return (CSTA (One)) + } + + Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table En= try + { + 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // .= ....... + }) + Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x= =3D0-9 + { + CEJ0 (One) + } + + Method (_OST, 3, Serialized) // _OST: OSPM Status Indicat= ion + { + COST (One, Arg0, Arg1, Arg2) + } + } ... + Processor (C0FE, 0xFE, 0x00000000, 0x00) + { + Method (_STA, 0, Serialized) // _STA: Status + { + Return (CSTA (0xFE)) + } + + Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table En= try + { + 0x00, 0x08, 0xFE, 0xFE, 0x01, 0x00, 0x00, 0x00 // .= ....... + }) + Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x= =3D0-9 + { + CEJ0 (0xFE) + } + + Method (_OST, 3, Serialized) // _OST: OSPM Status Indicat= ion + { + COST (0xFE, Arg0, Arg1, Arg2) + } + } + + Device (C0FF) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: H= ardware ID + Name (_UID, 0xFF) // _UID: Unique ID + Method (_STA, 0, Serialized) // _STA: Status + { + Return (CSTA (0xFF)) + } + + Name (_MAT, Buffer (0x10) // _MAT: Multiple APIC Table En= try + { + /* 0000 */ 0x09, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, = 0x00, // ........ + /* 0008 */ 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, = 0x00 // ........ + }) + Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x= =3D0-9 + { + CEJ0 (0xFF) + } + + Method (_OST, 3, Serialized) // _OST: OSPM Status Indicat= ion + { + COST (0xFF, Arg0, Arg1, Arg2) + } + } + ... Signed-off-by: Julia Suvorova Message-Id: <20220731162141.178443-6-jusual@redhat.com> Message-Id: <20221011111731.101412-6-jusual@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 3 --- tests/data/acpi/q35/APIC.core-count2 | Bin 0 -> 2478 bytes tests/data/acpi/q35/DSDT.core-count2 | Bin 0 -> 32414 bytes tests/data/acpi/q35/FACP.core-count2 | Bin 0 -> 244 bytes 4 files changed, 3 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index e81dc67a2e..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,4 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/q35/APIC.core-count2", -"tests/data/acpi/q35/DSDT.core-count2", -"tests/data/acpi/q35/FACP.core-count2", diff --git a/tests/data/acpi/q35/APIC.core-count2 b/tests/data/acpi/q35/API= C.core-count2 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a255082ef5bc39f0d92d3e372b9= 1f09dd6d0d9a1 100644 GIT binary patch literal 2478 zcmXZeWl$AS7=3DYouz=3Da#M-K}6ZwgLuNAQ;$~*xjvQcY@uCVs{~Sf`WpLVt2Rbe!ORA z_B`J^b9R56*&pj2=3DM2p(=3D#;b`y@>U1KQZ2 ztu5Nwq0xx;_UPb%CKH;?XtAKxijI!xf-7uzGc@Q3Gq% z#9Fnmc5SRv2fe+~#|M4+PE2*{()H?L{rcFT0s8r&zdtr?h>aRyuWjcwXs+qT%Q9ky?e9Xepgju;w>ojPIX&e)|3 zcI}GYx?%V37#4;-dSK6<*sB-z?u~u=3DVBfyjuOIgBj{^qaz=3D1eu5Dp%ULx$kcp*U<9 z4j+yqM&QViIBFD*9*twh;MlP^ZXAvuj}s=3D~#ECd*5{8FkL5Yu4b}wYY8_u3wKEHsHpMxM>q^-i%we;MT3UZ5u{MiV+Y2>;Le@6 zYZva`jeGXs-o3bQAMW3e2M*xDgLvo=3D9zKjmj^NRwcZnq0$#t4H*R2JA|@r_&6{}Z z7A7ZSN($b-jd$+g-Me`29^Su?4<6vdhnSj*j~?OU$C#FePoCh@r}*p{K7WocUf|1@ z`05qDevNP5;M=3D$O?j62=3Dj~_nZ$B+2w6Mp`TU%ueiulVg7e*ca?e&Ela`0E$`{*8bB z;NQQPo-UeQHSM3S%%ZeJ#vXl>ElNA87Nwn3i_*@jMQIn+qO_}OQQA$lDDAE~Lr49*wAgf6Z7ljNgG@%F cu9Hk=3D{TGbMqHkcbS~Dh#{`5cn(qE|k2lzA_5C8xG literal 0 HcmV?d00001 diff --git a/tests/data/acpi/q35/DSDT.core-count2 b/tests/data/acpi/q35/DSD= T.core-count2 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aa1be16f4efe23711b776b16fe3= 9b84086028bef 100644 GIT binary patch literal 32414 zcmb8&cYKpo7YFbsU8HH+rlo9z3b+U9Zrzz}ftJ!1QH!<(RE8r8sE8;OMZ}2}+*+{i zy|?1tiW~Rdd*keT&hy;l{+@H|=3Dkv-R&AG|F-*ax7^fXT%nrKV3^^)T)%kx8ca-^=3DM zIJ{3&q?rDBEX(4UF9Y=3D%)2+6p(Qs|MCnqh#)3z+fj_FI-TeM>|Jhj$y-t3OG9UTi! z?(lRbtQqSAYi4vNmapuXVezDeGZH=3D@2Z2~#drP>ztt;Ydiqr?a?RE80e`ur6>urxX zQM$K16m7P=3D?NjTcR?(yZ?UP#~8LQ@5k?6FNp2p1X*#!fAfwqRX%6=3DO?a<8@17KAqJ z{`x_y=3DJ_&cLMdH(>9Q=3DrUpf|d_(pZ~1kUcB<5|MX?b}Lv2AYxgSyWA=3DU}r9e@9?&+c%Z%|)NbF&RKRE|rm4PpN}8|3=3DWpvOpBRqPZO%6(oyw&$ zlI~F7pjuCd)nR!&wVqklEV>+%Mtob>xQ5A7Q>*d^x>k98nPd1aY3nMT)YMv%v@@J< zu*Wqw;LEM`9Fu-by4O2qsV$dACO4$kWYTQ9`}$e4Iel}w_c0^Ja9Y-sl6Y;>0KAQEnz+ECn7AKj<8%@dv!nP?Sl)f9j-qH*Q?#WauV<2aE^MrN>XVj=3DV;fcv`Lbcy zBawy#TZbIl(KEJtuGKTFdyX%S9`Z}<2acZ}r+rp$LAqxdf3emL=3D^4~L*Eb+hn3-nf zTAhiGm7SK=3D+v#npkHoDae>+`z60>;}IAdQAKZ*j8FYRY;Q*&!m;l%k%3v)8);b=3D{2 zoEWp5*h6vLD)jU9zBC%tCI{&>sIv-lGpG)F>NxY%h*#0XJm)rh9ZgLRc_sPw+%$V7 z%~c~_nVgzt*(+(Py^@B!lB%)irrRr%6{K6dGC4KfSxHmvl{Dm)$t?6la^~7jhP^U5 zHN#n%ES`qA&rH`oGwqehshQ5oWbrh_eP+4#nPsm`PR(-flZLp@0j_-xaP4z|d!IDK zeR^H{^t$%xb?=3DjgxKH|#1NU^cYoFQfebNy3>2vMV=3Dh~;wy-ynAK670A%yI2A$GuM) z;y&p|AACRku6_F5`=3DlZ6GuO4xT-QEx-TR~=3D?laG|&pg*Y^W6KSA?`EZwaY1x4b+)uwP)p)as#Dda-Y;dow@c(YM?Nc8>lnYUdauVhRJ zX_(w6HBe`+y^`YD zse!^&ZlKOodnGqe8YcHi4b+)yucQVFQ@MdUQ|*=3D9KxvrVCpAzSK?9``Hc%R31EnD} zP*_O~6jpKrg_YbuVI?(CSV;{OR&oP{mE1sKB{fi3NevWMas!2x+(2O^HBeYd4HQ;# z1BI2`Kw%{{P#Pt_yVO8wMBg#{&g2G4L;5x(hrBX*-%Fw*wFBHYN1w-zuSJX+RHCU*JbfVsBPIU{~jUj;dt$`f`fO>!(DTvuQ$euprNub4r$# zZ6EqsWUb=3Dse3|sMKCyVVFW=3D&bifE=3DoEt3Y&?+BsfArC(tpW&lFUMjn#V6boCDS1|Q zI(0XTetui@lbDWP6y@6oetNkCswPxa&>pRCv6gV`TWVjE&j+9^nh|NX$3xm%np-@p zW~&-FJzuY~hedWec=3DCT|4@35_ojpwTVfJuQ|JlQBT@Ac<=3Dhzt?-&1?{rTvHW5lA1g z(?>-5$iJkIsPs{>c^@6n`oDJ{h4fK7eN?26{!99(N*|NyGyX&R7^IKc>0=3D^&>|fHy zRQk9~pZOos$02>(P9GQPIo6VVnEL41NzExY(loWW?(hYPLlz!feB^=3Di z4_|oX%me3JZJtQeq>1X`n(On`dN%nt`8|F*tWQmekDYJw)7uBjw&g*{DvmV88aRXZzAP zE_LE`j?0`lgX3~1&g8hliL*Gabm9RVS2?kl<7y|)=3DD5a*eH@3JIEUk~6Z<)iIB_n=3D zQ76vhIOfFp9LJqFKye9`&ovittm-f1Sk*s}V^x0<$EyB89IN^VbFAtg!m+AM!S5)nCD}s=3DtzBReu%7s{U$@RsA&_tNM50Sk=3DEP$EyC_I9B!V z&atY04~|v+dvdJm-;3gMRey+MRezXcReywIRezLYRey|QRezjgRevqVs{T5TRsHoG ztNJH!tm>c0v8sO($EyAYj#d4Q9IN^#bFAubqPRlUKZRpee>2Cb{uYi^{jD6U`loWN z>ff7VRsS@ORsH*Ltm@yFV^#lt9IN`e2!K93piHwFXUL&e-y{6{-Zfo^&i8rs(%s3 zs{Ug+R`oCDSk-?V$EyA%9IN_|=3DUCN$0>`TUr4(1I`j>I6>hI!M)xVr$RsV?`tNKsk zSk=3DFRV^#mj9IN_Qa;)k3g! zqUwK$V^#md9IN^t;aJuGD95V)$2eB?KhCkL{|Sy&{ZDeN>VJx3RsYi*tNNeeSk?b5 z$EyD4I9ByP&#|ii1&&qy8!3*e`d{Q&)&CO5s{WTbR`tKav8w-7j#d4yajfcponux1 zCXQA8Z*Z*Yf0JWX|63fZ`rqbQ)&CC1s{VI5R`tKfv8w-liesw&4>(r!f5@?_|09l7 z{U39z>i>jeRsW|PtNK6VSk?bI$EyA>I9Bz4$+4>cD~?tDUvsSL|Au2#|F;~g`oH5? z)&D)kaaI2h9IN_&fg+TKNVf;H2OebD z1KI=3D+GVKBFf(KdlfVRPd0rr6Q!2_>7ppEb#+aAzPc;K@Kv=3DtuY*aO-N5B&CkHp7El zdqBJ4L7qLJ?eHMq9;p2Uc)%|R_?7~Dp!QQ}4@&10)n(DCN}=3DqwvD3$A;EOtbvBu{b z$*bvwRl@4%8Qv{#;FoI&Up}23-q$Sem{g-Wc zBaN|Xg=3Du{WYi7bTYkj=3D1dzL3*%}RJW5?1H>M*mse9iBBaa|Y6t9f_GTsl8=3D+CA|dg z8L~!ROD{raUfz@4-RbM2M3*P}yS-k|gCbzWu|K*PE z|M6n@bmt}J^mE@Nd};Dpo;p`vNq2L<)wM0JrWeCOI^043=3DwJXnvc0|h_@?887rF67AwbbLWm*%vqgAqXwFdmz! zW2The9p@amx&l6IopRFBY{#E+d}(xSFjIVELeNGSuQ3@ugg`we1ubX+(kWoAk#6QxWoRnoibQlf)MDJd&UN?9mn zX{n0dZI=3D=3DqtxZV-21scDN&~c1O%D($(V4|5$?KJp7bUNjYV0#;-H(E7kh1Off9PSF z`rc)ul&z%@zq=3D#uaUV!NpRCD;l21!veve20%mZJ1-zLau7%FUHE<)W0Ur5L@tFQq(?^75pVhfQON9j}2kRehUg3=3DHzRnyrAQW^@<(4kTq ziqcRm)zH}pQW^%*uwhafhSD%Ch3ND?DGdi{_;4u=3DM`^g0!gRKRltzFwVuX}Npfo~D z5juN8N+UrUIZ{d^Q5vbGD4oq9r7b|(Vhbs4fzlRQiqY8(QW^!)s8LcHh0-W3#p!GZ zDUAkc^k^xKMrm|PDh(E!QZY!*|Kh=3D)rHZXgX)BPn+Db}Wp|q8j zDz`SJtwGv)YbkAw($-q4+QyW&0co3Uq_ho6+i0nJTT|K=3Dq;0pA(zYmVtEHOlOldoi zw%blh+o80bmO|T`()J*2zrB>UM`?R4g?BKe9YES)2Py4<(hgdR>}X0mg0$m~QrZ!v z9kmqQ$&_{iX{Vi}v=3Dd4@X(_g|DeVl>&O1wKXOwoNp3h!!4yMnaqu2R|+rCqfY+0B%818KM2q_i7KyJ;!9yD9As((b!UX?K)%*HUZ` zQ`!ThJ@$~&9w_ahrTCtvv?oY=3D?kS}`QQ9*ll?V4SrM*DfYcDD7h0V*lT6{F%uoSf-?imdc~1 zL??Zvq-a#u#OF$;q^OoEVx~mrd!?jUOiFy(V@ir?sWNU#bgEZMiqqLf^r8)phVU7T zDJia{s#;T`v%FGLZLO5}WWq((iAO~Hk(p2NX^YsYDTG9OJyylM5p?tzIQDxQffh|MN8$arbK^r zAtkl8N~sm4RxMRbHKnN_O`R&GsVGg=3DQsv&Jv^Pk5?=3D7XhQQBKeRntsq8c5ToNog8N z)3j8*k16c~(mwl0X&;pK(NfL6rnE0e`|c~HeNoz1OQHQtX+Mzm+fPdSp|qct!fmG1 z22xv_l-f{g(^6!*DNP4y`gAExM`^m2qWhcD{vhqYzm)bzX@4!n4ltzyKsw+6DII{) z0a}W;n-cxOjMTHGyMX-b_Sb#_Xr6QxcqmCi7w z86eG=3DA*C58&CpWWOjDW((#)Asnu*d(EtStQrCA`&nkA)KD9zGR#et@DAV>!uD5V2Y zI#5fM2bt1AARTm&lnz4aAT3oLY)S`%bnwAaIvAycwNyRZlxBl8d$yEjqcmGfHFHd9 z4oGw6NNEmAbF>tiYf5uLnmboYb5WYBrSLpcng`Onc~Y8((mX9i4l$)eKsw|QDIJ2+ zAzF$aYD$NKbm*Z{IuxZtwG=3Dzdlnw*wu*0Nu7)pm}DSo&q9S+jrhfC>jlnzfxRl$TQ zB|u6fq?AA@p{0@|Oz8-ajyOU}N1$|smP(H_r6WN)@<=3DHiiPDi;Dw}Ug^Ff+FUrO^) zny;nu1*WtBqy-D4v;d_ATB=3DxRN((_+xKK(9QCg^_%A-u_D3FdiN=3Diqebd;8=3Djy9#E zK|16l}rbPP(zXsKqADJ=3DqN(IP1=3DLTQnfLdTlYu^=3D6Ltdx#L z=3D~yj=3D7n{;zkQOhN(qfbrYbkP^DIEvWamPvNIFydlQgn$aEdgoC5-BY~X^EC%$D7je zART|al#WN~crC?GFr^bfI^hHzAa!*~sSBkpEtM@drR5+kUoNHPC@t4g`H7}JWX&p(N>-cFYLHg1meOjJR%@yBY*RWLq_fYK(%C4Tt);SV zQ|bn(yIV@#D0OS8{2Ws{2c&b(kMXd0MJD-;~Y=3D>HPDhbUsSwYbkVr zDO~{41s6!^0+cS$Qusnsx)7ubFO<@SC|#(f$VH}f5l9zZB&CZ`x=3D2gWi%scbkS@Mh zN*AMav6f<&n9?O6U2=3D((Ej?(2?s=3DUIKt^nzZE2MM^y9>Pl0(5~M4yl+u+bU8$w& zt4!%CkgmE)N>`zDm6mF*Hl?dUy83Da& zJ4&}}sqzj}x&x#;?vTF&FwbT>+OYbkV(Dcu9oJ@-iI9+d9UQutm|x)-E-@0HTMDBY{2$bF`CA4vDz zC#CyPx=3D%~d`%US7knX=3D6vJ@9~(9zf{2P}-oSl7~#`A&?$=3DNJ5)gI^ax6iXsP^BQ+gDnM<12aqbNP9rHaQ)=3D`oNVdrV4?q4b!RDjzqc$3c4haVb5H z(&JjHdcu^R0O^S*r1S(zPiU$7NmF_fq$i)0(vv7Xsim5yOzA0*o_b13PoeabmO@XP z($gS4{j`*xM(JrSg`Y8{XFz)987V!3(lc6$JZnnNg7oaOQhFApXSEc4&Xk@5>AB~m z^c+ghX({%+DLoI;^Uq7^d6b^lQv3x|dI6*tUXaoYD7}!9qQQ-(v=3DO9@8>O@nrHxuD zdC`WrSu|7FKVguB~y9{q?cZj(n~14q@}W#P3dKjUVd3hFQfFbmdal-rB^_D zEms(96uUIppZSEckSO0R0E@-4W!pzlhSJ_y{4tA*G=3DhlkY0aXO0T2z zx|XUpnbIbZHf@s9CX_a5spbt+dIO|4-jLE8D7~Sj(3__8CP;6-DWx}2dQ(f`w@m3R zkluPrN^ha`mX;!Ko6_4Lz5TY7-bU$dEk)lkrFTGj=3DN&1%gVH-%ioI(}?}GI1yHa`=3D zrFXRyf6tWO1L?i@r1Tz2@1>+z@O@KyAEfu+m(u$vy|1N`4@~I;kUsc8N*|!~ftE@? zG^Gzg`tU<3eTdSBS}Oa9fzI^chN@X{q{iQ~DgF&p(&a=3DO}%y zrJ65H=3D?jp)_(Dowp!9{7LSLHFmmq!lrIfxz=3D}RqzzcQt-K>F${DSd^~S6YgEZAxE* z^!3+L`WmILwG{ovl)eG!n{TA_4NBi=3DDfX=3D?eGAgJ-%9CQl)lwc{5wFbaDgA)b4_Yey(Ug7!>Bk?X^dm|?YN_le zQ~C*{pMH|kPbmGQrShLm>1U9B{#i;tqx7?uDt2Hw! z{##0aqx83yV*i-ZKOp_{kCgsF=3D^vK5_R8WvxMu&+X!YlqgH@LOm!o}suK(rR=3Dg9O? zo!J4)>Z8=3DG^CkX|tUk=3DpXJ?3J@n3Q4F9ZFBH~NcBsXq%vLst$?z&ZE}m6H6sJiIE9 z`Y%>A(pgIS&Ej!q@wl^iR2II(EVK%;cpyt@zgg1US<>8D(o`0{#4NN5vZO(lvVOCq zyR)Rbv!tsme2H0T6=3DX?=3DEam-X$#7@MaA(O-S@;sO&??B10a+^g&64TP!XF08|6@Tt z!ZKABzQioF3bJHEmdbv!WVy3sxwB-cEPRPsXcc71f-F`2W*OklGQgc>fXc#`n1xnB zmI08Zy5B5bcNVWZi&tggOUy#6Ad45W)byJr+npuboh4gk;Y-Xys~}4@WC`_~#pllA zb7%3XEPRPsXcc7fL6&g8S#sQ2a@<*RR2II(EVK%;zNh z{p8PgXUSJt_!6_wD#((rvy}ATUjptd0e6;w%EFhJg;qh90A%UEzZAH$6u7e#s4RSm zS!fkxDS#~f_m@ILv2&6Jr*pr)Q3m#M>6oA>HJt4<;$I4tQ z&Ci|P{{4YI8_KiUznPvjbiIc@--7=3DAMmKNvr^dPTdBm3Wll=3D+Z_U-%;OMQJgJeB^X zS+39S_R>cpJMZ{g)>W=3DsHqeK9JHItq8}?YW1AX4N(j15GJW~7myv{K7mB;*n*O3gm zbJRnPKR!GZtaN@?%H`|f<29TQ!On3$4aWX>jpD50ERX%E*%LCF>YAFJyV#A;oz%}q zb(q!${|3KjD1GGhcGD?+OIdqiRtEq2LUDO}p*O>q=3D1a3j6?_ZtBCxCeHner^9G@0Z zPs=3DH>hN<*7I!k#ieK0sy9LNl0@&|$h8Z)Nb9}^wV;O}BvS58YX*zSC$dt2A`Ex~GM cK;JQsRYXon)S?f-rl2$#l-WTRKSZqm0l)xpv;Y7A literal 0 HcmV?d00001 diff --git a/tests/data/acpi/q35/FACP.core-count2 b/tests/data/acpi/q35/FAC= P.core-count2 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..31fa5dd19c213034eef4eeefa6a= 04e61dadd8a2a 100644 GIT binary patch literal 244 zcmZ>BbPo8!z`($~*~#D8BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC z$X0-fGcm9T0LA|E|L2FOWMD92VqjR>!otAF!NBm72Obk1 YBHITON2VDSAnpK(F*YFF1LDH~0O^Si0RR91 literal 0 HcmV?d00001 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221841; cv=none; d=zohomail.com; s=zohoarc; b=Zb+jrqL8ZZkwQIRXI1+bFOWZb+6ejTeoXMA3fRDzRs9xO9ha6BG4AWRWM5UbcLO8iKlCeM5Se70p9bmc5A4EZ/bqZFU49r19wa67IXtuEuHNO5JtLfRbPZmfkbL7/N31gwo5eBmgxTslDiqiTm4KIghTdxwgi0yW1ZPJFVbha9g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221841; h=Content-Type: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=sA0aUnKWUG2lHJea+7N06ahIGd9aPeHX6W/XDF7Ebic=; b=YV8gRcXxMUprM3yGPB6kLaX7aiQ5KBigQShOuG8j1piTWf+m6YsqXpsjJ8O3gexgvRhKxL7KrDeftjkA7aSAbVZeU3RAGqX0UR97vAoy38Oh5b0Dp9IGtavxhi7w5sefAW75+3IV4joj6maemsTqSb4TXuaOqqasqsXDF7hwT4Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221841697384.80140259652455; Mon, 31 Oct 2022 06:10:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHN-0003z9-Uv; Mon, 31 Oct 2022 08:52:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGr-0002U4-Cm for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGh-0002Wl-Lu for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:05 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-308-XT6TS6C5NACgLBni5Bx86w-1; Mon, 31 Oct 2022 08:51:53 -0400 Received: by mail-wm1-f72.google.com with SMTP id az11-20020a05600c600b00b003c6e3d4d5b1so5256786wmb.7 for ; Mon, 31 Oct 2022 05:51:53 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bs14-20020a056000070e00b0023647841c5bsm7101823wrb.60.2022.10.31.05.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220715; 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: in-reply-to:in-reply-to:references:references; bh=sA0aUnKWUG2lHJea+7N06ahIGd9aPeHX6W/XDF7Ebic=; b=Mfc0RlJGR4X6NOYy/hXjnjyP2wYVAZRNxKLcs3Eu+/ARkd65jc2W0J79tdp9NYctni7Rbn xvfWEBsXWIO2SgxWU+jrcAcurGge9ZZAkUXvj0BfSLqoGzBxNLfE14v5atxdZ4HlRN9SBy ihYu06cw+p1ipuO/H4TwH5rDUPngeOc= X-MC-Unique: XT6TS6C5NACgLBni5Bx86w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sA0aUnKWUG2lHJea+7N06ahIGd9aPeHX6W/XDF7Ebic=; b=n+iZL9eIlMQ/5kpxMLhX7i5C0cavSjP9ZLfTgqOwA7g+/GmGl66d3aTpYt6o/YIc/R PlyLb5QYZ95CnIXVMcogPw7RGjOxUK7Ydfp4Q02XabfW3JnvRegh73RqfzfS96evSpQ0 kOBjuLtF8iyPJ+Eb1n0RycoBrLb82UODLc6j6Jk41FOZcqcOUuGua9RTFnK32fGAp48l mZIeHI9eZjq9QwbMoIH3wapLqxQeIEg3m2T6nOX4553QZRa6itevDW5nhnA07cYTLowo GNpwxVsbDqHd138vMsnKWawA1kghQNJdPgy7fm2901W3inEjlRLn6YUHnHw6ZcHWRmqF yucg== X-Gm-Message-State: ACrzQf2iIpFPsrDHBKYAK+Bveb/4vslBPeiO29dswulWU2LPTso5Tuci RwvWWnTwPuaPhlbtBhJJjF5ESd5G+U08YKzSx4nCxAH/9d7Taj4PW+TCv7lkPLrpTVnp9ADF883 LKBI+Hjbc4o6xvZ3FG5CITzG7dYdp16fejQOg5dvkWJmbDKkWdjR69A3XI0Tm X-Received: by 2002:adf:e810:0:b0:236:5152:b95 with SMTP id o16-20020adfe810000000b0023651520b95mr7651825wrm.529.1667220712248; Mon, 31 Oct 2022 05:51:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6f1JLKEH4aFKRG2LI7vuRrEFgrq6FHLpWX539GJrcCU4/tG35dSOgCw8LiG9tZtjhKV/izTQ== X-Received: by 2002:adf:e810:0:b0:236:5152:b95 with SMTP id o16-20020adfe810000000b0023651520b95mr7651806wrm.529.1667220711974; Mon, 31 Oct 2022 05:51:51 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Miguel Luis , Ani Sinha , Igor Mammedov Subject: [PULL 23/86] tests/acpi: virt: allow acpi MADT and FADT changes Message-ID: <20221031124928.128475-24-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221848179100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Miguel Luis Step 3 from bios-tables-test.c documented procedure. Signed-off-by: Miguel Luis Message-Id: <20221011181730.10885-2-miguel.luis@oracle.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Ani Sinha --- tests/qtest/bios-tables-test-allowed-diff.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..8dc50f7a8a 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,7 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/virt/FACP", +"tests/data/acpi/virt/FACP.numamem", +"tests/data/acpi/virt/FACP.memhp", +"tests/data/acpi/virt/APIC", +"tests/data/acpi/virt/APIC.memhp", +"tests/data/acpi/virt/APIC.numamem", --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222289; cv=none; d=zohomail.com; s=zohoarc; b=mCe+NbRtQInYqxX42Ct8+6RlhoNdM7fEKGFVvbYKZEyTNdv/+rP1xRsufSNA0ZtSIPaFKfi4I100XMTO/A7/DkNXqdbg2A5JIME8SOqWuYhkJqvm2p8HdpkPaMxu2MT5N1aDJs90i83+jrhZRJZnB95PYEthOnbbx93qcY44404= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222289; h=Content-Type: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=jDPHfFPBmUiBzVFQbV+4l1hgXmVtWz7Ck3nwksImP0A=; b=DTrkbHeNHZFS8guYLRa2hCmaybyw1CXxSxqIoXP3RQqbW3E6daY1Rku41JoDvnARRa3prQb7L49mz0iOZGz/PerbLIWWDl6M1mOf4nRMSzx4qJtp/PJHhOMW17F3L4oJ7uz2+rCy1LGcMVc0Xl+TDRNRGtGBI2Sj4P+UrLLaOjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722228916224.369474593640916; Mon, 31 Oct 2022 06:18:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHd-00065G-Te; Mon, 31 Oct 2022 08:52:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH7-0002gc-HC for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGn-0002YR-78 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:20 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-357-v09qj23SMVKn7OvhTTR0Zw-1; Mon, 31 Oct 2022 08:51:58 -0400 Received: by mail-wm1-f70.google.com with SMTP id p9-20020a1c7409000000b003cf670dad6eso709905wmc.7 for ; Mon, 31 Oct 2022 05:51:56 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id p16-20020adff210000000b0022ac672654dsm7083450wro.58.2022.10.31.05.51.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220720; 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: in-reply-to:in-reply-to:references:references; bh=jDPHfFPBmUiBzVFQbV+4l1hgXmVtWz7Ck3nwksImP0A=; b=bQ0YH/pzrKZIWSxXhdc16FNBNGFjYs42VLHBiivzlKLcMKEo3h54fwPAbU+bzEgfTe8dQl 90Woja6hDHy7u3opj4MvTY9304d5LxLl7spQ0vVV0BoVaXgqNqpP9czvnuCIZS8I4kSXCW bEna/cjZp/TOQX5B0eU8dn3X56UwQrk= X-MC-Unique: v09qj23SMVKn7OvhTTR0Zw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jDPHfFPBmUiBzVFQbV+4l1hgXmVtWz7Ck3nwksImP0A=; b=xcIRqaBg7wUa8drFjLQGsticMIY0fBHedGzX7B9DyXaFH/Eq2vY0FaMUi90oB5mPFo oTI4D9bleJ3Y8Qa8g1F7lmn6pvrJS1WWVvmGu+sHiAQR8Qh/kXB0+7V9nX1SQGVkvWxy H2ZFG4vLrDcAiU0HE/rUKt5g7WOfDXBycN6ymdNmw58AAcO3Y3lpYeb758dC68zNe8Ff IOWpaqnpBkoGC5gv7HlsAaOdFRKQXTlps8A94qfdVpWwEGWjfL2tWKvxfFW8gFK27lWk uaFcdjV37jsvxuCpZ3odBDaSROTOUs+++0rjV2bIDivuFgzKUBWSizQmDj32sWbeQdAF /W8w== X-Gm-Message-State: ACrzQf0gaT0aY1V9YnrhwqhTlcncceFQh/Pf3vQzuCOV8UkfC5kTkDuG Vbc0OSHvEEFCJywBMilmKxxTUGZVWBfkV6AvL/vX9x8wFJbyG+Y/yzTQrXtiwjIQ0y5WywZV7LL k7CXcEsscFEKsmNiL/5ukP68kqc0TNNjKuc3QDhRlc0NCqtoDhsk6h/mBtYCx X-Received: by 2002:a05:600c:154a:b0:3c9:f0df:1cc with SMTP id f10-20020a05600c154a00b003c9f0df01ccmr18050058wmg.200.1667220715162; Mon, 31 Oct 2022 05:51:55 -0700 (PDT) X-Google-Smtp-Source: AMsMyM74Jr+/xg56wDVrdB3ROIECoo304LnvNP+WTnQnpjxdA5bEh6Qcq51Eiipih1oKpTosp3L//w== X-Received: by 2002:a05:600c:154a:b0:3c9:f0df:1cc with SMTP id f10-20020a05600c154a00b003c9f0df01ccmr18050034wmg.200.1667220714853; Mon, 31 Oct 2022 05:51:54 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Miguel Luis , Ani Sinha , Igor Mammedov , Shannon Zhao , qemu-arm@nongnu.org Subject: [PULL 24/86] acpi: fadt: support revision 6.0 of the ACPI specification Message-ID: <20221031124928.128475-25-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222290180100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Miguel Luis Update the Fixed ACPI Description Table (FADT) to revision 6.0 of the ACPI specification adding the field "Hypervisor Vendor Identity". This field's description states the following: "64-bit identifier of hyperv= isor vendor. All bytes in this field are considered part of the vendor identity. These identifiers are defined independently by the vendors themselves, usually following the name of the hypervisor product. Version information should NOT be included in this field - this shall simply denote the vendor's name or identifier. Version information can be communicated through a supplemental vendor-specific hypervisor API. Firmware implementers would place zero bytes into this field, denoting that no hypervisor is present in the actual firmware." Signed-off-by: Miguel Luis Reviewed-by: Ani Sinha Message-Id: <20221011181730.10885-3-miguel.luis@oracle.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/acpi/aml-build.c | 13 ++++++++++--- hw/arm/virt-acpi-build.c | 10 +++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index e6bfac95c7..42feb4d4d7 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -2070,7 +2070,7 @@ void build_pptt(GArray *table_data, BIOSLinker *linke= r, MachineState *ms, acpi_table_end(linker, &table); } =20 -/* build rev1/rev3/rev5.1 FADT */ +/* build rev1/rev3/rev5.1/rev6.0 FADT */ void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f, const char *oem_id, const char *oem_table_id) { @@ -2193,8 +2193,15 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, con= st AcpiFadtData *f, /* SLEEP_STATUS_REG */ 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); + if (f->rev =3D=3D 5) { + goto done; + } + + /* Hypervisor Vendor Identity */ + build_append_padded_str(tbl, "QEMU", 8, '\0'); + + /* TODO: extra fields need to be added to support revisions above rev6= */ + assert(f->rev =3D=3D 6); =20 done: acpi_table_end(linker, &table); diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 13c6e3e468..e5377744f3 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -808,13 +808,13 @@ build_madt(GArray *table_data, BIOSLinker *linker, Vi= rtMachineState *vms) } =20 /* FADT */ -static void build_fadt_rev5(GArray *table_data, BIOSLinker *linker, +static void build_fadt_rev6(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms, unsigned dsdt_tbl_offse= t) { - /* ACPI v5.1 */ + /* ACPI v6.0 */ AcpiFadtData fadt =3D { - .rev =3D 5, - .minor_ver =3D 1, + .rev =3D 6, + .minor_ver =3D 0, .flags =3D 1 << ACPI_FADT_F_HW_REDUCED_ACPI, .xdsdt_tbl_offset =3D &dsdt_tbl_offset, }; @@ -944,7 +944,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTa= bles *tables) =20 /* FADT MADT PPTT GTDT MCFG SPCR DBG2 pointed to by RSDT */ acpi_add_table(table_offsets, tables_blob); - build_fadt_rev5(tables_blob, tables->linker, vms, dsdt); + build_fadt_rev6(tables_blob, tables->linker, vms, dsdt); =20 acpi_add_table(table_offsets, tables_blob); build_madt(tables_blob, tables->linker, vms); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221784; cv=none; d=zohomail.com; s=zohoarc; b=cdRpLvynOq9zeDiPSgSWeHcj9sd7dsj9y2WXGEt65d4sAlFRf8mia1N4yrb5pQO0JSGIYnAAtXGXqYfcO1ewzujN3+vLexQmNSxtDatBH8EDlfrkLDPXB8QVObE62LMH3bnw7TYxG/WdqN9RceIqcAGl1EtA9d6yryZhmQS43W8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221784; h=Content-Type: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=X4Z960VIxvzpdnrCdhzcTsEiETvQalucQByjEZaVNKQ=; b=cRXTgzvyGpj/XUQ2wOikemixien5mY8M8zfHDfApTPtuyAOYcu7HuvjLcF4rSH+Ybc9nmI4JDMCl3pVesAC9x2gXXK6jQCMsCObM+JBatPf9pO6de/Gv/5zIz3XK0yiD2absfarKcTAGmpADM/JfnkY+4t91H66PKqxmbAMyz60= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722178426787.49248606700633; Mon, 31 Oct 2022 06:09:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHZ-0005TA-CJ; Mon, 31 Oct 2022 08:52:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH5-0002el-2u for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGs-0002Ya-7B for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:18 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-372-5uRjQDb1P_KpZPaDf-pt-g-1; Mon, 31 Oct 2022 08:52:00 -0400 Received: by mail-wm1-f70.google.com with SMTP id i7-20020a1c3b07000000b003c5e6b44ebaso3416369wma.9 for ; Mon, 31 Oct 2022 05:52:00 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id a15-20020a5d53cf000000b0023682011c1dsm7087511wrw.104.2022.10.31.05.51.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:51:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220721; 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: in-reply-to:in-reply-to:references:references; bh=X4Z960VIxvzpdnrCdhzcTsEiETvQalucQByjEZaVNKQ=; b=X/qx5jqOp0+OMOuCbvRlYUNqk9M6o2HTNTGlQlydnfbg+kmyf0HfiNWpUkPNeFtQpkEZhP NbFE8eOqOqfDNVkCaq8Mx8XnMsH5M6mQ6f0JK4Cntohv5f6EdZ+7XIawPcPS6Ocdg9hsPz orx+QHsde7htH8QxsKOPdSIj4olU8nk= X-MC-Unique: 5uRjQDb1P_KpZPaDf-pt-g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=X4Z960VIxvzpdnrCdhzcTsEiETvQalucQByjEZaVNKQ=; b=LEiabeuWr8DQ5DTW9gMeOZMWHCDrTlDlF0WJRET9bpiZvcrxPTaSJX3clewDvfWwHb Q/3/7fBB9vW4OsHW9HI+GF0wraCw/e+V57ycO579at9lOoMWJZEry+nSK0ExXAeil793 apjwfokb5usqA/ihrAeNJtCx+uwj4vzQn1Hs+9V4/XOJv2AwmDoIKA6XExwxc2pNc6d8 8Woh85gGgZuxcw242Hz9Q024n9fbuNTzIdMT+aINer7OzSOAkA2Z9MRwZaVA1azAd+WR l3OXleBXNh9zLm460D2KRBsYYiSkC/D9Gt7fQdmQFegxDqgVU3FfVhynBoWIE3MrFZgV f/Aw== X-Gm-Message-State: ACrzQf2Z1frvTBWCT7zHsrAwgEs+qcxWsX/URJ6UfupIGyKvY8hC0JcU rf3mA0oBnDCREquwk2tqdZyIUjpQnYIbfEn06c4c3vYy8E1Mw6p7eu6Yd5wrx36mswVPboAZXFR oApUF0wgqzohSPbz3ZIraYdcy4XD7rnkkoTygDS8ilg0/dKMn/watIexetnby X-Received: by 2002:a05:600c:28ce:b0:3cf:6e78:e335 with SMTP id h14-20020a05600c28ce00b003cf6e78e335mr4033222wmd.142.1667220718086; Mon, 31 Oct 2022 05:51:58 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7pmxSAHRBt4UiaxtpiMHONuBkoyDg8VSVmcpUtNZ/gOj9QOFy25jFIy6shJRim4qk2HRDk0Q== X-Received: by 2002:a05:600c:28ce:b0:3cf:6e78:e335 with SMTP id h14-20020a05600c28ce00b003cf6e78e335mr4033204wmd.142.1667220717817; Mon, 31 Oct 2022 05:51:57 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:55 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Miguel Luis , Ani Sinha , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org Subject: [PULL 25/86] acpi: arm/virt: madt: bump to revision 4 accordingly to ACPI 6.0 Errata A Message-ID: <20221031124928.128475-26-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221786216100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Miguel Luis MADT has been updated with the GIC Structures from ACPI 6.0 Errata A and so MADT revision and GICC Structure must be updated also. Fixes: 37f33084ed2e ("acpi: arm/virt: madt: use build_append_int_noprefix()= API to compose MADT table") Signed-off-by: Miguel Luis Reviewed-by: Ani Sinha Message-Id: <20221011181730.10885-4-miguel.luis@oracle.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/arm/virt-acpi-build.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index e5377744f3..da9e41e72b 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -685,7 +685,7 @@ build_dbg2(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) }; =20 /* - * ACPI spec, Revision 5.1 Errata A + * ACPI spec, Revision 6.0 Errata A * 5.2.12 Multiple APIC Description Table (MADT) */ static void build_append_gicr(GArray *table_data, uint64_t base, uint32_t = size) @@ -704,7 +704,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) int i; VirtMachineClass *vmc =3D VIRT_MACHINE_GET_CLASS(vms); const MemMapEntry *memmap =3D vms->memmap; - AcpiTable table =3D { .sig =3D "APIC", .rev =3D 3, .oem_id =3D vms->oe= m_id, + AcpiTable table =3D { .sig =3D "APIC", .rev =3D 4, .oem_id =3D vms->oe= m_id, .oem_table_id =3D vms->oem_table_id }; =20 acpi_table_begin(&table, table_data); @@ -739,7 +739,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) =20 /* 5.2.12.14 GIC Structure */ build_append_int_noprefix(table_data, 0xB, 1); /* Type */ - build_append_int_noprefix(table_data, 76, 1); /* Length */ + build_append_int_noprefix(table_data, 80, 1); /* Length */ build_append_int_noprefix(table_data, 0, 2); /* Reserved */ build_append_int_noprefix(table_data, i, 4); /* GIC ID */ build_append_int_noprefix(table_data, i, 4); /* ACPI Processor = UID */ @@ -759,6 +759,10 @@ build_madt(GArray *table_data, BIOSLinker *linker, Vir= tMachineState *vms) build_append_int_noprefix(table_data, 0, 8); /* GICR Base Addre= ss*/ /* MPIDR */ build_append_int_noprefix(table_data, armcpu->mp_affinity, 8); + /* Processor Power Efficiency Class */ + build_append_int_noprefix(table_data, 0, 1); + /* Reserved */ + build_append_int_noprefix(table_data, 0, 3); } =20 if (vms->gic_version !=3D VIRT_GIC_VERSION_2) { @@ -770,12 +774,6 @@ build_madt(GArray *table_data, BIOSLinker *linker, Vir= tMachineState *vms) } =20 if (its_class_name() && !vmc->no_its) { - /* - * FIXME: Structure is from Revision 6.0 where 'GIC Structure' - * has additional fields on top of implemented 5.1 Errata A, - * to make it consistent with v6.0 we need to bump everything - * to v6.0 - */ /* * ACPI spec, Revision 6.0 Errata A * (original 6.0 definition has invalid Length) --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220797; cv=none; d=zohomail.com; s=zohoarc; b=Pd7lfZZNxnAp5yZdvy9OSLFGzNzhxPRp5hJGxeQgt3ZdZ9HtHcd4gKqd8DEj6QaPsIcetYPhwRRL5NFdyOa1MyQeAY2Xw9NoL/c+fMrShm/gra/R0hBHw0zO4lQaztda/QFOGel/1+g2+iapAptcB7ilHsp4y2gjcnVVvGbJ9EM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220797; h=Content-Type: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=VMWMaWdnSnO1dinC6iXI4ou29u//qgWX4brDGAZpGas=; b=fGJEHfsTaAXepkfDvfRSv8oMCKqKzh+yf3IVttcgy1czRlossUdnv3QGpZrBRtqQkxojbHlOiBOjg2dY5FYJVTNEg8VGhztU0Suwyzvgwmitue4JRJiK8FQIp1LKrqMryntMX8d2Q0K7yv3TfjCgyomMlYEALnM+6wzT9T9MVfU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220797254265.13649280506866; Mon, 31 Oct 2022 05:53:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHX-0005A6-VM; Mon, 31 Oct 2022 08:52:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH6-0002eo-5o for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGq-0002Yj-Tu for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:19 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-614-ExzOJIyKO16_N4ZLYoI7cA-1; Mon, 31 Oct 2022 08:52:02 -0400 Received: by mail-wr1-f72.google.com with SMTP id o13-20020adfa10d000000b00232c00377a0so3036816wro.13 for ; Mon, 31 Oct 2022 05:52:02 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id t128-20020a1c4686000000b003cf7055c057sm3409021wma.3.2022.10.31.05.51.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220724; 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: in-reply-to:in-reply-to:references:references; bh=VMWMaWdnSnO1dinC6iXI4ou29u//qgWX4brDGAZpGas=; b=dYUfBLPV+c2hJ4tj7R/gs3j3KhVo/6W7GxmNofuj8kfmz9mXxm4+U1Ugdgn+IE556VMJML rCJzHMKjZxWLqL5C7EGq/j+UM6Q5WyYE1E7j2BfcC95K8KsHdslTHxLTDXYYGcJL7jcadj 669KSYJljDAfRxB2rsG35j1DvlJPJmU= X-MC-Unique: ExzOJIyKO16_N4ZLYoI7cA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VMWMaWdnSnO1dinC6iXI4ou29u//qgWX4brDGAZpGas=; b=s2F3CbmLaHEDLY4ct+RQqTP4+2LRMUMnzw6WgjIciBcG+C2DNXdDxeM3gE7kdk7jCS qv9ZMuswC2B1a/QQ9GRUarCIcs2QhFR90sHVtFrVxf/hOsYyRCINJFv+FEFDVDaEkZOZ 2wLHBPbVhRW009L/bxFGQ86vPRWnjNCdGCv+J3aA7+f12wXyvX8AuiwK7aCVEJKAm55+ DwqEkItSLF8xMUFy0vHTLEZdsZ+k8sifmBYXuaTX5lv7U/FlnnbZL1045inPE/C7TsLG pO7b4gHOFd8IW++E/PB1tnGTltWvGzZr5TE93SZKVTILJonLDByOtEz3AudzmW/xSA+1 Nsiw== X-Gm-Message-State: ACrzQf19f7jG9lLQPtfbHW7MtO9GHnf80pb7k3dI7kPXQwPl80kOO4+4 F77bW5zDaSyr1LNEww69s7LTsDV0aX3aDzRz8jQgtpk64nlVQRa9/C1HvMbTBxgDUcoJs6b83+g pzbd+NOwGMBRdBwTeTD8em5tt+3h9SMNQdl/BWVlGNUAEFL0CCN5vmY1mMYSR X-Received: by 2002:a5d:64cf:0:b0:231:2e6c:7609 with SMTP id f15-20020a5d64cf000000b002312e6c7609mr8100350wri.172.1667220720908; Mon, 31 Oct 2022 05:52:00 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5xxzhP6rKYQTp+I6RTv9UTGtmRT9ex755zmxzzUQdF/KsHZPSyqP01x2fmGUBQ7gP3+/1ouA== X-Received: by 2002:a5d:64cf:0:b0:231:2e6c:7609 with SMTP id f15-20020a5d64cf000000b002312e6c7609mr8100329wri.172.1667220720444; Mon, 31 Oct 2022 05:52:00 -0700 (PDT) Date: Mon, 31 Oct 2022 08:51:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Miguel Luis , Ani Sinha , Igor Mammedov Subject: [PULL 26/86] tests/acpi: virt: update ACPI MADT and FADT binaries Message-ID: <20221031124928.128475-27-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220798681100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Miguel Luis Step 6 & 7 of the bios-tables-test.c documented procedure. Differences between disassembled ASL files for MADT: @@ -11,9 +11,9 @@ */ [000h 0000 4] Signature : "APIC" [Multiple APIC De= scription Table (MADT)] -[004h 0004 4] Table Length : 000000A8 -[008h 0008 1] Revision : 03 -[009h 0009 1] Checksum : 50 +[004h 0004 4] Table Length : 000000AC +[008h 0008 1] Revision : 04 +[009h 0009 1] Checksum : 47 [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 @@ -34,7 +34,7 @@ [041h 0065 3] Reserved : 000000 [044h 0068 1] Subtable Type : 0B [Generic Interrupt Contr= oller] -[045h 0069 1] Length : 4C +[045h 0069 1] Length : 50 [046h 0070 2] Reserved : 0000 [048h 0072 4] CPU Interface Number : 00000000 [04Ch 0076 4] Processor UID : 00000000 @@ -51,28 +51,29 @@ [07Ch 0124 4] Virtual GIC Interrupt : 00000000 [080h 0128 8] Redistributor Base Address : 0000000000000000 [088h 0136 8] ARM MPIDR : 0000000000000000 -/**** ACPI subtable terminates early - may be older version (dump table) */ +[090h 0144 1] Efficiency Class : 00 +[091h 0145 3] Reserved : 000000 -[090h 0144 1] Subtable Type : 0D [Generic MSI Frame] -[091h 0145 1] Length : 18 -[092h 0146 2] Reserved : 0000 -[094h 0148 4] MSI Frame ID : 00000000 -[098h 0152 8] Base Address : 0000000008020000 -[0A0h 0160 4] Flags (decoded below) : 00000001 +[094h 0148 1] Subtable Type : 0D [Generic MSI Frame] +[095h 0149 1] Length : 18 +[096h 0150 2] Reserved : 0000 +[098h 0152 4] MSI Frame ID : 00000000 +[09Ch 0156 8] Base Address : 0000000008020000 +[0A4h 0164 4] Flags (decoded below) : 00000001 Select SPI : 1 -[0A4h 0164 2] SPI Count : 0040 -[0A6h 0166 2] SPI Base : 0050 +[0A8h 0168 2] SPI Count : 0040 +[0AAh 0170 2] SPI Base : 0050 -Raw Table Data: Length 168 (0xA8) +Raw Table Data: Length 172 (0xAC) - 0000: 41 50 49 43 A8 00 00 00 03 50 42 4F 43 48 53 20 // APIC.....PBO= CHS + 0000: 41 50 49 43 AC 00 00 00 04 47 42 4F 43 48 53 20 // APIC.....GBO= CHS 0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....= BXPC 0020: 01 00 00 00 00 00 00 00 00 00 00 00 0C 18 00 00 // ............= .... 0030: 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 // ............= .... - 0040: 02 00 00 00 0B 4C 00 00 00 00 00 00 00 00 00 00 // .....L......= .... + 0040: 02 00 00 00 0B 50 00 00 00 00 00 00 00 00 00 00 // .....P......= .... 0050: 01 00 00 00 00 00 00 00 17 00 00 00 00 00 00 00 // ............= .... 0060: 00 00 00 00 00 00 01 08 00 00 00 00 00 00 04 08 // ............= .... 0070: 00 00 00 00 00 00 03 08 00 00 00 00 00 00 00 00 // ............= .... 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... - 0090: 0D 18 00 00 00 00 00 00 00 00 02 08 00 00 00 00 // ............= .... - 00A0: 01 00 00 00 40 00 50 00 // ....@.P. + 0090: 00 00 00 00 0D 18 00 00 00 00 00 00 00 00 02 08 // ............= .... + 00A0: 00 00 00 00 01 00 00 00 40 00 50 00 // ........@.P. Differences between disassembled ASL files for FADT: @@ -11,9 +11,9 @@ */ [000h 0000 4] Signature : "FACP" [Fixed ACPI Descr= iption Table (FADT)] -[004h 0004 4] Table Length : 0000010C -[008h 0008 1] Revision : 05 -[009h 0009 1] Checksum : 55 +[004h 0004 4] Table Length : 00000114 +[008h 0008 1] Revision : 06 +[009h 0009 1] Checksum : 15 [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 @@ -99,7 +99,7 @@ PSCI Compliant : 1 Must use HVC for PSCI : 1 -[083h 0131 1] FADT Minor Revision : 01 +[083h 0131 1] FADT Minor Revision : 00 [084h 0132 8] FACS Address : 0000000000000000 [08Ch 0140 8] DSDT Address : 0000000000000000 [094h 0148 12] PM1A Event Block : [Generic Address Structure] @@ -173,11 +173,11 @@ [103h 0259 1] Encoded Access Width : 00 [Undefined/Legacy] [104h 0260 8] Address : 0000000000000000 -/**** ACPI table terminates in the middle of a data structure! (dump table= ) */ +[10Ch 0268 8] Hypervisor ID : 00000000554D4551 -Raw Table Data: Length 268 (0x10C) +Raw Table Data: Length 276 (0x114) - 0000: 46 41 43 50 0C 01 00 00 05 55 42 4F 43 48 53 20 // FACP.....UBO= CHS + 0000: 46 41 43 50 14 01 00 00 06 15 42 4F 43 48 53 20 // FACP......BO= CHS 0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....= BXPC 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... @@ -185,7 +185,7 @@ Raw Table Data: Length 268 (0x10C) 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 0070: 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... - 0080: 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... + 0080: 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... @@ -193,4 +193,5 @@ Raw Table Data: Length 268 (0x10C) 00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... 00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ............= .... - 0100: 00 00 00 00 00 00 00 00 00 00 00 00 // ............ + 0100: 00 00 00 00 00 00 00 00 00 00 00 00 51 45 4D 55 // ............= QEMU + 0110: 00 00 00 00 // .... Signed-off-by: Miguel Luis Message-Id: <20221011181730.10885-5-miguel.luis@oracle.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Ani Sinha --- tests/qtest/bios-tables-test-allowed-diff.h | 6 ------ tests/data/acpi/virt/APIC | Bin 168 -> 172 bytes tests/data/acpi/virt/APIC.memhp | Bin 168 -> 172 bytes tests/data/acpi/virt/APIC.numamem | Bin 168 -> 172 bytes tests/data/acpi/virt/FACP | Bin 268 -> 276 bytes tests/data/acpi/virt/FACP.memhp | Bin 268 -> 276 bytes tests/data/acpi/virt/FACP.numamem | Bin 268 -> 276 bytes 7 files changed, 6 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 8dc50f7a8a..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,7 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/virt/FACP", -"tests/data/acpi/virt/FACP.numamem", -"tests/data/acpi/virt/FACP.memhp", -"tests/data/acpi/virt/APIC", -"tests/data/acpi/virt/APIC.memhp", -"tests/data/acpi/virt/APIC.numamem", diff --git a/tests/data/acpi/virt/APIC b/tests/data/acpi/virt/APIC index 023f15f12e74fb9a3a6d3d9dc994541016947d6a..179d274770a23209b949c90a929= 525e22368568b 100644 GIT binary patch delta 26 hcmZ3%xQ3C-F~HM#4FdxMi~B?_YsP?yZeA06WB^*d2KE2| delta 26 icmZ3(xPp<(F~HM#1p@;EbHGF{Yet`mZeA0oNB{s@&<6Sd diff --git a/tests/data/acpi/virt/APIC.memhp b/tests/data/acpi/virt/APIC.me= mhp index 023f15f12e74fb9a3a6d3d9dc994541016947d6a..179d274770a23209b949c90a929= 525e22368568b 100644 GIT binary patch delta 26 hcmZ3%xQ3C-F~HM#4FdxMi~B?_YsP?yZeA06WB^*d2KE2| delta 26 icmZ3(xPp<(F~HM#1p@;EbHGF{Yet`mZeA0oNB{s@&<6Sd diff --git a/tests/data/acpi/virt/APIC.numamem b/tests/data/acpi/virt/APIC.= numamem index 023f15f12e74fb9a3a6d3d9dc994541016947d6a..179d274770a23209b949c90a929= 525e22368568b 100644 GIT binary patch delta 26 hcmZ3%xQ3C-F~HM#4FdxMi~B?_YsP?yZeA06WB^*d2KE2| delta 26 icmZ3(xPp<(F~HM#1p@;EbHGF{Yet`mZeA0oNB{s@&<6Sd diff --git a/tests/data/acpi/virt/FACP b/tests/data/acpi/virt/FACP index 1f764220f8533c427168e80ccf298604826a00b4..ac05c35a69451519bd1152c54d1= e741af36390f5 100644 GIT binary patch delta 33 ncmeBSn!?28=3DI9(C!pOkDCOVO;a^j?_i3a=3D}fv&!x3_t(?fr|$^ delta 26 hcmbQj)WgK(=3DI9*2!^ptE8ak1yl96%Z#OjF#yZ}u&1~C8t diff --git a/tests/data/acpi/virt/FACP.memhp b/tests/data/acpi/virt/FACP.me= mhp index 1f764220f8533c427168e80ccf298604826a00b4..ac05c35a69451519bd1152c54d1= e741af36390f5 100644 GIT binary patch delta 33 ncmeBSn!?28=3DI9(C!pOkDCOVO;a^j?_i3a=3D}fv&!x3_t(?fr|$^ delta 26 hcmbQj)WgK(=3DI9*2!^ptE8ak1yl96%Z#OjF#yZ}u&1~C8t diff --git a/tests/data/acpi/virt/FACP.numamem b/tests/data/acpi/virt/FACP.= numamem index 1f764220f8533c427168e80ccf298604826a00b4..ac05c35a69451519bd1152c54d1= e741af36390f5 100644 GIT binary patch delta 33 ncmeBSn!?28=3DI9(C!pOkDCOVO;a^j?_i3a=3D}fv&!x3_t(?fr|$^ delta 26 hcmbQj)WgK(=3DI9*2!^ptE8ak1yl96%Z#OjF#yZ}u&1~C8t --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221166; cv=none; d=zohomail.com; s=zohoarc; b=JMw7xjlzuQ8OAo8esdNI0DdwfOsE/8t6GdJue5lTTraWcZ76gWTBk+YUngYygpdnu6ja6rv6NkJm3Rq4waZk4EEOj6komveDJ7aVbulWSv/N7gUWcZGOO31OPzYBu5ntfAWcUj6EsHmLCtVn0iyTOWwf7ArmPvFVjn8ovFFD++o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221166; h=Content-Type: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=rq4iHNpbgOt435bVUWPP65gTxOIM1DuEeAs7OkHBStI=; b=PaNcB7waoMB3Q5JmLZiJ4LoLlEHcRabu4MlrKhKgTqeEjhNsw3qrpxHsrpnNQYZ3MjbKXS9NClpuy/D8+2whRxkigwz/dmZNk/gl+sg0EaszS+vZJBCSwdNBLjV4H+SsCrkbhurJCt/lAoJcas6/MnXffB9MHttLXD+yiDaXK/s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221166752360.5212181015112; Mon, 31 Oct 2022 05:59:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHV-0004tZ-1E; Mon, 31 Oct 2022 08:52:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGy-0002ZL-Qk for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGt-0002Z6-Ae for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:12 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-618-VL7XSLIJNIOUIdH1kpFNhA-1; Mon, 31 Oct 2022 08:52:05 -0400 Received: by mail-wr1-f72.google.com with SMTP id r22-20020adfa156000000b0023660e969ddso3009807wrr.19 for ; Mon, 31 Oct 2022 05:52:05 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id m5-20020a05600c4f4500b003c83465ccbfsm4842082wmq.35.2022.10.31.05.52.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220726; 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: in-reply-to:in-reply-to:references:references; bh=rq4iHNpbgOt435bVUWPP65gTxOIM1DuEeAs7OkHBStI=; b=D1yzZFSXDJIebktp5+WOrULBLoX7GE5/dzLxA9zaPkJbm1U9bnMEXyPSxcfq/zZG8zboV1 4PNdWTrqm+pqOTIfwjpDnfDkiJBT7FH9QNZ/Vu1SLpSKlShDbzcBemtJ89ODxCruAe5/wU txW8KBaa64j+J2g+Te1Bkd6AnUqkDSM= X-MC-Unique: VL7XSLIJNIOUIdH1kpFNhA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rq4iHNpbgOt435bVUWPP65gTxOIM1DuEeAs7OkHBStI=; b=FhnWhq4u/RfXPJLdpRFPvhZcTVhdkKIcKrZA9QRiGBnXjmMtMXFL8qaxzLcywRh1Vz 1uNNtoNDHWZYP8IsrACkoc4xO4EbtpcX5Lu72OAiqWfczD5MAP5w9uAhwX1SCC1JsfzL 05LcfIEwv5wpBkoYUBKn70r4T5497Pgz9Mg6D5rW311G3fSwo0YC68t/7u7Wh843I+c2 gGTVgipdPlD/ihAncTJgkaAWUkNokldCo5GLKkHI0h/cL0f0UuyXqv61arPyszBmxTUc ei2n+5fnVORMUv6pKur1rBjoj7hb3+3XbNVU3kUnK836VCM3OBuWm14a1cboiUq3awr3 JCpw== X-Gm-Message-State: ACrzQf3/7Rh+mo7lZcHOyRuwdxg2wnIw5Cz257RozdFbEJJAiqigS3xD LFBRJC6wGD4AhbzSfNzxCm0XgS1G2ivADCHeTSv22xx9hrAVNMTNrmGMOM7iMzmBMLk0lW3Clf8 vKa6Pwdwc3lOA1vi8Mx6RjU5w2U00u+mZBiOe9h9DOuIHYxfqpvQzjBT1mfjF X-Received: by 2002:a05:6000:54e:b0:236:5818:d432 with SMTP id b14-20020a056000054e00b002365818d432mr8089730wrf.37.1667220723775; Mon, 31 Oct 2022 05:52:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6kU6zNC/HO8A9iyImjzR7rw7X0Axzd8wCa3HxGcro8Gcw3msm6xHBVy8fDZyEcCHiuMk+wXA== X-Received: by 2002:a05:6000:54e:b0:236:5818:d432 with SMTP id b14-20020a056000054e00b002365818d432mr8089695wrf.37.1667220723257; Mon, 31 Oct 2022 05:52:03 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Huai-Cheng Kuo , Chris Browy , Jonathan Cameron , Marcel Apfelbaum Subject: [PULL 27/86] hw/pci: PCIe Data Object Exchange emulation Message-ID: <20221031124928.128475-28-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221167547100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Huai-Cheng Kuo Emulation of PCIe Data Object Exchange (DOE) PCIE Base Specification r6.0 6.3 Data Object Exchange Supports multiple DOE PCIe Extended Capabilities for a single PCIe device. For each capability, a static array of DOEProtocol should be passed to pcie_doe_init(). The protocols in that array will be registered under the DOE capability structure. For each protocol, vendor ID, type, and corresponding callback function (handle_request()) should be implemented. This callback function represents how the DOE request for corresponding protocol will be handled. pcie_doe_{read/write}_config() must be appended to corresponding PCI device's config_read/write() handler to enable DOE access. In pcie_doe_read_config(), false will be returned if pci_config_read() offset is not within DOE capability range. In pcie_doe_write_config(), the function will have no affect if the address is not within the related DOE PCIE extended capability. Signed-off-by: Huai-Cheng Kuo Signed-off-by: Chris Browy Signed-off-by: Jonathan Cameron Message-Id: <20221014151045.24781-2-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/pci/pci_ids.h | 3 + include/hw/pci/pcie.h | 1 + include/hw/pci/pcie_doe.h | 123 +++++++++++++ include/hw/pci/pcie_regs.h | 4 + hw/pci/pcie_doe.c | 367 +++++++++++++++++++++++++++++++++++++ MAINTAINERS | 7 + hw/pci/meson.build | 1 + 7 files changed, 506 insertions(+) create mode 100644 include/hw/pci/pcie_doe.h create mode 100644 hw/pci/pcie_doe.c diff --git a/include/hw/pci/pci_ids.h b/include/hw/pci/pci_ids.h index d5ddea558b..bc9f834fd1 100644 --- a/include/hw/pci/pci_ids.h +++ b/include/hw/pci/pci_ids.h @@ -157,6 +157,9 @@ =20 /* Vendors and devices. Sort key: vendor first, device next. */ =20 +/* Ref: PCIe r6.0 Table 6-32 */ +#define PCI_VENDOR_ID_PCI_SIG 0x0001 + #define PCI_VENDOR_ID_LSI_LOGIC 0x1000 #define PCI_DEVICE_ID_LSI_53C810 0x0001 #define PCI_DEVICE_ID_LSI_53C895A 0x0012 diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index 798a262a0a..698d3de851 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -26,6 +26,7 @@ #include "hw/pci/pcie_aer.h" #include "hw/pci/pcie_sriov.h" #include "hw/hotplug.h" +#include "hw/pci/pcie_doe.h" =20 typedef enum { /* for attention and power indicator */ diff --git a/include/hw/pci/pcie_doe.h b/include/hw/pci/pcie_doe.h new file mode 100644 index 0000000000..ba4d8b03bd --- /dev/null +++ b/include/hw/pci/pcie_doe.h @@ -0,0 +1,123 @@ +/* + * PCIe Data Object Exchange + * + * Copyright (C) 2021 Avery Design Systems, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef PCIE_DOE_H +#define PCIE_DOE_H + +#include "qemu/range.h" +#include "qemu/typedefs.h" +#include "hw/register.h" + +/* + * Reference: + * PCIe r6.0 - 7.9.24 Data Object Exchange Extended Capability + */ +/* Capabilities Register - r6.0 7.9.24.2 */ +#define PCI_EXP_DOE_CAP 0x04 +REG32(PCI_DOE_CAP_REG, 0) + FIELD(PCI_DOE_CAP_REG, INTR_SUPP, 0, 1) + FIELD(PCI_DOE_CAP_REG, DOE_INTR_MSG_NUM, 1, 11) + +/* Control Register - r6.0 7.9.24.3 */ +#define PCI_EXP_DOE_CTRL 0x08 +REG32(PCI_DOE_CAP_CONTROL, 0) + FIELD(PCI_DOE_CAP_CONTROL, DOE_ABORT, 0, 1) + FIELD(PCI_DOE_CAP_CONTROL, DOE_INTR_EN, 1, 1) + FIELD(PCI_DOE_CAP_CONTROL, DOE_GO, 31, 1) + +/* Status Register - r6.0 7.9.24.4 */ +#define PCI_EXP_DOE_STATUS 0x0c +REG32(PCI_DOE_CAP_STATUS, 0) + FIELD(PCI_DOE_CAP_STATUS, DOE_BUSY, 0, 1) + FIELD(PCI_DOE_CAP_STATUS, DOE_INTR_STATUS, 1, 1) + FIELD(PCI_DOE_CAP_STATUS, DOE_ERROR, 2, 1) + FIELD(PCI_DOE_CAP_STATUS, DATA_OBJ_RDY, 31, 1) + +/* Write Data Mailbox Register - r6.0 7.9.24.5 */ +#define PCI_EXP_DOE_WR_DATA_MBOX 0x10 + +/* Read Data Mailbox Register - 7.9.xx.6 */ +#define PCI_EXP_DOE_RD_DATA_MBOX 0x14 + +/* PCI-SIG defined Data Object Types - r6.0 Table 6-32 */ +#define PCI_SIG_DOE_DISCOVERY 0x00 + +#define PCI_DOE_DW_SIZE_MAX (1 << 18) +#define PCI_DOE_PROTOCOL_NUM_MAX 256 + +#define DATA_OBJ_BUILD_HEADER1(v, p) (((p) << 16) | (v)) +#define DATA_OBJ_LEN_MASK(len) ((len) & (PCI_DOE_DW_SIZE_MAX - 1)) + +typedef struct DOEHeader DOEHeader; +typedef struct DOEProtocol DOEProtocol; +typedef struct DOECap DOECap; + +struct DOEHeader { + uint16_t vendor_id; + uint8_t data_obj_type; + uint8_t reserved; + uint32_t length; +} QEMU_PACKED; + +/* Protocol infos and rsp function callback */ +struct DOEProtocol { + uint16_t vendor_id; + uint8_t data_obj_type; + bool (*handle_request)(DOECap *); +}; + +struct DOECap { + /* Owner */ + PCIDevice *pdev; + + uint16_t offset; + + struct { + bool intr; + uint16_t vec; + } cap; + + struct { + bool abort; + bool intr; + bool go; + } ctrl; + + struct { + bool busy; + bool intr; + bool error; + bool ready; + } status; + + uint32_t *write_mbox; + uint32_t *read_mbox; + + /* Mailbox position indicator */ + uint32_t read_mbox_idx; + uint32_t read_mbox_len; + uint32_t write_mbox_len; + + /* Protocols and its callback response */ + DOEProtocol *protocols; + uint16_t protocol_num; +}; + +void pcie_doe_init(PCIDevice *pdev, DOECap *doe_cap, uint16_t offset, + DOEProtocol *protocols, bool intr, uint16_t vec); +void pcie_doe_fini(DOECap *doe_cap); +bool pcie_doe_read_config(DOECap *doe_cap, uint32_t addr, int size, + uint32_t *buf); +void pcie_doe_write_config(DOECap *doe_cap, uint32_t addr, + uint32_t val, int size); +uint32_t pcie_doe_build_protocol(DOEProtocol *p); +void *pcie_doe_get_write_mbox_ptr(DOECap *doe_cap); +void pcie_doe_set_rsp(DOECap *doe_cap, void *rsp); +uint32_t pcie_doe_get_obj_len(void *obj); +#endif /* PCIE_DOE_H */ diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h index 1db86b0ec4..963dc2e170 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -179,4 +179,8 @@ typedef enum PCIExpLinkWidth { #define PCI_ACS_VER 0x1 #define PCI_ACS_SIZEOF 8 =20 +/* DOE Capability Register Fields */ +#define PCI_DOE_VER 0x1 +#define PCI_DOE_SIZEOF 24 + #endif /* QEMU_PCIE_REGS_H */ diff --git a/hw/pci/pcie_doe.c b/hw/pci/pcie_doe.c new file mode 100644 index 0000000000..2210f86968 --- /dev/null +++ b/hw/pci/pcie_doe.c @@ -0,0 +1,367 @@ +/* + * PCIe Data Object Exchange + * + * Copyright (C) 2021 Avery Design Systems, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "qemu/error-report.h" +#include "qapi/error.h" +#include "qemu/range.h" +#include "hw/pci/pci.h" +#include "hw/pci/pcie.h" +#include "hw/pci/pcie_doe.h" +#include "hw/pci/msi.h" +#include "hw/pci/msix.h" + +#define DWORD_BYTE 4 + +typedef struct DoeDiscoveryReq { + DOEHeader header; + uint8_t index; + uint8_t reserved[3]; +} QEMU_PACKED DoeDiscoveryReq; + +typedef struct DoeDiscoveryRsp { + DOEHeader header; + uint16_t vendor_id; + uint8_t data_obj_type; + uint8_t next_index; +} QEMU_PACKED DoeDiscoveryRsp; + +static bool pcie_doe_discovery(DOECap *doe_cap) +{ + DoeDiscoveryReq *req =3D pcie_doe_get_write_mbox_ptr(doe_cap); + DoeDiscoveryRsp rsp; + uint8_t index =3D req->index; + DOEProtocol *prot; + + /* Discard request if length does not match DoeDiscoveryReq */ + if (pcie_doe_get_obj_len(req) < + DIV_ROUND_UP(sizeof(DoeDiscoveryReq), DWORD_BYTE)) { + return false; + } + + rsp.header =3D (DOEHeader) { + .vendor_id =3D PCI_VENDOR_ID_PCI_SIG, + .data_obj_type =3D PCI_SIG_DOE_DISCOVERY, + .length =3D DIV_ROUND_UP(sizeof(DoeDiscoveryRsp), DWORD_BYTE), + }; + + /* Point to the requested protocol, index 0 must be Discovery */ + if (index =3D=3D 0) { + rsp.vendor_id =3D PCI_VENDOR_ID_PCI_SIG; + rsp.data_obj_type =3D PCI_SIG_DOE_DISCOVERY; + } else { + if (index < doe_cap->protocol_num) { + prot =3D &doe_cap->protocols[index - 1]; + rsp.vendor_id =3D prot->vendor_id; + rsp.data_obj_type =3D prot->data_obj_type; + } else { + rsp.vendor_id =3D 0xFFFF; + rsp.data_obj_type =3D 0xFF; + } + } + + if (index + 1 =3D=3D doe_cap->protocol_num) { + rsp.next_index =3D 0; + } else { + rsp.next_index =3D index + 1; + } + + pcie_doe_set_rsp(doe_cap, &rsp); + + return true; +} + +static void pcie_doe_reset_mbox(DOECap *st) +{ + st->read_mbox_idx =3D 0; + st->read_mbox_len =3D 0; + st->write_mbox_len =3D 0; + + memset(st->read_mbox, 0, PCI_DOE_DW_SIZE_MAX * DWORD_BYTE); + memset(st->write_mbox, 0, PCI_DOE_DW_SIZE_MAX * DWORD_BYTE); +} + +void pcie_doe_init(PCIDevice *dev, DOECap *doe_cap, uint16_t offset, + DOEProtocol *protocols, bool intr, uint16_t vec) +{ + pcie_add_capability(dev, PCI_EXT_CAP_ID_DOE, 0x1, offset, + PCI_DOE_SIZEOF); + + doe_cap->pdev =3D dev; + doe_cap->offset =3D offset; + + if (intr && (msi_present(dev) || msix_present(dev))) { + doe_cap->cap.intr =3D intr; + doe_cap->cap.vec =3D vec; + } + + doe_cap->write_mbox =3D g_malloc0(PCI_DOE_DW_SIZE_MAX * DWORD_BYTE); + doe_cap->read_mbox =3D g_malloc0(PCI_DOE_DW_SIZE_MAX * DWORD_BYTE); + + pcie_doe_reset_mbox(doe_cap); + + doe_cap->protocols =3D protocols; + for (; protocols->vendor_id; protocols++) { + doe_cap->protocol_num++; + } + assert(doe_cap->protocol_num < PCI_DOE_PROTOCOL_NUM_MAX); + + /* Increment to allow for the discovery protocol */ + doe_cap->protocol_num++; +} + +void pcie_doe_fini(DOECap *doe_cap) +{ + g_free(doe_cap->read_mbox); + g_free(doe_cap->write_mbox); + g_free(doe_cap); +} + +uint32_t pcie_doe_build_protocol(DOEProtocol *p) +{ + return DATA_OBJ_BUILD_HEADER1(p->vendor_id, p->data_obj_type); +} + +void *pcie_doe_get_write_mbox_ptr(DOECap *doe_cap) +{ + return doe_cap->write_mbox; +} + +/* + * Copy the response to read mailbox buffer + * This might be called in self-defined handle_request() if a DOE response= is + * required in the corresponding protocol + */ +void pcie_doe_set_rsp(DOECap *doe_cap, void *rsp) +{ + uint32_t len =3D pcie_doe_get_obj_len(rsp); + + memcpy(doe_cap->read_mbox + doe_cap->read_mbox_len, rsp, len * DWORD_B= YTE); + doe_cap->read_mbox_len +=3D len; +} + +uint32_t pcie_doe_get_obj_len(void *obj) +{ + uint32_t len; + + if (!obj) { + return 0; + } + + /* Only lower 18 bits are valid */ + len =3D DATA_OBJ_LEN_MASK(((DOEHeader *)obj)->length); + + /* PCIe r6.0 Table 6.29: a value of 00000h indicates 2^18 DW */ + return (len) ? len : PCI_DOE_DW_SIZE_MAX; +} + +static void pcie_doe_irq_assert(DOECap *doe_cap) +{ + PCIDevice *dev =3D doe_cap->pdev; + + if (doe_cap->cap.intr && doe_cap->ctrl.intr) { + if (doe_cap->status.intr) { + return; + } + doe_cap->status.intr =3D 1; + + if (msix_enabled(dev)) { + msix_notify(dev, doe_cap->cap.vec); + } else if (msi_enabled(dev)) { + msi_notify(dev, doe_cap->cap.vec); + } + } +} + +static void pcie_doe_set_ready(DOECap *doe_cap, bool rdy) +{ + doe_cap->status.ready =3D rdy; + + if (rdy) { + pcie_doe_irq_assert(doe_cap); + } +} + +static void pcie_doe_set_error(DOECap *doe_cap, bool err) +{ + doe_cap->status.error =3D err; + + if (err) { + pcie_doe_irq_assert(doe_cap); + } +} + +/* + * Check incoming request in write_mbox for protocol format + */ +static void pcie_doe_prepare_rsp(DOECap *doe_cap) +{ + bool success =3D false; + int p; + bool (*handle_request)(DOECap *) =3D NULL; + + if (doe_cap->status.error) { + return; + } + + if (doe_cap->write_mbox[0] =3D=3D + DATA_OBJ_BUILD_HEADER1(PCI_VENDOR_ID_PCI_SIG, PCI_SIG_DOE_DISCOVER= Y)) { + handle_request =3D pcie_doe_discovery; + } else { + for (p =3D 0; p < doe_cap->protocol_num - 1; p++) { + if (doe_cap->write_mbox[0] =3D=3D + pcie_doe_build_protocol(&doe_cap->protocols[p])) { + handle_request =3D doe_cap->protocols[p].handle_request; + break; + } + } + } + + /* + * PCIe r6 DOE 6.30.1: + * If the number of DW transferred does not match the + * indicated Length for a data object, then the + * data object must be silently discarded. + */ + if (handle_request && (doe_cap->write_mbox_len =3D=3D + pcie_doe_get_obj_len(pcie_doe_get_write_mbox_ptr(doe_cap)))) { + success =3D handle_request(doe_cap); + } + + if (success) { + pcie_doe_set_ready(doe_cap, 1); + } else { + pcie_doe_reset_mbox(doe_cap); + } +} + +/* + * Read from DOE config space. + * Return false if the address not within DOE_CAP range. + */ +bool pcie_doe_read_config(DOECap *doe_cap, uint32_t addr, int size, + uint32_t *buf) +{ + uint32_t shift; + uint16_t doe_offset =3D doe_cap->offset; + + if (!range_covers_byte(doe_offset + PCI_EXP_DOE_CAP, + PCI_DOE_SIZEOF - 4, addr)) { + return false; + } + + addr -=3D doe_offset; + *buf =3D 0; + + if (range_covers_byte(PCI_EXP_DOE_CAP, DWORD_BYTE, addr)) { + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_REG, INTR_SUPP, + doe_cap->cap.intr); + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_REG, DOE_INTR_MSG_NUM, + doe_cap->cap.vec); + } else if (range_covers_byte(PCI_EXP_DOE_CTRL, DWORD_BYTE, addr)) { + /* Must return ABORT=3D0 and GO=3D0 */ + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_CONTROL, DOE_INTR_EN, + doe_cap->ctrl.intr); + } else if (range_covers_byte(PCI_EXP_DOE_STATUS, DWORD_BYTE, addr)) { + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_STATUS, DOE_BUSY, + doe_cap->status.busy); + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_STATUS, DOE_INTR_STATUS, + doe_cap->status.intr); + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_STATUS, DOE_ERROR, + doe_cap->status.error); + *buf =3D FIELD_DP32(*buf, PCI_DOE_CAP_STATUS, DATA_OBJ_RDY, + doe_cap->status.ready); + /* Mailbox should be DW accessed */ + } else if (addr =3D=3D PCI_EXP_DOE_RD_DATA_MBOX && size =3D=3D DWORD_B= YTE) { + if (doe_cap->status.ready && !doe_cap->status.error) { + *buf =3D doe_cap->read_mbox[doe_cap->read_mbox_idx]; + } + } + + /* Process Alignment */ + shift =3D addr % DWORD_BYTE; + *buf =3D extract32(*buf, shift * 8, size * 8); + + return true; +} + +/* + * Write to DOE config space. + * Return if the address not within DOE_CAP range or receives an abort + */ +void pcie_doe_write_config(DOECap *doe_cap, + uint32_t addr, uint32_t val, int size) +{ + uint16_t doe_offset =3D doe_cap->offset; + uint32_t shift; + + if (!range_covers_byte(doe_offset + PCI_EXP_DOE_CAP, + PCI_DOE_SIZEOF - 4, addr)) { + return; + } + + /* Process Alignment */ + shift =3D addr % DWORD_BYTE; + addr -=3D (doe_offset + shift); + val =3D deposit32(val, shift * 8, size * 8, val); + + switch (addr) { + case PCI_EXP_DOE_CTRL: + if (FIELD_EX32(val, PCI_DOE_CAP_CONTROL, DOE_ABORT)) { + pcie_doe_set_ready(doe_cap, 0); + pcie_doe_set_error(doe_cap, 0); + pcie_doe_reset_mbox(doe_cap); + return; + } + + if (FIELD_EX32(val, PCI_DOE_CAP_CONTROL, DOE_GO)) { + pcie_doe_prepare_rsp(doe_cap); + } + + if (FIELD_EX32(val, PCI_DOE_CAP_CONTROL, DOE_INTR_EN)) { + doe_cap->ctrl.intr =3D 1; + /* Clear interrupt bit located within the first byte */ + } else if (shift =3D=3D 0) { + doe_cap->ctrl.intr =3D 0; + } + break; + case PCI_EXP_DOE_STATUS: + if (FIELD_EX32(val, PCI_DOE_CAP_STATUS, DOE_INTR_STATUS)) { + doe_cap->status.intr =3D 0; + } + break; + case PCI_EXP_DOE_RD_DATA_MBOX: + /* Mailbox should be DW accessed */ + if (size !=3D DWORD_BYTE) { + return; + } + doe_cap->read_mbox_idx++; + if (doe_cap->read_mbox_idx =3D=3D doe_cap->read_mbox_len) { + pcie_doe_reset_mbox(doe_cap); + pcie_doe_set_ready(doe_cap, 0); + } else if (doe_cap->read_mbox_idx > doe_cap->read_mbox_len) { + /* Underflow */ + pcie_doe_set_error(doe_cap, 1); + } + break; + case PCI_EXP_DOE_WR_DATA_MBOX: + /* Mailbox should be DW accessed */ + if (size !=3D DWORD_BYTE) { + return; + } + doe_cap->write_mbox[doe_cap->write_mbox_len] =3D val; + doe_cap->write_mbox_len++; + break; + case PCI_EXP_DOE_CAP: + /* fallthrough */ + default: + break; + } +} diff --git a/MAINTAINERS b/MAINTAINERS index 8ea193c812..47c02889a8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1832,6 +1832,13 @@ F: qapi/pci.json F: docs/pci* F: docs/specs/*pci* =20 +PCIE DOE +M: Huai-Cheng Kuo +M: Chris Browy +S: Supported +F: include/hw/pci/pcie_doe.h +F: hw/pci/pcie_doe.c + ACPI/SMBIOS M: Michael S. Tsirkin M: Igor Mammedov diff --git a/hw/pci/meson.build b/hw/pci/meson.build index bcc9c75919..5aff7ed1c6 100644 --- a/hw/pci/meson.build +++ b/hw/pci/meson.build @@ -13,6 +13,7 @@ pci_ss.add(files( # allow plugging PCIe devices into PCI buses, include them even if # CONFIG_PCI_EXPRESS=3Dn. pci_ss.add(files('pcie.c', 'pcie_aer.c')) +pci_ss.add(files('pcie_doe.c')) softmmu_ss.add(when: 'CONFIG_PCI_EXPRESS', if_true: files('pcie_port.c', '= pcie_host.c')) softmmu_ss.add_all(when: 'CONFIG_PCI', if_true: pci_ss) =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220878; cv=none; d=zohomail.com; s=zohoarc; b=ahXZGJzO3aafvIKvVPb7s4SnXYFNKECMAr03QAn2deYNWIhzU/J8ltlR70syakcqH8Zax/Hr5TOjtk/ma59L5ADQPLMlYjoy0GmLUTU8nSIz8gDEZaBubGkaMPUD6bawg8cL315Oe5zR7e4qAcp7iOm7qcGnVbPWacOjQQZQcFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220878; h=Content-Type: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=Z6k8eWzaJQHXE4F1qrV9ZYoibJr1f+k/dRgNKPeQVhg=; b=GifXGfjXUluBx/zpFvMK5JOTL4L8T0S3Mz3srRwCNT4rKxX3ux1K9lnm94qK83iDNo+F+enEfiCv3xmx1Ico05sYFyZmQvnQ/0WN5GdfrMedRFtVovuv5dzAbFryfOZp8kB7zNm9NU2X862fAnlPEZS35ocXID+4dyzhqB05HS4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220878718429.22202680036185; Mon, 31 Oct 2022 05:54:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHr-0007Tq-KA; Mon, 31 Oct 2022 08:53:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHH-0003Js-9H for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGy-0002Zq-H4 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:30 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-38-_TWURQDVPLGWJ9QHNF85fA-1; Mon, 31 Oct 2022 08:52:07 -0400 Received: by mail-wr1-f71.google.com with SMTP id g4-20020adfbc84000000b0022fc417f87cso3040770wrh.12 for ; Mon, 31 Oct 2022 05:52:07 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id b9-20020a5d45c9000000b0022e36c1113fsm6837141wrs.13.2022.10.31.05.52.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220730; 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: in-reply-to:in-reply-to:references:references; bh=Z6k8eWzaJQHXE4F1qrV9ZYoibJr1f+k/dRgNKPeQVhg=; b=By2Yj0i8J7GgzzyneR9lOD6guBhbtNIyGq82DFG5+kBjtl8228Me/ICy0vP6sz8AiBuVVS V+iUnkeA+FGcB7QoSjBTUEvkgOy2WjxZfW5ctyMqjBAltbhLmNR0GFSnUqyOL1CLlE+D0u +sEwn+qxjkqsXQGJI+lQZ6KB6boXcI4= X-MC-Unique: _TWURQDVPLGWJ9QHNF85fA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Z6k8eWzaJQHXE4F1qrV9ZYoibJr1f+k/dRgNKPeQVhg=; b=sRqC+BBomzBmurzEc0Vrn4LRc7zDPWVwH4a51j5oT8FdVc4TrcZKOEiWVpFC03NpRS Yb7zLhg+l7DASi+CrUpRNG+tR+20+LhVDbgquVoqxa8InYTHR3DXD09T02GDF8ut5gR1 DkaVmebqysGslKOHdJSpRjvvsUfYUyPlJABVbxJXUyrMYvSNMFPX/u5Qimg2QbR68GU9 MozsrA7P8+5QbrCLQ6UPdnptd0mpWhIKmudFMRjO7NZrznoFCMLEX6XEuDz8yMEhoMxW OTZ0wI2f8xQnHiZhM7J2A9y3ZfyQ/tI0Gh8XC+0WeP2WhTScCqWPx8IvBuqAyX1QddEk f61A== X-Gm-Message-State: ACrzQf1d/dX4jYwfpAQbieAAsp14jUq9qeYCLnEWYFEU9jPqQ9hCqI51 G7ma6NXWqn4lIUlnY7Dg5/EKVFAHrNJgcxZ51gWmiKznBbLuQoAoFpXtnozrIz4i9hfZymDB4vn gpMudC00hEoPcuORH3icKUaGlI0fu5GAM5HHcfThC075Jfmxh0GoCYNOVMo/n X-Received: by 2002:a05:600c:35cf:b0:3c6:e957:b403 with SMTP id r15-20020a05600c35cf00b003c6e957b403mr18938582wmq.162.1667220726072; Mon, 31 Oct 2022 05:52:06 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6varnUyn4I1IlG1+qQd9LuoiXRVKxsISeZlXMQ/J+Mjf8gub7hjZ7Rt5SYPQ7hUWnGA3na4g== X-Received: by 2002:a05:600c:35cf:b0:3c6:e957:b403 with SMTP id r15-20020a05600c35cf00b003c6e957b403mr18938567wmq.162.1667220725812; Mon, 31 Oct 2022 05:52:05 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:03 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jonathan Cameron , Ben Widawsky Subject: [PULL 28/86] hw/mem/cxl-type3: Add MSIX support Message-ID: <20221031124928.128475-29-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220880808100004 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonathan Cameron This will be used by several upcoming patch sets so break it out such that it doesn't matter which one lands first. Signed-off-by: Jonathan Cameron Message-Id: <20221014151045.24781-3-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/mem/cxl_type3.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index a71bf1afeb..568c9d62f5 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -13,6 +13,7 @@ #include "qemu/rcu.h" #include "sysemu/hostmem.h" #include "hw/cxl/cxl.h" +#include "hw/pci/msix.h" =20 /* * Null value of all Fs suggested by IEEE RA guidelines for use of @@ -146,6 +147,8 @@ static void ct3_realize(PCIDevice *pci_dev, Error **err= p) ComponentRegisters *regs =3D &cxl_cstate->crb; MemoryRegion *mr =3D ®s->component_registers; uint8_t *pci_conf =3D pci_dev->config; + unsigned short msix_num =3D 1; + int i; =20 if (!cxl_setup_memory(ct3d, errp)) { return; @@ -180,6 +183,12 @@ static void ct3_realize(PCIDevice *pci_dev, Error **er= rp) PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64, &ct3d->cxl_dstate.device_registers); + + /* MSI(-X) Initailization */ + msix_init_exclusive_bar(pci_dev, msix_num, 4, NULL); + for (i =3D 0; i < msix_num; i++) { + msix_vector_use(pci_dev, i); + } } =20 static void ct3_exit(PCIDevice *pci_dev) --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221742; cv=none; d=zohomail.com; s=zohoarc; b=U0y2d9YmrpNCfMfLGMsMp/5G3+pFIF4TlhfK8qK8aj7ooqgNA1hTBFqsmN49AetzWm5Q7L7q6ff9wLyc6ha1Z8iBMVEEAlZaUuic9BJlp1WPT/PiTLVGF9mRmkx3nOqhvfZDrm8/envpJerV7SickonRELaNV3irRRSr5lPEBjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221742; h=Content-Type: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=ERzEI18Yr0lNIjwRz1p2jXmUs5Nmir9DxqjwcH2xiP0=; b=ZQWLpkBwzKxZlIOjyRO57p/Ge1N+1GfF+PXOFz+mQKk5bz4plVxP4Pry80zvkJte8Vtopv6MgoRCjuhx0xpWq+dPyg+nbXwh0iv97LqRPTOVWuK+JpeSjS6t4iTzl5oh+Obz8XdwTXR/wxXewTm82WMNs9aQpqxnOjcnjX+Gtuw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221742991679.8694355069632; Mon, 31 Oct 2022 06:09:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHc-0005ld-Gk; Mon, 31 Oct 2022 08:52:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH7-0002gb-HY for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUGy-0002a1-Mj for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:21 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-497-j-7D7uGMOBay9uwyAb0sgQ-1; Mon, 31 Oct 2022 08:52:10 -0400 Received: by mail-wr1-f71.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so3017953wra.15 for ; Mon, 31 Oct 2022 05:52:10 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id l13-20020a05600c2ccd00b003a2f2bb72d5sm8138590wmc.45.2022.10.31.05.52.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220732; 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: in-reply-to:in-reply-to:references:references; bh=ERzEI18Yr0lNIjwRz1p2jXmUs5Nmir9DxqjwcH2xiP0=; b=PsshcXPqkRExvRY2K5toDPx4NrFkgpHO2BayrZ6ByTrEpM308JGrUW25W/dwhDud56+oWg ON5DHDZ7dyrOtHVxUjb8Jk7TrvquQ1dZsFYzNvTc+Bm8GMOBuTcP3ZBhEJcUSU++gTBj9c BfBS8c47vrJU7+CzuuOY98ESDsutQjc= X-MC-Unique: j-7D7uGMOBay9uwyAb0sgQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ERzEI18Yr0lNIjwRz1p2jXmUs5Nmir9DxqjwcH2xiP0=; b=oeicPjQZ8uvysCj7KjxX+CW/2HtXtIWS6AqxLmV0mdasP9JL/DwFLskbtlNpXXFVup Mak5V7QLOGih1U+frSgj2CEv2yFqPg7nEpHQjmubM0YA1LTBimLvgSxZ33ZcbNyagsqB 5FbMi6Z6zgMNNeza416VziN4uWXVdGS6nelr9YBzjigRVJ7D+1ZbPBjGl9je8QYB5/R3 4NnrYnRDLr6DkHeT1lDO+/wTRAPg24as6t0pg+MOE4k7SZ8Oueyp1KY37SRcN+zv9oTg jyvF7S6B/J5b7wyjPGqZytKXdB0BIXtxICGf2Jz4NUmdzJMiGp+fObRr2LS68KHiGtjg JUnQ== X-Gm-Message-State: ACrzQf3nCxuq0/tLtVglvo8Avs/dOjiJjh91mOAgE1y9p/ZG3lctjWVI w/LrwBKVZH2hEOOEt869YEzuXKYebx5FKKAhjT6MJW9ZquuyoJXVxndiqQd7bWP09bNi2O/3axa eLvDAW1oP0Py2bkuCr3ahhHAzF/Q3woFUPPgO4jCfWxcTX21y9Y3qNk8/Csix X-Received: by 2002:a05:600c:4fcf:b0:3c6:cdb9:b68f with SMTP id o15-20020a05600c4fcf00b003c6cdb9b68fmr18582048wmq.73.1667220729235; Mon, 31 Oct 2022 05:52:09 -0700 (PDT) X-Google-Smtp-Source: AMsMyM75k9Z36xbjdcWgxfrgwy/qzC9HOkFjq1IwtSXhrzQMrOb960pI9rJfhtPrP/frFeJgyN8xNg== X-Received: by 2002:a05:600c:4fcf:b0:3c6:cdb9:b68f with SMTP id o15-20020a05600c4fcf00b003c6cdb9b68fmr18582025wmq.73.1667220728754; Mon, 31 Oct 2022 05:52:08 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Huai-Cheng Kuo , Chris Browy , Jonathan Cameron , Ben Widawsky Subject: [PULL 29/86] hw/cxl/cdat: CXL CDAT Data Object Exchange implementation Message-ID: <20221031124928.128475-30-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221744148100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Huai-Cheng Kuo The Data Object Exchange implementation of CXL Coherent Device Attribute Table (CDAT). This implementation is referring to "Coherent Device Attribute Table Specification, Rev. 1.03, July. 2022" and "Compute Express Link Specification, Rev. 3.0, July. 2022" This patch adds core support that will be shared by both end-points and switch port emulation. Signed-off-by: Huai-Cheng Kuo Signed-off-by: Chris Browy Signed-off-by: Jonathan Cameron Message-Id: <20221014151045.24781-4-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/cxl/cxl_cdat.h | 165 ++++++++++++++++++++++++ include/hw/cxl/cxl_component.h | 7 ++ include/hw/cxl/cxl_device.h | 3 + include/hw/cxl/cxl_pci.h | 1 + hw/cxl/cxl-cdat.c | 224 +++++++++++++++++++++++++++++++++ hw/cxl/meson.build | 1 + 6 files changed, 401 insertions(+) create mode 100644 include/hw/cxl/cxl_cdat.h create mode 100644 hw/cxl/cxl-cdat.c diff --git a/include/hw/cxl/cxl_cdat.h b/include/hw/cxl/cxl_cdat.h new file mode 100644 index 0000000000..52c232e912 --- /dev/null +++ b/include/hw/cxl/cxl_cdat.h @@ -0,0 +1,165 @@ +/* + * CXL CDAT Structure + * + * Copyright (C) 2021 Avery Design Systems, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef CXL_CDAT_H +#define CXL_CDAT_H + +#include "hw/cxl/cxl_pci.h" + +/* + * Reference: + * Coherent Device Attribute Table (CDAT) Specification, Rev. 1.03, July= . 2022 + * Compute Express Link (CXL) Specification, Rev. 3.0, Aug. 2022 + */ +/* Table Access DOE - CXL r3.0 8.1.11 */ +#define CXL_DOE_TABLE_ACCESS 2 +#define CXL_DOE_PROTOCOL_CDAT ((CXL_DOE_TABLE_ACCESS << 16) | CXL_VEND= OR_ID) + +/* Read Entry - CXL r3.0 8.1.11.1 */ +#define CXL_DOE_TAB_TYPE_CDAT 0 +#define CXL_DOE_TAB_ENT_MAX 0xFFFF + +/* Read Entry Request - CXL r3.0 8.1.11.1 Table 8-13 */ +#define CXL_DOE_TAB_REQ 0 +typedef struct CDATReq { + DOEHeader header; + uint8_t req_code; + uint8_t table_type; + uint16_t entry_handle; +} QEMU_PACKED CDATReq; + +/* Read Entry Response - CXL r3.0 8.1.11.1 Table 8-14 */ +#define CXL_DOE_TAB_RSP 0 +typedef struct CDATRsp { + DOEHeader header; + uint8_t rsp_code; + uint8_t table_type; + uint16_t entry_handle; +} QEMU_PACKED CDATRsp; + +/* CDAT Table Format - CDAT Table 1 */ +#define CXL_CDAT_REV 2 +typedef struct CDATTableHeader { + uint32_t length; + uint8_t revision; + uint8_t checksum; + uint8_t reserved[6]; + uint32_t sequence; +} QEMU_PACKED CDATTableHeader; + +/* CDAT Structure Types - CDAT Table 2 */ +typedef enum { + CDAT_TYPE_DSMAS =3D 0, + CDAT_TYPE_DSLBIS =3D 1, + CDAT_TYPE_DSMSCIS =3D 2, + CDAT_TYPE_DSIS =3D 3, + CDAT_TYPE_DSEMTS =3D 4, + CDAT_TYPE_SSLBIS =3D 5, +} CDATType; + +typedef struct CDATSubHeader { + uint8_t type; + uint8_t reserved; + uint16_t length; +} CDATSubHeader; + +/* Device Scoped Memory Affinity Structure - CDAT Table 3 */ +typedef struct CDATDsmas { + CDATSubHeader header; + uint8_t DSMADhandle; + uint8_t flags; +#define CDAT_DSMAS_FLAG_NV (1 << 2) +#define CDAT_DSMAS_FLAG_SHAREABLE (1 << 3) +#define CDAT_DSMAS_FLAG_HW_COHERENT (1 << 4) +#define CDAT_DSMAS_FLAG_DYNAMIC_CAP (1 << 5) + uint16_t reserved; + uint64_t DPA_base; + uint64_t DPA_length; +} QEMU_PACKED CDATDsmas; + +/* Device Scoped Latency and Bandwidth Information Structure - CDAT Table = 5 */ +typedef struct CDATDslbis { + CDATSubHeader header; + uint8_t handle; + /* Definitions of these fields refer directly to HMAT fields */ + uint8_t flags; + uint8_t data_type; + uint8_t reserved; + uint64_t entry_base_unit; + uint16_t entry[3]; + uint16_t reserved2; +} QEMU_PACKED CDATDslbis; + +/* Device Scoped Memory Side Cache Information Structure - CDAT Table 6 */ +typedef struct CDATDsmscis { + CDATSubHeader header; + uint8_t DSMAS_handle; + uint8_t reserved[3]; + uint64_t memory_side_cache_size; + uint32_t cache_attributes; +} QEMU_PACKED CDATDsmscis; + +/* Device Scoped Initiator Structure - CDAT Table 7 */ +typedef struct CDATDsis { + CDATSubHeader header; + uint8_t flags; + uint8_t handle; + uint16_t reserved; +} QEMU_PACKED CDATDsis; + +/* Device Scoped EFI Memory Type Structure - CDAT Table 8 */ +typedef struct CDATDsemts { + CDATSubHeader header; + uint8_t DSMAS_handle; + uint8_t EFI_memory_type_attr; + uint16_t reserved; + uint64_t DPA_offset; + uint64_t DPA_length; +} QEMU_PACKED CDATDsemts; + +/* Switch Scoped Latency and Bandwidth Information Structure - CDAT Table = 9 */ +typedef struct CDATSslbisHeader { + CDATSubHeader header; + uint8_t data_type; + uint8_t reserved[3]; + uint64_t entry_base_unit; +} QEMU_PACKED CDATSslbisHeader; + +/* Switch Scoped Latency and Bandwidth Entry - CDAT Table 10 */ +typedef struct CDATSslbe { + uint16_t port_x_id; + uint16_t port_y_id; + uint16_t latency_bandwidth; + uint16_t reserved; +} QEMU_PACKED CDATSslbe; + +typedef struct CDATSslbis { + CDATSslbisHeader sslbis_header; + CDATSslbe sslbe[]; +} QEMU_PACKED CDATSslbis; + +typedef struct CDATEntry { + void *base; + uint32_t length; +} CDATEntry; + +typedef struct CDATObject { + CDATEntry *entry; + int entry_len; + + int (*build_cdat_table)(CDATSubHeader ***cdat_table, void *priv); + void (*free_cdat_table)(CDATSubHeader **cdat_table, int num, void *pri= v); + bool to_update; + void *private; + char *filename; + uint8_t *buf; + struct CDATSubHeader **built_buf; + int built_buf_len; +} CDATObject; +#endif /* CXL_CDAT_H */ diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h index 94ec2f07d7..34075cfb72 100644 --- a/include/hw/cxl/cxl_component.h +++ b/include/hw/cxl/cxl_component.h @@ -19,6 +19,7 @@ #include "qemu/range.h" #include "qemu/typedefs.h" #include "hw/register.h" +#include "qapi/error.h" =20 enum reg_type { CXL2_DEVICE, @@ -184,6 +185,8 @@ typedef struct cxl_component { struct PCIDevice *pdev; }; }; + + CDATObject cdat; } CXLComponentState; =20 void cxl_component_register_block_init(Object *obj, @@ -220,4 +223,8 @@ static inline hwaddr cxl_decode_ig(int ig) =20 CXLComponentState *cxl_get_hb_cstate(PCIHostState *hb); =20 +void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp); +void cxl_doe_cdat_release(CXLComponentState *cxl_cstate); +void cxl_doe_cdat_update(CXLComponentState *cxl_cstate, Error **errp); + #endif diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index e4d221cdb3..449b0edfe9 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -243,6 +243,9 @@ struct CXLType3Dev { AddressSpace hostmem_as; CXLComponentState cxl_cstate; CXLDeviceState cxl_dstate; + + /* DOE */ + DOECap doe_cdat; }; =20 #define TYPE_CXL_TYPE3 "cxl-type3" diff --git a/include/hw/cxl/cxl_pci.h b/include/hw/cxl/cxl_pci.h index 01cf002096..3cb79eca1e 100644 --- a/include/hw/cxl/cxl_pci.h +++ b/include/hw/cxl/cxl_pci.h @@ -13,6 +13,7 @@ #include "qemu/compiler.h" #include "hw/pci/pci.h" #include "hw/pci/pcie.h" +#include "hw/cxl/cxl_cdat.h" =20 #define CXL_VENDOR_ID 0x1e98 =20 diff --git a/hw/cxl/cxl-cdat.c b/hw/cxl/cxl-cdat.c new file mode 100644 index 0000000000..3653aa56f0 --- /dev/null +++ b/hw/cxl/cxl-cdat.c @@ -0,0 +1,224 @@ +/* + * CXL CDAT Structure + * + * Copyright (C) 2021 Avery Design Systems, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "hw/pci/pci.h" +#include "hw/cxl/cxl.h" +#include "qapi/error.h" +#include "qemu/error-report.h" + +static void cdat_len_check(CDATSubHeader *hdr, Error **errp) +{ + assert(hdr->length); + assert(hdr->reserved =3D=3D 0); + + switch (hdr->type) { + case CDAT_TYPE_DSMAS: + assert(hdr->length =3D=3D sizeof(CDATDsmas)); + break; + case CDAT_TYPE_DSLBIS: + assert(hdr->length =3D=3D sizeof(CDATDslbis)); + break; + case CDAT_TYPE_DSMSCIS: + assert(hdr->length =3D=3D sizeof(CDATDsmscis)); + break; + case CDAT_TYPE_DSIS: + assert(hdr->length =3D=3D sizeof(CDATDsis)); + break; + case CDAT_TYPE_DSEMTS: + assert(hdr->length =3D=3D sizeof(CDATDsemts)); + break; + case CDAT_TYPE_SSLBIS: + assert(hdr->length >=3D sizeof(CDATSslbisHeader)); + assert((hdr->length - sizeof(CDATSslbisHeader)) % + sizeof(CDATSslbe) =3D=3D 0); + break; + default: + error_setg(errp, "Type %d is reserved", hdr->type); + } +} + +static void ct3_build_cdat(CDATObject *cdat, Error **errp) +{ + g_autofree CDATTableHeader *cdat_header =3D NULL; + g_autofree CDATEntry *cdat_st =3D NULL; + uint8_t sum =3D 0; + int ent, i; + + /* Use default table if fopen =3D=3D NULL */ + assert(cdat->build_cdat_table); + + cdat_header =3D g_malloc0(sizeof(*cdat_header)); + if (!cdat_header) { + error_setg(errp, "Failed to allocate CDAT header"); + return; + } + + cdat->built_buf_len =3D cdat->build_cdat_table(&cdat->built_buf, cdat-= >private); + + if (!cdat->built_buf_len) { + /* Build later as not all data available yet */ + cdat->to_update =3D true; + return; + } + cdat->to_update =3D false; + + cdat_st =3D g_malloc0(sizeof(*cdat_st) * (cdat->built_buf_len + 1)); + if (!cdat_st) { + error_setg(errp, "Failed to allocate CDAT entry array"); + return; + } + + /* Entry 0 for CDAT header, starts with Entry 1 */ + for (ent =3D 1; ent < cdat->built_buf_len + 1; ent++) { + CDATSubHeader *hdr =3D cdat->built_buf[ent - 1]; + uint8_t *buf =3D (uint8_t *)cdat->built_buf[ent - 1]; + + cdat_st[ent].base =3D hdr; + cdat_st[ent].length =3D hdr->length; + + cdat_header->length +=3D hdr->length; + for (i =3D 0; i < hdr->length; i++) { + sum +=3D buf[i]; + } + } + + /* CDAT header */ + cdat_header->revision =3D CXL_CDAT_REV; + /* For now, no runtime updates */ + cdat_header->sequence =3D 0; + cdat_header->length +=3D sizeof(CDATTableHeader); + sum +=3D cdat_header->revision + cdat_header->sequence + + cdat_header->length; + /* Sum of all bytes including checksum must be 0 */ + cdat_header->checksum =3D ~sum + 1; + + cdat_st[0].base =3D g_steal_pointer(&cdat_header); + cdat_st[0].length =3D sizeof(*cdat_header); + cdat->entry_len =3D 1 + cdat->built_buf_len; + cdat->entry =3D g_steal_pointer(&cdat_st); +} + +static void ct3_load_cdat(CDATObject *cdat, Error **errp) +{ + g_autofree CDATEntry *cdat_st =3D NULL; + uint8_t sum =3D 0; + int num_ent; + int i =3D 0, ent =3D 1, file_size =3D 0; + CDATSubHeader *hdr; + FILE *fp =3D NULL; + + /* Read CDAT file and create its cache */ + fp =3D fopen(cdat->filename, "r"); + if (!fp) { + error_setg(errp, "CDAT: Unable to open file"); + return; + } + + fseek(fp, 0, SEEK_END); + file_size =3D ftell(fp); + fseek(fp, 0, SEEK_SET); + cdat->buf =3D g_malloc0(file_size); + + if (fread(cdat->buf, file_size, 1, fp) =3D=3D 0) { + error_setg(errp, "CDAT: File read failed"); + return; + } + + fclose(fp); + + if (file_size < sizeof(CDATTableHeader)) { + error_setg(errp, "CDAT: File too short"); + return; + } + i =3D sizeof(CDATTableHeader); + num_ent =3D 1; + while (i < file_size) { + hdr =3D (CDATSubHeader *)(cdat->buf + i); + cdat_len_check(hdr, errp); + i +=3D hdr->length; + num_ent++; + } + if (i !=3D file_size) { + error_setg(errp, "CDAT: File length missmatch"); + return; + } + + cdat_st =3D g_malloc0(sizeof(*cdat_st) * num_ent); + if (!cdat_st) { + error_setg(errp, "CDAT: Failed to allocate entry array"); + return; + } + + /* Set CDAT header, Entry =3D 0 */ + cdat_st[0].base =3D cdat->buf; + cdat_st[0].length =3D sizeof(CDATTableHeader); + i =3D 0; + + while (i < cdat_st[0].length) { + sum +=3D cdat->buf[i++]; + } + + /* Read CDAT structures */ + while (i < file_size) { + hdr =3D (CDATSubHeader *)(cdat->buf + i); + cdat_len_check(hdr, errp); + + cdat_st[ent].base =3D hdr; + cdat_st[ent].length =3D hdr->length; + + while (cdat->buf + i < + (uint8_t *)cdat_st[ent].base + cdat_st[ent].length) { + assert(i < file_size); + sum +=3D cdat->buf[i++]; + } + + ent++; + } + + if (sum !=3D 0) { + warn_report("CDAT: Found checksum mismatch in %s", cdat->filename); + } + cdat->entry_len =3D num_ent; + cdat->entry =3D g_steal_pointer(&cdat_st); +} + +void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp) +{ + CDATObject *cdat =3D &cxl_cstate->cdat; + + if (cdat->filename) { + ct3_load_cdat(cdat, errp); + } else { + ct3_build_cdat(cdat, errp); + } +} + +void cxl_doe_cdat_update(CXLComponentState *cxl_cstate, Error **errp) +{ + CDATObject *cdat =3D &cxl_cstate->cdat; + + if (cdat->to_update) { + ct3_build_cdat(cdat, errp); + } +} + +void cxl_doe_cdat_release(CXLComponentState *cxl_cstate) +{ + CDATObject *cdat =3D &cxl_cstate->cdat; + + free(cdat->entry); + if (cdat->built_buf) { + cdat->free_cdat_table(cdat->built_buf, cdat->built_buf_len, + cdat->private); + } + if (cdat->buf) { + free(cdat->buf); + } +} diff --git a/hw/cxl/meson.build b/hw/cxl/meson.build index f117b99949..cfa95ffd40 100644 --- a/hw/cxl/meson.build +++ b/hw/cxl/meson.build @@ -4,6 +4,7 @@ softmmu_ss.add(when: 'CONFIG_CXL', 'cxl-device-utils.c', 'cxl-mailbox-utils.c', 'cxl-host.c', + 'cxl-cdat.c', ), if_false: files( 'cxl-host-stubs.c', --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220848; cv=none; d=zohomail.com; s=zohoarc; b=eI+8aLrXWv7WlXik4M3DLLf+4p8jOJV8OkfgnIrDd7u/MBzeiVJ3kFo0zG6MvXPhHYDypXl6O7a5Zy7DEAWVAZK9bVhY2yrqSVP0Ob9QqzaWH/Tvtau1i5XYzglNrzND435LTFMtFvBX6Yui1xblNYZ2afozYjZ8Jrhj4Qsqcw0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220848; h=Content-Type: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=AUNROwimy56ru7jUnT8XzU0OHxs3NUEEOApuJES962g=; b=a6tWb9nyv+tAkkodX+aEI+/RyFOIqTk/EyYK3S5M8cvSwD2zOc2Kp+vTGq6GVUOUgvb+wzAdSMQXkmJqtC6ATue5mUngKLHt0d1xkn17beyhRvIonmO1w86Xf6u1ZYNEUpkRYuEObAtYcVoe5EJpVW+bmgBSWSSz+3CLqwgi8zw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220848647146.79756475329066; Mon, 31 Oct 2022 05:54:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHg-0006S3-Kl; Mon, 31 Oct 2022 08:52:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHC-0002lc-Dv for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH2-0002aM-6v for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:24 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-446-LY_c7YnfOJC7f4VB8gUXcw-1; Mon, 31 Oct 2022 08:52:13 -0400 Received: by mail-wr1-f72.google.com with SMTP id s11-20020adfbc0b000000b0023659af24a8so3035071wrg.14 for ; Mon, 31 Oct 2022 05:52:13 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id p2-20020a5d4582000000b00228d52b935asm7087564wrq.71.2022.10.31.05.52.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220734; 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: in-reply-to:in-reply-to:references:references; bh=AUNROwimy56ru7jUnT8XzU0OHxs3NUEEOApuJES962g=; b=Eh65IEnX2VUbEYmtf/AP6JunPlSM/LV29lVtJ4awaSE5ai6i3xTQi6daRTN2tr1zu4eZMf HoeTJVMXleXi7xl8PrGAQ72es2X49bG5/4dpRrvmgc2Wgav4CwOEaBFiAKjyym5n93CWLm rNMGZ9bjDo8qf7HTmRZz9z3ES1VvSBM= X-MC-Unique: LY_c7YnfOJC7f4VB8gUXcw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=AUNROwimy56ru7jUnT8XzU0OHxs3NUEEOApuJES962g=; b=neDiczJknSJ2iDfUlNmByzIDZicWUdi+IbSc+dK+C9qYCmyXeAN9H2LGLb1Gzzw1GK t0JX7BNng9FE7krpkqW0YR9LcRhUywg0ZpQKy9oc06kwm5yXRE9pF7XVQL1Q9F30CEJv LKrSbGfdSznA9t4DK0H/YiBacBc6ikSjkAVVCjHReSTBpa5qTKR7U48Jk+qJnq0BZdyx q/c+SuY+F4wx5KOUAa6vX9iZBUcAlHE1NllOZn91YN25wl+grggmCdeeatWjd8FhuUIw +tHVAunKizelDCuN0pPHkQKW7+/KX+ecpgLvpwAcWf9TbZSGeZHE3TdTGAa33jThzqka tklw== X-Gm-Message-State: ACrzQf0uh9SLs+aPFpQXdKgJyQTuDSWgDUf0AM0J305EaxJkwnZZHJw6 dEKcljJQ+mH1HLI56xO+3G43nvhjyQdJEPTcN9og92MS5+uoi3EYqHUw73ofGShU53fBQ9mPu3Z 7t4CltQs2/Z1mqVieNSjzyMKmiEfJ/gfsDBMGMH5aJjcu2M0gWOC1n16ZjZQX X-Received: by 2002:adf:de10:0:b0:236:73c0:75ae with SMTP id b16-20020adfde10000000b0023673c075aemr8069277wrm.530.1667220731894; Mon, 31 Oct 2022 05:52:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4LD8SiV750yMEQxX0xsKw1y2XV6NXrxKWgtlk+RvjD+24uYrvIik2QXqjQw26ZDT1JxOmiWw== X-Received: by 2002:adf:de10:0:b0:236:73c0:75ae with SMTP id b16-20020adfde10000000b0023673c075aemr8069254wrm.530.1667220731585; Mon, 31 Oct 2022 05:52:11 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Huai-Cheng Kuo , Chris Browy , Jonathan Cameron , Ben Widawsky Subject: [PULL 30/86] hw/mem/cxl-type3: Add CXL CDAT Data Object Exchange Message-ID: <20221031124928.128475-31-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220850699100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Huai-Cheng Kuo The CDAT can be specified in two ways. One is to add ",cdat=3D" in "-device cxl-type3"'s command option. The file is required to provide the whole CDAT table in binary mode. The other is to use the default that provides some 'reasonable' numbers based on type of memory and size. The DOE capability supporting CDAT is added to hw/mem/cxl_type3.c with capability offset 0x190. The config read/write to this capability range can be generated in the OS to request the CDAT data. Signed-off-by: Huai-Cheng Kuo Signed-off-by: Chris Browy Signed-off-by: Jonathan Cameron Message-Id: <20221014151045.24781-5-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/mem/cxl_type3.c | 255 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 255 insertions(+) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 568c9d62f5..255590201a 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -12,9 +12,246 @@ #include "qemu/range.h" #include "qemu/rcu.h" #include "sysemu/hostmem.h" +#include "sysemu/numa.h" #include "hw/cxl/cxl.h" #include "hw/pci/msix.h" =20 +#define DWORD_BYTE 4 + +/* Default CDAT entries for a memory region */ +enum { + CT3_CDAT_DSMAS, + CT3_CDAT_DSLBIS0, + CT3_CDAT_DSLBIS1, + CT3_CDAT_DSLBIS2, + CT3_CDAT_DSLBIS3, + CT3_CDAT_DSEMTS, + CT3_CDAT_NUM_ENTRIES +}; + +static int ct3_build_cdat_entries_for_mr(CDATSubHeader **cdat_table, + int dsmad_handle, MemoryRegion *m= r) +{ + g_autofree CDATDsmas *dsmas =3D NULL; + g_autofree CDATDslbis *dslbis0 =3D NULL; + g_autofree CDATDslbis *dslbis1 =3D NULL; + g_autofree CDATDslbis *dslbis2 =3D NULL; + g_autofree CDATDslbis *dslbis3 =3D NULL; + g_autofree CDATDsemts *dsemts =3D NULL; + + dsmas =3D g_malloc(sizeof(*dsmas)); + if (!dsmas) { + return -ENOMEM; + } + *dsmas =3D (CDATDsmas) { + .header =3D { + .type =3D CDAT_TYPE_DSMAS, + .length =3D sizeof(*dsmas), + }, + .DSMADhandle =3D dsmad_handle, + .flags =3D CDAT_DSMAS_FLAG_NV, + .DPA_base =3D 0, + .DPA_length =3D int128_get64(mr->size), + }; + + /* For now, no memory side cache, plausiblish numbers */ + dslbis0 =3D g_malloc(sizeof(*dslbis0)); + if (!dslbis0) { + return -ENOMEM; + } + *dslbis0 =3D (CDATDslbis) { + .header =3D { + .type =3D CDAT_TYPE_DSLBIS, + .length =3D sizeof(*dslbis0), + }, + .handle =3D dsmad_handle, + .flags =3D HMAT_LB_MEM_MEMORY, + .data_type =3D HMAT_LB_DATA_READ_LATENCY, + .entry_base_unit =3D 10000, /* 10ns base */ + .entry[0] =3D 15, /* 150ns */ + }; + + dslbis1 =3D g_malloc(sizeof(*dslbis1)); + if (!dslbis1) { + return -ENOMEM; + } + *dslbis1 =3D (CDATDslbis) { + .header =3D { + .type =3D CDAT_TYPE_DSLBIS, + .length =3D sizeof(*dslbis1), + }, + .handle =3D dsmad_handle, + .flags =3D HMAT_LB_MEM_MEMORY, + .data_type =3D HMAT_LB_DATA_WRITE_LATENCY, + .entry_base_unit =3D 10000, + .entry[0] =3D 25, /* 250ns */ + }; + + dslbis2 =3D g_malloc(sizeof(*dslbis2)); + if (!dslbis2) { + return -ENOMEM; + } + *dslbis2 =3D (CDATDslbis) { + .header =3D { + .type =3D CDAT_TYPE_DSLBIS, + .length =3D sizeof(*dslbis2), + }, + .handle =3D dsmad_handle, + .flags =3D HMAT_LB_MEM_MEMORY, + .data_type =3D HMAT_LB_DATA_READ_BANDWIDTH, + .entry_base_unit =3D 1000, /* GB/s */ + .entry[0] =3D 16, + }; + + dslbis3 =3D g_malloc(sizeof(*dslbis3)); + if (!dslbis3) { + return -ENOMEM; + } + *dslbis3 =3D (CDATDslbis) { + .header =3D { + .type =3D CDAT_TYPE_DSLBIS, + .length =3D sizeof(*dslbis3), + }, + .handle =3D dsmad_handle, + .flags =3D HMAT_LB_MEM_MEMORY, + .data_type =3D HMAT_LB_DATA_WRITE_BANDWIDTH, + .entry_base_unit =3D 1000, /* GB/s */ + .entry[0] =3D 16, + }; + + dsemts =3D g_malloc(sizeof(*dsemts)); + if (!dsemts) { + return -ENOMEM; + } + *dsemts =3D (CDATDsemts) { + .header =3D { + .type =3D CDAT_TYPE_DSEMTS, + .length =3D sizeof(*dsemts), + }, + .DSMAS_handle =3D dsmad_handle, + /* Reserved - the non volatile from DSMAS matters */ + .EFI_memory_type_attr =3D 2, + .DPA_offset =3D 0, + .DPA_length =3D int128_get64(mr->size), + }; + + /* Header always at start of structure */ + cdat_table[CT3_CDAT_DSMAS] =3D g_steal_pointer(&dsmas); + cdat_table[CT3_CDAT_DSLBIS0] =3D g_steal_pointer(&dslbis0); + cdat_table[CT3_CDAT_DSLBIS1] =3D g_steal_pointer(&dslbis1); + cdat_table[CT3_CDAT_DSLBIS2] =3D g_steal_pointer(&dslbis2); + cdat_table[CT3_CDAT_DSLBIS3] =3D g_steal_pointer(&dslbis3); + cdat_table[CT3_CDAT_DSEMTS] =3D g_steal_pointer(&dsemts); + + return 0; +} + +static int ct3_build_cdat_table(CDATSubHeader ***cdat_table, void *priv) +{ + g_autofree CDATSubHeader **table =3D NULL; + MemoryRegion *nonvolatile_mr; + CXLType3Dev *ct3d =3D priv; + int dsmad_handle =3D 0; + int rc; + + if (!ct3d->hostmem) { + return 0; + } + + nonvolatile_mr =3D host_memory_backend_get_memory(ct3d->hostmem); + if (!nonvolatile_mr) { + return -EINVAL; + } + + table =3D g_malloc0(CT3_CDAT_NUM_ENTRIES * sizeof(*table)); + if (!table) { + return -ENOMEM; + } + + rc =3D ct3_build_cdat_entries_for_mr(table, dsmad_handle++, nonvolatil= e_mr); + if (rc < 0) { + return rc; + } + + *cdat_table =3D g_steal_pointer(&table); + + return CT3_CDAT_NUM_ENTRIES; +} + +static void ct3_free_cdat_table(CDATSubHeader **cdat_table, int num, void = *priv) +{ + int i; + + for (i =3D 0; i < num; i++) { + g_free(cdat_table[i]); + } + g_free(cdat_table); +} + +static bool cxl_doe_cdat_rsp(DOECap *doe_cap) +{ + CDATObject *cdat =3D &CXL_TYPE3(doe_cap->pdev)->cxl_cstate.cdat; + uint16_t ent; + void *base; + uint32_t len; + CDATReq *req =3D pcie_doe_get_write_mbox_ptr(doe_cap); + CDATRsp rsp; + + assert(cdat->entry_len); + + /* Discard if request length mismatched */ + if (pcie_doe_get_obj_len(req) < + DIV_ROUND_UP(sizeof(CDATReq), DWORD_BYTE)) { + return false; + } + + ent =3D req->entry_handle; + base =3D cdat->entry[ent].base; + len =3D cdat->entry[ent].length; + + rsp =3D (CDATRsp) { + .header =3D { + .vendor_id =3D CXL_VENDOR_ID, + .data_obj_type =3D CXL_DOE_TABLE_ACCESS, + .reserved =3D 0x0, + .length =3D DIV_ROUND_UP((sizeof(rsp) + len), DWORD_BYTE), + }, + .rsp_code =3D CXL_DOE_TAB_RSP, + .table_type =3D CXL_DOE_TAB_TYPE_CDAT, + .entry_handle =3D (ent < cdat->entry_len - 1) ? + ent + 1 : CXL_DOE_TAB_ENT_MAX, + }; + + memcpy(doe_cap->read_mbox, &rsp, sizeof(rsp)); + memcpy(doe_cap->read_mbox + DIV_ROUND_UP(sizeof(rsp), DWORD_BYTE), + base, len); + + doe_cap->read_mbox_len +=3D rsp.header.length; + + return true; +} + +static uint32_t ct3d_config_read(PCIDevice *pci_dev, uint32_t addr, int si= ze) +{ + CXLType3Dev *ct3d =3D CXL_TYPE3(pci_dev); + uint32_t val; + + if (pcie_doe_read_config(&ct3d->doe_cdat, addr, size, &val)) { + return val; + } + + return pci_default_read_config(pci_dev, addr, size); +} + +static void ct3d_config_write(PCIDevice *pci_dev, uint32_t addr, uint32_t = val, + int size) +{ + CXLType3Dev *ct3d =3D CXL_TYPE3(pci_dev); + + pcie_doe_write_config(&ct3d->doe_cdat, addr, val, size); + pci_default_write_config(pci_dev, addr, val, size); +} + /* * Null value of all Fs suggested by IEEE RA guidelines for use of * EU, OUI and CID @@ -140,6 +377,11 @@ static bool cxl_setup_memory(CXLType3Dev *ct3d, Error = **errp) return true; } =20 +static DOEProtocol doe_cdat_prot[] =3D { + { CXL_VENDOR_ID, CXL_DOE_TABLE_ACCESS, cxl_doe_cdat_rsp }, + { } +}; + static void ct3_realize(PCIDevice *pci_dev, Error **errp) { CXLType3Dev *ct3d =3D CXL_TYPE3(pci_dev); @@ -189,6 +431,14 @@ static void ct3_realize(PCIDevice *pci_dev, Error **er= rp) for (i =3D 0; i < msix_num; i++) { msix_vector_use(pci_dev, i); } + + /* DOE Initailization */ + pcie_doe_init(pci_dev, &ct3d->doe_cdat, 0x190, doe_cdat_prot, true, 0); + + cxl_cstate->cdat.build_cdat_table =3D ct3_build_cdat_table; + cxl_cstate->cdat.free_cdat_table =3D ct3_free_cdat_table; + cxl_cstate->cdat.private =3D ct3d; + cxl_doe_cdat_init(cxl_cstate, errp); } =20 static void ct3_exit(PCIDevice *pci_dev) @@ -197,6 +447,7 @@ static void ct3_exit(PCIDevice *pci_dev) CXLComponentState *cxl_cstate =3D &ct3d->cxl_cstate; ComponentRegisters *regs =3D &cxl_cstate->crb; =20 + cxl_doe_cdat_release(cxl_cstate); g_free(regs->special_ops); address_space_destroy(&ct3d->hostmem_as); } @@ -296,6 +547,7 @@ static Property ct3_props[] =3D { DEFINE_PROP_LINK("lsa", CXLType3Dev, lsa, TYPE_MEMORY_BACKEND, HostMemoryBackend *), DEFINE_PROP_UINT64("sn", CXLType3Dev, sn, UI64_NULL), + DEFINE_PROP_STRING("cdat", CXLType3Dev, cxl_cstate.cdat.filename), DEFINE_PROP_END_OF_LIST(), }; =20 @@ -361,6 +613,9 @@ static void ct3_class_init(ObjectClass *oc, void *data) pc->device_id =3D 0xd93; /* LVF for now */ pc->revision =3D 1; =20 + pc->config_write =3D ct3d_config_write; + pc->config_read =3D ct3d_config_read; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); dc->desc =3D "CXL PMEM Device (Type 3)"; dc->reset =3D ct3d_reset; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220822; cv=none; d=zohomail.com; s=zohoarc; b=Hrkv23Wku5Rr5np4vtI8LUaSSx/7+ncPwNtY8LyHe4DpQMcenfBOIabXp1FncnjmzO3gDKt9tspd35w00Du5swAh5wnPFdXtRw7qaWpVC5D0NdK6CUGJbGsfCaO7goHCsMt9Mh33QdLrUjvWGyjjG47V0IWZmAgfrRFrnYHkb2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220822; h=Content-Type: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=ETyx33uCkrggVRTo3HiD7Tje2UJXCck/b2Qi00flxlo=; b=G+Z2izwIzsBCMc7xCPwM1fWlZQLU/LUnDCjiD6Z5MTeoaJWu4ASvM2HO1UN/JwRR744s/GNKA2vAJ7qWVe7H8PdHezCICvAmPGbMdff7Cn6z2bia7KC0F1QybagHBsbng3AXfA7BlnTYL4ZKg2DN/tsZWd0lCBg4jk6hn/HQbuM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220822426207.66493407333485; Mon, 31 Oct 2022 05:53:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHf-0006G2-BV; Mon, 31 Oct 2022 08:52:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHC-0002ld-Sy for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH4-0002ah-Rh for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:26 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-178-0fo0s_wkNiCaNZFWlMLYgA-1; Mon, 31 Oct 2022 08:52:16 -0400 Received: by mail-wm1-f71.google.com with SMTP id s7-20020a1cf207000000b003cf56bad2e2so2212155wmc.9 for ; Mon, 31 Oct 2022 05:52:15 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k18-20020adfe3d2000000b00236705daefesm7012407wrm.39.2022.10.31.05.52.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220737; 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: in-reply-to:in-reply-to:references:references; bh=ETyx33uCkrggVRTo3HiD7Tje2UJXCck/b2Qi00flxlo=; b=YpxQIu4KG6OucQidIFlPw7Js+Boif222W/0zS42stKsZP+++eLAtLQkUOSUNyjAH0PSqzE AqDLtyxY9aCzaxI7lYpSsD1XWXgsiU17EdPvqqbIzjbMLKk7e3DkNEafG3HvMExVZmiWNK CPReB3gmP3D8Suo6OFBbHlDfa5nrSSg= X-MC-Unique: 0fo0s_wkNiCaNZFWlMLYgA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ETyx33uCkrggVRTo3HiD7Tje2UJXCck/b2Qi00flxlo=; b=o3fDrsF6qyzgp948ia5Hd1ND8EmEQGBx3+KC9QNFoIdb7PgZNHDnaKWffnQ3AvMaOu WOiYBtruQTeKZb3VFlZHhTywjydS2RpNsgh4cDrF3K4iMAc4/cWVGBaXy8D/BPWC62za MRYG8Gz2Gav1HUBcK9ID6erGX+NEcRWoiqUuddexvli1Z8SayZdY8sLe0PR2dp4sHo3Q HoXvuxPOhvrn1RvB/O4OdKsOejwLZiAMzVnET58HppmddYZIrl64cgmA2VnNZ8HkFc/C FFWwDCTR/YLeI31EOIanQpONXtY7+jthrZ2ER1i4fP4C2QTaixHO/c95xeF3WfWqTnGn 5b4Q== X-Gm-Message-State: ACrzQf2jtzXG2DphwAqK3gV2Sr7Pt+Hex7ncuZjbn8YrDOU72LaOsTEl zNKiKBgFDGWd17pD7zeIErlTrcKNCQ5agMHVHB1G33P+yOeEvtR7wJxreCG5NNXtZasVR0hrtk0 +/9mRntiwutzykxzSPZEk6ODIQ44T74Qce0uSKihc0C3Fm8rhUZg2ExGs52Yt X-Received: by 2002:a05:600c:3d13:b0:3cf:4d63:243d with SMTP id bh19-20020a05600c3d1300b003cf4d63243dmr8050022wmb.24.1667220734629; Mon, 31 Oct 2022 05:52:14 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6fYp9GpeO0lOTQUdVR+IGFiC478BGA3OJ8DqwOJ1slI4OB8BikE4llz0/u3ElZ1rhQX5HEeA== X-Received: by 2002:a05:600c:3d13:b0:3cf:4d63:243d with SMTP id bh19-20020a05600c3d1300b003cf4d63243dmr8050002wmb.24.1667220734270; Mon, 31 Oct 2022 05:52:14 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:11 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jonathan Cameron , Marcel Apfelbaum , Ben Widawsky Subject: [PULL 31/86] hw/pci-bridge/cxl-upstream: Add a CDAT table access DOE Message-ID: <20221031124928.128475-32-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220824500100013 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonathan Cameron This Data Object Exchange Mailbox allows software to query the latency and bandwidth between ports on the switch. For now only provide information on routes between the upstream port and each downstream port (not p2p). Signed-off-by: Jonathan Cameron -- Changes since v8: Mostly to match the type 3 equivalent - Move enum out of function and give it a more descriptive namespace. Message-Id: <20221014151045.24781-6-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/cxl/cxl_cdat.h | 1 + hw/pci-bridge/cxl_upstream.c | 195 ++++++++++++++++++++++++++++++++++- 2 files changed, 195 insertions(+), 1 deletion(-) diff --git a/include/hw/cxl/cxl_cdat.h b/include/hw/cxl/cxl_cdat.h index 52c232e912..e9eda00142 100644 --- a/include/hw/cxl/cxl_cdat.h +++ b/include/hw/cxl/cxl_cdat.h @@ -131,6 +131,7 @@ typedef struct CDATSslbisHeader { uint64_t entry_base_unit; } QEMU_PACKED CDATSslbisHeader; =20 +#define CDAT_PORT_ID_USP 0x100 /* Switch Scoped Latency and Bandwidth Entry - CDAT Table 10 */ typedef struct CDATSslbe { uint16_t port_x_id; diff --git a/hw/pci-bridge/cxl_upstream.c b/hw/pci-bridge/cxl_upstream.c index a83a3e81e4..9b8b57df9d 100644 --- a/hw/pci-bridge/cxl_upstream.c +++ b/hw/pci-bridge/cxl_upstream.c @@ -10,11 +10,12 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" +#include "hw/qdev-properties.h" #include "hw/pci/msi.h" #include "hw/pci/pcie.h" #include "hw/pci/pcie_port.h" =20 -#define CXL_UPSTREAM_PORT_MSI_NR_VECTOR 1 +#define CXL_UPSTREAM_PORT_MSI_NR_VECTOR 2 =20 #define CXL_UPSTREAM_PORT_MSI_OFFSET 0x70 #define CXL_UPSTREAM_PORT_PCIE_CAP_OFFSET 0x90 @@ -28,6 +29,7 @@ typedef struct CXLUpstreamPort { =20 /*< public >*/ CXLComponentState cxl_cstate; + DOECap doe_cdat; } CXLUpstreamPort; =20 CXLComponentState *cxl_usp_to_cstate(CXLUpstreamPort *usp) @@ -60,6 +62,9 @@ static void cxl_usp_dvsec_write_config(PCIDevice *dev, ui= nt32_t addr, static void cxl_usp_write_config(PCIDevice *d, uint32_t address, uint32_t val, int len) { + CXLUpstreamPort *usp =3D CXL_USP(d); + + pcie_doe_write_config(&usp->doe_cdat, address, val, len); pci_bridge_write_config(d, address, val, len); pcie_cap_flr_write_config(d, address, val, len); pcie_aer_write_config(d, address, val, len); @@ -67,6 +72,18 @@ static void cxl_usp_write_config(PCIDevice *d, uint32_t = address, cxl_usp_dvsec_write_config(d, address, val, len); } =20 +static uint32_t cxl_usp_read_config(PCIDevice *d, uint32_t address, int le= n) +{ + CXLUpstreamPort *usp =3D CXL_USP(d); + uint32_t val; + + if (pcie_doe_read_config(&usp->doe_cdat, address, len, &val)) { + return val; + } + + return pci_default_read_config(d, address, len); +} + static void latch_registers(CXLUpstreamPort *usp) { uint32_t *reg_state =3D usp->cxl_cstate.crb.cache_mem_registers; @@ -119,6 +136,167 @@ static void build_dvsecs(CXLComponentState *cxl) REG_LOC_DVSEC_REVID, dvsec); } =20 +static bool cxl_doe_cdat_rsp(DOECap *doe_cap) +{ + CDATObject *cdat =3D &CXL_USP(doe_cap->pdev)->cxl_cstate.cdat; + uint16_t ent; + void *base; + uint32_t len; + CDATReq *req =3D pcie_doe_get_write_mbox_ptr(doe_cap); + CDATRsp rsp; + + cxl_doe_cdat_update(&CXL_USP(doe_cap->pdev)->cxl_cstate, &error_fatal); + assert(cdat->entry_len); + + /* Discard if request length mismatched */ + if (pcie_doe_get_obj_len(req) < + DIV_ROUND_UP(sizeof(CDATReq), sizeof(uint32_t))) { + return false; + } + + ent =3D req->entry_handle; + base =3D cdat->entry[ent].base; + len =3D cdat->entry[ent].length; + + rsp =3D (CDATRsp) { + .header =3D { + .vendor_id =3D CXL_VENDOR_ID, + .data_obj_type =3D CXL_DOE_TABLE_ACCESS, + .reserved =3D 0x0, + .length =3D DIV_ROUND_UP((sizeof(rsp) + len), sizeof(uint32_t)= ), + }, + .rsp_code =3D CXL_DOE_TAB_RSP, + .table_type =3D CXL_DOE_TAB_TYPE_CDAT, + .entry_handle =3D (ent < cdat->entry_len - 1) ? + ent + 1 : CXL_DOE_TAB_ENT_MAX, + }; + + memcpy(doe_cap->read_mbox, &rsp, sizeof(rsp)); + memcpy(doe_cap->read_mbox + DIV_ROUND_UP(sizeof(rsp), sizeof(uint3= 2_t)), + base, len); + + doe_cap->read_mbox_len +=3D rsp.header.length; + + return true; +} + +static DOEProtocol doe_cdat_prot[] =3D { + { CXL_VENDOR_ID, CXL_DOE_TABLE_ACCESS, cxl_doe_cdat_rsp }, + { } +}; + +enum { + CXL_USP_CDAT_SSLBIS_LAT, + CXL_USP_CDAT_SSLBIS_BW, + CXL_USP_CDAT_NUM_ENTRIES +}; + +static int build_cdat_table(CDATSubHeader ***cdat_table, void *priv) +{ + g_autofree CDATSslbis *sslbis_latency =3D NULL; + g_autofree CDATSslbis *sslbis_bandwidth =3D NULL; + CXLUpstreamPort *us =3D CXL_USP(priv); + PCIBus *bus =3D &PCI_BRIDGE(us)->sec_bus; + int devfn, sslbis_size, i; + int count =3D 0; + uint16_t port_ids[256]; + + for (devfn =3D 0; devfn < ARRAY_SIZE(bus->devices); devfn++) { + PCIDevice *d =3D bus->devices[devfn]; + PCIEPort *port; + + if (!d || !pci_is_express(d) || !d->exp.exp_cap) { + continue; + } + + /* + * Whilst the PCI express spec doesn't allow anything other than + * downstream ports on this bus, let us be a little paranoid + */ + if (!object_dynamic_cast(OBJECT(d), TYPE_PCIE_PORT)) { + continue; + } + + port =3D PCIE_PORT(d); + port_ids[count] =3D port->port; + count++; + } + + /* May not yet have any ports - try again later */ + if (count =3D=3D 0) { + return 0; + } + + sslbis_size =3D sizeof(CDATSslbis) + sizeof(*sslbis_latency->sslbe) * = count; + sslbis_latency =3D g_malloc(sslbis_size); + if (!sslbis_latency) { + return -ENOMEM; + } + *sslbis_latency =3D (CDATSslbis) { + .sslbis_header =3D { + .header =3D { + .type =3D CDAT_TYPE_SSLBIS, + .length =3D sslbis_size, + }, + .data_type =3D HMATLB_DATA_TYPE_ACCESS_LATENCY, + .entry_base_unit =3D 10000, + }, + }; + + for (i =3D 0; i < count; i++) { + sslbis_latency->sslbe[i] =3D (CDATSslbe) { + .port_x_id =3D CDAT_PORT_ID_USP, + .port_y_id =3D port_ids[i], + .latency_bandwidth =3D 15, /* 150ns */ + }; + } + + sslbis_bandwidth =3D g_malloc(sslbis_size); + if (!sslbis_bandwidth) { + return 0; + } + *sslbis_bandwidth =3D (CDATSslbis) { + .sslbis_header =3D { + .header =3D { + .type =3D CDAT_TYPE_SSLBIS, + .length =3D sslbis_size, + }, + .data_type =3D HMATLB_DATA_TYPE_ACCESS_BANDWIDTH, + .entry_base_unit =3D 1000, + }, + }; + + for (i =3D 0; i < count; i++) { + sslbis_bandwidth->sslbe[i] =3D (CDATSslbe) { + .port_x_id =3D CDAT_PORT_ID_USP, + .port_y_id =3D port_ids[i], + .latency_bandwidth =3D 16, /* 16 GB/s */ + }; + } + + *cdat_table =3D g_malloc0(sizeof(*cdat_table) * CXL_USP_CDAT_NUM_ENTRI= ES); + if (!*cdat_table) { + return -ENOMEM; + } + + /* Header always at start of structure */ + (*cdat_table)[CXL_USP_CDAT_SSLBIS_LAT] =3D g_steal_pointer(&sslbis_lat= ency); + (*cdat_table)[CXL_USP_CDAT_SSLBIS_BW] =3D g_steal_pointer(&sslbis_band= width); + + return CXL_USP_CDAT_NUM_ENTRIES; +} + +static void free_default_cdat_table(CDATSubHeader **cdat_table, int num, + void *priv) +{ + int i; + + for (i =3D 0; i < num; i++) { + g_free(cdat_table[i]); + } + g_free(cdat_table); +} + static void cxl_usp_realize(PCIDevice *d, Error **errp) { PCIEPort *p =3D PCIE_PORT(d); @@ -161,6 +339,14 @@ static void cxl_usp_realize(PCIDevice *d, Error **errp) PCI_BASE_ADDRESS_MEM_TYPE_64, component_bar); =20 + pcie_doe_init(d, &usp->doe_cdat, cxl_cstate->dvsec_offset, doe_cdat_pr= ot, + true, 1); + + cxl_cstate->cdat.build_cdat_table =3D build_cdat_table; + cxl_cstate->cdat.free_cdat_table =3D free_default_cdat_table; + cxl_cstate->cdat.private =3D d; + cxl_doe_cdat_init(cxl_cstate, errp); + return; =20 err_cap: @@ -179,6 +365,11 @@ static void cxl_usp_exitfn(PCIDevice *d) pci_bridge_exitfn(d); } =20 +static Property cxl_upstream_props[] =3D { + DEFINE_PROP_STRING("cdat", CXLUpstreamPort, cxl_cstate.cdat.filename), + DEFINE_PROP_END_OF_LIST() +}; + static void cxl_upstream_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); @@ -186,6 +377,7 @@ static void cxl_upstream_class_init(ObjectClass *oc, vo= id *data) =20 k->is_bridge =3D true; k->config_write =3D cxl_usp_write_config; + k->config_read =3D cxl_usp_read_config; k->realize =3D cxl_usp_realize; k->exit =3D cxl_usp_exitfn; k->vendor_id =3D 0x19e5; /* Huawei */ @@ -194,6 +386,7 @@ static void cxl_upstream_class_init(ObjectClass *oc, vo= id *data) set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->desc =3D "CXL Switch Upstream Port"; dc->reset =3D cxl_usp_reset; + device_class_set_props(dc, cxl_upstream_props); } =20 static const TypeInfo cxl_usp_info =3D { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221198; cv=none; d=zohomail.com; s=zohoarc; b=Tm7XafYcscRR+2XMzcsdyJXA0i0forrP8W60b2xHN+w83fWXr5mx+gIXv1rnWdWbO0YOSPX6qq/XkDcb+luL6GdqBcVKJPyYQivPAnXJ+JJG0Cu/RegzXagt4CrobEkRRuZ6zBaTZS2MmQ0IMdxSWo4h9T3coaLFAtie/wxgbqQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221198; h=Content-Type: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=jHFXNJ7TRNOvAiA8s7O4cek3bdeS2+9Q5HzxZqyBRsc=; b=BlvzEjENDNDRtLs/T6vCXmdYm8DGxXcfXZHqDnkYDAqK+GsDGv21S8uipnCD60y5ve6DeOqjdvZsXI7JTVsUZmCtZmdZhW48hW9LU3p4DQZrBVr3PpMQmNO1cJqMKfWoYtDV0swpXlI4kZ739A4px1n9Rirb0qhQQOtqaDTwXeI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16672211989451021.3546590849237; Mon, 31 Oct 2022 05:59:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHi-0006hE-HP; Mon, 31 Oct 2022 08:52:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHE-0002re-5m for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUH7-0002bD-Se for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:27 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-488-Alm8Q6QZMHCqUYbQ55uS8Q-1; Mon, 31 Oct 2022 08:52:19 -0400 Received: by mail-wm1-f69.google.com with SMTP id s7-20020a1cf207000000b003cf56bad2e2so2212211wmc.9 for ; Mon, 31 Oct 2022 05:52:19 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id w4-20020adfcd04000000b002366dd0e030sm7203622wrm.68.2022.10.31.05.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220741; 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: in-reply-to:in-reply-to:references:references; bh=jHFXNJ7TRNOvAiA8s7O4cek3bdeS2+9Q5HzxZqyBRsc=; b=SD0NMLX58tCiqPgRiS/Gi8UWF313Qi8PHp8X1IFedg6wT+z8v73ku+EkontrwqbZfEg3iT rd7y6EHfnfujCxzv89HU88fg7l1RISesWOvbrOAxJ5/UbsL/WTRW+OXzUnU7YISgXHZc3g N8uPGXcRJt+qzAsQ5lCV9UzXIp13GHs= X-MC-Unique: Alm8Q6QZMHCqUYbQ55uS8Q-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jHFXNJ7TRNOvAiA8s7O4cek3bdeS2+9Q5HzxZqyBRsc=; b=s/mxsMtGlk2b8OnKViodrYt2XFVo7qCg7NAiehjckUFHczRK08kv4ADPm0METyxs8B qhB7rpy84qdw5SLphiQ8YvVYGtBV/Nd0fWWRc6bVZAA6jj4GslB132xDaIoP64F1Jj72 QB6ZhAfuR8w42dDsfK9wY6sSCByVhHtXWBuWfxOUWF2HTIxnfMU/zNf6opp3m1xxl37Q LMic21jvzrd7ROwEgpIClHOP4aAILwYEPnPWQRd5oIcjuqjz7QGqaDN2i4qz6lfRnB7/ lwVU6QEy0s2bAB9hN+LSpnP1f0jpjRs5npRZtCVfa2HzrbBH4znJx5WM53npKiVAevzT k3jw== X-Gm-Message-State: ACrzQf20zuIMfgytu1vLnzFrBFM6gH2s2mLRu+Z/2m3jDLnTugNYKnUI TUA+xc6j+1cpNKmVX7xb0iM/L0a0gVGbZW6xE0RukuOZsXwMIn4lj8fPJplKOYSrmLwe+/mSGYS 3AH2MltIYxSvFON9V9wpjWwktEB2GN6VwpFXKxejkvUkLFy7rZxLkcaCTnmSB X-Received: by 2002:a05:600c:168a:b0:3cf:68c0:a9b0 with SMTP id k10-20020a05600c168a00b003cf68c0a9b0mr6618597wmn.101.1667220738271; Mon, 31 Oct 2022 05:52:18 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Pnd3+BYTN8q+lcb5GGCRugtRegPsXqrpoEJn56+MaEZlRGGYmXEeYUbmIJZRhXUuQodJsuA== X-Received: by 2002:a05:600c:168a:b0:3cf:68c0:a9b0 with SMTP id k10-20020a05600c168a00b003cf68c0a9b0mr6618575wmn.101.1667220738001; Mon, 31 Oct 2022 05:52:18 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:14 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Thomas Huth , Zhang Chen , Jonathan Cameron , Laurent Vivier , Paolo Bonzini Subject: [PULL 32/86] tests/qtest/cxl-test: Remove temporary directories after testing Message-ID: <20221031124928.128475-33-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221199596100009 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Huth The cxl-test leaves some temporary directories behind. Let's clean them up now! Signed-off-by: Thomas Huth Message-Id: <20221012091435.893570-1-thuth@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Zhang Chen Acked-by: Jonathan Cameron --- tests/qtest/cxl-test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/qtest/cxl-test.c b/tests/qtest/cxl-test.c index cbe0fb549b..61f25a72b6 100644 --- a/tests/qtest/cxl-test.c +++ b/tests/qtest/cxl-test.c @@ -101,6 +101,7 @@ static void cxl_t3d(void) =20 qtest_start(cmdline->str); qtest_end(); + rmdir(tmpfs); } =20 static void cxl_1pxb_2rp_2t3d(void) @@ -115,6 +116,7 @@ static void cxl_1pxb_2rp_2t3d(void) =20 qtest_start(cmdline->str); qtest_end(); + rmdir(tmpfs); } =20 static void cxl_2pxb_4rp_4t3d(void) @@ -130,6 +132,7 @@ static void cxl_2pxb_4rp_4t3d(void) =20 qtest_start(cmdline->str); qtest_end(); + rmdir(tmpfs); } #endif /* CONFIG_POSIX */ =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221171; cv=none; d=zohomail.com; s=zohoarc; b=Lroij4h++wYY0YtyPGs1k89o5Q+G8SiaRHBN5k3o6xU3dHsra/X1Zj2JhxfliZMP6FAbtLgvbxjCYVt1YJKLQ7U9cgUq9xCqZ9isEbn7hK1TfmVpPVnj9nUT9vs2C7EAteSkhCvBWLrTwLDV1XuKyCHZWvlMJaT/zQ+ZPQnupMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221171; h=Content-Type: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=eFQWqqY+3tR1cnu5RWTG0Hiv7Mx7f1y5gCPPpFAg8Tg=; b=WSpaN6IpDDD+FYDvgHM/bLZF7LeHo5U5hh682UWTLJk5CZOMIaRqdsM15zaYcAdeZlBoJ/XjQi7xu8N/v8r+AmOPmZHDjmsBRLQjQOZq3OXiLO1i/3nrPu2QDQBlJm1ZavuogES9o1G2t4zph/7Yn0G9CsRdvAt1694nO3v+znU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221171642448.9286843606891; Mon, 31 Oct 2022 05:59:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHj-0006pW-QY; Mon, 31 Oct 2022 08:52:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHF-00036k-P7 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHB-0002bd-GK for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:29 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-258-jngeXsb-OwWmzljA8ti6NQ-1; Mon, 31 Oct 2022 08:52:22 -0400 Received: by mail-wm1-f71.google.com with SMTP id f26-20020a7bcc1a000000b003c03db14864so2569515wmh.6 for ; Mon, 31 Oct 2022 05:52:22 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id g13-20020a5d698d000000b0022cc3e67fc5sm6836586wru.65.2022.10.31.05.52.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220744; 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: in-reply-to:in-reply-to:references:references; bh=eFQWqqY+3tR1cnu5RWTG0Hiv7Mx7f1y5gCPPpFAg8Tg=; b=PhANHd+gI4XCbnVvBswn+w9S73gtCzgsAL2Of+5UZ4lyCGSzdrIomSDiTn/7WgvxEKV4vw Vi6XDaLqFbDMBlYBk1ydmvjGYXsXLkVChMeyIf32j8ttY4GO3cTvwJDw1Voe40bIHfaJK2 pVMattD/maT+9JaRzv3xCh6SSnIafI8= X-MC-Unique: jngeXsb-OwWmzljA8ti6NQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eFQWqqY+3tR1cnu5RWTG0Hiv7Mx7f1y5gCPPpFAg8Tg=; b=COhy0B/UHXuzBGQ+f+An4/ENF1zWzIMCJM1luXmH0IYr1WLRqmG38TVThChdXuCt2I 0tDa/bYkRJUSzYpiASQ+ute6nzD7oK7R0TiPKr12ynF0sEIbYrT9Nms7N0+mLphbxgVL +6jcOTtTPPT8kAC1SLEdzFM3xt704kuozEVcv73xciLjIqXcxCSbz/ZXSiV8DAmLEZcN uoJkv00gKs9mzGBdtmkoX5YEYWVlEsU7ONrQVRiN0zkhodYN3/c8Ui8sGvZB4/7cm1tg NBPKteIY4Ol/t15MlPzbEHvSc9ZfUbEwVndXYf+BtDFJGSNIdiAPZs9gf407vxkQ2gH0 4dVA== X-Gm-Message-State: ACrzQf3K1w9my3iyRVMusBEZwlH8RM0Q1+W2JvpwfPDwxX6I7zaz/9+4 CZvuXK7Z1R47iUVcSmvoHC/nOOpLgtuQlOpREDWFGXXo5SoudlihscFBX1h5MKEY1RN69heDb4i hE8cPj2l/Zc5a5T0WKJltkRda4a7IFAFDzdZddUfrBCVZ+Qhem8DPkw+8TGGW X-Received: by 2002:a05:6000:1203:b0:236:9aac:8d00 with SMTP id e3-20020a056000120300b002369aac8d00mr7686674wrx.221.1667220741458; Mon, 31 Oct 2022 05:52:21 -0700 (PDT) X-Google-Smtp-Source: AMsMyM40xpuKGIYQVgj6S1HLqHp6F66lcdnOpuexsuGQV6G5hlRU0xnOJrXBxD4EKGNd1MA9S7cTiw== X-Received: by 2002:a05:6000:1203:b0:236:9aac:8d00 with SMTP id e3-20020a056000120300b002369aac8d00mr7686643wrx.221.1667220741151; Mon, 31 Oct 2022 05:52:21 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Yajun Wu , Parav Pandit , Raphael Norwitz , Kevin Wolf , Hanna Reitz , Jason Wang , qemu-block@nongnu.org Subject: [PULL 33/86] vhost: Change the sequence of device start Message-ID: <20221031124928.128475-34-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221173547100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Yajun Wu This patch is part of adding vhost-user vhost_dev_start support. The motivation is to improve backend configuration speed and reduce live migration VM downtime. Moving the device start routines after finishing all the necessary device and VQ configuration, further aligning to the virtio specification for "device initialization sequence". Following patch will add vhost-user vhost_dev_start support. Signed-off-by: Yajun Wu Acked-by: Parav Pandit Message-Id: <20221017064452.1226514-2-yajunw@nvidia.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/block/vhost-user-blk.c | 18 +++++++++++------- hw/net/vhost_net.c | 12 ++++++------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 84902dde17..f4deb8cd5d 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -164,13 +164,6 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Er= ror **errp) goto err_guest_notifiers; } =20 - ret =3D vhost_dev_start(&s->dev, vdev); - if (ret < 0) { - error_setg_errno(errp, -ret, "Error starting vhost"); - goto err_guest_notifiers; - } - s->started_vu =3D true; - /* guest_notifier_mask/pending not used yet, so just unmask * everything here. virtio-pci will do the right thing by * enabling/disabling irqfd. @@ -179,9 +172,20 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Er= ror **errp) vhost_virtqueue_mask(&s->dev, vdev, i, false); } =20 + s->dev.vq_index_end =3D s->dev.nvqs; + ret =3D vhost_dev_start(&s->dev, vdev); + if (ret < 0) { + error_setg_errno(errp, -ret, "Error starting vhost"); + goto err_guest_notifiers; + } + s->started_vu =3D true; + return ret; =20 err_guest_notifiers: + for (i =3D 0; i < s->dev.nvqs; i++) { + vhost_virtqueue_mask(&s->dev, vdev, i, true); + } k->set_guest_notifiers(qbus->parent, s->dev.nvqs, false); err_host_notifiers: vhost_dev_disable_notifiers(&s->dev, vdev); diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index d28f8b974b..d6924f5e57 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -387,21 +387,21 @@ int vhost_net_start(VirtIODevice *dev, NetClientState= *ncs, } else { peer =3D qemu_get_peer(ncs, n->max_queue_pairs); } - r =3D vhost_net_start_one(get_vhost_net(peer), dev); - - if (r < 0) { - goto err_start; - } =20 if (peer->vring_enable) { /* restore vring enable state */ r =3D vhost_set_vring_enable(peer, peer->vring_enable); =20 if (r < 0) { - vhost_net_stop_one(get_vhost_net(peer), dev); goto err_start; } } + + r =3D vhost_net_start_one(get_vhost_net(peer), dev); + if (r < 0) { + vhost_net_stop_one(get_vhost_net(peer), dev); + goto err_start; + } } =20 return 0; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221396; cv=none; d=zohomail.com; s=zohoarc; b=FMlYRA8dte/FX1CZFoGaswIrHVZxOIlw+9cmWjU2yWcK0iKwJis4ii8a9pinlT5joFD1SwIidkkkanpE0cjj5u0ORl14HIh+zv2xDUkZjxhZZknTcyjcEb4wqlfSHjJZJWdkrPCNpNgrIXVjUBj6hZqnPxbgh3/r72hs9DRYupk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221396; h=Content-Type: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=f+sTsBbNh/sM1M1BctYZsWb/EcMrzIMV1iWuVZM+Xs4=; b=XwOQwCqgW9bFzKNoLkCYAo2vDEaLamokrLifmeiCKP89GFAeEwMzjnP9/9LjxyaB30qcuOvXo4xRIruCTpWLD2GYqCIb7SIJ9jHC425FK/4f7HzB44lNaWZkeKjCt2eKXL2kIdT2aKPg0LFsXXhn7Rr8ngmXKRQpzXU8gzIDrEY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16672213968081004.4824428914945; Mon, 31 Oct 2022 06:03:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHu-0007bf-N9; Mon, 31 Oct 2022 08:53:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHN-0003w1-CJ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHJ-0002eA-Gn for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:35 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-331-dvGzurbYPjeky1SvpKR71g-1; Mon, 31 Oct 2022 08:52:27 -0400 Received: by mail-wm1-f69.google.com with SMTP id x10-20020a05600c420a00b003cf4dbff2e4so5768173wmh.8 for ; Mon, 31 Oct 2022 05:52:25 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id q9-20020a5d61c9000000b00236733f0f98sm6971742wrv.107.2022.10.31.05.52.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220752; 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: in-reply-to:in-reply-to:references:references; bh=f+sTsBbNh/sM1M1BctYZsWb/EcMrzIMV1iWuVZM+Xs4=; b=bHTwa3eTiBLuOlg3nx1XuwL67mXabDi2gMJkNR3eoe3n5cPd8EU76Hrqm3PeAZsBkFksle o3tYmJFCiqiGAKxv1uOaaHbpID9h9iOkoXSPTjRPu1tXZM7T13sA5+oTUwV/vFpn+Gz/vP gvt/C/mo9HQk1tqjU8F7W5LcvrA7wDQ= X-MC-Unique: dvGzurbYPjeky1SvpKR71g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=f+sTsBbNh/sM1M1BctYZsWb/EcMrzIMV1iWuVZM+Xs4=; b=FR5qtJUStKLWr0QoVbRm31voxINRrPwwRHGLNGvXQQP95UUkHy6UMkGVesIQRGZbXM ZCeCAMZVUDLdmFNRuLXukKt+F7p5UD3OCbg8//cKgzx0x2y9q9x9C8kDQkoPsrzz4rKT GJQprPK+Axs1CiwTFs7NaRWVaUuEAAMJymOGRE3Jbabh9+HKkxYNJWA+9lzwJGRFZWTR 2HCNSgMNCQKR6hlHJ6F13DuejHW8+3bJEKzaVvb0VtfQOYZ0z6KWivHxZE+vMoWrBbqM ocurevvfwpsVwQUYExk0VIsAZrpPA6ps0m4FHQoO8myVspL6LKWeAq4H/jQZm3MRZi3N Q1wA== X-Gm-Message-State: ACrzQf1Gn51AylxkHpj/I2wgNAKNxsO3OG5+0UuGSq6iOwRs7SeQNJXW apq8FjAx24+o05Dj1wcBP4vNmaFcefxtoIbUj8DmqoL41ort1sdLXKIEolmEwX6mWG+qLMrQOPv Lwn/wpFR9srLzDHSmj0TQByk1WBCVGewjzM/JFzAsoOUmh8uoEhgB9hFkutIs X-Received: by 2002:a05:6000:1a41:b0:22e:3667:d306 with SMTP id t1-20020a0560001a4100b0022e3667d306mr7894236wry.21.1667220744102; Mon, 31 Oct 2022 05:52:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6qaVPBu7Uc03RHCwmynZItgzCD8NgRmTRNRrRu/oPan+2rsxEAwoPg9kBZ9+YA/agezP1TVg== X-Received: by 2002:a05:6000:1a41:b0:22e:3667:d306 with SMTP id t1-20020a0560001a4100b0022e3667d306mr7894222wry.21.1667220743818; Mon, 31 Oct 2022 05:52:23 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Yajun Wu , Parav Pandit Subject: [PULL 34/86] vhost-user: Support vhost_dev_start Message-ID: <20221031124928.128475-35-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221397263100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Yajun Wu The motivation of adding vhost-user vhost_dev_start support is to improve backend configuration speed and reduce live migration VM downtime. Today VQ configuration is issued one by one. For virtio net with multi-queue support, backend needs to update RSS (Receive side scaling) on every rx queue enable. Updating RSS is time-consuming (typical time like 7ms). Implement already defined vhost status and message in the vhost specification [1]. (a) VHOST_USER_PROTOCOL_F_STATUS (b) VHOST_USER_SET_STATUS (c) VHOST_USER_GET_STATUS Send message VHOST_USER_SET_STATUS with VIRTIO_CONFIG_S_DRIVER_OK for device start and reset(0) for device stop. On reception of the DRIVER_OK message, backend can apply the needed setting only once (instead of incremental) and also utilize parallelism on enabling queues. This improves QEMU's live migration downtime with vhost user backend implementation by great margin, specially for the large number of VQs of 64 from 800 msec to 250 msec. [1] https://qemu-project.gitlab.io/qemu/interop/vhost-user.html Signed-off-by: Yajun Wu Acked-by: Parav Pandit Message-Id: <20221017064452.1226514-3-yajunw@nvidia.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/vhost-user.c | 74 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 03415b6c95..bb5164b753 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -81,6 +81,7 @@ enum VhostUserProtocolFeature { VHOST_USER_PROTOCOL_F_RESET_DEVICE =3D 13, /* Feature 14 reserved for VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS.= */ VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS =3D 15, + VHOST_USER_PROTOCOL_F_STATUS =3D 16, VHOST_USER_PROTOCOL_F_MAX }; =20 @@ -126,6 +127,8 @@ typedef enum VhostUserRequest { VHOST_USER_GET_MAX_MEM_SLOTS =3D 36, VHOST_USER_ADD_MEM_REG =3D 37, VHOST_USER_REM_MEM_REG =3D 38, + VHOST_USER_SET_STATUS =3D 39, + VHOST_USER_GET_STATUS =3D 40, VHOST_USER_MAX } VhostUserRequest; =20 @@ -1452,6 +1455,43 @@ static int vhost_user_set_u64(struct vhost_dev *dev,= int request, uint64_t u64, return 0; } =20 +static int vhost_user_set_status(struct vhost_dev *dev, uint8_t status) +{ + return vhost_user_set_u64(dev, VHOST_USER_SET_STATUS, status, false); +} + +static int vhost_user_get_status(struct vhost_dev *dev, uint8_t *status) +{ + uint64_t value; + int ret; + + ret =3D vhost_user_get_u64(dev, VHOST_USER_GET_STATUS, &value); + if (ret < 0) { + return ret; + } + *status =3D value; + + return 0; +} + +static int vhost_user_add_status(struct vhost_dev *dev, uint8_t status) +{ + uint8_t s; + int ret; + + ret =3D vhost_user_get_status(dev, &s); + if (ret < 0) { + return ret; + } + + if ((s & status) =3D=3D status) { + return 0; + } + s |=3D status; + + return vhost_user_set_status(dev, s); +} + static int vhost_user_set_features(struct vhost_dev *dev, uint64_t features) { @@ -1460,6 +1500,7 @@ static int vhost_user_set_features(struct vhost_dev *= dev, * backend is actually logging changes */ bool log_enabled =3D features & (0x1ULL << VHOST_F_LOG_ALL); + int ret; =20 /* * We need to include any extra backend only feature bits that @@ -1467,9 +1508,18 @@ static int vhost_user_set_features(struct vhost_dev = *dev, * VHOST_USER_F_PROTOCOL_FEATURES bit for enabling protocol * features. */ - return vhost_user_set_u64(dev, VHOST_USER_SET_FEATURES, + ret =3D vhost_user_set_u64(dev, VHOST_USER_SET_FEATURES, features | dev->backend_features, log_enabled); + + if (virtio_has_feature(dev->protocol_features, + VHOST_USER_PROTOCOL_F_STATUS)) { + if (!ret) { + return vhost_user_add_status(dev, VIRTIO_CONFIG_S_FEATURES_OK); + } + } + + return ret; } =20 static int vhost_user_set_protocol_features(struct vhost_dev *dev, @@ -2615,6 +2665,27 @@ void vhost_user_cleanup(VhostUserState *user) user->chr =3D NULL; } =20 +static int vhost_user_dev_start(struct vhost_dev *dev, bool started) +{ + if (!virtio_has_feature(dev->protocol_features, + VHOST_USER_PROTOCOL_F_STATUS)) { + return 0; + } + + /* Set device status only for last queue pair */ + if (dev->vq_index + dev->nvqs !=3D dev->vq_index_end) { + return 0; + } + + if (started) { + return vhost_user_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE | + VIRTIO_CONFIG_S_DRIVER | + VIRTIO_CONFIG_S_DRIVER_OK); + } else { + return vhost_user_set_status(dev, 0); + } +} + const VhostOps user_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_USER, .vhost_backend_init =3D vhost_user_backend_init, @@ -2649,4 +2720,5 @@ const VhostOps user_ops =3D { .vhost_backend_mem_section_filter =3D vhost_user_mem_section_filte= r, .vhost_get_inflight_fd =3D vhost_user_get_inflight_fd, .vhost_set_inflight_fd =3D vhost_user_set_inflight_fd, + .vhost_dev_start =3D vhost_user_dev_start, }; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220823; cv=none; d=zohomail.com; s=zohoarc; b=LItyy6CBNAKm2eQBtpyPu6NZT8WKigUPw7rp/MuE9GPYb4bt76U+r57200N5mO7IH5vH2WJCwX4IuRzwZPibQY2Un9hERO5bqmI/4ennSyyX4BQZsJmUnFWMAOm2uzGHsxl5yQI/5NNTaYO0yhxBYftWsVE1AvihsBJs70ylZMI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220823; h=Content-Type: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=u/T3Dt9wIyzlRr9uFngTKw2OSvTs4mJnNOFX6ReE5Y4=; b=BCB9EnJ5Uy1msZzcVDE0Eufdqc5hYZiASLSUJKVGuowddx/rDp/5KigRQsimTHSTTMgJEdT1WLcHHJihMz70SQoj3I9Qgf9i3AZ5SbamiVuIXar85JNmf4xzUb7+n1aFYPhHJlc8QC/alklIhq8K0KSaG39nkXdUSnHLwz0Vsdo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220823435739.7681074540903; Mon, 31 Oct 2022 05:53:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHm-00077k-EY; Mon, 31 Oct 2022 08:53:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHI-0003Tz-N2 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHG-0002cl-I2 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:32 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-483-H0EsIeJrMjCy8G1jGPmnfA-1; Mon, 31 Oct 2022 08:52:28 -0400 Received: by mail-wm1-f69.google.com with SMTP id l1-20020a7bc341000000b003bfe1273d6cso2572848wmj.4 for ; Mon, 31 Oct 2022 05:52:28 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k18-20020a05600c081200b003b4935f04a4sm7706069wmp.5.2022.10.31.05.52.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220749; 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: in-reply-to:in-reply-to:references:references; bh=u/T3Dt9wIyzlRr9uFngTKw2OSvTs4mJnNOFX6ReE5Y4=; b=PdEQoUrVx+0HeWgZDV7R35Ft3HyqnhVgIlrOm//Sibh5LzYLA+Nb3ezyN3tSXO82ovb7P8 TDDBxQjzL1lXhP4zJWq2DYwBke/K3ZU+wWUxURwC7LV/gw1OTNk5X9ZbC9btiucxmnjS2e cuSgf0TbEIDenPIUdsa9LzMsNEbV2HE= X-MC-Unique: H0EsIeJrMjCy8G1jGPmnfA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=u/T3Dt9wIyzlRr9uFngTKw2OSvTs4mJnNOFX6ReE5Y4=; b=Gi1vmS/15+BIOTmC1Vf8hnl7DHpCv+7ojf+5hXh+ThjwbkrxqLsfSJPAzwEqLB0ooq RD5MbqZmYEqI0T45slTeiqS22+EkIjCEaCe79Hrx5Y926hdUUyh+MAsZzQdcYOO6x2SP 9f9x7sKw0/nrr/EbFqcjTbFuWTCoBnmYgecWQz9hPSPr8DxbbNdfX7b6AV0nWwfgSJ1a gKWqGeDwMcOnv5ULmdQfOFvW7ZlWnRDedwCLfzb4qRQr8Ul4ID5fIi8n8UDQGIlcm11K bPeFlyBIe+Hn5bm7cWlWjX0NmwithjlnIVfHZmXgXT6AR1I4mobtYIObGQhKI+L3i2sv 2adQ== X-Gm-Message-State: ACrzQf1H6+5JaKOQIe0EyDMJariLbaJRoebRkt5d6LYpEFWa7NvIl18L +78ZTOdgKxRG4IAFmg9kqDjRS5Hh0dSLy74ElGHvZc4F11PpmrKsmFBsG5KEOJKDoCNxwC8frqu T6hW0cE8akHjwhXVjjcWe9MVEArtU8K+Jlv6ynUEkx/QLYDqWym2xtn56amFt X-Received: by 2002:a5d:50cf:0:b0:236:86df:257f with SMTP id f15-20020a5d50cf000000b0023686df257fmr8027786wrt.374.1667220746795; Mon, 31 Oct 2022 05:52:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7GFiayqoq4LZqYZwquAjKwSSfOKyU5mn6YvqBco59Uj5hpYOOUxX6hmpB/fGuMJnXoiDxWLA== X-Received: by 2002:a5d:50cf:0:b0:236:86df:257f with SMTP id f15-20020a5d50cf000000b0023686df257fmr8027769wrt.374.1667220746534; Mon, 31 Oct 2022 05:52:26 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eric Auger , Jean-Philippe Brucker Subject: [PULL 35/86] hw/virtio/virtio-iommu-pci: Enforce the device is plugged on the root bus Message-ID: <20221031124928.128475-36-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220824480100011 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Eric Auger In theory the virtio-iommu-pci could be plugged anywhere in the PCIe topology and as long as the dt/acpi info are properly built this should work. However at the moment we fail to do that because the virtio-iommu-pci BDF is not computed at plug time and in that case vms->virtio_iommu_bdf gets an incorrect value. For instance if the virtio-iommu-pci is plugged onto a pcie root port and the virtio-iommu protects a virtio-block-pci device the guest does not boot. So let's do not pretend we do support this case and fail the initialize() if we detect the virtio-iommu-pci is plugged anywhere else than on the root bus. Anyway this ability is not needed. Signed-off-by: Eric Auger Message-Id: <20221012163448.121368-1-eric.auger@redhat.com> Reviewed-by: Jean-Philippe Brucker Tested-by: Jean-Philippe Brucker Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/virtio-iommu-pci.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c index 79ea8334f0..7ef2f9dcdb 100644 --- a/hw/virtio/virtio-iommu-pci.c +++ b/hw/virtio/virtio-iommu-pci.c @@ -17,6 +17,7 @@ #include "hw/qdev-properties-system.h" #include "qapi/error.h" #include "hw/boards.h" +#include "hw/pci/pci_bus.h" #include "qom/object.h" =20 typedef struct VirtIOIOMMUPCI VirtIOIOMMUPCI; @@ -44,6 +45,7 @@ static Property virtio_iommu_pci_properties[] =3D { static void virtio_iommu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **err= p) { VirtIOIOMMUPCI *dev =3D VIRTIO_IOMMU_PCI(vpci_dev); + PCIBus *pbus =3D pci_get_bus(&vpci_dev->pci_dev); DeviceState *vdev =3D DEVICE(&dev->vdev); VirtIOIOMMU *s =3D VIRTIO_IOMMU(vdev); =20 @@ -57,11 +59,17 @@ static void virtio_iommu_pci_realize(VirtIOPCIProxy *vp= ci_dev, Error **errp) s->reserved_regions[i].type !=3D VIRTIO_IOMMU_RESV_MEM_T_MSI) { error_setg(errp, "reserved region %d has an invalid type", i); error_append_hint(errp, "Valid values are 0 and 1\n"); + return; } } + if (!pci_bus_is_root(pbus)) { + error_setg(errp, "virtio-iommu-pci must be plugged on the root bus= "); + return; + } + object_property_set_link(OBJECT(dev), "primary-bus", - OBJECT(pci_get_bus(&vpci_dev->pci_dev)), - &error_abort); + OBJECT(pbus), &error_abort); + virtio_pci_force_virtio_1(vpci_dev); qdev_realize(vdev, BUS(&vpci_dev->bus), errp); } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220893; cv=none; d=zohomail.com; s=zohoarc; b=Bv4HEp27DASxaU1ur+35bcI7Kz3ZV7uSMLESnVOOAvj9Rk7z3/a7q7yx60a7krOVHHPexsxhbbwzVv4DkYusEHgeQOwuYtqNKWO9MMNg4HzmTcup7I18Ehg7sWWpa3T7V5LF1t2mQlGOI/GTpRmdayVyYuUjPF4g6avx3p+bSmY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220893; 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=6cIEnv/B6TNmwuy+yjMUUsEZp+0oTgySRy8CBJkVXno=; b=Gmqtbr0JKwu08PN/DsUFw0ErcBFGT5ebpDxC95G88t007fr7cCD0qmF+mtb6efRfQaIxhWhIZPCLuyyXOYMHHLGTB8q8MgkdpWH517NThhoVTsDur06sWwVCwSfjbYR28OGm0JAbUsRA/qz2CHkafhK4icWRKArU7VuOLplROUo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722089386145.416736064742054; Mon, 31 Oct 2022 05:54:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHx-0007rF-KN; Mon, 31 Oct 2022 08:53:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHN-0003w4-Bo for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHJ-0002eK-21 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:34 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-141-HgCc69F2MmWvu9zno8xJjA-1; Mon, 31 Oct 2022 08:52:31 -0400 Received: by mail-wr1-f71.google.com with SMTP id u20-20020adfc654000000b0022cc05e9119so3012332wrg.16 for ; Mon, 31 Oct 2022 05:52:30 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k3-20020a05600c1c8300b003c6b7f5567csm22626600wms.0.2022.10.31.05.52.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220752; 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=6cIEnv/B6TNmwuy+yjMUUsEZp+0oTgySRy8CBJkVXno=; b=g9pmb2D5EhZ/l0dJeMTLzAecvRVjyMU0Wbxy4MwB28hGrNApAc2L9LPQ65kbcFCAkD3EOD lW/9655OAGq4WkFiB4yP/1vgIjwPV6oh+E1+Vog0LKJChUaIZpv576YSFtu6wbBW3kmPST J3ErH1l2KREAOxRf+PE1P1dv0DYzS58= X-MC-Unique: HgCc69F2MmWvu9zno8xJjA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6cIEnv/B6TNmwuy+yjMUUsEZp+0oTgySRy8CBJkVXno=; b=K1mA42DzByNJ8zOKLj7pWQDkKkiQH2KN3TkxtUIGEpjTDmrYadL9tiBmzuEqU7v/G0 1Um5/BQZpBUhxDKsiOi47VPAp+G7Vpm+UxcsCyXjZI15/XJxjNmaUfuvkwvhn45BQL7o 2BHZYCCF2K+V9M8fsvJJ6fdvjNDVz4SoxNyBexwYzXqn6zJCcpMc36vVcF084s0WiCUL ztsllngvJaSr0ymfBRHPhlNzcHpG65Pk7V5E3SD14fYG5hPaDXInkf2ROr0DKjs+k6bk h7jx7dPe/bUGSqeFIf2bBaSCZIWuFONbtVBWvfIrvyhRZoJsKouun4BHOpK2/GWLtoou KEsw== X-Gm-Message-State: ACrzQf1pZVb/F2lw+JKAtQxWrTndYBzUP7jvXGvrocZg8MfF7m5CrYE8 yPD/uSzj/IEE11WkOFzUhjqevAHkWyN8uUTrfudt5lKiOi+FGKW0gHV98rxHK4K8V8ExJPTvisw 0jPrbcZBHlwE9TTi+bzTZWq+MFGHX02goj5RmQAdHc2qQQgPz0cA0IlMnYHK+ X-Received: by 2002:adf:dc08:0:b0:236:cfcf:8e62 with SMTP id t8-20020adfdc08000000b00236cfcf8e62mr2382329wri.367.1667220749727; Mon, 31 Oct 2022 05:52:29 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6sHLEKOVgQxxeew27JUfMiLrd3gj2z+8PoornMt3Y3iEVNy8hKMtgLO9w9W9lgkU+3BQq+iw== X-Received: by 2002:adf:dc08:0:b0:236:cfcf:8e62 with SMTP id t8-20020adfdc08000000b00236cfcf8e62mr2382308wri.367.1667220749413; Mon, 31 Oct 2022 05:52:29 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alex =?utf-8?Q?Benn=C3=A9e?= , Christian Borntraeger , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= Subject: [PULL 36/86] virtio: re-order vm_running and use_started checks Message-ID: <20221031124928.128475-37-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220894893100001 From: Alex Benn=C3=A9e During migration the virtio device state can be restored before we restart the VM. As no devices can be running while the VM is paused it makes sense to bail out early in that case. This returns the order introduced in: 9f6bcfd99f (hw/virtio: move vm_running check to virtio_device_started) to what virtio-sock was doing longhand. Signed-off-by: Alex Benn=C3=A9e Cc: Christian Borntraeger Message-Id: <20221014132108.2559156-1-alex.bennee@linaro.org> Tested-by: Christian Borntraeger Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index f41b4a7e64..ebb58feaac 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -385,14 +385,14 @@ static inline bool virtio_is_big_endian(VirtIODevice = *vdev) =20 static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t statu= s) { - if (vdev->use_started) { - return vdev->started; - } - if (!vdev->vm_running) { return false; } =20 + if (vdev->use_started) { + return vdev->started; + } + return status & VIRTIO_CONFIG_S_DRIVER_OK; } =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221645; cv=none; d=zohomail.com; s=zohoarc; b=XRCpe8gY9wZlbD8VOK8XDWcBXgmB+GEqxaStdH51GjPzF2AcXQcYCqvxJLlDLKhWD2OgfqT/mXElhdD/BkmCNXQHwE9K0Hy1is+B06Ar77QQWaB3nqklKcVuXhnwv0uKwgn2EVPx0eGtdz+J04aMJu5/jQD5MJA2JznWMuqEeFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221645; h=Content-Type: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=XvXLXZbH32FwhzwswFLnLBocqzfMXY1xZbOkdJP1NMw=; b=gevxPic3f7/IYPAEdKIuLhBqNlTnZWJowPFV5jHD38wABYKWZEPEEiozyONfC/ko7p6EB4Skm+7A7/FqO1uPTrRGGFNPLK1pFBtwn0xOIQGX9ug1AB8UkUOOuiq54ZH1yUh+QWv1GtDopNjmo+XFpeulCqY+GURv5vs/sF3TqjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16672216454776.587008652147915; Mon, 31 Oct 2022 06:07:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUHy-0007xj-GR; Mon, 31 Oct 2022 08:53:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHO-000481-TF for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHN-0002iB-2s for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:38 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-595-3cxeGDYFPVikvFOffACa5g-1; Mon, 31 Oct 2022 08:52:34 -0400 Received: by mail-wr1-f70.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so3018242wra.15 for ; Mon, 31 Oct 2022 05:52:33 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id i11-20020a1c540b000000b003a3442f1229sm7216084wmb.29.2022.10.31.05.52.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220755; 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: in-reply-to:in-reply-to:references:references; bh=XvXLXZbH32FwhzwswFLnLBocqzfMXY1xZbOkdJP1NMw=; b=GcTJkRm0lIgjqxP+mZnQ5MUypbMUTE5T7V+UXU18P8eyhBuc+2lDDB35rNrdyliOZNUWcq kLuGZD1/L774eybbs1ZRKmwCBUgwxjTSdSC2+DtFv0NULS1TN4SrQbJeISutbYdVxNTvby QQ88A4lYKI+6uZOfX3qadSrGEGUjgI8= X-MC-Unique: 3cxeGDYFPVikvFOffACa5g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=XvXLXZbH32FwhzwswFLnLBocqzfMXY1xZbOkdJP1NMw=; b=b+JzloprEDRcdxIL+sxCxcmPxODxi0IQLWWB0OMJAd0jI+aFT56JnoIosiv5zqKUDE O+5pjWrBsAXcSgD4beinOFBfn8BFv6VQpWT1KSxn6/uBJ3sOVQ76sJRHvsAGnuWhpqBx BeUWrRsEbAK+WX9hThjxmROY7mmsQjL8g34Utn86ZeI3KF3CNB6LRE22ADRKhfkNPgrT RLkEytkGdtgUPO/eRCsho7h9XR+le0GB5Z52J+hT9U9XGmB00Dw3+iLn4oElqRTEwNUY u6LhLOYwGqu7tfQy7UPgrK39YaENbfY5IjbhHoAFo9rqi+2kKdxtElpNbF+35pmxxXVJ e5Ww== X-Gm-Message-State: ACrzQf3qy4Plncx7mY/Wza6yiwx31TCftbBuYeSZWqW7yA1ZEonmIxMA djP9NIyN6cJJBL0aBI0huaAV0EfOMY+ZLMOvqDtpScrhepXEW//CgNNzhyPG4ZMRNW95z85A4Yl ZAyEYsHzZd7vxYx1whRT5lPfCs3IKJPo6POLGaA+Cy91rhg+T60yyJufXWz5E X-Received: by 2002:a1c:3b87:0:b0:3cf:5d41:bf27 with SMTP id i129-20020a1c3b87000000b003cf5d41bf27mr9873718wma.16.1667220752385; Mon, 31 Oct 2022 05:52:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5UJQ3xjSXw7yG7nWaaiCHjfZGXy6PoQdrCM5uf60F5tLevTC3k5gJCKrhwt6jB6hwOrZgdTQ== X-Received: by 2002:a1c:3b87:0:b0:3cf:5d41:bf27 with SMTP id i129-20020a1c3b87000000b003cf5d41bf27mr9873697wma.16.1667220752061; Mon, 31 Oct 2022 05:52:32 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:29 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xuan Zhuo , Jason Wang Subject: [PULL 37/86] virtio: introduce __virtio_queue_reset() Message-ID: <20221031124928.128475-38-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221647520100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xuan Zhuo Separate the logic of vq reset. This logic will be called directly later. Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-2-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/virtio.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 808446b4c9..6f42fcadd7 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2464,6 +2464,26 @@ static enum virtio_device_endian virtio_current_cpu_= endian(void) } } =20 +static void __virtio_queue_reset(VirtIODevice *vdev, uint32_t i) +{ + vdev->vq[i].vring.desc =3D 0; + vdev->vq[i].vring.avail =3D 0; + vdev->vq[i].vring.used =3D 0; + vdev->vq[i].last_avail_idx =3D 0; + vdev->vq[i].shadow_avail_idx =3D 0; + vdev->vq[i].used_idx =3D 0; + vdev->vq[i].last_avail_wrap_counter =3D true; + vdev->vq[i].shadow_avail_wrap_counter =3D true; + vdev->vq[i].used_wrap_counter =3D true; + virtio_queue_set_vector(vdev, i, VIRTIO_NO_VECTOR); + vdev->vq[i].signalled_used =3D 0; + vdev->vq[i].signalled_used_valid =3D false; + vdev->vq[i].notification =3D true; + vdev->vq[i].vring.num =3D vdev->vq[i].vring.num_default; + vdev->vq[i].inuse =3D 0; + virtio_virtqueue_reset_region_cache(&vdev->vq[i]); +} + void virtio_reset(void *opaque) { VirtIODevice *vdev =3D opaque; @@ -2495,22 +2515,7 @@ void virtio_reset(void *opaque) virtio_notify_vector(vdev, vdev->config_vector); =20 for(i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { - vdev->vq[i].vring.desc =3D 0; - vdev->vq[i].vring.avail =3D 0; - vdev->vq[i].vring.used =3D 0; - vdev->vq[i].last_avail_idx =3D 0; - vdev->vq[i].shadow_avail_idx =3D 0; - vdev->vq[i].used_idx =3D 0; - vdev->vq[i].last_avail_wrap_counter =3D true; - vdev->vq[i].shadow_avail_wrap_counter =3D true; - vdev->vq[i].used_wrap_counter =3D true; - virtio_queue_set_vector(vdev, i, VIRTIO_NO_VECTOR); - vdev->vq[i].signalled_used =3D 0; - vdev->vq[i].signalled_used_valid =3D false; - vdev->vq[i].notification =3D true; - vdev->vq[i].vring.num =3D vdev->vq[i].vring.num_default; - vdev->vq[i].inuse =3D 0; - virtio_virtqueue_reset_region_cache(&vdev->vq[i]); + __virtio_queue_reset(vdev, i); } } =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221190; cv=none; d=zohomail.com; s=zohoarc; b=gd2P+UgKE/1AnGGg1sDZiJjOGM2iIlQKATi/jwR8qGHxiQuxM43NK3krL/PuzbenYaMG7J2maVauJbi5/BbPwwdwKG13zjXDpKqynAPLLbtoFX8u5tdeJfYn5yiYyN6a1z/kvgk/7kF6l/xDl+aV7hoj8rQgOgmU3HqcubS/89w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221190; h=Content-Type: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=05dzwNfg7HbBJ5DnJ73Qkx+E7eiNja915s9Il8Q0iOY=; b=IcHh4TDrYOOJ55HNYX4GFf7NQ4rHF3xEnQsE7WN8tALlpDwbkfXbNmmtYyy5/iR79qhlPawa4WvDrGiXMPt8cKJL/hDkdm+Kv2f9yyNvsiQHPfn3sF+n8MbrtvzRM3cVDyIwy1jMeHU4ARgcuceiSCClz/iDZ3iJR2XqU43h7eM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221190053821.0186424198607; Mon, 31 Oct 2022 05:59:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUI1-0008Fy-Jm; Mon, 31 Oct 2022 08:53:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHQ-0004Ix-BH for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHO-0002mO-9C for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:39 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-439-gv10jyWGPM62LQBPUfIO9g-1; Mon, 31 Oct 2022 08:52:36 -0400 Received: by mail-wr1-f70.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so3018282wra.15 for ; Mon, 31 Oct 2022 05:52:36 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id p10-20020a1c544a000000b003c71358a42dsm7800851wmi.18.2022.10.31.05.52.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220757; 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: in-reply-to:in-reply-to:references:references; bh=05dzwNfg7HbBJ5DnJ73Qkx+E7eiNja915s9Il8Q0iOY=; b=CV5sXYbSehakvHWNJ4wV+6kCX5nmvUs6SuZpX+f5Aa6YQ/tIZflXLJnmcfSJzXJRbVtviu ID0j1XCViaJlRwsLkbCvbzsOY7bJnc+HuQ8agOSzCvy2fDZ4rB6JqgVMcE8+gUhcv6PZOy 9mYtE0KiDhc7SRNKnDKzgmdGdcFIpfI= X-MC-Unique: gv10jyWGPM62LQBPUfIO9g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=05dzwNfg7HbBJ5DnJ73Qkx+E7eiNja915s9Il8Q0iOY=; b=1DrCVt+2aI2qWh3fWYZWHRlalCQqRdTT50rxNS5ji01SL0irwQennAuodJI7mKsy2r 6+bov51fhpPx6SnPdoK6zAZWKYQZx+34XK7X0USYBEM84rYERG+dYgZ/CV8gbDhR3yxU KJURjGn8hzK5bFRjIULGXstITyW9JqkgTOXcPMaCZZQ4SM1JvWWHZt0wr8+929gTK6Xg qL1PJXUVOg6l10YWf/sEVy06evP6YRB3bjqfex6lrbyNFjBRTTATCOjf+uYb+95kWfJC Pf+Vhi8IIDs281quIu+9SqxiWLPGmrWdO4K1PjFDEmcQFRWoP9aIuns/hV67/Y91fiiI +iDw== X-Gm-Message-State: ACrzQf2cWYLV+DHVtWm2lITP63gYjwpvMZeiEHkMRu3kbHj2QZhy+bIJ 3qRHVsjiTkUAqCvJx5PXh5RnhQsN/D/O0PmnKw4j/cmlqKZ/pURTkolYNZgy+T0Rwqd0uC3t3wl 5lt6I3jbxD0ksXFayExV6hvo2ZUuIsSxHBvlfwPExXPGyeomaYn5shFeTgRo8 X-Received: by 2002:a5d:4484:0:b0:236:574f:2536 with SMTP id j4-20020a5d4484000000b00236574f2536mr8243632wrq.7.1667220755038; Mon, 31 Oct 2022 05:52:35 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5vap4Bf08L5tXoCRrdVuZaUBB33glAzx0YIq4W+BTH/e/Pg/tZV8cdoEVVg2+tv8WLRvKSOg== X-Received: by 2002:a5d:4484:0:b0:236:574f:2536 with SMTP id j4-20020a5d4484000000b00236574f2536mr8243610wrq.7.1667220754754; Mon, 31 Oct 2022 05:52:34 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xuan Zhuo , Jason Wang Subject: [PULL 38/86] virtio: introduce virtio_queue_reset() Message-ID: <20221031124928.128475-39-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221191617100004 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xuan Zhuo Introduce a new interface function virtio_queue_reset() to implement reset for vq. Add a new callback to VirtioDeviceClass for queue reset operation for each child device. Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-3-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio.h | 2 ++ hw/virtio/virtio.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index ebb58feaac..b4c237201d 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -148,6 +148,7 @@ struct VirtioDeviceClass { void (*set_config)(VirtIODevice *vdev, const uint8_t *config); void (*reset)(VirtIODevice *vdev); void (*set_status)(VirtIODevice *vdev, uint8_t val); + void (*queue_reset)(VirtIODevice *vdev, uint32_t queue_index); /* For transitional devices, this is a bitmap of features * that are only exposed on the legacy interface but not * the modern one. @@ -286,6 +287,7 @@ int virtio_queue_set_host_notifier_mr(VirtIODevice *vde= v, int n, MemoryRegion *mr, bool assign); int virtio_set_status(VirtIODevice *vdev, uint8_t val); void virtio_reset(void *opaque); +void virtio_queue_reset(VirtIODevice *vdev, uint32_t queue_index); void virtio_update_irq(VirtIODevice *vdev); int virtio_set_features(VirtIODevice *vdev, uint64_t val); =20 diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 6f42fcadd7..cf5f9ca387 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2484,6 +2484,17 @@ static void __virtio_queue_reset(VirtIODevice *vdev,= uint32_t i) virtio_virtqueue_reset_region_cache(&vdev->vq[i]); } =20 +void virtio_queue_reset(VirtIODevice *vdev, uint32_t queue_index) +{ + VirtioDeviceClass *k =3D VIRTIO_DEVICE_GET_CLASS(vdev); + + if (k->queue_reset) { + k->queue_reset(vdev, queue_index); + } + + __virtio_queue_reset(vdev, queue_index); +} + void virtio_reset(void *opaque) { VirtIODevice *vdev =3D opaque; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221645; cv=none; d=zohomail.com; s=zohoarc; b=SUCdjrcN4TjOVSGXZx1P13kprX+3wLpBRkvtzwvA8iPVUjFupJBT0c0yYZ0zsS+K7zOFIOAjEvXvpg+IENbjgSKLrxi9LMfeT0/McCHwqzZOswUJjUqHBLJgjjFUwyOlPQVufpC7H3dFL8VeuQXXSR7a0Ep1K3iwk4WatYtlrKg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221645; h=Content-Type: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=VO3BBxO0X5ks5yU4onVcXc3gcZDPjGyyspfwJYAFCtU=; b=nRfVWxUFu+7NaK6AXs9hqVLSEyB0h3WEHiBe4lgJhUVfvtCazIcCdrafV2YDCDBdQyHPfubB96x20MYe0jreS9gGjMMZ3fwBOXry0071Tbq7h6/JqxncweDTXOjg5YUqC0gXK5DaIPKtgrYGmIwcmvmJprGMTBWXotg+FK05hVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221645833343.6641922909014; Mon, 31 Oct 2022 06:07:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUI5-0000Ig-EF; Mon, 31 Oct 2022 08:53:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHT-0004ge-8P for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:43 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHR-0002pi-Co for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:42 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-531-C77GZeDTONOHKy76gN7bzA-1; Mon, 31 Oct 2022 08:52:39 -0400 Received: by mail-wr1-f71.google.com with SMTP id r22-20020adfa156000000b0023660e969ddso3010287wrr.19 for ; Mon, 31 Oct 2022 05:52:38 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id h3-20020a5d6e03000000b002365730eae8sm6973732wrz.55.2022.10.31.05.52.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220760; 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: in-reply-to:in-reply-to:references:references; bh=VO3BBxO0X5ks5yU4onVcXc3gcZDPjGyyspfwJYAFCtU=; b=hXfKwIJ2p5JJ3WZlPhZ0nTzUwmxW8jwUPwG/BShTYwmD/9lpkGfaBixSx6LoJ73qu6WYUK 3umCSB+h2bJGlUYYJUisECA9vkkIU3r2bwKyTEgA/mhakSnMpM1xtBEGVAgYWP6uovMTfd 4oIL/igTNzcsqPkaWUqVrRGKkRSBpJQ= X-MC-Unique: C77GZeDTONOHKy76gN7bzA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VO3BBxO0X5ks5yU4onVcXc3gcZDPjGyyspfwJYAFCtU=; b=4/3MXIEjYZPMhJ9fYedXg4dMGmTYN1UpQJ15+YLd6rGxWCGARAoJ2C++bMFmkjUZgZ /76MDy+5CU08LGpti33W8kBA57Qb6TpsGM+L/ukNHk9wofCWBWEptSRQAsEhh8fHLWAK SFsulD0SwC/SljTsHWYX+Kmbcdp3f2mvbrqUayNVjQSgzBuXF/yiE6JqMRODBZ5z44p5 TA7Phb4VQUoS7f8rYSbF+P1/QF2oFBHPDczxTEoyFycmpQLR5YzDgyc1pj+Akh6nWK0d 9f41CC4d2aApu8r2MXpHhIbR33tgYqbYRmKOKzlyPTRc9VAqp13ga4QCBU9FnhzZ/cKV pfEg== X-Gm-Message-State: ACrzQf1HpN6e45/sBXRXb+7+WynQ/FjebKwUrbiidN9gFtLuMjAYFbrF pHOa44kt3P8icfprLKAph2IwtMeThu1fwSLgHFxh6EVjlIBKdL2SSNyHi7jnFUYIqTpUhLKeayZ 5jov86H0EC4oxeERM02/P8LR8apg9iSmz9XskFpLyn2oQnKkO4tc6iYHbUxXY X-Received: by 2002:a05:600c:1987:b0:3c6:fd37:7776 with SMTP id t7-20020a05600c198700b003c6fd377776mr18546064wmq.72.1667220757848; Mon, 31 Oct 2022 05:52:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM65wUCkhfOsuWRsRZoUat7y5S/O+XjcqWgbJJ5CTJ0T0Vh2xUyqHBVAeTDyrfvQn3556OAYuw== X-Received: by 2002:a05:600c:1987:b0:3c6:fd37:7776 with SMTP id t7-20020a05600c198700b003c6fd377776mr18546046wmq.72.1667220757546; Mon, 31 Oct 2022 05:52:37 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:34 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 39/86] virtio: introduce virtio_queue_enable() Message-ID: <20221031124928.128475-40-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221647510100004 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Introduce the interface queue_enable() in VirtioDeviceClass and the fucntion virtio_queue_enable() in virtio, it can be called when VIRTIO_PCI_COMMON_Q_ENABLE is written and related virtqueue can be started. It only supports the devices of virtio 1 or later. The not-supported devices can only start the virtqueue when DRIVER_OK. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-4-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio.h | 2 ++ hw/virtio/virtio.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index b4c237201d..5cd7861aeb 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -149,6 +149,7 @@ struct VirtioDeviceClass { void (*reset)(VirtIODevice *vdev); void (*set_status)(VirtIODevice *vdev, uint8_t val); void (*queue_reset)(VirtIODevice *vdev, uint32_t queue_index); + void (*queue_enable)(VirtIODevice *vdev, uint32_t queue_index); /* For transitional devices, this is a bitmap of features * that are only exposed on the legacy interface but not * the modern one. @@ -288,6 +289,7 @@ int virtio_queue_set_host_notifier_mr(VirtIODevice *vde= v, int n, int virtio_set_status(VirtIODevice *vdev, uint8_t val); void virtio_reset(void *opaque); void virtio_queue_reset(VirtIODevice *vdev, uint32_t queue_index); +void virtio_queue_enable(VirtIODevice *vdev, uint32_t queue_index); void virtio_update_irq(VirtIODevice *vdev); int virtio_set_features(VirtIODevice *vdev, uint64_t val); =20 diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index cf5f9ca387..9683b2e158 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2495,6 +2495,20 @@ void virtio_queue_reset(VirtIODevice *vdev, uint32_t= queue_index) __virtio_queue_reset(vdev, queue_index); } =20 +void virtio_queue_enable(VirtIODevice *vdev, uint32_t queue_index) +{ + VirtioDeviceClass *k =3D VIRTIO_DEVICE_GET_CLASS(vdev); + + if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { + error_report("queue_enable is only suppported in devices of virtio= " + "1.0 or later."); + } + + if (k->queue_enable) { + k->queue_enable(vdev, queue_index); + } +} + void virtio_reset(void *opaque) { VirtIODevice *vdev =3D opaque; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221245; cv=none; d=zohomail.com; s=zohoarc; b=M+D8IBRW9RFQbWaH1Tf8d9McQMFVMQmDQLQ1w05QBoSeMrRskuOAXeU5GVCh6jY7G/2OX0G33TfmUnPVFLF5ZZWemnB6WFRtGAFKXK23n8vxXfh4h3MZCSC+ZmRf9MkksfrT665o4Dp1FekQycFocNOjZ17yfAlKbG1TsrU0HMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221245; h=Content-Type: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=X2sP/TSK1XCsdD9F2S14hcxXjNio5ZBGNNU6Wjh7pYE=; b=FAtOO48lsmPrZsKxq/C9m4M8/UOW9rg4IUlTbXhFy9juB9EW0HI+KEwhjaRxUB/odFds6dvsbzIU6i0qQtMe5x/5RMYQ5/eMdyvneM2HTRj/NMoMITCirlW4yIPpadSbAk68G0AFzjio8ijLiv6WYBo84cEcUlSuuXrpf6BSiyo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722124575557.87258324504501; Mon, 31 Oct 2022 06:00:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUI6-0000UX-Rx; Mon, 31 Oct 2022 08:53:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHZ-0005WP-I7 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHW-0002qR-O9 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:49 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-649-9dsi42jEP1CVQLY3OIaTfA-1; Mon, 31 Oct 2022 08:52:42 -0400 Received: by mail-wm1-f69.google.com with SMTP id f26-20020a7bcc1a000000b003c03db14864so2569792wmh.6 for ; Mon, 31 Oct 2022 05:52:42 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id n2-20020a05600c4f8200b003b4c979e6bcsm7266747wmq.10.2022.10.31.05.52.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220766; 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: in-reply-to:in-reply-to:references:references; bh=X2sP/TSK1XCsdD9F2S14hcxXjNio5ZBGNNU6Wjh7pYE=; b=HWxQKHn+0GA6bMLSriLsHplgpmoQ29Il5qdl3++h/ookYRop1VZpVLYt7uwPU1Lb03aNoK LD5qxSK+mughGDwcl37Kknl84jE4jKur5EkXqbeXlG+phsacCQ1krkM7Aa8OXAWLztswTL udjaK0eAwLkF3bTqN0iYRVd+YsIamSQ= X-MC-Unique: 9dsi42jEP1CVQLY3OIaTfA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=X2sP/TSK1XCsdD9F2S14hcxXjNio5ZBGNNU6Wjh7pYE=; b=b9Y0xYJiP4DuPanxQ2j2heweTjaP7rf/fZ47oVCGE8DWFEMizq3WlDb6UDInL3aQR6 yQY8JD/C8KnFTtmaRrZFPe2F4G0GqQUP1dyBSz1MEZVLT8yn3PRPsxEjzCkp8JRZGFEn lvGJHIAXGH3cckHHZqMHtbju4c61mUDQStOTfk5FkMHhMqEJCI8GfGlBuz3HOKZXf8/K UaGYJgyH2ucfYkGYKZg20p+tqzOFSWil84wpjIr7mL0wjyK/X+AmlOW1ZRYi2t2gFhvy /T6REbsi+kYdOjNmYIhnCbY10mIoF9xXtmCLV7eSlZyKrvItobjkH1RBR+q2+xblW2JT oJFw== X-Gm-Message-State: ACrzQf0dYAwdJb4IDiZSnT4oDN5Wrg3kwANvFRq1vcCS4eeVBe0FsSf4 BDpDnRX6Myf1LVhD+ADtxp/8ec7EKOV5So9LdVNPjFmTXFGUuZr2o8uxDwJ7Iy6SBi2c7GzJTMo q7UZ4/0p2QFma+EjmoDo+BvrwUZypxDCB7nHjVKo45SLhVMSs06bt2S0kZvrW X-Received: by 2002:a5d:4048:0:b0:236:659b:260e with SMTP id w8-20020a5d4048000000b00236659b260emr7644933wrp.445.1667220760895; Mon, 31 Oct 2022 05:52:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5eOiR6dWM4rOzoXBEtNj+izPeL+vdriB+L76sI9NmKcvqZcNBxFbzL4E4GnFjdL24Rt0J/ew== X-Received: by 2002:a5d:4048:0:b0:236:659b:260e with SMTP id w8-20020a5d4048000000b00236659b260emr7644909wrp.445.1667220760643; Mon, 31 Oct 2022 05:52:40 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:37 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang , Eduardo Habkost , Marcel Apfelbaum , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Yanan Wang Subject: [PULL 40/86] virtio: core: vq reset feature negotation support Message-ID: <20221031124928.128475-41-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221248016100007 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu A a new command line parameter "queue_reset" is added. Meanwhile, the vq reset feature is disabled for pre-7.2 machines. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-5-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio.h | 4 +++- hw/core/machine.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 5cd7861aeb..18a8920cc0 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -313,7 +313,9 @@ typedef struct VirtIORNGConf VirtIORNGConf; DEFINE_PROP_BIT64("iommu_platform", _state, _field, \ VIRTIO_F_IOMMU_PLATFORM, false), \ DEFINE_PROP_BIT64("packed", _state, _field, \ - VIRTIO_F_RING_PACKED, false) + VIRTIO_F_RING_PACKED, false), \ + DEFINE_PROP_BIT64("queue_reset", _state, _field, \ + VIRTIO_F_RING_RESET, true) =20 hwaddr virtio_queue_get_desc_addr(VirtIODevice *vdev, int n); bool virtio_queue_enabled_legacy(VirtIODevice *vdev, int n); diff --git a/hw/core/machine.c b/hw/core/machine.c index aa520e74a8..907fa78ff0 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -40,7 +40,9 @@ #include "hw/virtio/virtio-pci.h" #include "qom/object_interfaces.h" =20 -GlobalProperty hw_compat_7_1[] =3D {}; +GlobalProperty hw_compat_7_1[] =3D { + { "virtio-device", "queue_reset", "false" }, +}; const size_t hw_compat_7_1_len =3D G_N_ELEMENTS(hw_compat_7_1); =20 GlobalProperty hw_compat_7_0[] =3D { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221101; cv=none; d=zohomail.com; s=zohoarc; b=bCrHotABlvR9p6uP9rEI2ozMrJpU8+SzuGJQNSQ3Qva+bypaGZVy942gQxHvtQvPmC8VGaBsb5WrJvkOZgBMtzgFK1UIq0HM4OxL+bG4j5w0+XiRTbNy7tsR2+GaYVe3R8ZuZYznkke286WusU6CoMwy3STAdNFkuCxPw9BRsQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221101; h=Content-Type: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=53cDP1F6gXOJDB503L4H7aDBSnQaypNNt0vv+nFB0O0=; b=StODSulpYWjrL44/qqUk7+KNF0S2P3H9aU1XegbwQa7+2xAOVa50wu6/yMkWhh/hCagS4viM37bxJDbxLOHcYZY6b7sNPrQV8+BkUDXb7MS2G7vCivOVoc58HpHzJg3HZX2PtNMXbFULFU6BBAYjVXzafL/X4/eBlxkP348guf8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221101233985.7852268328555; Mon, 31 Oct 2022 05:58:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUI8-0000e6-CC; Mon, 31 Oct 2022 08:53:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHZ-0005WO-Hx for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHX-0002qX-N4 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:49 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-315-_FMmRHI3OxeYKSlxt5_tZQ-1; Mon, 31 Oct 2022 08:52:45 -0400 Received: by mail-wm1-f71.google.com with SMTP id f1-20020a1cc901000000b003cf703a4f08so361524wmb.2 for ; Mon, 31 Oct 2022 05:52:45 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id h3-20020a5d6e03000000b002365730eae8sm6973958wrz.55.2022.10.31.05.52.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220767; 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: in-reply-to:in-reply-to:references:references; bh=53cDP1F6gXOJDB503L4H7aDBSnQaypNNt0vv+nFB0O0=; b=fB0TUHY9R28VHMfhPdm0iZRMVCcYX54qFNd1Hfw5hTq9oiImP8kujq4E4ClSOtuFCCAKEH ueWPOMQSLJuCgJxJGfBOHwUxyqCoYnLxI5ImhRdidjL6HXOt2NWg6gTRQQKkrx8zstkrz5 B7aS8j6V/uZ646jAVBNvBoFk+a1vh5w= X-MC-Unique: _FMmRHI3OxeYKSlxt5_tZQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=53cDP1F6gXOJDB503L4H7aDBSnQaypNNt0vv+nFB0O0=; b=2GZPKCs28jTeIGhuCXwuNR5qvAp23floRjEqzv9pqhU2M972PdPg/yRzQpt+pImwkn 52mh6DopKZgaiabeeiHR57aucQSJuH7qoKZMSu7ObaJ/uSIwXosx/683vzozwWjsTc8g 3zY+y358xJHNxsRoQ6Tk4QUOQESxktunWfZPstA/opmxvDiBuHBjwMYXn0qF71sPlz7p dodUspjwDJErR0nwwQ86BySdJhKOEMmZRxZJqgnzWmlxbDacswfVitH7xcA+NfgpCA1w bvT9I/wb0/ck9qh89bWNm4ZOismfBfkxNT9Hhu5wy7rnMwpOiMo4Zrni3wYhym3p3bQy sgSA== X-Gm-Message-State: ACrzQf3tXZXcAmd1+okUMj2o04h7og3iSMYcRzTKxla61wlfQTaivcyA b6HtJkHAOsx7MEQWmQ8po034P+6axoyAaJOFbdBdL7Hk68gvyQWeHzE8i3KpvYNwQOcsmG9Y8oE uQv3EHWAq84bPsWeoEClbVvtUUfKsgiMTcSm0ULtkk5qVmWzZdT2jHRZeevwh X-Received: by 2002:a1c:f202:0:b0:3c2:10de:4016 with SMTP id s2-20020a1cf202000000b003c210de4016mr17963170wmc.158.1667220764378; Mon, 31 Oct 2022 05:52:44 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7FjfoJ5ax6iv+rOufapDypB9ELVWwgvZKdVPaqoTQqguBG2+2V1Rtcdr/S8bt/k8XECGIzkw== X-Received: by 2002:a1c:f202:0:b0:3c2:10de:4016 with SMTP id s2-20020a1cf202000000b003c210de4016mr17963145wmc.158.1667220764113; Mon, 31 Oct 2022 05:52:44 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:41 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xuan Zhuo , Kangjie Xu , Jason Wang Subject: [PULL 41/86] virtio-pci: support queue reset Message-ID: <20221031124928.128475-42-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221102334100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xuan Zhuo PCI devices support vq reset. Based on this function, the driver can adjust the size of the ring, and quickly recycle the buffer in the ring. The migration of the virtio devices will not happen during a reset operation. This is becuase the global iothread lock is held. Migration thread also needs the lock. As a result, when migration of virtio devices starts, the 'reset' status of VirtIOPCIQueue will always be 0. Thus, we do not need to add it in vmstate_virtio_pci_modern_queue_state. Signed-off-by: Xuan Zhuo Signed-off-by: Kangjie Xu Acked-by: Jason Wang Message-Id: <20221017092558.111082-6-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio-pci.h | 5 +++++ hw/virtio/virtio-pci.c | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/hw/virtio/virtio-pci.h b/include/hw/virtio/virtio-pci.h index 2446dcd9ae..938799e8f6 100644 --- a/include/hw/virtio/virtio-pci.h +++ b/include/hw/virtio/virtio-pci.h @@ -117,6 +117,11 @@ typedef struct VirtIOPCIRegion { typedef struct VirtIOPCIQueue { uint16_t num; bool enabled; + /* + * No need to migrate the reset status, because it is always 0 + * when the migration starts. + */ + bool reset; uint32_t desc[2]; uint32_t avail[2]; uint32_t used[2]; diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 34db51e241..d4f2ffe986 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1251,6 +1251,9 @@ static uint64_t virtio_pci_common_read(void *opaque, = hwaddr addr, case VIRTIO_PCI_COMMON_Q_USEDHI: val =3D proxy->vqs[vdev->queue_sel].used[1]; break; + case VIRTIO_PCI_COMMON_Q_RESET: + val =3D proxy->vqs[vdev->queue_sel].reset; + break; default: val =3D 0; } @@ -1338,6 +1341,7 @@ static void virtio_pci_common_write(void *opaque, hwa= ddr addr, ((uint64_t)proxy->vqs[vdev->queue_sel].used[1]) << = 32 | proxy->vqs[vdev->queue_sel].used[0]); proxy->vqs[vdev->queue_sel].enabled =3D 1; + proxy->vqs[vdev->queue_sel].reset =3D 0; } else { virtio_error(vdev, "wrong value for queue_enable %"PRIx64, val= ); } @@ -1360,6 +1364,16 @@ static void virtio_pci_common_write(void *opaque, hw= addr addr, case VIRTIO_PCI_COMMON_Q_USEDHI: proxy->vqs[vdev->queue_sel].used[1] =3D val; break; + case VIRTIO_PCI_COMMON_Q_RESET: + if (val =3D=3D 1) { + proxy->vqs[vdev->queue_sel].reset =3D 1; + + virtio_queue_reset(vdev, vdev->queue_sel); + + proxy->vqs[vdev->queue_sel].reset =3D 0; + proxy->vqs[vdev->queue_sel].enabled =3D 0; + } + break; default: break; } @@ -1954,6 +1968,7 @@ static void virtio_pci_reset(DeviceState *qdev) =20 for (i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { proxy->vqs[i].enabled =3D 0; + proxy->vqs[i].reset =3D 0; proxy->vqs[i].num =3D 0; proxy->vqs[i].desc[0] =3D proxy->vqs[i].desc[1] =3D 0; proxy->vqs[i].avail[0] =3D proxy->vqs[i].avail[1] =3D 0; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221351; cv=none; d=zohomail.com; s=zohoarc; b=RX/AZgFwBqUDLpNJmHOLIi3kGtjcGO8pdiJOTRWoYRhQ3zJ40tIuKrsv9IXxikA7uKU80BFUMA5On923kIQl2PscqiupefArBgpIIKbmKn/Q2UVPCiboLSJxSCSSI9nsOUTWdKg5UO3ZnP7dldubI153QU8qRePEF94jVkT5+hM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221351; h=Content-Type: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=6uK+4zsl0JYm6l7lOzD9Nix6fgmHw0181ZM3BtJtePE=; b=ZH43+CIvTQspP/nSb1zVAiGKSYdFWxWxnKxwv76dzBHcw7AHmR1tsh6GR4qtY3ZBWHrmxfSCGeoTufSKSPiavZYFzyLwAygxqpf362gRJZOdL6gNd/b1PZl2kWMCWR9tQm8ujxwn+SFUV4iPTMiajWOy8YSG5EQdT9zbStF148E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221351316329.94422248951173; Mon, 31 Oct 2022 06:02:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIC-0000sd-JI; Mon, 31 Oct 2022 08:53:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHb-0005p6-NB for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHa-0002r1-1L for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:51 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-504-p75mMMv7MLiQIjnCveRFjg-1; Mon, 31 Oct 2022 08:52:48 -0400 Received: by mail-wr1-f70.google.com with SMTP id e13-20020adf9bcd000000b00236b36cd8cbso1543202wrc.0 for ; Mon, 31 Oct 2022 05:52:48 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bd26-20020a05600c1f1a00b003c6b70a4d69sm7178766wmb.42.2022.10.31.05.52.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220769; 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: in-reply-to:in-reply-to:references:references; bh=6uK+4zsl0JYm6l7lOzD9Nix6fgmHw0181ZM3BtJtePE=; b=DHZY3qEEO/ATeIUDcqwa1KY1P4NuPHUIAmVzI+re1jTz42XptYRgA2fbTZRivJJsyFAAW8 LpipRhiFkIvEFJoPJCLj2uGMYprQ8gkX5FZHx60gAtSYzfQO1l5+rRSArX7OVE6CxRLVgq u1PgJuSo4CfE1wcOpanuQMm9Ovaq2yY= X-MC-Unique: p75mMMv7MLiQIjnCveRFjg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6uK+4zsl0JYm6l7lOzD9Nix6fgmHw0181ZM3BtJtePE=; b=xVJcnxX4PG94FmGczGwwNkR9263IQA/e/0QtJ+l+vga6u8W4ERn17KNB4gk6/XTdeu qOTbfMUFwmBj7FM/rp3rES9Lg1hct+wCE77dyK1f25JIH1l8xFd+bdFvR8yNKX5fCx7a iKsHFvb3fr5A9ioZN2zUiY4GJWuOrk8vLmCWAoLyV9Ip0RUepiIhj31o5dWBYPATt1Ro v+ZBsQfUG79QCPcumbdcL3JT4Q2aol4Du7Bp9jbzUQenRpgYWKYLLnsqNlW61YDZQ+tp 350Yk9kQ8CZtxOsZK7BuxRDHj7mH71Scp60S09Uid1UHstOseVm3JZmjzOiTdTuOOtLQ lRyg== X-Gm-Message-State: ACrzQf3kyjO92gOXe0DeW5YZkqTe7t6eYnimAUxWg1nIoet944iy3EOM V6a+LEUp4zgp8okzSh93+bAAJYoASOZPE9+/FqXSl3d+eggumSGtVgyhxhR3czvjbA8xwwBZOS1 BahJGz8awugUWqW313KkQ4IA/kP9Z6SCPD3jW/Gag17011fhfSousGvi02+pq X-Received: by 2002:adf:da43:0:b0:236:dcca:1950 with SMTP id r3-20020adfda43000000b00236dcca1950mr594762wrl.385.1667220766879; Mon, 31 Oct 2022 05:52:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM55xXHbD6gfrOClsAHXBiVPDw6cwvVyg3T4L4o1bNRT7QroHtkINhOnhlhXWO1teoOzeFkgLQ== X-Received: by 2002:adf:da43:0:b0:236:dcca:1950 with SMTP id r3-20020adfda43000000b00236dcca1950mr594744wrl.385.1667220766603; Mon, 31 Oct 2022 05:52:46 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:44 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 42/86] virtio-pci: support queue enable Message-ID: <20221031124928.128475-43-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221352839100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu PCI devices support device specific vq enable. Based on this function, the driver can re-enable the virtqueue after the virtqueue is reset. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-7-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/virtio-pci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index d4f2ffe986..855718d586 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1342,6 +1342,7 @@ static void virtio_pci_common_write(void *opaque, hwa= ddr addr, proxy->vqs[vdev->queue_sel].used[0]); proxy->vqs[vdev->queue_sel].enabled =3D 1; proxy->vqs[vdev->queue_sel].reset =3D 0; + virtio_queue_enable(vdev, vdev->queue_sel); } else { virtio_error(vdev, "wrong value for queue_enable %"PRIx64, val= ); } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221870; cv=none; d=zohomail.com; s=zohoarc; b=YyjBDr7yxgONEURu68UBm9u/C4Y0i2KW92Scq0G6HFKikeu4ezsaAepvN5g8IrA3sTeKIBEiFG/4E6G75PBz70MnOAEWhfxutUTUbVjOke6BMF3pv4viFE7euSt38shJ9lamEfdUMq33bCNmseZ0w2BzUF7IcO1w4QdUwZymkLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221870; h=Content-Type: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=uP43tqF7KIGeiEXLeAHNEumMXPufRETwc61xJpjS6BM=; b=V3NWkOBt51vaIgEVc/PC8CFImF/yEyoWV27pRuZJzQjnYTP4XdPs32bjABGpmQdacgPQAUaBxGYMwF3X1UMyIqlfqmnZLt+Dli1xllPINEACZUD2sobgJ+PKJvBAnP16cgzTlyEF0knJCZLmqMvDpOtgIQqp103bACSmnOj7mrM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221870418363.8703418420836; Mon, 31 Oct 2022 06:11:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUID-00012l-Oh; Mon, 31 Oct 2022 08:53:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHf-0006Hr-9w for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHd-0002rR-Jh for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:55 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-401-kDgeuFqLNO-Kk4mEJm7Xyg-1; Mon, 31 Oct 2022 08:52:50 -0400 Received: by mail-wm1-f69.google.com with SMTP id e8-20020a05600c218800b003cf634f5280so948741wme.8 for ; Mon, 31 Oct 2022 05:52:50 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bq9-20020a5d5a09000000b0022ae0965a8asm7272538wrb.24.2022.10.31.05.52.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220773; 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: in-reply-to:in-reply-to:references:references; bh=uP43tqF7KIGeiEXLeAHNEumMXPufRETwc61xJpjS6BM=; b=eV2HgcSPZCTj7iYDOs59u58vovNzeP6HVn4zG7pytcMzCSPhlRk9Z10t4bSWGUK5v9uv3I q8tTbLYjw8DQnx2ghDW+B6Q0v3S50AxJBF+aJrm5HZ6+w7z4nyVsZtGYUZ1/nEbxbdSysg bs9eWRllg4SKvhdtTuGp7SGLuzfyN2U= X-MC-Unique: kDgeuFqLNO-Kk4mEJm7Xyg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uP43tqF7KIGeiEXLeAHNEumMXPufRETwc61xJpjS6BM=; b=whpGKXoEKEmXJZzw4uIhrEUAB+FiFoJtBLxd9kUofGrFoizm0lVTcofxar2mFajwDt AkiDsFnfu2swC9ZBDcrFqhrGcwLhtbGF23jJwkGs+ysZlIN36f7TnEKEU7OyILEnktkP qVUI7Uf9UHIP7H6sOBWOcZhNH2l2cFx2WqCzE8QNFKiN3awk5MWB+5I41J7+evKqi4Yo NRKeocov/HEWV4enlRFlax9KhyKOl3Ssf3oSPbPlh5JYYOnztTWhrEJ4LU577jl82dlJ n7bVH4VtsB8CyeK3ZWjqSPvyGnf8ieIQ0/oq57izG99xqT42ULiIwhEnGy0Z4kNmXUBV ayxA== X-Gm-Message-State: ACrzQf0xBEuv4wsArZgbvxERc2Yp6WBrSmtwIefal1hp1U52K5HrovaL vssGoGDAugG0ByY1kXg1Pd+5amcENCdG/xY3zHkrani3edpJ/iOYgaSHWgqRxjfQW9HsdBrRiQk hXSBHY3+BTd8P9ObXQy0ADtSZnRmWLJ/k57kT7DnfOi0tlVFFyNLs7HEHnSbp X-Received: by 2002:a05:600c:4a89:b0:3cf:74ae:7481 with SMTP id b9-20020a05600c4a8900b003cf74ae7481mr1862542wmp.103.1667220769604; Mon, 31 Oct 2022 05:52:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4iHHpzWlzzC+voxwOusc2C6rH4rDeaoihiyxWPSbAJoq9ymtLyLjs96CwujxzWKeB0gpJB2A== X-Received: by 2002:a05:600c:4a89:b0:3cf:74ae:7481 with SMTP id b9-20020a05600c4a8900b003cf74ae7481mr1862526wmp.103.1667220769311; Mon, 31 Oct 2022 05:52:49 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 43/86] vhost: expose vhost_virtqueue_start() Message-ID: <20221031124928.128475-44-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221878320100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Expose vhost_virtqueue_start(), we need to use it when restarting a virtqueue. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-8-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/vhost.h | 3 +++ hw/virtio/vhost.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index d7eb557885..0054a695dc 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -297,6 +297,9 @@ int vhost_net_set_backend(struct vhost_dev *hdev, =20 int vhost_device_iotlb_miss(struct vhost_dev *dev, uint64_t iova, int writ= e); =20 +int vhost_virtqueue_start(struct vhost_dev *dev, struct VirtIODevice *vdev, + struct vhost_virtqueue *vq, unsigned idx); + void vhost_dev_reset_inflight(struct vhost_inflight *inflight); void vhost_dev_free_inflight(struct vhost_inflight *inflight); void vhost_dev_save_inflight(struct vhost_inflight *inflight, QEMUFile *f); diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 5185c15295..788d0a0679 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1081,10 +1081,10 @@ out: return ret; } =20 -static int vhost_virtqueue_start(struct vhost_dev *dev, - struct VirtIODevice *vdev, - struct vhost_virtqueue *vq, - unsigned idx) +int vhost_virtqueue_start(struct vhost_dev *dev, + struct VirtIODevice *vdev, + struct vhost_virtqueue *vq, + unsigned idx) { BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusState *vbus =3D VIRTIO_BUS(qbus); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221820; cv=none; d=zohomail.com; s=zohoarc; b=lKVsezfkimd03yUa19grH0DMMzWoppQsvC8qIRg4ldtOQl2y7BeQ9eT8KZrZ0fOIHoJC+NfM4oT4iMnUs1Ci7R5oyHNV/li0Pm41LKfu1cM8mIMvHIfXxOcUifhW5EbHcuad4Uv+4gUQaEj2v/yGGeD8gBT81TyJ3oc1tDox54w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221820; h=Content-Type: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=iblFjKpaXIHtiQIUGFA8gXnv2AWbCgLXsgXlMDiv4m8=; b=HXO/ywT+YQBjaxZWFmGyQZumBDHiqUONSyiRp615zE0FxeDxxjum53k1X+Mquivqv0W8pgIqy/lKcGlTFqaMYGj0h5fDi6Q5AJDFvXfUSUnaeQisNnPRBR+gDInr0GKWxy+H2/5lDXW2DfoAIewsqhNYzzNUJ8MaAROkj+hbXUk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221820206157.32806516183462; Mon, 31 Oct 2022 06:10:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIF-0001Fd-FJ; Mon, 31 Oct 2022 08:53:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHi-0006g2-9R for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHf-0002rZ-I9 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:57 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-139-1HgQNEsWPHuKsSwCe0i4ZQ-1; Mon, 31 Oct 2022 08:52:53 -0400 Received: by mail-wr1-f71.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so3018536wra.15 for ; Mon, 31 Oct 2022 05:52:53 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id e7-20020adff347000000b00226dba960b4sm7159169wrp.3.2022.10.31.05.52.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220774; 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: in-reply-to:in-reply-to:references:references; bh=iblFjKpaXIHtiQIUGFA8gXnv2AWbCgLXsgXlMDiv4m8=; b=LcszuwQqZi8+6dgeX8CaW9AtEAQB+RRpdl5j6pF8ie7qBuIqlnEGyAWo8kWpiR69NhCC7y t3rOzvErhn/o3fO0i3Ukisb+HLCctzDIe8zMXlpOoGN7RuUi+kTdFUDn08GiQJrkoyrWVo psn8gfscrlVkHf3iVwjY+Uk2g96Xb74= X-MC-Unique: 1HgQNEsWPHuKsSwCe0i4ZQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=iblFjKpaXIHtiQIUGFA8gXnv2AWbCgLXsgXlMDiv4m8=; b=1O9DWZtGPgsNwMD1GkG5b/eTBY9/2l5cdjyvUCnNq/fcUvHuec74hxlqirHTWojFBq VrnQzaTU0ooVXO/hDyLcdYzM1bbDsKx/00xsOIDaMZwOBzMrT15tAshSxMPpQic6jAht zar+AT+MoV3XDJpRmjJ6JJ+jIP1JmANha3zodq4NfzAsq0YOUTV7YA/KW3wg33Xb2ijT 4iJ9hZEpiNlqT4HEW1PeQKQ0hKGeVwxqtF+d/9tyCTabZlnGp/KnhAt9du261OWL7zhM FDEruEfSCjOCZ9rrCQXRQKnec92wJNf7Vimx4VLnOjsZRU8gNwp5Xv4c6LFYeJ8Hzb5h SS6w== X-Gm-Message-State: ACrzQf1eC+YNFaPLyIQCu61jGS2z2ikJr5RhXTJOme9umgI5PD32rFG+ rEiKggIT+G50bi2PqJHSpoRZFndl7lHe/z6MKZ3a7PzNTjCCt+0rwbm/6n7s4gaLNVkgU1eu9dQ MZS12UI48vCDy6IEBsjmbyviX64vt7yAuvdyJ/wiT13RfEfn0twpwY788Hpsi X-Received: by 2002:a05:600c:3d92:b0:3cf:3921:d8ad with SMTP id bi18-20020a05600c3d9200b003cf3921d8admr17981746wmb.15.1667220772185; Mon, 31 Oct 2022 05:52:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5SgvojumbezKCjeVBL5yLvzxgQ70STrBZx55K5YAaOTMFZ/fU3Sikg8NoqkNsGQUpwm5v2hw== X-Received: by 2002:a05:600c:3d92:b0:3cf:3921:d8ad with SMTP id bi18-20020a05600c3d9200b003cf3921d8admr17981730wmb.15.1667220771931; Mon, 31 Oct 2022 05:52:51 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 44/86] vhost: expose vhost_virtqueue_stop() Message-ID: <20221031124928.128475-45-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221822458100007 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Expose vhost_virtqueue_stop(), we need to use it when resetting a virtqueue. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-9-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/vhost.h | 2 ++ hw/virtio/vhost.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 0054a695dc..353252ac3e 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -299,6 +299,8 @@ int vhost_device_iotlb_miss(struct vhost_dev *dev, uint= 64_t iova, int write); =20 int vhost_virtqueue_start(struct vhost_dev *dev, struct VirtIODevice *vdev, struct vhost_virtqueue *vq, unsigned idx); +void vhost_virtqueue_stop(struct vhost_dev *dev, struct VirtIODevice *vdev, + struct vhost_virtqueue *vq, unsigned idx); =20 void vhost_dev_reset_inflight(struct vhost_inflight *inflight); void vhost_dev_free_inflight(struct vhost_inflight *inflight); diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 788d0a0679..d1c4c20b8c 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1201,10 +1201,10 @@ fail_alloc_desc: return r; } =20 -static void vhost_virtqueue_stop(struct vhost_dev *dev, - struct VirtIODevice *vdev, - struct vhost_virtqueue *vq, - unsigned idx) +void vhost_virtqueue_stop(struct vhost_dev *dev, + struct VirtIODevice *vdev, + struct vhost_virtqueue *vq, + unsigned idx) { int vhost_vq_index =3D dev->vhost_ops->vhost_get_vq_index(dev, idx); struct vhost_vring_state state =3D { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220823; cv=none; d=zohomail.com; s=zohoarc; b=jZSABIoU0Yyq72aGyNxFIsAPxTRF3Y7h5Q5WouYI0quic2uzCXAKCNne6O4nZLW1K6tiuxlqoFdeTTnGd47ux2fOGdebEKT4dAp+AVQSIVwEoYLIdCCFwep+DXP9gqm0t1pcU8ElNnlL2bO/0JIgPy5JUELfgWQVUqzfJn6L+6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220823; h=Content-Type: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=0jLIU51m573FAYqL6NsmM3zyshjEfoeP0nbK9i/2ZQM=; b=l+mtASG165NNOzm9ygHQgn2hKaeyTB5kwgqiL7ac+ORqESiAQQU7Rk5s3dvoS/hSXgWRwPpS2zzu+2gPLn13S2F1H8sja0jhgGpy338b6vjEN+urBrzNJhs5wPPT1zyzd/Kpyfe0sOxNZARxLjDbPcU32tOrDYfI1TCkJbKJQfg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220823498525.871192622349; Mon, 31 Oct 2022 05:53:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIG-0001Qr-Oj; Mon, 31 Oct 2022 08:53:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHj-0006rS-Vn for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHi-0002rp-6E for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:52:59 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-397-IBpT5JzTOXWQmqgRKLbLWg-1; Mon, 31 Oct 2022 08:52:56 -0400 Received: by mail-wm1-f70.google.com with SMTP id 1-20020a05600c028100b003cf7833293cso265628wmk.3 for ; Mon, 31 Oct 2022 05:52:55 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k2-20020a5d6282000000b00236cb3fec8fsm4033095wru.9.2022.10.31.05.52.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220777; 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: in-reply-to:in-reply-to:references:references; bh=0jLIU51m573FAYqL6NsmM3zyshjEfoeP0nbK9i/2ZQM=; b=c5E8DFvsCkXRHxPKdAXqlx5Fe/MWuLxNQJsl09M6BcV+b9JDxLL8mbp+He3u4oB9/aqsZ/ O9pR2Q9nqoDuo1MfpZ3w3ZNLni6yJUJZdxE7YbaYnXJDbDsz01WDDCJf6ibJNxwSD6Sf3F iEA6dqHDjgNnRlPm9DLRk4GpygihNDs= X-MC-Unique: IBpT5JzTOXWQmqgRKLbLWg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0jLIU51m573FAYqL6NsmM3zyshjEfoeP0nbK9i/2ZQM=; b=z17NL5JT46dSrWC4EDg6zrafmfDE/QYa3CmiYz8091cOMDkQlHvP8fD+/05IXYgcn8 RGE91OD0Eunf5uU9n1He3tqIDCt/JPRuZR7tW/5jxz/ODNKviQtkpQpWpByFz/SipzN8 2fMpADOD32u1aQh3xUEQxd2XpACkZWzenuHrZEtClHZ08Q/x8cE5iaxTPtcVXxuL8yAx 2UrzYwCXGpjV3J9GJ+5t5UkzLQQYfhGfl2wMozU1pPuxDSSsJFjQ5SlBnlbVt+v48Ryr NeB3zx9ZO8QQIIUuClhdv7HTD0JUJS+N3lYM/uL+xi3K9w9x+sn83w24osqo2DqDAzoo do0g== X-Gm-Message-State: ACrzQf2SH2heUIux8r4QFs2mYDel5i8eIEJ/h2VWdzutma3P6mh44jJ3 wwmhYPjou1LIFQuAlb2hOWAgBIkbgvphVKnowqyKR3GWsHW53YJXFoXySZIPxdf3k0PeONM/BQX xtCSgeOkUloU5t2f9HvdaN524KckpFmEs+7/7582eLs29bBuEZIQ1VrdZHGO4 X-Received: by 2002:a05:600c:1d8e:b0:3cf:6fd4:c802 with SMTP id p14-20020a05600c1d8e00b003cf6fd4c802mr3755399wms.96.1667220774761; Mon, 31 Oct 2022 05:52:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5H2gjXZJuXRfzplNty24D2Bh7fQZXzgViYCqlnIDeyFj11sDglH8jyeYRIIZ+I2nhbslDW0Q== X-Received: by 2002:a05:600c:1d8e:b0:3cf:6fd4:c802 with SMTP id p14-20020a05600c1d8e00b003cf6fd4c802mr3755382wms.96.1667220774378; Mon, 31 Oct 2022 05:52:54 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 45/86] vhost-net: vhost-kernel: introduce vhost_net_virtqueue_reset() Message-ID: <20221031124928.128475-46-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220824485100012 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Introduce vhost_virtqueue_reset(), which can reset the specific virtqueue in the device. Then it will unmap vrings and the desc of the virtqueue. Here we do not reuse the vhost_net_stop_one() or vhost_dev_stop(), because they work at queue pair level. We do not use vhost_virtqueue_stop() because it may stop the device in the backend. This patch only considers the case of vhost-kernel, when NetClientDriver is NET_CLIENT_DRIVER_TAP. Furthermore, we do not need net->nc->info->poll() because it enables userspace datapath and we want to stop all datapaths for this reset virtqueue here. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-10-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/net/vhost_net.h | 2 ++ hw/net/vhost_net-stub.c | 6 ++++++ hw/net/vhost_net.c | 25 +++++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/include/net/vhost_net.h b/include/net/vhost_net.h index 387e913e4e..85d85a4957 100644 --- a/include/net/vhost_net.h +++ b/include/net/vhost_net.h @@ -48,4 +48,6 @@ uint64_t vhost_net_get_acked_features(VHostNetState *net); =20 int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu); =20 +void vhost_net_virtqueue_reset(VirtIODevice *vdev, NetClientState *nc, + int vq_index); #endif diff --git a/hw/net/vhost_net-stub.c b/hw/net/vhost_net-stub.c index 89d71cfb8e..2d745e359c 100644 --- a/hw/net/vhost_net-stub.c +++ b/hw/net/vhost_net-stub.c @@ -101,3 +101,9 @@ int vhost_net_set_mtu(struct vhost_net *net, uint16_t m= tu) { return 0; } + +void vhost_net_virtqueue_reset(VirtIODevice *vdev, NetClientState *nc, + int vq_index) +{ + +} diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index d6924f5e57..519dced899 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -531,3 +531,28 @@ int vhost_net_set_mtu(struct vhost_net *net, uint16_t = mtu) =20 return vhost_ops->vhost_net_set_mtu(&net->dev, mtu); } + +void vhost_net_virtqueue_reset(VirtIODevice *vdev, NetClientState *nc, + int vq_index) +{ + VHostNetState *net =3D get_vhost_net(nc->peer); + const VhostOps *vhost_ops =3D net->dev.vhost_ops; + struct vhost_vring_file file =3D { .fd =3D -1 }; + int idx; + + /* should only be called after backend is connected */ + assert(vhost_ops); + + idx =3D vhost_ops->vhost_get_vq_index(&net->dev, vq_index); + + if (net->nc->info->type =3D=3D NET_CLIENT_DRIVER_TAP) { + file.index =3D idx; + int r =3D vhost_net_set_backend(&net->dev, &file); + assert(r >=3D 0); + } + + vhost_virtqueue_stop(&net->dev, + vdev, + net->dev.vqs + idx, + net->dev.vq_index + idx); +} --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221969; cv=none; d=zohomail.com; s=zohoarc; b=BzI1LShsTYezSEAsH06JGUx1zn1SFTWLMHe4WHkwSDh44ZBq4nDn5p5RqZ+Hu7x2oE8Z5GI06vf4LpgUIayf6CeIjAcBnRDg4MdQgRZuqKRSUg6K7CniPgAAKPfCm0cb0cU4snd5f7B1KcZV3UZ/WMe+UM/Vn1P5apJsMj2j0TY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221969; h=Content-Type: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=k3h2/R6ixFTO5bNpkZpGb1wFDhh1s402BZASy50X1Mk=; b=ZpxRzPgxQL+06XaqiMcwH9k+57zjfgZl0a7Ge3YMCkL91qVzESL5MldwEbO6UUXdJUVOtFxUmFtTrk2Ps85OBiL3QwW85jZ7Axe64kpRwb7mfTaLuruoYyFQrc0CVA+OihtsxQ5I5jO05zKmHds02hEd8aTOpwYw0Y1H89sqRqQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221969832199.74214133779253; Mon, 31 Oct 2022 06:12:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUII-0001by-3A; Mon, 31 Oct 2022 08:53:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHm-00079C-Lw for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHk-0002tJ-SP for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:02 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-495-DrwydJs7NKaV0WrIm74f7A-1; Mon, 31 Oct 2022 08:52:58 -0400 Received: by mail-wr1-f72.google.com with SMTP id n13-20020adf8b0d000000b0023658a75751so3041165wra.23 for ; Mon, 31 Oct 2022 05:52:58 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id q7-20020a1ce907000000b003c701c12a17sm7140371wmc.12.2022.10.31.05.52.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220780; 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: in-reply-to:in-reply-to:references:references; bh=k3h2/R6ixFTO5bNpkZpGb1wFDhh1s402BZASy50X1Mk=; b=ZKAeVrySW3UjYg1dow9h+fJr31hSY1X44qCnoNAcJjUEKdiNRV9LrgAcibBUvDb+ye7m9f 9jnM1dXEvaDrSUlnwms/fBpnPWFVroklm4A6DIAiz2IvirlmOa9PzOh4zDArBUNiYZ8HwP wTkNSMZKiDpxomXFsZvREs17gSAZskE= X-MC-Unique: DrwydJs7NKaV0WrIm74f7A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=k3h2/R6ixFTO5bNpkZpGb1wFDhh1s402BZASy50X1Mk=; b=UR65zEbubzo2ujJoqzB7TEJ7nOCows57IiRTUPs7XZ5TVRDO7SnoUfxMvTpdCrx/jp YA7LtRgX+UKZrwnxgGJ8DnAUaW3ljK8xmvgKfYtfbeANpXAJ94Vvq9jfXYvjpAmyVaqa xeB5XaDSg2n+sKdA+MBapiqjWKkxk1ohjlpvPwQNi/069Z14iPT5fvMPX7MEnZ35US3u 998Hi7OB5BPJHi9WaNaC92tk2k8ehsJ5Txduzj5xcPdIsFaTPbA/SsEPe+Xj+P1aFXH9 BtsYxhs1qw9M9+FhBGHr0JKwaLGNPBbnQGPnOzjO5lqkVFdlxWn6WCpjZyk67hpzmaQd qwOA== X-Gm-Message-State: ACrzQf025qHA/JUfcG7inJj/fWeU53fIO6aSw1ToOoVp10YOUDmvZZmO iUZiRt/EkKGQuOVrc58bqHhmJ4qNWyNuhYN5w9tf/+jddalu7xfCXXY7FB7u6dWJ0GROrshZKxY 1Z2/gpqJk1YY67Ju4gNJCLdprUkKNCL2r9X3RWazW91uzIPW1PAPX9ONb3wXL X-Received: by 2002:a05:600c:3d9a:b0:3cf:4969:850f with SMTP id bi26-20020a05600c3d9a00b003cf4969850fmr7962440wmb.130.1667220777302; Mon, 31 Oct 2022 05:52:57 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5cgS4WJKyOP0yu14rt8kS0/sLFl7epiXI43c/StlnCD/MYJdGE2KopPNAIs/NVKzL+jXQbZQ== X-Received: by 2002:a05:600c:3d9a:b0:3cf:4969:850f with SMTP id bi26-20020a05600c3d9a00b003cf4969850fmr7962419wmb.130.1667220777038; Mon, 31 Oct 2022 05:52:57 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:54 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 46/86] vhost-net: vhost-kernel: introduce vhost_net_virtqueue_restart() Message-ID: <20221031124928.128475-47-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221972089100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Introduce vhost_net_virtqueue_restart(), which can restart the specific virtqueue when the vhost net started running before. If it fails to restart the virtqueue, the device will be stopped. Here we do not reuse vhost_net_start_one() or vhost_dev_start() because they work at queue pair level. The mem table and features do not change, so we can call the vhost_virtqueue_start() to restart a specific queue. This patch only considers the case of vhost-kernel, when NetClientDriver is NET_CLIENT_DRIVER_TAP. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-11-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/net/vhost_net.h | 2 ++ hw/net/vhost_net-stub.c | 6 +++++ hw/net/vhost_net.c | 53 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/include/net/vhost_net.h b/include/net/vhost_net.h index 85d85a4957..40b9a40074 100644 --- a/include/net/vhost_net.h +++ b/include/net/vhost_net.h @@ -50,4 +50,6 @@ int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu= ); =20 void vhost_net_virtqueue_reset(VirtIODevice *vdev, NetClientState *nc, int vq_index); +int vhost_net_virtqueue_restart(VirtIODevice *vdev, NetClientState *nc, + int vq_index); #endif diff --git a/hw/net/vhost_net-stub.c b/hw/net/vhost_net-stub.c index 2d745e359c..9f7daae99c 100644 --- a/hw/net/vhost_net-stub.c +++ b/hw/net/vhost_net-stub.c @@ -107,3 +107,9 @@ void vhost_net_virtqueue_reset(VirtIODevice *vdev, NetC= lientState *nc, { =20 } + +int vhost_net_virtqueue_restart(VirtIODevice *vdev, NetClientState *nc, + int vq_index) +{ + return 0; +} diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index 519dced899..f2ada02781 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -34,6 +34,7 @@ #include "standard-headers/linux/virtio_ring.h" #include "hw/virtio/vhost.h" #include "hw/virtio/virtio-bus.h" +#include "linux-headers/linux/vhost.h" =20 =20 /* Features supported by host kernel. */ @@ -556,3 +557,55 @@ void vhost_net_virtqueue_reset(VirtIODevice *vdev, Net= ClientState *nc, net->dev.vqs + idx, net->dev.vq_index + idx); } + +int vhost_net_virtqueue_restart(VirtIODevice *vdev, NetClientState *nc, + int vq_index) +{ + VHostNetState *net =3D get_vhost_net(nc->peer); + const VhostOps *vhost_ops =3D net->dev.vhost_ops; + struct vhost_vring_file file =3D { }; + int idx, r; + + if (!net->dev.started) { + return -EBUSY; + } + + /* should only be called after backend is connected */ + assert(vhost_ops); + + idx =3D vhost_ops->vhost_get_vq_index(&net->dev, vq_index); + + r =3D vhost_virtqueue_start(&net->dev, + vdev, + net->dev.vqs + idx, + net->dev.vq_index + idx); + if (r < 0) { + goto err_start; + } + + if (net->nc->info->type =3D=3D NET_CLIENT_DRIVER_TAP) { + file.index =3D idx; + file.fd =3D net->backend; + r =3D vhost_net_set_backend(&net->dev, &file); + if (r < 0) { + r =3D -errno; + goto err_start; + } + } + + return 0; + +err_start: + error_report("Error when restarting the queue."); + + if (net->nc->info->type =3D=3D NET_CLIENT_DRIVER_TAP) { + file.fd =3D VHOST_FILE_UNBIND; + file.index =3D idx; + int r =3D vhost_net_set_backend(&net->dev, &file); + assert(r >=3D 0); + } + + vhost_dev_stop(&net->dev, vdev); + + return r; +} --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221771; cv=none; d=zohomail.com; s=zohoarc; b=nrFICMfBXkk/kWkKlxtch/BlC5EHdELaxyH+ct6VLo+2svkF9+6h7EBiceYpsQnZzYE1opjyAcsgCLc/UfmABgFvi9yuJIDqqtAGVWg+oNAWnvnecnF063hO+Z04RpfPliBT4zK9zDVyPAw+uAi96pszjHWCK6ATDGYO2uBFha4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221771; h=Content-Type: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=9TiK/twTV1XSaiRhUn6axecxwXVlXGBefrK4mR0z22I=; b=WU79kw5I4K+/BpvQms4sJfGYazM89Hf1TkFkddXLhljSPPO4IiMv5B5RfMJv3ir7ruTQvzr5+rf7w7Bo/rcvUH6sNC5pe0VRLFnidgZqArXDU5Z3MfiYdh7rs21Nqyzv4AiNq1Q9v3tLnkJz7LBGApoKBmRcwqICJKmxstjevcM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221771897476.3656649254161; Mon, 31 Oct 2022 06:09:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIK-0001wE-KT; Mon, 31 Oct 2022 08:53:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHv-0007gQ-1f for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHn-0002td-4v for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:07 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-149-Q6Gp2xB9MMyn-rGwU8fY-w-1; Mon, 31 Oct 2022 08:53:01 -0400 Received: by mail-wr1-f71.google.com with SMTP id p7-20020adfba87000000b0022cc6f805b1so3047353wrg.21 for ; Mon, 31 Oct 2022 05:53:01 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id f16-20020a05600c4e9000b003cf568a736csm5260213wmq.20.2022.10.31.05.52.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:52:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220782; 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: in-reply-to:in-reply-to:references:references; bh=9TiK/twTV1XSaiRhUn6axecxwXVlXGBefrK4mR0z22I=; b=OxIqi5inb3x7P47I1D+ufRhWJQAl69NQSB0I1tmONErMT5zSqfG525NqkNjgTI3bK8bPG0 tIeDa4lgUFIhbFrXv1ohmBW3Xd73Sc1iTN/YK4+wM5Z4mmAn6aYaN5TP58oSbe9BdCxCOP gskB24AAf5fXZaZf8WmyD71uQYFUXRM= X-MC-Unique: Q6Gp2xB9MMyn-rGwU8fY-w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9TiK/twTV1XSaiRhUn6axecxwXVlXGBefrK4mR0z22I=; b=trDN59INXNMofY9mayflOQds963tzxkg6Ev2Nk+CL+OPoMl6VTharOm7d35Cz3+Q04 VbDRpTf58k+1OUTGFpewBFhqt325+jMeOGuE8lyJZ4tHukJa+PWt58n23iOlIMemG5KY DmjBkheyGqqKwMo4pyFQRpspY8sLGTMQrDlf2GTjPiRzFxGo5MebW3CECz1T5i3QddSD kiw2WhV65zPFKb1YP4MLNmGVKfrrFRoc1Dih3TkyQdBjbV1Cg1fOmtYzKUaIz5EnP64X RsF/JU3LVvGOr74J2/f7zhr8pJKnfWb81HdRRo4rkq8U2hxG+SSesTf6b4A0CVLPPuH6 iH3Q== X-Gm-Message-State: ACrzQf3ZxG/WPEc+sCMZu9kFiP7ptDHD+mM/gCUPbOlq8I1lFuQaWlQx 8pKNIUaw6mXLglXlqQaJ/jPLKfLCcjzg6iHQVCAtyfCXIv7sbbcsROx/K7M11Ed6kwnGKBVGvDt uQuI/lYvncOgdTChJ4hkvWibvQN0+DAod1Sg2dS25079nx4qdp1fpk/HyunOX X-Received: by 2002:a05:6000:1201:b0:236:61f4:b384 with SMTP id e1-20020a056000120100b0023661f4b384mr7683181wrx.505.1667220779830; Mon, 31 Oct 2022 05:52:59 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5zXpAml/I/7P0RPT82NEWHTYPdW5F9l5Xp05x+KsBGiGBQJEvekAmCpUkwkCf83hx3PHSnaw== X-Received: by 2002:a05:6000:1201:b0:236:61f4:b384 with SMTP id e1-20020a056000120100b0023661f4b384mr7683157wrx.505.1667220779510; Mon, 31 Oct 2022 05:52:59 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:57 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 47/86] virtio-net: introduce flush_or_purge_queued_packets() Message-ID: <20221031124928.128475-48-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221774119100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Introduce the fucntion flush_or_purge_queued_packets(), it will be used in device reset and virtqueue reset. Therefore, we extract the common logic as a new function. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-12-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/net/virtio-net.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index e9f696b4cf..4ace57fa6d 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -124,6 +124,16 @@ static int vq2q(int queue_index) return queue_index / 2; } =20 +static void flush_or_purge_queued_packets(NetClientState *nc) +{ + if (!nc->peer) { + return; + } + + qemu_flush_or_purge_queued_packets(nc->peer, true); + assert(!virtio_net_get_subqueue(nc)->async_tx.elem); +} + /* TODO * - we could suppress RX interrupt if we were so inclined. */ @@ -566,12 +576,7 @@ static void virtio_net_reset(VirtIODevice *vdev) =20 /* Flush any async TX */ for (i =3D 0; i < n->max_queue_pairs; i++) { - NetClientState *nc =3D qemu_get_subqueue(n->nic, i); - - if (nc->peer) { - qemu_flush_or_purge_queued_packets(nc->peer, true); - assert(!virtio_net_get_subqueue(nc)->async_tx.elem); - } + flush_or_purge_queued_packets(qemu_get_subqueue(n->nic, i)); } } =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221348; cv=none; d=zohomail.com; s=zohoarc; b=gTwEQSecZgu90fxKRl4qNGZHgXmMDo4qxHxn6hHBR3cKASg3TdqpvWEGNAMVKgeLyu81oRjDGfI2eWrrkwPXYM58yKEPl5EHIZcpgOVDbyXM5QCsYpNXHAIsIDINX5u36mPGguASd1+4p5AWlk9COvdWM6qOTb/rYFh5/b6+U1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221348; h=Content-Type: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=2PhZALlrS13rn5DqF+oM3pCaaJ+NJj7260VLdmczprM=; b=OjWNpAxb2Qz8Yq2H+BwrDp50kQgcMIJMGFvit5BerXANJ94gZsjAab6NnqNVrR1bVbVQNt5RFPdZ4Ggb0gUmeyJsjSTX7CkILo0BcdGI42gZ4k7CNh4R2TaYyRIkg0AXGlfo+3sw3AovYgAndnOJSMZDAAMmKrw4PzFUgkDQbqs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221348053435.5458957425641; Mon, 31 Oct 2022 06:02:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIN-0002G2-Rv; Mon, 31 Oct 2022 08:53:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHz-00082q-Fe for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHv-0002w7-NP for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-647-CAUI0XZLN6-7Wx9OQMSuDw-1; Mon, 31 Oct 2022 08:53:04 -0400 Received: by mail-wr1-f72.google.com with SMTP id i14-20020adfa50e000000b0023652707418so3033524wrb.20 for ; Mon, 31 Oct 2022 05:53:04 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id m21-20020a05600c3b1500b003c6edc05159sm7451858wms.1.2022.10.31.05.53.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220788; 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: in-reply-to:in-reply-to:references:references; bh=2PhZALlrS13rn5DqF+oM3pCaaJ+NJj7260VLdmczprM=; b=elixSyQhflHzwaFICMO3EzLh9BvltxfXqU3NE6Xy9Fanni7UBDGgigZ5QAfOtRvkcJcmcR MDVCVMVSA9h0Di+vFwKzCpQXoA8hi77ffV4QEQWm0xzVvSoz6dfEMt9DDjBOPSsTEr4odo OxvTYgCxqugA1A0Fn3G39oRdmi4MWxE= X-MC-Unique: CAUI0XZLN6-7Wx9OQMSuDw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2PhZALlrS13rn5DqF+oM3pCaaJ+NJj7260VLdmczprM=; b=YKjWRyL4bsvJPf5UCI4ylDES9vW7agPLGi+xcKeRJpcjSJ6SUokCda1sLXyfoTHhM8 kvIZiNwiBgXlgqsPPzL/TQIhx5mdtTh7oROcyf6p1olcxuBBPrMFqr5jOHD55gqrxm2Q p0AFmthNTKPQIEMHv5FXZBkMNVDM49XbWI00QWkjrNScyIXDT5YP9vLi5jv9fca2dWjl iCZHLpwItCQTVvwFi/SRNtSZ3H+Gf12L4hMeY75T21GeZkMcxfXy+hdkS3LK24dkfTo3 oT8rypDf+eTgC3jkk0/3vzYp/U4d4Iwu/t5Pjc43qaSm3S0dAiglnB45jJT+3/8vJmN9 r94g== X-Gm-Message-State: ACrzQf2ZsJWT+PtcKzIuV7nlMY6675VQQk2Zy4kWhTTRtzq1LCEZx3sy tEb/zNWJO25yVaXtQ/tbMBxoesfdU3bLu16J0Vd3hZx4d3x/OQyktyhjCpH98mh9KqGIkmUkwbN goh5UB4as1AqYKlNTW+f0xmFVierzIuIVhKSdQHn/Isf8bW+I0iiLMlDxbX9R X-Received: by 2002:a05:600c:600e:b0:3c6:fc59:5eda with SMTP id az14-20020a05600c600e00b003c6fc595edamr8104977wmb.30.1667220783145; Mon, 31 Oct 2022 05:53:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5FbEJujV8S5ciy9LtmV/ArJ5Rvw4EfAYEYWwCg5Qaingf/lztDvDAIEWUkzXj/pE6+C60f7w== X-Received: by 2002:a05:600c:600e:b0:3c6:fc59:5eda with SMTP id az14-20020a05600c600e00b003c6fc595edamr8104949wmb.30.1667220782815; Mon, 31 Oct 2022 05:53:02 -0700 (PDT) Date: Mon, 31 Oct 2022 08:52:59 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xuan Zhuo , Kangjie Xu , Jason Wang Subject: [PULL 48/86] virtio-net: support queue reset Message-ID: <20221031124928.128475-49-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221349001100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xuan Zhuo virtio-net and vhost-kernel implement queue reset. Queued packets in the corresponding queue pair are flushed or purged. For virtio-net, userspace datapath will be disabled later in __virtio_queue_reset(). It will set addr of vring to 0 and idx to 0. Thus, virtio_net_receive() and virtio_net_flush_tx() will not receive or send packets. For vhost-net, the datapath will be disabled in vhost_net_virtqueue_reset(). Signed-off-by: Xuan Zhuo Signed-off-by: Kangjie Xu Acked-by: Jason Wang Message-Id: <20221017092558.111082-13-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/net/virtio-net.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 4ace57fa6d..8feeb032b4 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -546,6 +546,23 @@ static RxFilterInfo *virtio_net_query_rxfilter(NetClie= ntState *nc) return info; } =20 +static void virtio_net_queue_reset(VirtIODevice *vdev, uint32_t queue_inde= x) +{ + VirtIONet *n =3D VIRTIO_NET(vdev); + NetClientState *nc =3D qemu_get_subqueue(n->nic, vq2q(queue_index)); + + if (!nc->peer) { + return; + } + + if (get_vhost_net(nc->peer) && + nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_TAP) { + vhost_net_virtqueue_reset(vdev, nc, queue_index); + } + + flush_or_purge_queued_packets(nc); +} + static void virtio_net_reset(VirtIODevice *vdev) { VirtIONet *n =3D VIRTIO_NET(vdev); @@ -3784,6 +3801,7 @@ static void virtio_net_class_init(ObjectClass *klass,= void *data) vdc->set_features =3D virtio_net_set_features; vdc->bad_features =3D virtio_net_bad_features; vdc->reset =3D virtio_net_reset; + vdc->queue_reset =3D virtio_net_queue_reset; vdc->set_status =3D virtio_net_set_status; vdc->guest_notifier_mask =3D virtio_net_guest_notifier_mask; vdc->guest_notifier_pending =3D virtio_net_guest_notifier_pending; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221245; cv=none; d=zohomail.com; s=zohoarc; b=H0xWmuARyosb6HTVbUFE1jdui6JSIOQsVCM382ryAP3vS92dXXLluaz3jGF8SW9QU+jCZuYVbWXZktgf5V1GVJ5dANMSLiqaNppf615xaI5lF3c8Ze521UsmvTnwwgTVE8vDu+49jmXIusCruf63twwvi7ybUU+/Nf+5TJByjo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221245; h=Content-Type: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=LUuRpk4BtsBnPaMPiISdRXaG1NGaSn/p3XCoIVXT8Co=; b=T2fIqTaV9Lbj0I7HW+6hpMx7ESa4avCQZJIXOp9lrUyjumPh8a33269m1I7lhr3ACOKU9HbCKvJo6A+vjZIxSvNg0JY5EkDKHjdLfe8v7G1XPauqd9nOE08W9AuUM6M4KF2d/g/bEV78/BO4uGr/olX6SCmdJPK1hJGRy0xgxz4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221245713350.98203061656113; Mon, 31 Oct 2022 06:00:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIM-000245-JM; Mon, 31 Oct 2022 08:53:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHy-0007xe-CS for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHv-0002wF-OR for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:14 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-256-MlNy66xOP2CRDTjqmXxZ3A-1; Mon, 31 Oct 2022 08:53:07 -0400 Received: by mail-wr1-f71.google.com with SMTP id e13-20020adf9bcd000000b00236b36cd8cbso1543440wrc.0 for ; Mon, 31 Oct 2022 05:53:06 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bu15-20020a056000078f00b0022ac1be009esm4735807wrb.16.2022.10.31.05.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220788; 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: in-reply-to:in-reply-to:references:references; bh=LUuRpk4BtsBnPaMPiISdRXaG1NGaSn/p3XCoIVXT8Co=; b=VeHUaHn8BAFYkMLSPu+iF0aj3TeAG32W3Kq0ZuLkcszBO+bvGS2iu/52RVtSk1xZ0EDdwX 0n24Jjkp7uaKbhkSCRQrFWZYVqUeNjdCq7XLJAGDZI1s4rXBXZXhy+jlPn/U6ZRSiPh5BW CWVatmiN2LaywvtbaKGPJNiRNL6+ZQc= X-MC-Unique: MlNy66xOP2CRDTjqmXxZ3A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LUuRpk4BtsBnPaMPiISdRXaG1NGaSn/p3XCoIVXT8Co=; b=lMo1ssZfzHo5CPS5fvv2DLmbGrKwS0+RowBpRM4iVXdfstFpZpVURY71/rrdFHiqR+ 7TSEHi61O93LxEJjPV57udps2UpoXm771SHbNrfJXFqlOoMvLN96Z7WqiqcmHRVPfaLh 7M/sdIZPRRk4/SCXdxwtnUkbmlKEA29EO10qzpG9/DTMuW/pq+OeQgiEEFmTjAzkFglK HsQPSnPSIzNvtb9bqWd2OuakZCSC41yqjqL6hhXsC8b6V5dxKr5BACuaw/M/lrCzKEqi Rkd2OZoxrMjCeMtW0UVfPOVd/iPr2UzLSC+NoKwurgqE7kLMvcAqndHLlLLLo/cW5sv2 HuWA== X-Gm-Message-State: ACrzQf3EIXvnrZQlnII09FQL5EH/sWuq9GuRrxxjGmWsXCp6stTB/P+P DQGKCOu6nkee8uTjn42xTr//1mp0KifN8Pd+ujWAenhkmBU2fsCBnQYuRN2lIypqDunhVS5oolV QBIXVMio/0dy0m4KXzEAw4PzUEvppW3gfW6HDQO4XquE6BC4V3Ip5J+y/BbTh X-Received: by 2002:a05:600c:2cbb:b0:3c6:c4d9:6004 with SMTP id h27-20020a05600c2cbb00b003c6c4d96004mr17916035wmc.66.1667220785616; Mon, 31 Oct 2022 05:53:05 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6u9GUhobiuzdB4roajF8iatFIx+2ipfQb/B5PUpRlsOJPUHYCDxMs/yGSl1YT4Rd0jKhNT9Q== X-Received: by 2002:a05:600c:2cbb:b0:3c6:c4d9:6004 with SMTP id h27-20020a05600c2cbb00b003c6c4d96004mr17916013wmc.66.1667220785350; Mon, 31 Oct 2022 05:53:05 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:03 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 49/86] virtio-net: support queue_enable Message-ID: <20221031124928.128475-50-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221246166100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Support queue_enable in vhost-kernel scenario. It can be called when a vq reset operation has been performed and the vq is restared. It should be noted that we can restart the vq when the vhost has already started. When launching a new vhost device, the vhost is not started and all vqs are not initalized until VIRTIO_PCI_COMMON_STATUS is written. Thus, we should use vhost_started to differentiate the two cases: vq reset and device start. Currently it only supports vhost-kernel. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-14-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/net/virtio-net.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 8feeb032b4..f5adba45d5 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -563,6 +563,26 @@ static void virtio_net_queue_reset(VirtIODevice *vdev,= uint32_t queue_index) flush_or_purge_queued_packets(nc); } =20 +static void virtio_net_queue_enable(VirtIODevice *vdev, uint32_t queue_ind= ex) +{ + VirtIONet *n =3D VIRTIO_NET(vdev); + NetClientState *nc =3D qemu_get_subqueue(n->nic, vq2q(queue_index)); + int r; + + if (!nc->peer || !vdev->vhost_started) { + return; + } + + if (get_vhost_net(nc->peer) && + nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_TAP) { + r =3D vhost_net_virtqueue_restart(vdev, nc, queue_index); + if (r < 0) { + error_report("unable to restart vhost net virtqueue: %d, " + "when resetting the queue", queue_index); + } + } +} + static void virtio_net_reset(VirtIODevice *vdev) { VirtIONet *n =3D VIRTIO_NET(vdev); @@ -3802,6 +3822,7 @@ static void virtio_net_class_init(ObjectClass *klass,= void *data) vdc->bad_features =3D virtio_net_bad_features; vdc->reset =3D virtio_net_reset; vdc->queue_reset =3D virtio_net_queue_reset; + vdc->queue_enable =3D virtio_net_queue_enable; vdc->set_status =3D virtio_net_set_status; vdc->guest_notifier_mask =3D virtio_net_guest_notifier_mask; vdc->guest_notifier_pending =3D virtio_net_guest_notifier_pending; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221179; cv=none; d=zohomail.com; s=zohoarc; b=HZuCHr7UD6mU70s07glyQ5ys0uKVN3+0Sqqec6WPD/bLLmpY8fV3e63V975daPB80sZA5p9JithRnTAYmQrpyS748zRl1P8S3C3NUf9VJo3CcFWnxKi+PlOg8/52O970G4kfIp0LHM7fUCkEXvxIu6AQoQ/OliPzIXITwtVf/78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221179; h=Content-Type: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=o4ROciCLZ9i/1jI+qJP8SDYVOQK7gC8l6WXiDFJoS00=; b=B82h7E7DbBrQQ8yBr7vsFQiobssgq3TK/sYUw+2TSqjL6aPf87radjmGWsALqosZPIFqMCIY3bNwuB+r1f/XHKI4tOfNn9tB5deYA5T0EEKf11f+WoJ3gil3qAFO9Q33kWjbJzzfOoIYO1dMvK745H0W4kFhJAAD8yY7ypqTxjo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221179617675.2031134434836; Mon, 31 Oct 2022 05:59:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIO-0002Iu-KD; Mon, 31 Oct 2022 08:53:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHz-00084F-M3 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHv-0002z2-OT for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-335-GB8MVXIWPgKSGZTvC2SfwQ-1; Mon, 31 Oct 2022 08:53:09 -0400 Received: by mail-wm1-f72.google.com with SMTP id az11-20020a05600c600b00b003c6e3d4d5b1so5257981wmb.7 for ; Mon, 31 Oct 2022 05:53:09 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id y10-20020a5d620a000000b0023657e1b97esm7119347wru.11.2022.10.31.05.53.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220791; 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: in-reply-to:in-reply-to:references:references; bh=o4ROciCLZ9i/1jI+qJP8SDYVOQK7gC8l6WXiDFJoS00=; b=FL3wqMh2MoxGuCvdFA6P4iIHKQqL5pNpVnGpQvwYXnCmhkvkjpp1Zx1n0VuYrgPIXE00pm phV8qW5zw3MMemI1Q5QWXjxrhUUwasvO1qBnsBn+5Xaw3h9LWDaBfKmiH/FZRUtPgqMzWJ fIcQ2O3sLXCBmn5QmiajP6EOqnZMqbU= X-MC-Unique: GB8MVXIWPgKSGZTvC2SfwQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o4ROciCLZ9i/1jI+qJP8SDYVOQK7gC8l6WXiDFJoS00=; b=6ABDsiau7gVuqYtnj1TF6txAZV/KgbYZgoOPNTaPKKlJROu7PYOuxNIqTA9chbUnRq L11w2m2g03U3PZVB0/sL2kWDn18arn83kKdRtfsxbeMc8G1yJkUmPymgtv6S++jko1Oq QTG9Yv2TYnHQFCGWo99tRtaWjRu2kP5KKDreL41RhH3zuc91Kyxe73L9SIXHXzlkdUY/ C0p4PHsPr/mWO4aYn3Lot8l4O2+r/uiSF6XKvrgvZfGp5d9wNGEBvL8Qxhoay2vxkIWP d6ofSkkbvWfk8q+6uxBwux7mg4dcNi/1XxudGzPcVb9rURSqXE75ilXQyMhS5IuKUjHa dbxA== X-Gm-Message-State: ACrzQf2v2aHCEVOy1XLbId1Wad13PMc3jkLXnbrSCmYv6u2m83rt0a2A 6ZbJ2g0G0nzAQvAFyoWPyeukvremeNG43hZ1IAolKtP5ZndvRVYE/rbczxRRdhHTJarAUW6Cqty evFPTMXjwNx280MzNM8woyUAL0JtK9oJ/KUgNbmPvoNKwg/Kh5Z1pEF69L+M4 X-Received: by 2002:a05:600c:5493:b0:3c9:c18:87d5 with SMTP id iv19-20020a05600c549300b003c90c1887d5mr17461279wmb.188.1667220788075; Mon, 31 Oct 2022 05:53:08 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4/zLuP/GQ3qABWBIZyqsglWxwCr20WiWsXNIrfSXJdUeUk+dwi7EWTDIyPk6HHk9mGwNphpg== X-Received: by 2002:a05:600c:5493:b0:3c9:c18:87d5 with SMTP id iv19-20020a05600c549300b003c90c1887d5mr17461259wmb.188.1667220787769; Mon, 31 Oct 2022 05:53:07 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kangjie Xu , Xuan Zhuo , Jason Wang Subject: [PULL 50/86] vhost: vhost-kernel: enable vq reset feature Message-ID: <20221031124928.128475-51-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221181533100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kangjie Xu Add virtqueue reset feature for vhost-kernel. Signed-off-by: Kangjie Xu Signed-off-by: Xuan Zhuo Acked-by: Jason Wang Message-Id: <20221017092558.111082-15-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/net/vhost_net.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index f2ada02781..a6a130e1ae 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -47,6 +47,7 @@ static const int kernel_feature_bits[] =3D { VIRTIO_NET_F_MTU, VIRTIO_F_IOMMU_PLATFORM, VIRTIO_F_RING_PACKED, + VIRTIO_F_RING_RESET, VIRTIO_NET_F_HASH_REPORT, VHOST_INVALID_FEATURE_BIT }; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222188; cv=none; d=zohomail.com; s=zohoarc; b=VSj2wlwDjgguz7k7327fHg8y77GS4wGwfpDxt/hd5Etd8YVXhv5xXYOMLS0NM7Vb2J37vXULf5VZnQjuf/MSgQ5K7qVX6WpX1m6+HeDfdq8yNqu8KhaMgfoIZlL22Ob2L1k8N7tBQX/1g3C3KW0hE86xwXspPX/XK3HsqNika8k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222188; h=Content-Type: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=yjK+tqQBsPYEdCPjR7NK8gx+6B2l5qZSWxjZ9IzXr+I=; b=Ioar1MBzuJtXs1lp4VpPyt8z6DmNuos0ViFAjxK0GJsgM4y7xhGweOC/XlrQCcgBid9DLUxEHxms3F4NjFOAC3+ghqugrmIZGKloAMHcM8ZFlbmjfiYPTHWc9UA7YiWgyj3CqnB3i5aWkcVdprPn+iJ88QU1y9troC6FMNUFqGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667222188092353.08373412527567; Mon, 31 Oct 2022 06:16:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIP-0002Ma-H5; Mon, 31 Oct 2022 08:53:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHz-00085O-UZ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUHx-0002zu-O8 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:15 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-78-A_KghG24PRmTGAlx2-_npQ-1; Mon, 31 Oct 2022 08:53:12 -0400 Received: by mail-wm1-f72.google.com with SMTP id 1-20020a05600c028100b003cf7833293cso265865wmk.3 for ; Mon, 31 Oct 2022 05:53:11 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j13-20020a05600c410d00b003c6bd12ac27sm7226705wmi.37.2022.10.31.05.53.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220793; 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: in-reply-to:in-reply-to:references:references; bh=yjK+tqQBsPYEdCPjR7NK8gx+6B2l5qZSWxjZ9IzXr+I=; b=g/Qd7U+QPgkq1Ujlt8XnqCoiZSA2azrTkveTK7RYRrsz137CXox7rP/5I87G6C+VCR4ArR CP5HJ7+8uMMarhq3xW15xI1ZzjIWQmPQMXzGS2i7LsToF/DDIFKHJChMO13uYdfhURvHB8 K9YJ3ZX9VqEVPOe2yCf+4hXjYecPNDY= X-MC-Unique: A_KghG24PRmTGAlx2-_npQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yjK+tqQBsPYEdCPjR7NK8gx+6B2l5qZSWxjZ9IzXr+I=; b=7kTTRcywDqnZ4TK4+Tvx03uWS9jh55fSlxmsYEdhHEr2Ag6WRyWS9Ep3S0Bs/xvaVE /vvymwrPC+dCQmFHlLAZe7wA1NAaHqiHsW0REN8vocBJUggJ5VeYMow787nQ/q2H3vps RjRd0nUxG5bIwFT9sNIVHZ7NEbcGjronDY7bEu9Xe7MZrFPT4/QYrGcXkUtdkBGj/Ox3 vlS04oDS5qGxHQxmyQ49piEb5krqMSCCJUU9JEP+Gb4nme+1TTz+ewpZkJ3uRpcQmVx4 kfxzA7KhDGqOpDL91oVbpENnZ6j/sos+zkq7JwNFzMqZXt4Yl/KimyNyO8Bz4uiGUL+/ oNzg== X-Gm-Message-State: ACrzQf3zK/h/uYyf6sqkmgrfLeH/OCeFVJcBNznrNvDHE3bpTDVIyciU 0mb0Nb1GupiJOoPgRtInfbcNrFeklvM57DsPcxOVpylvJbhEz91zzr8tt56d7GHtTZeI1dhQc16 k4iRCITYYKfi5uGDK36owEKANW+KIfYQC+tw6Lc0uS7Qc8E2xRxtveuKh96Q3 X-Received: by 2002:a05:6000:100c:b0:235:6980:aa24 with SMTP id a12-20020a056000100c00b002356980aa24mr8030665wrx.238.1667220790762; Mon, 31 Oct 2022 05:53:10 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4QWg6KSf5y97JunjXhPuv8X8hf9BvqJX0Si5cScGSdulXPJP8TX2PcxKw9+OG7qi/vyHK0Eg== X-Received: by 2002:a05:6000:100c:b0:235:6980:aa24 with SMTP id a12-20020a056000100c00b002356980aa24mr8030649wrx.238.1667220790467; Mon, 31 Oct 2022 05:53:10 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:08 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xuan Zhuo , Jason Wang Subject: [PULL 51/86] virtio-net: enable vq reset feature Message-ID: <20221031124928.128475-52-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222189473100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xuan Zhuo Add virtqueue reset feature for virtio-net Signed-off-by: Xuan Zhuo Message-Id: <20221017092558.111082-16-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/net/virtio-net.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index f5adba45d5..975bbc22f9 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -788,6 +788,7 @@ static uint64_t virtio_net_get_features(VirtIODevice *v= dev, uint64_t features, } =20 if (!get_vhost_net(nc->peer)) { + virtio_add_feature(&features, VIRTIO_F_RING_RESET); return features; } =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221762; cv=none; d=zohomail.com; s=zohoarc; b=X+6BndHOdROGjMa06Kmzu6swz5j8xWURBsqTU8l1BBW35Ss9fSlCiu2cLCu9y7fBNl9i9k+ydK5rtLYVp1t/kiK/LeFLo9XRJ/2XlAnnXVtE7Sbjuka3l1jevYfl0AiYuAEEpVXouutMUFZ2iQpAUkVcCIRrUqgONEJMa1Hbyhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221762; 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=MtEUbBVVYdPzeiTU39HNTaDMuOUKjIcjW007vq8qqcw=; b=f578NH4JsWjH/A38ISZGgYL2Kr/tuXBYty25+FzA4j80U92Ui3pCdOC1G8AiwXEs5qYUzpWa9B1u8QsCGiBYwAZ1S254WlfUTQTKSjYd6t5/LCqP/6gvQ9TGVmCHfOOxE8VmhveAiNWUO/+MzDemFjruWeqX77bwiRdJXo4ZGgc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16672217620011010.390633948081; Mon, 31 Oct 2022 06:09:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIQ-0002RP-KY; Mon, 31 Oct 2022 08:53:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUI3-0008Ue-GJ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUI1-00032o-ML for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:19 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-501-npUxjBQ0OLe-f_FoeWS29w-1; Mon, 31 Oct 2022 08:53:14 -0400 Received: by mail-wm1-f72.google.com with SMTP id v188-20020a1cacc5000000b003cf76c4ae66so474529wme.7 for ; Mon, 31 Oct 2022 05:53:14 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id f18-20020a1cc912000000b003cf5ec79bf9sm7218362wmb.40.2022.10.31.05.53.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220797; 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=MtEUbBVVYdPzeiTU39HNTaDMuOUKjIcjW007vq8qqcw=; b=JYJcTGKtFdzMagh5Z6YaNgA8+KlrLAKGkWdoMarFmraG6ka/TO6UinY4gScycOUOwZiTd5 e36ZgzqpqZJu7TS8T9hO3uSHjHLPZqVEFTbInZNpiLdmk7O8gMom32KBxBB0yko925rWvk DbWN6RKCNRKNt51SPLqwq7finfUmOf4= X-MC-Unique: npUxjBQ0OLe-f_FoeWS29w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MtEUbBVVYdPzeiTU39HNTaDMuOUKjIcjW007vq8qqcw=; b=x+sQ3bgcq3gpk1JdIBUk7wrx1alSjOL2IBbuS7RDQAFtbZw1e57mjV+YapBnyjgC7W lo+IvQC1jj+U6ggsVtfZllF0nJmTSPOcV9UFTNe3TzzeE+zvt4J2BEY2XNGT9VX7TMtm NFG23gVvL567C3FOUf2xycF/pk20papYnmTMvksnAbNb7vt4GhoX0eCNKewDcAzzkrIo v5EsguWnaf/tAb5wXFx6IMve1DdBdkxuTF/RVNBJn6i8E0s58LC6FfBsDJpESMBzUqgb /erZqGjz+xJJ7oGvbiwqmtfe83HJcILKzX4tkmEUxTQDCdMGFqKSP6TaFWXgcTcV4bvf gz1w== X-Gm-Message-State: ACrzQf2N3lEkZMHG8loihD4lMSl83vSCDneO1d95QWpATvw3v+Rii0ku koAFsoUj0RxmKtN5cwBvWZgtq+HdREZJDRennkP2A7q9iyYdV3tzG8+GTWvgR/8LjVhYY/W2y9C g4NS7lQUrW9vJgNnzb1yxBeP7AF20xCxgqzwBNheLO8KEnPpZTl/eHP5Aqvsa X-Received: by 2002:adf:e5cf:0:b0:236:86e4:cbc3 with SMTP id a15-20020adfe5cf000000b0023686e4cbc3mr7924133wrn.135.1667220793167; Mon, 31 Oct 2022 05:53:13 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5RNJHoVyfI+2xwMRBsNHd/PzJVgR5rEpXeJ/1VhxMYSKhLbcw5tcB+Nzz9wHrcebs5E/AzHA== X-Received: by 2002:adf:e5cf:0:b0:236:86e4:cbc3 with SMTP id a15-20020adfe5cf000000b0023686e4cbc3mr7924112wrn.135.1667220792907; Mon, 31 Oct 2022 05:53:12 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:10 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , David Daney , Marcin Nowakowski , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Stefan Hajnoczi Subject: [PULL 52/86] virtio-rng-pci: Allow setting nvectors, so we can use MSI-X Message-ID: <20221031124928.128475-53-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221764140100005 From: David Daney Most other virtio-pci devices allow MSI-X, let's have it for rng too. Signed-off-by: David Daney Reviewed-by: Marcin Nowakowski Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221014160947.66105-1-philmd@fungible.com> Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/virtio-rng-pci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/virtio/virtio-rng-pci.c b/hw/virtio/virtio-rng-pci.c index 151ece6f94..6e76f8b57b 100644 --- a/hw/virtio/virtio-rng-pci.c +++ b/hw/virtio/virtio-rng-pci.c @@ -13,6 +13,7 @@ =20 #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-rng.h" +#include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "qom/object.h" @@ -31,11 +32,23 @@ struct VirtIORngPCI { VirtIORNG vdev; }; =20 +static Property virtio_rng_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) { VirtIORngPCI *vrng =3D VIRTIO_RNG_PCI(vpci_dev); DeviceState *vdev =3D DEVICE(&vrng->vdev); =20 + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D 2; + } + if (!qdev_realize(vdev, BUS(&vpci_dev->bus), errp)) { return; } @@ -54,6 +67,7 @@ static void virtio_rng_pci_class_init(ObjectClass *klass,= void *data) pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_RNG; pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; pcidev_k->class_id =3D PCI_CLASS_OTHERS; + device_class_set_props(dc, virtio_rng_properties); } =20 static void virtio_rng_initfn(Object *obj) --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222417; cv=none; d=zohomail.com; s=zohoarc; b=eHzHnqY34FDJ2Rzp3pdtZSpyh5SJ5BIeWJppfG6iAGRFheW9lRfU/2aLah81953d0cOyJThOUNPdtHNgZOvH+IN1I/tYlZyfWOxa6v6T5+cplBROgTrLrqUReSJrzwGjrR9LRq6ztEyDfAJoZtYqQKD5zE56fS3HMzmPG//fCvM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222417; 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=mk4Sl4LbuMKont5xSBz6TsoGXbpWs8ZwHVKOV5dhnZU=; b=fwmn/8s2A71ikaGd2tQ2bK3Zcn6eKicAk+QLFq9Y+RmTbSYd9pBDXcLHYQ25+VA+3Poy6CVmdY7dNZBQ/AjFBlgbwRZ1saSXlP3GUUZtSs80NI0dxzRPIpjArVfoblhHNhZjbQkkkuIfroW8CI7lAplT4gDkN8DuRwmqdnbgOs0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667222417500920.6480846914458; Mon, 31 Oct 2022 06:20:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIR-0002Wx-DU; Mon, 31 Oct 2022 08:53:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUI5-0000HN-6n for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUI3-00033k-CU for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:20 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-371-UyHmoycWP_2go5LQwDpSpg-1; Mon, 31 Oct 2022 08:53:17 -0400 Received: by mail-wm1-f72.google.com with SMTP id bg25-20020a05600c3c9900b003cf3ed7e27bso5264225wmb.4 for ; Mon, 31 Oct 2022 05:53:16 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id t2-20020a05600c41c200b003c21ba7d7d6sm6980723wmh.44.2022.10.31.05.53.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220798; 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=mk4Sl4LbuMKont5xSBz6TsoGXbpWs8ZwHVKOV5dhnZU=; b=PvmWOKSjfJdb06yyuhyPKbgvCSiImQBAV+gWIkgroABBNEaHUBCi1jVoaMmiwCUhOtgZRG I8lhaUnqTtrw9SkDg6p+AQA2U/Ig78TgtWo1iq7kvdfp1SxyIWJhBnAWBA8uwfXOvFyFBx APcYNaY5XNXH2vwgH80Jumn0oEUvyc0= X-MC-Unique: UyHmoycWP_2go5LQwDpSpg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mk4Sl4LbuMKont5xSBz6TsoGXbpWs8ZwHVKOV5dhnZU=; b=oaDu7uRodtL53NJhkNcCxFk0Bh9E3xPsD1gOsCbcJZkNceEKNYy5p0q+p0DSpGci/w EnZ8MVyB2SqJBcq1u0kv/cE1y25Neza/cNNuSB9gGRw28dFe+lahriq65LxMRXJ2n6ec XgggeLD402twmsbh0k4P9d4chEmSYVFXqZlLoQ4HC4O1Vmo9Om2OVG08JeBvUIT5Vg1i y0p5nbYx3JZPDcZ4d43OoMkTcyJEIE6zCDfRt4kKCtC4yAJC12HRTt2RGOxaULhFKs6a 2NlZ7Uu7/AOTF+YIGPJaAZgV++7ynUI4Sze+dS+ybnM56NObqIpw6Rgmsyj0H97KWWO5 JQBA== X-Gm-Message-State: ACrzQf1JpDbE4hAVtkgNSOflvXSGFkKnSsqi2W/JudymcMOGuyAJyx9C 1h2gnOopT0XrpHT27mRZeJRzNxySbhA566HgPMb3AqvL8N4ccRz1aBiFNNZhOfqgfQYzF6bW4iP uvzxRnItNMCPrFn2oWKkAyvqu+2TJfYjJiKu0NnASGHz+NLYG2/14uIHnjuTv X-Received: by 2002:a5d:53c9:0:b0:236:69fd:d4cc with SMTP id a9-20020a5d53c9000000b0023669fdd4ccmr8103631wrw.618.1667220795698; Mon, 31 Oct 2022 05:53:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5cdk7xo2vglJMucthx44SMRzDpIMTiuWWfr0xBn/6Lh+Cv6ryLhM0r+gqhp042qc4B6Zp/SA== X-Received: by 2002:a5d:53c9:0:b0:236:69fd:d4cc with SMTP id a9-20020a5d53c9000000b0023669fdd4ccmr8103612wrw.618.1667220795398; Mon, 31 Oct 2022 05:53:15 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:13 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Yajun Wu , Parav Pandit , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 53/86] vhost-user: Fix out of order vring host notification handling Message-ID: <20221031124928.128475-54-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222419044100003 From: Yajun Wu vhost backend sends host notification for every VQ. If backend creates VQs in parallel, the VHOST_USER_SLAVE_VRING_HOST_NOTIFIER_MSG may arrive to QEMU in different order than incremental queue index order. For example VQ 1's message arrive earlier than VQ 0's: After alloc VhostUserHostNotifier for VQ 1. GPtrArray becomes [ nil, VQ1 pointer ] After alloc VhostUserHostNotifier for VQ 0. GPtrArray becomes [ VQ0 pointer, nil, VQ1 pointer ] This is wrong. fetch_notifier will return NULL for VQ 1 in vhost_user_get_vring_base, causes host notifier miss removal(leak). The fix is to remove current element from GPtrArray, make the right position for element to insert. Fixes: 503e355465 ("virtio/vhost-user: dynamically assign VhostUserHostNoti= fiers") Signed-off-by: Yajun Wu Acked-by: Parav Pandit Message-Id: <20221018023651.1359420-1-yajunw@nvidia.com> Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/virtio/vhost-user.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index bb5164b753..abe23d4ebe 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1593,6 +1593,11 @@ static VhostUserHostNotifier *fetch_or_create_notifi= er(VhostUserState *u, =20 n =3D g_ptr_array_index(u->notifiers, idx); if (!n) { + /* + * In case notification arrive out-of-order, + * make room for current index. + */ + g_ptr_array_remove_index(u->notifiers, idx); n =3D g_new0(VhostUserHostNotifier, 1); n->idx =3D idx; g_ptr_array_insert(u->notifiers, idx, n); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221126; cv=none; d=zohomail.com; s=zohoarc; b=GaXlSGZglRrpsWf4avGRi2lKwV+2k+0LiMKu20EU45ge3G8SS4G1oJbZRXd2uELs8utMwy3g0KiBDH0aM9pSLCAE7w6i8a5iiefW3tMvwlqFkDlza3J2N2R/R7lZ06SEi9fVjnpJ2a3A7ZO2XtgXJnnkf2B4cOTYnBPsPjHJMBs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221126; h=Content-Type: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=vbMpeH2B2yDvNRhnRf7W+0JnhfGTF11dbplHS1ZfnuQ=; b=JxBunw50gnMgwitAwiE+dxKM+Hy97ijmLN2y4XmyRcnwnuY0pJQnHPeE511t4Ca3czgUzBDZiq2bFm5YreuniEWZGr/CDpYWUxv3247AUfQ+hM7EVTk4uzk0CdnWkdYQqjNCDyBmIkRifIJBUiXZA+wcfJgVBuF6wMXk3OfjTK4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221126674224.98920275006583; Mon, 31 Oct 2022 05:58:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIS-0002dr-KQ; Mon, 31 Oct 2022 08:53:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIC-0000rZ-AV for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUI6-00036L-FM for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:24 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-161-BPxRAukdPfCsB7xsBSdcyA-1; Mon, 31 Oct 2022 08:53:20 -0400 Received: by mail-wm1-f70.google.com with SMTP id c5-20020a1c3505000000b003c56da8e894so8324369wma.0 for ; Mon, 31 Oct 2022 05:53:20 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id h5-20020a05600c350500b003b4a68645e9sm7537624wmq.34.2022.10.31.05.53.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220801; 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: in-reply-to:in-reply-to:references:references; bh=vbMpeH2B2yDvNRhnRf7W+0JnhfGTF11dbplHS1ZfnuQ=; b=Twn0iCXcZIZWWho323wchb8g2aoqvyCBobO4KNz5D6Ww7Z9gHCiqRcDVYoTY/Yc8oq2YE4 VL3KmS2TZmJx00fyuo0V5tcQc6kLSdIRRpPee13A2x4ChLN8kWNYjwcagC4MXy6938325T zunh1ZwnN6EgODTYEa84mJ1s977MMUU= X-MC-Unique: BPxRAukdPfCsB7xsBSdcyA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vbMpeH2B2yDvNRhnRf7W+0JnhfGTF11dbplHS1ZfnuQ=; b=7FDmhqVy7oBnyi//OlJhHyb70oigUuYd8IhFpQTqvwMbButaU5vj4rmPKIbet557rN 6qRgDxLl79R4Pte6idlIQGH+gsKiHSPTOn+n8qU2RS3yY9Dit2gd2ussmd/WsAzU5Nn3 xe5neHFjtxRh3+orrTtkzrIOk1r3ZVP+tCGmdUQzmszVUnhxmNAoiGXVZ7H5VfMewmDG tuzyW2A+8FJ+J0X3FlyU/3n5PnbdfcoGs37xDrr5x9SW6nNzckC1P0Ayvq6NJxfgK5FD qXQcFR+lvVIz8DQdHyyotknWjIulpWQx4G5u70Smlbx4f4BKSw6G71mhAgj3GJO4yarG envQ== X-Gm-Message-State: ACrzQf1YRkn9L8IGr4ubGs3TjGilUUqOTqsGRTkTBpd2Qj2HrrDgdh+b sb7wM1Iml3sALFRq0Yzhtn867ZE/pXsOpiekdELjwxyjES0tIO/zYMOpffwiHpUp1xzHOAZ1o9R blXC5H2N/20QZlzAlQHTtzQ6JufLtwSfrV/Oz6mPXd2mZkoLp94sGgI2J8Yno X-Received: by 2002:adf:e44f:0:b0:236:59a3:c5a8 with SMTP id t15-20020adfe44f000000b0023659a3c5a8mr8150691wrm.396.1667220798667; Mon, 31 Oct 2022 05:53:18 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Kb4fZX7FpjECW5sJFLhOKofdk4Yl1jGlibXj1FFrOzQ8peREPJQfx3ZrL+DAbXnp7X9SvBg== X-Received: by 2002:adf:e44f:0:b0:236:59a3:c5a8 with SMTP id t15-20020adfe44f000000b0023659a3c5a8mr8150668wrm.396.1667220798290; Mon, 31 Oct 2022 05:53:18 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Gerd Hoffmann , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 54/86] acpi: pc: vga: use AcpiDevAmlIf interface to build VGA device descriptors Message-ID: <20221031124928.128475-55-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221128495100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-2-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin NB: we do not expect any functional change in any ACPI tables with this change. It's only a refactoring. Reviewed-by: Ani Sinha --- hw/display/vga_int.h | 2 ++ hw/display/acpi-vga-stub.c | 7 +++++++ hw/display/acpi-vga.c | 26 ++++++++++++++++++++++++++ hw/display/vga-pci.c | 4 ++++ hw/i386/acpi-build.c | 26 +------------------------- hw/display/meson.build | 17 +++++++++++++++++ 6 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 hw/display/acpi-vga-stub.c create mode 100644 hw/display/acpi-vga.c diff --git a/hw/display/vga_int.h b/hw/display/vga_int.h index 305e700014..330406ad9c 100644 --- a/hw/display/vga_int.h +++ b/hw/display/vga_int.h @@ -30,6 +30,7 @@ #include "ui/console.h" =20 #include "hw/display/bochs-vbe.h" +#include "hw/acpi/acpi_aml_interface.h" =20 #define ST01_V_RETRACE 0x08 #define ST01_DISP_ENABLE 0x01 @@ -195,4 +196,5 @@ void pci_std_vga_mmio_region_init(VGACommonState *s, MemoryRegion *subs, bool qext, bool edid); =20 +void build_vga_aml(AcpiDevAmlIf *adev, Aml *scope); #endif diff --git a/hw/display/acpi-vga-stub.c b/hw/display/acpi-vga-stub.c new file mode 100644 index 0000000000..a9b0ecf76d --- /dev/null +++ b/hw/display/acpi-vga-stub.c @@ -0,0 +1,7 @@ +#include "qemu/osdep.h" +#include "hw/acpi/acpi_aml_interface.h" +#include "vga_int.h" + +void build_vga_aml(AcpiDevAmlIf *adev, Aml *scope) +{ +} diff --git a/hw/display/acpi-vga.c b/hw/display/acpi-vga.c new file mode 100644 index 0000000000..f0e9ef1fcf --- /dev/null +++ b/hw/display/acpi-vga.c @@ -0,0 +1,26 @@ +#include "qemu/osdep.h" +#include "hw/acpi/acpi_aml_interface.h" +#include "hw/pci/pci.h" +#include "vga_int.h" + +void build_vga_aml(AcpiDevAmlIf *adev, Aml *scope) +{ + int s3d =3D 0; + Aml *method; + + if (object_dynamic_cast(OBJECT(adev), "qxl-vga")) { + s3d =3D 3; + } + + method =3D aml_method("_S1D", 0, AML_NOTSERIALIZED); + aml_append(method, aml_return(aml_int(0))); + aml_append(scope, method); + + method =3D aml_method("_S2D", 0, AML_NOTSERIALIZED); + aml_append(method, aml_return(aml_int(0))); + aml_append(scope, method); + + method =3D aml_method("_S3D", 0, AML_NOTSERIALIZED); + aml_append(method, aml_return(aml_int(s3d))); + aml_append(scope, method); +} diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c index 3e5bc259f7..9a91de7ed1 100644 --- a/hw/display/vga-pci.c +++ b/hw/display/vga-pci.c @@ -35,6 +35,7 @@ #include "hw/loader.h" #include "hw/display/edid.h" #include "qom/object.h" +#include "hw/acpi/acpi_aml_interface.h" =20 enum vga_pci_flags { PCI_VGA_FLAG_ENABLE_MMIO =3D 1, @@ -354,11 +355,13 @@ static void vga_pci_class_init(ObjectClass *klass, vo= id *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + AcpiDevAmlIfClass *adevc =3D ACPI_DEV_AML_IF_CLASS(klass); =20 k->vendor_id =3D PCI_VENDOR_ID_QEMU; k->device_id =3D PCI_DEVICE_ID_QEMU_VGA; dc->vmsd =3D &vmstate_vga_pci; set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); + adevc->build_dev_aml =3D build_vga_aml; } =20 static const TypeInfo vga_pci_type_info =3D { @@ -369,6 +372,7 @@ static const TypeInfo vga_pci_type_info =3D { .class_init =3D vga_pci_class_init, .interfaces =3D (InterfaceInfo[]) { { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { TYPE_ACPI_DEV_AML_IF }, { }, }, }; diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 4f54b61904..26932b4e2c 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -430,7 +430,6 @@ static void build_append_pci_bus_devices(Aml *parent_sc= ope, PCIBus *bus, bool hotpluggbale_slot =3D false; bool bridge_in_acpi =3D false; bool cold_plugged_bridge =3D false; - bool is_vga =3D false; =20 if (pdev) { pc =3D PCI_DEVICE_GET_CLASS(pdev); @@ -440,8 +439,6 @@ static void build_append_pci_bus_devices(Aml *parent_sc= ope, PCIBus *bus, continue; } =20 - is_vga =3D pc->class_id =3D=3D PCI_CLASS_DISPLAY_VGA; - /* * Cold plugged bridges aren't themselves hot-pluggable. * Hotplugged bridges *are* hot-pluggable. @@ -489,28 +486,7 @@ static void build_append_pci_bus_devices(Aml *parent_s= cope, PCIBus *bus, aml_append(dev, aml_pci_device_dsm()); } =20 - if (is_vga) { - /* add VGA specific AML methods */ - int s3d; - - if (object_dynamic_cast(OBJECT(pdev), "qxl-vga")) { - s3d =3D 3; - } else { - s3d =3D 0; - } - - method =3D aml_method("_S1D", 0, AML_NOTSERIALIZED); - aml_append(method, aml_return(aml_int(0))); - aml_append(dev, method); - - method =3D aml_method("_S2D", 0, AML_NOTSERIALIZED); - aml_append(method, aml_return(aml_int(0))); - aml_append(dev, method); - - method =3D aml_method("_S3D", 0, AML_NOTSERIALIZED); - aml_append(method, aml_return(aml_int(s3d))); - aml_append(dev, method); - } + call_dev_aml_func(DEVICE(pdev), dev); =20 bridge_in_acpi =3D cold_plugged_bridge && pcihp_bridge_en; if (bridge_in_acpi) { diff --git a/hw/display/meson.build b/hw/display/meson.build index adc53dd8b6..7a725ed80e 100644 --- a/hw/display/meson.build +++ b/hw/display/meson.build @@ -38,10 +38,21 @@ softmmu_ss.add(when: 'CONFIG_NEXTCUBE', if_true: files(= 'next-fb.c')) =20 specific_ss.add(when: 'CONFIG_VGA', if_true: files('vga.c')) =20 +if (config_all_devices.has_key('CONFIG_VGA_CIRRUS') or + config_all_devices.has_key('CONFIG_VGA_PCI') or + config_all_devices.has_key('CONFIG_VMWARE_VGA') or + config_all_devices.has_key('CONFIG_ATI_VGA') + ) + softmmu_ss.add(when: 'CONFIG_ACPI', if_true: files('acpi-vga.c'), + if_false: files('acpi-vga-stub.c')) +endif + if config_all_devices.has_key('CONFIG_QXL') qxl_ss =3D ss.source_set() qxl_ss.add(when: 'CONFIG_QXL', if_true: [files('qxl.c', 'qxl-logger.c', = 'qxl-render.c'), pixman, spice]) + qxl_ss.add(when: 'CONFIG_ACPI', if_true: files('acpi-vga.c'), + if_false: files('acpi-vga-stub.c')) hw_display_modules +=3D {'qxl': qxl_ss} endif =20 @@ -52,6 +63,7 @@ softmmu_ss.add(when: 'CONFIG_ARTIST', if_true: files('art= ist.c')) =20 softmmu_ss.add(when: [pixman, 'CONFIG_ATI_VGA'], if_true: files('ati.c', '= ati_2d.c', 'ati_dbg.c')) =20 + if config_all_devices.has_key('CONFIG_VIRTIO_GPU') virtio_gpu_ss =3D ss.source_set() virtio_gpu_ss.add(when: 'CONFIG_VIRTIO_GPU', @@ -87,14 +99,19 @@ if config_all_devices.has_key('CONFIG_VIRTIO_VGA') if_true: [files('virtio-vga.c'), pixman]) virtio_vga_ss.add(when: 'CONFIG_VHOST_USER_VGA', if_true: files('vhost-user-vga.c')) + virtio_vga_ss.add(when: 'CONFIG_ACPI', if_true: files('acpi-vga.c'), + if_false: files('acpi-vga-stub.c'= )) hw_display_modules +=3D {'virtio-vga': virtio_vga_ss} =20 virtio_vga_gl_ss =3D ss.source_set() virtio_vga_gl_ss.add(when: ['CONFIG_VIRTIO_VGA', virgl, opengl], if_true: [files('virtio-vga-gl.c'), pixman]) + virtio_vga_gl_ss.add(when: 'CONFIG_ACPI', if_true: files('acpi-vga.c'), + if_false: files('acpi-vga-stub= .c')) hw_display_modules +=3D {'virtio-vga-gl': virtio_vga_gl_ss} endif =20 specific_ss.add(when: 'CONFIG_OMAP', if_true: files('omap_lcdc.c')) =20 +softmmu_ss.add(when: 'CONFIG_ALL', if_true: files('acpi-vga-stub.c')) modules +=3D { 'hw-display': hw_display_modules } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667220939; cv=none; d=zohomail.com; s=zohoarc; b=Z0edHnymlAZ2FDfiE4PZzGC/j9Yb3k09wIHj2n27vz1xG2O49UcKcQXnRd9/XawKrYdbloxKw48gHiGMJzBZNRRGgz1Vg/iZFL3P3I986sxWcqvl9QjAc/A2JBWwRg1JFnErZRl4JhkXDqbqKSHR5SvdK2yZ+J+AU8JnAl+IyvM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667220939; h=Content-Type: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=E46n5gR8gy27RpCO2F1FgPBTeu/ARkeNqN+Q8EnBok8=; b=lWahCqz2ou3PSmr//79eqdqqABjCeRbDcJWA95CQqPhiFmTWpXPiHkzyvEttFD8dH/o28BUYJkBO+oQExcbz5y2JA/THP7EFBeiUNWGCQe1GHoacigKMsJQoHRCxCh94Z0T3c28abSbi8hmRPpYmx6kgmOD/CkS84Lvk3ai2ZzA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667220939509702.2719040886996; Mon, 31 Oct 2022 05:55:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIU-0002q0-Fh; Mon, 31 Oct 2022 08:53:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUID-00013j-OJ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIB-00037C-V8 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:29 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-284-pJ9TpOPuNNCrRrowu2LQLA-1; Mon, 31 Oct 2022 08:53:22 -0400 Received: by mail-wm1-f69.google.com with SMTP id az11-20020a05600c600b00b003c6e3d4d5b1so5258186wmb.7 for ; Mon, 31 Oct 2022 05:53:22 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id q8-20020a05600c46c800b003b4868eb71bsm6829814wmo.25.2022.10.31.05.53.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220804; 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: in-reply-to:in-reply-to:references:references; bh=E46n5gR8gy27RpCO2F1FgPBTeu/ARkeNqN+Q8EnBok8=; b=WgiqqfR5++8cFspv3LAfnjVnc0YwVy9ysUM9tej5tykFz3zzE/u+gBevWpkqG7WRqYRmGd BQHUXSQt5BAwr5ZgYLg2avz009Qm31sgFGkWpeZ9by2h/ejsLpjEY5BB4z2SSMoAWpmfeX y9yxg9GhgWSU9R0fAGq/ap/tkYvP1Ls= X-MC-Unique: pJ9TpOPuNNCrRrowu2LQLA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=E46n5gR8gy27RpCO2F1FgPBTeu/ARkeNqN+Q8EnBok8=; b=NCSkZyPowDV9k4oTvYd/dlyXNrquxdWb1WLFl2U7Aaq6exId6jKs6gfusPqDJjKhjZ 3l3dHIvATqLexK6mVv0PUC+T/otYJhr7OX8cmsIEeTwEf9HGZvJLinBjN2jbA9IjFZVR MExVmGQOE8qSt962LbSJnzx2RDcadFDRmLy9enC00J30XZYlZJ6WATGngLcvFExyBdbe qXhleqCz8TeVa/zRfjmOepMuG96GBMwzgCfc01qQIH4ZC86pFy62kBymMspJOv3AvdN4 NAsAw7MCfYNLcGABQCJ1gJD0eKg4pZ1920RJPSj1/74SpdVeOMZuqTyCGDSQNDjna7A5 //4w== X-Gm-Message-State: ACrzQf2d56ICGz7XI3NgzGZ7nALL53BLvPyF1uoBs7iB+//dmxUjpfC+ EjQRwIhSwQ/Ycr+VDW2QiGDmINshF5CyfW/9pUtEiNwx2yOvf9S45M9JUIdMM16qB+D6VWphN9L yQWvq0/pFczkN1qlAy1rkNLWb30JlF/poQ3YgnB2zdM1XxYjMw3U0SLPJXIx6 X-Received: by 2002:adf:f4ce:0:b0:236:6578:48b2 with SMTP id h14-20020adff4ce000000b00236657848b2mr7897150wrp.181.1667220801316; Mon, 31 Oct 2022 05:53:21 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7FibYHBMcOy4952M3cBC+IXaPWPjiwIhLJ5jDY62TjBnIkEeCpiYPTY3kgmWs6ItVeIQbudg== X-Received: by 2002:adf:f4ce:0:b0:236:6578:48b2 with SMTP id h14-20020adff4ce000000b00236657848b2mr7897130wrp.181.1667220800964; Mon, 31 Oct 2022 05:53:20 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 55/86] tests: acpi: whitelist DSDT before generating PCI-ISA bridge AML automatically Message-ID: <20221031124928.128475-56-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667220941352100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-3-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..570b17478e 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,35 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/pc/DSDT", +"tests/data/acpi/pc/DSDT.acpierst", +"tests/data/acpi/pc/DSDT.acpihmat", +"tests/data/acpi/pc/DSDT.bridge", +"tests/data/acpi/pc/DSDT.cphp", +"tests/data/acpi/pc/DSDT.dimmpxm", +"tests/data/acpi/pc/DSDT.hpbridge", +"tests/data/acpi/pc/DSDT.hpbrroot", +"tests/data/acpi/pc/DSDT.ipmikcs", +"tests/data/acpi/pc/DSDT.memhp", +"tests/data/acpi/pc/DSDT.nohpet", +"tests/data/acpi/pc/DSDT.numamem", +"tests/data/acpi/pc/DSDT.roothp", +"tests/data/acpi/q35/DSDT", +"tests/data/acpi/q35/DSDT.acpierst", +"tests/data/acpi/q35/DSDT.acpihmat", +"tests/data/acpi/q35/DSDT.applesmc", +"tests/data/acpi/q35/DSDT.bridge", +"tests/data/acpi/q35/DSDT.cphp", +"tests/data/acpi/q35/DSDT.cxl", +"tests/data/acpi/q35/DSDT.dimmpxm", +"tests/data/acpi/q35/DSDT.ipmibt", +"tests/data/acpi/q35/DSDT.ipmismbus", +"tests/data/acpi/q35/DSDT.ivrs", +"tests/data/acpi/q35/DSDT.memhp", +"tests/data/acpi/q35/DSDT.mmio64", +"tests/data/acpi/q35/DSDT.multi-bridge", +"tests/data/acpi/q35/DSDT.nohpet", +"tests/data/acpi/q35/DSDT.numamem", +"tests/data/acpi/q35/DSDT.pvpanic-isa", +"tests/data/acpi/q35/DSDT.tis.tpm12", +"tests/data/acpi/q35/DSDT.tis.tpm2", +"tests/data/acpi/q35/DSDT.viot", +"tests/data/acpi/q35/DSDT.xapic", --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221743; cv=none; d=zohomail.com; s=zohoarc; b=c1g/BLw1PzjD7L/bgoIodJRc3saU93k1RwQCc4cqV5/pRcmcS13Dx9Md1nr0vvF2ADw3ADIApgblY/S7QD3AaMpmNwlyXjlPdC/esf3JQg8qWUCITJK/o4UZM8EMDE2j+tN3WEmRi1rXtnzjV61smd0rvJuVQq+8iDdoi1YRxPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221743; h=Content-Type: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=K1/NvP2OlcAVsXpsL2UsCyef9UBQYtjcrqyS87+PDCI=; b=So0j29BdhXhiNnSEguGvSmn83MeAJfOBZQ7WpFaHYlb1AjDC2x4slWwvR87WwBBW0ye4857ZC0M6ESneGIWIVcaO/S7GEDOWFtL97nyzlz+j47GBXp+2bgaY4x2GUq5Vn79yHtu0tlCPuFEmy/666mRJmOGpOKgQz54B6LK7VuA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221743080555.9616157912855; Mon, 31 Oct 2022 06:09:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIV-0002wN-B1; Mon, 31 Oct 2022 08:53:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIE-00018o-CU for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIC-00037a-0u for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:30 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-661-Rx7eExtzMbaVkzMsgWw9RA-1; Mon, 31 Oct 2022 08:53:25 -0400 Received: by mail-wm1-f71.google.com with SMTP id t20-20020a7bc3d4000000b003c6bfea856aso2575519wmj.1 for ; Mon, 31 Oct 2022 05:53:25 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id i10-20020adffdca000000b00236674840e9sm7052325wrs.59.2022.10.31.05.53.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220807; 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: in-reply-to:in-reply-to:references:references; bh=K1/NvP2OlcAVsXpsL2UsCyef9UBQYtjcrqyS87+PDCI=; b=CLjH3J7vbdTLXU4loWPp46Lf8ndmmMyUynR9Tdsz6Z3+8nsfxf0sD2CymbmE7jyOa2zYlo 9yZ7CHbn3N7QJ/A6z5bDaLJGzLXjjxRCgmtdKANuhyj268dXxFQFD9H5WKV0uDncJnb4Qt Ji5o3fWrB2Z2dy0Y8H4ry61Jg/0NDI0= X-MC-Unique: Rx7eExtzMbaVkzMsgWw9RA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=K1/NvP2OlcAVsXpsL2UsCyef9UBQYtjcrqyS87+PDCI=; b=AiyffDxnUXFtd35DV9j3W7DVZ4cL8XIB83UXrzaNW3s1YGK1HvjpVmtsdzVowo2ntW zC1Isnyb7HrvjlyfuJW2jh7pRc4AaAM3D8ICYl/lbc8u2Us3Mih9D9Ly0i6hHYALuDMj vNI0Tz4InpX6Pf3E1N0L039pU0LDsfKm9XBTJZXqn5XeY60YEs/4Mp8MKfAIyTQe/6Zv sB0tO5E6yInSnxKpeKQbTmzc067ALBRqKhr9nUdjn6TRliTVHPiXKxAdgPoWOQ/eXGZg rS4zele0yz1anfenK4/EN6bBrnQdgZA65w/PtV6FomSm9f4PTahKnJ9/zUcV16LTtvAL 9+mw== X-Gm-Message-State: ACrzQf1Qa+H7X1G4zrTOaaM/X08k0QOSxVrJdQeCXngx492UX2XG15tv QkzUuVdUugOTmWt1W3vyXM9qJftuj8R1MgHUGln5eUF89Po7/c38VmWxoTeJKYZ/Eo7AysTabS9 wfsa5/fxkRz4dF7+SNCjIZEfbKVID2p/ioo9CvVv59D03fWMKRIF3Pe6mGAn6 X-Received: by 2002:a05:600c:418b:b0:3cf:4733:e0b6 with SMTP id p11-20020a05600c418b00b003cf4733e0b6mr8206955wmh.186.1667220804471; Mon, 31 Oct 2022 05:53:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6ujCT3pzkMrRagz13GZYF6T7WZAuE5wiKdbeLnWmNhoRDZ/K8LI0pnXJY4/hIZPzbLA1k56g== X-Received: by 2002:a05:600c:418b:b0:3cf:4733:e0b6 with SMTP id p11-20020a05600c418b00b003cf4733e0b6mr8206932wmh.186.1667220804098; Mon, 31 Oct 2022 05:53:24 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 56/86] acpi: pc/q35: drop ad-hoc PCI-ISA bridge AML routines and let bus ennumeration generate AML Message-ID: <20221031124928.128475-57-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221757679100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov PCI-ISA bridges that are built in PIIX/Q35 are building its own AML using AcpiDevAmlIf interface. Now build_append_pci_bus_devices() gained AcpiDevAmlIf interface support to get AML of devices atached to PCI slots. So drop ad-hoc build_q35_isa_bridge()/build_piix4_isa_bridge() and let PCI bus enumeration to include PCI-ISA bridge AML when it's enumerated by build_append_pci_bus_devices(). AML change is mostly contextual, which moves whole ISA hierarchy directly under PCI host bridge instead of it being described as separate \SB.PCI0.ISA block. Note: If bus/slot that hosts ISA bridge has BSEL set, it will gain new ASUN and _DMS entries (i.e. acpi-index support, but it should not cause any functional change and that is fine from PCI Firmware spec point of view), potentially it's possible to suppress that by adding a flag to PCIDevice but I don't see a reason to do that yet, I'd rather treat bridge just as any other PCI device if it's possible. Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-4-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 75 -------------------------------------------- hw/isa/lpc_ich9.c | 23 ++++++++++++++ hw/isa/piix3.c | 17 +++++++++- 3 files changed, 39 insertions(+), 76 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 26932b4e2c..e1483bb11a 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -435,10 +435,6 @@ static void build_append_pci_bus_devices(Aml *parent_s= cope, PCIBus *bus, pc =3D PCI_DEVICE_GET_CLASS(pdev); dc =3D DEVICE_GET_CLASS(pdev); =20 - if (pc->class_id =3D=3D PCI_CLASS_BRIDGE_ISA) { - continue; - } - /* * Cold plugged bridges aren't themselves hot-pluggable. * Hotplugged bridges *are* hot-pluggable. @@ -1006,7 +1002,6 @@ static void build_piix4_pci0_int(Aml *table) { Aml *dev; Aml *crs; - Aml *field; Aml *method; uint32_t irqs; Aml *sb_scope =3D aml_scope("_SB"); @@ -1015,13 +1010,6 @@ static void build_piix4_pci0_int(Aml *table) aml_append(pci0_scope, build_prt(true)); aml_append(sb_scope, pci0_scope); =20 - field =3D aml_field("PCI0.ISA.P40C", AML_BYTE_ACC, AML_NOLOCK, AML_PRE= SERVE); - aml_append(field, aml_named_field("PRQ0", 8)); - aml_append(field, aml_named_field("PRQ1", 8)); - aml_append(field, aml_named_field("PRQ2", 8)); - aml_append(field, aml_named_field("PRQ3", 8)); - aml_append(sb_scope, field); - aml_append(sb_scope, build_irq_status_method()); aml_append(sb_scope, build_iqcr_method(true)); =20 @@ -1125,7 +1113,6 @@ static Aml *build_q35_routing_table(const char *str) =20 static void build_q35_pci0_int(Aml *table) { - Aml *field; Aml *method; Aml *sb_scope =3D aml_scope("_SB"); Aml *pci0_scope =3D aml_scope("PCI0"); @@ -1162,18 +1149,6 @@ static void build_q35_pci0_int(Aml *table) aml_append(pci0_scope, method); aml_append(sb_scope, pci0_scope); =20 - field =3D aml_field("PCI0.ISA.PIRQ", AML_BYTE_ACC, AML_NOLOCK, AML_PRE= SERVE); - aml_append(field, aml_named_field("PRQA", 8)); - aml_append(field, aml_named_field("PRQB", 8)); - aml_append(field, aml_named_field("PRQC", 8)); - aml_append(field, aml_named_field("PRQD", 8)); - aml_append(field, aml_reserved_field(0x20)); - aml_append(field, aml_named_field("PRQE", 8)); - aml_append(field, aml_named_field("PRQF", 8)); - aml_append(field, aml_named_field("PRQG", 8)); - aml_append(field, aml_named_field("PRQH", 8)); - aml_append(sb_scope, field); - aml_append(sb_scope, build_irq_status_method()); aml_append(sb_scope, build_iqcr_method(false)); =20 @@ -1238,54 +1213,6 @@ static Aml *build_q35_dram_controller(const AcpiMcfg= Info *mcfg) return dev; } =20 -static void build_q35_isa_bridge(Aml *table) -{ - Aml *dev; - Aml *scope; - Object *obj; - bool ambiguous; - - /* - * temporarily fish out isa bridge, build_q35_isa_bridge() will be dro= pped - * once PCI is converted to AcpiDevAmlIf and would be ble to generate - * AML for bridge itself - */ - obj =3D object_resolve_path_type("", TYPE_ICH9_LPC_DEVICE, &ambiguous); - assert(obj && !ambiguous); - - scope =3D aml_scope("_SB.PCI0"); - dev =3D aml_device("ISA"); - aml_append(dev, aml_name_decl("_ADR", aml_int(0x001F0000))); - - call_dev_aml_func(DEVICE(obj), dev); - aml_append(scope, dev); - aml_append(table, scope); -} - -static void build_piix4_isa_bridge(Aml *table) -{ - Aml *dev; - Aml *scope; - Object *obj; - bool ambiguous; - - /* - * temporarily fish out isa bridge, build_piix4_isa_bridge() will be d= ropped - * once PCI is converted to AcpiDevAmlIf and would be ble to generate - * AML for bridge itself - */ - obj =3D object_resolve_path_type("", TYPE_PIIX3_PCI_DEVICE, &ambiguous= ); - assert(obj && !ambiguous); - - scope =3D aml_scope("_SB.PCI0"); - dev =3D aml_device("ISA"); - aml_append(dev, aml_name_decl("_ADR", aml_int(0x00010000))); - - call_dev_aml_func(DEVICE(obj), dev); - aml_append(scope, dev); - aml_append(table, scope); -} - static void build_x86_acpi_pci_hotplug(Aml *table, uint64_t pcihp_addr) { Aml *scope; @@ -1465,7 +1392,6 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, aml_append(sb_scope, dev); aml_append(dsdt, sb_scope); =20 - build_piix4_isa_bridge(dsdt); if (pm->pcihp_bridge_en || pm->pcihp_root_en) { build_x86_acpi_pci_hotplug(dsdt, pm->pcihp_io_base); } @@ -1510,7 +1436,6 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, =20 aml_append(dsdt, sb_scope); =20 - build_q35_isa_bridge(dsdt); if (pm->pcihp_bridge_en) { build_x86_acpi_pci_hotplug(dsdt, pm->pcihp_io_base); } diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 4553b5925b..facc3745e4 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -806,6 +806,7 @@ static void ich9_send_gpe(AcpiDeviceIf *adev, AcpiEvent= StatusBits ev) =20 static void build_ich9_isa_aml(AcpiDevAmlIf *adev, Aml *scope) { + Aml *field; BusChild *kid; ICH9LPCState *s =3D ICH9_LPC_DEVICE(adev); BusState *bus =3D BUS(s->isa_bus); @@ -813,6 +814,28 @@ static void build_ich9_isa_aml(AcpiDevAmlIf *adev, Aml= *scope) /* ICH9 PCI to ISA irq remapping */ aml_append(scope, aml_operation_region("PIRQ", AML_PCI_CONFIG, aml_int(0x60), 0x0C)); + /* Fields declarion has to happen *after* operation region */ + field =3D aml_field("PIRQ", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); + aml_append(field, aml_named_field("PRQA", 8)); + aml_append(field, aml_named_field("PRQB", 8)); + aml_append(field, aml_named_field("PRQC", 8)); + aml_append(field, aml_named_field("PRQD", 8)); + aml_append(field, aml_reserved_field(0x20)); + aml_append(field, aml_named_field("PRQE", 8)); + aml_append(field, aml_named_field("PRQF", 8)); + aml_append(field, aml_named_field("PRQG", 8)); + aml_append(field, aml_named_field("PRQH", 8)); + aml_append(scope, field); + + /* hack: put fields into _SB scope for LNKx to find them */ + aml_append(scope, aml_alias("PRQA", "\\_SB.PRQA")); + aml_append(scope, aml_alias("PRQB", "\\_SB.PRQB")); + aml_append(scope, aml_alias("PRQC", "\\_SB.PRQC")); + aml_append(scope, aml_alias("PRQD", "\\_SB.PRQD")); + aml_append(scope, aml_alias("PRQE", "\\_SB.PRQE")); + aml_append(scope, aml_alias("PRQF", "\\_SB.PRQF")); + aml_append(scope, aml_alias("PRQG", "\\_SB.PRQG")); + aml_append(scope, aml_alias("PRQH", "\\_SB.PRQH")); =20 QTAILQ_FOREACH(kid, &bus->children, sibling) { call_dev_aml_func(DEVICE(kid->child), scope); diff --git a/hw/isa/piix3.c b/hw/isa/piix3.c index 48f9ab1096..d81b385e26 100644 --- a/hw/isa/piix3.c +++ b/hw/isa/piix3.c @@ -311,12 +311,27 @@ static void pci_piix3_realize(PCIDevice *dev, Error *= *errp) =20 static void build_pci_isa_aml(AcpiDevAmlIf *adev, Aml *scope) { + Aml *field; BusChild *kid; BusState *bus =3D qdev_get_child_bus(DEVICE(adev), "isa.0"); =20 /* PIIX PCI to ISA irq remapping */ aml_append(scope, aml_operation_region("P40C", AML_PCI_CONFIG, - aml_int(0x60), 0x04)); + aml_int(0x60), 0x04)); + /* Fields declarion has to happen *after* operation region */ + field =3D aml_field("P40C", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); + aml_append(field, aml_named_field("PRQ0", 8)); + aml_append(field, aml_named_field("PRQ1", 8)); + aml_append(field, aml_named_field("PRQ2", 8)); + aml_append(field, aml_named_field("PRQ3", 8)); + aml_append(scope, field); + + /* hack: put fields into _SB scope for LNKx to find them */ + aml_append(scope, aml_alias("PRQ0", "\\_SB.PRQ0")); + aml_append(scope, aml_alias("PRQ1", "\\_SB.PRQ1")); + aml_append(scope, aml_alias("PRQ2", "\\_SB.PRQ2")); + aml_append(scope, aml_alias("PRQ3", "\\_SB.PRQ3")); + QTAILQ_FOREACH(kid, &bus->children, sibling) { call_dev_aml_func(DEVICE(kid->child), scope); } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221097; cv=none; d=zohomail.com; s=zohoarc; b=NJht1haEET7XuVyLFjS92840WpGdWUd2WWRwD0EBmOaoZxoZDJQacODsl3Vg17aBDnz6ZxEl7Htj8cQQ7ui3yzgtK+5rcCC9vhz7820Zph1QHVvnzf8wJbRGZ3Ehz0dS6SW+M7irbY/m1SNd8v3Qa0OOUyU7eaUdIipfSFdwyLo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221097; h=Content-Type: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=UKvQS3esmVMK4K8LqMD4PZSHbx1Cj4SaLnKYRfNCmZ0=; b=PYKdVoYAUtsFSEwdbUk4Xtf2Vn09P80XJz6c5CPk+bqF7ZnwHcZCo0bBN8qo5HbwHzF+IFofM/m20fq3ck0FAGRdrz5pG+POAy0W8IQtJE+VNA/fPJ8KHgYQLUbWZvyegEnSnkaFIKCwVMuhw7xTByd+x5mGJU3EZc7unvZG26w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722109699946.2175131960131; Mon, 31 Oct 2022 05:58:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIW-00032T-8h; Mon, 31 Oct 2022 08:53:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIK-0001su-0d for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIF-000386-5b for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:35 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-609-vJ0nrZLhN0amvnBybTjmbg-1; Mon, 31 Oct 2022 08:53:29 -0400 Received: by mail-wm1-f69.google.com with SMTP id m34-20020a05600c3b2200b003cf549cb32bso6203950wms.1 for ; Mon, 31 Oct 2022 05:53:28 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id jb1-20020a05600c54e100b003c6b874a0dfsm7678637wmb.14.2022.10.31.05.53.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220810; 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: in-reply-to:in-reply-to:references:references; bh=UKvQS3esmVMK4K8LqMD4PZSHbx1Cj4SaLnKYRfNCmZ0=; b=jMT1/ZdmcqJWf/McPAwVkBqVVLyi0WmvacydCgXi4r2225xOSlGJ8bHhCeR0naFsuUohKh hEiuhLdtcTnP8aedyirozWp1DHqNMDU3Yuy4JLuCo77qzCZcwR7c1NzK9bKPyzHjFlUJWV St5OvpUBMLepbyRIYyzOe26EHs6RQQA= X-MC-Unique: vJ0nrZLhN0amvnBybTjmbg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UKvQS3esmVMK4K8LqMD4PZSHbx1Cj4SaLnKYRfNCmZ0=; b=VMUNy6xIOAVv2kfCQJpuPfhbr4QjoS6QBAECaIVw7Je5zK9iamCr+cTbSs4luTk0n1 05t0N6KoVGwrLij08ayZ5hhs01aBRt0maXkZjCA0+fzn/5960T7z3ps6HokUiNX6FR2U doxW23rVF8MVWWID/KjuRu+YY+VcX57xxuPIaisDoY/eCEZ6gAxirATYi16yZlnlXZW2 mudjoYyyG98TqlOCgkqLmQz+LFpVC3GL4tbk5QU6iszHVizjDtMSAFjG5sQecCegsT8J kyzj0ak1sC5ITecSgM66RbeCLFP9S4UNgyJeCHhwf1k+XxB6znlkE7sCtEoyECy38OkU cKOg== X-Gm-Message-State: ACrzQf0NxAmqA/nRJxmNEdNTm+8rnNDULu7jxp85Bwe+y1Y05C7qda55 MWg6BOobkYBHp5K3+6PKzQKpE/t3tOj1YLNt+a6o0f5nbl1a0IzM23Cl7Y0xYCcXmAUCly0oIoz 3u2bz7f/T4j5l7PK7r8M0lIv8PAIokggBdV4aeRsz1bBLvWmEeDTgabKl8VIj X-Received: by 2002:a05:600c:414c:b0:3cf:7728:b313 with SMTP id h12-20020a05600c414c00b003cf7728b313mr1220957wmm.47.1667220807289; Mon, 31 Oct 2022 05:53:27 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7AA0gF1sA7C5KfSn4Lg6QcR4AhjGHvQN78YKgEILtjp4XpDGEbiF2QaW9WNGFFqmUC1cdqLA== X-Received: by 2002:a05:600c:414c:b0:3cf:7728:b313 with SMTP id h12-20020a05600c414c00b003cf7728b313mr1220924wmm.47.1667220806715; Mon, 31 Oct 2022 05:53:26 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 57/86] tests: acpi: update expected DSDT after ISA bridge is moved directly under PCI host bridge Message-ID: <20221031124928.128475-58-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221098361100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov example of the change for PC machine with hotplug disabled on root buss (no= BSEL case): - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) + Field (S08.P40C, ByteAcc, NoLock, Preserve) =3D=3D=3D - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) ... - } - } - Scope (_SB) =3D=3D=3D + Device (S08) + { + Name (_ADR, 0x00010000) // _ADR: Address + OperationRegion (P40C, PCI_Config, 0x60, 0x04) ... + } + Device (S10) { Name (_ADR, 0x00020000) // _ADR: Address with hotplug enabled on root bus (i.e. bus has BSEL configured), a following addtional entries will be seen: + Name (ASUN, One) + Method (_DSM, 4, Serialized) // _DSM: Device-Specific Me= thod + { + Local0 =3D Package (0x02) + { + BSEL, + ASUN + } + Return (PDSM (Arg0, Arg1, Arg2, Arg3, Local0)) + } similar changes are expected for Q35 modulo: - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) + Field (SF8.PIRQ, ByteAcc, NoLock, Preserve) and bridge address Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-5-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 34 -------------------- tests/data/acpi/pc/DSDT | Bin 6422 -> 6496 bytes tests/data/acpi/pc/DSDT.acpierst | Bin 6382 -> 6456 bytes tests/data/acpi/pc/DSDT.acpihmat | Bin 7747 -> 7821 bytes tests/data/acpi/pc/DSDT.bridge | Bin 9496 -> 9570 bytes tests/data/acpi/pc/DSDT.cphp | Bin 6886 -> 6960 bytes tests/data/acpi/pc/DSDT.dimmpxm | Bin 8076 -> 8150 bytes tests/data/acpi/pc/DSDT.hpbridge | Bin 6382 -> 6456 bytes tests/data/acpi/pc/DSDT.hpbrroot | Bin 3069 -> 3107 bytes tests/data/acpi/pc/DSDT.ipmikcs | Bin 6494 -> 6568 bytes tests/data/acpi/pc/DSDT.memhp | Bin 7781 -> 7855 bytes tests/data/acpi/pc/DSDT.nohpet | Bin 6280 -> 6354 bytes tests/data/acpi/pc/DSDT.numamem | Bin 6428 -> 6502 bytes tests/data/acpi/pc/DSDT.roothp | Bin 6656 -> 6694 bytes tests/data/acpi/q35/DSDT | Bin 8320 -> 8418 bytes tests/data/acpi/q35/DSDT.acpierst | Bin 8337 -> 8435 bytes tests/data/acpi/q35/DSDT.acpihmat | Bin 9645 -> 9743 bytes tests/data/acpi/q35/DSDT.applesmc | Bin 8366 -> 8464 bytes tests/data/acpi/q35/DSDT.bridge | Bin 11449 -> 11547 bytes tests/data/acpi/q35/DSDT.cphp | Bin 8784 -> 8882 bytes tests/data/acpi/q35/DSDT.cxl | Bin 9646 -> 9744 bytes tests/data/acpi/q35/DSDT.dimmpxm | Bin 9974 -> 10072 bytes tests/data/acpi/q35/DSDT.ipmibt | Bin 8395 -> 8493 bytes tests/data/acpi/q35/DSDT.ipmismbus | Bin 8409 -> 8507 bytes tests/data/acpi/q35/DSDT.ivrs | Bin 8337 -> 8435 bytes tests/data/acpi/q35/DSDT.memhp | Bin 9679 -> 9777 bytes tests/data/acpi/q35/DSDT.mmio64 | Bin 9450 -> 9548 bytes tests/data/acpi/q35/DSDT.multi-bridge | Bin 8640 -> 8738 bytes tests/data/acpi/q35/DSDT.nohpet | Bin 8178 -> 8276 bytes tests/data/acpi/q35/DSDT.numamem | Bin 8326 -> 8424 bytes tests/data/acpi/q35/DSDT.pvpanic-isa | Bin 8421 -> 8519 bytes tests/data/acpi/q35/DSDT.tis.tpm12 | Bin 8926 -> 9024 bytes tests/data/acpi/q35/DSDT.tis.tpm2 | Bin 8952 -> 9050 bytes tests/data/acpi/q35/DSDT.viot | Bin 9429 -> 9527 bytes tests/data/acpi/q35/DSDT.xapic | Bin 35683 -> 35781 bytes 35 files changed, 34 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 570b17478e..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,35 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/pc/DSDT", -"tests/data/acpi/pc/DSDT.acpierst", -"tests/data/acpi/pc/DSDT.acpihmat", -"tests/data/acpi/pc/DSDT.bridge", -"tests/data/acpi/pc/DSDT.cphp", -"tests/data/acpi/pc/DSDT.dimmpxm", -"tests/data/acpi/pc/DSDT.hpbridge", -"tests/data/acpi/pc/DSDT.hpbrroot", -"tests/data/acpi/pc/DSDT.ipmikcs", -"tests/data/acpi/pc/DSDT.memhp", -"tests/data/acpi/pc/DSDT.nohpet", -"tests/data/acpi/pc/DSDT.numamem", -"tests/data/acpi/pc/DSDT.roothp", -"tests/data/acpi/q35/DSDT", -"tests/data/acpi/q35/DSDT.acpierst", -"tests/data/acpi/q35/DSDT.acpihmat", -"tests/data/acpi/q35/DSDT.applesmc", -"tests/data/acpi/q35/DSDT.bridge", -"tests/data/acpi/q35/DSDT.cphp", -"tests/data/acpi/q35/DSDT.cxl", -"tests/data/acpi/q35/DSDT.dimmpxm", -"tests/data/acpi/q35/DSDT.ipmibt", -"tests/data/acpi/q35/DSDT.ipmismbus", -"tests/data/acpi/q35/DSDT.ivrs", -"tests/data/acpi/q35/DSDT.memhp", -"tests/data/acpi/q35/DSDT.mmio64", -"tests/data/acpi/q35/DSDT.multi-bridge", -"tests/data/acpi/q35/DSDT.nohpet", -"tests/data/acpi/q35/DSDT.numamem", -"tests/data/acpi/q35/DSDT.pvpanic-isa", -"tests/data/acpi/q35/DSDT.tis.tpm12", -"tests/data/acpi/q35/DSDT.tis.tpm2", -"tests/data/acpi/q35/DSDT.viot", -"tests/data/acpi/q35/DSDT.xapic", diff --git a/tests/data/acpi/pc/DSDT b/tests/data/acpi/pc/DSDT index da2a3e5c0551ac2d1d8a0a40b92d3235d5757475..5b4624cb68c78eab6e356987974= b9bee6c9a1785 100644 GIT binary patch delta 186 zcmbPc^uUPACD?X0~rcpfw+cnt|5qP1m_xoxW;g<@y1 z*H+9`A=3Dtnoo+IATC5Q*8hk?T}IMk1EG9$lSa&$w0iGec{R{|GHbfXlA%@`0AXuts^ u3_*kuh%n}00}00HfeZz)KwLvO*AT=3Dtf^&^PTw^%bc;l`-#?AY94Y&c&fia{2 delta 139 zcmdmC^v;mWCD5QBe2m+6GZ&v8Hvqa2Cba+n diff --git a/tests/data/acpi/pc/DSDT.acpihmat b/tests/data/acpi/pc/DSDT.acp= ihmat index 884d4871a2a0b87db2c0dd7e6f32486ba9b7e424..b84f3b47c37e427b927c3603630= 7db6e83a843e5 100644 GIT binary patch delta 186 zcmX?X(`(D+66_MvE62dV_;w;!$7W3?Uq&VmlgSm#8#eo~MDTIB+=3D_`0c8VA9xjA`* zkgb@jLa>2FJV(5vOArrG4+Do|aHt>S5r{D6 d*gTObf{)90XAH;^0oR?AKMUAyHWv=3D#1^^j}CO`lH diff --git a/tests/data/acpi/pc/DSDT.bridge b/tests/data/acpi/pc/DSDT.bridge index 31a79aa47673c14f7e564475c39bd38c872f8165..6771620078086e42b445474b167= 97094e0d0a801 100644 GIT binary patch delta 167 zcmbQ?^~j6MCDs+4|a+d=3D$$#a zh1ZVBRblcxKBMI5h5!=3D-XC|%$E|%y4h=3DU+z4&0K_yA{5gXktt3D021c#e2SmmnUX0*2^@ z022deCawf7md$f`@)$Qx^kZc5Gn@R7af4cPql!K=3DNE=3D8CNEu^5P@n+^kT3)hMj*nN eWAj8NZBFj~O2!zFEdp(olaF)TZRX(%69)iL9VOrZ diff --git a/tests/data/acpi/pc/DSDT.cphp b/tests/data/acpi/pc/DSDT.cphp index 8b0cae4dbfbd083a43751a7c94dc5c76f89084a7..298fa1592676b3a2089b08eff5f= 764e04391b961 100644 GIT binary patch delta 186 zcmaE6y1|UgCDM2jDA0fdNEm_$BM@QC dv3VlXZ!Rw1oiQLw1YCDcp2lmt`4)c|Hvml~Cp`cF diff --git a/tests/data/acpi/pc/DSDT.dimmpxm b/tests/data/acpi/pc/DSDT.dimm= pxm index 38865fb66747a6ee1cf2066b925be6eba064625a..9fcadb266b92fc4942621f0fd91= 9703723de2fd9 100644 GIT binary patch delta 186 zcmeCNzh=3D+n66_LkO`d^)v2G$)$7W3?Uq&VmlgSm#8#eo~Eac~MxfK&1>=3DZBHb93@f zVOud*g%sG`pd(gxBpdAE?{=3D7~%T`MG>|#(>Nd QaNRlCM#y$^gGd-R0In+{5&!@I diff --git a/tests/data/acpi/pc/DSDT.hpbridge b/tests/data/acpi/pc/DSDT.hpb= ridge index abcd6d9d309a8f9a9080edc64df7a6c195b5885f..99461b771eec2043263b5bc3c10= 9a08969a99af9 100644 GIT binary patch delta 186 zcmaE7xWkCcCD z*H+9`A=3Dtnoo+IATC5Q*8hk?T}IMk1EG9$lSa&$w0iGec{R{|GHbfXlA%@`0AXuts^ u3_*kuh%n}00}00HfeZz)KwLvO*AT=3Dtf^&^PTw^%bc;l`-#?AY94Y&c&fia{2 delta 139 zcmdmC^v;mWCD5QBe2m+6GZ&v8Hvqa2Cba+n diff --git a/tests/data/acpi/pc/DSDT.hpbrroot b/tests/data/acpi/pc/DSDT.hpb= rroot index dd2c8c0c8c5bf9895eb524e094d5597515b4803e..b10b17cb1111f6b5d61da4aa1c7= 54f2921a4ac1c 100644 GIT binary patch delta 184 zcmew>zF30GCDzdQxrQLF5sWJsXawRL!}x*58+YX~PCmeG3jp{LFk1is delta 146 zcmZ21@mHM7CD b!Xf3s8UwOGz=3D0KF2Y0Z60mO>QPr2;?&p0K@ diff --git a/tests/data/acpi/pc/DSDT.ipmikcs b/tests/data/acpi/pc/DSDT.ipmi= kcs index e819ce69461a36b6fab5e2ffeba90dfe558724a7..aff3e9bbe1fdbf783c49d07a49c= 2e16317a2871e 100644 GIT binary patch delta 166 zcmca-w8EInCDNTMOeP;--mrNZi#8{h&%K!VV5fKimwS^> z^V*8}sstNY#B;ILlD;p&NTvYjp1D5jk~rnZf4_);06GVOD_EY delta 139 zcmZ2se9wr>CD=3DZBHb93?~ zAzLw5ge4FGUoCS(8r diff --git a/tests/data/acpi/pc/DSDT.nohpet b/tests/data/acpi/pc/DSDT.nohpet index b413d9f31d483eca02f45ad09af2f556581ec381..ceee7722ceed8a7e8f61a37805a= 4c855f47244a8 100644 GIT binary patch delta 186 zcmeA$ykyAb66_LkNrHia@z+GIj?J1(zKl#BCX*|eH*EG}najcDaw{f2*ePDX=3DjPzdQxrQLF5u9rT;u^!b#v6C#F>W^Cjo=3D0V7wI#4 delta 139 zcmca)*kQ=3D!66_MvA;G}FST>QXL&Hr{FFx2QKET=3D2AiBv@!ZX-0o+IATC5Q*8fFZge zz{J3ri7SDNWit;?9^=3DM|evC|hW|JQ>ZcvMERMBS!X#;5iDPs%>3N+vV5{4kc2t*ij dY@Wz8mxIf9XAH;^0oR?AEx2tr*YJjM0|5S~C4B$@ diff --git a/tests/data/acpi/pc/DSDT.numamem b/tests/data/acpi/pc/DSDT.numa= mem index 9e701b2983f9ec45af9c26d801545c2b5d112a10..e03f4d07b86018d12def37b5397= ba9673548e2b7 100644 GIT binary patch delta 186 zcmbPZ^vsCMCD=3DZBHb8~Vh zudSG?La>2FJV(5vOArrG4+Do|aHt>SE4NhlZP^UVN}qe1Nm3L3ER+glDj0JV(5vOArrG0Yh{{ zfQf-K6ITKk%jN|MhTC?t0ACn407khWt^fc4 diff --git a/tests/data/acpi/pc/DSDT.roothp b/tests/data/acpi/pc/DSDT.roothp index 8c3956c9ecc63133cc800f1d2d07a1392a35d548..418cc92e4c061ad21e1d281e0b5= e6114e283b7d3 100644 GIT binary patch delta 190 zcmZoLS!TlJ66_M9CdI(Oczz;R$7W3?Uq&VmlgSm#8#eo~Xmi$kJ&TDCc8V8pdKTd9 zX%OAS9c*9_&k^tF62uVQX#vE)Q!5BS|xgZvZYY68Wg1AO7u3(@Mh;Izz2O4kOmB+Yw3U3Y%00)~hY5)KL delta 133 zcmZ2x(qO{n66_MfAjQDIs56nPL&!~1FFx2QKET=3D2AiBv@!ZX-$@;z?x&AvRjj2kEV zF*5m?O@7F@K`pvbMV}d@2&f=3DFz{J3rF(4?=3DfCESvf(RoJVa&04B9k_!l>3PokdXrZ X$04S22OAi~bHqEk1a02Qo67?Lm(C@O diff --git a/tests/data/acpi/q35/DSDT b/tests/data/acpi/q35/DSDT index 3870958969b1c0e29f9dd26a1256359e90897d3e..ea35dc5eba8433a8dcb54815f19= ed6239f2534e7 100644 GIT binary patch delta 229 zcmZp0eB{XG66_N4NP&TYal=3DL~Z^q4;ObLukO<|i)Gq2>^yg{gmm&-vRCO+6HUcf_s zvWfn@qf&T;eCUFg{@y LVGD5f3t<2Npb9~@ delta 105 zcmaFl*x<^yg{gmm&;KxCO+6HUcggf zvWfn@qf&T;eCUFg{@y LVGD5f3t<2NiwZ%W delta 105 zcmezDIMI>ICDzkclgSizm9#U~;37emz@2P@rRs9!MXE z1>!ovxlSOiGo0%T;<~`OE+DQeoa+kWy1}__Ag(){>ki_2z_}jLO(xz>F7cCF7@x3< Lumw2#g)jgB@by6W delta 105 zcmeD8S?kT^66_MPR+WK)@&86HZ$=3D?!LB053r}zM8PlMjLMxfVi%3t}BS^2IsngxbASSJBaH6=3DXyjp=3D>+>a$8T<76k=3Do- LVGD5f3t<2NSgJs! delta 105 zcmbQ>w9b*sCD`qwz*AZ$=3D?U5xw|er}zM8PlMWkdGooOW>Z*-%TJ~K!eP)Yn`PkH^#34+bMoGdXQ?E-Erli$eMvWu_jCF_L^qjuJGsP9Zee^P UC?XKx>=3D(iirx$E!5D#Jk0QJE|ng9R* delta 116 zcmbOowKI~-CDW-i$)df_m}6PVoWGo(9oPZUUacj+5iH#V0H1yxJVX zn8?V~7rA*m(@H+x=3Dte7jW{@hNiulPD+WMOl1e^yg?|4pUXiZCO+6HUcf_s zGLMq2LUfaZbg-L6JV(5vOArqOgFHiYLx5*cAQM*t7f*Df!Q@6E{d%^5pg_kMJ&-;S z3&eGTbDcn3XE@gx#C3slT|it{IM)@#b%S%=3DKwNh?*B!+5fO9>fn@qf&T;eCUFg{@y LVGD5f3t<2N)oDPt delta 104 zcmdnwdclRuCD9IB?@_R27hwx<_6uPE E08AJii~s-t diff --git a/tests/data/acpi/q35/DSDT.cxl b/tests/data/acpi/q35/DSDT.cxl index 20d0fb64ea52b2f4979105c934aadb6f416e2b71..aeea64d1cecad0ad011870ed5e0= 4bfea1ae62510 100644 GIT binary patch delta 229 zcmZ4IJ;8^|CD^yg{f>h|5VSCO+6HUcgIn zvWIHCLUfaZbg-L6JV(5vOArqOgFHiYLx5*cAQM*t7f*Df!Q@6E{d%^5pg_kMJ&-;S z3&eGTbDcn3XE@gx#C3slT|it{IM)@#b%S%=3DKwNh?*B!+5fO9>fn@qf&T;eCUFg{@y LVGD5f3t<2N6HY-N delta 105 zcmbQ>v(B5#CD^yg}%PFqeZuOnk6Yynu)N zjvk#fw=3DB)t~-e90q1%|H+i!7dKzwSVbo`2 M7hwx<_6uPE0Ka}f-~a#s delta 106 zcmZ4MblQ>2CDWkdGooOW>Z*-%TJ~K!eP)Yn`PkH^#34%?$Tz)JuApHVvER)~J*|LkU1vvYK GFaQ91ARZV1 diff --git a/tests/data/acpi/q35/DSDT.ipmismbus b/tests/data/acpi/q35/DSDT.= ipmismbus index 479df48cd37af888317d63eac8f565f370201490..f6e124137721312722c820b5c08= 4a143492945c9 100644 GIT binary patch delta 229 zcmccVxZ8=3D#CDB&|h3F;+>0mdDc#e2SmmnSn26=3D|)h5*l?KqjsPE}rN{gUO9T`t@u9L4l4jdLVru z7KrNv=3DQ@G7&Ty_Xi0cC9x`4Q@aIPze>jvk#fw=3DB)t~-e90q1%|H<@@lxx`OyVSK_a L!WQ7{7s3DlR3kxi delta 123 zcmdn(bkmW`CD^yg{gmm&;KxCO+6HUcggf zvWfn@qf&T;eCUFg{@y LVGD5f3t<2NiwZ%W delta 105 zcmezDIMI>ICDq3sap6WTZ^q4;ObLukO<|i)Gq2>^yg}%q5SN2OOnk6Yynu)N z0mdDc#e2SmmnSn26=3D|)h5*l?KqjsPE}rN{gUO9T`t@u9L4l4jdLVru z7KrNv=3DQ@G7&Ty_Xi0cC9x`4Q@aIPze>jvk#fw=3DB)t~-e90q1%|H<@@lxx`OyVSK_a L!WQ7{7s3DlsQW?J delta 105 zcmdn!bKaZFCDCT+h3F;+>0mdDc#e2SmmnSn26=3D|)h5*l?KqjsPE}rN{gUO9T`t@u9L4l4jdLVru z7KrNv=3DQ@G7&Ty_Xi0cC9x`4Q@aIPze>jvk#fw=3DB)t~-e90q1%|H<@@lxx`OyVSK_a L!WQ7{7s3Dl&Zt5L delta 123 zcmX@(^~#gWCDs diff --git a/tests/data/acpi/q35/DSDT.multi-bridge b/tests/data/acpi/q35/DS= DT.multi-bridge index 88bf47ab1805e4ef1dd8039933c5aa8144da37ac..7c14ce3a986fa06e88f3adc088f= aae54bdd2d8e4 100644 GIT binary patch delta 250 zcmX@$yvT*iCD72TNs~6 Yi%11H`-L#X=3D>;2F#)Ft3mI0Ur05;)9wEzGB delta 144 zcmZ4Fa=3D@9(CD0mdDc#e2SmmnSn26=3D|)h5*l?KqjsPE}rN{gUO9T`t@u9L4l4jdLVru z7KrNv=3DQ@G7&Ty_Xi0cC9x`4Q@aIPze>jvk#fw=3DB)t~-e90q1%|H<@@lxx`OyVSK_a L!WQ7{7s3Dl^Up#w delta 123 zcmccO@X4ObCDzkclgSizm9#U~;37emz@2P@rRs9!MXE z1>!ovxlSOiGo0%T;<~`OE+DQeoa+kWy1}__Ag(){>ki_2z_}jLO(xz>F7cCF7@x3< Lumw2#g)jgBaBM+- delta 123 zcmaFi*yhOP66_Mvroh0!_+}%QH=3D~BLpk92iQ+$B4r$Ka+n}BDqV?0N^qe~DE1A{z6 zbVGn=3DP#_am0vFHZZ}P7zkclgSizm9#VDd8|{d%^5pg_kMJ&-;S z3&eGTbDcn3XE@gx#C3slT|it{IM)@#b%S%=3DKwNh?*B!+5fO9>fn}DXdhHY+P^kifg LVGD5f3t<2NL%%?L delta 106 zcmX@^^wg2dCDp7Q#e69k)hx%^mSK>7vTSSG)bvt<`y3vl)e GVE_Qr;2#kH diff --git a/tests/data/acpi/q35/DSDT.tis.tpm12 b/tests/data/acpi/q35/DSDT.= tis.tpm12 index 253a66e65818d1df67b13d4b70f68add78adff98..7a213e3db230064cedf3a30b83b= 11128286eaeba 100644 GIT binary patch delta 230 zcmccTdccj#CDjvk#fw=3DB)t~-e90q1%|H#w+=3D1o&=3DlVKifA M7hwx<_6uPE0Ky4DCIA2c delta 124 zcmX@$cF&c|CDB_D5eqm@20NFzwozkclgSizm9#VDeiL{d%^5pg_kMJ&-;S z3&eGTbDcn3XE@gx#C3slT|it{IM)@#b%S%=3DKwNh?*B!+5fO9>fo4nLQ0(>{OFa|KQ Mi?9Va`-Lz703b9$$p8QV delta 124 zcmccR_QRFSCD`LUfaZbg-L6JV(5vOArqOgFHiYLx5*cAQM*t7f*Df!Q@6E{d%^5pg_kMJ&-;S z3&eGTbDcn3XE@gx#C3slT|it{IM)@#b%S%=3DKwNh?*B!+5fO9>fn@qf&T;eCUFg{@y LVGD5f3t<2NOvpiI delta 123 zcmdn)b=3D8y0CD>FfuiTZ9dJsl5g_{q0|a42ZfmUV5fKi z5BbUR-L?wRO%Bq*ZWi$z@s2J*JPZu-4ABh%o)o$2v3CN7s?myqOc1_s6-8@aq0HJkF_Dp}FLLvCrj>lW(T!I6%piRrJ(G31^fxC6rdDwI YvBZE36mVmie7@6`U4$*b*)N0v04#(g#Q*>R --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222336; cv=none; d=zohomail.com; s=zohoarc; b=QejZEDDWpXdmfmuG1/Q4xclwXa6SuQF+8KTEqpf/2/ApFnRWbUgGw0FUErQs+xjsj1PwUlzJc8LR3xsgvo/dJxN6wR8i3/2OxrMGmiZYYpstE7+doc2bv9EVk/fzakF1ljozseb/wdhPN8cuEhxJs+R7Q80QzQbbQQWBG5k2D/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222336; h=Content-Type: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=WMGHKMTuV3NWmf5zc/IrtRbi4j/EPK5ANMvuhukrkpA=; b=XhANsitAFvejwsCQxQEb8+B702yKsJwlb/83315Yjl6BoEt/qCF7XIMK7GzSjvFgYIacpNgutWJ/gjZMQYPnykGJempYmhtFHdVlViiJy5B/T5jXT7cOOUzCiOIpZwlb6Hae1RGELv3bzD3Yif1KY3XDnSzipeWKkM3dbV3og14= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722233653623.932016809053266; Mon, 31 Oct 2022 06:18:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIX-00038R-Ea; Mon, 31 Oct 2022 08:53:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIK-0001xt-Pl for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIH-0003Aj-Vt for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:36 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-349-wCddflUvMQaHVVz7fu5Ffg-1; Mon, 31 Oct 2022 08:53:31 -0400 Received: by mail-wm1-f72.google.com with SMTP id v23-20020a1cf717000000b003bff630f31aso2571121wmh.5 for ; Mon, 31 Oct 2022 05:53:30 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id i11-20020a1c540b000000b003a3442f1229sm7218842wmb.29.2022.10.31.05.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220813; 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: in-reply-to:in-reply-to:references:references; bh=WMGHKMTuV3NWmf5zc/IrtRbi4j/EPK5ANMvuhukrkpA=; b=ZCjmYbL6SRtyX/Q8EN22ZjbJBF6qskUur3mVBeHMrxZisdpJSczJp9lW6NlF5NpcIoafi5 wFyq4Js7he/S9EJTAP6DSmbQHB9DOTNy3hTz/fkyBFty/bcP8rHGWAxA+cPPQCElVcoov2 m6SORcw8l+t9xTM9A1ckIe9fclmjFHQ= X-MC-Unique: wCddflUvMQaHVVz7fu5Ffg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WMGHKMTuV3NWmf5zc/IrtRbi4j/EPK5ANMvuhukrkpA=; b=w3Vy5uR+9p20XAvitU0cCfbEK9cjle7P7sVE/aaWAJvZVG4y6JGt7clutVN3EiIbmD Z8E5k4ozoFXIJDdbdKra787u09829nJ8nMuUPgRRnHRF4C69fu+4mDTQuyZ7XwGHoRsq CUkmTbT8VjiAVfnszqHdm3rzc05HSRefv65bms0DZ56KMbLvQ+NnRxLnKmvAxlrL/clX AcKN72Zce8aaVlBCV3KyJvKiL3DG50WJRe7AC+gf/rV3Vf9gbJL/YMjnH/ceEI3bUSZ7 cClvfif3YW++Qu7iiRFYEHriEvzTTfCTgw76o7wp14DyFv6iJPyAhjY/09570gZyRPNS OZMQ== X-Gm-Message-State: ACrzQf3k3oOu+7uXCI52N7Kycehy7bZ5OXYxw2jb62ErSalWF77rEK6Z inmxVb/w/UZmzx/158AN+oO5FwmnLo9TQ+9C9wQ9ee5qrI6QMsfbtU4ChmWTEG02SrY/8+0dSDN Q43DJe5Xg37hpaDwrgldxB6U5Wj8wTbrfd1uKzJUsEzyoxZZtfT1PwyLV4AvZ X-Received: by 2002:adf:f58e:0:b0:236:a8b2:373 with SMTP id f14-20020adff58e000000b00236a8b20373mr8112297wro.575.1667220809575; Mon, 31 Oct 2022 05:53:29 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4oXKJsCeZwZh+jZ8WBUGMKsKoMEHikJ2/c43UaiR+GZz+E8nmUZPRYGtLZLJNSYMuiU9ShWw== X-Received: by 2002:adf:f58e:0:b0:236:a8b2:373 with SMTP id f14-20020adff58e000000b00236a8b20373mr8112281wro.575.1667220809267; Mon, 31 Oct 2022 05:53:29 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 58/86] tests: acpi: whitelist DSDT before generating ICH9_SMB AML automatically Message-ID: <20221031124928.128475-59-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222338441100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-6-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..fd5852776c 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,22 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/q35/DSDT", +"tests/data/acpi/q35/DSDT.acpierst", +"tests/data/acpi/q35/DSDT.acpihmat", +"tests/data/acpi/q35/DSDT.applesmc", +"tests/data/acpi/q35/DSDT.bridge", +"tests/data/acpi/q35/DSDT.cphp", +"tests/data/acpi/q35/DSDT.cxl", +"tests/data/acpi/q35/DSDT.dimmpxm", +"tests/data/acpi/q35/DSDT.ipmibt", +"tests/data/acpi/q35/DSDT.ipmismbus", +"tests/data/acpi/q35/DSDT.ivrs", +"tests/data/acpi/q35/DSDT.memhp", +"tests/data/acpi/q35/DSDT.mmio64", +"tests/data/acpi/q35/DSDT.multi-bridge", +"tests/data/acpi/q35/DSDT.nohpet", +"tests/data/acpi/q35/DSDT.numamem", +"tests/data/acpi/q35/DSDT.pvpanic-isa", +"tests/data/acpi/q35/DSDT.tis.tpm12", +"tests/data/acpi/q35/DSDT.tis.tpm2", +"tests/data/acpi/q35/DSDT.viot", +"tests/data/acpi/q35/DSDT.xapic", --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221234; cv=none; d=zohomail.com; s=zohoarc; b=n0SYioklkhXLXlOoFNkGc0/HCd9hR3Qb505fCpEDqIgXzF3HxaOgqnafLM9uu2IPTefqGZ/lprptX475dQHRrUN8tT08l+5Vv2BMbyM+DHUtqLm1jxvU4NAOcej0+x/AttxmdQ+TW+S0N4/I15vltvbvwc5G2zMlLj/dSLHRBfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221234; h=Content-Type: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=h/XlP9KQaz9Sdj8a6OxlbRsUZL7f47hL0wOEmFmZTnk=; b=J6ZPp8RFtibCEF2ZwIgB+f3BubHbJRxPkFNfrQ5ZgJNgfRbof5GrKOOewDV/KqNCfboWEZDYph7+DKredON6q9FetyYy842tfA2p5tGvUFkaEmn2yGz6wd7R1ATlt9JiZ1asXjyyTUabgbnx2Tm05oBZ2eQqUSbp70dqq50gVv4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221234286848.5121940399862; Mon, 31 Oct 2022 06:00:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIY-0003Cp-9H; Mon, 31 Oct 2022 08:53:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIM-0002B4-T2 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIK-0003Ew-9Z for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:38 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-630-dQxR7QdWNmeuOgp3iBz4oQ-1; Mon, 31 Oct 2022 08:53:33 -0400 Received: by mail-wm1-f72.google.com with SMTP id 83-20020a1c0256000000b003cf758f1617so199711wmc.5 for ; Mon, 31 Oct 2022 05:53:33 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id w24-20020a1cf618000000b003cf4d99fd2asm7186583wmc.6.2022.10.31.05.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220814; 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: in-reply-to:in-reply-to:references:references; bh=h/XlP9KQaz9Sdj8a6OxlbRsUZL7f47hL0wOEmFmZTnk=; b=LIGyxSS6lmY7X1WSmsRR5wTbtXHB9shpX/f2oASf5YBP6bNWc8/9QMA960ejnFA6crMdr0 TyiYPYMp9FpTRO79OV2BJzGu47fQ5XRk2CtAp28lfXOhHoF8izeFaVar8NHX5Co0CrZ4A/ Zhqg/IeYYAUZGakZS8GK1wlrKJPtffQ= X-MC-Unique: dQxR7QdWNmeuOgp3iBz4oQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=h/XlP9KQaz9Sdj8a6OxlbRsUZL7f47hL0wOEmFmZTnk=; b=pPpyzhSdUPLcTX9ZKxZ8xBAJ87G5U80mpIJHupVh6VKkkEUUfAxD8wgMdSEds6L1sl s3zhf1Bv5irwqzhQbX2cYUoE8UN5HSihNd+deUVcmq0hkBruG5iGtRkiBWLNmN2rGWTy u/xJ7XLQ8Kw782L8node3hkOa/mgRdblKrgAhwTp6ab+CCOZigNmo04UmRwavMLfDDGt N3EfupuD4L037uuBUqlXSz0nTQA0aZ384bgcqgsgO0crEQ89eEGIbkdW2HlRSL+49kvK bJm0b1J86mJ8SkPhpuE7blgQ1GC++7aAb3hcxhmUkblY7jN2CLul/YKnbQvvODlzgwCB a22g== X-Gm-Message-State: ACrzQf0xDXbLkLmmj5xSj6BytRsLoWf6cL51xGRHoTcpp0yNWR1C4KwB 6wiXICvQEDiqULoBNYpL8vkRLwNjk4GHInOzqV+gV98yPkcmRRoRgkBrOkxr0RUocKOpqYSwy7L iuzCGLe+sjbm/jvQaOWqEXezdu41x3f1xzHna5Kt5acgeNhCSm8l/NtUYGXYX X-Received: by 2002:a05:6000:a11:b0:236:7685:e7 with SMTP id co17-20020a0560000a1100b00236768500e7mr8310784wrb.359.1667220812135; Mon, 31 Oct 2022 05:53:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4g7YWtRm3Pg8SCY6F7F3lUabJtombeGK3EXSlmAlnfQZB9uoXl9qQnEzaSDbqXWQAEXq89Ng== X-Received: by 2002:a05:6000:a11:b0:236:7685:e7 with SMTP id co17-20020a0560000a1100b00236768500e7mr8310768wrb.359.1667220811838; Mon, 31 Oct 2022 05:53:31 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:29 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 59/86] acpi: add get_dev_aml_func() helper Message-ID: <20221031124928.128475-60-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221235881100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov It will be used in followup commits to figure out if device has it's own, device specific AML block. Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-7-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Ani Sinha --- include/hw/acpi/acpi_aml_interface.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/include/hw/acpi/acpi_aml_interface.h b/include/hw/acpi/acpi_am= l_interface.h index ab76f0e55d..436da069d6 100644 --- a/include/hw/acpi/acpi_aml_interface.h +++ b/include/hw/acpi/acpi_aml_interface.h @@ -29,11 +29,20 @@ struct AcpiDevAmlIfClass { dev_aml_fn build_dev_aml; }; =20 -static inline void call_dev_aml_func(DeviceState *dev, Aml *scope) +static inline dev_aml_fn get_dev_aml_func(DeviceState *dev) { if (object_dynamic_cast(OBJECT(dev), TYPE_ACPI_DEV_AML_IF)) { AcpiDevAmlIfClass *klass =3D ACPI_DEV_AML_IF_GET_CLASS(dev); - klass->build_dev_aml(ACPI_DEV_AML_IF(dev), scope); + return klass->build_dev_aml; + } + return NULL; +} + +static inline void call_dev_aml_func(DeviceState *dev, Aml *scope) +{ + dev_aml_fn fn =3D get_dev_aml_func(dev); + if (fn) { + fn(ACPI_DEV_AML_IF(dev), scope); } } =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221676; cv=none; d=zohomail.com; s=zohoarc; b=PU9DBF1SMWEHN0niUC3wi058F4ASRdLSeaspQ9dn44DulSoXnroFGEtj/TNamaJwXqdBbiZhKvInrBrwSx9EAbZ0ewZaZ86NNqzMP16rODzV8ls0l88QOrqkxaxySzPcnFCnfGS4A6lFvUdFRtcU+wzXwQYIRkzVpH3I8G7sjUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221676; h=Content-Type: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=ps8QJRGN+47BbvPd8yHBrkkg70UnCtXifweZPYFMUqM=; b=SKY7cRffN+mLy5p84g+gM7hozSG/jrswzj3QNoK0vjY/eoSj6P+ukRB74Lfp+Q9NlZ9JcMzPnQuO6BSe6pS5oTp3oXCtCSMVwDoykEKsXs+ZBYSVnps/JwK6TkBdduU01CNQzvif7Lw8tg9c3VxvgBul/AZ3giWKhQ7p0I+w3fA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221676251979.2915836687281; Mon, 31 Oct 2022 06:07:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIZ-0003J4-BQ; Mon, 31 Oct 2022 08:53:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIN-0002GZ-Tr for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIM-0003Ig-Co for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:39 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-247-6PEAFu7uPUWI9-0CHzbs7A-1; Mon, 31 Oct 2022 08:53:36 -0400 Received: by mail-wr1-f71.google.com with SMTP id l16-20020adfc790000000b00230c2505f96so2998701wrg.4 for ; Mon, 31 Oct 2022 05:53:36 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id fc6-20020a05600c524600b003c6bbe910fdsm8465679wmb.9.2022.10.31.05.53.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220817; 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: in-reply-to:in-reply-to:references:references; bh=ps8QJRGN+47BbvPd8yHBrkkg70UnCtXifweZPYFMUqM=; b=ZPdJMet6mjkuji9fLPPKl1BRflXvrX6uF0JMbIjTMkzCHBqmHd+pdAyLWvlHOC+Nh2VVS9 X4lDFJmI2DlPXD3kbWy4BmI241J6328FVRALFhIUJXbWBhU1LNsBdBGjAEb98KlCSHPhEE dfj8l5Or3/xVs3IPd3Imn4UUjJKnIk8= X-MC-Unique: 6PEAFu7uPUWI9-0CHzbs7A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ps8QJRGN+47BbvPd8yHBrkkg70UnCtXifweZPYFMUqM=; b=jp863FnEXzsXj1fV+V1MwQHS0M6tkC8oIpv+ufsNEEkEZj7ueAyY9sUe47fJmj0OJL yROh5KHTCuDJrwrSCFbtPF2eYy7C242yH5FrWNDLhc/8nxQkq8u58yyPRvZZzV1y2xCV Ea4BDL4IgQdbUrV3sDY92vW2mzS5I4FXk82NzZoblPNBvK8FCLDW5AmNENxusf9Fi+1X DwL27jiGO87QbCrkvOx1hCT0DfwKnNy+Ksxir3cj/qFHLv45qYObYf6U68V77ql/oiGB 9zQzzMHCo+dwge+sB5LOe3E7BsuevKO1a9o5CGdir44yPF5o2nWzJpqstJJ5qbWU5OXx oFDA== X-Gm-Message-State: ACrzQf1Wi0xPPhHTbfGEUI9U9o0+8U4cMywE3OxaXUPXC4J85ojYGAg4 65wP20HveaFULf4QO3Kv2UETPPTiJwVi8gUAOLVn+FrfifYy+Ct7i3DOcvw4QVWkMdJnW3zwY/g 4ZYpvq0PKzHhZxzqEGKd8pU14+AFZNCCIKPxhaorS3B1UB4qxU2w0v/3Gg+S5 X-Received: by 2002:a05:600c:21c9:b0:3cf:7833:2940 with SMTP id x9-20020a05600c21c900b003cf78332940mr813498wmj.35.1667220815181; Mon, 31 Oct 2022 05:53:35 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5/6CloBe++3uoF/8Kt77Zu7FxS3gneLbU5UKzO/trKCxyCjcrzXaOq8oiEeZ3ZRhPIDwvOvg== X-Received: by 2002:a05:600c:21c9:b0:3cf:7833:2940 with SMTP id x9-20020a05600c21c900b003cf78332940mr813482wmj.35.1667220814897; Mon, 31 Oct 2022 05:53:34 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 60/86] acpi: enumerate SMB bridge automatically along with other PCI devices Message-ID: <20221031124928.128475-61-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221677631100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov to make that happen (bridge sits at _ADR: 0x001F0003), relax PCI enumeration logic to include devices with *function* > 0 if device has something to say about itself (i.e. has build_dev_aml callback set). Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-8-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index e1483bb11a..916343d8d6 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -448,9 +448,10 @@ static void build_append_pci_bus_devices(Aml *parent_s= cope, PCIBus *bus, /* * allow describing coldplugged bridges in ACPI even if they a= re not * on function 0, as they are not unpluggable, for all other d= evices - * generate description only for function 0 per slot + * generate description only for function 0 per slot, and for = other + * functions if device on function provides its own AML */ - if (func && !bridge_in_acpi) { + if (func && !bridge_in_acpi && !get_dev_aml_func(DEVICE(pdev))= ) { continue; } } else { @@ -1319,25 +1320,6 @@ static Aml *build_q35_osc_method(bool enable_native_= pcie_hotplug) return method; } =20 -static void build_smb0(Aml *table, int devnr, int func) -{ - Aml *scope =3D aml_scope("_SB.PCI0"); - Aml *dev =3D aml_device("SMB0"); - bool ambiguous; - Object *obj; - /* - * temporarily fish out device hosting SMBUS, build_smb0 will be gone = once - * PCI enumeration will be switched to call_dev_aml_func() - */ - obj =3D object_resolve_path_type("", TYPE_ICH9_SMB_DEVICE, &ambiguous); - assert(obj && !ambiguous); - - aml_append(dev, aml_name_decl("_ADR", aml_int(devnr << 16 | func))); - call_dev_aml_func(DEVICE(obj), dev); - aml_append(scope, dev); - aml_append(table, scope); -} - static void build_acpi0017(Aml *table) { Aml *dev, *scope, *method; @@ -1440,9 +1422,6 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, build_x86_acpi_pci_hotplug(dsdt, pm->pcihp_io_base); } build_q35_pci0_int(dsdt); - if (pcms->smbus) { - build_smb0(dsdt, ICH9_SMB_DEV, ICH9_SMB_FUNC); - } } =20 if (misc->has_hpet) { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221202; cv=none; d=zohomail.com; s=zohoarc; b=YHENws4u3zjR60vB2poZsUDZqEJp5MI/n5ZXB8kdNYk2R1/dPvMZMF7mLR1L4nS4Jd8WimaL/DEzBSTaCsRICNNtcbvkebEJEf0ieD74u5mPGb8P3FmdVQNIYX5+SrHl3I3bi8cYG7AsyYFRz3Pmygp+nKWY9pyikCUlJ4RRCDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221202; h=Content-Type: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=GKmwoOfm8bzRUItGXNwBDqS2konkOkMGSWJ9WqmnlUw=; b=YHpo4jXj85AcUyiy9zkMtYcfmatXu8cAFTiahTk67zzpMwaZEe3UIH8tufO5h9h+O7lrO5GHd99dpJv9LtgL1ghFDGx12gUAxr5dfXf82LfFfdSfOYgoYyZl42MFw8qG0zYaz5TijoXf0XjRbNmwP3oRY1wR1MjOrPphHz0ff/U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221202904529.7759500968488; Mon, 31 Oct 2022 06:00:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIa-0003Qd-Hb; Mon, 31 Oct 2022 08:53:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIS-0002dU-DP for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIP-0003KN-UD for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:44 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-228-4nQXRvAYN5CTcEbsY2HX3g-1; Mon, 31 Oct 2022 08:53:39 -0400 Received: by mail-wm1-f71.google.com with SMTP id o18-20020a05600c4fd200b003c6ceb1339bso5617324wmq.1 for ; Mon, 31 Oct 2022 05:53:39 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id z3-20020a05600c0a0300b003cf55844453sm7957124wmp.22.2022.10.31.05.53.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220821; 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: in-reply-to:in-reply-to:references:references; bh=GKmwoOfm8bzRUItGXNwBDqS2konkOkMGSWJ9WqmnlUw=; b=iR0ForaLcK2uJ6WVIWlDbY6/6DwTh5reItMzW41a4US57VjnSrLzvV5arnqdkgiHaadRaE 3mBKV5WT+Jw6xZsBbdHnxAy0NkLD/yEotGD4ESiUaGpTGd5sf+8NXWAz1DBQ5RAc0GdwmF ymT8z7B+pg/q5mRa4SieLJBs68jj9UM= X-MC-Unique: 4nQXRvAYN5CTcEbsY2HX3g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GKmwoOfm8bzRUItGXNwBDqS2konkOkMGSWJ9WqmnlUw=; b=mwEiroeKOmu+/lpluBVYzGlWXqZ5kVLB60QOPrtLEkAT7+W8rOQLT6U1/Yv8DCnM9g VhvzwUufdSe0SPzhsLtrH3MYHdrXq+9ui8Uk5ToTJYzz4yzBz6m0FfR+YmB8YeS8Cydy WHuymIJNZD/e6eoPYYT8Ie69/oV+Grw+FFUYpyW2nXAjrXXMUy3rwC2XH2X3DnR69g9Z fKl6f6AH0QXH3/fkkg4pE+UqG6PtNE9ZWIDfxAS+N6X2+IU2KdewgavIMwmsvSOHCJXD 1n/6IORqE1JE4rT6Nw1m+gHLhs8q9HMEOdO849oRKI7lBwj3kMcwFjBP7vzd0mWhur9S kpAw== X-Gm-Message-State: ACrzQf17fQk+4HqWs4mtC1IToXZTB08M3m+ywfOA1URGJbOSFa+0lcuz 4VbMOIj6/xirWXZccWqQfL1kHcByDLP7gzDdRRXMOEgI81xP1aPtFpjp88lMXSTeo4KD2lP+hW0 ZTEblp+04XlXKDZd8LRtKrIN9lR+YkuCuxT3Iw15WmqgZQz1ucqDonxQosWRv X-Received: by 2002:adf:e7c8:0:b0:236:6a30:cb2e with SMTP id e8-20020adfe7c8000000b002366a30cb2emr8241666wrn.12.1667220817850; Mon, 31 Oct 2022 05:53:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6PszGDsvHO6CfxzCMdMU6XvB+uDTQmamlo5W8KpGBtBIgnnFZJ8sctnj/HNNo1W0vzbgmWQQ== X-Received: by 2002:adf:e7c8:0:b0:236:6a30:cb2e with SMTP id e8-20020adfe7c8000000b002366a30cb2emr8241648wrn.12.1667220817513; Mon, 31 Oct 2022 05:53:37 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:35 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 61/86] tests: acpi: update expected blobs Message-ID: <20221031124928.128475-62-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221203648100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Expected change in q35 tests: @@ -2797,14 +2797,6 @@ DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC = ", 0x00000001) } } - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - Scope (_SB) { Device (HPET) @@ -3282,6 +3274,11 @@ DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC = ", 0x00000001) } } + Device (SFB) + { + Name (_ADR, 0x001F0003) // _ADR: Address + } + Method (PCNT, 0, NotSerialized) { } Also for ipmismbus test, child 'Device (MI1)' of SMB0 will be moved along w= ith it Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-9-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 21 -------------------- tests/data/acpi/q35/DSDT | Bin 8418 -> 8407 bytes tests/data/acpi/q35/DSDT.acpierst | Bin 8435 -> 8424 bytes tests/data/acpi/q35/DSDT.acpihmat | Bin 9743 -> 9732 bytes tests/data/acpi/q35/DSDT.applesmc | Bin 8464 -> 8453 bytes tests/data/acpi/q35/DSDT.bridge | Bin 11547 -> 11536 bytes tests/data/acpi/q35/DSDT.cphp | Bin 8882 -> 8871 bytes tests/data/acpi/q35/DSDT.cxl | Bin 9744 -> 9733 bytes tests/data/acpi/q35/DSDT.dimmpxm | Bin 10072 -> 10061 bytes tests/data/acpi/q35/DSDT.ipmibt | Bin 8493 -> 8482 bytes tests/data/acpi/q35/DSDT.ipmismbus | Bin 8507 -> 8495 bytes tests/data/acpi/q35/DSDT.ivrs | Bin 8435 -> 8424 bytes tests/data/acpi/q35/DSDT.memhp | Bin 9777 -> 9766 bytes tests/data/acpi/q35/DSDT.mmio64 | Bin 9548 -> 9537 bytes tests/data/acpi/q35/DSDT.multi-bridge | Bin 8738 -> 8727 bytes tests/data/acpi/q35/DSDT.nohpet | Bin 8276 -> 8265 bytes tests/data/acpi/q35/DSDT.numamem | Bin 8424 -> 8413 bytes tests/data/acpi/q35/DSDT.pvpanic-isa | Bin 8519 -> 8508 bytes tests/data/acpi/q35/DSDT.tis.tpm12 | Bin 9024 -> 9013 bytes tests/data/acpi/q35/DSDT.tis.tpm2 | Bin 9050 -> 9039 bytes tests/data/acpi/q35/DSDT.viot | Bin 9527 -> 9516 bytes tests/data/acpi/q35/DSDT.xapic | Bin 35781 -> 35770 bytes 22 files changed, 21 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index fd5852776c..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,22 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/q35/DSDT", -"tests/data/acpi/q35/DSDT.acpierst", -"tests/data/acpi/q35/DSDT.acpihmat", -"tests/data/acpi/q35/DSDT.applesmc", -"tests/data/acpi/q35/DSDT.bridge", -"tests/data/acpi/q35/DSDT.cphp", -"tests/data/acpi/q35/DSDT.cxl", -"tests/data/acpi/q35/DSDT.dimmpxm", -"tests/data/acpi/q35/DSDT.ipmibt", -"tests/data/acpi/q35/DSDT.ipmismbus", -"tests/data/acpi/q35/DSDT.ivrs", -"tests/data/acpi/q35/DSDT.memhp", -"tests/data/acpi/q35/DSDT.mmio64", -"tests/data/acpi/q35/DSDT.multi-bridge", -"tests/data/acpi/q35/DSDT.nohpet", -"tests/data/acpi/q35/DSDT.numamem", -"tests/data/acpi/q35/DSDT.pvpanic-isa", -"tests/data/acpi/q35/DSDT.tis.tpm12", -"tests/data/acpi/q35/DSDT.tis.tpm2", -"tests/data/acpi/q35/DSDT.viot", -"tests/data/acpi/q35/DSDT.xapic", diff --git a/tests/data/acpi/q35/DSDT b/tests/data/acpi/q35/DSDT index ea35dc5eba8433a8dcb54815f19ed6239f2534e7..c8a2b5df26608f10c75ab8f2f9e= 404fda987891b 100644 GIT binary patch delta 65 zcmaFlc-@i9CDqdhx+d@d3`B2GLFY!M;ug9Py4WK|IV1@(i2B eCDyZXIVi+{R0w#;Z@wV+o{?RIEx_3?gaH6HQWQi0 diff --git a/tests/data/acpi/q35/DSDT.acpierst b/tests/data/acpi/q35/DSDT.a= cpierst index 146269c68c68238a8be3aa67e049a85c0b8edc66..eb63e439b92424e4c50b7e5f1df= 92da54ecfc6ea 100644 GIT binary patch delta 64 zcmezD_`;FPCD=3D(iS0Ek8rTL1t6 delta 75 zcmaFi_}P)mCDG$Ds33dtLS7Tsc%-P7rCm}7Z7a!~tAK>h15Z%Nd?CWH}5%1^{#KX)W&#+ls d;tn^LgF*~Qg@A|r=3DD*7C8QDeH0-XIq7y!*W69)hQ diff --git a/tests/data/acpi/q35/DSDT.applesmc b/tests/data/acpi/q35/DSDT.a= pplesmc index ff25d82ba24b5e792b9d87958aa1b162bc9e0de2..286a4ecec273ca0e2fe2d65f80e= 8566a68a2f794 100644 GIT binary patch delta 65 zcmbQ>)au0L66_Mfs>r~=3DD6x@?Phzu)#5y)Ef906?V5fKicje7*$Yf1OQ7T6vzMo delta 86 zcmbObH9LySCD diff --git a/tests/data/acpi/q35/DSDT.cxl b/tests/data/acpi/q35/DSDT.cxl index aeea64d1cecad0ad011870ed5e04bfea1ae62510..96594c00b3b0e0a4933d6d851d9= 27487ad4d18eb 100644 GIT binary patch delta 65 zcmbQ>)9SZ;;Xupw*Phzu)#4c_wXXTjqV5fKiZ>7yYlm(e2qMP`G-JIe% U;vHRrc$gXF8AR9uoc%%=3D03WdrZ2$lO delta 76 zcmZqmnc&0a66_KppvJ(!xMCw0pMPD(K#6#`z0o9`$KGO>%W1vvYKFaQA0rV=3Djz diff --git a/tests/data/acpi/q35/DSDT.dimmpxm b/tests/data/acpi/q35/DSDT.di= mmpxm index ed11aefa4a56a8408bd4e0de83bf2373e6025449..e2a3ecf7d90c8c411550505c3b7= 0bf8d19ba4bc9 100644 GIT binary patch delta 65 zcmccNch--~CDcf*g%CD- diff --git a/tests/data/acpi/q35/DSDT.ipmibt b/tests/data/acpi/q35/DSDT.ipm= ibt index d9d1e75c987acd42be4576688621be07b21f0e7b..427272b95692099edc47f569e41= fbb3ba69f6b60 100644 GIT binary patch delta 65 zcmZ4Mw8)9eCDNWHeZmlVqzCz3vl)eVE_Q=3D2@;q9 diff --git a/tests/data/acpi/q35/DSDT.ipmismbus b/tests/data/acpi/q35/DSDT.= ipmismbus index f6e124137721312722c820b5c084a143492945c9..794779e75aaf33902de834caaa6= b0763c4513615 100644 GIT binary patch delta 61 zcmdn(wBCu!CD-Q+$B4r$Ka+J6o`?lfmTU3W=3DM=3DCDyZX aIVi+{Bn3R=3DH(!u@&&V#q7U1j`!T=3D(iS0Ek8rTL1t6 delta 75 zcmaFi_}P)mCDq3sap6WTJ_%`Qz4&0K_yA{5gXkvyU|%N#j(A6xARcB0d4|p6 e692fl928_H_NNMXJi*)3vl)eVE_Q{`4Z;< diff --git a/tests/data/acpi/q35/DSDT.mmio64 b/tests/data/acpi/q35/DSDT.mmi= o64 index afc260ebf4d91a2a9f7be5ff21968e99b1f9c5d1..a77aa37ca0bb407abbef134e8dc= e4461070856a2 100644 GIT binary patch delta 64 zcmX@(boA`s>oZ>m+ T9bJNWm>J|5MA!nH{X!T3EYS}} delta 75 zcmX@;b;gU!CD>_Ld&VC^b0K(`I2mk;8 diff --git a/tests/data/acpi/q35/DSDT.multi-bridge b/tests/data/acpi/q35/DS= DT.multi-bridge index 7c14ce3a986fa06e88f3adc088faae54bdd2d8e4..43469e6c89813025b902534ed61= d39ad940ff7bb 100644 GIT binary patch delta 85 zcmZ4FGTnvCCD!;w2TKaK`a9>3jo0872^N^ delta 72 zcmbR4vdD$YCDpMqMP`G-JIe% U;vHRrc$gXF8AR9uoc%%=3D04azMg8%>k delta 76 zcmX@_H(!%`&&V#q7U1j`!T5Yqqv delta 76 zcmdnvbli!{CD diff --git a/tests/data/acpi/q35/DSDT.tis.tpm2 b/tests/data/acpi/q35/DSDT.t= is.tpm2 index b55e828c6397f80c14de82f371fa34553008a875..47417f47f7e25576f31207cb0b7= 52b8c086a4480 100644 GIT binary patch delta 65 zcmccRcHWK4CD+CD1vvYKFaQ7tbrWF# diff --git a/tests/data/acpi/q35/DSDT.viot b/tests/data/acpi/q35/DSDT.viot index a8a93fe70d8e98ec0e66278b45d36393b75740ec..574b8a0094c556cd8555b7a4e1b= 92b2d5f64750a 100644 GIT binary patch delta 65 zcmdn)wZ@CfCD)ooUx}CN7s?myliE3=3DE8aH*)bwY&MaYSjgq57!x1t6ffYZu=3D#xFdq#=3DqCjMYI Xr+AKdN0%TTW(Ii%5w-wlzYqoh?b#EU delta 78 zcmdlro$2UwCN7s?myn~~3=3DE8E8@c!-q^0%ZgPr07oIMSqoA`r$oeVhQ9bJNWm>J|5 gHj7J4D&%rdhyke(@Q~lUx$`|Ey9ir=3DvtI}U0BHvmS^xk5 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221108; cv=none; d=zohomail.com; s=zohoarc; b=dnXkEv7lrqI18KL9FlvRZotrg+URRFeUr9kNPbMYgKWLviCoPmJJuVmla3wt+//NGcgjmWq341PzER2cE5J5W6usXQh3pdTZNNrndhc72kJWrd8S1CiqZJs36cAvHemH4Qsw+WpRjZMuecyCOJcBscr65TCTKj94ZI+0PgM0VpA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221108; h=Content-Type: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=dZ0P9a6IJfyx6sK2ZV/CZP2xR5EwFVjvhoJRBDQTyog=; b=ELDDpslAWfa/4zJpdF1RWcVN7pB51e8+uOiTbcolvVvLwYKLohhMwXO4Nhr3Ix+OrFNBsqge3qtTFUVk7rohvAnXBXj9S4TuLo/LGAhqUijZyZo5ndgLcfEJfcnVsZy58J3o0T+iudGrGHerl4RESw2fYaXieZMiyfygYwmaRhA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221108399642.3838102177252; Mon, 31 Oct 2022 05:58:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIb-0003VG-Be; Mon, 31 Oct 2022 08:53:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIT-0002jo-CV for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIR-0003L6-OU for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:45 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-219-21zH_sXSNG6kz096YHXw9A-1; Mon, 31 Oct 2022 08:53:41 -0400 Received: by mail-wm1-f69.google.com with SMTP id f26-20020a7bcc1a000000b003c03db14864so2570490wmh.6 for ; Mon, 31 Oct 2022 05:53:41 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id b20-20020a05600c151400b003b3307fb98fsm6992770wmg.24.2022.10.31.05.53.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220823; 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: in-reply-to:in-reply-to:references:references; bh=dZ0P9a6IJfyx6sK2ZV/CZP2xR5EwFVjvhoJRBDQTyog=; b=BJ8t5fg/1UaUUfwAlBZIh9IYAg6E6//uHQWOzx9dZz68quao18q1tRW3CPUDMAZyA3t4IO mzD5dMTU5jVluKDvzUXCW3kgIXSwxXqPLp0IFB6PrZ9IREnAohiXyEUxVcMDOVn9dSv4Ln 2w+KdnD8Of0nBF5i3fKIZVWp0toTF0s= X-MC-Unique: 21zH_sXSNG6kz096YHXw9A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=dZ0P9a6IJfyx6sK2ZV/CZP2xR5EwFVjvhoJRBDQTyog=; b=MTZM2EKFFFTsqd/X2YFdA5MT1BQK+rUhwd1FBlhOVZ9z+fwxWvQAv9DNRpn+E1Vz8i Smc0aYvDHY8hEiK7+0FeAlnmRfT0GGwz+upiCmrKv+yd9PJneecrCM6d4Zkq+lBrTFGq 7AfMwvWhXGchrZx9Xa48jttF6j13uzU2DAl+JyDYmFOqqriDzu+cn9evR4Qb3EFKgd4j uMdqhVrDXiS5qrBtctWSvVpa+DAa1fdrxbtuiYWOGGM/X2TSALyJAXCk53Dynk1IdsqS hA0kck0FsLzkyHtJplsRiF9xJkAaH1KGmEDy7M9C1gZyd6eY8OXObwYii9SOzXEj6xdm P5Tg== X-Gm-Message-State: ACrzQf2Kxv1nAR6oQu19j7KTQa7jzARiY9OBRh/IaWFiB1fjQ/9slRIp ckSK7WFJ3bQ9MeBYra54apz/RQfdKBNnPx7AWM9mnF7JsohP9wl9sZBvwps4fmcjVBFUySoTtBO vhV0LLnMKP6bd5VzDBuElXBzacMFXsl8jv4/qcutlXJT2aEp+a4WNuOxNfZC7 X-Received: by 2002:a5d:584e:0:b0:236:6f0f:9d8 with SMTP id i14-20020a5d584e000000b002366f0f09d8mr7950938wrf.701.1667220820379; Mon, 31 Oct 2022 05:53:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4pKoZf9VD2l4YW7yOPu6FxBwzSWx8xJCRtc5UC3sfQ7rWQpv096wJqkOaQIXNn/YKX6o01oA== X-Received: by 2002:a5d:584e:0:b0:236:6f0f:9d8 with SMTP id i14-20020a5d584e000000b002366f0f09d8mr7950920wrf.701.1667220820121; Mon, 31 Oct 2022 05:53:40 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:37 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 62/86] tests: acpi: pc/q35 whitelist DSDT before \_GPE cleanup Message-ID: <20221031124928.128475-63-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221110353100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-10-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..725a1dc798 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,35 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/pc/DSDT", +"tests/data/acpi/pc/DSDT.bridge", +"tests/data/acpi/pc/DSDT.ipmikcs", +"tests/data/acpi/pc/DSDT.cphp", +"tests/data/acpi/pc/DSDT.memhp", +"tests/data/acpi/pc/DSDT.numamem", +"tests/data/acpi/pc/DSDT.nohpet", +"tests/data/acpi/pc/DSDT.dimmpxm", +"tests/data/acpi/pc/DSDT.acpihmat", +"tests/data/acpi/pc/DSDT.acpierst", +"tests/data/acpi/pc/DSDT.roothp", +"tests/data/acpi/pc/DSDT.hpbridge", +"tests/data/acpi/pc/DSDT.hpbrroot", +"tests/data/acpi/q35/DSDT", +"tests/data/acpi/q35/DSDT.tis.tpm2", +"tests/data/acpi/q35/DSDT.tis.tpm12", +"tests/data/acpi/q35/DSDT.bridge", +"tests/data/acpi/q35/DSDT.multi-bridge", +"tests/data/acpi/q35/DSDT.mmio64", +"tests/data/acpi/q35/DSDT.ipmibt", +"tests/data/acpi/q35/DSDT.cphp", +"tests/data/acpi/q35/DSDT.memhp", +"tests/data/acpi/q35/DSDT.numamem", +"tests/data/acpi/q35/DSDT.nohpet", +"tests/data/acpi/q35/DSDT.dimmpxm", +"tests/data/acpi/q35/DSDT.acpihmat", +"tests/data/acpi/q35/DSDT.acpierst", +"tests/data/acpi/q35/DSDT.applesmc", +"tests/data/acpi/q35/DSDT.pvpanic-isa", +"tests/data/acpi/q35/DSDT.ivrs", +"tests/data/acpi/q35/DSDT.viot", +"tests/data/acpi/q35/DSDT.cxl", +"tests/data/acpi/q35/DSDT.ipmismbus", +"tests/data/acpi/q35/DSDT.xapic", --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221646; cv=none; d=zohomail.com; s=zohoarc; b=Y96ypg0n5FBD30dT5NWwFY9Hejv3qSadXxDggm0tDGdwA7F264vMhv/kUwqKIwmFAsETrw/3PhBIroU2UcKHXdKAoHliktbZVDzdDAZnb6ddIfAY3zk+BDhVREFO4ey+3qUv8627+GbQpiAeJ4K3c30QKyUilwEEuNaIWyXk3Bc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221646; h=Content-Type: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=0yhIUS8lDsK4Y+UjpInP5GENmj51Psd/BxPn+ebR+Z4=; b=LeSUICvBrla4iqScBvEmw8fKH5BVLYsZz+0iMhSo3UaZlYPkLovvB+WqZNOH/JKgaaTTdrZmHp6IF5FhFb+02DeCTIQ9Qypws94Eez0zWUqdEy/gkzmNJ0jpD1SETw3c8h+Wx5GLvVr1wLz+QvBhX1r5BwFB7IOm6HRVdp2oYX0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221646527971.6295185834161; Mon, 31 Oct 2022 06:07:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIc-0003bm-C8; Mon, 31 Oct 2022 08:53:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIW-00032D-4n for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIU-0003Lj-Dh for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:47 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-594-0IIPoMdiNe2pcB759Ugufg-1; Mon, 31 Oct 2022 08:53:44 -0400 Received: by mail-wm1-f70.google.com with SMTP id c5-20020a1c3505000000b003c56da8e894so8324734wma.0 for ; Mon, 31 Oct 2022 05:53:44 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id n2-20020a7bc5c2000000b003c6c5a5a651sm7106527wmk.28.2022.10.31.05.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220825; 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: in-reply-to:in-reply-to:references:references; bh=0yhIUS8lDsK4Y+UjpInP5GENmj51Psd/BxPn+ebR+Z4=; b=K/xB6fzFEWV7iEfReG2pcMgcidZPT8doLVqJg49vq38UZAY9weSKehVyZt45XR7WKRZGOJ o0Y3r+QZO/LU3OR6g0p4BlbJiLMgBabSnw0itSxRs0lBtb4BjGLt6iJqODKpROVu3YPNJ/ UoN3qM0/6i7sfQc4+zC7cWCiiKTI57M= X-MC-Unique: 0IIPoMdiNe2pcB759Ugufg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0yhIUS8lDsK4Y+UjpInP5GENmj51Psd/BxPn+ebR+Z4=; b=4Sm9qZYD3vzNiNjAFhFv+G4Wf0pR/P/O0yasT06MWu5/Vh3lukTGpiDdUryD350sTa n+SCLsDGyhC/XRue0uvwsn5FYkTDsDeATabGlpn5c/kjMiwlf09L8lryJPxJ31tZXa3f 3Wk8wDUC1N8ikefXSkxKBKYkSbAqdEvQbV6+0O46u3elngMtUrm3ykRwvK4hZP3haMww 9XlPj/KHhc4S0h/kOS/fnSGaHYX1nlJpW0SsWCEUX/dHCj7Gcr+kXD5F5M4vizS8ZOLe iMZuVSIb7pQNbu2gP6U4zoLGUUXmqJ5pPWm/9/BMQ5AnAZqcv/bjibfrvW9mQycfzSgf gjKQ== X-Gm-Message-State: ACrzQf2c3ldrQzUMGI8qRsNGC2mYNCMw8CjPHz9ic0Ix+j7qaNG5dJ45 byeiS89PGNFKj2MTKAT9XPYvcj99lms2RWhmXSgt4U51srG69R76v/rBQLgEK/iWNW7lZ3B+gFD RSKWzXXPOa12CI24MUARV9yU8JyNGrGglkiN3lg+ZRPzZPd2qlIijiy7pCDi6 X-Received: by 2002:adf:f78f:0:b0:236:992b:1f62 with SMTP id q15-20020adff78f000000b00236992b1f62mr7735873wrp.605.1667220823308; Mon, 31 Oct 2022 05:53:43 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4T2gn2h9mcovd4GfjlYtbfMafNyq6CDbqfH0KkMrUMPTC/oFZ5FVsr4KoFHr9gAflsk8BKNg== X-Received: by 2002:adf:f78f:0:b0:236:992b:1f62 with SMTP id q15-20020adff78f000000b00236992b1f62mr7735846wrp.605.1667220823008; Mon, 31 Oct 2022 05:53:43 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:40 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 63/86] acpi: pc/35: sanitize _GPE declaration order Message-ID: <20221031124928.128475-64-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221667403100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Move _GPE block declaration before it gets referenced by other hotplug handlers. While at it move PCI hotplug (_E01) handler after PCI tree description to avoid forward reference to to not yet declared methods/devices. PS: Forward 'usage' usualy is fine as long as it's hidden within method, however 'iasl' may print warnings. So be nice to iasl/guest OS and do things in proper order. PS2: Also follow up patches will move some of hotplug code from PCI tree to _E01 and that also requires PCI Device nodes build first, before Scope can reuse that from global context. Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-11-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 47 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 916343d8d6..960305462c 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -1434,6 +1434,18 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, aml_append(dsdt, sb_scope); } =20 + scope =3D aml_scope("_GPE"); + { + aml_append(scope, aml_name_decl("_HID", aml_string("ACPI0006"))); + if (machine->nvdimms_state->is_enabled) { + method =3D aml_method("_E04", 0, AML_NOTSERIALIZED); + aml_append(method, aml_notify(aml_name("\\_SB.NVDR"), + aml_int(0x80))); + aml_append(scope, method); + } + } + aml_append(dsdt, scope); + if (pcmc->legacy_cpu_hotplug) { build_legacy_cpu_hotplug_aml(dsdt, machine, pm->cpu_hp_io_base); } else { @@ -1452,28 +1464,6 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, pcms->memhp_io_base); } =20 - scope =3D aml_scope("_GPE"); - { - aml_append(scope, aml_name_decl("_HID", aml_string("ACPI0006"))); - - if (pm->pcihp_bridge_en || pm->pcihp_root_en) { - method =3D aml_method("_E01", 0, AML_NOTSERIALIZED); - aml_append(method, - aml_acquire(aml_name("\\_SB.PCI0.BLCK"), 0xFFFF)); - aml_append(method, aml_call0("\\_SB.PCI0.PCNT")); - aml_append(method, aml_release(aml_name("\\_SB.PCI0.BLCK"))); - aml_append(scope, method); - } - - if (machine->nvdimms_state->is_enabled) { - method =3D aml_method("_E04", 0, AML_NOTSERIALIZED); - aml_append(method, aml_notify(aml_name("\\_SB.NVDR"), - aml_int(0x80))); - aml_append(scope, method); - } - } - aml_append(dsdt, scope); - crs_range_set_init(&crs_range_set); bus =3D PC_MACHINE(machine)->bus; if (bus) { @@ -1752,6 +1742,19 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, } aml_append(dsdt, sb_scope); =20 + if (pm->pcihp_bridge_en || pm->pcihp_root_en) { + scope =3D aml_scope("_GPE"); + { + method =3D aml_method("_E01", 0, AML_NOTSERIALIZED); + aml_append(method, + aml_acquire(aml_name("\\_SB.PCI0.BLCK"), 0xFFFF)); + aml_append(method, aml_call0("\\_SB.PCI0.PCNT")); + aml_append(method, aml_release(aml_name("\\_SB.PCI0.BLCK"))); + aml_append(scope, method); + } + 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); acpi_table_end(linker, &table); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221017; cv=none; d=zohomail.com; s=zohoarc; b=HNh7DfxcNjU5PXL1/2wM95nWnOHieg2xxzH+Owad4Fl13Qah3zr5A8Py9vSECwEcpQKcnmjX7Up+DjqnfPUYP7bYb/JRDj1Nb722cDmcknbnr8+/dshsNAjNWWi4KQiI5icZMrui5qTF4ls2eJn6Fc/vJTDAWjqUNc8jUpjrJn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221017; h=Content-Type: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=y4Ht26v4bTk0wWI1FXkqn5SLabDsoMOD7PItdijHGeI=; b=gejmhQiim69VSVPn5bfvmNfoyNia2nlh1DhqtZm+3eoeWjRdPeWmswg18hZ+x4Vlm4zxnM7Fq4ptAakf5/J/nddZ03TfGchmjpSvOOhGVg6QCNkD2OmIEMFBuwX16e71a5YIlNjEGxTLmMsJXXs5Hw6Mv9QVYQCEJrq/mOM7hsk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221017350720.7210419365111; Mon, 31 Oct 2022 05:56:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUIg-0003tt-AB; Mon, 31 Oct 2022 08:53:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIb-0003Tf-00 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIY-0003MG-01 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:52 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-99-QH0yt7lrOo6gL6_WT46eBA-1; Mon, 31 Oct 2022 08:53:47 -0400 Received: by mail-wm1-f71.google.com with SMTP id v188-20020a1cacc5000000b003cf76c4ae66so475019wme.7 for ; Mon, 31 Oct 2022 05:53:47 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bx10-20020a5d5b0a000000b0022e47b57735sm7202960wrb.97.2022.10.31.05.53.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220829; 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: in-reply-to:in-reply-to:references:references; bh=y4Ht26v4bTk0wWI1FXkqn5SLabDsoMOD7PItdijHGeI=; b=i/1QvLU8w2qcuQUYp/Bt4SEdP70TWNa39Z4+cYf8xaAD8l9P4h/M5FZlHwZoaNC9uFRnGS Vj1VjNj8egyZ0fAD5ssjrsX4huD/wOnpU7laW4JrJG39me3E0f48LXa+jEtstwDByU4/r7 h1HXugpA8NMKIqaa5xKN4P0Gp9OE9JU= X-MC-Unique: QH0yt7lrOo6gL6_WT46eBA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=y4Ht26v4bTk0wWI1FXkqn5SLabDsoMOD7PItdijHGeI=; b=kFckm+KiJgWyo9XT3B+K5vyUPPPttRR8lP3F2VozwahXgbKSzhcMrwfiiX/G0SVEWw UQcD6KVOKcmwnqZvgUMaYw9TV7OdXYhpsux8ijL+/s1qXs+OaYtxQgjjNJDP6OtJjMez H1dC88wuNHq/koMrLyzjef3gYPrBqzaWONSTI+VHipYlHauTgSFZHWjHD8G+/Qy+t4YR TvzhbREWGge5zqJEanj4jtlQUUVjOdcVG/76tG05h8Hdr+fFioqUXdPyy4ssQVHVTLBm 0XhXhCjFSTsZXPlAWsp4QlRmqigdzjYCmd4YKTKq53c/BznfkDPdsgkhfi+xTX7WcSwK mkMQ== X-Gm-Message-State: ACrzQf0FJPhe/SJDVcZ/m3Nt+o4u7h+WF7DGT5n+U2bp6qDqpgDKPFDJ fMgZlxFMD3wO0TDL+t+/YU3r5UiWIjogVwg2dgNKgbR/ZYxZUWed/DIYIlVl2f38LhAO/ubfFxm FjuLL3phZUagH2G+oTgMZx/MTwxf2U+ibnbdh54niwEoJQcIDnfEIk5HrvjJV X-Received: by 2002:a5d:65c9:0:b0:235:7110:bff2 with SMTP id e9-20020a5d65c9000000b002357110bff2mr7837047wrw.46.1667220826118; Mon, 31 Oct 2022 05:53:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4LgQtegkIG8p1W+Yol64tA3eQS1yVq33+BdsvoXQ7TPyQjruS5xSCV38FMUD0y1h56gmL5qg== X-Received: by 2002:a5d:65c9:0:b0:235:7110:bff2 with SMTP id e9-20020a5d65c9000000b002357110bff2mr7837026wrw.46.1667220825730; Mon, 31 Oct 2022 05:53:45 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:43 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 64/86] tests: acpi: update expected blobs Message-ID: <20221031124928.128475-65-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221018211100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Expected changes are: 1) Moving _GPE scope declaration achec of all _E0x methods + Scope (_GPE) + { + Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardwa= re ID + } + Scope (_SB) { Device (\_SB.PCI0.PRES) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D \_SB.CPUS.CSCN () } - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardwa= re ID - } 2) Moving _E01 handler after PCI0 scope is defined - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardw= are ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - Scope (\_SB.PCI0) { Name (_CRS, ResourceTemplate () // _CRS: Current Resource Set= tings =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D } } } + + Scope (_GPE) + { + Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE + { + Acquire (\_SB.PCI0.BLCK, 0xFFFF) + \_SB.PCI0.PCNT () + Release (\_SB.PCI0.BLCK) + } + } } Signed-off-by: Igor Mammedov Message-Id: <20221017102146.2254096-12-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 34 -------------------- tests/data/acpi/pc/DSDT | Bin 6496 -> 6501 bytes tests/data/acpi/pc/DSDT.acpierst | Bin 6456 -> 6461 bytes tests/data/acpi/pc/DSDT.acpihmat | Bin 7821 -> 7826 bytes tests/data/acpi/pc/DSDT.bridge | Bin 9570 -> 9575 bytes tests/data/acpi/pc/DSDT.cphp | Bin 6960 -> 6965 bytes tests/data/acpi/pc/DSDT.dimmpxm | Bin 8150 -> 8155 bytes tests/data/acpi/pc/DSDT.hpbridge | Bin 6456 -> 6461 bytes tests/data/acpi/pc/DSDT.hpbrroot | Bin 3107 -> 3107 bytes tests/data/acpi/pc/DSDT.ipmikcs | Bin 6568 -> 6573 bytes tests/data/acpi/pc/DSDT.memhp | Bin 7855 -> 7860 bytes tests/data/acpi/pc/DSDT.nohpet | Bin 6354 -> 6359 bytes tests/data/acpi/pc/DSDT.numamem | Bin 6502 -> 6507 bytes tests/data/acpi/pc/DSDT.roothp | Bin 6694 -> 6699 bytes tests/data/acpi/q35/DSDT | Bin 8407 -> 8412 bytes tests/data/acpi/q35/DSDT.acpierst | Bin 8424 -> 8429 bytes tests/data/acpi/q35/DSDT.acpihmat | Bin 9732 -> 9737 bytes tests/data/acpi/q35/DSDT.applesmc | Bin 8453 -> 8458 bytes tests/data/acpi/q35/DSDT.bridge | Bin 11536 -> 11541 bytes tests/data/acpi/q35/DSDT.cphp | Bin 8871 -> 8876 bytes tests/data/acpi/q35/DSDT.cxl | Bin 9733 -> 9738 bytes tests/data/acpi/q35/DSDT.dimmpxm | Bin 10061 -> 10066 bytes tests/data/acpi/q35/DSDT.ipmibt | Bin 8482 -> 8487 bytes tests/data/acpi/q35/DSDT.ipmismbus | Bin 8495 -> 8500 bytes tests/data/acpi/q35/DSDT.ivrs | Bin 8424 -> 8429 bytes tests/data/acpi/q35/DSDT.memhp | Bin 9766 -> 9771 bytes tests/data/acpi/q35/DSDT.mmio64 | Bin 9537 -> 9542 bytes tests/data/acpi/q35/DSDT.multi-bridge | Bin 8727 -> 8732 bytes tests/data/acpi/q35/DSDT.nohpet | Bin 8265 -> 8270 bytes tests/data/acpi/q35/DSDT.numamem | Bin 8413 -> 8418 bytes tests/data/acpi/q35/DSDT.pvpanic-isa | Bin 8508 -> 8513 bytes tests/data/acpi/q35/DSDT.tis.tpm12 | Bin 9013 -> 9018 bytes tests/data/acpi/q35/DSDT.tis.tpm2 | Bin 9039 -> 9044 bytes tests/data/acpi/q35/DSDT.viot | Bin 9516 -> 9521 bytes tests/data/acpi/q35/DSDT.xapic | Bin 35770 -> 35775 bytes 35 files changed, 34 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 725a1dc798..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,35 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/pc/DSDT", -"tests/data/acpi/pc/DSDT.bridge", -"tests/data/acpi/pc/DSDT.ipmikcs", -"tests/data/acpi/pc/DSDT.cphp", -"tests/data/acpi/pc/DSDT.memhp", -"tests/data/acpi/pc/DSDT.numamem", -"tests/data/acpi/pc/DSDT.nohpet", -"tests/data/acpi/pc/DSDT.dimmpxm", -"tests/data/acpi/pc/DSDT.acpihmat", -"tests/data/acpi/pc/DSDT.acpierst", -"tests/data/acpi/pc/DSDT.roothp", -"tests/data/acpi/pc/DSDT.hpbridge", -"tests/data/acpi/pc/DSDT.hpbrroot", -"tests/data/acpi/q35/DSDT", -"tests/data/acpi/q35/DSDT.tis.tpm2", -"tests/data/acpi/q35/DSDT.tis.tpm12", -"tests/data/acpi/q35/DSDT.bridge", -"tests/data/acpi/q35/DSDT.multi-bridge", -"tests/data/acpi/q35/DSDT.mmio64", -"tests/data/acpi/q35/DSDT.ipmibt", -"tests/data/acpi/q35/DSDT.cphp", -"tests/data/acpi/q35/DSDT.memhp", -"tests/data/acpi/q35/DSDT.numamem", -"tests/data/acpi/q35/DSDT.nohpet", -"tests/data/acpi/q35/DSDT.dimmpxm", -"tests/data/acpi/q35/DSDT.acpihmat", -"tests/data/acpi/q35/DSDT.acpierst", -"tests/data/acpi/q35/DSDT.applesmc", -"tests/data/acpi/q35/DSDT.pvpanic-isa", -"tests/data/acpi/q35/DSDT.ivrs", -"tests/data/acpi/q35/DSDT.viot", -"tests/data/acpi/q35/DSDT.cxl", -"tests/data/acpi/q35/DSDT.ipmismbus", -"tests/data/acpi/q35/DSDT.xapic", diff --git a/tests/data/acpi/pc/DSDT b/tests/data/acpi/pc/DSDT index 5b4624cb68c78eab6e356987974b9bee6c9a1785..f1cf7fab349bd26e0f0fa461c71= 5534c1426fbf5 100644 GIT binary patch delta 60 zcmaE0^wfyUCDCX=3DUu}Tiy diff --git a/tests/data/acpi/pc/DSDT.acpierst b/tests/data/acpi/pc/DSDT.acp= ierst index 99461b771eec2043263b5bc3c109a08969a99af9..5cb477625e96f5526f0c7703ba3= b443a0b35eefd 100644 GIT binary patch delta 60 zcmdmCwAYBsCD1oq7x2P diff --git a/tests/data/acpi/pc/DSDT.acpihmat b/tests/data/acpi/pc/DSDT.acp= ihmat index b84f3b47c37e427b927c36036307db6e83a843e5..76e8bef36fdb667447ad0320d35= 604031aae2c93 100644 GIT binary patch delta 46 zcmeCRon*`966_K(NsfVmaqdR0HLQ#xlRxqaZ{Esk#ktv@-;bY7z&_qRz;!YUzZC#I C&J4u> delta 55 zcmbPa+iT0^66_MvE62dV_;w@L8rIFHSuHt5{aNDO16(=3DcJv?1_9i0O_4Gav-7$!%^ LS#4(K_vZ%yzRnKP diff --git a/tests/data/acpi/pc/DSDT.bridge b/tests/data/acpi/pc/DSDT.bridge index 6771620078086e42b445474b16797094e0d0a801..c94c1b54b3ac3085c02307d9564= b258e791fcf1e 100644 GIT binary patch delta 60 zcmaFl_1ufgCD@$5#fHLSuS@$Lbx9Pu8WF1(J;0iFg124Vg)v(z|z@HxgQ?nI5 diff --git a/tests/data/acpi/pc/DSDT.hpbridge b/tests/data/acpi/pc/DSDT.hpb= ridge index 99461b771eec2043263b5bc3c109a08969a99af9..5cb477625e96f5526f0c7703ba3= b443a0b35eefd 100644 GIT binary patch delta 60 zcmdmCwAYBsCD1oq7x2P diff --git a/tests/data/acpi/pc/DSDT.hpbrroot b/tests/data/acpi/pc/DSDT.hpb= rroot index b10b17cb1111f6b5d61da4aa1c754f2921a4ac1c..ff04ad360beb60571d48bd1e477= a4e58e5ee9337 100644 GIT binary patch delta 37 scmZ21u~=3De5CX290ynBEvN4$rp3$LSdfTw|hf!XGC7Cx5ET^uu+0mthKGXMYp delta 38 tcmZ21u~=3De5Cd=3DkJ79JK6k$Cq2SB`iOPZwTC=3DKxOw0|PUL&7B;xm;uwt3P}I} diff --git a/tests/data/acpi/pc/DSDT.ipmikcs b/tests/data/acpi/pc/DSDT.ipmi= kcs index aff3e9bbe1fdbf783c49d07a49c2e16317a2871e..83eec58a52b5844a02003665494= f63a4ea0b26a7 100644 GIT binary patch delta 60 zcmZ2syw;e@CD(+U9a*$_bh delta 55 zcmZ2$yuz5vCDCX=3DUxO5J{ diff --git a/tests/data/acpi/pc/DSDT.numamem b/tests/data/acpi/pc/DSDT.numa= mem index e03f4d07b86018d12def37b5397ba9673548e2b7..1cecaa64e9ef29b5096ae1ba488= 2e2c8e080f0ea 100644 GIT binary patch delta 60 zcmaE6^xBBaCDFn`uA2{E diff --git a/tests/data/acpi/q35/DSDT b/tests/data/acpi/q35/DSDT index c8a2b5df26608f10c75ab8f2f9e404fda987891b..8e989819a5f8c470a8933bf9b7a= f7b988048cce6 100644 GIT binary patch delta 60 zcmccac*l{;CDF$5%p`l2 OnN7eRBt7}Kj1>Sj$q~x{ delta 55 zcmccPc-@i9CDF$5%q07a OnN7eRBt7}Kj1>SepAoMB delta 55 zcmaFs_`;FPCDGa`p33dtLRAXRZ+`N%%js&B~q7?u+ C+70gj delta 55 zcmeD5Y4PE533dr#QDb0WWZuX%M`H7C2}@2T=3D?833dtLQeR`WAsL@ITFGm@$Lbx9Pu8WF1(J;0iFg124dzAI9^lFm@8Rjf>*yTdX<%Sr#xS`^ L$!ha7xogY-;e!y; diff --git a/tests/data/acpi/q35/DSDT.cxl b/tests/data/acpi/q35/DSDT.cxl index 96594c00b3b0e0a4933d6d851d927487ad4d18eb..cecc1caaab81db8559781d23e45= d8c615dc73740 100644 GIT binary patch delta 60 zcmZqm>GI)n33dtLQe$9Xe7})vj)bsCynBEvN4$rp3$LSdfTw|hf!XFI5_~M1nPizc O*#zuC(vy$NSOEaxZV#OR delta 55 zcmeD3Y4zc933dr#RbyaawBN`zM`H7C2_6cgc^-CD(^b diff --git a/tests/data/acpi/q35/DSDT.ipmibt b/tests/data/acpi/q35/DSDT.ipm= ibt index 427272b95692099edc47f569e41fbb3ba69f6b60..c4f8212c63be2a1d579d6ebc9ac= 41d4bd5be414b 100644 GIT binary patch delta 60 zcmZ4FwA_iyCDt_cgbxq^ delta 55 zcmZ4Pw8)9eCD8ITFGm@$Lbx9Pu8WF1(J;0iFg124F$5%q07a OnN7eRBt7}Kj1>SepAoMB delta 55 zcmaFs_`;FPCDCDxc;90_5Oc=3DrHTj(87G7hXr_08ax01GCLbB=3D}f1Gs%jw OvI*FOq$eMju>t_l9uGeN delta 55 zcmbQ^GTnvCCD LXtnv6j2J5bsWcBX diff --git a/tests/data/acpi/q35/DSDT.nohpet b/tests/data/acpi/q35/DSDT.noh= pet index e17b252b03b290ba39601afffbee66159a57bfb1..9c2ec9f2c96f6bdf536c28559fd= 804523134cf2c 100644 GIT binary patch delta 61 zcmX@SZBN3SZ delta 55 zcmaFlc-N83CD*CD7gb)S* delta 55 zcmX@;w8x3dCDt_xEDwVK delta 54 zcmdnxw$+WxCD; diff --git a/tests/data/acpi/q35/DSDT.viot b/tests/data/acpi/q35/DSDT.viot index 574b8a0094c556cd8555b7a4e1b92b2d5f64750a..6927d1cc96565f0e1e4c7f19fd7= 09635873db912 100644 GIT binary patch delta 60 zcmZ4Ewb6^qCD (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667222143679723.9192949693177; Mon, 31 Oct 2022 06:15:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUId-0003iP-Pj; Mon, 31 Oct 2022 08:53:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIb-0003YL-N2 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIZ-0003MW-T5 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:53 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-263-g2-vWA3GNIWF0TtUkqURbg-1; Mon, 31 Oct 2022 08:53:50 -0400 Received: by mail-wm1-f69.google.com with SMTP id bg21-20020a05600c3c9500b003c2acbff422so5706266wmb.0 for ; Mon, 31 Oct 2022 05:53:50 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id f16-20020a05600c4e9000b003cf568a736csm5262812wmq.20.2022.10.31.05.53.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220831; 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: in-reply-to:in-reply-to:references:references; bh=c/cLew8bMa1wxPGKcVwPToMwd5hFO5px9x2lp9qcZKA=; b=MbV1J9TjWt5YbEG0Rd5Be3dxMiUc22Tfv0H25IN3G6NvY3735c/AOGtIYb+e+ZlWR/6YR2 WWOOGy/My/6lhw2ysbaHIpGqzEpp/DxFydg12S9bMkvdRFSDG2RSr/DShNdZqR4YM0awHj RNQo/etgyACoeMBvW1t2+LBIQGoLNTM= X-MC-Unique: g2-vWA3GNIWF0TtUkqURbg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=c/cLew8bMa1wxPGKcVwPToMwd5hFO5px9x2lp9qcZKA=; b=TUhbIoYTahaz74hEMQJ7XIse98OROeVMJKo+ciDtKcIqLQbpnShZflKUlDb3uuWqKT xOkJRVBPX+jNNt+TJ+RFs6i036vUkAQI2szvv1mmGvi2Bwle3kakxhY3XDai10kIk331 ZGRqbN+w6Fc0A/e6pkVOSZ7twEf4RpDMQ3K3dkJ6Y58HOpyNBpQUMXkZlSxUQgu6gMeL K8mfJ/p2bNtLI8L2VeBWd7tLkKK6n1scSzDCnh7MqmbXo/Ts05Ws5Cqhv4LOQ3861OQ1 tNgJs6pP4UUa+5kdG9ZXtt5UeNiOvXmIwOoTR2l1mtkX1jbhA03WiwR+0k5mEVhgslGw SZBQ== X-Gm-Message-State: ACrzQf23BUeNjwqCV8V1+ZBCefSrODVvC3q12cMHpbK5n8VdS1Txk1Hz vGepzXnbeyKw6fYrh+lHWp5bC319nY0sZiUoPHsL0nR3x9jp3t532UbkCFem4pBX67yb4goM2+P 89+2uEVIxyeT0ZppSi9HcKn47efe/a0FXSqK62CQiD1ofPEbCGBC0UDlHqJ0D X-Received: by 2002:adf:e64e:0:b0:236:76a9:446 with SMTP id b14-20020adfe64e000000b0023676a90446mr8171077wrn.696.1667220828894; Mon, 31 Oct 2022 05:53:48 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7Dd9kConTrFjQVNrfqiFp2L0MdfQEP0Ks+recq8QnqkgmskH0KevmD6fL9MZAtwEuP9+eOLg== X-Received: by 2002:adf:e64e:0:b0:236:76a9:446 with SMTP id b14-20020adfe64e000000b0023676a90446mr8171061wrn.696.1667220828643; Mon, 31 Oct 2022 05:53:48 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:45 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , "Christian A. Ehrhardt" , Alexander Bulekov , qemu-stable@nongnu.org, Eric DeVolder , Igor Mammedov , Ani Sinha Subject: [PULL 65/86] hw/acpi/erst.c: Fix memory handling issues Message-ID: <20221031124928.128475-66-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222145507100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Christian A. Ehrhardt" - Fix memset argument order: The second argument is the value, the length goes last. - Fix an integer overflow reported by Alexander Bulekov. Both issues allow the guest to overrun the host buffer allocated for the ERST memory device. Cc: Eric DeVolder Cc: qemu-stable@nongnu.org Fixes: f7e26ffa590 ("ACPI ERST: support for ACPI ERST feature") Tested-by: Alexander Bulekov Signed-off-by: Christian A. Ehrhardt Message-Id: <20221024154233.1043347-1-lk@c--e.de> Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1268 Reviewed-by: Alexander Bulekov Reviewed-by: Eric DeVolder Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/acpi/erst.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/acpi/erst.c b/hw/acpi/erst.c index df856b2669..aefcc03ad6 100644 --- a/hw/acpi/erst.c +++ b/hw/acpi/erst.c @@ -635,7 +635,7 @@ static unsigned read_erst_record(ERSTDeviceState *s) if (record_length < UEFI_CPER_RECORD_MIN_SIZE) { rc =3D STATUS_FAILED; } - if ((s->record_offset + record_length) > exchange_length) { + if (record_length > exchange_length - s->record_offset) { rc =3D STATUS_FAILED; } /* If all is ok, copy the record to the exchange buffer */ @@ -684,7 +684,7 @@ static unsigned write_erst_record(ERSTDeviceState *s) if (record_length < UEFI_CPER_RECORD_MIN_SIZE) { return STATUS_FAILED; } - if ((s->record_offset + record_length) > exchange_length) { + if (record_length > exchange_length - s->record_offset) { return STATUS_FAILED; } =20 @@ -716,7 +716,7 @@ static unsigned write_erst_record(ERSTDeviceState *s) if (nvram) { /* Write the record into the slot */ memcpy(nvram, exchange, record_length); - memset(nvram + record_length, exchange_length - record_length, 0xF= F); + memset(nvram + record_length, 0xFF, exchange_length - record_lengt= h); /* If a new record, increment the record_count */ if (!record_found) { uint32_t record_count; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221709; cv=none; d=zohomail.com; s=zohoarc; b=MKwbbNd3hiFswOvR0Hx6KTjG4NYBtVWOMPfbv1r/s0aD5js694Nj2r4XtmU+WW8BfwNiKEu+ZVZEmoFCGUrvUcrsp+fly9GdTzXc51VMtn+jx5gPn9USvabXunK76QQuhyNyn4Dyj+B+jwHViu0rsvORsy+acuxmNFaaRK7J6jI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221709; 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=jNpjaX4cmprH7T9UhisnDsmdXVXPpfdfHlComBYrO/E=; b=cVzapCEPL0qsqPlp9BTAlh3gqZhOoTJryPt9QmM8eWW2pwuzo+wECV3KHXhirPGxxLrPhLjpzBcyZ5Wvq+1xOSRCHUTp3IOTeGuRs8ledO/QUSxufNHpD7S/4fihgpR8v5ksqEObZYrrSmhRVjqPUXSNllQ54Lv66OsTiwkwTxc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221709298889.5541067650599; Mon, 31 Oct 2022 06:08:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJ0-0004Zc-Bw; Mon, 31 Oct 2022 08:54:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIe-0003nU-Pd for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUId-0003NH-CZ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:56 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-144-pLONW9IDNYWW3HREtzZHiQ-1; Mon, 31 Oct 2022 08:53:53 -0400 Received: by mail-wm1-f72.google.com with SMTP id e8-20020a05600c218800b003cf634f5280so949506wme.8 for ; Mon, 31 Oct 2022 05:53:53 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id d8-20020a5d5388000000b0023672104c24sm7193354wrv.74.2022.10.31.05.53.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220834; 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=jNpjaX4cmprH7T9UhisnDsmdXVXPpfdfHlComBYrO/E=; b=VaujLeSouHLDqxU4ovbx9N9/Y+VZU5T2zBZIh4UpILskMukgyybfozg8SCj4IDV7L7yZ/D 4SceNJIvgyKgMj0j0ZCvQFtySDwj07FrPs+Js+YWoPiqq9775bOvtaJZlEBtyxaETbB25R g0uiffpaJtRMAyDyg+iQP/8pRAs5vPo= X-MC-Unique: pLONW9IDNYWW3HREtzZHiQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jNpjaX4cmprH7T9UhisnDsmdXVXPpfdfHlComBYrO/E=; b=lXANlpJVYZK7v8x9Ir/2nhzXQ989u3ms2ypqwgD4RGv1W+PScKZwgDcbscgQ2E3K+2 r0EKn/yVdpqYS4hyLqpWVQu3bt/VJ4mYsKON/Y3KLjQxsqZ2uR9sKKoN6D4JYIe0Quhm ASjpYR3miHUZytQA44ytR+xop67kkNbnOQ3NYM6gu+xa1+KfCff8o3jgTKTgogbZeO2Z 0r6mUFjTcR0auIcn4HZCocgyQAoUcyUhq27lViU5IZt9EtP5t83HZuoxXLIlOlWafDLl Ez/Hg4TuOHT5auqusZ9eEESvjBXtXlFbkZksco2pAmSjWXE0jsGiTcD9d3mTl/9+xQ7t CjTw== X-Gm-Message-State: ACrzQf0oBJBWhwm5cKLvGZ0yr/iB9/Vkk1TQIBPnK77w607HVOAdV3WJ 4ya1UfKhNbUbd/yHGfluuhyaDCPTv6hDrHNFm06hXPq0D+xaBo17U8QxnEkDQpphIJ4Lw+XadKf n6Von+xVJcY3ES7PQCcUMJF8ElKNw+5yZWsPi6hlWTFZen4OuzC9vUU1DK54+ X-Received: by 2002:a7b:c34a:0:b0:3c6:e069:d41c with SMTP id l10-20020a7bc34a000000b003c6e069d41cmr18158706wmj.180.1667220831704; Mon, 31 Oct 2022 05:53:51 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7JcySzAOQQ2rm7r/PR+NZOdxMuawAxlWNRRKzH7aRsZImBVbg4NSPeeSoTtrzR7nfTHzpXiQ== X-Received: by 2002:a7b:c34a:0:b0:3c6:e069:d41c with SMTP id l10-20020a7bc34a000000b003c6e069d41cmr18158683wmj.180.1667220831413; Mon, 31 Oct 2022 05:53:51 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:48 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Markus Armbruster , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Richard Henderson , Thomas Huth , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 66/86] MAINTAINERS: Add qapi/virtio.json to section "virtio" Message-ID: <20221031124928.128475-67-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221727567100001 From: Markus Armbruster Cc: Michael S. Tsirkin Signed-off-by: Markus Armbruster Message-Id: <20221020120458.80709-1-armbru@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 47c02889a8..e894c07552 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2014,6 +2014,7 @@ S: Supported F: hw/*/virtio* F: hw/virtio/Makefile.objs F: hw/virtio/trace-events +F: qapi/virtio.json F: net/vhost-user.c F: include/hw/virtio/ =20 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221196; cv=none; d=zohomail.com; s=zohoarc; b=GKt9kiJ9T1DWC/ftJZIKNI/VxxBlOOKy1/E86ueUkI2ibpPwSFmgpyhF1rFKqsIQQmCoX5cjBZ6G4zKYNZU5hilPhYf0MeJuk8Cc4XGzOctDJP1+lyHiw4wSH7Pda3QlHeP76FrIpOOYb7Wukp6qTHHCejhEKr69nTj4o3mgsI4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221196; h=Content-Type: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=86Unsx2wQ2bsPsc8yY4Dt3c7f8SIJXtCrIwZmB0N9K8=; b=GsudgmwhxiOi8A2R5RJif6Ygn4hSRNRdvorYEXmsMlSH2krW0A1j5snZOF9n9aUIcnBgPV8830LMhbTi4geztKpIMOz9Pf372zYhEj1D/+VnJ+zNlhgS3I+QLVfbwIKxUfGMUl/YwRFs2gznr2PlydeHqosDt0V+y7GxsfswzGY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221196592548.6226692303334; Mon, 31 Oct 2022 05:59:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJ5-0004nh-Qw; Mon, 31 Oct 2022 08:54:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIi-00041x-0A for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIg-0003Na-1O for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:53:59 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-650-9vpbY7qFNWKE3OCnn0niog-1; Mon, 31 Oct 2022 08:53:56 -0400 Received: by mail-wr1-f72.google.com with SMTP id s7-20020adfa287000000b00236c367fcddso1381521wra.6 for ; Mon, 31 Oct 2022 05:53:55 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id l6-20020a05600c4f0600b003cf774c31a0sm1165270wmq.16.2022.10.31.05.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220837; 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: in-reply-to:in-reply-to:references:references; bh=86Unsx2wQ2bsPsc8yY4Dt3c7f8SIJXtCrIwZmB0N9K8=; b=cPSphG3r/HiZ3tObm1kYkQLh5nobFbYhCHHWwQuHCH7NNVHqnqrqgE2boHwzmhIUzC3nvW PA+Sz6kYgFfUzleWgX5VWroAY/G2h/0cys9iVW/Vg7TVZaexdPjnObuJEcr7JF94u7hDjH LwpVu6AH4NnYP1vnRohx35OKCjSdbSA= X-MC-Unique: 9vpbY7qFNWKE3OCnn0niog-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=86Unsx2wQ2bsPsc8yY4Dt3c7f8SIJXtCrIwZmB0N9K8=; b=W7J1x3Khg9IGFk/u0JLKz9X09lzWVSP9J+iTtTJvaPy0Z9GluGftVef8Cc8NoYVrEP 9UDLYulTRjj7sqgHw3+5uXVT1IeW5L7p7Fst5zuCzStmh9grYieQgFsvjcqYO10Va7K8 ioJNyYiP/ff2EjLd+SGLLGNipkKnOYwlJDrRVpwMnfPyVfQ+GrC+EYe7BjD7CRyNzbSh pN6dXrZyl+LxHfRdXBAXkBmJtzaCEHeFtv72h13BJB6Afkj2F2TS1a8SzQqcJE0V+KR3 0g/4YPdtc87lsSbOF/cWMzNVsEwzg45fPvH+/QgVOiGczq4EcjQat7xqT2T4zxs248qi OlZA== X-Gm-Message-State: ACrzQf1OxB/nXn2XRDacvPrN4sEHfdPaUs/axNhpW1FCGwCw9ykifXtf ijXyfadtkWZpMz/pr27UmD0Tdot78lapsR4Q233ouxIVS1vITvW4HEMnMYVuS2/S4LJXRVGmulr usxz97atgSnVwnRTkGKXvd1+YmgTf0AvQvUZr4ujAqtfePilxIh9T0y8alwAM X-Received: by 2002:a05:600c:21a:b0:3cf:6e76:9830 with SMTP id 26-20020a05600c021a00b003cf6e769830mr4246836wmi.159.1667220834547; Mon, 31 Oct 2022 05:53:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7Kd4HOQD5I/WaE7YIp6vNhJiPgJn8Bj/9IkkDISmdwv1eVwr2zL/XejmRLGoLlBlbQn9U7Jg== X-Received: by 2002:a05:600c:21a:b0:3cf:6e76:9830 with SMTP id 26-20020a05600c021a00b003cf6e769830mr4246819wmi.159.1667220834249; Mon, 31 Oct 2022 05:53:54 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:51 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lev Kujawski , Thomas Huth , Laurent Vivier , Paolo Bonzini Subject: [PULL 67/86] qpci_device_enable: Allow for command bits hardwired to 0 Message-ID: <20221031124928.128475-68-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221197603100007 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lev Kujawski Devices like the PIIX3/4 IDE controller do not support certain modes of operation, such as memory space accesses, and indicate this lack of support by hardwiring the applicable bits to zero. Extend the QEMU PCI device testing framework to accommodate such devices. * tests/qtest/libqos/pci.h: Add the command_disabled word to indicate bits hardwired to 0. * tests/qtest/libqos/pci.c: Verify that hardwired bits are actually hardwired. Signed-off-by: Lev Kujawski Message-Id: <20221024094621.512806-2-lkujaw@mailbox.org> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/libqos/pci.h | 1 + tests/qtest/libqos/pci.c | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h index 8389614523..eaedb98588 100644 --- a/tests/qtest/libqos/pci.h +++ b/tests/qtest/libqos/pci.h @@ -68,6 +68,7 @@ struct QPCIDevice bool msix_enabled; QPCIBar msix_table_bar, msix_pba_bar; uint64_t msix_table_off, msix_pba_off; + uint16_t command_disabled; }; =20 struct QPCIAddress { diff --git a/tests/qtest/libqos/pci.c b/tests/qtest/libqos/pci.c index b23d72346b..4f3d28d8d9 100644 --- a/tests/qtest/libqos/pci.c +++ b/tests/qtest/libqos/pci.c @@ -220,18 +220,19 @@ int qpci_secondary_buses_init(QPCIBus *bus) =20 void qpci_device_enable(QPCIDevice *dev) { - uint16_t cmd; + const uint16_t enable_bits =3D + PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; + uint16_t cmd, new_cmd; =20 /* FIXME -- does this need to be a bus callout? */ cmd =3D qpci_config_readw(dev, PCI_COMMAND); - cmd |=3D PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; + cmd |=3D enable_bits; qpci_config_writew(dev, PCI_COMMAND, cmd); =20 /* Verify the bits are now set. */ - cmd =3D qpci_config_readw(dev, PCI_COMMAND); - g_assert_cmphex(cmd & PCI_COMMAND_IO, =3D=3D, PCI_COMMAND_IO); - g_assert_cmphex(cmd & PCI_COMMAND_MEMORY, =3D=3D, PCI_COMMAND_MEMORY); - g_assert_cmphex(cmd & PCI_COMMAND_MASTER, =3D=3D, PCI_COMMAND_MASTER); + new_cmd =3D qpci_config_readw(dev, PCI_COMMAND); + new_cmd &=3D enable_bits; + g_assert_cmphex(new_cmd, =3D=3D, enable_bits & ~dev->command_disabled); } =20 /** --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221818; cv=none; d=zohomail.com; s=zohoarc; b=UFNMg1UOkGPm7s6FDI5qCnWXrhqPyIEhrWAdE+7hPsRklHfgtmwZ9UhNzJAWfcdbSRbHdBx2QyahAGfwBZtRaaekf65JZVUJPOvdezb6BqnXP+U7A4ecSIkFufa1CDodwC7y7vbAiNO+gI+gDbfkZqHR8chQK5eQdc2SYu3Fz7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221818; h=Content-Type: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=PDXu9jRd9qqj00cFTHUQFrz69Hk7wjTE7YTb3iWea4A=; b=gn5xv6FT9be0SVuZ7Bvt64n8VD8mnL2YyMLTqcXg0a8Ez75/kmN8PETi4U8LgZqR9vTj6EWx/6SmbSG5ZvDlU1VOS9Il5gWVjLor8GhUEXnmPlwpxl4nr/0xAX1RFi2xaNh37UyEsONzeDejvLhQ3VDnlBzMaWFT0HPMPRU/ZtY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221818485430.0112452822823; Mon, 31 Oct 2022 06:10:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJF-00052m-8X; Mon, 31 Oct 2022 08:54:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIn-00048h-LN for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIj-0003P7-JL for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:03 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-470-ceswJAT_ODKs-gZjwXtMAw-1; Mon, 31 Oct 2022 08:53:59 -0400 Received: by mail-wr1-f71.google.com with SMTP id r22-20020adfa156000000b0023660e969ddso3011271wrr.19 for ; Mon, 31 Oct 2022 05:53:59 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k17-20020a05600c1c9100b003cf4ec90938sm566310wms.21.2022.10.31.05.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220840; 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: in-reply-to:in-reply-to:references:references; bh=PDXu9jRd9qqj00cFTHUQFrz69Hk7wjTE7YTb3iWea4A=; b=fT4Ox/EKtI63YX6HjwXfqWJBI/yP0TK1cHbYAAbBrx6QlhkcyKU8vvYnftbWvdLFh1P1RZ winpNPynZ0uE3+77JPjNIYZwOQnl60jUYxPCqTtSyL7OS9yCRzMVF0siMi3dTSP7ZjCYMl BwETykj/Ilkev9BU73fD1MSGhqL+MG8= X-MC-Unique: ceswJAT_ODKs-gZjwXtMAw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=PDXu9jRd9qqj00cFTHUQFrz69Hk7wjTE7YTb3iWea4A=; b=ArQNSma798Ne+di9hmvK49Nzv0nPg0M6xiuisHkaprc0eDtBQFxg27LKIeKbF0+6lL W8X1/moQwX/zaJ+AH1YLrj5FdIfG9UPomkz2+hshhzUTnx83kxmsmt2TcYEuQ2mopIob FFL/YiZtdPgo+PhMbwq2oQh15n/rg4qaOasgpoLMuCVqJ1WQ5XNGNgEpOpxIZ0xE6M/v SJbK3Msw0mj9umSBNpbqI/OfxohGfWGNJ7PIWBiDSfesysduN2+y+LVDPOiSt/4JFCAM UtPkkns8ArqaH/7pAjYj6IVhny2Wau7ojuD4fuATtjOWrB5DE/2PR6P9IyWpYtoU3YLZ rM3Q== X-Gm-Message-State: ACrzQf3qbKPN/nmzkwXMMsONcAs8kNxFNUJCMjUMZLYMy8TF4U1KZu7u xfKZzKGkACu1Kq60CziMc8QP+yPq2xQxB5a13c83Wjdg4xwqqKT3Rw/CBqOSgGy+HEx739mqF3P IOT6sXDV7jnc4aOBDZ5bB8V8KJB8fqoL5M9vPK35KokKEwCTGEIm5ZsbiHvX2 X-Received: by 2002:adf:ded2:0:b0:236:bad7:c850 with SMTP id i18-20020adfded2000000b00236bad7c850mr5859736wrn.565.1667220837806; Mon, 31 Oct 2022 05:53:57 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5lsJIzKtpjH0mfcwyvrLwJaEjwmQQrAP3ydYbIworOoqVpb/JRH68SVRJxwIyeCtLsKLw9rA== X-Received: by 2002:adf:ded2:0:b0:236:bad7:c850 with SMTP id i18-20020adfded2000000b00236bad7c850mr5859708wrn.565.1667220837483; Mon, 31 Oct 2022 05:53:57 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:54 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Lev Kujawski , Eduardo Habkost , Marcel Apfelbaum , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Yanan Wang , John Snow , Thomas Huth , Laurent Vivier , Paolo Bonzini , qemu-block@nongnu.org Subject: [PULL 68/86] hw/ide/piix: Ignore writes of hardwired PCI command register bits Message-ID: <20221031124928.128475-69-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221821029100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lev Kujawski One method to enable PCI bus mastering for IDE controllers, often used by x86 firmware, is to write 0x7 to the PCI command register. Neither the PIIX 3/4 specifications nor actual PIIX 3 hardware (a Tyan S1686D system) permit setting the Memory Space Enable (MSE) bit, thus the command register would be left in an unspecified state without this patch. * hw/core/machine.c Facilitate migration by not masking writes to the PIIX 3/4 PCICMD register for machine states of QEMU versions prior to 7.2. * hw/ide/piix.c a) Add a reference to the PIIX 4 data sheet. b) Mask the MSE bit using the QEMU PCI device wmask field. c) Define a new boolean property, x-filter-pcicmd, to control whether the write mask is enabled and enable it by default for both the PIIX 3 and PIIX 4 IDE controllers. * include/hw/ide/pci.h Add the boolean filter_pcicmd field to the PCIIDEState structure, because the PIIX IDE controllers do not define their own state. * tests/qtest/ide-test.c Use the command_disabled field of the QPCIDevice testing model to indicate that PCI_COMMAND_MEMORY is hardwired within PIIX 3/4 IDE controllers. Signed-off-by: Lev Kujawski Message-Id: <20221024094621.512806-3-lkujaw@mailbox.org> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/hw/ide/pci.h | 1 + hw/core/machine.c | 2 ++ hw/ide/piix.c | 24 ++++++++++++++++++++++++ tests/qtest/ide-test.c | 1 + 4 files changed, 28 insertions(+) diff --git a/include/hw/ide/pci.h b/include/hw/ide/pci.h index d8384e1c42..5424b00a9e 100644 --- a/include/hw/ide/pci.h +++ b/include/hw/ide/pci.h @@ -53,6 +53,7 @@ struct PCIIDEState { MemoryRegion bmdma_bar; MemoryRegion cmd_bar[2]; MemoryRegion data_bar[2]; + bool filter_pcicmd; /* used only for piix3/4 */ }; =20 static inline IDEState *bmdma_active_if(BMDMAState *bmdma) diff --git a/hw/core/machine.c b/hw/core/machine.c index 907fa78ff0..65fdfe2fed 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -42,6 +42,8 @@ =20 GlobalProperty hw_compat_7_1[] =3D { { "virtio-device", "queue_reset", "false" }, + { "piix3-ide", "x-filter-pcicmd", "false" }, + { "piix4-ide", "x-filter-pcicmd", "false" }, }; const size_t hw_compat_7_1_len =3D G_N_ELEMENTS(hw_compat_7_1); =20 diff --git a/hw/ide/piix.c b/hw/ide/piix.c index de1f4f0efb..a3af32e126 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c @@ -25,6 +25,8 @@ * References: * [1] 82371FB (PIIX) AND 82371SB (PIIX3) PCI ISA IDE XCELERATOR, * 290550-002, Intel Corporation, April 1997. + * [2] 82371AB PCI-TO-ISA / IDE XCELERATOR (PIIX4), 290562-001, + * Intel Corporation, April 1997. */ =20 #include "qemu/osdep.h" @@ -160,6 +162,21 @@ static void pci_piix_ide_realize(PCIDevice *dev, Error= **errp) uint8_t *pci_conf =3D dev->config; int rc; =20 + /* + * Mask all IDE PCI command register bits except for Bus Master + * Function Enable (bit 2) and I/O Space Enable (bit 0), as the + * remainder are hardwired to 0 [1, p.48] [2, p.89-90]. + * + * NOTE: According to the PIIX3 datasheet [1], the Memory Space + * Enable (MSE, bit 1) is hardwired to 1, but this is contradicted + * by actual PIIX3 hardware, the datasheet itself (viz., Default + * Value: 0000h), and the PIIX4 datasheet [2]. + */ + if (d->filter_pcicmd) { + pci_set_word(dev->wmask + PCI_COMMAND, + PCI_COMMAND_MASTER | PCI_COMMAND_IO); + } + pci_conf[PCI_CLASS_PROG] =3D 0x80; // legacy ATA mode =20 bmdma_setup_bar(d); @@ -185,6 +202,11 @@ static void pci_piix_ide_exitfn(PCIDevice *dev) } } =20 +static Property pci_piix_ide_properties[] =3D { + DEFINE_PROP_BOOL("x-filter-pcicmd", PCIIDEState, filter_pcicmd, TRUE), + DEFINE_PROP_END_OF_LIST(), +}; + /* NOTE: for the PIIX3, the IRQs and IOports are hardcoded */ static void piix3_ide_class_init(ObjectClass *klass, void *data) { @@ -198,6 +220,7 @@ static void piix3_ide_class_init(ObjectClass *klass, vo= id *data) k->device_id =3D PCI_DEVICE_ID_INTEL_82371SB_1; k->class_id =3D PCI_CLASS_STORAGE_IDE; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + device_class_set_props(dc, pci_piix_ide_properties); dc->hotpluggable =3D false; } =20 @@ -220,6 +243,7 @@ static void piix4_ide_class_init(ObjectClass *klass, vo= id *data) k->device_id =3D PCI_DEVICE_ID_INTEL_82371AB; k->class_id =3D PCI_CLASS_STORAGE_IDE; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + device_class_set_props(dc, pci_piix_ide_properties); dc->hotpluggable =3D false; } =20 diff --git a/tests/qtest/ide-test.c b/tests/qtest/ide-test.c index dbe1563b23..d5cec7c14c 100644 --- a/tests/qtest/ide-test.c +++ b/tests/qtest/ide-test.c @@ -174,6 +174,7 @@ static QPCIDevice *get_pci_device(QTestState *qts, QPCI= Bar *bmdma_bar, =20 *ide_bar =3D qpci_legacy_iomap(dev, IDE_BASE); =20 + dev->command_disabled =3D PCI_COMMAND_MEMORY; qpci_device_enable(dev); =20 return dev; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221194; cv=none; d=zohomail.com; s=zohoarc; b=f50KmM/4DphUj17bgSIeNvYv2/7nH/1/NGT0FCZuZBeUUL128ebd4C1tFwJoNrxy9LTwebdHtVSQ47U19+TO0OjVxw7AQNWHvgWbkAENmKaA1aAIPY1L0n8rbhuQtzJkoOwlEvEY/255Tur5LmxGXnz1DnPMn3L4ojSnI+Obd0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221194; h=Content-Type: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=kVRFsZ5tOlNpwt90iJgpb5in64yP3rEEY2+3nFX4gMU=; b=B7fMm8MjExs6PuUKmcUCp7NQ3Fzb2sJkOZ5jtHqUgbFE2BgGouHzS+mOFcNoUkZSiii5FzNKOzvicWoWxWKMboW+ttbUCssODmEna75trpEB1kih2VDjvJNdaXrTjXHhk9dX6Z0H4f8ZfH7heDhgt8NNBmBmZwfAtvnZHCZJ2Eo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221194385281.8688542388019; Mon, 31 Oct 2022 05:59:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJH-0005Lg-BX; Mon, 31 Oct 2022 08:54:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIt-0004JV-KR for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIo-0003Px-15 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:09 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-322-j2f-sB0oNLGo_apxVGbFXg-1; Mon, 31 Oct 2022 08:54:03 -0400 Received: by mail-wr1-f70.google.com with SMTP id g4-20020adfbc84000000b0022fc417f87cso3042248wrh.12 for ; Mon, 31 Oct 2022 05:54:03 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id az24-20020adfe198000000b0022e035a4e93sm7156064wrb.87.2022.10.31.05.53.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220845; 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: in-reply-to:in-reply-to:references:references; bh=kVRFsZ5tOlNpwt90iJgpb5in64yP3rEEY2+3nFX4gMU=; b=c2PhlBEmBXH1MkpgW0Mq59TOJ/6SL73RmsKWmWdkB+Qt2w4vKpdnYTyzJ+PqvN7jtWrfmM JYvE1u1lnAnHzwPv26rY59TIAmN10FIZLgavLo+HetZLX9PMqUJ2EB3z3va3PnjKCbYJHs OYNjTNCCR5uCstbdu00fLZt038ku1GA= X-MC-Unique: j2f-sB0oNLGo_apxVGbFXg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kVRFsZ5tOlNpwt90iJgpb5in64yP3rEEY2+3nFX4gMU=; b=WXewyhX7lCjyrdXWFH2QxyXY7eCrAUWUUUzt4IEak+xXXtefHLj4dllaaDb65MG1HT Ka2KJSKVJXgjKGGNg8RD7eKuhTNeTKeINSHOWzw67OWP8lg08LEQJ4gclAwMetpp9Tmj tXwVo4OmBj79D3VpQeBmxD24uWHm5/ZMf5zvQlDVs2/RXEpxPUFJPPaomLoJJDqMzy1h IJhO2rhZn12qcVNwTt3rFiOiiqSyOQEf7IDQfURyfUhNwnm6J5Ai6CCxaYlyWpgWOyv2 ZL+rM+O+prFJjP9IA85OESpcDE9VEkJK27GR4WSlrGCVD3+d3bpxLgAoe70V1llg4Y4j J6Lw== X-Gm-Message-State: ACrzQf20zgpx0kYFN7P1CnaJ6c6owmfYjT2Vtkjix/+V3+Xh3vgakfrS 5d5WoBZWUn2WfHpxQX1f1fr5RJgpuUV1fhvKLWawxwBkiIYv/rSV6tbU6LJdtPG4j7f6Co5NJYM 3wFh0guk95OTZ8WJVXSedYiDkD1xtGk5VUl9TwQF7Nbzrz9oYuvWjYWeT+dPt X-Received: by 2002:a5d:698e:0:b0:236:4b95:17ff with SMTP id g14-20020a5d698e000000b002364b9517ffmr8306291wru.196.1667220841902; Mon, 31 Oct 2022 05:54:01 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4zlXKBmkM3DQ8eQE9PYW9bZ7LCsRGmydQHc7aPEfnnUYmkIS4OGXjYosK6NdL9Iv6RyRuJdA== X-Received: by 2002:a5d:698e:0:b0:236:4b95:17ff with SMTP id g14-20020a5d698e000000b002364b9517ffmr8306249wru.196.1667220841415; Mon, 31 Oct 2022 05:54:01 -0700 (PDT) Date: Mon, 31 Oct 2022 08:53:57 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Akihiko Odaki , Akihiko Odaki , Yuval Shaia , Akihiko@redhat.com, Odaki@redhat.com, <@redhat.com, Dmitry Fleytman , Jason Wang , Jiri Pirko , Keith Busch , Klaus Jensen , Marcel Apfelbaum , Elena Ufimtseva , Jagannathan Raman , John G Johnson , qemu-block@nongnu.org Subject: [PULL 69/86] msix: Assert that specified vector is in range Message-ID: <20221031124928.128475-70-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221195794100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki There were several different ways to deal with the situation where the vector specified for a msix function is out of bound: - early return a function and keep progresssing - propagate the error to the caller - mark msix unusable - assert it is in bound - just ignore An out-of-bound vector should not be specified if the device implementation is correct so let msix functions always assert that the specified vector is in range. An exceptional case is virtio-pci, which allows the guest to configure vectors. For virtio-pci, it is more appropriate to introduce its own checks because it is sometimes too late to check the vector range in msix functions. Signed-off-by: Akihiko Odaki Message-Id: <20220829083524.143640-1-akihiko.odaki@daynix.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Yuval Shaia Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
--- include/hw/pci/msix.h | 4 +-- hw/net/e1000e.c | 15 ++------- hw/net/rocker/rocker.c | 23 ++------------ hw/net/vmxnet3.c | 27 +++------------- hw/nvme/ctrl.c | 5 +-- hw/pci/msix.c | 24 ++++++-------- hw/rdma/vmw/pvrdma_main.c | 7 +--- hw/remote/vfio-user-obj.c | 9 +----- hw/virtio/virtio-pci.c | 67 ++++++++++++++++++++++++++++----------- 9 files changed, 74 insertions(+), 107 deletions(-) diff --git a/include/hw/pci/msix.h b/include/hw/pci/msix.h index 4f1cda0ebe..0e6f257e45 100644 --- a/include/hw/pci/msix.h +++ b/include/hw/pci/msix.h @@ -33,10 +33,10 @@ bool msix_is_masked(PCIDevice *dev, unsigned vector); void msix_set_pending(PCIDevice *dev, unsigned vector); void msix_clr_pending(PCIDevice *dev, int vector); =20 -int msix_vector_use(PCIDevice *dev, unsigned vector); +void msix_vector_use(PCIDevice *dev, unsigned vector); void msix_vector_unuse(PCIDevice *dev, unsigned vector); void msix_unuse_all_vectors(PCIDevice *dev); -void msix_set_mask(PCIDevice *dev, int vector, bool mask, Error **errp); +void msix_set_mask(PCIDevice *dev, int vector, bool mask); =20 void msix_notify(PCIDevice *dev, unsigned vector); =20 diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c index ac96f7665a..7523e9f5d2 100644 --- a/hw/net/e1000e.c +++ b/hw/net/e1000e.c @@ -276,25 +276,18 @@ e1000e_unuse_msix_vectors(E1000EState *s, int num_vec= tors) } } =20 -static bool +static void e1000e_use_msix_vectors(E1000EState *s, int num_vectors) { int i; for (i =3D 0; i < num_vectors; i++) { - int res =3D msix_vector_use(PCI_DEVICE(s), i); - if (res < 0) { - trace_e1000e_msix_use_vector_fail(i, res); - e1000e_unuse_msix_vectors(s, i); - return false; - } + msix_vector_use(PCI_DEVICE(s), i); } - return true; } =20 static void e1000e_init_msix(E1000EState *s) { - PCIDevice *d =3D PCI_DEVICE(s); int res =3D msix_init(PCI_DEVICE(s), E1000E_MSIX_VEC_NUM, &s->msix, E1000E_MSIX_IDX, E1000E_MSIX_TABLE, @@ -305,9 +298,7 @@ e1000e_init_msix(E1000EState *s) if (res < 0) { trace_e1000e_msix_init_fail(res); } else { - if (!e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM)) { - msix_uninit(d, &s->msix, &s->msix); - } + e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM); } } =20 diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c index d8f3f16fe8..281d43e6cf 100644 --- a/hw/net/rocker/rocker.c +++ b/hw/net/rocker/rocker.c @@ -1212,24 +1212,14 @@ static void rocker_msix_vectors_unuse(Rocker *r, } } =20 -static int rocker_msix_vectors_use(Rocker *r, - unsigned int num_vectors) +static void rocker_msix_vectors_use(Rocker *r, unsigned int num_vectors) { PCIDevice *dev =3D PCI_DEVICE(r); - int err; int i; =20 for (i =3D 0; i < num_vectors; i++) { - err =3D msix_vector_use(dev, i); - if (err) { - goto rollback; - } + msix_vector_use(dev, i); } - return 0; - -rollback: - rocker_msix_vectors_unuse(r, i); - return err; } =20 static int rocker_msix_init(Rocker *r, Error **errp) @@ -1247,16 +1237,9 @@ static int rocker_msix_init(Rocker *r, Error **errp) return err; } =20 - err =3D rocker_msix_vectors_use(r, ROCKER_MSIX_VEC_COUNT(r->fp_ports)); - if (err) { - goto err_msix_vectors_use; - } + rocker_msix_vectors_use(r, ROCKER_MSIX_VEC_COUNT(r->fp_ports)); =20 return 0; - -err_msix_vectors_use: - msix_uninit(dev, &r->msix_bar, &r->msix_bar); - return err; } =20 static void rocker_msix_uninit(Rocker *r) diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index 0b7acf7f89..d2ab527ef4 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -2110,20 +2110,14 @@ vmxnet3_unuse_msix_vectors(VMXNET3State *s, int num= _vectors) } } =20 -static bool +static void vmxnet3_use_msix_vectors(VMXNET3State *s, int num_vectors) { PCIDevice *d =3D PCI_DEVICE(s); int i; for (i =3D 0; i < num_vectors; i++) { - int res =3D msix_vector_use(d, i); - if (0 > res) { - VMW_WRPRN("Failed to use MSI-X vector %d, error %d", i, res); - vmxnet3_unuse_msix_vectors(s, i); - return false; - } + msix_vector_use(d, i); } - return true; } =20 static bool @@ -2141,13 +2135,8 @@ vmxnet3_init_msix(VMXNET3State *s) VMW_WRPRN("Failed to initialize MSI-X, error %d", res); s->msix_used =3D false; } else { - if (!vmxnet3_use_msix_vectors(s, VMXNET3_MAX_INTRS)) { - VMW_WRPRN("Failed to use MSI-X vectors, error %d", res); - msix_uninit(d, &s->msix_bar, &s->msix_bar); - s->msix_used =3D false; - } else { - s->msix_used =3D true; - } + vmxnet3_use_msix_vectors(s, VMXNET3_MAX_INTRS); + s->msix_used =3D true; } return s->msix_used; } @@ -2412,19 +2401,13 @@ static const VMStateDescription vmstate_vmxnet3_rxq= _descr =3D { static int vmxnet3_post_load(void *opaque, int version_id) { VMXNET3State *s =3D opaque; - PCIDevice *d =3D PCI_DEVICE(s); =20 net_tx_pkt_init(&s->tx_pkt, PCI_DEVICE(s), s->max_tx_frags, s->peer_has_vhdr); net_rx_pkt_init(&s->rx_pkt, s->peer_has_vhdr); =20 if (s->msix_used) { - if (!vmxnet3_use_msix_vectors(s, VMXNET3_MAX_INTRS)) { - VMW_WRPRN("Failed to re-use MSI-X vectors"); - msix_uninit(d, &s->msix_bar, &s->msix_bar); - s->msix_used =3D false; - return -1; - } + vmxnet3_use_msix_vectors(s, VMXNET3_MAX_INTRS); } =20 if (!vmxnet3_validate_queues(s)) { diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 87aeba0564..d38fdd990e 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -4744,11 +4744,8 @@ static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n= , uint64_t dma_addr, uint16_t cqid, uint16_t vector, uint16_t size, uint16_t irq_enabled) { - int ret; - if (msix_enabled(&n->parent_obj)) { - ret =3D msix_vector_use(&n->parent_obj, vector); - assert(ret =3D=3D 0); + msix_vector_use(&n->parent_obj, vector); } cq->ctrl =3D n; cq->cqid =3D cqid; diff --git a/hw/pci/msix.c b/hw/pci/msix.c index 1e381a9813..9e70fcd6fa 100644 --- a/hw/pci/msix.c +++ b/hw/pci/msix.c @@ -136,17 +136,12 @@ static void msix_handle_mask_update(PCIDevice *dev, i= nt vector, bool was_masked) } } =20 -void msix_set_mask(PCIDevice *dev, int vector, bool mask, Error **errp) +void msix_set_mask(PCIDevice *dev, int vector, bool mask) { - ERRP_GUARD(); unsigned offset; bool was_masked; =20 - if (vector > dev->msix_entries_nr) { - error_setg(errp, "msix: vector %d not allocated. max vector is %d", - vector, dev->msix_entries_nr); - return; - } + assert(vector < dev->msix_entries_nr); =20 offset =3D vector * PCI_MSIX_ENTRY_SIZE + PCI_MSIX_ENTRY_VECTOR_CTRL; =20 @@ -522,7 +517,9 @@ void msix_notify(PCIDevice *dev, unsigned vector) { MSIMessage msg; =20 - if (vector >=3D dev->msix_entries_nr || !dev->msix_entry_used[vector])= { + assert(vector < dev->msix_entries_nr); + + if (!dev->msix_entry_used[vector]) { return; } =20 @@ -558,20 +555,17 @@ void msix_reset(PCIDevice *dev) * don't want to follow the spec suggestion can declare all vectors as use= d. */ =20 /* Mark vector as used. */ -int msix_vector_use(PCIDevice *dev, unsigned vector) +void msix_vector_use(PCIDevice *dev, unsigned vector) { - if (vector >=3D dev->msix_entries_nr) { - return -EINVAL; - } - + assert(vector < dev->msix_entries_nr); dev->msix_entry_used[vector]++; - return 0; } =20 /* Mark vector as unused. */ void msix_vector_unuse(PCIDevice *dev, unsigned vector) { - if (vector >=3D dev->msix_entries_nr || !dev->msix_entry_used[vector])= { + assert(vector < dev->msix_entries_nr); + if (!dev->msix_entry_used[vector]) { return; } if (--dev->msix_entry_used[vector]) { diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c index 58db0b8e3b..4fc6712025 100644 --- a/hw/rdma/vmw/pvrdma_main.c +++ b/hw/rdma/vmw/pvrdma_main.c @@ -307,12 +307,7 @@ static int init_msix(PCIDevice *pdev) } =20 for (i =3D 0; i < RDMA_MAX_INTRS; i++) { - rc =3D msix_vector_use(PCI_DEVICE(dev), i); - if (rc < 0) { - rdma_error_report("Fail mark MSI-X vector %d", i); - uninit_msix(pdev, i); - return rc; - } + msix_vector_use(PCI_DEVICE(dev), i); } =20 return 0; diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index c6cc53acf2..4e36bb8bcf 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -602,17 +602,10 @@ static void vfu_msix_irq_state(vfu_ctx_t *vfu_ctx, ui= nt32_t start, uint32_t count, bool mask) { VfuObject *o =3D vfu_get_private(vfu_ctx); - Error *err =3D NULL; uint32_t vector; =20 for (vector =3D start; vector < count; vector++) { - msix_set_mask(o->pci_dev, vector, mask, &err); - if (err) { - VFU_OBJECT_ERROR(o, "vfu: %s: %s", o->device, - error_get_pretty(err)); - error_free(err); - err =3D NULL; - } + msix_set_mask(o->pci_dev, vector, mask); } } =20 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 855718d586..a1c9dfa7bb 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -71,9 +71,11 @@ static void virtio_pci_notify(DeviceState *d, uint16_t v= ector) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy_fast(d); =20 - if (msix_enabled(&proxy->pci_dev)) - msix_notify(&proxy->pci_dev, vector); - else { + if (msix_enabled(&proxy->pci_dev)) { + if (vector !=3D VIRTIO_NO_VECTOR) { + msix_notify(&proxy->pci_dev, vector); + } + } else { VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); pci_set_irq(&proxy->pci_dev, qatomic_read(&vdev->isr) & 1); } @@ -175,6 +177,7 @@ static int virtio_pci_load_config(DeviceState *d, QEMUF= ile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); + uint16_t vector; =20 int ret; ret =3D pci_device_load(&proxy->pci_dev, f); @@ -184,12 +187,17 @@ static int virtio_pci_load_config(DeviceState *d, QEM= UFile *f) msix_unuse_all_vectors(&proxy->pci_dev); msix_load(&proxy->pci_dev, f); if (msix_present(&proxy->pci_dev)) { - qemu_get_be16s(f, &vdev->config_vector); + qemu_get_be16s(f, &vector); + + if (vector !=3D VIRTIO_NO_VECTOR && vector >=3D proxy->nvectors) { + return -EINVAL; + } } else { - vdev->config_vector =3D VIRTIO_NO_VECTOR; + vector =3D VIRTIO_NO_VECTOR; } - if (vdev->config_vector !=3D VIRTIO_NO_VECTOR) { - return msix_vector_use(&proxy->pci_dev, vdev->config_vector); + vdev->config_vector =3D vector; + if (vector !=3D VIRTIO_NO_VECTOR) { + msix_vector_use(&proxy->pci_dev, vector); } return 0; } @@ -202,12 +210,15 @@ static int virtio_pci_load_queue(DeviceState *d, int = n, QEMUFile *f) uint16_t vector; if (msix_present(&proxy->pci_dev)) { qemu_get_be16s(f, &vector); + if (vector !=3D VIRTIO_NO_VECTOR && vector >=3D proxy->nvectors) { + return -EINVAL; + } } else { vector =3D VIRTIO_NO_VECTOR; } virtio_queue_set_vector(vdev, n, vector); if (vector !=3D VIRTIO_NO_VECTOR) { - return msix_vector_use(&proxy->pci_dev, vector); + msix_vector_use(&proxy->pci_dev, vector); } =20 return 0; @@ -299,6 +310,7 @@ static void virtio_ioport_write(void *opaque, uint32_t = addr, uint32_t val) { VirtIOPCIProxy *proxy =3D opaque; VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); + uint16_t vector; hwaddr pa; =20 switch (addr) { @@ -352,18 +364,28 @@ static void virtio_ioport_write(void *opaque, uint32_= t addr, uint32_t val) } break; case VIRTIO_MSI_CONFIG_VECTOR: - msix_vector_unuse(&proxy->pci_dev, vdev->config_vector); + if (vdev->config_vector !=3D VIRTIO_NO_VECTOR) { + msix_vector_unuse(&proxy->pci_dev, vdev->config_vector); + } /* Make it possible for guest to discover an error took place. */ - if (msix_vector_use(&proxy->pci_dev, val) < 0) + if (val < proxy->nvectors) { + msix_vector_use(&proxy->pci_dev, val); + } else { val =3D VIRTIO_NO_VECTOR; + } vdev->config_vector =3D val; break; case VIRTIO_MSI_QUEUE_VECTOR: - msix_vector_unuse(&proxy->pci_dev, - virtio_queue_vector(vdev, vdev->queue_sel)); + vector =3D virtio_queue_vector(vdev, vdev->queue_sel); + if (vector !=3D VIRTIO_NO_VECTOR) { + msix_vector_unuse(&proxy->pci_dev, vector); + } /* Make it possible for guest to discover an error took place. */ - if (msix_vector_use(&proxy->pci_dev, val) < 0) + if (val < proxy->nvectors) { + msix_vector_use(&proxy->pci_dev, val); + } else { val =3D VIRTIO_NO_VECTOR; + } virtio_queue_set_vector(vdev, vdev->queue_sel, val); break; default: @@ -1266,6 +1288,7 @@ static void virtio_pci_common_write(void *opaque, hwa= ddr addr, { VirtIOPCIProxy *proxy =3D opaque; VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); + uint16_t vector; =20 if (vdev =3D=3D NULL) { return; @@ -1287,9 +1310,13 @@ static void virtio_pci_common_write(void *opaque, hw= addr addr, } break; case VIRTIO_PCI_COMMON_MSIX: - msix_vector_unuse(&proxy->pci_dev, vdev->config_vector); + if (vdev->config_vector !=3D VIRTIO_NO_VECTOR) { + msix_vector_unuse(&proxy->pci_dev, vdev->config_vector); + } /* Make it possible for guest to discover an error took place. */ - if (msix_vector_use(&proxy->pci_dev, val) < 0) { + if (val < proxy->nvectors) { + msix_vector_use(&proxy->pci_dev, val); + } else { val =3D VIRTIO_NO_VECTOR; } vdev->config_vector =3D val; @@ -1321,10 +1348,14 @@ static void virtio_pci_common_write(void *opaque, h= waddr addr, proxy->vqs[vdev->queue_sel].num); break; case VIRTIO_PCI_COMMON_Q_MSIX: - msix_vector_unuse(&proxy->pci_dev, - virtio_queue_vector(vdev, vdev->queue_sel)); + vector =3D virtio_queue_vector(vdev, vdev->queue_sel); + if (vector !=3D VIRTIO_NO_VECTOR) { + msix_vector_unuse(&proxy->pci_dev, vector); + } /* Make it possible for guest to discover an error took place. */ - if (msix_vector_use(&proxy->pci_dev, val) < 0) { + if (val < proxy->nvectors) { + msix_vector_use(&proxy->pci_dev, val); + } else { val =3D VIRTIO_NO_VECTOR; } virtio_queue_set_vector(vdev, vdev->queue_sel, val); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221142; cv=none; d=zohomail.com; s=zohoarc; b=ZkkzDe4okyOEqtl9Dc6anTesnzKu6v7XM939mRD5q1gx0FSV2Ajm5NH8vx/JZEd8GB60I/OXcSwPDbFXZhqCTYmOQ2IwRkd9CahVOfF9z/Hf/hCUYrm4/uIRrCjgH4TBC6FlpDv5171azOt2mPqoaFETbQMCIpWBvHjgXApvaQE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221142; h=Content-Type: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=ebtgD2L9tCYItZqfvX8t8o7AED5g6ctSCii0v2zYkwg=; b=cRFsljgEeZv5VODBkETnyErRGiM9t6Melo4bgaZERR3OZnq5vNI4tXRa4X4NtDTqvLj22bEglaU5qoc9xadyi3fpHx6zAX9PRh6pwg1tf9BtuGGny9ZtUkS9TCs7FUlrULP1hpu5VIkZP9bcnSiliyOOmRdz+bkUnG8mB3Yv29A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221142154941.9696349169743; Mon, 31 Oct 2022 05:59:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJG-0005EG-CD; Mon, 31 Oct 2022 08:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIt-0004LB-Ne for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIr-0003QH-9G for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:11 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-359-uFPzcxR8PqiPOwS8Qjs9uw-1; Mon, 31 Oct 2022 08:54:06 -0400 Received: by mail-wr1-f72.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so3019377wra.15 for ; Mon, 31 Oct 2022 05:54:06 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id u6-20020a05600c19c600b003c6f8d30e40sm7505402wmq.31.2022.10.31.05.54.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220847; 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: in-reply-to:in-reply-to:references:references; bh=ebtgD2L9tCYItZqfvX8t8o7AED5g6ctSCii0v2zYkwg=; b=L4SS2hhlRqUw+Bb83kwmCHQmXpa+IEvcoZprIAEDF5ikmgTHrXLF19Ysod1MEG+wwpgDCC UN/thAyJAfbocL2Eic9TVmKsb2MAJBvB21Up3osVS8YryxWpu1cv7sbG6gPj/1Hhc1N5Mx DAzHF7RhpRhemECsX/X1MY816XNl9lI= X-MC-Unique: uFPzcxR8PqiPOwS8Qjs9uw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ebtgD2L9tCYItZqfvX8t8o7AED5g6ctSCii0v2zYkwg=; b=gaCqRlXrMBgsCunnYBWwN64r7qRv6f4Pc3IfCzvoTQGdG3KZzbayFaICbBwzleUskD Toxit5BLj1T4y0JjgRqupRbcEt7UQN4LhH06B2/MbgpOYQpqDCrXN+TliZv/U23zcnIJ RxOTALK/DeImd0LgJgPsCeYVqPcm5CQhT5Z35FC0qha7LqhtgK4zn13jMtPCcl3b3JVG zVOVPOmeNqNncOF7aMxk2yVmd8c0iaL2RClu+pu6+xBpPGziv//b+Y0lDk95ydyUksHf gQS+YLNpAKicDAZsZgaRyXemzGeFFjagjE4Hsi1wlFwhmjKvERlhIDoKDUr5lCDjmvjt YsEg== X-Gm-Message-State: ACrzQf3Z8sjHQZq2g3yqzbiKFNnL/jfo3KMdy+j9VMEKw1x2sFcKPq2b 4lxN3Mn8vfjiB93mDkKnN+mDgJRUPDGbsKCYzAgN/6oI+QJOLnDNG/8v+I6OfLtFEA0sWqIaiIy VgKcb9NnRg96xkcmJmRVB9XpJHjrRX8Ew1qOnd8AO4CSi/hKPiT4EQ9p6Nw0s X-Received: by 2002:a5d:544a:0:b0:236:77f4:6e15 with SMTP id w10-20020a5d544a000000b0023677f46e15mr8008888wrv.117.1667220844802; Mon, 31 Oct 2022 05:54:04 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4jdO6yXpUUNwKw7dktwo0lJMcnUO3lvgUl+epw3WC9dFXkh9/bNWYrP8q15Kf9KyjSoH/3Hw== X-Received: by 2002:a5d:544a:0:b0:236:77f4:6e15 with SMTP id w10-20020a5d544a000000b0023677f46e15mr8008861wrv.117.1667220844490; Mon, 31 Oct 2022 05:54:04 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:01 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gregory Price , Gregory Price , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 70/86] hw/i386/pc.c: CXL Fixed Memory Window should not reserve e820 in bios Message-ID: <20221031124928.128475-71-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221143177100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gregory Price Early-boot e820 records will be inserted by the bios/efi/early boot software and be reported to the kernel via insert_resource. Later, when CXL drivers iterate through the regions again, they will insert another resource and make the RESERVED memory area a child. This RESERVED memory area causes the memory region to become unusable, and as a result attempting to create memory regions with `cxl create-region ...` Will fail due to the RESERVED area intersecting with the CXL window. During boot the following traceback is observed: 0xffffffff81101650 in insert_resource_expand_to_fit () 0xffffffff83d964c5 in e820__reserve_resources_late () 0xffffffff83e03210 in pcibios_resource_survey () 0xffffffff83e04f4a in pcibios_init () Which produces a call to reserve the CFMWS area: (gdb) p *new $54 =3D {start =3D 0x290000000, end =3D 0x2cfffffff, name =3D "Reserved", flags =3D 0x200, desc =3D 0x7, parent =3D 0x0, sibling =3D 0x0, child =3D 0x0} Later the Kernel parses ACPI tables and reserves the exact same area as the CXL Fixed Memory Window: 0xffffffff811016a4 in insert_resource_conflict () insert_resource () 0xffffffff81a81389 in cxl_parse_cfmws () 0xffffffff818c4a81 in call_handler () acpi_parse_entries_array () (gdb) p/x *new $59 =3D {start =3D 0x290000000, end =3D 0x2cfffffff, name =3D "CXL Window 0= ", flags =3D 0x200, desc =3D 0x0, parent =3D 0x0, sibling =3D 0x0, child =3D 0x0} This produces the following output in /proc/iomem: 590000000-68fffffff : CXL Window 0 590000000-68fffffff : Reserved This reserved area causes `get_free_mem_region()` to fail due to a check against `__region_intersects()`. Due to this reserved area, the intersect check will only ever return REGION_INTERSECTS, which causes `cxl create-region` to always fail. Signed-off-by: Gregory Price Message-Id: <20221026205912.8579-1-gregory.price@memverge.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/pc.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3e86083db3..a3dda50912 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1062,7 +1062,6 @@ void pc_memory_init(PCMachineState *pcms, hwaddr cxl_size =3D MiB; =20 cxl_base =3D pc_get_cxl_range_start(pcms); - e820_add_entry(cxl_base, cxl_size, E820_RESERVED); memory_region_init(mr, OBJECT(machine), "cxl_host_reg", cxl_size); memory_region_add_subregion(system_memory, cxl_base, mr); cxl_resv_end =3D cxl_base + cxl_size; @@ -1078,7 +1077,6 @@ void pc_memory_init(PCMachineState *pcms, memory_region_init_io(&fw->mr, OBJECT(machine), &cfmws_ops= , fw, "cxl-fixed-memory-region", fw->size); memory_region_add_subregion(system_memory, fw->base, &fw->= mr); - e820_add_entry(fw->base, fw->size, E820_RESERVED); cxl_fmw_base +=3D fw->size; cxl_resv_end =3D cxl_fmw_base; } --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221987; cv=none; d=zohomail.com; s=zohoarc; b=lGVMvrJdZ2lU0ZTXu5DHUnjALuO88Qv7NYiUs7SKNgvb94JRTpOjTh7DgcADTqFtXzRxi9AJwF/bVF1WwzrvknMdiE5xsQgngH8d6HT+MjjYI/QKgkUzOZIu8NhImAlhmjRXgfMzqlDvCuUlM/S19lgeH1mOEtU/dNRZ16rSQ/M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221987; 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=qTCaBLlQvbytTSkLNf8ZYQ/GTlBD1EUv9OQIGVa+ewE=; b=fHqkbPxwFG+qUAJn7Q1KZHr9wpy+zETzOXRaUZTPBjb5vzsly2xqtQ10XIvi3AKkPvW69IaVrAQrng1KNIg44NT6mUJ2xFSAY8tEInFiBrlgFigrAr3W4KviHwXfV0/ONWBUGDLVaJjDUO9qUK6UoVPdzsRZp/rLZ8BgYvjNybo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221987930977.468209191611; Mon, 31 Oct 2022 06:13:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJI-0005V4-Cu; Mon, 31 Oct 2022 08:54:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIx-0004UM-Vv for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIt-0003QU-7y for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:15 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-522-Fw9DVZ2VPoShz1u6nW3jUA-1; Mon, 31 Oct 2022 08:54:09 -0400 Received: by mail-wr1-f69.google.com with SMTP id p7-20020adfba87000000b0022cc6f805b1so3048168wrg.21 for ; Mon, 31 Oct 2022 05:54:09 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j31-20020a05600c1c1f00b003a8434530bbsm7322993wms.13.2022.10.31.05.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220850; 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=qTCaBLlQvbytTSkLNf8ZYQ/GTlBD1EUv9OQIGVa+ewE=; b=emHZwik853RegiemB6gYqIC1Zx0E5L8WREFs0VWzshRFNWfkQXSAoY119/a1+NPBpcMLJ3 oiac8wgWzBnV8Bw5ZtRrAJfF6C5Q8Xw7KUUur7focoVzN5ygDSi8VmYSvcO6HjxQ4cGxed boUBS0IumioYGhQm8FPgzuLGXRe355g= X-MC-Unique: Fw9DVZ2VPoShz1u6nW3jUA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qTCaBLlQvbytTSkLNf8ZYQ/GTlBD1EUv9OQIGVa+ewE=; b=x0OFII6/L/HyHkzefhwOwYbGgPKjcseXpotU0RuLuA8NTjEJ4d2eFUO8dSbOJYmWUg NyCRNGwRkoMxTEclciQPDBdhSV1qD3pvq5ytO25rW+JzGUq/Eg1uMTU1i26lARZiGnqz tmf8CNjxIWbyVFYpRTtQgY4eQ+z7kXVCGweV36032Tpj53TSqE9B7xqjBygE4+uOFH6c zvA9X8sai3VuzgItnJisQZ9BrxUy1HEBBG7KmPU4dtUf00ozunWPX927tbZvkgyPEbJq VJmJI6HPV17QpPWt8B5o4QpUpEmjRlFtI7nzwpDZkf+TSvQJ3t8/CbbM4UTtRWFUCXLu W3lQ== X-Gm-Message-State: ACrzQf2AjU9aTNLOB/fZWuSF/+wNHoUzCKESsLjobWPWrynxvCNvGpF3 PW7sMAG3eeaMNgB5rz+jgqxX7JFSilPkTAfoqZyjpDglC7FsTV3wka3WgYrPEb9T5PIjU8Oqn4y jc2B1643GhcGUyk22pmJ990uQo8cWrwImtDdX2DWQ6ZuNuMT4f/XjouYNptNb X-Received: by 2002:a5d:58ca:0:b0:236:2324:3f0f with SMTP id o10-20020a5d58ca000000b0023623243f0fmr8068903wrf.325.1667220848007; Mon, 31 Oct 2022 05:54:08 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6e8p6yMsWH53KwG112VwzlP8ezLQ13PLz0yU1BwwE8F6cBjDd1KqMqbgGuiB9/ihd7i0gjyw== X-Received: by 2002:a5d:58ca:0:b0:236:2324:3f0f with SMTP id o10-20020a5d58ca000000b0023623243f0fmr8068879wrf.325.1667220847760; Mon, 31 Oct 2022 05:54:07 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:04 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Bernhard Beschow , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Igor Mammedov , Ani Sinha , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 71/86] hw/i386/acpi-build: Remove unused struct Message-ID: <20221031124928.128475-72-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221990130100009 From: Bernhard Beschow Ammends commit b23046abe78f48498a423b802d6d86ba0172d57f 'pc: acpi-build: simplify PCI bus tree generation'. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221026133110.91828-2-shentey@gmail.com> Message-Id: <20221028103419.93398-2-shentey@gmail.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 960305462c..1ebf14b899 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -121,13 +121,6 @@ typedef struct AcpiMiscInfo { unsigned dsdt_size; } AcpiMiscInfo; =20 -typedef struct AcpiBuildPciBusHotplugState { - GArray *device_table; - GArray *notify_table; - struct AcpiBuildPciBusHotplugState *parent; - bool pcihp_bridge_en; -} AcpiBuildPciBusHotplugState; - typedef struct FwCfgTPMConfig { uint32_t tpmppi_address; uint8_t tpm_version; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221406; cv=none; d=zohomail.com; s=zohoarc; b=VmMZBpGbElhEWBQvb658GKYwUvnL9aYiPtLZY1P9KZJEZE5XtgQGdqrLp4EavumWhaa6w7LYKYp8p5xSMcGDllim1pcntcnzfuwso5D8cEfH+liscxC/4FaYtxiwwIvBmuH/f2pjR5+AJhwkbV6NgOPKGvqscnvbzKhSQ4IOF+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221406; 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=Gag5gdQNNtInKGqXoAiltRUevA6HG18svJOyxzNtlVk=; b=B2IGWQL1PmAOJbcZYhos+orzgL/UuFoCrFjRBpk+xaLh2o3Pi0ehg9osC4bPZygIMLzSQrxoSOfY20zmWRJHjzakK4Bo3+9LuaiVDYl4yyOoJoaHvEiiZ+y3mdtZNJ+o2xH6MVG8txcCEvyAmW45GP7sjiRyC+Twz+5DgBd9Wpw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221406513603.0276952536411; Mon, 31 Oct 2022 06:03:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJJ-0005dV-CM; Mon, 31 Oct 2022 08:54:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIz-0004YE-Rd for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIx-0003RB-CR for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:16 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-257-6FhFymV8NtunMJ4M7HvyNA-1; Mon, 31 Oct 2022 08:54:12 -0400 Received: by mail-wm1-f72.google.com with SMTP id c5-20020a1c3505000000b003c56da8e894so8325267wma.0 for ; Mon, 31 Oct 2022 05:54:12 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bx10-20020a5d5b0a000000b0022e47b57735sm7204086wrb.97.2022.10.31.05.54.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220854; 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=Gag5gdQNNtInKGqXoAiltRUevA6HG18svJOyxzNtlVk=; b=VNZMd0YpCPcoLiHmPXb2B2ghXK5b5E1P3jFUXfUJ5+QMtA7INT0P0R0J5es5F7LTcOEq9Y 3ySrZTrqoM4RbNaDf8XsXUbFcLgh+sc8rglbPega0UHa150M5rUeo5wP1YbZ6HHdYAwtDb yWtkIsArGFgrTdXvRjaWlax1Ep4vrbM= X-MC-Unique: 6FhFymV8NtunMJ4M7HvyNA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Gag5gdQNNtInKGqXoAiltRUevA6HG18svJOyxzNtlVk=; b=Tfcno/zg2sWyW3qjOxeM5BzQIk3ZUW7LpzpO7fN+/V8WZ4/nU7FV4VGEsAEO5YJjzx 1fDPMneGQU8oc4vnEBYJJXSP4z1tBtM+kGWrqESgmHJhevb4RGJbBUtH/tlz8Y9NNly/ SS4zGBt74NK10HEJ5JK/o9s4+PonbGa4/lK3RaF5RY6yqyXWhkeq0zxYKD1uZQdKfV8R Fbtdu+fkwk4q7ncwp/T1FtFdSJQwGpObPUzUE6uj5nD8PVt3tYKv9plRsYRmLdwvsU/9 asSV+xe0Wxo11JRL8iRn+B4E6gAHwli6t2oF9w413BIkywzJL1Nq+nzma+IQXi4vv754 4QXQ== X-Gm-Message-State: ACrzQf3WrO3/VMKomy+hvZY0400WWaMQCaawjhNRjbSHdCCXjj3Dmyim 7vXqRcDzgNIWlZbB3OHXmduLM/mw1vBYgbS72PvoX+lUQs7XPxaOFuj5WFrgiRitRWkcZr8G2mU GyT9ZzQu6qN+MvbROTkrUDrOsTLx0s/gMjkBHmTY6R9vT05xk0B4eX7tpfO0G X-Received: by 2002:a5d:564c:0:b0:236:6089:cc50 with SMTP id j12-20020a5d564c000000b002366089cc50mr7692161wrw.520.1667220851239; Mon, 31 Oct 2022 05:54:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5v3c0XAxDEVtehzYs9nA0S4l1WFlKmUhxSKhoNLdkNw/x3oCGy+RPaBkHr1k1PNFW1Z5mIig== X-Received: by 2002:a5d:564c:0:b0:236:6089:cc50 with SMTP id j12-20020a5d564c000000b002366089cc50mr7692136wrw.520.1667220850921; Mon, 31 Oct 2022 05:54:10 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:08 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Bernhard Beschow , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 72/86] hw/i386/acpi-build: Resolve redundant attribute Message-ID: <20221031124928.128475-73-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221409290100003 From: Bernhard Beschow The is_piix4 attribute is set once in one location and read once in another. Doing both in one location allows for removing the attribute altogether. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221026133110.91828-3-shentey@gmail.com> Message-Id: <20221028103419.93398-3-shentey@gmail.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 1ebf14b899..73d8a59737 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -112,7 +112,6 @@ typedef struct AcpiPmInfo { } AcpiPmInfo; =20 typedef struct AcpiMiscInfo { - bool is_piix4; bool has_hpet; #ifdef CONFIG_TPM TPMVersion tpm_version; @@ -281,17 +280,6 @@ static void acpi_get_pm_info(MachineState *machine, Ac= piPmInfo *pm) =20 static void acpi_get_misc_info(AcpiMiscInfo *info) { - Object *piix =3D object_resolve_type_unambiguous(TYPE_PIIX4_PM); - Object *lpc =3D object_resolve_type_unambiguous(TYPE_ICH9_LPC_DEVICE); - assert(!!piix !=3D !!lpc); - - if (piix) { - info->is_piix4 =3D true; - } - if (lpc) { - info->is_piix4 =3D false; - } - info->has_hpet =3D hpet_find(); #ifdef CONFIG_TPM info->tpm_version =3D tpm_get_version(tpm_find()); @@ -1334,6 +1322,8 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, AcpiPmInfo *pm, AcpiMiscInfo *misc, Range *pci_hole, Range *pci_hole64, MachineState *machine) { + Object *piix =3D object_resolve_type_unambiguous(TYPE_PIIX4_PM); + Object *lpc =3D object_resolve_type_unambiguous(TYPE_ICH9_LPC_DEVICE); CrsRangeEntry *entry; Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs; CrsRangeSet crs_range_set; @@ -1354,11 +1344,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, AcpiTable table =3D { .sig =3D "DSDT", .rev =3D 1, .oem_id =3D x86ms->= oem_id, .oem_table_id =3D x86ms->oem_table_id }; =20 + assert(!!piix !=3D !!lpc); + acpi_table_begin(&table, table_data); dsdt =3D init_aml_allocator(); =20 build_dbg_aml(dsdt); - if (misc->is_piix4) { + if (piix) { sb_scope =3D aml_scope("_SB"); dev =3D aml_device("PCI0"); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03"))); @@ -1371,7 +1363,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, build_x86_acpi_pci_hotplug(dsdt, pm->pcihp_io_base); } build_piix4_pci0_int(dsdt); - } else { + } else if (lpc) { sb_scope =3D aml_scope("_SB"); dev =3D aml_device("PCI0"); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A08"))); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221190; cv=none; d=zohomail.com; s=zohoarc; b=UTsF2Uqd2UgAVbIvzt/PmR3JKdvY/X0ZlOjaC7FPr4P+02vXjKx9F7xvLz0OlTvTgS2jfOz8WLOezsbZQOjv3ibDp2XjB8mC0wq5r4HPtaFmZuzV+4UrjX3EN/j82LGVit6XXeN8AQf7+hkxjn0+D9OD6l7LlFa56igtRZIla5Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221190; h=Content-Type: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=ARh2sl8Vb/DTthXngVp+HQaYKzL6p5aL6+WOaFC/kmA=; b=U+kDM0IyBWgJqc8tefsx9JKDscK6293d19fqrap1kS0OdFFIvkDCOi9HtRyCmtzss6gzEBTN8lrXyobfGX2TY7fKHaCyvrA7SX4WN7OD74Tdr1+K1X8rP0r4c8xPMozNhWY7rRIq1da2n6p6QsxuXDVxgvkRxeUuDDCRULA7+uo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221190110735.0979150342107; Mon, 31 Oct 2022 05:59:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJL-0005oJ-68; Mon, 31 Oct 2022 08:54:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ1-0004iD-Gy for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUIz-0003Rc-Jo for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:18 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-656-Sng2W0SdMhC-BOF2u2Jz9A-1; Mon, 31 Oct 2022 08:54:15 -0400 Received: by mail-wr1-f72.google.com with SMTP id d10-20020adfa34a000000b00236616a168bso3033560wrb.18 for ; Mon, 31 Oct 2022 05:54:15 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id a21-20020a1cf015000000b003cf78aafdd7sm545292wmb.39.2022.10.31.05.54.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220857; 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: in-reply-to:in-reply-to:references:references; bh=ARh2sl8Vb/DTthXngVp+HQaYKzL6p5aL6+WOaFC/kmA=; b=WFzTDTQs7dUMvyrWvsBtkCWDLC2qxAQ6jFRQMOHO1IiE5E9JHqCM2ibFUBc/Ike1Yz5VCy jvQ1kpk85pFX2zTi/3Hq3GAKhOKvKNmPe78McJW8rx/0ctCJPY1mIdPKw0ZvMhTRtDGCJZ LQ0vTnjSozRTldB4W9/cuiOH45X7tgU= X-MC-Unique: Sng2W0SdMhC-BOF2u2Jz9A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ARh2sl8Vb/DTthXngVp+HQaYKzL6p5aL6+WOaFC/kmA=; b=HCyxcceFVRX16QB0TG//g1whDsf5Np2+wev6pPq+dz2xmg7zYOKwRxO6hOvm6n3euA z1XhKtBokQEBfYkEDt6nrPxkmukGtT/+XtP/xJvNy8iw6a7P+vIk1jnaycPku0GkS9nG PaP9p42l9uDlieS9gn/AemkBLdqu8GKmFCfY+sUn4zaWCV8WRdyHpNOhY4q/WGteRD4u Q7VnXjlHS+fBQgxYFVAZJmmYMgHNfaeBqSbtLhA3/6xz14MhoUoRQOlCs3kPsNIa4QQB vR8ROF5Ot5eU6d1T+4WLCE2Fsb8dtmY+D9PLC/xlZLhuH6hd+zKwpTsO5+rfMvju4BgW FTZw== X-Gm-Message-State: ACrzQf0sz7RRfKwXt31SXv9awXpcZPUEQ37QNsHMLPXzQUc2Qq2GUzqN 73SjH7EY2t1r5kFAbxGDCnrDoZa+ayMh0MYwUF2Aw20I0BjbwVTUcUAdJHq/C07lIPcAIibV2Ei B33GfhqAsQasObfeyoWoYPk890f8HlsVs9SPV5lta0zBB7vrY7n+jU+FEVODZ X-Received: by 2002:a05:600c:15c9:b0:3cf:6054:3b3b with SMTP id v9-20020a05600c15c900b003cf60543b3bmr10395459wmf.167.1667220854342; Mon, 31 Oct 2022 05:54:14 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Yby+uWfyGhw1KpDZ9l7D7D8UOeewOWZBRrxXLZxfBPgcAxcOW3aDqdhK6IEnmq4pu4hQwbw== X-Received: by 2002:a05:600c:15c9:b0:3cf:6054:3b3b with SMTP id v9-20020a05600c15c900b003cf60543b3bmr10395430wmf.167.1667220854027; Mon, 31 Oct 2022 05:54:14 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:11 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Bernhard Beschow , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 73/86] hw/i386/acpi-build: Resolve north rather than south bridges Message-ID: <20221031124928.128475-74-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221191583100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Bernhard Beschow The code currently assumes Q35 iff ICH9 and i440fx iff PIIX. Now that more AML generation has been moved into the south bridges and since the machines define themselves primarily through their north bridges, let's switch to resolving the north bridges for AML generation instead. This also allows for easier experimentation with different south bridges in the "pc" machine, e.g. with PIIX4 and VT82xx. Signed-off-by: Bernhard Beschow Message-Id: <20221028103419.93398-4-shentey@gmail.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/acpi-build.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 73d8a59737..d9eaa5fc4d 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -60,6 +60,7 @@ #include "hw/i386/fw_cfg.h" #include "hw/i386/ich9.h" #include "hw/pci/pci_bus.h" +#include "hw/pci-host/i440fx.h" #include "hw/pci-host/q35.h" #include "hw/i386/x86-iommu.h" =20 @@ -1322,8 +1323,8 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, AcpiPmInfo *pm, AcpiMiscInfo *misc, Range *pci_hole, Range *pci_hole64, MachineState *machine) { - Object *piix =3D object_resolve_type_unambiguous(TYPE_PIIX4_PM); - Object *lpc =3D object_resolve_type_unambiguous(TYPE_ICH9_LPC_DEVICE); + Object *i440fx =3D object_resolve_type_unambiguous(TYPE_I440FX_PCI_HOS= T_BRIDGE); + Object *q35 =3D object_resolve_type_unambiguous(TYPE_Q35_HOST_DEVICE); CrsRangeEntry *entry; Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs; CrsRangeSet crs_range_set; @@ -1344,13 +1345,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, AcpiTable table =3D { .sig =3D "DSDT", .rev =3D 1, .oem_id =3D x86ms->= oem_id, .oem_table_id =3D x86ms->oem_table_id }; =20 - assert(!!piix !=3D !!lpc); + assert(!!i440fx !=3D !!q35); =20 acpi_table_begin(&table, table_data); dsdt =3D init_aml_allocator(); =20 build_dbg_aml(dsdt); - if (piix) { + if (i440fx) { sb_scope =3D aml_scope("_SB"); dev =3D aml_device("PCI0"); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03"))); @@ -1363,7 +1364,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, build_x86_acpi_pci_hotplug(dsdt, pm->pcihp_io_base); } build_piix4_pci0_int(dsdt); - } else if (lpc) { + } else if (q35) { sb_scope =3D aml_scope("_SB"); dev =3D aml_device("PCI0"); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A08"))); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221560; cv=none; d=zohomail.com; s=zohoarc; b=MCj0va7WfT5MEKYW4WfX4B5E1CxpsGH1mXLtM/Astk1TnItjrsSnMK6ae3MTBR0dNwcHsyOQsMzeDR+ZLmgdLW/q5hzWMEbcLcQ5IJRNIb6jCeFTup54FZpTkCMTNh++rUBV/B/2p/NySlsI61j8Jinq8nbubbVuy5IYyve2SvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221560; h=Content-Type: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=qT7pmuuhAedegTkhVbDvlHMbBR0jRGRVLdkXNqaowBM=; b=g12iuXDDF4beMw2qMHHUYsvRSeicWQWKTyQSgfP3MWelokW2xpnrPpTfwJSst73AwolMOe8WKx3BHpP6VpuKSjxogFmcCrFft34CD/iVRnJzXAMoS5WaZUjgPb3zmANGL1VXHYzpJrIJ3sRe91oBzHUMsNrF5tcuznpLVMq6ER8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221560505707.4996456797365; Mon, 31 Oct 2022 06:06:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJM-00062W-8J; Mon, 31 Oct 2022 08:54:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ5-0004qX-Lg for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ3-0003S7-1d for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:22 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-575-Zr10nF2IPIGjOn3IwJj91g-1; Mon, 31 Oct 2022 08:54:19 -0400 Received: by mail-wr1-f70.google.com with SMTP id h26-20020adfaa9a000000b002364ad63bbcso3037769wrc.10 for ; Mon, 31 Oct 2022 05:54:18 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id j18-20020a5d6192000000b00228692033dcsm7035481wru.91.2022.10.31.05.54.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220860; 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: in-reply-to:in-reply-to:references:references; bh=qT7pmuuhAedegTkhVbDvlHMbBR0jRGRVLdkXNqaowBM=; b=goWDtY7ggYcFRiXtnqzGdsytwqhl/9PGEX8GdKciKaG0ecLuctrpMIHzBoJBdHWA3uvKch kNv/XPC3l4nWlypXmOWAS1DtpEKZpyffGbuMk3wOHe5U/DCAqrtP0KWD3q3EZrql8frpc/ Ax2N5yvEibe1XTR/vD9YI2Jbcj8k0qc= X-MC-Unique: Zr10nF2IPIGjOn3IwJj91g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qT7pmuuhAedegTkhVbDvlHMbBR0jRGRVLdkXNqaowBM=; b=j8k/Wu0mKfgBK2xu19rf5lXDyTXSkWFQW+xNgkOR8XjySHsZuum8rgJcfrN35T69zB mVUJScAx4Q9l4lxY5FuRyhtPrvuZDww5NTW1wa1RF84kE8EYuJKxOkAeWhAfFWpELX9Q FoCNTXaB5HgUlwSCwQwLBtVoQ/NxFPM7haDcAvPyv9alo0P4Apw31OYQglXZxmGtlkY3 NVFiQf5kAQmnTLZMAHhSf67rO/TJSUuF9SE54FgO6eaxdjNjUN9NDsOAhXV8oxCrOfe5 SDqufjTPidFxxG0ZupWyYHrbX5C/KEXHzseinVU75V39ge8VMOIZtOBhQuwxY5sYueD6 tWlQ== X-Gm-Message-State: ACrzQf3UC2lD+/HfaeJlGrh9zr4zbmvXARSe/j4PAkksYZJFijtDV8Pi 1Cne8D0hmEXebdLOBoPiNiPRPg/VoGU16ngwSPlaBxqxzYHdy1iV0+cRFIir783/D/MnCt9OMXX Rr+LVAX+lVhjEakAVwWhOA/dPqbuUBwR9OQLRFE4+BqChttOoWxDutZQwT34e X-Received: by 2002:a05:600c:2116:b0:3cf:69ff:5da2 with SMTP id u22-20020a05600c211600b003cf69ff5da2mr5827983wml.16.1667220857598; Mon, 31 Oct 2022 05:54:17 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5vptNRZMIA7t3JHryUnhR6eEiBWklzQC7SQbJ2Yp9+KgzZKBp+avfyy68CLXgRNG7xGOHMfg== X-Received: by 2002:a05:600c:2116:b0:3cf:69ff:5da2 with SMTP id u22-20020a05600c211600b003cf69ff5da2mr5827954wml.16.1667220857247; Mon, 31 Oct 2022 05:54:17 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:14 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Brice Goglin , Hesham Almatary , Jingqi Liu , Yicong Yang , Eduardo Habkost , Marcel Apfelbaum , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Yanan Wang Subject: [PULL 74/86] hmat acpi: Don't require initiator value in -numa Message-ID: <20221031124928.128475-75-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221576774100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Brice Goglin The "Memory Proximity Domain Attributes" structure of the ACPI HMAT has a "Processor Proximity Domain Valid" flag that is currently always set because Qemu -numa requires an initiator=3DX value when hmat=3Don. Unsetting this flag allows to create more complex memory topologies by having multiple best initiators for a single memory target. This patch allows -numa without initiator=3DX when hmat=3Don by keeping the default value MAX_NODES in numa_state->nodes[i].initiator. All places reading numa_state->nodes[i].initiator already check whether it's different from MAX_NODES before using it. Tested with qemu-system-x86_64 -accel kvm \ -machine pc,hmat=3Don \ -drive if=3Dpflash,format=3Draw,file=3D./OVMF.fd \ -drive media=3Ddisk,format=3Dqcow2,file=3Defi.qcow2 \ -smp 4 \ -m 3G \ -object memory-backend-ram,size=3D1G,id=3Dram0 \ -object memory-backend-ram,size=3D1G,id=3Dram1 \ -object memory-backend-ram,size=3D1G,id=3Dram2 \ -numa node,nodeid=3D0,memdev=3Dram0,cpus=3D0-1 \ -numa node,nodeid=3D1,memdev=3Dram1,cpus=3D2-3 \ -numa node,nodeid=3D2,memdev=3Dram2 \ -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D10 \ -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D10485760 \ -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D20 \ -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D5242880 \ -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D30 \ -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D1048576 \ -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D20 \ -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D5242880 \ -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D10 \ -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D10485760 \ -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmemory,data-type=3Dacce= ss-latency,latency=3D30 \ -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmemory,data-type=3Dacce= ss-bandwidth,bandwidth=3D1048576 which reports NUMA node2 at same distance from both node0 and node1 as seen= in lstopo: Machine (2966MB total) + Package P#0 NUMANode P#2 (979MB) Group0 NUMANode P#0 (980MB) Core P#0 + PU P#0 Core P#1 + PU P#1 Group0 NUMANode P#1 (1007MB) Core P#2 + PU P#2 Core P#3 + PU P#3 Before this patch, we had to add ",initiator=3DX" to "-numa node,nodeid=3D2= ,memdev=3Dram2". The lstopo output difference between initiator=3D1 and no initiator is: @@ -1,10 +1,10 @@ Machine (2966MB total) + Package P#0 + NUMANode P#2 (979MB) Group0 NUMANode P#0 (980MB) Core P#0 + PU P#0 Core P#1 + PU P#1 Group0 NUMANode P#1 (1007MB) - NUMANode P#2 (979MB) Core P#2 + PU P#2 Core P#3 + PU P#3 Corresponding changes in the HMAT MPDA structure: @@ -49,10 +49,10 @@ [078h 0120 2] Structure Type : 0000 [Memory Proximity Doma= in Attributes] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000028 -[080h 0128 2] Flags (decoded below) : 0001 - Processor Proximity Domain Valid : 1 +[080h 0128 2] Flags (decoded below) : 0000 + Processor Proximity Domain Valid : 0 [082h 0130 2] Reserved1 : 0000 -[084h 0132 4] Attached Initiator Proximity Domain : 00000001 +[084h 0132 4] Attached Initiator Proximity Domain : 00000080 [088h 0136 4] Memory Proximity Domain : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [090h 0144 8] Reserved3 : 0000000000000000 Final HMAT SLLB structures: [0A0h 0160 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0A2h 0162 2] Reserved : 0000 [0A4h 0164 4] Length : 00000040 [0A8h 0168 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0A9h 0169 1] Data Type : 00 [0AAh 0170 2] Reserved1 : 0000 [0ACh 0172 4] Initiator Proximity Domains # : 00000002 [0B0h 0176 4] Target Proximity Domains # : 00000003 [0B4h 0180 4] Reserved2 : 00000000 [0B8h 0184 8] Entry Base Unit : 0000000000002710 [0C0h 0192 4] Initiator Proximity Domain List : 00000000 [0C4h 0196 4] Initiator Proximity Domain List : 00000001 [0C8h 0200 4] Target Proximity Domain List : 00000000 [0CCh 0204 4] Target Proximity Domain List : 00000001 [0D0h 0208 4] Target Proximity Domain List : 00000002 [0D4h 0212 2] Entry : 0001 [0D6h 0214 2] Entry : 0002 [0D8h 0216 2] Entry : 0003 [0DAh 0218 2] Entry : 0002 [0DCh 0220 2] Entry : 0001 [0DEh 0222 2] Entry : 0003 [0E0h 0224 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0E2h 0226 2] Reserved : 0000 [0E4h 0228 4] Length : 00000040 [0E8h 0232 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0E9h 0233 1] Data Type : 03 [0EAh 0234 2] Reserved1 : 0000 [0ECh 0236 4] Initiator Proximity Domains # : 00000002 [0F0h 0240 4] Target Proximity Domains # : 00000003 [0F4h 0244 4] Reserved2 : 00000000 [0F8h 0248 8] Entry Base Unit : 0000000000000001 [100h 0256 4] Initiator Proximity Domain List : 00000000 [104h 0260 4] Initiator Proximity Domain List : 00000001 [108h 0264 4] Target Proximity Domain List : 00000000 [10Ch 0268 4] Target Proximity Domain List : 00000001 [110h 0272 4] Target Proximity Domain List : 00000002 [114h 0276 2] Entry : 000A [116h 0278 2] Entry : 0005 [118h 0280 2] Entry : 0001 [11Ah 0282 2] Entry : 0005 [11Ch 0284 2] Entry : 000A [11Eh 0286 2] Entry : 0001 Signed-off-by: Brice Goglin Signed-off-by: Hesham Almatary Reviewed-by: Jingqi Liu Message-Id: <20221027100037.251-2-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/core/machine.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index 65fdfe2fed..3f66fca5c6 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -1180,9 +1180,7 @@ static void numa_validate_initiator(NumaState *numa_s= tate) =20 for (i =3D 0; i < numa_state->num_nodes; i++) { if (numa_info[i].initiator =3D=3D MAX_NODES) { - error_report("The initiator of NUMA node %d is missing, use " - "'-numa node,initiator' option to declare it", i); - exit(1); + continue; } =20 if (!numa_info[numa_info[i].initiator].present) { --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221162; cv=none; d=zohomail.com; s=zohoarc; b=VDXXovDvtMrMesr8Dh/Ugpvvz/iVNciqZzhZjZ+45ZJXNcuhTgYUuzZmH0bGl3fto8zZN+eaa4vj95X6HCc1/h091jczJJU3vOXGbpwaz8bwhyjDQOEdx2kDqGMQ2SkW52IvLSnn3sP9wMaC2U4Uo4dlmvLFiMYcNBSGpuF27Ls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221162; h=Content-Type: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=vyFquoWhRBqop6d2QQCGoBYPqIvepuw7IXNadOdimWY=; b=d68oz+dGDDp9fiYDO6YcDBx8j4aFgXDjxUJcR2VXhpJ9AX4V3bc/yjq+UTR8ZBuJdYcEgSiKtqee1qTTQJkNygy6RUrBImwNvxJCk/vafDjSoj0VBvBOr/UNSsiXASVmKDpdv2r0wMa/tHvp3d9wEP2JOj5SRpVjJNSXtOtGdgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221162544780.4048662514883; Mon, 31 Oct 2022 05:59:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJO-0006Cf-FK; Mon, 31 Oct 2022 08:54:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ7-0004tJ-Kf for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ6-0003SY-6G for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:25 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-661-4iHFphreOUOow7lvci8p1Q-1; Mon, 31 Oct 2022 08:54:21 -0400 Received: by mail-wm1-f69.google.com with SMTP id l1-20020a7bc341000000b003bfe1273d6cso2574322wmj.4 for ; Mon, 31 Oct 2022 05:54:21 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id q9-20020a5d61c9000000b00236733f0f98sm6976267wrv.107.2022.10.31.05.54.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220863; 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: in-reply-to:in-reply-to:references:references; bh=vyFquoWhRBqop6d2QQCGoBYPqIvepuw7IXNadOdimWY=; b=Lr9L3SQbSZ/qr25z3hRTHHhmqfItooV7BxgQZ+cKJGkHyFVaEETt/38jgdwiczPNKcedAb meC0zLekusjGsTShDcbnCKROXa1BEvmj1pqYjhaL6wsZMOcD6kK0Rrs1bYJYFMRGI0fBQj /T+nSpNXHzQ9VUKNt/0ObLo3TcNf6z0= X-MC-Unique: 4iHFphreOUOow7lvci8p1Q-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vyFquoWhRBqop6d2QQCGoBYPqIvepuw7IXNadOdimWY=; b=a7rt7JZD4LtHFtMs/44ZYXw+zqZX+KdepoymDcArbAVK06hHHzm/ej3snDeP7HT45o 3AuE2XV90S9y6QYldd85y+f+GO+x/r5ur2igB/3MW6v25yUBSdMzLg1uQPWa/f1OgdXo FNT6R/3eP4cXFhrSo674Ci+a4DkwtwDkbvNGsU0pX6QdZBKCyiyrdlDojCanwlYFqcID 3ftq6biECQjPMPf6ko4cPSRqvPhi4qNa4k0swNnFwHRaoZ/0noMuz1fzWpKtgYP7E6tq HNFo4GDjTc86P3IvpTK5wACVO4X2oDhMmJETo9HCWWxh1Pevrhtgs0+6FKMop+mjdFox FEUA== X-Gm-Message-State: ACrzQf23s4CLZFWDBXKZnDDKaM7V8UxeVh71Dl50tKWSf8PFUaI2LO9o qZZOzJm1XEAD0jlym2K1K+Jl57T1gEG95KW4U5JCauq+gCduxjEwvC7NNmphUNKHqhxjWqI9fQr +2zbRL00/CJW9lLt/bdXH2BGSHxroXlDU598LtumF0zDrCzdctS/LG5F1seVU X-Received: by 2002:adf:f511:0:b0:236:60be:e885 with SMTP id q17-20020adff511000000b0023660bee885mr7832415wro.663.1667220860359; Mon, 31 Oct 2022 05:54:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5vZjMub9FkyvLFgK/P2U+I1dNdBpApVvmgSJP+H8Lo+FC3W3VmGWeqHSk7A1F9VM6D7ur+Bw== X-Received: by 2002:adf:f511:0:b0:236:60be:e885 with SMTP id q17-20020adff511000000b0023660bee885mr7832393wro.663.1667220860014; Mon, 31 Oct 2022 05:54:20 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:17 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Brice Goglin , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 75/86] tests: acpi: add and whitelist *.hmat-noinitiator expected blobs Message-ID: <20221031124928.128475-76-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221163433100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Brice Goglin .. which will be used by follow up hmat-noinitiator test-case. Signed-off-by: Brice Goglin Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-3-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 4 ++++ tests/data/acpi/q35/APIC.acpihmat-noinitiator | 0 tests/data/acpi/q35/DSDT.acpihmat-noinitiator | 0 tests/data/acpi/q35/HMAT.acpihmat-noinitiator | 0 tests/data/acpi/q35/SRAT.acpihmat-noinitiator | 0 5 files changed, 4 insertions(+) create mode 100644 tests/data/acpi/q35/APIC.acpihmat-noinitiator create mode 100644 tests/data/acpi/q35/DSDT.acpihmat-noinitiator create mode 100644 tests/data/acpi/q35/HMAT.acpihmat-noinitiator create mode 100644 tests/data/acpi/q35/SRAT.acpihmat-noinitiator diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..245fa66bcc 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,5 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/q35/APIC.acpihmat-noinitiator", +"tests/data/acpi/q35/DSDT.acpihmat-noinitiator", +"tests/data/acpi/q35/HMAT.acpihmat-noinitiator", +"tests/data/acpi/q35/SRAT.acpihmat-noinitiator", diff --git a/tests/data/acpi/q35/APIC.acpihmat-noinitiator b/tests/data/acp= i/q35/APIC.acpihmat-noinitiator new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/DSDT.acpihmat-noinitiator b/tests/data/acp= i/q35/DSDT.acpihmat-noinitiator new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/HMAT.acpihmat-noinitiator b/tests/data/acp= i/q35/HMAT.acpihmat-noinitiator new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/SRAT.acpihmat-noinitiator b/tests/data/acp= i/q35/SRAT.acpihmat-noinitiator new file mode 100644 index 0000000000..e69de29bb2 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222409; cv=none; d=zohomail.com; s=zohoarc; b=RnculkNcWpt7R0kCm50Mt/b/RAo1N3iuxuta5D4EvFFUjp0/oRYS0Zgb/TPu8GjK8jQquHIf0B2rUzCpjxCrzVMur4/pyp8d1bLZfWjvDMnaj1uFm9OVsFqbPfjAl3V6HEcLaPFL+AeB4EkFDsE8sxASbf5rCZp4gxZJgj7LgBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222409; h=Content-Type: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=r2qS7pX1ujtlXoL9VYs+TLZ97LDTQdaOitzPhRGHWIA=; b=lk8c7uVCYSiEeCvaOlACqKO963Lbo+mpCq4MNMRiV7fUbpY+2v7rjDaRtw8ucUxDhv6feXbnfL8Zx2toaN413cPE/ddvgN4gnBtTN/kTxe5uETHFErdUZmymFsgnOCbh9o69i0vBe69a0yaJc6XxJIpfYyFPDKPxU4evuIPrtEs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722240967440.83378714583955; Mon, 31 Oct 2022 06:20:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJP-0006RT-BT; Mon, 31 Oct 2022 08:54:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJB-0004ys-FS for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJ9-0003Sr-09 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:29 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-412-ZMQ2g6n7M3Wl03S7qL0weQ-1; Mon, 31 Oct 2022 08:54:25 -0400 Received: by mail-wm1-f72.google.com with SMTP id f26-20020a7bcc1a000000b003c03db14864so2571160wmh.6 for ; Mon, 31 Oct 2022 05:54:24 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id e15-20020adfe7cf000000b0022cc0a2cbecsm7263555wrn.15.2022.10.31.05.54.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220866; 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: in-reply-to:in-reply-to:references:references; bh=r2qS7pX1ujtlXoL9VYs+TLZ97LDTQdaOitzPhRGHWIA=; b=I8B/GsAn7sIADGRHbCgkV3tn7FdOhdouXMlHcoAQ7hR/9gVRe97T12/WXIKQt07eGA1nCZ QoCLZZs3tvJd13JZZ5zlCVf7Wa2qtcH7c6GGIV1aEHjXe1DbPreuAFrTJA6VWOH5gUiLnb p4O8/fWgoS3CMx0HP7oIZteQNXQMozA= X-MC-Unique: ZMQ2g6n7M3Wl03S7qL0weQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=r2qS7pX1ujtlXoL9VYs+TLZ97LDTQdaOitzPhRGHWIA=; b=Uf1JHIo4nrnb4KAXbsh3eaNziJwDnhxGl11TN+UaH/8Q63/KS4i/wtIaxd2TK25V5T STyens4TaDxVcwPi1aKP/rRa/MdxRdTw4d0VQmIgmvBv8HZEVlmYww6cAYr0/f2F38KU UYWJZjCI04uQ8Q8h5TSe5mryriu9ni+XWbDoQuEf5qGRgb8FZ9UU3oCgBF/EHJYjdEFy 7NKJCyJFuqLi7TKG9wa5llj+0FLN4eAabfhivni2DyBHCx/T2VOA1BnrSwd6St7nsbQh byhqjTf5G0ZjQr+W+WE9659EEpJ6PAEwFCHDAMETJZHqUiWvPjg06legsFxhm77S2Mxp qveg== X-Gm-Message-State: ACrzQf1bXBZrzvegyzdib2vxElPlUelPcVAr07YmHMVvJOiQV9D1Sp+U VRx9ZUAgY47h9v9rnlLgt088oJcR32BIP7ls2XinGn3UKGPGYd0q3lBqCa99ZjVdWktLyT10PfY O1WX87P3mMEpNxNnA/LV6ycCFmMU9jRMUoQy8ZNl3elWuGmk/+knqzz2aAq9H X-Received: by 2002:a05:600c:3548:b0:3c6:f7cb:1567 with SMTP id i8-20020a05600c354800b003c6f7cb1567mr7864387wmq.161.1667220863396; Mon, 31 Oct 2022 05:54:23 -0700 (PDT) X-Google-Smtp-Source: AMsMyM487NkGJmVRpS13hYj+gBl3nspv9v+jMt67FgqzXyZUB6zE5RqX+5ottQkVkBXONQytTmL7qQ== X-Received: by 2002:a05:600c:3548:b0:3c6:f7cb:1567 with SMTP id i8-20020a05600c354800b003c6f7cb1567mr7864352wmq.161.1667220863000; Mon, 31 Oct 2022 05:54:23 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:20 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Brice Goglin , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 76/86] tests: acpi: q35: add test for hmat nodes without initiators Message-ID: <20221031124928.128475-77-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222411154100006 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Brice Goglin expected HMAT: [000h 0000 4] Signature : "HMAT" [Heterogeneous Mem= ory Attributes Table] [004h 0004 4] Table Length : 00000120 [008h 0008 1] Revision : 02 [009h 0009 1] Checksum : 4F [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 [01Ch 0028 4] Asl Compiler ID : "BXPC" [020h 0032 4] Asl Compiler Revision : 00000001 [024h 0036 4] Reserved : 00000000 [028h 0040 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [02Ah 0042 2] Reserved : 0000 [02Ch 0044 4] Length : 00000028 [030h 0048 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [032h 0050 2] Reserved1 : 0000 [034h 0052 4] Attached Initiator Proximity Domain : 00000000 [038h 0056 4] Memory Proximity Domain : 00000000 [03Ch 0060 4] Reserved2 : 00000000 [040h 0064 8] Reserved3 : 0000000000000000 [048h 0072 8] Reserved4 : 0000000000000000 [050h 0080 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [052h 0082 2] Reserved : 0000 [054h 0084 4] Length : 00000028 [058h 0088 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [05Ah 0090 2] Reserved1 : 0000 [05Ch 0092 4] Attached Initiator Proximity Domain : 00000001 [060h 0096 4] Memory Proximity Domain : 00000001 [064h 0100 4] Reserved2 : 00000000 [068h 0104 8] Reserved3 : 0000000000000000 [070h 0112 8] Reserved4 : 0000000000000000 [078h 0120 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000028 [080h 0128 2] Flags (decoded below) : 0000 Processor Proximity Domain Valid : 0 [082h 0130 2] Reserved1 : 0000 [084h 0132 4] Attached Initiator Proximity Domain : 00000080 [088h 0136 4] Memory Proximity Domain : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [090h 0144 8] Reserved3 : 0000000000000000 [098h 0152 8] Reserved4 : 0000000000000000 [0A0h 0160 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0A2h 0162 2] Reserved : 0000 [0A4h 0164 4] Length : 00000040 [0A8h 0168 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0A9h 0169 1] Data Type : 00 [0AAh 0170 2] Reserved1 : 0000 [0ACh 0172 4] Initiator Proximity Domains # : 00000002 [0B0h 0176 4] Target Proximity Domains # : 00000003 [0B4h 0180 4] Reserved2 : 00000000 [0B8h 0184 8] Entry Base Unit : 0000000000002710 [0C0h 0192 4] Initiator Proximity Domain List : 00000000 [0C4h 0196 4] Initiator Proximity Domain List : 00000001 [0C8h 0200 4] Target Proximity Domain List : 00000000 [0CCh 0204 4] Target Proximity Domain List : 00000001 [0D0h 0208 4] Target Proximity Domain List : 00000002 [0D4h 0212 2] Entry : 0001 [0D6h 0214 2] Entry : 0002 [0D8h 0216 2] Entry : 0003 [0DAh 0218 2] Entry : 0002 [0DCh 0220 2] Entry : 0001 [0DEh 0222 2] Entry : 0003 [0E0h 0224 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0E2h 0226 2] Reserved : 0000 [0E4h 0228 4] Length : 00000040 [0E8h 0232 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0E9h 0233 1] Data Type : 03 [0EAh 0234 2] Reserved1 : 0000 [0ECh 0236 4] Initiator Proximity Domains # : 00000002 [0F0h 0240 4] Target Proximity Domains # : 00000003 [0F4h 0244 4] Reserved2 : 00000000 [0F8h 0248 8] Entry Base Unit : 0000000000000001 [100h 0256 4] Initiator Proximity Domain List : 00000000 [104h 0260 4] Initiator Proximity Domain List : 00000001 [108h 0264 4] Target Proximity Domain List : 00000000 [10Ch 0268 4] Target Proximity Domain List : 00000001 [110h 0272 4] Target Proximity Domain List : 00000002 [114h 0276 2] Entry : 000A [116h 0278 2] Entry : 0005 [118h 0280 2] Entry : 0001 [11Ah 0282 2] Entry : 0005 [11Ch 0284 2] Entry : 000A [11Eh 0286 2] Entry : 0001 Raw Table Data: Length 288 (0x120) 0000: 48 4D 41 54 20 01 00 00 02 4F 42 4F 43 48 53 20 // HMAT ....OBOC= HS 0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....B= XPC 0020: 01 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(= ... 0030: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0050: 00 00 00 00 28 00 00 00 01 00 00 00 01 00 00 00 // ....(........= ... 0060: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0070: 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(= ... 0080: 00 00 00 00 80 00 00 00 02 00 00 00 00 00 00 00 // .............= ... 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 00A0: 01 00 00 00 40 00 00 00 00 00 00 00 02 00 00 00 // ....@........= ... 00B0: 03 00 00 00 00 00 00 00 10 27 00 00 00 00 00 00 // .........'...= ... 00C0: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // .............= ... 00D0: 02 00 00 00 01 00 02 00 03 00 02 00 01 00 03 00 // .............= ... 00E0: 01 00 00 00 40 00 00 00 00 03 00 00 02 00 00 00 // ....@........= ... 00F0: 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 // .............= ... 0100: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // .............= ... 0110: 02 00 00 00 0A 00 05 00 01 00 05 00 0A 00 01 00 // .............= ... Signed-off-by: Brice Goglin Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-4-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test.c | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index e402b57d46..320b828af5 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -1543,6 +1543,54 @@ static void test_acpi_piix4_tcg_acpi_hmat(void) test_acpi_tcg_acpi_hmat(MACHINE_PC); } =20 +static void test_acpi_q35_tcg_acpi_hmat_noinitiator(void) +{ + test_data data; + + memset(&data, 0, sizeof(data)); + data.machine =3D MACHINE_Q35; + data.variant =3D ".acpihmat-noinitiator"; + test_acpi_one(" -machine hmat=3Don" + " -smp 4,sockets=3D2" + " -m 128M" + " -object memory-backend-ram,size=3D32M,id=3Dram0" + " -object memory-backend-ram,size=3D32M,id=3Dram1" + " -object memory-backend-ram,size=3D64M,id=3Dram2" + " -numa node,nodeid=3D0,memdev=3Dram0" + " -numa node,nodeid=3D1,memdev=3Dram1" + " -numa node,nodeid=3D2,memdev=3Dram2" + " -numa cpu,node-id=3D0,socket-id=3D0" + " -numa cpu,node-id=3D0,socket-id=3D0" + " -numa cpu,node-id=3D1,socket-id=3D1" + " -numa cpu,node-id=3D1,socket-id=3D1" + " -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D10" + " -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D10485760" + " -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D20" + " -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D5242880" + " -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D30" + " -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D1048576" + " -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D20" + " -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D5242880" + " -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D10" + " -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D10485760" + " -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D30" + " -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D1048576", + &data); + free_test_data(&data); +} + #ifdef CONFIG_POSIX static void test_acpi_erst(const char *machine) { @@ -1908,6 +1956,8 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet); qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm); qtest_add_func("acpi/q35/acpihmat", test_acpi_q35_tcg_acpi_hma= t); + qtest_add_func("acpi/q35/acpihmat-noinitiator", + test_acpi_q35_tcg_acpi_hmat_noinitiator); #ifdef CONFIG_POSIX qtest_add_func("acpi/q35/acpierst", test_acpi_q35_acpi_erst); #endif --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221441; cv=none; d=zohomail.com; s=zohoarc; b=U35+TUQo4RhseIklJ4aXQ68rhaV4cfnXDImIA+kcpCCro8YgE55++hVeGN9nrQA8KmpuNoZ/WL3UnHG22RMrwKYnVkcDexd3KjfLrsRC/qQVkpHL/gVud0AvyvRKs+8c0Np3m2tDTc2WplbwvfTlCKn9D7k/oMZ5Xl2htj3+9L0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221441; h=Content-Type: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=+wIZdWRhVM+wVZ90AnSA9MLA0tAZ5na8AnBeHfbw6SI=; b=S59fx0tvL1WzCsEysJ7qI7wB5iFHqYIJmpO+8PyzSY0NiM9fbrogIas+oB5EfQpqRNcQSUynLlzewpOmVoihY9Vcv9cJRw7Hj2iOItqtdbax7Y/jJ2a1hsR+GoIOmLIYqwh0dP9Dpj92cfQ7u9MlRn13lJNS4QwGZIbseMlMwdM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221441362231.30848490317805; Mon, 31 Oct 2022 06:04:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJQ-0006Zw-V3; Mon, 31 Oct 2022 08:54:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJF-00053F-Gx for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJC-0003TC-1D for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:32 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-440-5qelDVYFOH-YXjovUNXLPw-1; Mon, 31 Oct 2022 08:54:28 -0400 Received: by mail-wm1-f72.google.com with SMTP id l1-20020a7bc341000000b003bfe1273d6cso2574455wmj.4 for ; Mon, 31 Oct 2022 05:54:28 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id bo29-20020a056000069d00b0022eafed36ebsm7161372wrb.73.2022.10.31.05.54.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220869; 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: in-reply-to:in-reply-to:references:references; bh=+wIZdWRhVM+wVZ90AnSA9MLA0tAZ5na8AnBeHfbw6SI=; b=cciy2Y0mnSgks0AEx3hJJNb8GnhAUAJsSPaGNmDErw7XtAbndbw+WIUiPt1uRaE4lyVCon U4w/i9hVaNQxhYfKc4yVqHLGnnFGrCjdyUFjWdC7KHOj2fFut5OqcMD1mPnhiRZ1tz4P9I CkZZyfkhiqQsmKBTQhqDhj6kx6kheE8= X-MC-Unique: 5qelDVYFOH-YXjovUNXLPw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+wIZdWRhVM+wVZ90AnSA9MLA0tAZ5na8AnBeHfbw6SI=; b=bxxI4W079OhW8J5qN8D71M48enzW7bTV/eUktiuVdP8TkXPuxLmYcRyA6owYXbqKBi FYFTAn+9n7k14AFNkho/u5kmeHWZ9hiFWQo785KMAdEd2EaT3drSu9H5+/A5NlVzU0HV 1yiCT6jCSeqBnKMcFjGqFTh07N6CEB9TprYecJ+KlpwOANlQapBZoQoukvMoxqBAAiJN jcUedzUu6R+GcyKpJGOSFkdKOHcXw/2I02CRQlJVtW2CDnnX9njYwdNFE6tPD+tuRCwN /1xnWa672pIJaqIRI0RuScf7oyZzg3E5bLCkOH27D4NSqLxOYDl59ssp9wAxAmztQw6G oEpw== X-Gm-Message-State: ACrzQf0u9S8WUVzyUAbpTqhwOQKDXb6f5bBWguJjE1OMqpyTW5qeeYDF fylpqXjlx1wSvDJS5SRGQRbrnRm4GgnmaZUtgzQdPwaYF5auA28Ig3eCo8h9ls0ElSbUx3YneS0 QetAaLEkIqeotpJf3SKQLZsuZH2FybSGrRJOKJ4tQB9otfIozUYM7YXZrYP6a X-Received: by 2002:a5d:5d89:0:b0:226:e5ca:4bc2 with SMTP id ci9-20020a5d5d89000000b00226e5ca4bc2mr7906560wrb.310.1667220866569; Mon, 31 Oct 2022 05:54:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5TQFym30vrcGIbPBo5pjAk0ts8jx91zk7fioh/gsJv/G9DNknbroRv2jUlTFPD5ccYaZjYqA== X-Received: by 2002:a5d:5d89:0:b0:226:e5ca:4bc2 with SMTP id ci9-20020a5d5d89000000b00226e5ca4bc2mr7906521wrb.310.1667220866030; Mon, 31 Oct 2022 05:54:26 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:23 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Brice Goglin , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 77/86] tests: acpi: q35: update expected blobs *.hmat-noinitiators expected HMAT: Message-ID: <20221031124928.128475-78-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221443943100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Brice Goglin [000h 0000 4] Signature : "HMAT" [Heterogeneous Mem= ory Attributes Table] [004h 0004 4] Table Length : 00000120 [008h 0008 1] Revision : 02 [009h 0009 1] Checksum : 4F [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 [01Ch 0028 4] Asl Compiler ID : "BXPC" [020h 0032 4] Asl Compiler Revision : 00000001 [024h 0036 4] Reserved : 00000000 [028h 0040 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [02Ah 0042 2] Reserved : 0000 [02Ch 0044 4] Length : 00000028 [030h 0048 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [032h 0050 2] Reserved1 : 0000 [034h 0052 4] Attached Initiator Proximity Domain : 00000000 [038h 0056 4] Memory Proximity Domain : 00000000 [03Ch 0060 4] Reserved2 : 00000000 [040h 0064 8] Reserved3 : 0000000000000000 [048h 0072 8] Reserved4 : 0000000000000000 [050h 0080 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [052h 0082 2] Reserved : 0000 [054h 0084 4] Length : 00000028 [058h 0088 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [05Ah 0090 2] Reserved1 : 0000 [05Ch 0092 4] Attached Initiator Proximity Domain : 00000001 [060h 0096 4] Memory Proximity Domain : 00000001 [064h 0100 4] Reserved2 : 00000000 [068h 0104 8] Reserved3 : 0000000000000000 [070h 0112 8] Reserved4 : 0000000000000000 [078h 0120 2] Structure Type : 0000 [Memory Proximity Domai= n Attributes] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000028 [080h 0128 2] Flags (decoded below) : 0000 Processor Proximity Domain Valid : 0 [082h 0130 2] Reserved1 : 0000 [084h 0132 4] Attached Initiator Proximity Domain : 00000080 [088h 0136 4] Memory Proximity Domain : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [090h 0144 8] Reserved3 : 0000000000000000 [098h 0152 8] Reserved4 : 0000000000000000 [0A0h 0160 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0A2h 0162 2] Reserved : 0000 [0A4h 0164 4] Length : 00000040 [0A8h 0168 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0A9h 0169 1] Data Type : 00 [0AAh 0170 2] Reserved1 : 0000 [0ACh 0172 4] Initiator Proximity Domains # : 00000002 [0B0h 0176 4] Target Proximity Domains # : 00000003 [0B4h 0180 4] Reserved2 : 00000000 [0B8h 0184 8] Entry Base Unit : 0000000000002710 [0C0h 0192 4] Initiator Proximity Domain List : 00000000 [0C4h 0196 4] Initiator Proximity Domain List : 00000001 [0C8h 0200 4] Target Proximity Domain List : 00000000 [0CCh 0204 4] Target Proximity Domain List : 00000001 [0D0h 0208 4] Target Proximity Domain List : 00000002 [0D4h 0212 2] Entry : 0001 [0D6h 0214 2] Entry : 0002 [0D8h 0216 2] Entry : 0003 [0DAh 0218 2] Entry : 0002 [0DCh 0220 2] Entry : 0001 [0DEh 0222 2] Entry : 0003 [0E0h 0224 2] Structure Type : 0001 [System Locality Latenc= y and Bandwidth Information] [0E2h 0226 2] Reserved : 0000 [0E4h 0228 4] Length : 00000040 [0E8h 0232 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0E9h 0233 1] Data Type : 03 [0EAh 0234 2] Reserved1 : 0000 [0ECh 0236 4] Initiator Proximity Domains # : 00000002 [0F0h 0240 4] Target Proximity Domains # : 00000003 [0F4h 0244 4] Reserved2 : 00000000 [0F8h 0248 8] Entry Base Unit : 0000000000000001 [100h 0256 4] Initiator Proximity Domain List : 00000000 [104h 0260 4] Initiator Proximity Domain List : 00000001 [108h 0264 4] Target Proximity Domain List : 00000000 [10Ch 0268 4] Target Proximity Domain List : 00000001 [110h 0272 4] Target Proximity Domain List : 00000002 [114h 0276 2] Entry : 000A [116h 0278 2] Entry : 0005 [118h 0280 2] Entry : 0001 [11Ah 0282 2] Entry : 0005 [11Ch 0284 2] Entry : 000A [11Eh 0286 2] Entry : 0001 Raw Table Data: Length 288 (0x120) 0000: 48 4D 41 54 20 01 00 00 02 4F 42 4F 43 48 53 20 // HMAT ....OBOC= HS 0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....B= XPC 0020: 01 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(= ... 0030: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0050: 00 00 00 00 28 00 00 00 01 00 00 00 01 00 00 00 // ....(........= ... 0060: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 0070: 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(= ... 0080: 00 00 00 00 80 00 00 00 02 00 00 00 00 00 00 00 // .............= ... 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .............= ... 00A0: 01 00 00 00 40 00 00 00 00 00 00 00 02 00 00 00 // ....@........= ... 00B0: 03 00 00 00 00 00 00 00 10 27 00 00 00 00 00 00 // .........'...= ... 00C0: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // .............= ... 00D0: 02 00 00 00 01 00 02 00 03 00 02 00 01 00 03 00 // .............= ... 00E0: 01 00 00 00 40 00 00 00 00 03 00 00 02 00 00 00 // ....@........= ... 00F0: 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 // .............= ... 0100: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // .............= ... 0110: 02 00 00 00 0A 00 05 00 01 00 05 00 0A 00 01 00 // .............= ... Signed-off-by: Brice Goglin Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-5-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 4 ---- tests/data/acpi/q35/APIC.acpihmat-noinitiator | Bin 0 -> 144 bytes tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 0 -> 8553 bytes tests/data/acpi/q35/HMAT.acpihmat-noinitiator | Bin 0 -> 288 bytes tests/data/acpi/q35/SRAT.acpihmat-noinitiator | Bin 0 -> 312 bytes 5 files changed, 4 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 245fa66bcc..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,5 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/q35/APIC.acpihmat-noinitiator", -"tests/data/acpi/q35/DSDT.acpihmat-noinitiator", -"tests/data/acpi/q35/HMAT.acpihmat-noinitiator", -"tests/data/acpi/q35/SRAT.acpihmat-noinitiator", diff --git a/tests/data/acpi/q35/APIC.acpihmat-noinitiator b/tests/data/acp= i/q35/APIC.acpihmat-noinitiator index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d904d4a70ddecbb79a83a267af8= e26f925e9f4c6 100644 GIT binary patch literal 144 zcmZ<^@N}NQz`(%h?d0$55v<@85#X!<1dKp25F11@Fg*ANra6G>KwJ(+MhMNs1fiLk tK{O)|Nb|r~o3y%?)O;u>A)b0RWi;3;_TD literal 0 HcmV?d00001 diff --git a/tests/data/acpi/q35/DSDT.acpihmat-noinitiator b/tests/data/acp= i/q35/DSDT.acpihmat-noinitiator index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c767d11cb1d088f613c49e55a71= 39cccababf66c 100644 GIT binary patch literal 8553 zcmb7JOKcm*8J^`sS}m8-lA^$0{LCIadERkMusn`Jpkg}Xsa#CcG z#6TVhAj?4F_)s)q67)z13ea17>a_-XX>YzYKu;$gY0nd~tOIw46@kU+2F& zd-_*jUVf)|@0b7l^_|zP1OTh}HSv2sq_5rwJ?l(w;C$BKGd?6bKesYi{H)JUi#CVO zggt7xYl|jIwQ~4+=3Dinu;RdjhD(|*%0xP=3Dw;%WVajv)1X4ml?BZaOm^r;c)m@ambwa znA0$Y%CcGW%WbLBfHqRq*{}KS2D2Hv|1iZ8otqBDi?5WMUfyqc-F)taZqP2WkXm{n zHEqA&vz*?*{?=3DOI4%Cddx7Y z#x-^gzvp5|-#K`yacOhJT3FOrrjbzjgZa7)e2M&7S`SMnXB zwC=3D94+|#~Wz8LE~Nzrf^?h+z=3D&)8#>qw_;*K4iIPir`E`QLd1_dJ(pl^JaW6Xv`1R zqkG~0i~smf@cjFYPnW-KocNpD2r1VazwHg4>|bYt6a76ahAICcpEx$=3D>5v^};>Jz- zVt1DZOa1HCY?w{PSek8zz1!Q29d4U`-L0^k-NmmF?o#CZ?p1?kk>h^L?_9st_Ookm z?`Km9Oh>lfTq`qiY~Z-UvNp9_F$7f^#1Yh3Hl08}aO((M6cG!+d2x>O0F@yzk)LB@ zoC$0c5mQ2Aj57h{OoYTlZ#Xv2nX(6QMobBf3nrkPiIAAG3T`BU<#`gEDWM6$l$}SY z>P%`nlbk7`Nx_tzN2uzY(R9vmri9MuIuWWmXEmL(n$B5WCqh-Hsp&K|ou;l6p{f&) z9A%{EG@Wz0PK2sXOVep-IxSr%LRDu<)0xtArgWVMRh@YBDc951blSR3gsRT8rZcVS zOzS!ksygR2o%5Q`d0i($Rp)}Hb3xO&pzB1a>U1=3Dnj;7Pmbs|)CW;C4{O=3Dm{eiBQ#< z)pTYxompKcLRIIYrgKr#xv1+zsOrpVI&+%NoURk0s&h%xxuoe_(sd$Kbsp1n9@BIl z({&h_lvrj&UmNlKrx=3Dw_u&f}WS`n-#`zR!) z7hz9o%##}Pq|QXBGEZsDQyTM>&P1p(PixH68uPTyM5r>K(3nqX%qMgvLX~-jGo{O% z;Y|6AKO>m(!HtlZ@(P~SYM#|`0y;8Kgy@YlP=3DSpis;L^NfQ}3lA$r8I zFi?SwqDUi$l7R}S3{{;lP?451VW0|>3>2YsMKVx?QYQ>lU^x>8szAv=3D1(eq$14Srx z!axOlU^x>8szAv=3D1(Y+%KoLrvFi?TzOcu z&LjgxD0RX>1(q{mpbC@>R6seC3>2Z%2?G^a&V+#~P%=3D;f=3D3{*fllMEE0)CmI>Sk8oj zDo`>|0p(0GP=3Drz^3{+q_69%e4$v_2^Gs!>^N}VuJf#pmXr~)Me6;RG314Srx!axO< zGhv_#lnhirIg<<&q0|Wj6M_lrzad5lWpf zP=3DV!47^ngz0~JutBm+e#b;3XqDF%v2HBf}Afg)54RAItE6($*|!XyJ#m@rU<2?JG_ zWS|O@3{+vlKouqoRAG{VDoip^g$V;ym@rU1;Px-d{gxMF-T$v_d} zGRTmaa%^Fsh~(J9KoQBYB?Cn$$CeBfA=3DZXYc447xVE6f-)kFG2dUu9?ik+K3e=3Dbh{ zQfaA!mNyK)wNZrQZj|WDr7zE9SZvuS({Y8qs`OPebBpy2tOg9`KCt$8v8pn6Xr*!& z>Kkrr4uDo6GjF9nnPGE$>E}ImhuW+pzU$!!yVe4uBXpvLrIz(sydxCll824;8Cv}@ z(d{5}%v$_pp3TMKZVbVJjUA?4KFY)Rn^iQo`%1y6c>KrskyI4EJ`d*~niakbo zS1IrE^6pr9_lWXtRNfmCZ(%{}d#m@9@*Xemjg|L~DDOq(%j4w}k5Rs?lrQu0<+1YR zBg&Vf@|E%O$;T*PQOZ|%`N~-N$`R!&QTgh4`I*NkUscLidHL#C`RWnnt5Nydc=3D_4K zC|^^`*LeBbSozu!YH+~yi89g1| zH73%DwyEhR?#ry64lf`R=3D|tPqbQAX(mVoI#lfv*;GLcTSO-(m(-{kakcvYE5C)%c_ zo45~_^mKTCnMfzvrly;i*T?j9c&V94C)%c_o0zA|dOE!6Or#TSdOGKnvc|scf+0>HHfTy9YOaL_v||UBBEk+uZO-Tq8-!AFq%xo(dVJ=3DFe4+xq;g>kC0)y z&GO}JY#6eg(75(hIorQxgzQ>q^g_1%Rm1*$zh`{0Vot5e0CUT)aH?B?}=3Df<3SDQMeAjPvyAGLavH7w%0No6w4l zw-WUFcq4{+YVSI?UZ#1EX9PaDg)p(rLz>>WOB%&?CS{onD-!gsnw!T?YCA<@*zVqS zJY}vlSm)MSg6Yd?Byij6#_!FQYd;%Eq`u_PW~e6Nh}8DC6U zf4QAzF|3^6Go&wUq&~18*oKLA1CMHazQgGU_9#wcYmKr0^37&34*0h)9MZo9`ox&F z4Q*m~?@!_k`=3DfT|9`>gniZl0KzVi&WuA^+CjYg2R1~FH(55=3D^1>n1QbVz-{}gcmV5 z!ZD~_u?n%Dn-VWJ+$!=3Dj`5A+60AEb_HNPc>n6}d&CBYy~v7O0W_w0MNaU8q1Ki)$5 z;Cweblc2eY;|txanXqCOCLf~b=3D?p1xe(~rsbPk@aTz19lKzgIx*uMs;S4dxCU-4Odz5uKq7kt*)m-+N&Mij( zmQa%w6GZ=3D3|IM0X_Ak#IabYaQ2iTvR&x~t&7@Gj;A7o|>w!;|gr;lRa*AB0!)_xEV I&r86*0dKzu0RR91 literal 0 HcmV?d00001 diff --git a/tests/data/acpi/q35/SRAT.acpihmat-noinitiator b/tests/data/acp= i/q35/SRAT.acpihmat-noinitiator index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a11d3119ab3538d9cf821a4fe0f= ccb0f1dc96359 100644 GIT binary patch literal 312 zcmWFzatyIxWME)?>E!S15v<@85#X!<1VAAM5F12;FdPVA@EK9%8JW=3Dd%*cF34Y)~A u1{YiayE>qSVDJGh4QBww88zTMCa6LfjpA-b4Y)81R2_^)QwNnLKmh (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221159930216.6205877936237; Mon, 31 Oct 2022 05:59:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJf-0007Es-6B; Mon, 31 Oct 2022 08:55:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJG-0005H0-LF for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJF-0003TS-1v for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:34 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-290-gtIzxxzMNDmbusXVgzjosw-1; Mon, 31 Oct 2022 08:54:30 -0400 Received: by mail-wr1-f69.google.com with SMTP id h18-20020adfa4d2000000b00236584fc8c7so2984703wrb.7 for ; Mon, 31 Oct 2022 05:54:30 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id k25-20020a7bc419000000b003cf4eac8e80sm7724764wmi.23.2022.10.31.05.54.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220871; 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: in-reply-to:in-reply-to:references:references; bh=KQnLVqea2wFTICHVFiJPOa9KHgVlieN3khJktynKO5U=; b=c1vWXzZtRaztsxweSpHvEy9z5KOISdeLixOnha5THQg0NIcu8CN7KjUiqQphzS6+XgbhDt lNJEM1gdZ/rHuJVE6oQjWzjIB6EW1rzA3KqE2PAkkNCQVb1C9+TiHQy/BxA5sV8mbdWWK6 7zNd+e5vX7Ba1j++IEgKRl5WMd6CHRY= X-MC-Unique: gtIzxxzMNDmbusXVgzjosw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KQnLVqea2wFTICHVFiJPOa9KHgVlieN3khJktynKO5U=; b=SYRRSpi+7YDWh1FB0J5IiRfRVXjIHVKWwOc8yirmaQz7jFWoK6JE2sLwOzNDmrzspE 8M/G+nvDPThZUBf3azvMZuE+/5+VtUpnVtFVsVl6kkuciwusigN6iN6Kcgz1zSUdBX9u Mcv6VabNU+jsQpIemBP7cS3XDJCuOSfSB/YrHvNffFhiUwlwZtLuTlQyoQ1NX+YBqTkX OktPgJlIc4tAvs4q8AZxIzrkbmDMML0C/hhGB4i0hAkyuqALhEdczphxJ5Mg+mZNGrGx mfPFHqWPqdbpW5sw+NJhXGr0q+Gyk79zyVlIa9EM6X3BVLn9z/GtfWRvqQvu/VLZ+WzB 6Ivg== X-Gm-Message-State: ACrzQf3kNmWbY/kqLZF2wyocyzuwNTjXAn6iTyaV4khxim6ADT8hVsts d4g6Z9oaA8vh8PqUXXJY55X590lAe9LModG181ktLHCVze9V9UsEP209Wi53Jepfb76wKstkjGe Su2ejzTZJACih/IzZ/3FdauOXsmZyQ7grH5M6aW0w51cYW9SzgBLnhdJujk/c X-Received: by 2002:a05:600c:1e89:b0:3c7:1e:acc2 with SMTP id be9-20020a05600c1e8900b003c7001eacc2mr7933112wmb.44.1667220869194; Mon, 31 Oct 2022 05:54:29 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6itAvYrilSsflMO0R8j2VdjtBoGBSwJmnPWM/oOphsqk1zxVDAaQ0ozQCqGNRGvmfDo+ZOmQ== X-Received: by 2002:a05:600c:1e89:b0:3c7:1e:acc2 with SMTP id be9-20020a05600c1e8900b003c7001eacc2mr7933088wmb.44.1667220868846; Mon, 31 Oct 2022 05:54:28 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 78/86] tests: Add HMAT AArch64/virt empty table files Message-ID: <20221031124928.128475-79-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221161539100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hesham Almatary Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-6-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 5 +++++ tests/data/acpi/virt/APIC.acpihmatvirt | 0 tests/data/acpi/virt/DSDT.acpihmatvirt | 0 tests/data/acpi/virt/HMAT.acpihmatvirt | 0 tests/data/acpi/virt/PPTT.acpihmatvirt | 0 tests/data/acpi/virt/SRAT.acpihmatvirt | 0 6 files changed, 5 insertions(+) create mode 100644 tests/data/acpi/virt/APIC.acpihmatvirt create mode 100644 tests/data/acpi/virt/DSDT.acpihmatvirt create mode 100644 tests/data/acpi/virt/HMAT.acpihmatvirt create mode 100644 tests/data/acpi/virt/PPTT.acpihmatvirt create mode 100644 tests/data/acpi/virt/SRAT.acpihmatvirt diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..4f849715bd 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,6 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/virt/APIC.acpihmatvirt", +"tests/data/acpi/virt/DSDT.acpihmatvirt", +"tests/data/acpi/virt/HMAT.acpihmatvirt", +"tests/data/acpi/virt/PPTT.acpihmatvirt", +"tests/data/acpi/virt/SRAT.acpihmatvirt", diff --git a/tests/data/acpi/virt/APIC.acpihmatvirt b/tests/data/acpi/virt/= APIC.acpihmatvirt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/DSDT.acpihmatvirt b/tests/data/acpi/virt/= DSDT.acpihmatvirt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/HMAT.acpihmatvirt b/tests/data/acpi/virt/= HMAT.acpihmatvirt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/PPTT.acpihmatvirt b/tests/data/acpi/virt/= PPTT.acpihmatvirt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/SRAT.acpihmatvirt b/tests/data/acpi/virt/= SRAT.acpihmatvirt new file mode 100644 index 0000000000..e69de29bb2 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221889; cv=none; d=zohomail.com; s=zohoarc; b=Kgv4tcPig/EK1BgG6LWhoyaFbTIpPP6OJKP6HHUvLNCP7IIjR1kLVd7pKZHBKSIrf/QNf2dLDC0BzvDR1fSApmMhR5k0EzgmVuCMP3o49+7dao8iGu3R6tUTAVEYvBUYygKuNBiGh5qEP2WEwjvu4O+/klfFAI3KptAPfmXsm/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221889; h=Content-Type: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=Oy2j3dzraHwJBqN04p66ThFiaUmnAcs5Y2XrHOxqe2M=; b=HawLlaM4lKLiV8coT+vcD3Weg3/pHZNvsdTmTgjOWICZZrMvlxM1Zxy2C+cbtDFFjjpdAw8GPkDuE1fzPAmnlLY/H35aGFIt/qYqNKK+xYWQUhibx5+q4UUc5C5gU3wS8ug3s2UB9lLNcnb/CAia2AAOW7m/rdMoge2O0e+EIh0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221889074108.97804213449206; Mon, 31 Oct 2022 06:11:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUJq-0007sX-Uc; Mon, 31 Oct 2022 08:55:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJI-0005bG-Vh for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJH-0003aF-DE for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:36 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-102-38LZb5jVMQqQV92RwZnSsA-1; Mon, 31 Oct 2022 08:54:33 -0400 Received: by mail-wr1-f69.google.com with SMTP id e21-20020adfa455000000b002365c221b59so3048576wra.22 for ; Mon, 31 Oct 2022 05:54:33 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id f16-20020a05600c4e9000b003cf568a736csm5265122wmq.20.2022.10.31.05.54.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220874; 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: in-reply-to:in-reply-to:references:references; bh=Oy2j3dzraHwJBqN04p66ThFiaUmnAcs5Y2XrHOxqe2M=; b=WFBhN2APUo6OeBiGkjrjOLmPpsJlwc/GIxwglVf+meKQfeed5jvf6X4kZxpb8uXl5HG23G N35EZVSBvwEsVJgSQmxgISaYWkPxIskOQfdsFI7H0eSEIGgin0Y5fosVzyTEC7zk4pbwHz XxW74r085yimUiSRNcco2HmntgR7xdc= X-MC-Unique: 38LZb5jVMQqQV92RwZnSsA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Oy2j3dzraHwJBqN04p66ThFiaUmnAcs5Y2XrHOxqe2M=; b=2UBBrZeAxyWiOldteoD1rt7c4TXXZcthS2Z58R0I3EsUvZEda5eseqkdX9Is8KDTAX Ktp+AuRI+aMmdSpJ+FRFB6j61VrVRjnksU1SUWvS5CGX80/go7Gng1X10drzhFUhD0xa 2x4ekNWksqJ3Pzdw85ZpDPiGH0CU5R4rjqBiWF3yyI2XyJp7YacvV2G6F/ph0ITsSmsS zVqVMQvvR63IXAU0Ee6rgH2s5FPNpuQ3JCrRYLIg+8sTEdGIzWkfB+bhGYuABQQXhcSq jdNVfYwavmWu7CumLzj4YW3TLckV3ZfTO08ikBOI336KrDm1AlEBi3wDysnFtVw6AR/F Tnwg== X-Gm-Message-State: ACrzQf3A/Eti/GTJAhFOlWBKfRlTehz6+lKRP4gd3tLsnZkWV9eCM4hP iZnbTDSovQLd+5YSpoS3pvk8MyVZvMqELnYpiRA81ORR36EYJA7TaFeJ1Fs5K2O7vLBKSgzTP4D u626vBinw5YOdvcWnX7bBf6Bcdm/VK6IeVEmtC/wrPCEgwFBBc2O7xla3JbFM X-Received: by 2002:a05:6000:1201:b0:236:61f4:b384 with SMTP id e1-20020a056000120100b0023661f4b384mr7687133wrx.505.1667220872067; Mon, 31 Oct 2022 05:54:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5vMH3FTF92MwRVYfheBwSabMBnK1qc0hQ520+tXjOoUHIKo2CS7TzAT3rKs6d+pF3mRFiEnw== X-Received: by 2002:a05:6000:1201:b0:236:61f4:b384 with SMTP id e1-20020a056000120100b0023661f4b384mr7687116wrx.505.1667220871809; Mon, 31 Oct 2022 05:54:31 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:29 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Xiang Chen , Hesham Almatary , Igor Mammedov , Yicong Yang , Shannon Zhao , Ani Sinha , qemu-arm@nongnu.org Subject: [PULL 79/86] hw/arm/virt: Enable HMAT on arm virt machine Message-ID: <20221031124928.128475-80-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221890861100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Xiang Chen Since the patchset ("Build ACPI Heterogeneous Memory Attribute Table (HMAT)= "), HMAT is supported, but only x86 is enabled. Enable HMAT on arm virt machine. Signed-off-by: Xiang Chen Signed-off-by: Hesham Almatary Reviewed-by: Igor Mammedov Message-Id: <20221027100037.251-7-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/arm/virt-acpi-build.c | 7 +++++++ hw/arm/Kconfig | 1 + 2 files changed, 8 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index da9e41e72b..4156111d49 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -42,6 +42,7 @@ #include "hw/acpi/memory_hotplug.h" #include "hw/acpi/generic_event_device.h" #include "hw/acpi/tpm.h" +#include "hw/acpi/hmat.h" #include "hw/pci/pcie_host.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bus.h" @@ -987,6 +988,12 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildT= ables *tables) build_slit(tables_blob, tables->linker, ms, vms->oem_id, vms->oem_table_id); } + + if (ms->numa_state->hmat_enabled) { + acpi_add_table(table_offsets, tables_blob); + build_hmat(tables_blob, tables->linker, ms->numa_state, + vms->oem_id, vms->oem_table_id); + } } =20 if (ms->nvdimms_state->is_enabled) { diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 15fa79afd3..17fcde8e1c 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -30,6 +30,7 @@ config ARM_VIRT select ACPI_VIOT select VIRTIO_MEM_SUPPORTED select ACPI_CXL + select ACPI_HMAT =20 config CHEETAH bool --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221972; cv=none; d=zohomail.com; s=zohoarc; b=ZPTeHokpycoSgAKJFdomxDpKLS7nkFUby68sGVkrVqJFZ4oO3HV4l+Z2sAyAjTbny2OWD2UTsIFq9rFiQaphX5xOFfW18a/qByKWOHamo3V4ADq1zqT3EjtKGWP/1eXzAADITOj8fna1jb5yxpAxZzP9rGhNmQs/93eTXi7b1Gc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221972; h=Content-Type: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=Jz5ovlW/1oitaGAz2w5Wi5S7a1QwFMmykgtS0BFMGew=; b=bzU7ljHGpVHUCSdVanMwYGxZl6JEzZTUSs6yNqeWedpDdUvyNGkbS0Ate/XIvuioPUZMV5yBlpD5PL+hhF49eN0ymsHZohOj6EkLfKc0BDvoEjhBfOK0RVBVn3eOTlJ8HoiVelC306dds4nrMvXw0ekHCDb+t0rwutdFHOFAT3s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722197237127.830680959708957; Mon, 31 Oct 2022 06:12:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKA-0008Gx-1z; Mon, 31 Oct 2022 08:55:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJL-0005zB-V5 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJK-0003e1-2w for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:39 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-569-_UhcneZ3P_CXzwH3K25kxQ-1; Mon, 31 Oct 2022 08:54:36 -0400 Received: by mail-wr1-f69.google.com with SMTP id i14-20020adfa50e000000b0023652707418so3034582wrb.20 for ; Mon, 31 Oct 2022 05:54:36 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id e9-20020adffd09000000b00236488f62d6sm7112911wrr.79.2022.10.31.05.54.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220877; 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: in-reply-to:in-reply-to:references:references; bh=Jz5ovlW/1oitaGAz2w5Wi5S7a1QwFMmykgtS0BFMGew=; b=HlZvt31MgLANpthiSFaM1DzXMcamBgPJVYgF8tL8cTDdUzW4BZB2o9ct63Y3Hm/1QdZDlm E64fmyitS9kjalqNATrAteYsdn5jDmdFqoSdwfjOP4jVrXzRI42nctcq/MPKDqDFi/j7Uf fnen68yuaLT2zNGMjv3CR9bpZEsPNDk= X-MC-Unique: _UhcneZ3P_CXzwH3K25kxQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Jz5ovlW/1oitaGAz2w5Wi5S7a1QwFMmykgtS0BFMGew=; b=G/j8d2HiHeNlsMtOUWwJ4xF+s6MXv5xwa6n3t5+oPH9uWijCDtDXrnKmkJeHu77l9t Hl1ezgZohK/B/IWYwgUTw3XU3vTW4YeN0R+L0Q00KPxcMiIWGDmm5kCk/TvrnSWlCR6U iQm9zva6utV0iCoYna7HucyT3bgYhOPHa3mULWW6pe/Lu3lAPMrWRHkAFiTcrTJ0h9GA 2cQHbrRx58ZN+2zS/NzkbDKVi0MDSr62LBUqhDNC6CppZlo4acfvdfZa1vRWjbG5c0US 9TZpjewQE0OLBKeNRTTYF3+mH6hzDQ+fMRJgrfgPlE0lh/oRJKYRhTqzC532Ya8gRoti PMtA== X-Gm-Message-State: ACrzQf2EIDUNO6h4/HYUGqTFzgBayHZw+GbjNbVRKXpDohqEZVCPp0qI rmhxd6c+ABxj+VsAYQY9dI+9sG2lvxo5StylsMgZIxUJnEpwAZF2a+6KZB0AuBNbvCtsqsYJhqW Yogxc6cmuR3tveSHyVcIjAzyvTt1sLRFazgyXBNGCVSZfJvHV+NCmhxH5AHEb X-Received: by 2002:a05:600c:3550:b0:3cf:4c20:5856 with SMTP id i16-20020a05600c355000b003cf4c205856mr8070905wmq.188.1667220874960; Mon, 31 Oct 2022 05:54:34 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4nPpL+h0R+X2LQLYKJKb9yqSVfEZHxqTpE48qm9zGC4ScBPX+AQBoRzopwDlP48ZOiYd1kgA== X-Received: by 2002:a05:600c:3550:b0:3cf:4c20:5856 with SMTP id i16-20020a05600c355000b003cf4c205856mr8070884wmq.188.1667220874658; Mon, 31 Oct 2022 05:54:34 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 80/86] tests: acpi: aarch64/virt: add a test for hmat nodes with no initiators Message-ID: <20221031124928.128475-81-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221974096100007 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hesham Almatary This patch imitates the "tests: acpi: q35: add test for hmat nodes without initiators" commit to test numa nodes with different HMAT attributes, but on AArch64/virt. Tested with: qemu-system-aarch64 -accel tcg \ -machine virt,hmat=3Don,gic-version=3D3 -cpu cortex-a57 \ -bios qemu-efi-aarch64/QEMU_EFI.fd \ -kernel Image -append "root=3D/dev/vda2 console=3DttyAMA0" \ -drive if=3Dvirtio,file=3Daarch64.qcow2,format=3Dqcow2,id=3Dhd \ -device virtio-rng-pci \ -net user,hostfwd=3Dtcp::10022-:22 -net nic \ -device intel-hda -device hda-duplex -nographic \ -smp 4 \ -m 3G \ -object memory-backend-ram,size=3D1G,id=3Dram0 \ -object memory-backend-ram,size=3D1G,id=3Dram1 \ -object memory-backend-ram,size=3D1G,id=3Dram2 \ -numa node,nodeid=3D0,memdev=3Dram0,cpus=3D0-1 \ -numa node,nodeid=3D1,memdev=3Dram1,cpus=3D2-3 \ -numa node,nodeid=3D2,memdev=3Dram2 \ -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmemory,data-type=3Daccess-late= ncy,latency=3D10 \ -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D10485760 \ -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmemory,data-type=3Dacces= s-latency,latency=3D20 \ -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D5242880 \ -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmemory,data-type=3Dacces= s-latency,latency=3D30 \ -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D1048576 \ -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmemory,data-type=3Dacces= s-latency,latency=3D20 \ -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D5242880 \ -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmemory,data-type=3Dacces= s-latency,latency=3D10 \ -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D10485760 \ -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmemory,data-type=3Dacces= s-latency,latency=3D30 \ -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmemory,data-type=3Dacces= s-bandwidth,bandwidth=3D1048576 Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-8-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test.c | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index 320b828af5..4cc1da1467 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -1543,6 +1543,63 @@ static void test_acpi_piix4_tcg_acpi_hmat(void) test_acpi_tcg_acpi_hmat(MACHINE_PC); } =20 +static void test_acpi_virt_tcg_acpi_hmat(void) +{ + test_data data =3D { + .machine =3D "virt", + .tcg_only =3D true, + .uefi_fl1 =3D "pc-bios/edk2-aarch64-code.fd", + .uefi_fl2 =3D "pc-bios/edk2-arm-vars.fd", + .cd =3D "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.= qcow2", + .ram_start =3D 0x40000000ULL, + .scan_len =3D 128ULL * 1024 * 1024, + }; + + data.variant =3D ".acpihmatvirt"; + + test_acpi_one(" -machine hmat=3Don" + " -cpu cortex-a57" + " -smp 4,sockets=3D2" + " -m 256M" + " -object memory-backend-ram,size=3D64M,id=3Dram0" + " -object memory-backend-ram,size=3D64M,id=3Dram1" + " -object memory-backend-ram,size=3D128M,id=3Dram2" + " -numa node,nodeid=3D0,memdev=3Dram0" + " -numa node,nodeid=3D1,memdev=3Dram1" + " -numa node,nodeid=3D2,memdev=3Dram2" + " -numa cpu,node-id=3D0,socket-id=3D0" + " -numa cpu,node-id=3D0,socket-id=3D0" + " -numa cpu,node-id=3D1,socket-id=3D1" + " -numa cpu,node-id=3D1,socket-id=3D1" + " -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D10" + " -numa hmat-lb,initiator=3D0,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D10485760" + " -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D20" + " -numa hmat-lb,initiator=3D0,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D5242880" + " -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D30" + " -numa hmat-lb,initiator=3D0,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D1048576" + " -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D20" + " -numa hmat-lb,initiator=3D1,target=3D0,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D5242880" + " -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D10" + " -numa hmat-lb,initiator=3D1,target=3D1,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D10485760" + " -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-latency,latency=3D30" + " -numa hmat-lb,initiator=3D1,target=3D2,hierarchy=3Dmem= ory," + "data-type=3Daccess-bandwidth,bandwidth=3D1048576", + &data); + + free_test_data(&data); +} + static void test_acpi_q35_tcg_acpi_hmat_noinitiator(void) { test_data data; @@ -1998,6 +2055,8 @@ int main(int argc, char *argv[]) } else if (strcmp(arch, "aarch64") =3D=3D 0) { if (has_tcg) { qtest_add_func("acpi/virt", test_acpi_virt_tcg); + qtest_add_func("acpi/virt/acpihmatvirt", + test_acpi_virt_tcg_acpi_hmat); qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem= ); qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp); qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221855; cv=none; d=zohomail.com; s=zohoarc; b=jTuwQLpCuPBFGGjA+HNFBE0O5U/DkkLRyFYFhsUO7WynFrwn7GflgnOduRb+32nYQpixPBNXPYjorejyIR8yO7MdLaoGq+yQHrfFWun1O5VKYgGu4Ea+bre0VNPjGZka/lNhkLULiBjwXUIolB2K0hPnHJT49xjNxY5NoXpW1TA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221855; h=Content-Type: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=vUdj0IVfnJQLmwVWvIbKU+v5Q2qXZ38YJ6XMH5fP5iY=; b=DEOTropYBLNczjqiX4opnyiDBCxHdEWEi3PSZOgbWh97dOPc08AD5h+heZiQ5pRMVofnyaKBf/CNwVn6sQWRf8wjmynckCVlmOS1sRtBxdwgMzXQmmE61Zm8hK3iFEH6dlXM1qqdu7ekQBIiRXi9AVpPqmuA0t75en4fHxEoKDg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221855647975.5206484950346; Mon, 31 Oct 2022 06:10:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKD-0000I8-PA; Mon, 31 Oct 2022 08:55:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJQ-0006UU-1q for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJN-0003gO-Ij for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:43 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-504-rGmQPs8kM8G5uXVFr-7IZA-1; Mon, 31 Oct 2022 08:54:39 -0400 Received: by mail-wr1-f69.google.com with SMTP id d10-20020adfa34a000000b00236616a168bso3033828wrb.18 for ; Mon, 31 Oct 2022 05:54:39 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id m21-20020a05600c3b1500b003c6edc05159sm7456600wms.1.2022.10.31.05.54.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220880; 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: in-reply-to:in-reply-to:references:references; bh=vUdj0IVfnJQLmwVWvIbKU+v5Q2qXZ38YJ6XMH5fP5iY=; b=RjORdGUvI5ix8aGVJGIf46h299dzHZwMOnRElPHmpxUvSOf6ng5SW4lvy+ELzbTkzdg2ag jKr2uc3wAKHRazTveitOi+zH/cFT94HG44lYcjdltk/ARYYR42bLd6LXy6D9tqQQfWeCHk wxQW24PYDdc+VLw9/cUY0RtaIVq9iaU= X-MC-Unique: rGmQPs8kM8G5uXVFr-7IZA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vUdj0IVfnJQLmwVWvIbKU+v5Q2qXZ38YJ6XMH5fP5iY=; b=ZtC/DonsCgv7yPxvMCAhyKpwzhhepHBwDQyTLHlXYxnI8lG6ZnJxunr7hdQv3VoY3Y Il9+d9a1ZGnsIGQZEbob7YYWVCDpDD0jTL/dEb0ZoUhyeH/HakIF3hkMs1bm0a8A6h2C 6cLKkmE0mWVbUcR470cxkfNdCyNdA4IuZEwc0BqIrKLAMGWw0ZeWxlmR0kes+UMrsTGa u3UOiak7xpxKb1qA6D+GLTugicCDoAFGQ1iHNm9UHOSPFPLkQDAhE32DKPF+R1HvtFSB hY0/OOiN01TozlLkuWZ1WZjBTqHnvvrCyEK0XSTdfPrTmcDrJnmGfgysDrBkVwjCbdQ/ mwwA== X-Gm-Message-State: ACrzQf2dFxyNVHqa+BCB8oGjckxrKwQhxHXdjH3/S3H/hMTWc7ylwI/u gElSWgpK1ipcFqyEnz3CJ9SXaUv2iL0Efqffwrrmp0Gbglua7FRwIK0TB6dF1i26bDgTrVPdqWK 0hmPQX/Bq90Z0rO1vIJTbSyW+NoYMHHO5aoGBIzfktdCZMjNRTC6PvCTGOBDA X-Received: by 2002:a05:6000:1242:b0:236:b640:24de with SMTP id j2-20020a056000124200b00236b64024demr6588995wrx.139.1667220877899; Mon, 31 Oct 2022 05:54:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4Yxk+4h/7s8xWjTL7xUrKcmJurIFOGGOAq36RDocjCOzAqO9HnCCvhqYKn95LDDFU3Q0kyYQ== X-Received: by 2002:a05:6000:1242:b0:236:b640:24de with SMTP id j2-20020a056000124200b00236b64024demr6588941wrx.139.1667220877433; Mon, 31 Oct 2022 05:54:37 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:34 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Hesham Almatary , Yicong Yang , Igor Mammedov , Ani Sinha Subject: [PULL 81/86] tests: virt: Update expected *.acpihmatvirt tables Message-ID: <20221031124928.128475-82-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221878498100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hesham Almatary * Expected ACPI Data Table [HMAT] [000h 0000 4] Signature : "HMAT" [Heterogeneous Memory Attributes Table] [004h 0004 4] Table Length : 00000120 [008h 0008 1] Revision : 02 [009h 0009 1] Checksum : 4F [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 [01Ch 0028 4] Asl Compiler ID : "BXPC" [020h 0032 4] Asl Compiler Revision : 00000001 [024h 0036 4] Reserved : 00000000 [028h 0040 2] Structure Type : 0000 [Memory Proximity Domain Attributes] [02Ah 0042 2] Reserved : 0000 [02Ch 0044 4] Length : 00000028 [030h 0048 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [032h 0050 2] Reserved1 : 0000 [034h 0052 4] Processor Proximity Domain : 00000000 [038h 0056 4] Memory Proximity Domain : 00000000 [03Ch 0060 4] Reserved2 : 00000000 [040h 0064 8] Reserved3 : 0000000000000000 [048h 0072 8] Reserved4 : 0000000000000000 [050h 0080 2] Structure Type : 0000 [Memory Proximity Domain Attributes] [052h 0082 2] Reserved : 0000 [054h 0084 4] Length : 00000028 [058h 0088 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [05Ah 0090 2] Reserved1 : 0000 [05Ch 0092 4] Processor Proximity Domain : 00000001 [060h 0096 4] Memory Proximity Domain : 00000001 [064h 0100 4] Reserved2 : 00000000 [068h 0104 8] Reserved3 : 0000000000000000 [070h 0112 8] Reserved4 : 0000000000000000 [078h 0120 2] Structure Type : 0000 [Memory Proximity Domain Attributes] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000028 [080h 0128 2] Flags (decoded below) : 0000 Processor Proximity Domain Valid : 0 [082h 0130 2] Reserved1 : 0000 [084h 0132 4] Processor Proximity Domain : 00000080 [088h 0136 4] Memory Proximity Domain : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [040h 0064 8] Reserved3 : 0000000000000000 [048h 0072 8] Reserved4 : 0000000000000000 [050h 0080 2] Structure Type : 0000 [Memory Proximity Domain Attributes] [052h 0082 2] Reserved : 0000 [054h 0084 4] Length : 00000028 [058h 0088 2] Flags (decoded below) : 0001 Processor Proximity Domain Valid : 1 [05Ah 0090 2] Reserved1 : 0000 [05Ch 0092 4] Processor Proximity Domain : 00000001 [060h 0096 4] Memory Proximity Domain : 00000001 [064h 0100 4] Reserved2 : 00000000 [068h 0104 8] Reserved3 : 0000000000000000 [070h 0112 8] Reserved4 : 0000000000000000 [078h 0120 2] Structure Type : 0000 [Memory Proximity Domain Attributes] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000028 [080h 0128 2] Flags (decoded below) : 0000 Processor Proximity Domain Valid : 0 [082h 0130 2] Reserved1 : 0000 [084h 0132 4] Processor Proximity Domain : 00000080 [088h 0136 4] Memory Proximity Domain : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [090h 0144 8] Reserved3 : 0000000000000000 [098h 0152 8] Reserved4 : 0000000000000000 [0A0h 0160 2] Structure Type : 0001 [System Locality Latency and Bandwidth Information] [0A2h 0162 2] Reserved : 0000 [0A4h 0164 4] Length : 00000040 [0A8h 0168 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0A9h 0169 1] Data Type : 00 [0AAh 0170 2] Reserved1 : 0000 [0ACh 0172 4] Initiator Proximity Domains # : 00000002 [0B0h 0176 4] Target Proximity Domains # : 00000003 [0B4h 0180 4] Reserved2 : 00000000 [0B8h 0184 8] Entry Base Unit : 0000000000002710 [0C0h 0192 4] Initiator Proximity Domain List : 00000000 [0C4h 0196 4] Initiator Proximity Domain List : 00000001 [0C8h 0200 4] Target Proximity Domain List : 00000000 [0CCh 0204 4] Target Proximity Domain List : 00000001 [0D0h 0208 4] Target Proximity Domain List : 00000002 [0D4h 0212 2] Entry : 0001 [0D6h 0214 2] Entry : 0002 [0D8h 0216 2] Entry : 0003 [0DAh 0218 2] Entry : 0002 [0DCh 0220 2] Entry : 0001 [0DEh 0222 2] Entry : 0003 [0E0h 0224 2] Structure Type : 0001 [System Locality Latency and Bandwidth Information] [0E2h 0226 2] Reserved : 0000 [0E4h 0228 4] Length : 00000040 [0E8h 0232 1] Flags (decoded below) : 00 Memory Hierarchy : 0 [0E9h 0233 1] Data Type : 03 [0EAh 0234 2] Reserved1 : 0000 [0ECh 0236 4] Initiator Proximity Domains # : 00000002 [0F0h 0240 4] Target Proximity Domains # : 00000003 [0F4h 0244 4] Reserved2 : 00000000 [0F8h 0248 8] Entry Base Unit : 0000000000000001 [100h 0256 4] Initiator Proximity Domain List : 00000000 [104h 0260 4] Initiator Proximity Domain List : 00000001 [108h 0264 4] Target Proximity Domain List : 00000000 [10Ch 0268 4] Target Proximity Domain List : 00000001 [110h 0272 4] Target Proximity Domain List : 00000002 [114h 0276 2] Entry : 000A [116h 0278 2] Entry : 0005 [118h 0280 2] Entry : 0001 [11Ah 0282 2] Entry : 0005 [11Ch 0284 2] Entry : 000A [11Eh 0286 2] Entry : 0001 Raw Table Data: Length 288 (0x120) 0000: 48 4D 41 54 20 01 00 00 02 4F 42 4F 43 48 53 20 // HMAT ....OBOCHS 0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....BXPC 0020: 01 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(... 0030: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ 0050: 00 00 00 00 28 00 00 00 01 00 00 00 01 00 00 00 // ....(........... 0060: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ 0070: 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 // ............(... 0080: 00 00 00 00 80 00 00 00 02 00 00 00 00 00 00 00 // ................ 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ 00A0: 01 00 00 00 40 00 00 00 00 00 00 00 02 00 00 00 // ....@........... 00B0: 03 00 00 00 00 00 00 00 10 27 00 00 00 00 00 00 // .........'...... 00C0: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // ................ 00D0: 02 00 00 00 01 00 02 00 03 00 02 00 01 00 03 00 // ................ 00E0: 01 00 00 00 40 00 00 00 00 03 00 00 02 00 00 00 // ....@........... 00F0: 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 // ................ 0100: 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 // ................ 0110: 02 00 00 00 0A 00 05 00 01 00 05 00 0A 00 01 00 // ................ Signed-off-by: Hesham Almatary Message-Id: <20221027100037.251-9-hesham.almatary@huawei.com> Tested-by: Yicong Yang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 5 ----- tests/data/acpi/virt/APIC.acpihmatvirt | Bin 0 -> 396 bytes tests/data/acpi/virt/DSDT.acpihmatvirt | Bin 0 -> 5282 bytes tests/data/acpi/virt/HMAT.acpihmatvirt | Bin 0 -> 288 bytes tests/data/acpi/virt/PPTT.acpihmatvirt | Bin 0 -> 196 bytes tests/data/acpi/virt/SRAT.acpihmatvirt | Bin 0 -> 240 bytes 6 files changed, 5 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 4f849715bd..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,6 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/virt/APIC.acpihmatvirt", -"tests/data/acpi/virt/DSDT.acpihmatvirt", -"tests/data/acpi/virt/HMAT.acpihmatvirt", -"tests/data/acpi/virt/PPTT.acpihmatvirt", -"tests/data/acpi/virt/SRAT.acpihmatvirt", diff --git a/tests/data/acpi/virt/APIC.acpihmatvirt b/tests/data/acpi/virt/= APIC.acpihmatvirt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..873e12f67c3838351a3ab4b7a43= ee76e7730849a 100644 GIT binary patch literal 396 zcmZ<^@O18BWME)kGD%s#!2MfXo894}@W2q?!fN3j!dsn1M71lWP`8 TF9`6$!;uLb4j}U!7y=3DjoChH0T literal 0 HcmV?d00001 diff --git a/tests/data/acpi/virt/DSDT.acpihmatvirt b/tests/data/acpi/virt/= DSDT.acpihmatvirt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aee6ba017cd730948bfa93e9155= 1eb10a6809293 100644 GIT binary patch literal 5282 zcmZvg%WoT16o>EFlh__VVmr?J;S@^6vl`n?la{u`9y^IkoET5iAUTpNArK{-N>oUt zLJCD*Gs*9?XQYhh%)RHE`;Cv|<7xWM-JeTJ z#SR)f-lo6Q_^|6O(Pk;7^s#=3D;f4^ZJ4E)BRe?05CuA3Zewwu|y*KJdS;>pWu{bKsqaRW zWnH4^F|BBIecxL*;161zJz8y*a{b-9lcr>^ZW%u zu9+M80>hRVNnl(<#0#5|#QSFy2LmT&Edn9n-+Lg$%h)vl3$# z7`Krj*J(~-%md>NGUPfPlNgJ@cn=3DwJo#rLR5-`?~A=3Dha^V!Q&3Ix^%sElP~bz-S;t zuG4XeaRnG2FsgE$mL$gOz-S^vuG0yL@g^`@$dK!FQewOfjCEwlbvh+6t^#8N8FHOY zOAHqno5+ysbVg!Sfzd{WT&J@V;~FsTB15jzIf-!{81ExPuG4vmu?mbWWXN^8ATe$N zqXUeZT&If?;}$Tsks;Sw=3DDW&MZS}EQQZD^9>F5jfKz&57N<)IiqubjZ-}>A+DyHr9aHux?wyVss zMaLCY%;@t@jDl(u#3`t$V%E+KhnCVgG%t*F7ER2Vu^^A8Mxo9melVB1Br`XRbY?V_ zS|EKzni^zMs57Ih#DmOe1#zV_qp5L|NmGMN3Uwx}D7cCpWJW8ngUo0uwM?O9kVzqW zjxf)WAT#nDF`3cgDMZgv=3D1EN{ttXmFEf#uGh@J`NnP8p??nxnfCYfiFc~VP;o)n^I zig{8yZSG!hOH$mELiBW)r^7s{g+osY(KF3F)66r?Jt;)b4D-w|PipzllS1^&GS4jY z%yLf((KE+9bIg-kMD(N(J;#{m81o$Co)n@d{hTp19#nCjc~VP>o)n^Ifq52~XMuZC zh@M5}S!ABnf}$sd=3DsC_j$C>9i_oNU#>E|bSmY65CtmsK0dQLFU3FbM$Jt;)bN#;4p zJgLP+PYTgx#fK=3DR#H~KkyoLbw>X~ zRep_j=3D5}l*oJZegRgC_f(>ByQ>l^xXWvIIdw)}ATpZ-}!+wdxlSQ+X8%tlQMZ9^Kh z)U&rBCm24`V|ojsi=3D96ISS9_vZdWC}-QJcet)~V%zGpu>R9kxA31(ML zC!e20^UUeI9(<@L>+@%aKjqAMeUZx9VdT?A)L9{JS$angx;l2R<+Ezk54v>C)g1Sw`xCqeba%>Y7q>PzVzO{N^X|8-i2UdwN7EtM7qt$Vwv hhdQ`_nm>7R-_iZv)9!w+;T-jkXY>Jno;-6c^*?7DCOrTE literal 0 HcmV?d00001 diff --git a/tests/data/acpi/virt/HMAT.acpihmatvirt b/tests/data/acpi/virt/= HMAT.acpihmatvirt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6494d11b9fff54f8c403ec9e489= 3fdff72bde9c9 100644 GIT binary patch literal 288 zcmaJ)F%Ezr5IZ0&Og@24pP{g@7)*5VIX>Ms;S4dxCU-4Odz5uKq7kt*)m-+N&Mij( zmQa%w6GZ=3D3|IM0X_Ak#IabYaQ2iTvR&x~t&7@Gj;A7o|>w!;|gr;lRa*AB0!)_xEV I&r86*0dKzu0RR91 literal 0 HcmV?d00001 diff --git a/tests/data/acpi/virt/PPTT.acpihmatvirt b/tests/data/acpi/virt/= PPTT.acpihmatvirt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..710dba5e793cf36df94087666db= 58af5f8d03684 100644 GIT binary patch literal 196 zcmWFt2njjDz`(#X&&l7}BUr&HBEVSz2pEB4AU23*5Mf{d(;zks0L4H+1wuhcpcogB gWr0HsZU&Nh$YLOEC0O)!0L7SK;!rz4V$4u60KkX}0RR91 literal 0 HcmV?d00001 diff --git a/tests/data/acpi/virt/SRAT.acpihmatvirt b/tests/data/acpi/virt/= SRAT.acpihmatvirt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..691ef56e34bc84509270db316d9= 08f5979c209bb 100644 GIT binary patch literal 240 zcmWFzat!&vz`($~%E{l^BUr&HBEVSz2pEB4AU22wVHjW*g0Wzt5D{c`%t9a@6A&ZR rfLP2(B8(b94g@$rX%;9A*9GD;YQW53aKWz*WFHuKKxqyrjba`E3*rd@ literal 0 HcmV?d00001 --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221190; cv=none; d=zohomail.com; s=zohoarc; b=ZRUdnANVmvod8HlS9qEFbimr6BnhWh8zFxKR6jl1dc9faypJa0k9YtLVOE5PMOr9MtMsQKqq6z/p4hs6jMinPjqdqm78IDc6j7diuxEdKRczrfJKfEs9VwNxDq2nQQggu2atEq/Aul2l6rld8JeIRGRxcoRhWTlFjweAMf0iero= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221190; h=Content-Type: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=IfL6SHmg5dVVmYdI1zEg58udLmK7Hd47WwrnWpDNWrs=; b=SwREHxZ8fTcEqhUxWPVsj4Rono5HQbmyqus4Lt/sO8kdn4p2vGe6S3mQihyk3SlOX61fNOwrdNwaHv+qsvg38G1zhntFxj1i95JkW9csINEh4p98wJL6Wbl5jZKtRJfGDBoxpxXYmlW5ue3IMHnfYL7cS+BN1hTVQr6YgHuCiNQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221190522246.5479190115783; Mon, 31 Oct 2022 05:59:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKG-0000VV-4L; Mon, 31 Oct 2022 08:55:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJT-0006sE-Hi for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJR-0003h4-IL for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:47 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-610-YuGW96_hOfGZk9bNRq0XYQ-1; Mon, 31 Oct 2022 08:54:43 -0400 Received: by mail-wm1-f69.google.com with SMTP id t20-20020a7bc3d4000000b003c6bfea856aso2576547wmj.1 for ; Mon, 31 Oct 2022 05:54:43 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id ay16-20020a05600c1e1000b003cf537ec2efsm8228808wmb.36.2022.10.31.05.54.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220884; 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: in-reply-to:in-reply-to:references:references; bh=IfL6SHmg5dVVmYdI1zEg58udLmK7Hd47WwrnWpDNWrs=; b=RVhBqp0UdDglLsKiy1aUL5E9RGt0DYbshwN6nUqv46dd1paxZz20YBRTFuMIjE5V+aysma ALq/RtvceAB3dtM0FiV7HwaE1cJArs3kek2XmrIJrNecHTBpVV8TzwI/RAXZgSoKBWFN7a LoZyE0wtd64LskaasufvY1doDes6Xvo= X-MC-Unique: YuGW96_hOfGZk9bNRq0XYQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=IfL6SHmg5dVVmYdI1zEg58udLmK7Hd47WwrnWpDNWrs=; b=zLHnz5gpE5GFz899RyORoBSPYoLAfOGGBpsBg8xMD87KXPW7IBQp1yNKTAPoNy1K9V KnJ8AN61pYu0+RB4O+fYpbIU1fXjI0ZL3VxuCWyyoSoArcX9EhohEQ0ZNaKH7+bPxL3f 7aBcKkS8ND873Rwe6pZ9TLwxayixCdQYiilRht7FP4ijc2wjq5Q/OvxB/RVGAex7LCxw hfHJ1/GhjL2t0PAVLISr/XHhGf2cXpO6lu/Sj1g8GFEpUawxfxtt9XnhTAvvW8fRGcht bvDm9MQ49ect1qeo3Yo3NVQ+UP6CXvpbiL++ENeBRsXFQOkHjAomgI3rbLe5vlGRGT8y 9vAA== X-Gm-Message-State: ACrzQf10+ms1m0qRMQnahK+mjY9IVHxhQA2lB/MlxvT0z2Ie1zMbtmND fxlYtDo5/ua5W8O5xzE8viUxZY1YTtqu5okgAiYum4qkIOn+mCg4IBGNEtSozS9ueoqnXBfY1Iv v8xL4f08Xo1N9vUdjjKJ1uI8XqcviT0SzCYzG99cp5ELgq9f1lbmyuj9MrX4b X-Received: by 2002:a05:600c:4e0e:b0:3c6:f5b9:957a with SMTP id b14-20020a05600c4e0e00b003c6f5b9957amr8106353wmq.45.1667220880473; Mon, 31 Oct 2022 05:54:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM43Z7n+cXABNUcpb/8YlNTS7lw8fucJXAVoNbpRebTnOVK06AzDmvVOC3/vXkg1+Cqk2SoJ7Q== X-Received: by 2002:a05:600c:4e0e:b0:3c6:f5b9:957a with SMTP id b14-20020a05600c4e0e00b003c6f5b9957amr8106324wmq.45.1667220880137; Mon, 31 Oct 2022 05:54:40 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:37 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Cindy Lu , Alex Williamson , Paolo Bonzini , Peter Xu , David Hildenbrand , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= Subject: [PULL 82/86] vfio: move implement of vfio_get_xlat_addr() to memory.c Message-ID: <20221031124928.128475-83-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221191601100002 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Cindy Lu - Move the implement vfio_get_xlat_addr to softmmu/memory.c, and change the name to memory_get_xlat_addr(). So we can use this function on other devices, such as vDPA device. - Add a new function vfio_get_xlat_addr in vfio/common.c, and it will check whether the memory is backed by a discard manager. then device can have its own warning. Signed-off-by: Cindy Lu Message-Id: <20221031031020.1405111-2-lulu@redhat.com> Acked-by: Alex Williamson Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- include/exec/memory.h | 4 +++ hw/vfio/common.c | 66 +++------------------------------------ softmmu/memory.c | 72 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 61 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index bfb1de8eea..d1e79c39dc 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -713,6 +713,10 @@ void ram_discard_manager_register_listener(RamDiscardM= anager *rdm, void ram_discard_manager_unregister_listener(RamDiscardManager *rdm, RamDiscardListener *rdl); =20 +bool memory_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, + ram_addr_t *ram_addr, bool *read_only, + bool *mr_has_discard_manager); + typedef struct CoalescedMemoryRange CoalescedMemoryRange; typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd; =20 diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 6b5d8c0bf6..130e5d1dc7 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -578,45 +578,11 @@ static bool vfio_listener_skipped_section(MemoryRegio= nSection *section) static bool vfio_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, ram_addr_t *ram_addr, bool *read_only) { - MemoryRegion *mr; - hwaddr xlat; - hwaddr len =3D iotlb->addr_mask + 1; - bool writable =3D iotlb->perm & IOMMU_WO; - - /* - * The IOMMU TLB entry we have just covers translation through - * this IOMMU to its immediate target. We need to translate - * it the rest of the way through to memory. - */ - mr =3D address_space_translate(&address_space_memory, - iotlb->translated_addr, - &xlat, &len, writable, - MEMTXATTRS_UNSPECIFIED); - if (!memory_region_is_ram(mr)) { - error_report("iommu map to non memory area %"HWADDR_PRIx"", - xlat); - return false; - } else if (memory_region_has_ram_discard_manager(mr)) { - RamDiscardManager *rdm =3D memory_region_get_ram_discard_manager(m= r); - MemoryRegionSection tmp =3D { - .mr =3D mr, - .offset_within_region =3D xlat, - .size =3D int128_make64(len), - }; - - /* - * Malicious VMs can map memory into the IOMMU, which is expected - * to remain discarded. vfio will pin all pages, populating memory. - * Disallow that. vmstate priorities make sure any RamDiscardManag= er - * were already restored before IOMMUs are restored. - */ - if (!ram_discard_manager_is_populated(rdm, &tmp)) { - error_report("iommu map to discarded memory (e.g., unplugged v= ia" - " virtio-mem): %"HWADDR_PRIx"", - iotlb->translated_addr); - return false; - } + bool ret, mr_has_discard_manager; =20 + ret =3D memory_get_xlat_addr(iotlb, vaddr, ram_addr, read_only, + &mr_has_discard_manager); + if (ret && mr_has_discard_manager) { /* * Malicious VMs might trigger discarding of IOMMU-mapped memory. = The * pages will remain pinned inside vfio until unmapped, resulting = in a @@ -635,29 +601,7 @@ static bool vfio_get_xlat_addr(IOMMUTLBEntry *iotlb, v= oid **vaddr, " intended via an IOMMU. It's possible to mitigat= e " " by setting/adjusting RLIMIT_MEMLOCK."); } - - /* - * Translation truncates length to the IOMMU page size, - * check that it did not truncate too much. - */ - if (len & iotlb->addr_mask) { - error_report("iommu has granularity incompatible with target AS"); - return false; - } - - if (vaddr) { - *vaddr =3D memory_region_get_ram_ptr(mr) + xlat; - } - - if (ram_addr) { - *ram_addr =3D memory_region_get_ram_addr(mr) + xlat; - } - - if (read_only) { - *read_only =3D !writable || mr->readonly; - } - - return true; + return ret; } =20 static void vfio_iommu_map_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotlb) diff --git a/softmmu/memory.c b/softmmu/memory.c index 7ba2048836..bc0be3f62c 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -33,6 +33,7 @@ #include "qemu/accel.h" #include "hw/boards.h" #include "migration/vmstate.h" +#include "exec/address-spaces.h" =20 //#define DEBUG_UNASSIGNED =20 @@ -2121,6 +2122,77 @@ void ram_discard_manager_unregister_listener(RamDisc= ardManager *rdm, rdmc->unregister_listener(rdm, rdl); } =20 +/* Called with rcu_read_lock held. */ +bool memory_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, + ram_addr_t *ram_addr, bool *read_only, + bool *mr_has_discard_manager) +{ + MemoryRegion *mr; + hwaddr xlat; + hwaddr len =3D iotlb->addr_mask + 1; + bool writable =3D iotlb->perm & IOMMU_WO; + + if (mr_has_discard_manager) { + *mr_has_discard_manager =3D false; + } + /* + * The IOMMU TLB entry we have just covers translation through + * this IOMMU to its immediate target. We need to translate + * it the rest of the way through to memory. + */ + mr =3D address_space_translate(&address_space_memory, iotlb->translate= d_addr, + &xlat, &len, writable, MEMTXATTRS_UNSPECI= FIED); + if (!memory_region_is_ram(mr)) { + error_report("iommu map to non memory area %" HWADDR_PRIx "", xlat= ); + return false; + } else if (memory_region_has_ram_discard_manager(mr)) { + RamDiscardManager *rdm =3D memory_region_get_ram_discard_manager(m= r); + MemoryRegionSection tmp =3D { + .mr =3D mr, + .offset_within_region =3D xlat, + .size =3D int128_make64(len), + }; + if (mr_has_discard_manager) { + *mr_has_discard_manager =3D true; + } + /* + * Malicious VMs can map memory into the IOMMU, which is expected + * to remain discarded. vfio will pin all pages, populating memory. + * Disallow that. vmstate priorities make sure any RamDiscardManag= er + * were already restored before IOMMUs are restored. + */ + if (!ram_discard_manager_is_populated(rdm, &tmp)) { + error_report("iommu map to discarded memory (e.g., unplugged v= ia" + " virtio-mem): %" HWADDR_PRIx "", + iotlb->translated_addr); + return false; + } + } + + /* + * Translation truncates length to the IOMMU page size, + * check that it did not truncate too much. + */ + if (len & iotlb->addr_mask) { + error_report("iommu has granularity incompatible with target AS"); + return false; + } + + if (vaddr) { + *vaddr =3D memory_region_get_ram_ptr(mr) + xlat; + } + + if (ram_addr) { + *ram_addr =3D memory_region_get_ram_addr(mr) + xlat; + } + + if (read_only) { + *read_only =3D !writable || mr->readonly; + } + + return true; +} + void memory_region_set_log(MemoryRegion *mr, bool log, unsigned client) { uint8_t mask =3D 1 << client; --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221857; cv=none; d=zohomail.com; s=zohoarc; b=g74X610ECad3XxJcCJzXJ6n3EvD71sQVyXYxFvQeyxlEUtLMZBz2ZAlRkumAC8wLWWUhKbrpi9tnk7FMfcD6IkKU/z6EyC43Bf9YHYDfvmASHgvB9PRVWuoH8OQvt4nIzwIdmtZlF91YIejx68vat4tNPOEL2u1Fh8nQBLcV3PI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221857; h=Content-Type: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=OfVKZLKpfkjYRt7QQ5s2jmkYW3qMCFNgmh3cfyEVChE=; b=NlK0XdRYbjUrxBA3MpCFysYqSeigsuXdjVCGnSVICBlw90wJ6pXbUka8b8RfmcG1FOs4yw1F/oTQUIlh6D4B5h3to/j6S1LxHclmTMLWkf9+aUY+Vv13XbQAF6sPtEnaS/349LH0BVDVgxGt+znhimq5DB/k2mYWLVoWWrrVeaQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221857520828.268006542444; Mon, 31 Oct 2022 06:10:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKI-0000jb-FC; Mon, 31 Oct 2022 08:55:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJT-0006ut-Ud for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJS-0003hO-88 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:47 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-590-dbgHnMIyNwKanX4LD4cYng-1; Mon, 31 Oct 2022 08:54:44 -0400 Received: by mail-wm1-f72.google.com with SMTP id h204-20020a1c21d5000000b003cf4e055442so5270432wmh.1 for ; Mon, 31 Oct 2022 05:54:44 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id r10-20020a05600c35ca00b003c6f1732f65sm4940953wmq.38.2022.10.31.05.54.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220885; 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: in-reply-to:in-reply-to:references:references; bh=OfVKZLKpfkjYRt7QQ5s2jmkYW3qMCFNgmh3cfyEVChE=; b=bLc/8KjWin0enIoxjluHdCNP6/1iLhGA/xcvDk2oaTGod/S+rEOfitqtisZ3K3+09dsCYm 33z2tOfF+z104yrjA15klLDwN4jPglGchlcXeQeXKynqCX5x8acHr09hU8CT+GbCDV8kFX u3XdEdh3YKsJWAFxFbE7dsUDAjRQT3I= X-MC-Unique: dbgHnMIyNwKanX4LD4cYng-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=OfVKZLKpfkjYRt7QQ5s2jmkYW3qMCFNgmh3cfyEVChE=; b=4dMznOOTw1zghBCC+7glip3OKzOpBvSc4UFjkQ0of+RBS+tkcmRANKB/O3POSKngZM R5KagJhrYeGE5GB7kiks76A5Q+F7Uy5WkqJkFO8pWWuUEBPLwEruh5x/J2whPp+SdDQ8 DI9VonRfjU+jY3kmn6PbWExQqApl15GW5yYJmNnAQHHocgSoXpwA43bGUEh1HbOeVgiB BI2Y9KqWs+psHojhzpxY7pIZ5JCl2LRZAir5hQBY0B7msKk6I8KQcMdhERzVWnLPKTU0 Gzil7YAN2wq0Fk8ncU29nbLUyoBDpdA1R1P6vEEIeCBD6LgRXZyinlBr3QpTIMCsHo4L s9iA== X-Gm-Message-State: ACrzQf3+OpvzgWokJWffVUa7F2K1WfsNFseKHhasDjNLi8qJv5+dvdCf Jw+9cjaxYPGR7X9ZRDdIT3OvoLon5Ov1u1FzWxY0TrVDaXnULBFEQ+sW90SJvBVREUEYAmM3TsU /JNM+ya5qWTpb7x6uoIqIGLw9dancGsRDBBidlt9qZONRgHO0Dp84K6SLnrEe X-Received: by 2002:a7b:cb56:0:b0:3b3:4ad8:9e31 with SMTP id v22-20020a7bcb56000000b003b34ad89e31mr7976760wmj.87.1667220883353; Mon, 31 Oct 2022 05:54:43 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4V8s6Du9nvg+zf3lrAD0B8n1pXu5Qow/f2oZJVOSUPtJhbYDaGeCGjSQwr1hsUf/citoMtCw== X-Received: by 2002:a7b:cb56:0:b0:3b3:4ad8:9e31 with SMTP id v22-20020a7bcb56000000b003b34ad89e31mr7976734wmj.87.1667220883101; Mon, 31 Oct 2022 05:54:43 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:40 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jason Wang , Peter Xu , Yi Liu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 83/86] intel-iommu: don't warn guest errors when getting rid2pasid entry Message-ID: <20221031124928.128475-84-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221858658100003 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Wang We use to warn on wrong rid2pasid entry. But this error could be triggered by the guest and could happens during initialization. So let's don't warn in this case. Reviewed-by: Peter Xu Signed-off-by: Jason Wang Message-Id: <20221028061436.30093-2-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Yi Liu --- hw/i386/intel_iommu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 6524c2ee32..271de995be 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1554,8 +1554,10 @@ static bool vtd_dev_pt_enabled(IntelIOMMUState *s, V= TDContextEntry *ce) if (s->root_scalable) { ret =3D vtd_ce_get_rid2pasid_entry(s, ce, &pe); if (ret) { - error_report_once("%s: vtd_ce_get_rid2pasid_entry error: %"PRI= d32, - __func__, ret); + /* + * This error is guest triggerable. We should assumt PT + * not enabled for safety. + */ return false; } return (VTD_PE_GET_TYPE(&pe) =3D=3D VTD_SM_PASID_ENTRY_PT); @@ -1569,14 +1571,12 @@ static bool vtd_as_pt_enabled(VTDAddressSpace *as) { IntelIOMMUState *s; VTDContextEntry ce; - int ret; =20 assert(as); =20 s =3D as->iommu_state; - ret =3D vtd_dev_to_context_entry(s, pci_bus_num(as->bus), - as->devfn, &ce); - if (ret) { + if (vtd_dev_to_context_entry(s, pci_bus_num(as->bus), as->devfn, + &ce)) { /* * Possibly failed to parse the context entry for some reason * (e.g., during init, or any guest configuration errors on --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667221273; cv=none; d=zohomail.com; s=zohoarc; b=XU/wha6Z/65tpGgFp6fC6cwkTkR4U265WmivXNSrsWS/C1Eyqg5uT++STWnN/2QjKeeJUNx7IJKF2Af+S2mf5KOyJfOt5gEBxgdOl9lPNJTtcGzKb8DN8BEejLG/OmspEmFyjpvGVWIm8N3C6GDMMXRL/yV6MC9kqlZRZ+kdJH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667221273; h=Content-Type: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=b7tBODySCSVS0cvFan2OucwmNA/UHr9T82r+sfnQz3c=; b=ATgQA0y5pLgGZIIRfIp/RH32Z77AfBCb6fR5ni9o4WBTGNSEuc8kAbxsY4R8N6F71RBgyxDnIyVoGQbeR746U7PEzbXB1iTXxYWr8dv0K1ldCuAX0uulpw1u5Vf2NezdxcD9rwB9pi5JhLxKocCrFLreZPbMzihMMJ952HrsXHA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667221273097127.18991544931998; Mon, 31 Oct 2022 06:01:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKJ-0000tv-Na; Mon, 31 Oct 2022 08:55:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJZ-00073W-J9 for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJX-0003j1-7r for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:54:53 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-452-oa4bTgopPX6EMEIJx2NPQQ-1; Mon, 31 Oct 2022 08:54:48 -0400 Received: by mail-wm1-f72.google.com with SMTP id v23-20020a1cf717000000b003bff630f31aso2572169wmh.5 for ; Mon, 31 Oct 2022 05:54:48 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id m62-20020a1c2641000000b003cf47556f21sm7191820wmm.2.2022.10.31.05.54.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220890; 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: in-reply-to:in-reply-to:references:references; bh=b7tBODySCSVS0cvFan2OucwmNA/UHr9T82r+sfnQz3c=; b=AgIvEmpB3URMKyN3Mz3Z7e2MeGNgdeHw25MYBmwK8LLxg+6pcoNAXwpelR1d3wyQzZASY6 hni7IEuBxF+hIzItuj/SOdB+Dzu0DlGui0Wiqw/lG8uYx3igMVWgNRDxx9L3WkpUGjIzHx UW+JF3XZq/jb/RC9H9KCiUQja2a9t7o= X-MC-Unique: oa4bTgopPX6EMEIJx2NPQQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=b7tBODySCSVS0cvFan2OucwmNA/UHr9T82r+sfnQz3c=; b=vtio/65YrKw6scBavsuNBNF364jhndYthl6UohmIF0tJOcpbeEMRM/pYWTBMbcilk8 j9tCcr943GCx0Ry/zpqaFc2vWgWO+BD44ytphUgFiAuOxA3Sk4N6whPRms52nsysfr0Q Dja0wWxRv9H881EYZ+Nq+M+QPylR53GtAvyz1V4WxrwH3CVKjKgx6uRih+06+lg8PMRF PMyGWo+l0EiKy3OvruHD9Mpn51lOtIHzTo4pE34+cI4ju87iK9D3juq6t2VO47uKNedc 9mVdPmGSfAlSvz51PqeLn02V7lavis55oq+Y3/Un79WRSmNuMTnLf6ytvej69X0g44kH R3Sw== X-Gm-Message-State: ACrzQf1k0NGGUcJ6Vsm37X+8Ub8XeEXbdD255EMlmsGpX8qZwDcyAm/O P2+vYcBJ+NJADsNyqmq2r1c1EyWZDDn7x2AXuwumh7x+Wxo9+JmUy4sWmH7iNdvtKB7hh/UR7wr tjRTnLb9rGNacjHx9TIn8te6eJVGhuRHY0ZKBiO45vUSm9qHFbYpnBpx9svtb X-Received: by 2002:a5d:4306:0:b0:236:c907:76f7 with SMTP id h6-20020a5d4306000000b00236c90776f7mr3925672wrq.130.1667220886850; Mon, 31 Oct 2022 05:54:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6lTDztAMU/kZZMLN+I8MJf4mR3c6EIejZGjn9ZWfxSzbHRcIYxb9hM71uic8aykPvDOySJ7Q== X-Received: by 2002:a5d:4306:0:b0:236:c907:76f7 with SMTP id h6-20020a5d4306000000b00236c90776f7mr3925654wrq.130.1667220886503; Mon, 31 Oct 2022 05:54:46 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:43 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jason Wang , Peter Xu , Yi Liu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 84/86] intel-iommu: drop VTDBus Message-ID: <20221031124928.128475-85-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667221274249100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Wang We introduce VTDBus structure as an intermediate step for searching the address space. This works well with SID based matching/lookup. But when we want to support SID plus PASID based address space lookup, this intermediate steps turns out to be a burden. So the patch simply drops the VTDBus structure and use the PCIBus and devfn as the key for the g_hash_table(). This simplifies the codes and the future PASID extension. To prevent being slower for past vtd_find_as_from_bus_num() callers, a vtd_as cache indexed by the bus number is introduced to store the last recent search result of a vtd_as belongs to a specific bus. Reviewed-by: Peter Xu Signed-off-by: Jason Wang Message-Id: <20221028061436.30093-3-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Yi Liu --- include/hw/i386/intel_iommu.h | 11 +- hw/i386/intel_iommu.c | 234 +++++++++++++++++----------------- 2 files changed, 118 insertions(+), 127 deletions(-) diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index 67653b0f9b..e49fff2a6c 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -58,7 +58,6 @@ typedef struct VTDContextEntry VTDContextEntry; typedef struct VTDContextCacheEntry VTDContextCacheEntry; typedef struct VTDAddressSpace VTDAddressSpace; typedef struct VTDIOTLBEntry VTDIOTLBEntry; -typedef struct VTDBus VTDBus; typedef union VTD_IR_TableEntry VTD_IR_TableEntry; typedef union VTD_IR_MSIAddress VTD_IR_MSIAddress; typedef struct VTDPASIDDirEntry VTDPASIDDirEntry; @@ -111,12 +110,6 @@ struct VTDAddressSpace { IOVATree *iova_tree; /* Traces mapped IOVA ranges */ }; =20 -struct VTDBus { - PCIBus* bus; /* A reference to the bus to provide translation for */ - /* A table of VTDAddressSpace objects indexed by devfn */ - VTDAddressSpace *dev_as[]; -}; - struct VTDIOTLBEntry { uint64_t gfn; uint16_t domain_id; @@ -253,8 +246,8 @@ struct IntelIOMMUState { uint32_t context_cache_gen; /* Should be in [1,MAX] */ GHashTable *iotlb; /* IOTLB */ =20 - GHashTable *vtd_as_by_busptr; /* VTDBus objects indexed by PCIBus* r= eference */ - VTDBus *vtd_as_by_bus_num[VTD_PCI_BUS_MAX]; /* VTDBus objects indexed = by bus number */ + GHashTable *vtd_address_spaces; /* VTD address spaces */ + VTDAddressSpace *vtd_as_cache[VTD_PCI_BUS_MAX]; /* VTD address space c= ache */ /* list of registered notifiers */ QLIST_HEAD(, VTDAddressSpace) vtd_as_with_notifiers; =20 diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 271de995be..9fe5a222eb 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -61,6 +61,16 @@ } = \ } =20 +/* + * PCI bus number (or SID) is not reliable since the device is usaully + * initalized before guest can configure the PCI bridge + * (SECONDARY_BUS_NUMBER). + */ +struct vtd_as_key { + PCIBus *bus; + uint8_t devfn; +}; + static void vtd_address_space_refresh_all(IntelIOMMUState *s); static void vtd_address_space_unmap(VTDAddressSpace *as, IOMMUNotifier *n); =20 @@ -210,6 +220,27 @@ static guint vtd_uint64_hash(gconstpointer v) return (guint)*(const uint64_t *)v; } =20 +static gboolean vtd_as_equal(gconstpointer v1, gconstpointer v2) +{ + const struct vtd_as_key *key1 =3D v1; + const struct vtd_as_key *key2 =3D v2; + + return (key1->bus =3D=3D key2->bus) && (key1->devfn =3D=3D key2->devfn= ); +} + +/* + * Note that we use pointer to PCIBus as the key, so hashing/shifting + * based on the pointer value is intended. Note that we deal with + * collisions through vtd_as_equal(). + */ +static guint vtd_as_hash(gconstpointer v) +{ + const struct vtd_as_key *key =3D v; + guint value =3D (guint)(uintptr_t)key->bus; + + return (guint)(value << 8 | key->devfn); +} + static gboolean vtd_hash_remove_by_domain(gpointer key, gpointer value, gpointer user_data) { @@ -248,22 +279,14 @@ static gboolean vtd_hash_remove_by_page(gpointer key,= gpointer value, static void vtd_reset_context_cache_locked(IntelIOMMUState *s) { VTDAddressSpace *vtd_as; - VTDBus *vtd_bus; - GHashTableIter bus_it; - uint32_t devfn_it; + GHashTableIter as_it; =20 trace_vtd_context_cache_reset(); =20 - g_hash_table_iter_init(&bus_it, s->vtd_as_by_busptr); + g_hash_table_iter_init(&as_it, s->vtd_address_spaces); =20 - while (g_hash_table_iter_next (&bus_it, NULL, (void**)&vtd_bus)) { - for (devfn_it =3D 0; devfn_it < PCI_DEVFN_MAX; ++devfn_it) { - vtd_as =3D vtd_bus->dev_as[devfn_it]; - if (!vtd_as) { - continue; - } - vtd_as->context_cache_entry.context_cache_gen =3D 0; - } + while (g_hash_table_iter_next (&as_it, NULL, (void**)&vtd_as)) { + vtd_as->context_cache_entry.context_cache_gen =3D 0; } s->context_cache_gen =3D 1; } @@ -993,32 +1016,6 @@ static bool vtd_slpte_nonzero_rsvd(uint64_t slpte, ui= nt32_t level) return slpte & rsvd_mask; } =20 -/* Find the VTD address space associated with a given bus number */ -static VTDBus *vtd_find_as_from_bus_num(IntelIOMMUState *s, uint8_t bus_nu= m) -{ - VTDBus *vtd_bus =3D s->vtd_as_by_bus_num[bus_num]; - GHashTableIter iter; - - if (vtd_bus) { - return vtd_bus; - } - - /* - * Iterate over the registered buses to find the one which - * currently holds this bus number and update the bus_num - * lookup table. - */ - g_hash_table_iter_init(&iter, s->vtd_as_by_busptr); - while (g_hash_table_iter_next(&iter, NULL, (void **)&vtd_bus)) { - if (pci_bus_num(vtd_bus->bus) =3D=3D bus_num) { - s->vtd_as_by_bus_num[bus_num] =3D vtd_bus; - return vtd_bus; - } - } - - return NULL; -} - /* Given the @iova, get relevant @slptep. @slpte_level will be the last le= vel * of the translation, can be used for deciding the size of large page. */ @@ -1632,26 +1629,15 @@ static bool vtd_switch_address_space(VTDAddressSpac= e *as) =20 static void vtd_switch_address_space_all(IntelIOMMUState *s) { + VTDAddressSpace *vtd_as; GHashTableIter iter; - VTDBus *vtd_bus; - int i; =20 - g_hash_table_iter_init(&iter, s->vtd_as_by_busptr); - while (g_hash_table_iter_next(&iter, NULL, (void **)&vtd_bus)) { - for (i =3D 0; i < PCI_DEVFN_MAX; i++) { - if (!vtd_bus->dev_as[i]) { - continue; - } - vtd_switch_address_space(vtd_bus->dev_as[i]); - } + g_hash_table_iter_init(&iter, s->vtd_address_spaces); + while (g_hash_table_iter_next(&iter, NULL, (void **)&vtd_as)) { + vtd_switch_address_space(vtd_as); } } =20 -static inline uint16_t vtd_make_source_id(uint8_t bus_num, uint8_t devfn) -{ - return ((bus_num & 0xffUL) << 8) | (devfn & 0xffUL); -} - static const bool vtd_qualified_faults[] =3D { [VTD_FR_RESERVED] =3D false, [VTD_FR_ROOT_ENTRY_P] =3D false, @@ -1686,18 +1672,37 @@ static inline bool vtd_is_interrupt_addr(hwaddr add= r) return VTD_INTERRUPT_ADDR_FIRST <=3D addr && addr <=3D VTD_INTERRUPT_A= DDR_LAST; } =20 +static gboolean vtd_find_as_by_sid(gpointer key, gpointer value, + gpointer user_data) +{ + struct vtd_as_key *as_key =3D (struct vtd_as_key *)key; + uint16_t target_sid =3D *(uint16_t *)user_data; + uint16_t sid =3D PCI_BUILD_BDF(pci_bus_num(as_key->bus), as_key->devfn= ); + return sid =3D=3D target_sid; +} + +static VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) +{ + uint8_t bus_num =3D PCI_BUS_NUM(sid); + VTDAddressSpace *vtd_as =3D s->vtd_as_cache[bus_num]; + + if (vtd_as && + (sid =3D=3D PCI_BUILD_BDF(pci_bus_num(vtd_as->bus), vtd_as->devfn)= )) { + return vtd_as; + } + + vtd_as =3D g_hash_table_find(s->vtd_address_spaces, vtd_find_as_by_sid= , &sid); + s->vtd_as_cache[bus_num] =3D vtd_as; + + return vtd_as; +} + static void vtd_pt_enable_fast_path(IntelIOMMUState *s, uint16_t source_id) { - VTDBus *vtd_bus; VTDAddressSpace *vtd_as; bool success =3D false; =20 - vtd_bus =3D vtd_find_as_from_bus_num(s, VTD_SID_TO_BUS(source_id)); - if (!vtd_bus) { - goto out; - } - - vtd_as =3D vtd_bus->dev_as[VTD_SID_TO_DEVFN(source_id)]; + vtd_as =3D vtd_get_as_by_sid(s, source_id); if (!vtd_as) { goto out; } @@ -1733,7 +1738,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, VTDContextCacheEntry *cc_entry; uint64_t slpte, page_mask; uint32_t level; - uint16_t source_id =3D vtd_make_source_id(bus_num, devfn); + uint16_t source_id =3D PCI_BUILD_BDF(bus_num, devfn); int ret_fr; bool is_fpd_set =3D false; bool reads =3D true; @@ -1905,11 +1910,10 @@ static void vtd_context_device_invalidate(IntelIOMM= UState *s, uint16_t source_id, uint16_t func_mask) { + GHashTableIter as_it; uint16_t mask; - VTDBus *vtd_bus; VTDAddressSpace *vtd_as; uint8_t bus_n, devfn; - uint16_t devfn_it; =20 trace_vtd_inv_desc_cc_devices(source_id, func_mask); =20 @@ -1932,32 +1936,31 @@ static void vtd_context_device_invalidate(IntelIOMM= UState *s, mask =3D ~mask; =20 bus_n =3D VTD_SID_TO_BUS(source_id); - vtd_bus =3D vtd_find_as_from_bus_num(s, bus_n); - if (vtd_bus) { - devfn =3D VTD_SID_TO_DEVFN(source_id); - for (devfn_it =3D 0; devfn_it < PCI_DEVFN_MAX; ++devfn_it) { - vtd_as =3D vtd_bus->dev_as[devfn_it]; - if (vtd_as && ((devfn_it & mask) =3D=3D (devfn & mask))) { - trace_vtd_inv_desc_cc_device(bus_n, VTD_PCI_SLOT(devfn_it), - VTD_PCI_FUNC(devfn_it)); - vtd_iommu_lock(s); - vtd_as->context_cache_entry.context_cache_gen =3D 0; - vtd_iommu_unlock(s); - /* - * Do switch address space when needed, in case if the - * device passthrough bit is switched. - */ - vtd_switch_address_space(vtd_as); - /* - * So a device is moving out of (or moving into) a - * domain, resync the shadow page table. - * This won't bring bad even if we have no such - * notifier registered - the IOMMU notification - * framework will skip MAP notifications if that - * happened. - */ - vtd_sync_shadow_page_table(vtd_as); - } + devfn =3D VTD_SID_TO_DEVFN(source_id); + + g_hash_table_iter_init(&as_it, s->vtd_address_spaces); + while (g_hash_table_iter_next(&as_it, NULL, (void**)&vtd_as)) { + if ((pci_bus_num(vtd_as->bus) =3D=3D bus_n) && + (vtd_as->devfn & mask) =3D=3D (devfn & mask)) { + trace_vtd_inv_desc_cc_device(bus_n, VTD_PCI_SLOT(vtd_as->devfn= ), + VTD_PCI_FUNC(vtd_as->devfn)); + vtd_iommu_lock(s); + vtd_as->context_cache_entry.context_cache_gen =3D 0; + vtd_iommu_unlock(s); + /* + * Do switch address space when needed, in case if the + * device passthrough bit is switched. + */ + vtd_switch_address_space(vtd_as); + /* + * So a device is moving out of (or moving into) a + * domain, resync the shadow page table. + * This won't bring bad even if we have no such + * notifier registered - the IOMMU notification + * framework will skip MAP notifications if that + * happened. + */ + vtd_sync_shadow_page_table(vtd_as); } } } @@ -2473,18 +2476,13 @@ static bool vtd_process_device_iotlb_desc(IntelIOMM= UState *s, { VTDAddressSpace *vtd_dev_as; IOMMUTLBEvent event; - struct VTDBus *vtd_bus; hwaddr addr; uint64_t sz; uint16_t sid; - uint8_t devfn; bool size; - uint8_t bus_num; =20 addr =3D VTD_INV_DESC_DEVICE_IOTLB_ADDR(inv_desc->hi); sid =3D VTD_INV_DESC_DEVICE_IOTLB_SID(inv_desc->lo); - devfn =3D sid & 0xff; - bus_num =3D sid >> 8; size =3D VTD_INV_DESC_DEVICE_IOTLB_SIZE(inv_desc->hi); =20 if ((inv_desc->lo & VTD_INV_DESC_DEVICE_IOTLB_RSVD_LO) || @@ -2495,12 +2493,11 @@ static bool vtd_process_device_iotlb_desc(IntelIOMM= UState *s, return false; } =20 - vtd_bus =3D vtd_find_as_from_bus_num(s, bus_num); - if (!vtd_bus) { - goto done; - } - - vtd_dev_as =3D vtd_bus->dev_as[devfn]; + /* + * Using sid is OK since the guest should have finished the + * initialization of both the bus and device. + */ + vtd_dev_as =3D vtd_get_as_by_sid(s, sid); if (!vtd_dev_as) { goto done; } @@ -3427,27 +3424,27 @@ static const MemoryRegionOps vtd_mem_ir_ops =3D { =20 VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, int devf= n) { - uintptr_t key =3D (uintptr_t)bus; - VTDBus *vtd_bus =3D g_hash_table_lookup(s->vtd_as_by_busptr, &key); + /* + * We can't simply use sid here since the bus number might not be + * initialized by the guest. + */ + struct vtd_as_key key =3D { + .bus =3D bus, + .devfn =3D devfn, + }; VTDAddressSpace *vtd_dev_as; char name[128]; =20 - if (!vtd_bus) { - uintptr_t *new_key =3D g_malloc(sizeof(*new_key)); - *new_key =3D (uintptr_t)bus; - /* No corresponding free() */ - vtd_bus =3D g_malloc0(sizeof(VTDBus) + sizeof(VTDAddressSpace *) *= \ - PCI_DEVFN_MAX); - vtd_bus->bus =3D bus; - g_hash_table_insert(s->vtd_as_by_busptr, new_key, vtd_bus); - } - - vtd_dev_as =3D vtd_bus->dev_as[devfn]; - + vtd_dev_as =3D g_hash_table_lookup(s->vtd_address_spaces, &key); if (!vtd_dev_as) { + struct vtd_as_key *new_key =3D g_malloc(sizeof(*new_key)); + + new_key->bus =3D bus; + new_key->devfn =3D devfn; + snprintf(name, sizeof(name), "vtd-%02x.%x", PCI_SLOT(devfn), PCI_FUNC(devfn)); - vtd_bus->dev_as[devfn] =3D vtd_dev_as =3D g_new0(VTDAddressSpace, = 1); + vtd_dev_as =3D g_new0(VTDAddressSpace, 1); =20 vtd_dev_as->bus =3D bus; vtd_dev_as->devfn =3D (uint8_t)devfn; @@ -3503,6 +3500,8 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, = PCIBus *bus, int devfn) &vtd_dev_as->nodmar, 0); =20 vtd_switch_address_space(vtd_dev_as); + + g_hash_table_insert(s->vtd_address_spaces, new_key, vtd_dev_as); } return vtd_dev_as; } @@ -3881,7 +3880,6 @@ static void vtd_realize(DeviceState *dev, Error **err= p) =20 QLIST_INIT(&s->vtd_as_with_notifiers); qemu_mutex_init(&s->iommu_lock); - memset(s->vtd_as_by_bus_num, 0, sizeof(s->vtd_as_by_bus_num)); memory_region_init_io(&s->csrmem, OBJECT(s), &vtd_mem_ops, s, "intel_iommu", DMAR_REG_SIZE); =20 @@ -3903,8 +3901,8 @@ static void vtd_realize(DeviceState *dev, Error **err= p) /* No corresponding destroy */ s->iotlb =3D g_hash_table_new_full(vtd_uint64_hash, vtd_uint64_equal, g_free, g_free); - s->vtd_as_by_busptr =3D g_hash_table_new_full(vtd_uint64_hash, vtd_uin= t64_equal, - g_free, g_free); + s->vtd_address_spaces =3D g_hash_table_new_full(vtd_as_hash, vtd_as_eq= ual, + g_free, g_free); vtd_init(s); sysbus_mmio_map(SYS_BUS_DEVICE(s), 0, Q35_HOST_BRIDGE_IOMMU_ADDR); pci_setup_iommu(bus, vtd_host_dma_iommu, dev); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222198; cv=none; d=zohomail.com; s=zohoarc; b=GlWlEAgruy3HbRuDKrFzAfI24Mzck3/4dBS7W1Fp8FmtYWueozq/Nn2gFQs953yr1YFO0350vnd8m9DDxgfZn7TVDlf7J+1IsqzfbKDamGU5RAO46+OaL1FOcRrtD0fNsIfw2nzEOf1gXXCvy/hDJC1/Dqtu1loBZwOcQbjY9eQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222198; h=Content-Type: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=3HLl4tNY2+/lq1uK3hyu+teGqpzhceB9L+dLDgAZow8=; b=RPcKwlsqzSK//RHlvavam0AOiOL2xbxiWoujEk5g07rmFfjy7T1e7IHMFhi2iUEItG8U57jm4RY6NnoWnp/tPsHBS6b/e4oceTAoQbSyruxo0WrOizBF8gDRcCd6sIHZT+7MiFIZ60WIH86aBq7uP3Sp3rqP/35IQlJi6M60mkg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1667222198175283.9174365293628; Mon, 31 Oct 2022 06:16:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKd-0001vz-KL; Mon, 31 Oct 2022 08:55:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJq-0007x0-CQ for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:55:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJf-0003ju-Bs for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:55:10 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-459-5pqk9NzwMgCZGkmsGfUG-w-1; Mon, 31 Oct 2022 08:54:51 -0400 Received: by mail-wm1-f70.google.com with SMTP id d13-20020a05600c34cd00b003ce1f62ac5aso8310983wmq.4 for ; Mon, 31 Oct 2022 05:54:51 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id g13-20020a05600c310d00b003b4cba4ef71sm8424257wmo.41.2022.10.31.05.54.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220898; 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: in-reply-to:in-reply-to:references:references; bh=3HLl4tNY2+/lq1uK3hyu+teGqpzhceB9L+dLDgAZow8=; b=R6kkXWpWah989VR4Wa2yuoArgyfNh9iz7y7cLd29ap2hn1zlEELONL0em6XZXunCW3ZrEO aLvjEOkyfBQ37Mxhf5g8tl76by2pP0PCwAZhuN1KMSOKnnKypur2ds4Cm9dK0OsgDQ0zL6 3jTJbdH7E8ZM18KOVubvNCYwkoKPhFU= X-MC-Unique: 5pqk9NzwMgCZGkmsGfUG-w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3HLl4tNY2+/lq1uK3hyu+teGqpzhceB9L+dLDgAZow8=; b=eh/0nsMjMW7r1sWkvGe3iOBCi/eeRfMbFhWkjnKSeidmZOkAbvDTKLKMxmpgNGGqcM 8fmLHq/XzvCEeWbSILsvuR4AEyK3EKou1BHZE3DWgLWyrDZ9C31TxupwCOHrzlIwub9u wgkQX12454siZHz03Fho1LyX77YR4aekKodJ3TphBXxlNXR4kJx+lTLQLuoAgJksm3Vu TI4itaTV5KG6PT6JqirwVYY9depFRrS4lNEKoBhC1/84kfvRraXF3VG1PogZvMy1Faaj 39qJyVZhVI2xAZOEepIAxZOF1B7xwoALPMR6zKDom7YH8PP8m8UQK9MIxZWMbvJgxqsq F7tA== X-Gm-Message-State: ACrzQf0i8svevo+Ct1fzxiOTk6ui1ZJMuoTyYC0+x01MfC9RtLQt+f0V XDYS8yEJQER9ElKPo+pYx8a1gF0e4otQBis+kEGvv5CDsS6SHSBo8t1/Y6kUIjczd1FsyQnJKt1 aeuTEy0AvlplZbypWNK172dXE2SRss+V24WHdJGHnDDIdOKD1RqYQx9uY+LMY X-Received: by 2002:a05:6000:144d:b0:231:51d2:e67a with SMTP id v13-20020a056000144d00b0023151d2e67amr8306407wrx.294.1667220890402; Mon, 31 Oct 2022 05:54:50 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Bkrfjw6hDdLGc6H/oO/doWcjHON/QeVXDmecd/KBrWWPWi77kIpb1GJLx+5Bqq/WAyzsvSQ== X-Received: by 2002:a05:6000:144d:b0:231:51d2:e67a with SMTP id v13-20020a056000144d00b0023151d2e67amr8306381wrx.294.1667220890113; Mon, 31 Oct 2022 05:54:50 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jason Wang , Peter Xu , Yi Liu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 85/86] intel-iommu: convert VTD_PE_GET_FPD_ERR() to be a function Message-ID: <20221031124928.128475-86-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222199750100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Wang We used to have a macro for VTD_PE_GET_FPD_ERR() but it has an internal goto which prevents it from being reused. This patch convert that macro to a dedicated function and let the caller to decide what to do (e.g using goto or not). This makes sure it can be re-used for other function that requires fault reporting. Reviewed-by: Peter Xu Signed-off-by: Jason Wang Message-Id: <20221028061436.30093-4-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Yi Liu --- hw/i386/intel_iommu.c | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 9fe5a222eb..9029ee98f4 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -49,17 +49,6 @@ /* pe operations */ #define VTD_PE_GET_TYPE(pe) ((pe)->val[0] & VTD_SM_PASID_ENTRY_PGTT) #define VTD_PE_GET_LEVEL(pe) (2 + (((pe)->val[0] >> 2) & VTD_SM_PASID_ENTR= Y_AW)) -#define VTD_PE_GET_FPD_ERR(ret_fr, is_fpd_set, s, source_id, addr, is_writ= e) {\ - if (ret_fr) { = \ - ret_fr =3D -ret_fr; = \ - if (is_fpd_set && vtd_is_qualified_fault(ret_fr)) { = \ - trace_vtd_fault_disabled(); = \ - } else { = \ - vtd_report_dmar_fault(s, source_id, addr, ret_fr, is_write); = \ - } = \ - goto error; = \ - } = \ -} =20 /* * PCI bus number (or SID) is not reliable since the device is usaully @@ -1716,6 +1705,19 @@ out: trace_vtd_pt_enable_fast_path(source_id, success); } =20 +static void vtd_report_fault(IntelIOMMUState *s, + int err, bool is_fpd_set, + uint16_t source_id, + hwaddr addr, + bool is_write) +{ + if (is_fpd_set && vtd_is_qualified_fault(err)) { + trace_vtd_fault_disabled(); + } else { + vtd_report_dmar_fault(s, source_id, addr, err, is_write); + } +} + /* Map dev to context-entry then do a paging-structures walk to do a iommu * translation. * @@ -1776,7 +1778,11 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *= vtd_as, PCIBus *bus, is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; if (!is_fpd_set && s->root_scalable) { ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set); - VTD_PE_GET_FPD_ERR(ret_fr, is_fpd_set, s, source_id, addr, is_= write); + if (ret_fr) { + vtd_report_fault(s, -ret_fr, is_fpd_set, + source_id, addr, is_write); + goto error; + } } } else { ret_fr =3D vtd_dev_to_context_entry(s, bus_num, devfn, &ce); @@ -1784,7 +1790,11 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *= vtd_as, PCIBus *bus, if (!ret_fr && !is_fpd_set && s->root_scalable) { ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set); } - VTD_PE_GET_FPD_ERR(ret_fr, is_fpd_set, s, source_id, addr, is_writ= e); + if (ret_fr) { + vtd_report_fault(s, -ret_fr, is_fpd_set, + source_id, addr, is_write); + goto error; + } /* Update context-cache */ trace_vtd_iotlb_cc_update(bus_num, devfn, ce.hi, ce.lo, cc_entry->context_cache_gen, @@ -1820,7 +1830,11 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *= vtd_as, PCIBus *bus, =20 ret_fr =3D vtd_iova_to_slpte(s, &ce, addr, is_write, &slpte, &level, &reads, &writes, s->aw_bits); - VTD_PE_GET_FPD_ERR(ret_fr, is_fpd_set, s, source_id, addr, is_write); + if (ret_fr) { + vtd_report_fault(s, -ret_fr, is_fpd_set, source_id, + addr, is_write); + goto error; + } =20 page_mask =3D vtd_slpt_level_page_mask(level); access_flags =3D IOMMU_ACCESS_FLAG(reads, writes); --=20 MST From nobody Mon Feb 9 01:22:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1667222276; cv=none; d=zohomail.com; s=zohoarc; b=DQodFgJRZ6vU1o8zDLSuq2o1cHiC3PI6cowrGQCQI4xI/5oPnTJqhON9qHjsvufMryOq7EGY2gi3plVsU4jtugzTQBLwzJ6cRgzVz9OW1WmuIUuOWff53zRirPA7uf4zfelzkSt1wELnDNlG23Z4/VxjF/8kgaV/iBX8rpbjCf0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667222276; h=Content-Type: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=CNvzOA97EnpSx+rTLPiazQsLu0dHX2D28O+bhdiAG1M=; b=jLLemaIrBhZjgBLkwnFaciylgVOINwoBBC+ti9Wr60PG8qD5P/1y8f1D7x60c/tHGc9tP6YjiAETqWmmUT0oCLmGPyJ4LHDBhGQEH6E1GPmJ209QvfEVO+pZStWh78j1l2cFtkfS2DE2miwhKD+ZGhyBXZZiespkxfuMCdQfYjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166722227611353.63603235695609; Mon, 31 Oct 2022 06:17:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opUKX-0001Px-JU; Mon, 31 Oct 2022 08:55:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJj-0007Tm-6j for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:55:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opUJe-0003jl-AV for qemu-devel@nongnu.org; Mon, 31 Oct 2022 08:55:02 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-212-csZsY8QRPaOvc_5KUoPVdQ-1; Mon, 31 Oct 2022 08:54:56 -0400 Received: by mail-wm1-f69.google.com with SMTP id bg25-20020a05600c3c9900b003cf3ed7e27bso5265944wmb.4 for ; Mon, 31 Oct 2022 05:54:56 -0700 (PDT) Received: from redhat.com ([2.52.15.189]) by smtp.gmail.com with ESMTPSA id ck7-20020a5d5e87000000b00235da296623sm7133106wrb.31.2022.10.31.05.54.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 05:54:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667220897; 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: in-reply-to:in-reply-to:references:references; bh=CNvzOA97EnpSx+rTLPiazQsLu0dHX2D28O+bhdiAG1M=; b=Kz5GVBu//Mkb1WEjyQiGPRUl7THVtzctmSRdWVHOJV3k3yrYsm4VrBwpLW/Wlr++gM0n0G X/VWb8J3i6MsoSdQT/U5mxF7iqJsEeLSUOBAOqkv0QFilqxMvUeOE/9hy4oqioXx2F2ejD sQWGaBQYZ54TJLoQT+DHInhPWPxA4n0= X-MC-Unique: csZsY8QRPaOvc_5KUoPVdQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CNvzOA97EnpSx+rTLPiazQsLu0dHX2D28O+bhdiAG1M=; b=KBQQeZ2DBfLiObWTo0bz7N6hRaQdXoowCDQv9czesD8yUORfMGxHOsu2uy0YK/nCM7 VqrA0VBR+lodTOzvz2zeS8PiskEOxmdhPvUoFWS29eTOXyfQ6xWVs7a3DarC6Fuk7xfD SS6NtCinBmq7wx+1dnqjrZ810zeq4TwlLOt0LqHiJ/+eSsLi255Vpf7yRM28PcfknIlG 4FLnk/sf4R8VCgPzDhjWPoj+6l5vgmrpbGzEVW5v4FnEDd/+XaMMZjYXcgGRtFNKSEmy ykr8KgDZNdHJZq8iyfWjOUrJ/fDFGM+A7m8/H9pvnqHGsja6ZqXWdazbUQcEzZAraNZn W19g== X-Gm-Message-State: ACrzQf0cvNFmrkCW9ksHvHcAQAeoUxz/Hq/wWLz6m74mBQ4NgeNLLk08 3Eb3PaLNu2VQEi9ECKDFncJLAevxD4ar8su/q/wYcqpmGw3OMVFCwnN94F+1PwfOkdLHcPGqLir d0E7NHofXkyWh4s16/ZNw9S67kW2I1PbTsbfbPNPvmxXtLd9XytP2k5T4hv9M X-Received: by 2002:a5d:40d1:0:b0:236:786d:611e with SMTP id b17-20020a5d40d1000000b00236786d611emr8183546wrq.355.1667220894171; Mon, 31 Oct 2022 05:54:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6QKkG08/k/eZ8BPFLtioLqd9JzlPTRwMoQLRuPtVivYQgQ9kqyuU/SIimV9ucv4nwR4BIiyw== X-Received: by 2002:a5d:40d1:0:b0:236:786d:611e with SMTP id b17-20020a5d40d1000000b00236786d611emr8183514wrq.355.1667220893544; Mon, 31 Oct 2022 05:54:53 -0700 (PDT) Date: Mon, 31 Oct 2022 08:54:50 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jason Wang , Peter Xu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 86/86] intel-iommu: PASID support Message-ID: <20221031124928.128475-87-mst@redhat.com> References: <20221031124928.128475-1-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221031124928.128475-1-mst@redhat.com> X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.048, 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_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667222278173100009 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Wang This patch introduce ECAP_PASID via "x-pasid-mode". Based on the existing support for scalable mode, we need to implement the following missing parts: 1) tag VTDAddressSpace with PASID and support IOMMU/DMA translation with PASID 2) tag IOTLB with PASID 3) PASID cache and its flush 4) PASID based IOTLB invalidation For simplicity PASID cache is not implemented so we can simply implement the PASID cache flush as a no and leave it to be implemented in the future. For PASID based IOTLB invalidation, since we haven't had L1 stage support, the PASID based IOTLB invalidation is not implemented yet. For PASID based device IOTLB invalidation, it requires the support for vhost so we forbid enabling device IOTLB when PASID is enabled now. Those work could be done in the future. Note that though PASID based IOMMU translation is ready but no device can issue PASID DMA right now. In this case, PCI_NO_PASID is used as PASID to identify the address without PASID. vtd_find_add_as() has been extended to provision address space with PASID which could be utilized by the future extension of PCI core to allow device model to use PASID based DMA translation. This feature would be useful for: 1) prototyping PASID support for devices like virtio 2) future vPASID work 3) future PRS and vSVA work Reviewed-by: Peter Xu Signed-off-by: Jason Wang Message-Id: <20221028061436.30093-5-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/i386/intel_iommu_internal.h | 16 +- include/hw/i386/intel_iommu.h | 7 +- include/hw/pci/pci_bus.h | 2 + hw/i386/intel_iommu.c | 416 +++++++++++++++++++++++++-------- hw/i386/trace-events | 2 + 5 files changed, 339 insertions(+), 104 deletions(-) diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 930ce61feb..f090e61e11 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -114,8 +114,9 @@ VTD_INTERRUPT_ADDR_FIRST + 1) =20 /* The shift of source_id in the key of IOTLB hash table */ -#define VTD_IOTLB_SID_SHIFT 36 -#define VTD_IOTLB_LVL_SHIFT 52 +#define VTD_IOTLB_SID_SHIFT 20 +#define VTD_IOTLB_LVL_SHIFT 28 +#define VTD_IOTLB_PASID_SHIFT 30 #define VTD_IOTLB_MAX_SIZE 1024 /* Max size of the hash table = */ =20 /* IOTLB_REG */ @@ -191,6 +192,7 @@ #define VTD_ECAP_SC (1ULL << 7) #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SLTS (1ULL << 46) =20 @@ -211,6 +213,8 @@ #define VTD_CAP_DRAIN_READ (1ULL << 55) #define VTD_CAP_DRAIN (VTD_CAP_DRAIN_READ | VTD_CAP_DRAIN_WR= ITE) #define VTD_CAP_CM (1ULL << 7) +#define VTD_PASID_ID_SHIFT 20 +#define VTD_PASID_ID_MASK ((1ULL << VTD_PASID_ID_SHIFT) - 1) =20 /* Supported Adjusted Guest Address Widths */ #define VTD_CAP_SAGAW_SHIFT 8 @@ -262,6 +266,8 @@ #define VTD_FRCD_SID(val) ((val) & VTD_FRCD_SID_MASK) /* For the low 64-bit of 128-bit */ #define VTD_FRCD_FI(val) ((val) & ~0xfffULL) +#define VTD_FRCD_PV(val) (((val) & 0xffffULL) << 40) +#define VTD_FRCD_PP(val) (((val) & 0x1) << 31) =20 /* DMA Remapping Fault Conditions */ typedef enum VTDFaultReason { @@ -379,6 +385,11 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_IOTLB_AM(val) ((val) & 0x3fULL) #define VTD_INV_DESC_IOTLB_RSVD_LO 0xffffffff0000ff00ULL #define VTD_INV_DESC_IOTLB_RSVD_HI 0xf80ULL +#define VTD_INV_DESC_IOTLB_PASID_PASID (2ULL << 4) +#define VTD_INV_DESC_IOTLB_PASID_PAGE (3ULL << 4) +#define VTD_INV_DESC_IOTLB_PASID(val) (((val) >> 32) & VTD_PASID_ID_MASK) +#define VTD_INV_DESC_IOTLB_PASID_RSVD_LO 0xfff00000000001c0ULL +#define VTD_INV_DESC_IOTLB_PASID_RSVD_HI 0xf80ULL =20 /* Mask for Device IOTLB Invalidate Descriptor */ #define VTD_INV_DESC_DEVICE_IOTLB_ADDR(val) ((val) & 0xfffffffffffff000ULL) @@ -413,6 +424,7 @@ typedef union VTDInvDesc VTDInvDesc; /* Information about page-selective IOTLB invalidate */ struct VTDIOTLBPageInvInfo { uint16_t domain_id; + uint32_t pasid; uint64_t addr; uint8_t mask; }; diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index e49fff2a6c..46d973e629 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -97,11 +97,13 @@ struct VTDPASIDEntry { struct VTDAddressSpace { PCIBus *bus; uint8_t devfn; + uint32_t pasid; AddressSpace as; IOMMUMemoryRegion iommu; MemoryRegion root; /* The root container of the device */ MemoryRegion nodmar; /* The alias of shared nodmar MR */ MemoryRegion iommu_ir; /* Interrupt region: 0xfeeXXXXX */ + MemoryRegion iommu_ir_fault; /* Interrupt region for catching fault */ IntelIOMMUState *iommu_state; VTDContextCacheEntry context_cache_entry; QLIST_ENTRY(VTDAddressSpace) next; @@ -113,6 +115,7 @@ struct VTDAddressSpace { struct VTDIOTLBEntry { uint64_t gfn; uint16_t domain_id; + uint32_t pasid; uint64_t slpte; uint64_t mask; uint8_t access_flags; @@ -261,6 +264,7 @@ struct IntelIOMMUState { uint8_t aw_bits; /* Host/IOVA address width (in bits) */ bool dma_drain; /* Whether DMA r/w draining enabled */ bool dma_translation; /* Whether DMA translation supported */ + bool pasid; /* Whether to support PASID */ =20 /* * Protects IOMMU states in general. Currently it protects the @@ -272,6 +276,7 @@ struct IntelIOMMUState { /* Find the VTD Address space associated with the given bus pointer, * create a new one if none exists */ -VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, int devf= n); +VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, + int devfn, unsigned int pasid); =20 #endif diff --git a/include/hw/pci/pci_bus.h b/include/hw/pci/pci_bus.h index eb94e7e85c..5653175957 100644 --- a/include/hw/pci/pci_bus.h +++ b/include/hw/pci/pci_bus.h @@ -28,6 +28,8 @@ enum PCIBusFlags { PCI_BUS_CXL =3D 0x0004, }; =20 +#define PCI_NO_PASID UINT32_MAX + struct PCIBus { BusState qbus; enum PCIBusFlags flags; diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 9029ee98f4..7ca077b824 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -58,6 +58,14 @@ struct vtd_as_key { PCIBus *bus; uint8_t devfn; + uint32_t pasid; +}; + +struct vtd_iotlb_key { + uint64_t gfn; + uint32_t pasid; + uint32_t level; + uint16_t sid; }; =20 static void vtd_address_space_refresh_all(IntelIOMMUState *s); @@ -199,14 +207,24 @@ static inline gboolean vtd_as_has_map_notifier(VTDAdd= ressSpace *as) } =20 /* GHashTable functions */ -static gboolean vtd_uint64_equal(gconstpointer v1, gconstpointer v2) +static gboolean vtd_iotlb_equal(gconstpointer v1, gconstpointer v2) { - return *((const uint64_t *)v1) =3D=3D *((const uint64_t *)v2); + const struct vtd_iotlb_key *key1 =3D v1; + const struct vtd_iotlb_key *key2 =3D v2; + + return key1->sid =3D=3D key2->sid && + key1->pasid =3D=3D key2->pasid && + key1->level =3D=3D key2->level && + key1->gfn =3D=3D key2->gfn; } =20 -static guint vtd_uint64_hash(gconstpointer v) +static guint vtd_iotlb_hash(gconstpointer v) { - return (guint)*(const uint64_t *)v; + const struct vtd_iotlb_key *key =3D v; + + return key->gfn | ((key->sid) << VTD_IOTLB_SID_SHIFT) | + (key->level) << VTD_IOTLB_LVL_SHIFT | + (key->pasid) << VTD_IOTLB_PASID_SHIFT; } =20 static gboolean vtd_as_equal(gconstpointer v1, gconstpointer v2) @@ -214,7 +232,8 @@ static gboolean vtd_as_equal(gconstpointer v1, gconstpo= inter v2) const struct vtd_as_key *key1 =3D v1; const struct vtd_as_key *key2 =3D v2; =20 - return (key1->bus =3D=3D key2->bus) && (key1->devfn =3D=3D key2->devfn= ); + return (key1->bus =3D=3D key2->bus) && (key1->devfn =3D=3D key2->devfn= ) && + (key1->pasid =3D=3D key2->pasid); } =20 /* @@ -302,13 +321,6 @@ static void vtd_reset_caches(IntelIOMMUState *s) vtd_iommu_unlock(s); } =20 -static uint64_t vtd_get_iotlb_key(uint64_t gfn, uint16_t source_id, - uint32_t level) -{ - return gfn | ((uint64_t)(source_id) << VTD_IOTLB_SID_SHIFT) | - ((uint64_t)(level) << VTD_IOTLB_LVL_SHIFT); -} - static uint64_t vtd_get_iotlb_gfn(hwaddr addr, uint32_t level) { return (addr & vtd_slpt_level_page_mask(level)) >> VTD_PAGE_SHIFT_4K; @@ -316,15 +328,17 @@ static uint64_t vtd_get_iotlb_gfn(hwaddr addr, uint32= _t level) =20 /* Must be called with IOMMU lock held */ static VTDIOTLBEntry *vtd_lookup_iotlb(IntelIOMMUState *s, uint16_t source= _id, - hwaddr addr) + uint32_t pasid, hwaddr addr) { + struct vtd_iotlb_key key; VTDIOTLBEntry *entry; - uint64_t key; int level; =20 for (level =3D VTD_SL_PT_LEVEL; level < VTD_SL_PML4_LEVEL; level++) { - key =3D vtd_get_iotlb_key(vtd_get_iotlb_gfn(addr, level), - source_id, level); + key.gfn =3D vtd_get_iotlb_gfn(addr, level); + key.level =3D level; + key.sid =3D source_id; + key.pasid =3D pasid; entry =3D g_hash_table_lookup(s->iotlb, &key); if (entry) { goto out; @@ -338,10 +352,11 @@ out: /* Must be with IOMMU lock held */ static void vtd_update_iotlb(IntelIOMMUState *s, uint16_t source_id, uint16_t domain_id, hwaddr addr, uint64_t slp= te, - uint8_t access_flags, uint32_t level) + uint8_t access_flags, uint32_t level, + uint32_t pasid) { VTDIOTLBEntry *entry =3D g_malloc(sizeof(*entry)); - uint64_t *key =3D g_malloc(sizeof(*key)); + struct vtd_iotlb_key *key =3D g_malloc(sizeof(*key)); uint64_t gfn =3D vtd_get_iotlb_gfn(addr, level); =20 trace_vtd_iotlb_page_update(source_id, addr, slpte, domain_id); @@ -355,7 +370,13 @@ static void vtd_update_iotlb(IntelIOMMUState *s, uint1= 6_t source_id, entry->slpte =3D slpte; entry->access_flags =3D access_flags; entry->mask =3D vtd_slpt_level_page_mask(level); - *key =3D vtd_get_iotlb_key(gfn, source_id, level); + entry->pasid =3D pasid; + + key->gfn =3D gfn; + key->sid =3D source_id; + key->level =3D level; + key->pasid =3D pasid; + g_hash_table_replace(s->iotlb, key, entry); } =20 @@ -448,7 +469,8 @@ static void vtd_set_frcd_and_update_ppf(IntelIOMMUState= *s, uint16_t index) /* Must not update F field now, should be done later */ static void vtd_record_frcd(IntelIOMMUState *s, uint16_t index, uint16_t source_id, hwaddr addr, - VTDFaultReason fault, bool is_write) + VTDFaultReason fault, bool is_write, + bool is_pasid, uint32_t pasid) { uint64_t hi =3D 0, lo; hwaddr frcd_reg_addr =3D DMAR_FRCD_REG_OFFSET + (((uint64_t)index) << = 4); @@ -456,7 +478,8 @@ static void vtd_record_frcd(IntelIOMMUState *s, uint16_= t index, assert(index < DMAR_FRCD_REG_NR); =20 lo =3D VTD_FRCD_FI(addr); - hi =3D VTD_FRCD_SID(source_id) | VTD_FRCD_FR(fault); + hi =3D VTD_FRCD_SID(source_id) | VTD_FRCD_FR(fault) | + VTD_FRCD_PV(pasid) | VTD_FRCD_PP(is_pasid); if (!is_write) { hi |=3D VTD_FRCD_T; } @@ -487,7 +510,8 @@ static bool vtd_try_collapse_fault(IntelIOMMUState *s, = uint16_t source_id) /* Log and report an DMAR (address translation) fault to software */ static void vtd_report_dmar_fault(IntelIOMMUState *s, uint16_t source_id, hwaddr addr, VTDFaultReason fault, - bool is_write) + bool is_write, bool is_pasid, + uint32_t pasid) { uint32_t fsts_reg =3D vtd_get_long_raw(s, DMAR_FSTS_REG); =20 @@ -514,7 +538,8 @@ static void vtd_report_dmar_fault(IntelIOMMUState *s, u= int16_t source_id, return; } =20 - vtd_record_frcd(s, s->next_frcd_reg, source_id, addr, fault, is_write); + vtd_record_frcd(s, s->next_frcd_reg, source_id, addr, fault, + is_write, is_pasid, pasid); =20 if (fsts_reg & VTD_FSTS_PPF) { error_report_once("There are pending faults already, " @@ -819,13 +844,15 @@ static int vtd_get_pe_from_pasid_table(IntelIOMMUStat= e *s, =20 static int vtd_ce_get_rid2pasid_entry(IntelIOMMUState *s, VTDContextEntry *ce, - VTDPASIDEntry *pe) + VTDPASIDEntry *pe, + uint32_t pasid) { - uint32_t pasid; dma_addr_t pasid_dir_base; int ret =3D 0; =20 - pasid =3D VTD_CE_GET_RID2PASID(ce); + if (pasid =3D=3D PCI_NO_PASID) { + pasid =3D VTD_CE_GET_RID2PASID(ce); + } pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); ret =3D vtd_get_pe_from_pasid_table(s, pasid_dir_base, pasid, pe); =20 @@ -834,15 +861,17 @@ static int vtd_ce_get_rid2pasid_entry(IntelIOMMUState= *s, =20 static int vtd_ce_get_pasid_fpd(IntelIOMMUState *s, VTDContextEntry *ce, - bool *pe_fpd_set) + bool *pe_fpd_set, + uint32_t pasid) { int ret; - uint32_t pasid; dma_addr_t pasid_dir_base; VTDPASIDDirEntry pdire; VTDPASIDEntry pe; =20 - pasid =3D VTD_CE_GET_RID2PASID(ce); + if (pasid =3D=3D PCI_NO_PASID) { + pasid =3D VTD_CE_GET_RID2PASID(ce); + } pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); =20 /* @@ -888,12 +917,13 @@ static inline uint32_t vtd_ce_get_level(VTDContextEnt= ry *ce) } =20 static uint32_t vtd_get_iova_level(IntelIOMMUState *s, - VTDContextEntry *ce) + VTDContextEntry *ce, + uint32_t pasid) { VTDPASIDEntry pe; =20 if (s->root_scalable) { - vtd_ce_get_rid2pasid_entry(s, ce, &pe); + vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); return VTD_PE_GET_LEVEL(&pe); } =20 @@ -906,12 +936,13 @@ static inline uint32_t vtd_ce_get_agaw(VTDContextEntr= y *ce) } =20 static uint32_t vtd_get_iova_agaw(IntelIOMMUState *s, - VTDContextEntry *ce) + VTDContextEntry *ce, + uint32_t pasid) { VTDPASIDEntry pe; =20 if (s->root_scalable) { - vtd_ce_get_rid2pasid_entry(s, ce, &pe); + vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); return 30 + ((pe.val[0] >> 2) & VTD_SM_PASID_ENTRY_AW) * 9; } =20 @@ -953,31 +984,33 @@ static inline bool vtd_ce_type_check(X86IOMMUState *x= 86_iommu, } =20 static inline uint64_t vtd_iova_limit(IntelIOMMUState *s, - VTDContextEntry *ce, uint8_t aw) + VTDContextEntry *ce, uint8_t aw, + uint32_t pasid) { - uint32_t ce_agaw =3D vtd_get_iova_agaw(s, ce); + uint32_t ce_agaw =3D vtd_get_iova_agaw(s, ce, pasid); return 1ULL << MIN(ce_agaw, aw); } =20 /* Return true if IOVA passes range check, otherwise false. */ static inline bool vtd_iova_range_check(IntelIOMMUState *s, uint64_t iova, VTDContextEntry *ce, - uint8_t aw) + uint8_t aw, uint32_t pasid) { /* * Check if @iova is above 2^X-1, where X is the minimum of MGAW * in CAP_REG and AW in context-entry. */ - return !(iova & ~(vtd_iova_limit(s, ce, aw) - 1)); + return !(iova & ~(vtd_iova_limit(s, ce, aw, pasid) - 1)); } =20 static dma_addr_t vtd_get_iova_pgtbl_base(IntelIOMMUState *s, - VTDContextEntry *ce) + VTDContextEntry *ce, + uint32_t pasid) { VTDPASIDEntry pe; =20 if (s->root_scalable) { - vtd_ce_get_rid2pasid_entry(s, ce, &pe); + vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); return pe.val[0] & VTD_SM_PASID_ENTRY_SLPTPTR; } =20 @@ -1011,18 +1044,19 @@ static bool vtd_slpte_nonzero_rsvd(uint64_t slpte, = uint32_t level) static int vtd_iova_to_slpte(IntelIOMMUState *s, VTDContextEntry *ce, uint64_t iova, bool is_write, uint64_t *slptep, uint32_t *slpte_level, - bool *reads, bool *writes, uint8_t aw_bits) + bool *reads, bool *writes, uint8_t aw_bits, + uint32_t pasid) { - dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce); - uint32_t level =3D vtd_get_iova_level(s, ce); + dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce, pasid); + uint32_t level =3D vtd_get_iova_level(s, ce, pasid); uint32_t offset; uint64_t slpte; uint64_t access_right_check; uint64_t xlat, size; =20 - if (!vtd_iova_range_check(s, iova, ce, aw_bits)) { - error_report_once("%s: detected IOVA overflow (iova=3D0x%" PRIx64 = ")", - __func__, iova); + if (!vtd_iova_range_check(s, iova, ce, aw_bits, pasid)) { + error_report_once("%s: detected IOVA overflow (iova=3D0x%" PRIx64 = "," + "pasid=3D0x%" PRIx32 ")", __func__, iova, pasid); return -VTD_FR_ADDR_BEYOND_MGAW; } =20 @@ -1035,8 +1069,9 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VTDC= ontextEntry *ce, =20 if (slpte =3D=3D (uint64_t)-1) { error_report_once("%s: detected read error on DMAR slpte " - "(iova=3D0x%" PRIx64 ")", __func__, iova); - if (level =3D=3D vtd_get_iova_level(s, ce)) { + "(iova=3D0x%" PRIx64 ", pasid=3D0x%" PRIx32 = ")", + __func__, iova, pasid); + if (level =3D=3D vtd_get_iova_level(s, ce, pasid)) { /* Invalid programming of context-entry */ return -VTD_FR_CONTEXT_ENTRY_INV; } else { @@ -1048,15 +1083,16 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VT= DContextEntry *ce, if (!(slpte & access_right_check)) { error_report_once("%s: detected slpte permission error " "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 = ", " - "slpte=3D0x%" PRIx64 ", write=3D%d)", __func= __, - iova, level, slpte, is_write); + "slpte=3D0x%" PRIx64 ", write=3D%d, pasid=3D= 0x%" + PRIx32 ")", __func__, iova, level, + slpte, is_write, pasid); return is_write ? -VTD_FR_WRITE : -VTD_FR_READ; } if (vtd_slpte_nonzero_rsvd(slpte, level)) { error_report_once("%s: detected splte reserve non-zero " "iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 - "slpte=3D0x%" PRIx64 ")", __func__, iova, - level, slpte); + "slpte=3D0x%" PRIx64 ", pasid=3D0x%" PRIX32 = ")", + __func__, iova, level, slpte, pasid); return -VTD_FR_PAGING_ENTRY_RSVD; } =20 @@ -1084,9 +1120,10 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VTD= ContextEntry *ce, error_report_once("%s: xlat address is in interrupt range " "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 ", " "slpte=3D0x%" PRIx64 ", write=3D%d, " - "xlat=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ")", + "xlat=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ", " + "pasid=3D0x%" PRIx32 ")", __func__, iova, level, slpte, is_write, - xlat, size); + xlat, size, pasid); return s->scalable_mode ? -VTD_FR_SM_INTERRUPT_ADDR : -VTD_FR_INTERRUPT_ADDR; } @@ -1300,18 +1337,19 @@ next: */ static int vtd_page_walk(IntelIOMMUState *s, VTDContextEntry *ce, uint64_t start, uint64_t end, - vtd_page_walk_info *info) + vtd_page_walk_info *info, + uint32_t pasid) { - dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce); - uint32_t level =3D vtd_get_iova_level(s, ce); + dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce, pasid); + uint32_t level =3D vtd_get_iova_level(s, ce, pasid); =20 - if (!vtd_iova_range_check(s, start, ce, info->aw)) { + if (!vtd_iova_range_check(s, start, ce, info->aw, pasid)) { return -VTD_FR_ADDR_BEYOND_MGAW; } =20 - if (!vtd_iova_range_check(s, end, ce, info->aw)) { + if (!vtd_iova_range_check(s, end, ce, info->aw, pasid)) { /* Fix end so that it reaches the maximum */ - end =3D vtd_iova_limit(s, ce, info->aw); + end =3D vtd_iova_limit(s, ce, info->aw, pasid); } =20 return vtd_page_walk_level(addr, start, end, level, true, true, info); @@ -1379,7 +1417,7 @@ static int vtd_ce_rid2pasid_check(IntelIOMMUState *s, * has valid rid2pasid setting, which includes valid * rid2pasid field and corresponding pasid entry setting */ - return vtd_ce_get_rid2pasid_entry(s, ce, &pe); + return vtd_ce_get_rid2pasid_entry(s, ce, &pe, PCI_NO_PASID); } =20 /* Map a device to its corresponding domain (context-entry) */ @@ -1462,12 +1500,13 @@ static int vtd_sync_shadow_page_hook(IOMMUTLBEvent = *event, } =20 static uint16_t vtd_get_domain_id(IntelIOMMUState *s, - VTDContextEntry *ce) + VTDContextEntry *ce, + uint32_t pasid) { VTDPASIDEntry pe; =20 if (s->root_scalable) { - vtd_ce_get_rid2pasid_entry(s, ce, &pe); + vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); return VTD_SM_PASID_ENTRY_DID(pe.val[1]); } =20 @@ -1485,10 +1524,10 @@ static int vtd_sync_shadow_page_table_range(VTDAddr= essSpace *vtd_as, .notify_unmap =3D true, .aw =3D s->aw_bits, .as =3D vtd_as, - .domain_id =3D vtd_get_domain_id(s, ce), + .domain_id =3D vtd_get_domain_id(s, ce, vtd_as->pasid), }; =20 - return vtd_page_walk(s, ce, addr, addr + size, &info); + return vtd_page_walk(s, ce, addr, addr + size, &info, vtd_as->pasid); } =20 static int vtd_sync_shadow_page_table(VTDAddressSpace *vtd_as) @@ -1532,13 +1571,14 @@ static int vtd_sync_shadow_page_table(VTDAddressSpa= ce *vtd_as) * 1st-level translation or 2nd-level translation, it depends * on PGTT setting. */ -static bool vtd_dev_pt_enabled(IntelIOMMUState *s, VTDContextEntry *ce) +static bool vtd_dev_pt_enabled(IntelIOMMUState *s, VTDContextEntry *ce, + uint32_t pasid) { VTDPASIDEntry pe; int ret; =20 if (s->root_scalable) { - ret =3D vtd_ce_get_rid2pasid_entry(s, ce, &pe); + ret =3D vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); if (ret) { /* * This error is guest triggerable. We should assumt PT @@ -1572,19 +1612,20 @@ static bool vtd_as_pt_enabled(VTDAddressSpace *as) return false; } =20 - return vtd_dev_pt_enabled(s, &ce); + return vtd_dev_pt_enabled(s, &ce, as->pasid); } =20 /* Return whether the device is using IOMMU translation. */ static bool vtd_switch_address_space(VTDAddressSpace *as) { - bool use_iommu; + bool use_iommu, pt; /* Whether we need to take the BQL on our own */ bool take_bql =3D !qemu_mutex_iothread_locked(); =20 assert(as); =20 use_iommu =3D as->iommu_state->dmar_enabled && !vtd_as_pt_enabled(as); + pt =3D as->iommu_state->dmar_enabled && vtd_as_pt_enabled(as); =20 trace_vtd_switch_address_space(pci_bus_num(as->bus), VTD_PCI_SLOT(as->devfn), @@ -1604,11 +1645,53 @@ static bool vtd_switch_address_space(VTDAddressSpac= e *as) if (use_iommu) { memory_region_set_enabled(&as->nodmar, false); memory_region_set_enabled(MEMORY_REGION(&as->iommu), true); + /* + * vt-d spec v3.4 3.14: + * + * """ + * Requests-with-PASID with input address in range 0xFEEx_xxxx + * are translated normally like any other request-with-PASID + * through DMA-remapping hardware. + * """ + * + * Need to disable ir for as with PASID. + */ + if (as->pasid !=3D PCI_NO_PASID) { + memory_region_set_enabled(&as->iommu_ir, false); + } else { + memory_region_set_enabled(&as->iommu_ir, true); + } } else { memory_region_set_enabled(MEMORY_REGION(&as->iommu), false); memory_region_set_enabled(&as->nodmar, true); } =20 + /* + * vtd-spec v3.4 3.14: + * + * """ + * Requests-with-PASID with input address in range 0xFEEx_xxxx are + * translated normally like any other request-with-PASID through + * DMA-remapping hardware. However, if such a request is processed + * using pass-through translation, it will be blocked as described + * in the paragraph below. + * + * Software must not program paging-structure entries to remap any + * address to the interrupt address range. Untranslated requests + * and translation requests that result in an address in the + * interrupt range will be blocked with condition code LGN.4 or + * SGN.8. + * """ + * + * We enable per as memory region (iommu_ir_fault) for catching + * the tranlsation for interrupt range through PASID + PT. + */ + if (pt && as->pasid !=3D PCI_NO_PASID) { + memory_region_set_enabled(&as->iommu_ir_fault, true); + } else { + memory_region_set_enabled(&as->iommu_ir_fault, false); + } + if (take_bql) { qemu_mutex_unlock_iothread(); } @@ -1709,12 +1792,15 @@ static void vtd_report_fault(IntelIOMMUState *s, int err, bool is_fpd_set, uint16_t source_id, hwaddr addr, - bool is_write) + bool is_write, + bool is_pasid, + uint32_t pasid) { if (is_fpd_set && vtd_is_qualified_fault(err)) { trace_vtd_fault_disabled(); } else { - vtd_report_dmar_fault(s, source_id, addr, err, is_write); + vtd_report_dmar_fault(s, source_id, addr, err, is_write, + is_pasid, pasid); } } =20 @@ -1739,13 +1825,14 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, uint8_t bus_num =3D pci_bus_num(bus); VTDContextCacheEntry *cc_entry; uint64_t slpte, page_mask; - uint32_t level; + uint32_t level, pasid =3D vtd_as->pasid; uint16_t source_id =3D PCI_BUILD_BDF(bus_num, devfn); int ret_fr; bool is_fpd_set =3D false; bool reads =3D true; bool writes =3D true; uint8_t access_flags; + bool rid2pasid =3D (pasid =3D=3D PCI_NO_PASID) && s->root_scalable; VTDIOTLBEntry *iotlb_entry; =20 /* @@ -1758,15 +1845,17 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, =20 cc_entry =3D &vtd_as->context_cache_entry; =20 - /* Try to fetch slpte form IOTLB */ - iotlb_entry =3D vtd_lookup_iotlb(s, source_id, addr); - if (iotlb_entry) { - trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->slpte, - iotlb_entry->domain_id); - slpte =3D iotlb_entry->slpte; - access_flags =3D iotlb_entry->access_flags; - page_mask =3D iotlb_entry->mask; - goto out; + /* Try to fetch slpte form IOTLB, we don't need RID2PASID logic */ + if (!rid2pasid) { + iotlb_entry =3D vtd_lookup_iotlb(s, source_id, pasid, addr); + if (iotlb_entry) { + trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->slpte, + iotlb_entry->domain_id); + slpte =3D iotlb_entry->slpte; + access_flags =3D iotlb_entry->access_flags; + page_mask =3D iotlb_entry->mask; + goto out; + } } =20 /* Try to fetch context-entry from cache first */ @@ -1777,10 +1866,11 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, ce =3D cc_entry->context_entry; is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; if (!is_fpd_set && s->root_scalable) { - ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set); + ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, pasid); if (ret_fr) { vtd_report_fault(s, -ret_fr, is_fpd_set, - source_id, addr, is_write); + source_id, addr, is_write, + false, 0); goto error; } } @@ -1788,11 +1878,12 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, ret_fr =3D vtd_dev_to_context_entry(s, bus_num, devfn, &ce); is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; if (!ret_fr && !is_fpd_set && s->root_scalable) { - ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set); + ret_fr =3D vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, pasid); } if (ret_fr) { vtd_report_fault(s, -ret_fr, is_fpd_set, - source_id, addr, is_write); + source_id, addr, is_write, + false, 0); goto error; } /* Update context-cache */ @@ -1803,11 +1894,15 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, cc_entry->context_cache_gen =3D s->context_cache_gen; } =20 + if (rid2pasid) { + pasid =3D VTD_CE_GET_RID2PASID(&ce); + } + /* * We don't need to translate for pass-through context entries. * Also, let's ignore IOTLB caching as well for PT devices. */ - if (vtd_dev_pt_enabled(s, &ce)) { + if (vtd_dev_pt_enabled(s, &ce, pasid)) { entry->iova =3D addr & VTD_PAGE_MASK_4K; entry->translated_addr =3D entry->iova; entry->addr_mask =3D ~VTD_PAGE_MASK_4K; @@ -1828,18 +1923,31 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, return true; } =20 + /* Try to fetch slpte form IOTLB for RID2PASID slow path */ + if (rid2pasid) { + iotlb_entry =3D vtd_lookup_iotlb(s, source_id, pasid, addr); + if (iotlb_entry) { + trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->slpte, + iotlb_entry->domain_id); + slpte =3D iotlb_entry->slpte; + access_flags =3D iotlb_entry->access_flags; + page_mask =3D iotlb_entry->mask; + goto out; + } + } + ret_fr =3D vtd_iova_to_slpte(s, &ce, addr, is_write, &slpte, &level, - &reads, &writes, s->aw_bits); + &reads, &writes, s->aw_bits, pasid); if (ret_fr) { vtd_report_fault(s, -ret_fr, is_fpd_set, source_id, - addr, is_write); + addr, is_write, pasid !=3D PCI_NO_PASID, pasid); goto error; } =20 page_mask =3D vtd_slpt_level_page_mask(level); access_flags =3D IOMMU_ACCESS_FLAG(reads, writes); - vtd_update_iotlb(s, source_id, vtd_get_domain_id(s, &ce), addr, slpte, - access_flags, level); + vtd_update_iotlb(s, source_id, vtd_get_domain_id(s, &ce, pasid), + addr, slpte, access_flags, level, pasid); out: vtd_iommu_unlock(s); entry->iova =3D addr & page_mask; @@ -2031,7 +2139,7 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUSta= te *s, uint16_t domain_id) QLIST_FOREACH(vtd_as, &s->vtd_as_with_notifiers, next) { if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->devfn, &ce) && - domain_id =3D=3D vtd_get_domain_id(s, &ce)) { + domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pasid)) { vtd_sync_shadow_page_table(vtd_as); } } @@ -2039,7 +2147,7 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUSta= te *s, uint16_t domain_id) =20 static void vtd_iotlb_page_invalidate_notify(IntelIOMMUState *s, uint16_t domain_id, hwaddr addr, - uint8_t am) + uint8_t am, uint32_t pasid) { VTDAddressSpace *vtd_as; VTDContextEntry ce; @@ -2047,9 +2155,11 @@ static void vtd_iotlb_page_invalidate_notify(IntelIO= MMUState *s, hwaddr size =3D (1 << am) * VTD_PAGE_SIZE; =20 QLIST_FOREACH(vtd_as, &(s->vtd_as_with_notifiers), next) { + if (pasid !=3D PCI_NO_PASID && pasid !=3D vtd_as->pasid) + continue; ret =3D vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->devfn, &ce); - if (!ret && domain_id =3D=3D vtd_get_domain_id(s, &ce)) { + if (!ret && domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pas= id)) { if (vtd_as_has_map_notifier(vtd_as)) { /* * As long as we have MAP notifications registered in @@ -2093,7 +2203,7 @@ static void vtd_iotlb_page_invalidate(IntelIOMMUState= *s, uint16_t domain_id, vtd_iommu_lock(s); g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_page, &info); vtd_iommu_unlock(s); - vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am); + vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am, PCI_NO_PASID); } =20 /* Flush IOTLB @@ -3162,6 +3272,7 @@ static Property vtd_properties[] =3D { DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE), DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FA= LSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), + DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true), DEFINE_PROP_BOOL("dma-translation", IntelIOMMUState, dma_translation, = true), DEFINE_PROP_END_OF_LIST(), @@ -3436,7 +3547,64 @@ static const MemoryRegionOps vtd_mem_ir_ops =3D { }, }; =20 -VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, int devf= n) +static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, + hwaddr addr, bool is_write) +{ + IntelIOMMUState *s =3D vtd_as->iommu_state; + uint8_t bus_n =3D pci_bus_num(vtd_as->bus); + uint16_t sid =3D PCI_BUILD_BDF(bus_n, vtd_as->devfn); + bool is_fpd_set =3D false; + VTDContextEntry ce; + + assert(vtd_as->pasid !=3D PCI_NO_PASID); + + /* Try out best to fetch FPD, we can't do anything more */ + if (vtd_dev_to_context_entry(s, bus_n, vtd_as->devfn, &ce) =3D=3D 0) { + is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; + if (!is_fpd_set && s->root_scalable) { + vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, vtd_as->pasid); + } + } + + vtd_report_fault(s, VTD_FR_SM_INTERRUPT_ADDR, + is_fpd_set, sid, addr, is_write, + true, vtd_as->pasid); +} + +static MemTxResult vtd_mem_ir_fault_read(void *opaque, hwaddr addr, + uint64_t *data, unsigned size, + MemTxAttrs attrs) +{ + vtd_report_ir_illegal_access(opaque, addr, false); + + return MEMTX_ERROR; +} + +static MemTxResult vtd_mem_ir_fault_write(void *opaque, hwaddr addr, + uint64_t value, unsigned size, + MemTxAttrs attrs) +{ + vtd_report_ir_illegal_access(opaque, addr, true); + + return MEMTX_ERROR; +} + +static const MemoryRegionOps vtd_mem_ir_fault_ops =3D { + .read_with_attrs =3D vtd_mem_ir_fault_read, + .write_with_attrs =3D vtd_mem_ir_fault_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 1, + .max_access_size =3D 8, + }, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 8, + }, +}; + +VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, + int devfn, unsigned int pasid) { /* * We can't simply use sid here since the bus number might not be @@ -3445,6 +3613,7 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, = PCIBus *bus, int devfn) struct vtd_as_key key =3D { .bus =3D bus, .devfn =3D devfn, + .pasid =3D pasid, }; VTDAddressSpace *vtd_dev_as; char name[128]; @@ -3455,13 +3624,21 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s= , PCIBus *bus, int devfn) =20 new_key->bus =3D bus; new_key->devfn =3D devfn; + new_key->pasid =3D pasid; + + if (pasid =3D=3D PCI_NO_PASID) { + snprintf(name, sizeof(name), "vtd-%02x.%x", PCI_SLOT(devfn), + PCI_FUNC(devfn)); + } else { + snprintf(name, sizeof(name), "vtd-%02x.%x-pasid-%x", PCI_SLOT(= devfn), + PCI_FUNC(devfn), pasid); + } =20 - snprintf(name, sizeof(name), "vtd-%02x.%x", PCI_SLOT(devfn), - PCI_FUNC(devfn)); vtd_dev_as =3D g_new0(VTDAddressSpace, 1); =20 vtd_dev_as->bus =3D bus; vtd_dev_as->devfn =3D (uint8_t)devfn; + vtd_dev_as->pasid =3D pasid; vtd_dev_as->iommu_state =3D s; vtd_dev_as->context_cache_entry.context_cache_gen =3D 0; vtd_dev_as->iova_tree =3D iova_tree_new(); @@ -3502,6 +3679,24 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s,= PCIBus *bus, int devfn) VTD_INTERRUPT_ADDR_FIRST, &vtd_dev_as->iommu_ir, 1); =20 + /* + * This region is used for catching fault to access interrupt + * range via passthrough + PASID. See also + * vtd_switch_address_space(). We can't use alias since we + * need to know the sid which is valid for MSI who uses + * bus_master_as (see msi_send_message()). + */ + memory_region_init_io(&vtd_dev_as->iommu_ir_fault, OBJECT(s), + &vtd_mem_ir_fault_ops, vtd_dev_as, "vtd-no-i= r", + VTD_INTERRUPT_ADDR_SIZE); + /* + * Hook to root since when PT is enabled vtd_dev_as->iommu + * will be disabled. + */ + memory_region_add_subregion_overlap(MEMORY_REGION(&vtd_dev_as->roo= t), + VTD_INTERRUPT_ADDR_FIRST, + &vtd_dev_as->iommu_ir_fault, 2= ); + /* * Hook both the containers under the root container, we * switch between DMAR & noDMAR by enable/disable @@ -3622,7 +3817,7 @@ static void vtd_iommu_replay(IOMMUMemoryRegion *iommu= _mr, IOMMUNotifier *n) "legacy mode", bus_n, PCI_SLOT(vtd_as->devfn), PCI_FUNC(vtd_as->devfn), - vtd_get_domain_id(s, &ce), + vtd_get_domain_id(s, &ce, vtd_as->pasid), ce.hi, ce.lo); if (vtd_as_has_map_notifier(vtd_as)) { /* This is required only for MAP typed notifiers */ @@ -3632,10 +3827,10 @@ static void vtd_iommu_replay(IOMMUMemoryRegion *iom= mu_mr, IOMMUNotifier *n) .notify_unmap =3D false, .aw =3D s->aw_bits, .as =3D vtd_as, - .domain_id =3D vtd_get_domain_id(s, &ce), + .domain_id =3D vtd_get_domain_id(s, &ce, vtd_as->pasid), }; =20 - vtd_page_walk(s, &ce, 0, ~0ULL, &info); + vtd_page_walk(s, &ce, 0, ~0ULL, &info, vtd_as->pasid); } } else { trace_vtd_replay_ce_invalid(bus_n, PCI_SLOT(vtd_as->devfn), @@ -3735,6 +3930,10 @@ static void vtd_init(IntelIOMMUState *s) s->ecap |=3D VTD_ECAP_SC; } =20 + if (s->pasid) { + s->ecap |=3D VTD_ECAP_PASID; + } + vtd_reset_caches(s); =20 /* Define registers with default values and bit semantics */ @@ -3808,7 +4007,7 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, = void *opaque, int devfn) =20 assert(0 <=3D devfn && devfn < PCI_DEVFN_MAX); =20 - vtd_as =3D vtd_find_add_as(s, bus, devfn); + vtd_as =3D vtd_find_add_as(s, bus, devfn, PCI_NO_PASID); return &vtd_as->as; } =20 @@ -3851,6 +4050,11 @@ static bool vtd_decide_config(IntelIOMMUState *s, Er= ror **errp) return false; } =20 + if (s->pasid && !s->scalable_mode) { + error_setg(errp, "Need to set scalable mode for PASID"); + return false; + } + return true; } =20 @@ -3887,6 +4091,16 @@ static void vtd_realize(DeviceState *dev, Error **er= rp) X86MachineState *x86ms =3D X86_MACHINE(ms); PCIBus *bus =3D pcms->bus; IntelIOMMUState *s =3D INTEL_IOMMU_DEVICE(dev); + X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); + + if (s->pasid && x86_iommu->dt_supported) { + /* PASID-based-Device-TLB Invalidate Descriptor is not + * implemented and it requires support from vhost layer which + * needs to be implemented in the future. + */ + error_setg(errp, "PASID based device IOTLB is not supported"); + return; + } =20 if (!vtd_decide_config(s, errp)) { return; @@ -3913,7 +4127,7 @@ static void vtd_realize(DeviceState *dev, Error **err= p) =20 sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->csrmem); /* No corresponding destroy */ - s->iotlb =3D g_hash_table_new_full(vtd_uint64_hash, vtd_uint64_equal, + s->iotlb =3D g_hash_table_new_full(vtd_iotlb_hash, vtd_iotlb_equal, g_free, g_free); s->vtd_address_spaces =3D g_hash_table_new_full(vtd_as_hash, vtd_as_eq= ual, g_free, g_free); diff --git a/hw/i386/trace-events b/hw/i386/trace-events index e49814dd64..04fd71bfc4 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -12,6 +12,8 @@ vtd_inv_desc_cc_devices(uint16_t sid, uint16_t fmask) "co= ntext invalidate device vtd_inv_desc_iotlb_global(void) "iotlb invalidate global" vtd_inv_desc_iotlb_domain(uint16_t domain) "iotlb invalidate whole domain = 0x%"PRIx16 vtd_inv_desc_iotlb_pages(uint16_t domain, uint64_t addr, uint8_t mask) "io= tlb invalidate domain 0x%"PRIx16" addr 0x%"PRIx64" mask 0x%"PRIx8 +vtd_inv_desc_iotlb_pasid_pages(uint16_t domain, uint64_t addr, uint8_t mas= k, uint32_t pasid) "iotlb invalidate domain 0x%"PRIx16" addr 0x%"PRIx64" ma= sk 0x%"PRIx8" pasid 0x%"PRIx32 +vtd_inv_desc_iotlb_pasid(uint16_t domain, uint32_t pasid) "iotlb invalidat= e domain 0x%"PRIx16" pasid 0x%"PRIx32 vtd_inv_desc_wait_sw(uint64_t addr, uint32_t data) "wait invalidate status= write addr 0x%"PRIx64" data 0x%"PRIx32 vtd_inv_desc_wait_irq(const char *msg) "%s" vtd_inv_desc_wait_write_fail(uint64_t hi, uint64_t lo) "write fail for wai= t desc hi 0x%"PRIx64" lo 0x%"PRIx64 --=20 MST