Hallo,
Ich habe mir vor geraumer Zeit ein
neues AsRock Mainboard zugelegt, auf dem sich 2 Sata controller befinden. Der von AMD funktioniert perfekt, der Andere wie im Titel erwähnt jedoch kaum. lspci Ausgabe zu den Beiden, falls das hilft.
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (rev 40)
02:00.0 IDE interface: Marvell Technology Group Ltd. 88SE91A0 SATA 6Gb/s Controller (rev 12)
Unabhängig von der BIOS/UEFI Einstellung bezüglich AHCI/IDE Modus sagt mir der Kernel ich solle doch bitte den "pata-marvell" Treiber verwenden, mit welchem ich den Controller auch zum laufen bekomme, jedoch mit nicht akzeptablen Ergebnissen. Folgendes wird auf dmesg ausgegeben, wenn ich das Modul lade (habe es geblacklistet, Erklärung unten):
[16749.064804] scsi8 : pata_marvell
[16749.065474] scsi9 : pata_marvell
[16749.066324] ata9: PATA max UDMA/100 cmd 0xd090 ctl 0xd080 bmdma 0xd050 irq 44
[16749.066328] ata10: PATA max UDMA/133 cmd 0xd070 ctl 0xd060 bmdma 0xd058 irq 44
[16749.244222] ata9.00: ATA-9: SAMSUNG SSD 830 Series, CXM03B1Q, max UDMA/133
[16749.244231] ata9.00: 125045424 sectors, multi 16: LBA48 NCQ (depth 0/32)
[16749.247182] ata9.00: configured for UDMA/100
[16749.247349] scsi 8:0:0:0: Direct-Access ATA SAMSUNG SSD 830 CXM0 PQ: 0 ANSI: 5
[16749.247595] sd 8:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
[16749.247838] sd 8:0:0:0: [sdf] Write Protect is off
[16749.247841] sd 8:0:0:0: [sdf] Mode Sense: 00 3a 00 00
[16749.247858] sd 8:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[16749.248843] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.1 domain=0x0000 address=0x0000000078360000 flags=0x0050]
[16779.607647] ata9.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[16779.607657] ata9.00: failed command: READ DMA
[16779.607667] ata9.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[16779.607674] ata9.00: status: { DRDY }
[16784.619502] ata9: link is slow to respond, please be patient (ready=0)
[16789.634376] ata9: device not ready (errno=-16), forcing hardreset
[16789.634389] ata9: soft resetting link
[16794.797517] ata9: link is slow to respond, please be patient (ready=0)
[16799.653098] ata9: SRST failed (errno=-16)
[16799.653112] ata9: soft resetting link
[16799.834682] ata9.00: configured for UDMA/100
[16799.834689] ata9.00: device reported invalid CHS sector 0
[16799.834705] ata9: EH complete
[16830.770248] ata9.00: limiting speed to UDMA/66:PIO4
[16830.770258] ata9.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[16830.770266] ata9.00: failed command: READ DMA
[16830.770276] ata9.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[16830.770282] ata9.00: status: { DRDY }
[16835.781044] ata9: link is slow to respond, please be patient (ready=0)
[16840.791912] ata9: device not ready (errno=-16), forcing hardreset
[16840.791925] ata9: soft resetting link
[16845.955053] ata9: link is slow to respond, please be patient (ready=0)
[16850.814664] ata9: SRST failed (errno=-16)
[16850.814677] ata9: soft resetting link
[16850.994231] ata9.00: configured for UDMA/66
[16850.994238] ata9.00: device reported invalid CHS sector 0
[16850.994247] ata9: EH complete
[16881.804529] ata9.00: limiting speed to UDMA/33:PIO4
[16881.804541] ata9.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[16881.804549] ata9.00: failed command: READ DMA
[16881.804561] ata9.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[16881.804568] ata9.00: status: { DRDY }
[16886.815384] ata9: link is slow to respond, please be patient (ready=0)
[16891.829252] ata9: device not ready (errno=-16), forcing hardreset
[16891.829264] ata9: soft resetting link
[16896.996379] ata9: link is slow to respond, please be patient (ready=0)
[16901.852989] ata9: SRST failed (errno=-16)
[16901.853002] ata9: soft resetting link
[16902.032566] ata9.00: configured for UDMA/33
[16902.032572] ata9.00: device reported invalid CHS sector 0
[16902.032585] ata9: EH complete
[16932.967081] ata9.00: limiting speed to PIO4
[16932.967085] ata9.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[16932.967088] ata9.00: failed command: READ DMA
[16932.967091] ata9.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[16932.967093] ata9.00: status: { DRDY }
[16937.976935] ata9: link is slow to respond, please be patient (ready=0)
[16942.989812] ata9: device not ready (errno=-16), forcing hardreset
[16942.989825] ata9: soft resetting link
[16948.153945] ata9: link is slow to respond, please be patient (ready=0)
[16950.955977] INFO: task kworker/u16:3:28875 blocked for more than 120 seconds.
[16950.955984] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[16950.955989] kworker/u16:3 D 00000000000000e6 0 28875 2 0x00000008
[16950.956004] Workqueue: events_unbound async_run_entry_fn
[16950.956008] ffff8801010678d0 0000000000000046 ffff880300000000 000000000000a000
[16950.956016] ffff880101067fd8 ffff880101067fd8 ffff8804488a5040 ffff88032c446450
[16950.956023] ffff880101067830 ffffffff8139a582 0000000000000000 0000000000000000
[16950.956029] Call Trace:
[16950.956041] [<ffffffff8139a582>] ? generic_make_request+0xc2/0x120
[16950.956048] [<ffffffff8139a651>] ? submit_bio+0x71/0x160
[16950.956055] [<ffffffff81198c8e>] ? bio_alloc_bioset+0x18e/0x2a0
[16950.956062] [<ffffffff81194df7>] ? _submit_bh+0x157/0x240
[16950.956069] [<ffffffff81083d28>] ? ktime_get_ts+0x48/0x100
[16950.956075] [<ffffffff81100b40>] ? filemap_fdatawait+0x40/0x40
[16950.956082] [<ffffffff8161862c>] io_schedule+0x8c/0xe0
[16950.956087] [<ffffffff81100b4e>] sleep_on_page+0xe/0x20
[16950.956092] [<ffffffff81615853>] __wait_on_bit_lock+0x53/0xc0
[16950.956098] [<ffffffff8119a820>] ? blkdev_write_begin+0x40/0x40
[16950.956103] [<ffffffff81100caa>] __lock_page+0x6a/0x80
[16950.956109] [<ffffffff81068220>] ? autoremove_wake_function+0x40/0x40
[16950.956115] [<ffffffff8119a838>] ? blkdev_readpage+0x18/0x20
[16950.956120] [<ffffffff811019c8>] do_read_cache_page+0x168/0x1a0
[16950.956125] [<ffffffff81101a3c>] read_cache_page+0x1c/0x40
[16950.956131] [<ffffffff813a65ad>] read_dev_sector+0x2d/0xa0
[16950.956137] [<ffffffff813aaa0f>] read_lba+0xef/0x1a0
[16950.956143] [<ffffffff813ab013>] ? find_valid_gpt+0xd3/0x660
[16950.956150] [<ffffffff813ab031>] find_valid_gpt+0xf1/0x660
[16950.956157] [<ffffffff8110937f>] ? __alloc_pages_nodemask+0x15f/0xa00
[16950.956163] [<ffffffff813ab5a0>] ? find_valid_gpt+0x660/0x660
[16950.956169] [<ffffffff813ab629>] efi_partition+0x89/0x460
[16950.956175] [<ffffffff813c355b>] ? string.isra.5+0x3b/0x100
[16950.956181] [<ffffffff813c43e4>] ? vsnprintf+0x204/0x660
[16950.956187] [<ffffffff813c4919>] ? snprintf+0x39/0x40
[16950.956193] [<ffffffff813ab5a0>] ? find_valid_gpt+0x660/0x660
[16950.956200] [<ffffffff813a7128>] check_partition+0x108/0x240
[16950.956206] [<ffffffff813a6d56>] rescan_partitions+0xb6/0x2a0
[16950.956213] [<ffffffff8111e08f>] ? bdi_lock_two+0x2f/0x60
[16950.956240] [<ffffffff8119bb9d>] __blkdev_get+0x35d/0x4e0
[16950.956246] [<ffffffff8119beed>] blkdev_get+0x1cd/0x340
[16950.956253] [<ffffffff8117b270>] ? unlock_new_inode+0x50/0x80
[16950.956258] [<ffffffff8119a6c8>] ? bdget+0x128/0x140
[16950.956264] [<ffffffff813a45e1>] add_disk+0x3a1/0x4a0
[16950.956280] [<ffffffffa0383229>] sd_probe_async+0x129/0x200 [sd_mod]
[16950.956287] [<ffffffff8106e397>] async_run_entry_fn+0x37/0x140
[16950.956293] [<ffffffff81060224>] process_one_work+0x164/0x440
[16950.956300] [<ffffffff81060fc8>] worker_thread+0x128/0x3c0
[16950.956306] [<ffffffff81060ea0>] ? manage_workers.isra.27+0x2c0/0x2c0
[16950.956311] [<ffffffff81067340>] kthread+0xc0/0xe0
[16950.956317] [<ffffffff81067280>] ? kthread_create_on_node+0x120/0x120
[16950.956323] [<ffffffff8162115c>] ret_from_fork+0x7c/0xb0
[16950.956329] [<ffffffff81067280>] ? kthread_create_on_node+0x120/0x120
[16950.956337] INFO: task modprobe:335 blocked for more than 120 seconds.
[16950.956339] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[16950.956342] modprobe D 00000000000000ff 0 335 333 0x00000008
[16950.956348] ffff88030d8cfd48 0000000000000082 00000000000000d0 000000000000a000
[16950.956354] ffff88030d8cffd8 ffff88030d8cffd8 ffffffff81a11440 ffff88013c1a3c30
[16950.956360] ffffffff81a358c8 0000000000000004 ffff88021afc8000 2222222222222222
[16950.956366] Call Trace:
[16950.956374] [<ffffffff8161654e>] ? mutex_unlock+0xe/0x20
[16950.956380] [<ffffffff8161de5d>] ? kprobes_module_callback+0x11d/0x140
[16950.956388] [<ffffffff8106e735>] async_synchronize_cookie_domain+0x75/0x120
[16950.956394] [<ffffffff810681e0>] ? wake_up_bit+0x40/0x40
[16950.956399] [<ffffffff8106e817>] async_synchronize_full+0x17/0x20
[16950.956405] [<ffffffff81098e04>] load_module+0x1ec4/0x2600
[16950.956411] [<ffffffff813dfb00>] ? ddebug_proc_write+0x100/0x100
[16950.956420] [<ffffffff810995da>] SyS_init_module+0x9a/0x100
[16950.956428] [<ffffffff81621206>] system_call_fastpath+0x1a/0x1f
[16953.013545] ata9: SRST failed (errno=-16)
[16953.013559] ata9: soft resetting link
[16953.192183] ata9.00: configured for PIO4
[16953.192199] ata9.00: device reported invalid CHS sector 0
[16953.192226] ata9: EH complete
[16953.193609] sdf: sdf1 sdf2
[16953.194562] sdf: detected capacity change from 0 to 64023257088
[16953.194565] sd 8:0:0:0: [sdf] Attached SCSI disk
[16953.194756] sdf: detected capacity change from 0 to 64023257088
An die "hung tasks" kann ich mich nicht erinnern aus meinen vorherigen Tests, aber das Endergebnis ist das selbe.
Wie man den Zahlen links entnehmen kann dauert das eine ganze Weile (hängt beim booten → blacklist), und soweit ich das verstehe wird dabei mehrfach der sata link resettet.
Ich habe zum testen eine Samsung 830 64GB SSD angeschlossen und das ist der output von "dd if=/dev/sdf of=/dev/null bs=1M count=32"
32+0 Datensätze ein
32+0 Datensätze aus
33554432 Bytes (34 MB) kopiert, 9,21143 s, 3,6 MB/s
und "hdparm -tT /dev/sdf"
/dev/sdf:
Timing cached reads: 5512 MB in 2.00 seconds = 2757.54 MB/sec
Timing buffered disk reads: 12 MB in 3.44 seconds = 3.48 MB/sec
das ist vermutlich kein vernünftiges Benchmark oder sowas, aber ich denke es macht deutlich, was ich sagen will: Ich komm beim sequentiellen Lesen nicht über 4MB/s.
Ein DVD-Laufwerk kann man daran vllt. noch anschließen, aber selbst das ist nervig bei der langen Initialisierungszeit und ich hab momentan so viele kleine Platten im Rechner, dass die 6 Ports des andere Controllers voll sind.
Ein Faktor könnte dabei IOMMU sein, da ich es verwende und in dmesg etwas über "IO_PAGE_FAULT" steht, auch wenn ich das bezweifle. Falls niemand etwas bessere einfällt werde ich mal versuchen das abzuschalten.
Es gibt im UEFI/BIOS auch eine Option zum booten mit dem Marvell Controller, die eine eingenes ROM lädt, vllt. ändert es was, damit zu booten.
Ich hoffen irgendjemand von euch hat eine kluge Idee.
edit: Tests haben ergeben, dass der Controller unter Windows (8 pro 64) normal funktioniert. Des Weiteren bekomme ich "invalid rom content" Fehler, wenn ich versuche das rom zu dumpen oder den Controller per qemu vfio-passthrough weiterzugeben.
edit2: Es scheint tatsächlich an IOMMU zu liegen. Nach Deaktierung der Funktion im UEFI und entfernen des kernelparameters "iommu=pt" tut alles, leider ist das keine Akzeptable Lösung, darum suche ich weiter und markiere das hier als gelöst, falls ich eine richtige Lösung finde.
edit3: Ähnliches Problem bei anderem board:
http://mbforum.gigabyte.de/index.php?page=Thread&postID=56301
https://patchwork.kernel.org/patch/1895321/ ein Patch der das ganze fixen könnte, mal ausprobieren.
mfg ajs124
ps. zu edit3:
Auch wenn das ganze zu einem Monolog wird, Ich dokumentiere das einfach mal, falls jemand aufspringen will, in Zukunft das selbe Problem hat oder ähnliches.