From nobody Wed Nov 30 10:08:20 2022 X-Original-To: dev-commits-src-all@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 4NMZfF1g0Fz4jVm2; Wed, 30 Nov 2022 10:08:21 +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 4NMZfF165rz4L04; Wed, 30 Nov 2022 10:08:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669802901; 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=4hU1rHtxpINaAoWkOVwn/pRFH2MwqxvOpCxmlmrAvd8=; b=Cc3EQMTsJaY00lkJ8WPtSpJJ77/mCX4NcK6eSkeFHq54AavO92A5+OGOBfqYfJDnUOs4Z2 /oQ01zdYm+sc600784T4Z5+gKco3ZSVUYkMs52zBs/+C6bqPEjsiNVBmN5lrQ1qH0GqmrN E0YjvsSdPf3JPVCCZqjuEc7Vhxk2VgJw8SwV2NI2oNj881tw2mJ+O1J36uyrjxyU4RBplZ Ih+IpwsdipjAmOmm/RWeiCyI2BceqcbNGhY8s3SgZy0ud1wX2lHhykIJ7J8qTBAmsSNJuN tpKnlCRlPJbVt64hN3a0yDkIsG75mrwRWf6wmZl8775+cDMYzX1yXT5VUu+VHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669802901; 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=4hU1rHtxpINaAoWkOVwn/pRFH2MwqxvOpCxmlmrAvd8=; b=wx7lhQSFY2gr8XSxjyPwxLh0AbAx3p6OkGqfCVA/82ZWIif5ytAEHIWYMzJUyxQcBcQFjG SvKyepyMSG4rbU6M4uLZuonN3QoZDJXtiqoXYaIHCcNblCl7MpgrIZXHKqaUJS6sxCnpHW rEsDHVFTGuV7yK5kj4vBP7RcyKzdxDpRblGiK5oLLRX4fNXhRlVpeMv5MnvZ+J9MuX+QJZ ncJOX6ZETxhJhVbiNfM1z86fDVfi4B7Cof5S/P90Ee4x0oQHM11PTznXn3CE1sdGI+BDxW E24MSuVq8mUExESscalTMpSIrLDMQN7EDt3YfLZa31P0hwmWTi9OTTERMHxPQA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1669802901; a=rsa-sha256; cv=none; b=Ele08qNox1/3mVhw5/B+qClgtBR4zFNrBQGIf54+Gitlj4JGhZ+zZUzezsdnj4bZJ49d1T gzoAX+a/q6X75oMY6kWW9Z71Avsao2k9vmtoSMiLPwE1FOQ3f//cM/eqdkeodRvK7E01H8 aQHDxw25wCDjFjLNnygTQCItx8u2qVbjI78S9l5eJcYOC/+YEHZqrWL6bWoS+a9zdcs/aq 6OBl1weVoxaNug9hPwoB7pwEeyTz9MCB5ZJxe0W2vPpbBqTNdkL6e/DNPRaL3YlUwd09g4 xnjXjOAQ7nPa306mTwtVqCtkdZbWIYkPWEgbA1KJ8WMnkBBFImu4TmGzRKcT0g== 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 4NMZfF07WTzsFY; Wed, 30 Nov 2022 10:08:21 +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 2AUA8KRt050799; Wed, 30 Nov 2022 10:08:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2AUA8K3b050798; Wed, 30 Nov 2022 10:08:20 GMT (envelope-from git) Date: Wed, 30 Nov 2022 10:08:20 GMT Message-Id: <202211301008.2AUA8K3b050798@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: c43659fb1294 - stable/13 - bhyve: use basl to load ACPI tables List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@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: c43659fb1294f5940fb3cd67c0dd0f5f961d360f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=c43659fb1294f5940fb3cd67c0dd0f5f961d360f commit c43659fb1294f5940fb3cd67c0dd0f5f961d360f Author: Corvin Köhne AuthorDate: 2022-11-04 11:30:37 +0000 Commit: Corvin Köhne CommitDate: 2022-11-30 07:03:47 +0000 bhyve: use basl to load ACPI tables Load the blobs compiled by iasl into a basl_table. The basl_table is a temporary buffer which copies the ACPI tables into guest memory for us. This allows us in the future to pass the blobs over the qemu fwcfg interface to the guest. Reviewed by: jhb, markj Approved by: manu (mentor) MFC after: 2 weeks Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D36986 (cherry picked from commit 22a2e94f3805195bf8195c81f7fda4157ebae372) --- usr.sbin/bhyve/acpi.c | 54 +++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/usr.sbin/bhyve/acpi.c b/usr.sbin/bhyve/acpi.c index e22bfa0d4ef9..ac157505b7ba 100644 --- a/usr.sbin/bhyve/acpi.c +++ b/usr.sbin/bhyve/acpi.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -838,18 +839,26 @@ static int basl_load(struct vmctx *ctx, int fd, uint64_t off) { struct stat sb; - void *gaddr; + void *addr; if (fstat(fd, &sb) < 0) return (errno); - - gaddr = paddr_guest2host(ctx, basl_acpi_base + off, sb.st_size); - if (gaddr == NULL) + + addr = calloc(1, sb.st_size); + if (addr == NULL) return (EFAULT); - if (read(fd, gaddr, sb.st_size) < 0) + if (read(fd, addr, sb.st_size) < 0) return (errno); + struct basl_table *table; + + uint8_t name[ACPI_NAMESEG_SIZE + 1] = { 0 }; + memcpy(name, addr, sizeof(name) - 1 /* last char is '\0' */); + BASL_EXEC( + basl_table_create(&table, ctx, name, BASL_TABLE_ALIGNMENT, off)); + BASL_EXEC(basl_table_append_bytes(table, addr, sb.st_size)); + return (0); } @@ -968,30 +977,25 @@ acpi_build(struct vmctx *ctx, int ncpu) if (getenv("BHYVE_ACPI_KEEPTMPS")) basl_keep_temps = 1; - err = basl_make_templates(); + BASL_EXEC(basl_init()); + + BASL_EXEC(basl_make_templates()); /* * Run through all the ASL files, compiling them and * copying them into guest memory */ - if (err == 0) - err = basl_compile(ctx, basl_fwrite_rsdp, 0); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_rsdt, RSDT_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_xsdt, XSDT_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_madt, MADT_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_fadt, FADT_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_hpet, HPET_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_mcfg, MCFG_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_facs, FACS_OFFSET); - if (err == 0) - err = basl_compile(ctx, basl_fwrite_dsdt, DSDT_OFFSET); + BASL_EXEC(basl_compile(ctx, basl_fwrite_rsdp, 0)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_rsdt, RSDT_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_xsdt, XSDT_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_madt, MADT_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_fadt, FADT_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_hpet, HPET_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_mcfg, MCFG_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_facs, FACS_OFFSET)); + BASL_EXEC(basl_compile(ctx, basl_fwrite_dsdt, DSDT_OFFSET)); + + BASL_EXEC(basl_finish()); - return (err); + return (0); }