I am new to this list so I apologize if this question has already been
answered. I didn't see it
in the archives.
- Does the Linux BIOS do discovery on PCI slots for the existance of cards?
- Will it use PCI configuration space to locate the Basic Address Register
(BAR) to locate bios
on a PCI card and load it? Specifically, this is regarding a 3ware RAID
DISCLAIMER: The information contained in this electronic mail transmission
is intended by 3ware for the use of the named individual or entity to which
it is directed and may contain information that is confidential or
privileged and should not be disseminated without prior approval from 3ware
I can remember that (I think) 6 month ago, a system call
LOBOS was used to boot the later used Linux Kernel. Now I
saw in the document "Flexibility in ROM: A Stackable
Open Source BIOS" that a quite more complex firmware stack
is used, with the following components:
- Grub Bootloader
- Windows 2000, Linux, ...
I this always the case and how it is realized on other
platforms, like PowerPC???
Thanks in advance !!!
Does anyone have a working snapshot of this? I've tried building
the list from 2003-07-05 cvs and patch of Ashley, as well as cvs co of
and found varying degrees of limited success. If someone on the list has a
snapshot or pointer, that could save some time here.
I appreciate and commend all those who have worked on this great project.
done here using freebios v1 and v2 come in under several seconds to init
level 3. This project has great potential.
Many thanks in advance.
Get business advice and resources to improve your work life, from bCentral.
Some devie has two mem regions( non-pref) and it works.
发件人: ebiederman(a)lnxi.com [mailto:email@example.com]
发送时间: 2004年3月1日 13:07
收件人: Li-Ta Lo
抄送: ron minnich; YhLu; LinuxBIOS
主题: Re: Prefmem of bus 3
Li-Ta Lo <ollie(a)lanl.gov> writes:
> I think there is some problem in the resource allocation code so it can
> not handle devices with 2 prefmem.
Maybe. I know there was some kind of problem on the opteron, early on but I
what. The code for all resource types is the same so if we can handle
two resources on a bus of the same type it should not be quite as simple as
> Is the code just picking the "largest" resource ? I am really confused
> by the code in devices.c
The code should be quite simple but it is recursive and highly
abstracted which makes it hard to follow.
The high level overview is the code works in two passes.
The first pass is to determine the size of the resource window needed.
The second pass is to determine the actual resource assignments.
There are many was to assign resources on a bus. After some
experiences with tight memory situations I implemented a near optimal
solution. The solution is optimal if all of your resources are a
power of 2 in size.
Basically the code is a loop. For each iteration the
code finds the largest unassigned resource. Then the resource
constraints of that resource are considered and padding between
the previous resources and the current resources are inserted if
necessary. Then we get into the next iteration.
The reason this is optimal if all of your resources are a power of
two in size is because if your previous resource is a larger or equal
power of two no padding will be needed for the current resource.
The situation Yhlu has is below and it is weird. The resources are
assigned properly but when the are clumped together into a range
register on the bus that value is incorrect. Which is very weird.
ASSIGN RESOURCES, bus 3
PCI: 03:03.0 10 <- [0xe0000000 - 0xefffffff] prefmem
PCI: 03:03.0 18 <- [0xf0000000 - 0xf3ffffff] prefmem
And then on bus 2:
PCI: 01:02.0 24 <- [0xe0000000 - 0xffffffff] bus 3 prefmem
The bus 3 prefmem should be
PCI: 01:02.0 24 <- [0xe0000000 - 0xf3ffffff] bus 3 prefmem
So it looks like stuck bits or something.
Ollie can you get a boot log from Orange? Unless they are different types
of infiniband adapters things should be fairly comparable.
This is off-topic but I'm hoping someone here will know the answer.
In the linux kernel I need to make a module that will map the BOOTROM
of an RTL8139 based network card into PCI memory somewhere. I need to
write the pci config longword at offset 0x30 with the bus address. I can
arbitrarily pick one such as 0xd2000000 and the bootrom appears as expected,
but I don't want to step on anything else that might be using that memory
area. How can I allocate a block of memory in pci address space to know
where to safely map in the bootrom? Also I'll want to free the allocation
on module exit.
Apologies/thanks as the case may be.