History log of /qemu/qapi/ (Results 51 – 75 of 1657)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
af113f6f20-Feb-2024 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

qapi/ui: correct typos

Correct typos automatically found with the `typos` tool
<https://crates.io/crates/typos>

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Mark

qapi/ui: correct typos

Correct typos automatically found with the `typos` tool
<https://crates.io/crates/typos>

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...


/qemu/.gitlab-ci.d/buildtest.yml
/qemu/.gitlab-ci.d/windows.yml
/qemu/MAINTAINERS
/qemu/accel/Kconfig
/qemu/accel/tcg/ldst_atomicity.c.inc
/qemu/audio/meson.build
/qemu/configs/devices/arm-softmmu/default.mak
/qemu/configure
/qemu/contrib/vhost-user-gpu/virgl.c
/qemu/docs/devel/ci-jobs.rst.inc
/qemu/docs/devel/docs.rst
/qemu/docs/devel/migration/main.rst
/qemu/docs/devel/testing.rst
/qemu/docs/interop/prl-xml.txt
/qemu/docs/interop/vhost-user.rst
/qemu/docs/system/arm/mps2.rst
/qemu/docs/system/device-emulation.rst
/qemu/docs/system/devices/canokey.rst
/qemu/docs/system/devices/cxl.rst
/qemu/docs/system/devices/vhost-user-input.rst
/qemu/docs/system/devices/vhost-user-rng.rst
/qemu/docs/system/devices/vhost-user.rst
/qemu/hw/acpi/cpu_hotplug.c
/qemu/hw/arm/Kconfig
/qemu/hw/arm/highbank.c
/qemu/hw/arm/meson.build
/qemu/hw/arm/mps3r.c
/qemu/hw/arm/npcm7xx.c
/qemu/hw/arm/sbsa-ref.c
/qemu/hw/arm/smmu-common.c
/qemu/hw/arm/smmuv3-internal.h
/qemu/hw/arm/smmuv3.c
/qemu/hw/arm/stellaris.c
/qemu/hw/arm/virt-acpi-build.c
/qemu/hw/arm/virt.c
/qemu/hw/arm/xilinx_zynq.c
/qemu/hw/block/fdc-internal.h
/qemu/hw/block/fdc-isa.c
/qemu/hw/block/fdc-sysbus.c
/qemu/hw/block/tc58128.c
/qemu/hw/char/grlib_apbuart.c
/qemu/hw/char/parallel-isa.c
/qemu/hw/char/parallel.c
/qemu/hw/char/serial-isa.c
/qemu/hw/cxl/cxl-cdat.c
/qemu/hw/cxl/cxl-component-utils.c
/qemu/hw/cxl/cxl-device-utils.c
/qemu/hw/cxl/cxl-events.c
/qemu/hw/cxl/cxl-mailbox-utils.c
/qemu/hw/display/virtio-gpu-rutabaga.c
/qemu/hw/display/virtio-gpu-virgl.c
/qemu/hw/display/virtio-gpu.c
/qemu/hw/dma/i82374.c
/qemu/hw/dma/i8257.c
/qemu/hw/i386/acpi-build.c
/qemu/hw/i386/acpi-common.c
/qemu/hw/i386/acpi-common.h
/qemu/hw/i386/amd_iommu-stub.c
/qemu/hw/i386/amd_iommu.c
/qemu/hw/i386/amd_iommu.h
/qemu/hw/i386/intel_iommu.c
/qemu/hw/i386/kvm/apic.c
/qemu/hw/i386/kvm/ioapic.c
/qemu/hw/i386/meson.build
/qemu/hw/i386/pc.c
/qemu/hw/i386/pc_piix.c
/qemu/hw/i386/pc_q35.c
/qemu/hw/i386/port92.c
/qemu/hw/i386/x86.c
/qemu/hw/i386/xen/xen_apic.c
/qemu/hw/ide/ahci-allwinner.c
/qemu/hw/ide/ahci.c
/qemu/hw/ide/ahci_internal.h
/qemu/hw/ide/ich.c
/qemu/hw/input/meson.build
/qemu/hw/intc/apic.c
/qemu/hw/intc/apic_common.c
/qemu/hw/intc/grlib_irqmp.c
/qemu/hw/intc/trace-events
/qemu/hw/isa/Kconfig
/qemu/hw/isa/fdc37m81x-superio.c
/qemu/hw/isa/isa-superio.c
/qemu/hw/isa/lpc_ich9.c
/qemu/hw/isa/meson.build
/qemu/hw/isa/piix.c
/qemu/hw/isa/smc37c669-superio.c
/qemu/hw/isa/vt82c686.c
/qemu/hw/mem/cxl_type3.c
/qemu/hw/mips/Kconfig
/qemu/hw/mips/boston.c
/qemu/hw/mips/cps.c
/qemu/hw/mips/jazz.c
/qemu/hw/mips/loongson3_bootp.h
/qemu/hw/mips/mipssim.c
/qemu/hw/misc/macio/macio.c
/qemu/hw/misc/mips_itu.c
/qemu/hw/misc/mps2-scc.c
/qemu/hw/pci-bridge/cxl_downstream.c
/qemu/hw/pci-bridge/cxl_root_port.c
/qemu/hw/pci-bridge/cxl_upstream.c
/qemu/hw/pci-host/raven.c
/qemu/hw/ppc/pegasos2.c
/qemu/hw/ppc/prep.c
/qemu/hw/rx/rx-gdbsim.c
/qemu/hw/rx/rx62n.c
/qemu/hw/sh4/r2d.c
/qemu/hw/sh4/sh7750_regs.h
/qemu/hw/sparc/leon3.c
/qemu/hw/sparc/sun4m.c
/qemu/hw/sparc64/sparc64.c
/qemu/hw/timer/grlib_gptimer.c
/qemu/hw/timer/hpet.c
/qemu/hw/usb/bus.c
/qemu/hw/usb/hcd-ehci-pci.c
/qemu/hw/usb/hcd-ehci-sysbus.c
/qemu/hw/usb/hcd-ehci.c
/qemu/hw/usb/hcd-ehci.h
/qemu/hw/usb/hcd-uhci.c
/qemu/hw/usb/hcd-uhci.h
/qemu/hw/virtio/Kconfig
/qemu/hw/virtio/meson.build
/qemu/hw/virtio/vhost-user-base.c
/qemu/hw/virtio/vhost-user-device-pci.c
/qemu/hw/virtio/vhost-user-device.c
/qemu/hw/virtio/vhost-user-gpio.c
/qemu/hw/virtio/vhost-user-i2c.c
/qemu/hw/virtio/vhost-user-input-pci.c
/qemu/hw/virtio/vhost-user-input.c
/qemu/hw/virtio/vhost-user-rng.c
/qemu/hw/virtio/vhost-user-snd-pci.c
/qemu/hw/virtio/vhost-user-snd.c
/qemu/hw/virtio/virtio-iommu.c
/qemu/include/exec/ioport.h
/qemu/include/exec/memory.h
/qemu/include/hw/arm/allwinner-a10.h
/qemu/include/hw/arm/allwinner-r40.h
/qemu/include/hw/arm/omap.h
/qemu/include/hw/arm/smmu-common.h
/qemu/include/hw/arm/virt.h
/qemu/include/hw/arm/xlnx-zynqmp.h
/qemu/include/hw/block/fdc.h
/qemu/include/hw/char/grlib_uart.h
/qemu/include/hw/char/parallel-isa.h
/qemu/include/hw/char/parallel.h
/qemu/include/hw/char/serial.h
/qemu/include/hw/cxl/cxl_cdat.h
/qemu/include/hw/cxl/cxl_component.h
/qemu/include/hw/cxl/cxl_device.h
/qemu/include/hw/cxl/cxl_events.h
/qemu/include/hw/cxl/cxl_pci.h
/qemu/include/hw/dma/i8257.h
/qemu/include/hw/i386/apic.h
/qemu/include/hw/i386/apic_internal.h
/qemu/include/hw/i386/pc.h
/qemu/include/hw/ide/ahci-pci.h
/qemu/include/hw/ide/ahci-sysbus.h
/qemu/include/hw/ide/ahci.h
/qemu/include/hw/intc/grlib_irqmp.h
/qemu/include/hw/misc/mips_itu.h
/qemu/include/hw/misc/mps2-scc.h
/qemu/include/hw/net/npcm_gmac.h
/qemu/include/hw/riscv/virt.h
/qemu/include/hw/rx/rx62n.h
/qemu/include/hw/timer/grlib_gptimer.h
/qemu/include/hw/timer/hpet.h
/qemu/include/hw/usb.h
/qemu/include/hw/virtio/vhost-user-base.h
/qemu/include/hw/virtio/vhost-user-gpio.h
/qemu/include/hw/virtio/vhost-user-i2c.h
/qemu/include/hw/virtio/vhost-user-rng.h
/qemu/include/hw/virtio/vhost-user-snd.h
/qemu/include/hw/virtio/virtio-gpu.h
/qemu/include/hw/virtio/virtio-input.h
/qemu/linux-user/aarch64/target_prctl.h
/qemu/pc-bios/README
ui.json
/qemu/system/ioport.c
/qemu/system/physmem.c
/qemu/target/arm/helper.c
/qemu/target/arm/internals.h
/qemu/target/arm/tcg/cpu32.c
/qemu/target/arm/tcg/op_helper.c
/qemu/target/arm/tcg/sme_helper.c
/qemu/target/arm/tcg/sve_helper.c
/qemu/target/arm/tcg/translate-a64.h
/qemu/target/arm/tcg/translate-sme.c
/qemu/target/arm/tcg/translate-sve.c
/qemu/target/arm/tcg/translate.c
/qemu/target/i386/cpu-sysemu.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/kvm/kvm.c
/qemu/target/i386/monitor.c
/qemu/target/i386/tcg/sysemu/misc_helper.c
/qemu/target/i386/tcg/translate.c
/qemu/target/i386/whpx/whpx-apic.c
/qemu/target/mips/cpu.h
/qemu/target/mips/internal.h
/qemu/target/mips/sysemu/machine.c
/qemu/target/mips/tcg/sysemu/cp0_helper.c
/qemu/target/mips/tcg/sysemu_helper.h.inc
/qemu/target/mips/tcg/translate.c
/qemu/target/mips/tcg/translate.h
/qemu/target/ppc/translate/vmx-impl.c.inc
/qemu/target/sparc/cpu.h
/qemu/target/sparc/helper.c
/qemu/target/sparc/helper.h
/qemu/target/sparc/translate.c
/qemu/tests/avocado/acpi-bits/bits-tests/smbios.py2
/qemu/tests/avocado/mem-addr-space-check.py
/qemu/tests/avocado/reverse_debugging.py
/qemu/tests/data/acpi/q35/DSDT.cxl
/qemu/tests/data/acpi/q35/IVRS.ivrs
/qemu/tests/data/acpi/virt/FACP
/qemu/tests/data/acpi/virt/GTDT
/qemu/tests/qemu-iotests/144
/qemu/tests/qemu-iotests/144.out
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/npcm7xx_emc-test.c
/qemu/tests/qtest/npcm_gmac-test.c
/qemu/ui/clipboard.c
/qemu/ui/console.c
/qemu/ui/meson.build
/qemu/ui/vnc.c
b04c122803-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi/char: Deprecate backend type "memory"

