Bekannte Probleme

Die ACPI-Unterstützung von 2.4.x-Kernels enthält eine Reihe von Fehlern, die zu Problemen bei der Installation und/oder beim Booten führen können. Bei derartigen Problemen sollten Sie daher zunächst versuchen, ACPI probeweise zu deaktivieren. Dies können Sie entweder mit der Bootzeilenoption "acpi=off" oder durch Deaktivieren von ACPI im BIOS bewerkstelligen.

Wenn Sie das System mit deaktiviertem ACPI zum Booten bewegen können, jedoch ACPI prinzipiell verwenden möchten, so lesen Sie bitte auch den Rest dieser Datei. Dort sind verschiedene Probleme im Zusammenhang mit ACPI sowie entsprechende Lösungsmöglichkeiten beschrieben.
Prüfen Sie die Meldungen im Bootprotokoll bis zu dem Zeitpunkt, an dem das Problem auftritt. Wenn im Protokoll vermerkt ist, dass ein Interrupt-Steering der Geräteinterrupts auf IRQ0 stattfindet, so wird das Problem möglicherweise von einem Fehler des x86_64-Kernels im Zusammenhang mit dem ACPI-Interrupt-Steering verursacht. Es liegt ein stabiler Kernel-Patch zur Problembehebung vor, dieser wurde jedoch noch nicht von allen Distributionen integriert. Wenn der Patch in Ihrer Distribution noch nicht vorhanden ist, können Sie entweder ACPI deaktivieren (im BIOS oder per Bootzeilenoption "acpi=off") oder den Kernel von Hand patchen.

Dazu müssen Sie eine Änderung an der Funktion mp_parse_prt() in der Datei arch/x86_64/kernel/mpparse.c vornehmen. Kommentieren Sie die folgende Codezeile aus:

        irq = entry->link.index;

Diese befindet sich direkt vor dem Kommentar

        /* Dont set up the ACPI SCI because it's already up */
Dieses Problem kann durch einen falschen ACPI-Tabelleneintrag verursacht werden, der dazu führt, dass der Timer-Interrupt falsch konfiguriert wird.
Suchen Sie im Bootprotokoll (Anzeige über dmesg) nach Meldungen wie diesen:

..MP-BIOS bug: 8254 timer not connected to IOAPIC
...trying to set up timer (IRQ0) through the 8259A . failed.
...trying to set up timer as Virtual Wire IRQ... failed.
...trying to set up timer as ExtINT IRQ... works.

Wenn diese Meldungen angezeigt werden, ist Ihr System vom oben beschriebenen Fehler betroffen. Auf 2.6er Kernels können Sie den Fehler umgehen, indem Sie die Bootzeilenoption "acpi_skip_timer_override" übergeben. Alternativ dazu können Sie ACPI auch komplett deaktivieren (im BIOS oder mittels der Bootzeilenoption "acpi=off").
Der 2.6.x-Kernel weist ein Problem in der MP-Tabellenverarbeitung auf, der dazu führt, dass auf bestimmten Systemen¹ keine Installation möglich ist bzw. das System nicht startet. Dieser Fehler führt zu ungültigen Daten im Speicher, sobald ein PCI-Bus > 32 erkannt wird. Dadurch reagiert das System kurz nach Beginn des Installations- bzw. Bootvorgangs nicht mehr. Auf manchen Systemen lässt sich dieses Problem beheben, indem ACPI während dem Bootvorgang aktiviert bleibt.

Momentan sind keine Möglichkeiten bekannt, dieses Problem zu umgehen. Es liegt jedoch ein stabiler Kernel-Patch vor, der schon bald in neuen Releases der verschiedenen Distributionen zu finden sein sollte.

¹ Nach dem letzten Erkenntnisstand sind nur nForce-basierte Systeme mit dem CK804-MP von diesem Kernelfehler betroffen.
In einigen älteren Distributionen fehlen die Gerätekennungen für den nForce3 IDE/SATA-Controller. Dies hat einige Nachteile zur Folge:

1. IDE-Treiber arbeiten ohne DMA-Unterstützung. Dies führt zu Einbußen bei der IDE-Leistung. Dieses Problem lässt sich beheben, indem Sie die fehlenden Gerätekennungen nachträglich von Hand hinzufügen.
2. Bei der Betriebssysteminstallation können keine SATA-Controller verwendet werden. Dieses Problem lässt sich umgehen, indem Sie für die Installation eine entsprechende Treiberdiskette verwenden.
Bitte beachten Sie, dass die Treiberdiskette momentan ausschließlich RedHat Enterprise Linux 3 Update 2 und 3 in der 64-Bit-Version unterstützt. Ein Abbild der Treiberdiskette sowie eine Anleitung stehen per Anonymous FTP unter folgender Adresse zum Download bereit:

ftp://download.nvidia.com/linux/nforce/installdriverdisk/nvdriverdisk.tar.gz

 
Um die Gerätekennungen nachträglich hinzuzufügen, müssen Sie den Treiber von Hand patchen. Dabei sind zwei Tabellen in der Datei drivers/ide/pci/amd74xx.c betroffen:

Die erste Tabelle trägt den Namen amd_ide_chips und ist ein Array des struct-Typs amd_ide_chip. Ihre Einträge haben das folgende Format:
    { PCI_DEVICE_ID_XXXXXXXXXXX, 0xXX, AMD_UDMA_100 },

Suchen Sie in der Tabelle nach den folgenden Einträgen:

PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE
PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE
PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA
PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2

Wenn einer dieser Einträge fehlt, unterstützt der Treiber amd74xx.c die IDE- und SATA-Controller des nForce3 nicht. Um die Unterstützung hinzuzufügen, gehen Sie wie folgt vor:

Schritt 1: Definieren Sie die Makros für die PCI-Gerätekennungen.

Fügen Sie direkt vor der Tabelle amd_ide_chips die folgenden Zeilen ein:

#define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE   0x00d5
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE  0x00e5
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3
#define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2  0x00ee

Schritt 2: Fügen Sie am Ende der Tabelle amd_ide_chips (allerdings noch vor dem Schlusseintrag "{ 0 },") die folgenden Einträge ein.

    { PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE,    0x50, AMD_UDMA_133 },
    { PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE,    0x50, AMD_UDMA_133 },
    { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA,    0x50, AMD_UDMA_133 },
    { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2,    0x50, AMD_UDMA_133 },

Schritt 3: Weiters enthält der Treiber ein Array des struct-Typs pci_device_id, das den Namen amd74xx_pci_tbl trägt.
Dieses muss um einige Einträge erweitert werden, um die Unterstützung für den CK804/MCP04 zu aktivieren. Fügen Sie vor dem Schlusseintrag "{ 0, }," die folgenden Einträge ein:

    { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9 },
    { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 10 },
    { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11 },
    { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12 },

Die laufende Nummer (9 bis 12) am Ende eines jeden Eintrags bezieht sich auf die entsprechenden Einträge in der Tabelle amd_ide_chips (die Zählung beginnt bei 0). So sollte beispielsweise der neunte Eintrag in amd_ide_chips dem Eintrag PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE entsprechen. Wenn dies nicht der Fall sein sollte, müssen Sie die Eintragsnummern in amd74xx_pci_tbl entsprechend anpassen.

Schritt 4: Erstellen Sie eine neue Kernel-Build.