[{"id":3674204,"web_url":"http://patchwork.ozlabs.org/comment/3674204/","msgid":"<15f9e61239cd8f8b09bb0f058848e80070c0b1de.camel@linux.ibm.com>","list_archive_url":null,"date":"2026-04-07T14:09:33","subject":"Re: [PATCH v8 1/2] docs: s390/pci: Improve and update PCI\n documentation","submitter":{"id":85804,"url":"http://patchwork.ozlabs.org/api/people/85804/","name":"Gerd Bayer","email":"gbayer@linux.ibm.com"},"content":"On Tue, 2026-04-07 at 15:24 +0200, Niklas Schnelle wrote:\n> Update the s390 specific PCI documentation to better reflect current\n> behavior and terms such as the handling of Isolated VFs via commit\n> 25f39d3dcb48 (\"s390/pci: Ignore RID for isolated VFs\").\n> \n> Add a descriptions for /sys/firmware/clp/uid_checking which was added\n> in commit b043a81ce3ee (\"s390/pci: Expose firmware provided UID Checking\n> state in sysfs\") but missed documentation.\n> \n> Similarly add documentation for the fidparm attribute added by commit\n> 99ad39306a62 (\"s390/pci: Expose FIDPARM attribute in sysfs\") and\n> add a list of pft values and their names.\n> \n> Finally improve formatting of the different attribute descriptions by\n> adding a separating colon.\n> \n> Reviewed-by: Farhan Ali <alifm@linux.ibm.com>\n> Acked-by: Randy Dunlap <rdunlap@infradead.org>\n> Tested-by: Randy Dunlap <rdunlap@infradead.org>\n> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>\n> Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>\n> ---\n>  Documentation/arch/s390/pci.rst | 144 +++++++++++++++++++++++++++-------------\n>  1 file changed, 97 insertions(+), 47 deletions(-)\n> \n> diff --git a/Documentation/arch/s390/pci.rst b/Documentation/arch/s390/pci.rst\n> index d5755484d8e75c7bf67a350e61bbe04f0452a2fa..c3476de4f03278d07099aa32cbea0f868b6e9c9c 100644\n> --- a/Documentation/arch/s390/pci.rst\n> +++ b/Documentation/arch/s390/pci.rst\n> @@ -6,6 +6,7 @@ S/390 PCI\n>  \n>  Authors:\n>          - Pierre Morel\n> +        - Niklas Schnelle\n>  \n>  Copyright, IBM Corp. 2020\n>  \n> @@ -27,14 +28,16 @@ Command line parameters\n>  debugfs entries\n>  ---------------\n>  \n> -The S/390 debug feature (s390dbf) generates views to hold various debug results in sysfs directories of the form:\n> +The S/390 debug feature (s390dbf) generates views to hold various debug results\n> +in sysfs directories of the form:\n>  \n>   * /sys/kernel/debug/s390dbf/pci_*/\n>  \n>  For example:\n>  \n>    - /sys/kernel/debug/s390dbf/pci_msg/sprintf\n> -    Holds messages from the processing of PCI events, like machine check handling\n> +\n> +    holds messages from the processing of PCI events, like machine check handling\n>      and setting of global functionality, like UID checking.\n>  \n>    Change the level of logging to be more or less verbose by piping\n> @@ -47,87 +50,134 @@ Sysfs entries\n>  \n>  Entries specific to zPCI functions and entries that hold zPCI information.\n>  \n> -* /sys/bus/pci/slots/XXXXXXXX\n> +* /sys/bus/pci/slots/XXXXXXXX:\n>  \n> -  The slot entries are set up using the function identifier (FID) of the\n> -  PCI function. The format depicted as XXXXXXXX above is 8 hexadecimal digits\n> -  with 0 padding and lower case hexadecimal digits.\n> +  The slot entries are set up using the function identifier (FID) of the PCI\n> +  function as slot name. The format depicted as XXXXXXXX above is 8 hexadecimal\n> +  digits with 0 padding and lower case hexadecimal digits.\n>  \n>    - /sys/bus/pci/slots/XXXXXXXX/power\n>  \n>    A physical function that currently supports a virtual function cannot be\n>    powered off until all virtual functions are removed with:\n> -  echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf\n> +  echo 0 > /sys/bus/pci/devices/DDDD:BB:dd.f/sriov_numvf\n>  \n> -* /sys/bus/pci/devices/XXXX:XX:XX.X/\n> +* /sys/bus/pci/devices/DDDD:BB:dd.f/:\n>  \n> -  - function_id\n> -    A zPCI function identifier that uniquely identifies the function in the Z server.\n> +  - function_id:\n> +    The zPCI function identifier (FID) is a 32-bit hexadecimal value that\n> +    uniquely identifies the PCI function. Unless the hypervisor provides\n> +    a virtual FID e.g. on KVM this identifier is unique across the machine even\n> +    between different partitions.\n>  \n> -  - function_handle\n> -    Low-level identifier used for a configured PCI function.\n> -    It might be useful for debugging.\n> +  - function_handle:\n> +    This 32-bit hexadecimal value is a low-level identifier used for a PCI\n> +    function. Note that the function handle may be changed and become invalid\n> +    on PCI events and when enabling/disabling the PCI function.\n>  \n> -  - pchid\n> -    Model-dependent location of the I/O adapter.\n> +  - pchid:\n> +    This 16-bit hexadecimal value encodes a model-dependent location for\n> +    the PCI function.\n>  \n> -  - pfgid\n> -    PCI function group ID, functions that share identical functionality\n> +  - pfgid:\n> +    PCI function group ID; functions that share identical functionality\n>      use a common identifier.\n>      A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics.\n>  \n> -  - vfn\n> +  - vfn:\n>      The virtual function number, from 1 to N for virtual functions,\n>      0 for physical functions.\n>  \n> -  - pft\n> -    The PCI function type\n> +  - pft:\n> +    The PCI function type is an s390-specific type attribute. It indicates\n> +    a more general, usage oriented, type than PCI Specification\n> +    class/vendor/device identifiers. That is PCI functions with the same pft\n> +    value may be backed by different hardware implementations. At the same time\n> +    apart from unclassified functions (pft is 0x00) the same pft value\n> +    generally implies a similar usage model. At the same time the same\n> +    PCI hardware device may appear with different pft values when in a\n> +    different usage model. For example NETD and NETH VFs may be implemented\n> +    by the same PCI hardware device but in NETD the parent Physical Function\n> +    is user managed while with NETH it is platform managed.\n>  \n> -  - port\n> -    The port corresponds to the physical port the function is attached to.\n> -    It also gives an indication of the physical function a virtual function\n> -    is attached to.\n> +    Currently the following PFT values are defined:\n>  \n> -  - uid\n> -    The user identifier (UID) may be defined as part of the machine\n> -    configuration or the z/VM or KVM guest configuration. If the accompanying\n> -    uid_is_unique attribute is 1 the platform guarantees that the UID is unique\n> -    within that instance and no devices with the same UID can be attached\n> -    during the lifetime of the system.\n> +    - 0x00 (UNC): Unclassified\n> +    - 0x02 (ROCE): RoCE Express\n> +    - 0x05 (ISM): Internal Shared Memory\n> +    - 0x0a (ROC2): RoCE Express 2\n> +    - 0x0b (NVMe): NVMe\n> +    - 0x0c (NETH): Network Express hybrid\n> +    - 0x0d (CNW): Cloud Network Adapter\n> +    - 0x0f (NETD): Network Express direct\n>  \n> -  - uid_is_unique\n> -    Indicates whether the user identifier (UID) is guaranteed to be and remain\n> -    unique within this Linux instance.\n> +  - port:\n> +    The port is a decimal value corresponding to the physical port the function\n> +    is attached to. Virtual Functions (VFs) share the port with their parent\n> +    Physical Function (PF). A value of 0 indicates that the port attribute is\n> +    not applicable for that PCI function type.\n>  \n> -  - pfip/segmentX\n> +  - uid:\n> +    The user-defined identifier (UID) for a PCI function is a 32-bit\n> +    hexadecimal value. It is defined on a per instance basis as part of the\n> +    partition, KVM guest, or z/VM guest configuration. If UID Checking is\n> +    enabled the platform ensures that the UID is unique within that instance\n> +    and no two PCI functions with the same UID will be visible to the instance.\n> +\n> +    Independent of this guarantee and unlike the function ID (FID) the UID may\n> +    be the same in different partitions within the same machine. This allows to\n> +    create PCI configurations in multiple partitions to be identical in the\n> +    UID-namespace.\n> +\n> +  - uid_is_unique:\n> +    A 0 or 1 flag indicating whether the user-defined identifier (UID) is\n> +    guaranteed to be and remain unique within this Linux instance. This\n> +    platform feature is called UID Checking.\n> +\n> +  - pfip/segmentX:\n>      The segments determine the isolation of a function.\n>      They correspond to the physical path to the function.\n>      The more the segments are different, the more the functions are isolated.\n>  \n> +  - fidparm:\n> +    Contains an 8-bit-per-PCI function parameter field in hexadecimal provided\n> +    by the platform. The meaning of this field is PCI function type specific.\n> +    For NETH VFs a value of 0x01 indicates that the function supports\n> +    promiscuous mode.\n> +\n> +* /sys/firmware/clp/uid_checking:\n> +\n> +  In addition to the per-device uid_is_unique attribute this presents a\n> +  global indication of whether UID Checking is enabled. This allows users\n> +  to check for UID Checking even when no PCI functions are configured.\n> +\n>  Enumeration and hotplug\n>  =======================\n>  \n>  The PCI address consists of four parts: domain, bus, device and function,\n> -and is of this form: DDDD:BB:dd.f\n> +and is of this form: DDDD:BB:dd.f.\n>  \n> -* When not using multi-functions (norid is set, or the firmware does not\n> -  support multi-functions):\n> +* For a PCI function for which the platform does not expose the RID, the\n> +  pci=norid kernel parameter is used, or a so-called isolated Virtual Function\n> +  which does have RID information but is used without its parent Physical\n> +  Function being part of the same PCI configuration:\n>  \n>    - There is only one function per domain.\n>  \n> -  - The domain is set from the zPCI function's UID as defined during the\n> -    LPAR creation.\n> +  - The domain is set from the zPCI function's UID if UID Checking is on;\n> +    otherwise the domain ID is generated dynamically and is not stable\n> +    across reboots or hot plug.\n>  \n> -* When using multi-functions (norid parameter is not set),\n> -  zPCI functions are addressed differently:\n> +* For a PCI function for which the platform exposes the RID and which\n> +  is not an Isolated Virtual Function:\n>  \n>    - There is still only one bus per domain.\n>  \n> -  - There can be up to 256 functions per bus.\n> +  - There can be up to 256 PCI functions per bus.\n>  \n> -  - The domain part of the address of all functions for\n> -    a multi-Function device is set from the zPCI function's UID as defined\n> -    in the LPAR creation for the function zero.\n> +  - The domain part of the address of all functions within the same topology is\n> +    that of the configured PCI function with the lowest devfn within that\n> +    topology.\n>  \n> -  - New functions will only be ready for use after the function zero\n> -    (the function with devfn 0) has been enumerated.\n> +  - Virtual Functions generated by an SR-IOV capable Physical Function only\n> +    become visible once SR-IOV is enabled.\n\n\nLGTM!\nReviewed-by: Gerd Bayer <gbayer@linux.ibm.com>","headers":{"Return-Path":"\n <linux-pci+bounces-52074-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=QxNMOD6E;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-52074-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=\"QxNMOD6E\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=148.163.158.5","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.ibm.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqpBF2B3Tz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 00:15:17 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 78133300A769\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  7 Apr 2026 14:09:48 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B0DCA39E193;\n\tTue,  7 Apr 2026 14:09:47 +0000 (UTC)","from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n [148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0879221B905;\n\tTue,  7 Apr 2026 14:09:45 +0000 (UTC)","from pps.filterd (m0353725.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 636LmNrO2211629;\n\tTue, 7 Apr 2026 14:09:39 GMT","from ppma22.wdc07v.mail.ibm.com\n (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dcn2hb23g-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 07 Apr 2026 14:09:39 +0000 (GMT)","from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1])\n\tby ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id\n 637BRISD007898;\n\tTue, 7 Apr 2026 14:09:38 GMT","from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226])\n\tby ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4dcmg2bf87-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 07 Apr 2026 14:09:38 +0000","from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com\n [10.20.54.106])\n\tby smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 637E9YPG32702904\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tTue, 7 Apr 2026 14:09:34 GMT","from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 4651420043;\n\tTue,  7 Apr 2026 14:09:34 +0000 (GMT)","from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id E54DB20040;\n\tTue,  7 Apr 2026 14:09:33 +0000 (GMT)","from [9.52.210.163] (unknown [9.52.210.163])\n\tby smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP;\n\tTue,  7 Apr 2026 14:09:33 +0000 (GMT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775570987; cv=none;\n b=KJ/SGg+teuzC803tFSClGRrmJKOcm18ETb8g4s8T2b43yDqr8hQBaDmTXcNblWy+nYXSatYHd9IoY7d2ut037/q6fiyVHwk/88QLg7tJh2uqY5mwyZ0tH0e8o+2FHLUyD4lQlhnwcQM7zUDjp2SUC3M8VBajtcxRtNhNr1uVTMM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775570987; c=relaxed/simple;\n\tbh=XnwiCsmEcuWDjxJxrnaxNtBHuHhu0PK3ZIwTCNUkobM=;\n\th=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=awIdGSi80x2YwHIUqfemXUfqLIuoC4vDrWnL+KnEiHUIAO1rDW6+gtYXyLVH2Y/rn2pzUk0yYl1xLywXImdUyeJ0XI1ww1FbqzG/2fmsJsjPCHc65cVPzMizO9y+M1nT+n2ucslK4+SmZVwFXEvtyQ1HXLf+9Gk+ul/gbqAv3bU=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com;\n spf=pass smtp.mailfrom=linux.ibm.com;\n dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=QxNMOD6E; arc=none smtp.client-ip=148.163.158.5","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n\t:content-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to; s=pp1; bh=5BHmH1\n\tqcrKX6nEAPwYwIzUiePgOYyUqiQFrv6TNXfQI=; b=QxNMOD6EzPCWA9gTGRSP9S\n\tKWzouiHx+nIJxo9Htm+OdroOnmzTjdH5lbCvKMNz3qINZ37bL/qDdxqT65ZwW1XO\n\t0uUEt8N5WxOrDhKSianNViidQMEcv+CHhtoG+ZPzzYmKUYMLnFumpE/YpDx6m56r\n\tP8qOIMv/dF6XRe4dD70QdKYnRFVqn8YgT2w9R1EQuJEZgBXDK3JyJG9sgqs4ZNq4\n\twC3hAI28hvEFxQqtboA9QYI0hLCqXZyevHkmY3f8Y/TF1RqTnvhu1AhALHvepR5o\n\txUDp5EXT3hjFWdVMwskt2oQ71zzmjayPOARG/gvAx5O6TmaJyunPwrmA4tvBkZcA\n\t==","Message-ID":"<15f9e61239cd8f8b09bb0f058848e80070c0b1de.camel@linux.ibm.com>","Subject":"Re: [PATCH v8 1/2] docs: s390/pci: Improve and update PCI\n documentation","From":"Gerd Bayer <gbayer@linux.ibm.com>","To":"Niklas Schnelle <schnelle@linux.ibm.com>,\n        Bjorn Helgaas\n\t <bhelgaas@google.com>,\n        Jonathan Corbet <corbet@lwn.net>, Lukas Wunner\n\t <lukas@wunner.de>,\n        Shuah Khan <skhan@linuxfoundation.org>","Cc":"Farhan Ali <alifm@linux.ibm.com>,\n        Alexander Gordeev\n <agordeev@linux.ibm.com>,\n        Christian Borntraeger\n <borntraeger@linux.ibm.com>,\n        Gerald Schaefer\n <gerald.schaefer@linux.ibm.com>,\n        Heiko Carstens\t <hca@linux.ibm.com>,\n        Julian Ruess <julianr@linux.ibm.com>,\n        Matthew Rosato\t\n <mjrosato@linux.ibm.com>,\n        Peter Oberparleiter <oberpar@linux.ibm.com>,\n        Ramesh Errabolu <ramesh@linux.ibm.com>,\n        Sven Schnelle\n <svens@linux.ibm.com>,\n        Vasily Gorbik <gor@linux.ibm.com>, linux-doc@vger.kernel.org,\n        linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n        linux-s390@vger.kernel.org, Randy Dunlap\t\n <rdunlap@infradead.org>,\n        Gerd Bayer <gbayer@linux.ibm.com>","Date":"Tue, 07 Apr 2026 16:09:33 +0200","In-Reply-To":"<20260407-uid_slot-v8-1-15ae4409d2ce@linux.ibm.com>","References":"<20260407-uid_slot-v8-0-15ae4409d2ce@linux.ibm.com>\n\t <20260407-uid_slot-v8-1-15ae4409d2ce@linux.ibm.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.58.3 (3.58.3-1.fc43) ","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-TM-AS-GCONF":"00","X-Proofpoint-Reinject":"loops=2 maxloops=12","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDA3MDEyOCBTYWx0ZWRfX3/bjssKjfKwn\n odcWNAND3qPV1HFYn7EZtYuT0CqI2kjFImxjkBntee6VGImKtx1cK+rRfThIm5/Rnh/Wp33zX84\n nmUNd0dbyi5hG37TDebpywFne2Iym5WpxViyHvkRJWuLu2dxmuVXuE1IvoA4s6Q+xzTKaHA+lvS\n jre3uRtLa0lA8e7zuqkL/8pbOVAf+f8wlDH6e2+VQPEn0LLRxD7WFqvLERghzftsu99ehRTvLLv\n rfPnq4XzizZ0bqOCkMUoG+K+hP0MOZHFJvQnWbsf+EN/zXCq3xienD5w2bmRyEqgXrcpbY+Cxwc\n oSvoxjodXIoKUwWjKFMGaBMcuSWnTO4cN1fLDTxj7GpBOKhYJIYKqHkxvf2fPjj6uV3ulBHZGgn\n ih/+SGUxnsGlDhvk1565dpV76NDyvoMEk/u0Hk4oJP15hxydm2b/PIDLQUj5c7xEvAr6rP1a5Cj\n A5Qw3FDfdcWp64+PwHg==","X-Proofpoint-GUID":"RIR04Ww7cB2nuKzvY-eaaRsoI-ELMCoe","X-Authority-Analysis":"v=2.4 cv=a/wAM0SF c=1 sm=1 tr=0 ts=69d51023 cx=c_pps\n a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8\n a=JfrnYn6hAAAA:8 a=oSjUTuWWw7jTxM-3NScA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10\n a=1CNFftbPRP8L7MoqJWF3:22","X-Proofpoint-ORIG-GUID":"MCThKNEXiNn67KqjnVd3jROGsLURPsS0","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-07_03,2026-04-07_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n bulkscore=0 clxscore=1015 spamscore=0 impostorscore=0 priorityscore=1501\n phishscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 suspectscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604070128"}}]