• Rafael J. Wysocki's avatar
    DMI: Introduce dmi_first_match to make the interface more flexible · d7b1956f
    Rafael J. Wysocki authored
    Some notebooks from HP have the problem that their BIOSes attempt to
    spin down hard drives before entering ACPI system states S4 and S5.
    This leads to a yo-yo effect during system power-off shutdown and the
    last phase of hibernation when the disk is first spun down by the
    kernel and then almost immediately turned on and off by the BIOS.
    This, in turn, may result in shortening the disk's life times.
    
    To prevent this from happening we can blacklist the affected systems
    using DMI information.  However, only the on-board controlles should
    be blacklisted and their PCI slot numbers can be used for this
    purpose.  Unfortunately the existing interface for checking DMI
    information of the system is not very convenient for this purpose,
    because to use it, we would have to define special callback functions
    or create a separate struct dmi_system_id table for each blacklisted
    system.
    
    To overcome this difficulty introduce a new function
    dmi_first_match() returning a pointer to the first entry in an array
    of struct dmi_system_id elements that matches the system DMI
    information.  Then, we can use this pointer to access the entry's
    .driver_data field containing the additional information, such as
    the PCI slot number, allowing us to do the desired blacklisting.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    d7b1956f
dmi_scan.c 14.6 KB