Skip to content

hw/i386/pc: Split PIIX3 southbridge from i440FX northbridge

Philippe Mathieu-Daudé qemu-devel xen-devel 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest20 patches 3 repliesIn review
  2. v220 patches 31 repliesSuperseded
  3. v132 patches 45 repliesSuperseded

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/20MAINTAINERS: Keep PIIX4 South Bridge separate from PC ChipsetsMAINTAINERS+6 -10 replies
2/20piix4: Add the Reset Control Registerhw/isa/piix4.c+46 -30 replies
3/20piix4: Add an i8259 Interrupt Controller as specified in datasheethw/isa/piix4.c hw/mips/mips_malta.c include/hw/i386/pc.h+45 -310 replies
4/20Revert "irq: introduce qemu_irq_proxy()"hw/core/irq.c include/hw/irq.h+0 -190 replies
5/20piix4: Rename PIIX4 object to piix4-isahw/isa/piix4.c hw/mips/mips_malta.c include/hw/isa/isa.h+3 -20 replies
6/20piix4: Add an i8257 DMA Controller as specified in datasheethw/isa/piix4.c hw/mips/mips_malta.c+4 -20 replies
7/20piix4: Add an i8254 PIT Controller as specified in datasheethw/isa/piix4.c hw/mips/mips_malta.c+4 -40 replies
8/20piix4: Add a MC146818 RTC Controller as specified in datasheetMAINTAINERS hw/acpi/piix4.c hw/i386/acpi-build.c +6 more+48 -190 replies
9/20hw/mips/mips_malta: Create IDE hard drive array dynamicallyhw/mips/mips_malta.c+5 -20 replies
10/20hw/mips/mips_malta: Extract the PIIX4 creation code as piix4_create()hw/mips/mips_malta.c+29 -180 replies
11/20hw/isa/piix4: Move piix4_create() to hw/isa/piix4.chw/isa/piix4.c hw/mips/gt64xxx_pci.c hw/mips/mips_malta.c +2 more+37 -300 replies
12/20hw/i386: Remove obsolete LoadStateHandler::load_state_old handlershw/acpi/piix4.c hw/intc/apic_common.c hw/pci-host/piix.c +1 more+0 -1540 replies
13/20hw/pci-host/piix: Extract piix3_create()hw/pci-host/piix.c+31 -200 replies
14/20hw/pci-host/piix: Move RCR_IOPORT register definitionhw/i386/acpi-build.c hw/isa/piix4.c hw/pci-host/piix.c +2 more+12 -110 replies
15/20hw/pci-host/piix: Define and use the PIIX IRQ Route Control Registershw/i386/xen/xen-hvm.c hw/mips/gt64xxx_pci.c hw/pci-host/piix.c +1 more+15 -90 replies
16/20hw/pci-host/piix: Move i440FX declarations to hw/pci-host/i440fx.hMAINTAINERS hw/acpi/pcihp.c hw/i386/pc_piix.c +4 more+43 -240 replies
17/20hw/pci-host/piix: Fix code style issueshw/pci-host/piix.c+4 -30 replies
18/20hw/pci-host/piix: Extract PIIX3 functions to hw/isa/piix3.cMAINTAINERS hw/i386/Kconfig hw/isa/Kconfig +5 more+442 -4030 replies
19/20hw/pci-host: Rename incorrectly named 'piix' as 'i440fx'MAINTAINERS hw/i386/Kconfig hw/pci-host/Kconfig +2 more+4 -40 replies
20/20hw/pci-host/i440fx: Remove the last PIIX3 traceshw/i386/pc_piix.c hw/pci-host/i440fx.c include/hw/pci-host/i440fx.h+8 -110 replies

Reviews trailers per patch

All 20 patches have a Reviewed-by or Acked-by.

PatchAleksandar MarkovicLi QiangMichael S. TsirkinPaolo BonziniThomas HuthEsteban BossePhilippe Mathieu-DaudéPaul Durrant
1/20R-b R-b
2/20R-b R-b A-b A-b
3/20R-b A-b A-b
4/20R-b R-b R-b
5/20R-b R-b A-b A-b R-b R-b
6/20R-b A-b A-b R-b
7/20R-b A-b A-b
8/20R-b A-b A-b
9/20R-b R-b
10/20R-b
11/20R-b
12/20R-b
13/20R-b R-b
14/20R-b
15/20R-b A-b
16/20R-b
17/20R-b R-b
18/20R-b
19/20R-b
20/20R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 8 reviewers.

Read the v3 thread

Cover letter [PATCH v3 00/20] hw/i386/pc: Split PIIX3 southbridge from i440FX northbridge

Changes since v2 [0]:
- Use a #define
- Reword one description
- Added review tags (thanks all for reviewing!)

Changes since v1 [1]:
- Removed patch reintroducing DO_UPCAST() use (thuth)
- Took various patches out to reduce series (thuth)
- Added review tags (thanks all for reviewing!)

$ git backport-diff -u pc_split_i440fx_piix-v2
Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively

001/20:[----] [--] 'MAINTAINERS: Keep PIIX4 South Bridge separate from PC Chipsets' 002/20:[0004] [FC] 'piix4: Add the Reset Control Register'
003/20:[0002] [FC] 'piix4: Add an i8259 Interrupt Controller as specified in datasheet' 004/20:[----] [--] 'Revert "irq: introduce qemu_irq_proxy()"'
005/20:[----] [--] 'piix4: Rename PIIX4 object to piix4-isa'
006/20:[----] [--] 'piix4: Add an i8257 DMA Controller as specified in datasheet' 007/20:[----] [-C] 'piix4: Add an i8254 PIT Controller as specified in datasheet' 008/20:[0004] [FC] 'piix4: Add a MC146818 RTC Controller as specified in datasheet' 009/20:[----] [--] 'hw/mips/mips_malta: Create IDE hard drive array dynamically' 010/20:[----] [--] 'hw/mips/mips_malta: Extract the PIIX4 creation code as piix4_create()' 011/20:[----] [-C] 'hw/isa/piix4: Move piix4_create() to hw/isa/piix4.c' 012/20:[----] [--] 'hw/i386: Remove obsolete LoadStateHandler::load_state_old handlers' 013/20:[----] [--] 'hw/pci-host/piix: Extract piix3_create()'
014/20:[0002] [FC] 'hw/pci-host/piix: Move RCR_IOPORT register definition' 015/20:[----] [--] 'hw/pci-host/piix: Define and use the PIIX IRQ Route Control Registers' 016/20:[----] [-C] 'hw/pci-host/piix: Move i440FX declarations to hw/pci-host/i440fx.h' 017/20:[----] [--] 'hw/pci-host/piix: Fix code style issues'
018/20:[----] [--] 'hw/pci-host/piix: Extract PIIX3 functions to hw/isa/piix3.c' 019/20:[----] [--] 'hw/pci-host: Rename incorrectly named 'piix' as 'i440fx'' 020/20:[0004] [FC] 'hw/pci-host/i440fx: Remove the last PIIX3 traces'

Previous cover:

This series is a rework of "piix4: cleanup and improvements" [2] from Hervé, and my "remove i386/pc dependency: PIIX cleanup" [3].

Still trying to remove the strong X86/PC dependency 2 years later, one step at a time.
Here we split the PIIX3 southbridge from i440FX northbridge. The i440FX northbridge is only used by the PC machine, while the PIIX southbridge is also used by the Malta MIPS machine.

This is also a step forward using KConfig with the Malta board. Without this split, it was impossible to compile the Malta without pulling various X86 pieces of code.

The overall design cleanup is not yet perfect, but enough to post as a series.

Now that the PIIX3 code is extracted, the code duplication with the PIIX4 chipset is obvious. Not worth improving for now because it isn't broken.

Based-on: <[email protected]> to include:
mc146818rtc: Allow call object_initialize(MC146818_RTC) instead of rtc_init()
https://mid.mail-archive.com/[email protected]

Since Aleksandar offered me to send the pull request [4] I plan to do it once Paolo's pull [5] is merged.

