Skip to content
  • Dave Jiang's avatar
    232bb01b
    x86/asm: add iosubmit_cmds512() based on MOVDIR64B CPU instruction · 232bb01b
    Dave Jiang authored
    
    
    With the introduction of MOVDIR64B instruction, there is now an instruction
    that can write 64 bytes of data atomically.
    
    Quoting from Intel SDM:
    "There is no atomicity guarantee provided for the 64-byte load operation
    from source address, and processor implementations may use multiple
    load operations to read the 64-bytes. The 64-byte direct-store issued
    by MOVDIR64B guarantees 64-byte write-completion atomicity. This means
    that the data arrives at the destination in a single undivided 64-byte
    write transaction."
    
    We have identified at least 3 different use cases for this instruction in
    the format of func(dst, src, count):
    1) Clear poison / Initialize MKTME memory
       @dst is normal memory.
       @src in normal memory. Does not increment. (Copy same line to all
       targets)
       @count (to clear/init multiple lines)
    2) Submit command(s) to new devices
       @dst is a special MMIO region for a device. Does not increment.
       @src is normal memory. Increments.
       @count usually is 1, but can be multiple.
    3) Copy to iomem in big chunks
       @dst is iomem and increments
       @src in normal memory and increments
       @count is number of chunks to copy
    
    Add support for case #2 to support device that will accept commands via
    this instruction. We provide a @count in order to submit a batch of
    preprogrammed descriptors in virtually contiguous memory. This
    allows the caller to submit multiple descriptors to a device with a single
    submission. The special device requires the entire 64bytes descriptor to
    be written atomically and will accept MOVDIR64B instruction.
    
    Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Acked-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/157965022175.73301.10174614665472962675.stgit@djiang5-desk3.ch.intel.com
    
    
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
    232bb01b
    x86/asm: add iosubmit_cmds512() based on MOVDIR64B CPU instruction
    Dave Jiang authored
    
    
    With the introduction of MOVDIR64B instruction, there is now an instruction
    that can write 64 bytes of data atomically.
    
    Quoting from Intel SDM:
    "There is no atomicity guarantee provided for the 64-byte load operation
    from source address, and processor implementations may use multiple
    load operations to read the 64-bytes. The 64-byte direct-store issued
    by MOVDIR64B guarantees 64-byte write-completion atomicity. This means
    that the data arrives at the destination in a single undivided 64-byte
    write transaction."
    
    We have identified at least 3 different use cases for this instruction in
    the format of func(dst, src, count):
    1) Clear poison / Initialize MKTME memory
       @dst is normal memory.
       @src in normal memory. Does not increment. (Copy same line to all
       targets)
       @count (to clear/init multiple lines)
    2) Submit command(s) to new devices
       @dst is a special MMIO region for a device. Does not increment.
       @src is normal memory. Increments.
       @count usually is 1, but can be multiple.
    3) Copy to iomem in big chunks
       @dst is iomem and increments
       @src in normal memory and increments
       @count is number of chunks to copy
    
    Add support for case #2 to support device that will accept commands via
    this instruction. We provide a @count in order to submit a batch of
    preprogrammed descriptors in virtually contiguous memory. This
    allows the caller to submit multiple descriptors to a device with a single
    submission. The special device requires the entire 64bytes descriptor to
    be written atomically and will accept MOVDIR64B instruction.
    
    Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Acked-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/157965022175.73301.10174614665472962675.stgit@djiang5-desk3.ch.intel.com
    
    
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
Loading