* [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
@ 2026-03-12 22:47 Bjorn Helgaas
2026-03-14 17:05 ` kernel test robot
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Bjorn Helgaas @ 2026-03-12 22:47 UTC (permalink / raw)
To: linux-pci; +Cc: Simon Richter, linux-kernel, Bjorn Helgaas
pci_set_vga_state() is only used in vgaarb.c. Move it from pci.c to
vgaarb.c, make it static, and remove the declaration from
include/linux/pci.h.
pci_register_set_vga_state(), which registers an arch-specific function to
change the VGA routing, stays in pci.c so it is available even if vgaarb.c
is not compiled.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
drivers/pci/pci.c | 57 ++------------------------------------------
drivers/pci/pci.h | 3 +++
drivers/pci/vgaarb.c | 53 ++++++++++++++++++++++++++++++++++++++++
include/linux/pci.h | 3 ---
4 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8479c2e1f74f..a8ee33e65797 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -6141,8 +6141,8 @@ void __init pci_register_set_vga_state(arch_set_vga_state_t func)
arch_set_vga_state = func; /* NULL disables */
}
-static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
- unsigned int command_bits, u32 flags)
+int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
+ unsigned int command_bits, u32 flags)
{
if (arch_set_vga_state)
return arch_set_vga_state(dev, decode, command_bits,
@@ -6150,59 +6150,6 @@ static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
return 0;
}
-/**
- * pci_set_vga_state - set VGA decode state on device and parents if requested
- * @dev: the PCI device
- * @decode: true = enable decoding, false = disable decoding
- * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
- * @flags: traverse ancestors and change bridges
- * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
- */
-int pci_set_vga_state(struct pci_dev *dev, bool decode,
- unsigned int command_bits, u32 flags)
-{
- struct pci_bus *bus;
- struct pci_dev *bridge;
- u16 cmd;
- int rc;
-
- WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
-
- /* ARCH specific VGA enables */
- rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
- if (rc)
- return rc;
-
- if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
- pci_read_config_word(dev, PCI_COMMAND, &cmd);
- if (decode)
- cmd |= command_bits;
- else
- cmd &= ~command_bits;
- pci_write_config_word(dev, PCI_COMMAND, cmd);
- }
-
- if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
- return 0;
-
- bus = dev->bus;
- while (bus) {
- bridge = bus->self;
- if (bridge) {
- pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
- &cmd);
- if (decode)
- cmd |= PCI_BRIDGE_CTL_VGA;
- else
- cmd &= ~PCI_BRIDGE_CTL_VGA;
- pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
- cmd);
- }
- bus = bus->parent;
- }
- return 0;
-}
-
#ifdef CONFIG_ACPI
bool pci_pr3_present(struct pci_dev *pdev)
{
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 13d998fbacce..0fb8f78ddf32 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -110,6 +110,9 @@ struct pcie_tlp_log;
extern const unsigned char pcie_link_speed[];
extern bool pci_early_dump;
+int pci_set_vga_state_arch(struct pci_dev *dev, bool decode, unsigned int
+ command, u32 flags);
+
extern struct mutex pci_rescan_remove_lock;
bool pcie_cap_has_lnkctl(const struct pci_dev *dev);
diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
index d9383bf541e7..8b37c206f941 100644
--- a/drivers/pci/vgaarb.c
+++ b/drivers/pci/vgaarb.c
@@ -207,6 +207,59 @@ static void vga_check_first_use(void)
}
}
+/**
+ * pci_set_vga_state - set VGA decode state on device and parents if requested
+ * @dev: the PCI device
+ * @decode: true = enable decoding, false = disable decoding
+ * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
+ * @flags: traverse ancestors and change bridges
+ * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
+ */
+static int pci_set_vga_state(struct pci_dev *dev, bool decode,
+ unsigned int command_bits, u32 flags)
+{
+ struct pci_bus *bus;
+ struct pci_dev *bridge;
+ u16 cmd;
+ int rc;
+
+ WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
+
+ /* ARCH specific VGA enables */
+ rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
+ if (rc)
+ return rc;
+
+ if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
+ pci_read_config_word(dev, PCI_COMMAND, &cmd);
+ if (decode)
+ cmd |= command_bits;
+ else
+ cmd &= ~command_bits;
+ pci_write_config_word(dev, PCI_COMMAND, cmd);
+ }
+
+ if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
+ return 0;
+
+ bus = dev->bus;
+ while (bus) {
+ bridge = bus->self;
+ if (bridge) {
+ pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
+ &cmd);
+ if (decode)
+ cmd |= PCI_BRIDGE_CTL_VGA;
+ else
+ cmd &= ~PCI_BRIDGE_CTL_VGA;
+ pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
+ cmd);
+ }
+ bus = bus->parent;
+ }
+ return 0;
+}
+
static struct vga_device *__vga_tryget(struct vga_device *vgadev,
unsigned int rsrc)
{
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 1c270f1d5123..bc102aa43f2e 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1720,9 +1720,6 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus,
#define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
#define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
-int pci_set_vga_state(struct pci_dev *pdev, bool decode,
- unsigned int command_bits, u32 flags);
-
/*
* Virtual interrupts allow for more interrupts to be allocated
* than the device has interrupts for. These are not programmed
--
2.51.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
2026-03-12 22:47 [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c Bjorn Helgaas
@ 2026-03-14 17:05 ` kernel test robot
2026-03-14 19:17 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-03-14 17:05 UTC (permalink / raw)
To: Bjorn Helgaas, linux-pci
Cc: oe-kbuild-all, Simon Richter, linux-kernel, Bjorn Helgaas
Hi Bjorn,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus linus/master v7.0-rc3 next-20260313]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Bjorn-Helgaas/PCI-VGA-Move-pci_set_vga_state-to-vgaarb-c/20260314-150705
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20260312224713.1305228-1-bhelgaas%40google.com
patch subject: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
config: x86_64-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260314/202603141825.YjwGEnoa-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260314/202603141825.YjwGEnoa-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603141825.YjwGEnoa-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/pci/vgaarb.c: In function 'pci_set_vga_state':
>> drivers/pci/vgaarb.c:229:14: error: implicit declaration of function 'pci_set_vga_state_arch'; did you mean 'pci_set_vga_state'? [-Wimplicit-function-declaration]
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ^~~~~~~~~~~~~~~~~~~~~~
| pci_set_vga_state
vim +229 drivers/pci/vgaarb.c
209
210 /**
211 * pci_set_vga_state - set VGA decode state on device and parents if requested
212 * @dev: the PCI device
213 * @decode: true = enable decoding, false = disable decoding
214 * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
215 * @flags: traverse ancestors and change bridges
216 * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
217 */
218 static int pci_set_vga_state(struct pci_dev *dev, bool decode,
219 unsigned int command_bits, u32 flags)
220 {
221 struct pci_bus *bus;
222 struct pci_dev *bridge;
223 u16 cmd;
224 int rc;
225
226 WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227
228 /* ARCH specific VGA enables */
> 229 rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
230 if (rc)
231 return rc;
232
233 if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
234 pci_read_config_word(dev, PCI_COMMAND, &cmd);
235 if (decode)
236 cmd |= command_bits;
237 else
238 cmd &= ~command_bits;
239 pci_write_config_word(dev, PCI_COMMAND, cmd);
240 }
241
242 if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
243 return 0;
244
245 bus = dev->bus;
246 while (bus) {
247 bridge = bus->self;
248 if (bridge) {
249 pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
250 &cmd);
251 if (decode)
252 cmd |= PCI_BRIDGE_CTL_VGA;
253 else
254 cmd &= ~PCI_BRIDGE_CTL_VGA;
255 pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
256 cmd);
257 }
258 bus = bus->parent;
259 }
260 return 0;
261 }
262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
2026-03-12 22:47 [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c Bjorn Helgaas
2026-03-14 17:05 ` kernel test robot
@ 2026-03-14 19:17 ` kernel test robot
2026-04-07 4:01 ` kernel test robot
2026-04-07 4:01 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-03-14 19:17 UTC (permalink / raw)
To: Bjorn Helgaas, linux-pci
Cc: llvm, oe-kbuild-all, Simon Richter, linux-kernel, Bjorn Helgaas
Hi Bjorn,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus next-20260313]
[cannot apply to linus/master v6.16-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Bjorn-Helgaas/PCI-VGA-Move-pci_set_vga_state-to-vgaarb-c/20260314-150705
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20260312224713.1305228-1-bhelgaas%40google.com
patch subject: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260314/202603142059.lRB5ARkv-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260314/202603142059.lRB5ARkv-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603142059.lRB5ARkv-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/pci/vgaarb.c:229:7: error: call to undeclared function 'pci_set_vga_state_arch'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ^
drivers/pci/vgaarb.c:229:7: note: did you mean 'pci_set_vga_state'?
drivers/pci/vgaarb.c:218:12: note: 'pci_set_vga_state' declared here
218 | static int pci_set_vga_state(struct pci_dev *dev, bool decode,
| ^
219 | unsigned int command_bits, u32 flags)
220 | {
221 | struct pci_bus *bus;
222 | struct pci_dev *bridge;
223 | u16 cmd;
224 | int rc;
225 |
226 | WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227 |
228 | /* ARCH specific VGA enables */
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ~~~~~~~~~~~~~~~~~~~~~~
| pci_set_vga_state
1 error generated.
vim +/pci_set_vga_state_arch +229 drivers/pci/vgaarb.c
209
210 /**
211 * pci_set_vga_state - set VGA decode state on device and parents if requested
212 * @dev: the PCI device
213 * @decode: true = enable decoding, false = disable decoding
214 * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
215 * @flags: traverse ancestors and change bridges
216 * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
217 */
218 static int pci_set_vga_state(struct pci_dev *dev, bool decode,
219 unsigned int command_bits, u32 flags)
220 {
221 struct pci_bus *bus;
222 struct pci_dev *bridge;
223 u16 cmd;
224 int rc;
225
226 WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227
228 /* ARCH specific VGA enables */
> 229 rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
230 if (rc)
231 return rc;
232
233 if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
234 pci_read_config_word(dev, PCI_COMMAND, &cmd);
235 if (decode)
236 cmd |= command_bits;
237 else
238 cmd &= ~command_bits;
239 pci_write_config_word(dev, PCI_COMMAND, cmd);
240 }
241
242 if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
243 return 0;
244
245 bus = dev->bus;
246 while (bus) {
247 bridge = bus->self;
248 if (bridge) {
249 pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
250 &cmd);
251 if (decode)
252 cmd |= PCI_BRIDGE_CTL_VGA;
253 else
254 cmd &= ~PCI_BRIDGE_CTL_VGA;
255 pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
256 cmd);
257 }
258 bus = bus->parent;
259 }
260 return 0;
261 }
262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
2026-03-12 22:47 [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c Bjorn Helgaas
2026-03-14 17:05 ` kernel test robot
2026-03-14 19:17 ` kernel test robot
@ 2026-04-07 4:01 ` kernel test robot
2026-04-07 4:01 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-04-07 4:01 UTC (permalink / raw)
To: Bjorn Helgaas, linux-pci
Cc: oe-kbuild-all, Simon Richter, linux-kernel, Bjorn Helgaas
Hi Bjorn,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus linus/master v7.0-rc6]
[cannot apply to next-20260403]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Bjorn-Helgaas/PCI-VGA-Move-pci_set_vga_state-to-vgaarb-c/20260314-150705
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20260312224713.1305228-1-bhelgaas%40google.com
patch subject: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20260406/202604060118.pIPjke7I-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260406/202604060118.pIPjke7I-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604060118.pIPjke7I-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/pci/vgaarb.c: In function 'pci_set_vga_state':
>> drivers/pci/vgaarb.c:229:14: error: implicit declaration of function 'pci_set_vga_state_arch'; did you mean 'pci_set_vga_state'? [-Wimplicit-function-declaration]
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ^~~~~~~~~~~~~~~~~~~~~~
| pci_set_vga_state
vim +229 drivers/pci/vgaarb.c
209
210 /**
211 * pci_set_vga_state - set VGA decode state on device and parents if requested
212 * @dev: the PCI device
213 * @decode: true = enable decoding, false = disable decoding
214 * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
215 * @flags: traverse ancestors and change bridges
216 * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
217 */
218 static int pci_set_vga_state(struct pci_dev *dev, bool decode,
219 unsigned int command_bits, u32 flags)
220 {
221 struct pci_bus *bus;
222 struct pci_dev *bridge;
223 u16 cmd;
224 int rc;
225
226 WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227
228 /* ARCH specific VGA enables */
> 229 rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
230 if (rc)
231 return rc;
232
233 if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
234 pci_read_config_word(dev, PCI_COMMAND, &cmd);
235 if (decode)
236 cmd |= command_bits;
237 else
238 cmd &= ~command_bits;
239 pci_write_config_word(dev, PCI_COMMAND, cmd);
240 }
241
242 if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
243 return 0;
244
245 bus = dev->bus;
246 while (bus) {
247 bridge = bus->self;
248 if (bridge) {
249 pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
250 &cmd);
251 if (decode)
252 cmd |= PCI_BRIDGE_CTL_VGA;
253 else
254 cmd &= ~PCI_BRIDGE_CTL_VGA;
255 pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
256 cmd);
257 }
258 bus = bus->parent;
259 }
260 return 0;
261 }
262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
2026-03-12 22:47 [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c Bjorn Helgaas
` (2 preceding siblings ...)
2026-04-07 4:01 ` kernel test robot
@ 2026-04-07 4:01 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-04-07 4:01 UTC (permalink / raw)
To: Bjorn Helgaas, linux-pci
Cc: llvm, oe-kbuild-all, Simon Richter, linux-kernel, Bjorn Helgaas
Hi Bjorn,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus linus/master v7.0-rc6]
[cannot apply to next-20260403]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Bjorn-Helgaas/PCI-VGA-Move-pci_set_vga_state-to-vgaarb-c/20260314-150705
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20260312224713.1305228-1-bhelgaas%40google.com
patch subject: [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20260406/202604060643.IASWcNje-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260406/202604060643.IASWcNje-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604060643.IASWcNje-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/pci/vgaarb.c:229:7: error: call to undeclared function 'pci_set_vga_state_arch'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ^
drivers/pci/vgaarb.c:229:7: note: did you mean 'pci_set_vga_state'?
drivers/pci/vgaarb.c:218:12: note: 'pci_set_vga_state' declared here
218 | static int pci_set_vga_state(struct pci_dev *dev, bool decode,
| ^
219 | unsigned int command_bits, u32 flags)
220 | {
221 | struct pci_bus *bus;
222 | struct pci_dev *bridge;
223 | u16 cmd;
224 | int rc;
225 |
226 | WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227 |
228 | /* ARCH specific VGA enables */
229 | rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
| ~~~~~~~~~~~~~~~~~~~~~~
| pci_set_vga_state
1 error generated.
vim +/pci_set_vga_state_arch +229 drivers/pci/vgaarb.c
209
210 /**
211 * pci_set_vga_state - set VGA decode state on device and parents if requested
212 * @dev: the PCI device
213 * @decode: true = enable decoding, false = disable decoding
214 * @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
215 * @flags: traverse ancestors and change bridges
216 * CHANGE_BRIDGE_ONLY / CHANGE_BRIDGE
217 */
218 static int pci_set_vga_state(struct pci_dev *dev, bool decode,
219 unsigned int command_bits, u32 flags)
220 {
221 struct pci_bus *bus;
222 struct pci_dev *bridge;
223 u16 cmd;
224 int rc;
225
226 WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
227
228 /* ARCH specific VGA enables */
> 229 rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
230 if (rc)
231 return rc;
232
233 if (flags & PCI_VGA_STATE_CHANGE_DECODES) {
234 pci_read_config_word(dev, PCI_COMMAND, &cmd);
235 if (decode)
236 cmd |= command_bits;
237 else
238 cmd &= ~command_bits;
239 pci_write_config_word(dev, PCI_COMMAND, cmd);
240 }
241
242 if (!(flags & PCI_VGA_STATE_CHANGE_BRIDGE))
243 return 0;
244
245 bus = dev->bus;
246 while (bus) {
247 bridge = bus->self;
248 if (bridge) {
249 pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
250 &cmd);
251 if (decode)
252 cmd |= PCI_BRIDGE_CTL_VGA;
253 else
254 cmd &= ~PCI_BRIDGE_CTL_VGA;
255 pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
256 cmd);
257 }
258 bus = bus->parent;
259 }
260 return 0;
261 }
262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-04-07 4:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12 22:47 [PATCH v2] PCI/VGA: Move pci_set_vga_state() to vgaarb.c Bjorn Helgaas
2026-03-14 17:05 ` kernel test robot
2026-03-14 19:17 ` kernel test robot
2026-04-07 4:01 ` kernel test robot
2026-04-07 4:01 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox