I had a problem that has been bugging me the last few days. I would start a USART transmit using dma with the AVR32_PDCA_IER_TRC_MASK set so I get an interrupt when it's complete.
When I got that I disabled that interrupt and set a flag to let a thread run that could start a new transfer quite quickly. What I found is that if it did this one byte of transmit data was lost.
Maybe it should have been obvious to me, but eventually I tried the following and it worked:
1) When the PDCA transfer complete is received disable it and then enable the USART's AVR32_USART_IER_TXEMPTY_MASK.
2) When the TXEMPTY interrupt is received that means the USART is completely idle. Disable the TXEMPTY interrupt and a new transfer can now be done.