--- zzzz-none-000/linux-4.1.52/arch/arm64/mm/init.c 2018-05-28 02:26:45.000000000 +0000 +++ bcm63-7530ax-731/linux-4.1.52/arch/arm64/mm/init.c 2022-03-02 11:37:12.000000000 +0000 @@ -74,7 +74,14 @@ static phys_addr_t 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 } static void __init zone_sizes_init(unsigned long min, unsigned long max)