qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: Alistair Francis <alistair23@gmail.com>
Cc: qemu-devel@nongnu.org, Roman Bolshakov <rbolshakov@ddn.com>,
	Bin Meng <bmeng.cn@gmail.com>,
	tjeznach@rivosinc.com, qemu-riscv@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	pbonzini@redhat.com,
	Daniel Henrique Barboza <dbarboza@ventanamicro.com>,
	peter.maydell@linaro.org, Cameron Esfahani <dirty@apple.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: Re: [PATCH v2] hw/riscv: fix build error with clang
Date: Mon, 4 Nov 2024 20:29:48 -0800	[thread overview]
Message-ID: <a9c03f45-13d5-49ef-9c26-f3ab81c5932f@linaro.org> (raw)
In-Reply-To: <CAKmqyKN+mYMRqA7=Tb+-qNr_b7TQ8rapaB_YDPqjgKWAggeygA@mail.gmail.com>

Thanks for the review.
Feel free to pull the patch in your next PR, so it can be available for 
release 9.2.

Regards,
Pierrick

On 11/4/24 18:37, Alistair Francis wrote:
> On Tue, Nov 5, 2024 at 8:23 AM Pierrick Bouvier
> <pierrick.bouvier@linaro.org> wrote:
>>
>> Introduced in 0c54ac, "hw/riscv: add RISC-V IOMMU base emulation"
>>
>> ../hw/riscv/riscv-iommu.c:187:17: error: redefinition of '_pext_u64'
>>
>>    187 | static uint64_t _pext_u64(uint64_t val, uint64_t ext)
>>
>>        |                 ^
>>
>> D:/a/_temp/msys64/clang64/lib/clang/18/include/bmi2intrin.h:217:1: note: previous definition is here
>>
>>    217 | _pext_u64(unsigned long long __X, unsigned long long __Y)
>>
>>        | ^
>>
>> After a conversation on the mailing list, it was decided to rename and
>> add a comment for this function.
>>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> 
> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> 
> Alistair
> 
>> ---
>>   hw/riscv/riscv-iommu.c | 23 ++++++++++++++++++++---
>>   1 file changed, 20 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/riscv/riscv-iommu.c b/hw/riscv/riscv-iommu.c
>> index feb650549ac..12f01a75f5d 100644
>> --- a/hw/riscv/riscv-iommu.c
>> +++ b/hw/riscv/riscv-iommu.c
>> @@ -183,8 +183,25 @@ static void riscv_iommu_pri(RISCVIOMMUState *s,
>>       }
>>   }
>>
>> -/* Portable implementation of pext_u64, bit-mask extraction. */
>> -static uint64_t _pext_u64(uint64_t val, uint64_t ext)
>> +/*
>> + * Discards all bits from 'val' whose matching bits in the same
>> + * positions in the mask 'ext' are zeros, and packs the remaining
>> + * bits from 'val' contiguously at the least-significant end of the
>> + * result, keeping the same bit order as 'val' and filling any
>> + * other bits at the most-significant end of the result with zeros.
>> + *
>> + * For example, for the following 'val' and 'ext', the return 'ret'
>> + * will be:
>> + *
>> + * val = a b c d e f g h
>> + * ext = 1 0 1 0 0 1 1 0
>> + * ret = 0 0 0 0 a c f g
>> + *
>> + * This function, taken from the riscv-iommu 1.0 spec, section 2.3.3
>> + * "Process to translate addresses of MSIs", is similar to bit manip
>> + * function PEXT (Parallel bits extract) from x86.
>> + */
>> +static uint64_t riscv_iommu_pext_u64(uint64_t val, uint64_t ext)
>>   {
>>       uint64_t ret = 0;
>>       uint64_t rot = 1;
>> @@ -528,7 +545,7 @@ static MemTxResult riscv_iommu_msi_write(RISCVIOMMUState *s,
>>       int cause;
>>
>>       /* Interrupt File Number */
>> -    intn = _pext_u64(PPN_DOWN(gpa), ctx->msi_addr_mask);
>> +    intn = riscv_iommu_pext_u64(PPN_DOWN(gpa), ctx->msi_addr_mask);
>>       if (intn >= 256) {
>>           /* Interrupt file number out of range */
>>           res = MEMTX_ACCESS_ERROR;
>> --
>> 2.39.5
>>
>>

  reply	other threads:[~2024-11-05  4:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-04 22:22 [PATCH v2] hw/riscv: fix build error with clang Pierrick Bouvier
2024-11-05  2:37 ` Alistair Francis
2024-11-05  4:29   ` Pierrick Bouvier [this message]
2024-11-05 22:55     ` Philippe Mathieu-Daudé
2024-11-06  8:38       ` Daniel Henrique Barboza
2024-11-05  2:57 ` LIU Zhiwei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a9c03f45-13d5-49ef-9c26-f3ab81c5932f@linaro.org \
    --to=pierrick.bouvier@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=alistair23@gmail.com \
    --cc=bmeng.cn@gmail.com \
    --cc=dbarboza@ventanamicro.com \
    --cc=dirty@apple.com \
    --cc=liwei1518@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=rbolshakov@ddn.com \
    --cc=tjeznach@rivosinc.com \
    --cc=zhiwei_liu@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).