[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: |
Baptiste Reynal |
Subject: |
Re: [Qemu-devel] [PATCH v11 0/4] machvirt dynamic sysbus device instantiation |
Date: |
Fri, 24 Apr 2015 09:36:26 +0200 |
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 <address@hidden> 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 <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
>>
>>
>