From patchwork Tue Nov 29 02:59:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shanker Donthineni X-Patchwork-Id: 9450867 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B22F5600CB for ; Tue, 29 Nov 2016 03:02:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A761A206AF for ; Tue, 29 Nov 2016 03:02:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9B44D27DA4; Tue, 29 Nov 2016 03:02:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 237AC206AF for ; Tue, 29 Nov 2016 03:02:31 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cBYdr-0005C5-1F; Tue, 29 Nov 2016 02:59:35 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cBYdp-0005Bz-RF for xen-devel@lists.xensource.com; Tue, 29 Nov 2016 02:59:34 +0000 Received: from [193.109.254.147] by server-9.bemta-6.messagelabs.com id 70/E1-28694-51FEC385; Tue, 29 Nov 2016 02:59:33 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrOIsWRWlGSWpSXmKPExsVybKJsgq7Ie5s IgzO3xS3uTXnP7sDosb1vF3sAYxRrZl5SfkUCa8aDHd4FU6Qqrm1bwNbA2CjaxcjJISRQJHH+ TytTFyMXB4vASyaJgzPaGUESEgLREus2HGOHsPkkLr74wQRhz2KUWPU+DKRBSOAWk0TTm4Nsc N0dh3+CVbEIuEh8eNwD1s0oECdxd/1RJgg7XWLmpI9ADRwcbAJGEv96c0HCIgKNjBJ9nW4gc5 gFmhglTrV8BusVFnCV6Oz5xQoxU1WidcUdsDivgLvEp/5nUJfKSZw8Npl1AqPgAkaGVYwaxal FZalFusbGeklFmekZJbmJmTm6hgZmermpxcWJ6ak5iUnFesn5uZsYgQHHAAQ7GHeuDzzEKMnB pCTKO93NJkKILyk/pTIjsTgjvqg0J7X4EKMGB4fA5rWrLzBKseTl56UqSfAufQtUJ1iUmp5ak ZaZA4wJmFIJDh4lEd6vj4HSvMUFibnFmekQqVOMuhz/5rx6wCQENkNKnPc/yAwBkKKM0jy4Eb D4vMQoKyXMywh0oBBPQWpRbmYJqvwrRnEORiVh3lyQKTyZeSVwm14BHcEEdMTb19YgR5QkIqS kGhgf6NpEKb3M37Ra73Wzgf2xiKc6B17873q/aLUQk4qN+Jm2cJulcdUqXIGN2X8Kll1p7Py3 7VpeyCu/B6nHt1zb/6FEXch1cYDruqLQ+6ISa36e5MuzyA5wqj13vUHQYdWx28c2h66PTfkeu 8BS8rSs+e2iuzvEjTMTXjA0MVtcyilqXqg3L0OJpTgj0VCLuag4EQAZQZ/1ygIAAA== X-Env-Sender: shankerd@codeaurora.org X-Msg-Ref: server-2.tower-27.messagelabs.com!1480388371!22068018!1 X-Originating-IP: [198.145.29.96] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.0.16; banners=-,-,- X-VirusChecked: Checked Received: (qmail 63919 invoked from network); 29 Nov 2016 02:59:32 -0000 Received: from smtp.codeaurora.org (HELO smtp.codeaurora.org) (198.145.29.96) by server-2.tower-27.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 29 Nov 2016 02:59:32 -0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 712F7613E5; Tue, 29 Nov 2016 02:59:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1480388369; bh=/0+NQWZW9CyXe7IjLjOaSOIsKETdohsXFpVGFhkVh38=; h=From:To:Cc:Subject:Date:From; b=Uw4HQB5kpRIO4BNNiQklVBpqoQ0LjItp392JMNm4v27NMQ+Qhqw28NoQcmB4BkOZQ i52kdPN08xzIcAhAJwy5PfEEFXqDQwZnaR8OI7N2d3Ye1ecnW9jJYHyMXuNzBe8mW+ pE5qZ6U/hySkFTexGMLkHud4mopfhhyHQjIup5Yo= Received: from shankerd-ubuntu.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: shankerd@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 471BE61242; Tue, 29 Nov 2016 02:59:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1480388368; bh=/0+NQWZW9CyXe7IjLjOaSOIsKETdohsXFpVGFhkVh38=; h=From:To:Cc:Subject:Date:From; b=oawnAJ4P8cMI51LpVikh9vWpj6d2kcx2LPRrhJKa9BVnZgCxd4urDHE4Kd8NuVdlG SZ1XctqqE5YXgAX+BY0WNXA/8SZSTIdhhVqjIOkqIqZDtZxnV4/V7Yxi0uo9zWNs/O rswNBr+IoBWkEW5BDDK9yWMIpdNFSmnOZCQiF8XY= DMARC-Filter: OpenDMARC Filter v1.3.1 smtp.codeaurora.org 471BE61242 From: Shanker Donthineni To: xen-devel , Julien Grall , Stefano Stabellini Date: Mon, 28 Nov 2016 20:59:09 -0600 Message-Id: <1480388349-13887-1-git-send-email-shankerd@codeaurora.org> X-Mailer: git-send-email 1.9.1 Cc: Shanker Donthineni , Vikram Sethi , Campbell Sean Subject: [Xen-devel] [PATCH] arm/acpi: hide watchdog timer in GTDT table for dom0 X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Either we have to hide the watchdog timer section in GTDT or emulate watchdog timer block for dom0. Otherwise, system gets panic when dom0 accesses its MMIO registers. The current XEN doesn't support virtualization of watchdog timer, so hide the watchdog timer section for dom0. Signed-off-by: Shanker Donthineni --- xen/arch/arm/domain_build.c | 41 +++++++++++++++++++++++++++++++++++++++++ xen/include/asm-arm/acpi.h | 1 + 2 files changed, 42 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index e8a400c..611c803 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1668,6 +1668,8 @@ static int acpi_create_xsdt(struct domain *d, struct membank tbl_add[]) ACPI_SIG_FADT, tbl_add[TBL_FADT].start); acpi_xsdt_modify_entry(xsdt->table_offset_entry, entry_count, ACPI_SIG_MADT, tbl_add[TBL_MADT].start); + acpi_xsdt_modify_entry(xsdt->table_offset_entry, entry_count, + ACPI_SIG_GTDT, tbl_add[TBL_GTDT].start); xsdt->table_offset_entry[entry_count] = tbl_add[TBL_STAO].start; xsdt->header.length = table_size; @@ -1718,6 +1720,41 @@ static int acpi_create_stao(struct domain *d, struct membank tbl_add[]) return 0; } +static int acpi_create_gtdt(struct domain *d, struct membank tbl_add[]) +{ + struct acpi_table_header *table = NULL; + struct acpi_table_gtdt *gtdt = NULL; + u32 table_size = sizeof(struct acpi_table_gtdt); + u32 offset = acpi_get_table_offset(tbl_add, TBL_GTDT); + acpi_status status; + u8 *base_ptr, checksum; + + status = acpi_get_table(ACPI_SIG_GTDT, 0, &table); + + if ( ACPI_FAILURE(status) ) + { + const char *msg = acpi_format_exception(status); + + printk("Failed to get GTDT table, %s\n", msg); + return -EINVAL; + } + + base_ptr = d->arch.efi_acpi_table + offset; + ACPI_MEMCPY(base_ptr, table, sizeof(struct acpi_table_gtdt)); + + gtdt = (struct acpi_table_gtdt *)base_ptr; + gtdt->header.length = table_size; + gtdt->platform_timer_count = 0; + gtdt->platform_timer_offset = table_size; + checksum = acpi_tb_checksum(ACPI_CAST_PTR(u8, gtdt), table_size); + gtdt->header.checksum -= checksum; + + tbl_add[TBL_GTDT].start = d->arch.efi_acpi_gpa + offset; + tbl_add[TBL_GTDT].size = table_size; + + return 0; +} + static int acpi_create_madt(struct domain *d, struct membank tbl_add[]) { struct acpi_table_header *table = NULL; @@ -1909,6 +1946,10 @@ static int prepare_acpi(struct domain *d, struct kernel_info *kinfo) if ( rc != 0 ) return rc; + rc = acpi_create_gtdt(d, tbl_add); + if ( rc != 0 ) + return rc; + rc = acpi_create_xsdt(d, tbl_add); if ( rc != 0 ) return rc; diff --git a/xen/include/asm-arm/acpi.h b/xen/include/asm-arm/acpi.h index 9f954d3..214511c 100644 --- a/xen/include/asm-arm/acpi.h +++ b/xen/include/asm-arm/acpi.h @@ -36,6 +36,7 @@ typedef enum { TBL_FADT, TBL_MADT, TBL_STAO, + TBL_GTDT, TBL_XSDT, TBL_RSDP, TBL_EFIT,