@@ -213,12 +213,21 @@ static bool pp_reserve_hyp_image_noload(struct page_pool* pool)
213213
214214static 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)
228237static 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
244247static 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