Re: linuxbios and solaris

2005-03-21 Thread Greg Watson
You might be able to use something like ADLO to emulate the interrupt.
Greg
On Mar 21, 2005, at 4:01 AM, jfaslist wrote:
Hi,
I was wondering if  linuxbios would boot and work with solaris x86?
From the following link, it seems that the BIOS INT 13 is required by  
the first stage boot:
http://developers.sun.com/solaris/developer/support/driver/wps/ 
realmode_env/boot.html

Is there a way around this?
Thanks a lot,
-jf simon

___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: totalimpact briq?

2005-02-14 Thread Greg Watson
Hi Stefan,
I did it this way because the JTAG debugger understands elf headers, so 
can automatically work out where to program the image in rom. I guess 
it should really be called linuxbios.elf. Feel free to change things if 
you feel the need.

Greg
On Feb 13, 2005, at 3:55 PM, Stefan Reinauer wrote:
Hi,
how should the totalimpact briq target work? When I build it, I get an
elf image as the resulting linuxbios.rom. Is this intended?
Stefan
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: V2 questions

2005-01-20 Thread Greg Watson
On Jan 20, 2005, at 9:19 AM, Richard Smith wrote:
well, I am supposed to put my filo in there RSN, should I do that? My
mistake ...
What about fs_stream?
What's fs_stream?
It enables an embedded version of FILO, rather than using FILO as a 
payload.

Greg
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


problem with PPC

2005-01-20 Thread Greg Watson
Well, I have a problem.
The PPC code, which was working in November, is now no longer working. 
I rebuilt the Sandpoint image using the same configuration file, but 
now I just get garbage on the screen. To help me track this down, can 
anyone who has made changes that are likely to have cause this, please 
let me know.

Greg
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: [PROPOSAL] enhanced table dumping

2005-01-18 Thread Greg Watson
On Jan 18, 2005, at 4:51 AM, Eric W. Biederman wrote:
Stefan Reinauer [EMAIL PROTECTED] writes:
* ACPI tables need information on the Apics as well. Now the ACPI
  implementation I wrote a longer while ago is completely static and
  basically only works for systems with a single IOAPIC and not very
  well even on those.
Autocreation of those tables should belong to the driver code of each
supported device.
No.  The devices should have no idea about the format of the data
we present to the user.  We should push all of the information into
the device tree so we can derive it from there.
I agree. The right way to do this is to provide the device tree with a 
single method for serializing itself. If ACPI, MP, pirq information 
needs to be passed, then it should be included in the device tree. We 
may need to add additional device tree information to deal with the 
IOAPICs problem.

The only issue really is what format to use for serialization. I'm 
leaning towards s-expressions for use with openbios. However, it's 
conceivable that different serialzation methods could be provided for 
different payloads, though probably not desirable.

Greg
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: [PROPOSAL] enhanced table dumping

2005-01-18 Thread Greg Watson
On Jan 18, 2005, at 1:19 PM, Eric W. Biederman wrote:
Greg Watson [EMAIL PROTECTED] writes:
On Jan 18, 2005, at 4:51 AM, Eric W. Biederman wrote:
The only issue really is what format to use for serialization. I'm 
leaning
towards s-expressions for use with openbios. However, it's 
conceivable that
different serialzation methods could be provided for different 
payloads, though
probably not desirable.
Please note this problem has to pieces.  Which information should we 
represent
and how should we represent it.

Devices on a motherboard are not necessarily connect as a tree.  I 
have never
seen a tree structured schematic :)  So the actual layout of the data 
is to some
extent secondary to the data structures we will use to represent that 
data.

So we need to drill down on that part as to how we represent logical 
devices
and how we represent the logical connections between them.

Eric
An arbitrary graph seems to be adding additional complexity that we 
don't really need. Do you have an example of where a tree won't 
actually suffice?

The nice thing about s-expressions is that it deals with both the 
structure and representation.

Greg
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: work linuxbios with openbios

2005-01-10 Thread Greg Watson
This is a work-in-progress, so there is no documentation. The major 
issue that needs to be addressed is that there is currently no 
mechanism for passing the linuxbios discovered device information to 
openbios. This is on my todo list.

Openbios is an implementation of the IEEE-1275 standard for Open 
Firmware. This provides a standard means for loading an operating 
system image from a device, as well as a series of callbacks that an 
operating system can use to perform certain functions, such as writing 
to an attached display. It is similar to filo in some respects, such as 
the ability to load images from attached devices, but provides an 
architecture neutral layer that simplifies the interface between the 
operating system and the hardware. This means an Open Firmware enabled 
kernel will run on virtually any platform that provides Open Firmware 
support, without requiring kernel code that is specific to the 
platform.

Greg
On Jan 10, 2005, at 3:33 AM, zhu shi song wrote:
How to use linuxbios together with openbios?  Is there
any clear howto doc?  What's the main purpose of
openbios?  What's the main difference between openbios
and filo?
Now I'm using filo to boot my linux kernel.
tks
zhu

__
Do you Yahoo!?
The all-new My Yahoo! - Get yours free!
http://my.yahoo.com
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: VGABIOS is working under LinuxBIOS

2005-01-06 Thread Greg Watson
On Jan 5, 2005, at 9:40 PM, Ronald G. Minnich wrote:

On Wed, 5 Jan 2005, Li-Ta Lo wrote:
No. The do_vgabios is depreciated and is removed from the CVS. It 
uses a
real mode switch which is very difficult to to debug and not portable.
The prefered way now is to use the emulator to execut the VBIOS. The
emulator is acting as the .init method of a generic vga device driver.

THe really cool thing about this is that it is portable to, e.g., Power
PC.
ron
As soon as Ollie gets this into CVS, I'll try it on the sandpoint.
Greg
___
Linuxbios mailing list
Linuxbios@clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: RFC: linuxbios table fix

2004-12-10 Thread Greg Watson
On Dec 9, 2004, at 10:49 PM, Eric W. Biederman wrote:
Ronald G. Minnich [EMAIL PROTECTED] writes:
On Thu, 9 Dec 2004, Eric W. Biederman wrote:
I am still worried about ppc, and big endian architectures in 
general.
But I don't think we currently have any users there.
we do. I think I'd like to hear Greg Watson's take on this as he is
working with the PPC 970 guys and this will impact him.
Ron we have users of the LinxuBIOS table on PPC?  It was my impression 
that we
did not.

I would be happy to hear what Greg has to say.  If nothing uses this 
entry
I will be happy to change this.Otherwise we need to know what the 
test
program below reports on ppc.
Nothing uses this currently, but I will be providing support to pass 
the entire device tree to a payload in the near future. Whether this 
will be using linuxbios tables, s-expressions or XML depends on the 
results of the current discussion.

On ppc32, gcc-3.2.2 I get a size of 24. I'll try ppc64 later today.
Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: jump to boot code

2004-12-02 Thread Greg Watson
If you do an 'objdump -f' on the executable, what does it say is the 
start address? 0x1092e4 seems a bit strange.

Greg
On Dec 1, 2004, at 11:17 PM, Gin wrote:
I tested my payload(FILO.elf) with linux loader Grub. It has no 
problem at all. So something must go wrong when linuxbios jumps to the 
payload. FILO doesn't seem to run at all. No debug message over the 
console.


Dont know if there is anyone familiar with ELF.
This is the message over the console at the end.
It seems that there are 2 segments in the ELF. In the end, linuxbios 
jumps to an entry that looks like the in the middle of the first 
segment.

 Does it look right?




Found ELF candiate at offset 0

(cleaned up) New segment addr 0x10 size 0x270f0 offset 0xa0 
filesize 0xd068

(cleaned up) New segment addr 0x127100 size 0x48 offset 0xd120 
filesize 0x48

Dropping non PT_LOAD segment

Loading Segment: addr: 0x0010 memsz: 0x000270f0 
filesz: 0x00 00d068

Loading Segment: addr: 0x00127100 memsz: 0x0048 
filesz: 0x00 48


Jumping to boot code at 0x1092e4

entry = 0x001092e4
lb_start = 0x4000
lb_size = 0x00024000
adjust = 0xfe5d8400
buffer = 0xfe5b8400
elf_boot_notes = 0x00015680
adjusted_boot_notes = 0xfe5eda80


___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Alignment of LinuxBIOS table structures

2004-11-29 Thread Greg Watson
On Nov 28, 2004, at 9:34 PM, Ronald G. Minnich wrote:

On Fri, 26 Nov 2004, Stefan Reinauer wrote:
The problem is that different compilers handle structure alignment
differently, ie 2.95.x and 3.x have fundamental differences here:
stepan, from the point of view of Plan 9, these are the same compiler.
Adding __attribute__ ((packed)) to the structures helps:
Sadly, Plan 9 compilers do not support this attribute for very good
technical reasons. The problem then is that these tables will be hard 
for
Plan 9 to deal with.

struct lb_memory_range {
uint64_t start;
uint64_t size;
uint32_t type;
#define LB_MEM_RAM   1  /* Memory anyone can use */
#define LB_MEM_RESERVED  2  /* Don't use this memory region */
#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */

} __attribute__ ((packed));
There are two problems here.
The first problem is the use of binary structures, followed by the use 
of
gcc attributes to make the structures have a certain shape. I've just
had a big tussle with this in Xen and Plan 9. Xen kind of assumes a gcc
world and things fall apart badly when your compiler is not gcc. This 
is
going to happen with these binary structures when our payloads are not
built with gcc compatible compilers -- which is already the case with 
Plan
9 payloads.

Second problem is, what happens if this or other LinuxBIOS tables need 
to
change at some future point? We're going to have different versions.
Intel and Microsoft solve this versioning problem by putting a version
number in binary tables. Hence in the _MP_ table there is a version 
flag.
This versioning of binary tables is a headache; what if you have to 
boot a
very old OS that realizes it can't parse table version 2, only table
version 1? Oops. Trouble, that's what.

I think the big problem is the use of binary data structures. It shows 
how
smart the Open Boot guys were to use strings, and they figured this 
out 16
years ago!

I think we should look at having linuxbios create strings of data for
tables, not binary tables. Long term, the binary tables are going to 
cause
us trouble, as they have already: having to use non-portable compiler
options/attributes is a recipe for disaster. You only parse them once 
to
turn them into internal binary data structures in the OS; performance 
is
not an issue here.

In Plan 9, the parameters are passed in as keyword-value pairs, viz:
totalmem=0x10
This is easy to generate, and both Linux and Plan 9 and other OSes have
more than enough functions in the kernel already to parse these. This
removes special needs for alignment, packing, and so on.
If you want you can generate Forth tables, which are also simple, but 
in
the end, I think we need to avoid the problems of binary tables.

My real preference is for S-expressions, as they are totally
character-oriented tables that can still provide structure such as 
trees
and tables, but I am not sure people will like S-expressions.
I agree, we need to get away from binary structures. Much as I like 
S-expressions, strings containing key/value pairs is probably the most 
common and easily understandable way to do it.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: pnp_enable_resource not being called

2004-11-26 Thread Greg Watson
YH,
Thanks, that seems to have fixed the problem.
Greg
On Nov 24, 2004, at 3:48 PM, YhLu wrote:
In the AMD8111_lpc.c
static void amd8111_lpc_enable_resources(device_t dev)
{
pci_dev_enable_resources(dev);
enable_childrens_resources(dev);
}
static struct device_operations lpc_ops  = {
.read_resources   = amd8111_lpc_read_resources,
.set_resources= pci_dev_set_resources,
.enable_resources = amd8111_lpc_enable_resources,
.init = lpc_init,
.scan_bus = scan_static_bus,
//  .enable   = amd8111_enable,
.ops_pci  = lops_pci,
};
So I guess you need to add the device driver for the lpc in SB.
Then the scan_static_bus and enable_childrens_resources(dev) will be 
called.

