On Thu, Feb 5, 2026 at 9:39 PM Daniel P. Berrangé <[email protected]> wrote: > > On Thu, Feb 05, 2026 at 08:57:56PM +0100, Ruslan Ruslichenko wrote: > > From: Ruslan Ruslichenko <[email protected]> > > > > 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 <[email protected]> > > Signed-off-by: Takahiro Nakata <[email protected]> > > Signed-off-by: Ruslan Ruslichenko <[email protected]> > > --- > > 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 <[email protected]> > > + * > > + * 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. > > 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 :| > -- BR, Ruslan
