{"id":4508,"date":"2019-12-10T08:10:00","date_gmt":"2019-12-10T16:10:00","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=4508"},"modified":"2019-12-10T08:08:51","modified_gmt":"2019-12-10T16:08:51","slug":"looking-at-the-state-of-blackbird-firmware","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2019\/12\/10\/looking-at-the-state-of-blackbird-firmware\/","title":{"rendered":"Looking at the state of Blackbird firmware"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=a4XGvssR-ag\">Having<\/a> <a href=\"https:\/\/github.com\/open-power\/op-test\/graphs\/contributors\">been<\/a> <a href=\"https:\/\/github.com\/open-power\/op-build\/graphs\/contributors\">somewhat<\/a> <a href=\"https:\/\/github.com\/open-power\/skiboot\/graphs\/contributors\">involved<\/a> <a href=\"https:\/\/github.com\/open-power\/ffs\/graphs\/contributors\">in<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=hcLhKjxa-40\">OpenPOWER<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=fTLsS_QZ8us\">firmware<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=GHmx0JvZG1w\">I<\/a> <a href=\"https:\/\/patchwork.ozlabs.org\/project\/skiboot\/list\/?submitter=73723&amp;state=%2A&amp;archive=both\">have<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2018\/04\/18\/ccache-and-op-build\/\">a<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2018\/11\/19\/tracing-flash-reads-and-writes-during-boot\/\">bunch<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2017\/12\/11\/a-simplified-view-of-openpower-firmware-development\/\">of<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2017\/08\/22\/op-test-framework-lets-break-the-console\/\">experience<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2017\/01\/30\/recording-of-my-lca2017-talk-organizational-change-challenges-in-shipping-open-source-firmware\/\">and<\/a> <a href=\"https:\/\/www.flamingspork.com\/blog\/2017\/10\/20\/zmodem-saves-the-day-or-why-my-firmware-for-a-machine-with-a-cpu-from-2017-contains-a-serial-file-transfer-protocol-from-the-1980s\/\">opinions<\/a> on maintaining firmware trees for products, what working with upstream looks like and all that.<\/p>\n\n\n\n<p>So, with my new <a href=\"https:\/\/raptorcs.com\/content\/BK1MB1\/intro.html\">Blackbird<\/a> system I decided to take a bit of a look as to what the firmware situation was like.<\/p>\n\n\n\n<p>There&#8217;s two main parts of firmware: BMC and Host. The BMC firmware runs purely on the ASPEED AST2500 and is based on <a href=\"https:\/\/www.openbmc.org\/\">OpenBMC<\/a> while the host firmware is what runs on the POWER9 and is based off of <a href=\"https:\/\/github.com\/open-power\/op-build\/\">OpenPOWER Firmware as assembled by op-build<\/a>.<\/p>\n\n\n\n<p>Initial impressions on the BMC is that there doesn&#8217;t seem to be <strong>any<\/strong> web based UI for it, which is kind of disappointing, as the Web UI being developed upstream has some nice qualities, and I&#8217;d say I even <strong>enjoyed<\/strong> using it when it was built into BMC firmware for systems we had when I was at IBM.<\/p>\n\n\n\n<p>Looking at the git trees, the raptor-v1.00 tag is OpenBMC 2.7.0-dev-533-g386e5602e while current master is 2.8.0-dev-960-g10f7830bd. The spot where it split off was 2.7.0-dev-430-g7443ee80b, from April 2019 &#8211; so it&#8217;s not too old, but I&#8217;m also not convinced there should have been some security patches since then.<\/p>\n\n\n\n<p>I&#8217;m not sure if any of the OpenBMC code is upstream, I haven&#8217;t looked.<\/p>\n\n\n\n<p>Unfortunately, none of the host firmware is upstream.<\/p>\n\n\n\n<p>On the host firmware side, v2.3-rc2-67-ga6a5f142 is the Raptor tag, and that compares with current master of v2.4-305-g54d8daf4, the place where Raptor forked was v2.3-rc2-9-g7b556015, again in April of 2019. Considering there was an upstream release in May of 2019 (v2.3), and again in July (v2.4), it could have easily have made it into an upstream release.<\/p>\n\n\n\n<p>Unfortunately, there doesn&#8217;t seem to have been an upstream op-build release since v2.4 back in July (when I made it shortly before leaving IBM).<\/p>\n\n\n\n<p>The skiboot component of host firmware has had an upstream release since I left (v6.5 in mid-August 2019), so the (rather trivial) platform support could have easily made it. I have a cleaned up and ready to upstream patch for it, I just need some DIMMs to actually test with before I send the patch.<\/p>\n\n\n\n<p>As the current firmware situation stands, producing another build with updated upstream code is tricky due to the out-of-tree nature of the Blackbird patches, and a straight &#8220;git merge&#8221; is probably doable by some people, but not everybody.<\/p>\n\n\n\n<p>On my TODO list is to get all the code into a state I can upstream it, assess vulnerability to <a href=\"https:\/\/www.flamingspork.com\/blog\/2019\/01\/23\/cve-2019-6260-gaining-control-of-bmc-from-the-host-processor\/\">CVE-2019-6260<\/a>, and work out how I want to make it do Secure Boot (something that isn&#8217;t in upstream firmware yet, and currently would require a TPM, which I do not have).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Having been somewhat involved in OpenPOWER firmware, I have a bunch of experience and opinions on maintaining firmware trees for products, what working with upstream looks like and all that. So, with my new Blackbird system I decided to take &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2019\/12\/10\/looking-at-the-state-of-blackbird-firmware\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[76,588,615],"tags":[740,636,656,587],"class_list":["post-4508","post","type-post","status-publish","format-standard","hentry","category-code","category-opal","category-powerpc","tag-blackbird","tag-opal","tag-openbmc","tag-openpower"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-1aI","jetpack-related-posts":[{"id":4528,"url":"https:\/\/www.flamingspork.com\/blog\/2019\/12\/16\/a-close-to-upstream-firmware-build-for-the-raptor-blackbird\/","url_meta":{"origin":4508,"position":0},"title":"A close-to-upstream firmware build for the Raptor Blackbird","author":"Stewart Smith","date":"2019-12-16","format":false,"excerpt":"UPDATE: A newer version is available here It goes without saying that using this build is a At Your Own Risk and I make zero warranty. AFAIK it can't physically destroy your system. My GitHub op-build branch stewart-blackbird-v1 has all the changes built into this build (the VERSION displayed in\u2026","rel":"","context":"In &quot;cool gadgets&quot;","block_context":{"text":"cool gadgets","link":"https:\/\/www.flamingspork.com\/blog\/category\/cool-gadgets\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4544,"url":"https:\/\/www.flamingspork.com\/blog\/2020\/02\/01\/another-close-to-upstream-blackbird-firmware-build\/","url_meta":{"origin":4508,"position":1},"title":"Another close-to-upstream Blackbird Firmware Build","author":"Stewart Smith","date":"2020-02-01","format":false,"excerpt":"A few weeks ago (okay, close to six), I put up a firmware build for the Raptor Blackbird with close-to-upstream firmware (see here). Well, I've done another build! It's current op-build (as of this morning), but my branch with patches for the Raptor Blackbird. The skiboot patch is there, as\u2026","rel":"","context":"In &quot;OPAL&quot;","block_context":{"text":"OPAL","link":"https:\/\/www.flamingspork.com\/blog\/category\/opal\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4599,"url":"https:\/\/www.flamingspork.com\/blog\/2020\/05\/13\/a-op-build-v2-5-rc1-based-raptor-blackbird-build\/","url_meta":{"origin":4508,"position":2},"title":"A op-build v2.5-rc1 based Raptor Blackbird Build","author":"Stewart Smith","date":"2020-05-13","format":false,"excerpt":"I have done a few builds of firmware for the Raptor Blackbird since I got mine, each of them based on upstream op-build plus a few patches. The previous one was Yet another near-upstream Raptor Blackbird firmware build that I built a couple of months ago. This new build is\u2026","rel":"","context":"In &quot;cool gadgets&quot;","block_context":{"text":"cool gadgets","link":"https:\/\/www.flamingspork.com\/blog\/category\/cool-gadgets\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3775,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/07\/17\/openpower-firmware-up-on-github\/","url_meta":{"origin":4508,"position":3},"title":"OpenPower firmware up on github!","author":"Stewart Smith","date":"2014-07-17","format":false,"excerpt":"With the whole OpenPower thing, a lot of low level firmware is being open sourced, which is really exciting for the platform - the less proprietary code sitting in memory the better in my books. If you go to https:\/\/github.com\/open-power you'll see code for a bunch of the low level\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4561,"url":"https:\/\/www.flamingspork.com\/blog\/2020\/03\/08\/yet-another-near-upstream-raptor-blackbird-firmware-build\/","url_meta":{"origin":4508,"position":4},"title":"Yet another near-upstream Raptor Blackbird firmware build","author":"Stewart Smith","date":"2020-03-08","format":false,"excerpt":"In what is coming a month occurance, I've put up yet another firmware build for the Raptor Blackbird with close-to-upstream firmware (see here and here for previous ones). Well, I\u00e2\u20ac\u2122ve done another build! It\u00e2\u20ac\u2122s current op-build (as of yesterday), but my branch with patches for the Raptor Blackbird. The skiboot\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4001,"url":"https:\/\/www.flamingspork.com\/blog\/2015\/10\/20\/tianocore-uefi-ported-to-openpower\/","url_meta":{"origin":4508,"position":5},"title":"TianoCore (UEFI) ported to OpenPower","author":"Stewart Smith","date":"2015-10-20","format":false,"excerpt":"Recently, there's been (actually two) ports of TianoCore (the reference implementation of UEFI firmware) to run on POWER on top of OPAL (provided by skiboot) - and it can be run in the Qemu PowerNV model. More details: http:\/\/firmwaresecurity.com\/2015\/10\/12\/tianocore-for-openpower\/ https:\/\/github.com\/andreiw\/ppc64le-edk2 https:\/\/github.com\/ozbenh\/edk2","rel":"","context":"In &quot;IBM&quot;","block_context":{"text":"IBM","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/ibm-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=4508"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4508\/revisions"}],"predecessor-version":[{"id":4509,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4508\/revisions\/4509"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=4508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=4508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=4508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}