The Physical Function Baseband Device Configuration Using pf_bb_config
- WHAT?
The
pf_bb_configtool utilizes given configuration files to customize and control the physical functions of various baseband devices.- WHY?
This article focuses on installation and usage of the
pf_bb_configtool.- EFFORT
It takes approximately 10 minutes to read the article.
- GOAL
You will know how to configure broadband devices and how to enable direct access to hardware for virtual machines.
- REQUIREMENTS
A registered running instance of SUSE Linux Micro
1 What is pf_bb_config? #
pf_bb_config is a tool that enables you to configure broadband devices on
your host system. The tool accesses the configuration space and sets parameters using
memory-mapped I/O (MMIO) read and write operations.
The particular broadband device configuration parameters are parsed from a passed configuration file specific to that device.
2 Installing the pf_bb_config tool #
The physical function broadband devices configuration tool is not delivered as part of the pre-built images. To use it, you need to install it first:
Refresh repositories:
>sudozypper refInstall the
pf-bb-configpackage:>sudotransactional-update pkg install pf-bb-configIn certain cases, you may need to use the Data Plane Development Kit. To install it, run:
>sudotransactional-update --continue pkg install dpdkReboot the system:
>sudoreboot
3 Usage of pf_bb_config #
To run the pf_bb_config tool, use the following command:
#pf_bb_config DEVICE_NAME [-h] [-c PATH_TO_CONFIG_FILE] [-p PCI_ID] [-v VFIO_TOKEN] [-f FFT_LUT_FILE]
Where the arguments and options have the following meaning:
- DEVICE_NAME
The device name is mandatory.
- -h
To print out help.
- -c PATH_TO_CONFIG_FILE
Passes the configuration file to use for the particular BB device. Configuration examples are installed to
/opt/pf-bb-config/. For details regarding these examples, refer to Section 3.2, “Configuration examples description”.- -p PCI_ID
Specify the PCI ID of the device to be configured.
- -v VFIO_TOKEN
Provide a VFIO token that can be obtained using the
uuidcommand:#uuid=$(cat /proc/sys/kernel/random/uuid)Then, to display it:
#echo $uuid- -f FFT_LUT_FILE
Using the option, you can provide an alternative FFT LUT file. If not specified, the default one is used.
3.1 Using the vfio-pci module #
To enable your device's direct access to hardware resources, you need to use the vfio-pci driver. Before proceeding further, ensure that the following conditions are met:
The vfio-pci module is built in.
Intel™ VT-d is enabled in kernel and UEFI and implemented in IOMMU.
IOMMU is enabled on runtime. To check that, run the command:
>sudodmesg | grep "DMAR: IOMMU"DPDK is installed.
If the above conditions are met, you can enable the vfio-pci driver as described below.
The vfio-pci module is loaded automatically during boot. You just need to pass parameters to the module. You can do that in three ways:
pass the following parameters on the kernel CLI:
vfio_pci.enable_sriov=1 vfio_pci.disable_idle_d3=1
set the required parameters after the system is fully booted:
#echo 1 | sudo tee /sys/module/vfio_pci/parameters/enable_sriov#echo 1 | sudo tee /sys/module/vfio_pci/parameters/disable_idle_d3or you can use
modprobeto load the module with these parameters:#modprobe vfio-pci enable_sriov=1 disable_idle_d3=1
Bind the PF with the vfio-pci module:
>sudoPATH_TO_DPDK/usertools/dpdk-devbind.py --bind=vfio-pci $PCI_DRIVER_ADDRESSConfigure the device using the
pf_bb_configtool:>sudo./pf_bb_config ACC100 -v 00112233-4455-6677-8899-aabbccddeeff -c acc100/acc100_config_2vf_4g5g.cfgFor example, create two VFs on the device:
>sudoecho 2 | sudo tee /sys/bus/pci/devices/0000:$PF_PCI_DEVICE_ADDRESS/sriov_numvfs
3.2 Configuration examples description #
You can find the broadband devices confiration examples in
/opt/pf-bb-config. Each device has a specific set of configuration files,
however, all configuration files follow the same format.
[section name] key = value ; This is a comment.
The following section provides details regarding ACC100/ACC200 accelerator.
3.2.1 The ACC100/ACC200 configuration #
In the examples /opt/pf-bb-config/acc*, you can adjust the following attributes:
pf_mode_enIf set to 1, all queues on the device are assigned to physical functions (PF) and none are assigned to virtual functions (VF). PF and VF are mutually exclusive.
num_qgroupsThere are eight queue groups available that you can allocate to all operations.
num_vf_bundlesChoose a value between 1 and 16. The available DDR is then split.
num_aqs_per_groupsDefines the maximum count of atomic queues in a single queue group.
4 Legal Notice #
Copyright© 2006–2025 SUSE LLC and contributors. All rights reserved.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or (at your option) version 1.3; with the Invariant Section being this copyright notice and license. A copy of the license version 1.2 is included in the section entitled “GNU Free Documentation License”.
For SUSE trademarks, see https://www.suse.com/company/legal/. All other third-party trademarks are the property of their respective owners. Trademark symbols (®, ™ etc.) denote trademarks of SUSE and its affiliates. Asterisks (*) denote third-party trademarks.
All information found in this book has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither SUSE LLC, its affiliates, the authors, nor the translators shall be held liable for possible errors or the consequences thereof.