From patchwork Fri Jan 22 01:14:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Al Stone X-Patchwork-Id: 571414 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 0A92D14031D; Fri, 22 Jan 2016 12:14:57 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b=LgqNzB7f; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1aMQJT-0001Qa-SN; Fri, 22 Jan 2016 01:14:55 +0000 Received: from mail-oi0-f41.google.com ([209.85.218.41]) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.76) (envelope-from ) id 1aMQJO-0001PI-5C for fwts-devel@lists.ubuntu.com; Fri, 22 Jan 2016 01:14:50 +0000 Received: by mail-oi0-f41.google.com with SMTP id k206so38816005oia.1 for ; Thu, 21 Jan 2016 17:14:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RNC13pK1RPd3BhqFGpsiAlYshGKmzeF72nM2PMmxQvk=; b=LgqNzB7fg2tHhn5V2GAcu+R6Pw7Krr1Ka+86fSfEW3gkqeyWItvmE2CBMVC2vmDONp vtet2avXWTiSQxJqsVaAJkGamRaKilu1QMQdTCNgYk2G6p9Tk1Y+vy3ezV1O8KG/zz8k S8DAfPpUQ1dVwyrz+U4+otJ41rEO5y74+5hRo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RNC13pK1RPd3BhqFGpsiAlYshGKmzeF72nM2PMmxQvk=; b=IpDAC4OHm0dkcOXntc/SNjcS8uzutBB4Ht1+eOyJWH80UK7eLVXsADQ5XHH3fV6No7 VrlUClpxDfb8RDdLJJyP0DGeRmwaOtLA6jV3yWgEAXGbz6nFkWYryNy6bMyOWMCqaqvS G730s8bNVdm1RxrDMZyL5xME+W+nUokvO2JdftjwRD1KO1UjEIsPb34I+d2+FjVQanz+ G9QFNKyd3ViadOcuXwjih5DqoVaGyqULSScWGD9/CJXTWkg+IFRcwsWfAikfvgV8zpHP Bj/DXlMkj4f8uR+yZPQQO6I/l5ea2SpxmIYlaxXq3ohUhMZGkJ+fCl2yah44yXWwJ2Z0 J3hA== X-Gm-Message-State: AG10YORC7M6lch5SFADqE+jyO5PO8NDcf80thhZDHUbcKPAV4lQbcwBHPpM0/6pwPG7/GhKL X-Received: by 10.202.80.201 with SMTP id e192mr265296oib.14.1453425289080; Thu, 21 Jan 2016 17:14:49 -0800 (PST) Received: from fidelio.ahs3 (c-50-134-239-249.hsd1.co.comcast.net. [50.134.239.249]) by smtp.googlemail.com with ESMTPSA id mj1sm1921252oeb.17.2016.01.21.17.14.46 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 21 Jan 2016 17:14:47 -0800 (PST) From: Al Stone To: fwts-devel@lists.ubuntu.com Subject: [PATCH 3/5] ACPI tables: when bodging up an RSDP, do the right thing for the arch Date: Thu, 21 Jan 2016 18:14:18 -0700 Message-Id: <1453425260-21576-4-git-send-email-al.stone@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1453425260-21576-1-git-send-email-al.stone@linaro.org> References: <1453425260-21576-1-git-send-email-al.stone@linaro.org> Cc: patches@linaro.org, linaro-acpi@lists.linaro.org X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: fwts-devel-bounces@lists.ubuntu.com If it is necessary to create an RSDP table because there is none that can be read, add in only the RSDT or XSDT pointers as needed. For x86, it can be either, but for arm64 it should only be the XSDT address that is used in the RSDP. Signed-off-by: Al Stone --- src/lib/src/fwts_acpi_tables.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c index 0191b6b..83bd1dd 100644 --- a/src/lib/src/fwts_acpi_tables.c +++ b/src/lib/src/fwts_acpi_tables.c @@ -1101,14 +1101,17 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw) } /* Now we have all the tables, final fix up is required */ - if (rsdp->rsdt_address != rsdt_fake_addr) { - rsdp->rsdt_address = rsdt_fake_addr; - redo_rsdp_checksum = true; - } - if ((rsdp->revision > 0) && (rsdp->length >= 36) && - (rsdp->xsdt_address != xsdt_fake_addr)) { - rsdp->xsdt_address = xsdt_fake_addr; - redo_rsdp_checksum = true; + if (fw->target_arch == FWTS_ARCH_ARM64) { + if ((rsdp->revision > 0) && (rsdp->length >= 36) && + (rsdp->xsdt_address != xsdt_fake_addr)) { + rsdp->xsdt_address = xsdt_fake_addr; + redo_rsdp_checksum = true; + } + } else { + if (rsdp->rsdt_address != rsdt_fake_addr) { + rsdp->rsdt_address = rsdt_fake_addr; + redo_rsdp_checksum = true; + } } /* And update checksum if we've updated the rsdp */ if (redo_rsdp_checksum) {