It's an alias for "ringbuf" we kept for backward compatibility; see
commit 3a1da42eb35 (qapi: Rename ChardevBackend member "memory" to
"ringbuf"). Depreca

qapi/char: Deprecate backend type "memory"

It's an alias for "ringbuf" we kept for backward compatibility; see
commit 3a1da42eb35 (qapi: Rename ChardevBackend member "memory" to
"ringbuf"). Deprecation is long overdue.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240203080228.2766159-5-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>

show more ...

563799f603-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi/char: Make backend types properly conditional

Character backends are actually QOM types. When a backend's
compile-time conditional QOM type is not compiled in, creation fails
with "'FOO' is no

qapi/char: Make backend types properly conditional

Character backends are actually QOM types. When a backend's
compile-time conditional QOM type is not compiled in, creation fails
with "'FOO' is not a valid char driver name". Okay, except
introspecting chardev-add with query-qmp-schema doesn't work then: the
backend type is there even though the QOM type isn't.

A management application can work around this issue by using
qom-list-types instead.

Fix the issue anyway: add the conditionals to the QAPI schema.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240203080228.2766159-4-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>

show more ...


/qemu/.gitlab-ci.d/buildtest.yml
/qemu/accel/kvm/kvm-all.c
/qemu/accel/stubs/kvm-stub.c
/qemu/backends/hostmem.c
/qemu/block/blkio.c
/qemu/block/block-backend.c
/qemu/chardev/char-parallel.c
/qemu/chardev/meson.build
/qemu/docs/about/deprecated.rst
/qemu/docs/devel/tcg-ops.rst
/qemu/hw/block/virtio-blk.c
/qemu/hw/hyperv/hv-balloon.c
/qemu/hw/mem/memory-device.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/scsi/lsi53c895a.c
/qemu/hw/scsi/scsi-bus.c
/qemu/hw/scsi/virtio-scsi.c
/qemu/hw/usb/dev-storage-classic.c
/qemu/hw/virtio/virtio-mem.c
/qemu/hw/virtio/virtio.c
/qemu/include/block/aio.h
/qemu/include/hw/qdev-core.h
/qemu/include/hw/scsi/scsi.h
/qemu/include/qemu/osdep.h
/qemu/include/sysemu/kvm.h
/qemu/include/tcg/tcg-cond.h
/qemu/meson.build
/qemu/migration/migration.c
/qemu/migration/multifd-zlib.c
/qemu/migration/multifd-zstd.c
/qemu/migration/multifd.c
/qemu/migration/multifd.h
/qemu/migration/ram.c
/qemu/migration/trace-events
char.json
/qemu/qom/object.c
/qemu/system/vl.c
/qemu/target/alpha/translate.c
/qemu/target/m68k/translate.c
/qemu/target/ppc/cpu-models.c
/qemu/target/s390x/cpu-dump.c
/qemu/target/s390x/gdbstub.c
/qemu/target/s390x/helper.c
/qemu/target/s390x/helper.h
/qemu/target/s390x/kvm/kvm.c
/qemu/target/s390x/tcg/excp_helper.c
/qemu/target/s390x/tcg/insn-data.h.inc
/qemu/target/s390x/tcg/int_helper.c
/qemu/target/s390x/tcg/misc_helper.c
/qemu/target/s390x/tcg/translate.c
/qemu/target/sparc/translate.c
/qemu/tcg/aarch64/tcg-target-con-set.h
/qemu/tcg/aarch64/tcg-target-con-str.h
/qemu/tcg/aarch64/tcg-target.c.inc
/qemu/tcg/aarch64/tcg-target.h
/qemu/tcg/arm/tcg-target.c.inc
/qemu/tcg/arm/tcg-target.h
/qemu/tcg/i386/tcg-target-con-set.h
/qemu/tcg/i386/tcg-target-con-str.h
/qemu/tcg/i386/tcg-target.c.inc
/qemu/tcg/i386/tcg-target.h
/qemu/tcg/loongarch64/tcg-target.c.inc
/qemu/tcg/loongarch64/tcg-target.h
/qemu/tcg/mips/tcg-target.c.inc
/qemu/tcg/mips/tcg-target.h
/qemu/tcg/optimize.c
/qemu/tcg/ppc/tcg-target-con-set.h
/qemu/tcg/ppc/tcg-target-con-str.h
/qemu/tcg/ppc/tcg-target.c.inc
/qemu/tcg/ppc/tcg-target.h
/qemu/tcg/riscv/tcg-target.c.inc
/qemu/tcg/riscv/tcg-target.h
/qemu/tcg/s390x/tcg-target-con-set.h
/qemu/tcg/s390x/tcg-target-con-str.h
/qemu/tcg/s390x/tcg-target.c.inc
/qemu/tcg/s390x/tcg-target.h
/qemu/tcg/sparc64/tcg-target.c.inc
/qemu/tcg/sparc64/tcg-target.h
/qemu/tcg/tcg-internal.h
/qemu/tcg/tcg.c
/qemu/tcg/tci.c
/qemu/tcg/tci/tcg-target.c.inc
/qemu/tcg/tci/tcg-target.h
/qemu/tests/qemu-iotests/check
/qemu/tests/qemu-iotests/testenv.py
/qemu/tests/qtest/migration-test.c
/qemu/tests/tcg/s390x/Makefile.target
/qemu/tests/tcg/s390x/cvb.c
/qemu/tests/tcg/s390x/cvd.c
/qemu/tests/unit/test-char.c
/qemu/tests/unit/test-util-filemonitor.c
/qemu/tests/vm/basevm.py
/qemu/tests/vm/freebsd
/qemu/util/meson.build
/qemu/util/oslib-posix.c
/qemu/util/oslib-win32.c
66fcb9d607-Feb-2024 Peter Xu <peterx@redhat.com>

