Re: [PATCH i-g-t 10/10] tools/vmtb: Platform enabling: PTL and BMG support

Bernatowicz, Marcin
2026-03-10T10:53:04Z

On 2/24/2026 8:50 AM, Adam Miszczak wrote:
> Add PCI Device IDs and example vGPU profiles for
> Panther Lake (PTL) and Battlemage (BMG).
> Remove unused ATS-M references.
>
> Signed-off-by: Adam Miszczak <adam.miszczak@linux.intel.com>
> ---
> tools/vmtb/bench/configurators/pci.py | 43 +++++---
> .../{Flex170.json => Bmg_g21_12.json} | 58 +++++------
> .../resources/vgpu_profiles/Ptl.json | 97 +++++++++++++++++++
> 3 files changed, 154 insertions(+), 44 deletions(-)
> rename tools/vmtb/vmm_flows/resources/vgpu_profiles/{Flex170.json => Bmg_g21_12.json} (73%)
> create mode 100644 tools/vmtb/vmm_flows/resources/vgpu_profiles/Ptl.json
>
> diff --git a/tools/vmtb/bench/configurators/pci.py b/tools/vmtb/bench/configurators/pci.py
> index 8e8afb138..0b524d3c2 100644
> --- a/tools/vmtb/bench/configurators/pci.py
> +++ b/tools/vmtb/bench/configurators/pci.py
> @@ -1,13 +1,13 @@
> # SPDX-License-Identifier: MIT
> -# Copyright © 2024 Intel Corporation
> +# Copyright © 2024-2026 Intel Corporation
>
> import enum
> import typing
>
>
> class GpuModel(str, enum.Enum):
> - ATSM150 = 'Arctic Sound M150 (ATS-M1)'
> - ATSM75 = 'Arctic Sound M75 (ATS-M3)'
> + PTL = 'Panther Lake (PTL)'
> + BMG = 'Battlemage (BMG)'
> Unknown = 'Unknown'
>
> def __str__(self) -> str:
> @@ -21,28 +21,41 @@ def get_gpu_model(pci_id: str) -> GpuModel:
>
> def get_vgpu_profiles_file(gpu_model: GpuModel) -> str:
> """Return vGPU profile definition JSON file for a given GPU model."""
> - if gpu_model == GpuModel.ATSM150:
> - vgpu_device_file = 'Flex170.json'
> - elif gpu_model == GpuModel.ATSM75:
> - vgpu_device_file = 'Flex140.json'
> + if gpu_model == GpuModel.PTL:
> + vgpu_device_file = 'Ptl.json'
> + elif gpu_model == GpuModel.BMG:
> + vgpu_device_file = 'Bmg_g21_12.json'
> else: # GpuModel.Unknown
> vgpu_device_file = 'N/A'
>
> return vgpu_device_file
>
>
> -# PCI Device IDs: ATS-M150 (M1)
> -_atsm150_pci_ids = {
> - '56C0': GpuModel.ATSM150,
> - '56C2': GpuModel.ATSM150
> +# PCI Device IDs: PTL
> +_ptl_pci_ids = {
> + 'B080': GpuModel.PTL,
> + 'B081': GpuModel.PTL,
> + 'B082': GpuModel.PTL,
> + 'B083': GpuModel.PTL,
> + 'B084': GpuModel.PTL,
> + 'B085': GpuModel.PTL,
> + 'B086': GpuModel.PTL,
> + 'B087': GpuModel.PTL,
> + 'B08F': GpuModel.PTL,
> + 'B090': GpuModel.PTL,
> + 'B0A0': GpuModel.PTL,
> + 'B0B0': GpuModel.PTL,
> + 'FD80': GpuModel.PTL,
> + 'FD81': GpuModel.PTL
> }
>
>
> -# PCI Device IDs: ATS-M75 (M3)
> -_atsm75_pci_ids = {
> - '56C1': GpuModel.ATSM75
> +# PCI Device IDs: BMG (G21 - VRAM: 12GB / other)
> +_bmg_pci_ids = {
> + 'E20B': GpuModel.BMG # B36 / 12GB
> }
>
>
> # All PCI Device IDs to GPU Device Names mapping
> -pci_ids: typing.Dict[str, GpuModel] = {**_atsm150_pci_ids, **_atsm75_pci_ids}
> +pci_ids: typing.Dict[str, GpuModel] = {**_ptl_pci_ids,
> + **_bmg_pci_ids}
> diff --git a/tools/vmtb/vmm_flows/resources/vgpu_profiles/Flex170.json b/tools/vmtb/vmm_flows/resources/vgpu_profiles/Bmg_g21_12.json
> similarity index 73%
> rename from tools/vmtb/vmm_flows/resources/vgpu_profiles/Flex170.json
> rename to tools/vmtb/vmm_flows/resources/vgpu_profiles/Bmg_g21_12.json
> index ff1fa7e20..75ca907ab 100644
> --- a/tools/vmtb/vmm_flows/resources/vgpu_profiles/Flex170.json
> +++ b/tools/vmtb/vmm_flows/resources/vgpu_profiles/Bmg_g21_12.json
> @@ -1,58 +1,58 @@
> {
> - "version": "1.1",
> + "version": "1.2",
> "PFResources": {
> "Default": "MinimumPFResources",
> "Profile": {
> "MinimumPFResources": {
> - "LocalMemoryEccOn": 402653184,
> - "LocalMemoryEccOff": 402653184,
> - "Contexts": 1024,
> + "LocalMemoryEccOn": 134217728,
> + "LocalMemoryEccOff": 134217728,
> + "Contexts": 256,
> "Doorbells": 16,
> - "GGTTSize": 268435456
> + "GGTTSize": 67108864
> }
> }
> },
> "vGPUResources": {
> "Default": null,
> "Profile": {
> - "Flex170_16": {
> + "Bmg_12": {
> "VFCount": 1,
> - "LocalMemoryEccOff": 16777216000,
> - "LocalMemoryEccOn": 2147483648,
> + "LocalMemoryEccOff": 12717129728,
> + "LocalMemoryEccOn": 12717129728,
> "Contexts": 1024,
> "Doorbells": 240,
> "GGTTSize": 4026531840
> },
> - "Flex170_8": {
> + "Bmg_6": {
> "VFCount": 2,
> - "LocalMemoryEccOff": 8388608000,
> - "LocalMemoryEccOn": 2147483648,
> + "LocalMemoryEccOff": 6341787648,
> + "LocalMemoryEccOn": 6341787648,
> "Contexts": 1024,
> "Doorbells": 120,
> "GGTTSize": 2013265920
> },
> - "Flex170_4": {
> - "VFCount": 4,
> - "LocalMemoryEccOff": 4194304000,
> - "LocalMemoryEccOn": 2147483648,
> + "Bmg_4": {
> + "VFCount": 3,
> + "LocalMemoryEccOff": 4211081216,
> + "LocalMemoryEccOn": 4211081216,
> "Contexts": 1024,
> - "Doorbells": 60,
> - "GGTTSize": 1006632960
> + "Doorbells": 80,
> + "GGTTSize": 1342177280
> },
> - "Flex170_2": {
> - "VFCount": 8,
> - "LocalMemoryEccOff": 2097152000,
> - "LocalMemoryEccOn": 1073741824,
> + "Bmg_2": {
> + "VFCount": 6,
> + "LocalMemoryEccOff": 2080374784,
> + "LocalMemoryEccOn": 2080374784,
> "Contexts": 1024,
> - "Doorbells": 30,
> - "GGTTSize": 503316480
> + "Doorbells": 40,
> + "GGTTSize": 671088640
> },
> - "Flex170_1": {
> - "VFCount": 16,
> - "LocalMemoryEccOff": 1048576000,
> - "LocalMemoryEccOn": 536870912,
> + "Bmg_1": {
> + "VFCount": 12,
> + "LocalMemoryEccOff": 1023410176,
> + "LocalMemoryEccOn": 1023410176,
> "Contexts": 1024,
> - "Doorbells": 15,
> + "Doorbells": 20,
> "GGTTSize": 251658240
> }
> }
> @@ -110,4 +110,4 @@
> }
> }
> }
> -}
> \ No newline at end of file
> +}
> diff --git a/tools/vmtb/vmm_flows/resources/vgpu_profiles/Ptl.json b/tools/vmtb/vmm_flows/resources/vgpu_profiles/Ptl.json
> new file mode 100644
> index 000000000..efc61bce1
> --- /dev/null
> +++ b/tools/vmtb/vmm_flows/resources/vgpu_profiles/Ptl.json
> @@ -0,0 +1,97 @@
> +{
> + "version": "0.1",
> + "PFResources": {
> + "Default": "MinimumPFResources",
> + "Profile": {
> + "MinimumPFResources": {
> + "LocalMemoryEccOn": 0,
> + "LocalMemoryEccOff": 0,
> + "Contexts": 256,
> + "Doorbells": 16,
> + "GGTTSize": 67108864
> + }
> + }
> + },
> + "vGPUResources": {
> + "Default": null,
> + "Profile": {
> + "Ptl_1": {
> + "VFCount": 1,
> + "LocalMemoryEccOff": 0,
> + "LocalMemoryEccOn": 0,
> + "Contexts": 1024,
> + "Doorbells": 240,
> + "GGTTSize": 4026531840
> + },
> + "Ptl_2": {
> + "VFCount": 2,
> + "LocalMemoryEccOff": 0,
> + "LocalMemoryEccOn": 0,
> + "Contexts": 1024,
> + "Doorbells": 120,
> + "GGTTSize": 2013265920
> + },
> + "Ptl_4": {
> + "VFCount": 4,
> + "LocalMemoryEccOff": 0,
> + "LocalMemoryEccOn": 0,
> + "Contexts": 1024,
> + "Doorbells": 60,
> + "GGTTSize": 1006632960
> + }
> + }
> + },
> + "vGPUScheduler": {
> + "Default": "Flexible_30fps_GPUTimeSlicing",
> + "Profile": {
> + "Flexible_30fps_GPUTimeSlicing": {
> + "GPUTimeSlicing": {
> + "ScheduleIfIdle": false,
> + "PFExecutionQuantum": 20,
> + "PFPreemptionTimeout": 20000,
> + "VFAttributes": {
> + "VFExecutionQuantum": "lambda VFCount : max( 32 // VFCount, 1)",
> + "VFPreemptionTimeout": "lambda VFCount : 128000 if (VFCount == 1) else max( 64000 // VFCount, 16000)"
> + }
> + }
> + },
> + "Fixed_30fps_GPUTimeSlicing": {
> + "GPUTimeSlicing": {
> + "ScheduleIfIdle": true,
> + "PFExecutionQuantum": 20,
> + "PFPreemptionTimeout": 20000,
> + "VFAttributes": {
> + "VFExecutionQuantum": "lambda VFCount : max( 32 // VFCount, 1)",
> + "VFPreemptionTimeout": "lambda VFCount : 128000 if (VFCount == 1) else max( 64000 // VFCount, 16000)"
> + }
> + }
> + },
> + "Flexible_BurstableQoS_GPUTimeSlicing": {
> + "GPUTimeSlicing": {
> + "ScheduleIfIdle": false,
> + "PFExecutionQuantum": 20,
> + "PFPreemptionTimeout": 20000,
> + "VFAttributes": {
> + "VFExecutionQuantum": "lambda VFCount : min((2000 // max(VFCount-1,1)*0.5, 50))",
> + "VFPreemptionTimeout": "lambda VFCount : (2000 // max(VFCount-1,1) - min((2000 // max(VFCount-1,1))*0.5, 50))*1000"
> + }
> + }
> + }
> + }
> + },
> + "vGPUSecurity": {
> + "Default": "Disabled",
> + "Profile": {
> + "Disabled": {
> + "ResetAfterVfSwitch": false,
> + "GuCSamplingPeriod": 0,
> + "GuCThresholdCATError": 0,
> + "GuCThresholdPageFault": 0,
> + "GuCThresholdH2GStorm": 0,
> + "GuCThresholdDbStorm": 0,
> + "GuCThresholdGTIrqStorm": 0,
> + "GuCThresholdEngineReset": 0
> + }
> + }
> + }
> +}
> \ No newline at end of file
LGTM,
Reviewed-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>