qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 01/10] cpu/apic: drop icc bus/bridge/


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v4 01/10] cpu/apic: drop icc bus/bridge/
Date: Fri, 6 Mar 2015 10:35:01 +0100

On Fri, 13 Feb 2015 18:25:24 +0800
Zhu Guihua <address@hidden> wrote:

> From: Chen Fan <address@hidden>
> 
> ICC bus was invented only to provide hotplug capability to
> CPU and APIC because at the time being hotplug was available only for
> BUS attached devices.
> 
> Now this patch is to drop ICC bus impl, and switch to bus-less
> CPU+APIC hotplug, handling them in the same manner as pc-dimm.
> 
> Signed-off-by: Chen Fan <address@hidden>
> Signed-off-by: Zhu Guihua <address@hidden>
> ---
>  hw/i386/kvm/apic.c              | 10 ++++++++--
>  hw/i386/pc.c                    | 21 +++++----------------
>  hw/i386/pc_piix.c               |  9 +--------
>  hw/i386/pc_q35.c                |  9 +--------
>  hw/intc/apic.c                  | 16 +++++++++++-----
>  hw/intc/apic_common.c           | 14 +++++++++-----
>  include/hw/i386/apic_internal.h |  6 ++----
>  include/hw/i386/pc.h            |  3 ++-
>  target-i386/cpu.c               | 19 +++----------------
>  target-i386/cpu.h               |  3 +--
>  10 files changed, 43 insertions(+), 67 deletions(-)
> 
> diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c
> index 5b47056..4b7ce57 100644
> --- a/hw/i386/kvm/apic.c
> +++ b/hw/i386/kvm/apic.c
> @@ -10,6 +10,7 @@
>   * See the COPYING file in the top-level directory.
>   */
>  #include "hw/i386/apic_internal.h"
> +#include "hw/i386/pc.h"
>  #include "hw/pci/msi.h"
>  #include "sysemu/kvm.h"
>  
> @@ -180,9 +181,14 @@ static void kvm_apic_reset(APICCommonState *s)
>  static void kvm_apic_realize(DeviceState *dev, Error **errp)
>  {
>      APICCommonState *s = APIC_COMMON(dev);
> +    PCMachineState *pcms = PC_MACHINE(qdev_get_machine());
> +    static bool mmio_registered;
>  
> -    memory_region_init_io(&s->io_memory, NULL, &kvm_apic_io_ops, s, 
> "kvm-apic-msi",
> -                          APIC_SPACE_SIZE);
> +    if (!mmio_registered) {
> +        memory_region_init_io(&pcms->apic_mmio, NULL, &kvm_apic_io_ops, s,
> +                              "kvm-apic-msi", APIC_SPACE_SIZE);
APIC shouldn't access MachineState let alone modify it, 
so keep io_memory in APICCommonState and export method something like:
apic_register_mmio(AddressSpace *as, hwaddr addr);

and use it in pc_machine_device_plug_cb()
but it would be better to use per CPU AddressSpace added by 09daed848c
if it works with KVM. Then you could map APIC into it x86_cpu_realize().




reply via email to

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