Page 8 of 10

Re: Скорость работы с IDE дисками

Posted: Mon Jul 20, 2015 6:14 pm
by CleverMouse
Serge, сделай под VMWare вывод Identity от жёсткого диска, типа

Code: Select all

Index: dev_hdcd.inc
===================================================================
--- dev_hdcd.inc	(revision 5575)
+++ dev_hdcd.inc	(working copy)
@@ -73,6 +73,8 @@
         cmp     [DevErrorCode], 0
         jne     .FindCD
 
+        DEBUGF 1,'K : HD flags = %x\n',[Sector512+0xA6]:4
+
         cmp     [Sector512+6], word 16
         ja      .FindCD
 
Поддержка LBA48 - 10-й бит в этом слове.

Re: Скорость работы с IDE дисками

Posted: Mon Jul 20, 2015 6:41 pm
by Pathoswithin
Leency wrote:У меня система зависает с включенным пунктом b на голубом экране.
Ещё веселее, там я вообще только переменные переместил. К тому же у меня работает, правда диск дублируется. Похоже, зависает v86. То-есть ей посылаются неправильные данные...?

Re: Скорость работы с IDE дисками

Posted: Mon Jul 20, 2015 10:40 pm
by Serge
лог VMware
Spoiler:K : kernel SVN r5584
K : 1 CPU detected
K : Attach Interrupt 6 Handler 80031509
K : Set IDE IRQ6 return code 8005BFD0
K : IDE controller programming interface 0001018A
K : BAR0 IDE base addr 01F0
K : BAR1 IDE base addr 03F4
K : BAR2 IDE base addr 0170
K : BAR3 IDE base addr 0374
K : BAR4 IDE controller register base addr 10C0
K : IDE Interrupt FF
K : Channel 1 Disk 0
K : HD flags = 4008
K : Dev: VMware Virtual IDE Hard Drive
K : PIO possible modes 03
K : PIO set mode 01
K : Multiword DMA possible modes 07
K : Multiword DMA set mode 00
K : Ultra DMA possible modes 07
K : Ultra DMA set mode 02
K : Channel 1 Disk 1
K : Device not found
K : Channel 2 Disk 0
K : Device not found
K : Channel 2 Disk 1
K : Device not found
K : FS - HD timeout
K : FS - HD read error
K : IDE CH1 DMA enabled
K : IDE CH2 PIO because no devices
K : Attach Interrupt 14 Handler 800320A4
K : Set IDE IRQ14 return code 8005BFE4
K : Attach Interrupt 15 Handler 800320A4
K : Set IDE IRQ15 return code 8005BFF8
K : clear_pci_ide_interrupts: port[10C2] = 20 -> 20; port[10CA] = 00 -> 00
K : driver /rd/1/drivers/vidintel.sys mapped to 80A88000
K : Attach Interrupt 1 Handler 80033180
K : IRQ1 return code 8005C00C
K : driver /rd/1/drivers/PS2MOUSE.SYS mapped to 80B94000
K : Attach Interrupt 12 Handler 80B94546
L: /SYS/LOADDRV Param: RDC
K : driver /sys/drivers/RDC.sys mapped to 80BA1000
L: /SYS/NETWORK/NETCFG Param: A
L: /SYS/NETWORK/@ZEROCONF Param:
L: /SYS/MEDIA/PALITRA Param: H 007DCEDF 003C427F
Zero-config service loaded
L: /SYS/@VOLUME Param:
K : driver /sys/drivers/SOUND.sys mapped to 80BB8000
Detecting hardware...
No compatible PCI soundcard found!
Loading SB16
K : driver /sys/drivers/SB16.sys mapped to 80BB9000
detecting hardware...
exiting... May be some problems found?
K : destroy app object
L: /SYS/@TASKBAR Param:
L: /SYS/@DOCKY Param:
L: /SYS/SETUP Param: BOOT
L: /SYS/@ICON Param:
L: /SYS/@SS Param: ASSM
L: /SYS/TMPDISK Param: A0
K : driver /sys/drivers/tmpdisk.sys mapped to 80BF4000
Їа®Ўго ¤®Ў ўЁвм ўЁавг «м­л© ¤ЁбЄ
ҐЈ® а §¬Ґа ­Ґ гЄ § ­, 10% бў®Ў®¤­®© Ћ‡“ Ўг¤Ґв ЁбЇ®«м§®ў ­®
а §¬Ґа ¤ЁбЄ  Ўг¤Ґв: 101 MB
®ЇҐа жЁп гбЇҐи­® § ўҐа襭 
L: /SYS/SEARCHAP Param:
Searchap: additional partition is not found!
L: AUTORUN.DAT processed

