Date: Sat, 25 Dec 2004 06:41:17 GMT From: Julian Elischer <julian@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 67662 for review Message-ID: <200412250641.iBP6fHsP007870@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=67662 Change 67662 by julian@julian_ref on 2004/12/25 06:40:46 IFC@67661 Affected files ... .. //depot/projects/nsched/sys/alpha/alpha/pmap.c#13 integrate .. //depot/projects/nsched/sys/amd64/amd64/pmap.c#27 integrate .. //depot/projects/nsched/sys/amd64/isa/isa.c#2 integrate .. //depot/projects/nsched/sys/arm/arm/intr.c#5 integrate .. //depot/projects/nsched/sys/arm/arm/pmap.c#10 integrate .. //depot/projects/nsched/sys/arm/arm/swtch.S#6 integrate .. //depot/projects/nsched/sys/arm/conf/SIMICS#5 integrate .. //depot/projects/nsched/sys/arm/include/atomic.h#3 integrate .. //depot/projects/nsched/sys/arm/sa11x0/assabet_machdep.c#8 integrate .. //depot/projects/nsched/sys/arm/sa11x0/sa11x0_irqhandler.c#3 integrate .. //depot/projects/nsched/sys/arm/xscale/i80321/i80321_pci.c#2 integrate .. //depot/projects/nsched/sys/boot/Makefile#5 integrate .. //depot/projects/nsched/sys/boot/alpha/boot1/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/alpha/cdboot/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/alpha/common/Makefile.common#3 integrate .. //depot/projects/nsched/sys/boot/alpha/netboot/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/arc/loader/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/i386/boot0/Makefile#4 integrate .. //depot/projects/nsched/sys/boot/i386/btx/btx/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/i386/btx/btxldr/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/i386/btx/lib/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/i386/cdboot/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/i386/kgzldr/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/i386/loader/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/i386/mbr/Makefile#4 integrate .. //depot/projects/nsched/sys/boot/ia64/efi/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/ia64/ski/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/pc98/boot0.5/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/pc98/boot0/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/pc98/boot2/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/pc98/btx/btx/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/pc98/btx/btxldr/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/pc98/btx/lib/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/pc98/kgzldr/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/pc98/loader/Makefile#3 integrate .. //depot/projects/nsched/sys/boot/powerpc/loader/Makefile#4 integrate .. //depot/projects/nsched/sys/boot/sparc64/boot1/Makefile#2 integrate .. //depot/projects/nsched/sys/boot/sparc64/loader/Makefile#3 integrate .. //depot/projects/nsched/sys/conf/NOTES#25 integrate .. //depot/projects/nsched/sys/conf/files.amd64#12 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/fil.c#5 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_auth.c#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_compat.h#4 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_fil.c#7 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_fil.h#5 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_frag.c#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_log.c#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_nat.c#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_nat.h#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_proxy.c#2 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_state.c#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/ip_state.h#3 integrate .. //depot/projects/nsched/sys/contrib/ipfilter/netinet/mlfk_ipl.c#3 integrate .. //depot/projects/nsched/sys/contrib/pf/net/pf.c#11 integrate .. //depot/projects/nsched/sys/crypto/rijndael/Makefile#3 integrate .. //depot/projects/nsched/sys/dev/aac/aac_pci.c#7 integrate .. //depot/projects/nsched/sys/dev/acpica/acpi_cmbat.c#10 integrate .. //depot/projects/nsched/sys/dev/acpica/acpi_pci_link.c#11 integrate .. //depot/projects/nsched/sys/dev/aic7xxx/aicasm/Makefile#3 integrate .. //depot/projects/nsched/sys/dev/ata/ata-chipset.c#18 integrate .. //depot/projects/nsched/sys/dev/ata/ata-lowlevel.c#11 integrate .. //depot/projects/nsched/sys/dev/ath/ath_rate/amrr/amrr.c#2 integrate .. //depot/projects/nsched/sys/dev/ath/ath_rate/onoe/onoe.c#2 integrate .. //depot/projects/nsched/sys/dev/ath/if_ath.c#6 integrate .. //depot/projects/nsched/sys/dev/bge/if_bge.c#11 integrate .. //depot/projects/nsched/sys/dev/bge/if_bgereg.h#6 integrate .. //depot/projects/nsched/sys/dev/bktr/bktr_card.c#3 integrate .. //depot/projects/nsched/sys/dev/bktr/bktr_card.h#3 integrate .. //depot/projects/nsched/sys/dev/bktr/bktr_tuner.c#3 integrate .. //depot/projects/nsched/sys/dev/bktr/bktr_tuner.h#2 integrate .. //depot/projects/nsched/sys/dev/bktr/msp34xx.c#3 integrate .. //depot/projects/nsched/sys/dev/cp/if_cp.c#9 integrate .. //depot/projects/nsched/sys/dev/drm/drm_sysctl.h#2 integrate .. //depot/projects/nsched/sys/dev/fb/vga.c#6 integrate .. //depot/projects/nsched/sys/dev/fxp/if_fxp.c#10 integrate .. //depot/projects/nsched/sys/dev/hptmv/entry.c#2 integrate .. //depot/projects/nsched/sys/dev/ida/ida.c#3 integrate .. //depot/projects/nsched/sys/dev/ida/ida_pci.c#3 integrate .. //depot/projects/nsched/sys/dev/ida/idavar.h#3 integrate .. //depot/projects/nsched/sys/dev/kbd/atkbd.c#3 integrate .. //depot/projects/nsched/sys/dev/kbd/atkbdreg.h#2 integrate .. //depot/projects/nsched/sys/dev/kbd/kbd.c#3 integrate .. //depot/projects/nsched/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/nsched/sys/dev/nmdm/nmdm.c#10 integrate .. //depot/projects/nsched/sys/dev/ofw/ofw_disk.c#4 integrate .. //depot/projects/nsched/sys/dev/patm/genrtab/Makefile#3 integrate .. //depot/projects/nsched/sys/dev/pccbb/pccbb_pci.c#2 integrate .. //depot/projects/nsched/sys/dev/pccbb/pccbbdevid.h#3 integrate .. //depot/projects/nsched/sys/dev/random/randomdev.c#9 integrate .. //depot/projects/nsched/sys/dev/random/randomdev_soft.c#7 integrate .. //depot/projects/nsched/sys/dev/snp/snp.c#8 integrate .. //depot/projects/nsched/sys/dev/sound/usb/uaudio.c#2 integrate .. //depot/projects/nsched/sys/dev/sound/usb/uaudio.h#2 integrate .. //depot/projects/nsched/sys/dev/sound/usb/uaudio_pcm.c#4 integrate .. //depot/projects/nsched/sys/dev/sound/usb/uaudioreg.h#2 integrate .. //depot/projects/nsched/sys/dev/twe/twe.c#4 integrate .. //depot/projects/nsched/sys/dev/twe/tweio.h#2 integrate .. //depot/projects/nsched/sys/dev/usb/ehci.c#8 integrate .. //depot/projects/nsched/sys/dev/usb/ugen.c#10 integrate .. //depot/projects/nsched/sys/dev/usb/uhid.c#9 integrate .. //depot/projects/nsched/sys/dev/usb/ums.c#7 integrate .. //depot/projects/nsched/sys/dev/usb/usb.c#6 integrate .. //depot/projects/nsched/sys/dev/usb/usbdevs#18 integrate .. //depot/projects/nsched/sys/dev/vkbd/vkbd.c#2 integrate .. //depot/projects/nsched/sys/dev/wi/if_wi.c#5 integrate .. //depot/projects/nsched/sys/fs/devfs/devfs_vnops.c#7 integrate .. //depot/projects/nsched/sys/geom/bde/g_bde_lock.c#3 integrate .. //depot/projects/nsched/sys/geom/geom.h#8 integrate .. //depot/projects/nsched/sys/geom/mirror/g_mirror.c#13 integrate .. //depot/projects/nsched/sys/geom/mirror/g_mirror.h#5 integrate .. //depot/projects/nsched/sys/geom/mirror/g_mirror_ctl.c#2 integrate .. //depot/projects/nsched/sys/geom/raid3/g_raid3.c#11 integrate .. //depot/projects/nsched/sys/gnu/ext2fs/ext2_vnops.c#8 integrate .. //depot/projects/nsched/sys/i386/i386/intr_machdep.c#8 integrate .. //depot/projects/nsched/sys/i386/i386/local_apic.c#4 integrate .. //depot/projects/nsched/sys/i386/i386/mp_machdep.c#12 integrate .. //depot/projects/nsched/sys/i386/i386/pmap.c#30 integrate .. //depot/projects/nsched/sys/i386/include/apicreg.h#2 integrate .. //depot/projects/nsched/sys/i386/include/apicvar.h#5 integrate .. //depot/projects/nsched/sys/i386/include/intr_machdep.h#4 integrate .. //depot/projects/nsched/sys/i386/isa/isa.c#4 integrate .. //depot/projects/nsched/sys/ia64/ia64/pmap.c#16 integrate .. //depot/projects/nsched/sys/isa/isa_common.c#2 integrate .. //depot/projects/nsched/sys/isa/isa_common.h#2 integrate .. //depot/projects/nsched/sys/isa/pnp.c#2 integrate .. //depot/projects/nsched/sys/isa/pnpvar.h#2 integrate .. //depot/projects/nsched/sys/kern/init_sysent.c#9 integrate .. //depot/projects/nsched/sys/kern/kern_descrip.c#13 integrate .. //depot/projects/nsched/sys/kern/kern_exec.c#16 integrate .. //depot/projects/nsched/sys/kern/kern_fork.c#19 integrate .. //depot/projects/nsched/sys/kern/kern_switch.c#43 integrate .. //depot/projects/nsched/sys/kern/kern_thread.c#48 integrate .. //depot/projects/nsched/sys/kern/kern_umtx.c#5 integrate .. //depot/projects/nsched/sys/kern/sched_4bsd.c#63 integrate .. //depot/projects/nsched/sys/kern/sched_ule.c#45 integrate .. //depot/projects/nsched/sys/kern/syscalls.c#9 integrate .. //depot/projects/nsched/sys/kern/syscalls.master#9 integrate .. //depot/projects/nsched/sys/kern/tty.c#16 integrate .. //depot/projects/nsched/sys/kern/tty_pty.c#12 integrate .. //depot/projects/nsched/sys/kern/uipc_mbuf.c#9 integrate .. //depot/projects/nsched/sys/kern/uipc_sem.c#3 integrate .. //depot/projects/nsched/sys/kern/uipc_socket.c#17 integrate .. //depot/projects/nsched/sys/kern/uipc_socket2.c#12 integrate .. //depot/projects/nsched/sys/kern/uipc_usrreq.c#15 integrate .. //depot/projects/nsched/sys/kern/vfs_mount.c#13 integrate .. //depot/projects/nsched/sys/kern/vfs_subr.c#18 integrate .. //depot/projects/nsched/sys/modules/Makefile#17 integrate .. //depot/projects/nsched/sys/modules/acpi/acpi_video/Makefile#4 integrate .. //depot/projects/nsched/sys/modules/cp/Makefile#3 integrate .. //depot/projects/nsched/sys/modules/if_gif/Makefile#3 integrate .. //depot/projects/nsched/sys/modules/ipfilter/Makefile#4 integrate .. //depot/projects/nsched/sys/modules/netgraph/Makefile#6 integrate .. //depot/projects/nsched/sys/modules/netgraph/fec/sample_startup#2 delete .. //depot/projects/nsched/sys/modules/pf/Makefile#6 integrate .. //depot/projects/nsched/sys/modules/wlan_ccmp/Makefile#2 integrate .. //depot/projects/nsched/sys/net/bpf.c#11 integrate .. //depot/projects/nsched/sys/net/if_spppsubr.c#9 integrate .. //depot/projects/nsched/sys/net/if_tap.c#8 integrate .. //depot/projects/nsched/sys/net/if_tun.c#8 integrate .. //depot/projects/nsched/sys/net/ppp_tty.c#6 integrate .. //depot/projects/nsched/sys/netgraph/ng_base.c#9 integrate .. //depot/projects/nsched/sys/netgraph/ng_bridge.c#5 integrate .. //depot/projects/nsched/sys/netgraph/ng_sample.c#5 integrate .. //depot/projects/nsched/sys/netinet/tcp_subr.c#13 integrate .. //depot/projects/nsched/sys/netinet/tcp_timer.c#7 integrate .. //depot/projects/nsched/sys/netinet/tcp_var.h#9 integrate .. //depot/projects/nsched/sys/nfsclient/nfs.h#8 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_bio.c#11 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_nfsiod.c#6 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_vfsops.c#9 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_vnops.c#11 integrate .. //depot/projects/nsched/sys/nfsclient/nfsnode.h#7 integrate .. //depot/projects/nsched/sys/pc98/pc98/fd.c#9 integrate .. //depot/projects/nsched/sys/pci/if_sk.c#9 integrate .. //depot/projects/nsched/sys/powerpc/powerpc/pmap.c#12 integrate .. //depot/projects/nsched/sys/sparc64/include/ver.h#2 integrate .. //depot/projects/nsched/sys/sparc64/sparc64/identcpu.c#3 integrate .. //depot/projects/nsched/sys/sparc64/sparc64/pmap.c#9 integrate .. //depot/projects/nsched/sys/sys/filedesc.h#6 integrate .. //depot/projects/nsched/sys/sys/proc.h#43 integrate .. //depot/projects/nsched/sys/sys/syscall.h#9 integrate .. //depot/projects/nsched/sys/sys/syscall.mk#9 integrate .. //depot/projects/nsched/sys/sys/sysproto.h#9 integrate .. //depot/projects/nsched/sys/sys/umtx.h#3 integrate .. //depot/projects/nsched/sys/sys/vnode.h#12 integrate .. //depot/projects/nsched/sys/ufs/ffs/ffs_vnops.c#10 integrate .. //depot/projects/nsched/sys/ufs/ufs/ufs_vnops.c#8 integrate .. //depot/projects/nsched/sys/vm/vm_fault.c#9 integrate .. //depot/projects/nsched/sys/vm/vm_map.c#10 integrate .. //depot/projects/nsched/sys/vm/vm_meter.c#6 integrate .. //depot/projects/nsched/sys/vm/vm_object.c#9 integrate .. //depot/user/julian/julian_ipi/sys/dev/usb/usbdevs#7 edit Differences ... ==== //depot/projects/nsched/sys/alpha/alpha/pmap.c#13 (text+ko) ==== @@ -148,11 +148,12 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.174 2004/11/27 06:51:32 das Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.176 2004/12/23 20:16:09 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> +#include <sys/malloc.h> #include <sys/proc.h> #include <sys/msgbuf.h> #include <sys/vmmeter.h> @@ -334,7 +335,7 @@ static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va); -static vm_page_t _pmap_allocpte(pmap_t pmap, unsigned ptepindex); +static vm_page_t _pmap_allocpte(pmap_t pmap, unsigned ptepindex, int flags); static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m); static int pmap_unuse_pt(pmap_t, vm_offset_t, vm_page_t); #ifdef SMP @@ -1038,24 +1039,28 @@ * mapped correctly. */ static vm_page_t -_pmap_allocpte(pmap, ptepindex) - pmap_t pmap; - unsigned ptepindex; +_pmap_allocpte(pmap_t pmap, unsigned ptepindex, int flags) { pt_entry_t* pte; vm_offset_t ptepa; vm_page_t m; + KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT || + (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK, + ("_pmap_allocpte: flags is neither M_NOWAIT nor M_WAITOK")); + /* * Find or fabricate a new pagetable page */ if ((m = vm_page_alloc(NULL, ptepindex, VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) { - PMAP_UNLOCK(pmap); - vm_page_unlock_queues(); - VM_WAIT; - vm_page_lock_queues(); - PMAP_LOCK(pmap); + if (flags & M_WAITOK) { + PMAP_UNLOCK(pmap); + vm_page_unlock_queues(); + VM_WAIT; + vm_page_lock_queues(); + PMAP_LOCK(pmap); + } /* * Indicate the need to retry. While waiting, the page table @@ -1082,7 +1087,8 @@ pt_entry_t* l1pte = &pmap->pm_lev1[l1index]; pt_entry_t* l2map; if (!pmap_pte_v(l1pte)) { - if (_pmap_allocpte(pmap, NUSERLEV3MAPS + l1index) == NULL) { + if (_pmap_allocpte(pmap, NUSERLEV3MAPS + l1index, + flags) == NULL) { --m->wire_count; vm_page_free(m); return (NULL); @@ -1146,7 +1152,7 @@ * Here if the pte page isn't mapped, or if it has been * deallocated. */ - m = _pmap_allocpte(pmap, ptepindex); + m = _pmap_allocpte(pmap, ptepindex, M_WAITOK); if (m == NULL) goto retry; } @@ -1793,7 +1799,6 @@ * 2. Not wired. * 3. Read access. * 4. No page table pages. - * 5. Tlbflush is deferred to calling procedure. * 6. Page IS managed. * but is *MUCH* faster than pmap_enter... */ @@ -1804,7 +1809,8 @@ register pt_entry_t *pte; int managed; - vm_page_lock_queues(); + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); PMAP_LOCK(pmap); /* @@ -1842,9 +1848,20 @@ } mpte->wire_count++; } else { - mpte = _pmap_allocpte(pmap, ptepindex); - if (mpte == NULL) + mpte = _pmap_allocpte(pmap, ptepindex, + M_NOWAIT); + if (mpte == NULL) { + PMAP_UNLOCK(pmap); + vm_page_busy(m); + vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(m->object); + VM_WAIT; + VM_OBJECT_LOCK(m->object); + vm_page_lock_queues(); + vm_page_wakeup(m); + PMAP_LOCK(pmap); goto retry; + } } } } else { @@ -1888,7 +1905,6 @@ *pte = pmap_phys_to_pte(VM_PAGE_TO_PHYS(m)) | PG_V | PG_KRE | PG_URE | managed; out: alpha_pal_imb(); /* XXX overkill? */ - vm_page_unlock_queues(); PMAP_UNLOCK(pmap); return mpte; } ==== //depot/projects/nsched/sys/amd64/amd64/pmap.c#27 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.511 2004/12/04 22:02:31 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.514 2004/12/23 20:16:09 alc Exp $"); /* * Manages physical address maps. @@ -858,7 +858,7 @@ if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS) { pa = DMAP_TO_PHYS(va); } else { - pde = pmap_pde(kernel_pmap, va); + pde = vtopde(va); if (*pde & PG_PS) { pa = (*pde & ~(NBPDR - 1)) | (va & (NBPDR - 1)); } else { @@ -2007,7 +2007,6 @@ * 2. Not wired. * 3. Read access. * 4. No page table pages. - * 5. Tlbflush is deferred to calling procedure. * 6. Page IS managed. * but is *MUCH* faster than pmap_enter... */ @@ -2018,7 +2017,8 @@ pt_entry_t *pte; vm_paddr_t pa; - vm_page_lock_queues(); + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); PMAP_LOCK(pmap); /* @@ -2053,9 +2053,19 @@ mpte->wire_count++; } else { mpte = _pmap_allocpte(pmap, ptepindex, - M_WAITOK); - if (mpte == NULL) + M_NOWAIT); + if (mpte == NULL) { + PMAP_UNLOCK(pmap); + vm_page_busy(m); + vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(m->object); + VM_WAIT; + VM_OBJECT_LOCK(m->object); + vm_page_lock_queues(); + vm_page_wakeup(m); + PMAP_LOCK(pmap); goto retry; + } } } } else { @@ -2100,7 +2110,6 @@ else pte_store(pte, pa | PG_V | PG_U | PG_MANAGED); out: - vm_page_unlock_queues(); PMAP_UNLOCK(pmap); return mpte; } ==== //depot/projects/nsched/sys/amd64/isa/isa.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/isa/isa.c,v 1.146 2004/03/17 21:45:55 jmg Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/isa/isa.c,v 1.147 2004/12/24 23:03:17 imp Exp $"); /* * Modifications for Intel architecture by Garrett A. Wollman. @@ -59,7 +59,9 @@ #include <sys/param.h> #include <sys/bus.h> +#include <sys/kernel.h> #include <sys/malloc.h> +#include <sys/module.h> #include <machine/bus.h> #include <sys/rman.h> @@ -157,3 +159,8 @@ { return (BUS_TEARDOWN_INTR(device_get_parent(bus), child, r, cookie)); } + +/* + * On this platform, isa can also attach to the legacy bus. + */ +DRIVER_MODULE(isa, legacy, isa_driver, isa_devclass, 0, 0); ==== //depot/projects/nsched/sys/arm/arm/intr.c#5 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.5 2004/11/23 16:31:16 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.6 2004/12/14 18:57:21 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/syslog.h> @@ -122,7 +122,7 @@ arm_handler_execute(void *frame, int irqnb) { struct ithd *ithd; - int i, oldirqstate; + int i; struct intrhand *ih; struct thread *td = curthread; @@ -130,6 +130,7 @@ if (irqnb == 0) irqnb = arm_get_irqnb(frame); arm_mask_irqs(irqnb); + enable_interrupts(I32_bit|F32_bit); while (irqnb != 0) { i = ffs(irqnb) - 1; intrcnt[intrcnt_tab[i]]++; @@ -139,13 +140,11 @@ continue; ih = TAILQ_FIRST(&ithd->it_handlers); if (ih && ih->ih_flags & IH_FAST) { - oldirqstate = disable_interrupts(I32_bit); TAILQ_FOREACH(ih, &ithd->it_handlers, ih_next) { ih->ih_handler(ih->ih_argument ? ih->ih_argument : frame); } - restore_interrupts(oldirqstate); arm_unmask_irqs(1 << i); } else if (ih) ithread_schedule(ithd); ==== //depot/projects/nsched/sys/arm/arm/pmap.c#10 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.20 2004/12/05 22:47:25 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.22 2004/12/23 20:16:10 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -3409,7 +3409,6 @@ * 2. Not wired. * 3. Read access. * 4. No page table pages. - * 5. Tlbflush is deferred to calling procedure. * 6. Page IS managed. * but is *MUCH* faster than pmap_enter... */ @@ -3417,8 +3416,17 @@ vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + + vm_page_busy(m); + vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(m->object); + mtx_lock(&Giant); pmap_enter(pmap, va, m, VM_PROT_READ|VM_PROT_EXECUTE, FALSE); pmap_dcache_wbinv_all(pmap); /* XXX: shouldn't be needed */ + mtx_unlock(&Giant); + VM_OBJECT_LOCK(m->object); + vm_page_lock_queues(); + vm_page_wakeup(m); return (NULL); } ==== //depot/projects/nsched/sys/arm/arm/swtch.S#6 (text+ko) ==== @@ -83,7 +83,7 @@ #include <machine/asm.h> #include <machine/asmacros.h> #include <machine/armreg.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.9 2004/12/12 19:21:58 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.10 2004/12/14 18:45:05 cognet Exp $"); /* @@ -205,7 +205,7 @@ ldr r6, .Lcurpcb str r7, [r6] - ldmfd sp, {r4-r7, pc} + ldmfd sp!, {r4-r7, pc} ENTRY(cpu_switch) stmfd sp!, {r4-r7, lr} ==== //depot/projects/nsched/sys/arm/conf/SIMICS#5 (text+ko) ==== @@ -15,7 +15,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/SIMICS,v 1.6 2004/11/07 23:02:15 cognet Exp $ +# $FreeBSD: src/sys/arm/conf/SIMICS,v 1.7 2004/12/18 17:58:49 cognet Exp $ machine arm ident SIMICS @@ -40,7 +40,6 @@ options UFS_ACL #Support for access control lists options UFS_DIRHASH #Improve performance on big directories options MD_ROOT #MD is a potential root device -options MD_ROOT_SIZE=65535 options ROOTDEVNAME=\"ufs:md0\" options NFSCLIENT #Network Filesystem Client options NFSSERVER #Network Filesystem Server ==== //depot/projects/nsched/sys/arm/include/atomic.h#3 (text+ko) ==== @@ -33,7 +33,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/atomic.h,v 1.3 2004/11/05 23:48:12 cognet Exp $ + * $FreeBSD: src/sys/arm/include/atomic.h,v 1.4 2004/12/18 17:43:01 cognet Exp $ */ #ifndef _MACHINE_ATOMIC_H_ @@ -75,7 +75,7 @@ __swp(uint32_t val, volatile uint32_t *ptr) { __asm __volatile("swp %0, %1, [%2]" - : "=r" (val) : "r" (val) , "r" (ptr) : "memory"); + : "=&r" (val) : "r" (val) , "r" (ptr) : "memory"); return (val); } ==== //depot/projects/nsched/sys/arm/sa11x0/assabet_machdep.c#8 (text+ko) ==== @@ -47,7 +47,7 @@ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.7 2004/11/20 16:51:32 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.8 2004/12/18 17:58:49 cognet Exp $"); #include "opt_md.h" @@ -134,7 +134,7 @@ struct pcpu *pcpup = &__pcpu; #ifndef MD_ROOT_SIZE -#error SIMICS needs MD_ROOT and MD_ROOT_SIZE +#define MD_ROOT_SIZE 65535 #endif /* Physical and virtual addresses for some global pages */ @@ -400,14 +400,14 @@ pmap_curmaxkvaddr = freemempos + KERNEL_PT_VMDATA_NUM * 0x400000; - pmap_bootstrap(KERNEL_VM_BASE, + pmap_bootstrap(freemempos, 0xd0000000, &kernel_l1pt); mutex_init(); - phys_avail[0] = round_page(freemempos); + phys_avail[0] = round_page(virtual_avail); phys_avail[1] = 0xc0000000 + 0x02000000 - 1; phys_avail[2] = 0; phys_avail[3] = 0; ==== //depot/projects/nsched/sys/arm/sa11x0/sa11x0_irqhandler.c#3 (text+ko) ==== @@ -76,7 +76,7 @@ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_irqhandler.c,v 1.2 2004/09/23 22:33:38 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_irqhandler.c,v 1.3 2004/12/18 17:58:49 cognet Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -115,16 +115,26 @@ return(bus_space_read_4(sc->sc_iot, sc->sc_ioh, SAIPIC_IP)); } +static uint32_t sa11x0_irq_mask = 0xfffffff; + +extern vm_offset_t saipic_base; + void arm_mask_irqs(int irq) { - /* XXX */ + + sa11x0_irq_mask &= ~irq; + __asm __volatile("str %0, [%1, #0x04]" /* SAIPIC_MR */ + : : "r" (sa11x0_irq_mask), "r" (saipic_base)); } void arm_unmask_irqs(int irq) { - /* XXX */ + + sa11x0_irq_mask |= irq; + __asm __volatile("str %0, [%1, #0x04]" /* SAIPIC_MR */ + : : "r" (sa11x0_irq_mask), "r" (saipic_base)); } void stray_irqhandler(void *); ==== //depot/projects/nsched/sys/arm/xscale/i80321/i80321_pci.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_pci.c,v 1.1 2004/09/23 22:45:36 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_pci.c,v 1.2 2004/12/21 11:36:09 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -236,7 +236,7 @@ struct i80321_pci_softc *sc = device_get_softc(dev); uint32_t addr; - if (i80321_pci_conf_setup(sc, bus, slot, func, reg, &addr)) + if (i80321_pci_conf_setup(sc, bus, slot, func, reg & ~3, &addr)) return; @@ -244,10 +244,12 @@ addr); switch (bytes) { case 1: - bus_space_write_1(sc->sc_st, sc->sc_atu_sh, ATU_OCCDR, data); + bus_space_write_1(sc->sc_st, sc->sc_atu_sh, ATU_OCCDR + + (reg & 3), data); break; case 2: - bus_space_write_2(sc->sc_st, sc->sc_atu_sh, ATU_OCCDR, data); + bus_space_write_2(sc->sc_st, sc->sc_atu_sh, ATU_OCCDR + + (reg & 3), data); break; case 4: bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_OCCDR, data); @@ -266,7 +268,6 @@ int func; uint32_t busno; struct i80321_pci_softc *sc = device_get_softc(pcib); - bus = pci_get_bus(dev); device = pci_get_slot(dev); func = pci_get_function(dev); @@ -293,6 +294,10 @@ goto no_mapping; /* IQ80321 PCI */ case 4: /* i82544 Gig-E */ + case 8: /* + * Apparently you can set the device for the ethernet adapter + * to 8 with a jumper, so handle that as well + */ if (pin == 1) return (ICU_INT_XINT(0)); goto no_mapping; @@ -362,7 +367,10 @@ case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; bt = sc->sc_pcimem; - bh = sc->sc_mem; + bh = (start >= 0x80000000 && start < 0x84000000) ? 0x80000000 : + sc->sc_mem; + start &= (0x1000000 - 1); + end &= (0x1000000 - 1); break; case SYS_RES_IOPORT: rm = &sc->sc_io_rman; ==== //depot/projects/nsched/sys/boot/Makefile#5 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/sys/boot/Makefile,v 1.25 2004/11/23 05:52:00 marcel Exp $ +# $FreeBSD: src/sys/boot/Makefile,v 1.26 2004/12/21 12:32:13 ru Exp $ -.if !defined(NOFORTH) +.if !defined(NO_FORTH) # Build the add-in FORTH interpreter. SUBDIR+= ficl .endif ==== //depot/projects/nsched/sys/boot/alpha/boot1/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ # $NetBSD: Makefile,v 1.15 1998/03/28 00:21:35 thorpej Exp $ -# $FreeBSD: src/sys/boot/alpha/boot1/Makefile,v 1.17 2004/02/11 22:01:17 ru Exp $ +# $FreeBSD: src/sys/boot/alpha/boot1/Makefile,v 1.18 2004/12/21 08:47:11 ru Exp $ PROG= boot1.sym INTERNALPROG= -NOMAN= +NO_MAN= LINKS= ${BINDIR}/boot1 ${BINDIR}/boot .PATH: ${.CURDIR}/../libalpha ==== //depot/projects/nsched/sys/boot/alpha/cdboot/Makefile#2 (text+ko) ==== @@ -1,7 +1,7 @@ -# $FreeBSD: src/sys/boot/alpha/cdboot/Makefile,v 1.8 2004/02/11 22:01:17 ru Exp $ +# $FreeBSD: src/sys/boot/alpha/cdboot/Makefile,v 1.9 2004/12/21 08:47:12 ru Exp $ BOOT= cdboot -NOMAN= +NO_MAN= NEWVERSWHAT= "SRM CD9660 boot" alpha LOAD_ADDRESS= ${PRIMARY_LOAD_ADDRESS} ==== //depot/projects/nsched/sys/boot/alpha/common/Makefile.common#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/alpha/common/Makefile.common,v 1.19 2004/08/22 00:26:01 marcel Exp $ +# $FreeBSD: src/sys/boot/alpha/common/Makefile.common,v 1.20 2004/12/21 12:32:13 ru Exp $ # # Common Alpha loader build rules @@ -15,7 +15,7 @@ .PATH: ${.CURDIR}/../libalpha -.if !defined(NOFORTH) +.if !defined(NO_FORTH) # Enable BootForth BOOT_FORTH= yes CFLAGS+= -DBOOT_FORTH ==== //depot/projects/nsched/sys/boot/alpha/netboot/Makefile#2 (text+ko) ==== @@ -1,8 +1,8 @@ -# $FreeBSD: src/sys/boot/alpha/netboot/Makefile,v 1.11 2004/02/11 22:01:17 ru Exp $ +# $FreeBSD: src/sys/boot/alpha/netboot/Makefile,v 1.12 2004/12/21 08:47:12 ru Exp $ # $NetBSD: Makefile,v 1.12 1998/02/19 14:18:36 drochner Exp $ BOOT= netboot -NOMAN= +NO_MAN= NEWVERSWHAT= "SRM net boot" alpha LOAD_ADDRESS= ${PRIMARY_LOAD_ADDRESS} ==== //depot/projects/nsched/sys/boot/arc/loader/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ # $NetBSD: Makefile,v 1.12 1998/02/19 14:18:36 drochner Exp $ -# $FreeBSD: src/sys/boot/arc/loader/Makefile,v 1.7 2002/05/10 09:26:30 obrien Exp $ +# $FreeBSD: src/sys/boot/arc/loader/Makefile,v 1.8 2004/12/21 08:47:12 ru Exp $ BASE= loader PROG= ${BASE}.exe -NOMAN= +NO_MAN= NEWVERSWHAT= "ARC disk boot" ${MACHINE_ARCH} .PATH: ${.CURDIR}/../common ==== //depot/projects/nsched/sys/boot/i386/boot0/Makefile#4 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/i386/boot0/Makefile,v 1.30 2004/08/27 00:18:03 obrien Exp $ +# $FreeBSD: src/sys/boot/i386/boot0/Makefile,v 1.31 2004/12/21 08:47:13 ru Exp $ PROG?= boot0 STRIP= BINMODE=${NOBINMODE} -NOMAN= +NO_MAN= SRCS= ${PROG}.S # The default set of flags compiled into boot0. This enables update (writing ==== //depot/projects/nsched/sys/boot/i386/btx/btx/Makefile#3 (text+ko) ==== @@ -1,8 +1,8 @@ -# $FreeBSD: src/sys/boot/i386/btx/btx/Makefile,v 1.18 2004/04/27 19:45:15 ru Exp $ +# $FreeBSD: src/sys/boot/i386/btx/btx/Makefile,v 1.19 2004/12/21 08:47:13 ru Exp $ PROG= btx INTERNALPROG= -NOMAN= +NO_MAN= SRCS= btx.S .if defined(PAGING) ==== //depot/projects/nsched/sys/boot/i386/btx/btxldr/Makefile#3 (text+ko) ==== @@ -1,8 +1,8 @@ -# $FreeBSD: src/sys/boot/i386/btx/btxldr/Makefile,v 1.17 2004/04/27 19:45:16 ru Exp $ +# $FreeBSD: src/sys/boot/i386/btx/btxldr/Makefile,v 1.18 2004/12/21 08:47:13 ru Exp $ PROG= btxldr INTERNALPROG= -NOMAN= +NO_MAN= SRCS= btxldr.S CFLAGS+=-DLOADER_ADDRESS=${LOADER_ADDRESS} ==== //depot/projects/nsched/sys/boot/i386/btx/lib/Makefile#2 (text+ko) ==== @@ -1,8 +1,8 @@ -# $FreeBSD: src/sys/boot/i386/btx/lib/Makefile,v 1.12 2004/02/09 14:11:57 ru Exp $ +# $FreeBSD: src/sys/boot/i386/btx/lib/Makefile,v 1.13 2004/12/21 08:47:14 ru Exp $ PROG= crt0.o INTERNALPROG= -NOMAN= +NO_MAN= SRCS= btxcsu.s btxsys.s btxv86.s LDFLAGS=-Wl,-r ==== //depot/projects/nsched/sys/boot/i386/cdboot/Makefile#3 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/i386/cdboot/Makefile,v 1.12 2004/04/28 21:31:20 ru Exp $ +# $FreeBSD: src/sys/boot/i386/cdboot/Makefile,v 1.13 2004/12/21 08:47:14 ru Exp $ PROG= cdboot STRIP= BINMODE=${NOBINMODE} -NOMAN= +NO_MAN= SRCS= ${PROG}.s ORG= 0x7c00 ==== //depot/projects/nsched/sys/boot/i386/kgzldr/Makefile#2 (text+ko) ==== @@ -1,15 +1,15 @@ -# $FreeBSD: src/sys/boot/i386/kgzldr/Makefile,v 1.20 2004/02/12 22:06:33 ru Exp $ +# $FreeBSD: src/sys/boot/i386/kgzldr/Makefile,v 1.22 2004/12/21 09:59:44 ru Exp $ PROG= kgzldr.o STRIP= BINMODE=${LIBMODE} BINDIR= ${LIBDIR} -NOMAN= +NO_MAN= SRCS= start.s boot.c inflate.c lib.c crt.s sio.s CFLAGS= -Os CFLAGS+=-DKZIP -NOSHARED= +NO_SHARED= LDFLAGS=-Wl,-r .PATH: ${.CURDIR}/../../../kern ==== //depot/projects/nsched/sys/boot/i386/loader/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/i386/loader/Makefile,v 1.78 2004/11/29 09:31:04 ru Exp $ +# $FreeBSD: src/sys/boot/i386/loader/Makefile,v 1.79 2004/12/21 12:32:14 ru Exp $ PROG= loader.sym INTERNALPROG= @@ -18,7 +18,7 @@ HAVE_PNP= yes HAVE_ISABUS= yes -.if !defined(NOFORTH) +.if !defined(NO_FORTH) # Enable BootForth BOOT_FORTH= yes CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386 ==== //depot/projects/nsched/sys/boot/i386/mbr/Makefile#4 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/i386/mbr/Makefile,v 1.14 2004/08/28 08:39:35 yar Exp $ +# $FreeBSD: src/sys/boot/i386/mbr/Makefile,v 1.15 2004/12/21 08:47:15 ru Exp $ PROG= mbr STRIP= BINMODE=${NOBINMODE} -NOMAN= +NO_MAN= SRCS= ${PROG}.s # MBR flags: 0x80 -- try packet interface (also known as EDD or LBA) ==== //depot/projects/nsched/sys/boot/ia64/efi/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/ia64/efi/Makefile,v 1.24 2004/11/28 00:26:11 marcel Exp $ +# $FreeBSD: src/sys/boot/ia64/efi/Makefile,v 1.26 2004/12/21 12:32:14 ru Exp $ PROG= loader.sym INTERNALPROG= SRCS= conf.c dev_net.c efimd.c main.c start.S vers.c -NOMAN= +NO_MAN= CFLAGS+= -DLOADER CFLAGS+= -I${.CURDIR}/../../efi/include @@ -11,7 +11,7 @@ CFLAGS+= -I${.CURDIR}/../../efi/libefi CFLAGS+= -I${.CURDIR}/../../../../lib/libstand -.if !defined(NOFORTH) +.if !defined(NO_FORTH) BOOT_FORTH= yes CFLAGS+= -DBOOT_FORTH CFLAGS+= -I${.CURDIR}/../../ficl ==== //depot/projects/nsched/sys/boot/ia64/ski/Makefile#2 (text+ko) ==== @@ -1,7 +1,7 @@ -# $FreeBSD: src/sys/boot/ia64/ski/Makefile,v 1.16 2004/09/24 04:06:22 marcel Exp $ +# $FreeBSD: src/sys/boot/ia64/ski/Makefile,v 1.18 2004/12/21 12:32:14 ru Exp $ PROG= skiload -NOMAN= +NO_MAN= NEWVERSWHAT= "ia64 SKI boot" ${MACHINE_ARCH} STRIP= # We must not strip skiload at install time. @@ -16,7 +16,7 @@ CFLAGS+= -I${.CURDIR}/../../efi/include/${MACHINE_ARCH} LDFLAGS= -Wl,-T${.CURDIR}/ldscript.ia64 -.if !defined(NOFORTH) +.if !defined(NO_FORTH) CFLAGS+= -DBOOT_FORTH CFLAGS+= -I${.CURDIR}/../../ficl CFLAGS+= -I${.CURDIR}/../../ficl/${MACHINE_ARCH} ==== //depot/projects/nsched/sys/boot/pc98/boot0.5/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/pc98/boot0.5/Makefile,v 1.3 2004/02/09 16:01:45 nyan Exp $ +# $FreeBSD: src/sys/boot/pc98/boot0.5/Makefile,v 1.4 2004/12/21 08:47:16 ru Exp $ PROG= ${BOOT}.out INTERNALPROG= FILES= ${BOOT} -NOMAN= +NO_MAN= SRCS= start.s boot.s boot0.5.s disk.s selector.s support.s syscons.s CLEANFILES= ${BOOT} ${BOOT}.bin ==== //depot/projects/nsched/sys/boot/pc98/boot0/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/sys/boot/pc98/boot0/Makefile,v 1.3 2004/02/09 16:01:45 nyan Exp $ >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412250641.iBP6fHsP007870>