Re: [PATCH v6 10/10] arm_mpam: detect and enable MPAM-Fb PCC support
Lee Trager <[email protected]> Thu, 30 Jul 2026 15:28:19 -0700
| Newsgroups | org.kernel.vger.linux-acpi,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/30/26 8:25 AM, Andre Przywara wrote:
> +static struct mpam_pcc_chan *mpam_pcc_chan_get(struct device *dev,
> + int subspace_id)
> +{
> + struct mpam_pcc_chan *cur;
> +
> + guard(mutex)(&pcc_chan_list_lock);
> +
> + list_for_each_entry(cur, &pcc_chan_list, pcc_chans) {
> + if (cur->subspace_id == subspace_id) {
> + kref_get(&cur->refcount);
> +
> + return cur;
> + }
> + }
> +
> + cur = kzalloc_obj(*cur);
> + if (!cur)
> + return ERR_PTR(-ENOMEM);
> +
> + cur->pcc_cl.dev = dev;
> + cur->pcc_cl.tx_block = true;
> +
> + cur->pcc_chan = pcc_mbox_request_channel(&cur->pcc_cl, subspace_id);
> + if (IS_ERR(cur->pcc_chan)) {
> + long err = PTR_ERR(cur->pcc_chan);
> +
> + kfree(cur);
> + return ERR_PTR(err);
> + }
> +
> + /* Timeout based on the "nominal latency" from the PCC ACPI table. */
> + cur->pcc_cl.tx_tout = cur->pcc_chan->latency * 5;
I think this may need a unit conversion. ACPI 6.6 describes PCC nominal
latency in microseconds, and the PCC mailbox driver appears to copy that
value directly into pcc_chan->latency. However mbox_client::tx_tout is
documented in milliseconds.
If I'm reading that correctly, assigning latency * 5 would make the
timeout 1000 times longer than intended. Would something like this be
better?
cur->pcc_cl.tx_tout = DIV_ROUND_UP_ULL((u64)cur->pcc_chan->latency * 5,
USEC_PER_MSEC);