{"id":18368710,"url":"https://github.com/openbmc/smbios-mdr","last_synced_at":"2025-10-27T09:34:46.651Z","repository":{"id":49499987,"uuid":"167009038","full_name":"openbmc/smbios-mdr","owner":"openbmc","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-01T10:05:50.000Z","size":1420,"stargazers_count":6,"open_issues_count":6,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-01T11:23:26.183Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openbmc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-22T14:34:25.000Z","updated_at":"2025-04-01T10:05:53.000Z","dependencies_parsed_at":"2023-09-27T06:40:33.886Z","dependency_job_id":"c20ab981-8981-4ad6-9296-008d7804dd63","html_url":"https://github.com/openbmc/smbios-mdr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fsmbios-mdr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fsmbios-mdr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fsmbios-mdr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fsmbios-mdr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openbmc","download_url":"https://codeload.github.com/openbmc/smbios-mdr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247522415,"owners_count":20952544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T23:27:07.340Z","updated_at":"2025-10-27T09:34:46.583Z","avatar_url":"https://github.com/openbmc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smbios-mdr\n\n## SMBIOS Parser\n\nThe main application in this repo is `smbiosmdrv2app`, capable of parsing a\nbinary [SMBIOS][1] table and publishing the system information on D-Bus, to be\nconsumed by other OpenBMC applications.\n\nThe SMBIOS table is usually sent to the BMC by the host firmware (BIOS). The\nsystem designer can theoretically choose any transport and mechanism for sending\nthe SMBIOS data, but there are at least two implementation today:\n\n### MDRv2\n\nThe primary API is a set of Intel OEM IPMI commands called Managed Data Region\nversion 2 (MDRv2), which provides a means for host firmware to send data through\nthe VGA shared memory region. MDRv2 has a concept of multiple agents, each\nmaintaining a \"directory\" containing directory entries (aka data sets). The host\ncan query for the existence and version of directories to determine when it\nneeds to send an updated SMBIOS table.\n\n`intel-ipmi-oem` implements the [IPMI command handlers][2], routing commands and\ndata to the correct agent (e.g. `smbios-mdr`). The [D-Bus interface][3] between\nthe IPMI handler and `smbios-mdr` is largely a mirror of IPMI commands.\n\n### phosphor-ipmi-blobs\n\n[`phosphor-ipmi-blobs`][4] is an alternative implementation of a generic IPMI\nblob transfer API. Compared to MDRv2, it is simpler and easier to use, but also\ntransfers the data in-band with the IPMI commands and therefore slower than\nusing a shared memory region (which may or may not be a concern).\n\n`phosphor-ipmi-blobs` provides a blob manager shared library for `ipmid` which\nimplements the IPMI commands. In turn, it loads blob handler libraries that each\nimplement support for specific blobs. Here in `smbios-mdr` we provide such a\nblob handler for the `/smbios` blob. It works by writing the data into\n`/var/lib/smbios/smbios2` (the local persistent cache for the SMBIOS table) and\ncalling the `AgentSynchronizeData` D-Bus method to trigger `smbios-mdr` to\nreload and parse the table from that file.\n\n## Intel CPU Info\n\n`cpuinfoapp` is an Intel-specific application that uses I2C and PECI to gather\nmore details about Xeon CPUs that aren't included in the SMBIOS table for some\nreason. It also implements discovery and control for Intel Speed Select\nTechnology (SST).\n\n[1]: https://www.dmtf.org/standards/smbios\n[2]:\n  https://github.com/openbmc/intel-ipmi-oem/blob/84c203d2b74680e9dd60d1c48a2f6ca8f58462bf/src/smbiosmdrv2handler.cpp#L1272\n[3]:\n  https://github.com/openbmc/phosphor-dbus-interfaces/blob/d1484a1499bc241316853934e6e8b735166deee2/yaml/xyz/openbmc_project/Smbios/MDR_V2.interface.yaml\n[4]: https://github.com/openbmc/phosphor-ipmi-blobs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fsmbios-mdr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenbmc%2Fsmbios-mdr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fsmbios-mdr/lists"}