* [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support @ 2022-03-29 6:54 Corvin Köhne 2022-03-29 6:54 ` [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne 2022-03-29 9:14 ` [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Gerd Hoffmann 0 siblings, 2 replies; 9+ messages in thread From: Corvin Köhne @ 2022-03-29 6:54 UTC (permalink / raw) Cc: Corvin Köhne, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann, Rebecca Cran, Peter Grehan, devel, FreeBSD Virtualization Hi, I'm going to add QemuFwCfg support to bhyve. See https://reviews.freebsd.org/D31578. Therefore, this patch for OVMF is neccessary to work properly. There's one open point on that patch and hopefully one of you has more insights. Qemu has an item called FW_CFG_MAX_CPUS. It looks very similar to what we need here, but I'm not sure if we can use it safely as Qemu has a comment about it: https://github.com/qemu/qemu/blob/0021c4765a6b83e5b09409b75d50c6caaa6971b9/hw/i386/fw_cfg.c#L110-L121 /* FW_CFG_MAX_CPUS is a bit confusing/problematic on x86: * * For machine types prior to 1.8, SeaBIOS needs FW_CFG_MAX_CPUS for * building MPTable, ACPI MADT, ACPI CPU hotplug and ACPI SRAT table, * that tables are based on xAPIC ID and QEMU<->SeaBIOS interface * for CPU hotplug also uses APIC ID and not "CPU index". * This means that FW_CFG_MAX_CPUS is not the "maximum number of CPUs", * but the "limit to the APIC ID values SeaBIOS may see". * * So for compatibility reasons with old BIOSes we are stuck with * "etc/max-cpus" actually being apic_id_limit */ Thanks Corvin CC: Ard Biesheuvel <ardb+tianocore@kernel.org> CC: Jiewen Yao <jiewen.yao@intel.com> CC: Jordan Justen <jordan.l.justen@intel.com> CC: Gerd Hoffmann <kraxel@redhat.com> CC: Rebecca Cran <rebecca@bsdio.com> CC: Peter Grehan <grehan@freebsd.org> CC: devel@edk2.groups.io CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org> Corvin Köhne (1): OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c | 41 ++++++++++++++++++++--- OvmfPkg/Bhyve/BhyveX64.dsc | 4 +-- 3 files changed, 40 insertions(+), 6 deletions(-) -- 2.11.0 Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg 2022-03-29 6:54 [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Corvin Köhne @ 2022-03-29 6:54 ` Corvin Köhne 2022-03-29 9:24 ` [edk2-devel] " Gerd Hoffmann 2022-03-29 9:14 ` [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Gerd Hoffmann 1 sibling, 1 reply; 9+ messages in thread From: Corvin Köhne @ 2022-03-29 6:54 UTC (permalink / raw) Cc: Corvin Köhne, Corvin Köhne, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann, Rebecca Cran, Peter Grehan, devel, FreeBSD Virtualization From: Corvin Köhne <CorvinK@beckhoff.com> QemuFwCfg is much more powerful than BhyveFwCtl. Sadly, BhyveFwCtl decided to use the same IO ports as QemuFwCfg. It's not possible to use both interfaces simultaneously. So, prefer QemuFwCfg over BhyveFwCtl. Signed-off-by: Corvin Köhne <c.koehne@beckhoff.com> CC: Ard Biesheuvel <ardb+tianocore@kernel.org> CC: Jiewen Yao <jiewen.yao@intel.com> CC: Jordan Justen <jordan.l.justen@intel.com> CC: Gerd Hoffmann <kraxel@redhat.com> CC: Rebecca Cran <rebecca@bsdio.com> CC: Peter Grehan <grehan@freebsd.org> CC: devel@edk2.groups.io CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org> --- OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c | 41 ++++++++++++++++++++--- OvmfPkg/Bhyve/BhyveX64.dsc | 4 +-- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf index 595fd055f9..94c65f32dc 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -43,6 +43,7 @@ MemoryAllocationLib OrderedCollectionLib PcdLib + QemuFwCfgLib UefiBootServicesTableLib UefiDriverEntryPoint UefiLib diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c b/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c index 8e80aa33e1..e216a21bfa 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c @@ -11,6 +11,41 @@ #include <Library/BaseMemoryLib.h> #include <Library/BhyveFwCtlLib.h> #include <Library/MemoryAllocationLib.h> +#include <Library/QemuFwCfgLib.h> // QemuFwCfgFindFile() + +STATIC +EFI_STATUS +EFIAPI +BhyveGetCpuCount ( + OUT UINT32 *CpuCount + ) +{ + FIRMWARE_CONFIG_ITEM Item; + UINTN Size; + + if (QemuFwCfgIsAvailable ()) { + if (EFI_ERROR (QemuFwCfgFindFile ("opt/bhyve/hw.ncpu", &Item, &Size))) { + return EFI_NOT_FOUND; + } else if (Size != sizeof (*CpuCount)) { + return EFI_BAD_BUFFER_SIZE; + } + + QemuFwCfgSelectItem (Item); + QemuFwCfgReadBytes (Size, CpuCount); + + return EFI_SUCCESS; + } + + // + // QemuFwCfg not available, try BhyveFwCtl. + // + Size = sizeof (*CpuCount); + if (BhyveFwCtlGet ("hw.ncpu", CpuCount, &Size) == RETURN_SUCCESS) { + return EFI_SUCCESS; + } + + return EFI_UNSUPPORTED; +} STATIC EFI_STATUS @@ -23,7 +58,6 @@ BhyveInstallAcpiMadtTable ( ) { UINT32 CpuCount; - UINTN cSize; UINTN NewBufferSize; EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER *Madt; EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE *LocalApic; @@ -36,9 +70,8 @@ BhyveInstallAcpiMadtTable ( ASSERT (AcpiTableBufferSize >= sizeof (EFI_ACPI_DESCRIPTION_HEADER)); // Query the host for the number of vCPUs - CpuCount = 0; - cSize = sizeof (CpuCount); - if (BhyveFwCtlGet ("hw.ncpu", &CpuCount, &cSize) == RETURN_SUCCESS) { + Status = BhyveGetCpuCount (&CpuCount); + if (!EFI_ERROR (Status)) { DEBUG ((DEBUG_INFO, "Retrieved CpuCount %d\n", CpuCount)); ASSERT (CpuCount >= 1); } else { diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc index 5fa08bebd7..14070fd6dd 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -163,8 +163,7 @@ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf - QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf - QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/BaseQemuFwCfgS3LibNull.inf + QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf BhyveFwCtlLib|OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf @@ -355,6 +354,7 @@ !endif PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf + QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf [LibraryClasses.common.UEFI_APPLICATION] PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf -- 2.11.0 Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg 2022-03-29 6:54 ` [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne @ 2022-03-29 9:24 ` Gerd Hoffmann 2022-03-29 9:59 ` Corvin Köhne 0 siblings, 1 reply; 9+ messages in thread From: Gerd Hoffmann @ 2022-03-29 9:24 UTC (permalink / raw) To: devel, c.koehne Cc: Corvin Köhne, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization On Tue, Mar 29, 2022 at 08:54:37AM +0200, Corvin Köhne wrote: > From: Corvin Köhne <CorvinK@beckhoff.com> > > QemuFwCfg is much more powerful than BhyveFwCtl. Sadly, BhyveFwCtl > decided to use the same IO ports as QemuFwCfg. It's not possible to use > both interfaces simultaneously. So, prefer QemuFwCfg over BhyveFwCtl. Hmm, so QemuFwCfg and BhyveFwCtl are incompatible but use the same ports? I guess the signature used is different then so the guest has a chance to figure which one is active? Assuming the above is correct the patch looks sane. Acked-by: Gerd Hoffmann <kraxel@redhat.com> take care, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg 2022-03-29 9:24 ` [edk2-devel] " Gerd Hoffmann @ 2022-03-29 9:59 ` Corvin Köhne 0 siblings, 0 replies; 9+ messages in thread From: Corvin Köhne @ 2022-03-29 9:59 UTC (permalink / raw) To: Gerd Hoffmann, devel@edk2.groups.io Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization Hi Gerd, > Hmm, so QemuFwCfg and BhyveFwCtl are incompatible but use the same > ports? I guess the signature used is different then so the guest > has a chance to figure which one is active? Yes, BhyveFwCtl uses another signature. Best regards Corvin Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support 2022-03-29 6:54 [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Corvin Köhne 2022-03-29 6:54 ` [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne @ 2022-03-29 9:14 ` Gerd Hoffmann 2022-03-29 9:57 ` Corvin Köhne 1 sibling, 1 reply; 9+ messages in thread From: Gerd Hoffmann @ 2022-03-29 9:14 UTC (permalink / raw) To: devel, c.koehne Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization On Tue, Mar 29, 2022 at 08:54:36AM +0200, Corvin Köhne wrote: > Hi, > > I'm going to add QemuFwCfg support to bhyve. See > https://reviews.freebsd.org/D31578. Therefore, this patch for OVMF is > neccessary to work properly. > > There's one open point on that patch and hopefully one of you has more > insights. Qemu has an item called FW_CFG_MAX_CPUS. It looks very similar to > what we need here, but I'm not sure if we can use it safely as Qemu has a > comment about it: > > https://github.com/qemu/qemu/blob/0021c4765a6b83e5b09409b75d50c6caaa6971b9/hw/i386/fw_cfg.c#L110-L121 > > /* FW_CFG_MAX_CPUS is a bit confusing/problematic on x86: > * > * For machine types prior to 1.8, SeaBIOS needs FW_CFG_MAX_CPUS for > * building MPTable, ACPI MADT, ACPI CPU hotplug and ACPI SRAT table, > * that tables are based on xAPIC ID and QEMU<->SeaBIOS interface > * for CPU hotplug also uses APIC ID and not "CPU index". > * This means that FW_CFG_MAX_CPUS is not the "maximum number of CPUs", > * but the "limit to the APIC ID values SeaBIOS may see". > * > * So for compatibility reasons with old BIOSes we are stuck with > * "etc/max-cpus" actually being apic_id_limit > */ There is FW_CFG_NB_CPUS + FW_CFG_MAX_CPUS. ovmf uses different names, see OvmfPkg/Include/IndustryStandard/QemuFwCfg.h PlatformPei for qemu uses QemuFwCfgItemSmpCpuCount aka FW_CFG_NB_CPUS, which is the number of cpus which are online. I think FW_CFG_MAX_CPUS is basically unused these days. It played a role back when seabios created the acpi tables for cpu hotplug as described in the comment above. In qemu 2.0 & newer the acpi tables are generated by qemu instead. The firmware just downloads them from fw_cfg and installs them for the OS, it doesn't need to know virtual machine configuration details any more. HTH, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support 2022-03-29 9:14 ` [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Gerd Hoffmann @ 2022-03-29 9:57 ` Corvin Köhne 2022-03-29 11:30 ` Gerd Hoffmann 0 siblings, 1 reply; 9+ messages in thread From: Corvin Köhne @ 2022-03-29 9:57 UTC (permalink / raw) To: Gerd Hoffmann, devel@edk2.groups.io Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization Hi Gerd, > There is FW_CFG_NB_CPUS + FW_CFG_MAX_CPUS. ovmf uses different names, > see OvmfPkg/Include/IndustryStandard/QemuFwCfg.h > > PlatformPei for qemu uses QemuFwCfgItemSmpCpuCount aka FW_CFG_NB_CPUS, > which is the number of cpus which are online. > > I think FW_CFG_MAX_CPUS is basically unused these days. It played a > role back when seabios created the acpi tables for cpu hotplug as > described in the comment above. In qemu 2.0 & newer the acpi tables are > generated by qemu instead. The firmware just downloads them from fw_cfg > and installs them for the OS, it doesn't need to know virtual machine > configuration details any more. The FwCfgItem of this patch is used by bhyve to build the MADT. So, it's similar to the use case of FW_CFG_MAX_CPUS. At the moment, I'm using an additional bhyve specific FwCfgItem. I just want to ask, if it makes sense to use FW_CFG_MAX_CPUS to avoid two items for the same purpose or to keep it as is. Best regards Corvin Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support 2022-03-29 9:57 ` Corvin Köhne @ 2022-03-29 11:30 ` Gerd Hoffmann 2022-03-29 11:53 ` Corvin Köhne 0 siblings, 1 reply; 9+ messages in thread From: Gerd Hoffmann @ 2022-03-29 11:30 UTC (permalink / raw) To: Corvin Köhne Cc: devel@edk2.groups.io, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization On Tue, Mar 29, 2022 at 09:57:40AM +0000, Corvin Köhne wrote: > Hi Gerd, > > > There is FW_CFG_NB_CPUS + FW_CFG_MAX_CPUS. ovmf uses different names, > > see OvmfPkg/Include/IndustryStandard/QemuFwCfg.h > > > > PlatformPei for qemu uses QemuFwCfgItemSmpCpuCount aka FW_CFG_NB_CPUS, > > which is the number of cpus which are online. > > > > I think FW_CFG_MAX_CPUS is basically unused these days. It played a > > role back when seabios created the acpi tables for cpu hotplug as > > described in the comment above. In qemu 2.0 & newer the acpi tables are > > generated by qemu instead. The firmware just downloads them from fw_cfg > > and installs them for the OS, it doesn't need to know virtual machine > > configuration details any more. > > The FwCfgItem of this patch is used by bhyve to build the MADT. So, it's > similar to the use case of FW_CFG_MAX_CPUS. At the moment, I'm using > an additional bhyve specific FwCfgItem. I just want to ask, if it makes sense > to use FW_CFG_MAX_CPUS to avoid two items for the same purpose or to > keep it as is. Given that FW_CFG_MAX_CPUS is unused on qemu these days it is unlikely that reusing it causes problems. IIRC the problems mentioned in the comment only matter with VMs having > 255 vCPUs because somewhere only one byte was used for the cpu / apic index. But I think I'd tend to keep the bhyve-specific behavior nevertheless, so you don't have to worry about qemu quirks. Or go the qemu route and generate the acpi tables on the host instead. When you generate the acpi tables in the guest firmware you always have the problem that you need to pass all the virtual machine configuration information needed to generate the tables to the firmware. The information needed changes over time when new features are added, which requires protocol updates, which in turn requires lockstep updates of hypervisor and firmware to deploy the new features ... HTH & take care, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support 2022-03-29 11:30 ` Gerd Hoffmann @ 2022-03-29 11:53 ` Corvin Köhne 2022-03-29 13:35 ` Gerd Hoffmann 0 siblings, 1 reply; 9+ messages in thread From: Corvin Köhne @ 2022-03-29 11:53 UTC (permalink / raw) To: Gerd Hoffmann Cc: devel@edk2.groups.io, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization Hi Gerd, > But I think I'd tend to keep the bhyve-specific behavior nevertheless, > so you don't have to worry about qemu quirks. Ok. I will leave it as is. > Or go the qemu route and generate the acpi tables on the host instead. > When you generate the acpi tables in the guest firmware you always have > the problem that you need to pass all the virtual machine configuration > information needed to generate the tables to the firmware. The > information needed changes over time when new features are added, which > requires protocol updates, which in turn requires lockstep updates of > hypervisor and firmware to deploy the new features ... Personally, I would like to use plain OVMF without any bhyve specific patches as firmware for bhyve. So, I want to go the qemu route but there's some more work to do. I already took a look at how qemu creates ACPI tables but don't understand it yet. Would be very grateful if you or someone else could help me with that. If someone knows where to find more information about it, it would also be helpful. As first step, I'm going to implement FwCfg support without changing any behaviour. Thanks, Corvin Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support 2022-03-29 11:53 ` Corvin Köhne @ 2022-03-29 13:35 ` Gerd Hoffmann 0 siblings, 0 replies; 9+ messages in thread From: Gerd Hoffmann @ 2022-03-29 13:35 UTC (permalink / raw) To: Corvin Köhne Cc: devel@edk2.groups.io, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran, Peter Grehan, FreeBSD Virtualization Hi, > Personally, I would like to use plain OVMF without any bhyve specific patches > as firmware for bhyve. So, I want to go the qemu route but there's some more > work to do. I already took a look at how qemu creates ACPI tables but don't > understand it yet. Would be very grateful if you or someone else could help > me with that. If someone knows where to find more information about it, > it would also be helpful. I think the best documentation you can find is hw/acpi/bios-linker-loader.c in the qemu source tree. It's a mini-language telling the firmware about the allocations needed, about pointers (xsdt references for example) so tables are relocatable, about checksum needing updates etc. I think qemu generates everything meanwhile, but it should be possible to get started with iasl-compiled blobs for tables which don't change, i.e. start with a static dsdt so you don't need a aml generator for the first revision. take care, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-03-29 13:36 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-03-29 6:54 [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Corvin Köhne 2022-03-29 6:54 ` [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne 2022-03-29 9:24 ` [edk2-devel] " Gerd Hoffmann 2022-03-29 9:59 ` Corvin Köhne 2022-03-29 9:14 ` [edk2-devel] [PATCH 0/1] OvmfPkg/Bhyve: QemuFwCfg support Gerd Hoffmann 2022-03-29 9:57 ` Corvin Köhne 2022-03-29 11:30 ` Gerd Hoffmann 2022-03-29 11:53 ` Corvin Köhne 2022-03-29 13:35 ` Gerd Hoffmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox