summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* fru: support two time string formatsPatrick Venture2019-08-081-3/+26
| | | | | | | | | | | Support parsing two time string formats to enable use of ipmi-fru-parser and entity-manager to provide FRU details on dbus. Tested: Verified the entity-manager dbus output for the FRU MfgDate is now parsed correctly. Signed-off-by: Patrick Venture <venture@google.com> Change-Id: I053ec225b51166269c5a5a800ad8d607fd0cc233
* gitignore: add test and coverage artifactsPatrick Venture2019-08-081-3/+3
| | | | | Signed-off-by: Patrick Venture <venture@google.com> Change-Id: If630a4c2411a66b4995f6807e185bd5cd36d165e
* fru: remove assumption on object ownerPatrick Venture2019-08-011-7/+25
| | | | | | | | | | | | | The fru read yaml configuration allows specifying a dbus path and a dbus interface. Dynamically look up what service provides that interface with that dbus path. Continue supporting partial paths for devices owned by the Inventory Manager. Tested: Verified the module now reads the FRU properties over dbus if the object is owned by another service (exported via entity-manager). Signed-off-by: Patrick Venture <venture@google.com> Change-Id: I5c0aeb11d0b33fab437a55dea3351a47feab0783
* fru: use ipmifruproperty for property lookupPatrick Venture2019-08-012-6/+7
| | | | | | | | | | | | | | | | | | The member IPMIFruData::property was unused and instead the property lookup was performed with the phosphor-dbus-interface property name. The IPMIFruData::property field is meant to map from dbus property to FRU property to allow a variety of dbus mappings. Tested: Verified the member was unused. Tested: Verified that a configuration yaml mapping is respected and ipmid will report the information expected given a FRU published to dbus. Note: The fields for IPMI FRU properties were taken from the example YAML and are expected to be what was used by machines leveraging this feature. Signed-off-by: Patrick Venture <venture@google.com> Change-Id: I44f73b67ecdeae2d772daa38cc21cc18cdf9c7ce
* user_mgmt: Enable SOL payload access by default.Saravanan Palanisamy2019-08-011-29/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | Enabling SOL payload access for all users in all channels, by default. It is not mandated by IPMI spec, but needed for backward-compatibility. Tested-by: 1. Run Get User Payload Access Command for random user on LAN channel. // Command - (channel 3 is of LAN channel type) ipmitool -I lanplus...raw 0x06 0x4D 3 7 02 00 00 00 // Response 2. Disable SOL payload and rerun Get User Payload Access Command. // Command ipmitool -I lanplus...raw 0x06 0x4C 3 0x48 0x02 0 0x00 0 ipmitool -I lanplus...raw 0x06 0x4D 3 8 00 00 00 00 // Response 3. Run Get User Payload Access on non-LAN, session-less channel. // Command - (channel 7 is KCS channel type) ipmitool -I lanplus...raw 0x06 0x4D 7 7 Error:(...rsp=0xcc): Invalid data field in request // Response 4. Check SOL session activation and 'ipmi_user.json' file contents. Change-Id: I48c50e6366a0025d5ae066c8a8f3694d2f710732 Signed-off-by: Saravanan Palanisamy <saravanan.palanisamy@linux.intel.com>
* sensorhandler: add accessor for entities singletonPatrick Venture2019-07-311-7/+16
| | | | | | | | | Add an accessor to grab the entities singleton as a step towards building it on first access from json. Tested: This change has not been tested beyond build verification. Signed-off-by: Patrick Venture <venture@google.com> Change-Id: I2cf1fbd7ad10b4e1b63af347c824ad37bc8a56c9
* Sensorhandler: move get SDR info & reserve SDR to new APIjayaprakash Mutyala2019-07-303-71/+44
| | | | | | | | | | | | | | | | | | | | Rewrite "Get SDR info and Reserve SDR" command to use the newly introduced IPMI provider API. Tested: verified using ipmitool sensor commands. a. get SDR info Command: ipmitool raw 0x04 0x20 0x01 Output: 02 01 Command: ipmitool raw 0x04 0x20 0x00 Output: 00 01 b. reserve sdr Command: ipmitool raw 0x04 0x22 Output: 01 00 Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com> Change-Id: Id1d7015cec45c5524210033e4210c710da27e9ae Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
* chassishandler: move set chassis cap to new apianil kumar appana2019-07-251-53/+54
| | | | | | | | | | | | | | | Rewrite set chassis capabilities to use new ipmi provider api Tested: verified ipmitool raw get chassis capabilities command ipmitool raw 0 5 00 20 20 20 20 20 // set chassis cap command ipmitool raw 0 0 // get chassis cap command 00 14 14 14 14 14 // updated response in hex Signed-off-by: anil kumar appana <anil.kumarx.appana@intel.com> Change-Id: Idcc7c12250d4465ff838c15ba0d511701688a3a2
* storagehandler: move get & reserve SEL to new APIjayaprakash Mutyala2019-07-252-65/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrite "Get sel info & Reserve SEL" commands to use the new API. Tested: 1. verified ipmitool sel info is same both before and after the changes Command: ipmitool sel info Output: SEL Information Version : 1.5 (v1.5, v2 compliant) Entries : 0 Free Space : 65535 bytes or more Percent Used : unknown Last Add Time : Not Available Last Del Time : Not Available Overflow : false Supported Cmds : 'Delete' 'Reserve' Command: ipmitool raw 0x0a 0x40 Output: 51 00 00 ff ff ff ff ff ff ff ff ff ff 0a 2. verfied the Reserve SEL command ipmitool raw 0x0a 0x42 01 00 ipmitool raw 0x0a 0x42 02 00 Change-Id: I37d602293066274a3fc417ad7e59cea3c73315f7 Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
* user_layer: Add get/set user payload access.Saravanan Palanisamy2019-07-196-0/+534
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IPMI Spec reference: Section 24.6, 24.7. Support is added to get/set user access details for the unreserved, supported payload types defined by Spec. SOL is the only unreserved, supported payload currently. If support is needed for unreserved std/oem payload types in future, they can be enabled with minor source code changes to this implementation. All payload types are packed in a JSON object "payload_enabled" in ipmi_user.json file. Tested-by: 1. For user 8 in channel 3, Enable SOL payload. // Command - (channel 3 is of LAN channel type) ipmitool -I lanplus...raw 0x06 0x4C 3 0x8 0x02 0 0 0 // Verify it with Get User Payload Access Command ipmitool -I lanplus...raw 0x06 0x4D 3 8 02 00 00 00 // Response 2. Disable SOL payload. // Command ipmitool -I lanplus...raw 0x06 0x4C 3 0x48 0x02 0 0x00 0 // Verify it with Get User Payload Access Command ipmitool -I lanplus...raw 0x06 0x4D 3 8 00 00 00 00 // Response 3. Enable unsupported payload stdPayload7. // Command ipmitool -I lanplus...raw 0x06 0x4C 3 0x8 0x80 0 0 0 Error: Invalid data field in request // Response Change-Id: Idc57b04a747e55666407d928d8b2169223501e5b Signed-off-by: Saravanan Palanisamy <saravanan.palanisamy@linux.intel.com>
* sensorhandler: fix type of get_reservation_id()Emily Shaffer2019-07-121-1/+1
| | | | | | | | The implementation of get_reservation_id() is combining two uint8_t, but currently returns a uint8_t. Return instead a uint16_t to correct this. Change-Id: I5bbfdd230bcc2bb467b755ac90a39c6bf11167d1 Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
* storagehandler: move get sdr info to new APIPradeep Kumar2019-07-052-34/+18
| | | | | | | | | | | | | Rewrite: "Get SDR repository info" command to new IPMI provider API. Tested: Verified using ipmitool. ipmitool raw 0x0a 0x20 51 01 00 ff ff 00 00 00 00 00 00 00 00 00 Change-Id: I4b18631c4b4182f2c98caa145c151f3079cd7fc4 Signed-off-by: Pradeep Kumar <pradeep1x.kumar@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
* docs: add reviewing chapter to testing.mdEmily Shaffer2019-06-251-0/+37
| | | | | | | | | | Cover some best practices while reviewing a test suite, as well as how to run tests locally without impacting your current environment. Tested: Viewed in Chrome Change-Id: I7356a90fcc9e6d2679e1f9e9a49515a1038a8914 Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
* doc: add writing test chapter to testing.mdEmily Shaffer2019-06-251-0/+279
| | | | | | | | | | | | | | Add a tutorial on writing a new test, based on writing unit tests for sensorhandler.hpp - specifically GetSdrReq, as it's a good candidate for unit testing. Included is a nonexhaustive list of testing best practices. More best practices are always welcome. Tested: Viewed testing.md with Chrome builtin Markdown interpreter Change-Id: I418af8f972a5a0ff36b786cda6fdf9b6b308e8d5 Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
* docs: add chapter on running testsEmily Shaffer2019-06-251-2/+134
| | | | | | | | | | | | | | | | | | | Add instructions for installing and setting up Docker, modifying the setup for phosphor-host-ipmid, and running the tests. This also covers reading the .log files generated during the testing run. These instructions cover how to use `git worktree` to make a copy of your working repo which is usable by Docker, but still up-to-date with the hacking you've been doing. There's also a brief method of coming up with a similar setup using a local remote or symlink. The worktree method was selected because it is impossible to make the code you're testing out-of-sync with the code you will submit to Gerrit for review. However, we need to mount the working repo to the Docker container too to make this work (since Git will look there for the .git/ dir). Tested: Viewed in Chrome Change-Id: I684664e2580637b34fbb79eceb838986425852c0
* docs: add initial testing.md outlineEmily Shaffer2019-06-251-0/+23
| | | | | | | | | | | | | | | Add a new piece of documentation, intended to be a tutorial on running, writing, and reviewing unit tests for the CI suite. Outline the sections to be written in some detail (subject to change). There are a handful of methods for running the CI, foremost by using Docker or by building the OpenBMC SDK. This tutorial will cover the Docker method, as it is most similar to what the Jenkins bot does, and most consistent across platforms. Tested: Viewed markdown file in Chrome. Change-Id: Ic98c02bc8f4dc6eaf4e7d1432422cdd934862548
* Fix privilege level for Read FRU Data commandJason M. Bills2019-06-241-2/+2
| | | | | | | | | | | | | | | | | Per the IPMI spec, the Read FRU Data command requires only User privilege level. Tested: Before: ipmitool -I lanplus -L USER raw 0xa 0x11 Unable to send RAW command (channel=0x0 netfn=0xa lun=0x0 cmd=0x11 rsp=0xd4): Insufficient privilege level After: ipmitool -I lanplus -L USER raw 0xa 0x11 Unable to send RAW command (channel=0x0 netfn=0xa lun=0x0 cmd=0x11 rsp=0xff): Unspecified error Change-Id: I4c4df9a0813a93f69f0d66994af37c8f67f74f9e Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Use xyz.openbmc_project.State.Chassis for IPMI chassis statusJason M. Bills2019-06-241-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of directly using pgood on dbus, this change uses the xyz.openbmc_project.State.Chassis "CurrentPowerState" property for the IPMI chassis status command. This will allow us to remove pgood from dbus. Tested: Ran IPMI chassis commands and confirmed that they behave as expected: ipmitool power status Chassis Power is on ipmitool power off Chassis Power Control: Down/Off ipmitool power status Chassis Power is off ipmitool power on Chassis Power Control: Up/On ipmitool power status Chassis Power is on Change-Id: I7836c16b76c3b309f176186f3e2453082e4cd1af Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Fix power restore policy input parameter checkJason M. Bills2019-06-242-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the power restore policy command to return invalid parameter for any unsupported policy option (greater than 0x03). Tested: ipmitool raw 0 6 0 07 ipmitool chassis status Power Restore Policy : always-off ipmitool raw 0 6 1 07 ipmitool chassis status Power Restore Policy : previous ipmitool raw 0 6 2 07 ipmitool chassis status Power Restore Policy : always-on ipmitool raw 0 6 3 07 ipmitool chassis status Power Restore Policy : always-on ipmitool raw 0 6 4 Unable to send RAW command (channel=0x0 netfn=0x0 lun=0x0 cmd=0x6 rsp=0xcc): Invalid data field in request Change-Id: Ie78e00753f6dfd8b7bccce38c239a8103b6cc3fd Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* storagehandler: move Add SEL to new APIanil kumar appana2019-06-242-43/+32
| | | | | | | | | | | | | | Rewrite "Add SEL Entry" command to use the newly introduced IPMI provider API. Tested: Verified the behavior to be same as previous change. ipmitool raw 0x0a 0x44 1 0 0xff 4 5 6 7 8 9 0 1 2 3 4 5 6 05 06 Signed-off-by: anil kumar appana <anil.kumarx.appana@intel.com> Change-Id: I49bad876a209fb55f1b5b635b5a4ded425d33af0
* Use boost::asio::post() instead of io->post()Vernon Mauery2019-06-211-1/+1
| | | | | | | | | | According to the documentation io->post is deprecated, saying that boost::asio::post() should be used instead. Tested: ipmid runs the same as it did before. Change-Id: I552c7cb5cb8ad8f9f6e2bcffa61ce5135e2faad2 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Defining session const for multi net session mgmtSuryakanth Sekar2019-06-212-0/+48
| | | | | | | | This session const will be used in multi session management and session commands and replace the existing session const used into lowercamel case Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com> Change-Id: I76725acdf5d3d002f82a1076509ed37d668d01d3
* rewrite Get System GUID to use new provider APIVernon Mauery2019-06-201-58/+33
| | | | | | | | | | | | | | Modify to use the new provider API. One by one, change calls to remove any legacy API constructs. Tested-by: ipmitool raw 6 0x37 08 50 f3 d6 73 d5 98 b4 45 49 9a a6 24 76 f5 82 This is the same as the BMC web value as shown by: curl https://<bmcip>/redfish/v1/Systems/system "UUID": "82f57624-a69a-4945-b498-d573d6f35008" Change-Id: Ic3ea8c53266d5be07bc957fe7076b208b621f00b Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* yaml: drop execute permissions from yaml filesBrad Bishop2019-06-203-0/+0
| | | | | | | | Functionally this doesn't change anything but executable data files would seem to be in conflict with typical idioms. Change-Id: I5eddfd8a8be3d1b9eb53062fb60e46b845008fd9 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Add an option to exclude libuserlayer from host-ipmidofery2019-06-183-1/+16
| | | | | | | | | | | Change-Id: I8e14cfd3719c7fbef739f2aa01771bc4321ce290 Signed-off-by: Ofer Yehielli <ofery@google.com> Tested: Enabled the exclude libuserlayer flag in recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend +EXTRA_OECONF_append_xxx = " --disable-libuserlayer" +HOSTIPMI_PROVIDER_LIBRARY_remove_xxx = "libusercmds.so" +NETIPMI_PROVIDER_LIBRARY_remove_xxx = "libusercmds.so" Clean build and test that userlayer.so doesn't get included in the build
* Remove unused function convertCurrentChannelNum(uint8_t)Vernon Mauery2019-06-144-55/+0
| | | | | | | | | | | | | | convertCurrentChannelNum(uint8_t) was deprecated in favor of an actual working implementation. It was stubbed out for a while to provide a broken, backwards-compatible interface, but now that all of those have been removed in favor of the new interface that actually works: convertCurrentChannelNum(uint8_t, uint8_t), the old function can be removed. Tested: Builds without any errors (means the old interface was removed) Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com> Change-Id: I3796e890c7cc34333116b71a97db268abf5f0e89
* Add get channel payload version commandAyushi Smriti2019-06-144-0/+60
| | | | | | | | | | | | | | | Implement get channel payload version command (IPMI specification section 24.9). As per the specification, this command is basically a hard-coded value that says we are using IPMI 2.0. Tested: ipmitool raw 6 0x4F 3 1 // Command 10 // Response Change-Id: Id16723e7257361814b98f3c14d759f2919ad4c03 Signed-off-by: Ayushi Smriti <smriti.ayushi@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* user_channel: Get Channel Payload Support command refactorVernon Mauery2019-06-142-133/+54
| | | | | | | | | | | | | | Update the get channel payload support command to use the new IPMI API. This simplifies the code as well as adds support for the special IPMI channel 0x0e. Tested: ipmitool -I lanplus -H ... -U ... raw 6 0x4e 0xe 03 00 3f 00 00 00 00 00 ipmitool -I lanplus -H ... -U ... raw 6 0x4e 1 03 00 3f 00 00 00 00 00 Change-Id: I8b67d6f79c40299b4b653212a2f1f9d0c1a9087c Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* autotools: fix broken out of tree buildsBrad Bishop2019-06-141-4/+4
| | | | | | | | When building out of tree the default yamls are not found by the code generator scripts. Change-Id: I52a651e99b8a2c41c20dc30a7b4f5f01c16e7c5a Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* user_mgmt: Fix error message with file nameRichard Marian Thomaiyar2019-06-121-1/+2
| | | | | | | | | | Updated error message with proper config file name Tested: Verified that file name is properly listed in error message Change-Id: I0c2552000f704f3b4b541b8fe90adec966a6616a Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
* User-mgmt: Add IPMI user pam authenticate check APIAyushi Smriti2019-06-094-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PAM user authentication check must be performed, before any RMCP+ session establishment, as this will be able to check whether user is already locked out, due to failed attempt. This patch introduces the pam user check API, which will be used by netipmid daemon. Tested: Verified the API call check and making sure it works. Real testing is performed by including the same in phosphor-ipmi-net for RMCP+ session establishment both for user locked for failed attempt and normal case. Commands used- Created new user using ipmitool ipmitool user set name 2 testuser ipmitool user enable 2 ipmitool user set password 2 pas1tes2 ipmitool user priv 2 4 3 ipmitool user list 3 //New user entry can be seen listed ipmitool channel getaccess 3 2 //For getting channel access ipmitool channel setaccess 3 2 ipmi=on priviledge=4 Normal Case: ipmitool -I lanplus -U testuser -P pas1tes2 -H <bmc ip> raw 6 1 //Command 23 00 00 00 02 bf 57 01 00 7b 00 00 00 00 00 //Response Negative Case: busctl set-property xyz.openbmc_project.User.Manager /xyz/openbmc_project/user xyz.openbmc_project.User.AccountPolicy MaxLoginAttemptBeforeLockout q 3 Tried 3 failed login attempts from webpage, and then tried to establish IPMI RMCP+ as expected, session establishment failed. wait for the timeout or unlock the user using- busctl set-property xyz.openbmc_project.User.Manager /xyz/openbmc_project/user/sayushi xyz.openbmc_project.User.Attributes UserLockedForFailedAttempt b false busctl get-property xyz.openbmc_project.User.Manager /xyz/openbmc_project/user/sayushi xyz.openbmc_project.User.Attributes UserLockedForFailedAttempt b false //Command b false //Response After this RMCP+ session will be established as usual. Change-Id: I5ee2dc0848944a12f682f0775930091d32508bde Signed-off-by: Ayushi Smriti <smriti.ayushi@linux.intel.com>
* Modify Get Device ID to use Context::busVernon Mauery2019-06-051-17/+30
| | | | | | | | | | | | Now that a bus pointer is available via the Context for every IPMI command handler, make use of it for Get Device ID. Tested-by: run Get Device ID and verify results: ipmitool raw 6 1 23 00 00 00 02 bf 57 01 00 7b 00 00 00 00 00 Change-Id: I2ae5f59623767c7ae059340758a8d042acfb00e9 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* unpack static assert on unsupported typesVernon Mauery2019-05-302-17/+27
| | | | | | | | | | | | | | | | | Unsupported types might not cause compile time errors but can result in SIGILL errors at runtime when compiler warnings are ignored. This was found when compiling an intel-ipmi-oem handler that attempted to unpack an enum class type. The code compiles down to an empty function (no return statement or value), which can result in all sorts of undefined behavior. This change forces the unsupported types to emit a static assert and fail to compile. Tested: Created a handler that requests an enum class as an input and saw that the build fails with a static assert. Change-Id: I123da15cb001756f07761cf7a60b799469926a2a Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Add sdbusplus::asio::connection pointer to ipmi::ContextVernon Mauery2019-05-302-21/+28
| | | | | | | | | | | | | | | | | This adds a std::shared_ptr<sdbusplus::asio::connection> to every ipmi::Context in order to facilitate easy transition to yield_method_call over other D-Bus interfaces. This means that a getDbusObjects call could just pass in the ipmi::Context and it will get a yielding call. ipmi::Context is a natural fit because one is created for each of the boost::asio::coroutine contexts. And because a yielding call needs both an async D-Bus connection and a yield_context, this means that we now have one object to rule them all. Tested: Created a handler that uses the new shared_ptr in the context to see the API in action. Change-Id: I429a324180a38bf17845f7fd0544df2226d0300a Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* storagehandler: move get & set SEL time to new APIjayaprakash Mutyala2019-05-281-57/+30
| | | | | | | | | | | | | | Rewrite "Get & Set SEL time" command to use the newly introduced IPMI provider API. Tested: Verified using ipmitool sel time get/set behavior before and after the changes. Change-Id: I856ac92356e4472a67bf0e354fff6c3e2ced0cdb Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
* Chassishandler: Add chassis identify state support for chassis status commandYong Li2019-05-242-1/+14
| | | | | | | | | | | | | | | | | | | | Return the present chassis identify state in get chassis status command: Off Temporary on Indefinite on Reserved Tested: Set chassis identify in different states: ipmitool raw 0 4 10 0 ipmitool raw 0 4 0 1 ipmitool raw 0 4 0 0 Then query the chassis status and check on the third byte ipmitool raw 0 1 Signed-off-by: Yong Li <yong.b.li@linux.intel.com> Change-Id: I66690b74823a6b819c4fda25d95bc8690b98181a
* chassishandler: add AC failed bit support for chassis statusYong Li2019-05-231-1/+33
| | | | | | | | | | | | | PFail property is provided by power control service, true means the booting is from AC power loss. Tested: Remove the AC cable and reconnect it to power on the system ipmitool chassis status will return: Last Power Event : ac-failed Change-Id: I3743f15da259491052ee8fc869205438e79046f8 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* Updates get channel info command to use the new provider APIVernon Mauery2019-05-231-101/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the get channel info command to use the new IPMI provider API. Because of the change, this command can support the use of the special channel number 0x0e. Tested-by: (remote via RMCP+ interface) ipmitool -I lanplus -H ... -U ... channel info Channel 0x1 info: Channel Medium Type : 802.3 LAN Channel Protocol Type : IPMB-1.0 Session Support : multi-session Active Session Count : 0 Protocol Vendor ID : 7154 Volatile(active) Settings Alerting : disabled Per-message Auth : enabled User Level Auth : enabled Access Mode : always available Non-Volatile Settings Alerting : disabled Per-message Auth : enabled User Level Auth : enabled Access Mode : always available (on host via kcs interface) ipmitool channel info Channel 0xf info: Channel Medium Type : System Interface Channel Protocol Type : KCS Session Support : session-less Active Session Count : 0 Protocol Vendor ID : 7154 Change-Id: Ica4262593acaefe12ccf70724ad4db40da344da4 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* channelcmds: move get channel access to new IPMI provider APIRichard Marian Thomaiyar2019-05-231-86/+48
| | | | | | | | | | | | | | | | | | | | | | | | Update the get channel access command to use the new IPMI provider API. As a part of this change, the command is now able to use the special channel 0x0e. Tested-by: ipmitool -I lanplus -H ... -U ... channel getaccess 0xe 1 Maximum User IDs : 15 Enabled User IDs : 1 User ID : 1 User Name : root Fixed Name : No Access Available : callback Link Authentication : enabled IPMI Messaging : enabled Privilege Level : ADMINISTRATOR Enable Status : enabled Change-Id: I97ad74ae183a15dd5f45dfa70341225794087b2a Signed-off-by: NITIN SHARMA <nitin1x.sharma@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* channelcmds: move set channel access to new ipmi provider APINITIN SHARMA2019-05-231-75/+54
| | | | | | | | | | | | | | | | | | | | | This updates the set channel access command to use the new IPMI provider API. As part of this change, this command should now work with the special channel 0x0e. Tested-by: (set channel access: 6 0x40) # ipmitool -I lanplus -H ... -U ... raw 6 0x40 0xe 0x82 0x84 (get channel access: 6 0x41) # ipmitool -I lanplus -H ... -U ... raw 6 0x41 0xe 0x80 02 04 # ipmitool raw 6 0x40 1 0x80 0x83 # ipmitool raw 6 0x41 1 0x80 00 03 Change-Id: Icc6e8ff7deebb7a6f89af616fa70258ea18ed0ce Signed-off-by: NITIN SHARMA <nitin1x.sharma@intel.com> Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Add support for removable media/FloppyJia, chunhui2019-05-231-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | 1. fix issue for handling unsupported parameter 2. add support for floppy/USB boot There is dbus interface change in: https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-dbus-interfaces/+/21177 Test: $ ipmitool -H <ip> -P 0penBmc -I lanplus raw 0x0 0x8 0x5 0x80 0x14 0x00 0x00 0x00 $ ipmitool -H <ip> -P 0penBmc -I lanplus chassis bootparam get 5 ... - Boot Device Selector : Force Boot from CD/DVD ... $ipmitool -H <ip> -P 0penBmc -I lanplus raw 0x0 0x8 0x5 0x80 0x3c 0x00 0x00 0x00 $ipmitool -H <ip> -P 0penBmc -I lanplus chassis bootparam get 5 ... - Boot Device Selector : Force Boot from Floppy/primary removable media ... Change-Id: I915aaa3f684d02d0dfc4b65afb3c1db139c41781 Signed-off-by: Jia, chunhui <chunhui.jia@linux.intel.com>
* Return error if the input data is larger than expectedYu Ren2019-05-201-1/+1
| | | | | | | | | | | | If the input data length exceeds the expected, return len_invalid too Tested: ipmitool raw 0x06 0x24 0x01 0x13 0x0 0x2 0xa 0x00 0xff Will return error Signed-off-by: Yu Ren <yux.ren@intel.com> Change-Id: I12168f4aed51c499fd06067ca4475917b68e819e
* rewrite Get Device GUID to use new provider APIVernon Mauery2019-05-201-97/+53
| | | | | | | | | | | | | | | Modify to use the new provider API. One by one, change calls to remove any legacy API constructs. Tested-by: ipmitool 6 8 30 ba 05 cd 7e 9d ac 89 4a 4c 52 ef f3 24 2d 5f (with matching change from bmcweb:) curl https://<bmcip>/redfish/v1/Managers/bmc ... "UUID": "5f2d24f3-ef52-4c4a-89ac-9d7ecd05ba30" Change-Id: I4cd3b945f76b4fe6c4fcf31d8e1962aaa768828e Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Remove the global warm reset ipmi commandYong Li2019-05-172-5/+0
| | | | | | | | | | | | | | | This warm reset command is using the duplicated API as cold reset. As per IPMI spec, warm reset should not alter volatile settings, and has to just reset the interface which is not what current code does. Hence to avoid confusion, remove this warm reset command Tested: "ipmitool raw 6 3" command return "Invalid command", and BMC does not reboot Signed-off-by: Yong Li <yong.b.li@linux.intel.com> Change-Id: I62f37c9b8386a817ce069c26ade6760de73b1d16 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* Update current channel mechanism to be usable by netipmidVernon Mauery2019-05-172-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Getting the current channel is really just an if statement for the requested channel (check for 0x0e) to know if the device channel which is determined by -c <channel> by netipmid and by dbus names in host ipmid. Previously, an ipmi::Context was passed in, but netipmid does not use Context, it just has the channel number. So This change makes it so the the requested channel number and the device channel number are the arguments, which makes the same function usable in both netipmid and ipmid. Tested-by: run the get user access command to see that it uses the current channel. # remote connection over channel 1 ipmitool -I lanplus -H <> ... raw 6 0x44 0xe 1 0f 41 00 74 ipmitool -I lanplus -H <> ... raw 6 0x44 1 1 0f 41 00 74 # on bmc console (current channel does not use users) ipmitool raw 6 0x44 0xe 1 Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x44 rsp=0xcc): Invalid data field in request # request info for channel 1 ipmitool raw 6 0x44 1 1 0f 41 00 74 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com> Change-Id: Iadad6f93e47d031a6f4724a3db5161051c5b520a
* Get Chassis Status should not bail if button interfaces are not presentVernon Mauery2019-05-161-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recent rewrite of Get Chassis Status also added support for reading the front panel enables status instead of returning a hard-coded false. But the implementation also errors out if the interface is not present This makes the interfaces optional, returning false if they are not presnt and reading them correctly if they are. Tested-by: running ipmitool chassis status with and without the xyz.openbmc_project.Chassis.Buttons service running: # ipmitool chassis status System Power : on Power Overload : false Power Interlock : inactive Main Power Fault : false Power Control Fault : false Power Restore Policy : previous Last Power Event : Chassis Intrusion : inactive Front-Panel Lockout : inactive Drive Fault : false Cooling/Fan Fault : false Sleep Button Disable : not allowed Diag Button Disable : not allowed Reset Button Disable : allowed Power Button Disable : allowed Sleep Button Disabled: false Diag Button Disabled : false Reset Button Disabled: false Power Button Disabled: false # systemctl stop xyz.openbmc_project.Chassis.Buttons@0.service # ipmitool chassis status System Power : on Power Overload : false Power Interlock : inactive Main Power Fault : false Power Control Fault : false Power Restore Policy : previous Last Power Event : Chassis Intrusion : inactive Front-Panel Lockout : inactive Drive Fault : false Cooling/Fan Fault : false Front Panel Control : none Change-Id: If845194b6f052ba84f8b062ac4259ec66f706bb5 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* user-mgmt: Update user data file, only for sync.Richard Marian Thomaiyar2019-05-151-3/+11
| | | | | | | | | | | | | | | IPMI user configuration is cross synced with phosphor-user-manager and written to the non-volatile data on every boot. This commit limits the write only when there is real sync issue, and update required. Tested: 1. Verified the ipmitool user list & commands 2. Verified that file write happens only when there is real sync update with phosphor-user-manager Change-Id: Ia40be91f281656288ca96ca44bc9699daee7c3b4 Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
* Fix dependencies on auto-generated codeVernon Mauery2019-05-146-16/+20
| | | | | | | | | | | | The sensor/entity/fru/inventory auto-generated cpp code should depend on the mako template, the generator python, and the yaml that it is built with. This modifies the autoconf to export the yaml and the automake to set the dependencies. Tested-by: modify one of the dependencies and watch it get rebuilt Change-Id: Iaab9585c202baf4506e0b7e62aa42a3bf2828ae4 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* rewrite Get Chassis Status commandVernon Mauery2019-05-141-142/+198
| | | | | | | | | | | | | | The Set Front Panel Enables command touches one of the same interfaces that this command does, so rewrite this command to reflect the changes that set front panel enables causes. Tested-by: manually run get chassis status command via ipmitool: # ipmitool raw 0 1 01 00 40 30 # ipmitool chassis status Change-Id: Ifbb13a6f344c58b2140933447995d3854cca0c0d Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* ipmid: Update set chassis power restore policyVernon Mauery2019-05-141-45/+28
| | | | | | | | | | | | | | Use the new ipmi api, including the yield context mechanism. Modify to use the new provider API. One by one, change calls to remove any legacy API constructs. Tested-by: ipmitool chassis policy list ipmitool chassis policy previous ipmitool chassis policy always-on ipmitool chassis policy always-off Change-Id: I02a955c3946b940daaa3fe90c2a220b0eb719bad Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
OpenPOWER on IntegriCloud