[OpenBMC] 简单解析 smbios-mdr

news/2025/2/8 5:56:08/

(*如果之后架构有变,这边不会更新)

smbios-mdr 

GitHub - openbmc/smbios-mdrhttps://github.com/openbmc/smbios-mdr

MDR(Managed Data Region) 是 OpenBMC中取得SMBIOS Table并解析其内容的一个功能,目前网上(在没有特别帐号权限下)能找到的资料蛮少的,所以这边会尽量用公开资料做个分析 如果还不认识SMBIOS 可以先看之前写的文章

轻松搞懂SMBIOS-CSDN博客https://blog.csdn.net/yeiris/article/details/122775007先体会一下 smbios-mdr 的结果,假如SMBIOS中有两个Processor struct,表示Platform上有两个CPU socket,透过 smbios-mdr 的运作后,最后我们可以从Redfish 的Processor Collection中看到两颗CPU socket

> curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/octet-stream" -X GET https://${bmcip}/redfish/v1/Systems/system/Processors{"@odata.id": "/redfish/v1/Systems/system/Processors","@odata.type": "#ProcessorCollection.ProcessorCollection","Members": [{"@odata.id": "/redfish/v1/Systems/system/Processors/cpu0"},{"@odata.id": "/redfish/v1/Systems/system/Processors/cpu1"}],"Members@odata.count": 2,"Name": "Processor Collection"
}

简单来说,BIOS将smbios table透过一些方式传给BMC后,BMC呼叫dbus method "AgentSynchronizeData" ,smbios-mdr会去将smbios资料expose 到dbus上,供使用者读取和操作

// github.com/openbmc/intel-ipmi-oem/blob/master/src/smbiosmdrv2handler.cpp
ipmi::RspType<> cmd_mdr2_data_done(uint16_t agentId, uint16_t lockHandle)
{// ...sdbusplus::message::message method = bus->new_method_call(service.c_str(), mdrv2Path, mdrv2Interface, "AgentSynchronizeData");// ...
}// github.com/openbmc/smbios-mdr/blob/master/src/smbios-ipmi-blobs/handler.cpp
bool syncSmbiosData()
{// ...sdbusplus::message::message method =bus.new_method_call(mdrV2Service, phosphor::smbios::mdrV2Path,mdrV2Interface, "AgentSynchronizeData");// ...
}

MDR(Managed Data Region)

MDR 是一种通用机制,用于管理固件实体之间的数据传输并在 BMC 中维护服务器数据。 目前,该数据由 BCT/SMBIOS 数据组成。 但将来可能会添加其他数据实体。

  • CMM:Chassis Management Module
  • BMC:Baseboard Management Controller
  • BIOS:Basic Input/Output System

CMM通常是放在PDB上面的,会连接1~N的BMC,负责机箱/机壳管理,可以参考英特尔机架规模设计(RSD,Rack Scale Design),当然,并不是所有伺服器都有CMM的存在,MDR的设计中是有包含CMM的,但是没有也没关系,等下会着重在BMC和BIOS的沟通

SMBIOS的传输

从BIOS传输SMBIOS给BMC目前有四个方式,分别是

  1. MDRv1 intel-ipmi-oem/smbioshandler.cpp · GitHub
  2. MDRv2 (Pull)   intel-ipmi-oem/smbiosmdrv2handler.cpp · GitHub
  3. MDRv2 (Push)   intel-ipmi-oem/smbiosmdrv2handler.cpp · GitHub
  4. IPMI blobs smbios-mdr/handler.cpp · GitHub

这四种方法最后都是将SMBIOS放到/var/lib/smbios底下,呼叫smbios-mdr去做解析并将资料放到dbus上,其中MDRV1 是BIOS透过指令将SMBIOS 慢慢送过去给BMC,MDR V2 则是BIOS将SMBIOS放到VGA share memory,BMC再去读出来,只是会根据主动发送指令的是BMC还是BIOS分成Pull和Push两种,最后IPMI Blobs的方式就是将SMBIOS视为一个Blobs传送给BMC

CPU 资讯检查

