xref: /openbmc/bmcweb/redfish-core/schema/dmtf/json-schema/PCIeFunction.v1_7_0.json (revision 9dec964e45fb11fd495b5e24f2a9e1801a3eb7ba)
1{
2    "$id": "http://redfish.dmtf.org/schemas/v1/PCIeFunction.v1_7_0.json",
3    "$ref": "#/definitions/PCIeFunction",
4    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5    "copyright": "Copyright 2014-2025 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                "ARIFunctionNumber": {
286                    "description": "The ARI (Alternative Routing-ID Interpretation) function number of this PCIe function.",
287                    "longDescription": "This property shall contain the PCIe ARI (Alternative Routing-ID Interpretation) function number of the PCIe device function.  This property shall not be present if `ARIModeEnabled` contains `false` or is not supported.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
288                    "pattern": "^0[xX][0-9a-fA-F]{2}$",
289                    "readonly": true,
290                    "type": [
291                        "string",
292                        "null"
293                    ],
294                    "versionAdded": "v1_7_0"
295                },
296                "ARIModeEnabled": {
297                    "description": "An indication of whether PCIe ARI (Alternative Routing-ID Interpretation) is enabled for this PCIe function.",
298                    "longDescription": "This property shall indicate whether PCIe ARI (Alternative Routing-ID Interpretation) is enabled for this PCIe function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
299                    "readonly": true,
300                    "type": [
301                        "boolean",
302                        "null"
303                    ],
304                    "versionAdded": "v1_7_0"
305                },
306                "Actions": {
307                    "$ref": "#/definitions/Actions",
308                    "description": "The available actions for this resource.",
309                    "longDescription": "This property shall contain the available actions for this resource.",
310                    "versionAdded": "v1_1_0"
311                },
312                "BusNumber": {
313                    "description": "The bus number of this PCIe function.",
314                    "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.",
315                    "pattern": "^0[xX][0-9a-fA-F]{2}$",
316                    "readonly": true,
317                    "type": [
318                        "string",
319                        "null"
320                    ],
321                    "versionAdded": "v1_6_0"
322                },
323                "ClassCode": {
324                    "description": "The Class Code of this PCIe function.",
325                    "longDescription": "This property shall contain the PCI Class Code, Subclass, and Programming Interface of the PCIe device function in the order listed.",
326                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){3}$",
327                    "readonly": true,
328                    "type": [
329                        "string",
330                        "null"
331                    ]
332                },
333                "Description": {
334                    "anyOf": [
335                        {
336                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
337                        },
338                        {
339                            "type": "null"
340                        }
341                    ],
342                    "readonly": true
343                },
344                "DeviceClass": {
345                    "$ref": "#/definitions/DeviceClass",
346                    "description": "The class for this PCIe function.",
347                    "longDescription": "This property shall contain the device class of the PCIe device function, such as storage, network, or memory.",
348                    "readonly": true
349                },
350                "DeviceId": {
351                    "description": "The Device ID of this PCIe function.",
352                    "longDescription": "This property shall contain the PCI Device ID of the PCIe device function with the most significant byte shown first.",
353                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
354                    "readonly": true,
355                    "type": [
356                        "string",
357                        "null"
358                    ]
359                },
360                "DeviceNumber": {
361                    "description": "The device number of this PCIe function.",
362                    "longDescription": "This property shall contain the PCIe device number of the PCIe device function.  If `ARIModeEnabled` contains `true`, this property shall contain the value of the `ARIFunctionNumber` property shifted right three bits.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
363                    "pattern": "^0[xX][0-1][0-9a-fA-F]{1}$",
364                    "readonly": true,
365                    "type": [
366                        "string",
367                        "null"
368                    ],
369                    "versionAdded": "v1_6_0"
370                },
371                "Enabled": {
372                    "description": "An indication of whether this PCIe device function is enabled.",
373                    "longDescription": "The value of this property shall indicate if this PCIe device function is enabled.",
374                    "readonly": false,
375                    "type": "boolean",
376                    "versionAdded": "v1_3_0"
377                },
378                "FunctionId": {
379                    "description": "The PCIe function number.",
380                    "longDescription": "This property shall contain the PCIe function number within a given PCIe device.",
381                    "readonly": true,
382                    "type": [
383                        "integer",
384                        "null"
385                    ]
386                },
387                "FunctionNumber": {
388                    "description": "The function number of this PCIe function.",
389                    "longDescription": "This property shall contain the PCIe function number of the PCIe device function.  If `ARIModeEnabled` contains `true`, this property shall contain the lower three bits of the value of the `ARIFunctionNumber` property.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
390                    "pattern": "^0[xX][0-7]$",
391                    "readonly": true,
392                    "type": [
393                        "string",
394                        "null"
395                    ],
396                    "versionAdded": "v1_6_0"
397                },
398                "FunctionProtocol": {
399                    "anyOf": [
400                        {
401                            "$ref": "#/definitions/FunctionProtocol"
402                        },
403                        {
404                            "type": "null"
405                        }
406                    ],
407                    "description": "The PCIe function protocol.",
408                    "longDescription": "This property shall contain the protocol supported by this PCIe function.",
409                    "readonly": true,
410                    "versionAdded": "v1_5_0"
411                },
412                "FunctionType": {
413                    "$ref": "#/definitions/FunctionType",
414                    "description": "The type of the PCIe function.",
415                    "longDescription": "This property shall contain the function type of the PCIe device function such as physical or virtual.",
416                    "readonly": true
417                },
418                "Id": {
419                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
420                    "readonly": true
421                },
422                "Links": {
423                    "$ref": "#/definitions/Links",
424                    "description": "The links to other resources that are related to this resource.",
425                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
426                },
427                "Name": {
428                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
429                    "readonly": true
430                },
431                "Oem": {
432                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
433                    "description": "The OEM extension property.",
434                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
435                },
436                "RevisionId": {
437                    "description": "The Revision ID of this PCIe function.",
438                    "longDescription": "This property shall contain the PCI Revision ID of the PCIe device function.",
439                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){1}$",
440                    "readonly": true,
441                    "type": [
442                        "string",
443                        "null"
444                    ]
445                },
446                "SegmentNumber": {
447                    "description": "The segment number of this PCIe function.",
448                    "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.",
449                    "pattern": "^0[xX][0-9a-fA-F]{4}$",
450                    "readonly": true,
451                    "type": [
452                        "string",
453                        "null"
454                    ],
455                    "versionAdded": "v1_6_0"
456                },
457                "Status": {
458                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
459                    "description": "The status and health of the resource and its subordinate or dependent resources.",
460                    "longDescription": "This property shall contain any status or health properties of the resource."
461                },
462                "SubsystemId": {
463                    "description": "The Subsystem ID of this PCIe function.",
464                    "longDescription": "This property shall contain the PCI Subsystem ID of the PCIe device function with the most significant byte shown first.",
465                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
466                    "readonly": true,
467                    "type": [
468                        "string",
469                        "null"
470                    ]
471                },
472                "SubsystemVendorId": {
473                    "description": "The Subsystem Vendor ID of this PCIe function.",
474                    "longDescription": "This property shall contain the PCI Subsystem Vendor ID of the PCIe device function with the most significant byte shown first.",
475                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
476                    "readonly": true,
477                    "type": [
478                        "string",
479                        "null"
480                    ]
481                },
482                "VendorId": {
483                    "description": "The Vendor ID of this PCIe function.",
484                    "longDescription": "This property shall contain the PCI Vendor ID of the PCIe device function with the most significant byte shown first.",
485                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
486                    "readonly": true,
487                    "type": [
488                        "string",
489                        "null"
490                    ]
491                }
492            },
493            "required": [
494                "@odata.id",
495                "@odata.type",
496                "Id",
497                "Name"
498            ],
499            "type": "object"
500        }
501    },
502    "language": "en",
503    "owningEntity": "DMTF",
504    "release": "2025.4",
505    "title": "#PCIeFunction.v1_7_0.PCIeFunction"
506}