Re: [PATCH v6 10/10] arm_mpam: detect and enable MPAM-Fb PCC support
Andre Przywara <[email protected]> Fri, 31 Jul 2026 12:11:36 +0200
| Newsgroups | org.kernel.vger.linux-acpi,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Lee,
On 7/31/26 00:28, Lee Trager wrote:
>
> 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.
Ah, good point, they are indeed using different units.
Will fix that.
Thanks,
Andre
> 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);