Нажмите "Enter", чтобы перейти к содержанию

Pci шина 1 устройство 0 функция 0: ѧۧӧ֧ pci-ڧߧ 0 ۧӧ 1 ߧܧڧ 3

Содержание

Обзор PCI в Linux

Peripheral Component Interconnect или PCI — это протокол, определенный в первые дни вычислений компанией INTEL. Как следует из названия, PCI используется для подключения различных периферийных устройств платформы Linux. Простая блок-схема системы PCI будет выглядеть так:

На приведенном выше рисунке показана система PCI, которая имеет 3 шины PCI. Шина № 0 является основной шиной системы, поскольку к ней подключен ЦП; кроме того, это шина, на которой присутствует мост корневого порта или корневой комплекс.

Остальные шины, то есть шины № 1 и 2, подключаются к первичной шине с помощью мостов PCI. Шина № 1 соединена с шиной № 0 мостом 1. Автобус № 2 соединен с автобусом № 1 мостом № 2. В целом, все устройства подключены, и несколько устройств D1, D2, D3 и т. Д. Присутствуют на разных шинах PCI. В любой системе PCI присутствует 3 типа устройств. Корневой порт или сложное устройство, мостовое устройство и конечные устройства. Сравнивая типы устройств с нашим примером диаграммы, ЦП — это корневой порт или сложное устройство. Мост 1, Мост 2 — это устройства моста PCI. D1, D2, D3 и т. Д. Являются оконечными устройствами PCI системы. D3 присутствует на шинах № 2 и № 3, одно и то же устройство на разных шинах.

Пространство или заголовок конфигурации PCI:

Все устройства PCI имеют пространство конфигурации или заголовок. Это стандартная область памяти, присутствующая во всех устройствах. Существует два типа заголовка конфигурации PCI, основанные на двух типах (мост и конечная точка) устройств PCI. Конфигурационное пространство известно как Тип 0 для оконечного устройства и Тип 1 для мостов PCI. Поля заголовка конфигурации определены спецификациями PCI.

Заголовок конфигурации типа 0:

Заголовок конфигурации типа 1:

Перечисление шины PCI:

Во время загрузки системы выполняется распознавание всех устройств PCI в системе, что называется перечислением шины PCI. BIOS обычно перечисляет все устройства PCI, присутствующие на всех шинах, и помещает их в sysfs. Пользователи могут получить доступ к деталям присутствующих устройств PCI с помощью утилиты lspci. Другой способ — просмотреть файлы sysfs внутри

/sys/bus/pci/devices каталог. В этом каталоге будут находиться все устройства, известные ядру Linux.

После перечисления шины PCI все устройства получают номер, номер и номер функции. Этих трех компонентов достаточно, чтобы найти любое устройство.

Перечисление шины PCI выполняется BIOS (базовой системой ввода-вывода). BIOS — это встроенное программное обеспечение, предназначенное для Машины / платформы и предоставляемое самим производителем.

Драйвер Linux Kernel Root Complex:

На любой платформе Linux на базе x86 есть корневой комплексный драйвер PCI или подсистема PCI Linux, которая считывает информацию, заполняемую BIOS, и экспортирует информацию в файловую систему sysfs. Все устройства PCI, присутствующие в системе, можно найти внутри /sys/bus/pci/devices каталог. Драйвер корневого комплекса также обеспечивает гибкость для повторного сканирования или сброса устройств на любой шине PCI. Даже полное повторное сканирование всех шин PCI можно выполнить с помощью / sys / bus / pci / rescan.

Команда для повторного сканирования всех устройств:

эхо1>/sys/автобус/pci/повторное сканирование

Пользователи должны иметь права суперпользователя для выполнения этой команды.

Для любого устройства в каталоге sysfs мы можем найти ниже детали / информацию:

сушилочка $ ls/sys/автобус/pci/устройства/0000\:00\:00.0/-l
общий 0
-rw-r — r—1 корень корень 4096 Октябрь 417:34 broken_parity_status
-р — г — г—1 корень корень 4096 Октябрь 218:19 класс
-rw-r — r—1 корень корень 4096 Октябрь 218:19 config
-р — г — г—1 корень корень 4096 Октябрь 417:34 согласованная_dma_mask_bits
-rw-r — r—1 корень корень 4096 Октябрь 417:34 d3cold_allowed
-р — г — г—1 корень корень 4096 Октябрь 218:19 устройство
-р — г — г—1 корень корень 4096 Октябрь 417:34 dma_mask_bits
lrwxrwxrwx 1 корень корень 0 Октябрь 219:18 Водитель -> ../../../автобус/pci/водители/agpgart-intel

-rw-r — r—1 корень корень 4096 Октябрь 417:34 driver_override
-rw-r — r—1 корень корень 4096 Октябрь 417:34включить
-р — г — г—1 корень корень 4096 Октябрь 218:19 irq
-р — г — г—1 корень корень 4096 Октябрь 417:34 local_cpulist
-р — г — г—1 корень корень 4096 Октябрь 417:34 local_cpus
-р — г — г—1 корень корень 4096 Октябрь 219:18 модалии
-rw-r — r—1 корень корень 4096 Октябрь 417:34 msi_bus
-rw-r — r—1 корень корень 4096 Октябрь 219:18 numa_node
drwxr-xr-x 2 корень корень 0 Октябрь 417:34 власть
—w — w1 корень корень 4096 Октябрь 417:34 Удалить
—w — w1 корень корень 4096 Октябрь 417:34 повторное сканирование
-р — г — г—1 корень корень 4096 Октябрь 218:19 ресурс
-р — г — г—1 корень корень 4096 Октябрь 417:34 пересмотр
lrwxrwxrwx 1 корень корень 0 Октябрь 417:34 подсистема -> ../../../автобус/pci
-р — г — г—1 корень корень 4096 Октябрь 417:34 subsystem_device
-р — г — г—1 корень корень 4096 Октябрь 417:34 subsystem_vendor
-rw-r — r—1 корень корень 4096 Октябрь 417:34 событие
-р — г — г—1 корень корень 4096 Октябрь 218:19 продавец
сушилочка $

Выше представлены файлы для каждого устройства по разному пути.

Мы прочитаем содержимое нескольких файлов, чтобы проверить информацию:

сушилочка $ Кот/sys/автобус/pci/устройства/0000\:00\:00.0/устройство
0x7190 // устройство файл предоставляет deviceid
сушилочка $ Кот/sys/автобус/pci/устройства/0000\:00\:00.0/продавец
0x8086 // продавец файл предоставляет vendorid
сушилочка $

Точно так же другие файлы предоставляют некоторую другую информацию.

Некоторые файлы предназначены только для записи: удалите и повторно просканируйте

Удалить файлы можно использовать для удаления устройства. Введите в файл эхо 1, и вы увидите, что lspci не будет отображать это устройство.

эхо 1> /sys/bus/pci/devices/0000\:00\:00.0/remove

Восстановление устройства с предыдущего шага можно выполнить путем повторного сканирования устройства.

Эхо 1 к повторное сканирование файл с помощью следующей команды:

эхо 1> /sys/bus/pci/devices/0000\:00\:00.0/rescan

Чтение и запись в конфигурационное пространство:

Доступны команды lspci и setpci, которые можно использовать для чтения и записи пространства конфигурации любого устройства PCI. lspci имеет очень богатые возможности для настройки вывода в соответствии с потребностями пользователя. setpci — еще одна утилита, которую также можно использовать для доступа к пространству конфигурации устройства pci.

Мы не будем здесь подробно обсуждать их, поскольку есть отдельная статья, в которой подробно рассматриваются обе эти утилиты. У нас будет только один пример обеих команд:

lspci:

сушилочка $ lspci-d :7190
00:00.0 Хост-мост: Intel Corporation 440BX/ZX/DX — 82443BX/ZX/DX Host мост (rev 01)// выход

setpci:

сушилочка $ setpci -s 00:00.00.w

8086//выход; чтение слова со смещения 0в пространство конфигурации. Продавец я бы это выход.

Чтение и запись BAR Space:

Всего может быть 6 32-битных полос или 3 64-битных панели. К пространству конфигурации типа 0 можно обратиться, чтобы получить сведения о смещении BAR.

Давайте возьмем пример устройства с выводом ниже:

03:00.0 Контроллер Ethernet: VMware VMXNET3 Ethernet Controller (rev 01)
Подсистема: VMware VMXNET3 Ethernet Controller
Физический слот: 160
Контроль: I/O + Mem + BusMaster + SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx +
Статус: Cap + 66MHz- UDF- FastB2B- ParErr- DEVSEL= быстро >TAbort- <TAbort- SERR- ../../../../автобус/pci/водители/vmxnet3
-rw-r — r—1 корень корень 4096 Октябрь 418: 01 driver_override
-rw-r — r—1 корень корень 4096 Октябрь 418:01 включить
lrwxrwxrwx 1 корень корень 0 Октябрь 418: 01 firmware_node -> ../../../LNXSYSTM: 00/LNXSYBUS: 00/PNP0A03: 00/устройство:89/устройство: 8а

-р — г — г—1 корень корень 4096 Октябрь 218:19 irq
-р — г — г—1 корень корень 4096 Октябрь 417:57 метка
-р — г — г—1 корень корень 4096 Октябрь 418: 01 local_cpulist
-р — г — г—1 корень корень 4096 Октябрь 418: 01 local_cpus
-р — г — г—1 корень корень 4096 Октябрь 418: 01 max_link_speed
-р — г — г—1 корень корень 4096 Октябрь 418: 01 max_link_width
-р — г — г—1 корень корень 4096 Октябрь 417:57 модалии
-rw-r — r—1 корень корень 4096 Октябрь 418: 01 msi_bus
drwxr-xr-x 2 корень корень 0 Октябрь 418: 01 msi_irqs
drwxr-xr-x 3 корень корень 0 Июл 22 06:53 сеть
-rw-r — r—1 корень корень 4096 Октябрь 417:57 numa_node
drwxr-xr-x 2 корень корень 0 Октябрь 418: 01 мощность
—w — w1 корень корень 4096 Октябрь 418: 01 удалить
—w — w1 корень корень 4096 Октябрь 418: 01 повторное сканирование
—w1 корень корень 4096 Октябрь 418: 01 сброс
-р — г — г—1 корень корень 4096 Октябрь 218:19 ресурс
-rw1 корень корень 4096 Октябрь 418: 01 ресурс0
-rw1 корень корень 4096 Октябрь 418: 01 ресурс1
-rw1 корень корень 8192 Октябрь 418: 01 ресурс2
-rw1 корень корень 16 Октябрь 418: 01 ресурс3
-р — г — г—1 корень корень 4096 Октябрь 418: 01 редакция
-rw1 корень корень 65536 Октябрь 418: 01 ром
lrwxrwxrwx 1 корень корень 0 Октябрь 418: 01 подсистема -> ../../../../автобус/pci
-р — г — г—1 корень корень 4096 Октябрь 418: 01 subsystem_device
-р — г — г—1 корень корень 4096 Октябрь 418: 01 subsystem_vendor
-rw-r — r—1 корень корень 4096 Октябрь 418: 01 событие
-р — г — г—1 корень корень 4096 Октябрь 218:19 продавец
сушилочка $