Thanks,

Phil.

CI results:
https://travis-ci.org/philmd/qemu/builds/603253987
https://app.shippable.com/github/philmd/qemu/runs/550/summary/console

[0] https://lists.gnu.org/archive/html/qemu-devel/2019-10/msg04662.html
[1] https://lists.gnu.org/archive/html/qemu-devel/2019-10/msg03685.html
[2] https://www.mail-archive.com/[email protected]/msg500737.html
[3] https://www.mail-archive.com/[email protected]/msg504081.html
[4] https://lists.gnu.org/archive/html/qemu-devel/2019-10/msg04959.html
[5] https://lists.gnu.org/archive/html/qemu-devel/2019-10/msg07339.html

Hervé Poussineau (5):
piix4: Add the Reset Control Register
piix4: Add an i8259 Interrupt Controller as specified in datasheet
piix4: Rename PIIX4 object to piix4-isa
piix4: Add an i8257 DMA Controller as specified in datasheet
piix4: Add an i8254 PIT Controller as specified in datasheet

Philippe Mathieu-Daudé (15):
MAINTAINERS: Keep PIIX4 South Bridge separate from PC Chipsets Revert "irq: introduce qemu_irq_proxy()"
piix4: Add a MC146818 RTC Controller as specified in datasheet hw/mips/mips_malta: Create IDE hard drive array dynamically hw/mips/mips_malta: Extract the PIIX4 creation code as piix4_create() hw/isa/piix4: Move piix4_create() to hw/isa/piix4.c hw/i386: Remove obsolete LoadStateHandler::load_state_old handlers hw/pci-host/piix: Extract piix3_create()
hw/pci-host/piix: Move RCR_IOPORT register definition hw/pci-host/piix: Define and use the PIIX IRQ Route Control Registers hw/pci-host/piix: Move i440FX declarations to hw/pci-host/i440fx.h hw/pci-host/piix: Fix code style issues
hw/pci-host/piix: Extract PIIX3 functions to hw/isa/piix3.c hw/pci-host: Rename incorrectly named 'piix' as 'i440fx' hw/pci-host/i440fx: Remove the last PIIX3 traces

 MAINTAINERS                      |  14 +-
 hw/acpi/pcihp.c                  |   2 +-
 hw/acpi/piix4.c                  |  42 +--
 hw/core/irq.c                    |  14 -
 hw/i386/Kconfig                  |   3 +-
 hw/i386/acpi-build.c             |   5 +-
 hw/i386/pc_piix.c                |  10 +-
 hw/i386/xen/xen-hvm.c            |   5 +-
 hw/intc/apic_common.c            |  49 ----
 hw/isa/Kconfig                   |   4 +
 hw/isa/Makefile.objs             |   1 +
 hw/isa/piix3.c                   | 399 +++++++++++++++++++++++++++++
 hw/isa/piix4.c                   | 151 ++++++++++-
 hw/mips/gt64xxx_pci.c            |   5 +-
 hw/mips/mips_malta.c             |  46 +---
 hw/pci-host/Kconfig              |   3 +-
 hw/pci-host/Makefile.objs        |   2 +-
 hw/pci-host/{piix.c => i440fx.c} | 424 +------------------------------
 hw/timer/i8254_common.c          |  40 ---
 include/hw/acpi/piix4.h          |   6 -
 include/hw/i386/pc.h             |  37 ---
 include/hw/irq.h                 |   5 -
 include/hw/isa/isa.h             |   2 +
 include/hw/pci-host/i440fx.h     |  36 +++
 include/hw/southbridge/piix.h    |  74 ++++++
 stubs/pci-host-piix.c            |   3 +-
 26 files changed, 699 insertions(+), 683 deletions(-)
 create mode 100644 hw/isa/piix3.c
 rename hw/pci-host/{piix.c => i440fx.c} (58%)
 delete mode 100644 include/hw/acpi/piix4.h
 create mode 100644 include/hw/pci-host/i440fx.h
 create mode 100644 include/hw/southbridge/piix.h
Signature · 7 lines
2.21.0


_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel