[Eisfair] Kernelpanik war: Re: Ältere Version von MySql 4.1.22 für CAO

Thomas Bork tom at eisfair.org
Di Mär 3 21:14:10 CET 2015


Am 03.03.2015 um 09:21 schrieb Marcus Roeckrath:

> So wie es aussieht, wurde der Controller vom 2.6er nicht mehr vom
> Standard-IDE-Treiber behandelt.
> Der Thread wurde nicht bis zur Lösung des Problems fortgeführt.

Ich hatte damals aus der Notwendigkeit heraus, neuere Hardware 
unterstützen zu müssen, etliche IDE-Treiber des 2.4.35-wt1 erheblich 
aufgebohrt. Wahrscheinlich wurde der NM10/ICH7 (vermutlich 
PCI_DEVICE_ID_INTEL_ICH7_21) durch folgenden Patch unterstützt:

diff -Nurp /usr/src/linux-2.4.35.orig/drivers/ide/pci/piix.c 
/usr/src/linux-2.4.35/drivers/ide/pci/piix.c
--- /usr/src/linux-2.4.35.orig/drivers/ide/pci/piix.c	2007-07-26 
22:53:41.000000000 +0200
+++ /usr/src/linux-2.4.35/drivers/ide/pci/piix.c	2010-12-21 
19:56:40.000000000 +0100
@@ -149,12 +149,16 @@ static int piix_get_info (char *buffer,
  			case PCI_DEVICE_ID_INTEL_82801BA_9:
  			case PCI_DEVICE_ID_INTEL_82801CA_10:
  			case PCI_DEVICE_ID_INTEL_82801CA_11:
+			case PCI_DEVICE_ID_INTEL_82801DB_1:
  			case PCI_DEVICE_ID_INTEL_82801DB_10:
  			case PCI_DEVICE_ID_INTEL_82801DB_11:
  			case PCI_DEVICE_ID_INTEL_82801EB_11:
  			case PCI_DEVICE_ID_INTEL_82801E_11:
  			case PCI_DEVICE_ID_INTEL_ESB_2:
-			case PCI_DEVICE_ID_INTEL_ICH6_2:
+			case PCI_DEVICE_ID_INTEL_ICH6_19:
+			case PCI_DEVICE_ID_INTEL_ICH7_21:
+			case PCI_DEVICE_ID_INTEL_ESB2_18:
+			case PCI_DEVICE_ID_INTEL_ICH8_6:
  				p += sprintf(p, "PIIX4 Ultra 100 ");
  				break;
  			case PCI_DEVICE_ID_INTEL_82372FB_1:
@@ -289,11 +293,15 @@ static u8 piix_ratemask (ide_drive_t *dr
  		case PCI_DEVICE_ID_INTEL_82801CA_10:
  		case PCI_DEVICE_ID_INTEL_82801CA_11:
  		case PCI_DEVICE_ID_INTEL_82801E_11:
+		case PCI_DEVICE_ID_INTEL_82801DB_1:
  		case PCI_DEVICE_ID_INTEL_82801DB_10:
  		case PCI_DEVICE_ID_INTEL_82801DB_11:
  		case PCI_DEVICE_ID_INTEL_82801EB_11:
  		case PCI_DEVICE_ID_INTEL_ESB_2:
-		case PCI_DEVICE_ID_INTEL_ICH6_2:
+		case PCI_DEVICE_ID_INTEL_ICH6_19:
+		case PCI_DEVICE_ID_INTEL_ICH7_21:
+		case PCI_DEVICE_ID_INTEL_ESB2_18:
+		case PCI_DEVICE_ID_INTEL_ICH8_6:
  			mode = 3;
  			break;
  		/* UDMA 66 capable */
@@ -682,7 +690,10 @@ static unsigned int __devinit init_chips
  		case PCI_DEVICE_ID_INTEL_82801EB_11:
  		case PCI_DEVICE_ID_INTEL_82801E_11:
  		case PCI_DEVICE_ID_INTEL_ESB_2:
-		case PCI_DEVICE_ID_INTEL_ICH6_2:
+		case PCI_DEVICE_ID_INTEL_ICH6_19:
+		case PCI_DEVICE_ID_INTEL_ICH7_21:
+		case PCI_DEVICE_ID_INTEL_ESB2_18:
+		case PCI_DEVICE_ID_INTEL_ICH8_6:
  		{
  			unsigned int extra = 0;
  			pci_read_config_dword(dev, 0x54, &extra);
@@ -848,8 +859,8 @@ static void __init piix_check_450nx(void
  		/* Only on the original revision: IDE DMA can hang */
  		if(rev == 0x00)
  			no_piix_dma = 1;
-		/* On all revisions PXB bus lock must be disabled for IDE */
-		else if(cfg & (1<<14))
+		/* On all revisions below 5 PXB bus lock must be disabled for IDE */
+		else if(cfg & (1<<14) && rev < 5)
  			no_piix_dma = 2;
  	}
  	if(no_piix_dma)
@@ -878,10 +889,14 @@ static struct pci_device_id piix_pci_tbl
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801E_11, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 16},
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_10,PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 17},
  #ifdef CONFIG_BLK_DEV_IDE_SATA
- 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_1, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 18},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_1, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 18},
  #endif
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_2, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 19},
-	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_2, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 20},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_19, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 20},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_21, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 21},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_1, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 22},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_18, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 23},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_6, PCI_ANY_ID, 
PCI_ANY_ID, 0, 0, 24},
  	{ 0, },
  };