Присутствуют дополнительные файлы с именами resource [0-3]; это файлы, которые можно использовать для доступа к памяти, отображаемой в эти области. Например, для доступа к пространству 4K, отображенному в область 0, файл resource0 может быть отображен в пространство пользователя с помощью функции mmap (). После сопоставления region0 с пространством пользователя можно получить доступ к пространству 4K в соответствии с потребностями / требованиями.

Заключение:

Подсистема Linux PCI перечисляет и заполняет устройства PCI. Устройства lspci и setpci могут использоваться для получения информации об устройствах. Драйвер корневого комплекса Linux также предоставляет всю информацию об устройствах pci в файлах sysfs. Существует возможность сброса, повторного сканирования и удаления устройств из файлов sysfs. BIOS выполняет процесс перечисления, а драйвер Linux анализирует информацию и соответствующим образом заполняет всю информацию об устройстве. Этим продолжительным обсуждением давайте завершим эту тему.

Как изменить номер устройства PCI в windows



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

«Location : PCI bus 5, device 5, function 0»

но мой исходный код написан таким образом, что мне нужно иметь его в местоположении устройства 0 или 1, Чтобы правильно получить доступ к оборудованию.

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

Расположение: PCI шина 5, Устройство 0, функция 0»

Заранее благодарю вас!

pci
Поделиться Источник maxchirag     25 февраля 2012 в 06:08

1 ответ




1

Идеальным решением было бы изменить ваш код. Я вижу, что по какой-то причине (которую я не совсем понимаю) вам запрещено этого не делать.

Максимум, что может быть достигнуто в программном обеспечении, — это изменение шины no.s. Вы не можете изменить номер DEVICE или номер FUNCTION в программном обеспечении.

Поделиться Rohit Upadhyay     20 марта 2012 в 21:16


Похожие вопросы:


Как получить размер области PCI в Windows?

Мне нужно было сканировать мою шину PCI и получать информацию о конкретных устройствах от конкретных поставщиков. Моя цель — найти размер области PCI для видеокарты AMD, чтобы сопоставить память PCI…


Изменение IOaddress устройства PCI

Я хотел бы изменить IOaddress устройства PCI, записав новый (выровненный по странице) адрес в BAR0/1., когда я сделал это с помощью функции BIOS, я не смог получить доступ к устройству PCI по новому…


Удалить драйвер устройства PCI

Я хочу удалить драйвер устройства pci с компьютера с помощью кода c++. Я ищу то же самое действие, как щелчок правой кнопкой мыши на устройстве в диспетчере устройств и щелчок ‘Uninstall’. Я нашел…


Сопряжение драйвера устройства linux с фиктивным устройством PCI

У меня есть программа пользовательского пространства, которая имитирует устройство PCI. Я загрузил драйвер устройства nvme linux, который взаимодействует с устройством PCI, используя стандарт NVMe….


Определите, какие (если таковые имеются) устройства PCI подключены к слотам материнской платы PCI(e)

Я пишу программу в C# для выполнения аппаратного аудита на многих рабочих станциях Windows XP. Мне нужно определить, какие PCI устройств являются фактическими картами, подключенными через слот…


Копирование в память CUDA GPU с устройства PCI

Есть ли какой-либо способ записи в память устройства CUDA с устройства PCI? Это устройство PCI регистрирует данные с очень высокой скоростью. Поэтому, достигнув максимальной производительности, я…


Linux драйвер устройства PCI-Шина V. Kernel IRQ

Я пишу драйвер устройства для карты PCIe в Linux. Я пытаюсь использовать прерывания в своем драйвере. Чтение раздела IRQ Line регистра конфигурации PCI (смещение 0x3C) сообщает, что назначенная…


Что такое номер функции в PCI?

Я новичок в протоколе PCI и хотел бы знать, где хранится номер функции устройства? Это важно для меня, потому что я вставил объявление на настроенную карту в слот PCI моей системы windows. Карта…


Получить полный идентификатор экземпляра устройства в драйвере устройства Windows (WDF)

Я использую WDK 8.1 для настройки драйвера windows. Я хочу получить идентификатор экземпляра устройства в драйвере WDF/KMDF, который уникален для каждого устройства. OS : Windows 7 (x64 бит)…


Совместим ли PCI 3.0 с PCI 2.1?

