• Prakash, Prashanth's avatar
    ACPI / CPPC: support for batching CPPC requests · 80b8286a
    Prakash, Prashanth authored
    CPPC defined in section 8.4.7 of ACPI 6.0 specification suggests
    "To amortize the cost of PCC transactions, OSPM should read or write
    all PCC registers via a single read or write command when possible"
    This patch enables opportunistic batching of frequency transition
    requests whenever the request happen to overlap in time.
    
    Currently the access to pcc is serialized by a spin lock which does
    not scale well as we increase the number of cores in the system. This
    patch improves the scalability by allowing the differnt CPU cores to
    update PCC subspace in parallel and by batching requests which will
    reduce the certain types of operation(checking command completion bit,
    ringing doorbell) by a significant margin.
    
    Profiling shows significant improvement in the overall effeciency
    to service freq. transition requests. With this patch we observe close
    to 30% of the frequency transition requests being batched with other
    requests while running apache bench on a ARM platform with 6
    independent domains(or sets of related cpus).
    Signed-off-by: default avatarPrashanth Prakash <pprakash@codeaurora.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    80b8286a
cppc_acpi.c 28.9 KB