From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
To: Luc Michel <luc.michel@amd.com>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org,
"Peter Maydell" <peter.maydell@linaro.org>,
"Francisco Iglesias" <francisco.iglesias@amd.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Alistair Francis" <alistair@alistair23.me>,
"Vikram Garhwal" <vikram.garhwal@bytedance.com>
Subject: Re: [PATCH 0/7] Register API leaks fixes
Date: Thu, 18 Sep 2025 08:21:35 +0200 [thread overview]
Message-ID: <aMuk76olZRwI0Y0t@zapote> (raw)
In-Reply-To: <20250917114450.175892-1-luc.michel@amd.com>
On Wed, Sep 17, 2025 at 01:44:41PM +0200, Luc Michel wrote:
> Based-on: 20250912100059.103997-1-luc.michel@amd.com ([PATCH v5 00/47] AMD Versal Gen 2 support)
>
> Hello,
>
> This series addresses the memory leaks caused by the register API. The
> first patches fix the API itself while the last ones take care of the
> CANFD model.
>
> The leaks in the register API were caused by:
> - the REGISTER device being initialized without being realized nor
> finalized. Those devices were not parented to anything and were
> not using the qdev API. So in the end I chose to drop the REGISTER
> object completely (patch 1).
> - Register API users not calling `register_finalize_block' on the
> RegisterInfoArray returned by `register_init_block'. Instead of
> fixing all the users, I chose to simplify the API by removing the
> need for this call. I turned the RegisterInfoArray struct into a QOM
> object and parented it to the device in `register_init_block'. This
> way it has its own finalize function that gets called when the
> parent device is finalized. This implies a small API change: the
> `register_finalize_block' function is removed (patch 2, 3, 4).
>
> The CANFD model needed special care. It was rolling out its own version
> of `register_init_block', including the discrepancies leading to the
> memory leaks. This is because the register map of this device is
> composed of main registers (from 0x0 to 0xec), followed by several banks
> of multiple registers (Tx banks, filter banks, Txe banks, ...). The
> register API is not suited for this kind of layout and the resulting
> code to handle that is convoluted. However a simple decoding logic is
> easily written for this, those registers having basically no side effect
> upon access.
>
> Patch 6 introduces this decoding logic for the banked registers, patch 7
> removes the register API bits for those, keeping the one for the base
> registers.
>
> Note: this series is based on my Versal 2 series. It modifies the CRL
> device during the register API refactoring. It can easily be rebased on
> master if needed.
>
> Thanks
>
> Luc
Hi Luc,
Entire series looks good to me!
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
>
>
> Luc Michel (7):
> hw/core/register: remove the REGISTER device type
> hw/core/register: add the REGISTER_ARRAY type
> hw/core/register: remove the calls to `register_finalize_block'
> hw/core/register: remove the `register_finalize_block' function
> hw/net/can/xlnx-versal-canfd: remove unused include directives
> hw/net/can/xlnx-versal-canfd: refactor the banked registers logic
> hw/net/can/xlnx-versal-canfd: remove register API usage for banked
> regs
>
> include/hw/misc/xlnx-versal-crl.h | 1 -
> include/hw/misc/xlnx-versal-xramc.h | 1 -
> include/hw/misc/xlnx-zynqmp-apu-ctrl.h | 1 -
> include/hw/misc/xlnx-zynqmp-crf.h | 1 -
> include/hw/net/xlnx-versal-canfd.h | 8 -
> include/hw/nvram/xlnx-bbram.h | 1 -
> include/hw/register.h | 25 +-
> hw/core/register.c | 36 +-
> hw/misc/xlnx-versal-crl.c | 38 +--
> hw/misc/xlnx-versal-trng.c | 1 -
> hw/misc/xlnx-versal-xramc.c | 12 +-
> hw/misc/xlnx-zynqmp-apu-ctrl.c | 12 +-
> hw/misc/xlnx-zynqmp-crf.c | 12 +-
> hw/net/can/xlnx-versal-canfd.c | 434 +++++++++----------------
> hw/nvram/xlnx-bbram.c | 13 +-
> hw/nvram/xlnx-versal-efuse-ctrl.c | 1 -
> hw/nvram/xlnx-zynqmp-efuse.c | 8 -
> 17 files changed, 196 insertions(+), 409 deletions(-)
>
> --
> 2.50.1
>
next prev parent reply other threads:[~2025-09-18 6:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-17 11:44 [PATCH 0/7] Register API leaks fixes Luc Michel
2025-09-17 11:44 ` [PATCH 1/7] hw/core/register: remove the REGISTER device type Luc Michel
2025-09-19 8:49 ` Francisco Iglesias
2025-09-28 23:32 ` Alistair Francis
2025-09-17 11:44 ` [PATCH 2/7] hw/core/register: add the REGISTER_ARRAY type Luc Michel
2025-09-19 8:50 ` Francisco Iglesias
2025-09-28 23:34 ` Alistair Francis
2025-09-17 11:44 ` [PATCH 3/7] hw/core/register: remove the calls to `register_finalize_block' Luc Michel
2025-09-19 8:51 ` Francisco Iglesias
2025-09-28 23:35 ` Alistair Francis
2025-09-17 11:44 ` [PATCH 4/7] hw/core/register: remove the `register_finalize_block' function Luc Michel
2025-09-19 8:52 ` Francisco Iglesias
2025-09-28 23:35 ` Alistair Francis
2025-09-17 11:44 ` [PATCH 5/7] hw/net/can/xlnx-versal-canfd: remove unused include directives Luc Michel
2025-09-19 8:47 ` Francisco Iglesias
2025-09-28 23:36 ` Alistair Francis
2025-09-17 11:44 ` [PATCH 6/7] hw/net/can/xlnx-versal-canfd: refactor the banked registers logic Luc Michel
2025-09-19 8:48 ` Francisco Iglesias
2025-09-17 11:44 ` [PATCH 7/7] hw/net/can/xlnx-versal-canfd: remove register API usage for banked regs Luc Michel
2025-09-19 8:48 ` Francisco Iglesias
2025-09-18 6:21 ` Edgar E. Iglesias [this message]
2025-09-29 10:19 ` [PATCH 0/7] Register API leaks fixes Philippe Mathieu-Daudé
2025-10-01 21:07 ` Luc Michel
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=aMuk76olZRwI0Y0t@zapote \
--to=edgar.iglesias@amd.com \
--cc=alistair@alistair23.me \
--cc=francisco.iglesias@amd.com \
--cc=luc.michel@amd.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vikram.garhwal@bytedance.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.