CPC G06F 12/0802 (2013.01) [G06F 13/1668 (2013.01); G06F 2212/621 (2013.01)] | 18 Claims |
1. A method of data processing in a data processing system including a system fabric to which a coherence manager and an input/output (I/O) requestor are coupled, the method comprising:
the I/O requestor issuing on the system fabric a first snoop request of a first I/O store operation and a subsequent second snoop request of a second I/O store operation, wherein the first and second I/O store operations are within a same ordered I/O store stream, and wherein each of the first and second snoop requests specifies an update to a respective storage location identified by a coherent memory address;
the I/O requestor receiving, via the system fabric from the coherence manager, respective ownership coherence responses for each of the first and second I/O store operations, wherein the respective first and second ownership coherence responses indicate the coherence manager has concurrent coherence ownership of the memory address for both the first and second I/O store operations;
the I/O requestor sending, on the system fabric, store data of the first and second I/O store operations; and
based upon receipt of each of the ownership coherence responses, the I/O requestor issuing, via the system fabric, respective first and second execute coherence responses to command the coherence manager to initiate updates to the respective storage locations with the store data wherein:
the I/O requestor issues the first execute coherence response after sending the store data of the first I/O store operation on the system fabric;
the I/O requestor issues the second execute coherence response after sending the store data of the second I/O store operation on the system fabric;
the I/O requestor issuing a third snoop request of a third I/O operation in the ordered I/O store stream to the coherence manager; and
based on receiving a coherence response for the third I/O operation, the I/O requestor canceling a subsequent fourth I/O store operation in the ordered I/O store stream,
wherein the canceling includes:
based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address of the third snoop request a first number of times but not a greater second number of times, the I/O requestor canceling the fourth I/O store operation but not the third I/O operation; and
based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address at least the second number of times, the I/O requestor canceling both the third I/O store operation and the fourth I/O store operation.
|