Назначение адреса на 64-битном хосте linux 64-битной карте pcie

Я использую 64-битную карту PCI Express на 64-битном хосте Linux, проблема в том, что его полосы 64-битные, но всегда получают адрес, который находится в диапазоне 32-битных адресов, то есть более высокий 32-битный BAR всегда равен нулю.

Как я могу заставить его использовать настоящие 64-битные адреса? Я попытался применить его, переопределив перечисление BIOS с аргументами времени загрузки для ядра, чтобы ядро ​​могло перечислять устройства pci, но результат такой же, как и в BIOS.

Linux не поддерживает настоящие 64-битные адреса?


person flying-high    schedule 16.05.2012    source источник
comment
Это имеет значение? Адреса ввода-вывода не должны занимать много памяти, поэтому достаточно 32-битной версии. Возможно, Linux выберет простой способ поддержки старых устройств и всем им присваивает низкие адреса.   -  person ugoren    schedule 16.05.2012
comment
вы должны проверить, поддерживается ли окно, таким образом вы можете сопоставить свое окно с адресами до 64 бит   -  person Kinjal Patel    schedule 11.12.2012


Ответы (1)


Вы можете попробовать следующее. Это в первую очередь включает PAE (расширение физического адреса) в ядре. Затем с помощью команды setpci или из драйвера измените верхний 32-битный регистр полосы на ненулевое значение, если ваше конечное устройство находится под мостом pci, не забудьте изменить предварительно выбираемые базовые верхние 32 бита и предварительные настройки. извлекаемый предел верхних 32-битных регистров соответствующим образом.

person user140706    schedule 21.05.2012