mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-19 05:58:35 -07:00
When running the official PMON firmware for the Fuloong 2E, we see
8-bit and 16-bit accesses to PCI config space:
$ qemu-system-mips64el -M fuloong2e -bios pmon_2e.bin \
-trace -trace bonito\* -trace pci_cfg\*
pci_cfg_write vt82c686b-pm 05:4 @0x90 <- 0xeee1
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x4d2, size: 2
pci_cfg_write vt82c686b-pm 05:4 @0xd2 <- 0x1
pci_cfg_write vt82c686b-pm 05:4 @0x4 <- 0x1
pci_cfg_write vt82c686b-isa 05:0 @0x4 <- 0x7
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x81, size: 1
pci_cfg_read vt82c686b-isa 05:0 @0x81 -> 0x0
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x81, size: 1
pci_cfg_write vt82c686b-isa 05:0 @0x81 <- 0x80
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x83, size: 1
pci_cfg_write vt82c686b-isa 05:0 @0x83 <- 0x89
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x85, size: 1
pci_cfg_write vt82c686b-isa 05:0 @0x85 <- 0x3
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x5a, size: 1
pci_cfg_write vt82c686b-isa 05:0 @0x5a <- 0x7
bonito_spciconf_small_access PCI config address is smaller then 32-bit, addr: 0x85, size: 1
pci_cfg_write vt82c686b-isa 05:0 @0x85 <- 0x1
Also this is what the Linux kernel does since it supports the Bonito
north bridge:
https://elixir.bootlin.com/linux/v2.6.15/source/arch/mips/pci/ops-bonito64.c#L85
So it seems safe to assume the datasheet is incomplete or outdated
regarding the address constraints.
This problem was exposed by commit
|
||
|---|---|---|
| .. | ||
| bonito.c | ||
| designware.c | ||
| gpex-acpi.c | ||
| gpex.c | ||
| grackle.c | ||
| i440fx.c | ||
| Kconfig | ||
| meson.build | ||
| mv643xx.h | ||
| mv64361.c | ||
| pam.c | ||
| pnv_phb3.c | ||
| pnv_phb3_msi.c | ||
| pnv_phb3_pbcq.c | ||
| pnv_phb4.c | ||
| pnv_phb4_pec.c | ||
| ppce500.c | ||
| prep.c | ||
| q35.c | ||
| remote.c | ||
| sabre.c | ||
| sh_pci.c | ||
| trace-events | ||
| trace.h | ||
| uninorth.c | ||
| versatile.c | ||
| xen_igd_pt.c | ||
| xilinx-pcie.c | ||