* [pci:review/vga 1/9] drivers/pci/vgaarb.c:245:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-07-24 18:00 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-24 18:00 UTC (permalink / raw
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 31164 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Bjorn Helgaas <helgaas@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git review/vga
head: d3ff98e99536cd76e77696889600ee06fe5253b2
commit: e7d0ca67cfb1c61feb5fed7632cedb69e7ccdd79 [1/9] PCI/VGA: Move vgaarb to drivers/pci
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-c001-20210723 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9625ca5b602616b2f5584e8a49ba93c52c141e40)
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
# https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?id=e7d0ca67cfb1c61feb5fed7632cedb69e7ccdd79
git remote add pci https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
git fetch --no-tags pci review/vga
git checkout e7d0ca67cfb1c61feb5fed7632cedb69e7ccdd79
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross clang-analyzer ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~
drivers/acpi/acpica/rscreate.c:327:5: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
strcpy(user_prt->source,
^~~~~~
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
31 warnings generated.
Suppressed 31 warnings (2 in non-user code, 29 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
fs/kernfs/symlink.c:77:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
strcpy(s, "../");
^~~~~~
fs/kernfs/symlink.c:77:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
strcpy(s, "../");
^~~~~~
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
fs/sysfs/file.c:54:2: warning: Null pointer passed as 1st argument to memory set function [clang-analyzer-unix.cstring.NullArg]
memset(buf, 0, PAGE_SIZE);
^ ~~~
fs/sysfs/file.c:49:10: note: Calling 'seq_get_buf'
count = seq_get_buf(sf, &buf);
^~~~~~~~~~~~~~~~~~~~~
include/linux/seq_file.h:65:9: note: Assuming field 'count' is <= field 'size'
BUG_ON(m->count > m->size);
^
include/asm-generic/bug.h:65:45: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/seq_file.h:65:2: note: Taking false branch
BUG_ON(m->count > m->size);
^
include/asm-generic/bug.h:65:32: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
include/linux/seq_file.h:65:2: note: Loop condition is false. Exiting loop
BUG_ON(m->count > m->size);
^
include/asm-generic/bug.h:65:27: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
include/linux/seq_file.h:66:6: note: Assuming field 'count' is >= field 'size'
if (m->count < m->size)
^~~~~~~~~~~~~~~~~~
include/linux/seq_file.h:66:2: note: Taking false branch
if (m->count < m->size)
^
include/linux/seq_file.h:69:3: note: Null pointer value stored to 'buf'
*bufp = NULL;
^~~~~~~~~~~~
fs/sysfs/file.c:49:10: note: Returning from 'seq_get_buf'
count = seq_get_buf(sf, &buf);
^~~~~~~~~~~~~~~~~~~~~
fs/sysfs/file.c:50:6: note: Assuming the condition is false
if (count < PAGE_SIZE) {
^~~~~~~~~~~~~~~~~
fs/sysfs/file.c:50:2: note: Taking false branch
if (count < PAGE_SIZE) {
^
fs/sysfs/file.c:54:2: note: Null pointer passed as 1st argument to memory set function
memset(buf, 0, PAGE_SIZE);
^ ~~~
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
>> drivers/pci/vgaarb.c:245:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = &vgadev->pdev->dev;
^~~ ~~~~~~~~~~~~~~~~~~
drivers/pci/vgaarb.c:245:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = &vgadev->pdev->dev;
^~~ ~~~~~~~~~~~~~~~~~~
drivers/pci/vgaarb.c:394:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = &vgadev->pdev->dev;
^~~ ~~~~~~~~~~~~~~~~~~
drivers/pci/vgaarb.c:394:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = &vgadev->pdev->dev;
^~~ ~~~~~~~~~~~~~~~~~~
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
6 warnings generated.
drivers/pci/switch/switchtec.c:118:16: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
stuser->state = state;
^
drivers/pci/switch/switchtec.c:239:10: note: Left side of '&&' is false
stdev = container_of(work, struct switchtec_dev, mrpc_work);
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/pci/switch/switchtec.c:239:10: note: Taking false branch
stdev = container_of(work, struct switchtec_dev, mrpc_work);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/pci/switch/switchtec.c:239:10: note: Loop condition is false. Exiting loop
stdev = container_of(work, struct switchtec_dev, mrpc_work);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/pci/switch/switchtec.c:241:2: note: Taking false branch
dev_dbg(&stdev->dev, "%s\n", __func__);
^
include/linux/dev_printk.h:130:2: note: expanded from macro 'dev_dbg'
if (0) \
^
drivers/pci/switch/switchtec.c:245:2: note: Calling 'mrpc_complete_cmd'
mrpc_complete_cmd(stdev);
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/switch/switchtec.c:192:6: note: Assuming the condition is false
if (list_empty(&stdev->mrpc_queue))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/switch/switchtec.c:192:2: note: Taking false branch
if (list_empty(&stdev->mrpc_queue))
^
drivers/pci/switch/switchtec.c:195:11: note: Left side of '&&' is false
stuser = list_entry(stdev->mrpc_queue.next, struct switchtec_user,
^
include/linux/list.h:511:2: note: expanded from macro 'list_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/pci/switch/switchtec.c:195:11: note: Taking false branch
stuser = list_entry(stdev->mrpc_queue.next, struct switchtec_user,
^
include/linux/list.h:511:2: note: expanded from macro 'list_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
vim +/dev +245 drivers/pci/vgaarb.c
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 241
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 242 static struct vga_device *__vga_tryget(struct vga_device *vgadev,
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 243 unsigned int rsrc)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 244 {
a75d68f62106fe drivers/gpu/vga/vgaarb.c Bjorn Helgaas 2016-11-17 @245 struct device *dev = &vgadev->pdev->dev;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 246 unsigned int wants, legacy_wants, match;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 247 struct vga_device *conflict;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 248 unsigned int pci_bits;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 249 u32 flags = 0;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 250
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 251 /* Account for "normal" resources to lock. If we decode the legacy,
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 252 * counterpart, we need to request it as well
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 253 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 254 if ((rsrc & VGA_RSRC_NORMAL_IO) &&
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 255 (vgadev->decodes & VGA_RSRC_LEGACY_IO))
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 256 rsrc |= VGA_RSRC_LEGACY_IO;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 257 if ((rsrc & VGA_RSRC_NORMAL_MEM) &&
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 258 (vgadev->decodes & VGA_RSRC_LEGACY_MEM))
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 259 rsrc |= VGA_RSRC_LEGACY_MEM;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 260
a75d68f62106fe drivers/gpu/vga/vgaarb.c Bjorn Helgaas 2016-11-17 261 vgaarb_dbg(dev, "%s: %d\n", __func__, rsrc);
a75d68f62106fe drivers/gpu/vga/vgaarb.c Bjorn Helgaas 2016-11-17 262 vgaarb_dbg(dev, "%s: owns: %d\n", __func__, vgadev->owns);
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 263
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 264 /* Check what resources we need to acquire */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 265 wants = rsrc & ~vgadev->owns;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 266
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 267 /* We already own everything, just mark locked & bye bye */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 268 if (wants == 0)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 269 goto lock_them;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 270
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 271 /* We don't need to request a legacy resource, we just enable
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 272 * appropriate decoding and go
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 273 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 274 legacy_wants = wants & VGA_RSRC_LEGACY_MASK;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 275 if (legacy_wants == 0)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 276 goto enable_them;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 277
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 278 /* Ok, we don't, let's find out how we need to kick off */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 279 list_for_each_entry(conflict, &vga_list, list) {
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 280 unsigned int lwants = legacy_wants;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 281 unsigned int change_bridge = 0;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 282
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 283 /* Don't conflict with myself */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 284 if (vgadev == conflict)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 285 continue;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 286
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 287 /* Check if the architecture allows a conflict between those
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 288 * 2 devices or if they are on separate domains
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 289 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 290 if (!vga_conflicts(vgadev->pdev, conflict->pdev))
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 291 continue;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 292
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 293 /* We have a possible conflict. before we go further, we must
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 294 * check if we sit on the same bus as the conflicting device.
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 295 * if we don't, then we must tie both IO and MEM resources
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 296 * together since there is only a single bit controlling
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 297 * VGA forwarding on P2P bridges
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 298 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 299 if (vgadev->pdev->bus != conflict->pdev->bus) {
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 300 change_bridge = 1;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 301 lwants = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 302 }
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 303
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 304 /* Check if the guy has a lock on the resource. If he does,
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 305 * return the conflicting entry
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 306 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 307 if (conflict->locks & lwants)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 308 return conflict;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 309
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 310 /* Ok, now check if it owns the resource we want. We can
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 311 * lock resources that are not decoded, therefore a device
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 312 * can own resources it doesn't decode.
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 313 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 314 match = lwants & conflict->owns;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 315 if (!match)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 316 continue;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 317
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 318 /* looks like he doesn't have a lock, we can steal
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 319 * them from him
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 320 */
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 321
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 322 flags = 0;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 323 pci_bits = 0;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 324
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 325 /* If we can't control legacy resources via the bridge, we
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 326 * also need to disable normal decoding.
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 327 */
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 328 if (!conflict->bridge_has_one_vga) {
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 329 if ((match & conflict->decodes) & VGA_RSRC_LEGACY_MEM)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 330 pci_bits |= PCI_COMMAND_MEMORY;
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 331 if ((match & conflict->decodes) & VGA_RSRC_LEGACY_IO)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 332 pci_bits |= PCI_COMMAND_IO;
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 333
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 334 if (pci_bits) {
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 335 vga_irq_set_state(conflict, false);
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 336 flags |= PCI_VGA_STATE_CHANGE_DECODES;
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 337 }
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 338 }
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 339
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 340 if (change_bridge)
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 341 flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 342
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 343 pci_set_vga_state(conflict->pdev, false, pci_bits, flags);
f22d776f3e280e drivers/gpu/vga/vgaarb.c Alex Williamson 2013-08-15 344 conflict->owns &= ~match;
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 345
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 346 /* If we disabled normal decoding, reflect it in owns */
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 347 if (pci_bits & PCI_COMMAND_MEMORY)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 348 conflict->owns &= ~VGA_RSRC_NORMAL_MEM;
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 349 if (pci_bits & PCI_COMMAND_IO)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 350 conflict->owns &= ~VGA_RSRC_NORMAL_IO;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 351 }
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 352
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 353 enable_them:
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 354 /* ok dude, we got it, everybody conflicting has been disabled, let's
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 355 * enable us. Mark any bits in "owns" regardless of whether we
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 356 * decoded them. We can lock resources we don't decode, therefore
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 357 * we must track them via "owns".
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 358 */
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 359 flags = 0;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 360 pci_bits = 0;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 361
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 362 if (!vgadev->bridge_has_one_vga) {
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 363 flags |= PCI_VGA_STATE_CHANGE_DECODES;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 364 if (wants & (VGA_RSRC_LEGACY_MEM|VGA_RSRC_NORMAL_MEM))
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 365 pci_bits |= PCI_COMMAND_MEMORY;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 366 if (wants & (VGA_RSRC_LEGACY_IO|VGA_RSRC_NORMAL_IO))
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 367 pci_bits |= PCI_COMMAND_IO;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 368 }
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 369 if (wants & VGA_RSRC_LEGACY_MASK)
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 370 flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 371
3448a19da479b6 drivers/gpu/vga/vgaarb.c Dave Airlie 2010-06-01 372 pci_set_vga_state(vgadev->pdev, true, pci_bits, flags);
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 373
5d90ccf908bd80 drivers/gpu/vga/vgaarb.c Thierry Reding 2015-08-12 374 if (!vgadev->bridge_has_one_vga)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 375 vga_irq_set_state(vgadev, true);
5d90ccf908bd80 drivers/gpu/vga/vgaarb.c Thierry Reding 2015-08-12 376
4e4e7dc55af5aa drivers/gpu/vga/vgaarb.c Alex Williamson 2014-07-03 377 vgadev->owns |= wants;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 378 lock_them:
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 379 vgadev->locks |= (rsrc & VGA_RSRC_LEGACY_MASK);
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 380 if (rsrc & VGA_RSRC_LEGACY_IO)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 381 vgadev->io_lock_cnt++;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 382 if (rsrc & VGA_RSRC_LEGACY_MEM)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 383 vgadev->mem_lock_cnt++;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 384 if (rsrc & VGA_RSRC_NORMAL_IO)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 385 vgadev->io_norm_cnt++;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 386 if (rsrc & VGA_RSRC_NORMAL_MEM)
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 387 vgadev->mem_norm_cnt++;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 388
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 389 return NULL;
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 390 }
deb2d2ecd43dfc drivers/gpu/vga/vgaarb.c Benjamin Herrenschmidt 2009-08-11 391
:::::: The code at line 245 was first introduced by commit
:::::: a75d68f62106fe66c4b8b96c0ee7155bdafc6f06 vgaarb: Use dev_printk() when possible
:::::: TO: Bjorn Helgaas <bhelgaas@google.com>
:::::: CC: Daniel Vetter <daniel.vetter@ffwll.ch>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35643 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-07-24 18:00 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-24 18:00 [pci:review/vga 1/9] drivers/pci/vgaarb.c:245:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.