Re: HELP: Is writeq an atomic operation??

Roland Dreier
2008-05-02T23:21:47Z

> Yeah, I forgot I have a #ifndef writeq, then defined the x86_64 version
> of that. I've not tested on x86, so I'm not sure whether it works.
> How are you handling writeq when its not defined, as the case in x86?

Write two writel() inside a spinlock to avoid any transactions in the
middle (the HW I'm dealing with can deal with two 32-bit transactions,
as long as nothing comes in the middle). If your hardware demands a
single 64-bit transaction, you may be in trouble, because I'm not sure
all 32-bit systems can generate such a PCIe transaction.

You can see include/linux/mlx4/doorbell.h for exactly what I did.

- R.