The OpenPIC implemtation has been a sad piece of code in the QEMU tree for a long time now. It's ugly, doesn't stick to the coding style and misses out on a few of the recent infrastructure improvements.
This patch set is a first stab at moving the OpenPIC further towards maintainable code. It cleans up the OpenPIC/MPIC code duplication that was in there (MPIC is just an implementation of the OpenPIC spec, so the naming didn't make sense). It doesn't fully clean up everything yet. While at it, this patch set also adds support for MSI(-X) to the MPC8544 variant of the OpenPIC. I have successfully tested MSI and MSI-X with ahci and virtio-net. Please beware that savevm support is broken after this patch set. I have quite big doubts that saving a ppc vm works at all right now though, so let's just leave it broken for now and replace it with a new version that is going to be savevm based later. Alex Alexander Graf (19): openpic: Remove unused code mpic: Unify numbering scheme openpic: update to proper memory api openpic: combine mpic and openpic src handlers openpic: Convert subregions to memory api openpic: combine mpic and openpic irq raise functions openpic: merge mpic and openpic timer handling openpic: combine openpic and mpic reset functions openpic: unify memory api subregions openpic: remove unused type variable openpic: convert simple reg operations to builtin bitops openpic: rename openpic_t to OpenPICState openpic: remove irq_out openpic: convert to qdev openpic: make brr1 model specific openpic: add Shared MSI support PPC: e500: Add MSI support PPC: e500: Declare pci bridge as bridge MSI-X: Fix endianness hw/msix.c | 6 +- hw/openpic.c | 1369 ++++++++++++++++++----------------------------------- hw/openpic.h | 7 +- hw/ppc/e500.c | 51 ++- hw/ppc_newworld.c | 25 +- hw/ppce500_pci.c | 6 + 6 files changed, 544 insertions(+), 920 deletions(-)