smbios-mdr 中还有另一个服务“xyz.openbmc_project.cpuinfo.service”。它的作用是根据SMBIOS中的Processor Type和Entity manager的config文件,通过PIROM访问CPU,确认CPU ID合法 ,如果没有问题,才将CPU信息曝光到dbus上

底下是Entity Manager Config的范例,Bus/Address记得改成主板上CPU的对应资讯

# Entity Manager config / baseboard.json
{"Address": "0x30","Bus": 0,"CpuID": 1,"Name": "CPU 1","PiromI2cAddress": "0x50","PiromI2cBus": 12,"PresenceGpio": [{"Name": "CPU1_PRESENCE","Polarity": "Low"}],
},

http://www.ppmy.cn/news/689769.html

相关文章

MDR多因子降维分析实战

欢迎关注”生信修炼手册”! MDR多因子降维法是逻辑回归的一种补充&#xff0c;可以有效进行基因和基因&#xff0c;基因和环境因素之间的相互作用分析&#xff0c;核心算法如下 第一步&#xff0c;将数据集拆分成训练集和测试集&#xff0c;用于交叉验证&#xff0c;其中训练集…

【知识梳理】机器字长和存储字长 与 MAR和MDR的联系

知识 机器字长&#xff1a; 指CPU一次能够处理的数据的位数&#xff0c;通常与CPU的寄存器位数有关&#xff08;ALU&#xff0c;MDR&#xff09;。字长越长&#xff0c;数的表示范围越大&#xff0c;精度也就越高。 存储字长&#xff1a;一个存储单元存放一串二进制代码&…

欧盟发布MDR法规

欧盟MDR法规&#xff0c;中国制造业有利弊。 利&#xff1a;门槛高了&#xff0c;小企业面临国外市场停止&#xff0c;重投入企业可以兼并小企业或者让小企业成为纯加工代工商&#xff0c;规模化技集成会越来越明显&#xff0c;中国企业可以欧盟拓展市场他&#xff0c;收购国外…

医疗器械CE认证 (MDR)认证之包装验证解读

一、医疗器械CE认证(MDR)认证解读: 医疗器械法规(MDR)是项新法规&#xff0c; 取代了医疗器械指令(MDD) 93/42/EEC和有源植入医疗器械(AIMD)指令90/385/EEC。它适用于所有打算将产品放入欧盟(EU)的医疗设备制造商。 二、医疗器械CE认证(MDR)认证适用范围: 包括了医疗设备以及…

使用nodejs+imageMagick图片合成报错记录

如果是报这个错误 Could not execute GraphicsMagick/ImageMagick: gm "convert" "/www/temp/168823116798750156.png" "-crop" "1277.7596x1679.637940614.89966" "/www/temp/168823116798750156.png" this most likely…

MDR和数据总线的区别,和关于这类题目易混淆点的总结

1. MDR&#xff0c;MAR和数据总线&#xff1a; MDR和存储字长是一样的。 数据总线位数代表cpu单次交换数据量。其中数据总线的宽度可能和MDR有关&#xff0c;如果和MDR不一样&#xff0c;那么就代表传一个数据要传多次。 地址总线和MAR宽度一样 MAR的宽度和数据的个数有关 存…

机器字长,存储字长,存储芯片的数据线,CPU的数据总线,MDR位数,MAR位数,存储芯片和存储器的关系。

CPU总线的宽度运算器的位数通用寄存器的宽度数据总线宽度 &#xff08;字长&#xff1a;不加修饰的一般为机器字长&#xff09; ——————————————————————————————————————————— 首先明确一点&#xff0c;32k*32位“存储器”是看不…

欧盟旧MDD到新MDR指令更新及区别?

目录 1、总体变化 2、从MDD到MDR具体变化有&#xff1a; 3、MDR法规和MDD指令区别&#xff1a; 4、欧盟MDR与MDD的差异? 5、MDD指令CE技术文件清单 1、欧盟MDD指令与MDR的区别-海外顾问帮 2、欧盟CE认证医疗器械MDR&MDD差异_市场分析_医疗器械资讯-3618医疗器械网 1…