On 23.10.24 13:34:36, Dan Williams wrote: > Robert Richter wrote: > > if (p->state < CXL_CONFIG_COMMIT) { > > - dev_dbg(&cxlr->dev, "config state: %d\n", p->state); > > - rc = -ENXIO; > > + rc = dev_err_probe(&cxlr->dev, -EPROBE_DEFER, > > + "region config state: %d\n", p->state); > > I would argue EPROBE_DEFER is not appropriate because there is no > guarantee that the other members of the region show up, and if they do > they will re-trigger probe. So "probe must be repeated until all > endpoints were enumerated" is the case either way. I.e. either more > endpoint arrival triggers re-probe or EPROBE_DEFER triggers extra > redundant probing *and* still results in a probe attempts as endpoints > arrive. > > So a dev_dbg() plus -ENXIO return on uncommited region state is > expected. So, the region device keeps failing a probe until all endpoints are collected. This triggered by cxl_add_to_region() after the region went into CXL_CONFIG_COMMIT state. Looks reasonable. The setup I was using showed various probe failures so I 'fixed' this issue without noticing the region device was reprobed later successfully. Thanks for explaining. -Robert