Re: Скорость работы с IDE дисками

Posted: Tue Jul 21, 2015 2:00 pm
by CleverMouse
Ага, LBA48 отсутствует.

Re: Скорость работы с IDE дисками

Posted: Sat Aug 29, 2015 7:57 pm
by Pathoswithin
У меня нет диска без LBA48, так что тестируйте.

Re: Скорость работы с IDE дисками

Posted: Thu Sep 03, 2015 1:29 am
by Leency
У меня в QEMU и на реальном железе просто постоянный ребут после синего экрана.

Re: Скорость работы с IDE дисками

Posted: Thu Sep 03, 2015 8:10 pm
by Pathoswithin
У тебя реальное железо без LBA48?
... а ты сжимал ядро? Оно теперь несжатое слишком большое для загрузки.

Re: Скорость работы с IDE дисками

Posted: Thu Sep 03, 2015 11:20 pm
by Leency
Не сжимал. Как определить с LBA48 или без? (в любом случае ребут не ок)

Re: Скорость работы с IDE дисками

Posted: Fri Sep 04, 2015 3:20 am
by Pathoswithin
Ага, Serge дал пинка загрузчику, теперь можно не сжимать. Без LBA48 древние диски, максимум 120 Гб, меньше 20 Гб — точно.

Re: Скорость работы с IDE дисками

Posted: Fri Sep 04, 2015 10:04 am
by Serge
Теперь работает.
PS. Упаковка ни чем не помогала. Данные затирались стеком после распаковки ядра.

Re: Скорость работы с IDE дисками

Posted: Sat Sep 05, 2015 3:17 am
by Leency
У меня не грузится ни на VBox http://prntscr.com/8cpsir ни на QEMU http://prntscr.com/8cptn4
На реальном железе не увидел смысла проверять.

Re: Скорость работы с IDE дисками

Posted: Sat Sep 05, 2015 5:36 pm
by Pathoswithin
Ошибка загрузки с дискеты? Я редактировал код, который касается IDE (HDD и CD)... :? Serge, можешь что-то подсказать?

Re: Скорость работы с IDE дисками

Posted: Sat Sep 05, 2015 7:40 pm
by Serge
Скажу, что меня смущает ревизия ядра на скриншотах. Я исправил проблему со стеком в 5786, но неправильно. Поэтому лучше брать 5790+.

Re: Скорость работы с IDE дисками

Posted: Sat Sep 05, 2015 11:57 pm
by Serge
В ревизии 5578 поломали чтение файлов маленькими блоками.
Тестовый код
Spoiler:

Code: Select all

int main()
{
    char *cache_path, *bin_path;
    uint32_t crc;
    int count;
    int offset;
    int i;

    cache_path = "/kolibrios/kpm/cache/mesa-9.2.5.7z";
    bin_path = "/kolibrios/kpm/test.bin";

    write_file(bin_path, buf, 0, 32, &count);

    offset = 32;
    for(i=0; i< 16; i++)
    {
        read_file(cache_path, &buf[i*1024], offset, 1024, &count);
        printf("read offset %d count %d\n",offset, count);
        offset+=count;
    }
    crc = crc32buf(buf,16384);
    printf("offset 32 size %d crc32 %x\n", 16384, crc);
    write_file(bin_path, buf, 32, 16384, &count);

    read_file(cache_path, buf, 32, 16384, &count);
    crc = crc32buf(buf,count);
    printf("offset 32 size %d crc32 %x\n", count, crc);

    return 0;
}
В первом случае из файла читается 16Кб блоками по 1Кб с начальным смещением 32 байта. Во втором чтение выполняется одним блоком со смещением 32 байта от начала файла. Анализ показал, что в первом случае при пересечении границы в 4096 байт последние 32 байта содержат мусор. Исходный файл http://ftp.kolibrios.org/users/Serge/ne ... a-9.2.5.7z
Ошибка возможно связана с фрагментацией файла, потому что после изменения файла сбой происходит в другом месте.

Re: Скорость работы с IDE дисками

Posted: Mon Sep 07, 2015 1:42 am
by Pathoswithin
Как страшно жить...
Да, я не учёл вариант, когда в конце кусочек меньше сектора принадлежит другому фрагменту.
Собрал новое ядро.