Page 5 of 12

Re: AHCI

Posted: Thu Mar 21, 2013 1:50 am
by Mario_r4
Dell Inspiron N7010 (Intel i5)
Spoiler:
BOARDLOG.TXT (724 Bytes)
Downloaded 324 times
AHCI.LOG (367 Bytes)
Downloaded 323 times
Дисков SD не видит.

Re: AHCI

Posted: Wed Apr 03, 2013 9:57 pm
by Serge
ftp://ftp.kolibrios.org/users/Serge/new/ahci_rc04.7z
Перенёс кеширование в драйвер. Теперь у меня чтение работает в три раза быстрее, чем через биос.

Re: AHCI

Posted: Wed Apr 03, 2013 11:56 pm
by Leency
Проверил: реально, ускорение в несколько раз.

Re: AHCI

Posted: Thu Apr 04, 2013 9:52 am
by yogev_ezra
Драйвер на сях, как обычно? :-) Увидел драйвер на АСМе в BareMetal - не поможет?

Re: AHCI

Posted: Thu Apr 04, 2013 11:06 am
by SoUrcerer
Диски sd появились, но ни один не открывается. Ни fat, ни ntfs, ни ext3.

lspci -v
Spoiler:

Code: Select all

00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
	Subsystem: Lenovo Device 3977
	Flags: bus master, fast devsel, latency 0
	Capabilities: <access denied>
	Kernel driver in use: agpgart-intel

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
	Subsystem: Lenovo Device 3977
	Flags: bus master, fast devsel, latency 0, IRQ 42
	Memory at 90000000 (64-bit, non-prefetchable) [size=4M]
	Memory at 80000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 3000 [size=64]
	Expansion ROM at <unassigned> [disabled]
	Capabilities: <access denied>
	Kernel driver in use: i915

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) (prog-if 30 [XHCI])
	Subsystem: Lenovo Device 3977
	Flags: bus master, medium devsel, latency 0, IRQ 40
	Memory at 90600000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: <access denied>
	Kernel driver in use: xhci_hcd

00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)
	Subsystem: Lenovo Device 3977
	Flags: bus master, fast devsel, latency 0, IRQ 11
	Memory at 90615000 (64-bit, non-prefetchable) [size=16]
	Capabilities: <access denied>

00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04) (prog-if 20 [EHCI])
	Subsystem: Lenovo Device 3977
	Flags: bus master, medium devsel, latency 0, IRQ 16
	Memory at 90619000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: <access denied>
	Kernel driver in use: ehci_hcd

00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
	Subsystem: Lenovo Device 3977
	Flags: bus master, fast devsel, latency 0, IRQ 43
	Memory at 90610000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: snd_hda_intel

00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	Memory behind bridge: 90500000-905fffff
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1c.3 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 4 (rev c4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: 90400000-904fffff
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04) (prog-if 20 [EHCI])
	Subsystem: Lenovo Device 3977
	Flags: bus master, medium devsel, latency 0, IRQ 23
	Memory at 90618000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: <access denied>
	Kernel driver in use: ehci_hcd

00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04)
	Subsystem: Lenovo Device 3977
	Flags: bus master, medium devsel, latency 0
	Capabilities: <access denied>

00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
	Subsystem: Lenovo Device 3977
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 41
	I/O ports at 3088 [size=8]
	I/O ports at 3094 [size=4]
	I/O ports at 3080 [size=8]
	I/O ports at 3090 [size=4]
	I/O ports at 3060 [size=32]
	Memory at 90617000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: <access denied>
	Kernel driver in use: ahci

00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04)
	Subsystem: Lenovo Device 3977
	Flags: medium devsel, IRQ 18
	Memory at 90614000 (64-bit, non-prefetchable) [size=256]
	I/O ports at efa0 [size=32]

02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
	Subsystem: Lenovo Device 30a1
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at 90500000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: <access denied>
	Kernel driver in use: ath9k

