On Mon, 2015-11-16 at 18:18 +0800, Chen Fan wrote: > Hi Alex, > > Thanks for your detailed explanation. > during my test, I found that maybe there was another problem in vfio > driver, > I use a dual-port NIC which address are: 06:00.0 and 06:00.1 two functions. > then I use aer-inject to inject one error to one function like following: > AER > ID 0000:06:00.0 > UNCOR_STATUS DLP > HEADER_LOG 0 1 2 3 > > here I boot qemu with one enable aer, one disable aer: > ./x86_64-softmmu/qemu-system-x86_64 -M q35 -device > ioh3420,bus=pcie.0,addr=1c.0,port=1,id=bridge1,chassis=1 > -device vfio-pci,host=06:00.1,bus=bridge1,addr=00.1 > -device > vfio-pci,host=06:00.0,bus=bridge1,addr=00.0,aer=true,multifunction=on > > so we expected that the error only sent to the vfio device with host > address is 06:00.0, > but I found that all devices (06:00.0 , 06:00.1) receive the signal in > qemu, which sent by vfio driver > in vfio_pci_aer_err_detected. then qemu stopped by the device with > 06:00.1 received the signal. > is that right?
You would need to know whether the response for the injected AER affects all devices on the link or is isolated to the function specified. VFIO is just a passthrough for pci_error_handlers, so if error_detected is getting called for each host device, it's going to signal each device to the user. Thanks, Alex