On 06/07/2017 16:36, Fam Zheng wrote: > On Thu, 07/06 16:22, Paolo Bonzini wrote: >> >> >> On 06/07/2017 16:06, no-re...@patchew.org wrote: >>> ERROR: Use of volatile is usually wrong: see >>> Documentation/volatile-considered-harmful.txt >>> #843: FILE: block/nvme.c:40: >>> + volatile uint32_t *doorbell; >>> >>> ERROR: Use of volatile is usually wrong: see >>> Documentation/volatile-considered-harmful.txt >>> #869: FILE: block/nvme.c:66: >>> +typedef volatile struct { >> >> Indeed volatile should not be necessary, since we use memory barriers >> appropriately. But these are hardware registers (like, host hardware) >> so I guess it's okay for this special case. > > I think I used it because we don't have ACCESS_ONCE (maybe we should?).
We have atomic_read and atomic_set (and Linux in fact tries not to use ACCESS_ONCE anymore, it's been replaced by READ_ONCE and WRITE_ONCE so it's really 1:1 with QEMU). Paolo