--- zzzz-none-000/linux-4.19.183/arch/arm64/mm/init.c 2021-03-24 10:07:39.000000000 +0000 +++ bcm63-7530ax-756/linux-4.19.183/arch/arm64/mm/init.c 2023-06-28 08:54:18.000000000 +0000 @@ -224,7 +224,14 @@ static phys_addr_t __init max_zone_dma_phys(void) { phys_addr_t offset = memblock_start_of_DRAM() & GENMASK_ULL(63, 32); +#if defined(CONFIG_BCM_KF_ARM64_BCM963XX) && defined(CONFIG_BCM94908) && defined(CONFIG_BCM_HND_EAP) + /* Using ZONE_DMA to work around a 4908 Ethernet packet transmission + * performance issue when packet buffer is located at address + * larger than 1GB. */ + return min(offset + (1ULL << 30), memblock_end_of_DRAM()); +#else return min(offset + (1ULL << 32), memblock_end_of_DRAM()); +#endif } #ifdef CONFIG_NUMA