diff -Nurp /usr/src/linux-2.4.35.orig/drivers/ide/pci/piix.h 
/usr/src/linux-2.4.35/drivers/ide/pci/piix.h
--- /usr/src/linux-2.4.35.orig/drivers/ide/pci/piix.h	2007-07-26 
22:53:41.000000000 +0200
+++ /usr/src/linux-2.4.35/drivers/ide/pci/piix.h	2010-12-21 
19:56:40.000000000 +0100
@@ -321,11 +321,67 @@ static ide_pci_device_t piix_pci_info[]
  		.extra		= 0,
  	},{	/* 20 */
  		.vendor		= PCI_VENDOR_ID_INTEL,
-		.device		= PCI_DEVICE_ID_INTEL_ICH6_2,
+		.device		= PCI_DEVICE_ID_INTEL_ICH6_19,
  		.name		= "ICH6",
  		.init_setup	= init_setup_piix,
  		.init_chipset	= init_chipset_piix,
  		.init_iops	= NULL,
+		.init_hwif	= init_hwif_piix,
+		.init_dma	= init_dma_piix,
+		.channels	= 2,
+		.autodma	= AUTODMA,
+		.enablebits	= {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
+		.bootable	= ON_BOARD,
+		.extra		= 0,
+	},{	/* 21 */
+		.vendor		= PCI_VENDOR_ID_INTEL,
+		.device		= PCI_DEVICE_ID_INTEL_ICH7_21,
+		.name		= "ICH7",
+		.init_setup	= init_setup_piix,
+		.init_chipset	= init_chipset_piix,
+		.init_iops	= NULL,
+		.init_hwif	= init_hwif_piix,
+		.init_dma	= init_dma_piix,
+		.channels	= 1,
+		.autodma	= AUTODMA,
+		.enablebits	= {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
+		.bootable	= ON_BOARD,
+		.extra		= 0,
+	},{	/* 22 */
+		.vendor		= PCI_VENDOR_ID_INTEL,
+		.device		= PCI_DEVICE_ID_INTEL_82801DB_1,
+		.name		= "ICH4",
+		.init_setup	= init_setup_piix,
+		.init_chipset	= init_chipset_piix,
+		.init_iops	= NULL,
+		.init_hwif	= init_hwif_piix,
+		.init_dma	= init_dma_piix,
+		.channels	= 2,
+		.autodma	= AUTODMA,
+		.enablebits	= {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
+		.bootable	= ON_BOARD,
+		.extra		= 0,
+	},{	/* 23 */
+		.vendor		= PCI_VENDOR_ID_INTEL,
+		.device		= PCI_DEVICE_ID_INTEL_ESB2_18,
+		.name		= "ESB2",
+		.init_setup	= init_setup_piix,
+		.init_chipset	= init_chipset_piix,
+		.init_iops	= NULL,
+		.init_hwif	= init_hwif_piix,
+		.init_dma	= init_dma_piix,
+		.channels	= 2,
+		.autodma	= AUTODMA,
+		.enablebits	= {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
+		.bootable	= ON_BOARD,
+		.extra		= 0,
+	},{	/* 24 */
+		.vendor		= PCI_VENDOR_ID_INTEL,
+		.device		= PCI_DEVICE_ID_INTEL_ICH8_6,
+		.name		= "ICH8M",
+		.init_setup	= init_setup_piix,
+		.init_chipset	= init_chipset_piix,
+		.init_iops	= NULL,
  		.init_hwif	= init_hwif_piix,
  		.init_dma	= init_dma_piix,
  		.channels	= 2,

Lustigerweise hat der PCI_DEVICE_ID_INTEL_ICH7_21 im reinen IDE-Betrieb 
wohl eine PCI-ID von 27df, während er als SATA-Controller im IDE-Modus 
eine PCI-ID von 27c0 hat:

diff -Nurp /usr/src/linux-2.4.35.orig/include/linux/pci.h 
/usr/src/linux-2.4.35/include/linux/pci.h
--- /usr/src/linux-2.4.35.orig/include/linux/pci.h	2007-07-26 
22:53:41.000000000 +0200
+++ /usr/src/linux-2.4.35/include/linux/pci.h	2010-12-21 
19:56:51.000000000 +0100
[...]
+#define PCI_DEVICE_ID_INTEL_ICH7_21	0x27df

http://cateee.net/lkddb/web-lkddb/SCSI_ATA_PIIX.html

-- 
der tom
[eisfair-team]


Mehr Informationen über die Mailingliste Eisfair