phys_addr_t base = 0;
size_t align_size = ALIGN_SZ(size, SZ_1M);
- if(reserved_base_end == 0)
+ if (reserved_base_end == 0) {
reserved_base_end = meminfo.bank[meminfo.nr_banks - 1].start + meminfo.bank[meminfo.nr_banks - 1].size;
+ /* Workaround for RGA driver, which may overflow on physical memory address parameter */
+ if (reserved_base_end > 0xA0000000)
+ reserved_base_end = 0xA0000000;
+ }
reserved_size += align_size;
base = reserved_base_end - reserved_size;