tree:
git://git.infradead.org/users/hch/misc.git vgaarb-cleanups
head: 1b5803735663928e9ddb2ca5ad9d4602d5ac18d0
commit: 1b5803735663928e9ddb2ca5ad9d4602d5ac18d0 [8/8] vgaarb: replace
vga_set_legacy_decoding with a flag to vga_client_{,un}register
config: x86_64-randconfig-r035-20210316 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
50c7504a93fdb90c26870db8c8ea7add895c7725)
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
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git remote add hch-misc
git://git.infradead.org/users/hch/misc.git
git fetch --no-tags hch-misc vgaarb-cleanups
git checkout 1b5803735663928e9ddb2ca5ad9d4602d5ac18d0
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/gpu/vga/vgaarb.c:849:16: error: redefinition of 'flags' with a
different type: 'unsigned long' vs 'unsigned int'
unsigned long flags;
^
drivers/gpu/vga/vgaarb.c:844:60: note: previous definition is here
int vga_client_register(struct pci_dev *pdev, unsigned int flags,
^
> drivers/gpu/vga/vgaarb.c:851:2: warning: comparison of distinct
pointer types ('unsigned long *' and 'typeof (flags) *' (aka 'unsigned
int *')) [-Wcompare-distinct-pointer-types]
spin_lock_irqsave(&vga_lock, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:251:3: note: expanded from macro
'raw_spin_lock_irqsave'
typecheck(unsigned long, flags); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/typecheck.h:12:18: note: expanded from macro 'typecheck'
(void)(&__dummy == &__dummy2); \
~~~~~~~~ ^ ~~~~~~~~~
drivers/gpu/vga/vgaarb.c:872:16: error: redefinition of 'flags' with a
different type: 'unsigned long' vs 'unsigned int'
unsigned long flags;
^
drivers/gpu/vga/vgaarb.c:869:63: note: previous definition is here
void vga_client_unregister(struct pci_dev *pdev, unsigned int flags)
^
drivers/gpu/vga/vgaarb.c:874:2: warning: comparison of distinct pointer types
('unsigned long *' and 'typeof (flags) *' (aka 'unsigned int *'))
[-Wcompare-distinct-pointer-types]
spin_lock_irqsave(&vga_lock, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:251:3: note: expanded from macro
'raw_spin_lock_irqsave'
typecheck(unsigned long, flags); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/typecheck.h:12:18: note: expanded from macro 'typecheck'
(void)(&__dummy == &__dummy2); \
~~~~~~~~ ^ ~~~~~~~~~
2 warnings and 2 errors generated.
vim +851 drivers/gpu/vga/vgaarb.c
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 818
b754b35b089ddf Daniel Vetter 2016-08-12 819 /**
b754b35b089ddf Daniel Vetter 2016-08-12 820 * vga_client_register - register
or unregister a VGA arbitration client
b754b35b089ddf Daniel Vetter 2016-08-12 821 * @pdev: pci device of the VGA
client
1b580373566392 Christoph Hellwig 2021-03-16 822 * @flags: VGAARB_*
585b7655450bfe Christoph Hellwig 2021-03-15 823 * @set_decode: vga decode change
callback
b754b35b089ddf Daniel Vetter 2016-08-12 824 *
b754b35b089ddf Daniel Vetter 2016-08-12 825 * Clients have two callback
mechanisms they can use.
b754b35b089ddf Daniel Vetter 2016-08-12 826 *
585b7655450bfe Christoph Hellwig 2021-03-15 827 * @set_decode callback: If a
client can disable its GPU VGA resource, it
b754b35b089ddf Daniel Vetter 2016-08-12 828 * will get a callback from this to
set the encode/decode state.
b754b35b089ddf Daniel Vetter 2016-08-12 829 *
b754b35b089ddf Daniel Vetter 2016-08-12 830 * Rationale: we cannot disable VGA
decode resources unconditionally some single
b754b35b089ddf Daniel Vetter 2016-08-12 831 * GPU laptops seem to require ACPI
or BIOS access to the VGA registers to
b754b35b089ddf Daniel Vetter 2016-08-12 832 * control things like backlights
etc. Hopefully newer multi-GPU laptops do
b754b35b089ddf Daniel Vetter 2016-08-12 833 * something saner, and desktops
won't have any special ACPI for this. The
b754b35b089ddf Daniel Vetter 2016-08-12 834 * driver will get a callback when
VGA arbitration is first used by userspace
b754b35b089ddf Daniel Vetter 2016-08-12 835 * since some older X servers have
issues.
b754b35b089ddf Daniel Vetter 2016-08-12 836 *
b754b35b089ddf Daniel Vetter 2016-08-12 837 * This function does not check
whether a client for @pdev has been registered
b754b35b089ddf Daniel Vetter 2016-08-12 838 * already.
b754b35b089ddf Daniel Vetter 2016-08-12 839 *
2fc64c446180ec Christoph Hellwig 2021-03-15 840 * To unregister just call
vga_client_unregister().
b754b35b089ddf Daniel Vetter 2016-08-12 841 *
b754b35b089ddf Daniel Vetter 2016-08-12 842 * Returns: 0 on success, -1 on
failure
b754b35b089ddf Daniel Vetter 2016-08-12 843 */
1b580373566392 Christoph Hellwig 2021-03-16 844 int vga_client_register(struct
pci_dev *pdev, unsigned int flags,
585b7655450bfe Christoph Hellwig 2021-03-15 845 unsigned int (*set_decode)(struct
pci_dev *pdev, bool decode))
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 846 {
934f992c763ae1 Chris Wilson 2011-01-20 847 int ret = -ENODEV;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 848 struct vga_device *vgadev;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 849 unsigned long flags;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 850
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 @851 spin_lock_irqsave(&vga_lock,
flags);
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 852 vgadev = vgadev_find(pdev);
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 853 if (!vgadev)
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 854 goto bail;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 855
585b7655450bfe Christoph Hellwig 2021-03-15 856 vgadev->set_decode =
set_decode;
1b580373566392 Christoph Hellwig 2021-03-16 857 if (flags &
VGAARB_DISABLE_LEGACY_DECODING)
1b580373566392 Christoph Hellwig 2021-03-16 858
vga_update_device_decodes(vgadev,
1b580373566392 Christoph Hellwig 2021-03-16 859 set_decode(pdev, false) &
VGA_RSRC_LEGACY_MASK);
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 860 ret = 0;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 861
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 862 bail:
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 863
spin_unlock_irqrestore(&vga_lock, flags);
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 864 return ret;
deb2d2ecd43dfc Benjamin Herrenschmidt 2009-08-11 865
:::::: The code at line 851 was first introduced by commit
:::::: deb2d2ecd43dfc51efe71eed7128fda514da96c6 PCI/GPU: implement VGA arbitration on
Linux
:::::: TO: Benjamin Herrenschmidt <benh(a)kernel.crashing.org>
:::::: CC: Jesse Barnes <jbarnes(a)virtuousgeek.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org