• James Morse's avatar
    ACPI / APEI: Split ghes_read_estatus() to allow a peek at the CPER length · e00a6e33
    James Morse authored
    ghes_read_estatus() reads the record address, then the record's
    header, then performs some sanity checks before reading the
    records into the provided estatus buffer.
    
    To provide this estatus buffer the caller must know the size of the
    records in advance, or always provide a worst-case sized buffer as
    happens today for the non-NMI notifications.
    
    Add a function to peek at the record's header to find the size. This
    will let the NMI path allocate the right amount of memory before reading
    the records, instead of using the worst-case size, and having to copy
    the records.
    
    Split ghes_read_estatus() to create __ghes_peek_estatus() which
    returns the address and size of the CPER records.
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    
    Changes since v7:
     * Grammar
     * concistent argument ordering
    
    Changes since v6:
     * Additional buf_addr = 0 error handling
     * Moved checking out of peek-estatus
     * Reworded an error message so we can tell them apart
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e00a6e33
ghes.c 32.8 KB