• Rafael J. Wysocki's avatar
    cpufreq: acpi-cpufreq: Make read and write operations more efficient · ed757a2c
    Rafael J. Wysocki authored
    Setting a new CPU frequency and reading the current request value
    in the ACPI cpufreq driver involves each at least two switch
    instructions (there's more if the policy is shared).  One of
    them is present in drv_read/write() that prepares a command
    structure and the other happens in subsequent do_drv_read/write()
    when that structure is interpreted.  However, all of those switches
    may be avoided by using function pointers.
    
    To that end, add two function pointers to struct acpi_cpufreq_data
    to represent read and write operations on the frequency register
    and set them up during policy intitialization to point to the pair
    of routines suitable for the given processor (Intel/AMD MSR access
    or I/O port access).  Then, use those pointers in do_drv_read/write()
    and modify drv_read/write() to prepare the command structure for
    them without any checks.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    ed757a2c
acpi-cpufreq.c 24 KB