On 2011-09-06 10:04, Michael S. Tsirkin wrote: > On Tue, Sep 06, 2011 at 09:18:13AM +0200, Jan Kiszka wrote: >>>> @@ -401,36 +403,58 @@ int pci_vpd_truncate(struct pci_dev *dev, size_t size) >>>> EXPORT_SYMBOL(pci_vpd_truncate); >>>> >>>> /** >>>> - * pci_block_user_cfg_access - Block userspace PCI config reads/writes >>>> + * pci_block_cfg_access - Block PCI config reads/writes >>> >>> This comment seems confusing. We don't in fact block all config >>> reads writes. Instead we block userspace accesses and >>> concurrent block requests. >> >> I'm open for a better suggestion that summarize the more verbose (and >> hopefully clearer) explanation below. > > I think the problem is, it doesn't block config access > and we call it pci_block_cfg_access. > > Thinking about it, doesn't this behave somewhat like a lock? > How about > > pci_user_cfg_access_trylock > pci_user_cfg_access_lock > pci_user_cfg_access_unlock > > And then: > * pci_user_cfg_access_lock - Lock userspace PCI config access Except that the "userspace" here is still only half of the truth and I prefer to drop it, the naming locks good to me. > * > * When locked, any userspace reads or writes to config space > * and concurrent lock requests will sleep, and trylock requests > * will fail, until pci_user_cfg_access_unlock is called. > > I had a brief thought of using an rwsem internally, but > this would make trylock fail if userspace does config read, > changing semantics. Also, I bet we would make lockdep unhappy when calling down_write_trylock from IRQ context. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html