qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] ff8f06: hw/intc: Implement GIC-500 base class


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] ff8f06: hw/intc: Implement GIC-500 base class
Date: Thu, 24 Sep 2015 09:00:04 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: ff8f06ee7680fb505079d33caaf8f5ebff0853bc
      
https://github.com/qemu/qemu/commit/ff8f06ee7680fb505079d33caaf8f5ebff0853bc
  Author: Shlomo Pongratz <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M hw/intc/Makefile.objs
    A hw/intc/arm_gicv3_common.c
    A include/hw/intc/arm_gicv3_common.h

  Log Message:
  -----------
  hw/intc: Implement GIC-500 base class

This class is to be used by both software and KVM implementations of GICv3

Currently it is mostly a placeholder, but in future it is supposed to hold
qemu's representation of GICv3 state, which is necessary for migration.

The interface of this class is fully compatible with GICv2 one. This is
done in order to simplify integration with existing code.

Signed-off-by: Shlomo Pongratz <address@hidden>
Signed-off-by: Pavel Fedin <address@hidden>
Reviewed-by: Eric Auger <address@hidden>
Tested-by: Ashok kumar <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>


  Commit: 4b3cfe72d9b9c53be31a88e7eebdda14f1757d3e
      
https://github.com/qemu/qemu/commit/4b3cfe72d9b9c53be31a88e7eebdda14f1757d3e
  Author: Pavel Fedin <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M hw/intc/arm_gic_kvm.c
    A hw/intc/vgic_common.h
    M include/sysemu/kvm.h
    M kvm-all.c

  Log Message:
  -----------
  intc/gic: Extract some reusable vGIC code

Some functions previously used only by vGICv2 are useful also for vGICv3
implementation. Untie them from GICState and make accessible from within
other modules:
- kvm_arm_gic_set_irq()
- kvm_gic_supports_attr() - moved to common code and renamed to
  kvm_device_check_attr()
- kvm_gic_access() - turned into GIC-independent kvm_device_access().
  Data pointer changed to void * because some GICv3 registers are
  64-bit wide

Some of these changes are not used right now, but they will be helpful for
implementing live migration.

Actually kvm_dist_get() and kvm_dist_put() could also be made reusable, but
they would require two extra parameters (s->dev_fd and s->num_cpu) as well as
lots of typecasts of 's' to DeviceState * and back to GICState *. This makes
the code very ugly so i decided to stop at this point. I tried also an
approach with making a base class for all possible GICs, but it would contain
only three variables (dev_fd, cpu_num and irq_num), and accessing them through
the rest of the code would be again tedious (either ugly casts or qemu-style
separate object pointer). So i disliked it too.

Signed-off-by: Pavel Fedin <address@hidden>
Tested-by: Ashok kumar <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>


  Commit: 34e85cd9173816cd48f5578c7838c26afbe592c4
      
https://github.com/qemu/qemu/commit/34e85cd9173816cd48f5578c7838c26afbe592c4
  Author: Pavel Fedin <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M target-arm/kvm.c
    M target-arm/kvm_arm.h

  Log Message:
  -----------
  arm_kvm: Do not assume particular GIC type in kvm_arch_irqchip_create()

This allows us to use different GIC types from v2. There are no kernels
which could advertise KVM_CAP_DEVICE_CTRL without the actual ability to
create GIC with it.

GIC version probe code moved to kvm_arm_vgic_probe() which will be used
later.

Signed-off-by: Pavel Fedin <address@hidden>
Reviewed-by: Eric Auger <address@hidden>
Tested-by: Ashok kumar <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>


  Commit: a7bf30342e6a7924132a5c70047928261d3c7e42
      
https://github.com/qemu/qemu/commit/a7bf30342e6a7924132a5c70047928261d3c7e42
  Author: Pavel Fedin <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M hw/intc/Makefile.objs
    A hw/intc/arm_gicv3_kvm.c
    M target-arm/kvm_arm.h
    M target-arm/machine.c

  Log Message:
  -----------
  hw/intc: Initial implementation of vGICv3

This is the initial version of KVM-accelerated GICv3 support.
State load and save are not yet supported, live migration is
not possible.

In order to get correct class name in a simpler way, gicv3_class_name()
function is implemented, similar to gic_class_name().

Signed-off-by: Pavel Fedin <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Tested-by: Ashok kumar <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>


  Commit: b92ad3949bc9cacd1652b4e07e7f6003b9e512af
      