03:00.0 Ethernet controller: Atheros Communications Inc. AR8162 Fast Ethernet (rev 10)
	Subsystem: Lenovo Device 3978
	Flags: bus master, fast devsel, latency 0, IRQ 7
	Memory at 90400000 (64-bit, non-prefetchable) [size=256K]
	I/O ports at 2000 [size=128]
	Capabilities: <access denied>
boardlog
Spoiler:

Code: Select all

K : edx=00036881
K : has_ownership
K : edx=00036881
K : has_ownership
K : enter ehci_init
K : HCSPARAMS=00200003, HCCPARAMS=00036881
K : stopped
K : reset ok
K : attaching to IRQ 0B
K : EHCI controller at 00:D0 with 3 ports initialized
K : enter ehci_init
K : HCSPARAMS=00200003, HCCPARAMS=00036881
K : stopped
K : reset ok
K : attaching to IRQ 0B
K : EHCI controller at 00:E8 with 3 ports initialized
K : EHCI 80AEA054: status of port 0 changed to 00001803
K : EHCI 80AEE054: status of port 0 changed to 00001803
K : 2 CPU detected
Zero-config service:
No Card found!
K : EHCI 80AEA054: port 0 has HS or FS device, resetting
K : EHCI 80AEE054: port 0 has HS or FS device, resetting
=========  tmpdisk 0.45  =========
tmpdisk.obj driver loaded successfully
trying to add disk
disk size is not specified
10% from free RAM will be used, new DiskSize: 187 MB
operation completed successfully
K : EHCI 80AEA054: reset port 0 done
K : EHCI 80AEE054: reset port 0 done
K : EHCI 80AEA054 status of port 0 is 00001005
K : malloc(24) -> 808236D0
K : control pipe 80B14044
K : EHCI 80AEE054 status of port 0 is 00001005
K : malloc(24) -> 808236F0
K : control pipe 80B140C4
K : descr8: l=00000010; 12 01 00 02 09 00 01 40
K : descr8: l=00000010; 12 01 00 02 09 00 01 40
K : malloc(42) -> 80823710
K : malloc(42) -> 80823748
K : descr: l=0000001A
K : 12 01 00 02 09 00 01 40 87 80 24 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
K : found USB device with ID 8087:0024, 1 configurations
K : descr: l=0000001A
K : 12 01 00 02 09 00 01 40 87 80 24 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
K : found USB device with ID 8087:0024, 1 configurations
K : know_length: l=00000010
K : 09 02 19 00 01 01 00 E0 00 00 00 00 00 00 00 00
K : malloc(68)K : -> 80823780
K : know_length: l=00000010
K : 09 02 19 00 01 01 00 E0 00 00 00 00 00 00 00 00
K : malloc(68)K : -> 808236D0
K : got_config: l=00000021
K : 09 02 19 00 01 01 00 E0 00 09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00
K : got_config: l=00000021
K : 09 02 19 00 01 01 00 E0 00 09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 3A 00 00 00 00 00 00
K : USB interface class/subclass/protocol = 09/00/00
K : USB interface class/subclass/protocol = 09/00/00
K : found hub with 6 ports
K : found hub with 6 ports
K : [38] int pipe for hub 808237D0
K : [38] hub 808237D0 port 05 clear feature 16
K : final: hub 808237D0 port 5 status 0101 change 01
K : [38] int pipe for hub 80823848
K : [38] hub 80823848 port 06 clear feature 16
K : final: hub 80823848 port 6 status 0101 change 01
K : [48] [main] hub 808237D0 port 05 query status
K : [48] [main] hub 80823848 port 06 query status
K : [48] [connect test] hub 808237D0 port 05 status 0101 change 0000
K : [48] hub 808237D0 port 05 initiate reset
K : [48] [connect test] hub 80823848 port 06 status 0101 change 0000
K : [48] hub 80823848 port 06 initiate reset
K : [48] hub 808237D0 port 05 reset started
K : [48] hub 80823848 port 06 reset started
K : [49] [main] hub 808237D0 port 05 query status
K : [49] [main] hub 80823848 port 06 query status
K : hub 808237D0 port 05 ResetStatusData = 0111 change = 0000
K : hub 80823848 port 06 ResetStatusData = 0111 change = 0000
K : [50] [main] hub 808237D0 port 05 query status
K : [50] [main] hub 80823848 port 06 query status
K : hub 808237D0 port 05 ResetStatusData = 0503 change = 0010
K : [50] hub 808237D0 port 05 clear feature 20
K : hub 80823848 port 06 ResetStatusData = 0503 change = 0010
K : [50] hub 80823848 port 06 clear feature 20
K : [52] hub 808237D0 port 05 speed 2
K : malloc(24) -> 80823720
K : control pipe 80B14244
K : [52] hub 80823848 port 06 speed 2
K : malloc(24) -> 80823740
K : control pipe 80B142C4
K : descr8: l=00000010; 12 01 00 02 00 00 00 40
K : descr8: l=00000010; 12 01 00 02 EF 02 01 40
K : malloc(42) -> 808238C0
K : malloc(42) -> 80823740
K : descr: l=0000001A
K : 12 01 00 02 00 00 00 40 8F 05 66 63 00 01 01 02 03 01 00 00 00 00 00 00 00 00
K : found USB device with ID 058F:6366, 1 configurations
K : descr: l=0000001A
K : 12 01 00 02 EF 02 01 40 86 59 94 02 14 14 01 02 00 01 03 80 94 EA 03 80 00 01
K : found USB device with ID 5986:0294, 1 configurations
K : know_length: l=00000010
K : 09 02 20 00 01 01 00 A0 00 00 00 00 00 00 00 00
K : malloc(76)K : -> 808238F8
K : got_config: l=00000028
K : 09 02 20 00 01 01 00 A0 7D 09 04 00 00 02 08 06 50 00 07 05 01 02 00 02 00 07 05 82 02 00 02 00 00 00 00 00 00 00 00 00
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : peripheral device type is 00
K : direct-access mass storage device detected
K : Command 03 failed
K : Command 03 failed
K : know_length: l=00000010
K : 09 02 7B 01 02 01 00 80 09 02 19 00 01 01 00 E0
K : malloc(424)K : -> 80823A60
K : Command 03 failed
K : media not ready
K : got_config: l=00000183
K : 09 02 7B 01 02 01 00 80 A0 08 0B 00 02 0E 03 00 02 09 04 00 00 01 0E 01 00 02 0D 24 01 00 01 4F 00 80 C3 C9 01 01 01 12 24 02 01 01 02 00 00 00 00 00 00 00 00 03 00 00 00 0B 24 05 02 01 00 00 02 3F 04 00 09 24 03 03 01 01 00 02 00 1C 24 06 04 5D C7 17 A9 19 41 DA 11 AE 0E 00 0D 56 AC 7B 4C 08 01 01 03 59 80 80 00 07 05 81 03 0A 00 05 05 25 03 0A 00 09 04 01 00 00 0E 02 00 00 0E 24 01 01 8D 00 82 00 03 01 01 01 01 00 1B 24 04 01 03 59 55 59 32 00 00 10 00 80 00 00 AA 00 38 9B 71 10 01 00 00 00 00 1E 24 05 01 01 80 02 E0 01 00 00 B8 0B 00 00 B8 0B 00 60 09 00 15 16 05 00 01 15 16 05 00 1E 24 05 02 01 40 01 F0 00 00 00 B8 0B 00 00 B8 0B 00 58 02 00 15 16 05 00 01 15 16 05 00 22 24 05 03 01 A0 00 78 00 00 B8 0B 00 00 00 B8 0B 00 96 00 00 15 16 05 00 02 15 16 05 00 2B 2C 0A 00 06 24 0D 01 01 04 09 04 01 01 01 0E 02 00 00 07 05 82 05 80 00 01 09 04 01 02 01 0E 02 00 00 07 05 82 05 00 02 01 09 04 01 03 01 0E 02 00 00 07 05 82 05 00 04 01 09 04 01 04 01 0E 02 00 00 07 05 82 05 00 0B 01 09 04 01 05 01 0E 02 00 00 07 05 82 05 00 0C 01 09 04 01 06 01 0E 02 00 00 07 05 82 05 80 13 01 09 04 01 07 01 0E 02 00 00 07 05 82 05 00 14 01 00 00 00 00 00 00 00 00
K : malloc(432) -> 80823C10
K : USB interface class/subclass/protocol = 0E/01/00
K : failed to load class driver
K : USB interface class/subclass/protocol = 0E/02/00
K : failed to load class driver
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
K : note: alternate setting with 0E/02/00
ahci_rc04
sys_alloc 472 bytes
os_mmap 8c70c000 131072 bytes
AHCI 8086_1e03
PCI cmd 7 irq line 7
mmio base: 90617000 size 800
host ctl 80000000
port map 12
ahci ports: 6
port 0: ipm 0 det 0 ATA device  status: ready
port 1: ipm 1 det 3 ATA device  status: ready
port 2: ipm 0 det 0 ATA device  status: ready
port 3: ipm 0 det 0 ATA device  status: ready
port 4: ipm 1 det 3 ATAPI device  status: ready
port 5: ipm 0 det 0 ATA device  status: ready
ST320LT020-9YG142 LBA48 625142448 sectors total
disk 80823a60
ahci_adjust_cache_size 1048576

