[so2] Blocare masina virtuala la rulea CU_START

Vicentiu Ciorbaru cvicentiu at gmail.com
Tue Mar 25 00:05:39 EET 2014


2014-03-24 23:02 GMT+02:00 Daniel Baluta <daniel.baluta at gmail.com>:
> 2014-03-24 22:57 GMT+02:00 Daniel Baluta <daniel.baluta at gmail.com>:
>> 2014-03-24 22:46 GMT+02:00 Vicentiu Ciorbaru <cvicentiu at gmail.com>:
>>> Salut,
>>>
>>> Incerc sa rezolv implementarea de trimitere de pachete, insa m-am
>>> lovit de urmatoarea problema:
>>>
>>> * Am alocat memorie pentru dma.
>>> * In acea zona am pus un TCB initializat pt modul flexibil (consider
>>> eu corect, dupa ce am rascitit documentatia, cu un pachet concatenat
>>> la final + offset-ul de 3 octeti)
>>> * Am scris in general pointer a SCB-ului un pointer catre acea zona
>>> (folosind handle-ul dma).
>>> * Am scris in bitfield-ul CUC comanda pentru CU_START (0x10)
>>>
>>> In momentul respectiv masina virtuala se blocheaza. Singurul mod in
>>> care o pot inchide este cu Ctrl + \. Ctrl + C nu functioneaza. Primesc
>>> mesaj de eroare core dumped in acel moment.
>>
>> Nu-mi dau seama pe moment
>
> Scuze, am apasat send din greseala.
>
> Nu-mi dau seama pe moment, dar ce poti face este sa-ti compilezi qemu
> cu debug pentru device-ul e100.
>
> # git clone git://git.qemu.org/qemu.git
> # git checkout v1.7.0
>
> # cd net/hw
>
> In fisierul eepro100.c, definesti simbolul DEBUG_EEPRO100
>
>
> /* Debug EEPRO100 card. */
> #if 0
> # define DEBUG_EEPRO100
> #endif
>
>
> Pe sistemul meu am mai avut de instalat:
>
> # apt-get install libpixman-1-dev
> # apt-get install libglib2.0-dev
>
> Apoi:
>
> # ./configure --prefix="home/daniel/install"
> --target-list="i386-softmmu x86_64-softmmu"
> # make
> #make install

Am reusit sa compilez qemu. Problema apare intr-o bucla infinita din
qemu aparent:

EE100 eepro100_read2          addr=Command/Status+0 val=0x0000
EE100 eepro100_write4         addr=General Pointer+0 val=0x07193000
EE100 eepro100_write1         addr=Command/Status+2 val=0x10
EE100 action_command          val=(cu start), status=0x0000,
command=0x0000, link=0x00000000
EE100 action_command          CU list with at least one more entry
EE100 action_command          val=(cu start), status=0x0000,
command=0x0000, link=0x00000000
EE100 action_command          CU list with at least one more entry
EE100 action_command          val=(cu start), status=0x0000,
command=0x0000, link=0x00000000
EE100 action_command          CU list with at least one more entry
EE100 action_command          val=(cu start), status=0x0000,
command=0x0000, link=0x00000000
EE100 action_command          CU list with at least one more entry
EE100 action_command          val=(cu start), status=0x0000,
command=0x0000, link=0x00000000
...... pana la infinit

Din ce observ, pare ca nu se realizeaza bine transmiterea de general pointer.
Acel general pointer, din ce vad in codul qemu, ar trebui sa fie
echivalent cu ce se printeaza la campul link.

Nu prea stiu ce sa-i fac momentan. Mai sap prin codul qemu. :)

Vicentiu


More information about the so2 mailing list