1 / 116

Open Source Bring-Up Tools

Tim Hockin thockin@google.com OLS 2008. Open Source Bring-Up Tools. What is “bring-up”?. What is “bring-up”?. Process of making a new piece of hardware boot $YOUR_OS. What is “bring-up”?. Process of making a new piece of hardware boot $YOUR_OS properly. What is “bring-up”?.

gizela
Download Presentation

Open Source Bring-Up Tools

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tim Hockin thockin@google.com OLS 2008 Open Source Bring-Up Tools

  2. What is “bring-up”?

  3. What is “bring-up”? Process of making a new piece of hardware boot $YOUR_OS

  4. What is “bring-up”? Process of making a new piece of hardware boot $YOUR_OS properly

  5. What is “bring-up”? Process of making a new piece of hardware boot $YOUR_OS properly In our case $YOUR_OS == Linux

  6. Tada! Bootdata ok (command line is root=UUID=260F-12F2 ro google)‏ Linux version 2.6.18.5-gg26 (foobar@corp.google.com) (gcc version 4.1.1) #1 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009c800 (usable)‏ BIOS-e820: 000000000009c800 - 00000000000a0000 (reserved)‏ BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)‏ BIOS-e820: 0000000000100000 - 000000007fbe1800 (usable)‏ BIOS-e820: 000000007fbe1800 - 000000007fbe8c00 (ACPI data)‏ BIOS-e820: 000000007fbe8c00 - 000000007fbe9000 (ACPI NVS)‏ BIOS-e820: 000000007fbe9000 - 00000000a0000000 (reserved)‏ BIOS-e820: 00000000f8000000 - 00000000fa000000 (reserved)‏ BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)‏ BIOS-e820: 0000000100000000 - 0000000480000000 (usable)‏ ACPI: PM-Timer IO Port: 0x4008 ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)‏ Processor #0 15:1 APIC version 16 ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)‏ Processor #1 15:1 APIC version 16 ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])‏ ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])‏ ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])‏ ACPI: IOAPIC (id[0x0e] address[0xfec00000] gsi_base[0])‏ IOAPIC[0]: apic_id 14, version 17, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)‏

  7. That sounds easy! There are a few catches...

  8. That sounds easy! There are a few catches Nothing ever works the first time

  9. That sounds easy! There are a few catches Nothing ever works the first time Something will never work at all

  10. That sounds easy! There are a few catches Nothing ever works the first time Something will never work at all At least 1 major issue is guaranteed to show up as soon as your customer is looking

  11. Drummond's Law

  12. Drummond's Law “The universe hates you.”

  13. Bring-up eats time

  14. Bring-up eats time “Is it a hardware problem or a software problem?”

  15. Bring-up eats time “Or both?”

  16. Drummond's Law in action It only happens on the customer's workload It only happens on < 1% of test runs It goes away when instrumented

  17. What can we do? Gather as much data as we can Streamline testing and debugging Learn about the hardware Build tools!

  18. What can we do? Gather as much data as we can Streamline testing and debugging Learn about the hardware Build free tools!

  19. Problem: Console output

  20. Problem: Console output Many servers do not have VGA

  21. Problem: Console output Many servers do not have VGA Most servers do have serial ports

  22. Problem: Console output Many servers do not have VGA Most servers do have serial ports Linux supports serial console

  23. Problem: Console output Many servers do not have VGA Most servers do have serial ports Linux supports serial console Many BIOSes do not support serial console

  24. Problem: Console output Many servers do not have VGA Most servers do have serial ports Linux supports serial console Many BIOSes do not support serial console Many BIOSes that support serial console consider it a “premium” feature

  25. SGABIOS

  26. SGABIOS Tiny real-mode option ROM

  27. SGABIOS Tiny real-mode option ROM Hooks BIOS console interrupts Int 10h, Int 16h

  28. SGABIOS Tiny real-mode option ROM Hooks BIOS console interrupts Int 10h, Int 16h Provides full console redirection

  29. SGABIOS Tiny real-mode option ROM Hooks BIOS console interrupts Int 10h, Int 16h Provides full console redirection Transparent to most BIOSes and legacy apps

  30. Why is it better? Free, in both senses of the word

  31. Why is it better? Free, in both senses of the word Optimized for slow serial links

  32. Why is it better? Free, in both senses of the word Optimized for slow serial links It works!

  33. Features Passes control to VGA, if present Provides hooks for smarter BIOS or EFI logging Supports up to 255x255 consoles Recent-write caching

  34. How can I use it? Talk to your platform or BIOS vendor Look for BIOS-editing tools for $YOUR_BIOS Load it as an option-ROM on a card

  35. http://sgabios.googlecode.com

  36. Hypothetical

  37. Hypothetical Your system boots, but the BIOS did not enable FeatureX

  38. Hypothetical • Your system boots, but the BIOS did not enable FeatureX • You really, really want FeatureX

  39. Hypothetical • Your system boots, but the BIOS did not enable FeatureX • You really, really want FeatureX • CPUCorp tells you that FeatureX is enabled by bit 20 of MSR 0x12345678

  40. Hypothetical • Your system boots, but the BIOS did not enable FeatureX • You really, really want FeatureX • CPUCorp tells you that FeatureX is enabled by bit 20 of MSR 0x12345678 • How do you do it?

  41. You could... Get a new BIOS from Mobo Inc. Slow turnaround time High risk Don't you want to test it first?

  42. You could... Tweak and rebuild a custom kernel Where does a hack like this go? Pretty heavy handed

  43. You could... Write a C/Perl/Python program A much better answer Doesn't scale well for frequent use cases

  44. Enter iotools A simple suite of tools to provide access to hardware registers

More Related