Skip to content

Commit 662d297

Browse files
committed
fix(mem): move cpus reservation to pp_reserve_cpus
Signed-off-by: Daniel Oliveira <[email protected]>
1 parent 2dc87ae commit 662d297

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

src/core/mem.c

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,21 @@ static bool pp_reserve_hyp_image_noload(struct page_pool* pool)
213213

214214
static bool pp_reserve_cpus(struct page_pool* pool)
215215
{
216-
size_t image_load_size = (size_t)(&_image_load_end - &_image_start);
217-
size_t image_noload_size = (size_t)(&_image_end - &_image_load_end);
218-
size_t vm_image_size = (size_t)(&_vm_image_end - &_vm_image_start);
219216
size_t cpu_size = platform.cpu_num * mem_cpu_boot_alloc_size();
220-
paddr_t image_noload_addr = img_addr + image_load_size + vm_image_size;
221-
paddr_t cpu_base_addr = image_noload_addr + image_noload_size;
217+
paddr_t cpu_base_addr;
218+
219+
if (DEFINED(MEM_NON_UNIFIED)) {
220+
size_t data_size = (size_t)(&_image_end - &_data_vma_start);
221+
cpu_base_addr = (paddr_t)&_data_vma_start + data_size;
222+
}
223+
else {
224+
size_t image_load_size = (size_t)(&_image_load_end - &_image_start);
225+
size_t image_noload_size = (size_t)(&_image_end - &_image_load_end);
226+
size_t vm_image_size = (size_t)(&_vm_image_end - &_vm_image_start);
227+
228+
paddr_t image_noload_addr = img_addr + image_load_size + vm_image_size;
229+
cpu_base_addr = image_noload_addr + image_noload_size;
230+
}
222231

223232
struct ppages cpu_ppages = mem_ppages_get(cpu_base_addr, NUM_PAGES(cpu_size));
224233

@@ -228,23 +237,19 @@ static bool pp_reserve_cpus(struct page_pool* pool)
228237
static bool pp_reserve_hyp_data(struct page_pool* root_pool)
229238
{
230239
size_t data_size = (size_t)(&_image_end - &_data_vma_start);
231-
size_t cpu_size = platform.cpu_num * mem_cpu_boot_alloc_size();
232240
paddr_t data_base_addr = (paddr_t)&_data_vma_start;
233-
paddr_t cpu_base_addr = data_base_addr + data_size;
234241

235242
struct ppages data_ppages = mem_ppages_get(data_base_addr, NUM_PAGES(data_size));
236-
struct ppages cpu_ppages = mem_ppages_get(cpu_base_addr, NUM_PAGES(cpu_size));
237-
238-
bool data_reserved = mem_reserve_ppool_ppages(root_pool, &data_ppages);
239-
bool cpu_reserved = mem_reserve_ppool_ppages(root_pool, &cpu_ppages);
240243

241-
return data_reserved && cpu_reserved;
244+
return mem_reserve_ppool_ppages(root_pool, &data_ppages);
242245
}
243246

244247
static bool pp_root_reserve_hyp_mem(struct page_pool* root_pool)
245248
{
246249
if (DEFINED(MEM_NON_UNIFIED)) {
247-
return pp_reserve_hyp_data(root_pool);
250+
bool hyp_data_mem = pp_reserve_hyp_data(root_pool);
251+
bool cpus_mem = pp_reserve_cpus(root_pool);
252+
return hyp_data_mem && cpus_mem;
248253

249254
} else {
250255
bool hyp_image_load_mem = pp_reserve_hyp_image_load(root_pool);

0 commit comments

Comments
 (0)