Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758057Ab3GRCqf (ORCPT ); Wed, 17 Jul 2013 22:46:35 -0400 Received: from mga11.intel.com ([192.55.52.93]:6701 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757978Ab3GRCqe (ORCPT ); Wed, 17 Jul 2013 22:46:34 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.89,689,1367996400"; d="scan'208";a="367065330" From: Qiaowei Ren To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org Cc: linux-kernel@vger.kernel.org, Gang Wei , Qiaowei Ren Subject: [PATCH v2] x86, tboot: iomem fixes Date: Thu, 18 Jul 2013 10:35:43 +0800 Message-Id: <1374114943-5932-1-git-send-email-qiaowei.ren@intel.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2205 Lines: 67 Fixes for iomem annotations in arch/x86/kernel/tboot.c Signed-off-by: Qiaowei Ren --- arch/x86/kernel/tboot.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c index 3ff42d2..afe8cf8 100644 --- a/arch/x86/kernel/tboot.c +++ b/arch/x86/kernel/tboot.c @@ -466,9 +466,12 @@ struct sinit_mle_data { u32 vtd_dmars_off; } __packed; +#define SINIT_MLE_DATA_VTD_DMAR_OFF 140 + struct acpi_table_header *tboot_get_dmar_table(struct acpi_table_header *dmar_tbl) { - void *heap_base, *heap_ptr, *config; + void __iomem *heap_base, *heap_ptr, *config; + u32 dmar_tbl_off; if (!tboot_enabled()) return dmar_tbl; @@ -485,25 +488,25 @@ struct acpi_table_header *tboot_get_dmar_table(struct acpi_table_header *dmar_tb return NULL; /* now map TXT heap */ - heap_base = ioremap(*(u64 *)(config + TXTCR_HEAP_BASE), - *(u64 *)(config + TXTCR_HEAP_SIZE)); + heap_base = ioremap(readl(config + TXTCR_HEAP_BASE), + readl(config + TXTCR_HEAP_SIZE)); iounmap(config); if (!heap_base) return NULL; /* walk heap to SinitMleData */ /* skip BiosData */ - heap_ptr = heap_base + *(u64 *)heap_base; + heap_ptr = heap_base + readq(heap_base); /* skip OsMleData */ - heap_ptr += *(u64 *)heap_ptr; + heap_ptr += readq(heap_ptr); /* skip OsSinitData */ - heap_ptr += *(u64 *)heap_ptr; + heap_ptr += readq(heap_ptr); /* now points to SinitMleDataSize; set to SinitMleData */ heap_ptr += sizeof(u64); /* get addr of DMAR table */ - dmar_tbl = (struct acpi_table_header *)(heap_ptr + - ((struct sinit_mle_data *)heap_ptr)->vtd_dmars_off - - sizeof(u64)); + dmar_tbl_off = readl(heap_ptr + SINIT_MLE_DATA_VTD_DMAR_OFF); + memcpy_fromio(dmar_tbl, heap_ptr + dmar_tbl_off - sizeof(u64), + sizeof(struct acpi_table_header)); /* don't unmap heap because dmar.c needs access to this */ -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/