1description: >
2    Implement this to add system dump management.
3
4    System dumps are dump of the host memory and hardware states generated
5    during a failure in the host firmware. This can be a huge dump stored in the
6    host memory, the BMC doesn't store this dump but stream this dump to an
7    external client based on the offload request. Apart from system generated
8    system dump, users can also request for this kind of dump.
9
10properties:
11    - name: SourceDumpId
12      type: uint32
13      description: >
14          The dump id provided by the source of the dump. There are dumps which
15          get generated outside the BMC, like a system dump which gets generated
16          and stored in the host memory. All dumps will have a  unique id  but
17          when communicating to the source of the dump the SourceDumpId will be
18          used.
19    - name: Token
20      type: uint32
21      description: >
22          A token exchanged with an external firmware subsystem when creating a
23          dump outside of the BMC. This token can be used to identify the dump
24          entry once the collection is completed.
25    - name: SystemImpact
26      type: enum [self.SystemImpact]
27      default: Disruptive
28      description: >
29          System dumps can be broadly classified into two types based on their
30          impact on the system state. The first type, known as a 'disruptive'
31          dump, alters the system state. This kind of dump is typically
32          generated during a host crash, although it can also be manually
33          requested by a user. Despite its disruptive nature, this dump is able
34          to collect a lot of data, making it particularly useful for diagnosing
35          system crashes. The second type is a 'non-disruptive' dump. As the
36          name suggests, this dump is created without causing any disruption to
37          the system state.
38    - name: UserChallenge
39      type: string
40      description: >
41          On some host implementations a user-challenge need to be provided by
42          the user and it flows through BMC and up to the host as a part of the
43          dump request. Non-disruptive dumps consume significant host resources
44          and involve the collection of host memory data. To safeguard these
45          operations and ensure they are initiated only by authorized personnel,
46          the provided passphrase is employed. In some systems, an Access
47          Control List (ACL) file, provided through the Platform Level Data
48          Model (PLDM), is used. The host validates the provided user-challenge
49          against this ACL. If the user-challenge doesn't match any entry in the
50          ACL, the host will reject the dump request. This field is needed so
51          the host can check that only authorized users are allowed to perform
52          certain dump operations.
53    - name: DumpRequestStatus
54      type: enum[self.HostResponse]
55      description: >
56          The host will send a response code for each request to create a system
57          dump to indicate whether the request is successful or there is an
58          error.
59      default: Unknown
60
61enumerations:
62    - name: SystemImpact
63      description: Indicate the type of system dump
64      values:
65          - name: Disruptive
66            description: >
67                The system state will change with this type of dump collection
68          - name: NonDisruptive
69            description: >
70                The system state will not change with the collection
71    - name: HostResponse
72      description: >
73          These are the possible response codes from the host's after sending a
74          non-disruptive system dump request.
75      values:
76          - name: Unknown
77            description: >
78                The status of the request is unknown, or not initialized
79          - name: Requested
80            description: >
81                Requested for system dump and awaiting the host response
82          - name: Success
83            description: >
84                Successfully validated and accepted the request for a
85                non-disruptive system dump.
86          - name: ACLFileInvalid
87            description: >
88                Invalid Access Control List file, cannot validate the user to
89                start a non-disruptive system dump.
90          - name: UserChallengeInvalid
91            description: >
92                The user challenge provided is not valid
93          - name: PermissionDenied
94            description: >
95                The caller does not have enough privileges to execute the
96                requested non-disruptive system dump.
97