qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v11 0/4] machvirt dynamic sysbus device instanti


From: Eric Auger
Subject: Re: [Qemu-devel] [PATCH v11 0/4] machvirt dynamic sysbus device instantiation
Date: Thu, 23 Apr 2015 17:17:41 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

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 <address@hidden
> <mailto:address@hidden>> 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
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]