On Wed, Nov 20, 2019 at 4:53 PM Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > > On Wed, 20 Nov 2019, Dan Williams wrote: > > On Wed, Nov 20, 2019 at 3:27 PM Borislav Petkov <bp@xxxxxxxxx> wrote: > > > > > > On Wed, Nov 20, 2019 at 03:19:23PM -0800, Luck, Tony wrote: > > > > That's the underlying functionality of the MOVDIR64B instruction. A > > > > posted write so no way to know if it succeeded. > > > > > > So how do you know whether any of the writes went through? > > > > It's identical to the writel() mmio-write to start a SATA command > > transfer. The higher level device driver protocol validates that the > > command went through, ultimately with a timeout. There's no return > > value for iosubmit_cmds512() for the same reason there's no return > > value for the other iowrite primitives. > > With the difference that other iowrite primitive have no dependencies on > cpu feature bits and cannot fail on the software level. True, but that would be a driver coding mistake flagged by the WARN_ON_ONCE, and the failure is static. The driver must check for static_cpu_has(X86_FEATURE_MOVDIR64B) once at init, but it need not check again on every command submission.