Re: [PATCH V9 9/9] virtio: Intel IFC VF driver for VDPA

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 4/9/2020 8:43 PM, Jason Wang wrote:

On 2020/4/9 下午6:41, Arnd Bergmann wrote:
On Thu, Mar 26, 2020 at 3:08 PM Jason Wang <jasowang@xxxxxxxxxx> wrote:
From: Zhu Lingshan <lingshan.zhu@xxxxxxxxx>

This commit introduced two layers to drive IFC VF:

(1) ifcvf_base layer, which handles IFC VF NIC hardware operations and
     configurations.

(2) ifcvf_main layer, which complies to VDPA bus framework,
     implemented device operations for VDPA bus, handles device probe,
     bus attaching, vring operations, etc.

Signed-off-by: Zhu Lingshan <lingshan.zhu@xxxxxxxxx>
Signed-off-by: Bie Tiwei <tiwei.bie@xxxxxxxxx>
Signed-off-by: Wang Xiao <xiao.w.wang@xxxxxxxxx>
Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx>
+
+#define IFCVF_QUEUE_ALIGNMENT  PAGE_SIZE
+#define IFCVF_QUEUE_MAX                32768
+static u16 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
+{
+       return IFCVF_QUEUE_ALIGNMENT;
+}
This fails to build on arm64 with 64kb page size (found in linux-next):

/drivers/vdpa/ifcvf/ifcvf_main.c: In function 'ifcvf_vdpa_get_vq_align':
arch/arm64/include/asm/page-def.h:17:20: error: conversion from 'long
unsigned int' to 'u16' {aka 'short unsigned int'} changes value from
'65536' to '0' [-Werror=overflow]
    17 | #define PAGE_SIZE  (_AC(1, UL) << PAGE_SHIFT)
       |                    ^
drivers/vdpa/ifcvf/ifcvf_base.h:37:31: note: in expansion of macro 'PAGE_SIZE'
    37 | #define IFCVF_QUEUE_ALIGNMENT PAGE_SIZE
       |                               ^~~~~~~~~
drivers/vdpa/ifcvf/ifcvf_main.c:231:9: note: in expansion of macro
'IFCVF_QUEUE_ALIGNMENT'
   231 |  return IFCVF_QUEUE_ALIGNMENT;
       |         ^~~~~~~~~~~~~~~~~~~~~

It's probably good enough to just not allow the driver to be built in that configuration as it's fairly rare but unfortunately there is no simple Kconfig
symbol for it.


Or I think the 64KB alignment is probably more than enough.

Ling Shan, can we use smaller value here?

Thanks

sure, we just need it page aligned, this value is only used in get_vq_align(). I will try to find a arm64 machine and debug on this issue

Thanks!




In a similar driver, we did

config VMXNET3
         tristate "VMware VMXNET3 ethernet driver"
         depends on PCI && INET
         depends on !(PAGE_SIZE_64KB || ARM64_64K_PAGES || \
                      IA64_PAGE_SIZE_64KB || MICROBLAZE_64K_PAGES || \
                      PARISC_PAGE_SIZE_64KB || PPC_64K_PAGES)

I think we should probably make PAGE_SIZE_64KB a global symbol
in arch/Kconfig and have it selected by the other symbols so drivers
like yours can add a dependency for it.

          Arnd





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux