[PATCH v2 02/19] ppc/vof: Fix missed fields in VOF cleanup

Nicholas Piggin posted 19 patches 1 year, 3 months ago
[PATCH v2 02/19] ppc/vof: Fix missed fields in VOF cleanup
Posted by Nicholas Piggin 1 year, 3 months ago
Failing to reset the of_instance_last makes ihandle allocation continue
to increase, which causes record-replay replay fail to match the
recorded trace.

Not resetting claimed_base makes VOF eventually run out of memory after
some resets.

Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Fixes: fc8c745d501 ("spapr: Implement Open Firmware client interface")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
 hw/ppc/vof.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/ppc/vof.c b/hw/ppc/vof.c
index 18c3f92317..e3b430a81f 100644
--- a/hw/ppc/vof.c
+++ b/hw/ppc/vof.c
@@ -1024,6 +1024,8 @@ void vof_cleanup(Vof *vof)
     }
     vof->claimed = NULL;
     vof->of_instances = NULL;
+    vof->of_instance_last = 0;
+    vof->claimed_base = 0;
 }
 
 void vof_build_dt(void *fdt, Vof *vof)
-- 
2.40.1
Re: [PATCH v2 02/19] ppc/vof: Fix missed fields in VOF cleanup
Posted by Alexey Kardashevskiy 1 year, 3 months ago

On 08/08/2023 14:19, Nicholas Piggin wrote:
> Failing to reset the of_instance_last makes ihandle allocation continue
> to increase, which causes record-replay replay fail to match the
> recorded trace.
> 
> Not resetting claimed_base makes VOF eventually run out of memory after
> some resets.
> 
> Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
> Fixes: fc8c745d501 ("spapr: Implement Open Firmware client interface")
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>


Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>

Cool to see it still in use :)


> ---
>   hw/ppc/vof.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/hw/ppc/vof.c b/hw/ppc/vof.c
> index 18c3f92317..e3b430a81f 100644
> --- a/hw/ppc/vof.c
> +++ b/hw/ppc/vof.c
> @@ -1024,6 +1024,8 @@ void vof_cleanup(Vof *vof)
>       }
>       vof->claimed = NULL;
>       vof->of_instances = NULL;
> +    vof->of_instance_last = 0;
> +    vof->claimed_base = 0;
>   }
>   
>   void vof_build_dt(void *fdt, Vof *vof)

-- 
Alexey