[PATCH] PCI: fix build errors with CONFIG_PCI=n

From: Randy.Dunlap
Date: Tue Nov 16 2004 - 17:52:19 EST



Fix (most of) kernel build for CONFIG_PCI=n. Fixes these 3 errors:

1. drivers/parport/parport_pc.c:3162: error: `parport_init_mode'
undeclared (first use in this function)

2. arch/x86_64/kernel/built-in.o(.text+0x8186): In function
`quirk_intel_irqbalance':
: undefined reference to `raw_pci_ops'

Kconfig change:
3. arch/x86_64/kernel/pci-gart.c:194: error: `pci_bus_type' undeclared
(first use in this function)

Still does not fix these 2 (similar):
a. drivers/built-in.o(.text+0x3dcd8): In function
`pnpacpi_allocated_resource':
: undefined reference to `pcibios_penalize_isa_irq'
b. drivers/built-in.o(.text+0xb4d4): In function
`pnpbios_parse_allocated_irqresource':
: undefined reference to `pcibios_penalize_isa_irq'

diffstat:=
arch/i386/kernel/quirks.c | 3 ++-
arch/x86_64/Kconfig | 1 +
drivers/parport/parport_pc.c | 22 ++++++++++++++++++----
3 files changed, 21 insertions(+), 5 deletions(-)

Signed-off-by: Randy Dunlap <rddunlap@xxxxxxxx>

diff -Naurp ./drivers/parport/parport_pc.c~config_pci ./drivers/parport/parport_pc.c
--- ./drivers/parport/parport_pc.c~config_pci 2004-11-15 10:02:00.023963736 -0800
+++ ./drivers/parport/parport_pc.c 2004-11-16 11:15:24.546578032 -0800
@@ -3154,8 +3154,9 @@ static int __init parport_parse_dma(cons
PARPORT_DMA_NONE, PARPORT_DMA_NOFIFO);
}

-static int __init parport_init_mode_setup(const char *str) {
-
+#ifdef CONFIG_PCI
+static int __init parport_init_mode_setup(const char *str)
+{
printk(KERN_DEBUG "parport_pc.c: Specified parameter parport_init_mode=%s\n", str);

if (!strcmp (str, "spp"))
@@ -3170,11 +3171,16 @@ static int __init parport_init_mode_setu
parport_init_mode=5;
return 1;
}
+#else
+static int __inline__ __init parport_init_mode_setup(const char *str)
+{
+ return 1;
+}
+#endif

#ifdef MODULE
static const char *irq[PARPORT_PC_MAX_PORTS];
static const char *dma[PARPORT_PC_MAX_PORTS];
-static const char *init_mode;

MODULE_PARM_DESC(io, "Base I/O address (SPP regs)");
module_param_array(io, int, NULL, 0);
@@ -3189,8 +3195,14 @@ module_param_array(dma, charp, NULL, 0);
MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation");
module_param(verbose_probing, int, 0644);
#endif
+
+#ifdef CONFIG_PCI
+static const char *init_mode;
MODULE_PARM_DESC(init_mode, "Initialise mode for VIA VT8231 port (spp, ps2, epp, ecp or ecpepp)");
MODULE_PARM(init_mode, "s");
+#else
+#define init_mode 0
+#endif

static int __init parse_parport_params(void)
{
@@ -3314,7 +3326,9 @@ __setup ("parport=", parport_setup);
* parport_init_mode=[spp|ps2|epp|ecp|ecpepp]
*/

-__setup("parport_init_mode=",parport_init_mode_setup);
+#ifdef CONFIG_PCI
+__setup("parport_init_mode=", parport_init_mode_setup);
+#endif

#endif

diff -Naurp ./arch/i386/kernel/quirks.c~config_pci ./arch/i386/kernel/quirks.c
--- ./arch/i386/kernel/quirks.c~config_pci 2004-11-15 10:01:58.430206024 -0800
+++ ./arch/i386/kernel/quirks.c 2004-11-16 11:24:25.204385552 -0800
@@ -1,10 +1,11 @@
/*
* This file contains work-arounds for x86 and x86_64 platform bugs.
*/
+#include <linux/config.h>
#include <linux/pci.h>
#include <linux/irq.h>

-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP)
+#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)

void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
{
diff -Naurp ./arch/x86_64/Kconfig~config_pci ./arch/x86_64/Kconfig
--- ./arch/x86_64/Kconfig~config_pci 2004-11-15 10:01:58.985121664 -0800
+++ ./arch/x86_64/Kconfig 2004-11-16 10:50:00.987194264 -0800
@@ -306,6 +306,7 @@ config NR_CPUS

config GART_IOMMU
bool "IOMMU support"
+ depends on PCI
help
Support the K8 IOMMU. Needed to run systems with more than 4GB of memory
properly with 32-bit PCI devices that do not support DAC (Double Address