summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch170
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0057-Add-timer-use-actions-support.patch190
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch132
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Enable-watchdog-to-save-useflag-after-host-power-off.patch57
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0066-Valid-VLANID-should-be-1-4095-as-in-802.1VLAN-spec.patch44
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf198
7 files changed, 360 insertions, 435 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch
index b54b22213..c862a306a 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch
@@ -17,11 +17,11 @@ Change-Id: If5528d3b7294c5f8c17db5919439235d0fad0446
transporthandler.hpp | 50 +++
4 files changed, 713 insertions(+), 1 deletion(-)
-diff --git a/include/ipmid/types.hpp b/include/ipmid/types.hpp
-index 57c5873..c06fd8c 100644
---- a/include/ipmid/types.hpp
-+++ b/include/ipmid/types.hpp
-@@ -224,6 +224,7 @@ constexpr auto ADDR_TYPE_FORMAT = "%hhx";
+Index: phosphor-host-ipmid.clean/include/ipmid/types.hpp
+===================================================================
+--- phosphor-host-ipmid.clean.orig/include/ipmid/types.hpp
++++ phosphor-host-ipmid.clean/include/ipmid/types.hpp
+@@ -224,6 +224,7 @@ constexpr auto ADDR_TYPE_FORMAT = "%hhx"
constexpr auto IPV4_ADDRESS_SIZE_BYTE = 4;
constexpr auto IPV6_ADDRESS_SIZE_BYTE = 16;
@@ -50,10 +50,10 @@ index 57c5873..c06fd8c 100644
+
} // namespace network
} // namespace ipmi
-diff --git a/include/ipmid/utils.hpp b/include/ipmid/utils.hpp
-index 9ef1488..8b91b12 100644
---- a/include/ipmid/utils.hpp
-+++ b/include/ipmid/utils.hpp
+Index: phosphor-host-ipmid.clean/include/ipmid/utils.hpp
+===================================================================
+--- phosphor-host-ipmid.clean.orig/include/ipmid/utils.hpp
++++ phosphor-host-ipmid.clean/include/ipmid/utils.hpp
@@ -256,6 +256,7 @@ namespace network
constexpr auto ROOT = "/xyz/openbmc_project/network";
constexpr auto SERVICE = "xyz.openbmc_project.Network";
@@ -62,11 +62,11 @@ index 9ef1488..8b91b12 100644
constexpr auto IPV4_PREFIX = "169.254";
constexpr auto IPV6_PREFIX = "fe80";
constexpr auto IP_INTERFACE = "xyz.openbmc_project.Network.IP";
-diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 8172cc4..12d224a 100644
---- a/transporthandler.cpp
-+++ b/transporthandler.cpp
-@@ -30,6 +30,12 @@ std::unique_ptr<phosphor::Timer> networkTimer = nullptr;
+Index: phosphor-host-ipmid.clean/transporthandler.cpp
+===================================================================
+--- phosphor-host-ipmid.clean.orig/transporthandler.cpp
++++ phosphor-host-ipmid.clean/transporthandler.cpp
+@@ -29,6 +29,12 @@ std::unique_ptr<phosphor::Timer> network
const int SIZE_MAC = 18; // xx:xx:xx:xx:xx:xx
constexpr auto ipv4Protocol = "xyz.openbmc_project.Network.IP.Protocol.IPv4";
@@ -79,29 +79,23 @@ index 8172cc4..12d224a 100644
std::map<int, std::unique_ptr<struct ChannelConfig_t>> channelConfig;
-@@ -389,7 +395,6 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- ipmi_context_t context)
- {
- ipmi_ret_t rc = IPMI_CC_OK;
-- *data_len = 0;
-
- using namespace std::chrono_literals;
-
-@@ -403,6 +408,9 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- auto reqptr = reinterpret_cast<const set_lan_t*>(request);
- sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
-
-+ size_t reqLen = *data_len;
-+ *data_len = 0;
+@@ -445,6 +451,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+ {
+ case LanParam::IP:
+ {
++ if (reqLen != lanParamIPSize)
++ {
++ return IPMI_CC_REQ_DATA_LEN_INVALID;
++ }
+
- // channel number is the lower nibble
- int channel = reqptr->channel & CHANNEL_MASK;
- auto ethdevice = ipmi::getChannelName(channel);
-@@ -426,6 +434,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ std::snprintf(ipaddr, INET_ADDRSTRLEN,
+ ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
+ reqptr->data[1], reqptr->data[2], reqptr->data[3]);
+@@ -455,6 +466,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
case LanParam::IPSRC:
{
-+ if (reqLen != LAN_PARAM_IPSRC_SIZE)
++ if (reqLen != lanParamIPSrcSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -109,11 +103,11 @@ index 8172cc4..12d224a 100644
uint8_t ipsrc{};
std::memcpy(&ipsrc, reqptr->data, ipmi::network::IPSRC_SIZE_BYTE);
channelConf->ipsrc = static_cast<ipmi::network::IPOrigin>(ipsrc);
-@@ -434,6 +447,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -463,6 +479,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
case LanParam::MAC:
{
-+ if (reqLen != LAN_PARAM_MAC_SIZE)
++ if (reqLen != lanParamMACSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -121,11 +115,11 @@ index 8172cc4..12d224a 100644
char mac[SIZE_MAC];
std::snprintf(mac, SIZE_MAC, ipmi::network::MAC_ADDRESS_FORMAT,
-@@ -454,6 +472,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -483,6 +504,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
case LanParam::SUBNET:
{
-+ if (reqLen != LAN_PARAM_SUBNET_SIZE)
++ if (reqLen != lanParamSubnetSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -133,11 +127,11 @@ index 8172cc4..12d224a 100644
std::snprintf(netmask, INET_ADDRSTRLEN,
ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -463,6 +486,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -492,6 +518,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
case LanParam::GATEWAY:
{
-+ if (reqLen != LAN_PARAM_GATEWAY_SIZE)
++ if (reqLen != lanParamGatewaySize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -145,23 +139,11 @@ index 8172cc4..12d224a 100644
std::snprintf(gateway, INET_ADDRSTRLEN,
ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -472,6 +500,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-
- case LanParam::VLAN:
- {
-+ if (reqLen != LAN_PARAM_VLAN_SIZE)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- uint16_t vlan{};
- std::memcpy(&vlan, reqptr->data, ipmi::network::VLAN_SIZE_BYTE);
- // We are not storing the enable bit
-@@ -484,6 +517,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -522,6 +553,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
case LanParam::INPROGRESS:
{
-+ if (reqLen != LAN_PARAM_INPROGRESS_SIZE)
++ if (reqLen != lanParamInProgressSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -169,13 +151,13 @@ index 8172cc4..12d224a 100644
if (reqptr->data[0] == SET_COMPLETE)
{
channelConf->lan_set_in_progress = SET_COMPLETE;
-@@ -512,6 +550,122 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -540,6 +576,122 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
}
break;
+ case LanParam::IPV6_AND_IPV4_ENABLES:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_AND_IPV4_ENABLES_SIZE)
++ if (reqLen != lanParamIPv6AndIPv4EnablesSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -186,7 +168,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ADDRESSES:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ADDRESSES_SIZE)
++ if (reqLen != lanParamIPv6StaticAddressesSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -202,7 +184,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_ROUTER_ADDRESS_CONF_CTRL:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_ROUTER_ADDRESS_CONF_CTRL_SIZE)
++ if (reqLen != lanParamIPv6RouterAddressConfCtrlSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -213,7 +195,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_1_IP_ADDR:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_1_IP_ADDR_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter1IPAddrSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -227,7 +209,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_LEN:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_1_PREFIX_LEN_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter1PrefixLenSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -238,7 +220,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_VAL:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_1_PREFIX_VAL_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter1PrefixValSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -252,7 +234,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_2_IP_ADDR:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_2_IP_ADDR_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter2IPAddrSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -266,7 +248,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_LEN:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_2_PREFIX_LEN_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter2PrefixLenSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -277,7 +259,7 @@ index 8172cc4..12d224a 100644
+
+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_VAL:
+ {
-+ if (reqLen != LAN_PARAM_IPV6_STATIC_ROUTER_2_PREFIX_VAL_SIZE)
++ if (reqLen != lanParamIPv6StaticRouter2PrefixValSize)
+ {
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+ }
@@ -292,7 +274,7 @@ index 8172cc4..12d224a 100644
default:
{
rc = IPMI_CC_PARM_NOT_SUPPORTED;
-@@ -538,6 +692,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -568,6 +720,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
ipmi_ret_t rc = IPMI_CC_OK;
*data_len = 0;
const uint8_t current_revision = 0x11; // Current rev per IPMI Spec 2.0
@@ -300,7 +282,7 @@ index 8172cc4..12d224a 100644
get_lan_t* reqptr = (get_lan_t*)request;
// channel number is the lower nibble
-@@ -676,6 +831,476 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -713,6 +866,476 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
static_cast<uint8_t>(cipherList.size());
break;
}
@@ -777,7 +759,7 @@ index 8172cc4..12d224a 100644
default:
log<level::ERR>("Unsupported parameter",
entry("PARAMETER=0x%x", reqptr->parameter));
-@@ -921,6 +1546,16 @@ void applyChanges(int channel)
+@@ -957,6 +1580,16 @@ void applyChanges(int channel)
ipaddress, prefix);
}
@@ -794,7 +776,7 @@ index 8172cc4..12d224a 100644
if (!gateway.empty())
{
ipmi::setDbusProperty(bus, systemObject.second,
-@@ -928,7 +1563,24 @@ void applyChanges(int channel)
+@@ -964,7 +1597,24 @@ void applyChanges(int channel)
ipmi::network::SYSTEMCONFIG_INTERFACE,
"DefaultGateway", std::string(gateway));
}
@@ -817,42 +799,41 @@ index 8172cc4..12d224a 100644
+ ipmi::network::ETHERNET_INTERFACE, "IPv6AcceptRA",
+ (bool)channelConf->ipv6RouterAddressConfigControl);
}
- catch (InternalFailure& e)
+ catch (sdbusplus::exception::exception& e)
{
-diff --git a/transporthandler.hpp b/transporthandler.hpp
-index 04d4673..bd23391 100644
---- a/transporthandler.hpp
-+++ b/transporthandler.hpp
-@@ -79,6 +79,28 @@ enum class LanParam : uint8_t
+Index: phosphor-host-ipmid.clean/transporthandler.hpp
+===================================================================
+--- phosphor-host-ipmid.clean.orig/transporthandler.hpp
++++ phosphor-host-ipmid.clean/transporthandler.hpp
+@@ -79,8 +79,27 @@ enum class LanParam : uint8_t
IPV6_NEIGHBOR_TIMING_CONFIGURATION = 80,
};
-+// Data length of parameters
-+constexpr size_t LAN_PARAM_INPROGRESS_SIZE = 3;
-+constexpr size_t LAN_PARAM_IP_SIZE = 6;
-+constexpr size_t LAN_PARAM_IPSRC_SIZE = 3;
-+constexpr size_t LAN_PARAM_MAC_SIZE = 8;
-+constexpr size_t LAN_PARAM_SUBNET_SIZE = 6;
-+constexpr size_t LAN_PARAM_GATEWAY_SIZE = 6;
-+constexpr size_t LAN_PARAM_VLAN_SIZE = 4;
-+constexpr size_t LAN_PARAM_IPV6_AND_IPV4_ENABLES_SIZE = 3;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ADDRESSES_SIZE = 23;
-+constexpr size_t LAN_PARAM_IPV6_ROUTER_ADDRESS_CONF_CTRL_SIZE = 3;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_1_IP_ADDR_SIZE = 18;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_1_PREFIX_LEN_SIZE = 3;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_1_PREFIX_VAL_SIZE = 19;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_2_IP_ADDR_SIZE = 18;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_2_PREFIX_LEN_SIZE = 3;
-+constexpr size_t LAN_PARAM_IPV6_STATIC_ROUTER_2_PREFIX_VAL_SIZE = 19;
-+
+constexpr uint8_t DUID_LEN = 10;
+constexpr uint8_t DUID_LL_TYPE = 3;
+constexpr uint8_t DUIC_ETH_HW_TYPE = 1;
+
+ // Data length of parameters
+ constexpr size_t lanParamVLANSize = 4;
++constexpr size_t lanParamInProgressSize = 3;
++constexpr size_t lanParamIPSize = 6;
++constexpr size_t lanParamIPSrcSize = 3;
++constexpr size_t lanParamMACSize = 8;
++constexpr size_t lanParamSubnetSize = 6;
++constexpr size_t lanParamGatewaySize = 6;
++constexpr size_t lanParamIPv6AndIPv4EnablesSize = 3;
++constexpr size_t lanParamIPv6StaticAddressesSize = 23;
++constexpr size_t lanParamIPv6RouterAddressConfCtrlSize = 3;
++constexpr size_t lanParamIPv6StaticRouter1IPAddrSize = 18;
++constexpr size_t lanParamIPv6StaticRouter1PrefixLenSize = 3;
++constexpr size_t lanParamIPv6StaticRouter1PrefixValSize = 19;
++constexpr size_t lanParamIPv6StaticRouter2IPAddrSize = 18;
++constexpr size_t lanParamIPv6StaticRouter2PrefixLenSize = 3;
++constexpr size_t lanParamIPv6StaticRouter2PrefixValSize = 19;
constexpr uint8_t SET_COMPLETE = 0;
constexpr uint8_t SET_IN_PROGRESS = 1;
constexpr uint8_t SET_COMMIT_WRITE = 2; // Optional
-@@ -101,6 +123,20 @@ struct ChannelConfig_t
+@@ -103,6 +122,20 @@ struct ChannelConfig_t
uint8_t lan_set_in_progress = SET_COMPLETE;
bool flush = false;
@@ -873,7 +854,7 @@ index 04d4673..bd23391 100644
void clear()
{
ipaddr.clear();
-@@ -111,6 +147,20 @@ struct ChannelConfig_t
+@@ -113,6 +146,20 @@ struct ChannelConfig_t
ipsrc = ipmi::network::IPOrigin::UNSPECIFIED;
lan_set_in_progress = SET_COMPLETE;
flush = false;
@@ -894,6 +875,3 @@ index 04d4673..bd23391 100644
}
};
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0057-Add-timer-use-actions-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0057-Add-timer-use-actions-support.patch
index a96707d44..f091b31fa 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0057-Add-timer-use-actions-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0057-Add-timer-use-actions-support.patch
@@ -1,6 +1,6 @@
-From 6e37e02a4f200507627a82f6dba00a9c9d877cb2 Mon Sep 17 00:00:00 2001
+From 3c69c94eed1a0c6eecfd53e739fade6596c6f3e5 Mon Sep 17 00:00:00 2001
From: Yong Li <yong.b.li@linux.intel.com>
-Date: Mon, 18 Mar 2019 23:05:16 +0800
+Date: Thu, 12 Sep 2019 17:37:05 +0800
Subject: [PATCH] Add timer use/actions support
Based on IPMI spec, add timer use/actions support,
@@ -8,188 +8,24 @@ and add input data checking
Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
---
- app/watchdog.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++-----
- app/watchdog_service.cpp | 8 +++++++
- app/watchdog_service.hpp | 8 +++++++
- 3 files changed, 72 insertions(+), 6 deletions(-)
+ app/watchdog.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/watchdog.cpp b/app/watchdog.cpp
-index 1a5d19c..3b61055 100644
+index c4e594d..18e7e3a 100644
--- a/app/watchdog.cpp
+++ b/app/watchdog.cpp
-@@ -89,6 +89,13 @@ static constexpr uint8_t wd_dont_stop = 0x1 << 6;
- static constexpr uint8_t wd_timeout_action_mask = 0x3;
+@@ -251,8 +251,8 @@ ipmi::RspType<> ipmiSetWatchdogTimer(
+ return ipmi::responseInvalidFieldRequest();
+ }
- static constexpr uint8_t wdTimerUseMask = 0x7;
-+static constexpr uint8_t wdTimerUseResTimer1 = 0x0;
-+static constexpr uint8_t wdTimerUseResTimer2 = 0x6;
-+static constexpr uint8_t wdTimerUseResTimer3 = 0x7;
-+static constexpr uint8_t wdTimerUseRes = 0x38;
-+
-+static constexpr uint8_t wdTimerActionMask = 0xcc;
-+static constexpr uint8_t wdTimerUseExpMask = 0xc1;
+- timerLogFlags = static_cast<uint8_t>(dontLog);
+- timerActions &= static_cast<uint8_t>(timeoutAction) |
++ timerLogFlags = (static_cast<uint8_t>(dontLog)) << 7;
++ timerActions = static_cast<uint8_t>(timeoutAction) |
+ static_cast<uint8_t>(preTimeoutInterrupt) << 4;
- enum class IpmiAction : uint8_t
- {
-@@ -186,6 +193,11 @@ static_assert(sizeof(wd_set_req) == 6, "wd_set_req has invalid size.");
- static_assert(sizeof(wd_set_req) <= MAX_IPMI_BUFFER,
- "wd_get_res can't fit in request buffer.");
-
-+static uint8_t timerLogFlags = 0;
-+static uint8_t timerActions = 0;
-+
-+static uint8_t timerUseExpirationFlags = 0;
-+
- ipmi_ret_t ipmi_app_watchdog_set(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- ipmi_request_t request,
- ipmi_response_t response,
-@@ -203,6 +215,24 @@ ipmi_ret_t ipmi_app_watchdog_set(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- req.initial_countdown = le16toh(req.initial_countdown);
- *data_len = 0;
-
-+ if (((req.timer_use & wdTimerUseMask) == wdTimerUseResTimer1) ||
-+ ((req.timer_use & wdTimerUseMask) == wdTimerUseResTimer2) ||
-+ ((req.timer_use & wdTimerUseMask) == wdTimerUseResTimer3) ||
-+ (req.timer_use & wdTimerUseRes) ||
-+ (req.timer_action & wdTimerActionMask) ||
-+ (req.expire_flags & wdTimerUseExpMask))
-+ {
-+ return IPMI_CC_INVALID_FIELD_REQUEST;
-+ }
-+
-+ if (req.pretimeout > (req.initial_countdown / 10))
-+ {
-+ return IPMI_CC_INVALID_FIELD_REQUEST;
-+ }
-+
-+ timerLogFlags = req.timer_use & 0x80;
-+ timerActions = req.timer_action;
-+
try
- {
- WatchdogService wd_service;
-@@ -221,6 +251,10 @@ ipmi_ret_t ipmi_app_watchdog_set(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- static_cast<IpmiTimerUse>(req.timer_use & wdTimerUseMask);
- wd_service.setTimerUse(ipmiTimerUseToWdTimerUse(ipmiTimerUse));
-
-+ wd_service.setExpiredTimerUse(WatchdogService::TimerUse::Reserved);
-+
-+ timerUseExpirationFlags &= ~req.expire_flags;
-+
- // Set the new interval and the time remaining deci -> mill seconds
- const uint64_t interval = req.initial_countdown * 100;
- wd_service.setInterval(interval);
-@@ -339,7 +373,6 @@ static_assert(sizeof(wd_get_res) == 8, "wd_get_res has invalid size.");
- static_assert(sizeof(wd_get_res) <= MAX_IPMI_BUFFER,
- "wd_get_res can't fit in response buffer.");
-
--static constexpr uint8_t wd_dont_log = 0x1 << 7;
- static constexpr uint8_t wd_running = 0x1 << 6;
-
- ipmi_ret_t ipmi_app_watchdog_get(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-@@ -358,20 +391,37 @@ ipmi_ret_t ipmi_app_watchdog_get(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-
- // Build and return the response
- wd_get_res res;
-- res.timer_use = wd_dont_log;
-- res.timer_action =
-- static_cast<uint8_t>(wdActionToIpmiAction(wd_prop.expireAction));
-+ res.timer_use |= timerLogFlags;
-+ res.timer_action = timerActions;
-
- // Interval and timeRemaining need converted from milli -> deci seconds
- res.initial_countdown = htole16(wd_prop.interval / 100);
-+
-+ if (wd_prop.expiredTimerUse != WatchdogService::TimerUse::Reserved)
-+ {
-+ timerUseExpirationFlags |=
-+ 1 << static_cast<uint8_t>(
-+ wdTimerUseToIpmiTimerUse(wd_prop.expiredTimerUse));
-+ }
-+
- if (wd_prop.enabled)
- {
- res.timer_use |= wd_running;
- res.present_countdown = htole16(wd_prop.timeRemaining / 100);
-+ res.expire_flags = 0;
- }
- else
- {
-- res.present_countdown = res.initial_countdown;
-+ if (wd_prop.expiredTimerUse == WatchdogService::TimerUse::Reserved)
-+ {
-+ res.present_countdown = res.initial_countdown;
-+ res.expire_flags = 0;
-+ }
-+ else
-+ {
-+ res.present_countdown = 0;
-+ res.expire_flags = timerUseExpirationFlags;
-+ }
- }
-
- res.timer_use |=
-@@ -379,7 +429,7 @@ ipmi_ret_t ipmi_app_watchdog_get(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-
- // TODO: Do something about having pretimeout support
- res.pretimeout = 0;
-- res.expire_flags = 0;
-+
- memcpy(response, &res, sizeof(res));
- *data_len = sizeof(res);
- lastCallSuccessful = true;
-diff --git a/app/watchdog_service.cpp b/app/watchdog_service.cpp
-index e65ea63..8b1aa47 100644
---- a/app/watchdog_service.cpp
-+++ b/app/watchdog_service.cpp
-@@ -83,6 +83,9 @@ WatchdogService::Properties WatchdogService::getProperties()
- wd_prop.timerUse = Watchdog::convertTimerUseFromString(
- std::get<std::string>(properties.at("CurrentTimerUse")));
-
-+ wd_prop.expiredTimerUse = Watchdog::convertTimerUseFromString(
-+ std::get<std::string>(properties.at("ExpiredTimerUse")));
-+
- wd_prop.interval = std::get<uint64_t>(properties.at("Interval"));
- wd_prop.timeRemaining =
- std::get<uint64_t>(properties.at("TimeRemaining"));
-@@ -187,6 +190,11 @@ void WatchdogService::setTimerUse(TimerUse timerUse)
- setProperty("CurrentTimerUse", convertForMessage(timerUse));
- }
-
-+void WatchdogService::setExpiredTimerUse(TimerUse timerUse)
-+{
-+ setProperty("ExpiredTimerUse", convertForMessage(timerUse));
-+}
-+
- void WatchdogService::setInterval(uint64_t interval)
- {
- setProperty("Interval", interval);
-diff --git a/app/watchdog_service.hpp b/app/watchdog_service.hpp
-index 75afc1e..d0cc1a8 100644
---- a/app/watchdog_service.hpp
-+++ b/app/watchdog_service.hpp
-@@ -36,6 +36,7 @@ class WatchdogService
- bool enabled;
- Action expireAction;
- TimerUse timerUse;
-+ TimerUse expiredTimerUse;
- uint64_t interval;
- uint64_t timeRemaining;
- };
-@@ -79,6 +80,13 @@ class WatchdogService
- */
- void setTimerUse(TimerUse timerUse);
-
-+ /** @brief Sets the value of the ExpiredTimerUse property on the host
-+ * watchdog
-+ *
-+ * @param[in] timerUse - The new timerUse value
-+ */
-+ void setExpiredTimerUse(TimerUse timerUse);
-+
- /** @brief Sets the value of the interval property on the host watchdog
- *
- * @param[in] interval - The new interval value
--
2.7.4
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch
index 5623d246d..2dad2fc16 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch
@@ -1,6 +1,6 @@
-From 55db62a92dff4bfc3d34c590b33d9da4e7706b9d Mon Sep 17 00:00:00 2001
+From 27b94aa1df83abad63cbba69525273194b14ab9c Mon Sep 17 00:00:00 2001
From: Cheng C Yang <cheng.c.yang@intel.com>
-Date: Wed, 3 Jul 2019 06:12:55 +0800
+Date: Wed, 16 Oct 2019 14:24:20 +0800
Subject: [PATCH] Move Set SOL config parameter to host-ipmid
Move Set SOL config parameter command from net-ipmid to host-ipmid,
@@ -23,15 +23,14 @@ to 0 and other properties will not reset to default value.
Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
---
host-ipmid-whitelist.conf | 1 +
- transporthandler.cpp | 289 ++++++++++++++++++++++++++++++++++++++++++++++
- transporthandler.hpp | 33 ++++++
- 3 files changed, 323 insertions(+)
+ transporthandler.cpp | 322 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 323 insertions(+)
diff --git a/host-ipmid-whitelist.conf b/host-ipmid-whitelist.conf
-index 2b72d23..856588e 100644
+index e8df7c7..f030ef4 100644
--- a/host-ipmid-whitelist.conf
+++ b/host-ipmid-whitelist.conf
-@@ -42,6 +42,7 @@
+@@ -41,6 +41,7 @@
0x0A:0x48 //<Storage>:<Get SEL Time>
0x0A:0x49 //<Storage>:<Set SEL Time>
0x0C:0x02 //<Transport>:<Get LAN Configuration Parameters>
@@ -40,22 +39,17 @@ index 2b72d23..856588e 100644
0x2C:0x01 //<Group Extension>:<Get DCMI Capabilities>
0x2C:0x02 //<Group Extension>:<Get Power Reading>
diff --git a/transporthandler.cpp b/transporthandler.cpp
-index bb624c4..25062ae 100644
+index e88eb63..4a42e7b 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
-@@ -36,6 +36,9 @@ static const std::array<std::string, 3> ipAddressEnablesType = {
- "xyz.openbmc_project.Network.EthernetInterface.IPAllowed.IPv6Only",
- "xyz.openbmc_project.Network.EthernetInterface.IPAllowed.IPv4AndIPv6"};
+@@ -1168,8 +1168,323 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
+ } // namespace transport
+ } // namespace ipmi
+constexpr const char* solInterface = "xyz.openbmc_project.Ipmi.SOL";
+constexpr const char* solPath = "/xyz/openbmc_project/ipmi/sol/";
+
- std::map<int, std::unique_ptr<struct ChannelConfig_t>> channelConfig;
-
- using namespace phosphor::logging;
-@@ -1631,6 +1634,285 @@ void createNetworkTimer()
- }
- }
+ void register_netfn_transport_functions() __attribute__((constructor));
+static std::string
+ getSOLService(std::shared_ptr<sdbusplus::asio::connection> dbus,
@@ -194,6 +188,37 @@ index bb624c4..25062ae 100644
+
+} // namespace ipmi
+
++namespace sol
++{
++enum class Parameter
++{
++ progress, //!< Set In Progress.
++ enable, //!< SOL Enable.
++ authentication, //!< SOL Authentication.
++ accumulate, //!< Character Accumulate Interval & Send Threshold.
++ retry, //!< SOL Retry.
++ nvbitrate, //!< SOL non-volatile bit rate.
++ vbitrate, //!< SOL volatile bit rate.
++ channel, //!< SOL payload channel.
++ port, //!< SOL payload port.
++};
++
++enum class Privilege : uint8_t
++{
++ highestPriv,
++ callbackPriv,
++ userPriv,
++ operatorPriv,
++ adminPriv,
++ oemPriv,
++};
++
++} // namespace sol
++
++constexpr uint8_t progressMask = 0x03;
++constexpr uint8_t enableMask = 0x01;
++constexpr uint8_t retryMask = 0x07;
++
+ipmi::RspType<> setSOLConfParams(ipmi::Context::ptr ctx, uint4_t chNum,
+ uint4_t reserved, uint8_t paramSelector,
+ uint8_t configParamData1,
@@ -312,8 +337,10 @@ index bb624c4..25062ae 100644
+ {
+ return ipmi::responseReqDataLenInvalid();
+ }
-+ if ((setSOLParameter("RetryCount", (configParamData1 & 0x7),
-+ channelNum) < 0) ||
++ if ((setSOLParameter(
++ "RetryCount",
++ static_cast<uint8_t>(configParamData1 & retryMask),
++ channelNum) < 0) ||
+ (setSOLParameter("RetryIntervalMS", *configParamData2,
+ channelNum) < 0))
+ {
@@ -338,74 +365,19 @@ index bb624c4..25062ae 100644
+
void register_netfn_transport_functions()
{
- // As this timer is only for transport handler
-@@ -1648,5 +1930,12 @@ void register_netfn_transport_functions()
- ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_GET_LAN, NULL,
- ipmi_transport_get_lan, PRIVILEGE_OPERATOR);
-
+ ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport,
+@@ -1178,4 +1493,11 @@ void register_netfn_transport_functions()
+ ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport,
+ ipmi::transport::cmdGetLanConfigParameters,
+ ipmi::Privilege::Admin, ipmi::transport::getLan);
++
+ ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport,
+ ipmi::transport::cmdSetSolConfigParameters,
+ ipmi::Privilege::Admin, setSOLConfParams);
+
+ // Initialize dbus property progress to 0 every time sol manager restart.
+ initializeSOLInProgress();
-+
- return;
}
-diff --git a/transporthandler.hpp b/transporthandler.hpp
-index bd23391..1237658 100644
---- a/transporthandler.hpp
-+++ b/transporthandler.hpp
-@@ -1,5 +1,6 @@
- #pragma once
-
-+#include <ipmid/api-types.hpp>
- #include <ipmid/types.hpp>
- #include <string>
- // IPMI commands for Transport net functions.
-@@ -8,6 +9,8 @@ enum ipmi_netfn_storage_cmds
- // Get capability bits
- IPMI_CMD_SET_LAN = 0x01,
- IPMI_CMD_GET_LAN = 0x02,
-+ IPMI_CMD_SET_SOL_CONF_PARAMS = 0x21,
-+ IPMI_CMD_GET_SOL_CONF_PARAMS = 0x22,
- };
-
- // Command specific completion codes
-@@ -186,3 +189,33 @@ void commitNetworkChanges();
- * @param[in] channel: channel number.
- */
- void applyChanges(int channel);
-+
-+namespace sol
-+{
-+enum class Parameter
-+{
-+ progress, //!< Set In Progress.
-+ enable, //!< SOL Enable.
-+ authentication, //!< SOL Authentication.
-+ accumulate, //!< Character Accumulate Interval & Send Threshold.
-+ retry, //!< SOL Retry.
-+ nvbitrate, //!< SOL non-volatile bit rate.
-+ vbitrate, //!< SOL volatile bit rate.
-+ channel, //!< SOL payload channel.
-+ port, //!< SOL payload port.
-+};
-+
-+enum class Privilege : uint8_t
-+{
-+ highestPriv,
-+ callbackPriv,
-+ userPriv,
-+ operatorPriv,
-+ adminPriv,
-+ oemPriv,
-+};
-+
-+} // namespace sol
-+
-+constexpr uint8_t progressMask = 0x03;
-+constexpr uint8_t enableMask = 0x01;
--
2.7.4
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch
index 685e7c39d..aac0850ea 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch
@@ -85,8 +85,8 @@ index 2ffaae3..e9b7a9c 100644
+ // pretimeOutAction
+ const auto ipmiPreTimeoutInterrupt =
-+ static_cast<IpmiPreTimeoutInterrupt>((req.timer_action >> 4) &
-+ wdPreTimeoutInterruptMask);
++ static_cast<IpmiPreTimeoutInterrupt>(wdPreTimeoutInterruptMask &
++ (static_cast<uint8_t>(preTimeoutInterrupt)));
+ wd_service.setPreTimeoutInterrupt(
+ ipmiPreTimeoutInterruptToWdAction(ipmiPreTimeoutInterrupt));
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Enable-watchdog-to-save-useflag-after-host-power-off.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Enable-watchdog-to-save-useflag-after-host-power-off.patch
index 6a7b056ab..4ee28bb5c 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Enable-watchdog-to-save-useflag-after-host-power-off.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Enable-watchdog-to-save-useflag-after-host-power-off.patch
@@ -1,29 +1,66 @@
+From e7b86ade7db1e9ae86ea39a957bead9090f4ccbf Mon Sep 17 00:00:00 2001
+From: Yong Li <yong.b.li@linux.intel.com>
+Date: Thu, 12 Sep 2019 13:18:42 +0800
+Subject: [PATCH] Enable watchdog to save useflag after host power off
+
+Get the right useflag after host power off.
+
+Tested:
+Set a watchdog (Timer action is none and Time Use is BIOS FRB2)
+ipmitool raw 0x06 0x24 0x01 0x00 0x00 0x00 0x40 0x00
+Get watchdog
+ipmitool mc watchdog get
+Start watchdog
+ipmitool mc watchdog reset
+Get watchdog
+ipmitool mc watchdog get
+After timer is stop, set a watchdog again
+(Timer action is none and Time Use is BIOS/POST)
+ipmitool raw 0x06 0x24 0x02 0x00 0x00 0x00 0x40 0x00
+Start watchdog and wait until timer is stop,
+Get watchdog
+ipmitool mc watchdog get
+Timer Expiration Flags should be 0x06(BIOS FRB2, BIOS/POST)
+Power down the Host
+Ipmitool chassis power off
+Check the Timer Expiration Flags(User Flags)
+ipmitool mc watchdog get
+Timer Expiration Flags should be 0x06(BIOS FRB2, BIOS/POST)
+
+Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
+---
+ app/watchdog.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
diff --git a/app/watchdog.cpp b/app/watchdog.cpp
-index 2938d23..bc5df29 100644
+index 4650d89..1562f5e 100644
--- a/app/watchdog.cpp
+++ b/app/watchdog.cpp
-@@ -445,23 +445,21 @@ ipmi_ret_t ipmi_app_watchdog_get(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+@@ -435,23 +435,21 @@ ipmi::RspType<uint8_t, // timerUse
wdTimerUseToIpmiTimerUse(wd_prop.expiredTimerUse));
}
-+ res.expire_flags = timerUseExpirationFlags;
++ expireFlags = timerUseExpirationFlags;
if (wd_prop.enabled)
{
- res.timer_use |= wd_running;
- res.present_countdown = htole16(wd_prop.timeRemaining / 100);
-- res.expire_flags = 0;
+ timerUse |= wd_running;
+ presentCountdown = htole16(wd_prop.timeRemaining / 100);
+- expireFlags = 0;
}
else
{
if (wd_prop.expiredTimerUse == WatchdogService::TimerUse::Reserved)
{
- res.present_countdown = res.initial_countdown;
-- res.expire_flags = 0;
+ presentCountdown = initialCountdown;
+- expireFlags = 0;
}
else
{
- res.present_countdown = 0;
-- res.expire_flags = timerUseExpirationFlags;
+ presentCountdown = 0;
+- expireFlags = timerUseExpirationFlags;
}
}
+--
+2.7.4
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0066-Valid-VLANID-should-be-1-4095-as-in-802.1VLAN-spec.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0066-Valid-VLANID-should-be-1-4095-as-in-802.1VLAN-spec.patch
deleted file mode 100644
index f8f71338a..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0066-Valid-VLANID-should-be-1-4095-as-in-802.1VLAN-spec.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 07caf4cc516601c93d12bbe89b4afb0284201dff Mon Sep 17 00:00:00 2001
-From: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
-Date: Fri, 2 Aug 2019 14:18:31 +0530
-Subject: [PATCH] Valid VLANID should be 1-4095 as in 802.1VLAN spec
-
-Added the VLAN ID checking condition in Set LAN configuration
-
-Unit test:
-Verified VLAN ID 1-4095 is allowed and CC returns for 0 & > 4095
-
-Change-Id: I1737986ed7adb727758dedb84b851ba2c208cea3
-Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
----
- transporthandler.cpp | 4 ++++
- transporthandler.hpp | 1 +
- 2 files changed, 5 insertions(+)
-
-diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 44ddcef..ede6472 100644
---- a/transporthandler.cpp
-+++ b/transporthandler.cpp
-@@ -536,6 +536,10 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- // We assume that ipmitool always send enable
- // bit as 1.
- vlan = le16toh(vlan);
-+ if (vlan == 0 || vlan > maxValidVLANIDValue)
-+ {
-+ return IPMI_CC_INVALID_FIELD_REQUEST;
-+ }
- channelConf->vlanID = vlan;
- }
- break;
-diff --git a/transporthandler.hpp b/transporthandler.hpp
-index 1237658..d8805e1 100644
---- a/transporthandler.hpp
-+++ b/transporthandler.hpp
-@@ -219,3 +219,4 @@ enum class Privilege : uint8_t
-
- constexpr uint8_t progressMask = 0x03;
- constexpr uint8_t enableMask = 0x01;
-+constexpr uint16_t maxValidVLANIDValue = 4095;
---
-2.7.4
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf
index deed53b0b..f3218d8d8 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf
@@ -1,50 +1,196 @@
-#<NetFn>:<Command
-0x00:0x00 //<Chassis>:<Chassis Capabiliti>
+#<NetFn>:<Command>
+#IPMI whitelist command list version 9b
+0x00:0x00 //<Chassis>:<Get Chassis Capabiliti>
0x00:0x01 //<Chassis>:<Get Chassis Status>
+0x00:0x04 //<Chassis>:<Chassis Identify>
0x00:0x07 //<Chassis>:<Get System Restart Cause>
0x00:0x09 //<Chassis>:<Get System Boot Options>
-0x00:0x0F //<Chassis>:<Get POH Counter Command>
-0x04:0x02 //<Sensor/Event>:<Platform event>
-0x04:0x2D //<Sensor/Event>:<Get Sensor Reading>
+0x00:0x0A //<Chassis>:<Set Front Panel Enables>
+0x00:0x0F //<Chassis>:<Get POH Counter>
+0x04:0x01 //<Sensor/Event>:<Get Event Receiver>
+0x04:0x02 //<Sensor/Event>:<SEL Platform event>
+0x04:0x10 //<Sensor/Event>:<PEF Get Capabilities>
+0x04:0x13 //<Sensor/Event>:<PEF Get Configuration Parameters>
+0x04:0x15 //<Sensor/Event>:<PEF Get Processed EventID>
+0x04:0x20 //<Sensor/Event>:<Get Device SDR Info>
+0x04:0x21 //<Sensor/Event>:<Get Device SDR>
+0x04:0x23 //<Sensor/Event>:<Get Sensor Reading Factors>
+0x04:0x25 //<Sensor/Event>:<Get Sensor Hysteresis>
+0x04:0x27 //<Sensor/Event>:<Get Sensor Threshold>
+0x04:0x29 //<Sensor/Event>:<Get SensorEvent Enable>
+0x04:0x2B //<Sensor/Event>:<Get SensorEvent Status>
+0x04:0x2D //<Sensor/Event>:<Get SensorReading>
0x04:0x2F //<Sensor/Event>:<Get Sensor Type>
0x06:0x01 //<App>:<Get Device ID>
-0x06:0x04 //<App>:<Get Self Test Results>
+0x06:0x04 //<App>:<Get Self Test>
+0x06:0x06 //<App>:<Set ACPI Power State>
0x06:0x07 //<App>:<Get ACPI Power State>
0x06:0x08 //<App>:<Get Device GUID>
0x06:0x22 //<App>:<Reset Watchdog Timer>
0x06:0x24 //<App>:<Set Watchdog Timer>
0x06:0x25 //<App>:<Get Watchdog Timer>
0x06:0x2F //<App>:<Get BMC Global Enables>
+0x06:0x30 //<App>:<Clear Message Flags>
0x06:0x31 //<App>:<Get Message Flags>
+0x06:0x33 //<App>:<Get Message>
0x06:0x35 //<App>:<Read Event Message Buffer>
-0x06:0x36 //<App>:<Get BT Interface Capabilities>
0x06:0x37 //<App>:<Get System GUID>
-0x06:0x42 //<App>:<Get Channel Info Command>
+0x06:0x38 //<App>:<Get Channel Authentication Capability>
+0x06:0x39 //<App>:<Get Session Challenge>
+0x06:0x3D //<App>:<Get Channel Session Info>
+0x06:0x3F //<App>:<Get Authentication Code>
+0x06:0x41 //<App>:<Get Channel Access>
+0x06:0x42 //<App>:<Get Channel Info>
+0x06:0x44 //<App>:<Get User Access>
+0x06:0x46 //<App>:<Get User Name>
+0x06:0x4A //<App>:<Get Payload Activation Status>
+0x06:0x4B //<App>:<Get Payload Instance Info>
+0x06:0x4D //<App>:<Get User Payload Access>
0x06:0x4E //<App>:<Get Channel Payload Support>
+0x06:0x4F //<App>:<Get Channel Payload Version>
+0x06:0x50 //<App>:<Get Channel OEM Payload Info>
0x06:0x54 //<App>:<Get Channel Cipher Suites>
+0x06:0x57 //<App>:<Get System Interface Capabilities>
+0x08:0x20 //<Firmware>:<Get Version Information>
+0x08:0x21 //<Firmware>:<Security Version Information>
+0x08:0x22 //<Firmware>:<Firmware Update Channel Information>
+0x08:0x23 //<Firmware>:<BMC Execution Context>
+0x08:0x24 //<Firmware>:<Get Boot Certificate Info>
+0x08:0x25 //<Firmware>:<Get Boot Certificate Data>
+0x08:0x26 //<Firmware>:<Firmware Random Number Update>
+0x08:0x27 //<Firmware>:<Set Firmware Update Mode>
+0x08:0x28 //<Firmware>:<Exit Firmware Update Mode>
+0x08:0x29 //<Firmware>:<Firmware Update Control>
+0x08:0x2A //<Firmware>:<Get Firmware Update Status>
+0x08:0x2B //<Firmware>:<Set Firmware Update Options>
+0x08:0x2C //<Firmware>:<Write Firmware Image>
+0x08:0x2D //<Firmware>:<Get Firmware Update Status Code Message>
+0x08:0xE0 //<Firmware>:<Get Firmware Update Error Code Message>
0x0A:0x10 //<Storage>:<Get FRU Inventory Area Info>
0x0A:0x11 //<Storage>:<Read FRU Data>
0x0A:0x20 //<Storage>:<Get SDR Repository Info>
-0x0A:0x22 //<Storage>:<Reserve SDR Repository>
+0x0A:0x21 //<Storage>:<Get SDR Alloc Info>
0x0A:0x23 //<Storage>:<Get SDR>
+0x0A:0x28 //<Storage>:<SEL Get Time>
0x0A:0x40 //<Storage>:<Get SEL Info>
-0x0A:0x42 //<Storage>:<Reserve SEL>
-0x0A:0x44 //<Storage>:<Add SEL Entry>
+0x0A:0x41 //<Storage>:<Get SEL Alloc Info>
+0x0A:0x43 //<Storage>:<Get SEL Entry>
0x0A:0x48 //<Storage>:<Get SEL Time>
-0x0A:0x49 //<Storage>:<Set SEL Time>
+0x0A:0x5A //<Storage>:<Get SEL Auxiliary Log Status>
+0x0A:0x5C //<Storage>:<Get SEL Time UTC Offset>
0x0C:0x02 //<Transport>:<Get LAN Configuration Parameters>
+0x0C:0x04 //<Transport>:<Get IPUDPRMCP Statistics>
+0x0C:0x11 //<Transport>:<Get Serial Modem Configuration>
0x0C:0x22 //<Transport>:<Get SOL Configuration Parameters>
-0x2C:0x00 //<Group Extension>:<Group Extension Command>
-0x2C:0x01 //<Group Extension>:<Get DCMI Capabilities>
-0x2C:0x02 //<Group Extension>:<Get Power Reading>
-0x2C:0x03 //<Group Extension>:<Get Power Limit>
-0x2C:0x06 //<Group Extension>:<Get Asset Tag>
-0x2C:0x07 //<Group Extension>:<Get Sensor Info>
-0x2C:0x10 //<Group Extension>:<Get Temperature Readings>
-0x30:0x27 //<OEM>:<Get Device Info>
-0x30:0x31 //<OEM>:<Get AIC card FRU>
-0x30:0x55 //<OEM>:<Get Power Restore Delay>
-0x30:0x9A //<OEM>:<Get Processor Error Config>
-0x30:0xB0 //<OEM>:<Get LED Status>
-0x30:0xE9 //<OEM>:<Get BIOS Post Codes>
-
+0x2C:0x1F //<Group Extension>:<Get CPU PECI Package Config Data>
+0x2C:0x20 //<Group Extension>:<Get MDR Data Region Status>
+0x2C:0x21 //<Group Extension>:<Get MDR Region Update Complete>
+0x2C:0x22 //<Group Extension>:<Read MDR Region>
+0x2C:0x23 //<Group Extension>:<Write MDR Region>
+0x2C:0x24 //<Group Extension>:<Get MDR Region Lock>
+0x2C:0x25 //<Group Extension>:<Get System Mode>
+0x2C:0x29 //<Group Extension>:<Get TPM Configuration>
+0x2C:0x37 //<Group Extension>:<Read PCIe Cable EEPROM Data>
+0x30:0x04 //<Intel General Application>:<Get NW Switch MIB>
+0x30:0x05 //<Intel General Application>:<Get PDB FW Version>
+0x30:0x09 //<Intel General Application>:<Get BMC Config>
+0x30:0x14 //<Intel General Application>:<Get SM Signal>
+0x30:0x19 //<Intel General Application>:<Read LAN Channel Port Value>
+0x30:0x1A //<Intel General Application>:<Get NIC Info>
+0x30:0x1B //<Intel General Application>:<Get LAN Available>
+0x30:0x1D //<Intel General Application>:<Get Master MAC>
+0x30:0x1F //<Intel General Application>:<Get Secure Mode>
+0x30:0x20 //<Intel General Application>:<OEM Get SEL info>
+0x30:0x21 //<Intel General Application>:<OEM Get SEL Allocation Info>
+0x30:0x22 //<Intel General Application>:<OEM Platform Event Message>
+0x30:0x23 //<Intel General Application>:<OEM Get SEL Entry>
+0x30:0x26 //<Intel General Application>:<Set BIOS ID>
+0x30:0x27 //<Intel General Application>:<Get OEM Device Information>
+0x30:0x2E //<Intel General Application>:<Get Cold Redundancy Configuration>
+0x30:0x30 //<Intel General Application>:<Get Sensor Severity>
+0x30:0x31 //<Intel General Application>:<Get AIC Slot FRU ID SLOT POS Records>
+0x30:0x33 //<Intel General Application>:<Get Controller Status>
+0x30:0x38 //<Intel General Application>:<Get Satellite Firmware update status>
+0x30:0x39 //<Intel General Application>:<HSBP Get Owner>
+0x30:0x3C //<Intel General Application>:<Get AIC MAC>
+0x30:0x41 //<Intel General Application>:<Set System GUID>
+0x30:0x43 //<Intel General Application>:<Get BMC Reset Disables>
+0x30:0x44 //<Intel General Application>:<Send Embedded Firmware Update Status>
+0x30:0x47 //<Intel General Application>:<HSBP Get Version>
+0x30:0x55 //<Intel General Application>:<Get Power Restore Delay>
+0x30:0x58 //<Intel General Application>:<Get DIMM Fault Status>
+0x30:0x62 //<Intel General Application>:<Get Shutdown Policy>
+0x30:0x63 //<Intel General Application>:<Get Node Slot Presence>
+0x30:0x65 //<Intel General Application>:<Get HDD Drive Fault LED State>
+0x30:0x66 //<Intel General Application>:<Get Buffer Size>
+0x30:0x71 //<Intel General Application>:<Get Advanced Support>
+0x30:0x73 //<Intel General Application>:<Get EFI Payload>
+0x30:0x74 //<Intel General Application>:<Get RMM Status>
+0x30:0x75 //<Intel General Application>:<Get Voltage Name>
+0x30:0x80 //<Intel General Application>:<HSBP Get Register From Memory>
+0x30:0x81 //<Intel General Application>:<Get Power State>
+0x30:0x82 //<Intel General Application>:<Get ACPI Config>
+0x30:0x85 //<Intel General Application>:<Get SF PWM>
+0x30:0x8A //<Intel General Application>:<Get Fan Control Configuration>
+0x30:0x8B //<Intel General Application>:<Auto Fan Detect>
+0x30:0x8D //<Intel General Application>:<Get fan speed offset>
+0x30:0x8F //<Intel General Application>:<Get DIMM offset>
+0x30:0x91 //<Intel General Application>:<Get FSC Parameter>
+0x30:0x92 //<Intel General Application>:<Get Chassis Identifier>
+0x30:0x93 //<Intel General Application>:<Read Base Board Product ID>
+0x30:0x94 //<Intel General Application>:<Get BMC Revision ID>
+0x30:0x95 //<Intel General Application>:<Get Is AP CPU>
+0x30:0x9A //<Intel General Application>:<Get Processor Error Configuration and Status>
+0x30:0x9D //<Intel General Application>:<Get Fan PWM Limit>
+0x30:0xB0 //<Intel General Application>:<Get LED Status>
+0x30:0xB2 //<Intel General Application>:<Get BMC Service Status>
+0x30:0xB3 //<Intel General Application>:<Get BMC Security Control Mode>
+0x30:0xBB //<Intel General Application>:<Get CPLD Revision ID>
+0x30:0xC2 //<Intel General Application>:<Get OEM Extended Sys Info>
+0x30:0xC6 //<Intel General Application>:<Get Partition Config>
+0x30:0xC7 //<Intel General Application>:<Get Zone Information>
+0x30:0xC9 //<Intel General Application>:<Get Configuration Status>
+0x30:0xCA //<Intel General Application>:<Get Fabric Information>
+0x30:0xCB //<Intel General Application>:<Get EndPoints Information>
+0x30:0xCC //<Intel General Application>:<Get Switches Information>
+0x30:0xCD //<Intel General Application>:<Get Switch Collection Information>
+0x30:0xD0 //<Intel General Application>:<Get NVMe Drive Data>
+0x30:0xD1 //<Intel General Application>:<HSBP Statistics>
+0x30:0xD4 //<Intel General Application>:<Get BIOS Capsule (OOB Update)>
+0x30:0xE2 //<Intel General Application>:<OEM Get Reading>
+0x30:0xE5 //<Intel General Application>:<Get NMI Source>
+0x30:0xE8 //<Intel General Application>:<Get PCIe SMBus Slot Card Info>
+0x30:0xE9 //<Intel General Application>:<Get BIOS POST CODE>
+0x30:0xF9 //<Intel General Application>:<Get POST Progress Codes>
+0x30:0xFD //<Intel General Application>:<Get Riser Presence>
+0x32:0x60 //<Intel OEM Platform>:<Get PM Bus Information>
+0x32:0x63 //<Intel OEM Platform>:<Get Tach Information>
+0x32:0x8D //<Intel OEM Platform>:<Get SSD Power>
+0x3E:0x02 //<Intel Managed Data Region>:<BMC Data Region Update Event Message>
+0x3E:0x20 //<Intel Managed Data Region>:<BMC Region Status>
+0x3E:0x21 //<Intel Managed Data Region>:<BMC Region Update Complete>
+0x3E:0x22 //<Intel Managed Data Region>:<MDR Event>
+0x3E:0x23 //<Intel Managed Data Region>:<BMC Region Read>
+0x3E:0x24 //<Intel Managed Data Region>:<BMC Region Write>
+0x3E:0x25 //<Intel Managed Data Region>:<BMC Region Lock>
+0x3E:0x28 //<Intel Managed Data Region>:<Get DIMM information>
+0x3E:0x30 //<Intel Managed Data Region>:<MDR2 Status>
+0x3E:0x31 //<Intel Managed Data Region>:<MDR2 GET Direction>
+0x3E:0x32 //<Intel Managed Data Region>:<MDR2 Get Data Set Info>
+0x3E:0x33 //<Intel Managed Data Region>:<MDR2 Lock Data>
+0x3E:0x34 //<Intel Managed Data Region>:<MDR2 Unlock Data>
+0x3E:0x35 //<Intel Managed Data Region>:<MDR2 Dget Data Block>
+0x3E:0x38 //<Intel Managed Data Region>:<MDR2 Send Direction>
+0x3E:0x39 //<Intel Managed Data Region>:<MDR2 Data Info Offer>
+0x3E:0x3A //<Intel Managed Data Region>:<MDR2 Data Info>
+0x3E:0x3B //<Intel Managed Data Region>:<MDR2 Data Start>
+0x3E:0x3C //<Intel Managed Data Region>:<MDR2 Data Done>
+0x3E:0x3D //<Intel Managed Data Region>:<MDR2 Data Block>
+0x3E:0x41 //<Intel Managed Data Region>:<Enter Platform Debug Log file transfer mode>
+0x3E:0x42 //<Intel Managed Data Region>:<Read Platform Debug Log file>
+0x3E:0x43 //<Intel Managed Data Region>:<Status of the Platform Debug Log file transfer mode>
+0x3E:0x44 //<Intel Managed Data Region>:<Exit Platform Debug Log file transfer mode>
+0x3E:0x50 //<Intel Managed Data Region>:<Node IPMB slave address>
+0x3E:0x51 //<Intel Managed Data Region>:<Slot IPMB>
+0x3E:0x52 //<Intel Managed Data Region>:<Slot I2C Master Write Read>
+0x3E:0x75 //<Intel Managed Data Region>:<Get Remote Log IP>