Я обновляю свою плату cPCI до adlink-3970 (PCI 3.0). Машина загружается до windows, все драйверы установлены правильно, включая драйвер устройства my PCI 2.1 (это означает, что CPU смог прочитать…

Dell XPS 15 9520 (2022) vs Latitude 9420 (2-in-1): сравнение ноутбуков

63 из 100

VS

54 из 100

Выберите интересующие вас конфигурации ноутбуков для наиболее точного сравнения

Обзор

Оценка основных функций Dell XPS 15 9520 (2022) и Latitude 9420 (2-in-1) от 0 до 100

Производительность системы

Скорость работы системы и приложений

Производительность в играх

Возможности графики в популярных 3D-играх

Экран

Четкость, цветопередача, тип матрицы

Автономность

Потенциальная длительность работы от батареи

Коммуникации

Порты, веб-камера и другие интерфейсы

Корпус и дизайн

Внешний вид, материалы, прочность и удобство

Ключевые отличия

В чем основные преимущества каждого из ноутбуков

Причины выбрать Dell XPS 15 9520 (2022)

  • Видеокарта показывает в среднем на 140-191% больше FPS в играх
  • На 197% лучшая производительность в тесте Cinebench R23: 14751 vs 4966 баллов
  • Наличие 3-х современных портов USB Type-C (против 2-х у конкурента)
  • Комплектуется на 16 Вт*ч большей батареей (56 и 40 Вт*ч)
  • Более тонкие рамки – на 5% выше полезная площадь экрана
  • Возможность апгрейда оперативной памяти (до 64 ГБ) и SSD
  • Скоростной интерфейс PCI Express Gen 4

Причины выбрать Dell Latitude 9420 (2-in-1)

  • Есть популярный на текущий момент порт USB-A
  • Существенно легче – весит на 440 граммов меньше (1.4 и 1.84 кг)
  • Значительно компактнее – имеет на 16% меньшую площадь корпуса (668 и 792 см2)

Тесты и характеристики

Сравнительная таблица результатов тестов и технических характеристик

Вес 1.84 кг 1.4 кг
Размеры 344.4 x 230.1 x 18.5 мм 310.5 x 215.1 x 8.4-13.9 мм
Площадь 792 см2 668 см2
Соотношение экрана к корпусу ~89% ~85.1%
Боковые рамки 4.2 мм 4.5 мм
Цвета Черный, Серебристый Серебристый
Трансформер Нет Да
Угол открытия экрана 360°

Сравнение размеров

Система охлаждения
Тип охлаждения Активное Активное
Испарительная камера Нет
Количество куллеров 2 1
Уровень шума 41 дБ
Диагональ 15.6 дюймов 14 дюймов
Тип матрицы IPS LCD IPS LCD
Частота обновления 60 Гц 60 Гц
Плотность пикселей 145 точек на дюйм 162 точек на дюйм
Соотношение сторон 16:10 16:10
Разрешение 1920 x 1200 пикселей 1920 x 1200 пикселей
Сенсорный ввод Нет Нет
Покрытие Матовый Матовый
Тесты экрана
Контрастность 1650:1
Цветовой охват sRGB 100% 100%
Время отклика 35 мс 35 мс

Максимальная яркость

Напряжение 11.4 В 7.7 В
Тип аккумулятора Литий-ионный (Li-Ion) Литий-полимерный (Li-Po)
Съемный Нет Нет
Быстрая зарядка Да Да
USB Power Delivery Да Да
Расположение разъема для зарядки Слева, Справа Слева
Мощность зарядки 90 / 130 Вт 60 / 65 / 90 Вт
Вес зарядного устройства 346 граммов
Базовая частота 2.5 ГГц 0.9-2.4 ГГц
Частота в режиме Boost 4.5 ГГц 4.2 ГГц
Ядер 12 4
Потоков 16 8
L3-кэш 18 МБ 8 МБ
Интегрированная графика Intel Iris Xe Graphics G7 (80EU) Iris Xe Graphics G7 80EU
Техпроцесс 10 нм 10 нм

Бенчмарки

Geekbench 5 (одноядерный)

Geekbench 5 (многоядерный)

Cinebench R23 (одноядерный)

Cinebench R23 (многоядерный)

TGP 40 Вт 15 Вт
Тип графики Дискретная Интегрированная
Техпроцесс 8 нм 10 нм
Частота GPU 938 МГц 300 МГц
Boost частота GPU 1223 МГц 1100 МГц
FLOPS 5.01 терафлопс 1.41 терафлопс
Объем видеопамяти 4 ГБ System Shared
Тип памяти GDDR6 LPDDR4X
Ширина шины 128 бит
Скорость памяти 12 Гбит/с 4.27 Гбит/с
Шейдерные блоки 2048 640
Блоки текстурирования (TMUs) 64 40
Блоки операций растеризации (ROPs) 40 20

Производительность GPU

Оперативная память

Планки 1×8 ГБ 1×8 ГБ
Частота 4800 МГц 4266 МГц
Тип DDR5 LPDDR4X
Возможность замены Да Нет
Всего слотов 2 2
Макс. количество памяти 64 ГБ

Объем накопителя

Шина PCI-E Gen 4.0 (4x) PCI-E Gen 3.0 (4x)
Тип SSD (M2) SSD (M2)
Каналы 1×256 ГБ 1×128 ГБ
Возможность замены Да Да
Всего слотов 2 1
NVMe Да Да
Аудиочип Realtek ALC3281 Realtek ALC711-CG
Формат звука 2.2 4.0
Мощность динамиков 4x2W 4x2W
Dolby Atmos Нет
Макс. громкость 87 дБ
Микрофонов 2 4
Версия Wi-Fi v6 v6
Bluetooth v5.2 v5.2
Сканер отпечатков пальцев Да Опционально
Дисковод Нет Нет
Веб-камера Вверху экрана Вверху экрана
Разрешение веб-камеры 1280 x 720 1280 x 720
Порты
USB-A Нет 1x USB 3.2
USB Type-C 3x USB 3.2 2x USB 4.0
Thunderbolt Thunderbolt 4 Thunderbolt 4
HDMI Нет 1x HDMI 2.0
DisplayPort Нет Нет
VGA Нет Нет
Аудио порт (3.5 мм) Да Да
Ethernet (RJ45) Нет Нет
Кардридер Да Да
Отдельный порт для зарядки Нет Нет

Клавиатура и тачпад

Клавиатура
Тип клавиш Островной Островной
Цифровой блок Нет Нет
Подсветка Да Да
Тачпад
Размер 11.5 x 7.2 см
Поверхность Стекло
Windows Precision Да Да

*Обратите внимание! Порты, матрица дисплея, динамики и другие параметры могут отличаться в зависимости от конкретной конфигурации лэптопа или страны.

Опрос

Какому из этих ноутбуков вы бы отдали предпочтение?

Сравнения с конкурентами

Напишите ваше мнение о выборе между Dell Latitude 9420 (2-in-1) и XPS 15 9520 (2022) – истина рождается в обсуждении!

pci — универсальный драйвер шины PCI

Предоставлено: freebsd-manpages_12.2-1_all
 
ИМЯ
       pci  — универсальный драйвер шины PCI

 
ОБЗОР
     Чтобы скомпилировать драйвер шины PCI в ядро, поместите следующую строку в ядро
     Файл конфигурации:

             устройство   PCI 

     Для компиляции с поддержкой виртуализации ввода-вывода с одним корнем (SR-IOV):

             опции   PCI_IOV 

     Чтобы скомпилировать поддержку собственного PCI-express HotPlug:

             опции   PCI_HP 

 
ОПИСАНИЕ
     Драйвер  pci  обеспечивает поддержку устройств PCI в ядре и ограниченный доступ к PCI.
     устройства для пользователей.Драйвер  pci  предоставляет символьное устройство  /dev/pci , которое может использоваться пользовательскими программами для
     чтение и запись регистров конфигурации PCI. Программы также могут использовать это устройство для получения списка
     всех устройств PCI или всех устройств PCI, соответствующих различным шаблонам.

     Поскольку драйвер  pci  предоставляет интерфейс записи для регистров конфигурации PCI, система
     администраторам следует проявлять осторожность при предоставлении доступа к устройству  pci .Если используется
     ненадлежащим образом этот драйвер может позволить пользовательским приложениям привести к сбою машины или
     потеря.

     Драйвер  pci  реализует шину PCI в ядре. Он перечисляет любые устройства на PCI
     bus и дает драйверам клиента PCI возможность подключиться к ним. Он распределяет ресурсы на
     дети, когда биоса нет. Он заботится о маршрутизации прерываний, когда это необходимо. Это
     повторно исследует неприсоединенные дочерние элементы PCI, когда клиентские драйверы PCI динамически загружаются в
     время выполнения.Драйвер  pci  также включает поддержку мостов PCI-PCI, различных платформ.
     специальные мосты Host-PCI и базовая поддержка адаптеров PCI VGA.

 
IOCTLS
     Следующие вызовы ioctl(2) поддерживаются драйвером  pci . Они определены в
     заголовочный файл <  sys/pciio.h  >.

     PCIOCGETCONF Этот ioctl(2) принимает структуру  pci_conf_io . Он позволяет пользователю
                      получить информацию обо всех устройствах PCI в системе или об устройствах PCI
                      сопоставление шаблонов, предоставленных пользователем.Вызов может установить  errno  на любой
                      значение, указанное либо в copyin(9), либо в copyout(9).  pci_conf_io 
                      структура состоит из ряда полей:

                      pat_buf_len Длина в байтах буфера, заполненного пользователем.
                                     поставляемые узоры.

                      num_patterns Количество пользовательских шаблонов.

                      Patterns Указатель на буфер, заполненный пользовательскими шаблонами. шаблонов  является указателем на  num_patterns   pci_match_conf 
                                     структуры. Структура  pci_match_conf  состоит из
                                     следующие элементы:

                                     pc_sel Домен PCI, шина, слот и функция.

                                     pd_name Имя драйвера устройства PCI.

                                     pd_unit Номер модуля драйвера устройства PCI.pc_vendor Идентификатор поставщика PCI.

                                     pc_device Идентификатор устройства PCI.

                                     pc_class Класс устройства PCI.

                                     flags Флаги описывают, какое из полей ядро
                                                должно соответствовать. Устройство должно соответствовать всем
                                                указанные поля для возврата.
                                                флаги совпадения перечислены в
                                                  pci_getconf_flags  структура.Надеюсь, флаг
                                                значения достаточно очевидны, что они не нужны
                                                подробно описать.

                      match_buf_len Длина буфера  совпадений , выделенного пользователем для хранения
                                     результаты запроса PCIOCGETCONF.

                      num_matches Количество совпадений, возвращенных ядром.

                      Matches Буфер, содержащий совпадающие устройства, возвращаемые ядром.Элементы в этом буфере имеют тип  pci_conf  , который
                                     состоит из следующих пунктов:

                                     pc_sel Домен PCI, шина, слот и функция.

                                     pc_hdr Тип заголовка PCI.

                                     pc_subvendor Идентификатор поставщика PCI.

                                     pc_subdevice Идентификатор подустройства PCI.

                                     pc_vendor Идентификатор поставщика PCI.pc_device Идентификатор устройства PCI.

                                     pc_class Класс устройства PCI.

                                     pc_subclass Подкласс устройства PCI.

                                     pc_progif Интерфейс программирования устройств PCI.

                                     pc_revid Идентификатор версии PCI.

                                     pd_name Имя драйвера.

                                     pd_unit Номер драйвера.offset Смещение передается пользователем, чтобы сообщить ядру, где
                                     он должен начать обход списка устройств. Значение
                                     переданный ядром, указывает на запись немедленно
                                     после возвращения последнего. Пользователь может передать значение
                                     возвращаемый ядром при последующих обращениях к
                                     PCIOCGETCONF ioctl.Если пользователь не намерен использовать
                                     смещение, оно должно быть установлено равным нулю.

                      генерация генерация конфигурации PCI. Это значение должно быть только
                                     установить, если установлено смещение. Ядро будет сравнивать
                                     текущий номер поколения своего внутреннего списка устройств в
                                     генерация, переданная пользователем, чтобы определить, является ли его
                                     список устройств изменился с тех пор, как пользователь в последний раз вызывал
                                     PCIOCGETCONF ioctl.Если список устройств изменился,
                                     статус  PCI_GETCONF_LIST_CHANGED  будет передан обратно.

                      статус Статус сообщает пользователю о расположении его запроса на
                                     список устройств. Возможные значения состояния:

                                     PCI_GETCONF_LAST_DEVICE
                                     Это означает, что в устройстве PCI больше нет устройств.
                                     список, соответствующий указанным критериям после возвращенных
                                     в буфере  соответствует .PCI_GETCONF_LIST_CHANGED
                                     Этот статус сообщает пользователю, что список устройств PCI
                                     изменилось с момента его последнего вызова ioctl PCIOCGETCONF, и он
                                     необходимо сбросить  смещение  и  генерации  на ноль, чтобы начать заново
                                     в начале списка.

                                     PCI_GETCONF_MORE_DEVS
                                     Это сообщает пользователю, что его буфер недостаточно велик для
                                     удерживайте все оставшиеся устройства в списке устройств, которые
                                     соответствуют его критериям.PCI_GETCONF_ERROR
                                     Это указывает на общую ошибку при обслуживании пользовательского
                                     запрос. Если  pat_buf_len  не равно  num_patterns 
                                     раз  sizeof  (  struct   pci_match_conf  ),  errno  будет установлено значение
                                     ЭИНВАЛ.

     PCIOCREAD Этот ioctl(2) считывает регистры конфигурации PCI, указанные
                      передана структура  pci_io .Структура  pci_io  состоит из следующих
                      поля:

                      pi_sel Структура  pcisel , определяющая домен, шину, слот и
                                функция, которую пользователь хотел бы запросить. Если конкретный автобус
                                не найдено, errno будет установлено в ENODEV и -1 будет возвращено из
                                иоктл.

                      pi_reg Регистры конфигурации PCI, к которым пользователь хотел бы получить доступ.pi_width Ширина в байтах данных, которые пользователь хотел бы прочитать.
                                Это значение может быть 1, 2 или 4. 3-байтовые чтения и чтения
                                больше 4 байт не поддерживаются. Если указана недопустимая ширина
                                передано, errno будет установлено в EINVAL.

                      pi_data Данные, возвращаемые ядром.

     PCIOCWRITE Этот ioctl(2) позволяет пользователям записывать в регистры конфигурации PCI.
                      указанный в переданной структуре  pci_io .Структура  pci_io 
                      описано выше. Ограничения по ширине данных, описанные для чтения
                      регистры, указанные выше, также применяются для записи регистров конфигурации PCI.

     PCIOCATTACHED Этот ioctl(2) позволяет пользователям запрашивать, подключен ли драйвер к PCI.
                      устройство, указанное в переданной структуре  pci_io . Структура  pci_io 
                      описан выше, однако поля  pi_reg  и  pi_width  не используются.Статус устройства хранится в поле  pi_data . Значение 0
                      указывает, что драйвер не подключен, а значение больше 0 означает, что
                      прилагается драйвер.

     PCIOCBARMMAP Эта команда ioctl(2) позволяет процессам пользовательского пространства выполнять mmap(2)
                      сопоставил PCI BAR со своим адресным пространством. Входные параметры и результаты
                      передаются в структуре  pci_bar_mmap , которая имеет следующие поля:

                        uint64_t   pbm_map_base 
                                Сообщает об установленной базе сопоставления вызывающей стороне.Если
                                  Был указан флаг PCIIO_BAR_MMAP_FIXED , то это поле должно быть
                                заполняется перед звонком желаемым адресом для сопоставления.

                        uint64_t   pbm_map_length 
                                Сообщает отображаемую длину BAR в байтах. Его .Vt uint64_t
                                значение всегда кратно машинным страницам.

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

                        struct   pcisel   pbm_sel 
                                Должен быть заполнен до звонка. Описывает устройство для
                                работать на.

                        целое число   pbm_reg 
                                Индекс BAR для mmap. интервал   pbm_flags 
                                Флаги, которые дополняют операцию. Смотри ниже.

                        интервал   pbm_memattr 
                                Атрибут кэширования для сопоставления. Типичные значения
                                VM_MEMATTR_UNCACHEABLE для управляющих регистров BAR и
                                VM_MEMATTR_WRITE_COMBINING для кадровых буферов. Обычная память-
                                например, BAR должен быть сопоставлен с атрибутом VM_MEMATTR_DEFAULT.Текущие определенные флаги:

                      PCIIO_BAR_MMAP_FIXED Результирующие сопоставления должны быть установлены на
                                               адрес, указанный членом  pbm_map_base ,
                                               иначе не получится.

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

                      PCIIO_BAR_MMAP_ACTIVATE (не реализовано) Если BAR не активирован,
                                               активировать его в процессе отображения.В настоящее время
                                               попытка mmap неактивного BAR приводит к ошибке.

 
ПОГРУЗЧИК НАСТРОЙКИ
     Настройки могут быть установлены в приглашении loader(8) перед загрузкой ядра или сохранены в
     загрузчик.conf(5). Текущее значение этих настраиваемых параметров можно проверить во время выполнения с помощью
     sysctl(8) узлов с тем же именем. Если не указано иное, каждый из этих настраиваемых параметров является
     логическое значение, которое можно включить, установив для параметра tunable ненулевое значение. hw.pci.clear_bars  (по умолчанию 0)
             Игнорируйте любую назначенную прошивкой память и ресурсы порта ввода-вывода. Это заставляет шину PCI
             Драйвер для выделения диапазонов ресурсов памяти и портов ввода-вывода с нуля.

       hw.pci.clear_buses  (по умолчанию 0)
             Игнорируйте любые регистры номера шины, назначенные прошивкой, в мостах PCI-PCI. Это заставляет
             драйвер шины PCI и драйвер моста PCI-PCI для выделения номеров шин для вторичных
             шины за мостами PCI-PCI. hw.pci.clear_pcib  (по умолчанию 0)
             Игнорировать любую назначенную прошивкой память и окна ресурсов порта ввода-вывода в PCI-PCI.
             мосты. Это заставляет драйвер моста PCI-PCI выделять память и порт ввода-вывода.
             ресурсы для окон ресурсов с нуля.

             По умолчанию драйвер моста PCI-PCI выделяет окна, содержащие
             аппаратно-программно-назначенные ресурсы устройств за мостом. Кроме того, PCI-PCI
             Драйвер моста будет выделять из существующих оконных областей, когда это возможно, чтобы удовлетворить
             запрос ресурса.В результате оба  hw.pci.clear_pcib  и  hw.pci.clear_pcib  должны
             быть включено, чтобы полностью игнорировать назначения ресурсов, предоставленные микропрограммой.

       hw.pci.default_vgapci_unit  (по умолчанию -1)
             По умолчанию первый адаптер PCI VGA, обнаруженный системой, считается первым.
             устройство отображения загрузки. Этот настраиваемый параметр можно настроить для выбора конкретного адаптера VGA.
             указав номер устройства связанного устройства  vgapciX . hw.pci.do_power_nodriver  (по умолчанию 0)
             Переводите устройства в состояние пониженного энергопотребления (D3), если не установлен подходящий драйвер устройства.
             найденный. Может быть установлено одно из следующих значений:

             3 Отключает все устройства PCI без драйвера устройства.

             2 Отключает питание большинства устройств без драйвера устройства. PCI-устройства с
                     дисплей, память и базовые классы периферийных устройств не выключаются.

             1 Аналогичен параметру 2, за исключением того, что контроллеры
                     питание выключено.0 Все устройства остаются полностью включенными.

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

       hw.pci.do_power_resume  (по умолчанию 1)
             Переведите устройства PCI в состояние полного питания при возобновлении работы системы или
             индивидуальное устройство. Не рекомендуется устанавливать это значение равным нулю, так как система не будет
             попытаться включить непитанные устройства PCI после приостановки. hw.pci.do_power_suspend  (по умолчанию 1)
             Переводите PCI-устройства в режим пониженного энергопотребления при приостановке работы системы или
             отдельные устройства. Обычно состояние D3 используется как состояние низкого энергопотребления, но
             прошивка может переопределить желаемое состояние питания во время приостановки системы.

       hw.pci.enable_ari  (по умолчанию 1)
             Включите поддержку альтернативной интерпретации RID PCI-express. Это часто используется
             совместно с SR-IOV. hw.pci.enable_io_modes  (по умолчанию 1)
             Включите декодирование памяти или порта ввода-вывода в регистре команд устройства PCI, если оно
             память, назначенная микропрограммой, или ресурсы порта ввода-вывода. Прошивка (BIOS) в некоторых системах
             не включает декодирование памяти или порта ввода-вывода для некоторых устройств, даже если он
             назначенные ресурсы устройству. Это позволяет декодировать такие ресурсы во время
             автобусный зонд.

       hw.pci.enable_msi  (по умолчанию 1)
             Включите поддержку прерываний, сигнализируемых сообщениями (MSI).Прерывания MSI могут быть
             отключено установкой этого настраиваемого значения в 0.

       hw.pci.enable_msix  (по умолчанию 1)
             Включите поддержку расширенных прерываний, сигнализируемых сообщениями (MSI-X). Прерывания MSI-X
             можно отключить, установив для этого параметра значение 0.

       hw.pci.enable_pcie_hp  (по умолчанию 1)
             Включите поддержку собственного PCI-express HotPlug.

       hw.pci.honor_msi_blacklist  (по умолчанию 1)
             Прерывания MSI и MSI-X отключены для некоторых наборов микросхем, которые, как известно, не работают с MSI.
             и реализации MSI-X, когда этот настраиваемый параметр установлен.Его можно установить равным нулю, чтобы разрешить
             использование прерываний MSI и MSI-X, если совпадение набора микросхем является ложным срабатыванием.

       hw.pci.iov_max_config  (по умолчанию 1 МБ)
             Максимальный объем памяти, разрешенный для параметров конфигурации, используемых при
             создание виртуальных функций через SR-IOV. Этот настраиваемый параметр также можно изменить во время выполнения.
             через sysctl(8).

       hw.pci.realloc_bars  (по умолчанию 0)
             Попытаться выделить новый диапазон ресурсов во время начального сканирования устройства для любого
             ресурсы памяти или портов ввода-вывода с назначенными микропрограммой диапазонами, которые конфликтуют с
             другой активный ресурс. hw.pci.usb_early_takeover  (по умолчанию 1 на amd64 и i386)
             Отключите эмуляцию устаревших устройств USB-устройств во время первоначального сканирования устройства. Набор
             это настраивается на ноль, чтобы использовать USB-устройства через устаревшую эмуляцию при использовании пользовательского
             ядро без драйверов контроллера USB.

       hw.pci...INT

.irq Эти настраиваемые параметры можно использовать для переопределения маршрутизации прерываний для устаревшего PCI INTx. прерывает.В отличие от других настраиваемых параметров в этом списке, у них нет соответствующих sysctl-узлы. Настраиваемое имя включает адрес устройства PCI, а также контакт желаемого INTx IRQ для переопределения: Домен (или сегмент) устройства PCI в десятичном формате. Адрес шины устройства PCI в десятичном формате. Слот устройства PCI в десятичном формате.

Контакт прерывания слота PCI для переопределения.Один из вариантов «А», «В», «С» или «Д». Значение настраиваемого параметра — это необработанное значение IRQ, используемое для вывода прерывания INTx. определяется настраиваемым именем. Сопоставление значений IRQ с источниками прерываний платформы зависит от машины.

УСТРОЙСТВО ПРОВОДКА
     Вы можете подключить блок устройства в заданном месте с помощью device.hints. Записи формы
       подсказок...at="pci::"  или  подсказок...at="pci:::"  будет
     заставить драйвер  с именем  исследовать и подключить к устройству  устройство  для любого обнаруженного устройства PCI, соответствующего
     спецификация, где:

      Домен (или сегмент) устройства PCI в десятичном формате. По умолчанию 0, если не указано

      Адрес шины устройства PCI в десятичном формате.

      Слот устройства PCI в десятичном формате.

      Функция устройства PCI в десятичном формате.Код для сопоставления требует точного совпадения строк. Не указывать угол
     скобки (< >) в файле подсказок. Подключение нескольких устройств к одному и тому же  имени  и устройству  
     дает неопределенные результаты.

     Примеры 
     Учитывая следующие строки в  /boot/device.hints :  hint.nvme.3.at="pci6:0:0" 
       hint.igb.8.at="pci14:0:0"  Если есть устройство, поддерживающее igb(4) на шине PCI 14 слот 0
     function 0, тогда ему будет назначен igb8 для зонда и подключения.Аналогично, если есть
     Карта nvme(4) на шине PCI 6, слот 0, функция 0, тогда ей будет назначен nvme3 для зонда и
     прикреплять. Если в любом из этих мест находится карта другого типа, имя и единица измерения этого
     card будут именами по умолчанию, и эти подсказки не повлияют на них. Если другой igb или nvme
     карты расположены в другом месте, им будут присвоены их номера юнитов последовательно, пропуская
     номера юнитов с подсказками "at".

 
ФАЙЛЫ
     /dev/pci Символьное устройство для драйвера  pci .
СМ. ТАКЖЕ
     PCI-конф(8)

 
ИСТОРИЯ
     Драйвер  pci  (не код поддержки PCI ядра) впервые появился в FreeBSD 2.2 и был
     написано Стефаном Эссером и Гарретом Воллманом. Поддержка списка устройств и сопоставления была
     повторно реализован Кеннетом Мерри и впервые появился в FreeBSD 3.0.

 
АВТОРЫ
     Кеннет Мерри <  [email protected]орг  >

 
ОШИБКИ
     Пользователи не могут указать точное смещение в списке устройств без
     вызывая PCIOCGETCONF по крайней мере один раз, так как у них нет возможности узнать текущую
     номер поколения в противном случае. Это, вероятно, не является серьезной проблемой, поскольку пользователи
     могут легко сузить свой поиск, указав шаблон или шаблоны для сопоставления ядра
     против.
 

3DPChip.com [ Перевод ] — PCI 10DE039300000000030000 Видеоконтроллер (VGA-совместимый) Видеоконтроллер (VGA-совместимый) Шина PCI 1, устройство 0, функция 0 Неизвестно , Устройство 0, Функция 0 Неизвестный


PCI 10C8136813610EC020000 Ethernet Controller Ethernet контроллер PCI шина 2, устройство 0, функция 0 Unnown
PCI 8086244E00000000060401 Bridge Intel Intel (R) 82801 PCI Bridge — 244e шина PCI 0, устройство 30, функция 0 System
PCI 808627700000000006000000 (Стандартные системные устройства) Стандартный мост центрального процессора PCI Шина PCI 0, устройство 0, функция 0 Система
PCI 8086277100000000060400 (Стандартные системные устройства) Стандартный PCI мост PCI-to-PCI Шина PCI 0, устройство 1, функция 0 Система
PCI 808627B800000000060100 ( Стандартные системные устройства) PCI стандарт ISA мост Шина PCI 0, устройство 31, функция 0 Система
PCI 808627C027C08086010180 (стандартные контроллеры IDE ATA/ATAPI) Стандарт Двойной Канал PCI IDE Controller Шина PCI 0, устройство 31, функция 2 hdc
PCI 808627C827C880860C0300 (Стандартный хост-контроллер USB) Стандарт Универсальный хост-контроллер PCI-USB Шина PCI 0, устройство 29, функция 0 USB
PCI 808627C927C980860C0300 (Стандартный хост-контроллер USB) Стандарт Универсальный хост-контроллер PCI-USB Шина PCI 0, устройство 29, функция 1 USB
PCI 808627CA27CA80860C0300 (Стандартный хост-контроллер USB) Стандартный хост-контроллер Universal PCI-USB Шина 0 PCI, устройство 29, функция 2 USB
PCI 808627CB27CB80860C0300 (Стандартный хост-контроллер USB) ) Стандартный универсальный хост-контроллер PCI-USB Шина PCI 0, устройство 29, функция 3 USB
PCI 808627CC27CC80860C0320 (стандартный хост-контроллер USB) Стандартный расширенный хост-контроллер PCI-USB Шина PCI 0, устройство 29, функция 7 USB
PCI 808627D000000000060400 (стандартная система) устройства) Стандарт PCI Мост PCI-to-PCI Шина PCI 0, устройство 28, функция 0 Система
PCI 808627DA27DA80860C0500 Контроллер шины SM Контроллер шины SM PCI шина 0, устройство 31, функция 3 Неизвестно
PCI 808627DE00000000040100 Мультимедийный аудиоконтроллер Мультимедийный аудиоконтроллер Шина PCI 0, устройство 30, функция 2 Неизвестно
USB 808627CB (стандартный хост-контроллер USB) Корневой концентратор USB (стандартный хост-контроллер USB) USB
USB 808627CA (Стандартный хост-контроллер USB) Корневой концентратор USB (Стандартный хост-контроллер USB) USB
USB 808627C9 (Стандартный хост-контроллер USB) Корневой концентратор USB (Стандартный хост-контроллер USB) USB
USB 808627C8 (Стандартный хост-контроллер USB) Корневой концентратор USB (Стандартный USB-контроллер) Хост-контроллер) USB
USB 808627CC (Стандартный хост-контроллер USB) Корневой концентратор USB (Стандартный хост-контроллер USB) USB
USB 09511643 Совместимое запоминающее устройство USB USB Запоминающее устройство большой емкости DataTraveler G3 USB
USB 1C4F0003 (Стандартные системные устройства) USB Устройство пользовательского интерфейса U +P Мышь HIDClass
USBSTOR (Стандартные дисководы) Дисковод (Стандартные дисководы) DiskDrive

Материнская плата: ( http://3dpchip.com/3dp/chip12.php?driver=feedback)
Ethernet-карта: Realtek RTL8101E/8102E/8103E Gigabit Ethernet (http://3dpchip.com/3dp/chip.php?driver=dp_net)

Память: 2,00 ГБ

ОС: Windows XP Professional SP2 32-разрядная

3DP Net (http://www.3dpchip.com) — Net Ver.121118

Назад Следующий
Видеть
  Обычный PCI
  PCI/PCI-е
  Конфигурационное пространство PCI

PCI - опубликован первоначальный дизайн 1992 года. Межкомпонентное соединение периферийных устройств
  Обычный PCI
    Создание Intel - в настоящее время контролируется
      Специальная группа по взаимодействию периферийных компонентов, PCI-SIG

  Предназначен для использования в качестве локальной шины, не зависящей от ЦП.С правильным чипом контроллера,
    PCI становится частью локальной/внешней шины ЦП.

  Микросхема контроллера между локальной/фронтальной шиной ЦП и шиной PCI.
    Intel и AMD производят наборы микросхем для каждого из своих процессоров.

    Современные процессоры часто имеют контроллер PCI, реализованный на кристалле процессора.

    Достаточно быстрые устройства подключаются к шине PCI.

    Второй чип соединяет PCI с шиной ISA или другими более медленными интерфейсами ввода/вывода.

  Развивался в течение 10 лет.

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

  Он назначает адреса памяти (порты) каждому найденному устройству и координаты
    эту информацию с ОС и драйверами устройств.

  Затем он действует как декодер памяти, когда система обращается к любому устройству.
    привязан к автобусу.

Физический

  Порты расширения:
    

    Оригинальный дизайн - 5 вольт.

    Современные системы обычно проектируются только с поддержкой 3,3 В.

    Универсальные системы PCI поддерживают оба в одном и том же интерфейсе.

    Слоты должны быть снабжены ключами, чтобы можно было вставлять только правильные карты.32 бит x 33 МГц ~ 133 МБ/с в пакетном режиме.
      Версия с более высокой производительностью доступна в серверной среде.
      32 бит x 66 МГц
      64 бит x 33 МГц
      64 бит x 66 МГц
      * Кроме того, более высокая пропускная способность для «устройств», напрямую связанных с
        контроллер (не использующий физический порт расширения)

    62 х 2-контактный разъем. 2 или 4 потеряны для ключевых слотов.
      32-битный адрес/данные - мультиплексированные.
         Также может работать как с отображением памяти, так и с отображением ввода-вывода.
         Невозврат к нулю (аналогично системной шине).Несимметричная сигнализация, отраженная волна.

      4 прерывания.
        Распределены по кругу в каждом слоте расширения.
          IRQA, слот 1 становится IRQB, слот 2 становится IRQC, слот 3 и т. д.
          Устройство может использовать более одного IRQ, но A является первым выбором.

        В более поздних версиях (PCI 2.2) прерывания реализованы как
          прерывание, сигнализируемое сообщением (MSI).
        
        MSI — это запись в память по выделенным адресам памяти, установленным
        система (ОС) для обнаружения прерываний.
          Программный эквивалент программируемого таймера прерывания.- Немного увеличено время отклика.
        + Прерывания не распределяются между устройствами.
        + MSI макс. 32 прерывания, MSI+ до 2048.

    4 линии включения команд/байтов (C/BE).
      Используется в сочетании с !FRAME для выбора адреса или режима данных.
      В адресном режиме 4-битная команда, сигнализирующая о типе и направлении
        передача данных или другая команда.
      В режиме данных маскирует, какие байты использовать при передаче данных.

    Линия часов.

    26 мощность (+3,3, +/-5, +/-12) 27 Земля

    Различные строки управления/статуса.GNT (грант), REQ (запрос)
        - используется для арбитража.
         Каждое устройство/слот имеет свою пару.
         Сигнализирует контроллер PCI, который, в свою очередь, взаимодействует с системой.

      !FRAME (начало кадра), IRDY (инициатор готов)
        - используется для инициирования транзакций.
  
      DEVSEL (выбор устройства), TRDY (цель готова), STOP
        - используется устройствами для обновления статуса.

      Линии управления/состояния активны, низкий уровень.

    К шине PCI можно подключить только 4 устройства, но шины PCI могут быть
      маргаритка прикована.* Контроллер может управлять 256 отдельными шинами.

    Распиновка: http://www.interfacebus.com/Design_PCI_Pinout.html

  Современные системы предоставляют один слот PCI.
    Несколько портов PCIe теперь являются стандартом.
    PCIe рассматривает каждое подключение устройства или порт расширения как отдельную шину.

  Исторически сложилось так, что большинство систем поддерживают 1 или 2 (мостовые) шины расширения PCI.
    Каждая шина способна обрабатывать 4 карты (ограничение 4 прерываний?)

    Дополнительные шины, реализованные непосредственно на материнской плате для интерфейса
      с логикой, такой как встроенный видеоконтроллер.Требуется мост PCI-PCI для добавления дополнительных элементов. (гирляндная цепочка)
    Мостовая секция рассматривается как отдельная шина.

  Прямой внутренний (на материнской плате) интерфейс устройства обычно назначается
    автобус 0.

  Многие встроенные устройства/функции напрямую подключены к шине PCI 0.
    Может работать быстрее, чем 33,33 МГц. - 32 адресуемых устройства на шину.

  Подключи и работай — с поддержкой контроллера PCI, системного BIOS и ОС, PCI
    карты автоматически настраиваются при включении питания.

  PCI распознает 3 адресных пространства.
    Основная память - сопоставляет выбранные блоки основной памяти с «владением» определенного
      PCI-устройство.При обращении драйверов контроллер PCI действует как декодер.
      для назначенных блоков памяти.

    Память ввода-вывода — сопоставляет системные порты ввода-вывода с устройством. Обычно не используется на ПК
      Окружающая среда.

    256-байтовая память конфигурации, используемая для обнаружения/инициализации и устройств
      взаимодействие с шиной PCI.
  
      Устройствам назначаются адреса, прерывания и различные блоки памяти для
        как управление, так и передача данных.
  
      Устройство может иметь до 6 адресуемых блоков «основной» памяти или ввода/вывода.

  Конфигурация Plug and Play.ЦП/ОС должен получить доступ к памяти конфигурации для завершения PNP.
      реализация, т.е. отметить/решить, как память/прерывания/DMA для PCI
      устройства выделяются и т.д.

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

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

    Использует 16-битную структуру адреса:
      8-битный идентификатор пространства конфигурации (шина) — 256 отдельных шин.
      5-битный идентификатор устройства — 32 устройства.
      3-битный идентификатор функции (BDF) — до 8 адресуемых функций на устройство.Когда появляется система 1st, она запрашивает «перечисление»
      Шина PCI — она запрашивает контроллер PCI, чтобы узнать, что подключено.

      Карты PCI содержат информацию, которая позволяет системе правильно взаимодействовать
        им. Функция 0 любого устройства должна существовать и возвращать
        идентификаторы устройства и поставщика при обращении контроллера.

      Карты PCI могут содержать исполняемый код, который активирует их перед запуском операционной системы.
        и драйверы программного обеспечения загружены.

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

      Если устройство подключено, функция 0 вернет информацию и
        контроллер будет согласовывать начальные диапазоны памяти @
        или порты ввода/вывода на системной шине.

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

    PCI использует мультиплексирование для оптимизации использования выводов на картах.Он использует тот же
      контакты для адреса, данных и управления конкретным устройством.

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

  *******

  Обычный PCI использует 32-битный набор строк адреса/данных и 4-битную команду/маску.
    набор строк, указывающий место в памяти, конкретный адрес и направление
    транзакция и тип транзакции.

  Обычный PCI использует связь на основе транзакций.

  Выдается команда с указанием типа выполняемой транзакции,
    Чтение, запись, пакетное чтение или запись, прерывание с сигналом сообщения и т. д.Дополнительная информация, применяемая к строкам данных.
  
  За этим может следовать серия передач данных (от 0 до многих).

  Инициатор или цель в конечном итоге завершает транзакцию для различных
    причины.

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

  Передача данных

 

адресов PCI в доменном XML и гостевой ОС

Глядя на конфигурацию для гостя, было бы разумно ожидать, что каждое устройство PCI будет отображаться в гостевой ОС с адрес PCI, который совпадает с адресом, присутствующим в соответствующем элемент

доменного XML, но это не гарантируется произойти и не будет на самом деле во всех случаях, кроме простейших сценарии.

Если топология PCI виртуальной машины очень проста, адреса PCI обычно совпадает.

Например, фрагмент XML домена

 <тип контроллера='pci' индекс='0' модель='pcie-root'/>

  <название модели='pcie-root-port'/>
  <целевое шасси='1' порт='0x8'/>
  <тип адреса='pci' домен='0x0000' шина='0x00' слот='0x01' функция='0x0'/>

<тип интерфейса='сеть'>
  <исходная сеть='по умолчанию'/>
  <тип модели='virtio'/>
  <тип адреса='pci' домен='0x0000' шина='0x01' слот='0x00' функция='0x0'/>
 

приведет к топологии PCI

 0000:00:00.0 Хост-мост: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
0000:00:01.0 Мост PCI: Red Hat, Inc. QEMU Корневой порт PCIe
0000:01:00.0 Контроллер Ethernet: сетевое устройство Red Hat, Inc. Virtio (версия 01) 

отображается в гостевой ОС.

Адрес PCI адаптера virtio-net, 0000:01:00.0, одинаково в обоих случаях, так что путаницы нет.

В более сложных случаях адрес PCI, видимый в доменном XML, будет коррелировать с тем, что видит гостевая ОС, менее очевидным образом.

Это довольно необычное устройство, которое можно использовать с x86_64/q35. гостей, поможет проиллюстрировать один из таких сценариев.

Например, фрагмент XML домена

 <тип контроллера='pci' индекс='0' модель='pcie-root'/>

  <имя модели='pxb-pcie'/>
  <целевой номер шины='254'/>
  <тип адреса='pci' домен='0x0000' шина='0x00' слот='0x01' функция='0x0'/>


  <название модели='pcie-root-port'/>
  <целевое шасси='2' порт='0x0'/>
  <тип адреса='pci' домен='0x0000' шина='0x01' слот='0x00' функция='0x0'/>

<тип интерфейса='сеть'>
  <исходная сеть='по умолчанию'/>
  <тип модели='virtio'/>
  

приведет к топологии PCI

 0000:00:00.0 Хост-мост: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
0000:00:01.0 Хост-мост: Red Hat, Inc. QEMU PCIe Expander bridge
0000:fe:00.0 Мост PCI: Red Hat, Inc. QEMU Корневой порт PCIe
0000:ff:00.0 Контроллер Ethernet: сетевое устройство Red Hat, Inc. Virtio (версия 01) 

отображается в гостевой ОС.

На этот раз адреса не совпадают: это связано с тем, что busNr свойство контроллера шины pcie-expander-bus заставляет его показывать как шина 254 (0xfe в шестнадцатеричном формате) вместо шины 1, как можно было бы ожидать на основе его свойства индекса.

Как тогда вообще может работать доменный XML, показанный выше? Наверняка контроллер pcie-root-port и адаптер virtio-net должны используйте bus=0xfe и bus=0xff соответственно для конфигурации быть принятым libvirt?

Как оказалось, это не так. Причина этого в том, что QEMU и, следовательно, libvirt используют свойство шины адрес PCI устройства только для того, чтобы сопоставить его с контроллером PCI, который имеет такое же свойство индекса, и не устанавливать фактический PCI адрес, который определяется гостевой ОС.

Итак, взглянув на приведенный выше фрагмент XML, мы видим, что адаптер virtio-net подключается к контроллеру pcie-root-port, который подключается к контроллеру шины pcie-expander, который подключается в pcie-root: гостевая ОС видит ту же топологию, но назначает различные адреса PCI для некоторых его компонентов.

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

Это устройство, уникальное для гостей ppc64/pseries, поможет проиллюстрировать другой сценарий.

Например, фрагмент XML домена

 <тип контроллера='pci' индекс='0' модель='pci-root'>
   <имя модели='spapr-pci-host-bridge'/>
   <целевой индекс='0'/>
 
 <тип контроллера='pci' index='1' модель='pci-root'>
   <имя модели='spapr-pci-host-bridge'/>
   <целевой индекс='1'/>
 
 <тип интерфейса='сеть'>
   <исходная сеть='по умолчанию'/>
   <тип модели='virtio'/>
   <тип адреса='pci' домен='0x0000' шина='0x01' слот='0x01' функция='0x0'/>
  

приведет к топологии PCI

 0001:00:01.0 Контроллер Ethernet: сетевое устройство Red Hat, Inc. Virtio 

отображается в гостевой ОС. Обратите внимание, что два Контроллеры spapr-pci-host-bridge не указаны.

На этот раз, в дополнение к тому, что шина не совпадает, как в предыдущий пример, интересно то, что домен не совпадают: это потому, что каждый spapr-pci-host-bridge контроллер создает отдельный домен PCI.

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

Для машин s390x адреса PCI обрабатываются по-другому. Нет информация о топологии передается по адресам PCI; вместо этого Элементы fid и uid устройства zpci передают информацию. В простейшем случае следующий фрагмент XML

 <тип контроллера='pci' индекс='0' модель='pci-root'/>
<тип контроллера='pci' index='1' модель='pci-bridge'>
  <название модели='pci-мост'/>
  <целевое шассиNr='1'/>
  <тип адреса='pci' домен='0x0000' шина='0x00' слот='0x01' функция='0x0'>
    
  

<тип интерфейса='мост'>
  <исходный мост='virbr0'/>
  <тип модели='virtio'/>
  

приведет к следующему в гостевой системе Linux:

 0007:00:00.0 Контроллер Ethernet: сетевое устройство Red Hat, Inc. Virtio 

Обратите внимание, что мост PCI не виден в гостевой системе; у s390x всегда плоская топология. Адрес PCI в гостевой системе генерируется из информации предоставляется через элемент zpci: более конкретно, uid используется в качестве PCI-домен. fid не отображается в самом адресе PCI, но будет используется в sysfs (/sys/bus/pci/slots/$fid/…).

Любые изменения адреса PCI не видны в гостевой системе; замена PCI адрес для устройства virtio-net с

 <тип адреса='pci' домен='0x0000' шина='0x01' слот='0x06' функция='0x4'> 

приведет к тому же виду в гостевой системе, что и fid и uid. значения в элементе zpci остаются неизменными.

При использовании VFIO для назначения хост-устройств гостю предостережение, чтобы иметь в виду, что гостевая ОС будет основывать свои решения на целевой адрес (гостевая сторона), а не исходный адрес (сторона хозяина).

Например, фрагмент XML домена

 
  <имя драйвера='vfio'/>
  <источник>
    
<тип адреса='pci' домен='0x0000' шина='0x00' слот='0x01' функция='0x0'/>

приведет к тому, что устройство будет отображаться как 0000:00:01.0 в гостевой ОС, а не как 0001:08:00.1, который является адресом устройство на хосте.

Конечно, все правила и поведение, описанные выше, остаются в силе.

По некоторым историческим причинам гипервизоры могут ожидать некоторых PCI устройства появляются по определенным адресам вместо «случайных». Для QEMU это зависит от типа машины и гостевой архитектуры. Но чтобы дать вам хотя бы суть, вот список зарезервированных PCI. адреса:

Для машины на базе I440FX с архитектурой x86_64 введите следующее устройства жестко закодированы в QEMU и не могут быть перемещены или удалены:

0000:00:00.0

Главный мост

0000:00:01.0

Мост ISA

0000:00:01.1

первичный контроллер IDE

0000:00:01.2

USB-контроллер PIIX3

0000:00:01.3

ACPI (управление питанием) и контроллер SMBus

Следующие адреса будут использоваться по умолчанию для соответствующих устройств (если адрес свободен или не указан другой адрес для устройство).Можно использовать этот адрес для любого другого устройства.

0000:00:02.0

Основная видеокарта

Для машины на базе Q35 с архитектурой x86_64 введите следующие устройства жестко закодированы в QEMU и не могут быть перемещены или удалены:

0000:00:00.0

Главный мост

0000:00:1ф.2

основной контроллер SATA

0000:00:1f.0

Мост ISA

0000:00:1f.3

SMBus

Следующие адреса будут использоваться по умолчанию для соответствующих устройств (если адрес свободен или не указан другой адрес для устройство), потому что именно так поступил бы настоящий Q35:

0000:00:1а.0

Контроллер USB2

0000:00:1b.0

Звуковой чип ICH9

0000:00:1d.0

Контроллер USB2

Найдено устройств PCI: Шина 0, устройство 0, функция 0: Хост-мост: Intel 440BX — хост 82443BX (версия 3). Средний разработчик. Мастер способный. Задержка = 64. 32-битная память с предварительной выборкой по адресу 0xf8000000 [0xf8000008].Шина 0, устройство 1, функция 0: Мост PCI: Intel 440BX — 82443BX AGP (версия 3). Средний разработчик. Мастер способный. Задержка = 128. Мин Gnt=140. Шина 0, устройство 7, функция 0: Мост: Intel 82371AB PIIX4 ISA (версия 2). Средний разработчик. Быстрая спина к спине. Мастер способный. Никаких всплесков. Шина 0, устройство 7, функция 1: Интерфейс IDE: Intel 82371AB PIIX4 IDE (версия 1). Средний разработчик. Быстрая спина к спине. Мастер способный. Задержка = 64. Ввод/вывод по адресу 0x1000 [0x1001].Шина 0, устройство 7, функция 2: USB-контроллер: Intel 82371AB PIIX4 USB (версия 1). Средний разработчик. Быстрая спина к спине. IRQ 10. Master Capable. Задержка = 64. Ввод/вывод по адресу 0x1020 [0x1021]. Шина 0, устройство 7, функция 3: Мост: Intel 82371AB PIIX4 ACPI (версия 3). Средний разработчик. Быстрая спина к спине. Шина 0, устройство 10, функция 0: Мост CardBus: Неизвестное устройство Texas Instruments (версия 0). Идентификатор поставщика = 104c. Идентификатор устройства = ac51. Средний разработчик. Мастер способный.Задержка = 168. Мин. Gnt=192. Макс. Шир.=7. Шина 0, устройство 10, функция 1: Мост CardBus: Неизвестное устройство Texas Instruments (версия 0). Идентификатор поставщика = 104c. Идентификатор устройства = ac51. Средний разработчик. Мастер способный. Задержка = 168. Мин. Gnt=192. Макс. Шир.=7. Шина 0, устройство 11, функция 0: Контроллер Ethernet: Неизвестное устройство 3Com (версия 16). Идентификатор поставщика = 10b7. Идентификатор устройства = 6055. Средний разработчик. IRQ 10. Master Capable. Задержка = 80. Мин. Gnt=10. Макс. Шир.=5. Ввод/вывод по адресу 0x1080 [0x1081]. 32-битная память без предварительной выборки по адресу 0xf4000400 [0xf4000400].32-битная память без предварительной выборки по адресу 0xf4000000 [0xf4000000]. Шина 0, устройство 11, функция 1: Коммуникационный контроллер: Неизвестное устройство 3Com (версия 16). Идентификатор поставщика = 10b7. Идентификатор устройства = 1007. Средний разработчик. IRQ 10. Master Capable. Задержка = 80. Мин. Gnt=10. Макс. Шир.=5. Ввод/вывод по адресу 0x1400 [0x1401]. 32-битная память без предварительной выборки по адресу 0xf4000c00 [0xf4000c00]. 32-битная память без предварительной выборки по адресу 0xf4000800 [0xf4000800]. Шина 0, устройство 13, функция 0: Мультимедийный аудиоконтроллер: Неизвестный производитель Неизвестное устройство (версия 0).Идентификатор поставщика = 125d. Идентификатор устройства = 1998. Средний разработчик. Быстрая спина к спине. IRQ 5. Master Capable. Задержка = 64. Мин. Gnt=2. Макс. Шир.=24. Ввод/вывод по адресу 0x1800 [0x1801]. 32-битная память без предварительной выборки по адресу 0xf4002000 [0xf4002000]. Шина 1, устройство 0, функция 0: VGA-совместимый контроллер: Неизвестное устройство ATI (версия 100). Идентификатор поставщика = 1002. Идентификатор устройства=4c4d. Средний разработчик. Быстрая спина к спине. IRQ 10. Master Capable. Задержка = 66. Мин Gnt=8. 32-битная память без предварительной выборки по адресу 0xf5000000 [0xf5000000].Ввод-вывод по адресу 0x9000 [0x9001]. 32-битная память без предварительной выборки по адресу 0xf4100000 [0xf4100000].

Декодирование данных PCI и вывода lspci на хостах Linux — Prefetch Technologies

Стандарт PCI стал стандартом де-факто для системных шин. линукс обеспечивают расширенную поддержку PCI и содержат множество драйверов для сеть, хранилище и сторонние адаптеры. Эта статья будет обсудим, как ядро ​​Linux представляет PCI-устройства, и покажем, как декодировать устройств с идентификатором PCI.

Значение записей PCI sysfs

Ядро Linux представляет устройства PCI как псевдоустройства в файловой системе sysfs:

$ ls -la /sys/bus/pci/devices

  всего 0
drwxr-xr-x 2 корень корень 0 03.08.2009 10:38 .
drwxr-xr-x 5 root root 0 03.08.2009 10:38 ..
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:00.0 -> ../../../devices/pci0000:00/0000:00:00.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:01.0 -> ../../../devices/pci0000:00/0000:00:01.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:01.1 -> ../../../devices/pci0000:00/0000:00:01.1
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:02.0 -> ../../../devices/pci0000:00/0000:00:02.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:02.1 -> ../../../devices/pci0000:00/0000:00:02.1
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:04.0 -> ../../../devices/pci0000:00/0000:00:04.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:05.0 -> ../../../devices/pci0000:00/0000:00:05.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:05.1 -> ../../../devices/pci0000:00/0000:00:05.1
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:05.2 -> ../../../devices/pci0000:00/0000:00:05.2
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:06.0 -> ../../../devices/pci0000:00/0000:00:06.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0a.0 -> ../../../devices/pci0000:00/0000:00:0a.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0b.0 -> ../../../devices/pci0000:00/0000:00:0b.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0c.0 -> ../../../devices/pci0000:00/0000:00:0c.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0d.0 -> ../../../devices/pci0000:00/0000:00:0d.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0e.0 -> ../../../devices/pci0000:00/0000:00:0e.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:0f.0 -> ../../../devices/pci0000:00/0000:00:0f.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:18.0 -> ../../../devices/pci0000:00/0000:00:18.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:18.1 -> ../../../devices/pci0000:00/0000:00:18.1
lrwxrwxrwx 1 root root 0 2009-08-03 10:38 0000:00:18.2 -> ../../../devices/pci0000:00/0000:00:18.2
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:00:18.3 -> ../../../devices/pci0000:00/0000:00:18.3
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:01:05.0 -> ../../../devices/pci0000:00/0000:00:06.0/0000:01:05.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:01:06.0 -> ../../../devices/pci0000:00/0000:00:06.0/0000:01:06.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:02:00.0 -> ../../../devices/pci0000:00/0000:00:0a.0/0000:02:00.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:03:00.0 -> ../../../devices/pci0000:00/0000:00:0a.0/0000:02:00.0/0000 :03:00.0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:03:00.1 -> ../../../devices/pci0000:00/0000:00:0a.0/0000:02:00.0/0000 :03:00.1
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:04:00.0 -> ../../../devices/pci0000:00/0000:00:0b.0/0000:04:00.0
lrwxrwxrwx 1 корень корень 0 03.08.2009 10:38 0000:05:00.0 -> ../../../устройства/pci0000:00/0000:00:0c.0/0000:05:00.0
  

Учитывая запись, например:

  lrwxrwxrwx 1 root root 0 03.08.2009 10:38 0000:04:00.0 -> ../../../devices/pci0000:00/0000:00:0b.0/0000:04:00.0
  

Мы можем разбить строку устройства «0000:04:00.0» следующим образом:

  0000 : Домен PCI (каждый домен может содержать до 256 шин PCI)
04 : номер шины, к которой подключено устройство
00 : номер устройства
.0 : Функция устройства PCI
  

Чтобы получить дополнительную информацию об устройстве, мы можем перейти на 0000:04:00.0 каталог и запустите наш любимый пейджер, чтобы отобразить одну или несколько записей псевдоустройств:

$ cd 0000:04:00.0

$ лс-ла

  всего 0
drwxr-xr-x 4 root root 0 03.08.2009 10:38 .
drwxr-xr-x 7 root root 0 03.08.2009 10:38 ..
-rw-r--r-- 1 root root 4096 03.08.2009 12:23 сломанный_паритет_статус
-r--r--r-- 1 root root 4096 03.08.2009 10:38 class
-rw-r--r-- 1 root root 4096 03.08.2009 11:34 config
-r--r--r-- 1 root root 4096 03.08.2009 10:38 устройство
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 драйвер -> ../../../../шина/PCI/драйверы/tg3
-rw------- 1 root root 4096 03.08.2009 12:23 включить
lrwxrwxrwx 1 root root 0 03.08.2009 12:12 firmware_node -> ../../../LNXSYSTM:00/устройство:00/PNP0A03:00/устройство:1a/устройство:1b
-r--r--r-- 1 root root 4096 03.08.2009 10:38 irq
-r--r--r-- 1 root root 4096 03.08.2009 12:23 local_cpulist
-r--r--r-- 1 root root 4096 03.08.2009 10:38 local_cpus
-r--r--r-- 1 root root 4096 03.08.2009 12:23 модалии
-rw-r--r-- 1 root root 4096 03 августа 2009 г. 12:23 msi_bus
drwxr-xr-x 3 корень корень 0 03 августа 2009 г. 10:38 нетто
-r--r--r-- 1 root root 4096 03.08.2009 12:23 numa_node
drwxr-xr-x 2 root root 0 03.08.2009 12:12 мощность
-r--r--r-- 1 root root 4096 03.08.2009 11:34 ресурс
-rw------- 1 root root 65536 03 августа 2009 г. 12:23 resource0
lrwxrwxrwx 1 root root 0 03.08.2009 10:38 подсистема -> ../../../../шина/PCI
-r--r--r-- 1 root root 4096 03 августа 2009 г. 10:38 subsystem_device
-r--r--r-- 1 root root 4096 03 августа 2009 г. 10:38 subsystem_vendor
-rw-r--r-- 1 root root 4096 03.08.2009 10:38 uevent
-r--r--r-- 1 root root 4096 03.08.2009 10:38 поставщик
-rw------- 1 root root 32768 03 августа 2009 г. 12:23 vpd
  

$ продавец кошек 0x14e4

$ кошачье устройство 0x1659

$ класс кошек 0x020000

Каждая запись sysfs содержит уникальную часть данных, например, PCI vendor id (вендор) класс устройства (class), идентификатор устройства (устройство), а также информацию о назначении прерываний и ресурсов.В следующий разделе, мы увидим, как декодировать эти данные.

Большинство дистрибутивов Linux поставляются с пакетом pciutils, который обеспечивает инструменты для запроса, установки и обновления информации об устройстве PCI. Чтобы установить пакет на хосте CentOS или Fedora вы можете запустить yum с параметром установки:

$ ням установить pciutils

После установки вы можете запустить lspci для просмотра устройств, подключенных к вашей системе:

$ lspci | хвост -5

  02:00.0 Мост PCI: Intel Corporation 6702PXH PCI Express-to-PCI Bridge A (версия 09)
03:00.0 Fibre Channel: Fibre Channel 2 Гбит/с на базе ISP2312 компании QLogic Corp. — PCI-X HBA (версия 02)
03:00.1 Fibre Channel: 2Gb Fibre Channel на базе QLogic Corp. ISP2312 для PCI-X HBA (версия 02)
04:00.0 Контроллер Ethernet: Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express (версия 21)
05:00.0 Контроллер Ethernet: Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express (версия 21)
  

$ lspci -n | хвост -5

  02:00.0 0604: 8086:032c (версия 09)
03:00.0 0c04: 1077:2312 (версия 02)
03:00.1 0c04: 1077:2312 (версия 02)
04:00.0 0200:14e4:1659 (версия 21)
05:00.0 0200:14e4:1659 (версия 21)
  

В первом наборе выходных данных lspci прочитал записи sysfs и расшифровал поставщика и номера устройств, используя информацию о производителе и устройстве в /usr/share/hwdata/pci.ids (для быть точным на 100%, lspci использует libpci, который возвращает данные, используя идентификацию PCI данные в /usr/share/hwdata/pci.ids). Во втором наборе выходных данных lspci отобразила необработанный Идентификационные данные PCI.

Теперь вы можете спросить себя, что произойдет, если вы получите совершенно новое устройство и lspci не может отобразить какие-либо подробности об этом? Что ж, к счастью для нас, поставщик и информация об устройстве хранится в централизованном репозитории PCI ID, поэтому мы можем выяснить, что данное устройство декодирует данные PCI вручную. Учитывая следующее устройство из вывода lspci -n выше:

  05:00.0 0200: 14e4:1659 (версия 21)
  

Мы можем разбить это так:

  Поле 1 : 05:00.0: номер шины (05), номер устройства (00) и функция (0)
Поле 2: 0200: класс устройства
Поле 3: 14e4: идентификатор поставщика
Поле 4: 1659: идентификатор устройства
  

Чтобы преобразовать идентификаторы в удобочитаемые строки, мы можем найти идентификаторы в репозитории PCI ID:

  Поле 2 : 0200 : класс 0200 указан как «сетевой контроллер»
Поле 3: 14e4: идентификатор поставщика 14e4 указан как «Корпорация Broadcom».
Поле 4: 1659: идентификатор устройства 1659 указан как «NetXtreme BCM5721 Gigabit Ethernet PCI Express».
  

Это соответствует почти идентичному выводу lspci по умолчанию:

  05:00.0 Ethernet-контроллер: Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express (версия 21)
  

Как упоминалось ранее, утилита lspci использует файл pci.ids для определения производитель и тип устройства. Этот файл будет расти по мере появления новых поставщиков и устройств. добавляются и могут быть обновлены автоматически, запустив update-pciids утилита:

$ /sbin/update-pciids

  % Итого % Получено % Xferd Средняя скорость Время Время Время Текущее
                               Dload Upload Общая потраченная левая скорость
100 149k 100 149k 0 0 375k 0 --:--:-- --:--:-- --:--:-- 459k
Готово. 

Если удобочитаемая форма устройства не отображается в выводе lspci, вы можете обновите файл pci ids до последней версии, чтобы узнать, включено ли ваше устройство.

В этой статье представлен краткий обзор структуры устройства PCI в Linux и показана как декодировать данные sysfs и lspci. Для получения дополнительной информации о стандарте PCI см. Вы можете проверить веб-сайт PCI sig. Чтобы узнать больше о как ядро ​​Linux взаимодействует с устройствами PCI, прочтите книгу Драйверы устройств Linux.

7 Примеры команд Linux lspci для получения информации об аппаратном устройстве шины PCI

lspci означает список PCI. Думайте об этой команде как «ls» + «pci».

Отобразится информация обо всех шинах PCI на вашем сервере.

Помимо отображения информации о шине, он также будет отображать информацию обо всех аппаратных устройствах, подключенных к вашей шине PCI и PCIe.

Например, будет отображаться информация об Ethernet-картах, RAID-контроллерах, видеокартах и ​​т. д.

Утилита lspci является частью пакета pciutils.

Если у вас нет pciutilis, установите его в своей системе, как показано ниже.

# ням установить pciutils
 

1. Использование по умолчанию

По умолчанию отображается вся информация об устройстве, как показано ниже. Первое поле представляет собой информацию о слоте в следующем формате: [домен:]шина:устройство.функция

В этом примере, поскольку все домены равны 0, lspci не будет отображать домен.

# лспци
00:00.0 Хост-мост: концентратор ввода-вывода Intel Corporation 5500 к порту ESI (версия 13)
00:01.0 Мост PCI: концентратор ввода-вывода Intel Corporation 5520/5500/X58, корневой порт PCI Express 1 (версия 13)
00:09.0 Мост PCI: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 (версия 13)
00:14.0 PIC: Регистры управления системой концентратора ввода-вывода Intel Corporation 7500/5520/5500/X58 (версия 13)
00:14.1 PIC: Концентратор ввода-вывода Intel Corporation 7500/5520/5500/X58 GPIO и регистры оперативной памяти (версия 13)
00:14.2 PIC: Состояние управления концентратором ввода-вывода Intel Corporation 7500/5520/5500/X58 и регистры RAS (версия 13)
00:1а.0 USB-контроллер: Intel Corporation 82801I (семейство ICH9) USB UHCI Controller #4 (версия 02)
00:1c.0 Мост PCI: Intel Corporation 82801I (семейство ICH9), порт PCI Express 1 (версия 02)
00:1d.0 USB-контроллер: Intel Corporation 82801I (семейство ICH9) USB UHCI Controller #1 (версия 02)
00:1e.0 Мост PCI: Intel Corporation 82801 PCI Bridge (версия 92)
00:1f.0 Мост ISA: Контроллер интерфейса Intel Corporation 82801IB (ICH9) LPC (версия 02)
00:1f.2 Интерфейс IDE: Intel Corporation 82801IB (ICH9), 2-портовый контроллер SATA [режим IDE] (версия 02)
01:00.0 Ethernet-контроллер: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (версия 20)
01:00.1 Контроллер Ethernet: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (версия 20)
03:00.0 Контроллер шины RAID: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (версия 05)
06:03.0 VGA-совместимый контроллер: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 (версия 0a)
 

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

2. Дамп данных PCI в другом формате

Если вы хотите передать вывод команды lspci сценарию оболочки, вы можете использовать параметр -m (или параметр -mm), как показано ниже.

Этот параметр также полезен, когда вы хотите просмотреть информацию о подсистеме. Например, для контроллера RAID выходные данные по умолчанию просто говорят, что используется контроллер LSI Logic RAID. Но следующий вывод отображает подсистему, которая представляет собой интегрированную систему RAID-контроллера DELL PERC H700.

# lspci-m
00:00.0 «Хост-мост» «Корпорация Intel» «Концентратор ввода-вывода 5500 к порту ESI» -r13 «Dell» «Концентратор ввода-вывода PowerEdge R610 к порту ESI»
00:09.0 «Мост PCI» «Корпорация Intel» «Концентратор ввода-вывода 7500/5520/5500/X58 Корневой порт PCI Express 9» -r13 «» «»
00:14.0 "PIC" "Корпорация Intel" "Регистры управления системой концентратора ввода-вывода 7500/5520/5500/X58" -r13 "" ""
00:1a.0 «USB-контроллер» «Корпорация Intel» «82801I (семейство ICH9) USB-контроллер UHCI № 4» -r02 «Dell» «USB-контроллер UHCI PowerEdge R610»
00:1ф.0 «ISA bridge» «Intel Corporation» «82801IB (ICH9) LPC Interface Controller» -r02 «Dell» «PowerEdge R610 82801IB (ICH9) LPC Interface Controller»
00:1f.2 «Интерфейс IDE» «Корпорация Intel» «82801IB (ICH9) 2-портовый контроллер SATA [режим IDE]» -r02 -p8f «Dell» «Контроллер PowerEdge R610 SATA IDE»
01:00.0 «Контроллер Ethernet» «Broadcom Corporation» «NetXtreme II BCM5709 Gigabit Ethernet» -r20 «Dell» «PowerEdge R610 BCM5709 Gigabit Ethernet»
03:00.0 «Контроллер шины RAID» «LSI Logic / Symbios Logic» «MegaRAID SAS 2108 [Liberator]» -r05 «Dell» «Интегрированный PERC H700»
06:03.0 "VGA-совместимый контроллер" "Matrox Electronics Systems Ltd." "MGA G200eW WPCM450" -r0a "Dell" "PowerEdge R610 MGA G200eW WPCM450"
 

3. Вывод в формате дерева

Параметр -t отобразит выходные данные в формате дерева с информацией о шине и о том, как устройства подключены к этим шинам, как показано ниже. Вывод будет только с использованием числовых идентификаторов.

# лспци -т
-[0000:00]-+-00.0
           +-01.0-[01]--+-00.0
           | \-00.1
           +-03.0-[02]--+-00.0
           | \-00.1
           +-07.0-[04]--
           +-09.0-[05]--
           +-14,0
           +-14,1
           +-1c.0-[03]----00.0
           +-1д.0
           +-1e.0-[06]----03.0
           +-1f.0
 

4. Подробная информация об устройстве

Если вы хотите получить подробную информацию о конкретном устройстве, используйте -v для получения дополнительной информации. Это отобразит информацию обо всех устройствах.Вывод этой команды будет очень длинным, и вам нужно прокрутить вниз и просмотреть соответствующий раздел.

Для дополнительного уровня детализации вы можете использовать -vv или -vvv.

В следующем примере я привел вывод только устройства RAID-контроллера.

# lspci -v
 03:00.0 Контроллер шины RAID: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (версия 05)
        Подсистема: интегрированная Dell PERC H700
        Флаги: bus master, fast devsel, latency 0, IRQ 16
        Порты ввода/вывода на fc00 [size=256]
        Память на df1bc000 (64-разрядная, без предварительной выборки) [размер = 16 КБ]
        Память в df1c0000 (64-разрядная, без предварительной выборки) [размер = 256 КБ]
        Расширение ПЗУ на df100000 [отключено] [размер = 256 КБ]
        Возможности: [50] Управление питанием версии 3
        Возможности: [68] Express Endpoint, MSI 00
        Возможности: [d0] Важные данные о продукте
        Возможности: [a8] MSI: Enable- Count=1/1 Maskable- 64bit+
        Возможности: [c0] MSI-X: Enable+ Count=15 Masked-
        Возможности: [100] Расширенные отчеты об ошибках
        Возможности: [138] Бюджетирование мощности 
        Используемый драйвер ядра: megaraid_sas
        Модули ядра: megaraid_sas
 

5.Отображение кодов устройств на выходе

Если вы хотите отобразить код поставщика PCI и код устройства только в виде чисел, используйте параметр -n. Это не будет искать файл PCI, чтобы получить соответствующие значения для чисел.

# lspci -n
01:00.1 0200:14e4:1639 (версия 20)
02:00.0 0200:14e4:1639 (версия 20)
02:00.1 0200:14e4:1639 (версия 20)
03:00.0 0104:1000:0079 (версия 05)
06:03.0 03:00:102b:0532 (версия 0a)
 

Если вы хотите отобразить и описание, и номер, используйте параметр -nn, как показано ниже.

# lspci -nn
01:00.0 Контроллер Ethernet [0200]: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet [14e4:1639] (версия 20)
03:00.0 Контроллер шины RAID [0104]: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] [1000:0079] (версия 05)
06:03.0 VGA-совместимый контроллер [0300]: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 [102b:0532] (версия 0a)
..
 

6. Поиск определенного устройства

Когда вы знаете номер слота в домене:шина:слот.func, вы можете запросить конкретное устройство, как показано ниже. В следующем примере мы не указали номер домена, так как он равен 0, который можно не указывать.

# lspci -s 03:00.0
03:00.0 Контроллер шины RAID: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (версия 05)
 

Когда вы знаете номер устройства в формате поставщик: устройство, вы можете запросить конкретное устройство, как показано ниже.

# lspci -d 1000:0079
03:00.0 Контроллер шины RAID: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (версия 05)
 

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

lspci -d :0079
lspci -d 1000:
 

7. Драйверы ядра дисплея

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

Ваш комментарий будет первым

Добавить комментарий

Ваш адрес email не будет опубликован.