Alejandro Lucero Palau wrote: > > On 10/12/24 22:57, Dan Williams wrote: > > Alejandro Lucero Palau wrote: > > [..] > >>> I am skeptical that PROBE_FORCE_SYNCRONOUS is a fix for any > >>> device-readiness bug. Some other assumption is violated if that is > >>> required. > >> > >> But that problem is not about device readiness but just how the device > >> model works. In this case the memdev creation is adding devices, no real > >> ones but those abstractions we use from the device model, and that > >> device creation is done asynchronously. > > Device creation is not done asynchronously, the PCI driver is attaching > > asynchrounously. When the PCI driver attaches it creates memdevs and > > those are attached to cxl_mem synchronously. > > > >> memdev, a Type2 driver in my case, is going to work with such a device > >> abstraction just after the memdev creation, it is not there yet. > > Oh, is the concern that you always want to have the memdev attached to > > cxl_mem immediately after it is registered? > > > > I think that is another case where "MODULE_SOFTDEP("pre: cxl_mem")" is > > needed. However, to fix this situation once and for all I think I would > > rather just drop all this modularity and move both cxl_port and cxl_mem > > to be drivers internal to cxl_core.ko similar to the cxl_region driver. > > > Oh, so the problem is the code is not ready because the functionality is > in a module not loaded yet. Right. > Then it makes sense that change. I'll do it if not already taken. I'll > send v4 without the PROBE_FORCE_SYNCHRONOUS flag and without the > previous loop with delays implemented in v3. So I think EPROBE_DEFER can stay out of the CXL core because it is up to the accelerator driver to decide whether CXL availability is fatal to init or not. Additionally, I am less and less convinced that Type-2 drivers should be forced to depend on the cxl_mem driver to attach vs just arranging for those Type-2 drivers to call devm_cxl_enumerate_ports() and devm_cxl_add_endpoint() directly. In other words I am starting to worry that the generic cxl_mem driver design pattern is a midlayer mistake. So, if it makes it easier for sfc, I would be open to exploring a direct scheme for endpoint attachment, and not requiring the generic cxl_mem driver as an intermediary.