[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 00/16] piix_pci cleanup
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH v4 00/16] piix_pci cleanup |
Date: |
Fri, 28 Aug 2009 15:28:10 +0200 |
Hi
v4:
- rebase to today git. conflicted with now init functions return int.
- moved to new vmstate infrastructure
- fix vmstate to work well with substructures (we need
subsections to do it right).
Later, Juan.
v3:
- rebase to today git. Fix conflicts with avi pic/isa cleanup.
v2:
- bit the bullet, change irq_opaque to void *, instead of qemu_irq *
that allows us to pass anything there.
- Rearrange piix_pci to be able to add piix3_dev to the irq_state
- Once rearrangmente is fixed, make sane SaveVM *_load/_save() functions.
We can still load old state, but we only write the sane one.
mips_malta can do a similar cleanup, it is not difficult to do. But I can't
test it.
About irq_state in i440fx_init(). It would have been easier, if there were a
way to create i440FX-pcihost giving it the already allocated variable.
Basically:
pci_bus = pci_register_bus() -> needs irq_state
i440fx = pci_create_simple(pci_bus, ..) -> needs pci_bus
piix3 = pci_create_simple (pci_bus, ...) -> needs pci_bus
irq_state -> needs piix3
We have a nice circular dependency here. to fix it, I just create an empty
irq_state, passed it to pci_register_bus() and fill it later.
It would have been a bit cleaner if there were a finction like
i440fx = pci_create_simple_here(..., &i440fx).
Later, Juan.
v1:
- split piix4 from piix_pci. The only shared code where piix_save/load, i.e.
almost nothing. Once there, compile piix4.o only for mips (it was not used
anywhere else).
- Move global variables to PCII440FXState. Nice and clean until....
- pci_irq_levels: This is great:
* it is saved/loaded from i440fx
* it is cleaned during reset in piix3
* it is used in piix3_set_irq, that don't receive neither i440fx nor
piix state, it needs to be a global variable. (created a global link
until a better solution appear).
I looked where to "hide" pci_irq_levels and piix3_dev (both needed in
piix3_set_irq), and didn't found where to pass them, out of:
- hack i8259 to hide it into PicState2 (that one got passed through the pic)
ugly for words, but will work
- try to add <something> at setup_irq time, but at that point we have:
* opaque -> pci_dev of device that we are working with
* from there we can get to the bus that the device is attached to,
but no way to go from there to the Host bridge (that is what we wanted
in the 1st place)
Later, Juan.
Juan Quintela (16):
piix4 don't use pci_irq_levels at all
Split piix4 support from piix_pci.c
low_set_irq is not used anywhere
Use PCII440FXState instead of generic PCIDevice
Move smm_enabled and isa_memory_mappings to PCII440FXState
We want the argument pass to set_irq to be opaque
Create PIIX3State instead of using PCIDevice for PIIX3
Introduce PIIX3IrqState for piix3 irq's state
Fold piix3_init() intto i440fx_init
We can add piix3_dev now to PIIX3IrqState
Save irq_state into PCII440FXState
pci_irq_levels[] belong to PIIX3State
Update SaveVM versions
VMState: Fix sub-structs versioning
i440fx: use new vmstate infrastructure
piix3: use new vmstate infrastructure
Makefile.target | 2 +-
hw/apb_pci.c | 4 +-
hw/grackle_pci.c | 4 +-
hw/gt64xxx.c | 3 +-
hw/pc.c | 5 +-
hw/pc.h | 11 ++-
hw/pci.c | 8 +-
hw/pci.h | 6 +-
hw/piix4.c | 128 ++++++++++++++++++++++++
hw/piix_pci.c | 275 +++++++++++++++++++++-------------------------------
hw/ppc4xx_pci.c | 4 +-
hw/ppce500_pci.c | 4 +-
hw/prep_pci.c | 4 +-
hw/r2d.c | 4 +-
hw/sh_pci.c | 4 +-
hw/unin_pci.c | 4 +-
hw/versatile_pci.c | 4 +-
savevm.c | 2 +-
18 files changed, 284 insertions(+), 192 deletions(-)
create mode 100644 hw/piix4.c
- [Qemu-devel] [PATCH v4 00/16] piix_pci cleanup,
Juan Quintela <=
- [Qemu-devel] [PATCH 01/16] piix4 don't use pci_irq_levels at all, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 02/16] Split piix4 support from piix_pci.c, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 03/16] low_set_irq is not used anywhere, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 04/16] Use PCII440FXState instead of generic PCIDevice, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 05/16] Move smm_enabled and isa_memory_mappings to PCII440FXState, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 06/16] We want the argument pass to set_irq to be opaque, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 07/16] Create PIIX3State instead of using PCIDevice for PIIX3, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 08/16] Introduce PIIX3IrqState for piix3 irq's state, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 09/16] Fold piix3_init() intto i440fx_init, Juan Quintela, 2009/08/28
- [Qemu-devel] [PATCH 10/16] We can add piix3_dev now to PIIX3IrqState, Juan Quintela, 2009/08/28