HTX card from Port mapped to memory mapped.

Only for programmers and BIOS gurus with technical questions.
Post Reply
bignon
New visitors - please read the rules.
Posts: 2
Joined: Thu Oct 08, 2009 5:26 pm

First of all, i'm new to this board and just wanted to say Hello :) .

Now my problem! I working at a investigation department at a Spanish university they are working with a new kind of NIC that connects directly to the HTX slot on their Supermicro mobo (H8QME-2+). Unfortunately, for the test they want to do, the card has to be memory mapped but right now the BIOS (AMI) set the card Port mapped. Thats where they put me in the game :wink: . They give me the source code of the BIOS (of course not without signing a NDA) and tell me to fix that! But there is just a little problem, I don't know how! Not even where to start! So I hope someone could give me a tip where to start or a complete HOWTO would be fine ;).

THX in advanced!
sharky
BIOS Newbie
Posts: 27
Joined: Wed Oct 07, 2009 2:29 pm

bignon wrote:I working at a investigation department at a Spanish university they are working with a new kind of NIC that connects directly to the HTX slot on their Supermicro mobo (H8QME-2+). Unfortunately, for the test they want to do, the card has to be memory mapped but right now the BIOS (AMI) set the card Port mapped.
Ah, the nice stuff you see in high performance computing. Infinipath or 10GbE?
bignon wrote: They give me the source code of the BIOS (of course not without signing a NDA)
If you already signed the NDA for the BIOS code, you're burned and I don't know anybody on my contact list who can help you with the BIOS code. Sorry. Please read on anyway.

There is a HyperTransport Center of Excellence team at the University of Heidelberg who have been dealing with such stuff (and way more complicated issues). AFAIK they are using coreboot to initialize their boards because it supports having a FPGA in one CPU socket on dual-socket boards and other funnies you can do on boards with HT. And IIRC they are using HTX NICs as well.

Your problem is that the BIOS NDA means you will have to tread _very_ carefully if you work with any opensource BIOS replacement (the original BIOS vendor usually has pretty draconian NDAs). On the other hand, integrating any working code from opensource BIOS alternatives into your original BIOS (closed source) will be a licensing violation.

Your choices, as I see them, are:
  • Find someone who did not sign the NDA and have him/her look at opensource BIOS alternatives.
  • If you didn't sign the NDA yet, look at opensource BIOS alternatives yourself (coreboot might be an option, it seems to support boards very similar to yours).
  • Pay someone a few ten thousand dollars to fix your problem with the BIOS code (BIOS codebases are horrible to look at and fixing them is not easy, plus there are not so many BIOS programmers out there who will work for cheap).
  • Pay someone (or bribe with free hardware) to add support for your board in coreboot (the code is pretty readable, and some coreboot developers have rather affordable rates).
  • Pay someone to add support for your board/chipset in another free BIOS alternative (no idea if any besides coreboot exist for your chipset/CPU).
Good luck! Firmware hacking is fun (if you have docs).


Disclaimer: I am an x86 firmware developer, but I do not offer any services and I do not have any financial interest in any of the solutions that would apply for you. I am not affiliated in any way with the HyperTransport Center of Excellence. (This disclaimer is brought to you by the fear of this post being labeled as spam.)
maman
Master Flasher
Posts: 173
Joined: Sun Mar 31, 2002 2:08 pm
Location: Taka Bonerate National Park, Indonesia
Contact:

I'm not sure about the structure of the BIOS code. Perhaps, the following hint can help you:
1. There's a jump table in most BIOS which is used to call all of the Power-On Self Test (POST) routines. You can start there.
2. One of the jump table entry points to routines to initialize expansion card. Perhaps, this entry is what you're looking for.

Anyway, because you have the source code, it will be much easier to locate the routine. (what about grepping the whole source with the particular HTX chip name or other keywords?)

Note:
--------
I've never been working with HT bus initialization and my experience is limited to PCI bus so far.
bignon
New visitors - please read the rules.
Posts: 2
Joined: Thu Oct 08, 2009 5:26 pm

There is a HyperTransport Center of Excellence team at the University of Heidelberg who have been dealing with such stuff (and way more complicated issues). AFAIK they are using coreboot to initialize their boards because it supports having a FPGA in one CPU socket on dual-socket boards and other funnies you can do on boards with HT. And IIRC they are using HTX NICs as well.
Yip, thats exactly the NIC i was talking about! Same line of investigation but different Universities, one of them is Heidelberg! (and there HTX board)


* Pay someone a few ten thousand dollars to fix your problem with the BIOS code (BIOS codebases are horrible to look at and fixing them is not easy, plus there are not so many BIOS programmers out there who will work for cheap).
* Pay someone (or bribe with free hardware) to add support for your board in coreboot (the code is pretty readable, and some coreboot developers have rather affordable rates).
* Pay someone to add support for your board/chipset in another free BIOS alternative (no idea if any besides coreboot exist for your chipset/CPU).
Paying someone is really not an option for me, since i have little money and I'm the one who's getting payed for changing the code!
I'm not sure about the structure of the BIOS code. Perhaps, the following hint can help you:
1. There's a jump table in most BIOS which is used to call all of the Power-On Self Test (POST) routines. You can start there.
2. One of the jump table entry points to routines to initialize expansion card. Perhaps, this entry is what you're looking for.
At the end of this week I will finally have my hands on this code and i will look for this table.

Thanks guys for your replies! I just can hope they are not giving me only the bare code but some docs, too! :)
Post Reply