Skip to content
  • Steve Cornelius's avatar
    ENGR00215945-1: Rework scatterlist handling for bi-endian platforms · 631a53a1
    Steve Cornelius authored
    
    
    Former versions of this (ARM) branch of this driver reworked the hardware-
    readable scatter/gather list to operate as a set of 32-bit integers,
    rather than a packed structure of smaller sizes, which cannot burst-read
    correctly on a little-endian platform.
    
    Integration of caamhash.c revealed subtle ways in which the ordering of
    items written to a hardware s/g list could create bugs, such as the
    "final" bit being written to an entry that would later be updated with
    a size, inadvertently erasing the bit (e.g. such as sg_to_sec4_sg_last()
    before sg_to_sec4_sg()).
    
    Since fields must be ORed in to operate correctly using any order of
    operations, changed allocations of the combination of extended descriptor
    structs + hardware scatterlists to use kzalloc() instead of kmalloc(), so
    as to ensure that residue data would not be ORed in with the correct data.
    
    Signed-off-by: default avatarSteve Cornelius <steve.cornelius@freescale.com>
    Signed-off-by: default avatarTerry Lv <r65388@freescale.com>
    631a53a1