lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <db85c09f-3c9f-14ee-c4d8-b4d4faf8e7d6@intel.com>
Date:   Thu, 27 Jan 2022 16:27:49 +0800
From:   "Zhu, Lingshan" <lingshan.zhu@...el.com>
To:     "Michael S. Tsirkin" <mst@...hat.com>
Cc:     jasowang@...hat.com, netdev@...r.kernel.org,
        virtualization@...ts.linux-foundation.org
Subject: Re: [PATCH V3 0/4] vDPA/ifcvf: implement shared IRQ feature



On 1/27/2022 12:31 PM, Zhu, Lingshan wrote:
>
>
> On 1/26/2022 10:14 PM, Michael S. Tsirkin wrote:
>> On Wed, Jan 26, 2022 at 08:49:08PM +0800, Zhu Lingshan wrote:
>>> It has been observed that on some platforms/devices, there may
>>> not be enough MSI vectors for virtqueues and the config change.
>>> Under such circumstances, the interrupt sources of a device
>>> have to share vectors/IRQs.
>>>
>>> This series implemented a shared IRQ feature for ifcvf.
>>>
>>> Please help review.
>> Given the history, can you please report which tests
>> were performed with this patchset? Which configs tested?
>> Thanks?
> Hi Michael,
>
> It is ping and netperf tests, and I have set nvectors = 1 and 2 in
> ifcvf_request_irq(), after ifcvf_alloc_vectors(),
> to hard coded the number of the allocate vectors.
>
> Thanks,
> Zhu Lingshan
We can verify the tests result by checking the requested IRQs for the 
two VMs(one vhost-vdpa device per VM).
(1)when setting nvectors = 1, only one IRQs requested per VM/device, all 
vqs and the config interrupt share this IRQ.
[lszhu@...01infra01 ~]$ cat /proc/interrupts | grep ifc
  241:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0         45          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534528-edge      ifcvf[0000:01:00.5]-dev-shared-irq
  251:          0          0          0          0 0          0          
0          0          0          0 0         41          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
536576-edge      ifcvf[0000:01:00.6]-dev-shared-irq

(2)when setting nvectors = 2, two IRQs requested for each VM/device, one 
for all vqs, the other for the config interrupt
[lszhu@...01infra01 ~]$ cat /proc/interrupts | grep ifc
  241:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0         39          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534528-edge      ifcvf[0000:01:00.5]-vqs-shared-irq
  242:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534529-edge      ifcvf[0000:01:00.5]-config
  251:          0          0          0          0 0          0          
0          0          0          0 0         39          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
536576-edge      ifcvf[0000:01:00.6]-vqs-shared-irq
  252:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
536577-edge      ifcvf[0000:01:00.6]-config

(3)when remove nvectors hardcode, the driver allocates enough vectors 
for the queues and config interrupt,
and we do see better performance because irq_bypass is enabled:(too many 
lines, cut off)
[lszhu@...01infra01 linux]$ cat /proc/interrupts | grep ifc
  241:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534528-edge      ifcvf[0000:01:00.5]-0
  242:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534529-edge      ifcvf[0000:01:00.5]-1
  243:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534530-edge      ifcvf[0000:01:00.5]-2
  244:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534531-edge      ifcvf[0000:01:00.5]-3
  245:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534532-edge      ifcvf[0000:01:00.5]-4
  246:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534533-edge      ifcvf[0000:01:00.5]-5
  247:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534534-edge      ifcvf[0000:01:00.5]-6
  248:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534535-edge      ifcvf[0000:01:00.5]-7
  249:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534536-edge      ifcvf[0000:01:00.5]-8
  250:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
534537-edge      ifcvf[0000:01:00.5]-config
  251:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
536576-edge      ifcvf[0000:01:00.6]-0
  252:          0          0          0          0 0          0          
0          0          0          0 0          0          0          
0          0          0 0          0          0          0          
0          0 0          0          0          0          0          0 
0          0          0          0          0          0 0          
0          0          0          0          0 IR-PCI-MSI 
536577-edge      ifcvf[0000:01:00.6]-1

Thanks,
Zhu Lingshan


>>
>>> Changes from V2:
>>> (1) Fix misuse of nvectors(in ifcvf_alloc_vectors return 
>>> value)(Michael)
>>> (2) Fix misuse of irq = get_vq_irq() in setup irqbypass(Michael)
>>> (3) Coding style improvements(Michael)
>>> (4) Better naming of device shared irq/shared vq irq
>>>
>>> Changes from V1:
>>> (1) Enable config interrupt when only one vector is allocated(Michael)
>>> (2) Clean vectors/IRQs if failed to request config interrupt
>>> since config interrupt is a must(Michael)
>>> (3) Keep local vdpa_ops, disable irq_bypass by setting IRQ = -EINVAL
>>> for shared IRQ case(Michael)
>>> (4) Improvements on error messages(Michael)
>>> (5) Squash functions implementation patches to the callers(Michael)
>>>
>>> Zhu Lingshan (4):
>>>    vDPA/ifcvf: implement IO read/write helpers in the header file
>>>    vDPA/ifcvf: implement device MSIX vector allocator
>>>    vhost_vdpa: don't setup irq offloading when irq_num < 0
>>>    vDPA/ifcvf: implement shared IRQ feature
>>>
>>>   drivers/vdpa/ifcvf/ifcvf_base.c |  67 +++-----
>>>   drivers/vdpa/ifcvf/ifcvf_base.h |  60 +++++++-
>>>   drivers/vdpa/ifcvf/ifcvf_main.c | 260 
>>> ++++++++++++++++++++++++++++----
>>>   drivers/vhost/vdpa.c            |   4 +
>>>   4 files changed, 312 insertions(+), 79 deletions(-)
>>>
>>> -- 
>>> 2.27.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