{"id":18368645,"url":"https://github.com/openbmc/x86-power-control","last_synced_at":"2025-04-06T17:31:46.787Z","repository":{"id":74555034,"uuid":"143338747","full_name":"openbmc/x86-power-control","owner":"openbmc","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-13T04:37:06.000Z","size":1324,"stargazers_count":12,"open_issues_count":9,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-09-13T16:21:00.462Z","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":"2018-08-02T19:51:09.000Z","updated_at":"2024-09-13T04:37:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"674f0272-5ae2-44fb-8a67-99c94def68f9","html_url":"https://github.com/openbmc/x86-power-control","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%2Fx86-power-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fx86-power-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fx86-power-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fx86-power-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openbmc","download_url":"https://codeload.github.com/openbmc/x86-power-control/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247522389,"owners_count":20952540,"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:26:50.846Z","updated_at":"2025-04-06T17:31:46.363Z","avatar_url":"https://github.com/openbmc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# X86 power control\n\nThis repository contains an OpenBMC compliant implementation of power control\nfor x86 servers. It relies on a number of features to do its job. It has several\nintentional design goals.\n\n1. The BMC should maintain the Host state machine internally, and be able to\n   track state changes.\n2. The implementation should either give the requested power control result, or\n   should log an error on the failure it detected.\n3. The BMC should support all the common operations, hard power on/off/cycle,\n   soft power on/off/cycle.\n\nThis daemon has been successfully used on a variety of server platforms; it\nshould be able to support platforms with power control GPIOs similar to those in\nits config file.\n\nx86-power-control uses default json file (power-config-host0.json) for GPIO\nconfiguration. However this can be customized by producing your own\npower-config-host0.json file.\n\n## Signal Definitions\n\nDefinitions can be configured by two type: GPIO and DBUS\n\n### GPIO\n\nFor the platform having direct GPIO access can use the type GPIO and define like\nbelow.\n\n```json\n{\n  \"Name\": \"PostComplete\",\n  \"LineName\": \"POST_COMPLETE\",\n  \"Type\": \"GPIO\"\n}\n```\n\n### DBUS\n\nFor the platform not having direct GPIO access can use dbus based event monitor\nby using the type DBUS.\n\n```json\n{\n  \"Name\": \"PowerButton\",\n  \"DbusName\": \"xyz.openbmc_project.Chassis.Event\",\n  \"Path\": \"/xyz/openbmc_project/Chassis/Event\",\n  \"Interface\": \"xyz.openbmc_project.Chassis.Event\",\n  \"Property\": \"PowerButton_Host1\",\n  \"Type\": \"DBUS\"\n}\n```\n\nx86-power-control will monitor the property change from the given DbusName and\ntake appropriate action. \\*define Property as a bool variable.\n\nCaveats: This implementation does not currently implement the common targets\nthat other implementations do. There were several attempts to, but all ended in\ntiming issues and boot inconsistencies during stress operations.\n\n## Build Options\n\n### chassis-system-reset\n\nEnable chassis system power reset to allow removing power and restoring back.\n\n### use-plt-rst\n\nThe POST Complete GPIO is usually held asserted by BIOS after POST complete and\nde-asserts on reset. This de-assert behavior is currently used to detect warm\nresets.\n\nSome systems are adding support for a PLT_RST eSPI signal that can be used to\nmore accurately detect warm resets. When this option is enabled,\nx86-power-control will use PLT_RST to detect warm resets instead of POST\nComplete.\n\nSee \u003chttps://github.com/Intel-BMC/host-misc-comm-manager\u003e for implementation\nexample.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fx86-power-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenbmc%2Fx86-power-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fx86-power-control/lists"}