Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch Starting with Xen 3 API, MMU_EXTENDED_COMMAND (tlb ...
details: https://anonhg.NetBSD.org/src/rev/6f1e3bef0e3c
branches: trunk
changeset: 752048:6f1e3bef0e3c
user: jym <jym%NetBSD.org@localhost>
date: Fri Feb 12 01:55:45 2010 +0000
description:
Starting with Xen 3 API, MMU_EXTENDED_COMMAND (tlb flush, cache flush, page
pinning/unpinning, set_ldt, invlpg) operations cannot be queued in the
xpq_queue[] any more, as they use their own specific hypercall, mmuext_op().
Their associated xpq_queue_*() functions already call xpq_flush_queue()
before issuing the mmuext_op() hypercall, which makes these xpq_flush_queue()
calls not necessary.
Rapidly discussed with bouyer@ in private mail. XEN3_DOM0/XEN3PAE_DOM0 tested
through a build.sh release, amd64 was only compile tested. No regression
expected.
diffstat:
sys/arch/x86/x86/pmap.c | 9 ++-------
sys/arch/xen/x86/x86_xpmap.c | 5 ++---
sys/arch/xen/x86/xen_bus_dma.c | 6 ++----
sys/arch/xen/x86/xenfunc.c | 7 ++-----
4 files changed, 8 insertions(+), 19 deletions(-)
diffs (160 lines):
diff -r ad85b66165c5 -r 6f1e3bef0e3c sys/arch/x86/x86/pmap.c
--- a/sys/arch/x86/x86/pmap.c Fri Feb 12 01:04:05 2010 +0000
+++ b/sys/arch/x86/x86/pmap.c Fri Feb 12 01:55:45 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.102 2010/02/10 00:39:30 jym Exp $ */
+/* $NetBSD: pmap.c,v 1.103 2010/02/12 01:55:45 jym Exp $ */
/*
* Copyright (c) 2007 Manuel Bouyer.
@@ -149,7 +149,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.102 2010/02/10 00:39:30 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.103 2010/02/12 01:55:45 jym Exp $");
#include "opt_user_ldt.h"
#include "opt_lockdebug.h"
@@ -855,7 +855,6 @@
xpq_queue_invlpg(
(vaddr_t)&pmap->pm_pdir[PDIR_SLOT_PTE + i]);
}
- xpq_flush_queue();
if (pmap_valid_entry(opde))
pmap_apte_flush(ourpmap);
splx(s);
@@ -2132,7 +2131,6 @@
(void)pmap_extract(pmap_kernel(), object, &pdirpa);
xpq_queue_pin_table(xpmap_ptom_masked(pdirpa));
#endif
- xpq_flush_queue();
splx(s);
#endif /* XEN */
@@ -2166,7 +2164,6 @@
xpq_queue_pte_update(xpmap_ptetomach(pte), *pte | PG_RW);
xpq_queue_invlpg((vaddr_t)object);
}
- xpq_flush_queue();
splx(s);
#endif /* XEN */
}
@@ -2743,7 +2740,6 @@
if ((new_pgd[i] & PG_V) || (old_pgd[i] & PG_V))
xpq_queue_pte_update(addr, new_pgd[i]);
}
- xpq_flush_queue(); /* XXXtlb */
tlbflush();
xen_set_user_pgd(pmap_pdirpa(pmap, 0));
xen_current_user_pgd = pmap_pdirpa(pmap, 0);
@@ -2784,7 +2780,6 @@
xpmap_ptom(pmap->pm_pdirpa[i]) | PG_V);
}
tlbflush();
- xpq_flush_queue();
splx(s);
}
#else /* PAE */
diff -r ad85b66165c5 -r 6f1e3bef0e3c sys/arch/xen/x86/x86_xpmap.c
--- a/sys/arch/xen/x86/x86_xpmap.c Fri Feb 12 01:04:05 2010 +0000
+++ b/sys/arch/xen/x86/x86_xpmap.c Fri Feb 12 01:55:45 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: x86_xpmap.c,v 1.17 2009/10/23 02:32:34 snj Exp $ */
+/* $NetBSD: x86_xpmap.c,v 1.18 2010/02/12 01:55:45 jym Exp $ */
/*
* Copyright (c) 2006 Mathieu Ropert <mro%adviseo.fr@localhost>
@@ -69,7 +69,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.17 2009/10/23 02:32:34 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.18 2010/02/12 01:55:45 jym Exp $");
#include "opt_xen.h"
#include "opt_ddb.h"
@@ -153,7 +153,6 @@
}
s = splvm();
xpq_queue_set_ldt(base, entries);
- xpq_flush_queue();
splx(s);
}
diff -r ad85b66165c5 -r 6f1e3bef0e3c sys/arch/xen/x86/xen_bus_dma.c
--- a/sys/arch/xen/x86/xen_bus_dma.c Fri Feb 12 01:04:05 2010 +0000
+++ b/sys/arch/xen/x86/xen_bus_dma.c Fri Feb 12 01:55:45 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xen_bus_dma.c,v 1.16 2010/01/23 22:32:42 cegger Exp $ */
+/* $NetBSD: xen_bus_dma.c,v 1.17 2010/02/12 01:55:46 jym Exp $ */
/* NetBSD bus_dma.c,v 1.21 2005/04/16 07:53:35 yamt Exp */
/*-
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xen_bus_dma.c,v 1.16 2010/01/23 22:32:42 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xen_bus_dma.c,v 1.17 2010/02/12 01:55:46 jym Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -142,7 +142,6 @@
}
/* Flush updates through and flush the TLB */
xpq_queue_tlb_flush();
- xpq_flush_queue();
splx(s);
return 0;
@@ -185,7 +184,6 @@
}
/* Flush updates through and flush the TLB */
xpq_queue_tlb_flush();
- xpq_flush_queue();
splx(s);
return error;
}
diff -r ad85b66165c5 -r 6f1e3bef0e3c sys/arch/xen/x86/xenfunc.c
--- a/sys/arch/xen/x86/xenfunc.c Fri Feb 12 01:04:05 2010 +0000
+++ b/sys/arch/xen/x86/xenfunc.c Fri Feb 12 01:55:45 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xenfunc.c,v 1.9 2009/10/23 02:32:34 snj Exp $ */
+/* $NetBSD: xenfunc.c,v 1.10 2010/02/12 01:55:46 jym Exp $ */
/*
*
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xenfunc.c,v 1.9 2009/10/23 02:32:34 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xenfunc.c,v 1.10 2010/02/12 01:55:46 jym Exp $");
#include <sys/param.h>
@@ -55,7 +55,6 @@
{
int s = splvm();
xpq_queue_invlpg(addr);
- xpq_flush_queue();
splx(s);
}
@@ -104,7 +103,6 @@
{
int s = splvm();
xpq_queue_pt_switch(xpmap_ptom_masked(val));
- xpq_flush_queue();
splx(s);
}
#endif
@@ -114,7 +112,6 @@
{
int s = splvm();
xpq_queue_tlb_flush();
- xpq_flush_queue();
splx(s);
}
Home |
Main Index |
Thread Index |
Old Index