Re: AHCI

Posted: Thu Apr 04, 2013 12:12 pm
by Serge
SoUrcerer
А у тебя на диске fat32 точно есть ? Остальные разделы ядро не умеет монтировать динамически, хотя показывает.

yogev_ezra
Я сперва хочу полностью отладить драйвер, а потом уже думать об асме.
Забавный в BareMetal код, смесь 32-х и 64-х битного кода, но новые регистры r8-r15 не используют. Или особенность дизайна, или код тупо конвертирован с 32-х бит. А все дисковые операции выполняются в режиме опроса, без IRQ.

Re: AHCI

Posted: Thu Apr 04, 2013 12:33 pm
by SoUrcerer
Да, у меня есть на диске fat32. Этот раздел KFAR пытался открыть чуть дольше других - даже "подвис" на полминуты, а затем выдал сообщение об ошибке - такое же, как и все остальные.

Re: AHCI

Posted: Thu Apr 04, 2013 12:57 pm
by Serge
SoUrcerer
Интересно, а если с отладкой ?
ftp://ftp.kolibrios.org/users/Serge/new ... t/ahci.dll
У тебя ноут, возможно энергосбережение вмешивается.

Re: AHCI

Posted: Thu Apr 04, 2013 1:00 pm
by yogev_ezra
Serge wrote:yogev_ezra
Я сперва хочу полностью отладить драйвер, а потом уже думать об асме.
Забавный в BareMetal код, смесь 32-х и 64-х битного кода, но новые регистры r8-r15 не используют. Или особенность дизайна, или код тупо конвертирован с 32-х бит. А все дисковые операции выполняются в режиме опроса, без IRQ.
Ясно. Но всё равно, большое спасибо, что серьёзно отнёсся к моему предложению, и даже посмотрел код.
SoUrcerer wrote:Да, у меня есть на диске fat32. Этот раздел KFAR пытался открыть чуть дольше других - даже "подвис" на полминуты, а затем выдал сообщение об ошибке - такое же, как и все остальные.
Лог от USB ядра. В обычной ночной сборке так же себя ведёт? Чтоб не оказалось, что это баг в USB ядре вообще.

