[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/24] piix: Document coreboot-specific RAM size conf
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 03/24] piix: Document coreboot-specific RAM size config register |
Date: |
Thu, 13 Aug 2015 15:14:45 +0300 |
From: Eduardo Habkost <address@hidden>
The existing i440fx initialization code sets a PCI config register that
isn't documented anywhere in the Intel 440FX datasheet. Register 0x57 is
DRAMC (DRAM Control) and has nothing to do with the RAM size.
This was implemented in commit ec5f92ce6ac8ec09056be77e03c941be188648fa
because old coreboot code tried to read registers 0x5a-0x5f,0x56,0x57 to
get the RAM size from QEMU, but I couldn't find out why coreboot did
that. I assume it was a mistake, and the original code was supposed to
be reading the DRB[0-7] registers (offsets 0x60-0x67).
Document that coreboot-specific register offset in a macro and a
comment, for future reference.
Cc: Ed Swierk <address@hidden>
Cc: Richard Smith <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/pci-host/piix.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index ad55f99..1cb25f3 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -117,6 +117,11 @@ struct PCII440FXState {
#define I440FX_PAM_SIZE 7
#define I440FX_SMRAM 0x72
+/* Older coreboot versions (4.0 and older) read a config register that doesn't
+ * exist in real hardware, to get the RAM size from QEMU.
+ */
+#define I440FX_COREBOOT_RAM_SIZE 0x57
+
static void piix3_set_irq(void *opaque, int pirq, int level);
static PCIINTxRoute piix3_route_intx_pin_to_irq(void *opaque, int pci_intx);
static void piix3_write_config_xen(PCIDevice *dev,
@@ -394,7 +399,7 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state,
if (ram_size > 255) {
ram_size = 255;
}
- d->config[0x57] = ram_size;
+ d->config[I440FX_COREBOOT_RAM_SIZE] = ram_size;
i440fx_update_memory_mappings(f);
--
MST
- [Qemu-devel] [PULL 00/24] virtio,pc,acpi fixes, cleanups, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 01/24] make: fix where dependency *.d are stored., Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 02/24] make: load only required dependency files., Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 03/24] piix: Document coreboot-specific RAM size config register,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 04/24] pc: Use PC_COMPAT_* for CPUID feature compatibility, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 05/24] target-i386: Remove x86_cpu_compat_set_features(), Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 06/24] pc: Use error_abort when registering properties, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 07/24] pc: Rename pc_machine variables to pcms, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 09/24] pc: Eliminate pc_common_machine_options(), Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 08/24] pc: Move PCMachineClass, PCMachineState to qemu/typedefs.h, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 10/24] pc: Eliminate pc_default_machine_options(), Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 12/24] pc: Use PCMachineState for pc_memory_init() argument, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 11/24] pc: Use PCMachineState for pc_cmos_init() argument, Michael S. Tsirkin, 2015/08/13
- [Qemu-devel] [PULL 14/24] pc: Use PCMachineState as pc_guest_info_init() argument, Michael S. Tsirkin, 2015/08/13