On Thu, 14 Jul 2022 09:27:04 -0700 Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > ira.weiny@ wrote: > > From: Ira Weiny <ira.weiny@xxxxxxxxx> > > > > The CDAT read may fail for a number of reasons but mainly it is possible > > to get different parts of a valid state. The checksum in the CDAT table > > protects against this. > > I don't know what "different parts of a valid state" means. The CDAT > should not be changing as it is being read unless someone is issuing a > set-partition while the DOE operation is happening. Unfortunately not true. The device is allowed to change it with no input from OS software at all. >From CDAT spec "For Revision=1, the following changes are permitted during the runtime • Changes to the latency and bandwidth fields in DSLBIS • Changes to the latency and bandwidth fields in SSLBIS • Changes to the number of DSEMTS instances and their contents The changes to latency and bandwidth may represent events such as failover or degradation that are internal to a component." > Rather than > arbitrary retries, block out set-partition while CDAT is being read. Blocking that out is still useful even though we probably still need retries. > > You can use {set,clear}_exclusive_cxl_commands() to temporarily lock out > set-partition while the CDAT read is happening. > > ...and since this series is only for enabling