Re: [PATCH] platform/x86/intel/vsec: reset state before re-enumerating

Michael Bottini <[email protected]>
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi Lukas,

I've performed a reset recovery test on an Intel Ponte Vecchio machine 
with an OOBMSM PCIe function that vsec binds to.
I injected the following unrecoverable error into the bus with `aer-inject`:

   # fatal.aer
   AER
   DOMAIN 0x0
   BUS 0x84
   DEV 0x0
   FN 0
   UNCOR_STATUS MALF_TLP
   HEADER_LOG 0 0 0 0

Running in Bash:

gta@DUT10580PVC:~$ sudo ./aer-inject/aer-inject -s 0000:82:02.0 fatal.aer

Without the patch, the associated PMT telemetry endpoints don't come back.

   gta@DUT10580PVC:~$ ls -l /sys/class/intel_pmt/ | grep -E 'telem[456]'
   gta@DUT10580PVC:~$ # no output

With the patch that adds a `intel_vsec_reset_state` call, they do come 
back after injecting the error:

   gta@DUT10580PVC:~$ ls -l /sys/class/intel_pmt/ | grep -E 'telem[456]'
   lrwxrwxrwx 1 root root 0 Aug  3 21:32 telem4 -> 
../../devices/pci0000:80/0000:80:05.0/0000:81:00.0/0000:82:02.0/0000:84:00.1/intel_vsec.telemetry.1/intel_pmt/telem4

   lrwxrwxrwx 1 root root 0 Aug  3 21:32 telem5 -> 
../../devices/pci0000:80/0000:80:05.0/0000:81:00.0/0000:82:02.0/0000:84:00.1/intel_vsec.telemetry.1/intel_pmt/telem5

   lrwxrwxrwx 1 root root 0 Aug  3 21:32 telem6 -> 
../../devices/pci0000:80/0000:80:05.0/0000:81:00.0/0000:82:02.0/0000:84:00.1/intel_vsec.telemetry.1/intel_pmt/telem6

Best,
Mike Bottini

On 7/9/26 10:57, David Box wrote:
> On Wed, Jul 08, 2026 at 11:33:07AM +0200, Lukas Wunner wrote:
>> On Wed, Jul 08, 2026 at 11:26:47AM +0800, Guangshuo Li wrote:
>>> +++ b/drivers/platform/x86/intel/vsec.c
>>> @@ -51,6 +51,13 @@ struct vsec_priv {
>>>   	unsigned long found_caps;
>>>   };
>>>   
>>> +static void intel_vsec_reset_state(struct vsec_priv *priv)
>>> +{
>>> +	memset(priv->suppliers, 0, sizeof(priv->suppliers));
>>> +	memset(priv->state, 0, sizeof(priv->state));
>>> +	priv->found_caps = 0;
>>> +}
>> Seems fragile to selectively zero only portions of struct vsec_priv.
>> If the struct is amended later on with additional fields, it's quite
>> possible that nobody thinks about zeroing them here.
>>
>> It's probably more robust to zero the entire struct and re-populate
>> the info field.
>>
>> I also don't think a separate function to reset the struct is necessary
>> as I don't expect additional callers down the road.  So I suggest
>> zeroing the struct inline in intel_vsec_pci_slot_reset().
>>
>> @David Box:  I've asked off-list for reset recovery to be tested,
>> I'm hereby renewing that request.  See section "Software error injection"
>> in: Documentation/PCI/pcieaer-howto.rst
> We'll do the test and let you know. Thanks.
>
> David
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.