summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2020-02-28 02:57:13 +0300
committerJason M. Bills <jason.m.bills@linux.intel.com>2020-03-02 22:06:57 +0300
commit6c1caca70063aa707ba809a6b4695d0f0c5646f1 (patch)
tree84da2f29a60cb571686d3a4fb93f9d1f1189d989 /meta-openbmc-mods/meta-common/recipes-phosphor
parent9600a7403ba2848c8751280077503a3e0f2f3481 (diff)
downloadopenbmc-6c1caca70063aa707ba809a6b4695d0f0c5646f1.tar.xz
Update to internal 2020-02-27
Signed-off-by: Jason M. Bills <jason.m.bills@linux.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/0016-Add-DBUS-interface-of-SMBIOS-MDR-V2.patch227
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Create-dbus-interface-for-SOL-commands.patch76
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch40
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0026-Add-StandbySpare-support-for-software-inventory.patch19
-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/flash/phosphor-software-manager/0007-PFR-images-support.patch7
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch26
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend14
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend6
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch66
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Fixed-issue-in-setLan-command-for-IP-source.patch62
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-for-return-CC-in-setLan-command-cases.patch69
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch877
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch35
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0054-Fix-User-commands-require-channel-layer-lib.patch37
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch30
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Update-provisioning-mode-filter-logic.patch301
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf200
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/transporthandler_oem.cpp3
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend11
-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_%.bbappend2
-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-nl/multi-node-nl.bb27
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/multi-node-nl.target4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.service9
-rwxr-xr-xmeta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.sh20
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb2
-rwxr-xr-xmeta-openbmc-mods/meta-common/recipes-phosphor/preinit-mounts/preinit-mounts/init97
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/prov-mode-mgr/prov-mode-mgr_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/security-manager/security-manager_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb3
-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/state/phosphor-state-manager_%.bbappend3
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb1
-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/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch73
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend1
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend2
43 files changed, 335 insertions, 2041 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 ff89f2ad2..9a25eafa9 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 = "01542d2af1b1f45335cc8813fffcd3ed07f22989"
+SRCREV = "41622a95da34e3aacbf2b70d687d3a3a7c816c8a"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0016-Add-DBUS-interface-of-SMBIOS-MDR-V2.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0016-Add-DBUS-interface-of-SMBIOS-MDR-V2.patch
deleted file mode 100644
index 576bae81a..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0016-Add-DBUS-interface-of-SMBIOS-MDR-V2.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 9490574667485cd407193ff9f0d6a96f8c2c87d3 Mon Sep 17 00:00:00 2001
-From: cyang29 <cheng.c.yang@intel.com>
-Date: Wed, 12 Sep 2018 00:27:23 +0800
-Subject: [PATCH] Add DBUS interface of SMBIOS MDR V2
-
-Support:
- SMBIOS MDR V2 service interface.
- SMBIOS MDR V2 IPMI Command
- SMBIOS MDR V2 Redfish interface.
-Base on SMBIOS spec DSP0134_3.0.0 and Managed Data Region
-Specification Revision 4
----
- xyz/openbmc_project/Smbios/MDR_V2.errors.yaml | 9 +
- xyz/openbmc_project/Smbios/MDR_V2.interface.yaml | 158 +++++++++++++++++++++++
- xyz/openbmc_project/Smbios/README.md | 21 +++
- 3 files changed, 188 insertions(+)
- create mode 100644 xyz/openbmc_project/Smbios/MDR_V2.errors.yaml
- create mode 100644 xyz/openbmc_project/Smbios/MDR_V2.interface.yaml
- create mode 100644 xyz/openbmc_project/Smbios/README.md
-
-diff --git a/xyz/openbmc_project/Smbios/MDR_V2.errors.yaml b/xyz/openbmc_project/Smbios/MDR_V2.errors.yaml
-new file mode 100644
-index 0000000..88bd6db
---- /dev/null
-+++ b/xyz/openbmc_project/Smbios/MDR_V2.errors.yaml
-@@ -0,0 +1,9 @@
-+- name: InvalidParameter
-+ description: >
-+ An invalid parameter is attempted.
-+- name: UpdateInProgress
-+ description: >
-+ Update is in progress.
-+- name: InvalidId
-+ description: >
-+ An invalid Id is attempted.
-diff --git a/xyz/openbmc_project/Smbios/MDR_V2.interface.yaml b/xyz/openbmc_project/Smbios/MDR_V2.interface.yaml
-new file mode 100644
-index 0000000..f97700a
---- /dev/null
-+++ b/xyz/openbmc_project/Smbios/MDR_V2.interface.yaml
-@@ -0,0 +1,158 @@
-+description: >
-+ SMBIOS MDR V2 service
-+methods:
-+ - name: GetDirectoryInformation
-+ description: >
-+ Get the directory with directory index.
-+ parameters:
-+ - name: dirIndex
-+ type: byte
-+ description: >
-+ Directory index of SMBIOS.
-+ returns:
-+ - name: dir
-+ type: array[byte]
-+ description: >
-+ Directory of agent.
-+ errors:
-+ - self.Error.InvalidParameter
-+
-+ - name: GetDataInformation
-+ description: >
-+ Get the data info with id index and data set ID.
-+ parameters:
-+ - name: idIndex
-+ type: byte
-+ description: >
-+ Index of SMBIOS directory.
-+ returns:
-+ - name: dataInfo
-+ type: array[byte]
-+ description: >
-+ Data information of SMBIOS.
-+ errors:
-+ - self.Error.InvalidParameter
-+
-+ - name: SendDirectoryInformation
-+ description: >
-+ Send directory information to SMBIOS directory.
-+ parameters:
-+ - name: dirVersion
-+ type: byte
-+ description: >
-+ A counter which increments each time directory updated.
-+ - name: dirIndex
-+ type: byte
-+ description: >
-+ Directory index of SMBIOS.
-+ - name: returnedEntries
-+ type: byte
-+ description: >
-+ Indicates number of directory entries.
-+ - name: remainingEntries
-+ type: byte
-+ description: >
-+ Remaining entries which are higher than index in this transfer.
-+ - name: dirEntry
-+ type: array[byte]
-+ description: >
-+ Data set ID of SMBIOS table.
-+ returns:
-+ - name: status
-+ type: boolean
-+ description: >
-+ Need to continue directory transmisson or not.
-+ errors:
-+ - self.Error.InvalidParameter
-+
-+ - name: GetDataOffer
-+ description: >
-+ Get data set ID.
-+ returns:
-+ - name: offer
-+ type: array[byte]
-+ description: >
-+ Data set ID.
-+ errors:
-+ - self.Error.UpdateInProgress
-+
-+ - name: SendDataInformation
-+ description: >
-+ Send data information with directory index.
-+ parameters:
-+ - name: idIndex
-+ type: byte
-+ description: >
-+ Index of SMBIOS directory.
-+ - name: flag
-+ type: byte
-+ description: >
-+ Valid flag to set dir entry status.
-+ - name: dataLen
-+ type: uint32
-+ description: >
-+ The length of the data in bytes.
-+ - name: dataVer
-+ type: uint32
-+ description: >
-+ The version number of this data.
-+ - name: timeStamp
-+ type: uint32
-+ description: >
-+ Timestamp determinded by the agent.
-+ returns:
-+ - name: status
-+ type: boolean
-+ description: >
-+ Whether data changes.
-+ errors:
-+ - self.Error.InvalidParameter
-+
-+ - name: FindIdIndex
-+ description: >
-+ Find id index by data info.
-+ parameters:
-+ - name: dataInfo
-+ type: array[byte]
-+ description: >
-+ Data info of data entry.
-+ returns:
-+ - name: idIndex
-+ type: int32
-+ description: >
-+ Id index of data entry.
-+ errors:
-+ - self.Error.InvalidId
-+
-+ - name: AgentSynchronizeData
-+ description: >
-+ Synchronize SMBIOS data from file.
-+ returns:
-+ - name: status
-+ type: boolean
-+ description: >
-+ Whether synchronization succeed or not.
-+
-+ - name: SynchronizeDirectoryCommonData
-+ description: >
-+ Synchronize directory common data.
-+ parameters:
-+ - name: idIndex
-+ type: byte
-+ description: >
-+ Index of SMBIOS directory.
-+ - name: size
-+ type: uint32
-+ description: >
-+ Size of data that BIOS prepare to transfer.
-+ returns:
-+ - name: commonData
-+ type: array[uint32]
-+ description: >
-+ Directory common data includes data size, version and timestamp.
-+
-+properties:
-+ - name: DirectoryEntries
-+ type: byte
-+ description: >
-+ Numbers of directory entries.
-diff --git a/xyz/openbmc_project/Smbios/README.md b/xyz/openbmc_project/Smbios/README.md
-new file mode 100644
-index 0000000..415ac52
---- /dev/null
-+++ b/xyz/openbmc_project/Smbios/README.md
-@@ -0,0 +1,22 @@
-+# SMBIOS MDR V2
-+
-+## Overview
-+SMBIOS MDR V2 service exposes D-Bus methods for SMBIOS Version 2 operations.
-+
-+### SMBIOS MDR V2 Interface
-+SMBIOS MDR V2 interface `xyz.openbmc_project.Smbios.MDR_V2` provides following
-+methods.
-+#### methods
-+* GetDirectoryInformation - Get the directory with directory index.
-+* GetDataInformation - Get the data information with id index and data set ID.
-+* SendDirectoryInformation - Send directory information to SMBIOS directory.
-+* GetDataOffer - Get data set ID.
-+* SendDataInformation - Send data information with directory index.
-+* FindIdIndex - Find id index by data info.
-+* SynchronizeDirectoryCommonData - Synchronize directory common data before
-+SMBIOS data start to transfer.
-+* AgentSynchronizeData - Synchronize SMBIOS data from file after data transfer
-+complete.
-+
-+#### properties
-+* DirEntries - Numbers of directory entries. Default: 0
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Create-dbus-interface-for-SOL-commands.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Create-dbus-interface-for-SOL-commands.patch
deleted file mode 100644
index 68d2c92b7..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0020-Create-dbus-interface-for-SOL-commands.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 2820ca36ab21c52341cdbde477756f960eaeb68b Mon Sep 17 00:00:00 2001
-From: Cheng C Yang <cheng.c.yang@intel.com>
-Date: Wed, 13 Mar 2019 11:19:07 +0800
-Subject: [PATCH] Create dbus interface for SOL commands
-
-Create dbus properties for Set/Get SOL config parameter command.
-Some platforms need to call Set/Get SOL config parameter command
-through KCS, and since sol manager in net-ipmid cannot be accessed
-by commands in host-ipmid, need to create a dbus interface in
-phospher-settings to transfer properties from host-ipmid to
-net-ipmid.
-
-TestedBy:
-With the related code change in net-ipmid, busctl introspect
-xyz.openbmc_project.Ipmi.SOL /xyz/openbmc_project/SOL
-can show all the properties needed.
-
-Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
----
- xyz/openbmc_project/Ipmi/SOL.interface.yaml | 44 ++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
- create mode 100644 xyz/openbmc_project/Ipmi/SOL.interface.yaml
-
-diff --git a/xyz/openbmc_project/Ipmi/SOL.interface.yaml b/xyz/openbmc_project/Ipmi/SOL.interface.yaml
-new file mode 100644
-index 0000000..94db59f
---- /dev/null
-+++ b/xyz/openbmc_project/Ipmi/SOL.interface.yaml
-@@ -0,0 +1,44 @@
-+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
-+ command to transfer properties to net-ipmid.
-+ This interface will be implemented in phosphor-settings.
-+properties:
-+ - name: Progress
-+ type: byte
-+ description: >
-+ Set In Progress property, indicate when any parameters are being
-+ updated.
-+ - name: Enable
-+ type: boolean
-+ description: >
-+ SOL Enable property, this controls whether the SOL payload type
-+ can be activated.
-+ - name: Authentication
-+ type: byte
-+ description: >
-+ If SOL enable Force Payload Encryption and Authenticaton.
-+ And the minimun operating privilege level SOL required.
-+ - name: AccumulateIntervalMS
-+ type: byte
-+ description: >
-+ Character Accumulate Interval in 5ms increments.
-+ BMC will wait this time before transmitting a packet.
-+ - name: Threshold
-+ type: byte
-+ description: >
-+ BMC will automatically send an SOL character data packet containing
-+ 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: 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/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch
deleted file mode 100644
index 181d12428..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b55c6847b18fdee5a72d601b871d73085481e4d9 Mon Sep 17 00:00:00 2001
-From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
-Date: Mon, 3 Jun 2019 16:31:29 -0700
-Subject: [PATCH] Add chassis power-cycle and reset to Chassis State
-
-This adds chassis PowerCycle and Reset as possible Transition
-values for the Chassis State. These are to support chassis
-power cycle and a chassis reset button, respectively.
-
-Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
----
- xyz/openbmc_project/State/Chassis.interface.yaml | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/xyz/openbmc_project/State/Chassis.interface.yaml b/xyz/openbmc_project/State/Chassis.interface.yaml
-index 4ae6274..470a3a2 100644
---- a/xyz/openbmc_project/State/Chassis.interface.yaml
-+++ b/xyz/openbmc_project/State/Chassis.interface.yaml
-@@ -31,10 +31,17 @@ enumerations:
- values:
- - name: 'Off'
- description: >
-- Chassis power should be off
-+ Chassis power should be off
- - name: 'On'
- description: >
- Chassis power should be on
-+ - name: 'PowerCycle'
-+ description: >
-+ Chassis power should be cycled
-+ - name: 'Reset'
-+ description: >
-+ Chassis should be reset
-+
-
- - name: PowerState
- description: >
---
-2.7.4
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0026-Add-StandbySpare-support-for-software-inventory.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0026-Add-StandbySpare-support-for-software-inventory.patch
index cbf966a37..36c63ec58 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0026-Add-StandbySpare-support-for-software-inventory.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0026-Add-StandbySpare-support-for-software-inventory.patch
@@ -1,6 +1,6 @@
-From ae9e4b2a166dc4f34b255ed5338abbfa8aa37778 Mon Sep 17 00:00:00 2001
-From: Vikram Bodireddy <vikram.bodireddy@linux.intel.com>
-Date: Sat, 30 Nov 2019 18:20:13 +0530
+From 0d6556539be9bda478a3cabb6127eace5764fa11 Mon Sep 17 00:00:00 2001
+From: Vikram Bodireddy <vikram.bodireddy@intel.com>
+Date: Wed, 15 Jan 2020 10:01:04 +0800
Subject: [PATCH] Add StandbySpare support for software inventory
Add support to allow update for active / recovery
@@ -9,14 +9,13 @@ the backend modules to advertise whether the
software object is active or recovery (StandbySpare)
image.
-Change-Id: I0d46206463ba566bcaa710fb271aa4d795fa49cd
-Signed-off-by: Vikram Bodireddy <vikram.bodireddy@linux.intel.com>
+Signed-off-by: Vikram Bodireddy <vikram.bodireddy@intel.com>
---
xyz/openbmc_project/Software/Activation.interface.yaml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/xyz/openbmc_project/Software/Activation.interface.yaml b/xyz/openbmc_project/Software/Activation.interface.yaml
-index 37c9cb9..b71b8e7 100644
+index efeeeb6..6c9ce75 100644
--- a/xyz/openbmc_project/Software/Activation.interface.yaml
+++ b/xyz/openbmc_project/Software/Activation.interface.yaml
@@ -28,12 +28,20 @@ enumerations:
@@ -37,10 +36,10 @@ index 37c9cb9..b71b8e7 100644
+ description: >
+ The Software.Version is part of a redundancy set and awaits
+ a failover or external action to activate.
- - name: RequestedActivations
- description: >
- The possible RequestedActivation states of a Software.Version.
-@@ -44,6 +52,10 @@ enumerations:
+ - name: Staged
+ description: >
+ The Software.Version is currently in staged flash area.
+@@ -48,6 +56,10 @@ enumerations:
- name: Active
description: >
The Software.Version has been requested for Activation.
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 d9240f760..9690ec20f 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 = "1b02c38979ab4fa2649699a26266367b115eee7c"
+SRCREV = "79064a8e0c49b35cfa1c343cef31f21ebfd7298d"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
@@ -8,8 +8,6 @@ SRC_URI += "file://0005-Add-DBUS-interface-of-CPU-and-Memory-s-properties.patch
file://0010-Increase-the-default-watchdog-timeout-value.patch \
file://0012-Add-RestoreDelay-interface-for-power-restore-delay.patch \
file://0013-Add-ErrConfig.yaml-interface-for-processor-error-config.patch \
- file://0016-Add-DBUS-interface-of-SMBIOS-MDR-V2.patch \
- file://0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch \
file://0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch \
file://0025-Add-PreInterruptFlag-properity-in-DBUS.patch \
file://0001-Reapply-Enhance-DHCP-beyond-just-OFF-and-IPv4-IPv6-e.patch \
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0007-PFR-images-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0007-PFR-images-support.patch
index 34d5b6e67..92b3ced38 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0007-PFR-images-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0007-PFR-images-support.patch
@@ -99,12 +99,15 @@ diff --git a/item_updater.cpp b/item_updater.cpp
index 21fb6e0..fd76a7f 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
-@@ -64,7 +64,8 @@ void ItemUpdater::createActivation(sdbusplus::message::message& msg)
+@@ -64,10 +64,10 @@ void ItemUpdater::createActivation(sdbusplus::message::message& msg)
auto value = SVersion::convertVersionPurposeFromString(
variant_ns::get<std::string>(property.second));
if (value == VersionPurpose::BMC ||
+-#ifdef HOST_BIOS_UPGRADE
++#if defined(HOST_BIOS_UPGRADE) || defined(PFR_UPDATE)
+ value == VersionPurpose::Host ||
+ #endif
- value == VersionPurpose::System)
-+ value == VersionPurpose::Host ||
+ value == VersionPurpose::Other)
{
purpose = value;
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
index 9e7cdf768..dc3ec060e 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
@@ -1,6 +1,6 @@
-From ba9d7f8443716887bc101e300b06c570f7da8159 Mon Sep 17 00:00:00 2001
-From: Vikram Bodireddy <vikram.bodireddy@linux.intel.com>
-Date: Thu, 5 Dec 2019 15:13:52 +0530
+From 17caf10b048450979dcd95a9f9333bbaa8c307ec Mon Sep 17 00:00:00 2001
+From: AppaRao Puli <apparao.puli@linux.intel.com>
+Date: Fri, 10 Jan 2020 08:16:10 +0530
Subject: [PATCH] Firmware update support for StandBySpare
Firmware update support for StandBySpare. This will
@@ -28,12 +28,13 @@ Tested:
Change-Id: I59f317ac001ebf56bbf30e7f43dbec5d69fa249a
Signed-off-by: Vikram Bodireddy <vikram.bodireddy@linux.intel.com>
+Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
---
- redfish-core/lib/update_service.hpp | 285 ++++++++++++++++++++++++++++++------
- 1 file changed, 241 insertions(+), 44 deletions(-)
+ redfish-core/lib/update_service.hpp | 284 ++++++++++++++++++++++++++++++------
+ 1 file changed, 241 insertions(+), 43 deletions(-)
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
-index 57dcc07..c189d5a 100644
+index ec9600e..9daf6ce 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -30,6 +30,17 @@ static std::unique_ptr<sdbusplus::bus::match::match> fwUpdateMatcher;
@@ -448,18 +449,17 @@ index 57dcc07..c189d5a 100644
std::string filepath(
"/tmp/images/" +
-@@ -569,9 +770,7 @@ class SoftwareInventoryCollection : public Node
- "xyz.openbmc_project.ObjectMapper",
+@@ -574,8 +775,7 @@ class SoftwareInventoryCollection : public Node
"/xyz/openbmc_project/object_mapper",
- "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/",
-- static_cast<int32_t>(0),
+ "xyz.openbmc_project.ObjectMapper", "GetSubTree",
+ "/xyz/openbmc_project/software", static_cast<int32_t>(0),
- std::array<const char *, 1>{
- "xyz.openbmc_project.Software.Version"});
-+ static_cast<int32_t>(0), std::array<const char *, 1>{versionIntf});
++ std::array<const char *, 1>{versionIntf});
}
};
-@@ -756,7 +955,7 @@ class SoftwareInventory : public Node
+@@ -760,7 +960,7 @@ class SoftwareInventory : public Node
},
obj.second[0].first, obj.first,
"org.freedesktop.DBus.Properties", "GetAll",
@@ -468,7 +468,7 @@ index 57dcc07..c189d5a 100644
}
if (!found)
{
-@@ -778,9 +977,7 @@ class SoftwareInventory : public Node
+@@ -781,9 +981,7 @@ class SoftwareInventory : public Node
"xyz.openbmc_project.ObjectMapper",
"/xyz/openbmc_project/object_mapper",
"xyz.openbmc_project.ObjectMapper", "GetSubTree", "/",
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 3c679fc51..795d34daf 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 = "123e823757a6efc08b215766124ba7321e3cca55"
+SRCREV = "f723d7332bbdd7b0d4fbe4aa730b63dfd8db7eff"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
@@ -9,18 +9,8 @@ USERADD_PARAM_${PN} = "-r -s /usr/sbin/nologin -d /home/bmcweb -m -G shadow bmcw
GROUPADD_PARAM_${PN} = "web; redfish "
-SRC_URI += "file://0001-Firmware-update-support-for-StandBySpare.patch \
- "
-
-# Enable CPU Log and Raw PECI support
-EXTRA_OECMAKE += "-DBMCWEB_ENABLE_REDFISH_CPU_LOG=ON"
-EXTRA_OECMAKE += "-DBMCWEB_ENABLE_REDFISH_RAW_PECI=ON"
-
-# Enable Redfish BMC Journal support
-EXTRA_OECMAKE += "-DBMCWEB_ENABLE_REDFISH_BMC_JOURNAL=ON"
+SRC_URI += "file://0001-Firmware-update-support-for-StandBySpare.patch"
# Enable PFR support
EXTRA_OECMAKE += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '-DBMCWEB_ENABLE_REDFISH_PROVISIONING_FEATURE=ON', '', d)}"
-#Disable the Dbus interface
-EXTRA_OECMAKE += "-DBMCWEB_ENABLE_DBUS_REST=OFF"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend
new file mode 100644
index 000000000..84e250b66
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend
@@ -0,0 +1,6 @@
+
+# Disable the shell to remove the usage of readline lib
+# to fix the license conflict issue. More information:
+# https://lists.ozlabs.org/pipermail/openbmc/2019-November/019678.html
+
+EXTRA_OECONF_append = " --disable-ipmishell"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch
index 1e4d3b0a9..7e3f92dbc 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch
@@ -1,4 +1,4 @@
-From 3db78afe49a662ce7e90f3f5ce40d625a54d576b Mon Sep 17 00:00:00 2001
+From 8e9fba263179ccc87be7212c7dbd87cd7a37ac30 Mon Sep 17 00:00:00 2001
From: Johnathan Mantey <johnathanx.mantey@intel.com>
Date: Thu, 14 Nov 2019 11:24:19 -0800
Subject: [PATCH] Modify Get Lan Configuration IP Address Source to use correct
@@ -27,24 +27,24 @@ ipmitool raw 0xc 2 3 4 0 0 # returns correct state
Change-Id: Ia66f7fcf3d5ad0a383b06658b18e8ce2b282e052
Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
---
- transporthandler.cpp | 88 ++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 73 insertions(+), 15 deletions(-)
+ transporthandler.cpp | 97 ++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 79 insertions(+), 18 deletions(-)
diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 09df184..8dc5677 100644
+index 16ce2b2..ccc2a97 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
@@ -109,6 +109,18 @@ constexpr auto INTF_NEIGHBOR_CREATE_STATIC =
constexpr auto INTF_VLAN = "xyz.openbmc_project.Network.VLAN";
constexpr auto INTF_VLAN_CREATE = "xyz.openbmc_project.Network.VLAN.Create";
-+static const char* dhcpv4v6 =
++static constexpr auto dhcpv4v6 =
+ "xyz.openbmc_project.Network.EthernetInterface.DHCPConf.both";
-+static const char* dhcpv6 =
++static constexpr auto dhcpv6 =
+ "xyz.openbmc_project.Network.EthernetInterface.DHCPConf.v6";
-+static const char* dhcpv4 =
++static constexpr auto dhcpv4 =
+ "xyz.openbmc_project.Network.EthernetInterface.DHCPConf.v4";
-+static const char* dhcpoff =
++static constexpr auto dhcpoff =
+ "xyz.openbmc_project.Network.EthernetInterface.DHCPConf.none";
+
+static std::array<const char*, 4> dhcpEnumerations = {dhcpv4v6, dhcpv4, dhcpv6,
@@ -134,7 +134,17 @@ index 09df184..8dc5677 100644
}
/** @brief Creates a new VLAN on the specified interface
-@@ -1395,7 +1445,11 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+@@ -1401,7 +1451,8 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+ }
+ case LanParam::IP:
+ {
+- if (channelCall<getDHCPProperty>(channel))
++ std::string dhcpSetting = channelCall<getDHCPProperty>(channel);
++ if ((dhcpSetting == dhcpv4) || (dhcpSetting == dhcpv4v6))
+ {
+ return responseCommandNotAvailable();
+ }
+@@ -1431,7 +1482,11 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
{
case IPSrc::DHCP:
{
@@ -147,7 +157,7 @@ index 09df184..8dc5677 100644
return responseSuccess();
}
case IPSrc::Unspecified:
-@@ -1403,7 +1457,7 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+@@ -1439,7 +1494,7 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
case IPSrc::BIOS:
case IPSrc::BMC:
{
@@ -156,27 +166,47 @@ index 09df184..8dc5677 100644
return responseSuccess();
}
}
-@@ -1540,7 +1594,8 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+@@ -1464,7 +1519,8 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+ }
+ case LanParam::SubnetMask:
+ {
+- if (channelCall<getDHCPProperty>(channel))
++ std::string dhcpSetting = channelCall<getDHCPProperty>(channel);
++ if ((dhcpSetting == dhcpv4) || (dhcpSetting == dhcpv4v6))
+ {
+ return responseCommandNotAvailable();
+ }
+@@ -1481,7 +1537,8 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
+ }
+ case LanParam::Gateway1:
+ {
+- if (channelCall<getDHCPProperty>(channel))
++ std::string dhcpSetting = channelCall<getDHCPProperty>(channel);
++ if ((dhcpSetting == dhcpv4) || (dhcpSetting == dhcpv4v6))
+ {
+ return responseCommandNotAvailable();
+ }
+@@ -1606,7 +1663,8 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
return responseReqDataLenInvalid();
}
std::bitset<8> expected;
- if (channelCall<getDHCPProperty>(channel))
+ std::string dhcp = channelCall<getDHCPProperty>(channel);
-+ if ((dhcp == dhcpv4v6) | (dhcp == dhcpv6))
++ if ((dhcp == dhcpv4v6) || (dhcp == dhcpv6))
{
expected[IPv6RouterControlFlag::Dynamic] = 1;
}
-@@ -1690,7 +1745,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
+@@ -1756,7 +1814,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
case LanParam::IPSrc:
{
auto src = IPSrc::Static;
- if (channelCall<getDHCPProperty>(channel))
-+ std::string dhcpSetting = channelCall<getDHCPProperty>(channel);
-+ if ((dhcpSetting == dhcpv4) || (dhcpSetting == dhcpv4v6))
++ std::string dhcp = channelCall<getDHCPProperty>(channel);
++ if ((dhcp == dhcpv4) || (dhcp == dhcpv4v6))
{
src = IPSrc::DHCP;
}
-@@ -1811,7 +1867,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
+@@ -1877,7 +1936,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
case LanParam::IPv6RouterControl:
{
std::bitset<8> control;
@@ -186,7 +216,7 @@ index 09df184..8dc5677 100644
{
control[IPv6RouterControlFlag::Dynamic] = 1;
}
-@@ -1825,7 +1882,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
+@@ -1891,7 +1951,8 @@ RspType<message::Payload> getLan(uint4_t channelBits, uint3_t, bool revOnly,
case LanParam::IPv6StaticRouter1IP:
{
in6_addr gateway{};
@@ -197,5 +227,5 @@ index 09df184..8dc5677 100644
gateway =
channelCall<getGatewayProperty<AF_INET6>>(channel).value_or(
--
-2.21.0
+2.24.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Fixed-issue-in-setLan-command-for-IP-source.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Fixed-issue-in-setLan-command-for-IP-source.patch
deleted file mode 100644
index 6f080a4f4..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Fixed-issue-in-setLan-command-for-IP-source.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 12ebdc2d53a18d286e34abf0f1553ca423ca6ca5 Mon Sep 17 00:00:00 2001
-From: Rajashekar Gade Reddy <raja.sekhar.reddy.gade@linux.intel.com>
-Date: Wed, 18 Dec 2019 12:01:36 +0530
-Subject: [PATCH] Fixed issue in setLan command for IP source.
-
-Issue: returns success completion code for multiple requests which
-is not correct as per IPMI spec.
-
-Fix: Added proper conditional checks
-
-Tested:
-//IP Address Source: 0x0 (unspecified)
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x0
-0xCC// Invalid data field in request
-
-//IP Address Source: 0x1 (static address)
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x1
-0x00 //Success
-
-//IP Address Source: 0x2 (address obtained by BMC running DHCP)
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x2
-0x00 //Success
-
-//IP Address Source: 0x3 (address loaded by the BIOS or system software)
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x3
-0xCC// Invalid data field in request
-
-//IP Address Source: 0x4 (address obtained by BMC running other address assignment protocol)
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x4
-0xCC// Invalid data field in request
-
-ipmitool -I lanplus -U root -P 0penBmc -H <ip_addr> raw 0x0c 0x01 0x03 0x04 0x5
-0x80 // param not supported
-
-Signed-off-by: Rajashekar Gade Reddy <raja.sekhar.reddy.gade@linux.intel.com>
-
-%% original patch: 0002-Fixed-issue-in-setLan-command-for-IP-source.patch
----
- transporthandler.cpp | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 7407396..2df3e45 100644
---- a/transporthandler.cpp
-+++ b/transporthandler.cpp
-@@ -1453,9 +1453,12 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
- return responseSuccess();
- }
- case IPSrc::Unspecified:
-- case IPSrc::Static:
- case IPSrc::BIOS:
- case IPSrc::BMC:
-+ {
-+ return responseInvalidFieldRequest();
-+ }
-+ case IPSrc::Static:
- {
- channelCall<setDHCPProperty>(channel, dhcpoff);
- return responseSuccess();
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-for-return-CC-in-setLan-command-cases.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-for-return-CC-in-setLan-command-cases.patch
deleted file mode 100644
index bab451f32..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-for-return-CC-in-setLan-command-cases.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 8b3cb6842746d43c0cab3d32821dc5239768642f Mon Sep 17 00:00:00 2001
-From: "Joshi, Mansi" <mansi.joshi@linux.intel.com>
-Date: Wed, 18 Dec 2019 15:10:25 +0530
-Subject: [PATCH] Fix for return CC in setLan command cases
-
-Issue: When DHCP is enabled, setting ip and setting subnet mask returns
-completion code 0xff. Setting default gateway returns 0x00.
-
-Fix: Returns CC 0xd5 because this parameter is R/W. It is only unable
-to be updated because the current state blocks it (i.e. 0xd5).
-
-Tested:
-ipmitool raw 0x0c 0x01 0x03 0x03 0x00 0x00 0x00 0x00 //setting ip
-0xd5 //Command, or request parameter, not supported in present state.
-
-ipmitool raw 0x0c 0x01 0x03 0x06 0xff 0xff 0xf0 0x00 //subnet mask
-0xd5 //Command, or request parameter, not supported in present state.
-
-ipmitool raw 0x0c 0x01 0x03 0x0c 0x0a 0xfe 0xef 0x77 //default gateway
-0xd5 //Command, or request parameter, not supported in present state.
-
-%% original patch: 0065-Fix-for-return-CC-in-setLan-command-cases.patch
----
- transporthandler.cpp | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/transporthandler.cpp b/transporthandler.cpp
-index 7407396..7b9ff3d 100644
---- a/transporthandler.cpp
-+++ b/transporthandler.cpp
-@@ -1423,6 +1423,11 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
- }
- case LanParam::IP:
- {
-+ std::string dhcp = channelCall<getDHCPProperty>(channel);
-+ if ((dhcp == dhcpv4) || (dhcp == dhcpv4v6))
-+ {
-+ return responseCommandNotAvailable();
-+ }
- in_addr ip;
- std::array<uint8_t, sizeof(ip)> bytes;
- if (req.unpack(bytes) != 0 || !req.fullyUnpacked())
-@@ -1477,6 +1482,11 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
- }
- case LanParam::SubnetMask:
- {
-+ std::string dhcp = channelCall<getDHCPProperty>(channel);
-+ if ((dhcp == dhcpv4) || (dhcp == dhcpv4v6))
-+ {
-+ return responseCommandNotAvailable();
-+ }
- in_addr netmask;
- std::array<uint8_t, sizeof(netmask)> bytes;
- if (req.unpack(bytes) != 0 || !req.fullyUnpacked())
-@@ -1490,6 +1500,11 @@ RspType<> setLan(uint4_t channelBits, uint4_t, uint8_t parameter,
- }
- case LanParam::Gateway1:
- {
-+ std::string dhcp = channelCall<getDHCPProperty>(channel);
-+ if ((dhcp == dhcpv4) || (dhcp == dhcpv4v6))
-+ {
-+ return responseCommandNotAvailable();
-+ }
- in_addr gateway;
- std::array<uint8_t, sizeof(gateway)> bytes;
- if (req.unpack(bytes) != 0 || !req.fullyUnpacked())
---
-2.7.4
-
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
deleted file mode 100644
index c862a306a..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0009-IPv6-Network-changes.patch
+++ /dev/null
@@ -1,877 +0,0 @@
-From c20bc8eb6a08d177d951012eb91b37398b15d81d Mon Sep 17 00:00:00 2001
-From: Vernon Mauery <vernon.mauery@linux.intel.com>
-Date: Tue, 27 Nov 2018 11:01:15 -0800
-Subject: [PATCH] IPv6 Network changes
-
-Allow IPv6 IPMI set/get commands
-
-Signed-off-by: David Cobbley <david.j.cobbley@linux.intel.com>
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
-Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
-
-Change-Id: If5528d3b7294c5f8c17db5919439235d0fad0446
----
- 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/include/ipmid/types.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/include/ipmid/types.hpp
-+++ phosphor-host-ipmid.clean/include/ipmid/types.hpp
-@@ -224,6 +224,7 @@ constexpr auto ADDR_TYPE_FORMAT = "%hhx"
-
- constexpr auto IPV4_ADDRESS_SIZE_BYTE = 4;
- constexpr auto IPV6_ADDRESS_SIZE_BYTE = 16;
-+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
-Index: phosphor-host-ipmid.clean/include/ipmid/utils.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/include/ipmid/utils.hpp
-+++ phosphor-host-ipmid.clean/include/ipmid/utils.hpp
-@@ -256,6 +256,7 @@ namespace network
- constexpr auto ROOT = "/xyz/openbmc_project/network";
- constexpr auto SERVICE = "xyz.openbmc_project.Network";
- 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";
-Index: phosphor-host-ipmid.clean/transporthandler.cpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.cpp
-+++ phosphor-host-ipmid.clean/transporthandler.cpp
-@@ -29,6 +29,12 @@ std::unique_ptr<phosphor::Timer> network
-
- const int SIZE_MAC = 18; // xx:xx:xx:xx:xx:xx
- constexpr auto ipv4Protocol = "xyz.openbmc_project.Network.IP.Protocol.IPv4";
-+constexpr auto ipv6Protocol = "xyz.openbmc_project.Network.IP.Protocol.IPv6";
-+
-+static const std::array<std::string, 3> ipAddressEnablesType = {
-+ "xyz.openbmc_project.Network.EthernetInterface.IPAllowed.IPv4Only",
-+ "xyz.openbmc_project.Network.EthernetInterface.IPAllowed.IPv6Only",
-+ "xyz.openbmc_project.Network.EthernetInterface.IPAllowed.IPv4AndIPv6"};
-
- std::map<int, std::unique_ptr<struct ChannelConfig_t>> channelConfig;
-
-@@ -445,6 +451,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
- {
- case LanParam::IP:
- {
-+ if (reqLen != lanParamIPSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- std::snprintf(ipaddr, INET_ADDRSTRLEN,
- ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
- reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -455,6 +466,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
-
- case LanParam::IPSRC:
- {
-+ if (reqLen != lanParamIPSrcSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- uint8_t ipsrc{};
- std::memcpy(&ipsrc, reqptr->data, ipmi::network::IPSRC_SIZE_BYTE);
- channelConf->ipsrc = static_cast<ipmi::network::IPOrigin>(ipsrc);
-@@ -463,6 +479,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
-
- case LanParam::MAC:
- {
-+ if (reqLen != lanParamMACSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- char mac[SIZE_MAC];
-
- std::snprintf(mac, SIZE_MAC, ipmi::network::MAC_ADDRESS_FORMAT,
-@@ -483,6 +504,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
-
- case LanParam::SUBNET:
- {
-+ if (reqLen != lanParamSubnetSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- std::snprintf(netmask, INET_ADDRSTRLEN,
- ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
- reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -492,6 +518,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
-
- case LanParam::GATEWAY:
- {
-+ if (reqLen != lanParamGatewaySize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- std::snprintf(gateway, INET_ADDRSTRLEN,
- ipmi::network::IP_ADDRESS_FORMAT, reqptr->data[0],
- reqptr->data[1], reqptr->data[2], reqptr->data[3]);
-@@ -522,6 +553,11 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
-
- case LanParam::INPROGRESS:
- {
-+ if (reqLen != lanParamInProgressSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
- if (reqptr->data[0] == SET_COMPLETE)
- {
- channelConf->lan_set_in_progress = SET_COMPLETE;
-@@ -540,6 +576,122 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_n
- }
- break;
-
-+ case LanParam::IPV6_AND_IPV4_ENABLES:
-+ {
-+ if (reqLen != lanParamIPv6AndIPv4EnablesSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ channelConf->ipv6AddressingEnables = reqptr->data[0];
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ADDRESSES:
-+ {
-+ if (reqLen != lanParamIPv6StaticAddressesSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ channelConf->ipv6AddressSource =
-+ reqptr->data[1] & 0x81; // Looking at bit 0 and bit 7
-+ char tmpIPV6[INET6_ADDRSTRLEN];
-+ inet_ntop(AF_INET6, &reqptr->data[2], tmpIPV6, INET6_ADDRSTRLEN);
-+ channelConf->ipv6Addr.assign(tmpIPV6);
-+ channelConf->ipv6Prefix = reqptr->data[19];
-+ break;
-+ }
-+
-+ case LanParam::IPV6_ROUTER_ADDRESS_CONF_CTRL:
-+ {
-+ if (reqLen != lanParamIPv6RouterAddressConfCtrlSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ channelConf->ipv6RouterAddressConfigControl = reqptr->data[0];
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_1_IP_ADDR:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter1IPAddrSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ char tmpIPV6[INET6_ADDRSTRLEN];
-+ inet_ntop(AF_INET6, reinterpret_cast<const void*>(reqptr->data),
-+ tmpIPV6, INET6_ADDRSTRLEN);
-+ channelConf->ipv6GatewayAddr.assign(tmpIPV6);
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_LEN:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter1PrefixLenSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ channelConf->ipv6GatewayPrefixLength = reqptr->data[0];
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_VAL:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter1PrefixValSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ char tmpIPV6[INET6_ADDRSTRLEN];
-+ inet_ntop(AF_INET6, reinterpret_cast<const void*>(reqptr->data),
-+ tmpIPV6, INET6_ADDRSTRLEN);
-+ channelConf->ipv6GatewayPrefixValue.assign(tmpIPV6);
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_2_IP_ADDR:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter2IPAddrSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ char tmpIPV6[INET6_ADDRSTRLEN];
-+ inet_ntop(AF_INET6, reinterpret_cast<const void*>(reqptr->data),
-+ tmpIPV6, INET6_ADDRSTRLEN);
-+ channelConf->ipv6BackupGatewayAddr.assign(tmpIPV6);
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_LEN:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter2PrefixLenSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ channelConf->ipv6BackupGatewayPrefixLength = reqptr->data[0];
-+ break;
-+ }
-+
-+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_VAL:
-+ {
-+ if (reqLen != lanParamIPv6StaticRouter2PrefixValSize)
-+ {
-+ return IPMI_CC_REQ_DATA_LEN_INVALID;
-+ }
-+
-+ char tmpIPV6[INET6_ADDRSTRLEN];
-+ inet_ntop(AF_INET6, reinterpret_cast<const void*>(reqptr->data),
-+ tmpIPV6, INET6_ADDRSTRLEN);
-+ channelConf->ipv6BackupGatewayPrefixValue.assign(tmpIPV6);
-+ break;
-+ }
-+
- default:
- {
- rc = IPMI_CC_PARM_NOT_SUPPORTED;
-@@ -568,6 +720,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
- ipmi_ret_t rc = IPMI_CC_OK;
- *data_len = 0;
- const uint8_t current_revision = 0x11; // Current rev per IPMI Spec 2.0
-+ sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
-
- get_lan_t* reqptr = (get_lan_t*)request;
- // channel number is the lower nibble
-@@ -713,6 +866,476 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_n
- static_cast<uint8_t>(cipherList.size());
- break;
- }
-+ case LanParam::IPV6_AND_IPV4_SUPPORTED:
-+ {
-+ uint8_t addressSupport =
-+ 0x1; // Allow both IPv4 & IPv6 simultaneously
-+ std::array<uint8_t, 2> buf = {current_revision, addressSupport};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_AND_IPV4_ENABLES:
-+ {
-+ // If DHCP, check if you have an ipv6 and ipv4 address. If static
-+ // return not supported
-+
-+ // 00h check if conf DHCP == ipv4 or off
-+ // 01h check if conf DHCP == ipv6
-+ // 02h check if DHCP == true
-+
-+ auto ethIP = ethdevice + "/" + ipmi::network::IPV6_TYPE;
-+ std::string networkInterfacePath;
-+ uint8_t ipVAddressEnables = 0;
-+
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+ try
-+ {
-+ ipmi::ObjectTree ancestorMap;
-+ // if the system has an ip object,then
-+ // get the IP object.
-+ auto ipObject =
-+ ipmi::getDbusObject(bus, ipmi::network::IP_INTERFACE,
-+ ipmi::network::ROOT, ethIP);
-+ // Get the parent interface of the IP object.
-+ try
-+ {
-+ ipmi::InterfaceList interfaces;
-+ interfaces.emplace_back(
-+ ipmi::network::ETHERNET_INTERFACE);
-+
-+ ancestorMap = ipmi::getAllAncestors(
-+ bus, ipObject.first, std::move(interfaces));
-+ }
-+ catch (InternalFailure& e)
-+ {
-+ // if unable to get the parent interface
-+ // then commit the error and return.
-+ log<level::ERR>(
-+ "Unable to get the parent interface",
-+ entry("PATH=%s", ipObject.first.c_str()),
-+ entry("INTERFACE=%s",
-+ ipmi::network::ETHERNET_INTERFACE));
-+ return IPMI_CC_UNSPECIFIED_ERROR;
-+ }
-+ // for an ip object there would be single parent
-+ // interface.
-+ networkInterfacePath = ancestorMap.begin()->first;
-+ }
-+ catch (InternalFailure& e)
-+ {
-+ // if there is no ip configured on the system,then
-+ // get the network interface object.
-+ auto networkInterfaceObject = ipmi::getDbusObject(
-+ bus, ipmi::network::ETHERNET_INTERFACE,
-+ ipmi::network::ROOT, ethdevice);
-+
-+ networkInterfacePath = networkInterfaceObject.first;
-+ }
-+
-+ 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;
-+ for (uint8_t ii = 0; ii < ipAddressEnablesType.size(); ii++)
-+ {
-+ if (ipEnables == ipAddressEnablesType[ii])
-+ {
-+ ipVAddressEnables = ii;
-+ found = true;
-+ break;
-+ }
-+ }
-+ if (!found)
-+ {
-+ return IPMI_CC_PARM_NOT_SUPPORTED;
-+ }
-+ }
-+ else
-+ {
-+ ipVAddressEnables = channelConf->ipv6AddressingEnables;
-+ }
-+
-+ std::array<uint8_t, 2> buf = {current_revision, ipVAddressEnables};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATUS:
-+ {
-+ // Number of IPV6 addresses that are supported
-+ constexpr std::array<uint8_t, 3> statusData = {1, 1, 3};
-+
-+ std::array<uint8_t, 4> buf = {current_revision, statusData[0],
-+ statusData[1], statusData[2]};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ADDRESSES:
-+ {
-+ // Only return set selector 0
-+ uint8_t ipv6SetSelector = 0;
-+ std::string ipaddress;
-+ auto ethIP = ethdevice + "/" + ipmi::network::IPV6_TYPE;
-+ uint8_t ipv6AddressSource = 0;
-+ uint8_t prefixLength = 0;
-+ uint8_t status = 0;
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+ try
-+ {
-+ auto ipObjectInfo =
-+ ipmi::getIPObject(bus, ipmi::network::IP_INTERFACE,
-+ ipmi::network::ROOT, ethIP);
-+
-+ auto properties = ipmi::getAllDbusProperties(
-+ bus, ipObjectInfo.second, ipObjectInfo.first,
-+ ipmi::network::IP_INTERFACE);
-+
-+ if (std::get<std::string>(properties["Origin"]) ==
-+ "xyz.openbmc_project.Network.IP.AddressOrigin.Static")
-+ {
-+ ipaddress =
-+ std::get<std::string>(properties["Address"]);
-+ ipv6AddressSource = 0x81; // Looking at bit 0 and bit 7
-+ prefixLength =
-+ std::get<uint8_t>(properties["PrefixLength"]);
-+ status = 0;
-+ }
-+ }
-+ // ignore the exception, as it is a valid condition that
-+ // the system is not configured with any IP.
-+ catch (InternalFailure& e)
-+ {
-+ // nothing to do.
-+ }
-+ }
-+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
-+ {
-+ ipv6AddressSource = channelConf->ipv6AddressSource;
-+ ipaddress = channelConf->ipv6Addr.c_str();
-+ prefixLength = channelConf->ipv6Prefix;
-+ status = 1;
-+ }
-+
-+ std::array<uint8_t, ipmi::network::IPV6_ADDRESS_STATUS_SIZE> buf = {
-+ current_revision, ipv6SetSelector, ipv6AddressSource};
-+ inet_pton(AF_INET6, ipaddress.c_str(),
-+ reinterpret_cast<void*>(&buf[3]));
-+ buf[20] = prefixLength;
-+ buf[21] = status;
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_DHCPV6_STATIC_DUID_STORAGE_LENGTH:
-+ {
-+ // DHCP unique identified
-+ // Only 1 read-only 16-byte Block needed
-+ uint8_t duidLength = 1;
-+ std::array<uint8_t, 2> buf = {current_revision, duidLength};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_DHCPV6_STATIC_DUIDS:
-+ {
-+ std::string macAddress;
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+ auto macObjectInfo =
-+ ipmi::getDbusObject(bus, ipmi::network::MAC_INTERFACE,
-+ ipmi::network::ROOT, ethdevice);
-+
-+ auto variant = ipmi::getDbusProperty(
-+ bus, macObjectInfo.second, macObjectInfo.first,
-+ ipmi::network::MAC_INTERFACE, "MACAddress");
-+
-+ macAddress = std::get<std::string>(variant);
-+ }
-+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
-+ {
-+ macAddress = channelConf->macAddress;
-+ }
-+
-+ std::array<uint8_t,
-+ ipmi::network::IPV6_DUID_SIZE + sizeof(current_revision)>
-+ buf;
-+ buf = {current_revision,
-+ reqptr->parameter_set,
-+ reqptr->parameter_block,
-+ DUID_LEN,
-+ 0, // Filler byte
-+ DUID_LL_TYPE,
-+ 0, // Filler byte
-+ DUIC_ETH_HW_TYPE};
-+ sscanf(macAddress.c_str(), ipmi::network::MAC_ADDRESS_FORMAT,
-+ (&buf[8]), (&buf[9]), (&buf[10]), (&buf[11]), (&buf[12]),
-+ (&buf[13]));
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_DYNAMIC_ADDRESSES:
-+ {
-+ std::string ipaddress;
-+ uint8_t ipv6AddressSource = 0;
-+ uint8_t prefixLength = 0;
-+ uint8_t status = 0;
-+ auto ethIP = ethdevice + "/" + ipmi::network::IPV6_TYPE;
-+
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+ try
-+ {
-+ auto ipObjectInfo =
-+ ipmi::getIPObject(bus, ipmi::network::IP_INTERFACE,
-+ ipmi::network::ROOT, ethIP);
-+
-+ auto properties = ipmi::getAllDbusProperties(
-+ bus, ipObjectInfo.second, ipObjectInfo.first,
-+ ipmi::network::IP_INTERFACE);
-+
-+ if (std::get<std::string>(properties["Origin"]) ==
-+ "xyz.openbmc_project.Network.IP.AddressOrigin.DHCP")
-+ {
-+ ipaddress =
-+ std::get<std::string>(properties["Address"]);
-+ ipv6AddressSource = 0x81; // Looking at bit 0 and bit 7
-+ prefixLength =
-+ std::get<uint8_t>(properties["PrefixLength"]);
-+ status = 0;
-+ }
-+ else
-+ {
-+ status = 1;
-+ }
-+ }
-+ // ignore the exception, as it is a valid condition that
-+ // the system is not configured with any IP.
-+ catch (InternalFailure& e)
-+ {
-+ // nothing to do.
-+ }
-+ }
-+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
-+ {
-+ ipaddress = channelConf->ipv6Addr;
-+ ipv6AddressSource = channelConf->ipv6AddressSource;
-+ prefixLength = channelConf->ipv6Prefix;
-+ status = channelConf->ipv6AddressStatus;
-+ }
-+
-+ uint8_t ipv6SetSelector = 0;
-+ std::array<uint8_t, 22> buf = {current_revision, ipv6SetSelector,
-+ ipv6AddressSource};
-+ inet_pton(AF_INET6, ipaddress.c_str(),
-+ reinterpret_cast<void*>(&buf[3]));
-+ buf[20] = prefixLength;
-+ buf[21] = status;
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_DHCPV6_DYNAMIC_DUID_STOR_LEN:
-+ {
-+ uint8_t duidLength = 0;
-+ // Only 1 read-only 16-byte Block needed
-+ duidLength = 1;
-+
-+ std::array<uint8_t, 2> buf = {current_revision, duidLength};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_DHCPV6_DYNAMIC_DUIDS:
-+ {
-+ std::string macAddress;
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+ auto macObjectInfo =
-+ ipmi::getDbusObject(bus, ipmi::network::MAC_INTERFACE,
-+ ipmi::network::ROOT, ethdevice);
-+
-+ auto variant = ipmi::getDbusProperty(
-+ bus, macObjectInfo.second, macObjectInfo.first,
-+ ipmi::network::MAC_INTERFACE, "MACAddress");
-+
-+ macAddress = std::get<std::string>(variant);
-+ }
-+ else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
-+ {
-+ macAddress = channelConf->macAddress;
-+ }
-+
-+ std::array<uint8_t,
-+ ipmi::network::IPV6_DUID_SIZE + sizeof(current_revision)>
-+ buf;
-+ buf = {current_revision,
-+ reqptr->parameter_set,
-+ reqptr->parameter_block,
-+ DUID_LEN,
-+ 0, // Filler byte
-+ DUID_LL_TYPE,
-+ 0, // Filler byte
-+ DUIC_ETH_HW_TYPE};
-+
-+ sscanf(macAddress.c_str(), ipmi::network::MAC_ADDRESS_FORMAT,
-+ (&buf[8]), (&buf[9]), (&buf[10]), (&buf[11]), (&buf[12]),
-+ (&buf[13]));
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_ROUTER_ADDRESS_CONF_CTRL:
-+ {
-+ // Determine if automated router discovery occurs when static
-+ // addresses are used for the bmc
-+
-+ auto ethIP = ethdevice + "/" + ipmi::network::IPV6_TYPE;
-+ std::string networkInterfacePath;
-+ uint8_t dynamicRA;
-+ if (channelConf->lan_set_in_progress == SET_COMPLETE)
-+ {
-+
-+ try
-+ {
-+ ipmi::ObjectTree ancestorMap;
-+ // if the system is having ip object,then
-+ // get the IP object.
-+ auto ipObject =
-+ ipmi::getDbusObject(bus, ipmi::network::IP_INTERFACE,
-+ ipmi::network::ROOT, ethIP);
-+
-+ // Get the parent interface of the IP object.
-+ try
-+ {
-+ ipmi::InterfaceList interfaces;
-+ interfaces.emplace_back(
-+ ipmi::network::ETHERNET_INTERFACE);
-+
-+ ancestorMap = ipmi::getAllAncestors(
-+ bus, ipObject.first, std::move(interfaces));
-+ }
-+ catch (InternalFailure& e)
-+ {
-+ // if unable to get the parent interface
-+ // then commit the error and return.
-+ log<level::ERR>(
-+ "Unable to get the parent interface",
-+ entry("PATH=%s", ipObject.first.c_str()),
-+ entry("INTERFACE=%s",
-+ ipmi::network::ETHERNET_INTERFACE));
-+ return IPMI_CC_UNSPECIFIED_ERROR;
-+ }
-+ // for an ip object there would be single parent
-+ // interface.
-+ networkInterfacePath = ancestorMap.begin()->first;
-+ }
-+ catch (InternalFailure& e)
-+ {
-+ // if there is no ip configured on the system,then
-+ // get the network interface object.
-+ auto networkInterfaceObject = ipmi::getDbusObject(
-+ bus, ipmi::network::ETHERNET_INTERFACE,
-+ ipmi::network::ROOT, ethdevice);
-+
-+ networkInterfacePath = networkInterfaceObject.first;
-+ }
-+
-+ auto variant = ipmi::getDbusProperty(
-+ bus, ipmi::network::SERVICE, networkInterfacePath,
-+ ipmi::network::ETHERNET_INTERFACE, "IPv6AcceptRA");
-+ dynamicRA = std::get<bool>(variant);
-+ }
-+ else
-+ {
-+ dynamicRA = channelConf->ipv6RouterAddressConfigControl;
-+ }
-+
-+ std::array<uint8_t, 2> buf = {current_revision, dynamicRA};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_1_IP_ADDR:
-+ {
-+ std::array<uint8_t, ipmi::network::IPV6_ADDRESS_SIZE_BYTE +
-+ sizeof(current_revision)>
-+ buf = {current_revision};
-+ inet_pton(AF_INET6, channelConf->ipv6GatewayAddr.c_str(),
-+ reinterpret_cast<void*>(&buf[1]));
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_LEN:
-+ {
-+ std::array<uint8_t, 2> buf = {current_revision,
-+ channelConf->ipv6GatewayPrefixLength};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_1_PREFIX_VAL:
-+ {
-+ constexpr uint8_t setSelector = 0;
-+ std::array<uint8_t, sizeof(setSelector) +
-+ ipmi::network::IPV6_ADDRESS_SIZE_BYTE +
-+ sizeof(current_revision)>
-+ buf = {current_revision, setSelector};
-+
-+ inet_pton(AF_INET6, channelConf->ipv6GatewayPrefixValue.c_str(),
-+ reinterpret_cast<void*>(&buf[2]));
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_2_IP_ADDR:
-+ {
-+ std::array<uint8_t, ipmi::network::IPV6_ADDRESS_SIZE_BYTE +
-+ sizeof(current_revision)>
-+ buf = {current_revision};
-+ inet_pton(AF_INET6, channelConf->ipv6BackupGatewayAddr.c_str(),
-+ reinterpret_cast<void*>(&buf[1]));
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_LEN:
-+ {
-+ std::array<uint8_t, 2> buf = {
-+ current_revision, channelConf->ipv6BackupGatewayPrefixLength};
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
-+ case LanParam::IPV6_STATIC_ROUTER_2_PREFIX_VAL:
-+ {
-+
-+ constexpr uint8_t setSelector = 0;
-+ std::array<uint8_t, sizeof(setSelector) +
-+ ipmi::network::IPV6_ADDRESS_SIZE_BYTE +
-+ sizeof(current_revision)>
-+ buf = {current_revision, setSelector};
-+ inet_pton(AF_INET6,
-+ channelConf->ipv6BackupGatewayPrefixValue.c_str(),
-+ reinterpret_cast<void*>(&buf[2]));
-+
-+ std::copy(buf.begin(), buf.end(), static_cast<uint8_t*>(response));
-+ *data_len = buf.size();
-+ break;
-+ }
- default:
- log<level::ERR>("Unsupported parameter",
- entry("PARAMETER=0x%x", reqptr->parameter));
-@@ -957,6 +1580,16 @@ void applyChanges(int channel)
- ipaddress, prefix);
- }
-
-+ if (!channelConf->ipv6Addr.empty() &&
-+ channelConf->ipv6AddressSource ==
-+ 0x80) // Check if IPv6 static addresses are enabled
-+ {
-+ ipmi::network::createIP(bus, ipmi::network::SERVICE,
-+ networkInterfacePath, ipv6Protocol,
-+ channelConf->ipv6Addr,
-+ channelConf->ipv6Prefix);
-+ }
-+
- if (!gateway.empty())
- {
- ipmi::setDbusProperty(bus, systemObject.second,
-@@ -964,7 +1597,24 @@ void applyChanges(int channel)
- ipmi::network::SYSTEMCONFIG_INTERFACE,
- "DefaultGateway", std::string(gateway));
- }
-+ else if (!channelConf->ipv6GatewayAddr.empty())
-+ {
-+ ipmi::setDbusProperty(
-+ bus, systemObject.second, systemObject.first,
-+ ipmi::network::SYSTEMCONFIG_INTERFACE, "DefaultGateway",
-+ std::string(channelConf->ipv6GatewayAddr));
-+ }
- }
-+ // set IPAddress Enables
-+ ipmi::setDbusProperty(
-+ bus, ipmi::network::SERVICE, networkInterfaceObject.first,
-+ ipmi::network::ETHERNET_INTERFACE, "IPAddressEnables",
-+ ipAddressEnablesType[channelConf->ipv6AddressingEnables]);
-+
-+ ipmi::setDbusProperty(
-+ bus, ipmi::network::SERVICE, networkInterfaceObject.first,
-+ ipmi::network::ETHERNET_INTERFACE, "IPv6AcceptRA",
-+ (bool)channelConf->ipv6RouterAddressConfigControl);
- }
- catch (sdbusplus::exception::exception& e)
- {
-Index: phosphor-host-ipmid.clean/transporthandler.hpp
-===================================================================
---- phosphor-host-ipmid.clean.orig/transporthandler.hpp
-+++ phosphor-host-ipmid.clean/transporthandler.hpp
-@@ -79,8 +79,27 @@ enum class LanParam : uint8_t
- IPV6_NEIGHBOR_TIMING_CONFIGURATION = 80,
- };
-
-+constexpr uint8_t DUID_LEN = 10;
-+constexpr uint8_t DUID_LL_TYPE = 3;
-+constexpr uint8_t DUIC_ETH_HW_TYPE = 1;
-+
- // Data length of parameters
- constexpr size_t lanParamVLANSize = 4;
-+constexpr size_t lanParamInProgressSize = 3;
-+constexpr size_t lanParamIPSize = 6;
-+constexpr size_t lanParamIPSrcSize = 3;
-+constexpr size_t lanParamMACSize = 8;
-+constexpr size_t lanParamSubnetSize = 6;
-+constexpr size_t lanParamGatewaySize = 6;
-+constexpr size_t lanParamIPv6AndIPv4EnablesSize = 3;
-+constexpr size_t lanParamIPv6StaticAddressesSize = 23;
-+constexpr size_t lanParamIPv6RouterAddressConfCtrlSize = 3;
-+constexpr size_t lanParamIPv6StaticRouter1IPAddrSize = 18;
-+constexpr size_t lanParamIPv6StaticRouter1PrefixLenSize = 3;
-+constexpr size_t lanParamIPv6StaticRouter1PrefixValSize = 19;
-+constexpr size_t lanParamIPv6StaticRouter2IPAddrSize = 18;
-+constexpr size_t lanParamIPv6StaticRouter2PrefixLenSize = 3;
-+constexpr size_t lanParamIPv6StaticRouter2PrefixValSize = 19;
- constexpr uint8_t SET_COMPLETE = 0;
- constexpr uint8_t SET_IN_PROGRESS = 1;
- constexpr uint8_t SET_COMMIT_WRITE = 2; // Optional
-@@ -103,6 +122,20 @@ struct ChannelConfig_t
- uint8_t lan_set_in_progress = SET_COMPLETE;
- bool flush = false;
-
-+ // IPV6 parameters
-+ uint8_t ipv6AddressSource = 0x0;
-+ uint8_t ipv6AddressingEnables = 0x2;
-+ std::string ipv6Addr;
-+ uint8_t ipv6Prefix = 32;
-+ uint8_t ipv6AddressStatus = 0x0;
-+ uint8_t ipv6RouterAddressConfigControl = 0x0;
-+ std::string ipv6GatewayAddr;
-+ std::string ipv6BackupGatewayAddr;
-+ uint8_t ipv6GatewayPrefixLength;
-+ std::string ipv6GatewayPrefixValue;
-+ uint8_t ipv6BackupGatewayPrefixLength = 0x0;
-+ std::string ipv6BackupGatewayPrefixValue;
-+
- void clear()
- {
- ipaddr.clear();
-@@ -113,6 +146,20 @@ struct ChannelConfig_t
- ipsrc = ipmi::network::IPOrigin::UNSPECIFIED;
- lan_set_in_progress = SET_COMPLETE;
- flush = false;
-+
-+ // IPv6
-+ ipv6Addr.clear();
-+ ipv6GatewayAddr.clear();
-+ ipv6BackupGatewayAddr.clear();
-+ ipv6AddressingEnables = 0x2;
-+ ipv6AddressSource = 0x0;
-+ ipv6Prefix = 32;
-+ ipv6AddressStatus = 0x0;
-+ ipv6RouterAddressConfigControl = 0x0;
-+ ipv6GatewayPrefixLength = 0x0;
-+ ipv6GatewayPrefixValue.clear();
-+ ipv6BackupGatewayPrefixLength = 0x0;
-+ ipv6BackupGatewayPrefixValue.clear();
- }
- };
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch
index efee7cc26..ccf326a91 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0010-fix-get-system-GUID-ipmi-command.patch
@@ -1,22 +1,24 @@
-commit 72e6573f36fd3b9ce018e71b07bc1be63275d1f8
-Author: Vernon Mauery <vernon.mauery@linux.intel.com>
-Date: Fri Jun 21 12:27:20 2019 -0700
+From c1925ab965271875d4e9333be85cdfe8e1516948 Mon Sep 17 00:00:00 2001
+From: Vernon Mauery <vernon.mauery@linux.intel.com>
+Date: Fri, 14 Feb 2020 13:13:06 -0800
+Subject: [PATCH] Fix 'Get System GUID' to use settings UUID
- Fix 'Get System GUID' to use settings UUID
-
- The upstream Get System GUID command looks first for a BMC interface
- and then assumes that the UUID interface is next to that. But that is
- not the case on Intel systems where the system GUID is found in the
- settings daemon.
-
- Change-Id: I924bd05e0a546f2b30288c1faf72157296ab6579
- Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
+The upstream Get System GUID command looks first for a BMC interface
+and then assumes that the UUID interface is next to that. But that is
+not the case on Intel systems where the system GUID is found in the
+settings daemon.
+
+Change-Id: I924bd05e0a546f2b30288c1faf72157296ab6579
+Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
+---
+ apphandler.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/apphandler.cpp b/apphandler.cpp
-index 280d0db..25af6bb 100644
+index dcfda11..780afbc 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
-@@ -799,8 +799,6 @@ auto ipmiAppGetBtCapabilities()
+@@ -784,8 +784,6 @@ auto ipmiAppGetBtCapabilities()
auto ipmiAppGetSystemGuid() -> ipmi::RspType<std::array<uint8_t, 16>>
{
@@ -25,7 +27,7 @@ index 280d0db..25af6bb 100644
static constexpr auto uuidInterface = "xyz.openbmc_project.Common.UUID";
static constexpr auto uuidProperty = "UUID";
-@@ -809,7 +807,7 @@ auto ipmiAppGetSystemGuid() -> ipmi::RspType<std::array<uint8_t, 16>>
+@@ -794,7 +792,7 @@ auto ipmiAppGetSystemGuid() -> ipmi::RspType<std::array<uint8_t, 16>>
{
// Get the Inventory object implementing BMC interface
auto busPtr = getSdBus();
@@ -34,3 +36,6 @@ index 280d0db..25af6bb 100644
// Read UUID property value from bmcObject
// UUID is in RFC4122 format Ex: 61a39523-78f2-11e5-9862-e6402cfc3223
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0054-Fix-User-commands-require-channel-layer-lib.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0054-Fix-User-commands-require-channel-layer-lib.patch
deleted file mode 100644
index bf6f672cf..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0054-Fix-User-commands-require-channel-layer-lib.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5d0c9d2217dbe369daffb8a92d7b5e7d7d34d566 Mon Sep 17 00:00:00 2001
-From: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
-Date: Sat, 2 Mar 2019 20:08:32 +0530
-Subject: [PATCH] Fix: User commands require channel layer lib
-
-As channel layer is separated out from user layer lib, it
-has to be manually included in libusercommands, as user
-command handlers use channel layer API's
-
-Tested-by:
-1. Made sure that libusercommands are loaded on it's own
-without any undefined symbol error.
-2. ipmitool user list 1 works on host interface
-
-Change-Id: I6652ad248e01afc1349e3a9612754dbdb84b96ad
-Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
----
- Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index bb7bdbf..4e9101e 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -120,7 +120,8 @@ libipmi20_la_CXXFLAGS = $(COMMON_CXX)
- providers_LTLIBRARIES += libusercmds.la
- libusercmds_la_LIBADD = \
- libipmid/libipmid.la \
-- user_channel/libuserlayer.la
-+ user_channel/libuserlayer.la \
-+ user_channel/libchannellayer.la
- libusercmds_la_SOURCES = \
- user_channel/usercommands.cpp
- libusercmds_la_LDFLAGS = \
---
-2.7.4
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch
index 6c61e0995..96e45cad3 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch
@@ -1,12 +1,14 @@
-From 959030b7ee71a7b23d1c081a0aadaa4eedbc0f63 Mon Sep 17 00:00:00 2001
+From 92bdbcd90a445e49ba2f8e483d44ec41152d32b4 Mon Sep 17 00:00:00 2001
From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
Date: Mon, 3 Jun 2019 17:01:47 -0700
Subject: [PATCH] Update IPMI Chassis Control command
This change updates the IPMI Chassis Control command to use the new
-chassis state transitions. This allows each chassis control action
+host state transitions. This allows each chassis control action
to more closely follow the behavior defined in the IPMI spec.
+ref: https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/22358
+
Tested:
Ran each IPMI chassis control command to confirm the expected
behavior:
@@ -19,11 +21,11 @@ ipmitool power soft: soft power-off requested from system software
Change-Id: Ic9fba3ca4abd9a758eb88f1e6ee09f7ca64ff80a
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
---
- chassishandler.cpp | 205 +++++++++++++----------------------------------------
- 1 file changed, 50 insertions(+), 155 deletions(-)
+ chassishandler.cpp | 206 +++++++++++++----------------------------------------
+ 1 file changed, 50 insertions(+), 156 deletions(-)
diff --git a/chassishandler.cpp b/chassishandler.cpp
-index 053f29a..53b25b8 100644
+index 0326806..8bfab88 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -31,6 +31,7 @@
@@ -34,7 +36,7 @@ index 053f29a..53b25b8 100644
#include <xyz/openbmc_project/State/Host/server.hpp>
#include <xyz/openbmc_project/State/PowerOnHours/server.hpp>
-@@ -712,59 +713,63 @@ ipmi::RspType<> ipmiSetChassisCap(bool intrusion, bool fpLockout,
+@@ -717,59 +718,63 @@ ipmi::RspType<> ipmiSetChassisCap(bool intrusion, bool fpLockout,
//------------------------------------------
// Calls into Host State Manager Dbus object
//------------------------------------------
@@ -108,10 +110,11 @@ index 053f29a..53b25b8 100644
- HOST_STATE_MANAGER_IFACE, PROPERTY, "s",
- request.c_str());
- if (rc < 0)
-+ try
- {
+- {
- log<level::ERR>("Failed to initiate transition",
- entry("ERRNO=0x%X, REQUEST=%s", -rc, request.c_str()));
++ try
++ {
+ ipmi::setDbusProperty(*getSdBus(), service, chassisStatePath,
+ chassisStateIntf, "RequestedPowerTransition",
+ request);
@@ -134,7 +137,7 @@ index 053f29a..53b25b8 100644
}
//------------------------------------------
-@@ -1065,76 +1070,6 @@ ipmi::RspType<bool, // Power is on
+@@ -1071,76 +1076,6 @@ ipmi::RspType<bool, // Power is on
diagButtonDisableAllow, sleepButtonDisableAllow);
}
@@ -211,7 +214,7 @@ index 053f29a..53b25b8 100644
/** @brief Implementation of chassis control command
*
* @param - chassisControl command byte
-@@ -1147,63 +1082,23 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
+@@ -1153,63 +1088,22 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
switch (chassisControl)
{
case CMD_POWER_ON:
@@ -256,8 +259,8 @@ index 053f29a..53b25b8 100644
break;
-
case CMD_HARD_RESET:
-+ rc = initiateChassisStateTransition(
-+ State::Chassis::Transition::Reset);
++ rc = initiateHostStateTransition(
++ State::Host::Transition::ForceWarmReboot);
+ break;
case CMD_POWER_CYCLE:
- // SPEC has a section that says certain implementations can trigger
@@ -271,8 +274,7 @@ index 053f29a..53b25b8 100644
- indicate_no_softoff_needed();
-
- rc = initiate_state_transition(State::Host::Transition::Reboot);
-+ rc = initiateChassisStateTransition(
-+ State::Chassis::Transition::PowerCycle);
++ rc = initiateHostStateTransition(State::Host::Transition::Reboot);
break;
-
case CMD_SOFT_OFF_VIA_OVER_TEMP:
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Update-provisioning-mode-filter-logic.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Update-provisioning-mode-filter-logic.patch
deleted file mode 100644
index 5cd8b3ec4..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0064-Update-provisioning-mode-filter-logic.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-From dcfce847654bd7e2475ad74bedf569b6120701dd Mon Sep 17 00:00:00 2001
-From: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
-Date: Tue, 18 Jun 2019 19:42:30 +0530
-Subject: [PATCH 1/1] Update provisioning mode filter logic
-
-Updated provisioning mode filtering logic support. Based on the
-RestrictionMode property, Host (system) interface commands will be
-filtered as per the allowed list in ProvisionedHostWhitelist once
-POST complete is achieved. No commands will be allowed in
-ProvisionedHostDisabled after POST complete and in all other cases
-filterning logic will not be applied.
-
-Tested
-1. Verified the filtering logic through EFI shell and made sure
-filtering logic is applied when RestrictionMode is in
-ProvisionedHostWhitelist mode
-2. Verified no filtering logic is applied in normal modes
-3. Made sure BIOS is able to execute commands, which are not in
-whitelist (Note: New whitelist conf is under review).
-
-Change-Id: I7a14e827d70e2d8d6975e600a0fd00e2a790bc22
-Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
-Signed-off-by: James Feist <james.feist@linux.intel.com>
----
- whitelist-filter.cpp | 191 ++++++++++++++++++++++++++++++-------------
- 1 file changed, 136 insertions(+), 55 deletions(-)
-
-diff --git a/whitelist-filter.cpp b/whitelist-filter.cpp
-index 9f1e7c8..53461b4 100644
---- a/whitelist-filter.cpp
-+++ b/whitelist-filter.cpp
-@@ -25,6 +25,7 @@ namespace
- */
- class WhitelistFilter
- {
-+
- public:
- WhitelistFilter();
- ~WhitelistFilter() = default;
-@@ -35,17 +36,24 @@ class WhitelistFilter
-
- private:
- void postInit();
-- void cacheRestrictedMode();
-+ void cacheRestrictedAndPostCompleteMode();
- void handleRestrictedModeChange(sdbusplus::message::message& m);
-+ void handlePostCompleteChange(sdbusplus::message::message& m);
- ipmi::Cc filterMessage(ipmi::message::Request::ptr request);
-
-- bool restrictedMode = true;
-+ sdbusplus::xyz::openbmc_project::Control::Security::server::
-+ RestrictionMode::Modes restrictionMode =
-+ sdbusplus::xyz::openbmc_project::Control::Security::server::
-+ RestrictionMode::Modes::ProvisionedHostWhitelist;
-+ bool postCompleted = false;
- std::shared_ptr<sdbusplus::asio::connection> bus;
-- std::unique_ptr<settings::Objects> objects;
- std::unique_ptr<sdbusplus::bus::match::match> modeChangeMatch;
-+ std::unique_ptr<sdbusplus::bus::match::match> postCompleteMatch;
-
- static constexpr const char restrictionModeIntf[] =
- "xyz.openbmc_project.Control.Security.RestrictionMode";
-+ static constexpr const char* systemOsStatusIntf =
-+ "xyz.openbmc_project.State.OperatingSystem.Status";
- };
-
- WhitelistFilter::WhitelistFilter()
-@@ -63,43 +71,83 @@ WhitelistFilter::WhitelistFilter()
- post_work([this]() { postInit(); });
- }
-
--void WhitelistFilter::cacheRestrictedMode()
-+void WhitelistFilter::cacheRestrictedAndPostCompleteMode()
- {
- using namespace sdbusplus::xyz::openbmc_project::Control::Security::server;
-+
- std::string restrictionModeSetting;
- std::string restrictionModeService;
-+ std::string systemOsStatusPath;
-+ std::string systemOsStatusService;
- try
- {
-- restrictionModeSetting = objects->map.at(restrictionModeIntf).at(0);
-+ auto objects = settings::Objects(
-+ *bus, std::vector<settings::Interface>({restrictionModeIntf}));
-+ auto postCompleteObj = settings::Objects(
-+ *bus, std::vector<settings::Interface>({systemOsStatusIntf}));
-+
-+ restrictionModeSetting = objects.map.at(restrictionModeIntf).at(0);
- restrictionModeService =
-- objects->service(restrictionModeSetting, restrictionModeIntf);
-+ objects.service(restrictionModeSetting, restrictionModeIntf);
-+
-+ systemOsStatusPath = postCompleteObj.map.at(systemOsStatusIntf).at(0);
-+ systemOsStatusService =
-+ postCompleteObj.service(systemOsStatusPath, systemOsStatusIntf);
- }
- catch (const std::out_of_range& e)
- {
-- log<level::ERR>(
-- "Could not look up restriction mode interface from cache");
-+ log<level::INFO>(
-+ "Could not initialize provisioning mode, defaulting to restricted");
-+ return;
-+ }
-+ catch (const std::exception&)
-+ {
-+ log<level::INFO>(
-+ "Could not initialize provisioning mode, defaulting to restricted");
- return;
- }
-+
- bus->async_method_call(
- [this](boost::system::error_code ec, ipmi::Value v) {
- if (ec)
- {
-- log<level::ERR>("Error in RestrictionMode Get");
-- // Fail-safe to true.
-- restrictedMode = true;
-+ log<level::INFO>("Could not initialize provisioning mode, "
-+ "defaulting to restricted");
- return;
- }
- auto mode = std::get<std::string>(v);
-- auto restrictionMode =
-- RestrictionMode::convertModesFromString(mode);
-- restrictedMode =
-- (restrictionMode == RestrictionMode::Modes::Whitelist);
-- log<level::INFO>((restrictedMode ? "Set restrictedMode = true"
-- : "Set restrictedMode = false"));
-+ restrictionMode = RestrictionMode::convertModesFromString(mode);
-+ log<level::INFO>(
-+ "Read restriction mode",
-+ entry("VALUE=%d", static_cast<int>(restrictionMode)));
- },
- restrictionModeService, restrictionModeSetting,
- "org.freedesktop.DBus.Properties", "Get", restrictionModeIntf,
- "RestrictionMode");
-+
-+ bus->async_method_call(
-+ [this](boost::system::error_code ec, const ipmi::Value& v) {
-+ if (ec)
-+ {
-+ log<level::ERR>("Error in OperatingSystemState Get");
-+ postCompleted = true;
-+ return;
-+ }
-+ auto value = std::get<std::string>(v);
-+ if (value == "Standby")
-+ {
-+ postCompleted = true;
-+ }
-+ else
-+ {
-+ postCompleted = false;
-+ }
-+ log<level::INFO>("Read POST complete value",
-+ entry("VALUE=%d", postCompleted));
-+ },
-+ systemOsStatusService, systemOsStatusPath,
-+ "org.freedesktop.DBus.Properties", "Get", systemOsStatusIntf,
-+ "OperatingSystemState");
- }
-
- void WhitelistFilter::handleRestrictedModeChange(sdbusplus::message::message& m)
-@@ -112,61 +160,94 @@ void WhitelistFilter::handleRestrictedModeChange(sdbusplus::message::message& m)
- {
- if (property.first == "RestrictionMode")
- {
-- RestrictionMode::Modes restrictionMode =
-- RestrictionMode::convertModesFromString(
-- std::get<std::string>(property.second));
-- restrictedMode =
-- (restrictionMode == RestrictionMode::Modes::Whitelist);
-- log<level::INFO>((restrictedMode
-- ? "Updated restrictedMode = true"
-- : "Updated restrictedMode = false"));
-+ restrictionMode = RestrictionMode::convertModesFromString(
-+ std::get<std::string>(property.second));
-+ log<level::INFO>(
-+ "Updated restriction mode",
-+ entry("VALUE=%d", static_cast<int>(restrictionMode)));
- }
- }
- }
--
--void WhitelistFilter::postInit()
-+void WhitelistFilter::handlePostCompleteChange(sdbusplus::message::message& m)
- {
-- objects = std::make_unique<settings::Objects>(
-- *bus, std::vector<settings::Interface>({restrictionModeIntf}));
-- if (!objects)
-+ std::string intf;
-+ std::vector<std::pair<std::string, ipmi::Value>> propertyList;
-+ m.read(intf, propertyList);
-+ for (const auto& property : propertyList)
- {
-- log<level::ERR>(
-- "Failed to create settings object; defaulting to restricted mode");
-- return;
-+ if (property.first == "OperatingSystemState")
-+ {
-+ std::string value = std::get<std::string>(property.second);
-+ if (value == "Standby")
-+ {
-+ postCompleted = true;
-+ }
-+ else
-+ {
-+ postCompleted = false;
-+ }
-+ log<level::INFO>(postCompleted ? "Updated to POST Complete"
-+ : "Updated to !POST Complete");
-+ }
- }
--
-+}
-+void WhitelistFilter::postInit()
-+{
- // Initialize restricted mode
-- cacheRestrictedMode();
-+ cacheRestrictedAndPostCompleteMode();
- // Wait for changes on Restricted mode
-- std::string filterStr;
-- try
-- {
-- filterStr = sdbusplus::bus::match::rules::propertiesChanged(
-- objects->map.at(restrictionModeIntf).at(0), restrictionModeIntf);
-- }
-- catch (const std::out_of_range& e)
-- {
-- log<level::ERR>("Failed to determine restriction mode filter string");
-- return;
-- }
-+ namespace rules = sdbusplus::bus::match::rules;
-+ const std::string filterStrModeChange =
-+ rules::type::signal() + rules::member("PropertiesChanged") +
-+ rules::interface("org.freedesktop.DBus.Properties") +
-+ rules::argN(0, restrictionModeIntf);
-+
-+ const std::string filterStrPostComplete =
-+ rules::type::signal() + rules::member("PropertiesChanged") +
-+ rules::interface("org.freedesktop.DBus.Properties") +
-+ rules::argN(0, systemOsStatusIntf);
-+
- modeChangeMatch = std::make_unique<sdbusplus::bus::match::match>(
-- *bus, filterStr, [this](sdbusplus::message::message& m) {
-+ *bus, filterStrModeChange, [this](sdbusplus::message::message& m) {
- handleRestrictedModeChange(m);
- });
-+ postCompleteMatch = std::make_unique<sdbusplus::bus::match::match>(
-+ *bus, filterStrPostComplete, [this](sdbusplus::message::message& m) {
-+ handlePostCompleteChange(m);
-+ });
- }
-
- ipmi::Cc WhitelistFilter::filterMessage(ipmi::message::Request::ptr request)
- {
-- if (request->ctx->channel == ipmi::channelSystemIface && restrictedMode)
-+ using namespace sdbusplus::xyz::openbmc_project::Control::Security::server;
-+
-+ if (request->ctx->channel == ipmi::channelSystemIface &&
-+ (restrictionMode != RestrictionMode::Modes::None &&
-+ restrictionMode != RestrictionMode::Modes::Provisioning))
- {
-- if (!std::binary_search(
-- whitelist.cbegin(), whitelist.cend(),
-- std::make_pair(request->ctx->netFn, request->ctx->cmd)))
-+ if (!postCompleted)
-+ {
-+ // Allow all commands, till POST is not completed
-+ return ipmi::ccSuccess;
-+ }
-+ switch (restrictionMode)
- {
-- log<level::ERR>("Net function not whitelisted",
-- entry("NETFN=0x%X", int(request->ctx->netFn)),
-- entry("CMD=0x%X", int(request->ctx->cmd)));
-- return ipmi::ccInsufficientPrivilege;
-+ case RestrictionMode::Modes::ProvisionedHostWhitelist:
-+ {
-+ if (!std::binary_search(
-+ whitelist.cbegin(), whitelist.cend(),
-+ std::make_pair(request->ctx->netFn, request->ctx->cmd)))
-+ {
-+ log<level::ERR>(
-+ "Net function not whitelisted",
-+ entry("NETFN=0x%X", int(request->ctx->netFn)),
-+ entry("CMD=0x%X", int(request->ctx->cmd)));
-+ return ipmi::ccInsufficientPrivilege;
-+ }
-+ break;
-+ }
-+ default: // for whitelist, blacklist & HostDisabled
-+ return ipmi::ccInsufficientPrivilege;
- }
- }
- return ipmi::ccSuccess;
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf
deleted file mode 100644
index 268e12848..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/host-ipmid-whitelist.conf
+++ /dev/null
@@ -1,200 +0,0 @@
-#<NetFn>:<Command>
-#IPMI whitelist command list version 9b
-0x00:0x00 //<Chassis>:<Get Chassis Capabiliti>
-0x00:0x01 //<Chassis>:<Get Chassis Status>
-0x00:0x04 //<Chassis>:<Chassis Identify>
-0x00:0x07 //<Chassis>:<Get System Restart Cause>
-0x00:0x09 //<Chassis>:<Get System Boot Options>
-0x00:0x0A //<Chassis>:<Set Front Panel Enables>
-0x00:0x0F //<Chassis>:<Get POH Counter>
-0x04:0x01 //<Sensor/Event>:<Get Event Receiver>
-0x04:0x02 //<Sensor/Event>:<SEL Platform event>
-0x04:0x10 //<Sensor/Event>:<PEF Get Capabilities>
-0x04:0x13 //<Sensor/Event>:<PEF Get Configuration Parameters>
-0x04:0x15 //<Sensor/Event>:<PEF Get Processed EventID>
-0x04:0x20 //<Sensor/Event>:<Get Device SDR Info>
-0x04:0x21 //<Sensor/Event>:<Get Device SDR>
-0x04:0x23 //<Sensor/Event>:<Get Sensor Reading Factors>
-0x04:0x25 //<Sensor/Event>:<Get Sensor Hysteresis>
-0x04:0x27 //<Sensor/Event>:<Get Sensor Threshold>
-0x04:0x29 //<Sensor/Event>:<Get SensorEvent Enable>
-0x04:0x2B //<Sensor/Event>:<Get SensorEvent Status>
-0x04:0x2D //<Sensor/Event>:<Get SensorReading>
-0x04:0x2F //<Sensor/Event>:<Get Sensor Type>
-0x06:0x01 //<App>:<Get Device ID>
-0x06:0x04 //<App>:<Get Self Test>
-0x06:0x06 //<App>:<Set ACPI Power State>
-0x06:0x07 //<App>:<Get ACPI Power State>
-0x06:0x08 //<App>:<Get Device GUID>
-0x06:0x22 //<App>:<Reset Watchdog Timer>
-0x06:0x24 //<App>:<Set Watchdog Timer>
-0x06:0x25 //<App>:<Get Watchdog Timer>
-0x06:0x2F //<App>:<Get BMC Global Enables>
-0x06:0x30 //<App>:<Clear Message Flags>
-0x06:0x31 //<App>:<Get Message Flags>
-0x06:0x33 //<App>:<Get Message>
-0x06:0x35 //<App>:<Read Event Message Buffer>
-0x06:0x37 //<App>:<Get System GUID>
-0x06:0x38 //<App>:<Get Channel Authentication Capability>
-0x06:0x39 //<App>:<Get Session Challenge>
-0x06:0x3D //<App>:<Get Channel Session Info>
-0x06:0x3F //<App>:<Get Authentication Code>
-0x06:0x41 //<App>:<Get Channel Access>
-0x06:0x42 //<App>:<Get Channel Info>
-0x06:0x44 //<App>:<Get User Access>
-0x06:0x46 //<App>:<Get User Name>
-0x06:0x4A //<App>:<Get Payload Activation Status>
-0x06:0x4B //<App>:<Get Payload Instance Info>
-0x06:0x4D //<App>:<Get User Payload Access>
-0x06:0x4E //<App>:<Get Channel Payload Support>
-0x06:0x4F //<App>:<Get Channel Payload Version>
-0x06:0x50 //<App>:<Get Channel OEM Payload Info>
-0x06:0x54 //<App>:<Get Channel Cipher Suites>
-0x06:0x57 //<App>:<Get System Interface Capabilities>
-0x08:0x20 //<Firmware>:<Get Version Information>
-0x08:0x21 //<Firmware>:<Security Version Information>
-0x08:0x22 //<Firmware>:<Firmware Update Channel Information>
-0x08:0x23 //<Firmware>:<BMC Execution Context>
-0x08:0x24 //<Firmware>:<Get Boot Certificate Info>
-0x08:0x25 //<Firmware>:<Get Boot Certificate Data>
-0x08:0x26 //<Firmware>:<Firmware Random Number Update>
-0x08:0x27 //<Firmware>:<Set Firmware Update Mode>
-0x08:0x28 //<Firmware>:<Exit Firmware Update Mode>
-0x08:0x29 //<Firmware>:<Firmware Update Control>
-0x08:0x2A //<Firmware>:<Get Firmware Update Status>
-0x08:0x2B //<Firmware>:<Set Firmware Update Options>
-0x08:0x2C //<Firmware>:<Write Firmware Image>
-0x08:0x2D //<Firmware>:<Get Firmware Update Status Code Message>
-0x08:0xE0 //<Firmware>:<Get Firmware Update Error Code Message>
-0x0A:0x10 //<Storage>:<Get FRU Inventory Area Info>
-0x0A:0x11 //<Storage>:<Read FRU Data>
-0x0A:0x20 //<Storage>:<Get SDR Repository Info>
-0x0A:0x21 //<Storage>:<Get SDR Alloc Info>
-0x0A:0x23 //<Storage>:<Get SDR>
-0x0A:0x28 //<Storage>:<SEL Get Time>
-0x0A:0x40 //<Storage>:<Get SEL Info>
-0x0A:0x41 //<Storage>:<Get SEL Alloc Info>
-0x0A:0x43 //<Storage>:<Get SEL Entry>
-0x0A:0x48 //<Storage>:<Get SEL Time>
-0x0A:0x5A //<Storage>:<Get SEL Auxiliary Log Status>
-0x0A:0x5C //<Storage>:<Get SEL Time UTC Offset>
-0x0C:0x02 //<Transport>:<Get LAN Configuration Parameters>
-0x0C:0x04 //<Transport>:<Get IPUDPRMCP Statistics>
-0x0C:0x11 //<Transport>:<Get Serial Modem Configuration>
-0x0C:0x21 //<Transport>:<Set SOL Configuration Parameters>
-0x0C:0x22 //<Transport>:<Get SOL Configuration Parameters>
-0x2C:0x1F //<Group Extension>:<Get CPU PECI Package Config Data>
-0x2C:0x20 //<Group Extension>:<Get MDR Data Region Status>
-0x2C:0x21 //<Group Extension>:<Get MDR Region Update Complete>
-0x2C:0x22 //<Group Extension>:<Read MDR Region>
-0x2C:0x23 //<Group Extension>:<Write MDR Region>
-0x2C:0x24 //<Group Extension>:<Get MDR Region Lock>
-0x2C:0x25 //<Group Extension>:<Get System Mode>
-0x2C:0x29 //<Group Extension>:<Get TPM Configuration>
-0x2C:0x37 //<Group Extension>:<Read PCIe Cable EEPROM Data>
-0x30:0x04 //<Intel General Application>:<Get NW Switch MIB>
-0x30:0x05 //<Intel General Application>:<Get PDB FW Version>
-0x30:0x09 //<Intel General Application>:<Get BMC Config>
-0x30:0x14 //<Intel General Application>:<Get SM Signal>
-0x30:0x19 //<Intel General Application>:<Read LAN Channel Port Value>
-0x30:0x1A //<Intel General Application>:<Get NIC Info>
-0x30:0x1B //<Intel General Application>:<Get LAN Available>
-0x30:0x1D //<Intel General Application>:<Get Master MAC>
-0x30:0x1F //<Intel General Application>:<Get Secure Mode>
-0x30:0x20 //<Intel General Application>:<OEM Get SEL info>
-0x30:0x21 //<Intel General Application>:<OEM Get SEL Allocation Info>
-0x30:0x22 //<Intel General Application>:<OEM Platform Event Message>
-0x30:0x23 //<Intel General Application>:<OEM Get SEL Entry>
-0x30:0x26 //<Intel General Application>:<Set BIOS ID>
-0x30:0x27 //<Intel General Application>:<Get OEM Device Information>
-0x30:0x2E //<Intel General Application>:<Get Cold Redundancy Configuration>
-0x30:0x30 //<Intel General Application>:<Get Sensor Severity>
-0x30:0x31 //<Intel General Application>:<Get AIC Slot FRU ID SLOT POS Records>
-0x30:0x33 //<Intel General Application>:<Get Controller Status>
-0x30:0x38 //<Intel General Application>:<Get Satellite Firmware update status>
-0x30:0x39 //<Intel General Application>:<HSBP Get Owner>
-0x30:0x3C //<Intel General Application>:<Get AIC MAC>
-0x30:0x41 //<Intel General Application>:<Set System GUID>
-0x30:0x43 //<Intel General Application>:<Get BMC Reset Disables>
-0x30:0x44 //<Intel General Application>:<Send Embedded Firmware Update Status>
-0x30:0x47 //<Intel General Application>:<HSBP Get Version>
-0x30:0x54 //<Intel General Application>:<Set Power Restore Delay>
-0x30:0x55 //<Intel General Application>:<Get Power Restore Delay>
-0x30:0x55 //<Intel General Application>:<Get Power Restore Delay>
-0x30:0x58 //<Intel General Application>:<Get DIMM Fault Status>
-0x30:0x62 //<Intel General Application>:<Get Shutdown Policy>
-0x30:0x63 //<Intel General Application>:<Get Node Slot Presence>
-0x30:0x65 //<Intel General Application>:<Get HDD Drive Fault LED State>
-0x30:0x66 //<Intel General Application>:<Get Buffer Size>
-0x30:0x71 //<Intel General Application>:<Get Advanced Support>
-0x30:0x73 //<Intel General Application>:<Get EFI Payload>
-0x30:0x74 //<Intel General Application>:<Get RMM Status>
-0x30:0x75 //<Intel General Application>:<Get Voltage Name>
-0x30:0x80 //<Intel General Application>:<HSBP Get Register From Memory>
-0x30:0x81 //<Intel General Application>:<Get Power State>
-0x30:0x82 //<Intel General Application>:<Get ACPI Config>
-0x30:0x85 //<Intel General Application>:<Get SF PWM>
-0x30:0x8A //<Intel General Application>:<Get Fan Control Configuration>
-0x30:0x8B //<Intel General Application>:<Auto Fan Detect>
-0x30:0x8D //<Intel General Application>:<Get fan speed offset>
-0x30:0x8F //<Intel General Application>:<Get DIMM offset>
-0x30:0x91 //<Intel General Application>:<Get FSC Parameter>
-0x30:0x92 //<Intel General Application>:<Get Chassis Identifier>
-0x30:0x93 //<Intel General Application>:<Read Base Board Product ID>
-0x30:0x94 //<Intel General Application>:<Get BMC Revision ID>
-0x30:0x95 //<Intel General Application>:<Get Is AP CPU>
-0x30:0x9A //<Intel General Application>:<Get Processor Error Configuration and Status>
-0x30:0x9B //<Intel General Application>:<Set Processor Error Config>
-0x30:0x9D //<Intel General Application>:<Get Fan PWM Limit>
-0x30:0xB0 //<Intel General Application>:<Get LED Status>
-0x30:0xB2 //<Intel General Application>:<Get BMC Service Status>
-0x30:0xB3 //<Intel General Application>:<Get BMC Security Control Mode>
-0x30:0xBB //<Intel General Application>:<Get CPLD Revision ID>
-0x30:0xC2 //<Intel General Application>:<Get OEM Extended Sys Info>
-0x30:0xC6 //<Intel General Application>:<Get Partition Config>
-0x30:0xC7 //<Intel General Application>:<Get Zone Information>
-0x30:0xC9 //<Intel General Application>:<Get Configuration Status>
-0x30:0xCA //<Intel General Application>:<Get Fabric Information>
-0x30:0xCB //<Intel General Application>:<Get EndPoints Information>
-0x30:0xCC //<Intel General Application>:<Get Switches Information>
-0x30:0xCD //<Intel General Application>:<Get Switch Collection Information>
-0x30:0xD0 //<Intel General Application>:<Get NVMe Drive Data>
-0x30:0xD1 //<Intel General Application>:<HSBP Statistics>
-0x30:0xD4 //<Intel General Application>:<Get BIOS Capsule (OOB Update)>
-0x30:0xE2 //<Intel General Application>:<OEM Get Reading>
-0x30:0xE5 //<Intel General Application>:<Get NMI Source>
-0x30:0xE8 //<Intel General Application>:<Get PCIe SMBus Slot Card Info>
-0x30:0xE9 //<Intel General Application>:<Get BIOS POST CODE>
-0x30:0xF9 //<Intel General Application>:<Get POST Progress Codes>
-0x30:0xFD //<Intel General Application>:<Get Riser Presence>
-0x32:0x60 //<Intel OEM Platform>:<Get PM Bus Information>
-0x32:0x63 //<Intel OEM Platform>:<Get Tach Information>
-0x32:0x8D //<Intel OEM Platform>:<Get SSD Power>
-0x3E:0x02 //<Intel Managed Data Region>:<BMC Data Region Update Event Message>
-0x3E:0x20 //<Intel Managed Data Region>:<BMC Region Status>
-0x3E:0x21 //<Intel Managed Data Region>:<BMC Region Update Complete>
-0x3E:0x22 //<Intel Managed Data Region>:<MDR Event>
-0x3E:0x23 //<Intel Managed Data Region>:<BMC Region Read>
-0x3E:0x24 //<Intel Managed Data Region>:<BMC Region Write>
-0x3E:0x25 //<Intel Managed Data Region>:<BMC Region Lock>
-0x3E:0x28 //<Intel Managed Data Region>:<Get DIMM information>
-0x3E:0x30 //<Intel Managed Data Region>:<MDR2 Status>
-0x3E:0x31 //<Intel Managed Data Region>:<MDR2 GET Direction>
-0x3E:0x32 //<Intel Managed Data Region>:<MDR2 Get Data Set Info>
-0x3E:0x33 //<Intel Managed Data Region>:<MDR2 Lock Data>
-0x3E:0x34 //<Intel Managed Data Region>:<MDR2 Unlock Data>
-0x3E:0x35 //<Intel Managed Data Region>:<MDR2 Dget Data Block>
-0x3E:0x38 //<Intel Managed Data Region>:<MDR2 Send Direction>
-0x3E:0x39 //<Intel Managed Data Region>:<MDR2 Data Info Offer>
-0x3E:0x3A //<Intel Managed Data Region>:<MDR2 Data Info>
-0x3E:0x3B //<Intel Managed Data Region>:<MDR2 Data Start>
-0x3E:0x3C //<Intel Managed Data Region>:<MDR2 Data Done>
-0x3E:0x3D //<Intel Managed Data Region>:<MDR2 Data Block>
-0x3E:0x41 //<Intel Managed Data Region>:<Enter Platform Debug Log file transfer mode>
-0x3E:0x42 //<Intel Managed Data Region>:<Read Platform Debug Log file>
-0x3E:0x43 //<Intel Managed Data Region>:<Status of the Platform Debug Log file transfer mode>
-0x3E:0x44 //<Intel Managed Data Region>:<Exit Platform Debug Log file transfer mode>
-0x3E:0x50 //<Intel Managed Data Region>:<Node IPMB slave address>
-0x3E:0x51 //<Intel Managed Data Region>:<Slot IPMB>
-0x3E:0x52 //<Intel Managed Data Region>:<Slot I2C Master Write Read>
-0x3E:0x75 //<Intel Managed Data Region>:<Get Remote Log IP>
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/transporthandler_oem.cpp b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/transporthandler_oem.cpp
index 3cb79dc3f..856a80fbc 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/transporthandler_oem.cpp
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/transporthandler_oem.cpp
@@ -59,7 +59,8 @@ RspType<> setLanOem(uint8_t channel, uint8_t parameter, message::Payload& req)
}
size_t numDataBytes = req.size() - 4;
- if (numDataBytes > IpmiHostnameLen)
+ if ((numDataBytes > IpmiHostnameLen) ||
+ (!complete && (numDataBytes < IpmiHostnameLen)))
{
return responseReqDataLenInvalid();
}
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 ba148779f..e1311a70d 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
@@ -2,10 +2,9 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PROJECT_SRC_DIR := "${THISDIR}/${PN}"
SRC_URI = "git://github.com/openbmc/phosphor-host-ipmid"
-SRCREV = "ebc53cb165ea26aa48f0bbf01d9bce0e4abb0b7d"
+SRCREV = "86d8bd793968e9251f41dbb8eaea482490e68eb1"
SRC_URI += "file://phosphor-ipmi-host.service \
- file://host-ipmid-whitelist.conf \
file://0010-fix-get-system-GUID-ipmi-command.patch \
file://0053-Fix-keep-looping-issue-when-entering-OS.patch \
file://0056-add-SetInProgress-to-get-set-boot-option-cmd.patch \
@@ -13,15 +12,13 @@ SRC_URI += "file://phosphor-ipmi-host.service \
file://0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch \
file://0062-Update-IPMI-Chassis-Control-command.patch \
file://0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch \
- file://0064-Update-provisioning-mode-filter-logic.patch \
file://0001-Modify-Get-Lan-Configuration-IP-Address-Source-to-us.patch \
- file://0002-Fixed-issue-in-setLan-command-for-IP-source.patch \
- file://0003-Fix-for-return-CC-in-setLan-command-cases.patch \
"
EXTRA_OECONF_append = " --disable-i2c-whitelist-check"
EXTRA_OECONF_append = " --enable-transport-oem=yes"
EXTRA_OECONF_append = " --disable-boot-flag-safe-mode-support"
+EXTRA_OECONF_append = " --disable-ipmi-whitelist"
RDEPENDS_${PN}_remove = "clear-once"
@@ -37,10 +34,6 @@ FILES_${PN}_remove = " \
${systemd_unitdir}/system/obmc-host-shutdown@0.target.requires/xyz.openbmc_project.Ipmi.Internal.SoftPowerOff.service \
"
-do_configure_append(){
- cp -f ${WORKDIR}/host-ipmid-whitelist.conf ${S}
-}
-
do_compile_prepend(){
cp -f ${PROJECT_SRC_DIR}/transporthandler_oem.cpp ${S}
}
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 016dd0002..69b730221 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 = "43c89138ea759b4e47f6cef481f677b9f421d148"
+SRCREV = "a86059348fe133725f4616f3e46ff0d555db4039"
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 614133645..c82736781 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 = "46bec0f60a201a644c1f3af4cec2f31da58a0595"
+SRCREV = "2555e2ec1c5bd6636eb67a1a2cdf6b8b567772c9"
USERADD_PACKAGES = "${PN}"
# add a group called ipmi
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 9f657e39b..36d65fd72 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://github.com/Intel-BMC/node-manager;protocol=ssh"
-SRCREV = "ddba32d5ac94cdd8db19e18215535d7fe86675e6"
+SRCREV = "de212d839bb515939bd089c66072e4fcf33b8653"
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl.bb
new file mode 100644
index 000000000..c47a581f6
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Multi-node Non-legacy"
+DESCRIPTION = "New systemd target for non-legacy nodes on multi-node platform"
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "multi-node-nl.target"
+SYSTEMD_SERVICE_${PN} += "nonLegacyNode.service"
+
+S = "${WORKDIR}"
+SRC_URI = "file://multi-node-nl.target \
+ file://nonLegacyNode.service \
+ file://nonLegacyNode.sh \
+ "
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
+
+RDEPENDS_${PN} = "bash"
+
+do_install_append() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/nonLegacyNode.sh ${D}/${bindir}/nonLegacyNode.sh
+
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${S}/multi-node-nl.target ${D}${base_libdir}/systemd/system
+ install -m 0644 ${S}/nonLegacyNode.service ${D}${base_libdir}/systemd/system
+}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/multi-node-nl.target b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/multi-node-nl.target
new file mode 100644
index 000000000..32b50532f
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/multi-node-nl.target
@@ -0,0 +1,4 @@
+[Unit]
+Description=Target for non-legacy node in multi-node system
+Documentation=man:systemd.special(7)
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.service b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.service
new file mode 100644
index 000000000..8e3d07ba4
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Non Legacy node
+
+[Service]
+ExecStart=/usr/bin/nonLegacyNode.sh
+Type=exec
+
+[Install]
+WantedBy=multi-node-nl.target
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.sh b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.sh
new file mode 100755
index 000000000..2a1a5ea3b
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-nl/multi-node-nl/nonLegacyNode.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+PWM_FILE="/sys/class/hwmon/hwmon0/pwm"
+FAN_SPEED=$((255 * 80 / 100))
+
+set_fan_speed() {
+ local idx=0
+ for ((idx=1; idx<=8; idx++))
+ do
+ if [ -f $PWM_FILE$idx ]; then
+ echo $FAN_SPEED > $PWM_FILE$idx
+ fi
+ done
+}
+
+$(set_fan_speed)
+
+export TERM=xterm
+# Autologin root user to serial console (ttyS4) on boot
+exec /sbin/agetty -a root -J -8 -L ttyS4 115200 $TERM
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
index 12cb4ef78..2a561dbe1 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.U_Boot.Environment.Manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/preinit-mounts/preinit-mounts/init b/meta-openbmc-mods/meta-common/recipes-phosphor/preinit-mounts/preinit-mounts/init
index 0e38f3aeb..e954d7757 100755
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/preinit-mounts/preinit-mounts/init
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/preinit-mounts/preinit-mounts/init
@@ -115,41 +115,15 @@ full_clean() {
done
sync
}
-# attach a UBI device to the MTD device
-prepare_ubi_volume() {
- local nv_num="$1"
- local mtd="/dev/mtd${nv_num}"
- local ubi="/dev/ubi${nv_num}"
- if [ ! -e $ubi ]; then
- if ! ubiattach -m "$nv_num" -d "$nv_num"; then
- # the attach failed, so format the MTD device and try again
- log "Warning! Failed to attach $ubi to $mtd."
- log "UBI-formatting $mtd to attach again. Data on this device will be lost."
- ubiformat -y "$mtd"
- ubiattach -m "$nv_num" -d "$nv_num"
- fi
- fi
-
- # make a UBI volume on the UBI device
- local vol="${ubi}_0"
- if [ ! -e $vol ]; then
- ubimkvol "$ubi" -N "$mtd" -m
- fi
-}
-reformat_ubi_volume() {
- local nv_num="$1"
+reformat_jffs2_partition() {
+ local mtd_name="$1"
local mnt="$2"
- local mtd="/dev/mtd${nv_num}"
- local ubi="/dev/ubi${nv_num}"
- local vol="${ubi}_0"
- # unmount the volume to reformat it
+ # unmount the partition to reformat it
umount -f "$mnt"
- ubidetach -m $nv_num
- ubiformat -y "$mtd"
- prepare_ubi_volume $nv_num
- # remount the UBIFS on the UBI volume
- mount -t ubifs -o sync "$vol" "$mnt"
+ flash_eraseall "$(mtd_by_name ${mtd_name})"
+ # remount the JFFS2
+ mount -t jffs2 -o sync mtd:"$mtd_name" "$mnt"
if [ $? -ne 0 ]; then
log "Failed to mount reformatted NV volume; system unstable"
fi
@@ -162,14 +136,13 @@ clear_ubenv() {
# mount NV filesystem
mkdir -p "$RWFS_MNT"
-prepare_ubi_volume $NV_MTD_NUM
-mount -t ubifs -o sync "/dev/ubi${NV_MTD_NUM}_0" "$RWFS_MNT"
+mount -t jffs2 -o sync mtd:"$NV_MTD" "$RWFS_MNT"
if [ $? -ne 0 ]; then
log "Failed to mount NV volume; attempting recovery"
- reformat_ubi_volume $NV_MTD_NUM $RWFS_MNT
+ reformat_jffs2_partition $NV_MTD $RWFS_MNT
fi
-# check for full factory reset: if so, ubiformat $NV_MTD_DEV
+# check for full factory reset: if so, format $NV_MTD_DEV
RESTORE_FLAG=$RWFS_MNT/.restore_op
restore_op=$(cat $RESTORE_FLAG) # read from NV
restore_op=${restore_op:-0} # set default value 0
@@ -181,7 +154,7 @@ elif [ $restore_op -eq 2 ]; then
clear_ubenv
elif [ $restore_op -eq 3 ]; then
log "restore-defaults: reformat"
- reformat_ubi_volume $NV_MTD_NUM $RWFS_MNT
+ reformat_jffs2_partition $NV_MTD $RWFS_MNT
clear_ubenv
fi
rm -f $RESTORE_FLAG
@@ -229,15 +202,57 @@ if ! grep -q sofs /proc/mounts; then
SOFS_MTD=sofs
SOFS_MTD_NUM="$(mtdnum_by_name ${SOFS_MTD})"
- # mount a UBIFS on the UBI volume
- prepare_ubi_volume $SOFS_MTD_NUM
- mount -t ubifs -o sync "/dev/ubi${SOFS_MTD_NUM}_0" "$SOFS_MNT"
+ # mount a JFFS2 on the partition
+ mount -t jffs2 -o sync mtd:"$SOFS_MTD" "$SOFS_MNT"
if [ $? -ne 0 ]; then
log "Failed to mount SOFS volume; attempting recovery"
- reformat_ubi_volume $SOFS_MTD_NUM $SOFS_MNT
+ reformat_jffs2_partition $SOFS_MTD $SOFS_MNT
fi
fi
log "Finished mounting nv and overlays"
+
+# Detect the non-legacy node in cooper city and boot in to special mode.
+
+readonly COOPER_CITY=40 # Board id of cooper city
+
+is_nl_node() {
+ typeset -i nid1=$(gpioget $(gpiofind "FM_NODE_ID_1"))
+ typeset -i nid2=$(gpioget $(gpiofind "FM_NODE_ID_2"))
+ echo $((nid1|nid2))
+}
+
+read_board_id() {
+ local idx=0
+ local result=0
+ local value=0
+ for ((idx=0; idx<6; idx++))
+ do
+ typeset -i value=$(gpioget $(gpiofind "FM_BMC_BOARD_SKU_ID${idx}_N"))
+ value=$((value << idx))
+ result=$((result | value))
+ done
+ echo $result
+}
+
+pfr_write() {
+ [ $# -ne 2 ] && return 1
+ local PFR_BUS=4
+ local PFR_ADDR=0x38
+ local reg=$1
+ local val=$2
+ i2cset -y $PFR_BUS $PFR_ADDR $reg $val >&/dev/null
+}
+
+board_id=$(read_board_id)
+if [ $board_id -eq $COOPER_CITY ]; then
+ if [ $(is_nl_node) -ne 0 ]; then
+ systemctl set-default multi-node-nl.target
+ PFR_BMC_CHECKPOINT_REG=0xf
+ PFR_BMC_CHECKPOINT_COMPLETE=0x9
+ pfr_write $PFR_BMC_CHECKPOINT_REG $PFR_BMC_CHECKPOINT_COMPLETE
+ fi
+fi
+
exec /lib/systemd/systemd
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/prov-mode-mgr/prov-mode-mgr_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/prov-mode-mgr/prov-mode-mgr_git.bb
index 146d2e523..9db4eeb56 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/prov-mode-mgr/prov-mode-mgr_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/prov-mode-mgr/prov-mode-mgr_git.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.RestrictionMode.Manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/security-manager/security-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/security-manager/security-manager_git.bb
index 8faa23f97..64201acc1 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/security-manager/security-manager_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/security-manager/security-manager_git.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fe
inherit cmake systemd
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
SYSTEMD_SERVICE_${PN} += "xyz.openbmc_project.SecurityManager.service"
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 5511e3b0f..ec101469e 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,7 +1,9 @@
-SRCREV = "347dd4e7a0a4923583151e4d9eb483b65dba9e7b"
+SRCREV = "d9d8cafcb1f4096e579188478b88cb8cefca8bd4"
SRC_URI = "git://github.com/openbmc/dbus-sensors.git"
DEPENDS_append = " libgpiod libmctp"
FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
+EXTRA_OECMAKE += "-DDISABLE_NVME=OFF"
+SYSTEMD_SERVICE_${PN} += " xyz.openbmc_project.nvmesensor.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb
index 314e31779..e49a410cb 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb
@@ -1,7 +1,7 @@
SUMMARY = "Settings"
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb
index 2c4cb80a7..2690169ff 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb
@@ -9,7 +9,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
EXTRA_OECMAKE += "${@bb.utils.contains('EXTRA_IMAGE_FEATURES', 'validation-unsecure', '-DBMC_VALIDATION_UNSECURE_FEATURE=ON', '', d)}"
inherit cmake systemd
@@ -21,6 +21,7 @@ DEPENDS += " \
sdbusplus-native \
phosphor-logging \
boost \
+ libpam \
"
RDEPENDS_${PN} += " \
libsystemd \
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 6cef4c3ea..b1ac1fbc1 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://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "srvcfg-manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
new file mode 100644
index 000000000..aef2a020f
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+DEPENDS += "gtest"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
index 98e0706fa..97896d72a 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
@@ -18,6 +18,7 @@ SYSTEMD_SERVICE_${PN} += "xyz.openbmc_project.State.Boot.PostCode.service"
DEPENDS += " \
autoconf-archive-native \
systemd \
+ boost \
sdbusplus \
sdbusplus-native \
phosphor-dbus-interfaces \
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 910bf9fae..cc84015f4 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 = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
S = "${WORKDIR}/git/callback-manager"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch
new file mode 100644
index 000000000..12a2bda3e
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch
@@ -0,0 +1,73 @@
+From c0bf911cbc33659adddebde767029ffc23251c61 Mon Sep 17 00:00:00 2001
+From: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
+Date: Mon, 24 Feb 2020 13:37:12 +0530
+Subject: [PATCH] Use groupmems instead of getgrnam_r due to overlay
+
+With JFFS2 overlay, getgrnam_r during initial time returns the
+old group details as per the lower dir, instead of the overlay one
+but at the same time groupmems where returning proper values, which
+reads the file everytime. Hence replacing getgrnam_r with groupmems
+
+Tested:
+1. Verified that when added multiple user and then doing
+BMC reset using ipmitool raw 6 2 doesn't reproduce the issue of
+user with only ssh group. (on 38 version source + this fix)
+2. Updated using redfish to version 39 + this fix, and made sure
+issue doesn't happen.
+
+Note: For testing purpose added debug statements to dump ouput of
+both getgrnam_r & groupmems and able to see proper list only
+in groupmems when the issue is reproduced
+
+Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
+---
+ user_service.cpp | 26 +++++++++++---------------
+ 1 file changed, 11 insertions(+), 15 deletions(-)
+
+diff --git a/user_service.cpp b/user_service.cpp
+index c3c45bd..4fdf7a1 100644
+--- a/user_service.cpp
++++ b/user_service.cpp
+@@ -143,28 +143,24 @@ class ShadowService : public phosphor::user::UserServiceInterface
+ getUsersInGroup(const std::string &groupName) const override
+ {
+ std::vector<std::string> usersInGroup;
+- // Should be more than enough to get the pwd structure.
+- std::array<char, 4096> buffer{};
+- struct group grp;
+- struct group *grpPtr = &grp;
+- struct group *resultPtr;
+-
+- int status = getgrnam_r(groupName.c_str(), grpPtr, buffer.data(),
+- buffer.max_size(), &resultPtr);
+-
+- if (!status && (grpPtr == resultPtr))
++ std::vector<std::string> output;
++ try
+ {
+- for (; *(grp.gr_mem) != NULL; ++(grp.gr_mem))
+- {
+- usersInGroup.emplace_back(*(grp.gr_mem));
+- }
++ output = phosphor::user::executeCmd("/usr/sbin/groupmems", "-l",
++ "-g", groupName.c_str());
+ }
+- else
++ catch (const phosphor::user::InternalFailure &e)
+ {
+ phosphor::logging::log<phosphor::logging::level::ERR>(
+ "Group not found",
+ phosphor::logging::entry("GROUP=%s", groupName.c_str()));
+ // Don't throw error, just return empty usersInGroup - fallback
++ return usersInGroup;
++ }
++ if (!output.empty())
++ {
++ boost::algorithm::split(usersInGroup, output[0],
++ boost::algorithm::is_any_of(" "));
+ }
+ return usersInGroup;
+ }
+--
+2.7.4
+
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 f7a3a7875..238511ed5 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
@@ -7,4 +7,5 @@ EXTRA_OECONF += "${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'a
SRC_URI += " \
file://0005-Added-suport-for-multiple-user-manager-services.patch \
+ file://0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch \
"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
index 007265667..da60ca67e 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
@@ -2,7 +2,7 @@ SUMMARY = "Virtual Media Service"
DESCRIPTION = "Virtual Media Service"
SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9"
+SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
S = "${WORKDIR}/git/virtual-media/"
PV = "1.0+git${SRCPV}"
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 bd72b27be..e16e658a1 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,2 +1,2 @@
SRC_URI = "git://github.com/Intel-BMC/phosphor-webui;protocol=ssh;branch=intel2"
-SRCREV = "376cb79388c70253cc8c2b2f8eb40e0f5833ac40"
+SRCREV = "68c48ed0e48f57bf3092bc5a5bd4b8ac336a4d93"