Уже в PCI 2.3 написано буквально следующее:
Цитата
The use of LOCK# is only allowed to be supported by a host bus bridge, a PCI-to-PCI bridge, or an expansion bus bridge. In earlier versions of this specification, other devices were allowed to initiate and respond to exclusive accesses using LOCK#. However, the usefulness of a hardware-based lock mechanism has diminished and is only useful to prevent a deadlock or to provide backward compatibility. Therefore, all other devices are required to ignore LOCK#.
К тому же задача стояла несколько не так - нужно сделать чтение-модификацию-запись за одну транзакцию. Если я правильно понял. Однако это невозможно в силу протокола шины, где в начале транзакции передается код операции (по линиям C/BE#), который определяет дальнейшие действия. И команд предусматривающих одновременное чтение/запись в одной транзакции нет. Есть либо то, либо другое:
Цитата
C/BE[3::0]# Command Type
0000 Interrupt Acknowledge
0001 Special Cycle
0010 I/O Read
0011 I/O Write
0100 Reserved
0101 Reserved
0110 Memory Read
0111 Memory Write
1000 Reserved
1001 Reserved
1010 Configuration Read
1011 Configuration Write
1100 Memory Read Multiple
1101 Dual Address Cycle
1110 Memory Read Line
1111 Memory Write and Invalidate