[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XEN v1 2/9] xen/arm: Define translate_dt_address_size() for the translation between u64 and paddr_t


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
  • Date: Thu, 15 Dec 2022 19:32:38 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nEcjDNJBIOdqWQvewngXlND3JwUSJKnAsyDlrtHgpXw=; b=AaPreCpbWE771yaxNRin2QU0dKV1I59WCpDW5rq/rIXO5Vytmfjkh7+wT5pQiKgUvcSHmVVyPb52SwRAqnnSV9urQJ4G/u3MQkC1l/4LHyLBvOVYseDENapBzwhGf17Fn307f1+BEPAXyVHtXghIRbd7pygTWkKBlZ3Tu8DyHknFycU05Eppum71LvmAi30bNyjqdwYstahv7IrfHb3D4hQj5Y+PPq4YZlGamm8PwWza6R2cHXSYmFgiMXKf+aiIZ6dsas+3UJWmKzVDEx0dgwsNEA6BOWw0qyFnMM21yqxrjqbJ//0eGjWCDm+urZFMAmYkYIHF+6+nEAYvYdqMDQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xg5o1zkItVJY2AOXu9KfQtYOrdnky6GjMIei7mexiv7lyHze1zAUGzeOBia+7SAxTMs5+SU6ImmDcGFTog0y/zjUt9bQQoRT6DDy7gG5W9HA/q+b1FMlKe2gy8khVKUfmANm3+e6mrRekCkiJg9kWxM7VlKw3OkiWACcxusXzpTO2YMNk+IIHDu6AyW0NuOfEhwte8urZJ+3f6JVCrKkuBd2MuCTbaO8EBC8GGbt+0rMrk7zkylBL/5YWmT2dfRzgmtM0UBgOVoIeWEQfZnZPbiqxbZNkupBIAhODJiegrKfpQwr9SoMkXfP9N3HGVTqkvCb670r57Bz8mqGLbY2/A==
  • Cc: <sstabellini@xxxxxxxxxx>, <stefano.stabellini@xxxxxxx>, <julien@xxxxxxx>, <Volodymyr_Babchuk@xxxxxxxx>, <bertrand.marquis@xxxxxxx>, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
  • Delivery-date: Thu, 15 Dec 2022 19:33:05 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

paddr_t may be u64 or u32 depending of the type of architecture.
Thus, while translating between u64 and paddr_t, one should check that the
truncated bits are 0. If not, then raise an appropriate error.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
---
 xen/arch/arm/include/asm/platform.h | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/xen/arch/arm/include/asm/platform.h 
b/xen/arch/arm/include/asm/platform.h
index 997eb25216..6be1549f09 100644
--- a/xen/arch/arm/include/asm/platform.h
+++ b/xen/arch/arm/include/asm/platform.h
@@ -42,6 +42,32 @@ struct platform_desc {
     unsigned int dma_bitsize;
 };
 
+static inline int translate_dt_address_size(u64 *dt_addr, u64 *dt_size,
+                                            paddr_t *addr, paddr_t *size)
+{
+#ifdef CONFIG_ARM_PA_32
+    if ( dt_addr && (*dt_addr >> PADDR_SHIFT) )
+    {
+        dprintk(XENLOG_ERR, "Error in DT. Invalid address\n");
+        return -ENXIO;
+    }
+
+    if ( dt_size && (*dt_size >> PADDR_SHIFT) )
+    {
+        dprintk(XENLOG_ERR, "Error in DT. Invalid size\n");
+        return -ENXIO;
+    }
+#endif
+
+    if ( dt_addr && addr )
+        *addr = (paddr_t) (*dt_addr);
+
+    if ( dt_size && size )
+        *size = (paddr_t) (*dt_size);
+
+    return 0;
+}
+
 /*
  * Quirk for platforms where device tree incorrectly reports 4K GICC
  * size, but actually the two GICC register ranges are placed at 64K
-- 
2.17.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.