1{
2    "$id": "http://redfish.dmtf.org/schemas/v1/PCIeFunction.v1_6_0.json",
3    "$ref": "#/definitions/PCIeFunction",
4    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5    "copyright": "Copyright 2014-2024 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6    "definitions": {
7        "Actions": {
8            "additionalProperties": false,
9            "description": "The available actions for this resource.",
10            "longDescription": "This type shall contain the available actions for this resource.",
11            "patternProperties": {
12                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
13                    "description": "This property shall specify a valid odata or Redfish property.",
14                    "type": [
15                        "array",
16                        "boolean",
17                        "integer",
18                        "number",
19                        "null",
20                        "object",
21                        "string"
22                    ]
23                }
24            },
25            "properties": {
26                "Oem": {
27                    "$ref": "#/definitions/OemActions",
28                    "description": "The available OEM-specific actions for this resource.",
29                    "longDescription": "This property shall contain the available OEM-specific actions for this resource.",
30                    "versionAdded": "v1_1_0"
31                }
32            },
33            "type": "object"
34        },
35        "DeviceClass": {
36            "enum": [
37                "UnclassifiedDevice",
38                "MassStorageController",
39                "NetworkController",
40                "DisplayController",
41                "MultimediaController",
42                "MemoryController",
43                "Bridge",
44                "CommunicationController",
45                "GenericSystemPeripheral",
46                "InputDeviceController",
47                "DockingStation",
48                "Processor",
49                "SerialBusController",
50                "WirelessController",
51                "IntelligentController",
52                "SatelliteCommunicationsController",
53                "EncryptionController",
54                "SignalProcessingController",
55                "ProcessingAccelerators",
56                "NonEssentialInstrumentation",
57                "Coprocessor",
58                "UnassignedClass",
59                "Other"
60            ],
61            "enumDescriptions": {
62                "Bridge": "A bridge.",
63                "CommunicationController": "A communication controller.",
64                "Coprocessor": "A coprocessor.",
65                "DisplayController": "A display controller.",
66                "DockingStation": "A docking station.",
67                "EncryptionController": "An encryption controller.",
68                "GenericSystemPeripheral": "A generic system peripheral.",
69                "InputDeviceController": "An input device controller.",
70                "IntelligentController": "An intelligent controller.",
71                "MassStorageController": "A mass storage controller.",
72                "MemoryController": "A memory controller.",
73                "MultimediaController": "A multimedia controller.",
74                "NetworkController": "A network controller.",
75                "NonEssentialInstrumentation": "A non-essential instrumentation.",
76                "Other": "Other class.  The function Class Code needs to be verified.",
77                "ProcessingAccelerators": "A processing accelerators.",
78                "Processor": "A processor.",
79                "SatelliteCommunicationsController": "A satellite communications controller.",
80                "SerialBusController": "A serial bus controller.",
81                "SignalProcessingController": "A signal processing controller.",
82                "UnassignedClass": "An unassigned class.",
83                "UnclassifiedDevice": "An unclassified device.",
84                "WirelessController": "A wireless controller."
85            },
86            "type": "string"
87        },
88        "FunctionProtocol": {
89            "enum": [
90                "PCIe",
91                "CXL"
92            ],
93            "enumDescriptions": {
94                "CXL": "A PCIe function supporting CXL extensions.",
95                "PCIe": "A standard PCIe function."
96            },
97            "type": "string"
98        },
99        "FunctionType": {
100            "enum": [
101                "Physical",
102                "Virtual"
103            ],
104            "enumDescriptions": {
105                "Physical": "A physical PCIe function.",
106                "Virtual": "A virtual PCIe function."
107            },
108            "type": "string"
109        },
110        "Links": {
111            "additionalProperties": false,
112            "description": "The links to other resources that are related to this resource.",
113            "longDescription": "This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
114            "patternProperties": {
115                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
116                    "description": "This property shall specify a valid odata or Redfish property.",
117                    "type": [
118                        "array",
119                        "boolean",
120                        "integer",
121                        "number",
122                        "null",
123                        "object",
124                        "string"
125                    ]
126                }
127            },
128            "properties": {
129                "CXLLogicalDevice": {
130                    "anyOf": [
131                        {
132                            "$ref": "http://redfish.dmtf.org/schemas/v1/CXLLogicalDevice.json#/definitions/CXLLogicalDevice"
133                        },
134                        {
135                            "type": "null"
136                        }
137                    ],
138                    "description": "The link to the CXL logical device to which this function is assigned.",
139                    "longDescription": "This property shall contain a link to a resource of type `CXLLogicalDevice` that represents the CXL logical device to which this PCIe function is assigned.",
140                    "readonly": true,
141                    "versionAdded": "v1_5_0"
142                },
143                "Drives": {
144                    "description": "An array of links to the drives that this PCIe function produces.",
145                    "items": {
146                        "$ref": "http://redfish.dmtf.org/schemas/v1/Drive.json#/definitions/Drive"
147                    },
148                    "longDescription": "This property shall contain an array of links to resources of type `Drive` that represent the drives associated with this PCIe function.",
149                    "readonly": true,
150                    "type": "array"
151                },
152                "Drives@odata.count": {
153                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
154                },
155                "EthernetInterfaces": {
156                    "description": "An array of links to the Ethernet interfaces that this PCIe function produces.",
157                    "items": {
158                        "$ref": "http://redfish.dmtf.org/schemas/v1/EthernetInterface.json#/definitions/EthernetInterface"
159                    },
160                    "longDescription": "This property shall contain an array of links to resources of type `EthernetInterface` that represent the network interfaces associated with this PCIe function.",
161                    "readonly": true,
162                    "type": "array"
163                },
164                "EthernetInterfaces@odata.count": {
165                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
166                },
167                "MemoryDomains": {
168                    "description": "An array of links to the memory domains that the PCIe function produces.",
169                    "items": {
170                        "$ref": "http://redfish.dmtf.org/schemas/v1/MemoryDomain.json#/definitions/MemoryDomain"
171                    },
172                    "longDescription": "This property shall contain an array of links to resources of type `MemoryDomain` that represent the memory domains associated with this PCIe function.",
173                    "readonly": true,
174                    "type": "array",
175                    "versionAdded": "v1_5_0"
176                },
177                "MemoryDomains@odata.count": {
178                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
179                },
180                "NetworkDeviceFunctions": {
181                    "description": "An array of links to the network device functions that the PCIe function produces.",
182                    "items": {
183                        "$ref": "http://redfish.dmtf.org/schemas/v1/NetworkDeviceFunction.json#/definitions/NetworkDeviceFunction"
184                    },
185                    "longDescription": "This property shall contain an array of links to resources of type `NetworkDeviceFunction` that represent the network device functions associated with this PCIe function.",
186                    "readonly": true,
187                    "type": "array",
188                    "versionAdded": "v1_2_0"
189                },
190                "NetworkDeviceFunctions@odata.count": {
191                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
192                },
193                "Oem": {
194                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
195                    "description": "The OEM extension property.",
196                    "longDescription": "This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."
197                },
198                "PCIeDevice": {
199                    "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeDevice.json#/definitions/PCIeDevice",
200                    "description": "The link to the PCIe device on which this function resides.",
201                    "longDescription": "This property shall contain a link to a resource of type `PCIeDevice` that represents the PCIe devices on which this function resides.",
202                    "readonly": true
203                },
204                "Processor": {
205                    "anyOf": [
206                        {
207                            "$ref": "http://redfish.dmtf.org/schemas/v1/Processor.json#/definitions/Processor"
208                        },
209                        {
210                            "type": "null"
211                        }
212                    ],
213                    "description": "The link to a processor that is hosted on this PCIe function.",
214                    "longDescription": "This property shall link to a resource of type `Processor` that represents the processor that is hosted on this PCIe function.",
215                    "readonly": true,
216                    "versionAdded": "v1_4_0"
217                },
218                "StorageControllers": {
219                    "description": "An array of links to the storage controllers that this PCIe function produces.",
220                    "items": {
221                        "$ref": "http://redfish.dmtf.org/schemas/v1/Storage.json#/definitions/StorageController"
222                    },
223                    "longDescription": "This property shall contain an array of links to referenceable members of type `StorageController` that represent the storage controllers associated with this PCIe function.",
224                    "readonly": true,
225                    "type": "array"
226                },
227                "StorageControllers@odata.count": {
228                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
229                }
230            },
231            "type": "object"
232        },
233        "OemActions": {
234            "additionalProperties": true,
235            "description": "The available OEM-specific actions for this resource.",
236            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
237            "patternProperties": {
238                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
239                    "description": "This property shall specify a valid odata or Redfish property.",
240                    "type": [
241                        "array",
242                        "boolean",
243                        "integer",
244                        "number",
245                        "null",
246                        "object",
247                        "string"
248                    ]
249                }
250            },
251            "properties": {},
252            "type": "object"
253        },
254        "PCIeFunction": {
255            "additionalProperties": false,
256            "description": "The `PCIeFunction` schema describes the properties of a PCIe function that is attached to a system.",
257            "longDescription": "This resource shall represent a PCIe function in a Redfish implementation.",
258            "patternProperties": {
259                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
260                    "description": "This property shall specify a valid odata or Redfish property.",
261                    "type": [
262                        "array",
263                        "boolean",
264                        "integer",
265                        "number",
266                        "null",
267                        "object",
268                        "string"
269                    ]
270                }
271            },
272            "properties": {
273                "@odata.context": {
274                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
275                },
276                "@odata.etag": {
277                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
278                },
279                "@odata.id": {
280                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
281                },
282                "@odata.type": {
283                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
284                },
285                "Actions": {
286                    "$ref": "#/definitions/Actions",
287                    "description": "The available actions for this resource.",
288                    "longDescription": "This property shall contain the available actions for this resource.",
289                    "versionAdded": "v1_1_0"
290                },
291                "BusNumber": {
292                    "description": "The bus number of this PCIe function.",
293                    "longDescription": "This property shall contain the PCIe bus number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
294                    "pattern": "^0[xX][0-9a-fA-F]{2}$",
295                    "readonly": true,
296                    "type": [
297                        "string",
298                        "null"
299                    ],
300                    "versionAdded": "v1_6_0"
301                },
302                "ClassCode": {
303                    "description": "The Class Code of this PCIe function.",
304                    "longDescription": "This property shall contain the PCI Class Code, Subclass, and Programming Interface of the PCIe device function in the order listed.",
305                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){3}$",
306                    "readonly": true,
307                    "type": [
308                        "string",
309                        "null"
310                    ]
311                },
312                "Description": {
313                    "anyOf": [
314                        {
315                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
316                        },
317                        {
318                            "type": "null"
319                        }
320                    ],
321                    "readonly": true
322                },
323                "DeviceClass": {
324                    "$ref": "#/definitions/DeviceClass",
325                    "description": "The class for this PCIe function.",
326                    "longDescription": "This property shall contain the device class of the PCIe device function, such as storage, network, or memory.",
327                    "readonly": true
328                },
329                "DeviceId": {
330                    "description": "The Device ID of this PCIe function.",
331                    "longDescription": "This property shall contain the PCI Device ID of the PCIe device function with the most significant byte shown first.",
332                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
333                    "readonly": true,
334                    "type": [
335                        "string",
336                        "null"
337                    ]
338                },
339                "DeviceNumber": {
340                    "description": "The device number of this PCIe function.",
341                    "longDescription": "This property shall contain the PCIe device number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
342                    "pattern": "^0[xX][0-1][0-9a-fA-F]{1}$",
343                    "readonly": true,
344                    "type": [
345                        "string",
346                        "null"
347                    ],
348                    "versionAdded": "v1_6_0"
349                },
350                "Enabled": {
351                    "description": "An indication of whether this PCIe device function is enabled.",
352                    "longDescription": "The value of this property shall indicate if this PCIe device function is enabled.",
353                    "readonly": false,
354                    "type": "boolean",
355                    "versionAdded": "v1_3_0"
356                },
357                "FunctionId": {
358                    "description": "The PCIe function number.",
359                    "longDescription": "This property shall contain the PCIe function number within a given PCIe device.",
360                    "readonly": true,
361                    "type": [
362                        "integer",
363                        "null"
364                    ]
365                },
366                "FunctionNumber": {
367                    "description": "The function number of this PCIe function.",
368                    "longDescription": "This property shall contain the PCIe function number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
369                    "pattern": "^0[xX][0-7]$",
370                    "readonly": true,
371                    "type": [
372                        "string",
373                        "null"
374                    ],
375                    "versionAdded": "v1_6_0"
376                },
377                "FunctionProtocol": {
378                    "anyOf": [
379                        {
380                            "$ref": "#/definitions/FunctionProtocol"
381                        },
382                        {
383                            "type": "null"
384                        }
385                    ],
386                    "description": "The PCIe function protocol.",
387                    "longDescription": "This property shall contain the protocol supported by this PCIe function.",
388                    "readonly": true,
389                    "versionAdded": "v1_5_0"
390                },
391                "FunctionType": {
392                    "$ref": "#/definitions/FunctionType",
393                    "description": "The type of the PCIe function.",
394                    "longDescription": "This property shall contain the function type of the PCIe device function such as physical or virtual.",
395                    "readonly": true
396                },
397                "Id": {
398                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
399                    "readonly": true
400                },
401                "Links": {
402                    "$ref": "#/definitions/Links",
403                    "description": "The links to other resources that are related to this resource.",
404                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
405                },
406                "Name": {
407                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
408                    "readonly": true
409                },
410                "Oem": {
411                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
412                    "description": "The OEM extension property.",
413                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
414                },
415                "RevisionId": {
416                    "description": "The Revision ID of this PCIe function.",
417                    "longDescription": "This property shall contain the PCI Revision ID of the PCIe device function.",
418                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){1}$",
419                    "readonly": true,
420                    "type": [
421                        "string",
422                        "null"
423                    ]
424                },
425                "SegmentNumber": {
426                    "description": "The segment number of this PCIe function.",
427                    "longDescription": "This property shall contain the PCIe segment number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
428                    "pattern": "^0[xX][0-9a-fA-F]{4}$",
429                    "readonly": true,
430                    "type": [
431                        "string",
432                        "null"
433                    ],
434                    "versionAdded": "v1_6_0"
435                },
436                "Status": {
437                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
438                    "description": "The status and health of the resource and its subordinate or dependent resources.",
439                    "longDescription": "This property shall contain any status or health properties of the resource."
440                },
441                "SubsystemId": {
442                    "description": "The Subsystem ID of this PCIe function.",
443                    "longDescription": "This property shall contain the PCI Subsystem ID of the PCIe device function with the most significant byte shown first.",
444                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
445                    "readonly": true,
446                    "type": [
447                        "string",
448                        "null"
449                    ]
450                },
451                "SubsystemVendorId": {
452                    "description": "The Subsystem Vendor ID of this PCIe function.",
453                    "longDescription": "This property shall contain the PCI Subsystem Vendor ID of the PCIe device function with the most significant byte shown first.",
454                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
455                    "readonly": true,
456                    "type": [
457                        "string",
458                        "null"
459                    ]
460                },
461                "VendorId": {
462                    "description": "The Vendor ID of this PCIe function.",
463                    "longDescription": "This property shall contain the PCI Vendor ID of the PCIe device function with the most significant byte shown first.",
464                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
465                    "readonly": true,
466                    "type": [
467                        "string",
468                        "null"
469                    ]
470                }
471            },
472            "required": [
473                "@odata.id",
474                "@odata.type",
475                "Id",
476                "Name"
477            ],
478            "type": "object"
479        }
480    },
481    "language": "en",
482    "owningEntity": "DMTF",
483    "release": "2024.1",
484    "title": "#PCIeFunction.v1_6_0.PCIeFunction"
485}