|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] TLB flushing in blktap kernel driver?,
Stephen C. Tweedie <=
|
|
|
|
|