qapi/migration: Add missing tls-authz documentation

As reported in Markus's recent enforcement series on qapi doc [1], we
accidentally miss one entry for tls-authz. Add it.

[1] https://lore.kernel

qapi/migration: Add missing tls-authz documentation

As reported in Markus's recent enforcement series on qapi doc [1], we
accidentally miss one entry for tls-authz. Add it.

[1] https://lore.kernel.org/r/20240205074709.3613229-1-armbru@redhat.com

Cc: Daniel P. Berrangé <berrange@redhat.com>
Cc: Fabiano Rosas <farosas@suse.de>
Reported-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-ID: <20240207032836.268183-1-peterx@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Update of qapi/pragma.json squashed in, commit message adjusted]

show more ...

89a2273b05-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Add missing union tag documentation

Low-hanging fruit, and except for StatsFilter, the only members of
these unions lacking documentation.

Signed-off-by: Markus Armbruster <armbru@redhat.com>

qapi: Add missing union tag documentation

Low-hanging fruit, and except for StatsFilter, the only members of
these unions lacking documentation.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-16-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

8bf6954405-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Move @String out of common.json to discourage reuse

Use of String is problematic, because it results in awkward interface
documentation. The previous commit cleaned up one instance.

Move Str

qapi: Move @String out of common.json to discourage reuse

Use of String is problematic, because it results in awkward interface
documentation. The previous commit cleaned up one instance.

Move String out of common.json next to its remaining users in net.json
to discourage reuse elsewhere.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-15-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

4edb196e05-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Improve documentation of file descriptor socket addresses

SocketAddress branch @fd is documented in enum SocketAddressType,
unlike the other branches. That's because the branch's type is Stri

qapi: Improve documentation of file descriptor socket addresses

SocketAddress branch @fd is documented in enum SocketAddressType,
unlike the other branches. That's because the branch's type is String
from common.json.

Use a local copy of String, so we can put the documentation in the
usual place.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-14-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

2fecccbc05-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Plug trivial documentation holes around former simple unions

The conversion of simple to flat unions left the @data members
undocumented. Add documentation where it's trivial. Copy verbatim

qapi: Plug trivial documentation holes around former simple unions

The conversion of simple to flat unions left the @data members
undocumented. Add documentation where it's trivial. Copy verbatim
from the wrapped type's description where possible.

Leftovers: String (to be taken care of in the next commit), and
TransActionAction (left for another day).

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-13-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

a57790f705-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi/dump: Clean up documentation of DumpGuestMemoryCapability

The type's doc comment describes its member, but it's not marked up as
such. Easy enough to fix.

Signed-off-by: Markus Armbruster <ar

qapi/dump: Clean up documentation of DumpGuestMemoryCapability

The type's doc comment describes its member, but it's not marked up as
such. Easy enough to fix.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-12-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

e701cd7705-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi/yank: Clean up documentaion of yank

The command's doc comment describes the argument, but it's not marked
up as such. Easy enough to fix.

Signed-off-by: Markus Armbruster <armbru@redhat.com>

qapi/yank: Clean up documentaion of yank

The command's doc comment describes the argument, but it's not marked
up as such. Easy enough to fix.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-11-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

0cec501105-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Require member documentation (with loophole)

The QAPI generator forces you to document your stuff. Except for
command arguments, event data, and members of enum and object types:
these the ge

qapi: Require member documentation (with loophole)

The QAPI generator forces you to document your stuff. Except for
command arguments, event data, and members of enum and object types:
these the generator silently "documents" as "Not documented".

We can't require proper documentation there without first fixing all
the offenders. We've always had too many offenders to pull that off.
Right now, we have more than 500. Worse, we seem to fix old ones no
faster than we add new ones: in the past year, we fixed 22 ones, but
added 26 new ones.

To help arrest the backsliding, make missing documentation an error
unless the command, type, or event is in listed in new pragma
documentation-exceptions.

List all the current offenders: 117 commands and types in qapi/, and 9
in qga/.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-7-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

1ed1d4d605-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi: Indent tagged doc comment sections properly

docs/devel/qapi-code-gen demands that the "second and subsequent lines
of sections other than "Example"/"Examples" should be indented".
Commit a937b

qapi: Indent tagged doc comment sections properly

docs/devel/qapi-code-gen demands that the "second and subsequent lines
of sections other than "Example"/"Examples" should be indented".
Commit a937b6aa739q (qapi: Reformat doc comments to conform to current
conventions) missed a few instances, and messed up a few others.
Clean that up.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-5-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

d988487805-Feb-2024 Markus Armbruster <armbru@redhat.com>

qapi/block-core: Fix BlockLatencyHistogramInfo doc markup

The description of @bins ends with a literal block:

# @bins: list of io request counts corresponding to histogram
# intervals,

qapi/block-core: Fix BlockLatencyHistogramInfo doc markup

The description of @bins ends with a literal block:

# @bins: list of io request counts corresponding to histogram
# intervals, one more element than @boundaries has. For the
# example above, @bins may be something like [3, 1, 5, 2], and
# corresponding histogram looks like:
#
# ::
#
# 5| *

Except it actually ends *before* the block: the unindented '::' line
starts a new section. Makes no sense.

We could fix this by indenting the '::' line. Instead, double the
colon at the end of the preceding paragraph, and drop the '::' line.

This shifts the box for the literal block right in generated
documentation, so it lines up with the description.

Fixes: commit a0fcff383b34 (qapi: Use rST markup for literal blocks)
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-4-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...


/qemu/.gitlab-ci.d/buildtest.yml
/qemu/accel/kvm/kvm-all.c
/qemu/accel/stubs/kvm-stub.c
/qemu/backends/hostmem.c
/qemu/block/blkio.c
/qemu/block/block-backend.c
/qemu/docs/about/deprecated.rst
/qemu/docs/devel/qapi-code-gen.rst
/qemu/docs/devel/tcg-ops.rst
/qemu/hw/block/virtio-blk.c
/qemu/hw/hyperv/hv-balloon.c
/qemu/hw/mem/memory-device.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/scsi/lsi53c895a.c
/qemu/hw/scsi/scsi-bus.c
/qemu/hw/scsi/virtio-scsi.c
/qemu/hw/usb/dev-storage-classic.c
/qemu/hw/virtio/virtio-mem.c
/qemu/hw/virtio/virtio.c
/qemu/include/block/aio.h
/qemu/include/hw/qdev-core.h
/qemu/include/hw/scsi/scsi.h
/qemu/include/qemu/osdep.h
/qemu/include/sysemu/kvm.h
/qemu/include/tcg/tcg-cond.h
/qemu/meson.build
/qemu/migration/migration.c
/qemu/migration/multifd-zlib.c
/qemu/migration/multifd-zstd.c
/qemu/migration/multifd.c
/qemu/migration/multifd.h
/qemu/migration/ram.c
/qemu/migration/trace-events
block-core.json
/qemu/qom/object.c
/qemu/system/vl.c
/qemu/target/alpha/translate.c
/qemu/target/m68k/translate.c
/qemu/target/ppc/cpu-models.c
/qemu/target/s390x/cpu-dump.c
/qemu/target/s390x/gdbstub.c
/qemu/target/s390x/helper.c
/qemu/target/s390x/helper.h
/qemu/target/s390x/kvm/kvm.c
/qemu/target/s390x/tcg/excp_helper.c
/qemu/target/s390x/tcg/insn-data.h.inc
/qemu/target/s390x/tcg/int_helper.c
/qemu/target/s390x/tcg/misc_helper.c
/qemu/target/s390x/tcg/translate.c
/qemu/target/sparc/translate.c
/qemu/tcg/aarch64/tcg-target-con-set.h
/qemu/tcg/aarch64/tcg-target-con-str.h
/qemu/tcg/aarch64/tcg-target.c.inc
/qemu/tcg/aarch64/tcg-target.h
/qemu/tcg/arm/tcg-target.c.inc
/qemu/tcg/arm/tcg-target.h
/qemu/tcg/i386/tcg-target-con-set.h
/qemu/tcg/i386/tcg-target-con-str.h
/qemu/tcg/i386/tcg-target.c.inc
/qemu/tcg/i386/tcg-target.h
/qemu/tcg/loongarch64/tcg-target.c.inc
/qemu/tcg/loongarch64/tcg-target.h
/qemu/tcg/mips/tcg-target.c.inc
/qemu/tcg/mips/tcg-target.h
/qemu/tcg/optimize.c
/qemu/tcg/ppc/tcg-target-con-set.h
/qemu/tcg/ppc/tcg-target-con-str.h
/qemu/tcg/ppc/tcg-target.c.inc
/qemu/tcg/ppc/tcg-target.h
/qemu/tcg/riscv/tcg-target.c.inc
/qemu/tcg/riscv/tcg-target.h
/qemu/tcg/s390x/tcg-target-con-set.h
/qemu/tcg/s390x/tcg-target-con-str.h
/qemu/tcg/s390x/tcg-target.c.inc
/qemu/tcg/s390x/tcg-target.h
/qemu/tcg/sparc64/tcg-target.c.inc
/qemu/tcg/sparc64/tcg-target.h
/qemu/tcg/tcg-internal.h
/qemu/tcg/tcg.c
/qemu/tcg/tci.c
/qemu/tcg/tci/tcg-target.c.inc
/qemu/tcg/tci/tcg-target.h
/qemu/tests/qemu-iotests/check
/qemu/tests/qemu-iotests/testenv.py
/qemu/tests/qtest/migration-test.c
/qemu/tests/tcg/s390x/Makefile.target
/qemu/tests/tcg/s390x/cvb.c
/qemu/tests/tcg/s390x/cvd.c
/qemu/tests/unit/test-util-filemonitor.c
/qemu/tests/vm/basevm.py
/qemu/tests/vm/freebsd
/qemu/util/meson.build
/qemu/util/oslib-posix.c
/qemu/util/oslib-win32.c
0bd779e230-Jan-2024 Hyman Huang <yong.huang@smartx.com>

crypto: Introduce 'detached-header' field in QCryptoBlockInfoLUKS

When querying the LUKS disk with the qemu-img tool or other APIs,
add information about whether the LUKS header is detached.

Additi

crypto: Introduce 'detached-header' field in QCryptoBlockInfoLUKS

When querying the LUKS disk with the qemu-img tool or other APIs,
add information about whether the LUKS header is detached.

Additionally, update the test case with the appropriate
modification.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

35286dae30-Jan-2024 Hyman Huang <yong.huang@smartx.com>

block: Support detached LUKS header creation using qemu-img

Even though a LUKS header might be created with cryptsetup,
qemu-img should be enhanced to accommodate it as well.

Add the 'detached-head

block: Support detached LUKS header creation using qemu-img

Even though a LUKS header might be created with cryptsetup,
qemu-img should be enhanced to accommodate it as well.

Add the 'detached-header' option to specify the creation of
a detached LUKS header. This is how it is used:
$ qemu-img create --object secret,id=sec0,data=abc123 -f luks
> -o cipher-alg=aes-256,cipher-mode=xts -o key-secret=sec0
> -o detached-header=true header.luks

Using qemu-img or cryptsetup tools to query information of
an LUKS header image as follows:

Assume a detached LUKS header image has been created by:
$ dd if=/dev/zero of=test-header.img bs=1M count=32
$ dd if=/dev/zero of=test-payload.img bs=1M count=1000
$ cryptsetup luksFormat --header test-header.img test-payload.img
> --force-password --type luks1

Header image information could be queried using cryptsetup:
$ cryptsetup luksDump test-header.img

or qemu-img:
$ qemu-img info 'json:{"driver":"luks","file":{"filename":
> "test-payload.img"},"header":{"filename":"test-header.img"}}'

When using qemu-img, keep in mind that the entire disk
information specified by the JSON-format string above must be
supplied on the commandline; if not, an overlay check will reveal
a problem with the LUKS volume check logic.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
[changed to pass 'cflags' to block_crypto_co_create_generic]
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

d0112eb430-Jan-2024 Hyman Huang <yong.huang@smartx.com>

block: Support detached LUKS header creation using blockdev-create

Firstly, enable the ability to choose the block device containing
a detachable LUKS header by adding the 'header' parameter to
Bloc

block: Support detached LUKS header creation using blockdev-create

Firstly, enable the ability to choose the block device containing
a detachable LUKS header by adding the 'header' parameter to
BlockdevCreateOptionsLUKS.

Secondly, when formatting the LUKS volume with a detachable header,
truncate the payload volume to length without a header size.

Using the qmp blockdev command, create the LUKS volume with a
detachable header as follows:

1. add the secret to lock/unlock the cipher stored in the
detached LUKS header
$ virsh qemu-monitor-command vm '{"execute":"object-add",
> "arguments":{"qom-type": "secret", "id": "sec0", "data": "foo"}}'

2. create a header img with 0 size
$ virsh qemu-monitor-command vm '{"execute":"blockdev-create",
> "arguments":{"job-id":"job0", "options":{"driver":"file",
> "filename":"/path/to/detached_luks_header.img", "size":0 }}}'

3. add protocol blockdev node for header
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments": {"driver":"file", "filename":
> "/path/to/detached_luks_header.img", "node-name":
> "detached-luks-header-storage"}}'

4. create a payload img with 0 size
$ virsh qemu-monitor-command vm '{"execute":"blockdev-create",
> "arguments":{"job-id":"job1", "options":{"driver":"file",
> "filename":"/path/to/detached_luks_payload_raw.img", "size":0}}}'

5. add protocol blockdev node for payload
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments": {"driver":"file", "filename":
> "/path/to/detached_luks_payload_raw.img", "node-name":
> "luks-payload-raw-storage"}}'

6. do the formatting with 128M size
$ virsh qemu-monitor-command c81_node1 '{"execute":"blockdev-create",
> "arguments":{"job-id":"job2", "options":{"driver":"luks", "header":
> "detached-luks-header-storage", "file":"luks-payload-raw-storage",
> "size":134217728, "preallocation":"full", "key-secret":"sec0" }}}'

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

433957bb30-Jan-2024 Hyman Huang <yong.huang@smartx.com>

qapi: Make parameter 'file' optional for BlockdevCreateOptionsLUKS

To support detached LUKS header creation, make the existing 'file'
field in BlockdevCreateOptionsLUKS optional.

Signed-off-by: Hym

qapi: Make parameter 'file' optional for BlockdevCreateOptionsLUKS

To support detached LUKS header creation, make the existing 'file'
field in BlockdevCreateOptionsLUKS optional.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

9ad5c4e730-Jan-2024 Hyman Huang <yong.huang@smartx.com>

crypto: Support LUKS volume with detached header

By enhancing the LUKS driver, it is possible to implement
the LUKS volume with a detached header.

Normally a LUKS volume has a layout:
disk: | he

crypto: Support LUKS volume with detached header

By enhancing the LUKS driver, it is possible to implement
the LUKS volume with a detached header.

Normally a LUKS volume has a layout:
disk: | header | key material | disk payload data |

With a detached LUKS header, you need 2 disks so getting:
disk1: | header | key material |
disk2: | disk payload data |

There are a variety of benefits to doing this:
* Secrecy - the disk2 cannot be identified as containing LUKS
volume since there's no header
* Control - if access to the disk1 is restricted, then even
if someone has access to disk2 they can't unlock
it. Might be useful if you have disks on NFS but
want to restrict which host can launch a VM
instance from it, by dynamically providing access
to the header to a designated host
* Flexibility - your application data volume may be a given
size and it is inconvenient to resize it to
add encryption.You can store the LUKS header
separately and use the existing storage
volume for payload
* Recovery - corruption of a bit in the header may make the
entire payload inaccessible. It might be
convenient to take backups of the header. If
your primary disk header becomes corrupt, you
can unlock the data still by pointing to the
backup detached header

Take the raw-format image as an example to introduce the usage
of the LUKS volume with a detached header:

1. prepare detached LUKS header images
$ dd if=/dev/zero of=test-header.img bs=1M count=32
$ dd if=/dev/zero of=test-payload.img bs=1M count=1000
$ cryptsetup luksFormat --header test-header.img test-payload.img
> --force-password --type luks1

2. block-add a protocol blockdev node of payload image
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments":{"node-name":"libvirt-1-storage", "driver":"file",
> "filename":"test-payload.img"}}'

3. block-add a protocol blockdev node of LUKS header as above.
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments":{"node-name":"libvirt-2-storage", "driver":"file",
> "filename": "test-header.img" }}'

4. object-add the secret for decrypting the cipher stored in
LUKS header above
$ virsh qemu-monitor-command vm '{"execute":"object-add",
> "arguments":{"qom-type":"secret", "id":
> "libvirt-2-storage-secret0", "data":"abc123"}}'

5. block-add the raw-drived blockdev format node
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments":{"node-name":"libvirt-1-format", "driver":"raw",
> "file":"libvirt-1-storage"}}'

6. block-add the luks-drived blockdev to link the raw disk
with the LUKS header by specifying the field "header"
$ virsh qemu-monitor-command vm '{"execute":"blockdev-add",
> "arguments":{"node-name":"libvirt-2-format", "driver":"luks",
> "file":"libvirt-1-format", "header":"libvirt-2-storage",
> "key-secret":"libvirt-2-format-secret0"}}'

7. hot-plug the virtio-blk device finally
$ virsh qemu-monitor-command vm '{"execute":"device_add",
> "arguments": {"num-queues":"1", "driver":"virtio-blk-pci",
> "drive": "libvirt-2-format", "id":"virtio-disk2"}}'

Starting a VM with a LUKS volume with detached header is
somewhat similar to hot-plug in that both maintaining the
same json command while the starting VM changes the
"blockdev-add/device_add" parameters to "blockdev/device".

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...

52ed9f4507-Dec-2023 Hyman Huang <yong.huang@smartx.com>

crypto: Introduce SM4 symmetric cipher algorithm

Introduce the SM4 cipher algorithms (OSCCA GB/T 32907-2016).

SM4 (GBT.32907-2016) is a cryptographic standard issued by the
Organization of State Co

crypto: Introduce SM4 symmetric cipher algorithm

Introduce the SM4 cipher algorithms (OSCCA GB/T 32907-2016).

SM4 (GBT.32907-2016) is a cryptographic standard issued by the
Organization of State Commercial Administration of China (OSCCA)
as an authorized cryptographic algorithms for the use within China.

Detect the SM4 cipher algorithms and enable the feature silently
if it is available.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

show more ...


/qemu/accel/tcg/cputlb.c
/qemu/accel/tcg/ldst_common.c.inc
/qemu/backends/hostmem.c
/qemu/crypto/block-luks.c
/qemu/crypto/cipher-gcrypt.c.inc
/qemu/crypto/cipher-nettle.c.inc
/qemu/crypto/cipher.c
/qemu/docs/about/deprecated.rst
/qemu/docs/devel/docs.rst
/qemu/docs/sphinx/hxtool.py
/qemu/docs/system/arm/raspi.rst
/qemu/docs/system/i386/xen.rst
/qemu/hw/arm/Kconfig
/qemu/hw/arm/bcm2835_peripherals.c
/qemu/hw/arm/exynos4210.c
/qemu/hw/arm/exynos4_boards.c
/qemu/hw/arm/highbank.c
/qemu/hw/arm/msf2-soc.c
/qemu/hw/arm/msf2-som.c
/qemu/hw/arm/musca.c
/qemu/hw/arm/npcm7xx.c
/qemu/hw/arm/npcm7xx_boards.c
/qemu/hw/arm/strongarm.c
/qemu/hw/arm/trace-events
/qemu/hw/arm/vexpress.c
/qemu/hw/arm/xen_arm.c
/qemu/hw/arm/xilinx_zynq.c
/qemu/hw/arm/z2.c
/qemu/hw/core/bus.c
/qemu/hw/hyperv/hv-balloon.c
/qemu/hw/hyperv/vmbus.c
/qemu/hw/input/adb.c
/qemu/hw/mem/memory-device.c
/qemu/hw/net/meson.build
/qemu/hw/net/npcm_gmac.c
/qemu/hw/net/trace-events
/qemu/hw/pci-host/designware.c
/qemu/hw/pci/pci.c
/qemu/hw/ppc/spapr_cpu_core.c
/qemu/hw/s390x/css-bridge.c
/qemu/hw/scsi/lsi53c895a.c
/qemu/hw/ssi/Kconfig
/qemu/hw/ssi/bcm2835_spi.c
/qemu/hw/ssi/meson.build
/qemu/hw/virtio/virtio-mem.c
/qemu/hw/xen/trace-events
/qemu/hw/xen/xen-hvm-common.c
/qemu/hw/xen/xen-mapcache.c
/qemu/include/exec/cpu-all.h
/qemu/include/exec/cpu-common.h
/qemu/include/hw/arm/bcm2835_peripherals.h
/qemu/include/hw/arm/msf2-soc.h
/qemu/include/hw/arm/npcm7xx.h
/qemu/include/hw/core/cpu.h
/qemu/include/hw/net/npcm_gmac.h
/qemu/include/hw/qdev-core.h
/qemu/include/hw/ssi/bcm2835_spi.h
/qemu/include/qemu/osdep.h
/qemu/linux-user/aarch64/vdso-be.so
/qemu/linux-user/aarch64/vdso-le.so
/qemu/linux-user/aarch64/vdso.S
/qemu/linux-user/sparc/cpu_loop.c
/qemu/linux-user/sparc/signal.c
/qemu/meson.build
crypto.json
/qemu/qemu-options.hx
/qemu/qga/qapi-schema.json
/qemu/qom/object.c
/qemu/semihosting/uaccess.c
/qemu/system/vl.c
/qemu/target/alpha/cpu.c
/qemu/target/alpha/cpu.h
/qemu/target/alpha/translate.c
/qemu/target/arm/cpu.c
/qemu/target/arm/cpu.h
/qemu/target/arm/helper.c
/qemu/target/arm/internals.h
/qemu/target/arm/syndrome.h
/qemu/target/arm/tcg/helper-a64.c
/qemu/target/arm/tcg/mte_helper.c
/qemu/target/arm/tcg/sve_helper.c
/qemu/target/arm/tcg/tlb_helper.c
/qemu/target/avr/cpu.c
/qemu/target/avr/cpu.h
/qemu/target/cris/cpu.c
/qemu/target/cris/cpu.h
/qemu/target/cris/translate.c
/qemu/target/cris/translate_v10.c.inc
/qemu/target/hexagon/cpu.h
/qemu/target/hppa/cpu.c
/qemu/target/hppa/cpu.h
/qemu/target/hppa/mem_helper.c
/qemu/target/hppa/op_helper.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/tcg/translate.c
/qemu/target/loongarch/cpu.c
/qemu/target/loongarch/cpu.h
/qemu/target/loongarch/cpu_helper.c
/qemu/target/loongarch/tcg/insn_trans/trans_privileged.c.inc
/qemu/target/loongarch/tcg/tlb_helper.c
/qemu/target/loongarch/tcg/translate.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/cpu.h
/qemu/target/m68k/op_helper.c
/qemu/target/microblaze/cpu.c
/qemu/target/microblaze/cpu.h
/qemu/target/microblaze/helper.c
/qemu/target/microblaze/mmu.c
/qemu/target/microblaze/translate.c
/qemu/target/mips/cpu.c
/qemu/target/mips/cpu.h
/qemu/target/mips/sysemu/physaddr.c
/qemu/target/mips/tcg/msa_helper.c
/qemu/target/mips/tcg/sysemu/cp0_helper.c
/qemu/target/mips/tcg/sysemu/special_helper.c
/qemu/target/mips/tcg/sysemu/tlb_helper.c
/qemu/target/nios2/cpu.c
/qemu/target/nios2/cpu.h
/qemu/target/nios2/translate.c
/qemu/target/openrisc/cpu.c
/qemu/target/openrisc/cpu.h
/qemu/target/openrisc/translate.c
/qemu/target/ppc/cpu-models.c
/qemu/target/ppc/cpu.h
/qemu/target/ppc/cpu_init.c
/qemu/target/ppc/mem_helper.c
/qemu/target/ppc/mmu_common.c
/qemu/target/riscv/cpu.c
/qemu/target/riscv/cpu.h
/qemu/target/riscv/cpu_helper.c
/qemu/target/riscv/op_helper.c
/qemu/target/riscv/vector_helper.c
/qemu/target/rx/cpu.c
/qemu/target/rx/cpu.h
/qemu/target/s390x/cpu-dump.c
/qemu/target/s390x/cpu.c
/qemu/target/s390x/cpu.h
/qemu/target/s390x/gdbstub.c
/qemu/target/s390x/helper.c
/qemu/target/s390x/helper.h
/qemu/target/s390x/kvm/kvm.c
/qemu/target/s390x/tcg/excp_helper.c
/qemu/target/s390x/tcg/insn-data.h.inc
/qemu/target/s390x/tcg/int_helper.c
/qemu/target/s390x/tcg/mem_helper.c
/qemu/target/s390x/tcg/misc_helper.c
/qemu/target/s390x/tcg/translate.c
/qemu/target/sh4/cpu.c
/qemu/target/sh4/cpu.h
/qemu/target/sparc/cpu.c
/qemu/target/sparc/cpu.h
/qemu/target/sparc/fop_helper.c
/qemu/target/sparc/gdbstub.c
/qemu/target/sparc/helper.h
/qemu/target/sparc/ldst_helper.c
/qemu/target/sparc/machine.c
/qemu/target/sparc/mmu_helper.c
/qemu/target/sparc/translate.c
/qemu/target/tricore/cpu.c
/qemu/target/tricore/cpu.h
/qemu/target/tricore/helper.c
/qemu/target/tricore/translate.c
/qemu/target/xtensa/cpu.c
/qemu/target/xtensa/cpu.h
/qemu/target/xtensa/mmu_helper.c
/qemu/tcg/loongarch64/tcg-target.c.inc
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/npcm_gmac-test.c
/qemu/tests/qtest/xlnx-versal-trng-test.c
/qemu/tests/tcg/aarch64/sysregs.c
/qemu/tests/tcg/multiarch/gdbstub/prot-none.py
/qemu/tests/tcg/s390x/Makefile.target
/qemu/tests/tcg/s390x/cvb.c
/qemu/tests/tcg/s390x/cvd.c
/qemu/tests/unit/test-crypto-cipher.c
/qemu/tests/unit/test-util-filemonitor.c
/qemu/tests/vm/basevm.py
/qemu/tests/vm/freebsd
/qemu/util/meson.build
/qemu/util/oslib-posix.c
/qemu/util/oslib-win32.c
1f25c17206-Feb-2024 Stefan Hajnoczi <stefanha@redhat.com>

