[PATCH] loongarch: mark loongarch_ipi_iocsr re-entrnacy safe

Alexander Bulekov posted 1 patch 12 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230506112145.3563708-1-alxndr@bu.edu
Maintainers: Xiaojuan Yang <yangxiaojuan@loongson.cn>, Song Gao <gaosong@loongson.cn>
hw/intc/loongarch_ipi.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] loongarch: mark loongarch_ipi_iocsr re-entrnacy safe
Posted by Alexander Bulekov 12 months ago
loongarch_ipi_iocsr MRs rely on re-entrant IO through the ipi_send
function. As such, mark these MRs re-entrancy-safe.

Fixes: a2e1753b80 ("memory: prevent dma-reentracy issues")
Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
---
 hw/intc/loongarch_ipi.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c
index bdba0f8107..9de7c01e11 100644
--- a/hw/intc/loongarch_ipi.c
+++ b/hw/intc/loongarch_ipi.c
@@ -215,6 +215,10 @@ static void loongarch_ipi_init(Object *obj)
     for (cpu = 0; cpu < MAX_IPI_CORE_NUM; cpu++) {
         memory_region_init_io(&s->ipi_iocsr_mem[cpu], obj, &loongarch_ipi_ops,
                             &lams->ipi_core[cpu], "loongarch_ipi_iocsr", 0x48);
+
+        /* loongarch_ipi_iocsr performs re-entrant IO through ipi_send */
+        s->ipi_iocsr_mem[cpu].disable_reentrancy_guard = true;
+
         sysbus_init_mmio(sbd, &s->ipi_iocsr_mem[cpu]);
 
         memory_region_init_io(&s->ipi64_iocsr_mem[cpu], obj, &loongarch_ipi64_ops,
-- 
2.39.0
Re: [PATCH] loongarch: mark loongarch_ipi_iocsr re-entrnacy safe
Posted by Song Gao 12 months ago

在 2023/5/6 下午7:21, Alexander Bulekov 写道:
> loongarch_ipi_iocsr MRs rely on re-entrant IO through the ipi_send
> function. As such, mark these MRs re-entrancy-safe.
>
> Fixes: a2e1753b80 ("memory: prevent dma-reentracy issues")
> Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
> ---
>   hw/intc/loongarch_ipi.c | 4 ++++
>   1 file changed, 4 insertions(+)
Reviewed-by: Song Gao <gaosong@loongson.cn>

Thanks.
Song Gao
> diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c
> index bdba0f8107..9de7c01e11 100644
> --- a/hw/intc/loongarch_ipi.c
> +++ b/hw/intc/loongarch_ipi.c
> @@ -215,6 +215,10 @@ static void loongarch_ipi_init(Object *obj)
>       for (cpu = 0; cpu < MAX_IPI_CORE_NUM; cpu++) {
>           memory_region_init_io(&s->ipi_iocsr_mem[cpu], obj, &loongarch_ipi_ops,
>                               &lams->ipi_core[cpu], "loongarch_ipi_iocsr", 0x48);
> +
> +        /* loongarch_ipi_iocsr performs re-entrant IO through ipi_send */
> +        s->ipi_iocsr_mem[cpu].disable_reentrancy_guard = true;
> +
>           sysbus_init_mmio(sbd, &s->ipi_iocsr_mem[cpu]);
>   
>           memory_region_init_io(&s->ipi64_iocsr_mem[cpu], obj, &loongarch_ipi64_ops,