Изменить IO-адрес устройства PCI

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

Есть ли что-то еще, что нужно сделать, чтобы заставить это работать? Я использую Ассемблер в реальном режиме.

2 ответа

Если ваше конечное устройство находится за мостом, измените регистры Pre-fetchable Base Upper 32 Bit и Pre-fetchable Limit Upper 32 Bit соответственно. Я не думаю, что вам нужно беспокоиться о корне комплекса.

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

Устройство за мостом? Если это так, вам также необходимо обновить регистры конфигурации моста.

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

Другие вопросы по тегам