#
d763db35 |
| 03-Sep-2024 |
harsh-agarwal1 <harsh.agarwal@ibm.com> |
PEL: Prevent deletion if it's associated with HWIsolation
- This ensures that PELs linked to HWIsolation records are protected from accidental deletion. - Shows error message of "Call failed: The se
PEL: Prevent deletion if it's associated with HWIsolation
- This ensures that PELs linked to HWIsolation records are protected from accidental deletion. - Shows error message of "Call failed: The service is temporarily unavailable.", when attempting to delete such a PEL individually. - If trying to Delete all, will skip such PELs without showing any message.
Tested: Sample output: ```bash $ busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/ logging xyz.openbmc_project.Collection.DeleteAll DeleteAll
$ busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/ logging/entry/2 xyz.openbmc_project.Object.Delete Delete Call failed: The service is temporarily unavailable.
``` Change-Id: I2d28de91bbb0fbc2a991e3d5e5631814d41fe044 Signed-off-by: Harsh Agarwal <Harsh.Agarwal@ibm.com>
show more ...
|
#
afba316c |
| 30-Aug-2024 |
Arya K Padman <aryakpadman@gmail.com> |
PEL: Init PHAL once the PNOR partition symlink is setup
As part of commit 8ae618, PHAL initialization was moved to pelstartup to avoid multiple initialization calls. However, this change caused an i
PEL: Init PHAL once the PNOR partition symlink is setup
As part of commit 8ae618, PHAL initialization was moved to pelstartup to avoid multiple initialization calls. However, this change caused an issue where the phosphor-logging service was pointing to the default PHAL device tree, which lacks necessary attributes.
Root cause: At the time the phosphor-logging service starts, the PNOR partition symlink (which should point to the correct PHAL device tree) is not yet created. This absence causes phosphor-logging service map to the default device tree. The underlying issue is that the openpower-update-bios-attr-table service, responsible for creating all symlinks, starts after phosphor-logging due to a dependency on phosphor-logging from a dependent service of openpower-update-bios-attr-table service..
Proposed solution: The phosphor-logging service will now subscribe to the 'JobRemoved' DBUS signal from systemd service after the successful execution of openpower--update-bios-attr-table service. Upon receiving this signal, phosphor-logging will init PHAL, ensuring that PHAL initialization occurs only after all symlinks have been set up.
Tested :
Before fix, journal traces has the error from dtb file open as below: ``` p10b systemd[1]: Starting OpenPower Software Update Manager... p10b systemd[1]: Starting Phosphor Log Manager... p10b systemd[1]: Started OpenPower Software Update Manager. p10b systemd[1]: Started Phosphor Log Manager. p10b phosphor-log-manager[409]: Unable to open dtb file '/var/lib/phosphor-software-manager/pnor/rw/DEVTREE' p10b systemd[1]: Starting Update BIOS attr table with host firmware well-known names... ```
After fix, system is starting able to start the services without dtb file open error. ``` p10b systemd[1]: Starting Phosphor Log Manager... p10b phosphor-log-manager[408]: The send PELs to host setting changed to False p10b systemd[1]: Started Phosphor Log Manager. p10b systemd[1]: Starting Set POWER host firmware well-known names... p10b systemd[1]: openpower-process-host-firmware.service: Deactivated successfully. p10b systemd[1]: Finished Set POWER host firmware well-known names. p10b systemd[1]: Starting Update BIOS attr table with host firmware well-known names... p10b systemd[1]: openpower-update-bios-attr-table.service: Deactivated successfully. p10b systemd[1]: Finished Update BIOS attr table with host firmware well-known names. ```
Change-Id: I96b06581ebbc9afd6f8020f3540ed71bf06e5c19 Signed-off-by: Arya K Padman <aryakpadman@gmail.com>
show more ...
|
#
d8ae618a |
| 19-Jul-2024 |
Arya K Padman <aryakpadman@gmail.com> |
PEL: Add the DRAM manufacturer info of DIMM callout in UD section
Add the called out DIMMs DRAM manufacturer info to the user data section of the PEL to assist the service engineers in identifying t
PEL: Add the DRAM manufacturer info of DIMM callout in UD section
Add the called out DIMMs DRAM manufacturer info to the user data section of the PEL to assist the service engineers in identifying the manufacturer of the faulty DRAMs packaged within the DIMM module directly from the logs, aiding in quick resolution.
The changes also moves the pdbg target and libekb initialization to the PEL startup which avoids the need of multiple initialization as the existing design.
When a PEL calls out a DIMM FRU, the DRAM manufacturer ID and the expanded location code of those DIMMs are added to the SysInfo user data section of the generated PEL in JSON format under the key 'DIMMs Additional Info'.
In case of any errors occur during the collection or processing of the manufacturer data, the error messages will be logged in the 'PEL Internal Debug Data' section as a JSON array under the key 'DIMMs Info Fetch Error' as a separate user data section.
Tested :
Below is a portion of PEL(callout section and User Data section are shown) which callout the DIMM P0-C32.
``` "Hex Word 9": "00000000", "Callout Section": { "Callout Count": "1", "Callouts": [{ "FRU Type": "Normal Hardware FRU", "Priority": "Mandatory, replace all with this type as a unit", "Location Code": "UXXX.YYY.WWW004A-P0-C32", "Part Number": "7777777", "CCIN": "1234", "Serial Number": "YYYYYY" }] } ``` "User Data": { "Section Version": "1", "Sub-section type": "1", "Created by": "bmc error logging", "BMCLoad": "0.65 0.69 0.64", "BMCState": "Ready", "BMCUptime": "0y 0d 0h 17m 43s", "BootState": "Unspecified", "ChassisState": "Off", "DIMMs Additional Info": [ { "DRAM Manufacturer ID": [ "0x88", "0xAA" ] "Location Code": "UXXX.YYY.WWW004A-P0-C32", } ], "FW Version ID": "fw1060.20-4-1060.2432.20240729a (NL1060_068)", "HostState": "Off", "System IM": "50001001" } ```
Change-Id: I2ff81c66e63b99e8e84378ec78f586fb9b6322d7 Signed-off-by: Arya K Padman <aryakpadman@gmail.com>
show more ...
|
#
5bc26533 |
| 10-Apr-2024 |
Arya K Padman <aryakpadman@gmail.com> |
PEL: Changing the remaining traces to lg2 style
Some of the logging traces of PEL files still uses old style of logging.
Changing the remaining traces in PEL files to lg2 style of logging.Some of t
PEL: Changing the remaining traces to lg2 style
Some of the logging traces of PEL files still uses old style of logging.
Changing the remaining traces in PEL files to lg2 style of logging.Some of the traces in phosphor logging code which use the old style is also considered.
Change-Id: I0daf9589af443881cb61730047c23db17fdec2c3 Signed-off-by: Arya K Padman <aryakpadman@gmail.com>
show more ...
|
#
221b79b3 |
| 04-Mar-2024 |
Paul Fertser <fercerpav@gmail.com> |
log_manager: remove redundant createWithFFDC
Fold the functionality of creating an event entry with FFDC appended into a common implementation to avoid code duplication and to ease further extension
log_manager: remove redundant createWithFFDC
Fold the functionality of creating an event entry with FFDC appended into a common implementation to avoid code duplication and to ease further extension and maintainability.
Build-tested with 'openpower-pel-extension' enabled.
Change-Id: I0f8151b782bf42cc7bc0981e58f6ab1e3cda080c Signed-off-by: Paul Fertser <fercerpav@gmail.com>
show more ...
|
#
1aa90d49 |
| 13-Sep-2023 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: switch fmt::format to use std::format
fmt::format is supported in the c++ std. This will help to remove fmt package dependency.
Change-Id: I89f0a5b67bbfe54168a20e93c989a1ae87f54503 Signed-
PEL: switch fmt::format to use std::format
fmt::format is supported in the c++ std. This will help to remove fmt package dependency.
Change-Id: I89f0a5b67bbfe54168a20e93c989a1ae87f54503 Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com>
show more ...
|
#
d96fa60d |
| 15-Dec-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Create class to read from the journal
Create a Journal class that can extract messages out of the journal and return them as a vector of strings that look like:
"Dec 14 15:58:17 systemd[1]: sy
PEL: Create class to read from the journal
Create a Journal class that can extract messages out of the journal and return them as a vector of strings that look like:
"Dec 14 15:58:17 systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully."
It can either grab the previous N entries, or the previous N entries that match a specific SYSLOG_IDENTIFIER value.
The class follows the same strategy as the DataInterface class where a base class pointer is passed into the PEL Manager class so that during unit test it can be mocked.
Future commits will capture the journal into PEL UserData sections.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I9f4bb304c4b213165049fa00de2e62f962ae67f1
show more ...
|
#
2544b419 |
| 04-Oct-2022 |
Patrick Williams <patrick@stwcx.xyz> |
clang-format: update with latest
Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I329396457b83bb2eb8740629b4ac1fbe9106bced
|
#
92b2066f |
| 05-Nov-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: rename feature flag SBE_FFDC_SUPPORTED
Initially SBE_FFDC_SUPPORTED flag introduced to enable SBE ffdc specific feature from phal feature enabled systems. There is new requirement to add addi
PEL: rename feature flag SBE_FFDC_SUPPORTED
Initially SBE_FFDC_SUPPORTED flag introduced to enable SBE ffdc specific feature from phal feature enabled systems. There is new requirement to add additional callout details for phal feature enabled systems. Changing "SBE_FFDC_SUPPORTED" to PHAL feature specific name "PEL_ENABLE_PHAL".
Tested: verified build with phal enabled option.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: Ief4b7a97fa148707f48f70f3f99d2f1a04a05f2e
show more ...
|
#
eff307e3 |
| 15-Jul-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: move libekb init function to sbe ffdc init
libekb init should run only after pdbg initialisation.
Tested: created sbe error and validated.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com
PEL: move libekb init function to sbe ffdc init
libekb init should run only after pdbg initialisation.
Tested: created sbe error and validated.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I8fe2b9ccff61e42aa0e6b0fd7bc6c85a295edd3e
show more ...
|
#
66e186dd |
| 15-Jun-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: move pdbg init function to sbe ffdc init
BMC reboot followed by BMC software update pdbg attribute read api failure due to pdbg default device tree selection instead of BMC specific device tree
PEL: move pdbg init function to sbe ffdc init
BMC reboot followed by BMC software update pdbg attribute read api failure due to pdbg default device tree selection instead of BMC specific device tree. Pdbg initialises default device tree incase user is not configured correctly.
In this usecase DEVTREE links initialises as part of obmc-flash-bios-init.service, and this runs after phosphor logging service. Proposed fix is to do pdbg init as part of PEL request from application. This requests only triggered when host
Tested: SBE PEL is created after software code update and verified.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: Ie04d65b2d295d72c0ea9fe7b374dbb74a80d7a41
show more ...
|
#
d421ae2a |
| 15-Jun-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: set pdbg environment variable
pdbg needs PDBG_DTB environment variable initialisation prior to pdbg init to set correct device tree back-end.
Tested: After software update with this change ver
PEL: set pdbg environment variable
pdbg needs PDBG_DTB environment variable initialisation prior to pdbg init to set correct device tree back-end.
Tested: After software update with this change verified that pdbg is using BMC initialised DEVTREE.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I6a59a79ccd9ae1f7d5947df0905e4ba999f835ec
show more ...
|
#
c74c2202 |
| 04-Jun-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: Add SBE FFDC process function
Helper function to process SBE FFDC packet. This function call libekb function to process the FFDC packet and convert in to known format for PEL specific file cre
PEL: Add SBE FFDC process function
Helper function to process SBE FFDC packet. This function call libekb function to process the FFDC packet and convert in to known format for PEL specific file creation. This function also creates json callout file and text type file, which includes the addition debug data included in SBE FFDC packet.
Tested: Manually verified,
Sample test results with all the cores de-configured system boot usecase.
"User Data 3": { "Section Version": "1", "Sub-section type": "1", "Created by": "0x2000", "Data": [ { "Deconfigured": false, "Guarded": false, "LocationCode": "Ufcs-P0-C24", "MRUs": [ { "ID": 65536, "Priority": "H" } ], "Priority": "H" } ] }, "User Data 4": { "Section Version": "1", "Sub-section type": "3", "Created by": "0x2000", "Data": [ "HWP_RC = RC_SBE_SELECT_EX_INSUFFICIENT_ACTIVE_CORES_ERROR", "HWP_RC_DESC = The requested active cores were not able to be configured.", "HWP_FFDC_CHIP = 6b3a7570 306e3a30 3a30733a 00323070 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000", "HWP_FFDC_CORE_CONFIG = 00000000", "HWP_FFDC_ATTR_ACTIVE_CORES_NUM = 02", "HWP_FFDC_ACTIVE_CORES_NUM = 00000000", "HWP_FFDC_ACTIVE_CORES_VEC = 00000000", "HWP_CDG_TGT_01_LOC_CODE = Ufcs-P0-C24", "HWP_CDG_TGT_01_PHYS_PATH = physical:sys-0/node-0/proc-2", "HWP_CDG_TGT_01_CO_REQ = true", "HWP_CDG_TGT_01_CO_PRIORITY = HIGH", "HWP_CDG_TGT_01_DECONF_REQ = false", "HWP_CDG_TGT_01_GUARD_REQ = false", "HWP_CDG_TGT_01_GUARD_TYPE = GARD_Fatal" ] }
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: Iac2689c3608ddb0090a1c17753bbf9be96d12939
show more ...
|
#
4d779b2c |
| 03-Jun-2021 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: API to convert FAPI based data to PEL format
API support to convert processed SBE FFDC FAPI format packets into PEL expected format.
This function is ported from openpower-proc-control and c
PEL: API to convert FAPI based data to PEL format
API support to convert processed SBE FFDC FAPI format packets into PEL expected format.
This function is ported from openpower-proc-control and customised to make independent function.
Added pdbg and device tree libraries to support phal based device tree support.
Tested: Manually verified.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I8afdb5861be6b129314621eea342bee5eaae82d7
show more ...
|
#
d26fa3e7 |
| 21-Apr-2021 |
Patrick Williams <patrick@stwcx.xyz> |
openpower-pels: clean up various compile warnings
Compile warnings observed when compiling parts of the openpower-pels (or corresponding tests) under stricter compiler warning flags of Meson.
Issue
openpower-pels: clean up various compile warnings
Compile warnings observed when compiling parts of the openpower-pels (or corresponding tests) under stricter compiler warning flags of Meson.
Issues fixed: - many unused parameters - invalid case fall-through - excess semi-colons - incorrect 'const' on return-by-value type - removal of variable length array in test case - uncaught return from 'system' call in test case
Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I8af69184042cf8661d1307a02ecf3afcab4724a1
show more ...
|
#
b9883ea2 |
| 07-Jul-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Disable the default log entry capping
Turn off phosphor-logging's built in mechanism of capping the amount of logs now that the code to do this based on PEL rules is in place.
Signed-off-by: M
PEL: Disable the default log entry capping
Turn off phosphor-logging's built in mechanism of capping the amount of logs now that the code to do this based on PEL rules is in place.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Icb7d1c73a24c4713f32d8eacf8c6c0142bbed33b
show more ...
|
#
56ad2a0e |
| 26-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Pass FFDC files into PEL
In the case where an OpenBMC event log was created with the 'createWithFFDCFiles' D-Bus method, there needs to be UserData PEL sections created with the contents of the
PEL: Pass FFDC files into PEL
In the case where an OpenBMC event log was created with the 'createWithFFDCFiles' D-Bus method, there needs to be UserData PEL sections created with the contents of these files.
This commit passes these files into the PEL constructor, which then does the creating. If any of this would cause the PEL size to go over 16KB, then that section will be trimmed so it fits in the 16KB, and no more additional sections will be added.
The function that actually reads the FFDC file and creates the UserData section is stubbed out and will be implemented in a future commit.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Id27802c91326381a4b80fbe78ab62471cefe0286
show more ...
|
#
c64b7122 |
| 26-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
Implement createWithFFDCFiles
This commit adds support for the createWithFFDCFiles D-Bus method. This method creates a new OpenBMC event log, just like create() does, but it also adds a new paramet
Implement createWithFFDCFiles
This commit adds support for the createWithFFDCFiles D-Bus method. This method creates a new OpenBMC event log, just like create() does, but it also adds a new parameter to pass through information about files containing FFDC (First Failure Data Capture) to any extensions. This FFDC may be stored by the extensions code to provide additional debug information about an error.
The FFDC parameter is a vector of tuples. Each tuple contains: * Format Type - An enumeration describing the format of the data * Subtype - If the format type is custom, then this can be used to provide a format type that is specific to the creator. * Version - If the format type is custom, then this can be used to provide the version of the custom data. * FD - A file descriptor to the file containing the FFDC. This does not need to be closed (an attempt will fail) by phosphor-log-manager.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I3e8e03d6393dfc145e9fd11bd078595868bb3767
show more ...
|
#
f682b40d |
| 18-Dec-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add ability to create event logs
There are cases where the PEL code wants to be able to create OpenBMC event logs (and thus PELs) for problems it encounters when trying to create or import othe
PEL: Add ability to create event logs
There are cases where the PEL code wants to be able to create OpenBMC event logs (and thus PELs) for problems it encounters when trying to create or import other PELs. For example, if the host were to send down a malformed PEL, this code would like to create a new event log and capture part of that bad PEL in the new PEL for debug purposes, as the malformed PEL cannot be reported anywhere since it is malformed.
To handle this, create the EventLogger class that provides a log() function that allows the PEL extension code to create OpenBMC event logs (and thus PELs) from within.
The underlying function to do the event log creating is passed in via the constructor so that it can be changed for testing.
The sd_event_add_defer function (wrapped by sdeventplus) is used to dispatch the creation of a single event, so that the entry point is from the event loop. If there are still events left on the queue after that, then they will be also be scheduled with sd_event_add_defer so that the events are always created from event loop calls.
EventLogger does not allow events to be added to the queue if it is being done from within the creation function so that the code can't get stuck in a loop of creating a new event every time an event is created.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I6a9062074dc62cfb6043139ff0a9f3dfcd06c708
show more ...
|
#
17ed2ed1 |
| 12-Dec-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Create the PLDMInterface class
Create the PLDMInterface class and pass it into the constructor of the Manager class. This is done at this level so that it can be easily mocked for testing.
Ad
PEL: Create the PLDMInterface class
Create the PLDMInterface class and pass it into the constructor of the Manager class. This is done at this level so that it can be easily mocked for testing.
Add a --enable-dont-send-pels-to-host configure option for systems that don't need PELs sent to the host. If this is set, then don't create and pass in the PLDMInterface class, and then the Manager class won't create a HostNotifier class to do the sending.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I34059470ee117e65c5c02b684a9d916571135bfd
show more ...
|
#
57686b65 |
| 05-Dec-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Put back in the default error log caps
Since there is no code in place yet to purge old logs after some amount of total space is consumed, it will be safest to put back in the default cap of 20
PEL: Put back in the default error log caps
Since there is no code in place yet to purge old logs after some amount of total space is consumed, it will be safest to put back in the default cap of 200. If more than 200 is needed in the short term, we can use the currently available configure option to increase the cap.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ide1af5432271817f30bfaf0b065c35906aaa05cf
show more ...
|
#
711d51d8 |
| 06-Nov-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add license prologue to source files
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I31b12f509d32b79064a8a427af35e6a310273051
|
#
c8705e2b |
| 11-Sep-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Interface to collect system data
There are PEL fields that contain information that must be obtained from various places throughout the BMC, such as the machine type/model/SN from VPD, a few ty
PEL: Interface to collect system data
There are PEL fields that contain information that must be obtained from various places throughout the BMC, such as the machine type/model/SN from VPD, a few types of codes levels, etc.
Create a DataInterface class that will provide the APIs for collecting this information. It has an abstract base class so that its functions can be mocked to return specific data in test cases.
This commit provides APIs to read and present the machine type-model and machine serial number. These will be used in the FailingMTM and ExtendedUserHeader PEL sections.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Iec41fea8d9510ba711475154f019bd59f0028d2e
show more ...
|
#
4e8078c0 |
| 09-Jul-2019 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add PEL Manager class
This class will have the logic for how to handle PELs. It will also eventually provide D-Bus interfaces.
This first commit has stubs, plus some basic code to find if a P
PEL: Add PEL Manager class
This class will have the logic for how to handle PELs. It will also eventually provide D-Bus interfaces.
This first commit has stubs, plus some basic code to find if a PEL is being passed in with the OpenBMC event log.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I55a5da4d2239c688fded31c112895c3c92bab56d
show more ...
|
#
99c2b405 |
| 23-May-2019 |
Matt Spinler <spinler@us.ibm.com> |
OpenPower PEL Extension support framework
The goal of extensions is to extend phosphor-logging's `xyz.openbmc_project.Logging.Entry` log support to allow other log formats to be created without incu
OpenPower PEL Extension support framework
The goal of extensions is to extend phosphor-logging's `xyz.openbmc_project.Logging.Entry` log support to allow other log formats to be created without incurring extra D-Bus call overhead.
The README.md change in this commit provides additional documentation on how extensions work. The summary is that they allow code that resides in this repository to provide functions that can be called at certain points (startup, log creation/deletion) such that the code can then create their own logs based on the contents of an OpenBMC log. A specific extension's code is compiled in using a --enable configure option, so platforms that did not use those log formats would incur no performance/size penalties.
This commit provides the support for extensions, plus a basic OpenPower PEL (Platform Event Log) extension as the first extension. PELs are event logs used only on some OpenPower systems.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ifbb31325261c157678c29bbebc7f6d32d282582f
show more ...
|