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