I think it will be a pity to postpone VFIO support on QEMU and would rather introduce the support for VIRT_MMIO later.
Alex, what is your position on it ? Best regards, Baptiste On Thu, Apr 23, 2015 at 5:17 PM, Eric Auger <eric.au...@linaro.org> wrote: > Hi Baptiste, > > Well I need to increase the size of the platform bus mmio and number of > IRQs according to Alex' advice and hence move it after VIRTIO_MMIO for > alignment reason. This is a small change I can carry out by tomorrow. > > Then Alex proposed to bind VIRT_MMIO to the platform bus. This sounds a > bigger job and this requires me to better understand VIRTIO mechanics. I > am afraid I cannot achieve this as quickly. > > Can't we envision to introduce that latter? I know the preferred way > through would have been to freeze the platform bus base address but this > introduces yet another dependency and overall acceptance is not guaranteed. > > Best Regards > > Eric > > > On 04/23/2015 05:05 PM, Baptiste Reynal wrote: >> Hi Eric, >> >> Is there anything still blocking this patch ? Can I get the status ? >> >> Thanks, >> Baptiste >> >> On Wed, Mar 4, 2015 at 5:18 PM, Eric Auger <eric.au...@linaro.org >> <mailto:eric.au...@linaro.org>> wrote: >> >> This patch series enables machvirt to dynamically instantiate sysbus >> devices from command line (using -device option). >> >> All those sysbus devices are plugged onto a platform bus. This latter >> device is instantiated in machvirt and takes care of the binding of >> children sysbus devices on a machine init done notifier. The device >> tree node generation for children dynamic sysbus device also happens >> on a subsequent notifier that must be executed after the above one. >> machvirt registers that notifier before the platform bus creation to >> make sure notifiers are executed in the right order: dt generation after >> actual QOM binding. >> >> Very few sysbus devices are supposed to be instantiated that >> way. VFIO devices belong to them. >> >> Node creation really is architecture specific. On ARM the dynamic >> sysbus device node creation is implemented in a new C module, >> hw/arm/sysbus-fdt.c and not in the machine file. >> >> Machvirt transformations and sysbus-fdt are largely inspired from >> Alex work. >> >> The patch series can be found at: >> http://git.linaro.org/people/eric.auger/qemu.git, >> branch official_dynsysbus_v11 >> >> Best Regards >> >> Eric >> >> v10 -> v11: >> - rebase on v2.2.0 and especially Alex' >> "arm: Add PCIe host bridge in virt machine" >> >> v9 -> v10: >> - add assert and fix return value in add_fdt_node >> >> v8 -> v9: >> Take into account Peter's comments: >> hw/arm/sysbus-fdt: >> - s/Fdt/FDT in struct type names >> - reorder fields in PlatformBusFdtNotifierParams and use DO_UPCAST >> - use assert() when relevant (board model issue) >> - g_free the ARMPlatformBusFDTParams and PlatformBusFDTNotifierParams >> pointers in platform_bus_fdt_notify >> hw/arm/boot.c >> - fix compilation with arm-linux-user >> - reorder fields in ArmLoadKernelNotifier >> hw/arm/virt.c >> - PLATFORM_BUS_NUM_IRQS set to 32 instead of 20 >> - platform bus irq now start at 64 instead of 48 >> - remove change of indentation in a15memmap >> - correct misc style issues >> >> add a separate patch file for re-indentation in virt a15memmap >> >> v7 -> v8: >> - rebase on 2.2.0 (boot.c and virt.c) >> - in virt.c machvirt_init, create_platform_bus simply is added >> after the arm_load_kernel call instead of moving this latter. >> should ease the review. >> - Add Alex & Shannon Reviewed-by >> >> v6 -> v7: >> Take into account Shannon's comments: >> - hw/arm/sysbus-fdt.c: revert indentation in add_fdt_node_functions >> - hw/arm/virt.c: >> - add an additional comment in a15irqmap related to >> PLATFORM_BUS_NUM_IRQS >> - correct platform bus size to 0x400000 >> - remove PLATFORM_BUS_FIRST_IRQ macro >> >> v5 -> v6: >> Take into account Peter's comments: >> - dtb overload mechanism rewritten: arm_load_kernel code is moved into a >> machine init done notifier notify instead. arm_load_kernel only >> registers >> that notifier. As a consequence the dtb is loaded once. >> - v5 1-4 patch files are removed and replaced by a single patch file >> moving >> arm_load_kernel in the notifier (2). >> - as a consequence arm_load_kernel must be called before sysbus-fdt >> arm_register_platform_bus_fdt_creator. >> - In virt, platform_bus_params not a const anymore since its fields are >> initialized from vbi->memmap and vbi->irqmap. Hence >> create_platform_bus >> proto can be simplified. >> - In sysbus-fdt add_all_platform_bus_fdt_nodes now takes a handle to >> an ARMPlatformBusFdtParams. This is not a modify_dtb function anymore >> fdt pointer is checked in case the callback is called after the >> load_dtb >> (this latter deallocated fdt pointer). Check of fdt_filename moved >> in here. >> upgrade_dtb is removed. copyright aligned between .h and .c. >> >> v4 -> v5: >> - in virt.c: platform_bus_params becomes static const >> - sysbus-fdt: change indentation in add_fdt_node_functions array init >> - s/load_dtb/arm_load_dtb in one boot.c comment >> >> v3 -> v4: >> - dyn_sysbus_binding removed since binding stuff now are implemented by >> the platform bus device >> - due to a change in ARM load_dtb implementation using >> rom_add_blob_fixed, >> the dt no more is generated in a reset notifier but is generated on a >> machine init done notifier >> - the augmented device tree is not generated from scratch anymore but is >> added using a modify_dtb function. This required some small change in >> boot.c >> - the case where the user provides a dtb file now is handled >> - some cleanup in virt additions >> - implement a list of dyanmically instantiable devices in sysbus-fdt >> >> v2 -> v3: >> - patch now applies on top of Alex full patchset >> - dyn_sysbus_devtree: add arm_prefix to emphasize the fact those >> functions are arm specific; arm_sysbus_device_create_devtree >> becomes static >> - load_dtb renamed into arm_load_dtb >> - add copyright in hw/arm/dyn_sysbus_devtree.c >> >> v1 -> v2: >> - device node generation no more in sysbus device but in >> dyn_sysbus_devtree >> - VFIO region shrinked to 4MB and relocated in machvirt to avoid PCI >> shrink (dynamic vfio-mmio support might come latter) >> - platform_bus_base removed from PlatformDevtreeData >> >> >> Eric Auger (4): >> hw/arm/sysbus-fdt: helpers for platform bus nodes addition >> hw/arm/boot: arm_load_kernel implemented as a machine init done >> notifier >> hw/arm/virt: add dynamic sysbus device support >> hw/arm/virt: change indentation in a15memmap >> >> hw/arm/Makefile.objs | 1 + >> hw/arm/boot.c | 14 +++- >> hw/arm/sysbus-fdt.c | 174 >> ++++++++++++++++++++++++++++++++++++++++++++ >> hw/arm/virt.c | 85 ++++++++++++++++++---- >> include/hw/arm/arm.h | 28 +++++++ >> include/hw/arm/sysbus-fdt.h | 60 +++++++++++++++ >> 6 files changed, 348 insertions(+), 14 deletions(-) >> create mode 100644 hw/arm/sysbus-fdt.c >> create mode 100644 include/hw/arm/sysbus-fdt.h >> >> -- >> 1.8.3.2 >> >> >