There are several copies of print_* and printk_* in the code. Unify them so everything is happier than before (because the disjoint features are merged).

== Unify ACPI ==

== Unify ACPI ==

Revision as of 21:09, 9 April 2010

This page collects a list of projects to improve the infrastructure of coreboot-v2. Infrastructure means those parts of the code that aren't chipset or mainboard specific, but are used by all of them. The idea is to consolidate a list of things "to do" with their status and responsible developers.

In progress

Low/High Tables

SeaBIOS requires a copy of various BIOS tables outside the fseg as it overwrites that segment. Generally clean out the table generation code.

Status: Upstream, implemented on some boards. There are problems on some chipsets/boards because of incorrect CONFIG_VIDEO_MB handling. The might be other issues, too (not clear, yet).

Vendor/chipset

Tested

Comments

amd/amdfam10

?

—

amd/amdht

?

—

amd/amdk8

?

—

amd/amdmct

?

—

amd/gx1

?

—

amd/gx2

?

—

amd/lx

?

—

intel/e7501

?

—

intel/e7520

?

—

intel/e7525

?

—

intel/i3100

?

—

intel/i440bx

?

—

intel/i82810

?

—

intel/i82830

?

—

intel/i855

?

—

intel/i945

Y

Tested on Kontron 986LCD-M and Roda RK886EX

via/cn400

?

—

via/cn700

Y

Tested on VIA pc2500e.

via/cx700

?

—

via/vt8601

?

—

via/vt8623

?

—

via/vx800

?

—

Developers: Stefan

CBFS

A filesystem-alike layout for the coreboot image, to enable systems like bayou and to clean up the system in general (eg. no more buildrom).

Status:

Upstream, pre-CBFS infrastructure removed.

There are places where using CBFS might be a good idea: Everything that makes use of external files, for example the VSA code in the Geode chipset code. VSA is converted, and tested on a couple of configurations, but untested on others.

Some boards have issues with CBFS because it requires the whole ROM to be accessible at a quite early point in time (compared to the old mechanism). The following table contains validated knowledge if the ROM mapping happens at the right time.

All boards that manage to boot in a tinybootblock configuration are capable at least for the used ROM size (it might be that larger ROMs would fail because they require mapping the larger space)

Vendor/chipset

ROM enabled

Status / Comments

amd/amd8111

Y

An enable_rom() function is implemented and called failover_process(). Untested on hardware, though.

amd/cs5530

Y

Not tested on hardware, yet.

amd/cs5535

?

—

amd/cs5536

?

—

amd/sb600

?

—

broadcom/bcm5785

Y

An enable_rom() function is implemented and called failover_process(). Untested on hardware, though.

An enable_rom() function is implemented and called failover_process(). Untested on hardware, though.

nvidia/mcp55

Y

An enable_rom() function is implemented and called failover_process(). Untested on hardware, though.

sis/sis966

Y

An enable_rom() function is implemented and called failover_process(). Untested on hardware, though.

via/vt8231

?

—

via/vt8235

?

—

via/vt8237r

?

—

via/vt82c686

?

—

winbond/w83c553

?

—

Developers: Stefan, Ron, Patrick, Myles, Uwe

Common payload location

Many boards in v2 have different names for the payload in targets/.../Config.lb (payload.elf, filo.elf, etherboot.elf, etc) and locations (../payload.elf, or various absolute paths which only work for one developer). The problem will be fixed with kconfig in v2 where the user specifies a payload manually in "make menuconfig".

Tiny Bootblock

Right now, the decision whether to use fallback or normal is in cache_as_ram_auto.c in many boards. Make that generic again (also helps with further CBFSification at some point).

Status: Available in Kconfig, works on a couple of boards. Requires per southbridge changes (and northbridge in some cases) on many boards (related to ROM enable, see CBFS section). The current massive duplication of code in cache_as_ram_auto.c can be eliminated as soon as newconfig is gone.

Developers: Patrick

More ideas

Unify ACPI

Every ACPI board has its own routines to compile the ACPI sources. Unify that. Also, figure out generic ACPI code and deduplicate it.

CMOS layout

Allow (somehow) to define defaults for all CMOS fields, and create a static table from that. Use that at runtime if the CMOS checksum fails.

Unify UMA / onboard video code and config

Unify CONFIG_VIDEO_MB, CONFIG_GFXUMA, and similar options and make all code honor them.

Some of these options are already handled in the code via CMOS options, some are compile-time only so far, so do not yet exist at all.

Kconfig TODO

Notes / Style guide:

Any bool variables that are (re-)defined to 'y' in Kconfig files can be simplified by using select FOO instead of the usual paragraph, as long as they're defined globally as default n boolean elsewhere.

Use bool instead of boolean.

Use default n instead of default false.

Various post-conversion things to consider:

Refactor id.inc/id.lds: There are 2 or 3 copies out there with a different location to make room for romstraps. Instead, define this per chipset that uses it. Unifies ldscripts-y and crt0-y values.

Consider ways to move crt0-y and ldscript-y to $(top)/Makefile. Requires some of the above.

Make various CONFIG_* variable which were in each board's Options.lb global or per-chipset options (instead of per-board). Examples: