Текущая конфигурация не позволяет ос контролировать шину pci express

Обновлено: 05.07.2024

Информация о ПК Общая информация о ПК Шина PCI Express

PCI Express, (или PCIe, или PCI-E) – это компьютерная шина расширения, предназначена для подключения периферийных устройств к системной плате персонального компьютера. PCI Express реализовывает программную модель интерфейса PCI и протокол последовательной передачи данных.

Данная шина пришла на смену интерфейсам AGP, PCI-X, PCI. Шина является локальной (внутренней). К преимуществам интерфейса PCI Express относиться поддержка горячей замены карт (под термином горячая замена подразумевают возможность отключать/подключать устройства во время работы компьютера, т.е., без отключения питания).

Главным отличием интерфейса PCI Express от PCI является использование двунаправленного последовательного соединения типа точка-точка (напомним, что в интерфейсе PCI используется 32-битная двунаправленная параллельная шина, к которой подключаются все PCI-устройства).

Шина PCI Express может использовать несколько последовательных соединений типа точка-точка (для данного интерфейса они называются линиями): x1 (одна линия), x2 (две линии), x4 (четыре линии), x8 (восемь линий), x12 (двенадцать линий), x16 (16 линий), x32 (32 линии). Другими словами соединение между картами PCI-Express состоит из одной (1x) или нескольких (2x, 4x, 8x, 12x, 16x, 32x) линий.

Например, если слот PCI Express имеет приставку x16 (PCI Express x16), это значит, что он 16-канальный (предназначен в первую очередь для карты PCI Express x16).

Рис .1 Слот PCI Express x16 и 3 слота PCI Express x1 материнской платы.

Любая карта расширения PCI Express может работать в любом из слотов шины PCI Express (x1, x2, x4, x8, x12, x16 и x32), при условии, что поместится в данный слот. Т.е, карта расширения с меньшим количеством линий (контактов) будет работать в слоте с большим количеством контактов, но при этом будет использоваться то количество линий, сколько разведено на карте.

Пропускная способность шины PCI Express зависит от количества используемых линий и режима передачи данных (дуплексный или полудуплексный):

Отдельное назначение устройств обеспечивает прямой доступ к физическому оборудованию PCIe из виртуальной машины. В этом разделе обсуждаются типы устройств, которые могут использовать дискретное назначение устройств, требования к системе узла, ограничения, накладываемые на виртуальные машины, а также влияние отдельных назначений устройств на безопасность.

для начального выпуска назначения отдельных устройств мы работаем над двумя классами устройств, которые формально поддерживаются корпорацией майкрософт: графические адаптеры и устройства NVMe служба хранилища. Другие устройства, скорее всего, работают и производители оборудования могут предлагать поддержку этих устройств. Для этих устройств вы можете обратиться к этим поставщикам оборудования за поддержкой.

Поддерживаемые виртуальные машины и гостевые операционные системы

Для виртуальных машин поколения 1 или 2 поддерживается отдельное назначение устройств. кроме того, в число поддерживаемых гостей входят Windows 10, Windows server 2019, Windows Server 2016, Windows server 2012 r2 с применением KB 3133690 и различные дистрибутивы ос Linux.

Требования к системе

помимо требований к системе для Windows Server и требований к системе для Hyper-V, дляназначения дискретного устройства требуется оборудование класса сервера, способное предоставлять управление операционной системой для настройки структуры PCIe (встроенного управления PCI Express). Кроме того, в случае сложности с корнем PCIe необходимо поддерживать "службы контроля доступа" (ACS), что позволяет Hyper-V принудительно выполнять весь трафик PCIe через ММУ ввода-вывода.

Эти возможности обычно не предоставляются непосредственно в BIOS сервера и часто скрываются за другими параметрами. Например, для поддержки SR-IOV требуются те же возможности, что и в BIOS. возможно, потребуется установить флажок "включить SR-IOV". Если вы не можете определить правильный параметр в BIOS, обратитесь к поставщику системы.

Чтобы обеспечить оборудование, которое может использовать оборудование для дискретного назначения устройств, наши инженеры составили сценарий профиля компьютера , который можно запустить на узле с поддержкой Hyper-V, чтобы проверить, правильно ли настроен сервер и какие устройства поддерживают отдельное назначение устройств.

Требования к устройствам