monitor: use aio_co_reschedule_self()

The aio_co_reschedule_self() API is designed to avoid the race
condition between scheduling the coroutine in another AioContext and
yielding.

The QMP dispatch

monitor: use aio_co_reschedule_self()

The aio_co_reschedule_self() API is designed to avoid the race
condition between scheduling the coroutine in another AioContext and
yielding.

The QMP dispatch code uses the open-coded version that appears
susceptible to the race condition at first glance:

aio_co_schedule(qemu_get_aio_context(), qemu_coroutine_self());
qemu_coroutine_yield();

The code is actually safe because the iohandler and qemu_aio_context
AioContext run under the Big QEMU Lock. Nevertheless, set a good example
and use aio_co_reschedule_self() so it's obvious that there is no race.

Suggested-by: Hanna Reitz <hreitz@redhat.com>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20240206190610.107963-6-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>

show more ...


/qemu/accel/tcg/cputlb.c
/qemu/accel/tcg/ldst_common.c.inc
/qemu/docs/devel/docs.rst
/qemu/docs/sphinx/hxtool.py
/qemu/docs/system/arm/raspi.rst
/qemu/docs/system/i386/xen.rst
/qemu/hw/arm/Kconfig
/qemu/hw/arm/bcm2835_peripherals.c
/qemu/hw/arm/exynos4210.c
/qemu/hw/arm/exynos4_boards.c
/qemu/hw/arm/highbank.c
/qemu/hw/arm/msf2-soc.c
/qemu/hw/arm/msf2-som.c
/qemu/hw/arm/musca.c
/qemu/hw/arm/npcm7xx.c
/qemu/hw/arm/npcm7xx_boards.c
/qemu/hw/arm/strongarm.c
/qemu/hw/arm/trace-events
/qemu/hw/arm/vexpress.c
/qemu/hw/arm/xen_arm.c
/qemu/hw/arm/xilinx_zynq.c
/qemu/hw/arm/z2.c
/qemu/hw/block/virtio-blk.c
/qemu/hw/core/bus.c
/qemu/hw/hyperv/vmbus.c
/qemu/hw/input/adb.c
/qemu/hw/net/meson.build
/qemu/hw/net/npcm_gmac.c
/qemu/hw/net/trace-events
/qemu/hw/pci-host/designware.c
/qemu/hw/pci/pci.c
/qemu/hw/s390x/css-bridge.c
/qemu/hw/ssi/Kconfig
/qemu/hw/ssi/bcm2835_spi.c
/qemu/hw/ssi/meson.build
/qemu/hw/xen/trace-events
/qemu/hw/xen/xen-hvm-common.c
/qemu/hw/xen/xen-mapcache.c
/qemu/include/exec/cpu-all.h
/qemu/include/exec/cpu-common.h
/qemu/include/hw/arm/bcm2835_peripherals.h
/qemu/include/hw/arm/msf2-soc.h
/qemu/include/hw/arm/npcm7xx.h
/qemu/include/hw/core/cpu.h
/qemu/include/hw/net/npcm_gmac.h
/qemu/include/hw/qdev-core.h
/qemu/include/hw/ssi/bcm2835_spi.h
/qemu/include/hw/virtio/virtio-blk.h
/qemu/linux-user/aarch64/vdso-be.so
/qemu/linux-user/aarch64/vdso-le.so
/qemu/linux-user/aarch64/vdso.S
/qemu/linux-user/sparc/cpu_loop.c
/qemu/linux-user/sparc/signal.c
qmp-dispatch.c
/qemu/qemu-options.hx
/qemu/qga/qapi-schema.json
/qemu/semihosting/uaccess.c
/qemu/system/vl.c
/qemu/target/alpha/cpu.c
/qemu/target/alpha/cpu.h
/qemu/target/alpha/translate.c
/qemu/target/arm/cpu.c
/qemu/target/arm/cpu.h
/qemu/target/arm/helper.c
/qemu/target/arm/internals.h
/qemu/target/arm/syndrome.h
/qemu/target/arm/tcg/helper-a64.c
/qemu/target/arm/tcg/mte_helper.c
/qemu/target/arm/tcg/sve_helper.c
/qemu/target/arm/tcg/tlb_helper.c
/qemu/target/avr/cpu.c
/qemu/target/avr/cpu.h
/qemu/target/cris/cpu.c
/qemu/target/cris/cpu.h
/qemu/target/cris/translate.c
/qemu/target/cris/translate_v10.c.inc
/qemu/target/hexagon/cpu.h
/qemu/target/hppa/cpu.c
/qemu/target/hppa/cpu.h
/qemu/target/hppa/mem_helper.c
/qemu/target/hppa/op_helper.c
/qemu/target/i386/cpu.c
/qemu/target/i386/cpu.h
/qemu/target/i386/tcg/translate.c
/qemu/target/loongarch/cpu.c
/qemu/target/loongarch/cpu.h
/qemu/target/loongarch/cpu_helper.c
/qemu/target/loongarch/tcg/insn_trans/trans_privileged.c.inc
/qemu/target/loongarch/tcg/tlb_helper.c
/qemu/target/loongarch/tcg/translate.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/cpu.h
/qemu/target/m68k/op_helper.c
/qemu/target/microblaze/cpu.c
/qemu/target/microblaze/cpu.h
/qemu/target/microblaze/helper.c
/qemu/target/microblaze/mmu.c
/qemu/target/microblaze/translate.c
/qemu/target/mips/cpu.c
/qemu/target/mips/cpu.h
/qemu/target/mips/sysemu/physaddr.c
/qemu/target/mips/tcg/msa_helper.c
/qemu/target/mips/tcg/sysemu/cp0_helper.c
/qemu/target/mips/tcg/sysemu/special_helper.c
/qemu/target/mips/tcg/sysemu/tlb_helper.c
/qemu/target/nios2/cpu.c
/qemu/target/nios2/cpu.h
/qemu/target/nios2/translate.c
/qemu/target/openrisc/cpu.c
/qemu/target/openrisc/cpu.h
/qemu/target/openrisc/translate.c
/qemu/target/ppc/cpu.h
/qemu/target/ppc/cpu_init.c
/qemu/target/ppc/mem_helper.c
/qemu/target/ppc/mmu_common.c
/qemu/target/riscv/cpu.c
/qemu/target/riscv/cpu.h
/qemu/target/riscv/cpu_helper.c
/qemu/target/riscv/op_helper.c
/qemu/target/riscv/vector_helper.c
/qemu/target/rx/cpu.c
/qemu/target/rx/cpu.h
/qemu/target/s390x/cpu.c
/qemu/target/s390x/cpu.h
/qemu/target/s390x/tcg/mem_helper.c
/qemu/target/sh4/cpu.c
/qemu/target/sh4/cpu.h
/qemu/target/sparc/cpu.c
/qemu/target/sparc/cpu.h
/qemu/target/sparc/fop_helper.c
/qemu/target/sparc/gdbstub.c
/qemu/target/sparc/helper.h
/qemu/target/sparc/ldst_helper.c
/qemu/target/sparc/machine.c
/qemu/target/sparc/mmu_helper.c
/qemu/target/sparc/translate.c
/qemu/target/tricore/cpu.c
/qemu/target/tricore/cpu.h
/qemu/target/tricore/helper.c
/qemu/target/tricore/translate.c
/qemu/target/xtensa/cpu.c
/qemu/target/xtensa/cpu.h
/qemu/target/xtensa/mmu_helper.c
/qemu/tcg/loongarch64/tcg-target.c.inc
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/npcm_gmac-test.c
/qemu/tests/qtest/xlnx-versal-trng-test.c
/qemu/tests/tcg/aarch64/sysregs.c
/qemu/tests/tcg/multiarch/gdbstub/prot-none.py
d6a5ca3a29-Jan-2024 Markus Armbruster <armbru@redhat.com>

