Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/cherry-xenmp]: src/sys/arch Remove the "xpq lock", since we have per-cpu...
details: https://anonhg.NetBSD.org/src/rev/9a8c5ccfb0dd
branches: cherry-xenmp
changeset: 765644:9a8c5ccfb0dd
user: cherry <cherry%NetBSD.org@localhost>
date: Tue Sep 20 18:57:50 2011 +0000
description:
Remove the "xpq lock", since we have per-cpu mmu queues now. This may need further testing. Also add some preliminary locking around queue-ops in the network backend driver
diffstat:
sys/arch/amd64/include/pmap.h | 14 +------
sys/arch/i386/i386/gdt.c | 6 +-
sys/arch/i386/i386/machdep.c | 6 +-
sys/arch/i386/include/pmap.h | 14 +------
sys/arch/x86/include/pmap.h | 5 +-
sys/arch/x86/x86/pmap.c | 21 +---------
sys/arch/x86/x86/pmap_tlb.c | 6 +-
sys/arch/xen/include/xenpmap.h | 12 +-----
sys/arch/xen/x86/cpu.c | 13 +-----
sys/arch/xen/x86/x86_xpmap.c | 76 +++++++----------------------------
sys/arch/xen/x86/xen_bus_dma.c | 6 +-
sys/arch/xen/x86/xen_pmap.c | 6 +-
sys/arch/xen/x86/xenfunc.c | 10 +---
sys/arch/xen/xen/if_xennet_xenbus.c | 49 +++++++++++++---------
sys/arch/xen/xen/xennetback_xenbus.c | 6 +-
15 files changed, 65 insertions(+), 185 deletions(-)
diffs (truncated from 1114 to 300 lines):
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/amd64/include/pmap.h
--- a/sys/arch/amd64/include/pmap.h Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/amd64/include/pmap.h Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.24.2.2 2011/08/20 19:22:46 cherry Exp $ */
+/* $NetBSD: pmap.h,v 1.24.2.3 2011/09/20 18:57:50 cherry Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -277,9 +277,7 @@
pmap_pte_set(pt_entry_t *pte, pt_entry_t npte)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(pte), npte);
- xpq_queue_unlock();
splx(s);
}
@@ -288,14 +286,12 @@
{
int s = splvm();
- xpq_queue_lock();
pt_entry_t opte = *ptep;
if (opte == o) {
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(ptep)), n);
xpq_flush_queue();
}
- xpq_queue_unlock();
splx(s);
return opte;
}
@@ -304,11 +300,9 @@
pmap_pte_testset(volatile pt_entry_t *pte, pt_entry_t npte)
{
int s = splvm();
- xpq_queue_lock();
pt_entry_t opte = *pte;
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)), npte);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
return opte;
}
@@ -317,10 +311,8 @@
pmap_pte_setbits(volatile pt_entry_t *pte, pt_entry_t bits)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)), (*pte) | bits);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
@@ -328,11 +320,9 @@
pmap_pte_clearbits(volatile pt_entry_t *pte, pt_entry_t bits)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)),
(*pte) & ~bits);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
@@ -340,9 +330,7 @@
pmap_pte_flush(void)
{
int s = splvm();
- xpq_queue_lock();
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
#endif
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/i386/i386/gdt.c
--- a/sys/arch/i386/i386/gdt.c Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/i386/i386/gdt.c Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: gdt.c,v 1.50.10.2 2011/08/06 14:05:35 cherry Exp $ */
+/* $NetBSD: gdt.c,v 1.50.10.3 2011/09/20 18:57:51 cherry Exp $ */
/*-
* Copyright (c) 1996, 1997, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.50.10.2 2011/08/06 14:05:35 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.50.10.3 2011/09/20 18:57:51 cherry Exp $");
#include "opt_multiprocessor.h"
#include "opt_xen.h"
@@ -214,11 +214,9 @@
* properly yet, ie; curcpu() won't work at this
* point and spl() will break.
*/
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(ptp),
*ptp & ~PG_RW);
xpq_flush_queue();
- xpq_queue_unlock();
}
}
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/i386/i386/machdep.c
--- a/sys/arch/i386/i386/machdep.c Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/i386/i386/machdep.c Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.702.2.6 2011/08/30 12:53:45 cherry Exp $ */
+/* $NetBSD: machdep.c,v 1.702.2.7 2011/09/20 18:57:51 cherry Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.702.2.6 2011/08/30 12:53:45 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.702.2.7 2011/09/20 18:57:51 cherry Exp $");
#include "opt_beep.h"
#include "opt_compat_ibcs2.h"
@@ -1207,10 +1207,8 @@
npte = pmap_pa2pte((vaddr_t)gdt - KERNBASE);
npte |= PG_RO | pg_nx | PG_V;
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(pte), npte);
xpq_flush_queue();
- xpq_queue_unlock();
}
XENPRINTK(("loading gdt %lx, %d entries\n", frames[0] << PAGE_SHIFT,
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/i386/include/pmap.h
--- a/sys/arch/i386/include/pmap.h Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/i386/include/pmap.h Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.109.2.2 2011/08/20 19:22:46 cherry Exp $ */
+/* $NetBSD: pmap.h,v 1.109.2.3 2011/09/20 18:57:51 cherry Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -369,9 +369,7 @@
pmap_pte_set(pt_entry_t *pte, pt_entry_t npte)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(pte), npte);
- xpq_queue_unlock();
splx(s);
}
@@ -379,14 +377,12 @@
pmap_pte_cas(volatile pt_entry_t *ptep, pt_entry_t o, pt_entry_t n)
{
int s = splvm();
- xpq_queue_lock();
pt_entry_t opte = *ptep;
if (opte == o) {
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(ptep)), n);
xpq_flush_queue();
}
- xpq_queue_unlock();
splx(s);
return opte;
}
@@ -395,12 +391,10 @@
pmap_pte_testset(volatile pt_entry_t *pte, pt_entry_t npte)
{
int s = splvm();
- xpq_queue_lock();
pt_entry_t opte = *pte;
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)),
npte);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
return opte;
}
@@ -409,10 +403,8 @@
pmap_pte_setbits(volatile pt_entry_t *pte, pt_entry_t bits)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)), (*pte) | bits);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
@@ -420,11 +412,9 @@
pmap_pte_clearbits(volatile pt_entry_t *pte, pt_entry_t bits)
{
int s = splvm();
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(__UNVOLATILE(pte)),
(*pte) & ~bits);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
@@ -432,9 +422,7 @@
pmap_pte_flush(void)
{
int s = splvm();
- xpq_queue_lock();
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/x86/include/pmap.h
--- a/sys/arch/x86/include/pmap.h Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/x86/include/pmap.h Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.38.2.2 2011/06/23 14:19:48 cherry Exp $ */
+/* $NetBSD: pmap.h,v 1.38.2.3 2011/09/20 18:57:52 cherry Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -431,11 +431,8 @@
xpmap_update (pt_entry_t *pte, pt_entry_t npte)
{
int s = splvm();
-
- xpq_queue_lock();
xpq_queue_pte_update(xpmap_ptetomach(pte), npte);
xpq_flush_queue();
- xpq_queue_unlock();
splx(s);
}
diff -r a9aafb2aff50 -r 9a8c5ccfb0dd sys/arch/x86/x86/pmap.c
--- a/sys/arch/x86/x86/pmap.c Sun Sep 18 18:54:32 2011 +0000
+++ b/sys/arch/x86/x86/pmap.c Tue Sep 20 18:57:50 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.121.2.7 2011/09/09 11:38:20 cherry Exp $ */
+/* $NetBSD: pmap.c,v 1.121.2.8 2011/09/20 18:57:52 cherry Exp $ */
/*-
* Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
@@ -171,7 +171,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.121.2.7 2011/09/09 11:38:20 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.121.2.8 2011/09/20 18:57:52 cherry Exp $");
#include "opt_user_ldt.h"
#include "opt_lockdebug.h"
@@ -1378,9 +1378,7 @@
HYPERVISOR_update_va_mapping(xen_dummy_user_pgd + KERNBASE,
pmap_pa2pte(xen_dummy_user_pgd) | PG_u | PG_V, UVMF_INVLPG);
/* Pin as L4 */
- xpq_queue_lock();
xpq_queue_pin_l4_table(xpmap_ptom_masked(xen_dummy_user_pgd));
- xpq_queue_unlock();
#endif /* __x86_64__ */
idt_vaddr = virtual_avail; /* don't need pte */
idt_paddr = avail_start; /* steal a page */
@@ -1495,7 +1493,6 @@
if (newp < (NKL2_KIMG_ENTRIES * NBPD_L2))
HYPERVISOR_update_va_mapping (newp + KERNBASE,
xpmap_ptom_masked(newp) | PG_u | PG_V, UVMF_INVLPG);
- xpq_queue_lock();
/* Update the pmap_kernel() L4 shadow */
xpq_queue_pte_update (
xpmap_ptom_masked(pdes_pa)
@@ -1508,7 +1505,6 @@
pl_i(0, PTP_LEVELS) *
sizeof(pd_entry_t)),
pmap_kernel()->pm_pdir[pl_i(0, PTP_LEVELS)]);
- xpq_queue_unlock();
pmap_pte_flush();
level--;
@@ -2094,21 +2090,16 @@
continue;
#endif
- xpq_queue_lock();
#ifdef __x86_64__
xpq_queue_pin_l4_table(xpmap_ptom_masked(pdirpa));
#else
xpq_queue_pin_l2_table(xpmap_ptom_masked(pdirpa));
#endif
- xpq_queue_unlock();
-
}
#ifdef PAE
object = ((vaddr_t)pdir) + PAGE_SIZE * l2tol3(PDIR_SLOT_PTE);
(void)pmap_extract(pmap_kernel(), object, &pdirpa);
- xpq_queue_lock();
Home |
Main Index |
Thread Index |
Old Index