kernel/0046-chore-es_buddy-Memory-workaround-for-g2d-hardware-pr.patch
2024-12-19 16:34:44 -05:00

69 lines
2.3 KiB
Diff

From 0833b178870042c5d1fea66f25073fec2d4ec874 Mon Sep 17 00:00:00 2001
From: linmin <linmin@eswincomputing.com>
Date: Tue, 4 Jun 2024 14:23:32 +0800
Subject: [PATCH 046/219] chore(es_buddy):Memory workaround for g2d hardware
problem
Changelogs:
1.Modified the buddy_system_init() interface in buddy.h accroding to the
modification of libs/common whose commit id is:f0a47cf4ca77323388f8
This is a workaround for g2d because the g2d hardware has problem
with accessing the 4GB boundary address.
2.Reserved 4kB size of memory at 4GB address boundary in eic7700-evb.dts
and eic7700-evb-a2.dts, so that it is excluded from system memory and
will never be used by g2d.
---
arch/riscv/boot/dts/eswin/eic7700-evb-a2.dts | 5 +++++
arch/riscv/boot/dts/eswin/eic7700-evb.dts | 5 +++++
drivers/memory/eswin/buddy.h | 2 +-
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/riscv/boot/dts/eswin/eic7700-evb-a2.dts b/arch/riscv/boot/dts/eswin/eic7700-evb-a2.dts
index f5c4712de03e..3f35d2201584 100644
--- a/arch/riscv/boot/dts/eswin/eic7700-evb-a2.dts
+++ b/arch/riscv/boot/dts/eswin/eic7700-evb-a2.dts
@@ -112,6 +112,11 @@ secure_memory_nid_0_part_1 {
no-map;
};
+ g2d_4GB_boundary_reserved_4k {
+ no-map;
+ reg = <0x0 0xfffff000 0x0 0x1000>;
+ };
+
mmz_nid_0_part_0 {
compatible = "eswin-reserve-memory";
reg = <0x1 0x40000000 0x2 0x80000000>;
diff --git a/arch/riscv/boot/dts/eswin/eic7700-evb.dts b/arch/riscv/boot/dts/eswin/eic7700-evb.dts
index e3c9de0ada5d..f41705285b0b 100644
--- a/arch/riscv/boot/dts/eswin/eic7700-evb.dts
+++ b/arch/riscv/boot/dts/eswin/eic7700-evb.dts
@@ -111,6 +111,11 @@ secure_memory_nid_0_part_1 {
no-map;
};
+ g2d_4GB_boundary_reserved_4k {
+ no-map;
+ reg = <0x0 0xfffff000 0x0 0x1000>;
+ };
+
mmz_nid_0_part_0 {
compatible = "eswin-reserve-memory";
reg = <0x1 0x40000000 0x2 0x80000000>;
diff --git a/drivers/memory/eswin/buddy.h b/drivers/memory/eswin/buddy.h
index e3c509a511c6..bc0fd6eb6ddb 100644
--- a/drivers/memory/eswin/buddy.h
+++ b/drivers/memory/eswin/buddy.h
@@ -105,7 +105,7 @@ struct mem_block {
};
#endif
-void buddy_system_init(struct mem_zone *zone,
+void buddy_system_init(struct mem_block *memblock,
struct esPage_s *start_page,
unsigned long start_addr,
unsigned long page_num);
--
2.47.0