From owner-svn-src-projects@FreeBSD.ORG Fri Nov 30 07:00:15 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 61A29D82; Fri, 30 Nov 2012 07:00:15 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 45B2E8FC12; Fri, 30 Nov 2012 07:00:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qAU70F6e036051; Fri, 30 Nov 2012 07:00:15 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qAU70Ftt036049; Fri, 30 Nov 2012 07:00:15 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201211300700.qAU70Ftt036049@svn.freebsd.org> From: Peter Grehan Date: Fri, 30 Nov 2012 07:00:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r243704 - projects/bhyve/usr.sbin/bhyve X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Nov 2012 07:00:15 -0000 Author: grehan Date: Fri Nov 30 07:00:14 2012 New Revision: 243704 URL: http://svnweb.freebsd.org/changeset/base/243704 Log: - Add in an XSDT to stop acpidump from exiting with a 'XSDT corrupted' error - Fix up OEMID/OEM Table ID string padding in the DSDT. Output on a verbose boot now looks like ... ACPI: RSDP 0xf0400 00024 (v02 BHYVE ) ACPI: XSDT 0xf0480 00034 (v01 BHYVE BVXSDT 00000001 INTL 20120320) ACPI: APIC 0xf0500 0004A (v01 BHYVE BVMADT 00000001 INTL 20120320) ACPI: FACP 0xf0600 0010C (v05 BHYVE BVFACP 00000001 INTL 20120320) ACPI: DSDT 0xf0800 000F2 (v02 BHYVE BVDSDT 00000001 INTL 20120320) ACPI: FACS 0xf0780 00040 ... Obtained from: NetApp Modified: projects/bhyve/usr.sbin/bhyve/acpi.c Modified: projects/bhyve/usr.sbin/bhyve/acpi.c ============================================================================== --- projects/bhyve/usr.sbin/bhyve/acpi.c Fri Nov 30 05:40:24 2012 (r243703) +++ projects/bhyve/usr.sbin/bhyve/acpi.c Fri Nov 30 07:00:14 2012 (r243704) @@ -40,11 +40,12 @@ * Layout * ------ * RSDP -> 0xf0400 (36 bytes fixed) - * RSDT -> 0xf0440 (36 bytes + 4*N table addrs, 2 used) - * MADT -> 0xf04a0 (depends on #CPUs) - * FADT -> 0xf0600 (268 bytes) - * FACS -> 0xf0780 (64 bytes) - * DSDT -> 0xf0800 (variable - can go up to 0x100000) + * RSDT -> 0xf0440 (36 bytes + 4*N table addrs, 2 used) + * XSDT -> 0xf0480 (36 bytes + 8*N table addrs, 2 used) + * MADT -> 0xf0500 (depends on #CPUs) + * FADT -> 0xf0600 (268 bytes) + * FACS -> 0xf0780 (64 bytes) + * DSDT -> 0xf0800 (variable - can go up to 0x100000) */ #include @@ -69,7 +70,8 @@ __FBSDID("$FreeBSD$"); */ #define BHYVE_ACPI_BASE 0xf0400 #define RSDT_OFFSET 0x040 -#define MADT_OFFSET 0x0a0 +#define XSDT_OFFSET 0x080 +#define MADT_OFFSET 0x100 #define FADT_OFFSET 0x200 #define FACS_OFFSET 0x380 #define DSDT_OFFSET 0x400 @@ -121,7 +123,8 @@ basl_fwrite_rsdp(FILE *fp) EFPRINTF(fp, "[0004]\t\tRSDT Address : %08X\n", basl_acpi_base + RSDT_OFFSET); EFPRINTF(fp, "[0004]\t\tLength : 00000024\n"); - EFPRINTF(fp, "[0008]\t\tXSDT Address : 0000000000000000\n"); + EFPRINTF(fp, "[0008]\t\tXSDT Address : 00000000%08X\n", + basl_acpi_base + XSDT_OFFSET); EFPRINTF(fp, "[0001]\t\tExtended Checksum : 00\n"); EFPRINTF(fp, "[0003]\t\tReserved : 000000\n"); @@ -170,6 +173,42 @@ err_exit: } static int +basl_fwrite_xsdt(FILE *fp) +{ + int err; + + err = 0; + + EFPRINTF(fp, "/*\n"); + EFPRINTF(fp, " * bhyve XSDT template\n"); + EFPRINTF(fp, " */\n"); + EFPRINTF(fp, "[0004]\t\tSignature : \"XSDT\"\n"); + EFPRINTF(fp, "[0004]\t\tTable Length : 00000000\n"); + EFPRINTF(fp, "[0001]\t\tRevision : 01\n"); + EFPRINTF(fp, "[0001]\t\tChecksum : 00\n"); + EFPRINTF(fp, "[0006]\t\tOem ID : \"BHYVE \"\n"); + EFPRINTF(fp, "[0008]\t\tOem Table ID : \"BVXSDT \"\n"); + EFPRINTF(fp, "[0004]\t\tOem Revision : 00000001\n"); + /* iasl will fill in the compiler ID/revision fields */ + EFPRINTF(fp, "[0004]\t\tAsl Compiler ID : \"xxxx\"\n"); + EFPRINTF(fp, "[0004]\t\tAsl Compiler Revision : 00000000\n"); + EFPRINTF(fp, "\n"); + + /* Add in pointers to the MADT and FADT */ + EFPRINTF(fp, "[0004]\t\tACPI Table Address 0 : 00000000%08X\n", + basl_acpi_base + MADT_OFFSET); + EFPRINTF(fp, "[0004]\t\tACPI Table Address 1 : 00000000%08X\n", + basl_acpi_base + FADT_OFFSET); + + EFFLUSH(fp); + + return (0); + +err_exit: + return (errno); +} + +static int basl_fwrite_madt(FILE *fp) { int err; @@ -491,7 +530,7 @@ basl_fwrite_dsdt(FILE *fp) EFPRINTF(fp, " * bhyve DSDT template\n"); EFPRINTF(fp, " */\n"); EFPRINTF(fp, "DefinitionBlock (\"bhyve_dsdt.aml\", \"DSDT\", 2," - "\"BHYV\", \"BVDSDT\", 0x00000001)\n"); + "\"BHYVE \", \"BVDSDT \", 0x00000001)\n"); EFPRINTF(fp, "{\n"); EFPRINTF(fp, " Scope (_SB)\n"); EFPRINTF(fp, " {\n"); @@ -752,6 +791,7 @@ static struct { { { basl_fwrite_rsdp, 0}, { basl_fwrite_rsdt, RSDT_OFFSET }, + { basl_fwrite_xsdt, XSDT_OFFSET }, { basl_fwrite_madt, MADT_OFFSET }, { basl_fwrite_fadt, FADT_OFFSET }, { basl_fwrite_facs, FACS_OFFSET },