[Intel-gfx] [vfio:next 33/38] drivers/gpu/drm/i915/i915_pci.c:975:2: warning: missing field 'override_only' initializer

Jani Nikula jani.nikula at linux.intel.com
Fri Oct 1 11:04:04 UTC 2021


On Fri, 27 Aug 2021, Jason Gunthorpe <jgg at nvidia.com> wrote:
> On Fri, Aug 27, 2021 at 03:12:36PM +0000, kernel test robot wrote:
>> tree:   https://github.com/awilliam/linux-vfio.git next
>> head:   ea870730d83fc13a5fa2bd0e175176d7ac8a400a
>> commit: 343b7258687ecfbb363bfda8833a7cf641aac524 [33/38] PCI: Add 'override_only' field to struct pci_device_id
>> config: i386-randconfig-a004-20210827 (attached as .config)
>> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 1076082a0d97bd5c16a25ee7cf3dbb6ee4b5a9fe)
>> reproduce (this is a W=1 build):
>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         # https://github.com/awilliam/linux-vfio/commit/343b7258687ecfbb363bfda8833a7cf641aac524
>>         git remote add vfio https://github.com/awilliam/linux-vfio.git
>>         git fetch --no-tags vfio next
>>         git checkout 343b7258687ecfbb363bfda8833a7cf641aac524
>>         # save the attached .config to linux build tree
>>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 
>> 
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp at intel.com>
>
> Ugh, this is due to this code:
>
> #define INTEL_VGA_DEVICE(id, info) {		\
> 	0x8086,	id,				\
> 	~0, ~0,					\
> 	0x030000, 0xff0000,			\
> 	(unsigned long) info }
>
> #define INTEL_QUANTA_VGA_DEVICE(info) {		\
> 	0x8086,	0x16a,				\
> 	0x152d,	0x8990,				\
> 	0x030000, 0xff0000,			\
> 	(unsigned long) info }
>
>
> Which really should be using the normal pattern for defining these
> structs:
>
> #define PCI_DEVICE_CLASS(dev_class,dev_class_mask) \
>         .class = (dev_class), .class_mask = (dev_class_mask), \
>         .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \
>         .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
>
> The warning is also not a real issue, just clang being overzealous.

Stumbled upon this old report, sorry for the delayed response.

The reason it's not using designated initializers is that the same file
gets synced to some userspace projects (at least libdrm and
igt-gpu-tools) which use the macros to initialize slightly different
structs. For example, igt uses struct pci_id_match from libpciaccess-dev
(/usr/include/pciaccess.h) and can't easily adapt to different member
names.

Anyway, we've got

subdir-ccflags-y += $(call cc-disable-warning, missing-field-initializers)
subdir-ccflags-y += $(call cc-disable-warning, initializer-overrides)

in drivers/gpu/drm/i915/Makefile, so I wonder why they're not respected.

BR,
Jani.

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list