* CDROM drive not found when booting using new libata code
@ 2006-09-24 22:10 Art Haas
2006-11-21 9:26 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Art Haas @ 2006-09-24 22:10 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-ide
Hi.
As Linus has just pulled in the large libata changes into his tree, I
wanted to try out the new code. I'm running Debian on a PIIX
motherboard, and I've enclosed the 'dmesg' output for the machine
when booting 2.6.18 which uses the piix.c code in drivers/ide and
the new 2.6.18+ code which uses ata_piix.c in drivers/ata.
Here's the drivers/ide dmesg output:
Linux version 2.6.18 (arth@pcdebian) (gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)) #1 Wed Sep 20 06:56:45 CDT 2006
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000007ff0000 (usable)
BIOS-e820: 0000000007ff0000 - 0000000007ff3000 (ACPI NVS)
BIOS-e820: 0000000007ff3000 - 0000000008000000 (ACPI data)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
127MB LOWMEM available.
On node 0 totalpages: 32752
DMA zone: 4096 pages, LIFO batch:0
Normal zone: 28656 pages, LIFO batch:7
DMI 2.1 present.
ACPI: RSDP (v000 GBT ) @ 0x000f6c60
ACPI: RSDT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3000
ACPI: FADT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3040
ACPI: DSDT (v001 GBT AWRDACPI 0x00001000 MSFT 0x01000007) @ 0x00000000
ACPI: PM-Timer IO Port: 0x4008
Allocating PCI resources starting at 10000000 (gap: 08000000:f7ff0000)
Detected 398.944 MHz processor.
Built 1 zonelists. Total pages: 32752
Kernel command line: BOOT_IMAGE=linux-2.6.18 ro root=301
Enabling fast FPU save and restore... done.
Initializing CPU#0
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 127296k/131008k available (1395k kernel code, 3248k reserved, 437k data, 132k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 798.25 BogoMIPS (lpj=399125)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 512K
CPU: After all inits, caps: 0183f9ff 00000000 00000000 00000040 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: Intel Pentium II (Deschutes) stepping 01
Checking 'hlt' instruction... OK.
ACPI: Core revision 20060707
ACPI: setting ELCR to 0200 (from 0c20)
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfb3c0, last bus=1
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
* Found PM-Timer Bug on the chipset. Due to workarounds for a bug,
* this clock source is slow. Consider trying other clock sources
PCI quirk: region 4000-403f claimed by PIIX4 ACPI
PCI quirk: region 5000-500f claimed by PIIX4 SMB
Boot video device is 0000:00:08.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: Power Resource [PFAN] (on)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 12 devices
PnPBIOS: Disabled by ACPI PNP
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
PCI: Bridge: 0000:00:01.0
IO window: d000-dfff
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 0000:00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: ST33232A, ATA DISK drive
hdb: FUJITSU MPD3084AT, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: ATAPI CDROM, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: 6303024 sectors (3227 MB) w/128KiB Cache, CHS=6253/16/63, UDMA(33)
hda: cache flushes not supported
hda: hda1 hda2 < hda5 hda6 hda7 >
hdb: max request size: 128KiB
hdb: 16514064 sectors (8455 MB) w/512KiB Cache, CHS=16383/16/63, UDMA(33)
hdb: cache flushes not supported
hdb: hdb1 hdb2 < hdb5 hdb6 > hdb3
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
Using IPI Shortcut mode
Time: tsc clocksource has been installed.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 132k freed
input: AT Translated Set 2 keyboard as /class/input/input0
NET: Registered protocol family 1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP(,...)]
hdc: ATAPI 24X CD-ROM drive, 120kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
8139too Fast Ethernet driver 0.9.27
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
PCI: setting IRQ 5 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 5 (level, low) -> IRQ 5
eth0: RealTek RTL8139 at 0xc8818000, 00:05:5d:45:47:96, IRQ 5
eth0: Identified 8139 chip type 'RTL-8139C'
Real Time Clock Driver v1.12ac
Adding 100760k swap on /dev/hda7. Priority:-1 extents:1 across:100760k
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
NET: Registered protocol family 17
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
ttyS3: LSR safety check engaged!
ttyS3: LSR safety check engaged!
EXT3 FS on hda5, internal journal
EXT3 FS on hda6, internal journal
EXT3 FS on hdb5, internal journal
EXT3 FS on hdb6, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on hdb3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 100760k swap on /dev/hda7. Priority:-2 extents:1 across:100760k
Now, here's the dmesg output for the drivers/ata code:
Linux version 2.6.18-pata (arth@pcdebian) (gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)) #3 Sun Sep 24 15:35:31 CDT 2006
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000007ff0000 (usable)
BIOS-e820: 0000000007ff0000 - 0000000007ff3000 (ACPI NVS)
BIOS-e820: 0000000007ff3000 - 0000000008000000 (ACPI data)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
127MB LOWMEM available.
On node 0 totalpages: 32752
DMA zone: 4096 pages, LIFO batch:0
Normal zone: 28656 pages, LIFO batch:7
DMI 2.1 present.
ACPI: RSDP (v000 GBT ) @ 0x000f6c60
ACPI: RSDT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3000
ACPI: FADT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3040
ACPI: DSDT (v001 GBT AWRDACPI 0x00001000 MSFT 0x01000007) @ 0x00000000
ACPI: PM-Timer IO Port: 0x4008
Allocating PCI resources starting at 10000000 (gap: 08000000:f7ff0000)
Detected 398.971 MHz processor.
Built 1 zonelists. Total pages: 32752
Kernel command line: BOOT_IMAGE=2.6.18-pata ro root=301 root=/dev/sda1
Enabling fast FPU save and restore... done.
Initializing CPU#0
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 127264k/131008k available (1445k kernel code, 3280k reserved, 453k data, 136k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 798.27 BogoMIPS (lpj=399137)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 512K
CPU: After all inits, caps: 0183f9ff 00000000 00000000 00000040 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: Intel Pentium II (Deschutes) stepping 01
Checking 'hlt' instruction... OK.
ACPI: Core revision 20060707
ACPI: setting ELCR to 0200 (from 0c20)
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfb3c0, last bus=1
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
* Found PM-Timer Bug on the chipset. Due to workarounds for a bug,
* this clock source is slow. Consider trying other clock sources
PCI quirk: region 4000-403f claimed by PIIX4 ACPI
PCI quirk: region 5000-500f claimed by PIIX4 SMB
Boot video device is 0000:00:08.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: Power Resource [PFAN] (on)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: ACPI device : hid PNP0A03
pnp: ACPI device : hid PNP0C01
pnp: ACPI device : hid PNP0C02
pnp: ACPI device : hid PNP0200
pnp: ACPI device : hid PNP0B00
pnp: ACPI device : hid PNP0800
pnp: ACPI device : hid PNP0C04
pnp: ACPI device : hid PNP0700
pnp: ACPI device : hid PNP0501
pnp: ACPI device : hid PNP0501
pnp: ACPI device : hid PNP0400
pnp: ACPI device : hid PNP0303
pnp: PnP ACPI: found 12 devices
PnPBIOS: Disabled by ACPI PNP
SCSI subsystem initialized
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:01' and the driver 'system'
pnp: match found with the PnP device '00:02' and the driver 'system'
PCI: Bridge: 0000:00:01.0
IO window: d000-dfff
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:08' and the driver 'serial'
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: match found with the PnP device '00:09' and the driver 'serial'
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
libata version 2.00 loaded.
ata_piix 0000:00:07.1: version 2.00ac6
ata1: PATA max UDMA/33 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
scsi0 : ata_piix
ata1.00: ATA-2, max UDMA/33, 6303024 sectors: LBA
ata1.00: ata1: dev 0 multi count 16
ata1.01: ATA-4, max UDMA/66, 16514064 sectors: LBA
ata1.01: ata1: dev 1 multi count 16
ata1.00: configured for UDMA/33
ata1.01: configured for UDMA/33
scsi1 : ata_piix
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: ATAPI, max MWDMA1
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: limiting speed to PIO4
ata2: failed to recover some devices, retrying in 5 secs
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: limiting speed to PIO0
ata2: failed to recover some devices, retrying in 5 secs
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: disabled
scsi 0:0:0:0: Direct access ATA ST33232A 3.02 PQ: 0 ANSI: 5
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
sda: sda1 sda2 < sda5 sda6 sda7 >
sd 0:0:0:0: Attached scsi disk sda
scsi 0:0:1:0: Direct access ATA FUJITSU MPD3084A DD-0 PQ: 0 ANSI: 5
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3
sd 0:0:1:0: Attached scsi disk sdb
pnp: the driver 'i8042 kbd' has been registered
pnp: match found with the PnP device '00:0b' and the driver 'i8042 kbd'
pnp: the driver 'i8042 aux' has been registered
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
Using IPI Shortcut mode
Time: tsc clocksource has been installed.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 136k freed
input: AT Translated Set 2 keyboard as /class/input/input0
NET: Registered protocol family 1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Real Time Clock Driver v1.12ac
pnp: the driver 'parport_pc' has been registered
pnp: match found with the PnP device '00:0a' and the driver 'parport_pc'
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP(,...)]
8139too Fast Ethernet driver 0.9.28
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
PCI: setting IRQ 5 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 5 (level, low) -> IRQ 5
eth0: RealTek RTL8139 at 0xc8824000, 00:05:5d:45:47:96, IRQ 5
eth0: Identified 8139 chip type 'RTL-8139C'
Adding 100760k swap on /dev/sda7. Priority:-1 extents:1 across:100760k
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
NET: Registered protocol family 17
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
ttyS3: LSR safety check engaged!
ttyS3: LSR safety check engaged!
EXT3 FS on sda5, internal journal
EXT3 FS on sda6, internal journal
EXT3 FS on sdb5, internal journal
EXT3 FS on sdb6, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on sdb3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
The new kernel has PnP debug messages enabled as I'm also trying to
figure out why my TurtleBeach Mailbu soundcard is often not found
by the isapnp system, but that is a minor inconvenience. Another
problem I haven't figured out is the 'LSR safety check engaged'
message, but again it doesn't seem to affect things.
Kernel configuration info can be provided if deemed helpful, and
I'll gladly try out patches to get the problem resolved.
Art Haas
--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.
-Thomas Jefferson to James Smith, 1822
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-09-24 22:10 CDROM drive not found when booting using new libata code Art Haas
@ 2006-11-21 9:26 ` Tejun Heo
2006-12-06 18:16 ` Art Haas
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2006-11-21 9:26 UTC (permalink / raw)
To: Art Haas; +Cc: linux-kernel, linux-ide
Art Haas wrote:
> Hi.
>
> As Linus has just pulled in the large libata changes into his tree, I
> wanted to try out the new code. I'm running Debian on a PIIX
> motherboard, and I've enclosed the 'dmesg' output for the machine
> when booting 2.6.18 which uses the piix.c code in drivers/ide and
> the new 2.6.18+ code which uses ata_piix.c in drivers/ata.
Can you please test 2.6.19-rc5-mm2?
--
tejun
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-11-21 9:26 ` Tejun Heo
@ 2006-12-06 18:16 ` Art Haas
2006-12-07 4:28 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Art Haas @ 2006-12-06 18:16 UTC (permalink / raw)
To: linux-ide
On Tue, Nov 21, 2006 at 06:26:52PM +0900, Tejun Heo wrote:
> Art Haas wrote:
> >Hi.
> >
> >As Linus has just pulled in the large libata changes into his tree, I
> >wanted to try out the new code. I'm running Debian on a PIIX
> >motherboard, and I've enclosed the 'dmesg' output for the machine
> >when booting 2.6.18 which uses the piix.c code in drivers/ide and
> >the new 2.6.18+ code which uses ata_piix.c in drivers/ata.
>
> Can you please test 2.6.19-rc5-mm2?
Hello.
I didn't get a chance to try that release, but since then many of the
libata patches have been merged into Linus's post-2.6.19 tree, which
I'm now running. The CD-ROM drive is still not being found,
unfortunately. Trimmed 'dmesg' output below:
Linux version 2.6.19-ajh (arth@pcdebian) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)) #6 Wed Dec 6 08:38:32 CST 2006
[ ... snip ... ]
SCSI subsystem initialized
libata version 2.00 loaded.
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:01' and the driver 'system'
pnp: match found with the PnP device '00:02' and the driver 'system'
PCI: Bridge: 0000:00:01.0
IO window: d000-dfff
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:08' and the driver 'serial'
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: match found with the PnP device '00:09' and the driver 'serial'
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ata_piix 0000:00:07.1: version 2.00ac7
ata1: PATA max UDMA/33 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
scsi0 : ata_piix
ata1.00: ATA-2, max UDMA/33, 6303024 sectors: LBA
ata1.00: ata1: dev 0 multi count 16
ata1.01: ATA-4, max UDMA/66, 16514064 sectors: LBA
ata1.01: ata1: dev 1 multi count 16
ata1.00: configured for UDMA/33
ata1.01: configured for UDMA/33
scsi1 : ata_piix
ata2.00: ATAPI, max MWDMA1
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO4
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO0
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: disabled
scsi 0:0:0:0: Direct-Access ATA ST33232A 3.02 PQ: 0 ANSI: 5
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 < sda5 sda6 sda7 >
sd 0:0:0:0: Attached scsi disk sda
scsi 0:0:1:0: Direct-Access ATA FUJITSU MPD3084A DD-0 PQ: 0 ANSI: 5
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3
sd 0:0:1:0: Attached scsi disk sdb
[ ... snip ... ]
Although the CD-ROM wasn't found, the bootup was speedier than it had
been with the libata code from the 2.6.19-pre releases. I notice that
the 'revalidation failed' value is different that what I had been
seeing, also. Here is trimmed 'dmesg' output from when I first tried out
the new libata code:
Linux version 2.6.18-pata (arth@pcdebian) (gcc version 4.1.2 20060928 (prerelease) (Debian 4.1.1-15)) #25 Wed Oct 4 16:12:47 CDT 2006
[ ... snip ... ]
libata version 2.00 loaded.
ata_piix 0000:00:07.1: version 2.00ac6
ata1: PATA max UDMA/33 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
scsi0 : ata_piix
ata1.00: ATA-2, max UDMA/33, 6303024 sectors: LBA
ata1.00: ata1: dev 0 multi count 16
ata1.01: ATA-4, max UDMA/66, 16514064 sectors: LBA
ata1.01: ata1: dev 1 multi count 16
ata1.00: configured for UDMA/33
ata1.01: configured for UDMA/33
scsi1 : ata_piix
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: ATAPI, max MWDMA1
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: limiting speed to PIO4
ata2: failed to recover some devices, retrying in 5 secs
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: limiting speed to PIO0
ata2: failed to recover some devices, retrying in 5 secs
ATA: abnormal status 0xFF on port 0x177
ATA: abnormal status 0xFF on port 0x177
ata2.00: qc timeout (cmd 0xa1)
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata2.00: revalidation failed (errno=-5)
ata2.00: disabled
scsi 0:0:0:0: Direct-Access ATA ST33232A 3.02 PQ: 0 ANSI: 5
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
sda: sda1 sda2 < sda5 sda6 sda7 >
sd 0:0:0:0: Attached scsi disk sda
scsi 0:0:1:0: Direct-Access ATA FUJITSU MPD3084A DD-0 PQ: 0 ANSI: 5
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3
sd 0:0:1:0: Attached scsi disk sdb
[ ... snip ... ]
For comparison here is trimmed 'dmesg' output from a 2.6.18 kernel using
the drivers/ide code:
Linux version 2.6.18 (arth@pcdebian) (gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)) #1 Wed Sep 20 06:56:45 CDT 2006
[ ... snip ... ]
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 0000:00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: ST33232A, ATA DISK drive
hdb: FUJITSU MPD3084AT, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: ATAPI CDROM, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: 6303024 sectors (3227 MB) w/128KiB Cache, CHS=6253/16/63, UDMA(33)
hda: cache flushes not supported
hda: hda1 hda2 < hda5 hda6 hda7 >
hdb: max request size: 128KiB
hdb: 16514064 sectors (8455 MB) w/512KiB Cache, CHS=16383/16/63, UDMA(33)
hdb: cache flushes not supported
hdb: hdb1 hdb2 < hdb5 hdb6 > hdb3
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
Using IPI Shortcut mode
Time: tsc clocksource has been installed.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 132k freed
input: AT Translated Set 2 keyboard as /class/input/input0
NET: Registered protocol family 1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP(,...)]
hdc: ATAPI 24X CD-ROM drive, 120kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
[ ... snip ... ]
In better news, I'm running Linus' current tree on a SMP PIII machine
which also uses the piix motherboard. This machine previous would
also not find the CD-ROM and had long delays probing the disks during
bootup. I'm pleased to report both problems are solved!
Please let me know what other info I can pass along to help identify
the problem, and I'll be glad to test patches.
My thanks to everyone working on Linux and the new libata code.
Art Haas
--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.
-Thomas Jefferson to James Smith, 1822
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-06 18:16 ` Art Haas
@ 2006-12-07 4:28 ` Tejun Heo
2006-12-07 10:55 ` Alan
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2006-12-07 4:28 UTC (permalink / raw)
To: Art Haas; +Cc: linux-ide
[-- Attachment #1: Type: text/plain, Size: 52 bytes --]
Please test the attached patch.
Thanks.
--
tejun
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 1369 bytes --]
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index f8ec389..6d0f0ee 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3396,6 +3396,7 @@ static void ata_dev_xfermask(struct ata_device *dev)
struct ata_port *ap = dev->ap;
struct ata_host *host = ap->host;
unsigned long xfer_mask;
+ int i;
/* controller modes available */
xfer_mask = ata_pack_xfermask(ap->pio_mask,
@@ -3413,11 +3414,27 @@ static void ata_dev_xfermask(struct ata_device *dev)
if (ata_drive_40wire(dev->id) && (ap->cbl == ATA_CBL_PATA_UNK || ap->cbl == ATA_CBL_PATA80))
xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA);
-
+ /* apply xfermask limits of this device */
xfer_mask &= ata_pack_xfermask(dev->pio_mask,
dev->mwdma_mask, dev->udma_mask);
xfer_mask &= ata_id_xfermask(dev->id);
+ /* PIO xfermask limits are shared by all devices on the same
+ * channel to avoid violating device selection timing.
+ */
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
+ struct ata_device *d = &ap->device[i];
+ unsigned int pio_mask;
+
+ if (ata_dev_absent(d))
+ continue;
+
+ ata_unpack_xfermask(ata_id_xfermask(d->id),
+ &pio_mask, NULL, NULL);
+ pio_mask &= d->pio_mask;
+ xfer_mask &= ata_pack_xfermask(pio_mask, UINT_MAX, UINT_MAX);
+ }
+
/*
* CFA Advanced TrueIDE timings are not allowed on a shared
* cable
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-07 4:28 ` Tejun Heo
@ 2006-12-07 10:55 ` Alan
2006-12-07 12:37 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Alan @ 2006-12-07 10:55 UTC (permalink / raw)
To: Tejun Heo; +Cc: Art Haas, linux-ide
On Thu, 07 Dec 2006 13:28:02 +0900
Tejun Heo <htejun@gmail.com> wrote:
> Please test the attached patch.
That should be getting done automatically by the driver and used to work
with the old eh/probe code. It does rely on having done the initial PIO0
identify of both devices and the mode decision being made before mode
setting functions are called however, and that is/was documented as a
guarantee, and is relied upon all over.
Definitely worth testing Art, especially if it shows something up.
Tejun: pata_amd does the timing merges itself both for 8bit which is
shared and in the timing compute for the DMA cases. Also the other
pattern to these reports is ATAPI, although that might I guess be a
symptom of "slave".
The other problem is that mmio bus reset is broken, but the AMD always
uses PIO cycles so that shouldn't be involved.
Alan (still baffled by this one)
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-07 10:55 ` Alan
@ 2006-12-07 12:37 ` Tejun Heo
2006-12-08 1:06 ` Art Haas
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2006-12-07 12:37 UTC (permalink / raw)
To: Alan; +Cc: Art Haas, linux-ide
[-- Attachment #1: Type: text/plain, Size: 1574 bytes --]
Alan wrote:
> On Thu, 07 Dec 2006 13:28:02 +0900
> Tejun Heo <htejun@gmail.com> wrote:
>
>> Please test the attached patch.
>
> That should be getting done automatically by the driver and used to work
> with the old eh/probe code. It does rely on having done the initial PIO0
> identify of both devices and the mode decision being made before mode
> setting functions are called however, and that is/was documented as a
> guarantee, and is relied upon all over.
I broke it in the following commit while implementing per-dev xfermode.
I have no idea what I was thinking. :-(
commit 37deecb5139ee431233781a9a093d9fcaab54c5b
[PATCH] libata: implement per-dev xfermask
> Definitely worth testing Art, especially if it shows something up.
Art, I attached the wrong patch and it won't apply to vanilla 2.6.19.
Patch against 2.6.19 is attached here. Please test this one.
> Tejun: pata_amd does the timing merges itself both for 8bit which is
> shared and in the timing compute for the DMA cases. Also the other
> pattern to these reports is ATAPI, although that might I guess be a
> symptom of "slave".
Yeap, I noticed the ATAPI devices and also that in many reports those
devices are pretty old ones which support only upto MWDMA modes. My
suspicion was that people are pairing a slower ODD with a newer HDD on
the same channel and seeing this problem.
> The other problem is that mmio bus reset is broken, but the AMD always
> uses PIO cycles so that shouldn't be involved.
>
> Alan (still baffled by this one)
Let's see if this patch fixes anything.
--
tejun
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 1298 bytes --]
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 915a55a..b54ca36 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3109,6 +3109,7 @@ static void ata_dev_xfermask(struct ata_device *dev)
struct ata_port *ap = dev->ap;
struct ata_host *host = ap->host;
unsigned long xfer_mask;
+ int i;
/* controller modes available */
xfer_mask = ata_pack_xfermask(ap->pio_mask,
@@ -3120,10 +3121,27 @@ static void ata_dev_xfermask(struct ata_device *dev)
if (ap->cbl == ATA_CBL_PATA40)
xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA);
+ /* apply xfermask limits of this device */
xfer_mask &= ata_pack_xfermask(dev->pio_mask,
dev->mwdma_mask, dev->udma_mask);
xfer_mask &= ata_id_xfermask(dev->id);
+ /* PIO xfermask limits are shared by all devices on the same
+ * channel to avoid violating device selection timing.
+ */
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
+ struct ata_device *d = &ap->device[i];
+ unsigned int pio_mask;
+
+ if (ata_dev_absent(d))
+ continue;
+
+ ata_unpack_xfermask(ata_id_xfermask(d->id),
+ &pio_mask, NULL, NULL);
+ pio_mask &= d->pio_mask;
+ xfer_mask &= ata_pack_xfermask(pio_mask, UINT_MAX, UINT_MAX);
+ }
+
/*
* CFA Advanced TrueIDE timings are not allowed on a shared
* cable
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-07 12:37 ` Tejun Heo
@ 2006-12-08 1:06 ` Art Haas
2006-12-27 13:29 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Art Haas @ 2006-12-08 1:06 UTC (permalink / raw)
To: linux-ide
On Thu, Dec 07, 2006 at 09:37:09PM +0900, Tejun Heo wrote:
> Alan wrote:
> > On Thu, 07 Dec 2006 13:28:02 +0900
> > Tejun Heo <htejun@gmail.com> wrote:
> >
> >> Please test the attached patch.
> >
> > That should be getting done automatically by the driver and used to work
> > with the old eh/probe code. It does rely on having done the initial PIO0
> > identify of both devices and the mode decision being made before mode
> > setting functions are called however, and that is/was documented as a
> > guarantee, and is relied upon all over.
>
> I broke it in the following commit while implementing per-dev xfermode.
> I have no idea what I was thinking. :-(
>
> commit 37deecb5139ee431233781a9a093d9fcaab54c5b
> [PATCH] libata: implement per-dev xfermask
>
> > Definitely worth testing Art, especially if it shows something up.
>
> Art, I attached the wrong patch and it won't apply to vanilla 2.6.19.
> Patch against 2.6.19 is attached here. Please test this one.
> [ ... snip ... ]
>
> Let's see if this patch fixes anything.
> [ ... snip patch ... ]
Hi.
Sorry to report that patch did not work. I applied the patch against
Linus's tree this morning, built and installed that kernel, and
the CD-ROM was not found. I also tried the patch with an update
from Linus's tree from this evening, and again the same result.
Here's the complete 'dmesg' output:
Linux version 2.6.19-ajh3 (arth@pcdebian) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)) #10 Thu Dec 7 17:46:08 CST 2006
BIOS-provided physical RAM map:
sanitize start
sanitize end
copy_e820_map() start: 0000000000000000 size: 00000000000a0000 end: 00000000000a0000 type: 1
copy_e820_map() type is E820_RAM
copy_e820_map() start: 00000000000f0000 size: 0000000000010000 end: 0000000000100000 type: 2
copy_e820_map() start: 0000000000100000 size: 0000000007ef0000 end: 0000000007ff0000 type: 1
copy_e820_map() type is E820_RAM
copy_e820_map() start: 0000000007ff0000 size: 0000000000003000 end: 0000000007ff3000 type: 4
copy_e820_map() start: 0000000007ff3000 size: 000000000000d000 end: 0000000008000000 type: 3
copy_e820_map() start: 00000000ffff0000 size: 0000000000010000 end: 0000000100000000 type: 2
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000007ff0000 (usable)
BIOS-e820: 0000000007ff0000 - 0000000007ff3000 (ACPI NVS)
BIOS-e820: 0000000007ff3000 - 0000000008000000 (ACPI data)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
127MB LOWMEM available.
Entering add_active_range(0, 0, 32752) 0 entries of 256 used
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 32752
early_node_map[1] active PFN ranges
0: 0 -> 32752
On node 0 totalpages: 32752
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 223 pages used for memmap
Normal zone: 28433 pages, LIFO batch:7
DMI 2.1 present.
ACPI: RSDP (v000 GBT ) @ 0x000f6c60
ACPI: RSDT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3000
ACPI: FADT (v001 GBT AWRDACPI 0x00000000 0x00000000) @ 0x07ff3040
ACPI: DSDT (v001 GBT AWRDACPI 0x00001000 MSFT 0x01000007) @ 0x00000000
ACPI: PM-Timer IO Port: 0x4008
Allocating PCI resources starting at 10000000 (gap: 08000000:f7ff0000)
Detected 398.945 MHz processor.
Built 1 zonelists. Total pages: 32497
Kernel command line: BOOT_IMAGE=2.6.19-ajh3 ro root=LABEL=/ root=/dev/sda1
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffd000 (01101000)
Enabling fast FPU save and restore... done.
Initializing CPU#0
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 127200k/131008k available (1469k kernel code, 3348k reserved, 469k data, 152k init, 0k highmem)
virtual kernel memory layout:
fixmap : 0xffff7000 - 0xfffff000 ( 32 kB)
vmalloc : 0xc8800000 - 0xffff5000 ( 887 MB)
lowmem : 0xc0000000 - 0xc7ff0000 ( 127 MB)
.init : 0xc02e8000 - 0xc030e000 ( 152 kB)
.data : 0xc026f584 - 0xc02e4a30 ( 469 kB)
.text : 0xc0100000 - 0xc026f584 (1469 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 798.26 BogoMIPS (lpj=399130)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 512K
CPU: After all inits, caps: 0183f9ff 00000000 00000000 00000040 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: Intel Pentium II (Deschutes) stepping 01
Checking 'hlt' instruction... OK.
ACPI: Core revision 20060707
ACPI: setting ELCR to 0200 (from 1c00)
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfb3c0, last bus=1
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
* Found PM-Timer Bug on the chipset. Due to workarounds for a bug,
* this clock source is slow. Consider trying other clock sources
PCI quirk: region 4000-403f claimed by PIIX4 ACPI
PCI quirk: region 5000-500f claimed by PIIX4 SMB
Boot video device is 0000:00:08.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 10 11 *12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: Power Resource [PFAN] (on)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: ACPI device : hid PNP0A03
pnp: ACPI device : hid PNP0C01
pnp: ACPI device : hid PNP0C02
pnp: ACPI device : hid PNP0200
pnp: ACPI device : hid PNP0B00
pnp: ACPI device : hid PNP0800
pnp: ACPI device : hid PNP0C04
pnp: ACPI device : hid PNP0700
pnp: ACPI device : hid PNP0501
pnp: ACPI device : hid PNP0501
pnp: ACPI device : hid PNP0400
pnp: ACPI device : hid PNP0303
pnp: PnP ACPI: found 12 devices
PnPBIOS: Disabled by ACPI PNP
SCSI subsystem initialized
libata version 2.00 loaded.
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:01' and the driver 'system'
pnp: match found with the PnP device '00:02' and the driver 'system'
PCI: Bridge: 0000:00:01.0
IO window: d000-dfff
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:08' and the driver 'serial'
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: match found with the PnP device '00:09' and the driver 'serial'
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ata_piix 0000:00:07.1: version 2.00ac7
ata1: PATA max UDMA/33 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
scsi0 : ata_piix
ata1.00: ATA-2, max UDMA/33, 6303024 sectors: LBA
ata1.00: ata1: dev 0 multi count 16
ata1.01: ATA-4, max UDMA/66, 16514064 sectors: LBA
ata1.01: ata1: dev 1 multi count 16
ata1.00: configured for UDMA/33
ata1.01: configured for UDMA/33
scsi1 : ata_piix
ata2.00: ATAPI, max MWDMA1
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO4
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO0
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: disabled
scsi 0:0:0:0: Direct-Access ATA ST33232A 3.02 PQ: 0 ANSI: 5
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 < sda5 sda6 sda7 >
sd 0:0:0:0: Attached scsi disk sda
scsi 0:0:1:0: Direct-Access ATA FUJITSU MPD3084A DD-0 PQ: 0 ANSI: 5
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3
sd 0:0:1:0: Attached scsi disk sdb
pnp: the driver 'i8042 kbd' has been registered
pnp: match found with the PnP device '00:0b' and the driver 'i8042 kbd'
pnp: the driver 'i8042 aux' has been registered
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP cubic registered
Using IPI Shortcut mode
Time: tsc clocksource has been installed.
input: AT Translated Set 2 keyboard as /class/input/input0
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 152k freed
NET: Registered protocol family 1
Real Time Clock Driver v1.12ac
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
8139too Fast Ethernet driver 0.9.28
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 12 (level, low) -> IRQ 12
eth0: RealTek RTL8139 at 0xc8808000, 00:05:5d:45:47:96, IRQ 12
eth0: Identified 8139 chip type 'RTL-8139C'
pnp: the driver 'parport_pc' has been registered
pnp: match found with the PnP device '00:0a' and the driver 'parport_pc'
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP(,...)]
Adding 100760k swap on /dev/sda7. Priority:-1 extents:1 across:100760k
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
NET: Registered protocol family 17
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
ttyS3: LSR safety check engaged!
ttyS3: LSR safety check engaged!
EXT3 FS on sda5, internal journal
EXT3 FS on sda6, internal journal
EXT3 FS on sdb5, internal journal
EXT3 FS on sdb6, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on sdb3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
The patch you sent applies cleanly but with large offsets. The
diff against Linus's current tree if it can be of use is below.
Art Haas
P.S. Any suggestions on what to do to get rid of the 'LSR safety
check engaged' messages?
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 011c0a8..62e4d48 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3394,6 +3394,7 @@ static void ata_dev_xfermask(struct ata_device *dev)
struct ata_port *ap = dev->ap;
struct ata_host *host = ap->host;
unsigned long xfer_mask;
+ int i;
/* controller modes available */
xfer_mask = ata_pack_xfermask(ap->pio_mask,
@@ -3412,10 +3413,27 @@ static void ata_dev_xfermask(struct ata_device *dev)
xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA);
+ /* apply xfermask limits of this device */
xfer_mask &= ata_pack_xfermask(dev->pio_mask,
dev->mwdma_mask, dev->udma_mask);
xfer_mask &= ata_id_xfermask(dev->id);
+ /* PIO xfermask limits are shared by all devices on the same
+ * channel to avoid violating device selection timing.
+ */
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
+ struct ata_device *d = &ap->device[i];
+ unsigned int pio_mask;
+
+ if (ata_dev_absent(d))
+ continue;
+
+ ata_unpack_xfermask(ata_id_xfermask(d->id),
+ &pio_mask, NULL, NULL);
+ pio_mask &= d->pio_mask;
+ xfer_mask &= ata_pack_xfermask(pio_mask, UINT_MAX, UINT_MAX);
+ }
+
/*
* CFA Advanced TrueIDE timings are not allowed on a shared
* cable
--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.
-Thomas Jefferson to James Smith, 1822
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-08 1:06 ` Art Haas
@ 2006-12-27 13:29 ` Tejun Heo
2006-12-28 3:51 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2006-12-27 13:29 UTC (permalink / raw)
To: Art Haas; +Cc: linux-ide
[-- Attachment #1: Type: text/plain, Size: 428 bytes --]
Art Haas wrote:
> Sorry to report that patch did not work. I applied the patch against
> Linus's tree this morning, built and installed that kernel, and
> the CD-ROM was not found. I also tried the patch with an update
> from Linus's tree from this evening, and again the same result.
Hello, Art.
Can you please test the attached patch? The patch is against 2.6.19.
Please give me my late christmas gift.
Thanks.
--
tejun
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 430 bytes --]
--- tree0/drivers/ata/libata-sff.c.orig 2006-12-27 22:26:03.000000000 +0900
+++ tree0/drivers/ata/libata-sff.c 2006-12-27 22:26:15.000000000 +0900
@@ -662,6 +662,7 @@
*/
void ata_bmdma_freeze(struct ata_port *ap)
{
+#if 0
struct ata_ioports *ioaddr = &ap->ioaddr;
ap->ctl |= ATA_NIEN;
@@ -671,6 +672,7 @@
writeb(ap->ctl, (void __iomem *)ioaddr->ctl_addr);
else
outb(ap->ctl, ioaddr->ctl_addr);
+#endif
}
/**
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-27 13:29 ` Tejun Heo
@ 2006-12-28 3:51 ` Tejun Heo
2007-01-02 21:07 ` Art Haas
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2006-12-28 3:51 UTC (permalink / raw)
To: Art Haas; +Cc: linux-ide
[-- Attachment #1: Type: text/plain, Size: 487 bytes --]
Tejun Heo wrote:
> Art Haas wrote:
>> Sorry to report that patch did not work. I applied the patch against
>> Linus's tree this morning, built and installed that kernel, and
>> the CD-ROM was not found. I also tried the patch with an update
>> from Linus's tree from this evening, and again the same result.
>
> Hello, Art.
>
> Can you please test the attached patch? The patch is against 2.6.19.
> Please give me my late christmas gift.
Please test this patch too. TIA.
--
tejun
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 588 bytes --]
diff --git a/include/linux/libata.h b/include/linux/libata.h
index abd2deb..7a4cf9e 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1166,6 +1166,14 @@ static inline u8 ata_irq_on(struct ata_port *ap)
ap->ctl &= ~ATA_NIEN;
ap->last_ctl = ap->ctl;
+ ap->ops->dev_select(ap, 1);
+ if (ap->flags & ATA_FLAG_MMIO)
+ writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
+ else
+ outb(ap->ctl, ioaddr->ctl_addr);
+ tmp = ata_wait_idle(ap);
+
+ ap->ops->dev_select(ap, 0);
if (ap->flags & ATA_FLAG_MMIO)
writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
else
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2006-12-28 3:51 ` Tejun Heo
@ 2007-01-02 21:07 ` Art Haas
2007-01-03 3:31 ` Tejun Heo
0 siblings, 1 reply; 15+ messages in thread
From: Art Haas @ 2007-01-02 21:07 UTC (permalink / raw)
To: Tejun Heo; +Cc: linux-ide
Hi.
I wanted to try the two patches you've sent against the current
2.6.20-rc3, but there have been numerous changes to the files
so neither patch can apply cleanly. I'm not familiar enough
with the libata to try and make similar changes to the current
files to match your patch. :-(
Any possiblity of generating patches against the 2.6.20-rc3 tree?
Art Haas
--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.
-Thomas Jefferson to James Smith, 1822
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2007-01-02 21:07 ` Art Haas
@ 2007-01-03 3:31 ` Tejun Heo
2007-01-03 18:08 ` Art Haas
0 siblings, 1 reply; 15+ messages in thread
From: Tejun Heo @ 2007-01-03 3:31 UTC (permalink / raw)
To: Art Haas; +Cc: linux-ide
[-- Attachment #1: Type: text/plain, Size: 444 bytes --]
Art Haas wrote:
> Hi.
>
> I wanted to try the two patches you've sent against the current
> 2.6.20-rc3, but there have been numerous changes to the files
> so neither patch can apply cleanly. I'm not familiar enough
> with the libata to try and make similar changes to the current
> files to match your patch. :-(
>
> Any possiblity of generating patches against the 2.6.20-rc3 tree?
Yeap, please try the attached patch. Thanks.
--
tejun
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 8243 bytes --]
Index: work/drivers/ata/libata-core.c
===================================================================
--- work.orig/drivers/ata/libata-core.c 2007-01-03 12:30:18.000000000 +0900
+++ work/drivers/ata/libata-core.c 2007-01-03 12:30:19.000000000 +0900
@@ -59,6 +59,10 @@
#include "libata.h"
+enum {
+ ATA_MODE_STRING_MAX = 16,
+};
+
/* debounce timing parameters in msecs { interval, duration, timeout } */
const unsigned long sata_deb_timing_normal[] = { 5, 100, 2000 };
const unsigned long sata_deb_timing_hotplug[] = { 25, 500, 2000 };
@@ -534,6 +538,7 @@ static int ata_xfer_mode2shift(unsigned
/**
* ata_mode_string - convert xfer_mask to string
* @xfer_mask: mask of bits supported; only highest bit counts.
+ * @buf: buffer of ATA_MODE_STRING_MAX bytes
*
* Determine string which represents the highest speed
* (highest bit in @modemask).
@@ -542,10 +547,10 @@ static int ata_xfer_mode2shift(unsigned
* None.
*
* RETURNS:
- * Constant C string representing highest speed listed in
- * @mode_mask, or the constant C string "<n/a>".
+ * Pointer to @buf which contains C string representing highest
+ * DMA and PIO speeds listed in @mode_mask.
*/
-static const char *ata_mode_string(unsigned int xfer_mask)
+static const char *ata_mode_string(unsigned int xfer_mask, char *buf)
{
static const char * const xfer_mode_str[] = {
"PIO0",
@@ -570,11 +575,24 @@ static const char *ata_mode_string(unsig
"UDMA7",
};
int highbit;
+ const char *str, *pio_str;
+
+ str = pio_str = "<n/a>";
highbit = fls(xfer_mask) - 1;
if (highbit >= 0 && highbit < ARRAY_SIZE(xfer_mode_str))
- return xfer_mode_str[highbit];
- return "<n/a>";
+ str = xfer_mode_str[highbit];
+
+ highbit = fls(xfer_mask & ATA_MASK_PIO) - 1;
+ if (highbit >= 0 && highbit < ARRAY_SIZE(xfer_mode_str))
+ pio_str = xfer_mode_str[highbit];
+
+ if (str != pio_str)
+ snprintf(buf, ATA_MODE_STRING_MAX, "%s:%s", str, pio_str);
+ else
+ snprintf(buf, ATA_MODE_STRING_MAX, "%s", str);
+
+ return buf;
}
static const char *sata_spd_string(unsigned int spd)
@@ -1605,7 +1623,7 @@ int ata_dev_configure(struct ata_device
struct ata_port *ap = dev->ap;
int print_info = ap->eh_context.i.flags & ATA_EHI_PRINTINFO;
const u16 *id = dev->id;
- unsigned int xfer_mask;
+ char xfer_buf[ATA_MODE_STRING_MAX];
char revbuf[7]; /* XYZ-99\0 */
int rc;
@@ -1643,7 +1661,7 @@ int ata_dev_configure(struct ata_device
*/
/* find max transfer mode; for printk only */
- xfer_mask = ata_id_xfermask(id);
+ ata_mode_string(ata_id_xfermask(id), xfer_buf);
if (ata_msg_probe(ap))
ata_dump_id(id);
@@ -1683,8 +1701,7 @@ int ata_dev_configure(struct ata_device
if (ata_msg_drv(ap) && print_info)
ata_dev_printk(dev, KERN_INFO, "%s, "
"max %s, %Lu sectors: %s %s\n",
- revbuf,
- ata_mode_string(xfer_mask),
+ revbuf, xfer_buf,
(unsigned long long)dev->n_sectors,
lba_desc, ncq_desc);
} else {
@@ -1706,8 +1723,7 @@ int ata_dev_configure(struct ata_device
if (ata_msg_drv(ap) && print_info)
ata_dev_printk(dev, KERN_INFO, "%s, "
"max %s, %Lu sectors: CHS %u/%u/%u\n",
- revbuf,
- ata_mode_string(xfer_mask),
+ revbuf, xfer_buf,
(unsigned long long)dev->n_sectors,
dev->cylinders, dev->heads,
dev->sectors);
@@ -1746,8 +1762,7 @@ int ata_dev_configure(struct ata_device
/* print device info to dmesg */
if (ata_msg_drv(ap) && print_info)
ata_dev_printk(dev, KERN_INFO, "ATAPI, max %s%s\n",
- ata_mode_string(xfer_mask),
- cdb_intr_string);
+ xfer_buf, cdb_intr_string);
}
/* determine max_sectors */
@@ -2349,6 +2364,7 @@ int ata_timing_compute(struct ata_device
int ata_down_xfermask_limit(struct ata_device *dev, int force_pio0)
{
unsigned long xfer_mask;
+ char xfer_buf[ATA_MODE_STRING_MAX];
int highbit;
xfer_mask = ata_pack_xfermask(dev->pio_mask, dev->mwdma_mask,
@@ -2371,7 +2387,7 @@ int ata_down_xfermask_limit(struct ata_d
&dev->udma_mask);
ata_dev_printk(dev, KERN_WARNING, "limiting speed to %s\n",
- ata_mode_string(xfer_mask));
+ ata_mode_string(xfer_mask, xfer_buf));
return 0;
@@ -2383,6 +2399,7 @@ static int ata_dev_set_mode(struct ata_d
{
struct ata_eh_context *ehc = &dev->ap->eh_context;
unsigned int err_mask;
+ char xfer_buf[ATA_MODE_STRING_MAX];
int rc;
dev->flags &= ~ATA_DFLAG_PIO;
@@ -2405,8 +2422,10 @@ static int ata_dev_set_mode(struct ata_d
DPRINTK("xfer_shift=%u, xfer_mode=0x%x\n",
dev->xfer_shift, (int)dev->xfer_mode);
- ata_dev_printk(dev, KERN_INFO, "configured for %s\n",
- ata_mode_string(ata_xfer_mode2mask(dev->xfer_mode)));
+ ata_mode_string(ata_xfer_mode2mask(dev->xfer_mode) |
+ ata_xfer_mode2mask(dev->pio_mode), xfer_buf);
+ ata_dev_printk(dev, KERN_INFO, "configured for %s\n", xfer_buf);
+
return 0;
}
@@ -2458,6 +2477,9 @@ int ata_set_mode(struct ata_port *ap, st
pio_mask = ata_pack_xfermask(dev->pio_mask, 0, 0);
dma_mask = ata_pack_xfermask(0, dev->mwdma_mask, dev->udma_mask);
dev->pio_mode = ata_xfer_mask2mode(pio_mask);
+ /* XXX - debug */
+ if (dev->pio_mode)
+ dev->pio_mode = XFER_PIO_0;
dev->dma_mode = ata_xfer_mask2mode(dma_mask);
found = 1;
@@ -3400,6 +3422,7 @@ static void ata_dev_xfermask(struct ata_
struct ata_port *ap = dev->ap;
struct ata_host *host = ap->host;
unsigned long xfer_mask;
+ int i;
/* controller modes available */
xfer_mask = ata_pack_xfermask(ap->pio_mask,
@@ -3418,10 +3441,27 @@ static void ata_dev_xfermask(struct ata_
xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA);
+ /* apply xfermask limits of this device */
xfer_mask &= ata_pack_xfermask(dev->pio_mask,
dev->mwdma_mask, dev->udma_mask);
xfer_mask &= ata_id_xfermask(dev->id);
+ /* PIO xfermask limits are shared by all devices on the same
+ * channel to avoid violating device selection timing.
+ */
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
+ struct ata_device *d = &ap->device[i];
+ unsigned int pio_mask;
+
+ if (ata_dev_absent(d))
+ continue;
+
+ ata_unpack_xfermask(ata_id_xfermask(d->id),
+ &pio_mask, NULL, NULL);
+ pio_mask &= d->pio_mask;
+ xfer_mask &= ata_pack_xfermask(pio_mask, UINT_MAX, UINT_MAX);
+ }
+
/*
* CFA Advanced TrueIDE timings are not allowed on a shared
* cable
@@ -5800,7 +5840,7 @@ int ata_device_add(const struct ata_prob
/* register each port bound to this device */
for (i = 0; i < host->n_ports; i++) {
struct ata_port *ap;
- unsigned long xfer_mode_mask;
+ char xfer_buf[ATA_MODE_STRING_MAX];
int irq_line = ent->irq;
ap = ata_port_add(ent, host, i);
@@ -5827,18 +5867,16 @@ int ata_device_add(const struct ata_prob
if (i == 1 && ent->irq2)
irq_line = ent->irq2;
- xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
- (ap->mwdma_mask << ATA_SHIFT_MWDMA) |
- (ap->pio_mask << ATA_SHIFT_PIO);
+ ata_mode_string(ap->udma_mask << ATA_SHIFT_UDMA |
+ ap->mwdma_mask << ATA_SHIFT_MWDMA |
+ ap->pio_mask << ATA_SHIFT_PIO, xfer_buf);
/* print per-port info to dmesg */
ata_port_printk(ap, KERN_INFO, "%cATA max %s cmd 0x%lX "
"ctl 0x%lX bmdma 0x%lX irq %d\n",
ap->flags & ATA_FLAG_SATA ? 'S' : 'P',
- ata_mode_string(xfer_mode_mask),
- ap->ioaddr.cmd_addr,
- ap->ioaddr.ctl_addr,
- ap->ioaddr.bmdma_addr,
+ xfer_buf, ap->ioaddr.cmd_addr,
+ ap->ioaddr.ctl_addr, ap->ioaddr.bmdma_addr,
irq_line);
/* freeze port before requesting IRQ */
Index: work/drivers/ata/libata-sff.c
===================================================================
--- work.orig/drivers/ata/libata-sff.c 2007-01-03 12:30:18.000000000 +0900
+++ work/drivers/ata/libata-sff.c 2007-01-03 12:30:19.000000000 +0900
@@ -691,6 +691,7 @@ void ata_bmdma_stop(struct ata_queued_cm
*/
void ata_bmdma_freeze(struct ata_port *ap)
{
+#if 0
struct ata_ioports *ioaddr = &ap->ioaddr;
ap->ctl |= ATA_NIEN;
@@ -701,6 +702,7 @@ void ata_bmdma_freeze(struct ata_port *a
else
outb(ap->ctl, ioaddr->ctl_addr);
+#endif
/* Under certain circumstances, some controllers raise IRQ on
* ATA_NIEN manipulation. Also, many controllers fail to mask
* previously pending IRQ on ATA_NIEN assertion. Clear it.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2007-01-03 3:31 ` Tejun Heo
@ 2007-01-03 18:08 ` Art Haas
2007-01-03 23:19 ` Dâniel Fraga
0 siblings, 1 reply; 15+ messages in thread
From: Art Haas @ 2007-01-03 18:08 UTC (permalink / raw)
To: Tejun Heo; +Cc: linux-ide
On Wed, Jan 03, 2007 at 12:31:39PM +0900, Tejun Heo wrote:
> Art Haas wrote:
> > Hi.
> >
> > I wanted to try the two patches you've sent against the current
> > 2.6.20-rc3, but there have been numerous changes to the files
> > so neither patch can apply cleanly. I'm not familiar enough
> > with the libata to try and make similar changes to the current
> > files to match your patch. :-(
> >
> > Any possiblity of generating patches against the 2.6.20-rc3 tree?
>
> Yeap, please try the attached patch. Thanks.
> [ ... snip patch ... ]
Sorry to report the patch did not work. Here's the dmesg output
from booting the test kernel - this morning's Linus tree with
your patch applied:
$ dmesg
Linux version 2.6.20-rc3-ajh (arth@pcdebian) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 Wed Jan 3 04:20:15 CST 2007
BIOS-provided physical RAM map:
[ ... snip ... ]
PnPBIOS: Disabled by ACPI PNP
SCSI subsystem initialized
libata version 2.00 loaded.
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:01' and the driver 'system'
pnp: match found with the PnP device '00:02' and the driver 'system'
PCI: Bridge: 0000:00:01.0
IO window: d000-dfff
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:08' and the driver 'serial'
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: match found with the PnP device '00:09' and the driver 'serial'
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ata_piix 0000:00:07.1: version 2.00ac7
ata1: PATA max UDMA/33:PIO4 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
ata2: PATA max UDMA/33:PIO4 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
scsi0 : ata_piix
ata1.00: ATA-2, max UDMA/33:PIO4, 6303024 sectors: LBA
ata1.00: ata1: dev 0 multi count 16
ata1.01: ATA-4, max UDMA/66:PIO4, 16514064 sectors: LBA
ata1.01: ata1: dev 1 multi count 16
ata1.00: configured for UDMA/33:PIO0
ata1.01: configured for UDMA/33:PIO0
scsi1 : ata_piix
ata2.00: ATAPI, max MWDMA1:PIO4
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO4
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: limiting speed to PIO0
ata2: failed to recover some devices, retrying in 5 secs
ata2.00: revalidation failed (errno=-2)
ata2.00: disabled
scsi 0:0:0:0: Direct-Access ATA ST33232A 3.02 PQ: 0 ANSI: 5
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sda: 6303024 512-byte hdwr sectors (3227 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 < sda5 sda6 sda7 >
sd 0:0:0:0: Attached scsi disk sda
scsi 0:0:1:0: Direct-Access ATA FUJITSU MPD3084A DD-0 PQ: 0 ANSI: 5
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sdb: 16514064 512-byte hdwr sectors (8455 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3
sd 0:0:1:0: Attached scsi disk sdb
[ ... snip ... ]
A week or two ago I built a 2.6.20-rc kernel configured to use the
drivers/ide code and it (still) found the CDROM drive. Here's a trimmed
dmesg output of that kernel included with the hopes that it can be
useful ...
Linux version 2.6.20-rc1-ide (arth@pcdebian) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 Sun Dec 17 12:40:37 CST 2006
[ ... snip ... ]
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 0000:00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: ST33232A, ATA DISK drive
hdb: FUJITSU MPD3084AT, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: ATAPI CDROM, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: 6303024 sectors (3227 MB) w/128KiB Cache, CHS=6253/16/63, UDMA(33)
hda: cache flushes not supported
hda: hda1 hda2 < hda5 hda6 hda7 >
hdb: max request size: 128KiB
hdb: 16514064 sectors (8455 MB) w/512KiB Cache, CHS=16383/16/63, UDMA(33)
hdb: cache flushes not supported
hdb: hdb1 hdb2 < hdb5 hdb6 > hdb3
pnp: the driver 'i8042 kbd' has been registered
pnp: match found with the PnP device '00:0b' and the driver 'i8042 kbd'
pnp: the driver 'i8042 aux' has been registered
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard as /class/input/input0
TCP cubic registered
Using IPI Shortcut mode
Time: tsc clocksource has been installed.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 152k freed
NET: Registered protocol family 1
hdc: ATAPI 24X CD-ROM drive, 120kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
Real Time Clock Driver v1.12ac
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
[ ... snip ... ]
--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.
-Thomas Jefferson to James Smith, 1822
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
2007-01-03 18:08 ` Art Haas
@ 2007-01-03 23:19 ` Dâniel Fraga
0 siblings, 0 replies; 15+ messages in thread
From: Dâniel Fraga @ 2007-01-03 23:19 UTC (permalink / raw)
To: linux-ide
On Wed, 3 Jan 2007 12:08:40 -0600
"Art Haas" <ahaas@airmail.net> wrote:
> ata2.00: ATAPI, max MWDMA1:PIO4
> ata2.00: revalidation failed (errno=-2)
> ata2.00: limiting speed to PIO4
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: revalidation failed (errno=-2)
> ata2.00: limiting speed to PIO0
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: revalidation failed (errno=-2)
> ata2.00: disabled
While this problem isn't solved, how can we disable the second
device (in lilo or something like that) so we don't have to wait for the
retries? Thanks!
--
http://u-br.net
Linux 2.6.19: Avast! A bilge rat!
Sao Paulo - SP
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
@ 2007-03-14 19:33 YUP
0 siblings, 0 replies; 15+ messages in thread
From: YUP @ 2007-03-14 19:33 UTC (permalink / raw)
To: linux-ide
Hi,
I found that I have a similar problem. I'm running kubuntu box with
2.6.20-10 kernel with ubuntu patches and my cdrom as well as dvd drive
doesn't recognized at all. I've already reported this on kubuntu forum,
but nobody can answer me. The link is here:
http://kubuntuforums.net/forums/index.php?topic=3080227.0
I also tried to compile generic kernels from kernel.org with the same
result. Can anybody say what is gonig on with my hardware? Before 2.6.20
everything ran smoothly.
Regards,
Yarema
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: CDROM drive not found when booting using new libata code
@ 2007-03-14 19:59 YUP
0 siblings, 0 replies; 15+ messages in thread
From: YUP @ 2007-03-14 19:59 UTC (permalink / raw)
To: linux-ide
Hi,
I found that I have a similar problem. I'm running kubuntu box with
2.6.20-10 kernel with ubuntu patches and my cdrom as well as dvd drive
doesn't recognized at all. I've already reported this on kubuntu forum,
but nobody can answer me. The link is here:
http://kubuntuforums.net/forums/index.php?topic=3080227.0
I also tried to compile generic kernels from kernel.org with the same
result. Can anybody say what is gonig on with my hardware? Before 2.6.20
everything ran smoothly.
Regards,
Yarema
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2007-03-14 19:59 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-24 22:10 CDROM drive not found when booting using new libata code Art Haas
2006-11-21 9:26 ` Tejun Heo
2006-12-06 18:16 ` Art Haas
2006-12-07 4:28 ` Tejun Heo
2006-12-07 10:55 ` Alan
2006-12-07 12:37 ` Tejun Heo
2006-12-08 1:06 ` Art Haas
2006-12-27 13:29 ` Tejun Heo
2006-12-28 3:51 ` Tejun Heo
2007-01-02 21:07 ` Art Haas
2007-01-03 3:31 ` Tejun Heo
2007-01-03 18:08 ` Art Haas
2007-01-03 23:19 ` Dâniel Fraga
-- strict thread matches above, loose matches on Subject: below --
2007-03-14 19:33 YUP
2007-03-14 19:59 YUP
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).