qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 0/4] hw/arm/virt: 2.9 machtype, fix timer dt info


From: Peter Maydell
Subject: [Qemu-devel] [PATCH 0/4] hw/arm/virt: 2.9 machtype, fix timer dt info
Date: Fri, 9 Dec 2016 16:30:16 +0000

This patchset fixes an error in how we were reporting the
architectural timers in the device tree for the virt board.
Old KVM host kernels (before 4.4) implemented these timers
as edge-triggered, which led us to decide to report them in
the DT as edge triggered. However in newer kernels this
was fixed and they're level triggered as they're architecturally
supposed to be.

Patch 4 fixes up the DT.
Patch 1 adds the 2.9 machine type so we can make the DT
 change only apply to new virt machine types
Patches 2 and 3 are a cleanup, so that we can have
 convenient access to the VirtMachineClass at the point
 in the code where we want to look at it. We collapse the
 VirtBoardInfo struct into the VirtMachineState, since
 the former mostly exists because at the time there was
 no VirtMachineState.

(Most of the diffstat is the result of s/vbi/vms/ on
the file to update variable names.)

Kernel behaviours as far as I know them:
 * host v4.3 and earlier: implemented timers as weird
   sort-of-edge-triggered semantics
 * host v4.4 and later: timers are level triggered
vs
 * guest pre-4.8: ignore the values in the DT, trust
   whatever the GIC's reset values are
 * guest 4.8 before rc6: write the DT values to the
   GIC config registers
 * guest newer than rc6 ignore the DT, and always write
   'level triggered' to the GIC

This combination means that (assuming that post 4.8
guest kernels work at all on pre 4.4 host kernels) I
don't expect this to break anything. Testing would probably
be a good idea, though: I plan to do some more combinations
but kernel builds on my aarch64 system are slow so I
thought I'd send out the patchset before I went home today...

Peter Maydell (4):
  hw/arm/virt: add 2.9 machine type
  hw/arm/virt: Merge VirtBoardInfo and VirtMachineState
  hw/arm/virt: Rename 'vbi' variables to 'vms'
  hw/arm/virt: Don't incorrectly claim architectural timer to be
    edge-triggered

 include/hw/compat.h |   3 +
 hw/arm/virt.c       | 616 +++++++++++++++++++++++++++-------------------------
 2 files changed, 323 insertions(+), 296 deletions(-)

-- 
2.7.4




reply via email to

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