# Custom kernel configuration issues. (8.0)



## Orum (Dec 20, 2009)

I'm upgrading a 7.2 machine to 8.0-p1, but I'm running into some problems when compiling the kernel with my custom config.  The config is mostly the same as it was for 7.2, removing a few things that aren't needed (STOP_NMI) or no longer exist/work in 8 (sio).  It's also fairly similar to another machine I upgraded to 8.0, which had no compilation issues.  My config is:

```
# Custom kernel config

cpu       I686_CPU
ident     EMERALD

options   SCHED_ULE           # ULE 3.0 scheduler
options   PREEMPTION          # Enable kernel thread preemption
options   INET                # InterNETworking
options   INET6               # IPv6 communications protocols
options   MROUTING            # Multicast routing support
options   FFS                 # Berkeley Fast Filesystem
options   SOFTUPDATES         # Enable FFS soft updates support
options   UFS_DIRHASH         # Improve performance on big directories
options   GEOM_PART_GPT       # GUID Partition Tables.
options   GEOM_LABEL          # Provides labelization
options   COMPAT_43TTY        # BSD 4.3 TTY compat [KEEP THIS!]
options   COMPAT_FREEBSD7     # Compatible with FreeBSD7
options   SCSI_DELAY=5000     # Delay (in ms) before probing SCSI
options   _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options   KBD_INSTALL_CDEV    # install a CDEV entry in /dev

device    cpufreq

device    crypto
device    padlock

device    pci

device    ata
device    atadisk        # ATA disk drives
device    atapicd        # ATAPI CDROM drives
options   ATA_STATIC_ID  # Static device numbering

device    atkbdc         # AT keyboard controller
device    atkbd          # AT keyboard
device    kbdmux         # keyboard multiplexer

device    vga            # VGA video card driver
device    splash         # Splash screen and screen saver support

device    sc

device    pmtimer

device    uart           # Generic UART driver

device    miibus         # MII bus support
device    fxp            # Intel EtherExpress PRO/100B (82557, 82558)
device    vr             # VIA Rhine, Rhine II

device    vlan           # 802.1q
device    lagg           # Link aggregation
device    loop           # Network loopback
device    random         # Entropy device
device    ether          # Ethernet support
device    tun            # Packet tunnel.
device    pty            # Pseudo-ttys (telnet etc)
device    md             # Memory "disks"

device    bpf            # Berkeley packet filter
device    pf
device    pflog
device    pfsync

options   DEVICE_POLLING

options   ALTQ
options   ALTQ_CBQ       # Class Based Queuing
options   ALTQ_RED       # Random Early Detection
options   ALTQ_RIO       # RED In/Out
options   ALTQ_HFSC      # Hierarchical Fair Service Queuing
options   ALTQ_PRIQ      # Priority Queuing

# USB support
device    uhci           # UHCI PCI->USB interface
device    ehci           # EHCI PCI->USB interface (USB 2.0)
device    usb            # USB Bus (required)
```
And, during compilation, this causes:

```
cc -O2 -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -std=gnu99  -Wsystem-headers -Werror -Wall
-Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual
-Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter -Wchar-subscripts -Winline -Wnested-externs
-Wredundant-decls -Wno-pointer-sign -c aicasm_gram.c
cc1: warnings being treated as errors
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y: In function 'process_field':
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1407: warning: comparison between signed and unsigned
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y: In function 'add_macro_arg':
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1556: warning: comparison between signed and unsigned
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1537: warning: unused variable 'i'
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1534: warning: unused parameter 'argnum'
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y: In function 'add_version':
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1914: warning: declaration of 'prefix' shadows a global declaration
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:68: warning: shadowed declaration is here
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y: At top level:
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:1933: warning: no previous prototype for 'yyerror'
aicasm_gram.c:1534: warning: no previous prototype for 'yyparse'
aicasm_gram.c: In function 'yyparse':
aicasm_gram.c:1560: warning: implicit declaration of function 'yylex'
aicasm_gram.c:1560: warning: nested extern declaration of 'yylex'
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:870: warning: comparison between signed and unsigned
/usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y:881: warning: comparison between signed and unsigned
*** Error code 1

Stop in /usr/obj/usr/src/sys/EMERALD.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
```
Anyone have an idea of what devices/options are conflicting/missing?  I've looked for a man page related to the aic7xxx device, and found nothing except aic6xxx man pages.


----------



## DutchDaemon (Dec 20, 2009)

aic7xxx -> ahc(4), ahd(4).

I think these show up as modules ahc_eisa.ko and ahd.ko.

I think I have _never_ seen aic7xxx build _without_ errors, but they were never fatal. If this doesn't clear up in a day or two, try excluding these modules from the build.


----------



## Orum (Dec 24, 2009)

Okay, trying to compile this w/o said module, with "MODULES_OVERRIDE=acpi", but this still tries to build the module, and fails the build.  Even when I exclude it with "WITHOUT_MODULES=ahc", it doesn't exclude it.  Any ideas?


----------



## DutchDaemon (Dec 25, 2009)

Not sure. Have you tried `# make cleandir && make cleanworld` in /usr/src before compiling the new kernel?


----------



## Orum (Dec 25, 2009)

`# make cleandir` didn't help.  I can try cleaning the world, but I'd just end up rebuilding it (as the upgrade procedure recommends buildworld, kernel, mergemaster -p, installworld, mergemaster).  Not sure why it wants to build the modules regardless :q.


----------



## SirDice (Dec 25, 2009)

Orum said:
			
		

> Not sure why it wants to build the modules regardless :q.


Everything not explicitly defined in the kernel config will be build as a module.


----------



## DutchDaemon (Dec 25, 2009)

My concern was that with a partially built world in /usr/obj already, the make process will just try finishing up what it started before because it is re-using already built code.


----------



## Orum (Dec 26, 2009)

SirDice said:
			
		

> Everything not explicitly defined in the kernel config will be build as a module.


Yeah, but it's not excluding it even with MODULES_OVERRIDE.


			
				DutchDaemon said:
			
		

> My concern was that with a partially built world in /usr/obj already, the make process will just try finishing up what it started before because it is re-using already built code.


Yeah, but user and kernel space are separate.  FWIW I did a `# make cleanworld` too, but the same problem happens when building the kernel.


----------



## DutchDaemon (Dec 26, 2009)

Orum said:
			
		

> Yeah, but user and kernel space are separate.



Sure, but they're both part of the world, and you were already partway through the kernel compilation when the module bombed. Too bad that cleaning the world didn't help, and I have no idea why your make.conf settings were ineffectual.


----------



## Orum (Dec 26, 2009)

Well, I backed up all relevant config, and reinstalled from a 8.0 CD, and restored config.  I've added functionality to the GENERIC kernel without removing anything that was already in there, and it's working, so I'll stick with that for now.


----------

