From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a5d:6089:0:0:0:0:0 with SMTP id w9csp2334745wrt; Thu, 29 Nov 2018 05:25:59 -0800 (PST) X-Google-Smtp-Source: AFSGD/UgfRtdenk3aGjkmp/o02qq/XX3ps5eZhjwWdiXPcMIC8Mg0gs5EhI0G7JZr47MJrPY4XGY X-Received: by 2002:a5b:7c7:: with SMTP id t7-v6mr1250503ybq.396.1543497959125; Thu, 29 Nov 2018 05:25:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543497959; cv=none; d=google.com; s=arc-20160816; b=JkWzIjk5MM8Mp0ArFWU1GPZ1QQ8f+O2R1LLAnCjSswMB5bCyETLfr/SPustBbDAs5f P4BNQmGEtUT0bZbeMwF/nisixvHTFlGa5ygQLkiwayXTK2ZDSMrRvod7Ys32+7Px4d/T dHaPMWdUKfqAsCUUFsnuo1Vi7Z7neomtvfB4esBeaCHzT2gIhZqxD2CmZqYm34eULITc J6Uyp9vaMopApUEMPtIMGSxTRoEPrc12JVOlVXC3N6cNecdVraLTtT4B2hj+VkRNq4t4 +3G+lJtQCZL68fthSnkIfBP7r8WiG9VnCGkIy7h0Jm6C6hjlGjZiOoS1Xzgo2AkMKyQw vc9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from; bh=jDewqU003IgehhT3JLaC8z//cTf89Ar/TbUGlT3TxcI=; b=ScaOsQBnpMSmYjEcJz0LLGgxmkwbZLgAyYACKrD5/TGnkh15Ct5TkpvYWtzor36tAc Vf3S7KWhnFLVnQil6G+dRcWAidfRsgJL8OWC9MYlFZjGAJ36lXYils+f7uqXUTjrcPkX asmF2dHrgtDxfR78PJoh9zs+w1kOovT/1/oAUeaeAeDFRaR1gXCsk/xky/Ll5bxC3Maq hBJyv9+fa/YHMeQOh0zy9EJASm5VPKLUVjkmDGUnINM9FMiqI17zjUPENZMz81Wp8jsJ c0RAofouR9FGhLzcIOD3iv0NAAT/awgORMoLVQQJwGOcJd/iX2el3F5XVF0Q3LsNXKUG 60fQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id z185-v6si1096034ybc.20.2018.11.29.05.25.58 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 29 Nov 2018 05:25:59 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from localhost ([::1]:54133 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSMKM-0000Jv-Bp for alex.bennee@linaro.org; Thu, 29 Nov 2018 08:25:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSMJo-0000Fu-1M for qemu-devel@nongnu.org; Thu, 29 Nov 2018 08:25:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSMJj-0001oG-Ga for qemu-devel@nongnu.org; Thu, 29 Nov 2018 08:25:23 -0500 Received: from mga03.intel.com ([134.134.136.65]:30951) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gSMJj-0001hj-6S; Thu, 29 Nov 2018 08:25:19 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2018 05:25:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,294,1539673200"; d="scan'208";a="97547186" Received: from hharjula-mobl.ger.corp.intel.com (HELO localhost.localdomain) ([10.252.29.114]) by fmsmga008.fm.intel.com with ESMTP; 29 Nov 2018 05:25:10 -0800 From: Samuel Ortiz To: qemu-devel@nongnu.org Date: Thu, 29 Nov 2018 14:24:22 +0100 Message-Id: <20181129132428.333-3-sameo@linux.intel.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181129132428.333-1-sameo@linux.intel.com> References: <20181129132428.333-1-sameo@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.65 Subject: [Qemu-devel] [PATCH v2 2/8] hw: arm: acpi: Fix incorrect checksums in RSDP X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Peter Maydell , Thomas Huth , Eduardo Habkost , Ben Warren , "Michael S. Tsirkin" , Ard Biesheuvel , Shannon Zhao , qemu-arm@nongnu.org, Igor Mammedov , Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-devel" X-TUID: 5A4Es+LHiEsv From: Igor Mammedov When RSDP table was introduced (d4bec5d87), we calculated only legacy checksum, and that was incorrect as it - specified rev=2 and forgot about extended checksum. - legacy checksum calculated on full table instead of the 1st 20 bytes Fix it by adding extended checksum calculation and using correct size for legacy checksum. While at it use explicit constants to specify sub/full tables sizes instead of relying on AcpiRsdpDescriptor size and fields offsets. The follow up commits will convert this table to build_append_int_noprefix() API, will use constants anyway and remove unused AcpiRsdpDescriptor structure. Based on "[PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP" by Samuel Ortiz, who did it right in his impl. Fixes: d4bec5d87 (hw/arm/virt-acpi-build: Generate RSDP table) Signed-off-by: Igor Mammedov CC: Ard Biesheuvel CC: Shannon Zhao Reviewed-by: Samuel Ortiz Signed-off-by: Samuel Ortiz --- hw/arm/virt-acpi-build.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index fcaa350892..0835900052 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -390,8 +390,13 @@ build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset) /* Checksum to be filled by Guest linker */ bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, - (char *)rsdp - rsdp_table->data, sizeof *rsdp, + (char *)rsdp - rsdp_table->data, 20 /* ACPI rev 1.0 RSDP size */, (char *)&rsdp->checksum - rsdp_table->data); + + /* Extended checksum to be filled by Guest linker */ + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, + (char *)rsdp - rsdp_table->data, 36 /* ACPI rev 2.0 RSDP size */, + (char *)&rsdp->extended_checksum - rsdp_table->data); } static void -- 2.19.2