Hello! I suggest the following subject "net: ravb: Move getting/requesting IRQs in the probe() method". On 1/23/24 3:58 PM, Claudiu wrote: > From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > > The runtime PM implementation will disable clocks at the end of > ravb_probe(). As some IP variants switch to reset mode as a result of > setting module standby through clock disable APIs, to implement runtime PM > the resource parsing and requesting are moved in the probe function and IP > settings are moved in the open function. This is done because at the end of > the probe some IP variants will switch anyway to reset mode and the > registers content is lost. Also keeping only register specific operations Register contents? > in the ravb_open()/ravb_close() functions will make them faster. > > Commit moves IRQ requests to ravb_probe() to have all the IRQs ready when > the interface is open. As now IRQs gets and requests are in a single place Again, getting/requesting IRQs. > there is no need to keep intermediary data (like ravb_rx_irqs[] and > ravb_tx_irqs[] arrays or IRQs in struct ravb_private). > > In order to avoid accessing the IP registers while the IP is runtime > suspended (e.g. in the timeframe b/w the probe requests shared IRQs and > IP clocks are enabled) in the interrupt handlers were introduced > pm_runtime_active() checks. The device runtime PM usage counter has been > incremented to avoid disabling the device's clocks while the check is in > progress (if any). Oh, so this scheme does have some complications... > This is a preparatory change to add runtime PM support for all IP variants. > > Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> With the above fixed: Reviewed-by: Sergey Shtylyov <s.shtylyov@xxxxxx> [...] MBR, Sergey