[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] TLB flushing in blktap kernel driver?
Hi all, I've been fixing blktap to build as a kernel module, and have come across one un-exported symbol that blktap needs: flush_tlb_all(), used in static unsigned int blktap_poll(struct file *file, poll_table *wait) { ... poll_wait(file, &info->wait, wait); if (info->ufe_ring.req_prod_pvt != info->ufe_ring.sring->req_prod) { flush_tlb_all(); RING_PUSH_REQUESTS(&info->ufe_ring); return POLLIN | POLLRDNORM; } return 0; } However, I can't understand right now why we need the tlb flush here. If we're doing any grant table operations between dom0 and domU, then the HV should be doing the tlb flushes for us, shouldn't it? And mere SMP synchronisation on a ring buffer requires a physical memory barrier, not a TLB synchronisation (and RING_PUSH_REQUESTS already does a wmb.) --Stephen _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |