The st-link driver only supports 8-bit and 32-bit writes (splitting smaller ones into 8-bit writes).
The stm32f2x flash driver uses 16-bit writes, and the underlying hardware emits an error if non-matching (so non-16-bit) writes occur.
As a result, when using a st-link with a device including stm32f2x flash, non-algorithm programming is expected to always fail with a PGEPRR (programming parallism error).
Discovered while investigating https://sourceforge.net/p/openocd/tickets/203/
This ticket is supposed to be fixed by change http://openocd.zylin.com/4704
Feedback are welcome!