Hi all,
This the RFC I'm preparing to send to upstream QEMU for initial RFC review.
A couple of limitations:
I've not updated the protocol with the new msg_token field yet.
We only support a single device per bus (dev_num = 0).
The kernel driver only works as a module, when building it into the kernel
it panics.
-------------------
This adds virtio-msg, a new virtio transport. Virtio-msg works by
exchanging messages over a bus and doesn't rely on trapping and emulating
making it a good fit for a number of applications such as AMP, real-time
and safety applications.
Together with the new transport, this series adds a PCI device that
implements an AMP setup much like it would look if two SoC's would
use virtio-msg across a PCI link.
The virtio-msg spec:
https://github.com/Linaro/virtio-msg-spec/
Linux with virtio-msg:
https://github.com/edgarigl/linux/tree/edgari/virtio-msg-6.17
To try it, first build Linux with the following as modules:
CONFIG_VIRTIO_MSG=m
CONFIG_VIRTIO_MSG_AMP=m
CONFIG_VIRTIO_MSG_AMP_PCI=m
Boot linux in QEMU with a virtio-msg-amp-pci device, in this example
with a virtio-net device attached to it (x86/q35 machine):
-device virtio-msg-amp-pci
-device virtio-net-device,netdev=n1,bus=/q35-pcihost/pcie.0/virtio-msg-amp-pci/vmsg.0
-netdev user,id=nc
Modprobe:
modprobe virtio_msg_transport.ko
modprobe virtio_msg_amp.ko
modprobe virtio_msg_amp_pci.ko
You now should see the virtio device.
Cheers,
Edgar
Edgar E. Iglesias (4):
virtio: Introduce notify_queue
virtio: Add virtio_queue_get_rings
virtio: Add the virtio-msg transport
virtio-msg-bus: amp-pci: Add generic AMP PCI device
hw/misc/Kconfig | 7 +
hw/misc/meson.build | 1 +
hw/misc/virtio-msg-amp-pci.c | 324 ++++++++++++
hw/virtio/Kconfig | 4 +
hw/virtio/meson.build | 5 +
hw/virtio/virtio-msg-bus.c | 89 ++++
hw/virtio/virtio-msg.c | 596 ++++++++++++++++++++++
hw/virtio/virtio.c | 23 +
include/hw/virtio/virtio-bus.h | 1 +
include/hw/virtio/virtio-msg-bus.h | 95 ++++
include/hw/virtio/virtio-msg-prot.h | 747 ++++++++++++++++++++++++++++
include/hw/virtio/virtio-msg.h | 45 ++
include/hw/virtio/virtio.h | 2 +
13 files changed, 1939 insertions(+)
create mode 100644 hw/misc/virtio-msg-amp-pci.c
create mode 100644 hw/virtio/virtio-msg-bus.c
create mode 100644 hw/virtio/virtio-msg.c
create mode 100644 include/hw/virtio/virtio-msg-bus.h
create mode 100644 include/hw/virtio/virtio-msg-prot.h
create mode 100644 include/hw/virtio/virtio-msg.h
--
2.43.0
Hi Everyone,
Today, Arm is releasing the first public version of the Virtio Message Bus over FF-A in version 1.0 and in quality state Alpha 0.
The document is available for download here:
https://developer.arm.com/documentation/den0153/0100
Please contact me if you have any comment, remarks, questions or improvements to suggest so that i can handle them before the spec reaches Beta quality.
Regards
Bertrand
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Wondering does Apple TV have live TV? The answer is yes — but with a twist. Apple TV itself doesn’t stream live channels directly. Instead, it lets you access live TV through different apps and streaming services. Think of it as a smart hub that connects all your favorite entertainment in one place.
You can watch live news, sports, and local channels using apps like YouTube TV, Hulu + Live TV, Sling TV, or fuboTV. These apps stream live content right through your Apple TV device, so you never miss your favorite shows or games. Plus, Apple TV’s clean interface and Siri voice control make browsing super easy and fun.
If you’re subscribed to Apple TV+, you’ll get original series and movies, but not traditional live channels. To enjoy live TV, just download your preferred streaming app, sign in, and start watching.
So, does Apple TV have live TV? Absolutely — through partner apps and services. It’s the perfect choice for cord-cutters who want flexibility, high quality, and convenience in one device. For more tech tips and guides like this, visit Home Tech Nerves and stay tuned for smarter streaming solutions!
Visit Now: https://hometechnerves.com/does-apple-tv-have-live-tv/
Hi,
I pushed the following pull request to github:
https://github.com/Linaro/virtio-msg-spec/pull/24
It is a proposal to handle some things we agreed on modifying in the spec:
- header size 8 byte
- unique identifier in header
- relax error handling to let bus report errors and be coherent with current linux implementation
This is a draft and i am definitely open to comments :-)
Cheers
Bertrand
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hello,
I will try to send this upstream early next week.
V2:
- Don't limit get/set config to 8 bytes only.
- Improved direct/indirect message handling.
- Take care of EBUSY error during indirect message.
- Static assertions.
-------------------------8<-------------------------
Hello,
This RFC series introduces support for a new Virtio transport type:
"virtio-msg", as proposed in [1]. Unlike existing transport types like
virtio-mmio or virtio-pci which rely on memory-mapped registers, virtio-msg
implements transport operations via structured messages. Those messages can be
transported through different mechanisms such as mailboxes, shared memory based
FIFO or specific protocols such as FF-A on Arm.
This series includes:
- Core virtio-msg transport support.
- Two message transport bus implementations:
- virtio-msg-ffa: based on ARM's Firmware Framework for Arm (FF-A).
- virtio-msg-loopback: a loopback device for testing and validation.
The code is available here for reference: [3] and virtio-msg loopback test setup
is explained here: [2].
This series is based on v6.16-rc6 and depends on commit [4] from linux-next.
### Memory Mapping and Reserved Memory Usage
The first two patches enhance the reserved-memory subsystem to support attaching
struct device`s that do not originate from DT nodes—essential for virtual or
dynamically discovered devices like the FF-A or loopback buses.
This reserved-memory region enables:
- Restricting all DMA-coherent and streaming DMA memory to a controlled range.
- Allowing the remote endpoint to pre-map this memory, reducing runtime overhead.
- Preventing unintentional data leaks, since memory is typically shared at page
granularity.
- For the loopback bus, it restricts the portion of kernel memory that can be
mapped into userspace, improving safety.
Device association with reserved-memory regions is based on DT node naming
conventions, such as vmsglb@ or vmsgffa@, similar to the remoteproc framework’s
approach.
Feedback on the design, API, and approach is welcome.
--
Viresh
[1] https://lore.kernel.org/all/20250620224426.3923880-2-bill.mills@linaro.org/
[2] https://linaro.atlassian.net/wiki/spaces/HVAC/pages/30104092673
[3] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git virtio/msg-rfc-v1
[4] From linux-next: 5be53630b4f0 virtio-mmio: Remove virtqueue list from mmio device
Viresh Kumar (6):
of: reserved-memory: Add reserved_mem_device_init()
of: reserved-memory: Add of_reserved_mem_lookup_by_name
virtio: Add support for virtio-msg transport
virtio-msg: Add optional userspace interface for message I/O
virtio-msg: Add support for FF-A (Firmware Framework for Arm) bus
virtio-msg: Add support for loopback bus
MAINTAINERS | 7 +
drivers/of/of_reserved_mem.c | 91 ++--
drivers/virtio/Kconfig | 34 ++
drivers/virtio/Makefile | 5 +
drivers/virtio/virtio_msg.c | 611 +++++++++++++++++++++++++++
drivers/virtio/virtio_msg.h | 88 ++++
drivers/virtio/virtio_msg_ffa.c | 505 ++++++++++++++++++++++
drivers/virtio/virtio_msg_loopback.c | 323 ++++++++++++++
drivers/virtio/virtio_msg_user.c | 119 ++++++
include/linux/of_reserved_mem.h | 13 +
include/uapi/linux/virtio_msg.h | 221 ++++++++++
include/uapi/linux/virtio_msg_ffa.h | 94 +++++
include/uapi/linux/virtio_msg_lb.h | 22 +
13 files changed, 2109 insertions(+), 24 deletions(-)
create mode 100644 drivers/virtio/virtio_msg.c
create mode 100644 drivers/virtio/virtio_msg.h
create mode 100644 drivers/virtio/virtio_msg_ffa.c
create mode 100644 drivers/virtio/virtio_msg_loopback.c
create mode 100644 drivers/virtio/virtio_msg_user.c
create mode 100644 include/uapi/linux/virtio_msg.h
create mode 100644 include/uapi/linux/virtio_msg_ffa.h
create mode 100644 include/uapi/linux/virtio_msg_lb.h
--
2.31.1.272.g89b43f80a514
All,
I have pushed and tagged a new version of the hvac-demo repo.
I have also updated the pre-built container image at:
docker.io/wmills/hvac-demo
Remember you may need to pull the container image again to see the new version:
podman pull docker.io/wmills/hvac-demo
- or -
docker pull docker.io/wmills/hvac-demo
Changes include:
* added demo-loopback to show virtio-msg-loopback (based on Viresh's work)
* added demo-amp-qemu-pci with virtio-msg-amp on an emulated pcie card in QEMU
* renamed all the demos to describe the demo instead of numbers
* rebased demo-ffa-xen to use Viresh's latest kernel and rust code
* other demos are just renamed
Old name New name
----------------------------------
new demo-loopback
new demo-amp-qemu-pci
demo1 demoo-ffa-xen
demo2a (deleted)
demo2b demo-proxy-qemu
demo3 demo-amp-zephyr
demo4 demo-amp-dual-linux
The following issues are known:
1) demo-ffa-xen hangs or crashes 1 out of 5 or 10 times
Just run again if you see this
2) ./Build all does not build linux-virtio-msg-v2, use
./Build all linux-virtio-msg-amp-v2
You do not need to build the demos to run them
3) The timeout in demo-amp-dual-linux to too short for VERY slow systems
Most people won't see this issue. I was testing on a RPiv5
Fixes for the last two issues are in the wip-v0.6-fixes branch.
--
Bill Mills
Principal Technical Consultant, Linaro
+1-240-643-0836
TZ: US Eastern
Work Schedule: Tues/Wed/Thur
Hello,
This RFC series introduces support for a new Virtio transport type:
"virtio-msg", as proposed in [1]. Unlike existing transport types like
virtio-mmio or virtio-pci, which rely on memory-mapped registers, virtio-msg
implements transport operations via structured messages. Those messages can be
transported through different mechanisms such as mailboxes, shared memory based
FIFO or specific protocols such as FF-A on Arm.
This series includes:
- Core virtio-msg transport support.
- Two message transport bus implementations:
- virtio-msg-ffa: based on ARM's Firmware Framework for Arm (FF-A).
- virtio-msg-loopback: a loopback device for testing and validation.
The code is available here for reference: [2] and virtio-msg loopback and FF-A
test setups are explained here: [3] and [4].
This series is based on v6.16 and depends on commit [5].
### Memory Mapping and Reserved Memory Usage
The first two patches enhance the reserved-memory subsystem to support attaching
struct device`s that do not originate from DT nodes — essential for virtual or
dynamically discovered devices like the FF-A or loopback buses.
This reserved-memory region enables:
- Restricting all DMA-coherent and streaming DMA memory to a controlled range.
- Allowing the remote endpoint to pre-map this memory, reducing runtime overhead.
- Preventing unintentional data leaks, since memory is typically shared at page
granularity.
- For the loopback bus, it restricts the portion of kernel memory that can be
mapped into userspace, improving safety.
Device association with reserved-memory regions is based on DT node naming
conventions, such as vmsglb@ or vmsgffa@, similar to the remoteproc framework’s
approach.
Feedback on the design, API, and approach is welcome.
--
Viresh
[1] https://lore.kernel.org/all/20250620224426.3923880-2-bill.mills@linaro.org/
[2] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git virtio/msg-rfc-v1
[3] https://linaro.atlassian.net/wiki/spaces/HVAC/pages/30104092673
[4] https://linaro.atlassian.net/wiki/spaces/HVAC/pages/29657792513
[5] From linux-next: 5be53630b4f0 virtio-mmio: Remove virtqueue list from mmio device
Viresh Kumar (6):
of: reserved-memory: Add reserved_mem_device_init()
of: reserved-memory: Add of_reserved_mem_lookup_by_name
virtio: Add support for virtio-msg transport
virtio-msg: Add optional userspace interface for message I/O
virtio-msg: Add support for FF-A (Firmware Framework for Arm) bus
virtio-msg: Add support for loopback bus
MAINTAINERS | 7 +
drivers/of/of_reserved_mem.c | 91 +++-
drivers/virtio/Kconfig | 34 ++
drivers/virtio/Makefile | 5 +
drivers/virtio/virtio_msg.c | 655 +++++++++++++++++++++++++++
drivers/virtio/virtio_msg_ffa.c | 505 +++++++++++++++++++++
drivers/virtio/virtio_msg_internal.h | 88 ++++
drivers/virtio/virtio_msg_loopback.c | 323 +++++++++++++
drivers/virtio/virtio_msg_user.c | 140 ++++++
include/linux/of_reserved_mem.h | 13 +
include/uapi/linux/virtio_msg.h | 213 +++++++++
include/uapi/linux/virtio_msg_ffa.h | 94 ++++
include/uapi/linux/virtio_msg_lb.h | 22 +
13 files changed, 2166 insertions(+), 24 deletions(-)
create mode 100644 drivers/virtio/virtio_msg.c
create mode 100644 drivers/virtio/virtio_msg_ffa.c
create mode 100644 drivers/virtio/virtio_msg_internal.h
create mode 100644 drivers/virtio/virtio_msg_loopback.c
create mode 100644 drivers/virtio/virtio_msg_user.c
create mode 100644 include/uapi/linux/virtio_msg.h
create mode 100644 include/uapi/linux/virtio_msg_ffa.h
create mode 100644 include/uapi/linux/virtio_msg_lb.h
--
2.31.1.272.g89b43f80a514
Hi everyone,
Over the last few weeks, I have made numerous changes in the design and code to
get it ready for mainline. I have now prepared the initial RFC patchset to be
sent to LKML.
Please have a look and provide your valuable feedback.
-------------------------8<-------------------------
Hello,
This RFC series introduces support for a new Virtio transport type:
"virtio-msg", as proposed in [1]. Unlike existing transport types like
virtio-mmio or virtio-pci which rely on memory-mapped registers, virtio-msg
implements transport operations via structured message exchanges using standard
virtqueues.
This series includes:
- Core virtio-msg transport support.
- Two message transport bus implementations:
- virtio-msg-ffa: based on ARM's Firmware Framework for Arm (FF-A).
- virtio-msg-loopback: a loopback device for testing and validation.
The code is available here for reference: [3] and virtio-msg loopback test setup
is explained here: [2].
This series is based on v6.16-rc6 and depends on commit [4] from linux-next.
### Memory Mapping and Reserved Memory Usage
The first two patches enhance the reserved-memory subsystem to support attaching
`struct device`s that do not originate from DT nodes—essential for virtual or
dynamically discovered devices like the FF-A or loopback buses.
This reserved-memory region enables:
- Restricting all DMA-coherent and streaming DMA memory to a controlled range.
- Allowing the remote endpoint to pre-map this memory, reducing runtime overhead.
- Preventing unintentional data leaks, since memory is typically shared at page
granularity.
- For the loopback bus, it restricts the portion of kernel memory that can be
mapped into userspace, improving safety.
Feedback on the design, API, and approach is welcome.
--
Viresh
[1] https://lore.kernel.org/all/20250620224426.3923880-2-bill.mills@linaro.org/
[2] https://linaro.atlassian.net/wiki/spaces/HVAC/pages/30104092673
[3] git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git virtio/msg-rfc-v1
[4] From linux-next: 5be53630b4f0 virtio-mmio: Remove virtqueue list from mmio device
Viresh Kumar (6):
of: reserved-memory: Add reserved_mem_device_init()
of: reserved-memory: Add of_reserved_mem_lookup_by_name
virtio: Add support for virtio-msg transport
virtio-msg: Add optional userspace interface for message I/O
virtio-msg: Add support for FF-A (Firmware Framework for Arm) bus
virtio-msg: Add support for loopback bus
MAINTAINERS | 7 +
drivers/of/of_reserved_mem.c | 91 +++--
drivers/virtio/Kconfig | 34 ++
drivers/virtio/Makefile | 5 +
drivers/virtio/virtio_msg.c | 546 +++++++++++++++++++++++++++
drivers/virtio/virtio_msg.h | 88 +++++
drivers/virtio/virtio_msg_ffa.c | 501 ++++++++++++++++++++++++
drivers/virtio/virtio_msg_loopback.c | 323 ++++++++++++++++
drivers/virtio/virtio_msg_user.c | 119 ++++++
include/linux/of_reserved_mem.h | 13 +
include/uapi/linux/virtio_msg.h | 221 +++++++++++
include/uapi/linux/virtio_msg_ffa.h | 94 +++++
include/uapi/linux/virtio_msg_lb.h | 22 ++
13 files changed, 2040 insertions(+), 24 deletions(-)
create mode 100644 drivers/virtio/virtio_msg.c
create mode 100644 drivers/virtio/virtio_msg.h
create mode 100644 drivers/virtio/virtio_msg_ffa.c
create mode 100644 drivers/virtio/virtio_msg_loopback.c
create mode 100644 drivers/virtio/virtio_msg_user.c
create mode 100644 include/uapi/linux/virtio_msg.h
create mode 100644 include/uapi/linux/virtio_msg_ffa.h
create mode 100644 include/uapi/linux/virtio_msg_lb.h
--
2.31.1.272.g89b43f80a514