Regards
YH
-Original Message-
From: Greg Watson [mailto:[EMAIL PROTECTED]
Sent: Wednesday, November 24, 2004 1:29 PM
To: 'LinuxBIOS'
Subject: pnp_enable_resource not being called
The sandpoint has the following structure:
Northbridge MPC107 -- Southbridge W83C553 -- Superio PC97307
The config file looks like:
chip northbridge/motorola/mpc107
 device pci_domain 0 on
 device pci 0.0 on end
 device pci b.0 on
 chip southbridge/winbond/w83c553
 chip superio/NSC/pc97307
 device pnp 15c.0 on end #
Kyeboard
 device pnp 15c.1 on end # 
Mouse
 device pnp 15c.2 on end #
Real-time Cloc
k
 device pnp 15c.3 on end # 
Floppy
 device pnp 15c.4 on end #
Parallel port
 device pnp 15c.5 on end # com2
 device pnp 15c.6 on end # com1
 device pnp 15c.7 on end # gpio
 device pnp 15c.8 on end # 
Power
manageme
nt
 end
 end
 end # pci to isa bridge
 device pci b.1 on end # pci ide controller
 end
 device cpu_bus 0 on
 chip cpu/ppc/mpc74xx
 device cpu 0 on end
 end
 end
end

The dev_enumerate() code is calling the PNP enable routines and the
dev_initialize() code is calling the PNP init routine. However the
dev_enable() code never calls the PNP enable_resource routine, which
means the the PNP devices are never actually enabled.
The enable_dev routine for the superio device calls:
 pnp_enable_devices(dev, ops,
 sizeof(pnp_dev_info)/sizeof(pnp_dev_info[0]),
pnp_dev_info);
where ops is defined as:
static struct device_operations ops = {
 .read_resources   = pnp_read_resources,
 .set_resources= pnp_set_resources,
 .enable_resources = pnp_enable_resources,
 .enable   = pnp_enable,
 .init = init,
};
Any ideas why this is not working? Is there something else that needs
to happen?
Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: boot linux from an ide

2004-11-25 Thread Greg Watson
If FILO is a payload in flash, then you need to set CONFIG_ROM_STREAM=1 
and CONFIG_ROM_STREAM_START to the address you want to start looking 
for the payload ELF header (usually just after the LinuxBIOS image). 
CONFIG_IDE_STREAM is used to load a payload (such as FILO) from an 
attached IDE device. This is useful if the flash is not large enough to 
hold LinuxBIOS+payload, but is probably not what you are looking for. 
Sorry for the confusion.

Greg
On Nov 25, 2004, at 5:40 AM, Gin wrote:
I use FILO as the payload to boot from a Hard Disk, which has a
installed linux on it. I noticed if I enabled the ide stream. It tries
to read the ELF header from my IDE drive. But I thought the FILO 
payload
should be the one to load the image from the IDE drive. When does it
come in and play the role?
Anyone can explain the flow of booting if I try to load the INSTALLED
linux from a IDE drive.

Gin
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


pnp_enable_resource not being called

2004-11-24 Thread Greg Watson
The sandpoint has the following structure:
Northbridge MPC107 -- Southbridge W83C553 -- Superio PC97307
The config file looks like:
chip northbridge/motorola/mpc107
device pci_domain 0 on
device pci 0.0 on end
device pci b.0 on
chip southbridge/winbond/w83c553
chip superio/NSC/pc97307
device pnp 15c.0 on end # 
Kyeboard
device pnp 15c.1 on end # Mouse
device pnp 15c.2 on end # 
Real-time Cloc
k
device pnp 15c.3 on end # Floppy
device pnp 15c.4 on end # 
Parallel port
device pnp 15c.5 on end # com2
device pnp 15c.6 on end # com1
device pnp 15c.7 on end # gpio
device pnp 15c.8 on end # Power 
manageme
nt
end
end
end # pci to isa bridge
device pci b.1 on end # pci ide controller
end
device cpu_bus 0 on
chip cpu/ppc/mpc74xx
device cpu 0 on end
end
end
end

The dev_enumerate() code is calling the PNP enable routines and the 
dev_initialize() code is calling the PNP init routine. However the 
dev_enable() code never calls the PNP enable_resource routine, which 
means the the PNP devices are never actually enabled.

The enable_dev routine for the superio device calls:
pnp_enable_devices(dev, ops,
sizeof(pnp_dev_info)/sizeof(pnp_dev_info[0]), 
pnp_dev_info);

where ops is defined as:
static struct device_operations ops = {
.read_resources   = pnp_read_resources,
.set_resources= pnp_set_resources,
.enable_resources = pnp_enable_resources,
.enable   = pnp_enable,
.init = init,
};
Any ideas why this is not working? Is there something else that needs 
to happen?

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: ppc targets

2004-11-18 Thread Greg Watson
On Nov 18, 2004, at 6:13 AM, Eric W. Biederman wrote:
Just a progress update before I go to bed.
I have the totalimpact/briq building now.  There are a couple of things
that are not quite right but nothing architectural.
Looking at where the code is I should be able to get the
sandpointx3+pmc/altimus/mpc7410 building.  Since there is only one pmc
supported things look much simpler :)
Beyond that a lot of my confusion has been looking at code and
expecting it to work, or to handle the general case when in fact
it doesn't.
As I settle for merely fixing the code so it continues to do what
it did before, I can successfully make a lot of progress.
Eric
The problem with both the briq and the ep405pc is the lack of 
board-level documentation. This makes adding support painstakingly slow 
at best.

I will be satisfied having the code back to the point where at least 
development can continue.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: boot from ide

2004-11-17 Thread Greg Watson
Actually, don't set CONFIG_FS_STREAM if you're using Filo as a payload. 
Use the CONFIG_IDE_STREAM instead.

Greg
On Nov 17, 2004, at 7:05 PM, Gin wrote:
Hello,
I've got my linuxbios run to the point it tries to load the image from
an IDE drive. I use FILO as the payload.
1. What do I have to add in the Config.lb file to make it use filo? I
know CONFIG_FS_STREAM should be set to true. What else?
2. I remembered linuxbios supports ROM image size larger than 64K now.
But when got compiler errors when specifies it as 128K. Do I miss
anything?
Gin
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


recent changes

2004-11-15 Thread Greg Watson
We now seem to have a chip keyword, in addition to config, device, 
driver and object keywords. We have a device_operations structure, a 
cpu_device_id structure and a cpu_driver structure as well as a 
pci_driver structure. The cpu tree has been reorganized to include 
vendor directories as well as architecture directories. We now seem to 
have a drivers directory tree.

Can someone please provide the following information:
1. What does each keyword actually do now?
2. How do the keywords relate to the data structures?
3. What files are now auto generated, and how is everything linked 
together?

4. What keywords/data structures are actually needed, and by which 
devices?

5. How/where are the data structures used?
6. What is the rationale behind the reorganization of the cpu tree, and 
how is it supposed to work?

7. What is the purpose of the drivers tree, how do drivers differ from 
devices, and why is the console not included?

The configuration process now seems so complicated that  I can't see 
how we could expect someone to port to a new board without some basic 
description of how everything is supposed to work. I have a major 
vendor interested in doing this, but at the moment I can't offer them 
any help.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


recent changes

2004-11-15 Thread Greg Watson
We now seem to have a chip keyword, in addition to config, device, 
driver and object keywords. We have a device_operations structure, a 
cpu_device_id structure and a cpu_driver structure as well as a 
pci_driver structure. The cpu tree has been reorganized to include 
vendor directories as well as architecture directories. We now seem to 
have a drivers directory tree.

Can someone please provide the following information:
1. What does each keyword actually do now?
2. How do the keywords relate to the data structures?
3. What files are now auto generated, and how is everything linked 
together?

4. What keywords/data structures are actually needed, and by which 
devices?

5. How/where are the data structures used?
6. What is the rationale behind the reorganization of the cpu tree, and 
how is it supposed to work?

7. What is the purpose of the drivers tree, how do drivers differ from 
devices, and why is the console not included?

The configuration process now seems so complicated that  I can't see 
how we could expect someone to port to a new board without some basic 
description of how everything is supposed to work. I have a major 
vendor interested in doing this, but at the moment I can't offer them 
any help.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: ppc targets

2004-11-11 Thread Greg Watson
Let me have a look. I'm back from travel tomorrow
Greg
On Nov 11, 2004, at 8:42 AM, Stefan Reinauer wrote:
The ppc targets fail because of src/cpu/ppc/ppc4xx/mem.c
struct mem_range is never ever defined. Is it struct lb_memory?!
I have a bunch of other patches lying around that I will commit if
nobody complains
Stefan
ppc.diff
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: 2 questions

2004-10-06 Thread Greg Watson
On Oct 5, 2004, at 2:12 PM, Ronald G. Minnich wrote:
i855GM/GMCH. I set up the registers, set up the MODE for a NOP, and on 
the
first read, the whole thing hangs. Suggestions for what to do next, 
anyone
:-0)

Anybody seen good PC/104 or biscuit format Power PC systems? I'm 
getting a
little tired of dealing with the intel side of the house, because the 
docs
are so sparse nowadays. Pointers welcome. PPC 405 is no good: no 
floating
point.
http://www.cowboyindustries.com is supposed to have done a PC104+ board 
with the G4 (MPC7400) and G3(MPC750) processors, but I can't find 
anything useful on their web site. It might be worth an email. See here 
also: http://linuxdevices.com/news/NS9893837137.html

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: [PROPOSAL] extended payload handling

2004-06-08 Thread Greg Watson
Stefan,
I think this is a reasonable idea, particularly your suggestion of 
making linuxbios more modular. One of my main beefs with the payload 
strategy is that each payload has to provide it's own set of, 
potentially buggy, driver code. If we have 5 payloads then we have 5 
sets of drivers that all do the same thing slightly differently. If the 
drivers were modular enough so that a payload could call them directly, 
then this would go a long way to addressing these concerns.

Regards,
Greg
On Jun 8, 2004, at 4:49 AM, Stefan Reinauer wrote:
There has been a similar proposal on this list a while ago, but nothing
happened so far, so I want to put this pack to discussion.
Objectives
--
1.)
LinuxBIOS is kind of hard to set up for project newbies, since it
does not only require manually tweaking the configuration files for
basically every situation, but also necessarily needs an external
payload to do anything useful.
LinuxBIOS currently sets a high barrier due to the modular concepts it
uses.
 - LinuxBIOS itself is sometimes very sensitive to the build
   environment. See requirement for setting LANG for example.
 - For a project outsider it is hard to determine the best payload
   solution for a specific purpose. There is basically no information
   except the mailing list archives.
 - Config files have to be tweaked to explicitly suit the user's
   directory structure. There is no proposal, nothing that works out of
   the box. One just _has to_ edit the config files.
 - LinuxBIOS requires the user to specify a size for the payload 
instead
   of determining the required size and doing the needed calculations
   itself. This is very hand-crufted and can be pretty mind wasting.

2.)
LinuxBIOS can currently execute one payload. For greater flexibility 
and
isolated development cycles of the firmware related code parts/projects
LinuxBIOS should allow payload chains, ie. executing multiple payloads
one after the other.

LinuxBIOS wants to keep up it's modularity, letting each module do it's
job. This possibility of not doing more than one task should be passed
on to the payloads.
Solution

Feature plugins like testbios should not be merged into LinuxBIOS'
core code. Instead they should be implemented as a payload. Since we
want to load an operating system later on, we also need to be able to
load more than one payload. Implementing ELFLOAD in each such plugin is
inadequate. Instead LinuxBIOS should execute multiple payloads the same
way it executes multiple drivers now.
 * LinuxBIOS therefore needs a way to automatically determine payload
   sizes when building the image and later when executing payloads.
   Hardcoding the size values in the config files is inadequate and 
will
   lead to unnecessary overhead

 * LinuxBIOS at runtime needs to go through the list of available
   payloads, either by having a linked list of payload start points
   or by scanning the flash rom.
 * LinuxBIOS should, to be consequent, remove all streaming code except
   CONFIG_ROM_STREAM
 * Payloads should have the possibility to add their own enhancements 
to
   the LinuxBIOS table.

 * A least one payload should be default payload with the possibility
   to build this automatically and link it into the image.
   This is why I checked the util/extensions directory into v2 during
   the last discussion. It should hold possible choices to payloads 
that
   can automatically be built and included. Potentially one could add
   more payloads by symlinking their source tree to this directory to 
make
   it available to LinuxBIOS without major reconfiguration.
   People feel a lot safer with creating a symlink than with changing
   config files they do not fully understand.

   Since these can later be executed in row by elfboot, the minimum
   overhead design of LinuxBIOS itself will not be hurt.
   At this point I want to put an idea to discussion: If we are going
   more and more modular and some of us think the current tree is too
   bloated: Why do we not modularize code like pci resource allocation
   into a payload as well. My favorite bootloader may already do this
   and I can't stand this bloat everywhere, you know ;) Even though 
this
   may sound funny, I am serious about this issue. I do not see why
   allocating PCI resources should really be part of the lowlevel code,
   except for the fact that the NEXT payload in row, potentially Linux
   itself is too stupid to do that. Bummer.

 * LinuxBIOS configuration should have an easier mechanism for choosing
   payloads from the default directory, allowing them to be built
   automatically. Right now I am doing:
 cd filo-0.4.2
 linux32 make CC=gcc -m32 LD=ld -melf_i386
 cd ..
 freebios2/targets/buildtarget amd/solo $PWD/freebios2
 cd build-solo
 make
 cd ..
 cp build-solo/solo.rom .
   My target Config.lb comes with these constructs:
 target  ../../../../build-solo
 payload ../../filo-0.4.2/filo.elf
   So I build 

Re: [PROPOSAL] extended payload handling

2004-06-08 Thread Greg Watson
On Jun 8, 2004, at 7:59 AM, Stefan Reinauer wrote:
* Greg Watson [EMAIL PROTECTED] [040608 15:22]:
I think this is a reasonable idea, particularly your suggestion of
making linuxbios more modular. One of my main beefs with the payload
strategy is that each payload has to provide it's own set of,
potentially buggy, driver code. If we have 5 payloads then we have 5
sets of drivers that all do the same thing slightly differently. If 
the
drivers were modular enough so that a payload could call them 
directly,
then this would go a long way to addressing these concerns.
As far as I can tell the only drivers involved would be output drivers,
ie. video output and serial output. There the extensible LinuxBIOS 
table
could come into play. The video driver could store a pointer to the
framebuffer, the resolution and maybe even a font, to save duplicates.
Serial is only a kilobyte or so of a driver i think.

Have I forgotten something?
PCI device code and resource information should be available for 
payloads to use. A payload should not have to re-probe for devices on 
the PCI bus.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


briQ status

2004-06-04 Thread Greg Watson
For those interested in PPC boards, I just managed to get the briQ 
talking over serial console. (More on the board at 
http://www.totalimpact.com/products/the_briq/the_briq.html). Output 
below.

Hopefully we'll demo this board running Clustermatic at the USENIX BOF.
Greg
Board initialized...
LinuxBIOS-1.1.6 Fri Jun 4 16:13:35 MDT 2004 rebooting...
Finding PCI configuration type.
Enumerating static devices...
Enumerating buses...
PCI: pci_scan_bus for bus 0
PCI: 00:00.0 [1014/0105] enabled
PCI: 00:06.0 [10ad/0565] ops
PCI: 00:06.0 [10ad/0565] enabled
PCI: 00:06.1 [10ad/0105] ops
PCI: 00:06.1 [10ad/0105] enabled
PCI: 00:07.0 [1022/2000] enabled
PCI: pci_scan_bus returning with max=00
done
Allocating resources...
ASSIGN RESOURCES, bus 0
PCI: 00:06.1 10 - [0x1040 - 0x1047] io
PCI: 00:06.1 14 - [0x1050 - 0x1053] io
PCI: 00:06.1 18 - [0x1048 - 0x104f] io
PCI: 00:06.1 1c - [0x1054 - 0x1057] io
PCI: 00:06.1 20 - [0x1020 - 0x102f] io
PCI: 00:06.1 24 - [0x1030 - 0x103f] io
PCI: 00:07.0 10 - [0x1000 - 0x101f] io
PCI: 00:07.0 14 - [0xfebfffe0 - 0xfebf] mem
ASSIGNED RESOURCES, bus 0
done.
Enabling resourcess...
PCI: 00:00.0 cmd - 147
PCI: 00:06.0 cmd - 147
PCI: 00:06.1 cmd - 145
PCI: 00:07.0 cmd - 143
done.
Initializing devices...
PCI: 00:06.0 init
Configure W83C553F ISA Bridge (Function 0)
W83C553F configuration complete
PCI: 00:06.1 init
Configure W83C553F IDE (Function 1)
ide bus offset = 0x1f1
IDE configuration complete
Devices initialized
totalram: 1024M
Initializing CPU #0
PowerPC 7400 CPU, version 2.9
CPU #0 Initialized
Wrote linuxbios table at: 0010 - 0174  checksum 9bf0
Welcome to elfboot, the open sourced starter.
January 2002, Eric Biederman.
Version 1.3
Trying polled ide
Waiting for ide disks to spin up
This is a hard coded delay and longer than necessary.
..
found PCI IDE controller 10ad:0105 prog_if=0x8f
primary channel: native PCI mode
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Enable v.s. Enabled

2004-04-29 Thread Greg Watson
Was it annoying you or something :-)

