Please do not fork.

Greg Watson gwatson at lanl.gov
Mon Jul 21 18:41:01 CEST 2003


At 4:11 PM -0600 21/7/03, Eric W. Biederman wrote:
>ron minnich <rminnich at lanl.gov> writes:
>
>>  On Mon, 21 Jul 2003, Stefan Reinauer wrote:
>>
>>  we're not going to fork.
>>
>>  That was more of a warning about what could happen. We have lots of
>>  committers out there and more are going to join. We may not always agree
>>  on how things are done, and we must not get into the habit of ripping each
>>  other's code out -- that way lies madness.
>
>There are some major design decisions coming before we freeze the 2.0 core,
>and this is just a warning that we need to be looking at these things
>closely, and that there are some strong opinions out there.  I never
>had any intention of forking.
>
>The target is to have a hardware independent hardwaremain.c
>
>We have called a cease fire for a until I get back with Ron and Greg promising
>to look at what I have done with the device stuff.
>
>If a enumerate_static_devices can be written that converts from the chip tree
>to the device tree and we get everyone working with and familiar with
>both pieces of the code we should be able to have some more rational
>discussion about what needs to happen.
>
>Conversations beyond this need to start hitting the list.
>
>Eric

The issue for me is that I need to have static initialization working 
before I can continue, so my intention is build something that will 
hopefully be acceptable to everyone. I can probably merge the chip 
and device structures that gives me a way forward without replicating 
what Eric is doing. However a single call to 
enumerate_static_devices, particularly at the current location, is 
NOT acceptable to me.

Here's my suggestion to move forward:

1. I need to be able to enable/configure static devices at specific 
points in hardwaremain, particularly on entry,  after console_init 
and prior to pci enumeration. I suggest a routine called 
device_configure()  that is passed the root of the device tree and a 
pass flag:

void device_configure(struct device *, enum dev_pass)

enum dev_pass {
	DEV_PASS_PRE_CONSOLE,
	DEV_PASS_PRE_PCI,
	DEV_PASS_ENUMERATE,
	DEV_PASS_CONFIGURE,
	DEV_PASS_ENABLE,
	DEV_PASS_INITIALIZE
};

Calls to device_configure() with the appropriate flag will be 
inserted in the appropriate locations in hardwaremain. More 
flags/calls call be added if necessary. Calls to dev_enumerate(), 
dev_configure(), etc. to probe and configure dynamic bus devices will 
be replaced with calls to device_configure() with the appropriate 
flag. Dynamic devices will be added to the device tree as appropriate.

2. New fields added to struct device, including a 'static' flag that 
is set for static devices, and something analogous to the chip 
structure for static device info.

3. Continue use of the chip.h files in configuration directories 
(although the name could be changed to device.h) and the 'register' 
configuration directive.

4. Removal of all device specific calls from hardwaremain, such as 
'init_timer()' into static initialization files using (4) above.

5. The configuration process will build a static device tree that 
will be called device_{target}.c in the target build directory and 
linked with the linuxbios image.

My intention is to start coding this tomorrow, so if anyone has any 
major objections/suggestions, please let me know asap.

Regards,

Greg





More information about the coreboot mailing list