• Geert Uytterhoeven's avatar
    sh_eth: Fix lost MAC address on kexec · a14c7d15
    Geert Uytterhoeven authored
    Commit 740c7f31 ("sh_eth: Ensure DMA engines are stopped before
    freeing buffers") added a call to sh_eth_reset() to the
    sh_eth_set_ringparam() and sh_eth_close() paths.
    
    However, setting the software reset bit(s) in the EDMR register resets
    the MAC Address Registers to zero. Hence after kexec, the new kernel
    doesn't detect a valid MAC address and assigns a random MAC address,
    breaking DHCP.
    
    Set the MAC address again after the reset in sh_eth_dev_exit() to fix
    this.
    
    Tested on r8a7740/armadillo (GETHER) and r8a7791/koelsch (FAST_RCAR).
    
    Fixes: 740c7f31 ("sh_eth: Ensure DMA engines are stopped before freeing buffers")
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a14c7d15
sh_eth.c 73.4 KB