Greg

On 29/04/2004, at 2:28 PM, Li-Ta Lo wrote:

Hi,

I changed the device:enable and chip_device_path::enable to
device:enabled and chip_device_path::enabled because they
are acutally verbs describe the status of the devices.
I also change all the affected code I can find, there should
be no problems except you have to re-run the config tool.
Ollie



___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: LinuxBios official requirements.

2004-04-13 Thread Greg Watson
Mathieu,

I think you misunderstood. I wasn't implying RH9 as the default 
distribution for LinuxBIOS. I was simply suggesting that the 
development tools (gcc, libc, python, etc.) that are supplied with RH9 
are a good approximation of the versions required to guarantee a 
successful build.

Greg

On 13/04/2004, at 2:28 AM, Mathieu Deschamps wrote:

 Hum ... under certains embedded conditions redhat is somewhat heavy
to handle...  ... anyway Linuxbios aims to work on various hardware
device (provided that we make it work :) so it is on various linux
distribution, isn't it so ? if not, IMHO, it should be :)
 And more over, seriously, it will gain even more credibility if it's
proven to work on other distrib.
 It is again the same crosspoint : portability on every layer, down 
from
hardware conformance and standards, up to software versions and use
conventions.

 Enough bla-bla'ing,  as soon as I got it compiled and proven work on 
my
SuSE 6.2 modified (from tail to head), I post the enumeration
soft-components, I'am sure it will be appreciated.

mathieu

Le lun 12/04/2004 à 14:44, Greg Watson a écrit :
Yes, most of us are too busy getting LinuxBIOS working to spare the
time to write much documentation. I can say that I've built most of 
the
targets successfully using a stock RH9 (YD3.0.1 for PPC) machine.
That's probably as good a base-line as any.

Greg

On 09/04/2004, at 7:53 AM, Mathieu Deschamps wrote:

I've read several documentation on LinuxBios and related
projects, though I didn't find out a LinuxBios requirements
true paper.  I still have the 2.4.xx kernel compiling oriented slab
that is to say : GNU Make  3.77, ECGS 1.1.2 (GCC 2.91.66),
Binutils 2.10, util-linux 2.10.
Also I had a quite old python version (1.1 or so), i got it updated
to 2.2.3 when I've seen the python script insulted me while running
buildtarget.
What are the official requirements ?	

What I try to say is that a REQUIEREMENTS file in the source tree
LACKS,
Maybe it lacks also in the site page (IMHO, the early page info 
should
mention this)...

cordialy,
mathieu


___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios



___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Newbie with epia M-II

2004-04-12 Thread Greg Watson
Not sure what the biggest PLCC is, but it's probably not much over 1MB. 
We use a 64MB IDE FLASH on some of our EPIA's which is easily big 
enough for a kernel and RAM disk. The nice thing about the IDE FLASH is 
that it can easily be replaced by a disk if you want.

It seems the main difference between the EPIA and the EPIA-M (and 
possibly the EPIA-1) is the type of RAM used (SDRAM/DDR). It's 
going to take some work to add DDR support to current EPIA image.

Greg

On 12/04/2004, at 5:57 AM, Ignacio Verona wrote:

hi! This is my first post. I'm trying to develop my own Car PC and 
using LinuxBios I hope to get faster boot times. I'm using a Via EPIA 
M-II 1. What are the first steps I should take? The epia bios is 
socketed on 32-lead PLCC format. What is the biggest rom size I could 
get? It is possible to use DOC on this motherboard (may be, I could 
fit a usable linux system on... less than 64mb).

I've reading the list archive but I'm still a little lost. All help 
will be aprecciated. Thanks!!

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: LinuxBios official requirements.

2004-04-12 Thread Greg Watson
Yes, most of us are too busy getting LinuxBIOS working to spare the 
time to write much documentation. I can say that I've built most of the 
targets successfully using a stock RH9 (YD3.0.1 for PPC) machine. 
That's probably as good a base-line as any.

Greg

On 09/04/2004, at 7:53 AM, Mathieu Deschamps wrote:

I've read several documentation on LinuxBios and related
projects, though I didn't find out a LinuxBios requirements
true paper.  I still have the 2.4.xx kernel compiling oriented slab
that is to say : GNU Make  3.77, ECGS 1.1.2 (GCC 2.91.66),
Binutils 2.10, util-linux 2.10.
Also I had a quite old python version (1.1 or so), i got it updated
to 2.2.3 when I've seen the python script insulted me while running
buildtarget.
What are the official requirements ?	

What I try to say is that a REQUIEREMENTS file in the source tree 
LACKS,
Maybe it lacks also in the site page (IMHO, the early page info should
mention this)...

cordialy,
mathieu


___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: LinuxBios and Openbios's dev/bios capacity

2004-04-12 Thread Greg Watson
This seems like an openbios issue to me.

Greg

On 08/04/2004, at 7:23 AM, Mathieu Deschamps wrote:

 I've found in OpenBios dev/bios a good reason to hope i could spare 
the
cost of a physical flashing device , and a ease using. That is to say
getting LinuxBios building the  .bin and flash the onboard BIOS via the
dev/bios mechanism.

 I have a via/epia and a SST39 series 20A (256Ko) bios chip on
I'd thought I could read/write this bios with cat my.bin /dev/bios
but by insmoding bios.o. But i got a kmess coming from lines 123-126
printk code of bios.c
  BIOS : No flash devices found
This resulting in a console message Device busy (that is, though, a
bit paradoxal notfound != busy isn't it ? :) )
 I can't catch what have missed me... Is dev/bios couldn't be used in
my aim ?
 Gratefull if experienced people could help me.
 Cordialy.
Mathieu
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: FILO 0.4 [PMX:#]

2004-04-12 Thread Greg Watson
Stefan,

I think this is a great idea. I'll talk it over with Ron and Ollie this 
week and look at how it might be implemented.

Greg

On 05/04/2004, at 6:46 AM, Stefan Reinauer wrote:

* Eric W. Biederman [EMAIL PROTECTED] [040405 05:02]:
If we want to take a snapshot of the source tree of FILO or any other
bootloader into the LinuxBIOS tree under util.  Build that part of the
build and build a complete romimage that works.  I am fine
with that.  It is even reasonable to make it so you can drop in
external trees like etherboot and have everything build together
nicely.
Actual linking things together instead of including them together
is unacceptable.
What about the following:

Currently LinuxBIOS divides into 2 fundamental parts:

1) hardware initialization
2) getting and starting the payload
This second part consists of two parts, again:

i) elfloader
ii) payload
Note, this is only one possible design. Maybe, this design is bloated
for some application cases.
Eric, you want to make a hard cut between what is LinuxBIOS and what is
not. This is generally a good idea, as it keeps the different
initialization steps distinct from reach other. What, if we add another
cut by dividing hardware initialization frin the payload-loader?
Instead of packing stuff like filo to util, we could do:

* create a directory loader which can hold all loaders
* move the elf loader with a Config.lb to a subdirectory in there
* create other directories for other loaders like filo.
If done right, filo can still be compiled as a payload, or built in if
the win in size is noticable. A target config file could probably 
choose
which method to use, without overhead. Also, syncing with other trees,
like Takeshi's filo tree could be fairly easy, too.

I don't think we really have a conflict in direction here at all.
LinuxBIOS itself should be as small as possible, and the different 
parts
should be as independent as possible. But we also want to be a lot more
flexible than the existing solutions..

In addition we have had way to many questions of what is the right
policy for a bootloader to implement, on this list.  I refuse
to couple that to the LinuxBIOS core.  And I don't want some stupid
policy in there like FILO's that would require me to upgrade
my firmware just to upgrade my OS.
Please explain, how is filo worse here than putting linux in flash?

Stefan

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: XScale Port

2004-04-12 Thread Greg Watson
On 12/04/2004, at 8:44 AM, ron minnich wrote:

On Mon, 12 Apr 2004, Bari Ari wrote:

they have nvidia working with the x86 emulator, so I'll be trying 
that
next.
x86 emulator will probably be to ugly a path to use on an ARM 
platform.
I'm not sure I agree.

I think it is doable.

ron


Yes, I think it will work with PPC. If it does then there's no reason 
it won't for the ARM. We should know soon :-)

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Clustermatic 4 wins ClusterWorld Award

2004-04-08 Thread Greg Watson
Hi all,

I'm pleased to announce that yesterday Clustermatic 4 won the 
ClusterWorld Excellence in Cluster Technology Award for Open Source 
Software. I'd like to thank everyone who worked so hard to achieve this 
outstanding result. Thanks also to Daniel Gruner and Jim Phillips for 
agreeing to act as reference sites for Clustermatic.

Best regards,

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: VIA EPIA Build Error MAX_REBOOT_CT

2004-04-08 Thread Greg Watson
Check the Makefile.settings in the fallback directory and see if 
MAX_REBOOT_CNT is defined. If it isn't then there's some problem with 
the configuration. If it is, then it's not getting passed to the gcc 
command line.

Greg

On 08/04/2004, at 10:23 AM, Mathieu Deschamps wrote:

