[coreboot] [PATCH][v3] read actual memory size in qemu-i386
Peter Stuge
peter at stuge.se
Fri Jun 6 23:08:21 CEST 2008
On Fri, Jun 06, 2008 at 11:01:06PM +0200, Patrick Georgi wrote:
> Index: northbridge/intel/i440bxemulation/domain
> ===================================================================
> --- northbridge/intel/i440bxemulation/domain (revision 689)
> +++ northbridge/intel/i440bxemulation/domain (working copy)
> @@ -19,6 +19,5 @@
> */
>
> {
> - ramsize = "128";
Is this parameter now used anywhere else?
> device_operations = "i440bx_domain";
> };
> Index: northbridge/intel/i440bxemulation/i440bx.c
> ===================================================================
> --- northbridge/intel/i440bxemulation/i440bx.c (revision 689)
> +++ northbridge/intel/i440bxemulation/i440bx.c (working copy)
> @@ -37,25 +37,40 @@
> * such modified SOFTWARE should be clearly marked, so as not to confuse
> * it with the version available from LANL.
> */
> + /* dynamic qemu ram size detection
> + Copyright 2008 Patrick Georgi <patrick at georgi-clan.de>
> + Licensed under the terms of the GNU General Public License v2 or later
> + */
Maybe nicer to have the same style on all comments?
> #include <types.h>
> #include <console.h>
> #include <device/device.h>
> #include <device/pci.h>
> #include <string.h>
> +#include <io.h>
> #include "i440bx.h"
> #include "statictree.h"
>
> /* Here are the ops for 440BX as a PCI domain. */
>
> +static int inb_cmos(int port)
> +{
> + outb(port, 0x70);
> + return inb(0x71);
> +}
> +
Is this available somewhere else? Should it be?
> static void pci_domain_set_resources(struct device *dev)
> {
> struct device *mc_dev;
> u32 tolmk; /* Top of low mem, Kbytes. */
> int idx;
> - struct northbridge_intel_i440bxemulation_domain_config *device_configuration =
> - dev->device_configuration;
> - tolmk = device_configuration->ramsize * 1024;
> + /* read large mem memory descriptor
> + for <16 MB read the more detailed small mem descriptor
> + all values in kbytes */
> + tolmk = ((inb_cmos(0x35)<<8) |inb_cmos(0x34)) * 64;
> + if (tolmk <= 16 * 1024) {
> + tolmk = (inb_cmos(0x31)<<8) |inb_cmos(0x30);
> + }
I like this.
//Peter
More information about the coreboot
mailing list