2.5.75 does not boot - TCQ oops
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).
Note:
The machine boots with TASKFILE on, TCQ is causing the problem.
Quoted 9 lines · Ivan Gyurdiev
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).Note:
The machine boots with TASKFILE on, TCQ is causing the problem.
Looks like IDE using the queue before it has been setup, probably Bart broke it when he moved the TCQ init around. I'll take a look.
Signature · 1 line
Jens Axboe
Quoted 5 lines · Jens Axboe
Quoted 4 lines · Ivan Gyurdiev
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
Quoted 8 lines
Quoted 5 lines
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).Note:
The machine boots with TASKFILE on, TCQ is causing the problem.Looks like IDE using the queue before it has been setup, probably Bart broke it when he moved the TCQ init around. I'll take a look.
Here's the fix. Bart, you moved the tcq init to a much earlier fase (saying ide_init_drive() was too early, well ide_dma_on is much earlier in the init fase). ide_init_drive() _is_ the correct location in my oppinion, drive and queue has been set up at this point.
ide/ide-dma.c renamed from ide/ide-dma.c~ +0 -4
@@ -572,10 +572,6 @@if (HWIF (drive)->ide_dma_host_on (drive))return 1 ; -#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -HWIF (drive)->ide_dma_queued_on (drive); -#endif -return 0 ; }
ide/ide-probe.c renamed from ide/ide-probe.c~ +4 -0
@@ -945,6 +945,10 @@static void ide_init_drive (ide_drive_t *drive) {ide_toggle_bounce (drive,1 ); + +#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT +HWIF (drive)->ide_dma_queued_on (drive); +#endif }/*
Signature · 1 line
Jens Axboe
Quoted 12 lines · Jens Axboe
Quoted 11 lines · Jens Axboe
Quoted 9 lines · Ivan Gyurdiev
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).Note:
The machine boots with TASKFILE on, TCQ is causing the problem.
Quoted 7 lines
Quoted 2 lines
Looks like IDE using the queue before it has been setup, probably Bart broke it when he moved the TCQ init around. I'll take a look.
Here's the fix. Bart, you moved the tcq init to a much earlier fase (saying
ide_init_drive()was too early, wellide_dma_onis much earlier in the init fase).ide_init_drive()_is_ the correct location in my oppinion, drive and queue has been set up at this point.
Better still (and later in the probe) is this version. This is in my oppinion the correct place to init tcq, and also contains it to ide-disk where it should be.
ide/ide-dma.c renamed from ide/ide-dma.c~ +0 -4
@@ -572,10 +572,6 @@if (HWIF (drive)->ide_dma_host_on (drive))return 1 ; -#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -HWIF (drive)->ide_dma_queued_on (drive); -#endif -return 0 ; }
ide/ide-disk.c renamed from ide/ide-disk.c~ +4 -0
@@ -1665,6 +1665,10 @@ drive->no_io_32bit = id->dword_io ?1 :0 ;if (drive->id->cfs_enable_2 &0x3000 )write_cache (drive, (id->cfs_enable_2 &0x3000 )); + +#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT +HWIF (drive)->ide_dma_queued_on (drive); +#endif }static int idedisk_cleanup (ide_drive_t *drive)
Signature · 1 line
Jens Axboe
Quoted 13 lines · Jens Axboe
Quoted 12 lines · Jens Axboe
Quoted 11 lines · Jens Axboe
Quoted 9 lines · Ivan Gyurdiev
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).Note:
The machine boots with TASKFILE on, TCQ is causing the problem.
Quoted 7 lines
Quoted 7 lines
Quoted 2 lines
Looks like IDE using the queue before it has been setup, probably Bart broke it when he moved the TCQ init around. I'll take a look.
Here's the fix. Bart, you moved the tcq init to a much earlier fase (saying
ide_init_drive()was too early, wellide_dma_onis much earlier in the init fase).ide_init_drive()_is_ the correct location in my oppinion, drive and queue has been set up at this point.
Yes, but hey you've acked this change ;-).
Quoted 3 lines
Better still (and later in the probe) is this version. This is in my oppinion the correct place to init tcq, and also contains it to ide-disk where it should be.
Looks okay, thanks.
--
Bartlomiej
Quoted 29 lines
ide/ide-dma.c renamed from ide/ide-dma.c~ +0
-4@@ -572,10 +572,6 @@if (HWIF (drive)->ide_dma_host_on (drive))return 1 ; -#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -HWIF (drive)->ide_dma_queued_on (drive); -#endif -return 0 ; }ide/ide-disk.c renamed from ide/ide-disk.c~ +4
-1@@ -1665,6 +1665,10 @@ drive->no_io_32bit = id->dword_io ?1 :0 ;if (drive->id->cfs_enable_2 &0x3000 )write_cache (drive, (id->cfs_enable_2 &0x3000 )); + +#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT +HWIF (drive)->ide_dma_queued_on (drive); +#endif }static int idedisk_cleanup (ide_drive_t *drive) --Jens Axboe
Quoted 19 lines · Bartlomiej Zolnierkiewicz
Quoted 16 lines · Jens Axboe
Quoted 15 lines · Jens Axboe
Quoted 13 lines · Jens Axboe
Quoted 9 lines · Ivan Gyurdiev
See,
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.0/0515.html
where the bug is described for 2.5.74.
I got no replies, and the bug persists in 2.5.75 (+bk patches).Note:
The machine boots with TASKFILE on, TCQ is causing the problem.Looks like IDE using the queue before it has been setup, probably Bart broke it when he moved the TCQ init around. I'll take a look.
Quoted 6 lines
Quoted 4 lines
Quoted 4 lines
Here's the fix. Bart, you moved the tcq init to a much earlier fase (saying
ide_init_drive()was too early, wellide_dma_onis much earlier in the init fase).ide_init_drive()_is_ the correct location in my oppinion, drive and queue has been set up at this point.Yes, but hey you've acked this change ;-).
I know, I'll carry (let me see) 30% of the blame :)
Quoted 5 lines
Quoted 3 lines
Better still (and later in the probe) is this version. This is in my oppinion the correct place to init tcq, and also contains it to ide-disk where it should be.
Looks okay, thanks.
Thanks, I'll forward it then.
Signature · 1 line
Jens Axboe
Patch confirmed to work - the machine boots. Unfortunately the long term result looked something like:
Objects Without Names: 2580
Empty Lost Dirs Removed: 12294
Dirs Linked to lost+found: 192
Dirs Without Stats Data: 141
....
Most massive fs corruption I've ever had.
Twice. (I tried it again to get a log, but I don't know if it will be helpful).
I blamed the reiserfs bk work at first (which I applied along with your tcq patch), but I noted that the fs only gets corrupted with a tcq-enabled kernel (every time it seems...).
The machine boots and the filesystem (reiserfs) check says:
Zero bit found in on-disk bitmap after the last valid bit. Switching to fix-fixable pass. After which it detects various types of corruption. (eventually it breaks with fork: Cannot allocate memory - is this a fsck.reiserfs problem?)
Here's parts of a log with fastboot on (skip the fs check).
The reiser filesystem had just been repaired, and here it breaks again. I don't know if I should be sending this to you, but I think tcq causes the corruption, since non-tcq 2.5.75 and 2.5.74 appear to run fine.
Kernel command line: auto BOOT_IMAGE=2.5.75-2 ro root=306 single fastboot
...
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xxVP_IDE: IDE controller at PCI slot 0000:00:11.1
ACPI: No IRQ known for interrupt pin A of device 0000:00:11.1 - using IRQ 255VP_IDE: chipset revision 6VP_IDE: not 100% native mode: will probe irqs later
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xxVP_IDE: VIA vt8235 (rev 00) IDE UDMA133 controller on pci0000:00:11.1
ide0: BM-DMA at 0xe000-0xe007, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xe008-0xe00f, BIOS settings: hdc:DMA, hdd:piohda: IC35L080AVVA07-0, ATA DISK drive
anticipatory scheduling elevator
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hdc: TOSHIBA DVD-ROM SD-R1102, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: host protected area => 1
hda: 160836480 sectors (82348 MB) w/1863KiB Cache, CHS=159560/16/63, UDMA(100)
hda: tagged command queueing enabled, command queue depth 8
/dev/ide/host0/bus0/target0/lun0: p1 p2 < p5 p6 p7 >
.....
BIOS EDD facility v0.09 2003-Jan-22, 1 devices found
....
Reiserfs journal params: device hda6, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
reiserfs: checking transaction log (hda6) for (hda6)
Using r5 hash to sort names
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 152k freed
Real Time Clock Driver v1.11
Adding 512024k swap on /dev/hda5. Priority:-1 extents:1
vs-4080: reiserfs_free_block: free_block (hda6:895404)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895260)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895259)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895258)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895257)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895256)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895255)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895254)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895253)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895249)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895248)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895247)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895246)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895245)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895244)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895243)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895242)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895241)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895240)[dev:blocknr]: bit already cleared
vs-4080: reiserfs_free_block: free_block (hda6:895187)[dev:blocknr]: bit already cleared
Quoted 26 lines
ide/ide-dma.c renamed from ide/ide-dma.c~ +0
-4@@ -572,10 +572,6 @@if (HWIF (drive)->ide_dma_host_on (drive))return 1 ; -#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -HWIF (drive)->ide_dma_queued_on (drive); -#endif -return 0 ; }ide/ide-disk.c renamed from ide/ide-disk.c~ +4
-0@@ -1665,6 +1665,10 @@ drive->no_io_32bit = id->dword_io ?1 :0 ;if (drive->id->cfs_enable_2 &0x3000 )write_cache (drive, (id->cfs_enable_2 &0x3000 )); + +#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT +HWIF (drive)->ide_dma_queued_on (drive); +#endif }static int idedisk_cleanup (ide_drive_t *drive)