From owner-p4-projects@FreeBSD.ORG Wed Sep 3 23:04:52 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 10FC916A4C1; Wed, 3 Sep 2003 23:04:52 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DF63416A4BF for ; Wed, 3 Sep 2003 23:04:51 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6B7BF43F75 for ; Wed, 3 Sep 2003 23:04:51 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h8464p0U064199 for ; Wed, 3 Sep 2003 23:04:51 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h8464oHx064196 for perforce@freebsd.org; Wed, 3 Sep 2003 23:04:50 -0700 (PDT) Date: Wed, 3 Sep 2003 23:04:50 -0700 (PDT) Message-Id: <200309040604.h8464oHx064196@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 37483 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Sep 2003 06:04:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=37483 Change 37483 by marcel@marcel_nfs on 2003/09/03 23:04:00 Keep track of the patches I'm sending to njl@. This patch refines the way we print the RSD PTR and properly detects the RSDT or XSDT, depending on the revision. Affected files ... .. //depot/projects/ia64/usr.sbin/acpi/acpidump/acpi.c#14 edit Differences ... ==== //depot/projects/ia64/usr.sbin/acpi/acpidump/acpi.c#14 (text+ko) ==== @@ -425,11 +425,22 @@ static void acpi_print_rsd_ptr(struct ACPIrsdp *rp) { + const char *version; printf(BEGIN_COMMENT); - printf(" RSD PTR: Checksum=%d, OEMID=", rp->sum); + printf(" RSD PTR: OEM="); acpi_print_string(rp->oem, 6); - printf(", RsdtAddress=0x%08x\n", rp->rsdt_addr); + switch (rp->revision) { + case 0: version = "ACPI 1.0"; break; + case 2: version = "ACPI 2.0"; break; + default: version = "unknown"; break; + } + printf(", rev=%s (%d)\n", version, rp->revision); + if (rp->revision >= 2) + printf("\tXSDT=0x%08lx, length=%u, cksum=%u\n", + (u_long)rp->xsdt_addr, rp->length, rp->xsum); + else + printf("\tRSDT=0x%08x, cksum=%u\n", rp->rsdt_addr, rp->sum); printf(END_COMMENT); } @@ -469,11 +480,17 @@ if (tflag) acpi_print_rsd_ptr(rp); - rsdp = (struct ACPIsdt *)acpi_map_sdt(rp->rsdt_addr); - if (memcmp(rsdp->signature, "RSDT", 4) != 0 || - acpi_checksum(rsdp, rsdp->len) != 0) - errx(1, "RSDT is corrupted"); - + if (rp->revision < 2) { + rsdp = (struct ACPIsdt *)acpi_map_sdt(rp->rsdt_addr); + if (memcmp(rsdp->signature, "RSDT", 4) != 0 || + acpi_checksum(rsdp, rsdp->len) != 0) + errx(1, "RSDT is corrupted"); + } else { + rsdp = (struct ACPIsdt *)acpi_map_sdt(rp->xsdt_addr); + if (memcmp(rsdp->signature, "XSDT", 4) != 0 || + acpi_checksum(rsdp, rsdp->len) != 0) + errx(1, "XSDT is corrupted"); + } return (rsdp); }