https://github.com/qemu/qemu/commit/b92ad3949bc9cacd1652b4e07e7f6003b9e512af
  Author: Pavel Fedin <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M hw/arm/virt-acpi-build.c
    M hw/arm/virt.c
    M include/hw/acpi/acpi-defs.h
    M include/hw/arm/virt-acpi-build.h
    M include/hw/arm/virt.h

  Log Message:
  -----------
  hw/arm/virt: Add gic-version option to virt machine

Add gic_version to VirtMachineState, set it to value of the option
and pass it around where necessary. Instantiate devices and fdt
nodes according to the choice.

max_cpus for virt machine increased to 123 (calculated from redistributor
space available in the memory map). GICv2 compatibility check happens
inside arm_gic_common_realize().

ITS region is added to the memory map too, however currently it not used,
just reserved.

Signed-off-by: Pavel Fedin <address@hidden>
Tested-by: Ashok kumar <address@hidden>
[PMM: Added missing cpu_to_le* calls, thanks to Shannon Zhao]
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>


  Commit: cd37aaf876717a75d7af3a7465e8706cc4e13661
      
https://github.com/qemu/qemu/commit/cd37aaf876717a75d7af3a7465e8706cc4e13661
  Author: Shannon Zhao <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M hw/arm/virt-acpi-build.c

  Log Message:
  -----------
  hw/arm/virt-acpi-build: Fix wrong size of flash in ACPI table

While virt machine creates two flash devices with total size 0x08000000,
the ACPI table generation code was wrongly using this total size as the
size of each flash device, so it would overlap other MMIO spaces.
Make each device entry in the table half the total; this brings the
ACPI table into line with the code which generates the device tree
and which creates the flash devices themselves.

Signed-off-by: Shannon Zhao <address@hidden>
Reviewed-by: Andrew Jones <address@hidden>
Reviewed-by: Wei Huang <address@hidden>
Tested-by: Graeme Gregory <address@hidden>
Message-id: address@hidden
[PMM: edited commit message]
Signed-off-by: Peter Maydell <address@hidden>


  Commit: 85b4d5dae12580ecdd446c0f71afa04a95641c91
      
https://github.com/qemu/qemu/commit/85b4d5dae12580ecdd446c0f71afa04a95641c91
  Author: Beniamino Galvani <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: update Allwinner A10 maintainer

Change the maintainer for Allwinner A10 to myself as Li Guang's mail
address bounces. While at it, extend the file pattern for the entry to
include allwinner_emac.[ch].

Signed-off-by: Beniamino Galvani <address@hidden>
Reviewed-by: Peter Crosthwaite <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>


  Commit: eb9d0ea063fc7bdfab76b84085602a9e48d13ec7
      
https://github.com/qemu/qemu/commit/eb9d0ea063fc7bdfab76b84085602a9e48d13ec7
  Author: Peter Maydell <address@hidden>
  Date:   2015-09-24 (Thu, 24 Sep 2015)

  Changed paths:
    M MAINTAINERS
    M hw/arm/virt-acpi-build.c
    M hw/arm/virt.c
    M hw/intc/Makefile.objs
    M hw/intc/arm_gic_kvm.c
    A hw/intc/arm_gicv3_common.c
    A hw/intc/arm_gicv3_kvm.c
    A hw/intc/vgic_common.h
    M include/hw/acpi/acpi-defs.h
    M include/hw/arm/virt-acpi-build.h
    M include/hw/arm/virt.h
    A include/hw/intc/arm_gicv3_common.h
    M include/sysemu/kvm.h
    M kvm-all.c
    M target-arm/kvm.c
    M target-arm/kvm_arm.h
    M target-arm/machine.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150924' 
into staging

target-arm queue:
 * support VGICv3 in KVM
 * fix bug in ACPI table entries for flash devices in virt board
 * update Allwinner entry in MAINTAINERS

# gpg: Signature made Thu 24 Sep 2015 01:29:55 BST using RSA key ID 14360CDE
# gpg: Good signature from "Peter Maydell <address@hidden>"
# gpg:                 aka "Peter Maydell <address@hidden>"
# gpg:                 aka "Peter Maydell <address@hidden>"

* remotes/pmaydell/tags/pull-target-arm-20150924:
  MAINTAINERS: update Allwinner A10 maintainer
  hw/arm/virt-acpi-build: Fix wrong size of flash in ACPI table
  hw/arm/virt: Add gic-version option to virt machine
  hw/intc: Initial implementation of vGICv3
  arm_kvm: Do not assume particular GIC type in kvm_arch_irqchip_create()
  intc/gic: Extract some reusable vGIC code
  hw/intc: Implement GIC-500 base class

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/fefa4b128de0...eb9d0ea063fc

reply via email to

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