WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] TLB flushing in blktap kernel driver?

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] TLB flushing in blktap kernel driver?
From: "Stephen C. Tweedie" <sct@xxxxxxxxxx>
Date: Wed, 27 Sep 2006 14:17:06 +0100
Cc: Julian Chesterfield <jac90@xxxxxxxxx>, Andrew Warfield <andrew.warfield@xxxxxxxxxxxx>
Delivery-date: Wed, 27 Sep 2006 06:17:41 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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>