9ac0d9b8 | 14-Jul-2022 |
George Liu <liuxiwei@inspur.com> |
PEL: Add BMC uptime to PELs in UserData section
A UserData section has been added to each PEL with additional debug information, now there is a need to add the output of the uptime command to UserDa
PEL: Add BMC uptime to PELs in UserData section
A UserData section has been added to each PEL with additional debug information, now there is a need to add the output of the uptime command to UserData and display it, but for Hostboot doesn't care about this property, so skip adding it here it.
Tested: unit test passed "User Data 0": { "Section Version": "1", "Sub-section type": "1", "Created by": "0x2000", ... "Uptime": "3y 332d 21h 33m 9s", "Load": "1.47 0.94 0.61", },
Signed-off-by: George Liu <liuxiwei@inspur.com> Change-Id: I3d4c78bb1650da9a91804fc83de60597992ffc8a
show more ...
|
8b81ec0e | 12-Jul-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Update D-Bus event sev based on PEL severity
Put in checks to ensure the D-Bus event log severity agrees with the final PEL severity for PELs created by the BMC. The D-bus property is what is
PEL: Update D-Bus event sev based on PEL severity
Put in checks to ensure the D-Bus event log severity agrees with the final PEL severity for PELs created by the BMC. The D-bus property is what is used in the Redfish event log, and we want to avoid cases like having a Critical event log for an informational PEL.
This could happen in the case where the PEL message registry entry for the event has a hardcoded or manufacturing specific severity value that is different than the severity the D-Bus event log is first created with.
This commit ensures that: * If the PEL is nonError/recovered, the D-Bus severity is one of the non error ones. * If the PEL isn't nonError/recovered, then the D-Bus severity also isn't. * If the PEL is critical, the D-Bus severity is also critical.
It doesn't try to update the D-Bus severity for every PEL severity because there isn't a one to one mapping - e.g. Notice, Debug, and Informational D-Bus severities all map to a PEL severity of nonError(informational).
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I6b0006034090e6d8e33e9f8b136ae50cce489f6e
show more ...
|
df5cb830 | 12-Jul-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Move down quiesce check
Move the check where the host quiesce target may get started based on the PEL severity to the last thing that happens when either a PEL is created by BMC code or receive
PEL: Move down quiesce check
Move the check where the host quiesce target may get started based on the PEL severity to the last thing that happens when either a PEL is created by BMC code or received by the host. It just seems more straight forward to not start systemd targets before even filling in all of the PEL related D-Bus properties.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I689d9947ebeabfdd914b43d32b49c7f1b6cbcdd7
show more ...
|
8edad2a8 | 22-Jun-2022 |
Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com> |
PEL: Fix in getting processor position from SRC6
The value in the SRC6 is stored in the decimal form so that string needs to be converted to integer first to get the processor position from 0:15 bit
PEL: Fix in getting processor position from SRC6
The value in the SRC6 is stored in the decimal form so that string needs to be converted to integer first to get the processor position from 0:15 bits.
TESTS: Executed the test to create PEL with SBE FFDC, there was no crash.
Jun 23 06:30:46 p10bmc phosphor-log-manager[7794]: Created PEL 0x500010c9 (BMC ID 282) with SRC BD123500 Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: exception raised Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: Enter: mpiplEnter(/proc2) Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: /proc2 CFAM(0x2986) : 0x2 Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: /proc2 CFAM(0x2809) : 0x8366018F Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: /proc2 CFAM(0x282A) : 0x9A609A6 Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: /proc2 CFAM(0x2829) : 0x99209A6 Jun 23 06:30:46 p10bmc openpower-proc-control[17085]: /proc2 CFAM(0x1007) : 0xC02083F8 Jun 23 06:30:46 p10bmc phosphor-log-manager[7794]: Created PEL 0x500010ca (BMC ID 283) with SRC BD123500 Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: exception raised Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: Enter: mpiplEnter(/proc3) Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: /proc3 CFAM(0x2986) : 0x2 Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: /proc3 CFAM(0x2809) : 0x8366018F Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: /proc3 CFAM(0x282A) : 0x9740960 Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: /proc3 CFAM(0x2829) : 0x9560974 Jun 23 06:30:46 p10bmc openpower-proc-control[17086]: /proc3 CFAM(0x1007) : 0xC02083F8 Jun 23 06:30:46 p10bmc phosphor-log-manager[7794]: Created PEL 0x500010cb (BMC ID 284) with SRC BD123500 Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: exception raised Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: Enter: mpiplEnter(/proc0) Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: /proc0 CFAM(0x2986) : 0x1 Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: /proc0 CFAM(0x2809) : 0x8366018F Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: /proc0 CFAM(0x282A) : 0x9560942 Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: /proc0 CFAM(0x2829) : 0x92E0974 Jun 23 06:30:46 p10bmc openpower-proc-control[17083]: /proc0 CFAM(0x1007) : 0xC02083F8 Jun 23 06:30:46 p10bmc openpower-proc-control[17070]: Memory preserving reboot failed Jun 23 06:30:46 p10bmc phosphor-log-manager[7794]: Created PEL 0x500010cc (BMC ID 285) with SRC BD123500 Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: exception raised Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: Enter: mpiplEnter(/proc1) Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: /proc1 CFAM(0x2986) : 0x2 Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: /proc1 CFAM(0x2809) : 0x8366018F Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: /proc1 CFAM(0x282A) : 0x9B00988 Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: /proc1 CFAM(0x2829) : 0x9880992 Jun 23 06:30:46 p10bmc openpower-proc-control[17084]: /proc1 CFAM(0x1007) : 0xC02083F8 Jun 23 06:30:46 p10bmc openpower-proc-control[17070]: Memory preserving reboot failed Jun 23 06:30:46 p10bmc openpower-proc-control[17070]: Memory preserving reboot failed Jun 23 06:30:46 p10bmc openpower-proc-control[17070]: Memory preserving reboot failed Jun 23 06:30:46 p10bmc systemd[1]: op-enter-mpreboot@0.service: Main process exited, code=exited, status=1/FAILURE Jun 23 06:30:46 p10bmc systemd[1]: op-enter-mpreboot@0.service: Failed with result 'exit-code'. Jun 23 06:30:46 p10bmc systemd[1]: Failed to start Start memory preserving reboot host0.
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com> Change-Id: I2a1f6f7daebe9a01e00241c9f3587dd09f8668fb
show more ...
|
742b00b9 | 30-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: Log spare clock failures as informational
This commit enables to log spare clock failure log as informational.
For any sbe boot failures, application call pel api with severity information. P
PEL: Log spare clock failures as informational
This commit enables to log spare clock failure log as informational.
For any sbe boot failures, application call pel api with severity information. PEL process the SBE FFDC information and servicable information. For the spare clock failure there is request from RAS team to log error as informational.
Tested: forced clock error on primary processor after bmc clock isteps.
"User Header": { "Section Version": "1", "Sub-section type": "0", "Log Committed by": "0x2000", "Subsystem": "Processor Chip Cache", "Event Scope": "Entire Platform", "Event Severity": "Informational Event", "Event Type": "Miscellaneous, Informational Only", "Action Flags": [ "Service Action Required", "Report Externally", "HMC Call Home" ], "Host Transmission": "Not Sent", "HMC Transmission": "Not Sent" }, "Primary SRC": { "Section Version": "1", "Sub-section type": "1", "Created by": "0x3500", "SRC Version": "0x02", "SRC Format": "0x55", "Virtual Progress SRC": "False", "I5/OS Service Event Bit": "False", "Hypervisor Dump Initiated":"False", "Backplane CCIN": "2E33", "Terminate FW Error": "False", "Deconfigured": "False", "Guarded": "False", "Error Details": { "Message": "Boot failure reported by SBE", "SRC6": [ "0x0", "[0:15] chip position" ] }, "Valid Word Count": "0x09", "Reference Code": "BD123503", "Hex Word 2": "00080055", "Hex Word 3": "2E330010", "Hex Word 4": "00000000", "Hex Word 5": "00000000", "Hex Word 6": "00000000", "Hex Word 7": "00000000", "Hex Word 8": "00000000", "Hex Word 9": "00000000", "Callout Section": { "Callout Count": "1", "Callouts": [{ "FRU Type": "Symbolic FRU", "Priority": "Mandatory, replace all with this type as a unit", "Part Number": "REFCLK0" }] } }, "User Data 3": { "Section Version": "1", "Sub-section type": "1", "Created by": "0x2000", "Data": [ { "Deconfigured": true, "EntityPath": [ 35, 1, 0, 2, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "Priority": "H", "SymbolicFRU": "REFCLK0" } ] }, "User Data 4": { "Section Version": "1", "Sub-section type": "3", "Created by": "0x2000", "Data": [ "HWP_RC = RC_RCS_CLOCK_TEST_OUT_ERR", "HWP_RC_DESC = xxxxxxx" "HWP_FFDC_CLOCK_POS = 00", "HWP_FFDC_READ_SNS1LTH = 00000000", "HWP_FFDC_ATTR_CP_REFCLOCK_SELECT_VALUE = 02", "HWP_FFDC_RCS_CLOCK_TEST_IN = 01", "HWP_FFDC_CLOCK_A_OK = 00", "HWP_FFDC_CLOCK_B_OK = 00", "." ] }
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I15cdd76237d4cdf52e9e6dc907528a66218354c1
show more ...
|
e98777dc | 30-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: Redundant mode clock error handling support
Added additional error support to handle clock failures callout support for the spare clock supported system. In this case only deconfigure clock tar
PEL: Redundant mode clock error handling support
Added additional error support to handle clock failures callout support for the spare clock supported system. In this case only deconfigure clock target.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I426270ab909d21904a2ce198fff58991b91d00fc
show more ...
|
04b8ddd8 | 30-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: convertFAPItoPELformat function description updates
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: Iec5b6e6dc567b178054eb47b1510f305698e54ff |
2a540a84 | 27-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: SbeBootFailure message registry updates
Updated SbeBootFailure message registry to enable secondary clock failure use case. Incase of spare clock initialisation failure during sbe boot window,
PEL: SbeBootFailure message registry updates
Updated SbeBootFailure message registry to enable secondary clock failure use case. Incase of spare clock initialisation failure during sbe boot window, pel should be logged as informational and service event should initiated. Updated message registry fields to support this base infrastructure.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: Ifc31530d7124c7e36a0ad4bcf075d562cb541efa
show more ...
|
0babc761 | 27-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: Add message registry for spare clock failure
Added message registry for spare clock initilisation failure. This error is logged as informational and enabled the required fields to reports exter
PEL: Add message registry for spare clock failure
Added message registry for spare clock initilisation failure. This error is logged as informational and enabled the required fields to reports externally.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I56cb2adaca35de587c57d3dcf06500006c218e2b
show more ...
|
88b3541e | 22-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add min length to 2 msg reg fields
Change the minimum length to 8 for the Message and Description fields in the Documentation section of the message registry as just a basic check that they con
PEL: Add min length to 2 msg reg fields
Change the minimum length to 8 for the Message and Description fields in the Documentation section of the message registry as just a basic check that they contain something valid.
The message registry is transformed into official documentation that needs these fields filled in.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I0f7c247754a0460576337e61159b23fd02420cd4
show more ...
|
ca91ce53 | 23-Jun-2022 |
Sheldon Bailey <baileysh@us.ibm.com> |
PEL: change OCC control SRCs to 0x2600
change OCC reason code to 0x2681, 0x2682, 0x2683. Tested: error logs built. Signed-off-by: Sheldon Bailey <baileysh@us.ibm.com> Change-Id: Ic7748721664511dc818
PEL: change OCC control SRCs to 0x2600
change OCC reason code to 0x2681, 0x2682, 0x2683. Tested: error logs built. Signed-off-by: Sheldon Bailey <baileysh@us.ibm.com> Change-Id: Ic7748721664511dc818e68894f4369efaa0aabc0
show more ...
|
17586b4f | 20-Jun-2022 |
Sunny Srivastava <sunnsr25@in.ibm.com> |
PEL: Error interface for missing essential fru
The commit defines interface for essential fru missing case. Essential frus are the ones which are required to be present in the system at power on sta
PEL: Error interface for missing essential fru
The commit defines interface for essential fru missing case. Essential frus are the ones which are required to be present in the system at power on state.
The commit also modifies the entry related GPIO line error, where because of the ambiguity behind GPIO line error, bmc code will be called out.
Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com> Change-Id: I167c45ed384e04676d66887bcecb4e7e00f16709
show more ...
|
0ad7a822 | 24-May-2022 |
zamiseck <zimzam17@gmail.com> |
PEL: phosphor-bmc-code-mgmt add HostFile
Add entries for errors that occur which are specific to phosphor-bmc-code-mgmt. After code updates, and the system is rebooted, there are partitions that sho
PEL: phosphor-bmc-code-mgmt add HostFile
Add entries for errors that occur which are specific to phosphor-bmc-code-mgmt. After code updates, and the system is rebooted, there are partitions that should be preserved and not overwritten. There needs to be PEL that specify if any of the partitions have been corrupted or modified in a way that prevents the copy from happening.
Signed-off-by: Zami Seck <zimzam17@gmail.com> Change-Id: I0e8b0d1fcb86a67f14ac380fb66a81b461fd0273
show more ...
|
0003af14 | 08-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Sanitize D-Bus fields that come from PELs
The Resolution D-Bus property is filled with values from the PEL callout fields like the serial and part numbers. These fields usually come from EEPRO
PEL: Sanitize D-Bus fields that come from PELs
The Resolution D-Bus property is filled with values from the PEL callout fields like the serial and part numbers. These fields usually come from EEPROMs, and may not necessarily be valid printable values if the code that creates the PEL doesn't sanitize the values first. If any of the characters were invalid, the daemon would crash when D-Bus broker disconnects it from D-Bus since it doesn't allow invalid values on D-Bus.
Prevent this crash by converting any non printable characters in the Resolution property to spaces. This also sanitizes the EventId property which contains the SRC ASCII string and hex words just to be safe.
This is really just a concern for non-BMC created PELs, since the BMC code that reads EEPROMs already sanitizes the values when it reads them, but PELs have come in from other subsystems that don't.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: If0e80fd9db27446f5367ed046e4bca2eb62e3fb2
show more ...
|
744d8515 | 08-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Read 'HMC Managed' BIOS attribute
Add a property watch on the base BaseBIOSTable property provided by the BIOS config manager so that the pvm_hmc_managed BIOS attribute can be read from it to k
PEL: Read 'HMC Managed' BIOS attribute
Add a property watch on the base BaseBIOSTable property provided by the BIOS config manager so that the pvm_hmc_managed BIOS attribute can be read from it to know if the HMC is managed or not.
The DataInterface class already provides an isHMCManaged() method that is used by the host notification code, and this commit allows it to return the correct value.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I55e8f222361e901f0b28c3d596dc3400093aba89
show more ...
|
116428e3 | 09-Jun-2022 |
Marri Devender Rao <devenrao@in.ibm.com> |
PEL: Add error log entry for memory preserving reboot failure
Memory preserving reboot might fail if there are no functional procs present.
Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com> C
PEL: Add error log entry for memory preserving reboot failure
Memory preserving reboot might fail if there are no functional procs present.
Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com> Change-Id: Iceaf21c6527ccf93bcb11b8ec1c9c55dc3670ae0
show more ...
|
4f1bed7e | 09-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Remove use of deprecated mem_fun
Replace it with mem_fn.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I1b223f2de54f9b6c6883fb539276f9750575ab96 |
f6d4dcb4 | 06-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add missing include to mtms.hpp
Compiles done with newer versions of yocto will fail otherwise.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I414975c48722c40fc1cf8102a87cfb0a26d
PEL: Add missing include to mtms.hpp
Compiles done with newer versions of yocto will fail otherwise.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I414975c48722c40fc1cf8102a87cfb0a26dbf225
show more ...
|
46139b01 | 03-Jun-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add missing include
Compiles done with newer versions of yocto will fail otherwise.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I16c967a90a9120652189dad6615bcbd363dca0af |
006dafd2 | 27-May-2022 |
Jim Wright <jlwright@us.ibm.com> |
PEL: Add PWRSPLY symbolic callout
Add the "PWRSPLY" symbolic callout to power supply errors which do not already have a static callout. This is needed to have a callout in the PEL when the failure e
PEL: Add PWRSPLY symbolic callout
Add the "PWRSPLY" symbolic callout to power supply errors which do not already have a static callout. This is needed to have a callout in the PEL when the failure escalates beyond a single power supply device and causes a power good error.
Signed-off-by: Jim Wright <jlwright@us.ibm.com> Change-Id: I679707e531bdfc6c7a29a239c814e682c61e3845
show more ...
|
bc283790 | 26-May-2022 |
Jim Wright <jlwright@us.ibm.com> |
PEL: Remove P3 callout for Rainier system
Per updated Rainier system documentation, the P3 callout is no longer needed.
Signed-off-by: Jim Wright <jlwright@us.ibm.com> Change-Id: I1d4371903b1779be3
PEL: Remove P3 callout for Rainier system
Per updated Rainier system documentation, the P3 callout is no longer needed.
Signed-off-by: Jim Wright <jlwright@us.ibm.com> Change-Id: I1d4371903b1779be3a9f1340e0b1fc8f6fd27d95
show more ...
|
6bb55fc8 | 10-May-2022 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add BMC pldm component ID
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ibcd93e70afc1dd60984cd8af7dae169af48fb9fe |
8c330e43 | 11-May-2022 |
Sridevi Ramesh <sridevra@in.ibm.com> |
Add support for PLDM error logging in message_registry.json.
- Enables the documented SRC for PLDM PELs in peltool.
Tested with validator - openpower-pels/registry/tools/process_registry.py
C
Add support for PLDM error logging in message_registry.json.
- Enables the documented SRC for PLDM PELs in peltool.
Tested with validator - openpower-pels/registry/tools/process_registry.py
Change-Id: I2cd1cd2cbb4535996d77e05caf52cd371fa6fad1 Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
show more ...
|
e4acc8de | 02-Jun-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: Additional callout support for SbeChipOpTimeout
Sbe chip-op timeout case BMC should run sbe_extract_rc procedure to identify the correct callout and service action. Currently this procedure ba
PEL: Additional callout support for SbeChipOpTimeout
Sbe chip-op timeout case BMC should run sbe_extract_rc procedure to identify the correct callout and service action. Currently this procedure based callout handling is not place. Adding next level support callout recommended by RAS team till the actual callout code in place.
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I4ec94bf5d7fa0bade280adf53fe09aad41c97e8a
show more ...
|
f5cd2a42 | 31-May-2022 |
Jayanth Othayoth <ojayanth@in.ibm.com> |
PEL: SbeBootTimeout add additional callouts
Incase of TPM failure, SBE will fail to boot. BMC will continuously try to boot the SBE but it will stuck in the measurement flow. SBE doest not have call
PEL: SbeBootTimeout add additional callouts
Incase of TPM failure, SBE will fail to boot. BMC will continuously try to boot the SBE but it will stuck in the measurement flow. SBE doest not have callout support in FFDC handling now. As a stopgap, added callouts for the TPM and planar as low till, the actual error handling support is in place.
Tested:
"Error Details": { "Message": "timeout reported during SBE boot process" },
"Callout Section": { "Callout Count": "4", "Callouts": [{ "FRU Type": "Maintenance Procedure Required", "Priority": "Mandatory, replace all with this type as a unit", "Procedure": "BMC0002" }, { "FRU Type": "Normal Hardware FRU", "Priority": "Medium Priority", "Location Code": "xxxx", --> Boot processor "Part Number": "xxxx", "CCIN": "xxxx", "Serial Number": "xxxx" }, { "FRU Type": "Normal Hardware FRU", "Priority": "Lowest priority replacement", "Location Code": "xxxx", --> Planar "Part Number": "xxxx", "CCIN": "xxxx", "Serial Number": "xxxx" }, { "FRU Type": "Normal Hardware FRU", "Priority": "Lowest priority replacement", "Location Code": "xxxx", --> TPM "Part Number": "xxxx", "CCIN": "xxxx", "Serial Number": "xxxx" }] }
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I7e1a90f0b8ec0082f901158d98128f8740f70974
show more ...
|