qga: Move type description right after type name

Documentation of type BlockdevOptionsIscsi describes the type's
purpose after its members. Everywhere else, we do it the other way
round. Move it f

qga: Move type description right after type name

Documentation of type BlockdevOptionsIscsi describes the type's
purpose after its members. Everywhere else, we do it the other way
round. Move it for consistency.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240129115008.674248-5-armbru@redhat.com>
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>

show more ...

e3240ac529-Jan-2024 Markus Armbruster <armbru@redhat.com>

qapi: Elide "Potential additional modes" from generated docs

Documentation of BlockExportRemoveMode has

Potential additional modes to be added in the future:

hide: Just hide export from ne

qapi: Elide "Potential additional modes" from generated docs

Documentation of BlockExportRemoveMode has

Potential additional modes to be added in the future:

hide: Just hide export from new clients, leave existing connections
as is. Remove export after all clients are disconnected.

soft: Hide export from new clients, answer with ESHUTDOWN for all
further requests from existing clients.

I think this is useful only for developers. Elide it from generated
documentation by turning it into a TODO section.

This effectively reverts my own commit b71fd73cc45 (Revert "qapi:
BlockExportRemoveMode: move comments to TODO"). At the time, I was
about to elide TODO sections from the generated manual, I wasn't sure
about this one, and decided to avoid change. And now I've made up my
mind.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240129115008.674248-4-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>

show more ...

763db74d29-Jan-2024 Markus Armbruster <armbru@redhat.com>

qapi: Drop redundant documentation of conditional

Documentation generated for dump-skeys contains

This command is only supported on s390 architecture.

and

If
~~

"TARGET_S390X"

T

qapi: Drop redundant documentation of conditional

Documentation generated for dump-skeys contains

This command is only supported on s390 architecture.

and

If
~~

"TARGET_S390X"

The former became redundant in commit 901a34a400a (qapi: add 'If:'
section to generated documentation) added the latter. Drop the
former.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240129115008.674248-3-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>

show more ...

709c5a6529-Jan-2024 Markus Armbruster <armbru@redhat.com>

qapi: Drop redundant documentation of inherited members

Documentation generated for SchemaInfo looks like

The members of "SchemaInfoBuiltin" when "meta-type" is ""builtin""
The members of "

qapi: Drop redundant documentation of inherited members

Documentation generated for SchemaInfo looks like

The members of "SchemaInfoBuiltin" when "meta-type" is ""builtin""
The members of "SchemaInfoEnum" when "meta-type" is ""enum""
The members of "SchemaInfoArray" when "meta-type" is ""array""
The members of "SchemaInfoObject" when "meta-type" is ""object""
The members of "SchemaInfoAlternate" when "meta-type" is ""alternate""
The members of "SchemaInfoCommand" when "meta-type" is ""command""
The members of "SchemaInfoEvent" when "meta-type" is ""event""
Additional members depend on the value of "meta-type".

The last line became redundant when commit 88f63467c57 (qapi2texi:
Generate reference to base type members) added the lines preceding it.
Drop it.

BlockdevOptions has the same issue. Drop

Remaining options are determined by the block driver.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240129115008.674248-2-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>

show more ...


/qemu/.mailmap
/qemu/MAINTAINERS
/qemu/accel/tcg/cpu-exec.c
/qemu/accel/tcg/meson.build
/qemu/accel/tcg/tb-jmp-cache.h
/qemu/accel/tcg/tcg-accel-ops-mttcg.c
/qemu/accel/tcg/tcg-accel-ops-rr.c
/qemu/accel/tcg/tcg-accel-ops.c
/qemu/accel/tcg/tcg-accel-ops.h
/qemu/accel/tcg/translate-all.c
/qemu/audio/pwaudio.c
/qemu/backends/hostmem.c
/qemu/block/blkio.c
/qemu/block/io_uring.c
/qemu/bsd-user/signal.c
/qemu/cpu-target.c
/qemu/disas/riscv-xthead.c
/qemu/disas/riscv-xventana.c
/qemu/disas/riscv.h
/qemu/docs/interop/qemu-ga.rst
/qemu/docs/specs/fsi.rst
/qemu/docs/specs/index.rst
/qemu/docs/system/keys.rst.inc
/qemu/hw/Kconfig
/qemu/hw/alpha/dp264.c
/qemu/hw/arm/Kconfig
/qemu/hw/arm/allwinner-a10.c
/qemu/hw/arm/allwinner-h3.c
/qemu/hw/arm/allwinner-r40.c
/qemu/hw/arm/aspeed.c
/qemu/hw/arm/aspeed_ast10x0.c
/qemu/hw/arm/aspeed_ast2400.c
/qemu/hw/arm/aspeed_ast2600.c
/qemu/hw/arm/aspeed_eeprom.c
/qemu/hw/arm/aspeed_eeprom.h
/qemu/hw/arm/aspeed_soc_common.c
/qemu/hw/arm/exynos4_boards.c
/qemu/hw/arm/fsl-imx25.c
/qemu/hw/arm/fsl-imx6.c
/qemu/hw/arm/fsl-imx6ul.c
/qemu/hw/arm/fsl-imx7.c
/qemu/hw/arm/gumstix.c
/qemu/hw/arm/highbank.c
/qemu/hw/arm/integratorcp.c
/qemu/hw/arm/kzm.c
/qemu/hw/arm/mainstone.c
/qemu/hw/arm/mps2-tz.c
/qemu/hw/arm/mps2.c
/qemu/hw/arm/msf2-soc.c
/qemu/hw/arm/musicpal.c
/qemu/hw/arm/npcm7xx.c
/qemu/hw/arm/realview.c
/qemu/hw/arm/sbsa-ref.c
/qemu/hw/arm/stellaris.c
/qemu/hw/arm/versatilepb.c
/qemu/hw/arm/vexpress.c
/qemu/hw/arm/virt-acpi-build.c
/qemu/hw/arm/virt.c
/qemu/hw/arm/xilinx_zynq.c
/qemu/hw/arm/xlnx-versal.c
/qemu/hw/arm/xlnx-zynqmp.c
/qemu/hw/block/block.c
/qemu/hw/block/m25p80.c
/qemu/hw/block/pflash_cfi01.c
/qemu/hw/block/pflash_cfi02.c
/qemu/hw/core/loader.c
/qemu/hw/core/qdev.c
/qemu/hw/cris/axis_dev88.c
/qemu/hw/cxl/cxl-events.c
/qemu/hw/fsi/Kconfig
/qemu/hw/fsi/aspeed_apb2opb.c
/qemu/hw/fsi/cfam.c
/qemu/hw/fsi/fsi-master.c
/qemu/hw/fsi/fsi.c
/qemu/hw/fsi/lbus.c
/qemu/hw/fsi/meson.build
/qemu/hw/fsi/trace-events
/qemu/hw/fsi/trace.h
/qemu/hw/hppa/machine.c
/qemu/hw/hyperv/hv-balloon-internal.h
/qemu/hw/hyperv/hv-balloon-our_range_memslots.c
/qemu/hw/hyperv/hv-balloon-our_range_memslots.h
/qemu/hw/hyperv/hv-balloon-page_range_tree.c
/qemu/hw/hyperv/hv-balloon-page_range_tree.h
/qemu/hw/hyperv/hv-balloon.c
/qemu/hw/hyperv/hyperv.c
/qemu/hw/i386/acpi-build.c
/qemu/hw/i386/pc.c
/qemu/hw/i386/pc_piix.c
/qemu/hw/i386/pc_q35.c
/qemu/hw/intc/xics.c
/qemu/hw/loongarch/acpi-build.c
/qemu/hw/loongarch/virt.c
/qemu/hw/m68k/mcf5208.c
/qemu/hw/m68k/q800.c
/qemu/hw/meson.build
/qemu/hw/microblaze/petalogix_ml605_mmu.c
/qemu/hw/microblaze/petalogix_s3adsp1800_mmu.c
/qemu/hw/mips/fuloong2e.c
/qemu/hw/mips/jazz.c
/qemu/hw/mips/loongson3_virt.c
/qemu/hw/mips/malta.c
/qemu/hw/mips/mipssim.c
/qemu/hw/net/etraxfs_eth.c
/qemu/hw/net/lan9118.c
/qemu/hw/net/lasi_i82596.c
/qemu/hw/net/meson.build
/qemu/hw/net/smc91c111.c
/qemu/hw/nvram/fw_cfg-acpi.c
/qemu/hw/openrisc/openrisc_sim.c
/qemu/hw/pci/pci.c
/qemu/hw/ppc/e500.c
/qemu/hw/ppc/mac_newworld.c
/qemu/hw/ppc/mac_oldworld.c
/qemu/hw/ppc/ppc440_bamboo.c
/qemu/hw/ppc/prep.c
/qemu/hw/ppc/spapr.c
/qemu/hw/riscv/microchip_pfsoc.c
/qemu/hw/riscv/sifive_u.c
/qemu/hw/s390x/s390-virtio-ccw.c
/qemu/hw/sh4/r2d.c
/qemu/hw/sparc/sun4m.c
/qemu/hw/sparc64/sun4u.c
/qemu/hw/virtio/virtio-acpi.c
/qemu/hw/xen/xen-bus.c
/qemu/hw/xen/xen_devconfig.c
/qemu/hw/xenpv/xen_machine_pv.c
/qemu/hw/xtensa/virt.c
/qemu/hw/xtensa/xtfpga.c
/qemu/include/exec/cpu-all.h
/qemu/include/exec/cpu-common.h
/qemu/include/exec/cpu_ldst.h
/qemu/include/exec/exec-all.h
/qemu/include/exec/translation-block.h
/qemu/include/exec/translator.h
/qemu/include/exec/vaddr.h
/qemu/include/hw/arm/aspeed_soc.h
/qemu/include/hw/arm/raspberrypi-fw-defs.h
/qemu/include/hw/audio/asc.h
/qemu/include/hw/block/block.h
/qemu/include/hw/core/cpu.h
/qemu/include/hw/core/tcg-cpu-ops.h
/qemu/include/hw/cris/etraxfs.h
/qemu/include/hw/fsi/aspeed_apb2opb.h
/qemu/include/hw/fsi/cfam.h
/qemu/include/hw/fsi/fsi-master.h
/qemu/include/hw/fsi/fsi.h
/qemu/include/hw/fsi/lbus.h
/qemu/include/hw/i386/pc.h
/qemu/include/hw/m68k/q800-glue.h
/qemu/include/hw/mem/memory-device.h
/qemu/include/hw/net/lan9118.h
/qemu/include/hw/net/lasi_82596.h
/qemu/include/hw/net/ne2000-isa.h
/qemu/include/hw/net/smc91c111.h
/qemu/include/hw/nvram/fw_cfg_acpi.h
/qemu/include/hw/pci/pci.h
/qemu/include/hw/ppc/spapr_nested.h
/qemu/include/hw/qdev-core.h
/qemu/include/hw/virtio/virtio-acpi.h
/qemu/include/hw/xen/xen-bus.h
/qemu/include/hw/xen/xen-hvm-common.h
/qemu/include/hw/xen/xen-legacy-backend.h
/qemu/include/net/net.h
/qemu/include/qemu/qtree.h
/qemu/include/qemu/typedefs.h
/qemu/include/tcg/debuginfo.h
/qemu/include/tcg/perf.h
/qemu/include/ui/rect.h
/qemu/linux-user/elfload.c
/qemu/linux-user/exit.c
/qemu/linux-user/main.c
/qemu/linux-user/signal.c
/qemu/meson.build
/qemu/net/af-xdp.c
/qemu/net/net.c
/qemu/plugins/core.c
/qemu/plugins/loader.c
block-core.json
introspect.json
/qemu/qga/commands-posix.c
/qemu/qga/commands-win32.c
/qemu/qga/main.c
/qemu/scripts/clean-includes
/qemu/system/globals.c
/qemu/system/physmem.c
/qemu/system/vl.c
/qemu/target/alpha/cpu.c
/qemu/target/alpha/translate.c
/qemu/target/arm/cpu.c
/qemu/target/arm/tcg/cpu32.c
/qemu/target/arm/tcg/translate.c
/qemu/target/avr/cpu.c
/qemu/target/avr/translate.c
/qemu/target/cris/cpu.c
/qemu/target/cris/translate.c
/qemu/target/hexagon/cpu.c
/qemu/target/hexagon/translate.c
/qemu/target/hppa/cpu.c
/qemu/target/hppa/translate.c
/qemu/target/i386/tcg/helper-tcg.h
/qemu/target/i386/tcg/sysemu/seg_helper.c
/qemu/target/i386/tcg/tcg-cpu.c
/qemu/target/i386/tcg/translate.c
/qemu/target/loongarch/cpu.c
/qemu/target/loongarch/cpu_helper.c
/qemu/target/loongarch/internals.h
/qemu/target/loongarch/meson.build
/qemu/target/loongarch/tcg/tlb_helper.c
/qemu/target/loongarch/tcg/translate.c
/qemu/target/m68k/cpu.c
/qemu/target/m68k/translate.c
/qemu/target/meson.build
/qemu/target/microblaze/cpu.c
/qemu/target/microblaze/translate.c
/qemu/target/mips/cpu.c
/qemu/target/mips/tcg/translate.c
/qemu/target/mips/tcg/translate.h
/qemu/target/nios2/cpu.c
/qemu/target/nios2/translate.c
/qemu/target/openrisc/cpu.c
/qemu/target/openrisc/translate.c
/qemu/target/ppc/cpu_init.c
/qemu/target/ppc/translate.c
/qemu/target/riscv/tcg/tcg-cpu.c
/qemu/target/riscv/translate.c
/qemu/target/riscv/vector_internals.c
/qemu/target/riscv/vector_internals.h
/qemu/target/rx/cpu.c
/qemu/target/rx/translate.c
/qemu/target/s390x/cpu.c
/qemu/target/s390x/tcg/translate.c
/qemu/target/sh4/cpu.c
/qemu/target/sh4/translate.c
/qemu/target/sparc/cpu.c
/qemu/target/sparc/translate.c
/qemu/target/target-common.c
/qemu/target/tricore/cpu.c
/qemu/target/tricore/translate.c
/qemu/target/xtensa/cpu.c
/qemu/target/xtensa/translate.c
/qemu/tcg/debuginfo.c
/qemu/tcg/meson.build
/qemu/tcg/perf.c
/qemu/tcg/tcg.c
/qemu/tests/avocado/machine_aspeed.py
/qemu/tests/guest-debug/run-test.py
/qemu/tests/guest-debug/test_gdbstub.py
/qemu/tests/qtest/aspeed_fsi-test.c
/qemu/tests/qtest/meson.build
/qemu/tests/qtest/npcm7xx_emc-test.c
/qemu/tests/qtest/qtest_aspeed.h
/qemu/tests/tcg/aarch64/gdbstub/test-sve-ioctl.py
/qemu/tests/tcg/aarch64/gdbstub/test-sve.py
/qemu/tests/tcg/multiarch/Makefile.target
/qemu/tests/tcg/multiarch/gdbstub/interrupt.py
/qemu/tests/tcg/multiarch/gdbstub/memory.py
/qemu/tests/tcg/multiarch/gdbstub/prot-none.py
/qemu/tests/tcg/multiarch/gdbstub/registers.py
/qemu/tests/tcg/multiarch/gdbstub/sha1.py
/qemu/tests/tcg/multiarch/gdbstub/test-proc-mappings.py
/qemu/tests/tcg/multiarch/gdbstub/test-qxfer-auxv-read.py
/qemu/tests/tcg/multiarch/gdbstub/test-thread-breakpoint.py
/qemu/tests/tcg/multiarch/prot-none.c
/qemu/tests/tcg/s390x/gdbstub/test-signals-s390x.py
/qemu/tests/tcg/s390x/gdbstub/test-svc.py
/qemu/tests/unit/test-qga.c
/qemu/util/userfaultfd.c
dee70f5119-Jan-2024 Han Han <hhan@redhat.com>

qapi/migration.json: Fix the member name for MigrationCapability

s/@compression/@compress/

Fixes: 864128df46

Signed-off-by: Han Han <hhan@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

12345678910>>...67