Не каждое устройство PCIe можно использовать с назначением дискретного устройства. Например, старые устройства, использующие прерывания PCI прежних версий (Инткс), не поддерживаются. В записи блога Жаке ошин больше подробностей. Тем не менее, для потребителя, на котором выполняется сценарий профиля компьютера , отображаются устройства, которые могут использоваться для назначения отдельных устройств.

Для получения дополнительных сведений изготовители устройств могут обратиться к своему представителям корпорации Майкрософт.

Драйвер устройства

Как отдельное назначение устройств передает все устройство PCIe в гостевую виртуальную машину, драйвер узла не требуется устанавливать до монтирования устройства в виртуальной машине. Единственное требование на узле состоит в том, что можно определить путь расположения PCIe устройства. Драйвер устройства можно также установить, если это помогает идентифицировать устройство. Например, GPU, не имеющий установленного на узле драйвера устройства, может отображаться как устройство отрисовки Microsoft Basic. Если установлен драйвер устройства, то, скорее всего, будет отображаться его производитель и модель.

После подключения устройства в гостевой системе драйвер изготовителя устройства теперь может быть установлен как нормальный на гостевой виртуальной машине.

Ограничения виртуальной машины

Из-за особенностей реализации дискретного назначения устройств некоторые функции виртуальной машины ограничены, пока подключено устройство. Следующие функции сейчас не поддерживаются:

  • Сохранение и восстановление виртуальной машины
  • Динамическая миграция виртуальной машины
  • Использование динамической памяти
  • Добавление виртуальной машины в высокодоступный кластер (HA)

Безопасность

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

Если администратор хочет использовать устройство с недоверенным клиентом, мы предоставили изготовителям устройств возможность создания драйвера для устранения рисков устройств, который можно установить на узле. Обратитесь к изготовителю устройства за сведениями о том, предоставляют ли они драйвер для защиты устройств.

Если вы хотите обойти проверку безопасности для устройства, не имеющего драйвера по устранению рисков, необходимо передать -Force параметр в Dismount-VMHostAssignableDevice командлет. Чтобы понять, как это сделать, вы изменили профиль безопасности этой системы, и это рекомендуется делать только во время создания прототипов или доверенных сред.

Путь к расположению PCIe

Получение пути к расположению с помощью диспетчер устройств

диспетчер устройств

  • Откройте диспетчер устройств и выберите устройство.
  • Щелкните устройство правой кнопкой мыши и выберите "Свойства".
  • Перейдите на вкладку сведения и в раскрывающемся списке свойств выберите "пути расположения".
  • Щелкните правой кнопкой мыши запись, которая начинается с "ПЦИРУТ", и выберите "Копировать". Теперь у вас есть путь к расположению для этого устройства.

Пространство MMIO

Некоторым устройствам, особенно GPU, требуется выделить дополнительное пространство MMIO для виртуальной машины, чтобы память этого устройства была доступна. По умолчанию каждая виртуальная машина запускается с 128 МБ свободного пространства MMIO и 512 МБ высокого уровня MMIO, выделенной для него. Однако для устройства может потребоваться больше пространства MMIO, или же может быть передано несколько устройств, так что Объединенные требования превышают эти значения. Изменение пространства MMIO осуществляется прямо вперед и может выполняться в PowerShell с помощью следующих команд:

Самый простой способ определить, сколько пространства MMIO нужно выделить, — использовать сценарий профиля компьютера. Чтобы скачать и запустить сценарий профиля компьютера, выполните следующие команды в консоли PowerShell:

Для устройств, которые могут быть назначены, скрипт будет отображать требования к MMIO для данного устройства, как в примере ниже:

Небольшое пространство MMIO используется только в 32-разрядных операционных системах и устройствах, использующих 32-разрядные адреса. В большинстве случаев установка максимального пространства MMIO виртуальной машины будет достаточно, так как 32-разрядные конфигурации не очень распространены.

При назначении пространства MMIO виртуальной машине пользователю необходимо убедиться, что в поле MMIO указано значение сумма запрошенного пространства MMIO для всех требуемых назначенных устройств, а также дополнительный буфер, если есть другие виртуальные устройства, для которых требуется несколько МБ пространства MMIO. Используйте значения MMIO по умолчанию, описанные выше, в качестве буфера для нижнего и верхнего значений MMIO (128 МБ и 512 МБ соответственно).

Если пользователю необходимо назначить один GPU K520, как в приведенном выше примере, необходимо задать для пространства MMIO виртуальной машины значение, выводимое сценарием профиля компьютера, плюс буфер — 176 МБ + 512 МБ. Если пользователю было назначено три GPU K520, они должны задать для пространства MMIO значение в три раза 176 Мб плюс буфер или 528 МБ + 512 МБ.

