From nobody Mon May 08 08:25:26 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QFDr72Wr8z49ZT2; Mon, 8 May 2023 08:25:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QFDr71LXvz3lJK; Mon, 8 May 2023 08:25:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683534327; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=42N8ALR0PSlufZfS0m6OX2CDdguICEwF73FxPH8caC0=; b=jyQ4TqLstZCaBWmqIFNSihlvZTL1vfgzzgHqhHARPw12BXzKhPaXNh0QvPvgYc1tGQ2w7u HKmh4p4J+O+gR1Jnfe+JjZYCHuDdoxct4JI/jUQ6FxOSl0T3ZgW+Zk7h7ydmGnLkCS5fOm cvra/UZu1+aF8oJvd69NOu/7Xa0gO/rSOMfIqMRZsPfEwWpi2/SMDcAGWD0iK0B4PboHUi DCwbYDOSQBuzXgux9L3tTp2KnIK2ut0ztAwpVdfNqBXOKxXup0/jXvf+g9p71FuOn4E/WF Uet+EmUMuloybfDOA4tcOyiGjR5ru3n/m44N0YVXXV6aQHMM8/F6KpR/FUxQqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683534327; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=42N8ALR0PSlufZfS0m6OX2CDdguICEwF73FxPH8caC0=; b=CkhmXvO6VGjMLLTCBpHk+MBYeKBF3UA2i2kb1LVfOHTjKksRdGjG8NoYmwtu9dSDjssx48 MVctuuTRZVXvVXDeKTxex6Fvy9f1UQ1ODPhr7+apob2g5xQCk5OYgdQGgEiLe6OvNgMpjC +6x6JxWMuRaUdG3mQuEsrcdEG8wrhDQQgGDSrJlP+zUiBvtreadbMX7pj7Qnq9HX+F7jBT cxburvXp41Zg0oeoOGLGhzb81c2nzaflXsIYL2hpcbpfFA9b3P114fT1lZaTyFsm8K/61M 1PklT/aZGlLa/xeGPkKhZ9fpNcozVjkcBfPGKcQZoXf6mq3gk51nMJkzAVsF3g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1683534327; a=rsa-sha256; cv=none; b=KiipD4i4Zro5QxYdyhEodqU34yvwZHibFAq79U8c4/JHXkqtoKV/DjQldQH4/6nJtJr3vb toFXj+/wZKHp032o6y3lSt6McziKjeuGYX3Uj3WfCZpQHOR5RJWKjmzCRNCRnl/DvDER4m aRGleZkavlvTOs1mFJMsyMF6Q0HMVmO90HPpmN4LHaUid49ZaG781uE/bw4KPfB0c+FWy2 i3Lt1u0DYnIw4RDMshx9TIW0ZNr0q54deVVC1k27xBskYI9YBSNrtiR+XkZ1TyYDFvpRMb yeMdlNgfRR3TrcPHZJ3klt3GB4KpQUjxK973NXPn7JDubKVT0YaTh3Adl7If4w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QFDr67444zsyH; Mon, 8 May 2023 08:25:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 3488PQX3050329; Mon, 8 May 2023 08:25:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 3488PQCg050328; Mon, 8 May 2023 08:25:26 GMT (envelope-from git) Date: Mon, 8 May 2023 08:25:26 GMT Message-Id: <202305080825.3488PQCg050328@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: a02d136df0bc - stable/13 - bhyve: make use of qemus acpi table loader List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a02d136df0bc48e7d33e43c4f754e58ec63f5629 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=a02d136df0bc48e7d33e43c4f754e58ec63f5629 commit a02d136df0bc48e7d33e43c4f754e58ec63f5629 Author: Corvin Köhne AuthorDate: 2022-04-06 09:10:37 +0000 Commit: Corvin Köhne CommitDate: 2023-05-08 08:21:30 +0000 bhyve: make use of qemus acpi table loader Add all acpi tables to qemus acpi table loader. This passes the acpi tables by fwcfg to the guest. Reviewed by: markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D38439 (cherry picked from commit 7959d80d99ae06ba06cbe7a206ef9bc513e4109b) --- usr.sbin/bhyve/basl.c | 21 ++++++++++++++++++++- usr.sbin/bhyve/basl.h | 4 ++-- usr.sbin/bhyve/qemu_fwcfg.h | 2 ++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/usr.sbin/bhyve/basl.c b/usr.sbin/bhyve/basl.c index e002c3724ef0..348174c6520d 100644 --- a/usr.sbin/bhyve/basl.c +++ b/usr.sbin/bhyve/basl.c @@ -20,6 +20,7 @@ #include #include "basl.h" +#include "qemu_loader.h" struct basl_table_checksum { STAILQ_ENTRY(basl_table_checksum) chain; @@ -56,6 +57,8 @@ struct basl_table { static STAILQ_HEAD(basl_table_list, basl_table) basl_tables = STAILQ_HEAD_INITIALIZER( basl_tables); +static struct qemu_loader *basl_loader; + static __inline uint64_t basl_le_dec(void *pp, size_t len) { @@ -163,6 +166,12 @@ basl_finish_install_guest_tables(struct basl_table *const table, uint32_t *const } memcpy(gva, table->data, table->len); + /* Cause guest bios to copy the ACPI table into guest memory. */ + BASL_EXEC( + qemu_fwcfg_add_file(table->fwcfg_name, table->len, table->data)); + BASL_EXEC(qemu_loader_alloc(basl_loader, table->fwcfg_name, + table->alignment, QEMU_LOADER_ALLOC_HIGH)); + return (0); } @@ -219,6 +228,10 @@ basl_finish_patch_checksums(struct basl_table *const table) sum += *(gva + i); } *checksum_gva = -sum; + + /* Cause guest bios to patch the checksum. */ + BASL_EXEC(qemu_loader_add_checksum(basl_loader, + table->fwcfg_name, checksum->off, checksum->start, len)); } return (0); @@ -286,6 +299,11 @@ basl_finish_patch_pointers(struct basl_table *const table) val = basl_le_dec(gva + pointer->off, pointer->size); val += BHYVE_ACPI_BASE + src_table->off; basl_le_enc(gva + pointer->off, val, pointer->size); + + /* Cause guest bios to patch the pointer. */ + BASL_EXEC( + qemu_loader_add_pointer(basl_loader, table->fwcfg_name, + src_table->fwcfg_name, pointer->off, pointer->size)); } return (0); @@ -335,6 +353,7 @@ basl_finish(void) */ BASL_EXEC(basl_finish_patch_checksums(table)); } + BASL_EXEC(qemu_loader_finish(basl_loader)); return (0); } @@ -342,7 +361,7 @@ basl_finish(void) int basl_init(void) { - return (0); + return (qemu_loader_create(&basl_loader, QEMU_FWCFG_FILE_TABLE_LOADER)); } int diff --git a/usr.sbin/bhyve/basl.h b/usr.sbin/bhyve/basl.h index c7fdd783a9d5..4d9ab4c589a8 100644 --- a/usr.sbin/bhyve/basl.h +++ b/usr.sbin/bhyve/basl.h @@ -11,6 +11,8 @@ #include #pragma GCC diagnostic pop +#include "qemu_fwcfg.h" + #define ACPI_GAS_ACCESS_WIDTH_LEGACY 0 #define ACPI_GAS_ACCESS_WIDTH_UNDEFINED 0 #define ACPI_GAS_ACCESS_WIDTH_BYTE 1 @@ -59,8 +61,6 @@ } \ } while (0) -#define QEMU_FWCFG_MAX_NAME 56 - struct basl_table; void basl_fill_gas(ACPI_GENERIC_ADDRESS *gas, uint8_t space_id, diff --git a/usr.sbin/bhyve/qemu_fwcfg.h b/usr.sbin/bhyve/qemu_fwcfg.h index f3846d64085a..d318d0434285 100644 --- a/usr.sbin/bhyve/qemu_fwcfg.h +++ b/usr.sbin/bhyve/qemu_fwcfg.h @@ -13,6 +13,8 @@ #define QEMU_FWCFG_MAX_ENTRIES 0x4000 #define QEMU_FWCFG_MAX_NAME 56 +#define QEMU_FWCFG_FILE_TABLE_LOADER "etc/table-loader" + struct qemu_fwcfg_item { uint32_t size; uint8_t *data;