In the near future, I'm going to have some needs for OpenBMC to be able to control VRs. These VRs might be on the baseboard itself, or on detected PCIe add-in-cards, and controlled over PMBus. Additionally, I will need a "hardware safe" way for the host to be able to modify the behavior of these VRs (usually different voltage settings), and to have that interface be constrained in such a way that the host can never set a value that's outside of a predefined range that's known to be safe for the hardware, which the BMC will own the definition of for security purposes. Does anyone else have similar needs? I've been pointed to phosphor-regulators which has some similar parallels; As-is, that solution won't work for me, because it's relying on fixed, platform specific json scripting to accomplish its goals. My hope would be for a more generalized linux devicetree based solution, as well as a representation on dbus that could be modified at runtime by Redfish/IPMI in band. Is there any other work I should look into that's similar? Does anyone have any strong opinions on how this should be organized or how it could be built? Thanks, -Ed
On 10/26/20, 4:04 PM, "openbmc on behalf of Ed Tanous" <openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org on behalf of edtanous@google.com> wrote: In the near future, I'm going to have some needs for OpenBMC to be able to control VRs. These VRs might be on the baseboard itself, or on detected PCIe add-in-cards, and controlled over PMBus. Additionally, I will need a "hardware safe" way for the host to be able to modify the behavior of these VRs (usually different voltage settings), and to have that interface be constrained in such a way that the host can never set a value that's outside of a predefined range that's known to be safe for the hardware, which the BMC will own the definition of for security purposes. Does anyone else have similar needs? I've been pointed to phosphor-regulators which has some similar parallels; As-is, that solution won't work for me, because it's relying on fixed, platform specific json scripting to accomplish its goals. My hope would be for a more generalized linux devicetree based solution, Voltage limits can certainly be passed via DTS file to limit user application configuration setting. as well as a representation on dbus that could be modified at runtime by Redfish/IPMI in band. Is there any other work I should look into that's similar? Does anyone have any strong opinions on how this should be organized or how it could be built? I would also like to add VR firmware upgrades as well in this. Thanks, -Ed
On Tue, Oct 27, 2020 at 11:55 AM Vijay Khemka <vijaykhemka@fb.com> wrote: > > On 10/26/20, 4:04 PM, "openbmc on behalf of Ed Tanous" <openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org on behalf of edtanous@google.com> wrote: > > In the near future, I'm going to have some needs for OpenBMC to be > able to control VRs. These VRs might be on the baseboard itself, or > on detected PCIe add-in-cards, and controlled over PMBus. > Additionally, I will need a "hardware safe" way for the host to be > able to modify the behavior of these VRs (usually different voltage > settings), and to have that interface be constrained in such a way > that the host can never set a value that's outside of a predefined > range that's known to be safe for the hardware, which the BMC will own > the definition of for security purposes. > > Does anyone else have similar needs? I've been pointed to > phosphor-regulators which has some similar parallels; As-is, that > solution won't work for me, because it's relying on fixed, platform > specific json scripting to accomplish its goals. My hope would be for > a more generalized linux devicetree based solution, > > Voltage limits can certainly be passed via DTS file to limit user > application configuration setting. Anything in the DTS would remove the possibility of controlling VRs that weren't part of the baseboard, and would be a problem for me. Also, these limits would likely need to be dynamic, and might rely on certain calibration constants in the chip. I don't think a hardcoded DTS limit would meet my needs. > > as well as a > representation on dbus that could be modified at runtime by > Redfish/IPMI in band. > > Is there any other work I should look into that's similar? Does > anyone have any strong opinions on how this should be organized or how > it could be built? > > I would also like to add VR firmware upgrades as well in this. I don't have the need to upgrade VR firmware out of band today, but if you're interested in helping define interfaces that would work for firmware upgrade or make it easy to add in the future, I'd appreciate the help.
I don't have the need to upgrade VR firmware out of band today, but if you're interested in helping define interfaces that would work for firmware upgrade or make it easy to add in the future, I'd appreciate the help. I will certainly look into this as this is lower in my priority tasks.
[-- Attachment #1: Type: text/plain, Size: 1684 bytes --] On Mon, Oct 26, 2020 at 04:02:22PM -0700, Ed Tanous wrote: > In the near future, I'm going to have some needs for OpenBMC to be > able to control VRs. These VRs might be on the baseboard itself, or > on detected PCIe add-in-cards, and controlled over PMBus. > Additionally, I will need a "hardware safe" way for the host to be > able to modify the behavior of these VRs (usually different voltage > settings), and to have that interface be constrained in such a way > that the host can never set a value that's outside of a predefined > range that's known to be safe for the hardware, which the BMC will own > the definition of for security purposes. > > Does anyone else have similar needs? I've been pointed to > phosphor-regulators which has some similar parallels; As-is, that > solution won't work for me, because it's relying on fixed, platform > specific json scripting to accomplish its goals. My hope would be for > a more generalized linux devicetree based solution, as well as a > representation on dbus that could be modified at runtime by > Redfish/IPMI in band. > > Is there any other work I should look into that's similar? Does > anyone have any strong opinions on how this should be organized or how > it could be built? > > Thanks, > > -Ed Are these PMBus VRs? I was able to program limits on a non-BMC project I was working on using the PMBus interfaces to the VRs we used on that project. I did need to write this patch which I'm still suppose to clean up with some additional clamp_val tweaks to avoid negative numbers. https://lore.kernel.org/lkml/20191001160407.6265-1-alpawi@amazon.com/ -- Patrick Williams [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
On Tue, Oct 27, 2020 at 1:26 PM Patrick Williams <patrick@stwcx.xyz> wrote: > > On Mon, Oct 26, 2020 at 04:02:22PM -0700, Ed Tanous wrote: > > In the near future, I'm going to have some needs for OpenBMC to be > > able to control VRs. These VRs might be on the baseboard itself, or > > on detected PCIe add-in-cards, and controlled over PMBus. > > Additionally, I will need a "hardware safe" way for the host to be > > able to modify the behavior of these VRs (usually different voltage > > settings), and to have that interface be constrained in such a way > > that the host can never set a value that's outside of a predefined > > range that's known to be safe for the hardware, which the BMC will own > > the definition of for security purposes. > > > > Does anyone else have similar needs? I've been pointed to > > phosphor-regulators which has some similar parallels; As-is, that > > solution won't work for me, because it's relying on fixed, platform > > specific json scripting to accomplish its goals. My hope would be for > > a more generalized linux devicetree based solution, as well as a > > representation on dbus that could be modified at runtime by > > Redfish/IPMI in band. > > > > Is there any other work I should look into that's similar? Does > > anyone have any strong opinions on how this should be organized or how > > it could be built? > > > > Thanks, > > > > -Ed > > Are these PMBus VRs? Yes. > I was able to program limits on a non-BMC project > I was working on using the PMBus interfaces to the VRs we used on that > project. > > I did need to write this patch which I'm still suppose to clean up with > some additional clamp_val tweaks to avoid negative numbers. > > https://lore.kernel.org/lkml/20191001160407.6265-1-alpawi@amazon.com/ That pointer helps. Thanks. > > -- > Patrick Williams