Intel VT-d: практикум для хакеров

24 мая 2013

Intel VT-d: практикум для хакеров

Современные персональные платформы характеризуются способностью пе­ри­ферийных контроллеров самостоятельно обращаться к оперативной па­мя­ти и другим системным ре­сур­сам. Это требуется учитывать при раз­ра­бот­ке тех­но­ло­гий виртуализации. Контроллер, работающий с опе­ра­тив­ной памятью под управлением гостевой операционной сис­те­мы, должен видеть только виртуальное адресное про­стран­ство данной среды. Несоблюдение этого требо­ва­ния, превращает его в инструмент, которым злонамеренная гостевая задача может полностью разрушить системный контекст.

Виртуальная адресация и страничное управление памятью впервые были реализованы в процессоре Intel 80386. Тех­нология виртуализации Intel VT-x опирается на данный механизм и существенно его расширяет, тем не менее, оставляя его привилегией исключительно центрального процессора. И только технология Intel VT-d снабжает та­ким механизмом периферийные контроллеры.

«Компостер» уже затрагивал тему виртуализации аппаратных средств, использующих доступ к системным ресурсам в режиме bus-master. В статье «Виртуализация Intel VT-d на марше» рассматриваются базовые принципы этого механизма. Методы повышения производительности виртуальной платформы и минимизации задержек, вносимых схемами трансляции адресов, рассмотрены в статье «PCI Express оптимизируется для поддержки VT-d». Технология создания виртуального адресного пространства для устройства, работающего с оперативной памятью, рассмотрена в статье «Каждому bus-master устройству — виртуальное адресное пространство».

Настало время для более подробного рассмотрения…

Об исследуемом объекте

Предлагаемый материал является своего рода лабораторной работой, цель которой — исследовать главный системный объект, декларирующий поддержку платформой технологии Intel VT-d — ACPI таблицу DMA Remapping Table. Таблица имеет сигнатуру DMAR и находится в зарезервированном участке оперативной памяти. В качестве экспериментальной платформы использовалась плата TYAN S7012 (dual LGA1366) с одним установленным процессором Intel Xeon E5620.

Таблица DMAR была локализована по алгоритму, описанному в разделе 5.2 документа ACPI Specification Revision 5.0. При исследовании табличных структур пригодился опыт дизассемблирования, изложенный в статье «Практикум по ACPI». Содержимое таблицы было сохранено в файле DMAR.BIN и проанализировано на основании раздела 8 документа Intel Virtualization Technology for Directed I/O Architecture Specification, Revision 1.3.

Анализ содержимого таблицы DMAR

В начале таблицы DMAR расположен стандартный ACPI-заголовок:

Заголовок таблицы ACPI DMA Remapping Table
Рисунок 1. Заголовок таблицы DMAR.
Click to enlarge!

Сразу после заголовка расположена форматированная часть таблицы, содержащая параметры конфигурации системы, основной из которых — разрядность физического адреса, которая на рассматриваемой платформе равна 40 битам. Нулевой бит поля Flags указывает на статус Interrupt Remapping. Установленная в нем «единица» означает, что технология Interrupt Remapping поддерживается.

Форматированная часть таблицы ACPI DMA Remapping Table
Рисунок 2. Форматированная часть таблицы DMAR.
Click to enlarge!

Далее следует неформатированная часть таблицы, содержащая последовательность структур DRHD, RMRR, ATSR.

Структура DRHD (DMA Remapping Hardware Unit Definition) декларирует адрес центрального агента технологии Intel VT-d. Этот узел  выполняет трансляцию виртуальных адресов, генерируемых bus-master устройствами, в физические адреса. Базовый адрес MMIO данного блока на исследуемой плате — FBFFE000h. В состав структуры включаются данные о контроллерах прерываний IOAPIC, дополняющие содержимое таблицы ACPI MADT.

Структура DMA Remapping Hardware Unit Definition в составе таблицы DMAR
Рисунок 3. Структура DRHD в составе таблицы DMAR.
Click to enlarge!

Две структуры RMRR (Reserved Memory Region Reporting), декларируют специальный статус областей оперативной памяти EC000-EFFFF (16KB) и BF7EC000-BF7FFFFF (80KB). Это отражает их взаимосвязь с контроллером универсальной последовательной шины. Напомним, что до тех пор, пока ОС не взяла на себя управление контроллером USB (Host Controller Ownership), контроллер находится в распоряжении BIOS. Поэтому BIOS назначает адреса для расписания транзакций и других областей оперативной памяти, к которым контроллер осуществляет доступ. Структуры RMRR содержат информацию о регионах оперативной памяти, с которыми USB-контроллер работает в режиме bus-master. Заметим, что когда ОС «отнимет» контроллер у BIOS и назначит собственные адреса для его управляющих структур в оперативной памяти, данная информация перестанет быть актуальной. В общем случае, структуры RMRR могут быть задействованы для любых bus-master устройств, использующих оперативную память до инициализации в операционной системе.

Первая структура Reserved Memory Region Reporting в составе таблицы DMAR
Рисунок 4. Первая структура Reserved Memory Region Reporting.
Click to enlarge!

Вторая структура Reserved Memory Region Reporting в составе DMAR
Рисунок 5. Вторая структура Reserved Memory Region Reporting.
Click to enlarge!

Структура ATSR (Root Port ATS Capability Reporting) декларирует адреса устройств в конфигурационном пространстве {bus, device, function} для которых поддерживается ATS (Address Translation Services). На исследуемой плате, эти адреса соответствуют мостам PCI Express Bridge, входящим в состав северного моста Intel 5520 IOH.

Структура Root Port ATS Capability Reporting в составе ACPI DMA Remapping Table
Рисунок 6. Структура ATSR (Root Port ATS Capability Reporting).
Click to enlarge!

Резюме

Мы познакомились с главным системным объектом, обеспечивающим технологию виртуализации Intel VT-d, — таблицей ACPI DMA Remapping Table, расположенной в оперативной памяти. Углубленное исследование этой предметной области предусматривает также изучение следующих основополагающих структур:

  1. блок регистров управления и состояния трансляционного агента, преобразующего виртуальные адреса в физические — Remapping Unit MMIO;
  2. таблица в оперативной памяти, используемая трансляционным агентом для преобразования адресов — Translation Structure.

В документе Intel VT-d Architecture specification с точностью до бита унифицируется формат всех перечисленных объектов. Гипотетически, это означает, что программному обеспечению, не обязательно распознавать чипсет для использования функциональности VT-d. С другой стороны, device-specific оптимизация производительности и необходимость обхода различных «багов» могут помешать практическому достижению столь высокой степени унификации.