Более подробные сведения о пространстве MMIO см. в разделе дискретное назначение устройств — GPU в блоге течкоммунити.

Сценарий профиля компьютера

Чтобы упростить определение правильности настройки сервера и доступность устройств, доступных для передачи с помощью дискретного назначения устройств, один из наших инженеров объединяет следующий сценарий PowerShell: SurveyDDA.ps1.

Перед использованием скрипта убедитесь, что установлена роль Hyper-V, и запустите сценарий из командного окна PowerShell с правами администратора.

Для каждого обнаруженного устройства средство отобразит, можно ли использовать его с отдельным назначением устройств. Если устройство определяется как совместимое с назначением дискретного устройства, сценарий предоставит причину. Если устройство успешно идентифицировано как совместимое, будет отображаться путь к расположению устройства. Кроме того, если для этого устройства требуется пространство MMIO, оно также будет отображаться.

PCI имеет три независимых физических адресных пространства:Адресное пространство памяти устройства, адресное пространство ввода-вывода и пространство конфигурации.Конфигурационное пространство - это физическое пространство, уникальное для PCI. Поскольку PCI поддерживает устройства plug-and-play, устройства PCI не занимают фиксированное адресное пространство памяти или адресное пространство ввода-вывода, но операционная система определяет базовый адрес их отображения.

Когда система включена, BIOS обнаруживает шину PCI, определяет все устройства, подключенные к шине PCI, и их требования к конфигурации, а также выполняет настройку системы. Следовательно, все устройства PCI должны реализовывать пространство конфигурации, чтобы реализовать автоматическую настройку параметров и реализовать реальный принцип Plug and Play.

Общая длина конфигурационного пространства, определенного спецификацией шины PCI, составляет 256 Байты, информация о конфигурации хранится в определенном порядке и размерах. Первые 64 байта пространства конфигурации называются заголовком конфигурации. , Как и для всех устройств, основная функция заголовка конфигурации - идентифицировать устройство и определять способ доступа хоста к карте PCI (доступ ввода-вывода или доступ к памяти, а также информация о прерываниях). Остальные 192 байта называются пространством локальной конфигурации (областью, связанной с устройством), которая в основном определяет характеристики локальной шины на карте, базовый адрес и диапазон локального пространства и т. Д.

Устройства PCI имеют три пространства: адресное пространство памяти, адресное пространство ввода-вывода и пространство конфигурации. Поскольку PCI поддерживает plug and play, устройства PCI не занимают фиксированное адресное пространство памяти или адресное пространство ввода-вывода, но базовый адрес сопоставления может быть определен операционной системой. Как это настроить? Это роль конфигурационного пространства.

img_c58b094a8ec5cdc8c7ad8d2ca34b04ba.jpe

Наиболее важные вещи в пространстве конфигурации:

Vendor ID: ID поставщика. ID известного производителя оборудования. FFFFh - недопустимый идентификатор поставщика, но его можно использовать, чтобы определить, существует ли устройство PCI.

Device ID: Идентификатор устройства. Идентификатор устройства определенного производителя. Операционная система использует идентификатор поставщика и идентификатор устройства для поиска соответствующего драйвера.

Class Code: Код класса. Всего имеется три байта, которые представляют собой код класса, код подкласса и интерфейс программирования. Код класса используется не только для различения типов устройств, но и для спецификации интерфейсов программирования, поэтому существуют универсальные драйверы.

IRQ Line: Номер IRQ. ПК использовался для управления 16 аппаратными прерываниями двумя микросхемами 8259. Теперь для поддержки симметричных мультипроцессоров существует APIC (Advanced Programmable Interrupt Controller), который поддерживает управление 24 прерываниями.

IRQ Pin: Контакт прерывания. PCI имеет 4 контакта прерывания.Этот регистр указывает, к какому контакту подключено устройство.

2. Как получить доступ к пространству конфигурации

Как получить доступ к пространству конфигурации? Доступен через 0xCF8h、0xCFCh Порт для достижения.

  • 0xCF8h: КОНФИГ_АДРЕС. Адресный порт пространства конфигурации PCI.
  • 0xCFCh: CONFIG_DATA. Порт данных конфигурации PCI.

Формат регистра CONFIG_ADDRESS:

31 бит: Включенный бит.
23:16 бит: номер шины.
15:11 бит: номер устройства.
10: 8 бит: номер функции.
7: 2 бита: номер регистра пространства конфигурации.
1: Бит 0: всегда «00». Это связано с тем, что порты CF8h и CFCh являются 32-битными портами.

img_4f0ca9622f597756632dffbad9cd4a6a.jpe

Теперь есть проблема-CF8h, порты CFCh 32-битные порты, как у Turbo C 16 бит Ни один из компиляторов языка C не поддерживает доступ к 32-битному порту. Как сделать? Мы можем использовать **_ _ emit _ Вставьте машинный код в программу. Каждый раз _ emit _ _ Это должно быть проблематично, поэтому мы должны инкапсулировать его как функцию. код показать, как показано ниже(Обратите внимание, что 66h - это 32-битный префикс инструкции)**:

В-третьих, проход через устройства PCI

Как перечислить устройства PCI? Мы можем попробовать все комбинации bus / dev / func, а затем определить, является ли полученный идентификатор поставщика FFFFh. Следующая программа использует этот метод для перечисления устройств PCI. В то же время, чтобы облегчить анализ данных, сохраните информацию о пространстве конфигурации каждого устройства в файл, чтобы его можно было анализировать медленно.

Код под Windows выглядит следующим образом:

Шина номер 0 - это встроенный чип на материнской плате (в основном южный мост), а типичным устройством, не являющимся материнской платой, является видеокарта. Информацию о PCI также можно увидеть в диспетчере устройств WindowsXP. Запустите «Диспетчер устройств», лучше всего установить режим просмотра «Просмотр устройств по подключению (V)». Найдите мою видеокарту и дважды щелкните ее, чтобы просмотреть ее свойства. Перейдите на страницу «Подробная информация» и найдите поле со списком как «Идентификатор оборудования». Можно увидеть одно из поведений“PCI/VEN_10DE&DEV_0110&CC_030000”, Что значитИдентификатор производителя - «10DE», идентификатор устройства - «0110», а код класса - «030000»., В соответствии с результатами, полученными программой.

Конфигурация компьютера
Процессор: Intel C2D E6750
Материнская плата: Asus P5K-VM
Память: 4 X 1024MB Kingston KVR800D2N5
HDD: Seagate Barracuda 7200.10 320GB sATAII
Видеокарта: Asus Radeon HD5570
Звук: HDA кодек Realtek ALC883
Блок питания: Antec 500W ATX
CD/DVD: SonyNEC Optiarc AD-7203S
Монитор: Acer 1934M
ОС: Windows 7 Ultimate 32-bit
Индекс производительности Windows: 5.4
Не ставя никаких драйверов, в первую очередь поставил на SD. »
Com и LPT отключали в Биосе ?
Проблема кроется в прерываниях, диапазоне памяти или других системных ресурсах, назначенных устройству через BIOS Вашего компьютера. Подробнее - здесь.
Можете попробовать воспользоваться Центром неполадок (Центр поддержки), расположенным в Панели управления.

-------
Нефиг ставить то, к чему второй сервис-пак не вышел.
"Есть старое правило - чтобы не было геморроя, руки должны быть прямыми, а извилины - кривыми, но не наоборот." © Korzh

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

В биосе почему то нет функции disabled и enabled для lpt и com. Там можно выбрать not used для lpt либо вместо это конкретный номер lpt. Я перепробовал все и никак не работает. Сейчас стоит not used.
Есть строчка Parallel Port и можно выбрать ECP либо Standart. Тоже пробовал по разному.
Центр неполадок не приводит ни к чему. Пишет что да, такая проблема есть, подробнее читайте в свойствах. В свойствах написано, что надо отключить устройство другое.

И кстати говоря, если зайти в диспетчер устройств и выбрать вид по типу, зайти в IRQ то там этого устройства нет. Дело в том что у меня отображается два устройства которые касаются SD, если сделать вид -по типу-. Одно ставится изначально без всяких проблем и конфликтов и называется Toshiba SD Card Controller (PCI\VEN_1179&DEV_0805&SUBSYS_00011179&REV_03
).
А второе, с которым и есть проблема ресурсов, появляется только когда я ставлю карточку SD в слот. Оно называется Toshiba SD Memory Card Drive (в ID написано: TSDHD\SD_MEMORY_CARD
). Если я вытаскиваю карту то оно пропадает. Пробовал четыре разные карты разного объема (от 1гб до 4х). На 4гб вообще не видит и устройство не появляется хотя должно (в XP считывал без проблем).

Читайте также: