On Fri, Nov 16, 2012 at 2:55 PM, Dmitry Fleytman <dmi...@daynix.com> wrote: > + /* Whether MSI-X support was installed successfully */ > + uint8_t msix_used; > + /* Whether MSI support was installed successfully */ > + uint8_t msi_used;
These two fields should be bool. > + /* Whether automatic interrupts masking enabled */ > + uint8_t auto_int_masking; bool > +static inline void vmxnet3_flush_shmem_changes(void) > +{ > + /* > + * Flush shared memory changes > + * Needed before sending interrupt to guest to ensure > + * it gets consistent memory state > + */ > + smp_wmb(); > +} It's useful to document why a memory barrier is being used in each instance. Therefore hiding smp_wmb() inside a wrapper function isn't great. Also, it's suspicious that smb_wmb() is used but no other barriers are used. What about a read memory barrier when accessing shared memory written by the guest?