Я сталкиваюсь с некоторыми проблемами, связанными с предварительно выбираемым доступом PCIE к BAR в ядре Linux на платформе x86_64.
Для моего устройства PCIE BAR 2 является предварительно выбираемой, а BAR5 - предварительно не выбираемой, и оба они являются IORESOURCE_MEM.
Я использовал ioremap для сопоставления обеих полос и доступа к ним с помощью writel.
Странно то, что использование writel для записи BAR2 (с возможностью предварительной выборки) иногда будет потеряно, но запись BAR5 будет в порядке. Частота записи в два бара одинакова и очень высока.
Хотел бы кто-нибудь дать несколько советов? Есть ли что-то особенное в ядре Linux, когда вы пытаетесь отобразить и получить доступ к предварительно выбираемой PCIE BAR? Является ли ioremap лучшим API для отображения предварительно выбираемого PCIE BAR?