When I saw Josh's question, I thought the irq save/restore was there to make the read-modify-write atomic; i.e. read SDR0_MFR, "AND" out some bits, then write it back without the possibility of anything else touching SDR0_MFR. I'm just starting to get familiar with the kernel, so if you have a chance, please help educate me. Does the irq lock in mtdcri protect the read-modify-write? Or maybe this R-M-W doesn't need protecting?+static inline void emac_rx_clk_default(struct emac_instance *dev) +{ + if (emac_has_feature(dev, EMAC_FTR_440EP_PHY_CLK_FIX)) { + unsigned long flags; + + local_irq_save(flags); + mtdcri(SDR0, SDR0_MFR, mfdcri(SDR0, SDR0_MFR) & + ~(SDR0_MFR_ECS >> dev->cell_index)); + local_irq_restore(flags); + } +}Why did you do local_irq_save in these two functions? mtdcri already does spin_lock_irqsave... joshOops, this got copy-pasted from the older ibm_emac. Thanks, Valentine. _______________________________________________