Изменение регистра управления функциями ia32 на плате Asus Z170 с глючным BIOS

Мне не повезло: мне нужно использовать функцию ЦП, которую BIOS не включил в регистре MSR управления функциями ia32. BIOS устанавливает бит блокировки, поэтому я не могу установить бит самостоятельно. BIOS (Asus UEFI BIOS) не имеет возможности изменить поведение. Вопрос в том, можно ли как-нибудь установить этот бит? Я думаю, можно ли написать расширение UEFI или какую-нибудь программу, которую я мог бы выполнить из оболочки UEFI. Но я не уверен, что регистр заблокирован до того, как это будет выполнено (я очень мало знаю о UEFI и его среде программирования). Как вариант, можно ли пропатчить образ обновления биоса или изменить его штатными средствами? Кто-нибудь слышал о магазинах успеха в этой области?

Речь идет о SGX (Software Guard Extensions). Плата Asus Z170-K. Все есть для поддержки SGX, за исключением того, что BIOS не может установить этот бит.

Обновление от 22 мая: я только что обновил Asus Z170-K до недавно выпущенного BIOS 1803 (выпущенного 20 мая). Это был большой скачок в номере версии, поэтому я надеялся. К сожалению, поддержки SGX по-прежнему нет. Теперь я подал новый запрос в Asus, и на этот раз я не собираюсь просто отмахиваться. Я думаю, что это откровенно дилетантски, это не поддерживается с самого начала — это неотъемлемая часть поддержки процессора Skylake, поэтому я думаю, что все клиенты, которым это нужно, должны попытаться вернуть деньги (я знаю, что сделаю это).


person Morty    schedule 20.01.2016    source источник
comment
указывает ли ваш CPUID, что SGX поддерживается? Можете указать точную модель процессора? В зависимости от механизма, который заблокировал этот бит, может быть возможно включить эту функцию с помощью приложения UEFI. Мне нужно изучить ваше оборудование, чтобы принять решение.   -  person Piotr Król    schedule 20.01.2016
comment
Да, это материнская плата Asus Z170-K, процессор Skylake 6700K. У меня есть SR2L0 SSpec, который поддерживает SGX. Я проверю CPUID, когда вернусь домой, но с этим связана более длинная история :) Был бы признателен, если бы вы могли рассмотреть варианты для UEFI также из интереса.   -  person Morty    schedule 20.01.2016
comment
Программа, использующая CPUID из Windows 10, сообщает об отсутствии поддержки SGX, даже если это поддерживаемый ЦП. Насколько я понимаю, документация Intel SGX, даже если бит управления функциями не установлен, поддержка все равно должна быть видна через CPUID. Я попытаюсь выяснить, не связано ли это с тем, что Windows 10 каким-то образом может обманывать CPUID (запуская все в гипервизоре?). Я не знаю других способов, которыми BIOS или Windows 10 могут скрыть поддержку SGX через измененный результат CPUID, но могут быть MSR и т. Д. Я не знаю.   -  person Morty    schedule 21.01.2016
comment
Постараюсь запустить то же самое на Linux позже сегодня.   -  person Morty    schedule 21.01.2016
comment
В результате CPUID leaf=0x07, subleaf=0x0 сообщает SGX как доступный (EBX содержит 0x29c6fbb после вызова, т. е. бит 2 установлен). С другой стороны, лист 0x12 сообщает об нуле. Итак, я прочитал документацию SGX, в которой говорится, что ЦП поддерживает SGX, но BIOS не выбрал его, установив соответствующий бит управления функциями.   -  person Morty    schedule 23.01.2016
comment
Просто для записей, блокировка биоса должна иметь обходные пути   -  person mirh    schedule 17.09.2019


Ответы (4)


Вероятно, это невозможно без модификации ПЗУ BIOS и его перепрошивки. Инициализация ЦП — одна из самых ранних частей загрузки. Бит блокировки будет установлен на этапе SEC или PEI. Любое расширение, которое вы напишете, будет относиться к фазе DXE, которая произойдет позже.

Лучше всего обратиться в техподдержку Asus. Они могут выпустить обновление BIOS, чтобы исправить проблему.

Если вы еще этого не сделали, проверьте наличие обновления BIOS.

person myron-semack    schedule 21.01.2016
comment
Спасибо, я этого и опасался - спасибо за ответ. - person Morty; 21.01.2016
comment
Кстати, я уже дважды связывался с Asus, но с тех пор трудно дозвониться до человека, который разбирается в этих вещах. Они говорят, что нет никакого интереса клиента, поэтому сторонник не пожелал отправить запрос в штаб-квартиру Asus! Но на плате Q170M эта функция доступна в BIOS, и нет абсолютно никаких причин предлагать ее на плате Q170, а не на плате Z170. Кроме того, это не рекламируется как функция, специфичная для Q170. Я думаю, что Asus могла спутать его с TXT, который действительно поддерживался только на чипсетах Q170. - person Morty; 23.01.2016
comment
Я только что закончил сборку машины на базе Q170M-C/CSM и того же процессора, что и у вас. Купил эту материнку специально для игры с SGX. Несмотря на то, что в руководстве пользователя есть описание SGX, в BIOS такой опции нет! BIOS старый (сентябрьская сборка), я думаю. Я попробую обновить биос и посмотреть, появится ли он. Похоже, они все еще работают над поддержкой SGX. - person Dmitry; 26.01.2016
comment
@Dmitry: Очень интересно - как получилось после обновления? - person Morty; 11.02.2016
comment
С тех пор я обновлял его пару раз. Последнее обновление было 29 декабря, я думаю. Все обновления были просто оптимизацией и ничего не добавляли в функциональность. Я хочу обратиться в техподдержку. Но у меня мало надежды, что это поможет. - person Dmitry; 12.02.2016
comment
@Dmitry, повезло с обновлением BIOS Q170M-C BIOS 0705, выпущенным пару дней назад? - person Thomas Bertani; 21.02.2016
comment
@ThomasBertani не повезло :( - person Dmitry; 02.03.2016
comment
Я только что обновил Asus Z170-K до недавно выпущенного BIOS 1803 (выпущенного 20 мая). Это был большой скачок в номере версии, поэтому я надеялся. К сожалению, поддержки SGX по-прежнему нет. Теперь я подал новый запрос в Asus, и на этот раз я не собираюсь просто отмахиваться. Я думаю, что это откровенно дилетантски, это не поддерживается с самого начала — это неотъемлемая часть поддержки процессора Skylake, поэтому я думаю, что все клиенты, которым это нужно, должны попытаться вернуть деньги (я знаю, что сделаю это). - person Morty; 22.05.2016

Для поддержки SGX потребуется гораздо больше, чем просто установка бита в MSR. UEFI должен зарезервировать специальный блок памяти (Enclave Page Cache) для правильной работы SGX, поэтому, если ASUS не поддерживает SGX со стороны UEFI, вам либо нужно реализовать его самостоятельно (что будет сложно даже при достаточном опыте программирования UEFI, из-за необходимости модификации бинарного кода прошивки) или подождите, пока ASUS наверстает упущенное.

person CodeRush    schedule 21.01.2016
comment
Это правда, что в дополнение к установке этого флага функции также необходимо выделить кэш EPC. Но это точно НЕ НАМНОГО больше. Это просто установка пары MSR с базовым адресом и ограничением на выделенную область - и все! Так что, может быть, 4 строки кода (при условии, что в BIOS есть распределитель памяти, но я ожидаю, что это так). Я хочу сказать, что с точки зрения поставщика BIOS поддерживать его тривиально. Им не нужно писать неприятный SMM-код или реализовывать саму функциональность. Это чистая активация. - person Morty; 21.01.2016
comment
Я уже дважды связывался с Asus, но с тех пор трудно связаться с кем-то, кто знает об этих вещах. Они говорят, что нет никакого интереса клиента, поэтому сторонник не пожелал отправить запрос в штаб-квартиру Asus! Но на плате Q170M эта функция доступна в BIOS, и нет абсолютно никаких причин предлагать ее на плате Q170, а не на плате Z170. Кроме того, это не рекламируется как функция, специфичная для Q170. Я думаю, что Asus могла спутать его с TXT, который действительно поддерживался только на чипсетах Q170. - person Morty; 23.01.2016
comment
Попробуйте использовать UEFITool/UEFIExtract для поиска всех записей в этот конкретный MSR. Я ожидаю, что это будет немного больше кода, чем всего один бит и одно выделение памяти, но если нет — исправление того, что пишет MSR, и добавление драйвера DXE для выделения блока EPC не должно быть слишком сложным, вы правы в этом в своем первом комментарий. - person CodeRush; 23.01.2016

Бета-версия BIOS 3107 теперь размещена на веб-сайте Asus. В этой версии впервые включен SGX (в меню BIOS появилась новая опция SGX). Я не проверял, что это действительно работает, но, по крайней мере, это прогресс. Похоже, что другие материнские платы серии Z170 получают обновления BIOS, которые начинаются с «3», так что для них также может быть добавлен SGX.

person Morty    schedule 02.01.2017
comment
Я могу подтвердить, что это работает — я использовал Intel SDK и запустил Enclaves на этой платформе с этим BIOS :-) - person Morty; 13.01.2017

Похоже, ASUS Z170-A не поддерживает Intel SGX. Процессор Intel Core i7 6700K. Я попытался установить Intel SGX PSW, но он говорит, что платформа не поддерживает Intel SGX. Я искал настройки Intel SGX в настройках BIOS и не нашел такой опции. Затем я сделал обновление BIOS, актуальная версия на данный момент 1602. Он все еще не поддерживает Intel SGX. Очень жаль, что Intel не публикует список плат, поддерживающих SGX.

person Mikhael S    schedule 18.02.2016
comment
согласен жаль. TXT никогда не набирал обороты, потому что он требовал поддержки ЦП + набора микросхем + TPM, а это означало, что он был только у небольшого подмножества проданных машин. С SGX все находится в процессоре, поэтому все должно быть проще. Но опять же, Intel накосячила, не имея поставщиков BIOS на борту и из-за ошибок в первом патче процессора. Кроме того, SGX выглядит как модель, закрытая для разработчиков, где вам необходимо заключить контракт с Intel для создания производственного кода. Кроме того, он будет работать только на Intel, а не на AMD, ARM и т. д. Теперь я пессимистично отношусь к этой технологии за пределами центров обработки данных и т. д. Она не будет использоваться конечными пользователями, по крайней мере, не в этом поколении. - person Morty; 21.02.2016
comment
@Thomas: К сожалению, нет, я решил, что маршрут UEFIExtract будет слишком трудоемким (я был бы более оптимистичен, если бы мог просто написать расширение UEFI с помощью SDK и загрузить его). Что касается моего mobo, то в течение длительного времени не было новых выпусков BIOS, но я ожидаю, что скоро появится один из них для ошибки микрокода Skylake, но нет особых причин думать, что он добавит SGX. Пока что не известно ни одной десктопной платы с поддержкой SGX, даже Q170M (согласно Дмитрию выше). - person Morty; 21.02.2016
comment
@ Морти, я вижу, это так плохо .. пару дней назад было выпущено новое обновление биоса для Q170M. Потенциально это может включать некоторые изменения и для SGX, однако журнал изменений недостаточно подробен, но его определенно нужно протестировать. Было бы неплохо получить отзыв от Дмитрия по этому поводу, я собирался купить Q170M именно по этой причине и интересовался, не изменился ли что-нибудь новый биос. - person Thomas Bertani; 22.02.2016
comment
@ThomasBertani В настоящее время я использую версию BIOS 0705, которая является последней версией. Нет опции SGX в меню BIOS. - person Dmitry; 20.03.2016