Изменить IO-адрес устройства PCI
Я хотел бы изменить IO-адрес устройства PCI, записав новый адрес (с выравниванием страницы) в BAR0/1. Когда я сделал это с помощью функции BIOS, я не смог получить доступ к устройству PCI по новому адресу.
Есть ли что-то еще, что нужно сделать, чтобы заставить это работать? Я использую Ассемблер в реальном режиме.
2 ответа
Если ваше конечное устройство находится за мостом, измените регистры Pre-fetchable Base Upper 32 Bit и Pre-fetchable Limit Upper 32 Bit соответственно. Я не думаю, что вам нужно беспокоиться о корне комплекса.
Перезапись BAR должна изменить адрес устройства. (Пока вы сделали это правильно.)
Устройство за мостом? Если это так, вам также необходимо обновить регистры конфигурации моста.
Кроме того, комплекс чипсет / корень может иметь собственную конфигурацию декодирования шины. Проверьте таблицу данных чипсета.