Используйте барьеры ввода / вывода для ожидания завершения доступа PCI (PowerPC) - PullRequest
1 голос
/ 30 сентября 2019

В настоящее время я работаю над проблемой, связанной с барьерами памяти на PPC e6500.

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

Поскольку PCI (не PCIe) поддерживает переупорядочение операций чтения / записи в зависимости от ситуации во время доступаЯ вполне уверен, что мне нужны барьеры ввода / вывода для достижения этого безопасно и последовательно. Однако я не уверен, какую именно последовательность и какие барьеры мне нужно использовать на моем КПК.

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

Однако команда asm sync, кажется, завершается только тогда, когда все предыдущие инструкции полностью завершены.

Это приводит меня к предположению, что код должен выглядеть примерно так:

Write to PCI device memory
eieio
Read from PCI device memory
sync
continue

Это правильный подход или я что-то неправильно понял относительно барьеров памяти на PPC?

Спасибо большоемного, Майкл

...