summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2019-04-15 23:42:44 +0300
committerEd Tanous <ed.tanous@intel.com>2019-04-17 19:13:25 +0300
commit816d793003e93c1e5eec0a2e90fbd8b9dde9f7a5 (patch)
tree341534fed9a2de460ded7f8231ca1cbb178bb2ca /meta-openbmc-mods/meta-common/recipes-phosphor
parenta75bff085ba9443315222231c42692745e5781e9 (diff)
downloadopenbmc-816d793003e93c1e5eec0a2e90fbd8b9dde9f7a5.tar.xz
Update 4-15-19
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Chassis-Power-Control-are-implemented.patch45
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0019-Creating-the-Session-interface-for-Host-and-LAN.patch104
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Change-some-properties-name-in-SOL-Dbus.patch73
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0021-Add-interface-suppot-for-provisioning-modes.patch52
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch198
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0016-add-better-sdbusplus-exception-handling.patch153
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0018-Catch-sdbusplus-exceptions-in-IPMI-net.patch49
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0048-Implement-IPMI-Master-Write-Read-command.patch93
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0051-Fix-Set-LAN-Config-to-work-without-SetInProgress.patch142
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0058-Add-AC-failed-bit-support-for-get-chassis-status-com.patch76
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch415
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch248
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend16
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/00010-Change-Authentication-Parameter.patch40
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0007-Adding-support-for-GetSessionInfo-command.patch101
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch42
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0009-Add-dbus-interface-for-sol-commands.patch2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend3
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb15
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend5
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/settings/phosphor-settings-defaults-native/defaults.yaml30
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-expiredTimerUse-property-support.patch28
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch50
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0004-Implement-force-boot-to-bios-in-server-power-control.patch199
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0007-Fix-some-page-keeps-loading-on-IE11.patch68
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0008-Pull-the-latest-novnc-package.patch88
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json8
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend10
43 files changed, 1616 insertions, 773 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
index b059a35d7..2a6b5abb0 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
@@ -1,6 +1,6 @@
# this is here just to bump faster than upstream
SRC_URI = "git://github.com/openbmc/entity-manager.git"
-SRCREV = "4133426a04bf46e275416362205bc29c1b3c0935"
+SRCREV = "a218ddb84c5cb6f6d07c3febd14bb0395ce38e5f"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Chassis-Power-Control-are-implemented.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Chassis-Power-Control-are-implemented.patch
index 79d02ca9b..0e25856ac 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Chassis-Power-Control-are-implemented.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Chassis-Power-Control-are-implemented.patch
@@ -1,4 +1,4 @@
-From 35271230690c5d85dc7a6502031b38d93ddd683f Mon Sep 17 00:00:00 2001
+From a20f9fa9941533b591b6bbfe6b22a74b7c0dfe64 Mon Sep 17 00:00:00 2001
From: Ed Tanous <ed.tanous@intel.com>
Date: Thu, 24 Jan 2019 09:29:01 -0800
Subject: [PATCH] Chassis Power Control are implemented.
@@ -38,9 +38,9 @@ Power on/off: curl --noproxy <ip_addr> -q1c cjar -b cjar -k -H "Content-Type: ap
Signed-off-by: Kuiying Wang <kuiying.wang@intel.com>
Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
---
- .../Chassis/Control/Chassis.interface.yaml | 94 +++++++++++++++++++
- .../Chassis/Control/Power.interface.yaml | 85 ++++++++++++++---
- 2 files changed, 166 insertions(+), 13 deletions(-)
+ .../Chassis/Control/Chassis.interface.yaml | 94 ++++++++++++++++++++++
+ .../Chassis/Control/Power.interface.yaml | 92 ++++++++++++++++++---
+ 2 files changed, 173 insertions(+), 13 deletions(-)
create mode 100644 xyz/openbmc_project/Chassis/Control/Chassis.interface.yaml
diff --git a/xyz/openbmc_project/Chassis/Control/Chassis.interface.yaml b/xyz/openbmc_project/Chassis/Control/Chassis.interface.yaml
@@ -144,10 +144,10 @@ index 0000000..c28492a
+ - xyz.openbmc_project.Chassis.Common.Error.IOError
+
diff --git a/xyz/openbmc_project/Chassis/Control/Power.interface.yaml b/xyz/openbmc_project/Chassis/Control/Power.interface.yaml
-index 082586f..e77598b 100644
+index 082586f..368beca 100644
--- a/xyz/openbmc_project/Chassis/Control/Power.interface.yaml
+++ b/xyz/openbmc_project/Chassis/Control/Power.interface.yaml
-@@ -1,31 +1,90 @@
+@@ -1,31 +1,97 @@
description: >
- Power control service
+ Chassis control service
@@ -207,12 +207,22 @@ index 082586f..e77598b 100644
+ - name: vrd_good
+ type: int32
+ default: 0
++ description: >
++ ACPI status
++ - name: s4s5_state
++ type: int32
++ default: 0
++ description: >
++ ACPI status
++ - name: pgood
++ type: int32
++ default: 0
description: >
- PSU Power good property
- It is a read-only property.
- - name: State
-+ ACPI status
-+ - name: s4s5_state
++ pgood property
++ - name: state
type: int32
default: 0
description: >
@@ -222,16 +232,6 @@ index 082586f..e77598b 100644
- Setting its value to change the system state
- Read its value to get the system state.
\ No newline at end of file
-+ ACPI status
-+ - name: pgood
-+ type: int32
-+ default: 0
-+ description: >
-+ pgood property
-+ - name: state
-+ type: int32
-+ default: 0
-+ description: >
+ state property
+ - name: pgood_timeout
+ type: int32
@@ -245,6 +245,13 @@ index 082586f..e77598b 100644
+ The current BIOS POST state,
+ false means not completed or system reset,
+ true means BIOS POST completed.
++ - name: PFail
++ type: boolean
++ default: true
++ description: >
++ The current booting status,
++ true means booting from AC loss,
++ false means not booting from AC loss.
+signals:
+ - name: PowerGood
+ description: >
@@ -253,5 +260,5 @@ index 082586f..e77598b 100644
+ description: >
+ Signal for powerlost
--
-2.17.1
+2.7.4
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0019-Creating-the-Session-interface-for-Host-and-LAN.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0019-Creating-the-Session-interface-for-Host-and-LAN.patch
index e1208cf5b..47fab819b 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0019-Creating-the-Session-interface-for-Host-and-LAN.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0019-Creating-the-Session-interface-for-Host-and-LAN.patch
@@ -1,4 +1,4 @@
-From f805522921d69eb4ea70248fe7e54557363aacea Mon Sep 17 00:00:00 2001
+From 28fac58dc6ef975e1e9283163d9f1e4c7764c3cc Mon Sep 17 00:00:00 2001
From: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
Date: Sat, 2 Mar 2019 03:31:09 +0530
Subject: [PATCH] Creating the Session interface- for Host and LAN
@@ -8,23 +8,56 @@ host and also in LAN
Change-Id: Ic7cccfc3333a602ee07fcd60077ec58fd8f06304
Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
+
+%% original patch: 0019-Creating-the-Session-interface-for-Host-and-LAN.patch
---
- xyz/openbmc_project/Session/Info.interface.yaml | 56 +++++++++++++++++++++++++
- xyz/openbmc_project/Session/README.md | 38 +++++++++++++++++
- 2 files changed, 94 insertions(+)
- create mode 100644 xyz/openbmc_project/Session/Info.interface.yaml
- create mode 100644 xyz/openbmc_project/Session/README.md
+ xyz/openbmc_project/Ipmi/SESSION_README.md | 25 ++++++++++
+ .../Ipmi/SessionInfo.interface.yaml | 57 ++++++++++++++++++++++
+ 2 files changed, 82 insertions(+)
+ create mode 100644 xyz/openbmc_project/Ipmi/SESSION_README.md
+ create mode 100644 xyz/openbmc_project/Ipmi/SessionInfo.interface.yaml
-diff --git a/xyz/openbmc_project/Session/Info.interface.yaml b/xyz/openbmc_project/Session/Info.interface.yaml
+diff --git a/xyz/openbmc_project/Ipmi/SESSION_README.md b/xyz/openbmc_project/Ipmi/SESSION_README.md
+new file mode 100644
+index 0000000..c59b251
+--- /dev/null
++++ b/xyz/openbmc_project/Ipmi/SESSION_README.md
+@@ -0,0 +1,25 @@
++# Session Management
++
++## Overview
++IPMI RMCP+ sessions are created and maintained by phosphor-ipmi-net daemon,
++whereas we need to provide details about the same using phosphor-ipmi-host.
++Hence IPMI RMCP+ session details has to be exposed through D-Bus interface,
++so that both phosphor-ipmi-host & phosphr-ipmi-net will be in sync.
++
++
++#### xyz.openbmc_project.Ipmi.SessionInfo interface
++##### properties
++* SessionHandle - SessionHandle,unique one-byte number to locate the session.
++* Channel - Session created channel.
++* SessionPrivilege - Privilege of the session.
++* RemoteIPAddr – Remote IP address.
++* RemotePort - Remote port address.
++* RemoteMACAddress -Remote MAC Address.
++* UserID - Session created by given user id.
++
++
++
++#### xyz.openbmc_project.Object.Delete
++#### methods
++* Delete - To delete the session object in the system.
++
+diff --git a/xyz/openbmc_project/Ipmi/SessionInfo.interface.yaml b/xyz/openbmc_project/Ipmi/SessionInfo.interface.yaml
new file mode 100644
-index 0000000..fbb5a45
+index 0000000..d461628
--- /dev/null
-+++ b/xyz/openbmc_project/Session/Info.interface.yaml
-@@ -0,0 +1,56 @@
++++ b/xyz/openbmc_project/Ipmi/SessionInfo.interface.yaml
+@@ -0,0 +1,57 @@
+description: >
-+ Provides properties for session objects.
-+ As communication to this service is done through authenticated
-+ & authorized session, there won't be any validation for the both.
++ Provides properties for IPMI RMCP+ session objects.
++ Provides RMCP+ session information as session objects
++ with Session ID (unique identifier) as path suffix.
+
+properties:
+ - name: SessionHandle
@@ -71,56 +104,13 @@ index 0000000..fbb5a45
+ - xyz.openbmc_project.Common.Error.InternalFailure
+ - name: State
+ type: byte
++ default: 0
+ description: >
+ Session state.
+ errors:
+ - xyz.openbmc_project.Common.Error.InternalFailure
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
-diff --git a/xyz/openbmc_project/Session/README.md b/xyz/openbmc_project/Session/README.md
-new file mode 100644
-index 0000000..f220885
---- /dev/null
-+++ b/xyz/openbmc_project/Session/README.md
-@@ -0,0 +1,38 @@
-+# Session Management
-+
-+## Overview
-+Session Manager service exposes D-Bus methods for session management operations.
-+
-+### Session Manager Interface
-+Session manager interface `xyz.openbmc_project.Session.Manager` provides following
-+methods, properties and signals.
-+
-+#### xyz.openbmc_project.Session.Manager interface
-+##### methods
-+* CreateSession - To create new session object to the system.
-+
-+##### properties
-+* MaxSessionSupported - To list all the groups supported in the system.
-+* ActiveSessionCount - To hold the no of active sessions.
-+
-+Session manager service will create session objects for every session
-+in the system under object path `/xyz/openbmc_project/session/<SessionIndex>`.
-+Each session object can be handled through 'org.freedesktop.DBus.ObjectManager'.
-+session object will expose following properties and methods.
-+
-+#### xyz.openbmc_project.Session.Info interface
-+##### properties
-+* SessionID - Session ID,random unique number to locate the session.
-+* Channel - Session created Channel.
-+* SessionPrivilege - Privilege of the session.
-+* RemoteIPAddr – Remote IP address.
-+* RemotePort - Remote Port address.
-+* RemoteMACAddress -Remote MAC Address.
-+* UserID - Session created by given user id.
-+
-+
-+
-+#### xyz.openbmc_project.Object.Delete
-+#### methods
-+* Delete - To delete the session object in the system.
-+
--
2.7.4
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Change-some-properties-name-in-SOL-Dbus.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Change-some-properties-name-in-SOL-Dbus.patch
new file mode 100644
index 000000000..9fe383fda
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Change-some-properties-name-in-SOL-Dbus.patch
@@ -0,0 +1,73 @@
+From 2e265e85777345a318084c2f1f3b684f7e7ff4a4 Mon Sep 17 00:00:00 2001
+From: Cheng C Yang <cheng.c.yang@intel.com>
+Date: Thu, 28 Mar 2019 18:06:54 +0800
+Subject: [PATCH] Change some properties name in SOL Dbus
+
+Change some properties name in SOL D-Bus interface to make the meaning
+of the properties more clearly.
+
+Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
+---
+ xyz/openbmc_project/Ipmi/SOL.interface.yaml | 25 +++++++++++++++++--------
+ 1 file changed, 17 insertions(+), 8 deletions(-)
+
+diff --git a/xyz/openbmc_project/Ipmi/SOL.interface.yaml b/xyz/openbmc_project/Ipmi/SOL.interface.yaml
+index 94db59f..96c8c87 100644
+--- a/xyz/openbmc_project/Ipmi/SOL.interface.yaml
++++ b/xyz/openbmc_project/Ipmi/SOL.interface.yaml
+@@ -2,8 +2,8 @@ description: >
+ SOL properties use for Get/Set SOL config parameter command in host-ipmid
+ sending config to SOL process in net-ipmid.
+ Since some platforms need to access Get/Set SOL config parameter command
+- through KCS, and current sol manager is implemented in net-ipmid and
+- cannot be accessed by host-ipmid, add a dbus interface for host-ipmid
++ through KCS, and current SOL manager is implemented in net-ipmid and
++ cannot be accessed by host-ipmid, add a D-Bus interface for host-ipmid
+ command to transfer properties to net-ipmid.
+ This interface will be implemented in phosphor-settings.
+ properties:
+@@ -17,12 +17,20 @@ properties:
+ description: >
+ SOL Enable property, this controls whether the SOL payload type
+ can be activated.
+- - name: Authentication
++ - name: ForceEncryption
++ type: boolean
++ description: >
++ If SOL enable Force Payload Encryption.
++ - name: ForceAuthentication
++ type: boolean
++ description: >
++ If SOL enable Force Payload Authentication
++ - name: Privilege
+ type: byte
+ description: >
+- If SOL enable Force Payload Encryption and Authenticaton.
+- And the minimun operating privilege level SOL required.
+- - name: Accumulate
++ Sets the minimum operating privilege level that is required to
++ be able to activate SOL by Activate Payload command.
++ - name: AccumulateIntervalMS
+ type: byte
+ description: >
+ Character Accumulate Interval in 5ms increments.
+@@ -31,13 +39,14 @@ properties:
+ type: byte
+ description: >
+ BMC will automatically send an SOL character data packet containing
+- this number of characters.
++ this number of characters as soon as this number of characters
++ (or greater) has been accepted from the baseboard serial controller.
+ - name: RetryCount
+ type: byte
+ description: >
+ Packet will be dropped if no ACK/NACK received by time retries
+ expire.
+- - name: RetryInterval
++ - name: RetryIntervalMS
+ type: byte
+ description: >
+ Retry Interval in 10ms increments.
+--
+2.16.2
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0021-Add-interface-suppot-for-provisioning-modes.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0021-Add-interface-suppot-for-provisioning-modes.patch
new file mode 100644
index 000000000..f6e200cab
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0021-Add-interface-suppot-for-provisioning-modes.patch
@@ -0,0 +1,52 @@
+From 94fb1ac5dd4d54ea5a6d49597e1f15c384be7fd6 Mon Sep 17 00:00:00 2001
+From: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
+Date: Mon, 8 Apr 2019 11:48:22 +0530
+Subject: [PATCH] Add interface suppot for provisioning modes
+
+Support for provisioning modes are added in
+RestrictionMode.interface.yaml
+
+Tested:
+1. Verified build, and verified specified modes are available
+and able to set / get the same using busctl command
+
+Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
+---
+ .../Security/RestrictionMode.interface.yaml | 24 ++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/xyz/openbmc_project/Control/Security/RestrictionMode.interface.yaml b/xyz/openbmc_project/Control/Security/RestrictionMode.interface.yaml
+index 8e4fd8d..d328dac 100644
+--- a/xyz/openbmc_project/Control/Security/RestrictionMode.interface.yaml
++++ b/xyz/openbmc_project/Control/Security/RestrictionMode.interface.yaml
+@@ -21,3 +21,27 @@ enumerations:
+ - name: Blacklist
+ description: >
+ Prevent, if in the blacklist.
++ - name: Provisioning
++ description: >
++ Indicate that system is in provisioning mode
++ and all commands are allowed in KCS inteface
++ in both pre and post BIOS boot.
++ - name: ProvisionedKCSWhiteList
++ description: >
++ Commands in the whitelist will only be executed
++ through KCS interface after BIOS POST complete.
++ All KCS commands are supported before POST complete.
++ - name: ProvisionedKCSDisabled
++ description: >
++ Commands through KCS interface are executed only
++ till BIOS POST complete notification, after
++ which no KCS commands will be executed(other
++ than BIOS SMI based ones).
++ - name: ValidationUnsecure
++ description: >
++ To indicate that BMC is in unsecure mode, and many
++ operations which are not meant for end-user will be
++ allowed in this mode. Interface which sets this
++ property has to make sure due diligence is made
++ as in this mode, many security intrinsic commands
++ can be executed.
+--
+2.7.4
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
index a2eb6649c..e46c06bcd 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
@@ -1,5 +1,5 @@
SRC_URI = "git://github.com/openbmc/phosphor-dbus-interfaces.git"
-SRCREV = "5515c34fded4c217e3cc07f551d59d34cd3329c5"
+SRCREV = "4623908c8c0e82d5831fca562c6f5a8430d494c8"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
@@ -17,4 +17,6 @@ SRC_URI += "file://0002-Modify-Dbus-for-IPv6.patch \
file://0017-Add-shutdown-policy-interface-for-get-set-shutdown-p.patch \
file://0018-Define-post-code-interfaces-for-post-code-manager.patch \
file://0019-Creating-the-Session-interface-for-Host-and-LAN.patch \
+ file://0020-Change-some-properties-name-in-SOL-Dbus.patch \
+ file://0021-Add-interface-suppot-for-provisioning-modes.patch \
"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service
index f4ffa17a0..99494717f 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service
@@ -3,7 +3,7 @@ Description=Phosphor-Pid-Control Margin-based Fan Control Daemon
[Service]
Restart=always
-ExecStart={sbindir}/swampd
+ExecStart={bindir}/swampd
RestartSec=5
StartLimitInterval=0
Type=simple
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend
index 0c56a8fe5..efaccb590 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend
@@ -5,4 +5,6 @@ SYSTEMD_SERVICE_${PN} = "phosphor-pid-control.service"
EXTRA_OECONF = "--enable-configure-dbus=yes"
SRC_URI = "git://github.com/openbmc/phosphor-pid-control.git"
-SRCREV = "90e9dbcae6c1df3127dd3de41f9d1e1b5a438828"
+SRCREV = "5782ab81367e22e87d719c9fef6e85ecdc6cf95e"
+
+FILES_${PN} = "${bindir}/swampd ${bindir}/setsensor"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb
index c04069fb9..7347fe483 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "f4d4bfc3296cb27feb17aa5d1d93b3061b56ce10"
+SRCREV = "785f19b128794611574ea6c18805740fb851ecff"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "gpiodaemon.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
index fe09e6da2..3ff46cdc9 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -1,5 +1,5 @@
SRC_URI = "git://github.com/openbmc/bmcweb.git"
-SRCREV = "b01bf2991955ef267ce2be8e7a18eac984990de8"
+SRCREV = "0e7de46f9b6365bad4e79a3933112750c5bf7853"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
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 3d9179ce5..b54b22213 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
@@ -1,6 +1,6 @@
-From cd4bc9e4291771f638f66efa205bf8fbec518546 Mon Sep 17 00:00:00 2001
+From c20bc8eb6a08d177d951012eb91b37398b15d81d Mon Sep 17 00:00:00 2001
From: Vernon Mauery <vernon.mauery@linux.intel.com>
-Date: Mon, 4 Feb 2019 10:30:12 -0800
+Date: Tue, 27 Nov 2018 11:01:15 -0800
Subject: [PATCH] IPv6 Network changes
Allow IPv6 IPMI set/get commands
@@ -11,17 +11,62 @@ Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
Change-Id: If5528d3b7294c5f8c17db5919439235d0fad0446
---
- transporthandler.cpp | 667 ++++++++++++++++++++++++++++++++++++++++++-
- transporthandler.hpp | 68 +++++
- types.hpp | 9 +
- utils.hpp | 1 +
- 4 files changed, 744 insertions(+), 1 deletion(-)
+ include/ipmid/types.hpp | 9 +
+ include/ipmid/utils.hpp | 1 +
+ transporthandler.cpp | 654 +++++++++++++++++++++++++++++++++++++++-
+ transporthandler.hpp | 50 +++
+ 4 files changed, 713 insertions(+), 1 deletion(-)
-Index: phosphor-host-ipmid.clean/transporthandler.cpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.cpp
-+++ phosphor-host-ipmid.clean/transporthandler.cpp
-@@ -41,6 +41,12 @@ extern std::unique_ptr<phosphor::Timer>
+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";
+
+ constexpr auto IPV4_ADDRESS_SIZE_BYTE = 4;
+ constexpr auto IPV6_ADDRESS_SIZE_BYTE = 16;
++constexpr auto IPV6_ADDRESS_STATUS_SIZE = 22;
+
+ constexpr auto DEFAULT_MAC_ADDRESS = "00:00:00:00:00:00";
+ constexpr auto DEFAULT_ADDRESS = "0.0.0.0";
+@@ -235,6 +236,7 @@ constexpr auto BITS_32 = 32;
+ constexpr auto MASK_32_BIT = 0xFFFFFFFF;
+ constexpr auto VLAN_ID_MASK = 0x00000FFF;
+ constexpr auto VLAN_ENABLE_MASK = 0x8000;
++constexpr auto IPV6_DUID_SIZE = 18;
+
+ enum class IPOrigin : uint8_t
+ {
+@@ -243,5 +245,12 @@ enum class IPOrigin : uint8_t
+ DHCP = 2,
+ };
+
++enum class AddressingEnables : uint8_t
++{
++ IPv4Only = 0,
++ IPv6Only = 1,
++ IPv4AndIPv6 = 2,
++};
++
+ } // 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
+@@ -256,6 +256,7 @@ namespace network
+ constexpr auto ROOT = "/xyz/openbmc_project/network";
+ constexpr auto SERVICE = "xyz.openbmc_project.Network";
+ constexpr auto IP_TYPE = "ipv4";
++constexpr auto IPV6_TYPE = "ipv6";
+ 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;
const int SIZE_MAC = 18; // xx:xx:xx:xx:xx:xx
constexpr auto ipv4Protocol = "xyz.openbmc_project.Network.IP.Protocol.IPv4";
@@ -34,7 +79,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
std::map<int, std::unique_ptr<struct ChannelConfig_t>> channelConfig;
-@@ -400,7 +406,6 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -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;
@@ -42,7 +87,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
using namespace std::chrono_literals;
-@@ -414,6 +419,9 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -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());
@@ -51,8 +96,8 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+
// channel number is the lower nibble
int channel = reqptr->channel & CHANNEL_MASK;
- auto ethdevice = ipmi::network::ChanneltoEthernet(channel);
-@@ -437,6 +445,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+ auto ethdevice = ipmi::getChannelName(channel);
+@@ -426,6 +434,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::IPSRC:
{
@@ -64,7 +109,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
uint8_t ipsrc{};
std::memcpy(&ipsrc, reqptr->data, ipmi::network::IPSRC_SIZE_BYTE);
channelConf->ipsrc = static_cast<ipmi::network::IPOrigin>(ipsrc);
-@@ -445,6 +458,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -434,6 +447,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::MAC:
{
@@ -76,7 +121,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
char mac[SIZE_MAC];
std::snprintf(mac, SIZE_MAC, ipmi::network::MAC_ADDRESS_FORMAT,
-@@ -465,6 +483,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -454,6 +472,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::SUBNET:
{
@@ -88,7 +133,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
std::snprintf(netmask, INET_ADDRSTRLEN,
ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -474,6 +497,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -463,6 +486,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::GATEWAY:
{
@@ -100,7 +145,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
std::snprintf(gateway, INET_ADDRSTRLEN,
ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -483,6 +511,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -472,6 +500,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::VLAN:
{
@@ -112,7 +157,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
uint16_t vlan{};
std::memcpy(&vlan, reqptr->data, ipmi::network::VLAN_SIZE_BYTE);
// We are not storing the enable bit
-@@ -495,6 +528,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -484,6 +517,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
case LanParam::INPROGRESS:
{
@@ -124,7 +169,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
if (reqptr->data[0] == SET_COMPLETE)
{
channelConf->lan_set_in_progress = SET_COMPLETE;
-@@ -523,6 +561,122 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
+@@ -512,6 +550,122 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
break;
@@ -247,7 +292,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
default:
{
rc = IPMI_CC_PARM_NOT_SUPPORTED;
-@@ -549,6 +703,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
+@@ -538,6 +692,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_ret_t rc = IPMI_CC_OK;
*data_len = 0;
const uint8_t current_revision = 0x11; // Current rev per IPMI Spec 2.0
@@ -255,7 +300,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
get_lan_t* reqptr = (get_lan_t*)request;
// channel number is the lower nibble
-@@ -687,6 +842,489 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
+@@ -676,6 +831,476 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
static_cast<uint8_t>(cipherList.size());
break;
}
@@ -327,12 +372,10 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ networkInterfacePath = networkInterfaceObject.first;
+ }
+
-+ std::string ipEnables =
-+ sdbusplus::message::variant_ns::get<std::string>(
-+ ipmi::getDbusProperty(bus, ipmi::network::SERVICE,
-+ networkInterfacePath,
-+ ipmi::network::ETHERNET_INTERFACE,
-+ "IPAddressEnables"));
++ ipmi::Value ipEnablesProp = ipmi::getDbusProperty(
++ bus, ipmi::network::SERVICE, networkInterfacePath,
++ ipmi::network::ETHERNET_INTERFACE, "IPAddressEnables");
++ std::string ipEnables = std::get<std::string>(ipEnablesProp);
+
+ // check if on off ipv4 ipv6, etc.
+ bool found = false;
@@ -392,20 +435,14 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ bus, ipObjectInfo.second, ipObjectInfo.first,
+ ipmi::network::IP_INTERFACE);
+
-+ std::string origin =
-+ sdbusplus::message::variant_ns::get<std::string>(
-+ properties["Origin"]);
-+ if (sdbusplus::message::variant_ns::get<std::string>(
-+ properties["Origin"]) ==
++ if (std::get<std::string>(properties["Origin"]) ==
+ "xyz.openbmc_project.Network.IP.AddressOrigin.Static")
+ {
+ ipaddress =
-+ sdbusplus::message::variant_ns::get<std::string>(
-+ properties["Address"]);
++ std::get<std::string>(properties["Address"]);
+ ipv6AddressSource = 0x81; // Looking at bit 0 and bit 7
+ prefixLength =
-+ sdbusplus::message::variant_ns::get<uint8_t>(
-+ properties["PrefixLength"]);
++ std::get<uint8_t>(properties["PrefixLength"]);
+ status = 0;
+ }
+ }
@@ -458,8 +495,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ bus, macObjectInfo.second, macObjectInfo.first,
+ ipmi::network::MAC_INTERFACE, "MACAddress");
+
-+ macAddress =
-+ sdbusplus::message::variant_ns::get<std::string>(variant);
++ macAddress = std::get<std::string>(variant);
+ }
+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
+ {
@@ -505,17 +541,14 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ bus, ipObjectInfo.second, ipObjectInfo.first,
+ ipmi::network::IP_INTERFACE);
+
-+ if (sdbusplus::message::variant_ns::get<std::string>(
-+ properties["Origin"]) ==
++ if (std::get<std::string>(properties["Origin"]) ==
+ "xyz.openbmc_project.Network.IP.AddressOrigin.DHCP")
+ {
+ ipaddress =
-+ sdbusplus::message::variant_ns::get<std::string>(
-+ properties["Address"]);
++ std::get<std::string>(properties["Address"]);
+ ipv6AddressSource = 0x81; // Looking at bit 0 and bit 7
+ prefixLength =
-+ sdbusplus::message::variant_ns::get<uint8_t>(
-+ properties["PrefixLength"]);
++ std::get<uint8_t>(properties["PrefixLength"]);
+ status = 0;
+ }
+ else
@@ -574,8 +607,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ bus, macObjectInfo.second, macObjectInfo.first,
+ ipmi::network::MAC_INTERFACE, "MACAddress");
+
-+ macAddress =
-+ sdbusplus::message::variant_ns::get<std::string>(variant);
++ macAddress = std::get<std::string>(variant);
+ }
+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
+ {
@@ -661,7 +693,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
+ auto variant = ipmi::getDbusProperty(
+ bus, ipmi::network::SERVICE, networkInterfacePath,
+ ipmi::network::ETHERNET_INTERFACE, "IPv6AcceptRA");
-+ dynamicRA = sdbusplus::message::variant_ns::get<bool>(variant);
++ dynamicRA = std::get<bool>(variant);
+ }
+ else
+ {
@@ -745,7 +777,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
default:
log<level::ERR>("Unsupported parameter",
entry("PARAMETER=0x%x", reqptr->parameter));
-@@ -932,6 +1570,16 @@ void applyChanges(int channel)
+@@ -921,6 +1546,16 @@ void applyChanges(int channel)
ipaddress, prefix);
}
@@ -762,7 +794,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
if (!gateway.empty())
{
ipmi::setDbusProperty(bus, systemObject.second,
-@@ -939,7 +1587,24 @@ void applyChanges(int channel)
+@@ -928,7 +1563,24 @@ void applyChanges(int channel)
ipmi::network::SYSTEMCONFIG_INTERFACE,
"DefaultGateway", std::string(gateway));
}
@@ -787,11 +819,11 @@ Index: phosphor-host-ipmid.clean/transporthandler.cpp
}
catch (InternalFailure& e)
{
-Index: phosphor-host-ipmid.clean/transporthandler.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.hpp
-+++ phosphor-host-ipmid.clean/transporthandler.hpp
-@@ -80,6 +80,28 @@ enum class LanParam : uint8_t
+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
IPV6_NEIGHBOR_TIMING_CONFIGURATION = 80,
};
@@ -820,7 +852,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.hpp
constexpr uint8_t SET_COMPLETE = 0;
constexpr uint8_t SET_IN_PROGRESS = 1;
constexpr uint8_t SET_COMMIT_WRITE = 2; // Optional
-@@ -102,6 +124,20 @@ struct ChannelConfig_t
+@@ -101,6 +123,20 @@ struct ChannelConfig_t
uint8_t lan_set_in_progress = SET_COMPLETE;
bool flush = false;
@@ -841,7 +873,7 @@ Index: phosphor-host-ipmid.clean/transporthandler.hpp
void clear()
{
ipaddr.clear();
-@@ -112,6 +148,20 @@ struct ChannelConfig_t
+@@ -111,6 +147,20 @@ struct ChannelConfig_t
ipsrc = ipmi::network::IPOrigin::UNSPECIFIED;
lan_set_in_progress = SET_COMPLETE;
flush = false;
@@ -862,48 +894,6 @@ Index: phosphor-host-ipmid.clean/transporthandler.hpp
}
};
-Index: phosphor-host-ipmid.clean/types.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/types.hpp
-+++ phosphor-host-ipmid.clean/types.hpp
-@@ -209,6 +209,7 @@ constexpr auto ADDR_TYPE_FORMAT = "%hhx"
-
- constexpr auto IPV4_ADDRESS_SIZE_BYTE = 4;
- constexpr auto IPV6_ADDRESS_SIZE_BYTE = 16;
-+constexpr auto IPV6_ADDRESS_STATUS_SIZE = 22;
-
- constexpr auto DEFAULT_MAC_ADDRESS = "00:00:00:00:00:00";
- constexpr auto DEFAULT_ADDRESS = "0.0.0.0";
-@@ -220,6 +221,7 @@ constexpr auto BITS_32 = 32;
- constexpr auto MASK_32_BIT = 0xFFFFFFFF;
- constexpr auto VLAN_ID_MASK = 0x00000FFF;
- constexpr auto VLAN_ENABLE_MASK = 0x8000;
-+constexpr auto IPV6_DUID_SIZE = 18;
-
- enum class IPOrigin : uint8_t
- {
-@@ -228,5 +230,12 @@ enum class IPOrigin : uint8_t
- DHCP = 2,
- };
-
-+enum class AddressingEnables : uint8_t
-+{
-+ IPv4Only = 0,
-+ IPv6Only = 1,
-+ IPv4AndIPv6 = 2,
-+};
-+
- } // namespace network
- } // namespace ipmi
-Index: phosphor-host-ipmid.clean/utils.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/utils.hpp
-+++ phosphor-host-ipmid.clean/utils.hpp
-@@ -246,6 +246,7 @@ namespace network
- constexpr auto ROOT = "/xyz/openbmc_project/network";
- constexpr auto SERVICE = "xyz.openbmc_project.Network";
- constexpr auto IP_TYPE = "ipv4";
-+constexpr auto IPV6_TYPE = "ipv6";
- constexpr auto IPV4_PREFIX = "169.254";
- constexpr auto IPV6_PREFIX = "fe80";
- constexpr auto IP_INTERFACE = "xyz.openbmc_project.Network.IP";
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0016-add-better-sdbusplus-exception-handling.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0016-add-better-sdbusplus-exception-handling.patch
deleted file mode 100644
index 873eb6b16..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0016-add-better-sdbusplus-exception-handling.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From a445f287d4aebca68dc0321e292933311caf59ba Mon Sep 17 00:00:00 2001
-From: Yong Li <yong.b.li@linux.intel.com>
-Date: Sun, 16 Sep 2018 20:14:55 +0800
-Subject: [PATCH] add better sdbusplus exception handling
-
-Now that sdbusplus throws, we need to catch more stuff. To compound the
-problem, even though sdbusplus::exception::exception inherits from
-std::exception, there is a problem that prevents the code from simply
-catching std::exception.
-
-Change-Id: I2a330e542f5d87722a4c04e6d47de2cfb2f7d7c9
-Signed-off-by: Vernon Mauery <vernon.mauery@intel.com>
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
-
----
- apphandler.cpp | 14 +++++++--
- ipmid.cpp | 77 +++++++++++++++++++++++++++++++++++---------------
- 2 files changed, 66 insertions(+), 25 deletions(-)
-
-diff --git a/apphandler.cpp b/apphandler.cpp
-index 126de33..3cae6d5 100644
---- a/apphandler.cpp
-+++ b/apphandler.cpp
-@@ -312,9 +312,19 @@ ipmi_ret_t ipmi_app_get_device_id(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- auto version = getActiveSoftwareVersionInfo();
- r = convert_version(version.c_str(), &rev);
- }
-- catch (const std::exception& e)
-+ catch (sdbusplus::exception::exception& e)
- {
-- log<level::ERR>(e.what());
-+ log<level::ERR>("sdbusplus::exception",
-+ entry("ERROR=%s", e.what()));
-+ }
-+ catch (std::exception& e)
-+ {
-+ log<level::ERR>("unexpected exception",
-+ entry("ERROR=%s", e.what()));
-+ }
-+ catch (...)
-+ {
-+ log<level::ERR>("unknown exception");
- }
-
- if (r >= 0)
-diff --git a/ipmid.cpp b/ipmid.cpp
-index 2d48bfe..8d2fb37 100644
---- a/ipmid.cpp
-+++ b/ipmid.cpp
-@@ -273,6 +273,10 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- }
- // IPMI command handlers can throw unhandled exceptions, catch those
- // and return sane error code.
-+ catch (sdbusplus::exception::exception& e)
-+ {
-+ log<level::ERR>("sdbusplus exception", entry("EXCEPTION=%s", e.what()));
-+ }
- catch (const std::exception& e)
- {
- log<level::ERR>(e.what(), entry("NET_FUN=0x%X", netfn),
-@@ -281,6 +285,23 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- *data_len = 0;
- // fall through
- }
-+ catch (...)
-+ {
-+ std::exception_ptr eptr = std::current_exception();
-+ try
-+ {
-+ std::rethrow_exception(eptr);
-+ }
-+ catch (std::exception& e)
-+ {
-+ log<level::ERR>("unexpected uncaught exception",
-+ entry("EXCEPTION=%s", e.what()),
-+ entry("NET_FUN=0x%X", netfn),
-+ entry("CMD=0x%X", cmd));
-+ rc = IPMI_CC_UNSPECIFIED_ERROR;
-+ *data_len = 0;
-+ }
-+ }
- // Now copy the return code that we got from handler and pack it in first
- // byte.
- std::memcpy(response, &rc, IPMI_CC_LEN);
-@@ -361,32 +382,42 @@ final:
- void cache_restricted_mode()
- {
- restricted_mode = false;
-- using namespace sdbusplus::xyz::openbmc_project::Control::Security::server;
-- using namespace internal;
-- using namespace internal::cache;
-- sdbusplus::bus::bus dbus(ipmid_get_sd_bus_connection());
-- const auto& restrictionModeSetting =
-- objects->map.at(restrictionModeIntf).front();
-- auto method = dbus.new_method_call(
-- objects->service(restrictionModeSetting, restrictionModeIntf).c_str(),
-- restrictionModeSetting.c_str(), "org.freedesktop.DBus.Properties",
-- "Get");
-- method.append(restrictionModeIntf, "RestrictionMode");
-- auto resp = dbus.call(method);
-- if (resp.is_method_error())
-+ try
- {
-- log<level::ERR>("Error in RestrictionMode Get");
-- // Fail-safe to true.
-- restricted_mode = true;
-- return;
-+ using namespace sdbusplus::xyz::openbmc_project::Control::Security::
-+ server;
-+ using namespace internal;
-+ using namespace internal::cache;
-+ sdbusplus::bus::bus dbus(ipmid_get_sd_bus_connection());
-+ const auto& restrictionModeSetting =
-+ objects->map.at(restrictionModeIntf).front();
-+ auto method = dbus.new_method_call(
-+ objects->service(restrictionModeSetting, restrictionModeIntf)
-+ .c_str(),
-+ restrictionModeSetting.c_str(), "org.freedesktop.DBus.Properties",
-+ "Get");
-+ method.append(restrictionModeIntf, "RestrictionMode");
-+ auto resp = dbus.call(method);
-+ if (resp.is_method_error())
-+ {
-+ log<level::ERR>("Error in RestrictionMode Get");
-+ // Fail-safe to true.
-+ restricted_mode = true;
-+ return;
-+ }
-+ sdbusplus::message::variant<std::string> result;
-+ resp.read(result);
-+ auto restrictionMode = RestrictionMode::convertModesFromString(
-+ sdbusplus::message::variant_ns::get<std::string>(result));
-+ if (RestrictionMode::Modes::Whitelist == restrictionMode)
-+ {
-+ restricted_mode = true;
-+ }
- }
-- sdbusplus::message::variant<std::string> result;
-- resp.read(result);
-- auto restrictionMode = RestrictionMode::convertModesFromString(
-- variant_ns::get<std::string>(result));
-- if (RestrictionMode::Modes::Whitelist == restrictionMode)
-+ catch (sdbusplus::exception::exception& e)
- {
-- restricted_mode = true;
-+ // restrictionModeIntf does not exist; default to not enforcing
-+ log<level::ERR>("sdbusplus exception", entry("EXCEPTION=%s", e.what()));
- }
- }
-
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0018-Catch-sdbusplus-exceptions-in-IPMI-net.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0018-Catch-sdbusplus-exceptions-in-IPMI-net.patch
deleted file mode 100644
index 6fa69b602..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0018-Catch-sdbusplus-exceptions-in-IPMI-net.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 4490ee7a9fd054640af7a9da3400f76195dc2880 Mon Sep 17 00:00:00 2001
-From: Yong Li <yong.b.li@linux.intel.com>
-Date: Sun, 16 Sep 2018 21:03:58 +0800
-Subject: [PATCH] Catch sdbusplus exceptions in IPMI net
-
-Missing the correct exception was causing issues with setting the IPV4
-address
-
-Change-Id: Ieaaacfcbaec82a0c3b110889817a7ceb9cda8d3c
-Signed-off-by: Dave Cobbley <david.j.cobbley@linux.intel.com>
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
----
- transporthandler.cpp | 2 +-
- utils.cpp | 5 +++--
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 6f4ec3f..6cb3feb 100644
---- a/transporthandler.cpp
-+++ b/transporthandler.cpp
-@@ -1559,7 +1559,7 @@ void applyChanges(int channel)
- ipmi::network::ETHERNET_INTERFACE, "IPv6AcceptRA",
- (bool)channelConf->ipv6RouterAddressConfigControl);
- }
-- catch (InternalFailure& e)
-+ catch (sdbusplus::exception::exception& e)
- {
- log<level::ERR>(
- "Failed to set network data", entry("PREFIX=%d", prefix),
-diff --git a/utils.cpp b/utils.cpp
-index 225b1cc..d10b5de 100644
---- a/utils.cpp
-+++ b/utils.cpp
-@@ -358,9 +358,10 @@ void deleteAllDbusObjects(sdbusplus::bus::bus& bus,
- "Delete");
- }
- }
-- catch (InternalFailure& e)
-+ catch (sdbusplus::exception::exception& e)
- {
-- log<level::INFO>("Unable to delete the objects having",
-+ log<level::INFO>("sdbusplus exception - Unable to delete the objects",
-+ entry("ERROR=%s", e.what()),
- entry("INTERFACE=%s", interface.c_str()),
- entry("SERVICE=%s", serviceRoot.c_str()));
- }
---
-2.7.4
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0048-Implement-IPMI-Master-Write-Read-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0048-Implement-IPMI-Master-Write-Read-command.patch
index 4018dbffe..542c4f667 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0048-Implement-IPMI-Master-Write-Read-command.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0048-Implement-IPMI-Master-Write-Read-command.patch
@@ -1,4 +1,4 @@
-From cd25f43461b41b74d19cd1f93ce301df9c3bd4f2 Mon Sep 17 00:00:00 2001
+From a8d7429b7bd9dea33d59c6e83f17372e77fe6145 Mon Sep 17 00:00:00 2001
From: Yong Li <yong.b.li@linux.intel.com>
Date: Fri, 21 Sep 2018 09:21:14 +0800
Subject: [PATCH] Implement IPMI Master Write-Read command
@@ -11,31 +11,36 @@ that provide an SMBus slave interface.
Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
---
- apphandler.cpp | 236 ++++++++++++++++++++++++++++++++++++++++++++++
+ apphandler.cpp | 276 +++++++++++++++++++++++++++++++++++++-
apphandler.hpp | 1 +
host-ipmid-whitelist.conf | 1 +
- 3 files changed, 238 insertions(+)
+ 3 files changed, 274 insertions(+), 4 deletions(-)
diff --git a/apphandler.cpp b/apphandler.cpp
-index 17aff2a..2fe79f6 100644
+index 15965ca..d8fb23d 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
-@@ -8,6 +8,14 @@
- #include "types.hpp"
- #include "utils.hpp"
-
+@@ -1,6 +1,19 @@
++#include "apphandler.hpp"
++
++#include "app/watchdog.hpp"
++#include "sys_info_param.hpp"
++#include "transporthandler.hpp"
++
+ #include <arpa/inet.h>
+#include <fcntl.h>
++#include <ipmid/api.h>
+ #include <limits.h>
+#include <linux/i2c-dev.h>
+#include <linux/i2c.h>
+ #include <mapper.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
-+#include <unistd.h>
-+
- #include <arpa/inet.h>
- #include <host-ipmid/ipmid-api.h>
- #include <limits.h>
-@@ -55,6 +63,8 @@ constexpr auto bmc_guid_interface = "xyz.openbmc_project.Common.UUID";
+ #include <systemd/sd-bus.h>
+ #include <unistd.h>
+
+@@ -41,6 +54,8 @@ constexpr auto bmc_guid_interface = "xyz.openbmc_project.Common.UUID";
constexpr auto bmc_guid_property = "UUID";
constexpr auto bmc_guid_len = 16;
@@ -44,10 +49,23 @@ index 17aff2a..2fe79f6 100644
static constexpr auto redundancyIntf =
"xyz.openbmc_project.Software.RedundancyPriority";
static constexpr auto versionIntf = "xyz.openbmc_project.Software.Version";
-@@ -86,6 +96,34 @@ typedef struct
- uint8_t aux[4];
- } __attribute__((packed)) ipmi_device_id_t;
+@@ -59,6 +74,47 @@ using BMC = sdbusplus::xyz::openbmc_project::State::server::BMC;
+ namespace fs = std::filesystem;
+ namespace variant_ns = sdbusplus::message::variant_ns;
++// Offset in get device id command.
++typedef struct
++{
++ uint8_t id;
++ uint8_t revision;
++ uint8_t fw[2];
++ uint8_t ipmi_ver;
++ uint8_t addn_dev_support;
++ uint8_t manuf_id[3];
++ uint8_t prod_id[2];
++ uint8_t aux[4];
++} __attribute__((packed)) ipmi_device_id_t;
++
+typedef struct
+{
+ uint8_t busId;
@@ -79,7 +97,7 @@ index 17aff2a..2fe79f6 100644
/**
* @brief Returns the Version info from primary s/w object
*
-@@ -1089,8 +1127,195 @@ writeResponse:
+@@ -1022,6 +1078,192 @@ writeResponse:
return IPMI_CC_OK;
}
@@ -199,7 +217,8 @@ index 17aff2a..2fe79f6 100644
+ reqptr += sizeof(ipmiI2cRwReq);
+ std::copy(reqptr, reqptr + writeCount, outBuf.begin());
+
-+ log<level::DEBUG>("checking list ", entry("SIZE=%d", getWhiteList().size()));
++ log<level::DEBUG>("checking list ",
++ entry("SIZE=%d", getWhiteList().size()));
+ // command whitelist checking
+ for (unsigned int i = 0; i < getWhiteList().size(); i++)
+ {
@@ -270,16 +289,26 @@ index 17aff2a..2fe79f6 100644
+
void register_netfn_app_functions()
{
-+ int ret = -1;
-+
- // <Get BT Interface Capabilities>
- ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CAP_BIT, NULL,
- ipmi_app_get_bt_capabilities, PRIVILEGE_USER);
-@@ -1145,6 +1370,17 @@ void register_netfn_app_functions()
- ipmi_app_channel_info, PRIVILEGE_USER);
- #endif
+ // <Get Device ID>
+@@ -1063,6 +1306,31 @@ void register_netfn_app_functions()
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_ACPI, NULL,
+ ipmi_app_get_acpi_power_state, PRIVILEGE_ADMIN);
-+ ret = loadI2CWhiteList();
++// TODO: Below code and associated api's need to be removed later.
++// Its commented for now to avoid merge conflicts with upstream
++// changes and smooth upstream upgrades.
++#if 0
++>>>>>>> IPMI Channel commands implementation
++ // <Get Channel Access>
++ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CHANNEL_ACCESS, NULL,
++ ipmi_get_channel_access, PRIVILEGE_USER);
++
++ // <Get Channel Info Command>
++ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CHAN_INFO, NULL,
++ ipmi_app_channel_info, PRIVILEGE_USER);
++#endif
++
++ int ret = loadI2CWhiteList();
+ log<level::DEBUG>("i2c white list is loaded", entry("RET=%d", ret),
+ entry("SIZE=%d", getWhiteList().size()));
+ if (ret == 0)
@@ -306,17 +335,17 @@ index d4dd8e8..f9e5c59 100644
IPMI_CMD_SET_SYSTEM_INFO = 0x58,
IPMI_CMD_GET_SYSTEM_INFO = 0x59,
diff --git a/host-ipmid-whitelist.conf b/host-ipmid-whitelist.conf
-index c7eb2d8..22a2a3c 100644
+index 49ff7b0..1ae79fd 100644
--- a/host-ipmid-whitelist.conf
+++ b/host-ipmid-whitelist.conf
-@@ -25,6 +25,7 @@
- 0x06:0x36 //<App>:<Get BT Interface Capabilities>
+@@ -27,6 +27,7 @@
0x06:0x37 //<App>:<Get System GUID>
0x06:0x42 //<App>:<Get Channel Info Command>
+ 0x06:0x4E //<App>:<Get Channel Payload Support>
+0x06:0x52 //<App>:<Master Write Read Command>
0x06:0x54 //<App>:<Get Channel Cipher Suites>
0x0A:0x10 //<Storage>:<Get FRU Inventory Area Info>
0x0A:0x11 //<Storage>:<Read FRU Data>
--
-2.7.4
+2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0051-Fix-Set-LAN-Config-to-work-without-SetInProgress.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0051-Fix-Set-LAN-Config-to-work-without-SetInProgress.patch
deleted file mode 100644
index 3990c6b5c..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0051-Fix-Set-LAN-Config-to-work-without-SetInProgress.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From cae9e21f88e6f12c80c89402473a17a10258c843 Mon Sep 17 00:00:00 2001
-From: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
-Date: Thu, 17 Jan 2019 21:22:30 +0530
-Subject: [PATCH] Fix: Set LAN Config to work without SetInProgress
-
-Set LAN Configuration parameters in up-stream code works
-with SetInProgress (parameter selector 0), to be marked
-as SET_IN_PROGRESS before fields update, and SET_COMPLETE to
-make the changes effective. This is not mandatory as per
-IPMI Spec, and we must support individual fields update.
-Fix:
-1. After SET_COMPLETE for parameter selector, changes has
-to be applied immediately, and doesn't require to rely on
-network timer, as purpose of this logic itself is to stage
-and commit.
-2. Allow individual parameter changes to take effect based
-on timer. For the time being reduced the timer to 5 sec
-to have quicker turn-around and group things together.
-
-TODO:
-Still need to introduce lock between ChannelConfig variable
-between Timer & Get / Set LAN Configuration command to avoid
-race condition
-
-Unit-Test:
-1. Verified the BIOS Setup page, able to set the IPV4 to static
-IP, afte disabling IPV6, and configuring IPV4 to static, after
-save and reset, the changes of IPV4 static is preserved.
-
-Change-Id: I7c2edad2861b5dba5ad1ca97cc5e39ac02871746
-Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
----
- transporthandler.cpp | 54 ++++++++++++++++++++++++++++++++++++----------------
- transporthandler.hpp | 2 ++
- 2 files changed, 40 insertions(+), 16 deletions(-)
-
-Index: phosphor-host-ipmid.clean/transporthandler.cpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.cpp
-+++ phosphor-host-ipmid.clean/transporthandler.cpp
-@@ -399,6 +399,41 @@ struct set_lan_t
- uint8_t data[8]; // Per IPMI spec, not expecting more than this size
- } __attribute__((packed));
-
-+ipmi_ret_t checkAndUpdateNetwork(int channel)
-+{
-+ auto channelConf = getChannelConfig(channel);
-+ using namespace std::chrono_literals;
-+ // time to wait before applying the network changes.
-+ constexpr auto networkTimeout = 5000000us; // 5 sec
-+
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE &&
-+ ((channelConf->flush == false) ||
-+ (channelConf->updateInProgress == true)))
-+ {
-+ channelConf->flush = true;
-+ // used to indicate that network timer update is in progress.
-+ channelConf->updateInProgress = true;
-+ if (!networkTimer)
-+ {
-+ log<level::ERR>("Network timer is not instantiated");
-+ return IPMI_CC_UNSPECIFIED_ERROR;
-+ }
-+ // start/restart the timer
-+ // TODO: Need to implement locking mechansim between networkTimer &
-+ // get/set to avoid race condition.
-+ networkTimer->start(networkTimeout);
-+ }
-+ else if (channelConf->lan_set_in_progress == SET_COMPLETE &&
-+ channelConf->flush == true &&
-+ channelConf->updateInProgress == false)
-+ {
-+ // Apply the network changes immediately, if proper SET_IN_PROGRESS,
-+ // followed by SET_COMPLETE is issued.
-+ applyChanges(channel);
-+ }
-+ return IPMI_CC_OK;
-+}
-+
- ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
- ipmi_request_t request,
- ipmi_response_t response,
-@@ -406,12 +441,6 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
- ipmi_context_t context)
- {
- ipmi_ret_t rc = IPMI_CC_OK;
--
-- using namespace std::chrono_literals;
--
-- // time to wait before applying the network changes.
-- constexpr auto networkTimeout = 10000000us; // 10 sec
--
- char ipaddr[INET_ADDRSTRLEN];
- char netmask[INET_ADDRSTRLEN];
- char gateway[INET_ADDRSTRLEN];
-@@ -543,15 +572,6 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
- entry("ADDRESS=%s", channelConf->ipaddr.c_str()),
- entry("GATEWAY=%s", channelConf->gateway.c_str()),
- entry("VLAN=%d", channelConf->vlanID));
--
-- if (!networkTimer)
-- {
-- log<level::ERR>("Network timer is not instantiated");
-- return IPMI_CC_UNSPECIFIED_ERROR;
-- }
--
-- // start/restart the timer
-- networkTimer->start(networkTimeout);
- }
- else if (reqptr->data[0] == SET_IN_PROGRESS) // Set In Progress
- {
-@@ -680,8 +700,10 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
- default:
- {
- rc = IPMI_CC_PARM_NOT_SUPPORTED;
-+ return rc;
- }
- }
-+ rc = checkAndUpdateNetwork(channel);
-
- return rc;
- }
-Index: phosphor-host-ipmid.clean/transporthandler.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.hpp
-+++ phosphor-host-ipmid.clean/transporthandler.hpp
-@@ -140,6 +140,7 @@ struct ChannelConfig_t
- // vlan id is in 12 bits and the 16th bit is for enable mask.
- uint32_t vlanID = ipmi::network::VLAN_ID_MASK;
- uint8_t lan_set_in_progress = SET_COMPLETE;
-+ uint8_t updateInProgress = false;
- bool flush = false;
-
- // IPV6 parameters
-@@ -165,6 +166,7 @@ struct ChannelConfig_t
- vlanID = ipmi::network::VLAN_ID_MASK;
- ipsrc = ipmi::network::IPOrigin::UNSPECIFIED;
- lan_set_in_progress = SET_COMPLETE;
-+ updateInProgress = false;
- flush = false;
-
- // IPv6
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0058-Add-AC-failed-bit-support-for-get-chassis-status-com.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0058-Add-AC-failed-bit-support-for-get-chassis-status-com.patch
new file mode 100644
index 000000000..42bb682c4
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0058-Add-AC-failed-bit-support-for-get-chassis-status-com.patch
@@ -0,0 +1,76 @@
+From f51bef8f7c5785405ee5c83a921efb1bc05e4947 Mon Sep 17 00:00:00 2001
+From: Yong Li <yong.b.li@linux.intel.com>
+Date: Wed, 27 Mar 2019 16:11:25 +0800
+Subject: [PATCH] =?UTF-8?q?Add=20=E2=80=9CAC=20failed=E2=80=9D=20bit=20sup?=
+ =?UTF-8?q?port=20for=20get=20chassis=20status=20command?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+PFail property is provided by power control service,
+ture means the booting is from AC loss.
+
+Tested:
+Remove the AC cable and reconnect it
+Ipmitool chassis status to check the status:
+Last Power Event : ac-failed
+
+Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
+---
+ chassishandler.cpp | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/chassishandler.cpp b/chassishandler.cpp
+index 7a522ad..40d2018 100644
+--- a/chassishandler.cpp
++++ b/chassishandler.cpp
+@@ -844,6 +844,7 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ sd_bus_message* reply = NULL;
+ int r = 0;
+ int pgood = 0;
++ bool pFail = true;
+ char* busname = NULL;
+ ipmi_ret_t rc = IPMI_CC_OK;
+ ipmi_get_chassis_status_t chassis_status{};
+@@ -904,6 +905,26 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ goto finish;
+ }
+
++ r = sd_bus_get_property(bus, busname, objname, intf, "PFail", NULL, &reply,
++ "b");
++ if (r < 0)
++ {
++ log<level::ERR>("Failed to call sd_bus_get_property",
++ entry("PROPERTY=%s", "PFail"), entry("ERRNO=0x%X", -r),
++ entry("BUS=%s", busname), entry("PATH=%s", objname),
++ entry("INTERFACE=%s", intf));
++ rc = IPMI_CC_UNSPECIFIED_ERROR;
++ goto finish;
++ }
++
++ r = sd_bus_message_read(reply, "b", &pFail);
++ if (r < 0)
++ {
++ log<level::ERR>("Failed to read PFail:", entry("ERRNO=0x%X", -r));
++ rc = IPMI_CC_UNSPECIFIED_ERROR;
++ goto finish;
++ }
++
+ s = dbusToIpmi.at(powerRestore);
+
+ // Current Power State
+@@ -952,6 +973,11 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+
+ chassis_status.last_power_event = 0;
+
++ if (pFail)
++ {
++ chassis_status.last_power_event |= 1;
++ }
++
+ // Misc. Chassis State
+ // [7] – reserved
+ // [6] – 1b = Chassis Identify command and state info supported (Optional)
+--
+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
new file mode 100644
index 000000000..1dc55e2f4
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch
@@ -0,0 +1,415 @@
+From 1c15df9d82254286d0773086836767f23711c5d9 Mon Sep 17 00:00:00 2001
+From: Cheng C Yang <cheng.c.yang@intel.com>
+Date: Tue, 2 Apr 2019 00:34:34 +0800
+Subject: [PATCH] Move Set SOL config parameter to host-ipmid
+
+Move Set SOL config parameter command from net-ipmid to host-ipmid,
+so that BIOS in Intel platform can enable or disable SOL through KCS.
+Get SOL config parameter command will be moved later.
+
+Tested by:
+With the related change in phospher-ipmi-net and phospher-dbus-interface,
+Run commands:
+ipmitool raw 0x0c 0x21 0x0e 0x00 0x01
+ipmitool raw 0x0c 0x21 0x0e 0x01 0x00
+ipmitool raw 0x0c 0x21 0x0e 0x02 0x03
+ipmitool raw 0x0c 0x21 0x0e 0x03 0x5 0x03
+ipmitool raw 0x0c 0x21 0x0e 0x04 0x5 0x03
+All these commands have correct response and all dbus interface for
+sol command change to same value in above commands.
+After reboot BMC, "Progress" property in dbus interface change back
+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 +
+ include/ipmid/api.h | 1 +
+ transporthandler.cpp | 222 ++++++++++++++++++++++++++++++++++++++
+ transporthandler.hpp | 97 +++++++++++++++++
+ 4 files changed, 321 insertions(+)
+
+diff --git a/host-ipmid-whitelist.conf b/host-ipmid-whitelist.conf
+index 2a83347..544b766 100644
+--- a/host-ipmid-whitelist.conf
++++ b/host-ipmid-whitelist.conf
+@@ -41,6 +41,7 @@
+ 0x0A:0x48 //<Storage>:<Get SEL Time>
+ 0x0A:0x49 //<Storage>:<Set SEL Time>
+ 0x0C:0x02 //<Transport>:<Get LAN Configuration Parameters>
++0x0C:0x21 //<Transport>:<Set SOL Configuration Parameters>
+ 0x2C:0x00 //<Group Extension>:<Group Extension Command>
+ 0x2C:0x01 //<Group Extension>:<Get DCMI Capabilities>
+ 0x2C:0x02 //<Group Extension>:<Get Power Reading>
+diff --git a/include/ipmid/api.h b/include/ipmid/api.h
+index f08ee11..2f366b4 100644
+--- a/include/ipmid/api.h
++++ b/include/ipmid/api.h
+@@ -113,6 +113,7 @@ enum ipmi_return_codes
+ IPMI_DCMI_CC_NO_ACTIVE_POWER_LIMIT = 0x80,
+ IPMI_WDOG_CC_NOT_INIT = 0x80,
+ IPMI_CC_SYSTEM_INFO_PARAMETER_NOT_SUPPORTED = 0x80,
++ IPMI_CC_SET_IN_PROGRESS_ACTIVE = 0x81,
+ IPMI_CC_SYSTEM_INFO_PARAMETER_SET_READ_ONLY = 0x82,
+ IPMI_CC_BUSY = 0xC0,
+ IPMI_CC_INVALID = 0xC1,
+diff --git a/transporthandler.cpp b/transporthandler.cpp
+index 8f18b76..a693279 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"};
+
++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;
+@@ -1633,6 +1636,219 @@ void createNetworkTimer()
+ }
+ }
+
++static int setSOLParameter(std::string property, const ipmi::Value& value)
++{
++ auto dbus = getSdBus();
++
++ static std::string solService{};
++ if (solService.empty())
++ {
++ try
++ {
++ solService = ipmi::getService(*dbus, solInterface, solPath);
++ }
++ catch (const sdbusplus::exception::SdBusError& e)
++ {
++ solService.clear();
++ phosphor::logging::log<phosphor::logging::level::ERR>(
++ "Error: get SOL service failed");
++ return -1;
++ }
++ }
++ try
++ {
++ ipmi::setDbusProperty(*dbus, solService, solPath, solInterface,
++ property, value);
++ }
++ catch (sdbusplus::exception_t&)
++ {
++ phosphor::logging::log<phosphor::logging::level::ERR>(
++ "Error setting sol parameter");
++ return -1;
++ }
++
++ return 0;
++}
++
++static int getSOLParameter(std::string property, ipmi::Value& value)
++{
++ auto dbus = getSdBus();
++
++ static std::string solService{};
++ if (solService.empty())
++ {
++ try
++ {
++ solService = ipmi::getService(*dbus, solInterface, solPath);
++ }
++ catch (const sdbusplus::exception::SdBusError& e)
++ {
++ solService.clear();
++ phosphor::logging::log<phosphor::logging::level::ERR>(
++ "Error: get SOL service failed");
++ return -1;
++ }
++ }
++ try
++ {
++ value = ipmi::getDbusProperty(*dbus, solService, solPath, solInterface,
++ property);
++ }
++ catch (sdbusplus::exception_t&)
++ {
++ phosphor::logging::log<phosphor::logging::level::ERR>(
++ "Error getting sol parameter");
++ return -1;
++ }
++
++ return 0;
++}
++
++void initializeSOLInProgress()
++{
++ if (setSOLParameter("Progress", static_cast<uint8_t>(0)) < 0)
++ {
++ phosphor::logging::log<phosphor::logging::level::ERR>(
++ "Error initialize sol progress");
++ }
++}
++
++ipmi_ret_t setConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
++ ipmi_request_t request, ipmi_response_t response,
++ ipmi_data_len_t dataLen, ipmi_context_t context)
++{
++ auto reqData = reinterpret_cast<const SetConfParamsRequest*>(request);
++
++ // Check request length first
++ switch (static_cast<sol::Parameter>(reqData->paramSelector))
++ {
++ case sol::Parameter::progress:
++ case sol::Parameter::enable:
++ case sol::Parameter::authentication:
++ {
++ if (*dataLen != sizeof(SetConfParamsRequest) - 1)
++ {
++ *dataLen = 0;
++ return IPMI_CC_REQ_DATA_LEN_INVALID;
++ }
++ break;
++ }
++ case sol::Parameter::accumulate:
++ case sol::Parameter::retry:
++ {
++ if (*dataLen != sizeof(SetConfParamsRequest))
++ {
++ *dataLen = 0;
++ return IPMI_CC_REQ_DATA_LEN_INVALID;
++ }
++ break;
++ }
++ default:
++ break;
++ }
++
++ *dataLen = 0;
++
++ switch (static_cast<sol::Parameter>(reqData->paramSelector))
++ {
++ case sol::Parameter::progress:
++ {
++ uint8_t progress = reqData->value & progressMask;
++ ipmi::Value currentProgress = 0;
++ if (getSOLParameter("Progress", currentProgress) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++
++ if ((std::get<uint8_t>(currentProgress) == 1) && (progress == 1))
++ {
++ return IPMI_CC_SET_IN_PROGRESS_ACTIVE;
++ }
++
++ if (setSOLParameter("Progress", progress) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ break;
++ }
++ case sol::Parameter::enable:
++ {
++ bool enable = reqData->value & enableMask;
++ if (setSOLParameter("Enable", enable) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ break;
++ }
++ case sol::Parameter::authentication:
++ {
++ // if encryption is used authentication must also be used.
++ if (reqData->auth.encrypt && !reqData->auth.auth)
++ {
++ return IPMI_CC_SYSTEM_INFO_PARAMETER_SET_READ_ONLY;
++ }
++ else if (reqData->auth.privilege <
++ static_cast<uint8_t>(sol::Privilege::userPriv) ||
++ reqData->auth.privilege >
++ static_cast<uint8_t>(sol::Privilege::oemPriv))
++ {
++ return IPMI_CC_INVALID_FIELD_REQUEST;
++ }
++
++ if ((setSOLParameter("Privilege", reqData->auth.privilege) < 0) ||
++ (setSOLParameter("ForceEncryption",
++ static_cast<bool>(reqData->auth.encrypt)) <
++ 0) ||
++ (setSOLParameter("ForceAuthentication",
++ static_cast<bool>(reqData->auth.auth)) < 0))
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++
++ break;
++ }
++ case sol::Parameter::accumulate:
++ {
++ if (reqData->acc.threshold == 0)
++ {
++ return IPMI_CC_INVALID_FIELD_REQUEST;
++ }
++ if (setSOLParameter("AccumulateIntervalMS", reqData->acc.interval) <
++ 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ if (setSOLParameter("Threshold", reqData->acc.threshold) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ break;
++ }
++ case sol::Parameter::retry:
++ {
++ if ((setSOLParameter("RetryCount", reqData->retry.count) < 0) ||
++ (setSOLParameter("RetryIntervalMS", reqData->retry.interval) <
++ 0))
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++
++ break;
++ }
++ case sol::Parameter::port:
++ {
++ return IPMI_CC_SYSTEM_INFO_PARAMETER_SET_READ_ONLY;
++ }
++ case sol::Parameter::nvbitrate:
++ case sol::Parameter::vbitrate:
++ case sol::Parameter::channel:
++ default:
++ return IPMI_CC_PARM_NOT_SUPPORTED;
++ }
++
++ return IPMI_CC_OK;
++}
++
+ void register_netfn_transport_functions()
+ {
+ // As this timer is only for transport handler
+@@ -1650,5 +1866,11 @@ void register_netfn_transport_functions()
+ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_GET_LAN, NULL,
+ ipmi_transport_get_lan, PRIVILEGE_OPERATOR);
+
++ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_SET_SOL_CONF_PARAMS, NULL,
++ setConfParams, PRIVILEGE_ADMIN);
++
++ // Initialize dbus property progress to 0 every time sol manager restart.
++ initializeSOLInProgress();
++
+ return;
+ }
+diff --git a/transporthandler.hpp b/transporthandler.hpp
+index bd23391..3b5e9e1 100644
+--- a/transporthandler.hpp
++++ b/transporthandler.hpp
+@@ -8,6 +8,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 +188,98 @@ 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;
++
++struct Auth
++{
++#if BYTE_ORDER == LITTLE_ENDIAN
++ uint8_t privilege : 4; //!< SOL privilege level.
++ uint8_t reserved : 2; //!< Reserved.
++ uint8_t auth : 1; //!< Force SOL payload Authentication.
++ uint8_t encrypt : 1; //!< Force SOL payload encryption.
++#endif
++
++#if BYTE_ORDER == BIG_ENDIAN
++ uint8_t encrypt : 1; //!< Force SOL payload encryption.
++ uint8_t auth : 1; //!< Force SOL payload Authentication.
++ uint8_t reserved : 2; //!< Reserved.
++ uint8_t privilege : 4; //!< SOL privilege level.
++#endif
++} __attribute__((packed));
++
++struct Accumulate
++{
++ uint8_t interval; //!< Character accumulate interval.
++ uint8_t threshold; //!< Character send threshold.
++} __attribute__((packed));
++
++struct Retry
++{
++#if BYTE_ORDER == LITTLE_ENDIAN
++ uint8_t count : 3; //!< SOL retry count.
++ uint8_t reserved : 5; //!< Reserved.
++#endif
++
++#if BYTE_ORDER == BIG_ENDIAN
++ uint8_t reserved : 5; //!< Reserved.
++ uint8_t count : 3; //!< SOL retry count.
++#endif
++
++ uint8_t interval; //!< SOL retry interval.
++} __attribute__((packed));
++
++struct SetConfParamsRequest
++{
++#if BYTE_ORDER == LITTLE_ENDIAN
++ uint8_t channelNumber : 4; //!< Channel number.
++ uint8_t reserved : 4; //!< Reserved.
++#endif
++
++#if BYTE_ORDER == BIG_ENDIAN
++ uint8_t reserved : 4; //!< Reserved.
++ uint8_t channelNumber : 4; //!< Channel number.
++#endif
++
++ uint8_t paramSelector; //!< Parameter selector.
++ union
++ {
++ uint8_t value; //!< Represents one byte SOL parameters.
++ struct Accumulate acc; //!< Character accumulate values.
++ struct Retry retry; //!< Retry values.
++ struct Auth auth; //!< Authentication parameters.
++ };
++} __attribute__((packed));
++
++struct SetConfParamsResponse
++{
++ uint8_t completionCode; //!< Completion code.
++} __attribute__((packed));
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch
new file mode 100644
index 000000000..49a2c01ba
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch
@@ -0,0 +1,248 @@
+From 973865687325c6563fd6b729a3a220661066f635 Mon Sep 17 00:00:00 2001
+From: Cheng C Yang <cheng.c.yang@intel.com>
+Date: Wed, 3 Apr 2019 15:55:04 +0800
+Subject: [PATCH] Move Get SOL config parameter to host-ipmid
+
+Move Get SOL config parameter command from net-ipmid to host-ipmid.
+
+Tested By:
+Run command ipmitool sol info
+Set in progress : set-complete
+Enabled : true
+Force Encryption : false
+Force Authentication : false
+Privilege Level : USER
+Character Accumulate Level (ms) : 100
+Character Send Threshold : 1
+Retry Count : 3
+Retry Interval (ms) : 100
+Volatile Bit Rate (kbps) : IPMI-Over-Serial-Setting
+Non-Volatile Bit Rate (kbps) : IPMI-Over-Serial-Setting
+Payload Channel : 14 (0x0e)
+Payload Port : 623
+
+Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
+---
+ transporthandler.cpp | 139 ++++++++++++++++++++++++++++++++++++++++++++++++---
+ transporthandler.hpp | 26 +++++++++-
+ 2 files changed, 156 insertions(+), 9 deletions(-)
+
+diff --git a/transporthandler.cpp b/transporthandler.cpp
+index 2111acf..b18f522 100644
+--- a/transporthandler.cpp
++++ b/transporthandler.cpp
+@@ -1715,11 +1715,133 @@ void initializeSOLInProgress()
+ }
+ }
+
+-ipmi_ret_t setConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+- ipmi_request_t request, ipmi_response_t response,
+- ipmi_data_len_t dataLen, ipmi_context_t context)
++// For getsetSOLConfParams, there are still three tings TODO:
++// 1. session less channel number request has to return error.
++// 2. convert 0xE channel number.
++// 3. have unique object for every session based channel.
++ipmi_ret_t getSOLConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
++ ipmi_request_t request, ipmi_response_t response,
++ ipmi_data_len_t dataLen, ipmi_context_t context)
+ {
+- auto reqData = reinterpret_cast<const SetConfParamsRequest*>(request);
++ auto reqData = reinterpret_cast<const GetSOLConfParamsRequest*>(request);
++ std::vector<uint8_t> outPayload;
++
++ if (*dataLen < sizeof(GetSOLConfParamsRequest) - 2)
++ {
++ *dataLen = 0;
++ return IPMI_CC_REQ_DATA_LEN_INVALID;
++ }
++
++ *dataLen = 0;
++
++ outPayload.push_back(solParameterRevision);
++ if (reqData->getParamRev)
++ {
++ std::copy(outPayload.begin(), outPayload.end(),
++ static_cast<uint8_t*>(response));
++ *dataLen = outPayload.size();
++ return IPMI_CC_OK;
++ }
++
++ ipmi::Value value;
++ switch (static_cast<sol::Parameter>(reqData->paramSelector))
++ {
++ case sol::Parameter::progress:
++ {
++ if (getSOLParameter("Progress", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(std::get<uint8_t>(value));
++ break;
++ }
++ case sol::Parameter::enable:
++ {
++ if (getSOLParameter("Enable", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(static_cast<uint8_t>(std::get<bool>(value)));
++ break;
++ }
++ case sol::Parameter::authentication:
++ {
++ uint8_t authentication = 0;
++ if (getSOLParameter("Privilege", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ authentication = (std::get<uint8_t>(value) & 0x0f);
++
++ if (getSOLParameter("ForceAuthentication", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ authentication |=
++ (static_cast<uint8_t>(std::get<bool>(value)) << 6);
++
++ if (getSOLParameter("ForceEncryption", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ authentication |=
++ (static_cast<uint8_t>(std::get<bool>(value)) << 7);
++ outPayload.push_back(authentication);
++ break;
++ }
++ case sol::Parameter::accumulate:
++ {
++ if (getSOLParameter("AccumulateIntervalMS", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(std::get<uint8_t>(value));
++
++ if (getSOLParameter("Threshold", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(std::get<uint8_t>(value));
++ break;
++ }
++ case sol::Parameter::retry:
++ {
++ if (getSOLParameter("RetryCount", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(std::get<uint8_t>(value) & 0x03);
++
++ if (getSOLParameter("RetryIntervalMS", value) < 0)
++ {
++ return IPMI_CC_UNSPECIFIED_ERROR;
++ }
++ outPayload.push_back(std::get<uint8_t>(value));
++ break;
++ }
++ case sol::Parameter::port:
++ {
++ uint16_t port = htole16(ipmiStdPort);
++ auto buffer = reinterpret_cast<const uint8_t*>(&port);
++ std::copy(buffer, buffer + sizeof(port),
++ std::back_inserter(outPayload));
++ break;
++ }
++ default:
++ return IPMI_CC_PARM_NOT_SUPPORTED;
++ }
++ std::copy(outPayload.begin(), outPayload.end(),
++ static_cast<uint8_t*>(response));
++ *dataLen = outPayload.size();
++
++ return IPMI_CC_OK;
++}
++
++ipmi_ret_t setSOLConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
++ ipmi_request_t request, ipmi_response_t response,
++ ipmi_data_len_t dataLen, ipmi_context_t context)
++{
++ auto reqData = reinterpret_cast<const SetSOLConfParamsRequest*>(request);
+
+ // Check request length first
+ switch (static_cast<sol::Parameter>(reqData->paramSelector))
+@@ -1728,7 +1850,7 @@ ipmi_ret_t setConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ case sol::Parameter::enable:
+ case sol::Parameter::authentication:
+ {
+- if (*dataLen != sizeof(SetConfParamsRequest) - 1)
++ if (*dataLen != sizeof(SetSOLConfParamsRequest) - 1)
+ {
+ *dataLen = 0;
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+@@ -1738,7 +1860,7 @@ ipmi_ret_t setConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ case sol::Parameter::accumulate:
+ case sol::Parameter::retry:
+ {
+- if (*dataLen != sizeof(SetConfParamsRequest))
++ if (*dataLen != sizeof(SetSOLConfParamsRequest))
+ {
+ *dataLen = 0;
+ return IPMI_CC_REQ_DATA_LEN_INVALID;
+@@ -1869,7 +1991,10 @@ void register_netfn_transport_functions()
+ ipmi_transport_get_lan, PRIVILEGE_OPERATOR);
+
+ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_SET_SOL_CONF_PARAMS, NULL,
+- setConfParams, PRIVILEGE_ADMIN);
++ setSOLConfParams, PRIVILEGE_ADMIN);
++
++ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_GET_SOL_CONF_PARAMS, NULL,
++ getSOLConfParams, PRIVILEGE_ADMIN);
+
+ // Initialize dbus property progress to 0 every time sol manager restart.
+ initializeSOLInProgress();
+diff --git a/transporthandler.hpp b/transporthandler.hpp
+index 3b5e9e1..7132cff 100644
+--- a/transporthandler.hpp
++++ b/transporthandler.hpp
+@@ -257,7 +257,7 @@ struct Retry
+ uint8_t interval; //!< SOL retry interval.
+ } __attribute__((packed));
+
+-struct SetConfParamsRequest
++struct SetSOLConfParamsRequest
+ {
+ #if BYTE_ORDER == LITTLE_ENDIAN
+ uint8_t channelNumber : 4; //!< Channel number.
+@@ -279,7 +279,29 @@ struct SetConfParamsRequest
+ };
+ } __attribute__((packed));
+
+-struct SetConfParamsResponse
++struct SetSOLConfParamsResponse
+ {
+ uint8_t completionCode; //!< Completion code.
+ } __attribute__((packed));
++
++struct GetSOLConfParamsRequest
++{
++#if BYTE_ORDER == LITTLE_ENDIAN
++ uint8_t channelNum : 4; //!< Channel number.
++ uint8_t reserved : 3; //!< Reserved.
++ uint8_t getParamRev : 1; //!< Get parameter or Get parameter revision
++#endif
++
++#if BYTE_ORDER == BIG_ENDIAN
++ uint8_t getParamRev : 1; //!< Get parameter or Get parameter revision
++ uint8_t reserved : 3; //!< Reserved.
++ uint8_t channelNum : 4; //!< Channel number.
++#endif
++
++ uint8_t paramSelector; //!< Parameter selector.
++ uint8_t setSelector; //!< Set selector.
++ uint8_t blockSelector; //!< Block selector.
++} __attribute__((packed));
++
++static constexpr uint16_t ipmiStdPort = 623;
++static constexpr uint8_t solParameterRevision = 0x11;
+--
+2.16.2
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
index 2d47fdfff..f454f7ce9 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -3,7 +3,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
# TODO: This should be removed, once up-stream bump up
# issue is resolved
#SRC_URI = "git://github.com/openbmc/phosphor-host-ipmid"
-SRCREV = "55768e3548ef7476d4fdbe7be7a3ddb4d4896f14"
+SRCREV = "11df4f6906edc0dfb23089a6e297158549c19ebd"
SRC_URI += "file://phosphor-ipmi-host.service \
file://0002-Modify-dbus-interface-for-power-control.patch \
@@ -13,25 +13,17 @@ SRC_URI += "file://phosphor-ipmi-host.service \
file://0012-ipmi-set-get-boot-options.patch \
file://0013-ipmi-add-set-bios-id-to-whitelist.patch \
file://0014-Enable-get-device-guid-ipmi-command.patch \
- file://0016-add-better-sdbusplus-exception-handling.patch \
- file://0018-Catch-sdbusplus-exceptions-in-IPMI-net.patch \
file://0021-Implement-IPMI-Commmand-Get-Host-Restart-Cause.patch \
file://0039-ipmi-add-oem-command-get-AIC-FRU-to-whitelist.patch \
file://0048-Implement-IPMI-Master-Write-Read-command.patch \
file://0049-Fix-Unspecified-error-on-ipmi-restart-cause-command.patch \
file://0050-enable-6-oem-commands.patch \
- file://0051-Fix-Set-LAN-Config-to-work-without-SetInProgress.patch \
file://0053-Fix-keep-looping-issue-when-entering-OS.patch \
file://0055-Implement-set-front-panel-button-enables-command.patch \
file://0056-add-SetInProgress-to-get-set-boot-option-cmd.patch \
file://0057-Add-timer-use-actions-support.patch \
+ file://0058-Add-AC-failed-bit-support-for-get-chassis-status-com.patch \
+ file://0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch \
+ file://0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch \
"
-do_install_append(){
- install -d ${D}${includedir}/phosphor-ipmi-host
- install -d ${D}${libdir}/phosphor-ipmi-host
- install -m 0644 -D ${S}/*.h ${D}${includedir}/phosphor-ipmi-host
- install -m 0644 -D ${S}/*.hpp ${D}${includedir}/phosphor-ipmi-host
- install -m 0644 -D ${S}/utils.cpp ${D}${libdir}/phosphor-ipmi-host
-
-}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend
index d5d38a0ce..694bd1fcf 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend
@@ -1,2 +1,2 @@
SRC_URI = "git://github.com/openbmc/ipmbbridge.git"
-SRCREV = "25e85c79257723b1cb754c20299196685373ce24"
+SRCREV = "08deaa317c7ac0dd6e4202529ff17962c63df485"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/00010-Change-Authentication-Parameter.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/00010-Change-Authentication-Parameter.patch
new file mode 100644
index 000000000..867b3aba6
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/00010-Change-Authentication-Parameter.patch
@@ -0,0 +1,40 @@
+From 0fd38eb0a155cb11ff5a5452087f68c46d12111b Mon Sep 17 00:00:00 2001
+From: Cheng C Yang <cheng.c.yang@intel.com>
+Date: Thu, 28 Mar 2019 18:10:40 +0800
+Subject: [PATCH] Change Authentication Parameter
+
+Seprate D-bus interface Authentication to forceAuthentication,
+forceEncryption, Privilege according to the related change in
+sol-dbus-interface.
+
+Tested By:
+ipmitool -I lanplus -H x -U x -P x raw 0x0c 0x21 0x0e 0x02 0x03
+ipmitool -I lanplus -H x -U x -P x raw 0x0c 0x21 0x0e 0x02 0xc2
+The parameters has been changed to the request data in above command.
+
+Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
+---
+ sol/sol_manager.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sol/sol_manager.cpp b/sol/sol_manager.cpp
+index de36723..0bd837e 100644
+--- a/sol/sol_manager.cpp
++++ b/sol/sol_manager.cpp
+@@ -195,8 +195,12 @@ void Manager::updateSOLParameter()
+
+ enable = std::get<bool>(properties["Enable"]);
+
++ forceEncrypt = std::get<bool>(properties["ForceEncryption"]);
++
++ forceAuth = std::get<bool>(properties["ForceAuthentication"]);
++
+ solMinPrivilege = static_cast<session::Privilege>(
+- std::get<uint8_t>(properties["Authentication"]));
++ std::get<uint8_t>(properties["Privilege"]));
+
+ accumulateInterval =
+ std::get<uint8_t>((properties["AccumulateIntervalMS"])) *
+--
+2.16.2
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch
index 7225c7529..0ad625a1f 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch
@@ -24,7 +24,7 @@ Index: phosphor-net-ipmid.clean/command/guid.cpp
-static constexpr auto guidObjPath = "/org/openbmc/control/chassis0";
+static constexpr auto guidObjPath =
-+ "/xyz/openbmc_project/Chassis/Control/Chassis0";
++ "/xyz/openbmc_project/Chassis/Control/Chassis0";
static constexpr auto propInterface = "org.freedesktop.DBus.Properties";
Guid getSystemGUID()
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0007-Adding-support-for-GetSessionInfo-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0007-Adding-support-for-GetSessionInfo-command.patch
index fda7ed2ca..bbbe6ae4f 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0007-Adding-support-for-GetSessionInfo-command.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0007-Adding-support-for-GetSessionInfo-command.patch
@@ -1,7 +1,7 @@
-From f5c7d30be4a097998d9390614c0faa2d77109ca5 Mon Sep 17 00:00:00 2001
+From b05fb3231810865ef1b6e627bb0452ae7a6c61f8 Mon Sep 17 00:00:00 2001
From: ssekar <suryakanth.sekar@linux.intel.com>
Date: Wed, 12 Dec 2018 16:04:15 +0530
-Subject: [PATCH] Adding support for GetSessionInfo command
+Subject: [PATCH 1/2] Adding support for GetSessionInfo command
Description: user can get all session info (remote ip,port,
session id, priv, etc) using this command.
@@ -20,14 +20,13 @@ Signed-off-by: ssekar <suryakanth.sekar@linux.intel.com>
message_handler.cpp | 1 +
sessions_manager.cpp | 55 +++++++++++++++
sessions_manager.hpp | 7 ++
- socket_channel.cpp | 27 ++++++-
- socket_channel.hpp | 3 +-
- 8 files changed, 301 insertions(+), 2 deletions(-)
+ socket_channel.hpp | 17 +++++
+ 7 files changed, 290 insertions(+)
-Index: phosphor-net-ipmid.clean/comm_module.cpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/comm_module.cpp
-+++ phosphor-net-ipmid.clean/comm_module.cpp
+diff --git a/comm_module.cpp b/comm_module.cpp
+index acc9089..7a1a17d 100644
+--- a/comm_module.cpp
++++ b/comm_module.cpp
@@ -53,6 +53,14 @@ void sessionSetupCommands()
&closeSession,
session::Privilege::CALLBACK,
@@ -43,20 +42,14 @@ Index: phosphor-net-ipmid.clean/comm_module.cpp
};
for (auto& iter : commands)
-Index: phosphor-net-ipmid.clean/command/session_cmds.cpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/command/session_cmds.cpp
-+++ phosphor-net-ipmid.clean/command/session_cmds.cpp
-@@ -5,11 +5,19 @@
-
- #include <host-ipmid/ipmid-api.h>
-
-+#include <iostream>
- #include <user_channel/channel_layer.hpp>
- #include <user_channel/user_layer.hpp>
-
+diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
+index 8606ce5..4beeb6e 100644
+--- a/command/session_cmds.cpp
++++ b/command/session_cmds.cpp
+@@ -8,6 +8,14 @@
namespace command
{
+
+// Defined as per IPMI sepcification
+static constexpr uint8_t searchCurrentSession = 0x00;
+static constexpr uint8_t searchSessionByHandle = 0xFE;
@@ -64,10 +57,11 @@ Index: phosphor-net-ipmid.clean/command/session_cmds.cpp
+
+static constexpr uint8_t ipmi15VerSession = 0x00;
+static constexpr uint8_t ipmi20VerSession = 0x01;
-
++
std::vector<uint8_t>
setSessionPrivilegeLevel(const std::vector<uint8_t>& inPayload,
-@@ -110,4 +118,143 @@ std::vector<uint8_t> closeSession(const
+ const message::Handler& handler)
+@@ -92,4 +100,143 @@ std::vector<uint8_t> closeSession(const std::vector<uint8_t>& inPayload,
return outPayload;
}
@@ -211,10 +205,10 @@ Index: phosphor-net-ipmid.clean/command/session_cmds.cpp
+}
+
} // namespace command
-Index: phosphor-net-ipmid.clean/command/session_cmds.hpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/command/session_cmds.hpp
-+++ phosphor-net-ipmid.clean/command/session_cmds.hpp
+diff --git a/command/session_cmds.hpp b/command/session_cmds.hpp
+index 9737fdb..741de23 100644
+--- a/command/session_cmds.hpp
++++ b/command/session_cmds.hpp
@@ -116,4 +116,59 @@ struct CloseSessionResponse
std::vector<uint8_t> closeSession(const std::vector<uint8_t>& inPayload,
const message::Handler& handler);
@@ -275,22 +269,22 @@ Index: phosphor-net-ipmid.clean/command/session_cmds.hpp
+ const message::Handler& handler);
+
} // namespace command
-Index: phosphor-net-ipmid.clean/message_handler.cpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/message_handler.cpp
-+++ phosphor-net-ipmid.clean/message_handler.cpp
-@@ -43,6 +43,7 @@ std::shared_ptr<Message> Handler::receiv
- sessionID = message->bmcSessionID;
- message->rcSessionID = session->getRCSessionID();
+diff --git a/message_handler.cpp b/message_handler.cpp
+index e2aafb3..b335236 100644
+--- a/message_handler.cpp
++++ b/message_handler.cpp
+@@ -43,6 +43,7 @@ bool Handler::receive()
+ sessionID = inMessage->bmcSessionID;
+ inMessage->rcSessionID = session->getRCSessionID();
session->updateLastTransactionTime();
+ session->channelPtr = channel;
- return message;
+ return true;
}
-Index: phosphor-net-ipmid.clean/sessions_manager.cpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/sessions_manager.cpp
-+++ phosphor-net-ipmid.clean/sessions_manager.cpp
+diff --git a/sessions_manager.cpp b/sessions_manager.cpp
+index 95a8a15..9f3210b 100644
+--- a/sessions_manager.cpp
++++ b/sessions_manager.cpp
@@ -88,6 +88,9 @@ std::shared_ptr<Session>
}
sessionID = session->getBMCSessionID();
@@ -301,7 +295,7 @@ Index: phosphor-net-ipmid.clean/sessions_manager.cpp
return session;
}
-@@ -149,12 +152,15 @@ std::shared_ptr<Session> Manager::getSes
+@@ -149,12 +152,15 @@ std::shared_ptr<Session> Manager::getSession(SessionID sessionID,
void Manager::cleanStaleEntries()
{
@@ -371,10 +365,10 @@ Index: phosphor-net-ipmid.clean/sessions_manager.cpp
+ return count;
+}
} // namespace session
-Index: phosphor-net-ipmid.clean/sessions_manager.hpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/sessions_manager.hpp
-+++ phosphor-net-ipmid.clean/sessions_manager.hpp
+diff --git a/sessions_manager.hpp b/sessions_manager.hpp
+index 9fd38b1..f6ed1c3 100644
+--- a/sessions_manager.hpp
++++ b/sessions_manager.hpp
@@ -82,8 +82,15 @@ class Manager
std::shared_ptr<Session>
getSession(SessionID sessionID,
@@ -391,14 +385,15 @@ Index: phosphor-net-ipmid.clean/sessions_manager.hpp
/**
* @brief Session Manager keeps the session objects as a sorted
* associative container with Session ID as the unique key
-Index: phosphor-net-ipmid.clean/socket_channel.hpp
-===================================================================
---- phosphor-net-ipmid.clean.orig/socket_channel.hpp
-+++ phosphor-net-ipmid.clean/socket_channel.hpp
-@@ -65,6 +65,23 @@ class Channel
+diff --git a/socket_channel.hpp b/socket_channel.hpp
+index ebe0c8f..349701e 100644
+--- a/socket_channel.hpp
++++ b/socket_channel.hpp
+@@ -64,6 +64,23 @@ class Channel
+ return endpoint.port();
}
- /**
++ /**
+ * @brief Return the binary representation of the remote IPv4 address
+ *
+ * getSessionInfo needs to return the remote IPv4 addresses of each session
@@ -415,7 +410,9 @@ Index: phosphor-net-ipmid.clean/socket_channel.hpp
+ return 0;
+ }
+
-+ /**
+ /**
* @brief Read the incoming packet
*
- * Reads the data available on the socket
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch
index 1a109a571..6212c0724 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch
@@ -1,16 +1,16 @@
-From 0ecc7c816ad4836f8f54922ba92cb527f5978d5a Mon Sep 17 00:00:00 2001
+From a413e390563205476656a9005ca447f5b626872f Mon Sep 17 00:00:00 2001
From: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
Date: Wed, 6 Mar 2019 10:35:56 +0530
-Subject: [PATCH] Sync GetSession Info cmd based on Upstream review
+Subject: [PATCH 2/2] Sync GetSession Info cmd based on Upstream review
Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
---
- comm_module.cpp | 12 ++++----
- command/session_cmds.cpp | 72 +++++++++++++++++++++---------------------------
- sessions_manager.cpp | 10 +++----
+ comm_module.cpp | 12 +++----
+ command/session_cmds.cpp | 71 ++++++++++++++++++----------------------
+ sessions_manager.cpp | 10 +++---
sessions_manager.hpp | 2 +-
- socket_channel.hpp | 33 +++++++++++-----------
- 5 files changed, 59 insertions(+), 70 deletions(-)
+ socket_channel.hpp | 33 ++++++++++---------
+ 5 files changed, 59 insertions(+), 69 deletions(-)
diff --git a/comm_module.cpp b/comm_module.cpp
index 7a1a17d..2546583 100644
@@ -36,25 +36,19 @@ index 7a1a17d..2546583 100644
for (auto& iter : commands)
diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
-index 7563b18..fc996a4 100644
+index 4beeb6e..0c3a4ed 100644
--- a/command/session_cmds.cpp
+++ b/command/session_cmds.cpp
-@@ -5,13 +5,12 @@
-
- #include <ipmid/api.h>
-
--#include <iostream>
- #include <user_channel/channel_layer.hpp>
- #include <user_channel/user_layer.hpp>
-
+@@ -8,7 +8,7 @@
namespace command
{
+
-// Defined as per IPMI sepcification
+// Defined as per IPMI specification
static constexpr uint8_t searchCurrentSession = 0x00;
static constexpr uint8_t searchSessionByHandle = 0xFE;
static constexpr uint8_t searchSessionByID = 0xFF;
-@@ -129,20 +128,6 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -111,20 +111,6 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
reinterpret_cast<GetSessionInfoResponse*>(outPayload.data());
uint32_t reqSessionID = handler.sessionID;
response->completionCode = IPMI_CC_OK;
@@ -75,7 +69,7 @@ index 7563b18..fc996a4 100644
// Here we look for session info according to session index parameter
switch (request->sessionIndex)
-@@ -150,29 +135,22 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -132,29 +118,22 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
// Look for current active session which this cmd is received over
case searchCurrentSession:
// Request data should only contain session index byte
@@ -110,7 +104,7 @@ index 7563b18..fc996a4 100644
}
// Retrieve session id based on session handle
-@@ -186,7 +164,7 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -168,7 +147,7 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
{
response->completionCode = IPMI_CC_INVALID_FIELD_REQUEST;
outPayload.resize(sizeof(response->completionCode));
@@ -119,7 +113,7 @@ index 7563b18..fc996a4 100644
}
break;
case searchSessionByID:
-@@ -196,23 +174,38 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -178,23 +157,38 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
{
response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID;
outPayload.resize(sizeof(response->completionCode));
@@ -162,7 +156,7 @@ index 7563b18..fc996a4 100644
response->sessionHandle = 0;
if (reqSessionID != 0)
{
-@@ -225,9 +218,9 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -207,9 +201,9 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
}
catch (std::exception& e)
{
@@ -174,7 +168,7 @@ index 7563b18..fc996a4 100644
}
response->sessionHandle = std::get<session::Manager&>(singletonPool)
.getSessionHandle(reqSessionID);
-@@ -236,25 +229,24 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
+@@ -218,25 +212,24 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload,
{
response->completionCode = IPMI_CC_UNSPECIFIED_ERROR;
outPayload.resize(sizeof(response->completionCode));
@@ -246,7 +240,7 @@ index 9f3210b..c6897c6 100644
uint8_t count = 0;
for (const auto& it : sessionsMap)
diff --git a/sessions_manager.hpp b/sessions_manager.hpp
-index c4caad4..3a3825d 100644
+index f6ed1c3..3ff213e 100644
--- a/sessions_manager.hpp
+++ b/sessions_manager.hpp
@@ -82,7 +82,7 @@ class Manager
@@ -314,5 +308,5 @@ index 349701e..8b64740 100644
/**
--
-2.7.4
+2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0009-Add-dbus-interface-for-sol-commands.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0009-Add-dbus-interface-for-sol-commands.patch
index 771120120..c90cccf34 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0009-Add-dbus-interface-for-sol-commands.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0009-Add-dbus-interface-for-sol-commands.patch
@@ -147,7 +147,7 @@ index 2046fe4..de36723 100644
#include <boost/asio/write.hpp>
#include <chrono>
#include <cmath>
-+#include <phosphor-ipmi-host/utils.hpp>
++#include <ipmid/utils.hpp>
#include <phosphor-logging/log.hpp>
+#include <sdbusplus/message/types.hpp>
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend
index 4b82cc21c..9dc21a3dd 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend
@@ -3,7 +3,7 @@ inherit useradd
# TODO: This should be removed, once up-stream bump up
# issue is resolved
#SRC_URI += "git://github.com/openbmc/phosphor-net-ipmid"
-SRCREV = "7e5d38d2fb51fc746624ff2f2b3701cea245a8fb"
+#SRCREV = "8af90ebcc552e243ae85aa9e9da1a00fbecab56c"
USERADD_PACKAGES = "${PN}"
# add a group called ipmi
@@ -15,5 +15,6 @@ SRC_URI += " file://0006-Modify-dbus-namespace-of-chassis-control-for-guid.patch
file://0007-Adding-support-for-GetSessionInfo-command.patch \
file://0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch \
file://0009-Add-dbus-interface-for-sol-commands.patch \
+ file://00010-Change-Authentication-Parameter.patch \
"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb
index 09d2f9c41..af83facf6 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "The Node Manager Proxy provides a simple interface for communicat
with Management Engine via IPMB"
SRC_URI = "git://git@github.com/Intel-BMC/node-manager;protocol=ssh"
-SRCREV = "81133dd32bd0337aec9e026d1c9c2788028c7bdd"
+SRCREV = "2ab90332828614c95e0ce22c0c95285734b55b65"
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb
new file mode 100644
index 000000000..31b9e9338
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Multi node manager"
+DESCRIPTION = "Daemon to handle chassis level shared resources on multi-node platform"
+
+SRC_URI = "git://git@github.com/Intel-BMC/multi-node-manager.git;protocol=ssh"
+SRCREV = "8a34c017e04dd8f327aff127f64855f6132bd318"
+
+PV = "0.1+git${SRCPV}"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+SYSTEMD_SERVICE_${PN} = "multi-node-manager.service"
+
+DEPENDS = "boost sdbusplus phosphor-logging i2c-tools"
+inherit cmake systemd
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
new file mode 100644
index 000000000..f1be7d358
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
@@ -0,0 +1,4 @@
+${PN}-software-extras_remove = " \
+ obmc-flash-bmc \
+ obmc-mgr-download \
+"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
index 809d05b94..ca38bf7fb 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
@@ -1,6 +1,6 @@
# Enable downstream autobump
SRC_URI = "git://github.com/openbmc/phosphor-sel-logger.git"
-SRCREV = "2b9704d7eb666c945c73dd74a426a0af2292b0ea"
+SRCREV = "f2552a50fde35d665b5fc3ac6852f2f6bb229cae"
# Enable threshold monitoring
EXTRA_OECMAKE += "-DSEL_LOGGER_MONITOR_THRESHOLD_EVENTS=ON"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
index dff1647e8..fdd62e731 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
@@ -1,4 +1,7 @@
-SRCREV = "209ec56cca898725213140fd0d1205a4d2f1c6a4"
+SRCREV = "93dc2c8e7c710fd65d269ef0bf684fb7a433a602"
SRC_URI = "git://github.com/openbmc/dbus-sensors.git"
DEPENDS_append = " i2c-tools"
+
+#todo(cheng) remove this when synced upstream
+SYSTEMD_SERVICE_${PN} += " xyz.openbmc_project.psusensor.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/phosphor-settings-defaults-native/defaults.yaml b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/phosphor-settings-defaults-native/defaults.yaml
index 24816fb4c..d2624b606 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/phosphor-settings-defaults-native/defaults.yaml
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/phosphor-settings-defaults-native/defaults.yaml
@@ -110,7 +110,7 @@
- Interface: xyz.openbmc_project.Control.Security.RestrictionMode
Properties:
RestrictionMode:
- Default: RestrictionMode::Modes::None
+ Default: RestrictionMode::Modes::Provisioning
/xyz/openbmc_project/control/host0/TPMEnable:
- Interface: xyz.openbmc_project.Control.TPM.Policy
@@ -179,3 +179,31 @@
Default: '"Performance"'
Supported:
Default: '{"Acoustic", "Performance"}'
+
+/xyz/openbmc_project/control/cfm_limit:
+ - Interface: xyz.openbmc_project.Control.CFMLimit
+ Properties:
+ Limit:
+ Default: 0
+
+/xyz/openbmc_project/ipmi/sol:
+ - Interface: xyz.openbmc_project.Ipmi.SOL
+ Properties:
+ Progress:
+ Default: 0
+ Enable:
+ Default: 'true'
+ ForceEncryption:
+ Default: 'true'
+ ForceAuthentication:
+ Default: 'true'
+ Privilege:
+ Default: 2
+ AccumulateIntervalMS:
+ Default: 20
+ Threshold:
+ Default: 1
+ RetryCount:
+ Default: 7
+ RetryIntervalMS:
+ Default: 10
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb
index 01c93490b..6737ed7a2 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb
@@ -9,7 +9,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "f4d4bfc3296cb27feb17aa5d1d93b3061b56ce10"
+SRCREV = "785f19b128794611574ea6c18805740fb851ecff"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "srvcfg-manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb
index 6d614590d..ace1969e5 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb
@@ -7,7 +7,7 @@ inherit cmake systemd
DEPENDS = "boost sdbusplus"
PV = "0.1+git${SRCPV}"
-SRCREV = "f4d4bfc3296cb27feb17aa5d1d93b3061b56ce10"
+SRCREV = "785f19b128794611574ea6c18805740fb851ecff"
S = "${WORKDIR}/git/callback-manager"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend
index 1939e5ad2..4c7d3ac2d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend
@@ -1,7 +1,7 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
#SRC_URI = "git://github.com/openbmc/phosphor-user-manager"
-SRCREV = "736648e25eb250d1e200cea961fe75bf791f1355"
+SRCREV = "c3f56c50ffffe1076531eb4aad7c0a574a44841f"
SRC_URI += " \
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-expiredTimerUse-property-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-expiredTimerUse-property-support.patch
deleted file mode 100644
index 54e459245..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-expiredTimerUse-property-support.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From efb3c226fc80243729901f675568b2b41142b1f9 Mon Sep 17 00:00:00 2001
-From: Yong Li <yong.b.li@linux.intel.com>
-Date: Mon, 18 Mar 2019 22:54:41 +0800
-Subject: [PATCH] Add expiredTimerUse property support
-
-When the timer expired, set expiredTimerUse property as the timer use
-
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
----
- watchdog.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/watchdog.cpp b/watchdog.cpp
-index aed0443..d529746 100644
---- a/watchdog.cpp
-+++ b/watchdog.cpp
-@@ -101,6 +101,8 @@ void Watchdog::timeOutHandler()
- action = fallback->action;
- }
-
-+ WatchdogInherits::expiredTimerUse(WatchdogInherits::currentTimerUse());
-+
- auto target = actionTargetMap.find(action);
- if (target == actionTargetMap.end())
- {
---
-2.7.4
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch
new file mode 100644
index 000000000..6e057f681
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch
@@ -0,0 +1,50 @@
+From 1c0e658833ea7595b2fb42261ce5e0ce781bac98 Mon Sep 17 00:00:00 2001
+From: Yong Li <yong.b.li@linux.intel.com>
+Date: Thu, 4 Apr 2019 18:24:54 +0800
+Subject: [PATCH] Add redfish log support for IPMI watchdog timeout actions
+
+The current plan is that only threshold sensor events
+will be logged to the IPMI SEL,
+and all other events will be logged to the Redfish Event Log.
+
+Tested:
+Config IPMI watchdog: OEM hard reset after 10 seconds:
+ipmitool raw 0x06 0x24 0x5 0x1 0x0 0x0 0x64 0x00
+Start watchdog:
+Ipmitool mc watchdog reset
+Check the redfish logs in 10 seconds:
+https://BMCIP/redfish/v1/Systems/system/LogServices/EventLog/Entries
+
+Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
+---
+ watchdog.cpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/watchdog.cpp b/watchdog.cpp
+index d529746..008cde5 100644
+--- a/watchdog.cpp
++++ b/watchdog.cpp
+@@ -1,5 +1,7 @@
+ #include "watchdog.hpp"
+
++#include <systemd/sd-journal.h>
++
+ #include <chrono>
+ #include <phosphor-logging/elog.hpp>
+ #include <phosphor-logging/log.hpp>
+@@ -115,6 +117,12 @@ void Watchdog::timeOutHandler()
+ entry("ACTION=%s", convertForMessage(action).c_str()),
+ entry("TARGET=%s", target->second.c_str()));
+
++ // Log into redfish event log
++ sd_journal_send("MESSAGE=IPMIWatchdog: Timed out ACTION=%s; TARGET=%s",
++ convertForMessage(action).c_str(),
++ target->second.c_str(), "PRIORITY=%i", LOG_INFO,
++ "REDFISH_MESSAGE_ID=%s", "IPMIWatchdog", NULL);
++
+ try
+ {
+ auto method = bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_ROOT,
+--
+2.7.4
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
index 5f8d53976..6411c209d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
@@ -1,6 +1,6 @@
FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
-SRC_URI += "file://0001-Add-expiredTimerUse-property-support.patch"
+SRC_URI += "file://0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch"
# Remove the override to keep service running after DC cycle
SYSTEMD_OVERRIDE_${PN}_remove = "poweron.conf:phosphor-watchdog@poweron.service.d/poweron.conf"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0004-Implement-force-boot-to-bios-in-server-power-control.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0004-Implement-force-boot-to-bios-in-server-power-control.patch
new file mode 100644
index 000000000..0e2d400a3
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0004-Implement-force-boot-to-bios-in-server-power-control.patch
@@ -0,0 +1,199 @@
+From a4f948f98e9bfd8b019699b4e23281448f7b7313 Mon Sep 17 00:00:00 2001
+From: Kuiying Wang <kuiying.wang@intel.com>
+Date: Wed, 27 Mar 2019 19:35:12 +0800
+Subject: [PATCH] Implement force to BIOS
+
+UI page review use below link:
+https://projects.invisionapp.com/share/UER87D98GPM#/screens
+
+Tested:
+ Switch on "Boot To BIOS", could enter BIOS setup page directly
+ when power on system.
+
+Change-Id: Ib46dc5d84df51d31cc5ff8635fa0c0f52de0e194
+Signed-off-by: Kuiying Wang <kuiying.wang@intel.com>
+---
+ app/common/services/api-utils.js | 49 +++++++++++++++++++
+ app/common/services/constants.js | 4 ++
+ app/common/services/dataService.js | 1 +
+ .../power-operations-controller.html | 12 +++++
+ .../power-operations-controller.js | 32 ++++++++++++
+ 5 files changed, 98 insertions(+)
+
+diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
+index 840db8e..193c172 100644
+--- a/app/common/services/api-utils.js
++++ b/app/common/services/api-utils.js
+@@ -31,6 +31,7 @@ window.angular && (function(angular) {
+ HOST_STATE: Constants.HOST_STATE,
+ LED_STATE: Constants.LED_STATE,
+ LED_STATE_TEXT: Constants.LED_STATE_TEXT,
++ FORCE_TO_BIOS_STATE_TEXT: Constants.FORCE_TO_BIOS_STATE_TEXT,
+ HOST_SESSION_STORAGE_KEY: Constants.API_CREDENTIALS.host_storage_key,
+ getChassisState: function() {
+ var deferred = $q.defer();
+@@ -451,6 +452,32 @@ window.angular && (function(angular) {
+ });
+ return deferred.promise;
+ },
++ getForceToBIOSState: function() {
++ var deferred = $q.defer();
++
++ if (DataService.configJson.redfishSupportEnabled == true) {
++ $http({
++ method: 'GET',
++ url:
++ DataService.getHost() + '/redfish/v1/Systems/system',
++ withCredentials: true
++ }).then(
++ function(response) {
++ var json = JSON.stringify(response.data);
++ var content = JSON.parse(json);
++ deferred.resolve(content.Boot.BootSourceOverrideTarget);
++ },
++ function(error) {
++ console.log(error);
++ deferred.reject(error);
++ });
++ } else {
++ var err = "Redfish is not enabled!";
++ console.log(err);
++ deferred.reject(err);
++ }
++ return deferred.promise;
++ },
+ login: function(username, password, callback) {
+ $http({
+ method: 'POST',
+@@ -872,6 +899,28 @@ window.angular && (function(angular) {
+ }
+ });
+ },
++ setForceToBIOSState: function(state) {
++ if (DataService.configJson.redfishSupportEnabled == true) {
++ var data = JSON.stringify({'Boot':
++ {
++ 'BootSourceOverrideTarget': state
++ }
++ });
++ return $http({
++ method: 'PATCH',
++ url:
++ DataService.getHost() + '/redfish/v1/Systems/system',
++ withCredentials: true,
++ data: data
++ });
++ } else {
++ var deferred = $q.defer();
++ var err = "Redfish is not enabled!";
++ console.log(err);
++ deferred.reject(err);
++ return deferred.promise;
++ }
++ },
+ getLastRebootTime: function() {
+ return $http({
+ method: 'GET',
+diff --git a/app/common/services/constants.js b/app/common/services/constants.js
+index 9931f01..8da0b12 100644
+--- a/app/common/services/constants.js
++++ b/app/common/services/constants.js
+@@ -38,6 +38,10 @@ window.angular && (function(angular) {
+ HOST_STATE: {on: 1, off: -1, error: 0, unreachable: -2},
+ LED_STATE: {on: true, off: false},
+ LED_STATE_TEXT: {on: 'on', off: 'off'},
++ FORCE_TO_BIOS_STATE_TEXT: {
++ on: 'BiosSetup',
++ off: 'None'
++ },
+ SEVERITY_TO_PRIORITY_MAP: {
+ Emergency: 'High',
+ Alert: 'High',
+diff --git a/app/common/services/dataService.js b/app/common/services/dataService.js
+index 76ab381..bcd7142 100644
+--- a/app/common/services/dataService.js
++++ b/app/common/services/dataService.js
+@@ -18,6 +18,7 @@ window.angular && (function(angular) {
+ this.server_status = -2;
+ this.chassis_state = 'On';
+ this.LED_state = Constants.LED_STATE_TEXT.off;
++ this.ForceToBIOS_state = Constants.FORCE_TO_BIOS_STATE_TEXT.off;
+ this.last_updated = new Date();
+
+ this.loading = false;
+diff --git a/app/server-control/controllers/power-operations-controller.html b/app/server-control/controllers/power-operations-controller.html
+index 3dc69d2..1f00f4a 100644
+--- a/app/server-control/controllers/power-operations-controller.html
++++ b/app/server-control/controllers/power-operations-controller.html
+@@ -10,6 +10,18 @@
+ <div class="row column">
+ <div id="power-indicator-bar" class="power__indicator-bar" ng-class="{'power__state-on': dataService.server_state == 'Running', 'power__state-off': dataService.server_state == 'Off', 'power__state-indet': dataService.server_state == 'Standby', 'power__state-error': dataService.server_state == 'Quiesced'}">
+ <p class="inline">{{dataService.hostname}} - {{dataService.server_id}}</p>
++ <div class="toggle float-right">
++ <input id="toggle__switch-round"
++ class="toggle-switch toggle-switch__round-flat"
++ type="checkbox"
++ tabindex="0"
++ ng-click="toggleForceToBIOS()"
++ ng-checked="dataService.ForceToBIOS_state == 'BiosSetup'"
++ ng-disabled="dataService.server_unreachable">
++ <label for="toggle__switch-round" tabindex="0"> </label>
++ <h3 class="inline">Boot to BIOS</h3>
++ </div>
++
+ <h3 class="power__state inline no-margin h3"><span>{{dataService.server_state | quiescedToError}}</span></h3>
+ </div>
+ </div>
+diff --git a/app/server-control/controllers/power-operations-controller.js b/app/server-control/controllers/power-operations-controller.js
+index 1a1f355..9a832e8 100644
+--- a/app/server-control/controllers/power-operations-controller.js
++++ b/app/server-control/controllers/power-operations-controller.js
+@@ -26,6 +26,17 @@ window.angular && (function(angular) {
+
+ var pollChassisStatusTimer = undefined;
+ var pollStartTime = null;
++ APIUtils.getForceToBIOSState().then(
++ function(data) {
++ if (data == APIUtils.FORCE_TO_BIOS_STATE_TEXT.on) {
++ dataService.ForceToBIOS_state = APIUtils.FORCE_TO_BIOS_STATE_TEXT.on;
++ } else {
++ dataService.ForceToBIOS_state = APIUtils.FORCE_TO_BIOS_STATE_TEXT.off;
++ }
++ },
++ function(error) {
++ console.log(JSON.stringify(error));
++ });
+
+ //@TODO: call api and get proper state
+
+@@ -50,6 +61,27 @@ window.angular && (function(angular) {
+ (dataService.server_state == 'Running') ? 'Off' : 'Running';
+ };
+
++ $scope.toggleForceToBIOS = function() {
++ var toggleState =
++ (dataService.ForceToBIOS_state == APIUtils.FORCE_TO_BIOS_STATE_TEXT.on) ?
++ APIUtils.FORCE_TO_BIOS_STATE_TEXT.off :
++ APIUtils.FORCE_TO_BIOS_STATE_TEXT.on;
++ dataService.ForceToBIOS_state =
++ (dataService.ForceToBIOS_state == APIUtils.FORCE_TO_BIOS_STATE_TEXT.on) ?
++ APIUtils.FORCE_TO_BIOS_STATE_TEXT.off :
++ APIUtils.FORCE_TO_BIOS_STATE_TEXT.on;
++ APIUtils.setForceToBIOSState(toggleState)
++ .then(
++ function(response) {},
++ function(errors) {
++ toastService.error(
++ 'Failed to set Boot to BIOS ');
++ console.log(JSON.stringify(errors));
++ // Reload to get correct current state
++ $route.reload();
++ })
++ };
++
+ $scope.powerOn = function() {
+ $scope.loading = true;
+ dataService.setUnreachableState();
+--
+2.19.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0007-Fix-some-page-keeps-loading-on-IE11.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0007-Fix-some-page-keeps-loading-on-IE11.patch
deleted file mode 100644
index 31d810cb6..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0007-Fix-some-page-keeps-loading-on-IE11.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 5a3750377629725890f949d68e7e0ba7d4752825 Mon Sep 17 00:00:00 2001
-From: Mirage Su <mirage.su@mic.com.tw>
-Date: Fri, 8 Mar 2019 17:12:46 +0800
-Subject: [PATCH] Fix some page keeps loading on IE11
-
----
- app/index.js | 1 +
- package-lock.json | 19 +++++++++++++++++++
- package.json | 1 +
- 3 files changed, 21 insertions(+)
- mode change 100644 => 100755 package-lock.json
-
-diff --git a/app/index.js b/app/index.js
-index c9fed83..c51203e 100644
---- a/app/index.js
-+++ b/app/index.js
-@@ -8,6 +8,7 @@
- */
- import 'angular/angular-csp.css';
- import 'bootstrap/dist/css/bootstrap.css';
-+import 'babel-polyfill';
-
- import angular from 'angular';
- import angular_animate from 'angular-animate';
-diff --git a/package-lock.json b/package-lock.json
-old mode 100644
-new mode 100755
-index 2d9d31b..61e9787
---- a/package-lock.json
-+++ b/package-lock.json
-@@ -1500,6 +1500,25 @@
- "babel-runtime": "6.26.0"
- }
- },
-+ "babel-polyfill": {
-+ "version": "6.26.0",
-+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
-+ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
-+ "dev": true,
-+ "requires": {
-+ "babel-runtime": "^6.26.0",
-+ "core-js": "^2.5.0",
-+ "regenerator-runtime": "^0.10.5"
-+ },
-+ "dependencies": {
-+ "regenerator-runtime": {
-+ "version": "0.10.5",
-+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
-+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
-+ "dev": true
-+ }
-+ }
-+ },
- "babel-register": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
-diff --git a/package.json b/package.json
-index 35c6b78..1bdf934 100644
---- a/package.json
-+++ b/package.json
-@@ -50,6 +50,7 @@
- "autoprefixer": "9.1.5",
- "babel-core": "6.26.3",
- "babel-loader": "8.0.2",
-+ "babel-polyfill": "^6.26.0",
- "compression-webpack-plugin": "2.0.0",
- "copy-webpack-plugin": "4.5.2",
- "csp-html-webpack-plugin": "^2.5.0",
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0008-Pull-the-latest-novnc-package.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0008-Pull-the-latest-novnc-package.patch
new file mode 100644
index 000000000..77bf662dc
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/0008-Pull-the-latest-novnc-package.patch
@@ -0,0 +1,88 @@
+From 7ea99450a96ac6eb5815ed5f1b7a17e055365b78 Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+Date: Sat, 6 Apr 2019 00:15:04 -0700
+Subject: [PATCH] Pull the latest novnc package
+
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+---
+ package-lock.json | 18 +++++++++++-------
+ package.json | 2 +-
+ 2 files changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/package-lock.json b/package-lock.json
+index c79a26c8229c..337383551a96 100644
+--- a/package-lock.json
++++ b/package-lock.json
+@@ -808,9 +808,8 @@
+ }
+ },
+ "@novnc/novnc": {
+- "version": "1.0.0",
+- "resolved": "https://registry.npmjs.org/@novnc/novnc/-/novnc-1.0.0.tgz",
+- "integrity": "sha1-drDonm+HOMqBVBlbr1uOaoC8kQU="
++ "version": "git+https://github.com/novnc/noVNC.git#a136b4b078e8ac316b80d1ee24cf8f9b400ba2d5",
++ "from": "git+https://github.com/novnc/noVNC.git#a136b4b078e8ac316b80d1ee24cf8f9b400ba2d5"
+ },
+ "@types/node": {
+ "version": "10.12.18",
+@@ -3965,7 +3964,8 @@
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+- "dev": true
++ "dev": true,
++ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+@@ -4380,7 +4380,8 @@
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true,
+- "dev": true
++ "dev": true,
++ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+@@ -4436,6 +4437,7 @@
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
++ "optional": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+@@ -4479,12 +4481,14 @@
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+- "dev": true
++ "dev": true,
++ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true,
+- "dev": true
++ "dev": true,
++ "optional": true
+ }
+ }
+ },
+diff --git a/package.json b/package.json
+index 0a880571d617..be816c8ece03 100644
+--- a/package.json
++++ b/package.json
+@@ -30,7 +30,7 @@
+ "dependencies": {
+ "angular": "^1.7.5",
+ "angular-animate": "^1.7.5",
+- "@novnc/novnc": "^1.0.0",
++ "@novnc/novnc": "https://github.com/novnc/noVNC.git#a136b4b078e8ac316b80d1ee24cf8f9b400ba2d5",
+ "angular-clipboard": "^1.6.2",
+ "angular-cookies": "^1.7.5",
+ "angular-messages": "^1.7.6",
+--
+2.7.4
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json
deleted file mode 100644
index 1543a6249..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "customKeyEnable": true,
- "keyType" : "VT100+",
- "customConsoleDisplaySize": {
- "width": 100,
- "height": 32
- }
-}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
index 9caa37767..9248894f7 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
@@ -1,13 +1,9 @@
FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
#SRC_URI = "git://github.com/openbmc/phosphor-webui.git"
-SRCREV = "a2e36e0f479d1a9fa2b6d26448d5e070aea7259b"
+SRCREV = "4733a11b42fca6013e3957bf0e345d0cea086d96"
SRC_URI += "file://0001-Implement-KVM-in-webui.patch \
- file://config.json \
- file://0007-Fix-some-page-keeps-loading-on-IE11.patch \
+ file://0004-Implement-force-boot-to-bios-in-server-power-control.patch \
+ file://0008-Pull-the-latest-novnc-package.patch \
"
-
-do_compile_prepend() {
- cp -r ${WORKDIR}/config.json ${S}/
-}