# [solved] Genkernel 3.4.7_pre3 won't work with >2.6.18

## fraterm

Genkernel (which I've grown used to over the past few years because it has made life easier) no longer works with the 2.6.20 kernel with the existing kernel config, the question I'd like answered is whether a sample config update exists so that errors like:

```
  SHIPPED scripts/kconfig/lex.zconf.c

  SHIPPED scripts/kconfig/zconf.hash.c

  HOSTCC  scripts/kconfig/zconf.tab.o

  HOSTLD  scripts/kconfig/conf

scripts/kconfig/conf -o arch/x86_64/Kconfig

.config:47:warning: trying to assign nonexistent symbol VM86

.config:148:warning: trying to assign nonexistent symbol GART_IOMMU

.config:351:warning: trying to assign nonexistent symbol NET_DIVERT

.config:688:warning: trying to assign nonexistent symbol SCSI_SATA

.config:689:warning: trying to assign nonexistent symbol SCSI_SATA_AHCI

.config:690:warning: trying to assign nonexistent symbol SCSI_SATA_SVW

.config:691:warning: trying to assign nonexistent symbol SCSI_ATA_PIIX

.config:692:warning: trying to assign nonexistent symbol SCSI_SATA_MV

.config:693:warning: trying to assign nonexistent symbol SCSI_SATA_NV

.config:694:warning: trying to assign nonexistent symbol SCSI_PDC_ADMA

.config:695:warning: trying to assign nonexistent symbol SCSI_SATA_QSTOR

.config:696:warning: trying to assign nonexistent symbol SCSI_SATA_PROMISE

.config:697:warning: trying to assign nonexistent symbol SCSI_SATA_SX4

.config:698:warning: trying to assign nonexistent symbol SCSI_SATA_SIL

.config:699:warning: trying to assign nonexistent symbol SCSI_SATA_SIL24

.config:700:warning: trying to assign nonexistent symbol SCSI_SATA_SIS

.config:701:warning: trying to assign nonexistent symbol SCSI_SATA_ULI

.config:702:warning: trying to assign nonexistent symbol SCSI_SATA_VIA

.config:703:warning: trying to assign nonexistent symbol SCSI_SATA_VITESSE

.config:704:warning: trying to assign nonexistent symbol SCSI_SATA_INTEL_COMBINED

.config:731:warning: trying to assign nonexistent symbol SCSI_QLA2XXX_EMBEDDED_FIRMWARE

.config:753:warning: trying to assign nonexistent symbol MD_RAID5

.config:755:warning: trying to assign nonexistent symbol MD_RAID6

.config:978:warning: trying to assign nonexistent symbol IPW_QOS

.config:1038:warning: trying to assign nonexistent symbol SYNCLINK_SYNCPPP

.config:1451:warning: symbol value 'm' invalid for VIDEO_V4L2

.config:1551:warning: trying to assign nonexistent symbol FB_FIRMWARE_EDID

.config:1668:warning: trying to assign nonexistent symbol SND_AC97_BUS

.config:1806:warning: trying to assign nonexistent symbol USB_HIDINPUT

.config:1872:warning: trying to assign nonexistent symbol USB_SERIAL_ANYDATA

.config:1968:warning: trying to assign nonexistent symbol IPATH_CORE

.config:2037:warning: trying to assign nonexistent symbol XFS_EXPORT

.config:2244:warning: trying to assign nonexistent symbol UNWIND_INFO

--

```

will no longer occur.

I understand that between 2.6.18 and 2.6.20 a whole bunch of stuff was renamed in the CONFIG_SATA area, formerly being CONFIG_SCSI_SATA, am I left back at the manual compilation days?

If going back to manual compilation can be avoided perhaps by someone having a sample config that would keep my genkernel compilability going that'd be ideal, if not, I guess I'm stuck hunting and pecking for each and every kernel option which seems rather silly, defeating the purpose for which genkernel was invented.

----------

## wynn

The best way out seems to run genkernel with your old config and the --menuconfig argument â you may want to use --kernel-config=<file> to make sure genkernel uses the right one.

You can then use the information in "2) Kernel panic â VFS error:" > "3) SATA and new, experimental, PATA in kernels 2.6.19 and later" in [FAQ] KC13: I just installed a new kernel and it won't boot to set up your SATA drives.

[Edit] If you want VM86 *Quote:*   

> This option is required by programs like DOSEMU to run 16-bit legacy code on X86 processors. It also may be needed by software like XFree86 to initialize some video cards via BIOS.

 you have to enable

```
[*] Configure standard kernel features (for small systems)
```

in "General setup".

 *fraterm wrote:*   

> I guess I'm stuck hunting and pecking for each and every kernel option which seems rather silly, defeating the purpose for which genkernel was invented.

 You might like to have a look at Updating KC11 â kernel compiling for the beginner it has a section on configuring a kernel from scratch which eliminates a lot of the "hunting and pecking".

----------

## fraterm

 *wynn wrote:*   

> The best way out seems to run genkernel with your old config and the --menuconfig argument â you may want to use --kernel-config=<file> to make sure genkernel uses the right one.
> 
> You can then use the information in "2) Kernel panic â VFS error:" > "3) SATA and new, experimental, PATA in kernels 2.6.19 and later" in [FAQ] KC13: I just installed a new kernel and it won't boot to set up your SATA drives.
> 
> [Edit] If you want VM86 *Quote:*   This option is required by programs like DOSEMU to run 16-bit legacy code on X86 processors. It also may be needed by software like XFree86 to initialize some video cards via BIOS. you have to enable
> ...

 

Thanks very much for all the suggestions, I'll try these out and report back on progress as it progresses.

----------

## wynn

 *fraterm wrote:*   

> Thanks very much for all the suggestions, I'll try these out and report back on progress as it progresses.

 Glad to help if I can â it's intimidating at first and, if you're short of time, irritating and frustrating too.

----------

## fraterm

 *fraterm wrote:*   

>  *wynn wrote:*   The best way out seems to run genkernel with your old config and the --menuconfig argument â you may want to use --kernel-config=<file> to make sure genkernel uses the right one.
> 
> You can then use the information in "2) Kernel panic â VFS error:" > "3) SATA and new, experimental, PATA in kernels 2.6.19 and later" in [FAQ] KC13: I just installed a new kernel and it won't boot to set up your SATA drives.
> 
> [Edit] If you want VM86 *Quote:*   This option is required by programs like DOSEMU to run 16-bit legacy code on X86 processors. It also may be needed by software like XFree86 to initialize some video cards via BIOS. you have to enable
> ...

 

I happen to have gone totally sideways with the whole thing:

First, I tried the SATA specific issue with the [FAQ] KC13: I just installed a new kernel and it won't boot set.

I still ran into trouble with asm/page.h being missing which leads me over to bugzilla more specifically this bug: (which defies my bugzilla skills to locate, perl fails to compile in it, because of asm/page.h not being present) , and the LKML (ay yi yi this will cause headaches for so many) in the following thread details involving the (warranted, according to the Kernel Gurus, and their reasoning seems sound) removal of asm/page.h from the headers.  Still, the gentoo-sources and busybox and probably a billion other miscellaneous squirrelly things want to at least see asm/page.h before ignoring its woefully inaccurate information to be there to compile properly, in most cases, so this was resolved by performing a 

```
emerge =sys-kernel/linux-headers-2.6.19.2-r2
```

 to get it back, just so I could get by those errors.

Anyway, with older headers, 

```
genkernel --menuconfig --makeopts="-j3" all
```

 seems to compile 2.6.19-gentoo-r6 2.6.20-gentoo is another story, still breaking on me at this point, but I believe it is a stale config issue at this point.

UPDATE:

Ahem:  CONFIG_SPEAKUP_ACNTPC=y and CONFIG_SPEAKUP_KEYPC=y appear to be problematic speakup modules, disabling the two of them, as I don't need a console talker, for the time being.  So for this, setting 

```

<*>   Accent PC, acntpc

<*>   Keynote Gold PC, keypc

```

 to 

```

< >   Accent PC, acntpc

< >   Keynote Gold PC, keypc

```

allows the 2.6.20 to at least build kernels.

My Fingers Are Crossed, but I'm sorta kinda annoyed about genkernels limitations with regard to tracking kernel configurations.

Now, clean building kernels are one thing, but neither will boot, dropping me to the useless ash shell, to loiter in /proc and sysfs land with nothing to do but reboot.  I guess my nforce 4 motherboard and PATA drivers will have to be tried for my SiI 3114 equipped megabox.  Imma gonna go whine over in [FAQ] KC13: I just installed a new kernel and it won't boot or even [FAQ] KC13: I just installed a new kernel and it won't boot (The Commentary on the moderator only Topic) land for the rest of this.

 :Rolling Eyes: 

----------

## wynn

 *fraterm wrote:*   

> I guess my nforce 4 motherboard and PATA drivers will have to be tried for my SiI 3114 equipped megabox. 

 sata_nv just supports nvidia chipsets, you need sata_sil for the "SiI 3114 [SATALink/SATARaid] Serial ATA Controller".

----------

## fraterm

 *wynn wrote:*   

>  *fraterm wrote:*   I guess my nforce 4 motherboard and PATA drivers will have to be tried for my SiI 3114 equipped megabox.  sata_nv just supports nvidia chipsets, you need sata_sil for the "SiI 3114 [SATALink/SATARaid] Serial ATA Controller".

 

As far as I know, this is incorrect, here's the config that currently boots my box: 

This is from a view /proc/config.gz of my currently sucessfully booted 2.6.20-gentoo system:

```

...

#

# Serial ATA (prod) and Parallel ATA (experimental) drivers

#

CONFIG_ATA=y

# CONFIG_ATA_NONSTANDARD is not set

# CONFIG_SATA_AHCI is not set

# CONFIG_SATA_SVW is not set

# CONFIG_ATA_PIIX is not set

# CONFIG_SATA_MV is not set

CONFIG_SATA_NV=y

# CONFIG_PDC_ADMA is not set

# CONFIG_SATA_QSTOR is not set

# CONFIG_SATA_PROMISE is not set

# CONFIG_SATA_SX4 is not set

# CONFIG_SATA_SIL is not set

# CONFIG_SATA_SIL24 is not set

...

```

Here's proof that this kernel is the one I'm booting.

```
fraterm@localhost ~ $ uname -a

Linux localhost 2.6.20-gentoo #1 SMP Sun Mar 4 21:48:39 CST 2007 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux
```

It is non-intuitive, but only enabling the sata_sil driver gave me nothing but heartache as it attempted to load, and barfed hexadecimal phlegmata at the console whilst ignoring my root partition.

I'm going to say that I'm only 80 percent sure though, yesterday was fraught with alot of rebuilding of kernels, but I believe the config.gz in /proc is the currently running kernels config is it not?  If that is true, I'm resting my case.

----------

## wynn

Hmmm, interesting .. a bit more than non-intuitive.

The pci_device_id table, which lists the Vendor ID and Device ID for each device that the driver can handle, shows

```
./drivers/ata/sata_sil.c

static const struct pci_device_id sil_pci_tbl[] = {

        { PCI_VDEVICE(CMD, 0x3112), sil_3112 },

        { PCI_VDEVICE(CMD, 0x0240), sil_3112 },

        { PCI_VDEVICE(CMD, 0x3512), sil_3512 },

        { PCI_VDEVICE(CMD, 0x3114), sil_3114 },

        { PCI_VDEVICE(ATI, 0x436e), sil_3112 },

        { PCI_VDEVICE(ATI, 0x4379), sil_3112_no_sata_irq },

        { PCI_VDEVICE(ATI, 0x437a), sil_3112_no_sata_irq },

        { }     /* terminate list */
```

and from /usr/share/misc/pci.ids "CMD, 0x3114" (CMD "was acquired by Silicon Image, Inc.") gives

```
1095  Silicon Image, Inc.

        3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller
```

Now the only question is what vendor id and device id does your SATA controller have?

Could you run both "lspci" and "lspci -n" and post the output please?

----------

## fraterm

 *wynn wrote:*   

> Could you run both "lspci" and "lspci -n" and post the output please?

 

lspci:

```
localhost ~ # lspci

00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)

00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev a3)

00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)

00:02.0 USB Controller: nVidia Corporation CK804 USB Controller (rev a2)

00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)

00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio Controller (rev a2)

00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f2)

00:07.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)

00:08.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)

00:09.0 PCI bridge: nVidia Corporation CK804 PCI Bridge (rev a2)

00:0a.0 Bridge: nVidia Corporation CK804 Ethernet Controller (rev a3)

00:0b.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)

00:0c.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)

00:0d.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)

00:0e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)

00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration

00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map

00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller

00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control

01:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce 7800 GT] (rev a1)

05:0a.0 RAID bus controller: Silicon Image, Inc. SiI 3114 [SATALink/SATARaid] Serial ATA Controller (rev 02)

```

```
localhost ~ # lspci -n

00:00.0 0580: 10de:005e (rev a3)

00:01.0 0601: 10de:0050 (rev a3)

00:01.1 0c05: 10de:0052 (rev a2)

00:02.0 0c03: 10de:005a (rev a2)

00:02.1 0c03: 10de:005b (rev a3)

00:04.0 0401: 10de:0059 (rev a2)

00:06.0 0101: 10de:0053 (rev f2)

00:07.0 0101: 10de:0054 (rev f3)

00:08.0 0101: 10de:0055 (rev f3)

00:09.0 0604: 10de:005c (rev a2)

00:0a.0 0680: 10de:0057 (rev a3)

00:0b.0 0604: 10de:005d (rev a3)

00:0c.0 0604: 10de:005d (rev a3)

00:0d.0 0604: 10de:005d (rev a3)

00:0e.0 0604: 10de:005d (rev a3)

00:18.0 0600: 1022:1100

00:18.1 0600: 1022:1101

00:18.2 0600: 1022:1102

00:18.3 0600: 1022:1103

01:00.0 0300: 10de:0092 (rev a1)

05:0a.0 0104: 1095:3114 (rev 02)
```

Now, from this it appears, since I'm not using any sort of RAID config, that the pair of CK804 devices (00:07.0,00:08.0) are doing all of the work, the SiL is probably not doing anything useful at all, unless I was to attempt forming a RAID volume with my existing disks, which I had been warned against with this setup and linux about a year ago.

I would guess that any howtos should consider that 'SATA' is not mentioined as it is written in the lspci output for the CK804, only grepping for 'Serial ATA' would have got me to see that that is probably the device to enable.

----------

## wynn

I seem to have misunderstood you, I thought you were using the SiI 3114.

sata_nv has

```
        { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA), CK804 },

        { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2), CK804 },
```

which translates to

```
#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA  0x0054

#define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055
```

which are the SATA controllers you have.

For full measure

```
00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f2)
```

which is "10de:0053" has the new driver pata_amd selected by "< >   AMD/NVidia PATA support (Experimental)" in "Serial ATA (prod) and Parallel ATA (experimental) drivers" or the old driver amd74xx selected by "< >         AMD and nVidia IDE support" in "ATA/ATAPI/MFM/RLL support".

----------

## fraterm

 *wynn wrote:*   

> I seem to have misunderstood you, I thought you were using the SiI 3114.

 

I never quite rightly knew what I was using, I came to discover it because of this genkernel issue (which is good) as it had been building every SATA thing under the sun for me previously, which is what I wanted to have.  Nice to know now exactly what I needed.

----------

## wynn

Aah! I misunderstood you not rightly knowing what you were doing ... there could be a thesis in that ...

----------

