[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e702e39a-e199-4ea4-a066-0b2e26253f98@oss.qualcomm.com>
Date: Fri, 28 Feb 2025 07:38:15 -0800
From: Jeff Johnson <jeff.johnson@....qualcomm.com>
To: Raj Kumar Bhagat <quic_rajkbhag@...cinc.com>, ath12k@...ts.infradead.org
Cc: Johannes Berg <johannes@...solutions.net>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley
<conor+dt@...nel.org>,
Jeff Johnson <jjohnson@...nel.org>, linux-wireless@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v7 07/13] wifi: ath12k: add support for fixed QMI firmware
memory
On 2/27/2025 11:10 AM, Raj Kumar Bhagat wrote:
...
> +static int ath12k_qmi_assign_target_mem_chunk(struct ath12k_base *ab)
> +{
> + struct reserved_mem *rmem;
> + phys_addr_t bdf_size;
> + int i, idx, ret;
> +
> + for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) {
> + switch (ab->qmi.target_mem[i].type) {
> + case HOST_DDR_REGION_TYPE:
> + rmem = ath12k_core_get_reserved_mem(ab, 0);
> + if (!rmem) {
> + ret = -ENODEV;
> + goto out;
> + }
> +
> + if (rmem->size < ab->qmi.target_mem[i].size) {
> + ath12k_dbg(ab, ATH12K_DBG_QMI,
> + "failed to assign mem type %d req size %d avail size %lld\n",
> + ab->qmi.target_mem[i].type,
> + ab->qmi.target_mem[i].size,
> + rmem->size);
The v6 version had a kernel test robot build warning here when building for
MIPS and it looks like nothing has changed.
I don't know the history of why struct reserved_mem::size is of type
phys_addr_t, but that type has a different size depending upon architecture,
therefore you can't use %lld.
To print it correctly you either need to use the %paa format that is meant for
that type, or probably better would be to assign it to a variable of type
size_t and then use %zu (and use that variable in the size test as well)
(also consider if the other %d formats should be %u instead)
> + ret = -EINVAL;
> + goto out;
> + }
> +
> + ab->qmi.target_mem[idx].paddr = rmem->base;
> + ab->qmi.target_mem[idx].v.ioaddr =
> + ioremap(ab->qmi.target_mem[idx].paddr,
> + ab->qmi.target_mem[i].size);
> + if (!ab->qmi.target_mem[idx].v.ioaddr) {
> + ret = -EIO;
> + goto out;
> + }
> + ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size;
> + ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type;
> + idx++;
> + break;
> + case BDF_MEM_REGION_TYPE:
> + rmem = ath12k_core_get_reserved_mem(ab, 0);
> + if (!rmem) {
> + ret = -ENODEV;
> + goto out;
> + }
> +
> + bdf_size = rmem->size - ab->hw_params->bdf_addr_offset;
> + if (bdf_size < ab->qmi.target_mem[i].size) {
> + ath12k_dbg(ab, ATH12K_DBG_QMI,
> + "failed to assign mem type %d req size %d avail size %lld\n",
> + ab->qmi.target_mem[i].type,
> + ab->qmi.target_mem[i].size,
> + bdf_size);
the same issue exists here.
again this would be fixed by making bdf_size type size_t and using %zu
> + ret = -EINVAL;
> + goto out;
> + }
> + ab->qmi.target_mem[idx].paddr =
> + rmem->base + ab->hw_params->bdf_addr_offset;
> + ab->qmi.target_mem[idx].v.ioaddr =
> + ioremap(ab->qmi.target_mem[idx].paddr,
> + ab->qmi.target_mem[i].size);
> + if (!ab->qmi.target_mem[idx].v.ioaddr) {
> + ret = -EIO;
> + goto out;
> + }
> + ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size;
> + ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type;
> + idx++;
> + break;
Powered by blists - more mailing lists