A method for filtering snoops in a coherent multiprocessor system (100, 200, 800), comprising: receiving a request to update a target memory location at a Level-2, L2, cache shared among multiple local processing units that each have a Level-1, LI, cache; performing a lookup based on the target memory location in a snoop filter that tracks entries in each of the L1 cache associated with each of the multiple local processing units; characterised by: selecting a victim entry to evict from the snoop filter in response to the lookup missing the snoop filter and the snoop filter lacking available space to store a new entry that corresponds to the target memory location; establishing the new entry in a temporary overflow area; sending a request to invalidate every cache line that maps to the selected victim entry to at least one of the multiple processing units that has one or more cache lines that map to the selected victim entry in the L1 cache associated therewith; receiving an acknowledgement from the at least one processing unit, the acknowledgement indicating that every cache line that maps to the selected victim entry has been invalidated in the L1 cache associated therewith; and replacing the selected victim entry in the snoop filter with the new entry that corresponds to the target memory location wherein the new entry is moved from the temporary overflow area into the snoop filter to replace the selected victim entry upon receiving the acknowledgement. receiving a request to update a target memory location at a Level-2, L2, cache shared among multiple local processing units that each have a Level-1, LI, cache; performing a lookup based on the target memory location in a snoop filter that tracks entries in each of the L1 cache associated with each of the multiple local processing units; characterised by: selecting a victim entry to evict from the snoop filter in response to the lookup missing the snoop filter and the snoop filter lacking available space to store a new entry that corresponds to the target memory location; establishing the new entry in a temporary overflow area; sending a request to invalidate every cache line that maps to the selected victim entry to at least one of the multiple processing units that has one or more cache lines that map to the selected victim entry in the L1 cache associated therewith; receiving an acknowledgement from the at least one processing unit, the acknowledgement indicating that every cache line that maps to the selected victim entry has been invalidated in the L1 cache associated therewith; and replacing the selected victim entry in the snoop filter with the new entry that corresponds to the target memory location wherein the new entry is moved from the temporary overflow area into the snoop filter to replace the selected victim entry upon receiving the acknowledgement. selecting a victim entry to evict from the snoop filter in response to the lookup missing the snoop filter and the snoop filter lacking available space to store a new entry that corresponds to the target memory location; establishing the new entry in a temporary overflow area; sending a request to invalidate every cache line that maps to the selected victim entry to at least one of the multiple processing units that has one or more cache lines that map to the selected victim entry in the L1 cache associated therewith; receiving an acknowledgement from the at least one processing unit, the acknowledgement indicating that every cache line that maps to the selected victim entry has been invalidated in the L1 cache associated therewith; and replacing the selected victim entry in the snoop filter with the new entry that corresponds to the target memory location wherein the new entry is moved from the temporary overflow area into the snoop filter to replace the selected victim entry upon receiving the acknowledgement.