SUSE Support

Here When You Need Us

Bonding slaves by PCI bus order do not work after update to kernel >=4.8

This document (7023699) is provided subject to the disclaimer at the end of this document.

Environment


SUSE Linux Enterprise Server 12 Service Pack 4 (SLES 12 SP4)
SUSE Linux Enterprise Server 15

Situation

When bonding is in use on a Power PC system and PCI Bus ID naming is used for creating udev rules for bonding slaves, after a update to kernel >= 4.8.x it is noticed that the bonding device does not work anymore.
This can only happen if you update from <= SLES 12 SP3 to >= SLES 12 SP4
On new installations of SLES 12 SP4 or SLES 15 this will not be an issue.
 

Resolution

To change to the new PCI Bus ID naming it is needed to modify the udev rules for network devices ->  /etc/udev/rules.d/70-persistent-net.rules
 
Following script is needed to reorder the PCI IDs. It is a two pass script.
The first pass need to be run with a kernel < 4.8.x or with kernel >= 4.12.14-95.13.1 and kernel boot option disable_fixed_phb. The second pass need to be run with a kernel >= 4.8.x

Script to reorder the PCI IDs

It is not recommended to use this script in an unattended upgrade. If there is not other way around following approach might be used.
  • run the first pass of the script prior doing the upgrade.
  • create a temporary service to trigger the second pass of the script 
---------/etc/systemd/system/fix-pciids.service-----
[Unit]
After=multi-user.target

[Service]
Type=oneshot
ExecStart=<path to>pci-reorder-2pass.sh
ExecStartPost=/usr/bin/systemctl disable fix-pciids.service
ExecStartPost=/usr/bin/rm /etc/systemd/system/fix-pciids.service
ExecStartPost=/usr/bin/systemctl reboot

[Install]
WantedBy=default.target
----------------------------------------------------------
  • replace <path to> with the path where the pci-reorder2pass.sh script has been placed on the system
  • enable the service with
    • systemctl daemon-reload
    • systemctl enable fix-pciids.service
  • now do the upgrade
The service will remove itself once it has been started successful. This is expected to happen if the second pass of the pci-reorder-2pass.sh script has been run without any issues.

If it is not possible for now to make this changes, a kernel update has been released to switch back to old PCI Bus ID naming.
Make sure kernel is >= 4.12.14-95.13.1 and use kernel boot parameter disable_fixed_phb

ATTENTION: The kernel parameter fix will not be carried over to SLE15, so if there is a plan to update some time from SLE12 to SLE15, already consider changing to the new PCI Bus ID naming for flawless update.

Cause

The issue is caused by a change in upstream kernel >= 4.8 where the PCI numbering has been changed from sequential order, starting from 0000, to open firmware pci naming order.

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:7023699
  • Creation Date: 04-Feb-2019
  • Modified Date:08-Jul-2020
    • SUSE Linux Enterprise Server

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.