qemu/hw/i386
David Woodhouse 3ef7ff83ca hw/xen: Add basic XenStore tree walk and write/read/directory support
This is a fairly simple implementation of a copy-on-write tree.

The node walk function starts off at the root, with 'inplace == true'.
If it ever encounters a node with a refcount greater than one (including
the root node), then that node is shared with other trees, and cannot
be modified in place, so the inplace flag is cleared and we copy on
write from there on down.

Xenstore write has 'mkdir -p' semantics and will create the intermediate
nodes if they don't already exist, so in that case we flip the inplace
flag back to true as we populate the newly-created nodes.

We put a copy of the absolute path into the buffer in the struct walk_op,
with *two* NUL terminators at the end. As xs_node_walk() goes down the
tree, it replaces the next '/' separator with a NUL so that it can use
the 'child name' in place. The next recursion down then puts the '/'
back and repeats the exercise for the next path element... if it doesn't
hit that *second* NUL termination which indicates the true end of the
path.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
2023-03-07 17:04:30 +00:00
..
kvm hw/xen: Add basic XenStore tree walk and write/read/directory support 2023-03-07 17:04:30 +00:00
xen hw/xen: Subsume xen_be_register_common() into xen_be_init() 2023-03-01 09:09:22 +00:00
acpi-build.c hw/i386/acpi: Drop duplicate _UID entry for CXL root bridge 2023-03-02 19:13:52 -05:00
acpi-build.h
acpi-common.c hw/acpi/acpi_dev_interface: Remove unused parameter from AcpiDeviceIfClass::madt_cpu 2023-01-27 11:47:02 -05:00
acpi-common.h
acpi-microvm.c hw/isa/isa-bus: Turn isa_build_aml() into qbus_build_aml() 2023-01-27 11:47:02 -05:00
acpi-microvm.h
amd_iommu.c KVM: remove support for kernel-irqchip=off 2023-01-06 00:51:02 +01:00
amd_iommu.h
e820_memory_layout.c hw/i386/e820: remove legacy reserved entries for e820 2022-11-02 06:56:31 -04:00
e820_memory_layout.h hw/i386/e820: remove legacy reserved entries for e820 2022-11-02 06:56:31 -04:00
fw_cfg.c hw/i386/e820: remove legacy reserved entries for e820 2022-11-02 06:56:31 -04:00
fw_cfg.h hw/i386/e820: remove legacy reserved entries for e820 2022-11-02 06:56:31 -04:00
generic_event_device_x86.c
intel_iommu_internal.h intel-iommu: PASID support 2022-11-07 14:08:17 -05:00
intel_iommu.c intel-iommu: send UNMAP notifications for domain or global inv desc 2023-03-02 19:13:52 -05:00
Kconfig xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation 2023-03-01 08:22:49 +00:00
kvmvapic.c
meson.build
microvm-dt.c
microvm-dt.h
microvm.c Revert "hw/i386: pass RNG seed via setup_data entry" 2023-03-02 03:10:46 -05:00
multiboot.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
multiboot.h
pc_piix.c xen/pt: reserve PCI slot 2 for Intel igd-passthru 2023-03-06 11:27:37 +00:00
pc_q35.c Revert "hw/i386: pass RNG seed via setup_data entry" 2023-03-02 03:10:46 -05:00
pc_sysfw_ovmf-stubs.c
pc_sysfw_ovmf.c
pc_sysfw.c
pc.c virtio,pc,pci: features, cleanups, fixes 2023-03-03 13:35:54 +00:00
port92.c
sgx-epc.c
sgx-stub.c
sgx.c i386: SGX: remove deprecated member of SGXInfo 2023-01-06 00:51:02 +01:00
trace-events intel-iommu: PASID support 2022-11-07 14:08:17 -05:00
trace.h
vmmouse.c
vmport.c
x86-iommu-stub.c
x86-iommu.c
x86.c virtio,pc,pci: features, cleanups, fixes 2023-03-03 13:35:54 +00:00