* unable to use cdrom/dvd drive after some usage
@ 2008-01-15 4:46 Johnny Luong
2008-01-15 11:34 ` Alan Cox
0 siblings, 1 reply; 5+ messages in thread
From: Johnny Luong @ 2008-01-15 4:46 UTC (permalink / raw)
To: linux-ide
[-- Attachment #1: Type: text/plain, Size: 337 bytes --]
Hi,
If possible, I would like to know if its worthwhile simply just to get another
SATA drive / different controller / cable rather than trying to figure out
this PATA drive on SATA/PATA controller... see attached for bug report and
config file. I'm not on this email list so if you can CC that would be
appreciated.
Thanks,
Johnny
[-- Attachment #2: bug-report.txt --]
[-- Type: text/plain, Size: 46331 bytes --]
1) No longer able to access DVD/CD drive after HSM violation. It becomes available again after reboot.
2) On some occassions when reading from the drive, the application (wine)
closes down and the kernel reports a weird exception. The disc itself employs
SecuROM but generally speaking runs as expected.
3) pata_jmicron
4.1) Linux version 2.6.23.12 (root@belldandy) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sun Dec 23 15:01:19 PST 2007
4.2) See attached.
5) I've encountered this on older versions as well...
6) N/A
7) Not really sure how I can reproduce this one.
8.1)
Linux belldandy 2.6.23.12 #1 SMP Sun Dec 23 15:01:19 PST 2007 x86_64 GNU/Linux
Gnu C 4.1.2
Gnu make 3.81
binutils 2.17
util-linux 2.12r
mount 2.12r
module-init-tools 3.3-pre2
e2fsprogs 1.40-WIP
reiserfsprogs 3.6.19
PPP 2.4.4
Linux C Library 3.6
Dynamic linker (ldd) 2.3.6
Procps 3.2.7
Net-tools 1.60
Console-tools 0.2.3
Sh-utils 5.97
udev 105
wireless-tools 28
Modules Loaded appletalk ax25 ipx p8023 nvidia ppdev parport_pc lp parport fan ac battery ipv6 dm_snapshot dm_mirror snd_pcm_oss snd_mixer_oss sbp2 loop snd_emu10k1 snd_rawmidi firmware_class snd_ac97_codec ac97_bus snd_seq_device snd_hda_intel snd_pcm snd_util_mem ohci1394 snd_timer snd_page_alloc thermal snd_hwdep snd soundcore processor button intel_agp ieee1394 i2c_i801 i2c_core emu10k1_gp tsdev gameport floppy r8169 joydev pcspkr sg sr_mod cdrom reiserfs dm_mod sd_mod generic ide_core evdev usbhid usbkbd ehci_hcd uhci_hcd
8.2)
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
stepping : 6
cpu MHz : 2394.081
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4792.96
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
stepping : 6
cpu MHz : 2394.081
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4789.23
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
8.3)
appletalk 42544 2 - Live 0xffffffff88b72000
ax25 62140 2 - Live 0xffffffff88b61000
ipx 33864 2 - Live 0xffffffff88b57000
p8023 4672 1 ipx, Live 0xffffffff88b54000
nvidia 8896356 24 - Live 0xffffffff882d7000 (P)
ppdev 11912 0 - Live 0xffffffff882d3000
parport_pc 40936 0 - Live 0xffffffff882c8000
lp 15560 0 - Live 0xffffffff882c3000
parport 42764 3 ppdev,parport_pc,lp, Live 0xffffffff882b7000
fan 8264 0 - Live 0xffffffff882b3000
ac 8840 0 - Live 0xffffffff882af000
battery 16208 0 - Live 0xffffffff882aa000
ipv6 283944 16 - Live 0xffffffff88263000
dm_snapshot 20104 0 - Live 0xffffffff8825d000
dm_mirror 25152 0 - Live 0xffffffff88255000
snd_pcm_oss 45600 0 - Live 0xffffffff88248000
snd_mixer_oss 19968 1 snd_pcm_oss, Live 0xffffffff88242000
sbp2 26376 0 - Live 0xffffffff8823a000
loop 21572 0 - Live 0xffffffff88233000
snd_emu10k1 143584 0 - Live 0xffffffff8820e000
snd_rawmidi 29024 1 snd_emu10k1, Live 0xffffffff88205000
firmware_class 13440 1 snd_emu10k1, Live 0xffffffff88200000
snd_ac97_codec 116760 1 snd_emu10k1, Live 0xffffffff881e2000
ac97_bus 5248 1 snd_ac97_codec, Live 0xffffffff881df000
snd_seq_device 11220 2 snd_emu10k1,snd_rawmidi, Live 0xffffffff881db000
snd_hda_intel 358888 0 - Live 0xffffffff88180000
snd_pcm 88072 4 snd_pcm_oss,snd_emu10k1,snd_ac97_codec,snd_hda_intel, Live 0xffffffff88169000
snd_util_mem 7616 1 snd_emu10k1, Live 0xffffffff88166000
ohci1394 35060 0 - Live 0xffffffff8815c000
snd_timer 26824 2 snd_emu10k1,snd_pcm, Live 0xffffffff88154000
snd_page_alloc 13776 3 snd_emu10k1,snd_hda_intel,snd_pcm, Live 0xffffffff8814f000
thermal 20320 0 - Live 0xffffffff88149000
snd_hwdep 13064 2 snd_emu10k1,snd_hda_intel, Live 0xffffffff88144000
snd 65512 10 snd_pcm_oss,snd_mixer_oss,snd_emu10k1,snd_rawmidi,snd_ac97_codec,snd_seq_device,snd_hda_intel,snd_pcm,snd_timer,snd_hwdep, Live 0xffffffff88133000
soundcore 11296 1 snd, Live 0xffffffff8812f000
processor 41832 1 thermal, Live 0xffffffff88123000
button 11936 0 - Live 0xffffffff8811f000
intel_agp 30240 0 - Live 0xffffffff88116000
ieee1394 100696 2 sbp2,ohci1394, Live 0xffffffff880fc000
i2c_i801 11996 0 - Live 0xffffffff880f8000
i2c_core 29120 2 nvidia,i2c_i801, Live 0xffffffff880ef000
emu10k1_gp 6656 0 - Live 0xffffffff880ec000
tsdev 11520 0 - Live 0xffffffff880e8000
gameport 19408 2 emu10k1_gp, Live 0xffffffff880e2000
floppy 64872 0 - Live 0xffffffff880d1000
r8169 34628 0 - Live 0xffffffff880c7000
joydev 13824 0 - Live 0xffffffff880c0000
pcspkr 5824 0 - Live 0xffffffff880bd000
sg 39144 0 - Live 0xffffffff880b2000
sr_mod 20644 0 - Live 0xffffffff880ab000
cdrom 37864 1 sr_mod, Live 0xffffffff880a0000
reiserfs 230976 6 - Live 0xffffffff88066000
dm_mod 62384 15 dm_snapshot,dm_mirror, Live 0xffffffff88055000
sd_mod 31680 3 - Live 0xffffffff8804c000
generic 8452 0 [permanent], Live 0xffffffff88048000
ide_core 142480 1 generic, Live 0xffffffff88024000
evdev 13440 0 - Live 0xffffffff8801f000
usbhid 32352 0 - Live 0xffffffff88016000
usbkbd 9792 0 - Live 0xffffffff88012000
ehci_hcd 36748 0 - Live 0xffffffff88008000
uhci_hcd 27992 0 - Live 0xffffffff88000000
8.4)
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0077 : rtc
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vga+
03f2-03f5 : floppy
03f7-03f7 : floppy DIR
0400-047f : 0000:00:1f.0
0400-0403 : ACPI PM1a_EVT_BLK
0404-0405 : ACPI PM1a_CNT_BLK
0408-040b : ACPI PM_TMR
0428-042f : ACPI GPE0_BLK
0480-04bf : 0000:00:1f.0
0500-051f : 0000:00:1f.3
0500-051f : i801_smbus
0cf8-0cff : PCI conf1
7000-7fff : PCI Bus #03
7e00-7eff : 0000:03:00.0
7e00-7eff : r8169
8000-8fff : PCI Bus #02
9000-9fff : PCI Bus #01
9f00-9f7f : 0000:01:00.0
a000-afff : PCI Bus #06
ab00-ab0f : 0000:06:00.1
ab00-ab0f : libata
ac00-ac03 : 0000:06:00.1
ac00-ac03 : libata
ad00-ad07 : 0000:06:00.1
ad00-ad07 : libata
ae00-ae03 : 0000:06:00.1
ae00-ae03 : libata
af00-af07 : 0000:06:00.1
af00-af07 : libata
b000-bfff : PCI Bus #05
be00-beff : 0000:05:00.0
be00-beff : r8169
c000-cfff : PCI Bus #04
cf00-cf7f : 0000:04:00.0
d000-dfff : PCI Bus #07
de00-de07 : 0000:07:06.1
de00-de07 : emu10k1-gp
df00-df3f : 0000:07:06.0
df00-df3f : EMU10K1
ee00-ee0f : 0000:00:1f.5
ef00-ef0f : 0000:00:1f.5
ef00-ef0f : libata
f000-f003 : 0000:00:1f.5
f000-f003 : libata
f100-f107 : 0000:00:1f.5
f100-f107 : libata
f200-f203 : 0000:00:1f.5
f200-f203 : libata
f300-f307 : 0000:00:1f.5
f300-f307 : libata
f500-f50f : 0000:00:1f.2
f600-f60f : 0000:00:1f.2
f600-f60f : libata
f700-f703 : 0000:00:1f.2
f700-f703 : libata
f800-f807 : 0000:00:1f.2
f800-f807 : libata
f900-f903 : 0000:00:1f.2
f900-f903 : libata
fa00-fa07 : 0000:00:1f.2
fa00-fa07 : libata
fb00-fb1f : 0000:00:1d.2
fb00-fb1f : uhci_hcd
fc00-fc1f : 0000:00:1d.1
fc00-fc1f : uhci_hcd
fd00-fd1f : 0000:00:1d.0
fd00-fd1f : uhci_hcd
fe00-fe1f : 0000:00:1a.1
fe00-fe1f : uhci_hcd
ff00-ff1f : 0000:00:1a.0
ff00-ff1f : uhci_hcd
00000000-0009f3ff : System RAM
00000000-00000000 : Crash kernel
0009f400-0009ffff : reserved
000f0000-000fffff : reserved
00100000-7fedffff : System RAM
00200000-00421f34 : Kernel code
00421f35-0052923f : Kernel data
7fee0000-7fee2fff : ACPI Non-volatile Storage
7fee3000-7feeffff : ACPI Tables
7fef0000-7fefffff : reserved
7ff00000-7fffffff : pnp 00:0b
d0000000-dfffffff : PCI Bus #01
d0000000-dfffffff : 0000:01:00.0
e0000000-efffffff : PCI MMCONFIG 0
e0000000-efffffff : reserved
f8000000-fbffffff : PCI Bus #01
f8000000-f9ffffff : 0000:01:00.0
fa000000-faffffff : 0000:01:00.0
fa000000-faffffff : nvidia
fb000000-fb01ffff : 0000:01:00.0
fd300000-fd3fffff : PCI Bus #03
fd3ff000-fd3fffff : 0000:03:00.0
fd3ff000-fd3fffff : r8169
fd400000-fd4fffff : PCI Bus #02
fd500000-fd5fffff : PCI Bus #07
fd600000-fd6fffff : PCI Bus #07
fd6f4000-fd6f7fff : 0000:07:06.2
fd6f8000-fd6fbfff : 0000:07:02.0
fd6fe000-fd6fe7ff : 0000:07:06.2
fd6fe000-fd6fe7ff : ohci1394
fd6ff000-fd6ff7ff : 0000:07:02.0
fd6ff000-fd6ff7ff : ohci1394
fd700000-fd7fffff : PCI Bus #02
fd800000-fd8fffff : PCI Bus #06
fd800000-fd80ffff : 0000:06:00.0
fd900000-fd9fffff : PCI Bus #06
fd9fe000-fd9fffff : 0000:06:00.0
fd9fe000-fd9fffff : ahci
fda00000-fdafffff : PCI Bus #05
fda00000-fda0ffff : 0000:05:00.0
fdb00000-fdbfffff : PCI Bus #05
fdbff000-fdbfffff : 0000:05:00.0
fdbff000-fdbfffff : r8169
fdc00000-fdcfffff : PCI Bus #04
fdc00000-fdc7ffff : 0000:04:00.0
fdd00000-fddfffff : PCI Bus #04
fddf8000-fddfbfff : 0000:04:00.0
fddf8000-fddfbfff : sata_sil24
fddff000-fddff07f : 0000:04:00.0
fddff000-fddff07f : sata_sil24
fde00000-fdefffff : PCI Bus #03
fde00000-fde0ffff : 0000:03:00.0
fdff8000-fdffbfff : 0000:00:1b.0
fdff8000-fdffbfff : ICH HD audio
fdffd000-fdffd0ff : 0000:00:1f.3
fdffe000-fdffe3ff : 0000:00:1d.7
fdffe000-fdffe3ff : ehci_hcd
fdfff000-fdfff3ff : 0000:00:1a.7
fdfff000-fdfff3ff : ehci_hcd
fec00000-fec00fff : IOAPIC 0
fee00000-fee00fff : Local APIC
8.5)
00:00.0 Host bridge: Intel Corporation P965/G965 Memory Controller Hub (rev 02)
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0
Capabilities: [e0] Vendor Specific Information
00:01.0 PCI bridge: Intel Corporation P965/G965 PCI Express Root Port (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00009000-00009fff
Memory behind bridge: f8000000-fbffffff
Prefetchable memory behind bridge: 00000000d0000000-00000000dfffffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-
Capabilities: [88] Subsystem: Intel Corporation Unknown device 0000
Capabilities: [80] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [90] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4169
Capabilities: [a0] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x16, ASPM L0s, Port 2
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x16
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug- Surpise-
Slot: Number 32, PowerLimit 75.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Off, PwrInd On, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [100] Virtual Channel
Capabilities: [140] Unknown (5)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #4 (rev 02) (prog-if 00 [UHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 16
Region 4: I/O ports at ff00 [size=32]
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #5 (rev 02) (prog-if 00 [UHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 21
Region 4: I/O ports at fe00 [size=32]
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #2 (rev 02) (prog-if 20 [EHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin C routed to IRQ 18
Region 0: Memory at fdfff000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 22
Region 0: Memory at fdff8000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express Unknown type IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
Link: Latency L0s <64ns, L1 <1us
Link: ASPM Disabled CommClk- ExtSynch-
Link: Speed unknown, Width x0
Capabilities: [100] Virtual Channel
Capabilities: [130] Unknown (5)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 00008000-00008fff
Memory behind bridge: fd700000-fd7fffff
Prefetchable memory behind bridge: 00000000fd400000-00000000fd4fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [40] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 1
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes Disabled CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x0
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug+ Surpise+
Slot: Number 16, PowerLimit 10.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Unknown, PwrInd Unknown, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4171
Capabilities: [90] Subsystem: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1
Capabilities: [a0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100] Virtual Channel
Capabilities: [180] Unknown (5)
00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 00007000-00007fff
Memory behind bridge: fd300000-fd3fffff
Prefetchable memory behind bridge: 00000000fde00000-00000000fdefffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [40] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 3
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug+ Surpise+
Slot: Number 18, PowerLimit 10.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Unknown, PwrInd Unknown, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4179
Capabilities: [90] Subsystem: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3
Capabilities: [a0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100] Virtual Channel
Capabilities: [180] Unknown (5)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
I/O behind bridge: 0000c000-0000cfff
Memory behind bridge: fdd00000-fddfffff
Prefetchable memory behind bridge: 00000000fdc00000-00000000fdcfffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [40] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 4
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug+ Surpise+
Slot: Number 19, PowerLimit 10.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Unknown, PwrInd Unknown, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4181
Capabilities: [90] Subsystem: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4
Capabilities: [a0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100] Virtual Channel
Capabilities: [180] Unknown (5)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
I/O behind bridge: 0000b000-0000bfff
Memory behind bridge: fdb00000-fdbfffff
Prefetchable memory behind bridge: 00000000fda00000-00000000fdafffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [40] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 5
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug+ Surpise+
Slot: Number 20, PowerLimit 10.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Unknown, PwrInd Unknown, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4189
Capabilities: [90] Subsystem: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5
Capabilities: [a0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100] Virtual Channel
Capabilities: [180] Unknown (5)
00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 02) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=06, subordinate=06, sec-latency=0
I/O behind bridge: 0000a000-0000afff
Memory behind bridge: fd900000-fd9fffff
Prefetchable memory behind bridge: 00000000fd800000-00000000fd8fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [40] Express Root Port (Slot+) IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: Errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 6
Link: Latency L0s <256ns, L1 <4us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug+ Surpise+
Slot: Number 21, PowerLimit 10.000000
Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
Slot: AttnInd Unknown, PwrInd Unknown, Power-
Root: Correctable- Non-Fatal- Fatal- PME-
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+
Address: fee0300c Data: 4191
Capabilities: [90] Subsystem: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6
Capabilities: [a0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100] Virtual Channel
Capabilities: [180] Unknown (5)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #1 (rev 02) (prog-if 00 [UHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 23
Region 4: I/O ports at fd00 [size=32]
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #2 (rev 02) (prog-if 00 [UHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 19
Region 4: I/O ports at fc00 [size=32]
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #3 (rev 02) (prog-if 00 [UHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin C routed to IRQ 18
Region 4: I/O ports at fb00 [size=32]
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #1 (rev 02) (prog-if 20 [EHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 23
Region 0: Memory at fdffe000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2) (prog-if 01 [Subtractive decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Bus: primary=00, secondary=07, subordinate=07, sec-latency=32
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: fd600000-fd6fffff
Prefetchable memory behind bridge: 00000000fd500000-00000000fd5fffff
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [50] Subsystem: Intel Corporation 82801 PCI Bridge
00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)
Subsystem: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Capabilities: [e0] Vendor Specific Information
00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port SATA IDE Controller (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 19
Region 0: I/O ports at fa00 [size=8]
Region 1: I/O ports at f900 [size=4]
Region 2: I/O ports at f800 [size=8]
Region 3: I/O ports at f700 [size=4]
Region 4: I/O ports at f600 [size=16]
Region 5: I/O ports at f500 [size=16]
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
Subsystem: Intel Corporation 82801H (ICH8 Family) SMBus Controller
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin B routed to IRQ 19
Region 0: Memory at fdffd000 (32-bit, non-prefetchable) [size=256]
Region 4: I/O ports at 0500 [size=32]
00:1f.5 IDE interface: Intel Corporation 82801H (ICH8 Family) 2 port SATA IDE Controller (rev 02) (prog-if 85 [Master SecO PriO])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 19
Region 0: I/O ports at f300 [size=8]
Region 1: I/O ports at f200 [size=4]
Region 2: I/O ports at f100 [size=8]
Region 3: I/O ports at f000 [size=4]
Region 4: I/O ports at ef00 [size=16]
Region 5: I/O ports at ee00 [size=16]
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0402 (rev a1) (prog-if 00 [VGA])
Subsystem: eVga.com. Corp. Unknown device c751
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at f8000000 (64-bit, non-prefetchable) [size=32M]
Region 5: I/O ports at 9f00 [size=128]
[virtual] Expansion ROM at fb000000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [78] Express Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+
Device: Latency L0s <512ns, L1 <4us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x16, ASPM L0s L1, Port 0
Link: Latency L0s <512ns, L1 <4us
Link: ASPM Disabled RCB 128 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x16
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting
Capabilities: [600] Unknown (11)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: I/O ports at 7e00 [size=256]
Region 2: Memory at fd3ff000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at fde00000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [48] Vital Product Data
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [60] Express Endpoint IRQ 0
Device: Supported: MaxPayload 1024 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn+ AtnInd+ PwrInd+
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 4096 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0
Link: Latency L0s unlimited, L1 unlimited
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [84] Vendor Specific Information
Capabilities: [100] Advanced Error Reporting
Capabilities: [12c] Virtual Channel
Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-37
Capabilities: [154] Power Budgeting
04:00.0 Mass storage controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)
Subsystem: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at fddff000 (64-bit, non-prefetchable) [size=128]
Region 2: Memory at fddf8000 (64-bit, non-prefetchable) [size=16K]
Region 4: I/O ports at cf00 [size=128]
[virtual] Expansion ROM at fdc00000 [disabled] [size=512K]
Capabilities: [54] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [5c] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express Legacy Endpoint IRQ 0
Device: Supported: MaxPayload 1024 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s, Port 0
Link: Latency L0s unlimited, L1 unlimited
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [100] Advanced Error Reporting
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 16
Region 0: I/O ports at be00 [size=256]
Region 2: Memory at fdbff000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at fda00000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [48] Vital Product Data
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [60] Express Endpoint IRQ 0
Device: Supported: MaxPayload 1024 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s unlimited, L1 unlimited
Device: AtnBtn+ AtnInd+ PwrInd+
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0
Link: Latency L0s unlimited, L1 unlimited
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
Capabilities: [84] Vendor Specific Information
Capabilities: [100] Advanced Error Reporting
Capabilities: [12c] Virtual Channel
Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-38
Capabilities: [154] Power Budgeting
06:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02) (prog-if 01 [AHCI 1.0])
Subsystem: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 5: Memory at fd9fe000 (32-bit, non-prefetchable) [size=8K]
[virtual] Expansion ROM at fd800000 [disabled] [size=64K]
Capabilities: [68] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] Express Legacy Endpoint IRQ 1
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s, Port 1
Link: Latency L0s <1us, L1 <16us
Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x1
06:00.1 IDE interface: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02) (prog-if 85 [Master SecO PriO])
Subsystem: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 18
Region 0: I/O ports at af00 [size=8]
Region 1: I/O ports at ae00 [size=4]
Region 2: I/O ports at ad00 [size=8]
Region 3: I/O ports at ac00 [size=4]
Region 4: I/O ports at ab00 [size=16]
Capabilities: [68] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
07:02.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Subsystem: ABIT Computer Corp. Unknown device 1073
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 68 (500ns min, 1000ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at fd6ff000 (32-bit, non-prefetchable) [size=2K]
Region 1: Memory at fd6f8000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME+
07:06.0 Multimedia audio controller: Creative Labs SB Audigy (rev 04)
Subsystem: Creative Labs Unknown device 1002
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 23
Region 0: I/O ports at df00 [size=64]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
07:06.1 Input device controller: Creative Labs SB Audigy Game Port (rev 04)
Subsystem: Creative Labs Unknown device 0060
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Region 0: I/O ports at de00 [size=8]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
07:06.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port (rev 04) (prog-if 10 [OHCI])
Subsystem: Creative Labs SB Audigy FireWire Port
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (500ns min, 1000ns max), Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 20
Region 0: Memory at fd6fe000 (32-bit, non-prefetchable) [size=2K]
Region 1: Memory at fd6f4000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME+
8.6)
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: WDC WD1500ADFD-0 Rev: 20.0
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: Maxtor 6B300S0 Rev: BANC
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi8 Channel: 00 Id: 01 Lun: 00
Vendor: TSSTcorp Model: CD/DVDW SH-S182D Rev: SB04
Type: CD-ROM ANSI SCSI revision: 05
8.7)
An excerpt from dmesg.
ahci 0000:06:00.0: version 2.3
ACPI: PCI Interrupt 0000:06:00.0[A] -> GSI 17 (level, low) -> IRQ 17
ahci 0000:06:00.0: AHCI 0001.0000 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
ahci 0000:06:00.0: flags: 64bit ncq pm led clo pmp pio slum part
PCI: Setting latency timer of device 0000:06:00.0 to 64
scsi0 : ahci
scsi1 : ahci
ata1: SATA max UDMA/133 cmd 0xffffc20000328100 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 17
ata2: SATA max UDMA/133 cmd 0xffffc20000328180 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 17
ata1: SATA link down (SStatus 0 SControl 300)
ata2: SATA link down (SStatus 0 SControl 300)
ata_piix 0000:00:1f.2: version 2.12
ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:1f.2 to 64
scsi2 : ata_piix
scsi3 : ata_piix
ata3: SATA max UDMA/133 cmd 0x000000000001fa00 ctl 0x000000000001f902 bmdma 0x000000000001f600 irq 19
ata4: SATA max UDMA/133 cmd 0x000000000001f800 ctl 0x000000000001f702 bmdma 0x000000000001f608 irq 19
ata3.00: ATA-7: WDC WD1500ADFD-00NLR1, 20.07P20, max UDMA/133
ata3.00: 293046768 sectors, multi 16: LBA48 NCQ (depth 0/32)
ata3.00: configured for UDMA/133
ata4.00: ATA-7: Maxtor 6B300S0, BANC1B70, max UDMA/133
ata4.00: 586114704 sectors, multi 16: LBA48 NCQ (depth 0/32)
ata4.00: configured for UDMA/133
scsi 2:0:0:0: Direct-Access ATA WDC WD1500ADFD-0 20.0 PQ: 0 ANSI: 5
scsi 3:0:0:0: Direct-Access ATA Maxtor 6B300S0 BANC PQ: 0 ANSI: 5
ata_piix 0000:00:1f.5: MAP [ P0 P2 P1 P3 ]
ACPI: PCI Interrupt 0000:00:1f.5[B] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:1f.5 to 64
scsi4 : ata_piix
scsi5 : ata_piix
ata5: SATA max UDMA/133 cmd 0x000000000001f300 ctl 0x000000000001f202 bmdma 0x000000000001ef00 irq 19
ata6: SATA max UDMA/133 cmd 0x000000000001f100 ctl 0x000000000001f002 bmdma 0x000000000001ef08 irq 19
sata_sil24 0000:04:00.0: version 1.0
ACPI: PCI Interrupt 0000:04:00.0[A] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:04:00.0 to 64
scsi6 : sata_sil24
scsi7 : sata_sil24
ata7: SATA max UDMA/100 cmd 0xffffc20000330000 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 19
ata8: SATA max UDMA/100 cmd 0xffffc20000332000 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 19
ata7: SATA link down (SStatus 0 SControl 300)
ata8: SATA link down (SStatus 0 SControl 300)
PCI: Enabling device 0000:06:00.1 (0000 -> 0001)
ACPI: PCI Interrupt 0000:06:00.1[B] -> GSI 18 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:06:00.1 to 64
scsi8 : pata_jmicron
scsi9 : pata_jmicron
ata9: PATA max UDMA/100 cmd 0x000000000001af00 ctl 0x000000000001ae02 bmdma 0x000000000001ab00 irq 18
ata10: PATA max UDMA/100 cmd 0x000000000001ad00 ctl 0x000000000001ac02 bmdma 0x000000000001ab08 irq 18
ata9.01: ATAPI: TSSTcorpCD/DVDW SH-S182D, SB04, max UDMA/33
ata9.01: configured for UDMA/33
scsi 8:0:1:0: CD-ROM TSSTcorp CD/DVDW SH-S182D SB04 PQ: 0 ANSI: 5
.......................
.......................
ata9.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata9.01: cmd a0/00:00:00:00:20/00:00:00:00:00/b0 tag 0 cdb 0x0 data 0
res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM violation)
ata9: soft resetting port
ata9.01: revalidation failed (errno=-2)
ata9: failed to recover some devices, retrying in 5 secs
ata9: soft resetting port
ata9.01: revalidation failed (errno=-2)
ata9: failed to recover some devices, retrying in 5 secs
ata9: soft resetting port
ata9.01: qc timeout (cmd 0xa1)
ata9.01: failed to IDENTIFY (I/O error, err_mask=0x4)
ata9.01: revalidation failed (errno=-5)
ata9.01: disabled
ata9: EH pending after completion, repeating EH (cnt=4)
ata9: soft resetting port
ata9: EH complete
After running cat /dev/cdrom (which points to the dvd drive)
Buffer I/O error on device sr0, logical block 0
Buffer I/O error on device sr0, logical block 1
Buffer I/O error on device sr0, logical block 2
Buffer I/O error on device sr0, logical block 3
Buffer I/O error on device sr0, logical block 0
[-- Attachment #3: config.gz --]
[-- Type: application/x-gzip, Size: 18683 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: unable to use cdrom/dvd drive after some usage
2008-01-15 4:46 unable to use cdrom/dvd drive after some usage Johnny Luong
@ 2008-01-15 11:34 ` Alan Cox
2008-01-21 8:01 ` Tejun Heo
0 siblings, 1 reply; 5+ messages in thread
From: Alan Cox @ 2008-01-15 11:34 UTC (permalink / raw)
To: Johnny Luong; +Cc: linux-ide
On Mon, 14 Jan 2008 20:46:08 -0800
Johnny Luong <johnny.linux-ide@compfazed.com> wrote:
> Hi,
>
> If possible, I would like to know if its worthwhile simply just to get another
> SATA drive / different controller / cable rather than trying to figure out
> this PATA drive on SATA/PATA controller... see attached for bug report and
> config file. I'm not on this email list so if you can CC that would be
> appreciated.
I don't think so. Wine seems to have fed the drive a command that upset
it to the point it needed power cycling. That may also however be a
drive/controller that don't know how to clear data stuck after a wrong
transfer length from an application. In that case 2.6.24-rc6 (or 2.6.24
once out) may actually fix the problem.
If it doesn't then we need to look at it further and find out what is
going on to crash the drive.
Alan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: unable to use cdrom/dvd drive after some usage
2008-01-15 11:34 ` Alan Cox
@ 2008-01-21 8:01 ` Tejun Heo
2008-01-21 8:38 ` Johnny Luong
0 siblings, 1 reply; 5+ messages in thread
From: Tejun Heo @ 2008-01-21 8:01 UTC (permalink / raw)
To: Alan Cox; +Cc: Johnny Luong, linux-ide
Alan Cox wrote:
> On Mon, 14 Jan 2008 20:46:08 -0800
> Johnny Luong <johnny.linux-ide@compfazed.com> wrote:
>
>> Hi,
>>
>> If possible, I would like to know if its worthwhile simply just to get another
>> SATA drive / different controller / cable rather than trying to figure out
>> this PATA drive on SATA/PATA controller... see attached for bug report and
>> config file. I'm not on this email list so if you can CC that would be
>> appreciated.
>
> I don't think so. Wine seems to have fed the drive a command that upset
> it to the point it needed power cycling. That may also however be a
> drive/controller that don't know how to clear data stuck after a wrong
> transfer length from an application. In that case 2.6.24-rc6 (or 2.6.24
> once out) may actually fix the problem.
>
> If it doesn't then we need to look at it further and find out what is
> going on to crash the drive.
Another possibility is that the drive requires DEVICE RESET to clear its
FIFO or whatever. I'm working on DEVICE RESET. Will post patch soon.
Johnny, please hold on to the hardware for testing.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: unable to use cdrom/dvd drive after some usage
2008-01-21 8:01 ` Tejun Heo
@ 2008-01-21 8:38 ` Johnny Luong
2008-01-21 15:28 ` Tejun Heo
0 siblings, 1 reply; 5+ messages in thread
From: Johnny Luong @ 2008-01-21 8:38 UTC (permalink / raw)
To: linux-ide
On Mon, Jan 21, 2008 at 05:01:42PM +0900, Tejun Heo wrote:
> Alan Cox wrote:
> > On Mon, 14 Jan 2008 20:46:08 -0800
> > Johnny Luong <johnny.linux-ide@compfazed.com> wrote:
> >
> >> Hi,
> >>
> >> If possible, I would like to know if its worthwhile simply just to get another
> >> SATA drive / different controller / cable rather than trying to figure out
> >> this PATA drive on SATA/PATA controller... see attached for bug report and
> >> config file. I'm not on this email list so if you can CC that would be
> >> appreciated.
> >
> > I don't think so. Wine seems to have fed the drive a command that upset
> > it to the point it needed power cycling. That may also however be a
> > drive/controller that don't know how to clear data stuck after a wrong
> > transfer length from an application. In that case 2.6.24-rc6 (or 2.6.24
> > once out) may actually fix the problem.
> >
> > If it doesn't then we need to look at it further and find out what is
> > going on to crash the drive.
>
> Another possibility is that the drive requires DEVICE RESET to clear its
> FIFO or whatever. I'm working on DEVICE RESET. Will post patch soon.
> Johnny, please hold on to the hardware for testing.
>
> Thanks.
>
> --
> tejun
Since it may be a software issue, I've simply kept the drive in place.
I did upgrade to 2.6.24-rc8 a couple of days ago though and haven't
seen that strange HSM error.
Thanks for the help,
-Johnny
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: unable to use cdrom/dvd drive after some usage
2008-01-21 8:38 ` Johnny Luong
@ 2008-01-21 15:28 ` Tejun Heo
0 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2008-01-21 15:28 UTC (permalink / raw)
To: Johnny Luong; +Cc: linux-ide
[-- Attachment #1: Type: text/plain, Size: 684 bytes --]
Johnny Luong wrote:
>>> If it doesn't then we need to look at it further and find out what is
>>> going on to crash the drive.
>> Another possibility is that the drive requires DEVICE RESET to clear its
>> FIFO or whatever. I'm working on DEVICE RESET. Will post patch soon.
>> Johnny, please hold on to the hardware for testing.
>
> Since it may be a software issue, I've simply kept the drive in place.
> I did upgrade to 2.6.24-rc8 a couple of days ago though and haven't
> seen that strange HSM error.
Please apply the attached patch on top of 2.6.24-rc8 and see whether the
problem goes away, that is, libata EH recovers the device after such
failure.
Thanks.
--
tejun
[-- Attachment #2: update-reset.patch --]
[-- Type: text/x-patch, Size: 65758 bytes --]
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 54f38c2..c1d285f 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1593,7 +1593,7 @@ static void ahci_error_intr(struct ata_port *ap, u32 irq_stat)
u32 *unk = (u32 *)(pp->rx_fis + RX_FIS_UNK);
active_ehi->err_mask |= AC_ERR_HSM;
- active_ehi->action |= ATA_EH_SOFTRESET;
+ active_ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(active_ehi,
"unknown FIS %08x %08x %08x %08x" ,
unk[0], unk[1], unk[2], unk[3]);
@@ -1601,19 +1601,19 @@ static void ahci_error_intr(struct ata_port *ap, u32 irq_stat)
if (ap->nr_pmp_links && (irq_stat & PORT_IRQ_BAD_PMP)) {
active_ehi->err_mask |= AC_ERR_HSM;
- active_ehi->action |= ATA_EH_SOFTRESET;
+ active_ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(active_ehi, "incorrect PMP");
}
if (irq_stat & (PORT_IRQ_HBUS_ERR | PORT_IRQ_HBUS_DATA_ERR)) {
host_ehi->err_mask |= AC_ERR_HOST_BUS;
- host_ehi->action |= ATA_EH_SOFTRESET;
+ host_ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(host_ehi, "host bus error");
}
if (irq_stat & PORT_IRQ_IF_ERR) {
host_ehi->err_mask |= AC_ERR_ATA_BUS;
- host_ehi->action |= ATA_EH_SOFTRESET;
+ host_ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(host_ehi, "interface fatal error");
}
@@ -1701,7 +1701,7 @@ static void ahci_port_intr(struct ata_port *ap)
/* while resetting, invalid completions are expected */
if (unlikely(rc < 0 && !resetting)) {
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ata_port_freeze(ap);
}
}
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
index 9032998..9b7c5b0 100644
--- a/drivers/ata/ata_generic.c
+++ b/drivers/ata/ata_generic.c
@@ -110,6 +110,7 @@ static struct ata_port_operations generic_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index b406b39..26dac82 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -317,6 +317,7 @@ static const struct ata_port_operations piix_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = piix_pata_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -349,6 +350,7 @@ static const struct ata_port_operations ich_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = piix_pata_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ich_pata_cable_detect,
@@ -377,6 +379,7 @@ static const struct ata_port_operations piix_sata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -408,6 +411,7 @@ static const struct ata_port_operations piix_vmw_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = piix_pata_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 6380726..bdb8a16 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1911,9 +1911,21 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
case ATA_DEV_ATA:
tf.command = ATA_CMD_ID_ATA;
break;
+
case ATA_DEV_ATAPI:
tf.command = ATA_CMD_ID_ATAPI;
+
+ if ((flags & ATA_READID_POST_SOFTRESET) ||
+ !ap->ops->atapi_dev_reset)
+ break;
+
+ rc = ap->ops->atapi_dev_reset(dev);
+ if (rc) {
+ reason = "ATAPI DEVICE RESET failed";
+ goto err_out;
+ }
break;
+
default:
rc = -ENODEV;
reason = "unsupported class";
@@ -2001,7 +2013,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
goto retry;
}
- if ((flags & ATA_READID_POSTRESET) && class == ATA_DEV_ATA) {
+ if ((flags & ATA_READID_POST_RESET) && class == ATA_DEV_ATA) {
/*
* The exact sequence expected by certain pre-ATA4 drives is:
* SRST RESET
@@ -2024,7 +2036,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
/* current CHS translation info (id[53-58]) might be
* changed. reread the identify device info.
*/
- flags &= ~ATA_READID_POSTRESET;
+ flags &= ~ATA_READID_POST_RESET;
goto retry;
}
}
@@ -2471,8 +2483,8 @@ int ata_bus_probe(struct ata_port *ap)
if (!ata_dev_enabled(dev))
continue;
- rc = ata_dev_read_id(dev, &dev->class, ATA_READID_POSTRESET,
- dev->id);
+ rc = ata_dev_read_id(dev, &dev->class,
+ ATA_READID_POST_SOFTRESET, dev->id);
if (rc)
goto fail;
}
@@ -6013,9 +6025,9 @@ void ata_qc_issue(struct ata_queued_cmd *qc)
qc->flags &= ~ATA_QCFLAG_DMAMAP;
}
- /* if device is sleeping, schedule softreset and abort the link */
+ /* if device is sleeping, schedule reset and abort the link */
if (unlikely(qc->dev->flags & ATA_DFLAG_SLEEPING)) {
- link->eh_info.action |= ATA_EH_SOFTRESET;
+ link->eh_info.action |= ATA_EH_RESET;
ata_ehi_push_desc(&link->eh_info, "waking up from sleep");
ata_link_abort(link);
return;
@@ -6593,7 +6605,7 @@ int ata_host_suspend(struct ata_host *host, pm_message_t mesg)
*/
void ata_host_resume(struct ata_host *host)
{
- ata_host_request_pm(host, PMSG_ON, ATA_EH_SOFTRESET,
+ ata_host_request_pm(host, PMSG_ON, ATA_EH_RESET,
ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET, 0);
host->dev->power.power_state = PMSG_ON;
@@ -7135,7 +7147,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
ehi->probe_mask =
(1 << ata_link_max_devices(&ap->link)) - 1;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET;
ap->pflags &= ~ATA_PFLAG_INITIALIZING;
@@ -7619,6 +7631,7 @@ EXPORT_SYMBOL_GPL(ata_bmdma_start);
EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
EXPORT_SYMBOL_GPL(ata_bmdma_status);
EXPORT_SYMBOL_GPL(ata_bmdma_stop);
+EXPORT_SYMBOL_GPL(atapi_sff_dev_reset);
EXPORT_SYMBOL_GPL(ata_bmdma_freeze);
EXPORT_SYMBOL_GPL(ata_bmdma_thaw);
EXPORT_SYMBOL_GPL(ata_bmdma_drive_eh);
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 21a81cd..d76a47e 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1045,12 +1045,12 @@ void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,
* flags. Suck in all related bits before clearing eh_info to
* avoid losing requested action.
*/
- if (action & ATA_EH_RESET_MASK) {
- ehc->i.action |= ehi->action & ATA_EH_RESET_MASK;
+ if (action & ATA_EH_RESET) {
+ ehc->i.action |= ehi->action & ATA_EH_RESET;
ehc->i.flags |= ehi->flags & ATA_EHI_RESET_MODIFIER_MASK;
/* make sure all reset actions are cleared & clear EHI flags */
- action |= ATA_EH_RESET_MASK;
+ action |= ATA_EH_RESET;
ehi->flags &= ~ATA_EHI_RESET_MODIFIER_MASK;
}
@@ -1080,8 +1080,8 @@ void ata_eh_done(struct ata_link *link, struct ata_device *dev,
struct ata_eh_context *ehc = &link->eh_context;
/* if reset is complete, clear all reset actions & reset modifier */
- if (action & ATA_EH_RESET_MASK) {
- action |= ATA_EH_RESET_MASK;
+ if (action & ATA_EH_RESET) {
+ action |= ATA_EH_RESET;
ehc->i.flags &= ~ATA_EHI_RESET_MODIFIER_MASK;
}
@@ -1291,20 +1291,20 @@ static void ata_eh_analyze_serror(struct ata_link *link)
if (serror & SERR_PERSISTENT) {
err_mask |= AC_ERR_ATA_BUS;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
}
if (serror &
(SERR_DATA_RECOVERED | SERR_COMM_RECOVERED | SERR_DATA)) {
err_mask |= AC_ERR_ATA_BUS;
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
}
if (serror & SERR_PROTOCOL) {
err_mask |= AC_ERR_HSM;
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
}
if (serror & SERR_INTERNAL) {
err_mask |= AC_ERR_SYSTEM;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
}
/* Determine whether a hotplug event has occurred. Both
@@ -1410,7 +1410,7 @@ static unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc,
if ((stat & (ATA_BUSY | ATA_DRQ | ATA_DRDY)) != ATA_DRDY) {
qc->err_mask |= AC_ERR_HSM;
- return ATA_EH_SOFTRESET;
+ return ATA_EH_RESET;
}
if (stat & (ATA_ERR | ATA_DF))
@@ -1446,7 +1446,7 @@ static unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc,
}
if (qc->err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT | AC_ERR_ATA_BUS))
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
return action;
}
@@ -1591,7 +1591,7 @@ static unsigned int ata_eh_speed_down(struct ata_device *dev, int is_io,
if (verdict & ATA_EH_SPDN_SPEED_DOWN) {
/* speed down SATA link speed if possible */
if (sata_down_spd_limit(dev->link) == 0) {
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
goto done;
}
@@ -1611,7 +1611,7 @@ static unsigned int ata_eh_speed_down(struct ata_device *dev, int is_io,
dev->spdn_cnt++;
if (ata_down_xfermask_limit(dev, sel) == 0) {
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
goto done;
}
}
@@ -1625,7 +1625,7 @@ static unsigned int ata_eh_speed_down(struct ata_device *dev, int is_io,
(dev->xfer_shift != ATA_SHIFT_PIO)) {
if (ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO) == 0) {
dev->spdn_cnt = 0;
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
goto done;
}
}
@@ -1669,9 +1669,9 @@ static void ata_eh_link_autopsy(struct ata_link *link)
ehc->i.serror |= serror;
ata_eh_analyze_serror(link);
} else if (rc != -EOPNOTSUPP) {
- /* SError read failed, force hardreset and probing */
+ /* SError read failed, force reset and probing */
ata_ehi_schedule_probe(&ehc->i);
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
ehc->i.err_mask |= AC_ERR_OTHER;
}
@@ -1719,7 +1719,7 @@ static void ata_eh_link_autopsy(struct ata_link *link)
/* enforce default EH actions */
if (ap->pflags & ATA_PFLAG_FROZEN ||
all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT))
- ehc->i.action |= ATA_EH_SOFTRESET;
+ ehc->i.action |= ATA_EH_RESET;
else if ((is_io && all_err_mask) ||
(!is_io && (all_err_mask & ~AC_ERR_DEV)))
ehc->i.action |= ATA_EH_REVALIDATE;
@@ -2031,7 +2031,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
ap->pflags |= ATA_PFLAG_RESETTING;
spin_unlock_irqrestore(ap->lock, flags);
- ata_eh_about_to_do(link, NULL, ehc->i.action & ATA_EH_RESET_MASK);
+ ata_eh_about_to_do(link, NULL, ehc->i.action & ATA_EH_RESET);
ata_link_for_each_dev(dev, link) {
/* If we issue an SRST then an ATA drive (not ATAPI)
@@ -2055,14 +2055,12 @@ int ata_eh_reset(struct ata_link *link, int classify,
/* Determine which reset to use and record in ehc->i.action.
* prereset() may examine and modify it.
*/
- if (softreset && (!hardreset || (!(lflags & ATA_LFLAG_NO_SRST) &&
- !sata_set_spd_needed(link) &&
- !(ehc->i.action & ATA_EH_HARDRESET))))
- tmp_action = ATA_EH_SOFTRESET;
- else
+ if (hardreset)
tmp_action = ATA_EH_HARDRESET;
+ else
+ tmp_action = ATA_EH_SOFTRESET;
- ehc->i.action = (ehc->i.action & ~ATA_EH_RESET_MASK) | tmp_action;
+ ehc->i.action = (ehc->i.action & ~ATA_EH_RESET) | tmp_action;
if (prereset) {
rc = prereset(link, jiffies + ATA_EH_PRERESET_TIMEOUT);
@@ -2070,7 +2068,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
if (rc == -ENOENT) {
ata_link_printk(link, KERN_DEBUG,
"port disabled. ignoring.\n");
- ehc->i.action &= ~ATA_EH_RESET_MASK;
+ ehc->i.action &= ~ATA_EH_RESET;
ata_link_for_each_dev(dev, link)
classes[dev->devno] = ATA_DEV_NONE;
@@ -2133,7 +2131,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
goto fail;
}
- ata_eh_about_to_do(link, NULL, ATA_EH_RESET_MASK);
+ ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
rc = ata_do_reset(link, reset, classes, deadline);
}
@@ -2182,7 +2180,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
postreset(link, classes);
/* reset successful, schedule revalidation */
- ata_eh_done(link, NULL, ehc->i.action & ATA_EH_RESET_MASK);
+ ata_eh_done(link, NULL, ehc->i.action & ATA_EH_RESET);
ehc->i.action |= ATA_EH_REVALIDATE;
rc = 0;
@@ -2239,8 +2237,10 @@ static int ata_eh_revalidate_and_attach(struct ata_link *link,
unsigned int action = ata_eh_dev_action(dev);
unsigned int readid_flags = 0;
- if (ehc->i.flags & ATA_EHI_DID_RESET)
- readid_flags |= ATA_READID_POSTRESET;
+ if (ehc->i.flags & ATA_EHI_DID_HARDRESET)
+ readid_flags |= ATA_READID_POST_HARDRESET;
+ else if (ehc->i.flags & ATA_EHI_DID_SOFTRESET)
+ readid_flags |= ATA_READID_POST_SOFTRESET;
if ((action & ATA_EH_REVALIDATE) && ata_dev_enabled(dev)) {
WARN_ON(dev->class == ATA_DEV_PMP);
@@ -2414,17 +2414,12 @@ static int ata_eh_handle_dev_fail(struct ata_device *dev, int err)
ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
ehc->did_probe_mask |= (1 << dev->devno);
- ehc->i.action |= ATA_EH_SOFTRESET;
+ ehc->i.action |= ATA_EH_RESET;
}
return 1;
} else {
- /* soft didn't work? be haaaaard */
- if (ehc->i.flags & ATA_EHI_DID_RESET)
- ehc->i.action |= ATA_EH_HARDRESET;
- else
- ehc->i.action |= ATA_EH_SOFTRESET;
-
+ ehc->i.action |= ATA_EH_RESET;
return 0;
}
}
@@ -2498,7 +2493,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
ata_eh_detach_dev(dev);
ata_dev_init(dev);
ehc->did_probe_mask |= (1 << dev->devno);
- ehc->i.action |= ATA_EH_SOFTRESET;
+ ehc->i.action |= ATA_EH_RESET;
}
}
}
@@ -2522,7 +2517,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
ehc->i.action = 0;
/* do we need to reset? */
- if (ehc->i.action & ATA_EH_RESET_MASK)
+ if (ehc->i.action & ATA_EH_RESET)
reset = 1;
ata_link_for_each_dev(dev, link)
@@ -2540,7 +2535,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
ata_port_for_each_link(link, ap) {
struct ata_eh_context *ehc = &link->eh_context;
- if (!(ehc->i.action & ATA_EH_RESET_MASK))
+ if (!(ehc->i.action & ATA_EH_RESET))
continue;
rc = ata_eh_reset(link, ata_link_nr_vacant(link),
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c
index caef2bb..c53a4e9 100644
--- a/drivers/ata/libata-pmp.c
+++ b/drivers/ata/libata-pmp.c
@@ -196,15 +196,15 @@ int sata_pmp_std_prereset(struct ata_link *link, unsigned long deadline)
/* force HRST? */
if (link->flags & ATA_LFLAG_NO_SRST)
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
/* handle link resume */
if ((ehc->i.flags & ATA_EHI_RESUME_LINK) &&
(link->flags & ATA_LFLAG_HRST_TO_RESUME))
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
/* if we're about to do hardreset, nothing more to do */
- if (ehc->i.action & ATA_EH_HARDRESET)
+ if (ehc->i.action & ATA_EH_RESET)
return 0;
/* resume link */
@@ -445,7 +445,7 @@ static int sata_pmp_init_links(struct ata_port *ap, int nr_ports)
link->flags = 0;
ehc->i.probe_mask |= 1;
- ehc->i.action |= ATA_EH_SOFTRESET;
+ ehc->i.action |= ATA_EH_RESET;
ehc->i.flags |= ATA_EHI_RESUME_LINK;
}
@@ -840,13 +840,13 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap,
retry:
ehc->classes[0] = ATA_DEV_UNKNOWN;
- if (ehc->i.action & ATA_EH_RESET_MASK) {
+ if (ehc->i.action & ATA_EH_RESET) {
struct ata_link *tlink;
ata_eh_freeze_port(ap);
/* reset */
- ehc->i.action = ATA_EH_HARDRESET;
+ ehc->i.action = ATA_EH_RESET;
rc = ata_eh_reset(link, 0, prereset, softreset, hardreset,
postreset);
if (rc) {
@@ -894,7 +894,7 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap,
sleep ? " in 5 secs" : "");
if (sleep)
ssleep(5);
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
goto retry;
} else {
ata_dev_printk(dev, KERN_ERR, "failed to recover PMP "
@@ -1124,7 +1124,7 @@ static int sata_pmp_eh_recover(struct ata_port *ap,
link_fail:
if (sata_pmp_handle_link_fail(link, link_tries)) {
- pmp_ehc->i.action |= ATA_EH_HARDRESET;
+ pmp_ehc->i.action |= ATA_EH_RESET;
goto retry;
}
@@ -1142,7 +1142,7 @@ static int sata_pmp_eh_recover(struct ata_port *ap,
if (--pmp_tries) {
ata_port_printk(ap, KERN_WARNING,
"failed to recover PMP, retrying in 5 secs\n");
- pmp_ehc->i.action |= ATA_EH_HARDRESET;
+ pmp_ehc->i.action |= ATA_EH_RESET;
ssleep(5);
goto retry;
}
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 14daf48..ca499d9 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -3422,7 +3422,7 @@ static int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
ata_port_for_each_link(link, ap) {
struct ata_eh_info *ehi = &link->eh_info;
ehi->probe_mask |= (1 << ata_link_max_devices(link)) - 1;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
}
} else {
struct ata_device *dev = ata_find_dev(ap, devno);
@@ -3430,7 +3430,7 @@ static int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
if (dev) {
struct ata_eh_info *ehi = &dev->link->eh_info;
ehi->probe_mask |= 1 << dev->devno;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ehi->flags |= ATA_EHI_RESUME_LINK;
} else
rc = -EINVAL;
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index b7ac80b..a4dece2 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -335,6 +335,33 @@ void ata_bmdma_stop(struct ata_queued_cmd *qc)
}
/**
+ * atapi_sff_dev_reset - Perform ATAPI DEVICE RESET
+ * @dev: target ATAPI device
+ *
+ * Perform ATAPI DEVICE RESET (0x08).
+ *
+ * LOCKING:
+ * EH thread context
+ *
+ * RETURNS:
+ * 0 on success, AC_ERR_* mask otherwise.
+ */
+int atapi_sff_dev_reset(struct ata_device *dev)
+{
+ struct ata_port *ap = dev->link->ap;
+ struct ata_taskfile tf;
+
+ ata_tf_init(dev, &tf);
+ tf.command = ATA_CMD_DEV_RESET;
+ tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE | ATA_TFLAG_POLLING;
+
+ ata_dev_select(ap, dev->devno, 1, 1); /* select device 0/1 */
+ ap->ops->exec_command(ap, &tf);
+
+ return ata_wait_ready(ap, jiffies + 5 * HZ);
+}
+
+/**
* ata_bmdma_freeze - Freeze BMDMA controller port
* @ap: port to freeze
*
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
index bbe59c2..48fb91a 100644
--- a/drivers/ata/libata.h
+++ b/drivers/ata/libata.h
@@ -41,7 +41,10 @@ struct ata_scsi_args {
/* libata-core.c */
enum {
/* flags for ata_dev_read_id() */
- ATA_READID_POSTRESET = (1 << 0), /* reading ID after reset */
+ ATA_READID_POST_SOFTRESET = (1 << 0), /* reading ID after srst */
+ ATA_READID_POST_HARDRESET = (1 << 1), /* reading ID after hrst */
+ ATA_READID_POST_RESET = ATA_READID_POST_SOFTRESET |
+ ATA_READID_POST_HARDRESET,
/* selector for ata_down_xfermask_limit() */
ATA_DNXFER_PIO = 0, /* speed down PIO */
diff --git a/drivers/ata/pata_acpi.c b/drivers/ata/pata_acpi.c
index e4542ab..27341c7 100644
--- a/drivers/ata/pata_acpi.c
+++ b/drivers/ata/pata_acpi.c
@@ -307,6 +307,7 @@ static const struct ata_port_operations pacpi_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = pacpi_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = pacpi_cable_detect,
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index 8caf9af..f272c95 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -332,6 +332,7 @@ static struct ata_port_operations ali_early_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -366,6 +367,7 @@ static struct ata_port_operations ali_20_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -404,6 +406,7 @@ static struct ata_port_operations ali_c2_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ali_c2_cable_detect,
@@ -441,6 +444,7 @@ static struct ata_port_operations ali_c5_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ali_c2_cable_detect,
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c
index 3cc27b5..91a939a 100644
--- a/drivers/ata/pata_amd.c
+++ b/drivers/ata/pata_amd.c
@@ -344,6 +344,7 @@ static struct ata_port_operations amd33_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = amd_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -377,6 +378,7 @@ static struct ata_port_operations amd66_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = amd_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
@@ -410,6 +412,7 @@ static struct ata_port_operations amd100_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = amd_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
@@ -443,6 +446,7 @@ static struct ata_port_operations amd133_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = amd_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = amd_cable_detect,
@@ -476,6 +480,7 @@ static struct ata_port_operations nv100_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = nv_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = nv_cable_detect,
@@ -509,6 +514,7 @@ static struct ata_port_operations nv133_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = nv_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = nv_cable_detect,
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index d421831..556622d 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -344,6 +344,7 @@ static const struct ata_port_operations artop6210_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = artop6210_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -376,6 +377,7 @@ static const struct ata_port_operations artop6260_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = artop6260_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = artop6260_cable_detect,
diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c
index 67e574d..5b6fd34 100644
--- a/drivers/ata/pata_at32.c
+++ b/drivers/ata/pata_at32.c
@@ -199,6 +199,7 @@ static struct ata_port_operations at32_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index 9623f52..0f5d2d3 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -250,6 +250,7 @@ static struct ata_port_operations atiixp_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = atiixp_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = atiixp_cable_detect,
diff --git a/drivers/ata/pata_bf54x.c b/drivers/ata/pata_bf54x.c
index 7842cc4..580f067 100644
--- a/drivers/ata/pata_bf54x.c
+++ b/drivers/ata/pata_bf54x.c
@@ -1396,6 +1396,7 @@ static const struct ata_port_operations bfin_pata_ops = {
.freeze = bfin_bmdma_freeze,
.thaw = bfin_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = bfin_error_handler,
.post_internal_cmd = bfin_bmdma_stop,
diff --git a/drivers/ata/pata_cmd640.c b/drivers/ata/pata_cmd640.c
index 43d198f..ce517df 100644
--- a/drivers/ata/pata_cmd640.c
+++ b/drivers/ata/pata_cmd640.c
@@ -194,6 +194,7 @@ static struct ata_port_operations cmd640_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c
index 7acbbd9..b840a3f 100644
--- a/drivers/ata/pata_cmd64x.c
+++ b/drivers/ata/pata_cmd64x.c
@@ -295,6 +295,7 @@ static struct ata_port_operations cmd64x_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -328,6 +329,7 @@ static struct ata_port_operations cmd646r1_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -361,6 +363,7 @@ static struct ata_port_operations cmd648_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = cmd648_cable_detect,
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c
index 33f7f08..c17ade5 100644
--- a/drivers/ata/pata_cs5520.c
+++ b/drivers/ata/pata_cs5520.c
@@ -169,6 +169,7 @@ static struct ata_port_operations cs5520_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c
index e1818fd..1a865dd 100644
--- a/drivers/ata/pata_cs5530.c
+++ b/drivers/ata/pata_cs5530.c
@@ -196,6 +196,7 @@ static struct ata_port_operations cs5530_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_cs5535.c b/drivers/ata/pata_cs5535.c
index 0132453..fd3abc3 100644
--- a/drivers/ata/pata_cs5535.c
+++ b/drivers/ata/pata_cs5535.c
@@ -188,6 +188,7 @@ static struct ata_port_operations cs5535_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = cs5535_cable_detect,
diff --git a/drivers/ata/pata_cs5536.c b/drivers/ata/pata_cs5536.c
index d753e56..bb176a9 100644
--- a/drivers/ata/pata_cs5536.c
+++ b/drivers/ata/pata_cs5536.c
@@ -251,6 +251,7 @@ static struct ata_port_operations cs5536_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = cs5536_cable_detect,
diff --git a/drivers/ata/pata_cypress.c b/drivers/ata/pata_cypress.c
index fc5f9c4..e011689 100644
--- a/drivers/ata/pata_cypress.c
+++ b/drivers/ata/pata_cypress.c
@@ -140,6 +140,7 @@ static struct ata_port_operations cy82c693_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c
index 043dcd3..dfa7779 100644
--- a/drivers/ata/pata_efar.c
+++ b/drivers/ata/pata_efar.c
@@ -263,6 +263,7 @@ static const struct ata_port_operations efar_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = efar_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = efar_cable_detect,
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c
index 0713872..9a3f1e8 100644
--- a/drivers/ata/pata_hpt366.c
+++ b/drivers/ata/pata_hpt366.c
@@ -324,6 +324,7 @@ static struct ata_port_operations hpt366_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = hpt36x_cable_detect,
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index c79f066..a4d0196 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -653,6 +653,7 @@ static struct ata_port_operations hpt370_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = hpt37x_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -690,6 +691,7 @@ static struct ata_port_operations hpt370a_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = hpt37x_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -728,6 +730,7 @@ static struct ata_port_operations hpt372_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = hpt37x_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -766,6 +769,7 @@ static struct ata_port_operations hpt374_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = hpt374_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c
index 9f1c084..1f2ce6e 100644
--- a/drivers/ata/pata_hpt3x2n.c
+++ b/drivers/ata/pata_hpt3x2n.c
@@ -373,6 +373,7 @@ static struct ata_port_operations hpt3x2n_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = hpt3x2n_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = hpt3x2n_cable_detect,
diff --git a/drivers/ata/pata_hpt3x3.c b/drivers/ata/pata_hpt3x3.c
index cb8bdb6..bd27235 100644
--- a/drivers/ata/pata_hpt3x3.c
+++ b/drivers/ata/pata_hpt3x3.c
@@ -134,6 +134,7 @@ static struct ata_port_operations hpt3x3_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_icside.c b/drivers/ata/pata_icside.c
index 842fe08..5ed32f4 100644
--- a/drivers/ata/pata_icside.c
+++ b/drivers/ata/pata_icside.c
@@ -382,6 +382,7 @@ static struct ata_port_operations pata_icside_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = pata_icside_error_handler,
.post_internal_cmd = pata_icside_bmdma_stop,
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c
index 4320e79..1d2e049 100644
--- a/drivers/ata/pata_isapnp.c
+++ b/drivers/ata/pata_isapnp.c
@@ -46,6 +46,7 @@ static struct ata_port_operations isapnp_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_it8213.c b/drivers/ata/pata_it8213.c
index 1eda821..f5f4fef 100644
--- a/drivers/ata/pata_it8213.c
+++ b/drivers/ata/pata_it8213.c
@@ -273,6 +273,7 @@ static const struct ata_port_operations it8213_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = it8213_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = it8213_cable_detect,
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c
index ca9aae0..692b338 100644
--- a/drivers/ata/pata_it821x.c
+++ b/drivers/ata/pata_it821x.c
@@ -667,6 +667,8 @@ static struct ata_port_operations it821x_passthru_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index 120b5bf..42470af 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -115,6 +115,7 @@ static struct ata_port_operations ixp4xx_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c
index 5b8174d..75f1811 100644
--- a/drivers/ata/pata_jmicron.c
+++ b/drivers/ata/pata_jmicron.c
@@ -149,6 +149,7 @@ static const struct ata_port_operations jmicron_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = jmicron_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index 17159b5..1b8143c 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -297,6 +297,7 @@ static struct ata_port_operations pdc20230_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -351,6 +352,7 @@ static struct ata_port_operations ht6560a_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -416,6 +418,8 @@ static struct ata_port_operations ht6560b_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -536,6 +540,7 @@ static struct ata_port_operations opti82c611a_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -668,6 +673,11 @@ static struct ata_port_operations opti82c46x_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c
index 9afc8a3..40294d7 100644
--- a/drivers/ata/pata_marvell.c
+++ b/drivers/ata/pata_marvell.c
@@ -120,6 +120,7 @@ static const struct ata_port_operations marvell_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = marvell_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = marvell_cable_detect,
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index 50c56e2..f4b1408 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -291,6 +291,7 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
.exec_command = ata_exec_command,
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = mpc52xx_ata_error_handler,
.cable_detect = ata_cable_40wire,
.qc_prep = ata_qc_prep,
diff --git a/drivers/ata/pata_mpiix.c b/drivers/ata/pata_mpiix.c
index c0d9e0c..f3bd458 100644
--- a/drivers/ata/pata_mpiix.c
+++ b/drivers/ata/pata_mpiix.c
@@ -179,6 +179,7 @@ static struct ata_port_operations mpiix_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = mpiix_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c
index 25c922a..f271f7f 100644
--- a/drivers/ata/pata_netcell.c
+++ b/drivers/ata/pata_netcell.c
@@ -49,6 +49,7 @@ static const struct ata_port_operations netcell_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_80wire,
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c
index 9fe66fd..ce57754 100644
--- a/drivers/ata/pata_ns87410.c
+++ b/drivers/ata/pata_ns87410.c
@@ -172,6 +172,7 @@ static struct ata_port_operations ns87410_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ns87410_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_ns87415.c b/drivers/ata/pata_ns87415.c
index d0e2e50..1d9b57e 100644
--- a/drivers/ata/pata_ns87415.c
+++ b/drivers/ata/pata_ns87415.c
@@ -311,6 +311,7 @@ static const struct ata_port_operations ns87560_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -346,6 +347,7 @@ static const struct ata_port_operations ns87415_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_oldpiix.c b/drivers/ata/pata_oldpiix.c
index 44da09a..f49f361 100644
--- a/drivers/ata/pata_oldpiix.c
+++ b/drivers/ata/pata_oldpiix.c
@@ -250,6 +250,7 @@ static const struct ata_port_operations oldpiix_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = oldpiix_pata_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_opti.c b/drivers/ata/pata_opti.c
index 8f79447..4bec33f 100644
--- a/drivers/ata/pata_opti.c
+++ b/drivers/ata/pata_opti.c
@@ -193,6 +193,7 @@ static struct ata_port_operations opti_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = opti_error_handler,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c
index f9b485a..234d386 100644
--- a/drivers/ata/pata_optidma.c
+++ b/drivers/ata/pata_optidma.c
@@ -380,6 +380,7 @@ static struct ata_port_operations optidma_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = optidma_error_handler,
.set_mode = optidma_set_mode,
.cable_detect = ata_cable_40wire,
@@ -414,6 +415,7 @@ static struct ata_port_operations optiplus_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = optidma_error_handler,
.set_mode = optidma_set_mode,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c
index fd36099..e667544 100644
--- a/drivers/ata/pata_pcmcia.c
+++ b/drivers/ata/pata_pcmcia.c
@@ -114,6 +114,8 @@ static struct ata_port_operations pcmcia_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c
index 2622577..05633a5 100644
--- a/drivers/ata/pata_pdc2027x.c
+++ b/drivers/ata/pata_pdc2027x.c
@@ -166,6 +166,7 @@ static struct ata_port_operations pdc2027x_pata100_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = pdc2027x_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = pdc2027x_cable_detect,
@@ -199,6 +200,7 @@ static struct ata_port_operations pdc2027x_pata133_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = pdc2027x_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = pdc2027x_cable_detect,
diff --git a/drivers/ata/pata_pdc202xx_old.c b/drivers/ata/pata_pdc202xx_old.c
index 6c9689b..894b6ef 100644
--- a/drivers/ata/pata_pdc202xx_old.c
+++ b/drivers/ata/pata_pdc202xx_old.c
@@ -292,6 +292,7 @@ static struct ata_port_operations pdc2024x_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -326,6 +327,7 @@ static struct ata_port_operations pdc2026x_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = ata_bmdma_error_handler,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = pdc2026x_cable_detect,
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index ac03a90..7f14598 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -77,6 +77,7 @@ static struct ata_port_operations pata_platform_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c
index a4c0e50..612b576 100644
--- a/drivers/ata/pata_qdi.c
+++ b/drivers/ata/pata_qdi.c
@@ -178,6 +178,7 @@ static struct ata_port_operations qdi6500_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
@@ -204,6 +205,7 @@ static struct ata_port_operations qdi6580_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_radisys.c b/drivers/ata/pata_radisys.c
index 8109b08..8ec9a25 100644
--- a/drivers/ata/pata_radisys.c
+++ b/drivers/ata/pata_radisys.c
@@ -215,6 +215,7 @@ static const struct ata_port_operations radisys_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,
diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.c
index ba8a31c..62b32ad 100644
--- a/drivers/ata/pata_rz1000.c
+++ b/drivers/ata/pata_rz1000.c
@@ -91,6 +91,7 @@ static struct ata_port_operations rz1000_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c
index 725a858..f3b014e 100644
--- a/drivers/ata/pata_sc1200.c
+++ b/drivers/ata/pata_sc1200.c
@@ -209,6 +209,7 @@ static struct ata_port_operations sc1200_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c
index ea2ef9f..86d572c 100644
--- a/drivers/ata/pata_scc.c
+++ b/drivers/ata/pata_scc.c
@@ -1005,6 +1005,7 @@ static const struct ata_port_operations scc_pata_ops = {
.qc_issue = ata_qc_issue_prot,
.freeze = scc_bmdma_freeze,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = scc_error_handler,
.post_internal_cmd = scc_bmdma_stop,
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c
index 8bed888..ad9cbb3 100644
--- a/drivers/ata/pata_serverworks.c
+++ b/drivers/ata/pata_serverworks.c
@@ -329,6 +329,7 @@ static struct ata_port_operations serverworks_osb4_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = serverworks_cable_detect,
@@ -363,6 +364,7 @@ static struct ata_port_operations serverworks_csb_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = serverworks_cable_detect,
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
index 503245a..ef50bcd 100644
--- a/drivers/ata/pata_sil680.c
+++ b/drivers/ata/pata_sil680.c
@@ -221,6 +221,7 @@ static struct ata_port_operations sil680_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = sil680_cable_detect,
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c
index 87546d9..53350d7 100644
--- a/drivers/ata/pata_sis.c
+++ b/drivers/ata/pata_sis.c
@@ -544,6 +544,7 @@ static const struct ata_port_operations sis_133_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sis_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = sis_133_cable_detect,
@@ -576,6 +577,7 @@ static const struct ata_port_operations sis_133_for_sata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = sis_133_cable_detect,
@@ -608,6 +610,7 @@ static const struct ata_port_operations sis_133_early_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sis_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = sis_66_cable_detect,
@@ -640,6 +643,7 @@ static const struct ata_port_operations sis_100_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sis_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = sis_66_cable_detect,
@@ -673,6 +677,7 @@ static const struct ata_port_operations sis_66_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sis_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -704,6 +709,7 @@ static const struct ata_port_operations sis_old_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sis_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c
index 1388cef..9f1e3c3 100644
--- a/drivers/ata/pata_sl82c105.c
+++ b/drivers/ata/pata_sl82c105.c
@@ -236,6 +236,7 @@ static struct ata_port_operations sl82c105_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = sl82c105_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_triflex.c b/drivers/ata/pata_triflex.c
index 403eafc..1e9e4ef 100644
--- a/drivers/ata/pata_triflex.c
+++ b/drivers/ata/pata_triflex.c
@@ -209,6 +209,7 @@ static struct ata_port_operations triflex_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = triflex_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index 453d72b..9b8d830 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -360,6 +360,7 @@ static struct ata_port_operations via_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = via_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = via_cable_detect,
@@ -394,6 +395,7 @@ static struct ata_port_operations via_port_ops_noirq = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = via_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = via_cable_detect,
diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.c
index 7116a9e..e978e4c 100644
--- a/drivers/ata/pata_winbond.c
+++ b/drivers/ata/pata_winbond.c
@@ -146,6 +146,7 @@ static struct ata_port_operations winbond_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c
index bd4c2a3..6d7bce8 100644
--- a/drivers/ata/pdc_adma.c
+++ b/drivers/ata/pdc_adma.c
@@ -173,6 +173,7 @@ static const struct ata_port_operations adma_ata_ops = {
.qc_issue = adma_qc_issue,
.freeze = adma_freeze,
.thaw = adma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = adma_error_handler,
.irq_clear = adma_irq_clear,
.irq_on = ata_irq_on,
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index d015b4a..94fc561 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -1006,7 +1006,7 @@ static void sata_fsl_error_intr(struct ata_port *ap)
/* handle fatal errors */
if (hstatus & FATAL_ERROR_DECODE) {
err_mask |= AC_ERR_ATA_BUS;
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
/* how will fatal error interrupts be completed ?? */
freeze = 1;
}
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 37b850a..e1c9632 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -1429,7 +1429,7 @@ static void mv_err_intr(struct ata_port *ap, struct ata_queued_cmd *qc)
EDMA_ERR_CRQB_PAR | EDMA_ERR_CRPB_PAR |
EDMA_ERR_INTRL_PAR)) {
err_mask |= AC_ERR_ATA_BUS;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
ata_ehi_push_desc(ehi, "parity error");
}
if (edma_err_cause & (EDMA_ERR_DEV_DCON | EDMA_ERR_DEV_CON)) {
@@ -1459,7 +1459,7 @@ static void mv_err_intr(struct ata_port *ap, struct ata_queued_cmd *qc)
sata_scr_read(&ap->link, SCR_ERROR, &serr);
sata_scr_write_flush(&ap->link, SCR_ERROR, serr);
err_mask = AC_ERR_ATA_BUS;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
}
}
@@ -1468,7 +1468,7 @@ static void mv_err_intr(struct ata_port *ap, struct ata_queued_cmd *qc)
if (!err_mask) {
err_mask = AC_ERR_OTHER;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
}
ehi->serror |= serr;
@@ -1683,7 +1683,7 @@ static void mv_pci_error(struct ata_host *host, void __iomem *mmio)
ata_ehi_push_desc(ehi,
"PCI err cause 0x%08x", err_cause);
err_mask = AC_ERR_HOST_BUS;
- ehi->action = ATA_EH_HARDRESET;
+ ehi->action = ATA_EH_RESET;
qc = ata_qc_from_tag(ap, ap->link.active_tag);
if (qc)
qc->err_mask |= err_mask;
@@ -2265,15 +2265,15 @@ static int mv_prereset(struct ata_link *link, unsigned long deadline)
rc = mv_stop_dma(ap);
if (rc)
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
if (!(pp->pp_flags & MV_PP_FLAG_HAD_A_RESET)) {
pp->pp_flags |= MV_PP_FLAG_HAD_A_RESET;
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
}
/* if we're about to do hardreset, nothing more to do */
- if (ehc->i.action & ATA_EH_HARDRESET)
+ if (ehc->i.action & ATA_EH_RESET)
return 0;
if (ata_link_online(link))
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index ed5dc7c..33e4fa2 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -890,7 +890,7 @@ static int nv_adma_check_cpb(struct ata_port *ap, int cpb_num, int force_err)
"notifier for tag %d with no cmd?\n",
cpb_num);
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ata_port_freeze(ap);
return 1;
}
@@ -1831,7 +1831,7 @@ static void nv_swncq_error_handler(struct ata_port *ap)
if (ap->link.sactive) {
nv_swncq_ncq_stop(ap);
- ehc->i.action |= ATA_EH_HARDRESET;
+ ehc->i.action |= ATA_EH_RESET;
}
ata_bmdma_drive_eh(ap, ata_std_prereset, ata_std_softreset,
@@ -2116,7 +2116,7 @@ static int nv_swncq_sdbfis(struct ata_port *ap)
ata_ehi_clear_desc(ehi);
ata_ehi_push_desc(ehi, "BMDMA stat 0x%x", host_stat);
ehi->err_mask |= AC_ERR_HOST_BUS;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
return -EINVAL;
}
@@ -2131,7 +2131,7 @@ static int nv_swncq_sdbfis(struct ata_port *ap)
ata_ehi_push_desc(ehi, "illegal SWNCQ:qc_active transition"
"(%08x->%08x)", pp->qc_active, sactive);
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_HARDRESET;
+ ehi->action |= ATA_EH_RESET;
return -EINVAL;
}
for (i = 0; i < ATA_MAX_QUEUE; i++) {
@@ -2267,7 +2267,7 @@ static void nv_swncq_host_interrupt(struct ata_port *ap, u16 fis)
ata_ehi_push_desc(ehi, "Ata error. fis:0x%X", fis);
ehi->err_mask |= AC_ERR_DEV;
ehi->serror |= serror;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ata_port_freeze(ap);
return;
}
@@ -2299,7 +2299,7 @@ static void nv_swncq_host_interrupt(struct ata_port *ap, u16 fis)
if (pp->ncq_flags & (ncq_saw_sdb | ncq_saw_backout)) {
ata_ehi_push_desc(ehi, "illegal fis transaction");
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_HARDRESET;
+ ehi->action |= ATA_EH_RESET;
goto irq_error;
}
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 7914def..eda298c 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -231,6 +231,7 @@ static const struct ata_port_operations pdc_pata_ops = {
.qc_issue = pdc_qc_issue_prot,
.freeze = pdc_freeze,
.thaw = pdc_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = pdc_pata_error_handler,
.post_internal_cmd = pdc_post_internal_cmd,
.cable_detect = pdc_pata_cable_detect,
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index 864c1c1..3dfb8ab 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -286,45 +286,45 @@ static struct sil24_cerr_info {
"device error via D2H FIS" },
[PORT_CERR_SDB] = { AC_ERR_DEV, 0,
"device error via SDB FIS" },
- [PORT_CERR_DATA] = { AC_ERR_ATA_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_DATA] = { AC_ERR_ATA_BUS, ATA_EH_RESET,
"error in data FIS" },
- [PORT_CERR_SEND] = { AC_ERR_ATA_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_SEND] = { AC_ERR_ATA_BUS, ATA_EH_RESET,
"failed to transmit command FIS" },
- [PORT_CERR_INCONSISTENT] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_INCONSISTENT] = { AC_ERR_HSM, ATA_EH_RESET,
"protocol mismatch" },
- [PORT_CERR_DIRECTION] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_DIRECTION] = { AC_ERR_HSM, ATA_EH_RESET,
"data directon mismatch" },
- [PORT_CERR_UNDERRUN] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_UNDERRUN] = { AC_ERR_HSM, ATA_EH_RESET,
"ran out of SGEs while writing" },
- [PORT_CERR_OVERRUN] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_OVERRUN] = { AC_ERR_HSM, ATA_EH_RESET,
"ran out of SGEs while reading" },
- [PORT_CERR_PKT_PROT] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_PKT_PROT] = { AC_ERR_HSM, ATA_EH_RESET,
"invalid data directon for ATAPI CDB" },
- [PORT_CERR_SGT_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_SOFTRESET,
+ [PORT_CERR_SGT_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_RESET,
"SGT not on qword boundary" },
- [PORT_CERR_SGT_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_SGT_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI target abort while fetching SGT" },
- [PORT_CERR_SGT_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_SGT_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI master abort while fetching SGT" },
- [PORT_CERR_SGT_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_SGT_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI parity error while fetching SGT" },
- [PORT_CERR_CMD_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_SOFTRESET,
+ [PORT_CERR_CMD_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_RESET,
"PRB not on qword boundary" },
- [PORT_CERR_CMD_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_CMD_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI target abort while fetching PRB" },
- [PORT_CERR_CMD_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_CMD_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI master abort while fetching PRB" },
- [PORT_CERR_CMD_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_CMD_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI parity error while fetching PRB" },
- [PORT_CERR_XFR_UNDEF] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_XFR_UNDEF] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"undefined error while transferring data" },
- [PORT_CERR_XFR_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_XFR_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI target abort while transferring data" },
- [PORT_CERR_XFR_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_XFR_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI master abort while transferring data" },
- [PORT_CERR_XFR_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET,
+ [PORT_CERR_XFR_PCIPERR] = { AC_ERR_HOST_BUS, ATA_EH_RESET,
"PCI parity error while transferring data" },
- [PORT_CERR_SENDSERVICE] = { AC_ERR_HSM, ATA_EH_SOFTRESET,
+ [PORT_CERR_SENDSERVICE] = { AC_ERR_HSM, ATA_EH_RESET,
"FIS received while sending service FIS" },
};
@@ -616,7 +616,7 @@ static int sil24_init_port(struct ata_port *ap)
if ((tmp & (PORT_CS_INIT | PORT_CS_RDY)) != PORT_CS_RDY) {
pp->do_port_rst = 1;
- ap->link.eh_context.i.action |= ATA_EH_HARDRESET;
+ ap->link.eh_context.i.action |= ATA_EH_RESET;
return -EIO;
}
@@ -1038,7 +1038,7 @@ static void sil24_error_intr(struct ata_port *ap)
if (irq_stat & PORT_IRQ_UNK_FIS) {
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(ehi, "unknown FIS");
freeze = 1;
}
@@ -1059,7 +1059,7 @@ static void sil24_error_intr(struct ata_port *ap)
*/
if (ap->nr_active_links >= 3) {
ehi->err_mask |= AC_ERR_OTHER;
- ehi->action |= ATA_EH_HARDRESET;
+ ehi->action |= ATA_EH_RESET;
ata_ehi_push_desc(ehi, "PMP DMA CS errata");
pp->do_port_rst = 1;
freeze = 1;
@@ -1080,7 +1080,7 @@ static void sil24_error_intr(struct ata_port *ap)
irq_stat);
} else {
err_mask |= AC_ERR_HSM;
- action |= ATA_EH_HARDRESET;
+ action |= ATA_EH_RESET;
freeze = 1;
}
} else
@@ -1094,12 +1094,12 @@ static void sil24_error_intr(struct ata_port *ap)
if (ci && ci->desc) {
err_mask |= ci->err_mask;
action |= ci->action;
- if (action & ATA_EH_RESET_MASK)
+ if (action & ATA_EH_RESET)
freeze = 1;
ata_ehi_push_desc(ehi, "%s", ci->desc);
} else {
err_mask |= AC_ERR_OTHER;
- action |= ATA_EH_SOFTRESET;
+ action |= ATA_EH_RESET;
freeze = 1;
ata_ehi_push_desc(ehi, "unknown command error %d",
cerr);
@@ -1169,7 +1169,7 @@ static inline void sil24_host_intr(struct ata_port *ap)
if (rc < 0) {
struct ata_eh_info *ehi = &ap->link.eh_info;
ehi->err_mask |= AC_ERR_HSM;
- ehi->action |= ATA_EH_SOFTRESET;
+ ehi->action |= ATA_EH_RESET;
ata_port_freeze(ap);
return;
}
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 3ef072f..b513555 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -137,6 +137,7 @@ static const struct ata_port_operations vt6420_sata_ops = {
.freeze = svia_noop_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = vt6420_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -167,6 +168,7 @@ static const struct ata_port_operations vt6421_pata_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
+ .atapi_dev_reset = atapi_sff_dev_reset,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = vt6421_pata_cable_detect,
@@ -322,7 +324,7 @@ static int vt6420_prereset(struct ata_link *link, unsigned long deadline)
if (!online) {
/* tell EH to bail */
- ehc->i.action &= ~ATA_EH_RESET_MASK;
+ ehc->i.action &= ~ATA_EH_RESET;
return 0;
}
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 124033c..c78bb3e 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -298,9 +298,9 @@ enum {
ATA_EH_REVALIDATE = (1 << 0),
ATA_EH_SOFTRESET = (1 << 1),
ATA_EH_HARDRESET = (1 << 2),
+ ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
ATA_EH_ENABLE_LINK = (1 << 3),
- ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE,
/* ata_eh_info->flags */
@@ -724,6 +724,8 @@ struct ata_port_operations {
void (*bmdma_stop) (struct ata_queued_cmd *qc);
u8 (*bmdma_status) (struct ata_port *ap);
+
+ int (*atapi_dev_reset)(struct ata_device *dev);
};
struct ata_port_info {
@@ -878,6 +880,7 @@ extern void ata_id_c_string(const u16 *id, unsigned char *s,
extern void ata_id_to_dma_mode(struct ata_device *dev, u8 unknown);
extern void ata_bmdma_setup(struct ata_queued_cmd *qc);
extern void ata_bmdma_start(struct ata_queued_cmd *qc);
+extern int atapi_sff_dev_reset(struct ata_device *dev);
extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
extern u8 ata_bmdma_status(struct ata_port *ap);
extern void ata_bmdma_irq_clear(struct ata_port *ap);
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-01-21 15:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-15 4:46 unable to use cdrom/dvd drive after some usage Johnny Luong
2008-01-15 11:34 ` Alan Cox
2008-01-21 8:01 ` Tejun Heo
2008-01-21 8:38 ` Johnny Luong
2008-01-21 15:28 ` Tejun Heo
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).