I'am building a new rom but now,I got stuck because of
#error MAX_REBOOT_CNT not defined
in make process of build target even though i defined this in Config.lb
Here is a process trace :
###
if (cd fallback; \
make linuxbios.rom)\
then true; else exit 1; fi;
make[1]: Entering directory
`/home/root/projet-07042004/freebios/freebios2/build/epia/fallbac
k'
cp /home/root/projet/freebios/freebios2/src/arch/i386/config/crt0.base
crt0.S
gcc -no-gcc -x assembler-with-cpp -DASSEMBLY -E
-I/home/root/projet/freebios/freebios2/src -D
__ROMCC__=0 -D__ROMCC_MINOR__=38
-I/home/root/projet/freebios/freebios2/src/include -I/home/r
oot/projet/freebios/freebios2/src/arch/i386/include
-I/usr/lib/gcc-lib/i486-linux/egcs-2.91.6
6/include
/home/root/projet/freebios/freebios2/src/mainboard/via/epia/failover.c 

./failover.E
gcc: unrecognized option `-no-gcc'
In file included from
/home/root/projet/freebios/freebios2/src/mainboard/via/epia/failover.c:
7:
/home/root/projet/freebios/freebios2/src/pc80/mc146818rtc_early.c:5:
#error MAX_REBOOT_CNT n
ot defined
make[1]: *** [failover.E] Error 1
make[1]: Leaving directory
`/home/root/projet-07042004/freebios/freebios2/build/epia/fallback
'
make: *** [fallback-rom] Error 1
#

What is that pc80 directory in which it errors ?
The parameter MAX_BOOT_CT is the counter that holds the survival
of kernel messages after # boots, isn't it ?
I've also joined the Config file on which i haven't
made much changes except what it asked for.
Please mail me a clue, just ask if you need moer info on the slab.

Thanks in advance.


# Sample config file for EPIA
# This will make a target directory of ./epia
#
# Change for experimentation MD
#
loadoptions
target epia

uses ARCH
uses CONFIG_COMPRESS
uses CONFIG_IOAPIC
uses CONFIG_ROM_STREAM
uses CONFIG_ROM_STREAM_START
uses CONFIG_UDELAY_TSC
uses CPU_FIXUP
uses FALLBACK_SIZE
uses HAVE_FALLBACK_BOOT
uses HAVE_MP_TABLE
uses HAVE_PIRQ_TABLE
uses HAVE_HARD_RESET
uses i586
uses i686
uses INTEL_PPRO_MTRR
uses HEAP_SIZE
uses IRQ_SLOT_COUNT
uses MAINBOARD_PART_NUMBER
uses MAINBOARD_VENDOR
uses CONFIG_SMP
uses CONFIG_MAX_CPUS
uses MEMORY_HOLE
uses PAYLOAD_SIZE
uses _RAMBASE
uses _ROMBASE
uses ROM_IMAGE_SIZE
uses ROM_SECTION_OFFSET
uses ROM_SECTION_SIZE
uses ROM_SIZE
uses STACK_SIZE
uses USE_FALLBACK_IMAGE
uses USE_OPTION_TABLE
uses HAVE_OPTION_TABLE
uses MAXIMUM_CONSOLE_LOGLEVEL
uses DEFAULT_CONSOLE_LOGLEVEL
# Sample config file for EPIA
# This will make a target directory of ./epia
#
# Change for experimentation MD
#
loadoptions
target epia

uses ARCH
uses CONFIG_COMPRESS
uses CONFIG_IOAPIC
uses CONFIG_ROM_STREAM
uses CONFIG_ROM_STREAM_START
uses CONFIG_UDELAY_TSC
uses CPU_FIXUP
uses FALLBACK_SIZE
uses HAVE_FALLBACK_BOOT
uses HAVE_MP_TABLE
uses HAVE_PIRQ_TABLE
uses HAVE_HARD_RESET
uses i586
uses i686
uses INTEL_PPRO_MTRR
uses HEAP_SIZE
uses IRQ_SLOT_COUNT
uses MAINBOARD_PART_NUMBER
uses MAINBOARD_VENDOR
uses CONFIG_SMP
uses CONFIG_MAX_CPUS
uses MEMORY_HOLE
uses PAYLOAD_SIZE
uses _RAMBASE
uses _ROMBASE
uses ROM_IMAGE_SIZE
uses ROM_SECTION_OFFSET
uses ROM_SECTION_SIZE
uses ROM_SIZE
uses STACK_SIZE
uses USE_FALLBACK_IMAGE
uses USE_OPTION_TABLE
uses HAVE_OPTION_TABLE
uses MAXIMUM_CONSOLE_LOGLEVEL
uses DEFAULT_CONSOLE_LOGLEVE
uses CONFIG_CONSOLE_SERIAL8250
uses MAINBOARD
uses CONFIG_CHIP_CONFIGURE
uses XIP_ROM_SIZE
uses XIP_ROM_BASE
uses LINUXBIOS_EXTRA_VERSION
uses TTYS0_BAUD
uses MAX_REBOOT_CNT
option TTYS0_BAUD=19200

option CONFIG_CHIP_CONFIGURE=1

option  MAXIMUM_CONSOLE_LOGLEVEL=7
option  DEFAULT_CONSOLE_LOGLEVEL=7
option  CONFIG_CONSOLE_SERIAL8250=1
option CPU_FIXUP=1
option CONFIG_UDELAY_TSC=0
option i686=1
option i586=1
option INTEL_PPRO_MTRR=1
option ROM_SIZE=256*1024
option HAVE_OPTION_TABLE=1
option CONFIG_ROM_STREAM=1
option HAVE_FALLBACK_BOOT=1
#
# More Options
#
option MAX_REBOOT_CNT=10


###
### Compute the location and size of where this firmware image
### (linuxBIOS plus bootloader) will live in the boot rom chip.
###
option FALLBACK_SIZE=131072
## LinuxBIOS C code runs at this location in RAM
option _RAMBASE=0x4000
#
###
### Compute the start location and size size of
### The linuxBIOS bootloader.
###
#
# Arima hdama
romimage normal
option USE_FALLBACK_IMAGE=0
option ROM_IMAGE_SIZE=0x1
option LINUXBIOS_EXTRA_VERSION=.0Normal
mainboard via/epia
#   payload
/usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf
#   payload ../../../../tg3--ide_disk.zelf
payload ../../../../../lnxieepro100.ebi
end
romimage fallback
  

Re: FILO 0.4 [PMX:#]

2004-04-04 Thread Greg Watson
Correct. I haven't included linux_load, though it would probably be 
easy to do. FILO simply calls elfboot to load the image from a 
filesystem.

Merging FILO with etherboot is a fine idea, but it doesn't solve the 
loader problem for PPC. At this point I don't see any requirement to 
port etherboot to PPC, but if anyone would like to take it on then feel 
free. :-)

I think the case for including a simple FILO-like loader in linuxbios 
is a strong one. Apart from instant PPC loader support and reducing the 
difficulty of deploying linuxbios, it's possible to make use of much of 
the existing linuxbios code which significantly reduces duplication and 
complexity in the payload.

Greg

On 04/04/2004, at 2:57 PM, Yinghai Lu wrote:

Eric,

Greg just move the fs support from filo to linuxbios, and create 
fs_stream.

It still calls the elfboot to load the elfimage in HD. And it doesn't
support linux_load.
So it is some kind of boot loader you said.

It is really enhancement to ide_stream.c

Regards

YH

--
: Eric W. Biederman [mailto:[EMAIL PROTECTED]  Eric W. Biederman
: 200443 20:33
: Greg Watson
: Yinghai Lu; 'SONE Takeshi'; [EMAIL PROTECTED]
: Re: g-e$: FILO 0.4 [PMX:#]
Greg Watson [EMAIL PROTECTED] writes:

Yeah sorry, I kind of did that by stealth. Ron and I get lots of 
requests
from
people wanting to use LB but who don't know how to deal with the 
payload
issue. We decided that it would be really nice to have a simple 
bootloader
that
understands some basic filesystems built into LB. That way people can 
get
going
without having to deal with etherboot or FILO directly. A nice side 
effect
is
that it simplifies the FILO code significantly - in fact the only code
that is
really required is the filesystem support. Also, another major plus is
that the
code supports PPC as well as x86. Up to now I've had no bootloaders
(etherboot
or FILO) that work on PPC.
Then we refactor and make building the bootloader part of the tree.
These things are policy engines.  We need to separate mechanism and 
policy.

As far as I can tell this level of support crosses the line.

etherboot is portable and would not be hard to get running on ppc.

Eric

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: FILO 0.4 [PMX:#]

2004-04-04 Thread Greg Watson
On 04/04/2004, at 9:02 PM, Eric W. Biederman wrote:

Greg Watson [EMAIL PROTECTED] writes:

Correct. I haven't included linux_load, though it would probably be
easy to do. FILO simply calls elfboot to load the image from a
filesystem.
Feature bloat.
No, it's functionality that is needed for PPC but is not available 
anywhere else.

If we want to take a snapshot of the source tree of FILO or any other
bootloader into the LinuxBIOS tree under util.  Build that part of the
build and build a complete romimage that works.  I am fine
with that.  It is even reasonable to make it so you can drop in
external trees like etherboot and have everything build together
nicely.
Actual linking things together instead of including them together
is unacceptable.
Merging FILO with etherboot is a fine idea, but it doesn't solve the
loader problem for PPC. At this point I don't see any requirement to
port etherboot to PPC, but if anyone would like to take it on then
feel free. :-)
It is a half way decent stand alone portable bootloader.  There
are a lot of other ones out there as well.  Etherboot is something
simple and small that exists as an alternative.
Etherboot should be a fairly trivial port which is why I suggest it.

I think the case for including a simple FILO-like loader in linuxbios
is a strong one. Apart from instant PPC loader support and reducing
the difficulty of deploying linuxbios, it's possible to make use of
much of the existing linuxbios code which significantly reduces
duplication and complexity in the payload.
I have not seen it yet.  The reason FILO simplifies is because
it a simple first pass.  But this complicates LinuxBIOS, and includes
policy.  Both of which are bad.
I don't get this policy stuff. This code is doing no more that adding 
another stream device, of which there are already two. Someone building 
LinuxBIOS is perfectly liberty to choose to load an ELF image from ROM, 
directly from an IDE device, or from a filesystem mounted on an IDE 
device.

Any builtin policy more complicated than slurp in one hard coded
executable and run it I refuse to touch, and elfload gives us that.
This is a line I refuse to cross and will delete code from
CVS if necessary to enforce.
Bootloaders can and should be board independent.  That makes
then easier to test and develop.  And it very much simplifies
the test of the whole thing.
I agree. It would be nice if they were architecture independent as well.

In addition we have had way to many questions of what is the right
policy for a bootloader to implement, on this list.  I refuse
to couple that to the LinuxBIOS core.  And I don't want some stupid
policy in there like FILO's that would require me to upgrade
my firmware just to upgrade my OS.
By policy, do you mean a file name in a valid filesystem? As opposed to 
a valid ELF header?  The distinction seems pretty fine to me. Being 
able to mount a compact flash device on another machine and drop 
multiple kernel versions onto it certainly helped me to get the EPIA 
going though.

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: No output on EPIA-M serial port

2004-03-24 Thread Greg Watson
Does the EPIA-M have a 256KB flash or a 512KB flash? I just ran into 
this problem with the EPIA. If you flash the wrong size image then 
nothing works at all.

Greg

On 24/03/2004, at 3:02 PM, Shawn Perkin wrote:

Hello all,



Im currently in the process of trying to get Linuxbios to work on my 
Via EPIA-M with no success. I have successfully complied Etherboot 
5.2.0 as my payload, and performed a successful build of Linuxbios. I 
burned the image without any errors and rebooted the system. I then 
had absolutely no output on either serial port, or local display. I 
currently have 256 MB of ram in the unit, and have tried a build with 
and without the extracted vgabios.bin. I have included my config file 
for your review. Any help would be greatly appreciated.



Shawn



#
 # LinuxBIOS config file for: VIA epia-m mini-itx
 #
 target /usr/local/build/epia-m

 # via epia
 mainboard via/epia-m
 # Enable Serial Console for debugging
 option SERIAL_CONSOLE=1
 #option SERIAL_POST=1
 option TTYS0_BAUD=115200
 #option TTYS0_BAUD=57600
 option HAVE_FRAMEBUFFER=1
 option CONFIG_VGABIOS=1
 option CONFIG_REALMODE_IDT=1
 dir src/bioscall
 option CONFIG_PCIBIOS=1
 option VGABIOS_START=0xfffe
 #addaction romimage dd if=../vgabios.bin of=romimage bs=65536 seek=2 
conv=sync conv=notrunc
 option CONFIG_EPIAMVERSIONSTRING=5.0.0E- __DATE__   __TIME__
 #target /ram/freebios/obj
 #payload /code/bootfiles/etherboot/via6105m.ebi

 option DEFAULT_CONSOLE_LOGLEVEL=9
 option DEBUG=1
 # Use 256KB Standard Flash as Normal BIOS
 option RAMTEST=1
 option USE_GENERIC_ROM=1
 option STD_FLASH=1
 #option ZKERNEL_START=0xfffc
 option ROM_SIZE=262144
 # payload size = 192KB
 option PAYLOAD_SIZE=196608
 # use ELF Loader to load Etherboot
 option USE_ELF_BOOT=1
 # Use Etherboot as our payload
 payload /home/shawnp/bios/etherboot-5.2.0/src/bin/via-rhine.elf
 # payload /opt/cwlinux/memtest86/memtest

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: EPIA always-on system

2004-03-24 Thread Greg Watson
On 24/03/2004, at 8:51 PM, ron minnich wrote:

On Wed, 24 Mar 2004, Joshua Wise wrote:

I am considering building a backpack computer that does MP3 playing,
etcetera... I was planning on using the EPIA because LinuxBIOS 
supports
it.  Is the EPIA in a state right now where it would be usable for 
such
activity?
I believe so. Greg Watson just built linuxbios images today and they 
are
working fine. If you need help just let us know. We can also just send 
you
some 'epia+filo' images which load linux from an attached ext2 
formatted
CF.
Of course, this doesn't mean that I've in any way abandoned PPC for 
x86... :-)

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: EPIA always-on system

2004-03-24 Thread Greg Watson
San Jose, 6-8 April.

Greg

On 24/03/2004, at 8:56 PM, ron minnich wrote:

On Wed, 24 Mar 2004, Greg Watson wrote:

I'll have 15 or so EPIA's running LinuxBIOS at Clusterworld if you 
want
to take a look :-)
oh yeah, reference that, we're in a booth at clusterworld in san
francisco. Stop by if you can!
it's the DOE booth, sandia+livermore+lanl. Should be good fun.

ron

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: All K8 builds now broken

2004-03-23 Thread Greg Watson
On 23/03/2004, at 12:50 AM, Eric W. Biederman wrote:

Ok I suspect that code came early on and never got cleaned up.

What this sounded like was a bug in existing code that caused things 
to work
incorrectly.  So at least on the Opteron things worked correctly.

We need to go in and add better cpu selection support in the code.
What I am thinking it to extract the vendor and model number for the
cpu and with that select the code to run similarly to how we handle
other devices.
Given the number of small details that need to be verified when a new
cpu comes out.  Microcode on the Xeons, memory controller enhancements
on the Opterons, etc  I would rather have the build break on a new
cpu than have everything just almost work silently.

This is probably a good idea, but note that the x86 and ppc 
architectures do things very differently. To start with ppc doesn't 
have the hierarchical arrangement that is used in x86. This leads to a 
much simpler setup, though it does duplicate some code, but in any 
event I don't want this to change. Also, the pre-C configuration is 
completely different (romcc is not used). However this is done, it will 
need to take these architectural differences into account.

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: AMD64+FILO - Detected floating bus

2004-03-22 Thread Greg Watson
Stefan,

Is the floating bus message coming from Filo or LinuxBIOS?

Greg

On 22/03/2004, at 8:26 AM, Stefan Reinauer wrote:

Hi,

with LinuxBIOS 1.1.6 and Filo 0.4.1 I am getting a floating IDE bus
on the Solo machines now. This has worked before with older versions,
but I am not sure what might cause this breakage..
Any ideas?

Best regards,
  Stefan Reinauer
--
  Stefan Reinauer, SUSE LINUX AG
Head of Architecture Development
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: AMD64+FILO - Detected floating bus

2004-03-22 Thread Greg Watson
Good. That means it wasn't my fault :-). I updated the IDE support in 
LinuxBIOS recently, so I thought it may have been that. Looks like 
something must have changed in Filo.

Greg

On 22/03/2004, at 10:04 AM, Stefan Reinauer wrote:

* Greg Watson [EMAIL PROTECTED] [040322 18:01]:
Stefan,

Is the floating bus message coming from Filo or LinuxBIOS?
From Filo. It seems that there are no devices detected on the bus.
Strange enough, since the Maxtor harddrive was installed using
LinuxBIOS and Filo a while ago..
  Stefan

--
  Stefan Reinauer, SUSE LINUX AG
Head of Architecture Development
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: two changes to make building EPIA work

2004-03-22 Thread Greg Watson
Close, but no banana.

The new rules for options are as follows:

1. Options declared as 'default none' and 'export always' MUST have a 
value set or a default value assigned. Any options of this type that 
are still undefined when processing of config files is finished will 
result in a fatal error.

2. All options declared as 'export always' and those declared as 
'export used' that have a value set, or the default value altered, will 
result in an entry in Makefile.settings and ldoptions (for numeric 
values only.)

3. The appropriate way to test for a variable is '#if VAR==0' or '#if 
VAR==1'. Tests using '#ifdef VAR' or '#if defined(VAR)' may produced 
incorrect results.

So far I've checked the epia and arima configurations and they build 
ok. I'll check the others tomorrow before I commit the changes.

Regards,

Greg



On 22/03/2004, at 3:00 PM, ron minnich wrote:

First, src/include/cpu/cpufixup.h is changed to follow the common
linuxbios usage.
#if CPU_FIXUP == 1
#  if (k8==1)
#warning Temporary notice that we are using k8 cpufixup
#define cpufixup(mem) k8_cpufixup(mem)
#  elif (k7==1)
#warning Temporary notice that we are using k7 cpufixup
#define cpufixup(mem) k7_cpufixup(mem)
#  elif (i786==1)
#warning Temporary notice that we are using i786 cpufixup
#define cpufixup(mem) i786_cpufixup(mem)
#  elif (i686==1)
#warning Temporary notice that we are using i686 cpufixup
#define cpufixup(mem) p6_cpufixup(mem)
#  endif
#else
#warning YOU DID NOT DEFINE ONE OF: k8, k7, i786, i686
#  define cpufixup(mem) do {} while(0)
#endif
note that it is compare to 1, not just an #ifdef. We are leaving the
warning in for a while to make sure people see this. In the EPIA, the
symbol k8 even if defined to 1 would end up needing k8_cpufixup, which 
is
wrong.

Just a reminder, make your stuff testing against ==1, not ifdef.

Second, a subtle change in the config tool.

IF: a symbol is always exported and has no default value, AND the 
value is
not set by the time the config tool is generating makefile settings, 
then
you will get an error, not just a warning.

One error in the EPIA build process was because the symbol 'k8' was
defined but had no value.
I don't think this will break anything, but you never know. Watch your 
K8
builds carefully. We're hoping this fixes the latest EPIA problems.

ron

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Updated PPC support

2004-01-28 Thread Greg Watson
For those interested in PPC issues,  I have updated support for the 
Motorola Sandpoint (G4 processor) in the V2 tree. Over the next few 
days I will tidy up a few remaining things, but as of now I have the 
Sandpoint booting a 2.4.24-pre2 kernel.

Regards,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Updated PPC support

2004-01-28 Thread Greg Watson
At 10:25 AM -0700 1/28/04, Li-Ta Lo wrote:
On Wed, 2004-01-28 at 10:03, Greg Watson wrote:
 For those interested in PPC issues,  I have updated support for the
 Motorola Sandpoint (G4 processor) in the V2 tree. Over the next few
 days I will tidy up a few remaining things, but as of now I have the
 Sandpoint booting a 2.4.24-pre2 kernel.
 Regards,

What have you done ? You said you can't boot it
yesterday.
Ollie
A lot can happen in a day...

I've actually had LinuxBIOS loading a kernel for a while, but I was 
trying to get a kernel that would work on the Sandpoint.

The main problem was that the startup code was running out of stack 
space while trying to decompress the kernel (inflate returns 
FFFD!). Since the stack size is hardcoded in some assembly, it 
took a while to work out this was the problem.

The next thing was that LinuxBIOS was not initializing the superio 
properly, so even though the kernel re-does this initialization, it 
was happening too late and causing all kinds of screwy behavior. I'm 
fixing this now.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: IDEA: Linux kernel and pcbios compatibility...

2003-12-19 Thread Greg Watson
At 11:20 AM -0700 12/19/03, Eric W. Biederman wrote:
Stefan Reinauer [EMAIL PROTECTED] writes:

 * Eric W. Biederman [EMAIL PROTECTED] [031219 01:36]:
 
  Brainstorming earlier today I think I have found a way to use
  an linux kernel for the boot loader and to implement pcbios
  compatibility without too much cost.   The idea is to use
  a uclinux kernel.  And implement a ``user space'' aplication
  that is a user space shim that makes kernel calls.
 What functionality is it exactly that we need the uclinux
 kernel for? We won't do any scheduling, and we won't need source code
 drivers if we implement a pcbios emulation
 What I liked most about the LinuxBIOS2 approach is that
 code was only introduced in the tree when it was specifically needed.
 Since I had my hands at the Alpha bootloader Milo, everything that uses
 a Linux kernel for it's operations kind of scares me...
So this is for the bootloader, the payload and it will be optional.
This will not go into the linuxBIOS tree, this is an alternative to
etherboot.  

I would like to see this from the PPC perspective. Since neither filo 
nor etherboot work on PPC, this might be a good way of booting from, 
say, a disk. Which would be nice.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: config - default

2003-12-02 Thread Greg Watson
I'm looking at it.

Greg

At 2:27 PM -0700 12/2/03, Eric W. Biederman wrote:
ron minnich [EMAIL PROTECTED] writes:

 this fixup is at the top of next week's list now that sc '03 is over.

 sc '03 is a major event that pretty much eats up nov. for us, so sorry for
 the inconvenience.
Any head way on this.   Especially the formulas which look
like they will need a second pass to get right?
And of course we still have some dependency problems with
the makefiles.
I'm not quite there but this is quickly becoming and itch I want
to scratch, unless someone is working on this.
Eric
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


SC03

2003-11-14 Thread Greg Watson
If any LinuxBIOS'ers are planning to attend Supercomputing'03 in 
Phoenix next week, please drop by the LANL booth. Ron, Ollie and I 
will be there with various bits and pieces of hardware to look at, 
and it would be great to meet some of you in person. If there is 
enough interest, we could even have an informal BOF.

Cheers,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: config - default

2003-11-06 Thread Greg Watson
Stefan,

Which builds are broken? I thought I checked all configurations built 
after the change (apart from the VIA which Ron was working on.) and 
modified any that had problems.

My hope was that this change would make the use of options more 
logical and consistent. The intention is that parts set default 
values for any options that they require or are specific to the part. 
Then when all the parts are put together in a target configuration 
file, these default values can be overridden for the specific build. 
I was also toying with the idea of allowing some options to be 
read-only, which I think would address your concern.

Apologies for breaking things. I try to build all targets after any 
change like this to make sure things are still working.

Greg

At 4:16 PM +0100 11/6/03, Stefan Reinauer wrote:
Hi,

most of the builds are broken again since config in the mainboard
config file now has to be renamed to default. On the one hand I see
the reason for most of these changes, even though I am not sure if
we want to suggest that some stuff can be overridden in the target
config file, like:
-option CONFIG_IOAPIC=1
+default CONFIG_IOAPIC=1
Can those changing elementary stuff like this that breaks all builds try
to apply some regexps on the Config files so that other builds don't
break? Getting further is somewhat hard currently since the code almost
instantly breaks after the last fixes are checked in..
Stefan

--
 Stefan Reinauer, SUSE LINUX AG
Teamleader Architecture Development
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


device configuration

2003-11-03 Thread Greg Watson
Hi,

Can someone please provide some assistance on the new device 
configuration setup? For example, how do I configure the IDE 
controller on a Winbond chip? I used to do this through the enable 
routine in the chip_control structure but this is no longer used. 
I've tried using the enable_dev routine, but it never seems to get 
called. Do I need to do something with the 'pci' configuration 
statement? What is the purpose of these? I've tried defining 'pci 
0:9.0 on' and 'pci 0:9.1 on' but it doesn't make any difference.

Thanks,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Fwd: via datasheets

2003-10-20 Thread Greg Watson
Can anyone help this guy out?

Greg

Status:  U
To: [EMAIL PROTECTED]
Subject: via datasheets
From: Yugesh [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Date: Mon, 20 Oct 2003 13:07:38 -0700
X-Spam-Score: 0.0 (/)
X-Spam-Report: 0.0/5.0
	Spam Filtering performed by sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	Report problems to 
https://sf.net/tracker/?func=addgroup_id=1atid=21

Hi,



I don't know if you are able to help or not... I'm trying to get

a hold of via datasheets to write some drivers. Specifically I

need info on the VT8235 southbridge and vt82623

northbridge (CLE266 on an epia m1).



I noticed there was some via / epia code in your freebios

code.



Do you know where I can obtain information on the via

chipsets ?



I've tried requesting it from via with no response.



Thanks.!
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: V2 Epia report

2003-10-10 Thread Greg Watson
In the interests of moving forward here, I will see if I can get this 
to work with dynamic device tree.

Greg

At 7:25 PM -0600 9/10/03, Eric W. Biederman wrote:
  On the PPC, much of what must be done in assembly or romcc on 
Intel/AMD, can be
 done in C in hardwaremain. The architecture needs to be flexible enough to
 accommodate this.
I concur.   And the really weird stuff either needs to happen before
we enter hardwaremain or as the first function we call.  I have no problem
with doing that.  But it should be done that way because it is weird
motherboard dependent code.
  For example, I want to be able to configure the serial port on 
the superio chip
 so that console logging will work. This has to happen before 
console_init() is
 called. Other things that I want to be able to do that I don't 
want tied to PCI
 setup are:

 - flash setup
 - NVRAM setup
 - on-board network interface setup
 - SDRAM setup
 The order goes something like this:

 hardwaremain() {
 pre_console:
superio()
console_init()
 pre_pci:
nvram()
sdram()
flash()
 pci:
pci()
usb()
ide()
 pre_boot:
fenet()
elfboot()
 }
Ok.  If everything is working out of ram I can see modifying things
so there is both a hook before console_init, and a hook after it so generic
console code can be used.  It is possible to define motherboard
specific console drivers but proposing that as a solution to your
problem is silly.
The ethernet case is not a case I currently understand.  I would be
highly surprised if something is needed there.  My gut feel is a
simple init method should be all that is needed.  Unless you are doing
an ethernet device driver and that is something else again.
 In addition, I probably don't want to call cpu_initialize() after 
PCI setup. I
 would prefer if the cpu (or cpu's) was treated much the same as 
any other static
 device, then I  could choose where cpu_init() gets called, which may be in
 multiple places.
I agree they way we are currently dealing with cpus is problematic, as
it does not follow the same model as the rest of the code.  There has
not yet been much looking given to how to handle them correctly.
Doing cpu initialization late has not mattered much because if you can
run the code in C generally there are no show stopper cpu bugs or cpu
setup that needs to be worried about.
 
 Otherwise the chip initialization happens twice: once from the call to
 chip_configure() and once from dev_initialize(). And it happens at the wrong
 place.
There are two kinds of devices.  Devices that are highly motherboard
centric, and no matter what you do will have special rules and generic
code cannot cope with them.  And then there are devices that are well
factored, and can be treated as independent pieces of hardware.
The generic device tree is aimed at hardware that is well factored, for
the rest we do need a different mechanism. 

For a well factored device having it initialized at the wrong place
is almost impossible.  Except in the rare cases where the devices is
needed to bootstrap another say the smbus controller for memory, and
in those cases it is the memory or whatever else it is that is not a
standalone device.
 
 The current design is too tied to PCI setup.
I have to vent at this statement.  Yes the code was derived from what
is needed to setup PCI devices.  But no it is not tied to PCI devices,
and I believe this view is part of what is limiting this conversation.
In particular I see no problem setting up superio I/O devices with
this code.
I try and full fill a couple of requirements with the code.
1) Enable code reuse when the hardware is tied together on another
   board in a different way.
2) Enable flexible resource allocation.
3) If I have multiples of the device allow the code to just work.
For an individual device knowing specifically when it is initialized
inspires brittle code.
If I have multiples of the same device the code needs to be able
to hand out dynamic resource assignments.
And yes this results in a little bit of duplicate setup for hardware
like a serial console that is both a generic piece of code and that
must be bootstrapped early.
 , doesn't provide any means of doing
 initialization other than when PCI devices are initialized and 
doesn't give any
 control over *when* devices are initialized.
It is assumed the dependencies can be represented in the device tree.  If you
are higher up in the tree you are initialized first.  And of devices in the
same level of the device tree the order in the static tree pretty much
rules.
 chip_configure() allows devices to
 choose when in the boot sequence they want to perform some action, 
and allows
 multiple actions to occur for a single device.
It also provides no structure and it solves none of the hard problems.
As for being able to do things in the boot sequence I have 6 methods
to your 8.  Plenty of opportunity to do weird things if need be.
I guess what I would like to avoid 

Re: V2 Epia report

2003-10-09 Thread Greg Watson
At 8:45 AM -0600 9/10/03, ron minnich wrote:
On 8 Oct 2003, Eric W. Biederman wrote:

 The current device resource assignment code should cope with static
 resource assignments, so hopefully it should be a matter of plugging
 hard codes into the device tree.
no, greg and I will be talking to you about this. There is a problem with
that code, which I have alluded to, in that you can not (in the current
system) do device assignments etc. before pci enumeration, and it is
essential that you be able to do that.
 Although looking at that code there is another issue. You are using
 dev_find_device in vt8231.c inappropriately.  dev_find_device should
 be virtually unnecessary in the freebios2 tree.  Except when you are
 very carefully using dev_find_device will fail to handle multiple
 instances of a device.  This is a very bad example to set when
 doing things properly causes everything to work transparently.
legacy code. Has to get fixed.

Examples of proper usage welcomed. Although this actually points out a
problem with the dynamic tree: it handles complex cases well, simple cases
poorly. All I want to do is get into that device BEFORE pci enumeration
and set some default values. You can't do that in the current scheme.
Yes, I have a similar problem with the current setup. I need to be 
able to do static initialization on entry to hardwaremain, but before 
console_init(), and also prior to pci enumeration. Currently static 
device initialization can only be done during pci setup which is too 
late. I've started using chip_configure() again to get around this 
problem, but it means I have to skip the enumerate_static_devices() 
step or things go to hell.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: V2 Epia report

2003-10-09 Thread Greg Watson
At 12:11 PM -0600 9/10/03, Eric W. Biederman wrote:
Greg Watson [EMAIL PROTECTED] writes:

 Yes, I have a similar problem with the current setup. I need to be 
able to do
 static initialization on entry to hardwaremain, but before 
console_init(), and
 also prior to pci enumeration.
The original conception was that such things would happen before
hardwaremain was actually called.  But regardless.
On the PPC, much of what must be done in assembly or romcc on 
Intel/AMD, can be done in C in hardwaremain. The architecture needs 
to be flexible enough to accommodate this.


 Currently static device initialization can only  be done during pci
 setup which is too late.
Why???
For example, I want to be able to configure the serial port on the 
superio chip so that console logging will work. This has to happen 
before console_init() is called. Other things that I want to be able 
to do that I don't want tied to PCI setup are:

- flash setup
- NVRAM setup
- on-board network interface setup
- SDRAM setup
The order goes something like this:

hardwaremain() {
pre_console:
superio()
console_init()
pre_pci:
nvram()
sdram()
flash()
pci:
pci()
usb()
ide()
pre_boot:
fenet()
elfboot()
}
In addition, I probably don't want to call cpu_initialize() after PCI 
setup. I would prefer if the cpu (or cpu's) was treated much the same 
as any other static device, then I  could choose where cpu_init() 
gets called, which may be in multiple places.


 I've started using chip_configure()
 again to get around this problem, but it means I have to skip the
 enumerate_static_devices() step or things go to hell.
Why???
Otherwise the chip initialization happens twice: once from the call 
to chip_configure() and once from dev_initialize(). And it happens at 
the wrong place.

I can feel that there is pain here.  But I cannot see the source.
There are two possible solutions.  Either the current structure
needs redesign or I need to more clearly document and explain
the current structure so it can be fully taken advantage of.
The current design is too tied to PCI setup, doesn't provide any 
means of doing initialization other than when PCI devices are 
initialized and doesn't give any control over *when* devices are 
initialized. chip_configure() allows devices to choose when in the 
boot sequence they want to perform some action, and allows multiple 
actions to occur for a single device.

I'd be happy if the current scheme could provide this functionality, 
but I don't see any easy way to do it.

The fundamental problem I see is that Intel/AMD architectures do a 
lot more initialization prior to hardwaremain, so the functionality 
that I'm looking for is not really needed. Once you're in 
hardwaremain, basically all that's left to do is get PCI going. This 
is not the case for PPC (and maybe other architectures.) The question 
is really: should linuxbios be Intel/AMD specific and required other 
architecture support grafted on, or should it be made general enough 
to work with any architecture. I guess I'm suggesting the latter.

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: ep405pc

2003-10-04 Thread Greg Watson
Update on the ep405pc: getting close!

Fixed hardwired address and byte ordering issue with the low-level 
PIC routines. Now I see:

LinuxBIOS-1.1.4 Sat Oct 4 16:54:15 MDT 2003 rebooting...
Finding PCI configuration type.
Enumerating: Winbond W83C553
Enumerating buses...PCI: pci_scan_bus for bus 0
PCI: 00:00.0 [1014/0156] enabled
PCI: 00:09.0 [10ad/0565] enabled
PCI: 00:0e.0 [1045/c861] enabled
PCI: pci_scan_bus returning with max=00
done
dev_configure: Allocating resources...
ASSIGN RESOURCES, bus 0
PCI: 00:00.0 14 - [0xfe9ff000 - 0xfebfefff] prefmem
PCI: 00:0e.0 10 - [0xfebff000 - 0xfebf] mem
ASSIGNED RESOURCES, bus 0
done.
Enabling resourcess...
PCI: 00:00.0 cmd - 06
PCI: 00:09.0 cmd - 07
PCI: 00:0e.0 cmd - 02
done.
Initializing devices...
Devices initialized
Found W83C553F controller
Error: Cannot find W83C553F function 1 device
No memory size information!
Cheers,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: V2 VIA EPIA

2003-10-01 Thread Greg Watson
Oh, I can see what is going to happen to buildrom now that Ron has 
discovered it... :-)

Greg

At 11:44 PM -0600 30/9/03, ron minnich wrote:
Changes:

new epia target for 512k: targets/via/epia/Config.512kflash.lb

epia defaults to 256k flash

buildtarget now takes either a directory, and uses directory/Config.lb, or
takes a file
e.g.

buildtarget via/epia will use via/epia/Config.lb, and
buildtarget via/epia/Config.512kflash.lb will use that file.
ron



___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Patch for V2 new config

2003-10-01 Thread Greg Watson
If my understanding is correct, you want to have an option value that 
has a mainboard specific default value, but that can be overridden in 
the target configuration file?

If this is the case, then my preference would be to do something like 
the following in the mainboard file:

if ~ ROM_IMAGE_SIZE
option ROM_IMAGE_SIZE = 65536
end
where the '~' operator means hasn't been set.

It seems to me this would be clearer than changing a default value, 
possibly after the value has already been set.

Greg

At 3:44 PM +0100 1/10/03, Mark Wilkinson wrote:
Hi Ron,
	I started looking at building the Via/Epia with the v2, and 
noticed that your
last snapshot said that the mainboard Config.lb should set the ROM_SIZE to
265K.

Here's a little patch that lets the config python use
'default OPTION value' tag in the Mainboard Config.lb overriding the value set
in config/Optins.lb (which has ROM_SIZE set to NONE)
or should the command be 'default OPTION=value' in which case, alter the
line for 'rule defaultC: ...' to read
rule defaultC:  DEFAULT ID EQ value   {{ if(C): mbdefault(ID,value) }}
Regards
Mark Wilkinson.
PS. Hope to burn a V2 epia bios tomorrow morning and test !!
Attachment converted: Macintosh HD:config.patch (TEXT/ttxt) (002EE9D4)
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Patch for V2 new config

2003-10-01 Thread Greg Watson
Mark,

Understood. The thing I don't like about Ron's solution is that is 
relies on an option effectively having two values simultaneously - a 
default value and a set value. Being able to modify both these values 
independently, then relying on a side effect to determine the actual 
value seems a recipe for future problems and confusion. My original 
intention was the that default value would just be the initial value 
of the option, nothing more than that.

What Ron and you have highlighted is that there is a need for 
part-specific default values for options (maybe more than just the 
mainboard.) My suggestion is that these default values be dealt with 
by either explicitly setting the option value (using the ~ operator) 
or through some other explicit mechanism.

One possibility would be to add a Default.lb file in the part 
directory (containing lines like 'ROM_SIZE=65536')  then in the 
target config file saying:

loadoptions
loaddefaults mainboard/via/epia
loaddefaults cpu/i386
The important thing is that these are loaded in the target config 
file, before any option values are set.

Greg

At 4:44 PM +0100 1/10/03, Mark Wilkinson wrote:
Hi Greg,

On Wednesday 01 Oct 2003 16:25, Greg Watson wrote:
 If my understanding is correct, you want to have an option value that
 has a mainboard specific default value, but that can be overridden in
 the target configuration file?
Not quite, Ron (I assume it was Ron)  already added a line like
default ROM_SIZE 256*1024
to the src/mainboard/via/epia/Config.lb file (there are similar lines for 
solo and one other I think) in the CVS snapshot (20031001-1400)

What my patch does is make that line work so that the buildtarget command will
work out of the box (or cvs snapshot) in the targets diretory for
./buildtarget via/epia
The solo and other  one (hdama) both have 'option ROM_SIZE ' lines in
their  target Config.lb files
I think what was trying to be achived is that the mainboard config file has a
default rom size for the flash part supplied with that mainboard, and if you
want to override it (say you have a larger flash part) you can in the target
config file.

 If this is the case, then my preference would be to do something like
 the following in the mainboard file:
  if ~ ROM_IMAGE_SIZE
option ROM_IMAGE_SIZE = 65536
 end
 where the '~' operator means hasn't been set.

 It seems to me this would be clearer than changing a default value,
 possibly after the value has already been set.
 Greg

 At 3:44 PM +0100 1/10/03, Mark Wilkinson wrote:
 Hi Ron,
I started looking at building the Via/Epia with the v2, and
 noticed that your
 last snapshot said that the mainboard Config.lb should set the ROM_SIZE to
 265K.
 
 Here's a little patch that lets the config python use
 'default OPTION value' tag in the Mainboard Config.lb overriding the value
  set in config/Optins.lb (which has ROM_SIZE set to NONE)
 
 or should the command be 'default OPTION=value' in which case, alter the
 line for 'rule defaultC: ...' to read
  rule defaultC:  DEFAULT ID EQ value   {{ if(C):
  mbdefault(ID,value) }}
 
 Regards
 Mark Wilkinson.
 
 PS. Hope to burn a V2 epia bios tomorrow morning and test !!
 Attachment converted: Macintosh HD:config.patch (TEXT/ttxt) (002EE9D4)
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Patch for V2 new config

2003-10-01 Thread Greg Watson
At 10:20 AM -0600 1/10/03, ron minnich wrote:
On Wed, 1 Oct 2003, Greg Watson wrote:

 If my understanding is correct, you want to have an option value that
 has a mainboard specific default value, but that can be overridden in
 the target configuration file?
 If this is the case, then my preference would be to do something like
 the following in the mainboard file:
 if ~ ROM_IMAGE_SIZE
option ROM_IMAGE_SIZE = 65536
 end
 where the '~' operator means hasn't been set.

 It seems to me this would be clearer than changing a default value,
 possibly after the value has already been set.
well, guys, here is how it works not.

ROM_IMAGE_SIZE is define in Options.lb (read first) with no default value.

In the config (e.g. targets/via/epia/Config.lb) you can set something
like:
option ROM_IMAGE_SIZE=512*1024
If there is no setting, then what applies is in the mainboard file:

default ROM_IMAGE_SIZE=256*1024

however, I did not know about this 'hasn't been set' stuff. Sorry. Greg, I
have no problem with that.
ron
The problem is you're relying on obscure behavior of an option. 
You're setting (or not setting) an option in the target config file, 
then subsequently changing it's default value, then using whichever 
happens to override the other. See my reply to Mark.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: A limit in V2 for PCI setup

2003-09-30 Thread Greg Watson
in V1 I used to call the pci ops directly, e.g.

extern pci_ops pci_direct;
pci_direct.read_dword(...);
Presumably this will work in V2 as well.

Greg

At 12:16 PM -0600 30/9/03, ron minnich wrote:
In v2, it is pretty much impossible to do PCI setup BEFORE the PCI scan is
called and device trees are built. Sometimes, however, you need to be able
to work on PCI before the scan, e.g. to enable certain functions. I don't
want this code in mainboard auto.c -- that's a bad way to go.
See the below comment.

/* we need to do things in this function so that PCI scan will find
 * them.  One problem here is that we can't use ANY of the new device
 * stuff. This work here precedes all that. 
 * Fundamental problem with linuxbios V2 architecture.
 * You can't do pci control in the C code without having done a PCI scan.
 * But in some cases you need to to pci control in the c code before doing
 * a PCI scan. But you can't use arch/romcc_io.h (the code you need)
 * because
 * that has functions with the same name but different type signatures
 * (e.g. device_t is a struct in C code, and is an unsigned long in
 * romcc code).
 * This needs to get fixed. We need low-level pci scans
 * in the C code.
 */

I think my fix is to make a copy of romcc_io.h, with different names and
type signatures, for use by functions that need to work with PCI before
the PCI scan has been done.
comments welcome. I'll do this after lunch unless I hear strong
counterarguments that will get me what I need.
Thanks

ron

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: why are we still doing this?

2003-09-25 Thread Greg Watson
No need, since it's done automatically now.

Greg

At 11:26 AM -0600 25/9/03, ron minnich wrote:
in arima/hdama/Config.lb

##
## Clean up the motherboard id strings
##
option MAINBOARD_PART_NUMBER=HDAMA
option MAINBOARD_VENDOR=ARIMA


OK, the config tool will create this by default:
MAINBOARD_PART_NUMBER=hdama
MAINBOARD_VENDOR=arima
why do we need to put this type of thing in the mainboard config file?

just wondering

ron

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Any story to boot from Hard Disk

2003-09-18 Thread Greg Watson
Title: Re: Any story to boot from Hard
Disk


I've used the IDE stream code to boot Linux from and IDE flash.
This should also work from any IDE device, though I've not tested it.
See freebios2/src/ide_stream.c.

Greg

At 11:19 AM + 18/9/03, gimyung han wrote:
Is anyone tried to boot LinuxBIOS from
Hard Disk not using etherboot?

I heard that etherboot can also boot ide devices...

But I don't know how to do it.

Thanks for any help

_
¡ž±« ¡§†½ ƒ°¿Â †¸½£ƒÌ
Ì«¦ƒ' †½‡« º– ¿÷‡¿¥¦¥. MSN
¡ž±«/‰ž¿Ž
http://www.msn.co.kr/stock/
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios




Re: nested description of chains

2003-09-12 Thread Greg Watson
Stefan,

This should be a relatively straight forward change to config.g. I 
would prefer to see the config format maintained, so I would suggest 
using:

htlink 0 mc1
speed = 200
width = 8
   end
   htlink 0 amd8131-1  end

rather than

htlink 0 mc1  speed=200 width=8
htlink 0 amd8131-1
Let me know if you need any help in implementing it.

Regards,

Greg

At 4:57 PM +0200 12/9/03, Stefan Reinauer wrote:
* ron minnich [EMAIL PROTECTED] [030912 15:06]:

 The config language only supports a parent-child relationship, and HT has
 a much richer interconnection structure.
Yes. Currently the config tool only allows an acyclic graph for
describing hardware. this does not suit the machine description that
would be needed for hypertransport.
 Are you saying that we should reflect this richer topology that HT has in
 the config language?
Yes, and I think this does not need to be really complex. See the below
example. Then the romimage class could be extended to write a new file
htlinks.h in case it detects htlink keywords in any device. I'm
currently fighting myself a bit through config.g to see how this can be
done.
I don't think this necessarily should go to the static device tree,
since we would have to use the device tree in romcc code then, which
is not yet possible iirc. (And might bloat romcc code up)
typedef struct htlink
{
int direction; // 0,1,2 for LDT0,1,2
int speed;
int width;
int nodenum;  // ht device number of remote component
} htlink_t;
enum {
NORTHBRIDGE,
SOUTHBRIDGE,
PCIBRIDGE,
} htdev_t;
typedev struct htdev
{
htdev_t type; // type
int num;  // instance, i.e. the num'th device of type type
htlink_t links[3];
} htdev_t;
htdevs_t **get_htdevs()
{
htdevt_t htdevs[]={
  { NORTHBRIDGE, 0, {
  { 0, 800, 16, 1 },
  { 1, 800, 16, 3 },
  { 2, 800, 16, 4 }, // range 0-3 used by cpus
}
  },
  { NORTHBRIDGE, 1, {
  { 0, 800, 16, 0 },
  { 1, 800, 16, 5 },
  { 2, 800, 16, 3 },
}
  },
[..]
};
return htdevs;
}
generated from a config file like this:

northbridge amd/amdk8 mc0
pci 0:18.0
pci 0:18.0
pci 0:18.0
pci 0:18.1
pci 0:18.2
pci 0:18.3
htlink 0 mc1 [ speed=default|200|400.. ] [ width=default|8|16 ]
htlink 1 mc3 speed=default width=16
htlink 2 amd8111 speed=600 width=8
end
northbridge amd/amdk8 mc1
pci 0:19.0
pci 0:19.0
pci 0:19.0
pci 0:19.1
pci 0:19.2
pci 0:19.3
htlink 0 mc0
htlink 1 amd8131
htlink 2 mc3
end
northbridge amd/amdk8 mc2
pci 0:1a.0
pci 0:1a.0
pci 0:1a.0
pci 0:1a.1
pci 0:1a.2
pci 0:1a.3
htlink 0 mc3
htlink 2 mc0
end
northbridge amd/amdk8 mc3
pci 0:1b.0
pci 0:1b.0
pci 0:1b.0
pci 0:1b.1
pci 0:1b.2
pci 0:1b.3
htlink 0 mc2
htlink 1 mc1
end
southbridge amd/amd8131 amd8131-1
pci 0:0.0
pci 0:0.1
pci 0:1.0
pci 0:1.1
htlink 0 mc0
htlink 1 amd8131-2
end
southbridge amd/amd8131 amd8131-2
pci 0:0.0
pci 0:0.1
pci 0:1.0
pci 0:1.1
htlink 0 amd8131-1
end
southbridge amd/amd8111 amd8111
pci 0:0.0
pci 0:1.0
pci 0:1.1
pci 0:1.2
pci 0:1.3
pci 0:1.5
pci 0:1.6
superio NSC/pc87360
pnp 1:2e.0
pnp 1:2e.1
pnp 1:2e.2
pnp 1:2e.3
pnp 1:2e.4
pnp 1:2e.5
pnp 1:2e.6
pnp 1:2e.7
pnp 1:2e.8
pnp 1:2e.9
pnp 1:2e.a
register com1 = {1, 0, 0x3f8, 4}
register lpt = {1}
end
htlink 0 mc0 speed=200 width=8
end
Stefan

--
Architecture Team
SuSE Linux AG
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


init_timer()

2003-09-03 Thread Greg Watson
K8 developers:

I've moved init_timer() from hardwaremain.c to the static 
initialization code in cpu/k8/cpufixup.c as it prevents PPC code from 
building. Please check that everything still works ok.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: coding

2003-09-02 Thread Greg Watson
At 1:32 PM -0600 2/9/03, ron minnich wrote:
anybody object to anonymous enums? I've gotten used to them in Plan 9 and
like them. Instead of this:
#define FLOPPY_DEVICE   0
#define PARALLEL_DEVICE 1
#define COM2_DEVICE 2
#define COM1_DEVICE 3
#define SWC_DEVICE  4
#define MOUSE_DEVICE5
#define KBC_DEVICE  6
#define GPIO_DEVICE 7
#define ACB_DEVICE  8
#define FSCM_DEVICE 9
#define WDT_DEVICE 10
you get this:
enum {
 FLOPPY_DEVICE=0,
 PARALLEL_DEVICE,
 COM2_DEVICE,   
 COM1_DEVICE,   
 SWC_DEVICE,
 MOUSE_DEVICE,  
 KBC_DEVICE,
 GPIO_DEVICE,   
 ACB_DEVICE,
 FSCM_DEVICE,   
 WDT_DEVICE
};

The advantages I see
- somewhat less prone to error
- looks nicer
- the big one: enums are first-class objects to the compiler, and
  #defines are pertty much ripped out by the compiler and disappear
  into constant numbers.
comments?

ron
I think they work well when you have a sequence of numbers like this, 
but I would rather see each enum explicitly given it's value as in:

enum {
 FLOPPY_DEVICE=0,
 PARALLEL_DEVICE=1,
 COM2_DEVICE=2,
 COM1_DEVICE=3,
 SWC_DEVICE=4,
 MOUSE_DEVICE=5,
 KBC_DEVICE=6,
 GPIO_DEVICE=7,
 ACB_DEVICE=8,
 FSCM_DEVICE=9,
 WDT_DEVICE=10
};
Otherwise you're forever trying to work out what the actual value is.

Where it doesn't work is when you have a bunch of random defines with 
unrelated values, or values that jump about all over the place.

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


new config version skew problem

2003-08-14 Thread Greg Watson
I found the problem that was causing the error with python 2.1. 
Please test new version.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Supporting extension ROMs and beyond...

2003-08-14 Thread Greg Watson
At 6:04 PM -0600 10/8/03, ron minnich wrote:
so, in the config file, we have something like:

extension pcbios
extension vgabios
extension elfboot
and the system linkes these in via src/extionsions/whatever.

They are each run in turn.

reasonable?

Sounds good, but what does the 'extension' keyword actually do? Is 
there stuff that needs to be called early on, then after elfboot? Or 
can it all be done after elfboot?

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: linking static to dynamic devices

2003-08-07 Thread Greg Watson
I'm not on the plane yet... :-)

My suggestion was to add an 'optional' keyword to the cpu device. So 
you would declare something like:

cpu k8 cpu0
...
end
cpu k8 cpu1
optional
...
end
cpu k8 cpu2
optional
...
end
cpu k8 cpu3
optional
...
end
The effect of the optional keyword is to call a special function 
probe which is added to the chip_control structure. probe() is 
called before any calls to enable() and the result (0=success, 0 
fail) is used to set a present flag in the chip structure. probe() 
should not do anything else except check for existence (any other 
configuration is done in enable()). Non-optional devices always have 
their present flag set to 1.

struct chip_control {
  void (*enable)(struct chip *, enum chip_pass);
  int (*probe)(struct chip *);
  char *path; /* the default path. Can be overridden
   * by commands in config
   */
  // This is the print name for debugging
  char *name;
};
struct chip {
  struct chip_control *control; /* for this device */
  int present; /* device is present */
  char *path; /* can be 0, in which case the default is taken */
  char *configuration; /* can be 0. */
  int irq;
  struct chip *next, *children;
  /* there is one of these for each INSTANCE of a chip */
  void *chip_info; /* the dreaded void * */
};
Greg

At 7:54 AM -0600 5/8/03, ron minnich wrote:
The next obvious step is to link static to dynamic devices.

One issue is that we define CPUs statically, up to the maximum the
mainboard can take. But they may not be there. How do we express this?
Greg had some ideas, so he may jump in once he gets off the plane.
I do think the new static architecture will allow for things like
cpufixup() calls per-cpu, etc. but we'll see.
ron

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Weird behaviour with new config method

2003-08-04 Thread Greg Watson
At 2:56 PM -0600 4/8/03, ron minnich wrote:
On 4 Aug 2003, Eric W. Biederman wrote:

 Previously when we had this conversation we tried for a minimum python
 of 1.5 and the old config tool manages that.  We may need to bump the
 python requirement but we this needs investigation to see why the earlier
 versions of python have problems.
we're going to have to bump minimums anyway. romcc fails for me on RH 7.3.

ron
It'll have to be version 2.0 at a minimum since yapps (and config.g) 
depends on some 2.0 features. It maybe a later version depending on 
what Eric's problem turns out to be.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


static initialization

2003-07-28 Thread Greg Watson
Stefan,

I've added the ability to name parts. This means that you can do the following:

cpu k8 cpu0
register south = sb0
register east = cpu1
end
cpu k8 cpu1
register south = ...
register east = ...
end
southbridge device/vendor sb0
end
In the k8 directory you will need to add 'config chip.h' to 
Config.lb, then create a chip.h that contains something like:

#ifndef _CPU_K8
#define _CPU_K8
extern struct chip_control cpu_k8_control;

struct cpu_k8_config {
struct chip *south;
struct chip *east;
any other stuff
};
#endif /* _CPU_K8 */
Then add an object that contains the code that deals with 
'cpu_k8_control' (see superio/NSC/pc97307/superio.c for an example).

Hopefully this will allow you to deal with the hyperchannel setup stuff.

Things that still need to be done/other changes:

1. The above scheme assumes that all cpu's actually exist, which may 
not be the case. Only the first cpu can be relied on to exist.  So we 
need to think about the best way to indicate that subsequent cpu's 
are optional. One way might be to add the keyword 'optional' to the 
definition. e.g.

cpu k8 cpu1
optional
register south = ...
register east = ...
end
We could add an extra pass to the chip_configure() routine called 
CHIP_PASS_PROBE that is called for all devices that are marked 
optional. It would then be up to the individual device to check for 
its existence. This could set a flag that means the enable() entry 
point is called on subsequent passes for the device.

One problem with this approach is that you've already set the 'south' 
field to point at cpu1. If cpu1 doesn't exist then the probe code 
would need to set this field to 0.

Let me know what you think.

2. Ron is testing replacing:

cpu p5 end
cpu p6 end
cpu k7 end
cpu k8 end
with just 'cpu k8 end', then using the 'dir' command in the k8 
Config.lb file to include support for k7, p6, p5. This will hopefully 
prevent spurious devices from being included in the static tree.

3. You now must declare:

extern struct chip_control part_vendor_device_control;

in the part specific chip.h file.

Cheers,

Greg

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: new config tool, static and dynamic trees

2003-07-24 Thread Greg Watson
Stefan,

Sorry about that. I'll #define this better so that it's not required 
with the old configuration system.

The 'register' directive has changed slightly, but hasn't been 
updated in the tree. I've checked in the new version now.

Greg

At 3:54 PM +0200 24/7/03, Stefan Reinauer wrote:
* ron minnich [EMAIL PROTECTED] [030724 01:02]:
 Greg has implemented the static tree/dynamic tree code mentioned
 yesterday, and today it passed its first test with flying colors.
I am still fighting this, since it broke NLBConfig in a way that is
probably not worth fixing (it's missing the static_root completely,
and we might not want to keep that in a generated file as well as in
the config file):
[..]
linuxbios_c.o(.text+0x203e): In function `hardwaremain':
: undefined reference to `static_root'
[...]
The new config method fails, but I can't seem to find the wrong line in
the config file.
~/LinuxBIOS/freebios2/targets ./buildtarget arima/hdama/
Configuring TARGET hdama
Will place Makefile, crt0.S, etc. in arima/hdama/hdama
Configuring ROMIMAGE fallback
Configuring DIR /config/Config.lb
Configuring DIR /lib/Config.lb
Configuring DIR /console/Config.lb
Configuring DIR /stream/Config.lb
Configuring DIR /devices/Config.lb
Configuring DIR /pc80/Config.lb
Configuring DIR /boot/Config.lb
Configuring PART mainboard, path arima/hdama
Configuring PART arch, path i386
Adding init file: config/crt0.base
Configuring DIR lib/Config.lb
Configuring DIR boot/Config.lb
Configuring DIR smp/Config.lb
End PART arch
WARNING: Option CONFIG_SMP using default value 0
Configuring PART northbridge, path amd/amdk8
End PART northbridge
Configuring PART southbridge, path amd/amd8111
End PART southbridge
Configuring PART southbridge, path amd/amd8131
End PART southbridge
Configuring PART superio, path NSC/pc87360
Trying to find one of '=' on line 153:
  end
  ^
List of nearby tokens:
  (@3368)  SOUTHBRIDGE  =  'southbridge'
  (@3380)  PATH  =  'amd/amd8111'
  (@3392)  END  =  'end'
  (@3396)  SOUTHBRIDGE  =  'southbridge'
  (@3408)  PATH  =  'amd/amd8131'
  (@3420)  END  =  'end'
  (@3466)  SUPERIO  =  'superio'
  (@3474)  PATH  =  'NSC/pc87360'
  (@3487)  REGISTER  =  'register'
  (@3496)  STR  =  '.com1={1}, .lpt=1'
=== ERROR: Could not parse file
arima/hdama/Config.lb:0
mainboard/arima/hdama/Config.lb:0


Any idea?

Thanks,
   Stefan
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


AMD package/part numbers

2003-07-24 Thread Greg Watson
Any idea how to translate an AMD package number to an AMD part number?

I have a flash part that is marked D323GB90V1 but I can't find 
anything on the AMD site that helps translate this to a part number, 
short of reading every data sheet.

Thanks,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: static and dynamic devices (again)

2003-07-23 Thread Greg Watson
At 2:54 PM +0800 23/7/03, ollie lho wrote:
On Wed, 2003-07-23 at 12:08, ron minnich wrote:
 We thus have a static tree (representing the static resources) with links
 at certain places to the dynamic tree (representing dynamic resources). 
 LinuxBIOS can do device-specific operations on devices in the static tree,
 and can attach dynamic devices to nodes in the static tree. On the
 whiteboard in Greg's office, this setup makes lots of sense. We'll see how
 it is in practice.

Does this mean you have a device tree with STATIC nodes and DYNAMIC
nodes ? Does your code have to distinguish between static nodes from
dynamic ones when traveling the tree ? Is my imaginary of the scenario
as the following correct ?
1. Device tree with static node is build at compile time.
   (with some nodes marked dynamic extensible).
2. Travel the tree to init static node, for dynamic extensible
   nodes, grow the tree.
2.1 Init the dynamic nodes.
3. Travel the tree again to do post-pci (whatever you call it)
   init for static nodes.
Originally I was going to try using a single node type for both 
dynamic and static devices, but it turns out that there is very 
little in common and it seems to make more sense to keep them 
separate. Your scenario is correct, though I'm thinking that the 
static tree will be the primary data structure and the dynamic tree 
will be attached to a node the same way as other device-specific 
data. So the static tree will not grow, just be populated with data.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: static and dynamic devices (again)

2003-07-22 Thread Greg Watson
Thanks Ron, post this tome at 10pm so I have to stay up late...

As Ron points out, I spent some time today seeing if it was possible 
to unify the static and dynamic device code. It certainly is 
possible, but it turns out that we're trying to do things in two 
fundamentally different ways. The result is that we just push the 
separation between the two types of devices down another level. I'm 
not sure is something that we want to do, because it just makes 
things more difficult to understand.

My feeling is that keeping them separate is probably the way to go. 
Modifying the current device code so that  dynamic trees can hang off 
a static device (such as a northbridge) will solve some problems that 
are on the horizon. This will also allow code development to move 
forward without major changes, but not preclude unifying the two 
schemes in the future if it becomes necessary.

I'm also interested in any comments on this approach.

Greg

At 10:08 PM -0600 22/7/03, ron minnich wrote:
Greg has spent the day exploring options for how to merge the static and
dynamic device trees in LinuxBIOS, per Eric's comments. He wrote a
substantial amount of code, which at this point we may not commit. The
goal of the code was to see if it makes sense to merge the static and
dynamic trees. I am not convinced such a merger makes sense.
Discussion follows.

The problem is this: on a given motherboard, there are a static set of
devices, such as northbridges, southbridges, so on: these are soldered to
the board. Then there are dynamic devices, plugged into PCI slots.
On a motherboard, we know that the static devices are there, and we even
know a lot about them, such as what certain registers do.  We need on
the motherboard to initialize components of the static devices. In other
words, we have knowledge about:
o the type of the device;
o instances ofthe device;
o special operations we need to do to the device to modify internal
  state (e.g. turn off the IDE controller, turn on Ethernet, etc.)
o special control information that is highly device-specific
These operations are operations that we have to do because the OS assumes
they will be finished when the OS starts, or we need to do them to
initialize things, such as DRAM.
Dynamic devices are known only in a generic fashion. In LinuxBIOS, the sum
total of our knowledge of dynamic devices is the Base Address Register
set, the Command register, and possibly (in future) the IRQ. LinuxBIOS has
no knowledge of device-specific I/O registers. For dynamic devices,
LinuxBIOS does a few generic operations and lets the OS do the rest.
So for dynamic devics we know about:
o instances of the device
o Generic control information that is not device-specific
So, to sum up: for static devices, LinuxBIOS needs knowledge that goes
beyond what the OS knows, and will perform device-specific operations
based on internal knowledge LinuxBIOS has about the device. LinuxBIOS will
maintain information about the type of the device and all instances of the
device. In many cases, LinuxBIOS will do operations on the device that the
OS is not capable of doing.
For dynamic devices, LinuxBIOS only does the most general configuration,
and has no knowledge of device internals. The OS manages device-specific
operations.
The dichotomy is pretty clear.

It is kind of like a house. There are walls and floors and outlets and
phone jacks. These are fixed (static). Then there are chairs and lights
and phones. These are dynamic. You know all about the phone jacks, but you
don't know about what phones are plugged in, and the phones change all the
time, especially if you have children in the house. The static devices
(walls) are a fundamentally different thing than the dynamic devices
(chairs).
We are calling static devices 'chips'. Chips are structured as follows:
there is a chip_control structure for a TYPE of a chip, with generic
information about the chip and a pointer to a control function that is
specific to that chip. Then, for each instance of the chip, there is a
chip structure that contains a pointer to the chip_control structure and
information specific to the INSTANCE of the chip.
Think of chip_info as the class definition, and chip as instantiations of
the chip.
Chips are statically declared and initialized, and form a tree with a root
at the mainboard, with sibling pointers for chips at the same level --
e.g., two devices hung off the same southbridge are siblings. These
structures are filled out at compile time.
Dynamic devices are called struct device. There is (currently) a device
struct allocated dynamically for each function on a device.
[digression:  The PCI heritage of devices is very clear once you start
looking at them. This is reasonable, as even on HyperTransport everything
looks like a PCI device.  But it may bite us at some point.]
Devices also form a tree, with children, parents, siblings, etc. One
assumption we've noticed in the device code is that of a 'root bus'. 
Properly, this should 

Re: Assembly code errors [PMX:#]

2003-07-18 Thread Greg Watson
This is what the new configuration scheme in freebios2 does.

Greg

At 2:25 PM -0700 18/7/03, Dave Ashley wrote:
When I write some assembly code and I've got the syntax wrong, the build
fails but the line numbers reported in error messages don't relate to the
source I'm working on. I'm wondering could the build process for the assembly
code be changed so the python script creates a global
  toplevel.asm
file that has within it #includes for all the source files? So rather than
cat'ing all the files, you let the compiler include them, so its error
messages will be informative.
There's nothing especially bad about ASM code development, but things
like accurate error reporting can make it easier (or harder when absent).
-Dave
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: ppc linuxbios support

2003-07-13 Thread Greg Watson
Title: Re: ppc linuxbios support


Hi Ramkumar,

Ports to new boards, or suggestions on how to make the PPC code
more modular and robust are always appreciated.

You might want to start by getting linuxbios booting a linux
kernel on the 755. This shouldn't be too difficult, as the 755 appears
to use the same northbridge as the 7410. I used the MontiVista linux
as it was already ported to the Sandpoint, though I had to make a few
patches to get it to boot with linuxbios. Let me know when you get to
this point and I can send you the patches.

I've just ordered an EP405PC from EmbeddedPlanet which will be my
next port. It uses the IBM PPC 405Gpr chip which is sufficiently
different to the 7410 to be challenging.

Hopefully this week I'll have the PPC version working under the
new configuration system (check out freebios2 instead of freebios).
This is going to allow us to build a static device tree which can be
passed to linux. Heiko Schick and I have been discussing the
possibility of mapping this device tree to an Open Firmware device
tree that can then be used to boot linux on an OF system (such as
Power Mac's).

Stefan Reinauer has reminded me that we should work with the
openbios community on this, though looking at the IEEE 1275 spec (all
250+ pages) I think they've got a big job ahead. :-)

Cheers,

Greg


I would be interested in
helping out in the testing/development of the PPC BIOS. Also, have
access to sandpoint 755. Let me know if I can
help.

Thanks

Ramkumar




RE: LinuxBios PPC-support.. U-Boot project

2003-06-24 Thread Greg Watson
Yes, and the nice thing about the linuxbios architecture is that the 
CLI can just be a payload, so you can have any CLI that you want - 
forth, tcl, whatever. No changes are required to linuxbios at all.

Greg

At 6:03 PM -0700 24/6/03, Frank wrote:
As I said before, If you want to convert the u-boot users, you
have to provide an option to go to a command line instead of
just unconditionally booting linux. Getting to a command line is
not rocket science...
--- Gregg C Levine [EMAIL PROTECTED] wrote:
 Hello again from Gregg C Levine
 I agree in principle Ron, but I am curious as to why they
 thought
 that. After all, Linux BIOS does more for a system then
 U-Boot. It's
 my guess that after seeing the appropriate demonstrations that
 group
 will change their minds, collectively or otherwise. For that
 matter,
 Greg W, I applaud your efforts regarding the PPC port.
 ---
 Gregg C Levine [EMAIL PROTECTED]
 
 The Force will be with you...Always. Obi-Wan Kenobi
 Use the Force, Luke.Ý Obi-Wan Kenobi
 (This company dedicates this E-Mail to General Obi-Wan Kenobi
 )
 (This company dedicates this E-Mail to Master Yoda )


  -Original Message-
  From: [EMAIL PROTECTED] [mailto:linuxbios-
  [EMAIL PROTECTED] On Behalf Of ron minnich
  Sent: Monday, June 23, 2003 5:47 PM
  To: David Eliasson
  Cc: [EMAIL PROTECTED]
  Subject: Re: LinuxBios PPC-support.. U-Boot project
 
  On Tue, 3 Jun 2003, David Eliasson wrote:
 
   I read on the linuxbios webpage about PPC-support.. Aren t
 you
 guys
   aware of the U-boot project?
 
  Sure.
 
   They've been running the GNU Linux kernel 2.4.19 and 2.4
 21 in
 firmware
   for a while now.. Maybe I m just missing something, but I
 thought
 some
   merging of efforts might be in place..
 
  I tried to have a conversation with somebody from u-boot
 about some
 sort
  of merge, but it never got beyond the why u-boot is better
 than
  linuxbios stage, so I dropped it.
 
  ron
 
  ___
  Linuxbios mailing list
  [EMAIL PROTECTED]
  http://www.clustermatic.org/mailman/listinfo/linuxbios
 ___
 Linuxbios mailing list
 [EMAIL PROTECTED]
 http://www.clustermatic.org/mailman/listinfo/linuxbios


__
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: LinuxBios PPC-support.. U-Boot project

2003-06-23 Thread Greg Watson
At 3:47 PM -0600 23/6/03, ron minnich wrote:
On Tue, 3 Jun 2003, David Eliasson wrote:

 I read on the linuxbios webpage about PPC-support.. Aren t you guys
 aware of the U-boot project?
Sure.

 They've been running the GNU Linux kernel 2.4.19 and 2.4 21 in firmware
 for a while now.. Maybe I m just missing something, but I thought some
 merging of efforts might be in place..
I tried to have a conversation with somebody from u-boot about some sort
of merge, but it never got beyond the why u-boot is better than
linuxbios stage, so I dropped it.
I spent some time looking at PPCBoot (now called u-boot) before I did 
the PPC port of linuxbios, but in the end I didn't use much. Most of 
the hard stuff came from another open source bios project called 
GBios, particularly the PCI code.

The major advantages that linuxbios has over u-boot is the 
flexibility it provides in configuration management, and now that it 
has been ported to 3+ architectures, the architecture dependencies 
are particularly well defined.

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: timer.h - No such file or directory

2003-06-08 Thread Greg Watson
Sorry, my fault. This a new version of ide.c (and .h) which I've 
backported from Etherboot 5.1.8.

You can just remove the #include. I'll check in the new version now.

Greg

At 1:19 PM -0700 8/6/03, roger wrote:
Using the smartcore-p5 tree:

gcc ... -o ide.o /home/roger/src/linuxbios/freebios/src/pc80/ide/ide.c
/home/roger/src/linuxbios/freebios/src/pc80/ide/ide.c:27:19: timer.h: No
such file or directory
I'm seeing a freebios/src/etherboot/timer.h 
freebios/src/arch/ppc/include/timer.h but nothing for the i386/
--

Roger
http://www.eskimo.com/~roger/index.html
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: timer.h - No such file or directory

2003-06-08 Thread Greg Watson
Actually there was some other stuff that was PPC dependent. Hopefully 
the version I've just checked in isn't.

Greg

At 3:03 PM -0600 8/6/03, Greg Watson wrote:
Sorry, my fault. This a new version of ide.c (and .h) which I've 
backported from Etherboot 5.1.8.

You can just remove the #include. I'll check in the new version now.

Greg

At 1:19 PM -0700 8/6/03, roger wrote:
Using the smartcore-p5 tree:

gcc ... -o ide.o /home/roger/src/linuxbios/freebios/src/pc80/ide/ide.c
/home/roger/src/linuxbios/freebios/src/pc80/ide/ide.c:27:19: timer.h: No
such file or directory
I'm seeing a freebios/src/etherboot/timer.h 
freebios/src/arch/ppc/include/timer.h but nothing for the i386/
--

Roger
http://www.eskimo.com/~roger/index.html
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: PPC

2003-06-07 Thread Greg Watson
Andrew,

Current version is checked in. I'll be making some changes to the 
startup code over the next few days though.

Cheers,

Greg

At 3:49 PM +0800 6/6/03, Andrew Ip wrote:
Hi Greg,

 Just thought you might like to know that I booted a linux kernel
 using linuxbios on a PPC yesterday. There are still a few issues to
 sort out, but it's looking very promising.
Sounds great.  I have a TX3927(MIPS) with me and would like to see
if it is possible to port LinuxBIOS on it.  Are all the PPC code in
the cvs?
-Andrew

--
Andrew Ip
Email:  [EMAIL PROTECTED]
Tel:(852) 2542 2046
Fax:(852) 2542 2036
Mobile: (852) 9201 9866
Cwlinux Limited
Unit 202B 2/F Lai Cheong Factory Building,
479-479A Castle Peak Road,
Lai Chi Kok, Kowloon,
Hong Kong.
Tel: (852)2542 2046
Fax: (852)2542 2036
For public pgp key, please obtain it from http://www.keyserver.net/en.
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


PPC

2003-06-06 Thread Greg Watson
Just thought you might like to know that I booted a linux kernel 
using linuxbios on a PPC yesterday. There are still a few issues to 
sort out, but it's looking very promising.

For those that are attending USENIX next week, I'll have the machine 
at the BOF so you can see it really works!

Cheers,

Greg
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios


Re: Information about BIOS and the boot process

2003-03-28 Thread Greg Watson
Other people probably know much more about this than me, but here's 
my experience.

There seem to be two main parts to linuxbios. The first is 
arch/{arch}/config/ctr0.base which does the very low level 
initialization, like turning on memory, etc. The second is 
arch/{arch}/lib/c_start.S which does whatever else is necessary to 
call the C function hardwaremain(). hardwaremain() then does whatever 
else is necessary to load linux.

c_start.S is linked with linuxbios.a, a library containing generic 
support routines (those found in the lib directory) and anything 
specified using the 'object'  directive in a Config file (and other 
stuff). The resultant 'executable' is called linuxbios_c. The loader 
script used to link linuxbios_c is config/linuxbios_c.ld, and is 
configured to be loaded relative to _RAMBASE.

crt0.base is not linked against anything. Any additional assembly 
routines you need must be specified using the 'mainboardinit' 
directive in a Config file. This causes the specified assembly file 
to be added to crt0_includes.h which is in turn included at the 
start of crt0.base (or at the end in the case of the ppc version). 
The loader script used to link crt0.base is in 
arch/{arch}/config/ldscript.base. The resultant 'executable' is 
called linuxbios and will be loaded at _ROMBASE. The tricky thing is 
that this loader script will also load the linuxbios_c 'executable' 
at a location called _payload in this file. The main task of 
crt0.base is then to initialize enough hardware so that this payload 
can be copied from rom into ram (which may also involve uncompressing 
code). Then control is transferred to _start, which is the first 
location in linuxbios_c.

To get an idea of how crt0.base works, look at the following files. 
This is the order of execution specified by the configuration file 
for sis735.

cpu/i386/entry16.inc
cpu/i386/entry32.inc
superio/sis/950/setup_serial.inc
pc80/serial.inc
arch/i386/lib/console.inc
cpu/k7/earlymtrr.inc
northsouthbridge/sis/735/raminit.inc
arch/i386/config/crt0.base
Next look at c_start.S which will show you what happens once control 
is transferred to _start. Finally, look at 
arch/{arch}/lib/hardwaremain.c to see what other stuff is done to get 
linux loaded.

Most other files are specific to particular hardware, so it can be 
pretty confusing to just browse the tree.

Hope this helps,

Greg

At 7:00 PM +0500 3/28/03, [EMAIL PROTECTED] wrote:
Agreed, I am also looking for a good documention.
Atleast the flow in terms of implemented functions
or assembly code and some kind of Do's and Dont's
if any.
One good advantage would be more and more people
would be easily aware about the code architecture and
would get invovled in LinuxBIOS if one is interested.


[EMAIL PROTECTED] wrote
I am writing some code to fixup the video chipset trident
cyberblade and V1621 RGB-CS encoder ,
and also trying to fix the IDE_BOOT for my mainboard (B860T or EPIA), so
I am looking for information
about the real bios process, and about the layout of the common bios
files, and of course, any information
about bios as possible.
My main problem is to find good documentation about the post, the boot
process.
   I read on some places which the CS is set F000 and EIP FFF0, so
in other websites I had seen CS is FFF0,
 in other 000F , causing some confusion with me.
I need some documentation about 20bits addressing lines, and the GATE
A20 function also.
Tanks in advance.

___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios
___
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios