From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Ruslan Ruslichenko <ruslichenko.r@gmail.com>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org, artem_mygaiev@epam.com,
volodymyr_babchuk@epam.com, takahiro.nakata.wr@renesas.com,
"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
francisco.iglesias@amd.com, Ruslan_Ruslichenko@epam.com,
"Edgar E . Iglesias" <edgar.iglesias@amd.com>
Subject: Re: [PATCH 01/29] hw/core: Add Remote Port protocol packet definition
Date: Fri, 6 Feb 2026 18:06:25 +0000 [thread overview]
Message-ID: <aYYtoTZvHtG_jsC-@redhat.com> (raw)
In-Reply-To: <CAN-aV1HdTaJEtLU8uWcatB-9EZkNu=AkB_ZC5CdwMo6zXe9yXQ@mail.gmail.com>
On Fri, Feb 06, 2026 at 06:45:37PM +0100, Ruslan Ruslichenko wrote:
> On Thu, Feb 5, 2026 at 9:39 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Thu, Feb 05, 2026 at 08:57:56PM +0100, Ruslan Ruslichenko wrote:
> > > From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> > >
> > > Introduce packet definition for Remote Port protocol.
> > >
> > > Remote Port is a socket based inter-simulation protocol
> > > designed to connect QEMU to external simulator (such as
> > > SystemC models, RTL simulators, etc) for hardware co-
> > > simulation.
> > >
> > > The protocol supports bidirectional communication for:
> > > - Connection setup, version negotiation (Hello/Cfg packets)
> > > - Memory and MMIO transactions (Read/Write packets)
> > > - Interrupts and GPIO signaling (Interrupt packets)
> > > - Time synchronization (Sync packets)
> > >
> > > The patch introduces header file with packet definition
> > > used by protocol.
> > >
> > > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
> > > Signed-off-by: Takahiro Nakata <takahiro.nakata.wr@renesas.com>
> > > Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> > > ---
> > > include/hw/core/remote-port-proto.h | 305 ++++++++++++++++++++++++++++
> > > 1 file changed, 305 insertions(+)
> > > create mode 100644 include/hw/core/remote-port-proto.h
> > >
> > > diff --git a/include/hw/core/remote-port-proto.h b/include/hw/core/remote-port-proto.h
> > > new file mode 100644
> > > index 0000000000..cbe1498df0
> > > --- /dev/null
> > > +++ b/include/hw/core/remote-port-proto.h
> > > @@ -0,0 +1,305 @@
> > > +// SPDX-License-Identifier: MIT
> >
> > Preferrably stick this inside the comment block below instead of
> > mixing C and C++ style comments.
> >
> > > +/*
> > > + * QEMU remote port protocol parts.
> > > + *
> > > + * Copyright (c) 2013 Xilinx Inc
> > > + * Written by Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> > > + *
> > > + * Permission is hereby granted, free of charge, to any person obtaining a copy
> > > + * of this software and associated documentation files (the "Software"), to deal
> > > + * in the Software without restriction, including without limitation the rights
> > > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > > + * copies of the Software, and to permit persons to whom the Software is
> > > + * furnished to do so, subject to the following conditions:
> > > + *
> > > + * The above copyright notice and this permission notice shall be included in
> > > + * all copies or substantial portions of the Software.
> > > + *
> > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> > > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> > > + * THE SOFTWARE.
> >
> > Including this is OK, since IIUC in this case you're carrying on
> > with someone else's code, and so aren't permitted to remove their
> > license comment.
> >
> > If there are any files later in the series that you wrote yourself
> > from scratch though, they can omit any license comments, only the
> > SPDX is need.
> >
>
> Understood.
> Basically all headers in the patch series were already present, which
> is the reason I left them.
>
> >
> > > + */
> > > +#ifndef REMOTE_PORT_PROTO_H__
> > > +#define REMOTE_PORT_PROTO_H__
> > > +
> > > +/*
> > > + * Remote-Port (RP) is an inter-simulator protocol. It assumes a reliable
> > > + * point to point communcation with the remote simulation environment.
> > > + *
> > > + * Setup
> > > + * In the SETUP phase a mandatory HELLO packet is exchanged with optional
> > > + * CFG packets following. HELLO packets are useful to ensure that both
> > > + * sides are speaking the same protocol and using compatible versions.
> > > + *
> > > + * CFG packets are used to negotiate configuration options. At the moment
> > > + * these remain unimplemented.
> > > + *
> > > + * Once the session is up, communication can start through various other
> > > + * commands. The list can be found further down this document.
> > > + * Commands are carried over RP packets. Every RP packet contains a header
> > > + * with length, flags and an ID to track potential responses.
> > > + * The header is followed by a packet specific payload. You'll find the
> > > + * details of the various commands packet layouts here. Some commands can
> > > + * carry data/blobs in their payload.
> > > + */
> > > +
> > > +
> > > +#define RP_VERSION_MAJOR 4
> > > +#define RP_VERSION_MINOR 3
> > > +
> > > +#if defined(_WIN32) && defined(__MINGW32__)
> > > +/* mingw GCC has a bug with packed attributes. */
> > > +#define PACKED __attribute__ ((gcc_struct, packed))
> > > +#else
> > > +#define PACKED __attribute__ ((packed))
> > > +#endif
> >
> > Is this comment & conditional #define still relevant today ?
> >
> > For the rest of QEMU we just use QEMU_PACKED whose definition matches
> > the #else clause. Ideally change the patch to use QEMU_PACKED, if not,
> > mention in the commit message why it can't be used.
> >
>
> I will double check. Might be some old mingw version which is not actual today.
We have CI jobs for mingw on gitlab. If you fork the repo, and push your
branch to your gitlab fork, while setting "QEMU_CI=2", it'll run the
CI jobs. The file docs/devel/testing/ci-jobs.rst.inc has more info.
If it passes with the CI (current mingw in Fedora, and with latest Msys2 on
Windows) then that's sufficient. We don't try to support older versions.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2026-02-06 18:07 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-05 19:57 [PATCH 00/29] hw/core: Introduce Remote Port Co-simulation Protocol Ruslan Ruslichenko
2026-02-05 19:57 ` [PATCH 01/29] hw/core: Add Remote Port protocol packet definition Ruslan Ruslichenko
2026-02-05 20:38 ` Daniel P. Berrangé
2026-02-06 17:45 ` Ruslan Ruslichenko
2026-02-06 18:06 ` Daniel P. Berrangé [this message]
2026-02-05 19:57 ` [PATCH 02/29] hw/core: Add Remote Port header helpers Ruslan Ruslichenko
2026-02-05 19:57 ` [PATCH 03/29] hw/core: Add Remote Port session state and hello protocol Ruslan Ruslichenko
2026-02-05 19:57 ` [PATCH 04/29] hw/core: Implement Remote Port bus access helpers Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 05/29] hw/core: Implement Remote Port irq, sync and ATS helpers Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 06/29] system/vl: Introduce -machine-path command line option Ruslan Ruslichenko
2026-02-05 20:17 ` Daniel P. Berrangé
2026-02-05 19:58 ` [PATCH 07/29] hw/core: Add Remote Port object skeleton Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 08/29] hw/core: Setup Remote Port I/O channels Ruslan Ruslichenko
2026-02-05 20:28 ` Daniel P. Berrangé
2026-02-06 17:33 ` Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 09/29] hw/core: Add Remote Port protocol thread and handshake Ruslan Ruslichenko
2026-02-05 20:29 ` Daniel P. Berrangé
2026-02-06 17:38 ` Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 10/29] hw/core: Implement Remote Port packet dispatch logic Ruslan Ruslichenko
2026-02-05 20:32 ` Daniel P. Berrangé
2026-02-05 19:58 ` [PATCH 11/29] hw/core: Implement Remote Port response handling Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 12/29] hw/core: Implement Remote Port time synchronization Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 13/29] system/memory: Introduce unified MemoryTransaction and .access callback Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 14/29] hw/core: Add Remote Port Memory Master object skeleton Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 15/29] hw/core: Implement Remote Port Memory Master bus transactions Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 16/29] system/physmem: Add ats_do_translate helper Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 17/29] hw/core: Add Remote Port ATS device skeleton Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 18/29] hw/core: Implement Remote Port ATS logic and cache management Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 19/29] hw/core: Add Remote Port memory slave device Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 20/29] hw/core: Add Remote Port GPIO/Interrupt bridge Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 21/29] hw/core: Add Remote Port Stream device Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 22/29] hw/core: Add Remote Port files to build Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 23/29] system: Introduce -sync-quantum command line option Ruslan Ruslichenko
2026-02-05 20:40 ` Daniel P. Berrangé
2026-02-06 17:57 ` Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 24/29] hw/core: Add FDT support to Remote Port GPIO Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 25/29] hw/core: Add FDT support to Remote Port memory master Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 26/29] hw/core: Add Remote Port connection support to fdt-generic Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 27/29] hw/core: Support IOMMU translation for Remote Port memory slave Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 28/29] hw/core: Add Remote Port attachment helpers Ruslan Ruslichenko
2026-02-05 19:58 ` [PATCH 29/29] hw/core: Add ATS support to Remote Port memory slave Ruslan Ruslichenko
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=aYYtoTZvHtG_jsC-@redhat.com \
--to=berrange@redhat.com \
--cc=Ruslan_Ruslichenko@epam.com \
--cc=artem_mygaiev@epam.com \
--cc=edgar.iglesias@amd.com \
--cc=edgar.iglesias@gmail.com \
--cc=francisco.iglesias@amd.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=ruslichenko.r@gmail.com \
--cc=takahiro.nakata.wr@renesas.com \
--cc=volodymyr_babchuk@epam.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.