| 3132dace | 07-Oct-2025 |
Harshit Aghera <haghera@nvidia.com> |
Fabric: add support for PCIe Switch Port URI
This patch enable support for following properties for Port of a PCIe Switch. [1] - PortProtocol - PortType - CurrentSpeedGbps - ActiveWidth
One of the
Fabric: add support for PCIe Switch Port URI
This patch enable support for following properties for Port of a PCIe Switch. [1] - PortProtocol - PortType - CurrentSpeedGbps - ActiveWidth
One of the devices that gets enabled with this patch is Nvidia ConnectX devices, which are network cards featuring an integrated PCIe switch. These devices combine both PCIe ports and network ports in a single unit. Since such devices don't strictly qualify as Fabric Adapters, the Switch URI is used instead of the FabricAdapter URI.
Port schema only allows certain URIs as Port URI. URI /redfish/v1/Fabrics/{FabricId}/Switches/{SwitchId}/Ports/{PortId} seems most appropriate choice for PCIe Switch Port. [1]
The Fabric resource is modeled similarly to the System resource, meaning that only one Fabric resource will exist for each BMC. Route handler for collections and each individual components are added in this patch for each URI resource under /redfish/v1/Fabrics.
DBus Interface "xyz.openbmc_project.Inventory.Item.PCIeSwitch" is used to identify the Switch resources. Association between Switch and Port is `connecting` and `connected_to`.
Feature like Port Metrics properties (for PCIe Error Counters) can be added in future at Port Metric URI.
dbus-sensors patches - https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84079 https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/83202
Tested: Build an image for nvl32-obmc machine with the following patch cherry picked.
https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84079 https://gerrit.openbmc.org/c/openbmc/openbmc/+/85490
The openbmc patch cherry-picks the following patches that are currently under review.
``` 1. device tree https://lore.kernel.org/all/aRbLqH8pLWCQryhu@molberding.nvidia.com/ 2. mctpd patches https://github.com/CodeConstruct/mctp/pull/85 3. u-boot changes https://lore.kernel.org/openbmc/20251121-msx4-v1-0-fc0118b666c1@nvidia.com/T/#t 4. kernel changes as specified in the openbmc patch (for espi) 5. entity-manager changes https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85455 6. platform-init changes https://gerrit.openbmc.org/c/openbmc/platform-init/+/85456 7. spi changes https://lore.kernel.org/all/20251121-w25q01jv_fixup-v1-1-3d175050db73@nvidia.com/ ```
redfish service validator is passing.
``` $ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/ { "@odata.id": "/redfish/v1/Fabrics", "@odata.type": "#FabricCollection.FabricCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric" } ], "Members@odata.count": 1, "Name": "Fabric Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/ { "@odata.id": "/redfish/v1/Fabrics/fabric", "@odata.type": "#Fabric.v1_2_0.Fabric", "Id": "fabric", "Name": "fabric Fabric", "Switches": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches" } }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches", "@odata.type": "#SwitchCollection.SwitchCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_1" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_2" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_3" } ], "Members@odata.count": 4, "Name": "fabric Switch Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0 { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0", "@odata.type": "#Switch.v1_7_0.Switch", "Id": "Nvidia_ConnectX_0", "Name": "Nvidia_ConnectX_0", "Ports": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports" }, "Status": { "Health": "OK", "State": "Enabled" } }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports", "@odata.type": "#PortCollection.PortCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/DOWN_0" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/DOWN_1" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0" } ], "Members@odata.count": 3, "Name": "Nvidia_ConnectX_0 Port Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0", "@odata.type": "#Port.v1_4_0.Port", "ActiveWidth": 8, "CurrentSpeedGbps": 32.0, "Id": "UP_0", "Metrics": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0/Metrics" }, "Name": "Nvidia_ConnectX_0 UP_0 Port", "PortProtocol": "PCIe", "PortType": "UpstreamPort", "Status": { "Health": "OK", "State": "Enabled" } }% ```
[1]: https://redfish.dmtf.org/schemas/v1/Port_v1.xml
Change-Id: I52f4ca62b4953f6196c589e340602a0d7885d9c1 Signed-off-by: Harshit Aghera <haghera@nvidia.com>
show more ...
|
| 64fe8020 | 28-Jan-2026 |
Ed Tanous <etanous@nvidia.com> |
Do not allow data beyond the trailer
There is nothing in the multipart spec[1] that states that a parser should allow any bytes after a multipart payload.
Several unit tests have a \r\n after their
Do not allow data beyond the trailer
There is nothing in the multipart spec[1] that states that a parser should allow any bytes after a multipart payload.
Several unit tests have a \r\n after their boundary condition that previously the parser just ignored. Testing shows this is fairly normal, so handle both cases still, but if any other characters show up, fail the parse.
Unit test is also simplified to be more clear.
Tested: Unit test coverage
[1] https://datatracker.ietf.org/doc/html/rfc7578#section-4.1
Change-Id: I16643c61867708886cc87c236447ec1c19bf934f Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 11399367 | 20-Jan-2026 |
Ed Tanous <etanous@nvidia.com> |
Remove old login routines
At one point the bmcweb /login route has supported a bunch of different login mechanisms: 1. Sending username and password via headers, mirroring a non-openbmc implement
Remove old login routines
At one point the bmcweb /login route has supported a bunch of different login mechanisms: 1. Sending username and password via headers, mirroring a non-openbmc implementation that has never been used in openbmc, and predates this repo being called bmcweb. 2. Sending username and password under a "data" object, mirroring phosphor-rest json webserver. 3. Sending username and password as an http multipart as part of the initial multipart parser patch. 4. Sending a json payload as {"username": <>, "password": <>}
This commit removes all but the final login mechanism. Redfish login has been used exclusively for many many years, and only the webui used 4 above up until a few years ago in commit 1ff8e89fd2397c468ab0237158e5aeeff2692413
Keeping one viable login mechanism that's not Redfish is useful in the future if there are those that want to disable Redfish. All others could potentially be security issues, so keeping the code simple and conscise here is ideal.
This commit does not attempt to make a backwards compatibility path, under the assumption that other than 4, none of the other code was ever used in any real capacity. If we find that to not be true, we can add back the portions where we need compatibility, but this seems unlikely.
Tested: WIP
Change-Id: I04b4968836f0f824f46b3dff180ad92feb16967c Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 7196de92 | 20-Jan-2026 |
Gunnar Mills <gmills@us.ibm.com> |
Fix CI: Reformat using Black 26.1.0
CI is failing due to the formatting of scripts/parse_registries.py. Run Black.
black -l 79 <filename>
Current: Running black (black, 26.1.0 (compiled: no))
Fix CI: Reformat using Black 26.1.0
CI is failing due to the formatting of scripts/parse_registries.py. Run Black.
black -l 79 <filename>
Current: Running black (black, 26.1.0 (compiled: no)) reformatted scripts/parse_registries.py
Before: Running black (black, 25.12.0 (compiled: no))
Tested: Visual only.
Change-Id: I08051019760994a095eeedab2ae0d8c91984e979 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
show more ...
|
| 6d1de659 | 15-Jan-2026 |
Gunnar Mills <gmills@us.ibm.com> |
DEVELOPING.md: Clean up CMake reference
Switched to Meson years ago, this CMakeLists.txt got missed.
Tested: Doc change only. Copied into https://stackedit.io/ to make sure it formatted okay.
Chan
DEVELOPING.md: Clean up CMake reference
Switched to Meson years ago, this CMakeLists.txt got missed.
Tested: Doc change only. Copied into https://stackedit.io/ to make sure it formatted okay.
Change-Id: I66c3ac5f307b33bc65b92028a0b4c7d254a18e0c Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
show more ...
|
| b84653e7 | 08-Jan-2026 |
Chandramohan Harkude <chandramohan.harkude@gmail.com> |
Fix Bmcweb crash due to HTTP2 connection reset
Changes added : handle dangling pointer in response completion handler
Problem : When high number of connections made to BMC and suddenly reset those
Fix Bmcweb crash due to HTTP2 connection reset
Changes added : handle dangling pointer in response completion handler
Problem : When high number of connections made to BMC and suddenly reset those connections, crash was observed in bmcweb.
Fix : Since the connection already torn but bmcweb trying to close those connections in response completion handler causing the crash. Added code to handle the closed or reset connections
Tested :
made around 200 connections and reset them immediately, repeated these steps around 15 times no crash observed
Change-Id: I03b5fd563275c4138a6eb004e09d277547af9692 Signed-off-by: Chandra Harkude <chandramohan.harkude@gmail.com>
show more ...
|
| e777eff2 | 30-Dec-2025 |
Joey Berkovitz <jberkovitz@coreweave.com> |
Enable TCP keepalives for HTTP connections
This fix enables TCP keepalives at the OS layer. It also enables a 15 minute deadline timer at the bmcweb level when waiting on an idle HTTP keepalive conn
Enable TCP keepalives for HTTP connections
This fix enables TCP keepalives at the OS layer. It also enables a 15 minute deadline timer at the bmcweb level when waiting on an idle HTTP keepalive connection.
Tested: romulus image running bmcweb, start connections with keepalive, block incoming connections `iptables -P INPUT DROP`, validate that sockets eventually die and are tracked with keepalives `ss -nto`
Change-Id: I8f5040440348c060dae1d0516ec202a0e4dc349e Signed-off-by: Joey Berkovitz <joey@berkovitz.us>
show more ...
|