Add D-Bus Raw PECI Daemon

This adds a new D-Bus daemon to handle raw PECI requests over
D-Bus.

The D-Bus interface provides a Send method that takes a
vector of byte vectors where each byte vector contains the raw
data for a single PECI command.  This allows sending an array
of raw PECI commands to execute in bulk to avoid issues with
network latency when sending multiple commands.

The method returns a vector of raw PECI responses corresponding
to the vector of raw commands.

Tested:
Confirmed that a single and multiple PECI commands correctly
execute and return when SendRawPeci is called.

Change-Id: I6b2d0f81366ea77057e70d69c72be90ba4c4aeb9
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
4 files changed
tree: d78332009020246032635033904c3dac0de0a6fd
  1. linux/
  2. service_files/
  3. .clang-format
  4. .clang-ignore
  5. CMakeLists.txt
  6. dbus_raw_peci.cpp
  7. LICENSE
  8. MAINTAINERS
  9. OWNERS
  10. peci.c
  11. peci.h
  12. peci_cmds.c
  13. README.md
README.md

libpeci

libpeci is a library that provides various APIs to interface with the IOCTLs provided by the PECI driver in the OpenBMC kernel. Currently available here:

https://github.com/openbmc/linux/blob/dev-5.4/include/uapi/linux/peci-ioctl.h

peci_cmds

This repo also includes a peci_cmds command-line utility with functions that map to the libpeci APIs. It can be used to test PECI functionality across the library, driver, and hardware.

dbus_raw_peci

This repo also includes dbus_raw_peci which provides a raw-peci daemon that exposes a raw PECI interface that is accessible over D-Bus. It can be used when an application needs to send a raw PECI command without loading the full PECI library.