On Tue, Sep 03, 2024 at 07:46:42PM +0900, Takamitsu Iwai wrote: > > Did the same sequence of read/writes happen before 0845d45e900c? Or > > did 0845d45e900c add additional writes, not just move them around? > > The sequence of read/writes happened before 0845d45e900c because the similar > writel() exists in ew32() above the writel() moved by 0845d45e900c. > > The commit 0845d45e900c moved writel() in e1000_clean_tx/rx_ring() to > e1000_configure_tx/rx() to avoid null pointer dereference. But since the same > writel() exists in e1000_configure_tx/rx(), we just needed to remove writel() > from e1000_clean_rx/tx_ring().
So you have confirmed with the datsheet that the write is not needed? As i said, this is a hardware register, not memory. Writes are not always idempotent. It might be necessary to write it twice. Andrew