Re: AHCI

Posted: Thu Apr 04, 2013 1:09 pm
by Serge
yogev_ezra
Я проверил свежую сборку и usb ядро, всё работало.

Re: AHCI

Posted: Thu Apr 04, 2013 1:49 pm
by SoUrcerer
Я сначала открыл /bd0/6 - мой fat32-диск, а затем запустил ahci-драйвер. На этот раз /sd0/7 открылся - странно, что разделов больше, чем есть на самом деле (возможно, один из них - расширенный?)
Spoiler:
2.png
2.png (157.5 KiB)
Viewed 11489 times
Spoiler:

Code: Select all

ahci_rc04
sys_alloc 472 bytes
os_mmap 8c70c000 131072 bytes
AHCI 8086_1e03
PCI cmd 7 irq line 7
mmio base: 90617000 size 800
host ctl 80000000
port map 12
ahci ports: 6
port 0: ipm 0 det 0 ATA device  status: ready
port 1: ipm 1 det 3 ATA device  status: ready
port 2: ipm 0 det 0 ATA device  status: ready
port 3: ipm 0 det 0 ATA device  status: ready
port 4: ipm 1 det 3 ATAPI device  status: ready
port 5: ipm 0 det 0 ATA device  status: ready
ST320LT020-9YG142 LBA48 625142448 sectors total
disk 80823a60
ahci_adjust_cache_size 1048576
ahci_disk_read dev 8c70e930 buffer: 8c744000 start: 0 count 32
ahci_disk_read dev 8c70e930 buffer: 8c748000 start: 2048 count 32
ahci_disk_read dev 8c70e930 buffer: 8c74c000 start: 411648 count 32
ahci_disk_read dev 8c70e930 buffer: 8c750000 start: 53450720 count 32
ahci_disk_read dev 8c70e930 buffer: 8c754000 start: 53450752 count 32
ahci_disk_read dev 8c70e930 buffer: 8c758000 start: 106520576 count 32
ahci_disk_read dev 8c70e930 buffer: 8c75c000 start: 106522624 count 32
ahci_disk_read dev 8c70e930 buffer: 8c760000 start: 111708160 count 32
ahci_disk_read dev 8c70e930 buffer: 8c764000 start: 111710208 count 32
ahci_disk_read dev 8c70e930 buffer: 8c768000 start: 584187648 count 32
ahci_disk_read dev 8c70e930 buffer: 8c76c000 start: 584187712 count 32
ahci_disk_read dev 8c70e930 buffer: 8c770000 start: 622749376 count 32
ahci_disk_read dev 8c70e930 buffer: 8c774000 start: 622749696 count 32
ahci_disk_read dev 8c70e930 buffer: 8c778000 start: 622757888 count 32
ahci_disk_read dev 8c70e930 buffer: 8c77c000 start: 622753216 count 32
ahci_disk_read dev 8c70e930 buffer: 8c780000 start: 622759872 count 32
K : destroy app object
K : destroy app object
K : destroy app object
Затем я записал на /bd0/6 скриншот и копию лога. На /sd0/7 изменений не произошло, и тогда я попытался на /sd0/7/ походить по папкам. Одна из папок открылась, другая привела к задумчивости KFAR, и вот такому результату:
Spoiler:
3.png
3.png (161.22 KiB)
Viewed 11489 times
В логе добавилась только одна строчка после этого:

