Re: [PATCH 0/5] cxl: Initialization and shutdown fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dan,


I think this is the same issue one of the patches in type2 support tries to deal with:


https://lore.kernel.org/linux-cxl/20240907081836.5801-1-alejandro.lucero-palau@xxxxxxx/T/#m9357a559c1a3cc7869ecce44a1801d51518d106e


If this fixes that situation, I guess I can drop that one from v4 which is ready to be sent.


The other problem I try to fix in that patch, the endpoint not being there when that code tries to use it, it is likely not needed either, although I have a trivial fix for it now instead of that ugly loop with delays. The solution is to add PROBE_FORCE_SYNCHRONOUS as probe_type for the cxl_mem_driver which implies the device_add will only return when the device is really created. Maybe that is worth it for other potential situations suffering the delayed creation.


On 10/11/24 06:33, Dan Williams wrote:
Gregory's modest proposal to fix CXL cxl_mem_probe() failures due to
delayed arrival of the CXL "root" infrastructure [1] prompted questions
of how the existing mechanism for retrying cxl_mem_probe() could be
failing.

The critical missing piece in the debug was that Gregory's setup had
almost all CXL modules built-in to the kernel.

On the way to that discovery several other bugs and init-order corner
cases were discovered.

The main fix is to make sure the drivers/cxl/Makefile object order
supports root CXL ports being fully initialized upon cxl_acpi_probe()
exit. The modular case has some similar potential holes that are fixed
with MODULE_SOFTDEP() and other fix ups. Finally, an attempt to update
cxl_test to reproduce the original report resulted in the discovery of a
separate long standing use after free bug in cxl_region_detach().

[1]: http://lore.kernel.org/20241004212504.1246-1-gourry@xxxxxxxxxx

---

Dan Williams (5):
       cxl/port: Fix CXL port initialization order when the subsystem is built-in
       cxl/port: Fix cxl_bus_rescan() vs bus_rescan_devices()
       cxl/acpi: Ensure ports ready at cxl_acpi_probe() return
       cxl/port: Fix use-after-free, permit out-of-order decoder shutdown
       cxl/test: Improve init-order fidelity relative to real-world systems


  drivers/base/core.c          |   35 +++++++
  drivers/cxl/Kconfig          |    1
  drivers/cxl/Makefile         |   12 +--
  drivers/cxl/acpi.c           |    7 +
  drivers/cxl/core/hdm.c       |   50 +++++++++--
  drivers/cxl/core/port.c      |   13 ++-
  drivers/cxl/core/region.c    |   48 +++-------
  drivers/cxl/cxl.h            |    3 -
  include/linux/device.h       |    3 +
  tools/testing/cxl/test/cxl.c |  200 +++++++++++++++++++++++-------------------
  tools/testing/cxl/test/mem.c |    1
  11 files changed, 228 insertions(+), 145 deletions(-)

base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux