• Eric Farman's avatar
    vfio-ccw: Rearrange pfn_array and pfn_array_table arrays · cc06ee98
    Eric Farman authored
    While processing a channel program, we currently have two nested
    arrays that carry a slightly different structure.  The direct CCW
    path creates this:
    
      ccwchain->pfn_array_table[1]->pfn_array[#pages]
    
    while an IDA CCW creates:
    
      ccwchain->pfn_array_table[#idaws]->pfn_array[1]
    
    The distinction appears to state that each pfn_array_table entry
    points to an array of contiguous pages, represented by a pfn_array,
    um, array.  Since the direct-addressed scenario can ONLY represent
    contiguous pages, it makes the intermediate array necessary but
    difficult to recognize.  Meanwhile, since an IDAL can contain
    non-contiguous pages and there is no logic in vfio-ccw to detect
    adjacent IDAWs, it is the second array that is necessary but appearing
    to be superfluous.
    
    I am not aware of any documentation that states the pfn_array[] needs
    to be of contiguous pages; it is just what the code does today.
    I don't see any reason for this either, let's just flip the IDA
    codepath around so that it generates:
    
      ch_pat->pfn_array_table[1]->pfn_array[#idaws]
    
    This will bring it in line with the direct-addressed codepath,
    so that we can understand the behavior of this memory regardless
    of what type of CCW is being processed.  And it means the casual
    observer does not need to know/care whether the pfn_array[]
    represents contiguous pages or not.
    
    NB: The existing vfio-ccw code only supports 4K-block Format-2 IDAs,
    so that "#pages" == "#idaws" in this area.  This means that we will
    have difficulty with this overlap in terminology if support for
    Format-1 or 2K-block Format-2 IDAs is ever added.  I don't think that
    this patch changes our ability to make that distinction.
    Signed-off-by: default avatarEric Farman <farman@linux.ibm.com>
    Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
    Message-Id: <20190606202831.44135-6-farman@linux.ibm.com>
    Signed-off-by: default avatarCornelia Huck <cohuck@redhat.com>
    cc06ee98
vfio_ccw_cp.c 23.2 KB