Code: Select all

ahci_disk_read dev 8c70e930 buffer: 8c784000 start: 622760160 count 32
Смена диска на /bd0/6/, а затем обратно на /sd0/7/ вернула отображение списка каталогов (самого первого, до записи скриншотов и логов).
Прошу прощения за качество скриншотов; я думаю, это проблема scrshot - отпишусь сейчас в теме.

Re: AHCI

Posted: Thu Apr 04, 2013 2:16 pm
by Serge
SoUrcerer
/sd и /bd диски плохо совместимы. После запуска драйвера /bd лучше совсем не трогать. Ещё лучше отключить их в загрузочном экране. Тем более что у каждого свой кеш и они не синхронизируются между собой.

Re: AHCI

Posted: Thu Apr 04, 2013 2:47 pm
by Serge
Провел тесты скорости копирования файла в 139МБ на /tmp
IDE /hd - 10.4 с
AHCI /bd - 20.2 c
AHCI /sd - 7.4 c
Получается максимум 19 МБ/с, совсем не густо.

Re: AHCI

Posted: Thu Apr 04, 2013 2:50 pm
by Mario_r4
Кэш 1 Мб.

Re: AHCI

Posted: Thu Apr 04, 2013 3:10 pm
by Serge
Мало влияет, тестировал 4Мб и 8Мб разница незаметна. Скорее больше влияет количество секторов за одну операцию.