Size: a a a

2019 November 24

JG

JeisonWi Garrison in pro.asm
Гуглите AMI leaked UEFI sources
источник

JG

JeisonWi Garrison in pro.asm
TianoCore потому и опенсурс, потому что там нет ничего по-настоящему интересного
источник

ЕК

Евгений Красников (Jin X) in pro.asm
JeisonWi Garrison
Посмотри в утекших исходниках UEFI могут быть
А какое отношение UEFI может иметь к TSX? Вы точно о том говорите? Это Translational Synchronization Extensions, аппаратная реализация транзакционной памяти для многопоточных программ. Реализуется расширениями HLE (префиксы xacquire, xrelease) и RTM (инструкции xbegin, xend, xabort, xtest).

Константы, о которых я спрашиваю — это аппаратные, опять же, ограничения глубины вложенности. Причём тут UEFI ? 🤷‍♂
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Вчера тестил HLE дома через SDE (ибо у меня такой фичи нет).
Забавно так: меняешь значение мьютекса из потока (скажем, с 0 на 1 через xacquire lock inc [m]), читаешь это значение, там 1. Читаешь из другого потока, он видит его как 0. Т.е. оно меняется только для того потока, который его изменил. Если во втором потоке записать туда 2 (так же через xacquire), третий поток всё равно увидит 0 (а первый 1, второй 2).

Мне вот интересно, как это решается для потоков, которые выполняются на одном ядре (без учёта HT даже)? Участвует ли в этом каким-либо образом ОС?

И остаются ли мьютексы всегда в кэше (ведь физически они вряд ли записываются в память)? Короче, надо нормально по-RTFM-ить.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Вызов WinAPI внутри блока приводит к аборту из-за «unfriendly instruction» jmp far. Видимо, при переходе в ядро. Короче, надо хорошенько такие вещи профилировать, дабы они не работали неожиданными образом.
источник

JG

JeisonWi Garrison in pro.asm
Евгений Красников (Jin X)
А какое отношение UEFI может иметь к TSX? Вы точно о том говорите? Это Translational Synchronization Extensions, аппаратная реализация транзакционной памяти для многопоточных программ. Реализуется расширениями HLE (префиксы xacquire, xrelease) и RTM (инструкции xbegin, xend, xabort, xtest).

Константы, о которых я спрашиваю — это аппаратные, опять же, ограничения глубины вложенности. Причём тут UEFI ? 🤷‍♂
Это при том, что это инициализируется каким либо образом при старте железа
источник

JG

JeisonWi Garrison in pro.asm
Я не сказал что точно там можно встретить, но вполне вероятно
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Хм, я думал, что в железе это вообще как-то зашито жёстко. Хотя, откуда память под это всё выделяется — хз. Странно, что доки молчат об этих числах.
источник

JG

JeisonWi Garrison in pro.asm
Интел половину а то и больше в паблик не выкладывает
источник

JG

JeisonWi Garrison in pro.asm
Можно погуглить Intel PDF confidential
источник

ЕК

Евгений Красников (Jin X) in pro.asm
JeisonWi Garrison
Можно погуглить Intel PDF confidential
Ок, спс.
источник
2019 November 29

RB

Rustem B. in pro.asm
источник
2019 November 30

ЕК

Евгений Красников (Jin X) in pro.asm
Влючение поддержки AVX в real-mode:

org     0x100

       ; Enable SSE
       mov     eax,cr0
       and     al,0xFB         ; clear coprocessor emulation CR0.EM (bit 2)
       or      al,0x2          ; set coprocessor monitoring CR0.MP (bit 1)
       mov     cr0,eax
       mov     eax,cr4
       or      eax,0x40600     ; set CR4.OSFXSR (bit 9), CR4.OSXMMEXCPT (bit 10) and CR4.OSXSAVE (bit 18)
       mov     cr4,eax

       ; Enable AVX
       xor     ecx,ecx
       xgetbv                  ; load XCR0 register
       or      al,7            ; set AVX, SSE, x87 bits
       xsetbv                  ; save back to XCR0

       ; Test SSE
       xorps   xmm0,xmm0
       xorps   xmm1,xmm1
       addss   xmm0,xmm1

       ; Test AVX
       vzeroupper
       vxorps  xmm0,xmm0,xmm0
       vxorps  xmm1,xmm1,xmm1
       vaddps  xmm2,xmm0,xmm1

       ret

Запускаю в VMware (MS-DOS).
Доходит до vzeroupper и виснет.
Что ему ещё не хватает?
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Даже добавляю код из Intel SDM для проверки поддержки AVX, выдаёт, что всё ок.

 mov eax, 1
 cpuid
 and ecx, 018000000H
 cmp ecx, 018000000H; check both OSXSAVE and AVX feature flags
 jne not_supported
 ; processor supports AVX instructions and XGETBV is enabled by OS
 mov ecx, 0; specify 0 for XCR0 register
 xgetbv ; result in EDX:EAX
 and eax, 06H
 cmp eax, 06H; check OS has enabled both XMM and YMM state support
 jne not_supported
 mov eax, 1
 jmp done
not_supported:
 mov eax, 0
done:
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Инфа взята из https://wiki.osdev.org/SSE
источник

R

Rabu in pro.asm
а оно точно могёт в реалмоде?
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Rabu
а оно точно могёт в реалмоде?
А почему не должно?
источник

R

Rabu in pro.asm
Евгений Красников (Jin X)
А почему не должно?
потому что префиксы c4 и c5 это vex и evex они в реалмоде вроде как заняты опкодами les и lds
источник

R

Rabu in pro.asm
а префикс 66 работает поэтому и ссе тоже
источник

R

Rabu in pro.asm
https://software.intel.com/en-us/forums/intel-isa-extensions/topic/297055 это не читал но из названия понятно
источник