• Dan Williams's avatar
    acpi, nfit: fix acpi_check_dsm() vs zero functions implemented · 4995734e
    Dan Williams authored
    QEMU 2.6 implements nascent support for nvdimm DSMs. Depending on
    configuration it may only implement the function0 dsm to indicate that
    no other DSMs are available. Commit 31eca76b "nfit, libnvdimm:
    limited/whitelisted dimm command marshaling mechanism" breaks QEMU, but
    QEMU is spec compliant.  Per the spec the way to indicate that no
    functions are supported is:
    
        If Function Index is zero, the return is a buffer containing one bit
        for each function index, starting with zero. Bit 0 indicates whether
        there is support for any functions other than function 0 for the
        specified UUID and Revision ID. If set to zero, no functions are
        supported (other than function zero) for the specified UUID and
        Revision ID.
    
    Update the nfit driver to determine the family (interface UUID) without
    requiring the implementation to define any other functions, i.e.
    short-circuit acpi_check_dsm() to succeed per the spec.  The nfit driver
    appears to be the only user passing funcs==0 to acpi_check_dsm(), so
    this behavior change of the common routine should be limited to the
    probing done by the nfit driver.
    
    Cc: Len Brown <lenb@kernel.org>
    Cc: Jerry Hoemann <jerry.hoemann@hpe.com>
    Acked-by: default avatar"Rafael J. Wysocki" <rafael@kernel.org>
    Fixes: 31eca76b ("nfit, libnvdimm: limited/whitelisted dimm command marshaling mechanism")
    Reported-by: default avatarXiao Guangrong <guangrong.xiao@linux.intel.com>
    Tested-by: default avatarXiao Guangrong <guangrong.xiao@linux.intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    4995734e
utils.c 18.9 KB