Date: Sun, 9 Nov 2003 17:07:45 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 41850 for review Message-ID: <200311100107.hAA17jmx056901@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=41850 Change 41850 by jhb@jhb_laptop on 2003/11/09 17:06:45 IFC @41847. Affected files ... .. //depot/projects/smpng/sys/alpha/alpha/machdep.c#63 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#15 integrate .. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#6 integrate .. //depot/projects/smpng/sys/boot/ia64/libski/pal_stub.S#2 integrate .. //depot/projects/smpng/sys/boot/ia64/skiload/Makefile#9 integrate .. //depot/projects/smpng/sys/cam/cam_periph.c#15 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#17 integrate .. //depot/projects/smpng/sys/cam/scsi/scsi_target.c#12 integrate .. //depot/projects/smpng/sys/coda/coda_psdev.c#12 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_proto.h#3 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate .. //depot/projects/smpng/sys/compat/freebsd32/syscalls.master#3 integrate .. //depot/projects/smpng/sys/compat/ia32/ia32_signal.h#4 integrate .. //depot/projects/smpng/sys/compat/ia32/ia32_sysvec.c#5 integrate .. //depot/projects/smpng/sys/compat/linux/linux_socket.c#13 integrate .. //depot/projects/smpng/sys/dev/aac/aac.c#32 integrate .. //depot/projects/smpng/sys/dev/aha/aha.c#11 integrate .. //depot/projects/smpng/sys/dev/aha/aha_isa.c#6 integrate .. //depot/projects/smpng/sys/dev/aha/aha_mca.c#6 integrate .. //depot/projects/smpng/sys/dev/aha/ahareg.h#2 integrate .. //depot/projects/smpng/sys/dev/ata/ata-raid.c#24 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-cam.c#14 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-cd.c#40 integrate .. //depot/projects/smpng/sys/dev/bktr/bktr_core.c#12 integrate .. //depot/projects/smpng/sys/dev/dcons/dcons_crom.c#2 integrate .. //depot/projects/smpng/sys/dev/firewire/firewire.c#27 integrate .. //depot/projects/smpng/sys/dev/kbd/kbd.c#10 integrate .. //depot/projects/smpng/sys/dev/nmdm/nmdm.c#16 integrate .. //depot/projects/smpng/sys/dev/random/randomdev.c#16 integrate .. //depot/projects/smpng/sys/dev/sab/sab.c#13 integrate .. //depot/projects/smpng/sys/dev/snp/snp.c#13 integrate .. //depot/projects/smpng/sys/dev/sound/midi/midibuf.c#5 integrate .. //depot/projects/smpng/sys/dev/sound/pcm/channel.c#22 integrate .. //depot/projects/smpng/sys/dev/usb/ehci.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/ohci.c#25 integrate .. //depot/projects/smpng/sys/dev/usb/ucom.c#13 integrate .. //depot/projects/smpng/sys/dev/usb/ugen.c#20 integrate .. //depot/projects/smpng/sys/dev/usb/uhci.c#28 integrate .. //depot/projects/smpng/sys/dev/usb/uhid.c#18 integrate .. //depot/projects/smpng/sys/dev/usb/ums.c#14 integrate .. //depot/projects/smpng/sys/dev/usb/usb.c#23 integrate .. //depot/projects/smpng/sys/dev/usb/usb_ethersubr.c#9 integrate .. //depot/projects/smpng/sys/dev/usb/usb_port.h#18 integrate .. //depot/projects/smpng/sys/dev/usb/usbdi.c#15 integrate .. //depot/projects/smpng/sys/dev/usb/uvisor.c#8 integrate .. //depot/projects/smpng/sys/dev/zs/zs.c#10 integrate .. //depot/projects/smpng/sys/i386/bios/apm.c#6 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#67 integrate .. //depot/projects/smpng/sys/i386/isa/asc.c#7 integrate .. //depot/projects/smpng/sys/i386/isa/cx.c#11 integrate .. //depot/projects/smpng/sys/i386/isa/istallion.c#10 integrate .. //depot/projects/smpng/sys/i386/isa/mse.c#9 integrate .. //depot/projects/smpng/sys/i386/isa/spic.c#8 integrate .. //depot/projects/smpng/sys/i386/isa/stallion.c#12 integrate .. //depot/projects/smpng/sys/i4b/driver/i4b_rbch.c#11 integrate .. //depot/projects/smpng/sys/i4b/driver/i4b_tel.c#9 integrate .. //depot/projects/smpng/sys/i4b/layer4/i4b_i4bdrv.c#15 integrate .. //depot/projects/smpng/sys/ia64/conf/GENERIC#35 integrate .. //depot/projects/smpng/sys/ia64/conf/GENERIC.hints#5 integrate .. //depot/projects/smpng/sys/ia64/ia64/machdep.c#69 integrate .. //depot/projects/smpng/sys/ia64/ia64/syscall.S#6 integrate .. //depot/projects/smpng/sys/ia64/ia64/vm_machdep.c#35 integrate .. //depot/projects/smpng/sys/ia64/include/ucontext.h#5 integrate .. //depot/projects/smpng/sys/isa/psm.c#19 integrate .. //depot/projects/smpng/sys/kern/kern_condvar.c#31 integrate .. //depot/projects/smpng/sys/kern/kern_context.c#6 integrate .. //depot/projects/smpng/sys/kern/kern_event.c#22 integrate .. //depot/projects/smpng/sys/kern/kern_poll.c#11 integrate .. //depot/projects/smpng/sys/kern/sched_4bsd.c#17 integrate .. //depot/projects/smpng/sys/kern/subr_log.c#12 integrate .. //depot/projects/smpng/sys/kern/sys_generic.c#28 integrate .. //depot/projects/smpng/sys/kern/sys_pipe.c#37 integrate .. //depot/projects/smpng/sys/kern/tty.c#37 integrate .. //depot/projects/smpng/sys/kern/tty_pty.c#26 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#43 integrate .. //depot/projects/smpng/sys/kern/uipc_socket2.c#28 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#62 integrate .. //depot/projects/smpng/sys/net/bpf.c#29 integrate .. //depot/projects/smpng/sys/net/if_ppp.c#22 integrate .. //depot/projects/smpng/sys/net/if_tap.c#22 integrate .. //depot/projects/smpng/sys/net/if_tun.c#27 integrate .. //depot/projects/smpng/sys/net/netisr.c#6 integrate .. //depot/projects/smpng/sys/net/netisr.h#6 integrate .. //depot/projects/smpng/sys/net/route.c#14 integrate .. //depot/projects/smpng/sys/net/route.h#14 integrate .. //depot/projects/smpng/sys/net/rtsock.c#28 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.c#9 integrate .. //depot/projects/smpng/sys/netatalk/aarp.c#9 integrate .. //depot/projects/smpng/sys/netatalk/ddp_input.c#8 integrate .. //depot/projects/smpng/sys/netatalk/ddp_usrreq.c#15 integrate .. //depot/projects/smpng/sys/netatm/atm_subr.c#15 integrate .. //depot/projects/smpng/sys/netgraph/ng_base.c#18 integrate .. //depot/projects/smpng/sys/netinet/if_atm.c#6 integrate .. //depot/projects/smpng/sys/netinet/if_ether.c#20 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.c#36 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.h#23 integrate .. //depot/projects/smpng/sys/netinet/in_proto.c#11 integrate .. //depot/projects/smpng/sys/netinet/ip_divert.c#26 integrate .. //depot/projects/smpng/sys/netinet/ip_dummynet.c#23 integrate .. //depot/projects/smpng/sys/netinet/ip_flow.c#5 integrate .. //depot/projects/smpng/sys/netinet/ip_input.c#43 integrate .. //depot/projects/smpng/sys/netinet/ip_mroute.c#28 integrate .. //depot/projects/smpng/sys/netinet/ip_output.c#45 integrate .. //depot/projects/smpng/sys/netinet/ip_var.h#16 integrate .. //depot/projects/smpng/sys/netinet/raw_ip.c#30 integrate .. //depot/projects/smpng/sys/netinet/tcp_input.c#39 integrate .. //depot/projects/smpng/sys/netinet/tcp_output.c#17 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#37 integrate .. //depot/projects/smpng/sys/netinet/tcp_timer.c#14 integrate .. //depot/projects/smpng/sys/netinet/udp_usrreq.c#31 integrate .. //depot/projects/smpng/sys/netinet6/in6.c#16 integrate .. //depot/projects/smpng/sys/netinet6/ip6_input.c#27 integrate .. //depot/projects/smpng/sys/netinet6/ip6_output.c#22 integrate .. //depot/projects/smpng/sys/netinet6/nd6.c#16 integrate .. //depot/projects/smpng/sys/netinet6/nd6_rtr.c#10 integrate .. //depot/projects/smpng/sys/netipx/ipx_input.c#9 integrate .. //depot/projects/smpng/sys/netnatm/natm.c#15 integrate .. //depot/projects/smpng/sys/netnatm/natm_proto.c#10 integrate .. //depot/projects/smpng/sys/pc98/i386/machdep.c#61 integrate .. //depot/projects/smpng/sys/pc98/pc98/mse.c#7 integrate .. //depot/projects/smpng/sys/pccard/mecia.c#3 integrate .. //depot/projects/smpng/sys/pccard/pccard.c#21 integrate .. //depot/projects/smpng/sys/pccard/pcic.c#24 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#44 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#58 integrate .. //depot/projects/smpng/sys/sys/condvar.h#5 integrate .. //depot/projects/smpng/sys/sys/selinfo.h#6 integrate .. //depot/projects/smpng/sys/sys/ucontext.h#8 integrate .. //depot/projects/smpng/sys/vm/vm_fault.c#30 integrate .. //depot/projects/smpng/sys/vm/vm_kern.c#21 integrate .. //depot/projects/smpng/sys/vm/vm_map.c#47 integrate .. //depot/projects/smpng/sys/vm/vm_map.h#24 integrate .. //depot/projects/smpng/sys/vm/vm_mmap.c#34 integrate .. //depot/projects/smpng/sys/vm/vm_object.c#47 integrate .. //depot/projects/smpng/sys/vm/vm_object.h#23 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#63 (text+ko) ==== @@ -88,7 +88,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.213 2003/10/19 02:36:06 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.214 2003/11/09 20:31:02 marcel Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -2027,14 +2027,14 @@ } int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +get_mcontext(struct thread *td, mcontext_t *mcp, int flags) { /* * Use a trapframe for getsetcontext, so just copy the * threads trapframe. */ bcopy(td->td_frame, &mcp->mc_regs, sizeof(struct trapframe)); - if (clear_ret != 0) { + if (flags & GET_MC_CLEAR_RET) { mcp->mc_regs[FRAME_V0] = 0; mcp->mc_regs[FRAME_A4] = 0; mcp->mc_regs[FRAME_A3] = 0; ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#15 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.596 2003/11/08 04:37:54 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.597 2003/11/09 20:31:02 marcel Exp $"); #include "opt_atalk.h" #include "opt_compat.h" @@ -1441,7 +1441,7 @@ * Get machine context. */ int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +get_mcontext(struct thread *td, mcontext_t *mcp, int flags) { struct trapframe *tp; @@ -1462,7 +1462,7 @@ mcp->mc_rbp = tp->tf_rbp; mcp->mc_rbx = tp->tf_rbx; mcp->mc_rcx = tp->tf_rcx; - if (clear_ret != 0) { + if (flags & GET_MC_CLEAR_RET) { mcp->mc_rax = 0; mcp->mc_rdx = 0; } else { ==== //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#6 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.5 2003/11/08 03:33:38 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.6 2003/11/08 07:43:44 peter Exp $"); #include "opt_compat.h" @@ -558,3 +558,44 @@ PROC_UNLOCK(p); return (EJUSTRETURN); } + +/* + * Clear registers on exec + */ +void +ia32_setregs(td, entry, stack, ps_strings) + struct thread *td; + u_long entry; + u_long stack; + u_long ps_strings; +{ + struct trapframe *regs = td->td_frame; + struct pcb *pcb = td->td_pcb; + + wrmsr(MSR_FSBASE, 0); + wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ + pcb->pcb_fsbase = 0; + pcb->pcb_gsbase = 0; + load_ds(_udatasel); + load_es(_udatasel); + load_fs(_udatasel); + load_gs(_udatasel); + pcb->pcb_ds = _udatasel; + pcb->pcb_es = _udatasel; + pcb->pcb_fs = _udatasel; + pcb->pcb_gs = _udatasel; + + bzero((char *)regs, sizeof(struct trapframe)); + regs->tf_rip = entry; + regs->tf_rsp = stack; + regs->tf_rflags = PSL_USER | (regs->tf_rflags & PSL_T); + regs->tf_ss = _udatasel; + regs->tf_cs = _ucode32sel; + regs->tf_rbx = ps_strings; + load_cr0(rcr0() | CR0_MP | CR0_TS); + fpstate_drop(td); + + /* Return via doreti so that we can change to a different %cs */ + pcb->pcb_flags |= PCB_FULLCTX; + td->td_retval[1] = 0; +} ==== //depot/projects/smpng/sys/boot/ia64/libski/pal_stub.S#2 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/ia64/libski/pal_stub.S,v 1.2 2003/07/02 11:47:33 ru Exp $ + * $FreeBSD: src/sys/boot/ia64/libski/pal_stub.S,v 1.3 2003/11/09 07:42:16 marcel Exp $ */ #include <machine/asm.h> @@ -41,6 +41,9 @@ cmp.eq p6,p0=14,r28 // PAL_FREQ_RATIOS (p6) br.cond.dptk pal_freq_ratios ;; + cmp.eq p6,p0=29,r28 // PAL_HALT_LIGHT +(p6) br.cond.dptk pal_halt_light + ;; mov r15=66 // EXIT break.i 0x80000 // SSC ;; @@ -62,4 +65,10 @@ movl r10=0x0000000100000001 // bus ratio 1/1 movl r11=0x0000000B00000002 // ITC ratio 11/2 br.sptk b0 +pal_halt_light: + mov r8=0 + mov r9=0 + mov r10=0 + mov r11=0 + br.sptk b0 END(PalProc) ==== //depot/projects/smpng/sys/boot/ia64/skiload/Makefile#9 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.11 2003/07/17 01:49:59 marcel Exp $ +# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.12 2003/11/09 06:53:37 marcel Exp $ .PATH: ${.CURDIR}/../common @@ -6,6 +6,7 @@ NOMAN= NEWVERSWHAT= "ia64 SKI boot" ${MACHINE_ARCH} BINDIR?= /boot +STRIP= # We must not strip skiload at install time. SRCS+= conf.c main.c start.S ==== //depot/projects/smpng/sys/cam/cam_periph.c#15 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.55 2003/10/27 06:15:54 ken Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.56 2003/11/08 10:56:57 scottl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -969,13 +969,13 @@ if (sense_key != SSD_KEY_NO_SENSE) { saved_ccb->ccb_h.status |= CAM_AUTOSNS_VALID; +#if 0 xpt_print_path(saved_ccb->ccb_h.path); printf("Recovered Sense\n"); -#if 0 scsi_sense_print(&saved_ccb->csio); -#endif cam_error_print(saved_ccb, CAM_ESF_ALL, CAM_EPF_ALL); +#endif xpt_done_ccb = TRUE; } } ==== //depot/projects/smpng/sys/cam/cam_xpt.c#17 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.134 2003/06/10 17:50:20 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.135 2003/11/09 02:22:33 scottl Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -1453,6 +1453,8 @@ int32_t status; struct periph_list *periph_head; + GIANT_REQUIRED; + device = periph->path->device; periph_head = &device->periphs; @@ -1488,6 +1490,8 @@ { struct cam_ed *device; + GIANT_REQUIRED; + device = periph->path->device; if (device != NULL) { @@ -1524,6 +1528,8 @@ u_int mb; int s; + GIANT_REQUIRED; + path = periph->path; /* * To ensure that this is printed in one piece, @@ -1646,6 +1652,8 @@ struct cam_path *path; struct ccb_trans_settings cts; + GIANT_REQUIRED; + path = periph->path; /* * To ensure that this is printed in one piece, @@ -2945,6 +2953,8 @@ { int iopl; + GIANT_REQUIRED; + CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_action\n")); start_ccb->ccb_h.status = CAM_REQ_INPROG; @@ -3578,6 +3588,8 @@ struct cam_devq *devq; struct cam_ed *dev; + GIANT_REQUIRED; + timeout = start_ccb->ccb_h.timeout; sim = start_ccb->ccb_h.path->bus->sim; devq = sim->devq; @@ -3640,6 +3652,8 @@ int s; int runq; + GIANT_REQUIRED; + CAM_DEBUG(perph->path, CAM_DEBUG_TRACE, ("xpt_schedule\n")); device = perph->path->device; s = splsoftcam(); @@ -3936,6 +3950,8 @@ void xpt_merge_ccb(union ccb *master_ccb, union ccb *slave_ccb) { + GIANT_REQUIRED; + /* * Pull fields that are valid for peripheral drivers to set * into the master CCB along with the CCB "payload". @@ -3951,6 +3967,8 @@ void xpt_setup_ccb(struct ccb_hdr *ccb_h, struct cam_path *path, u_int32_t priority) { + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_setup_ccb\n")); ccb_h->pinfo.priority = priority; ccb_h->path = path; @@ -3977,6 +3995,8 @@ struct cam_path *path; cam_status status; + GIANT_REQUIRED; + path = (struct cam_path *)malloc(sizeof(*path), M_DEVBUF, M_NOWAIT); if (path == NULL) { @@ -4087,6 +4107,8 @@ void xpt_free_path(struct cam_path *path) { + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_free_path\n")); xpt_release_path(path); free(path, M_DEVBUF); @@ -4100,6 +4122,8 @@ int xpt_path_comp(struct cam_path *path1, struct cam_path *path2) { + GIANT_REQUIRED; + int retval = 0; if (path1->bus != path2->bus) { @@ -4134,6 +4158,8 @@ void xpt_print_path(struct cam_path *path) { + GIANT_REQUIRED; + if (path == NULL) printf("(nopath): "); else { @@ -4167,6 +4193,8 @@ { struct sbuf sb; + GIANT_REQUIRED; + sbuf_new(&sb, str, str_len, 0); if (path == NULL) @@ -4203,12 +4231,16 @@ path_id_t xpt_path_path_id(struct cam_path *path) { + GIANT_REQUIRED; + return(path->bus->path_id); } target_id_t xpt_path_target_id(struct cam_path *path) { + GIANT_REQUIRED; + if (path->target != NULL) return (path->target->target_id); else @@ -4218,6 +4250,8 @@ lun_id_t xpt_path_lun_id(struct cam_path *path) { + GIANT_REQUIRED; + if (path->device != NULL) return (path->device->lun_id); else @@ -4227,12 +4261,16 @@ struct cam_sim * xpt_path_sim(struct cam_path *path) { + GIANT_REQUIRED; + return (path->bus->sim); } struct cam_periph* xpt_path_periph(struct cam_path *path) { + GIANT_REQUIRED; + return (path->periph); } @@ -4250,6 +4288,8 @@ struct cam_ed *device; struct cam_eb *bus; + GIANT_REQUIRED; + CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_release_ccb\n")); path = free_ccb->ccb_h.path; device = path->device; @@ -4293,6 +4333,8 @@ struct ccb_pathinq cpi; int s; + GIANT_REQUIRED; + sim->bus_id = bus; new_bus = (struct cam_eb *)malloc(sizeof(*new_bus), M_DEVBUF, M_NOWAIT); @@ -4347,6 +4389,8 @@ struct cam_path bus_path; cam_status status; + GIANT_REQUIRED; + status = xpt_compile_path(&bus_path, NULL, pathid, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); if (status != CAM_REQ_CMP) @@ -4443,6 +4487,8 @@ struct cam_ed *device, *next_device; int s; + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_async\n")); /* @@ -4608,6 +4654,8 @@ int s; struct ccb_hdr *ccbh; + GIANT_REQUIRED; + s = splcam(); path->device->qfrozen_cnt += count; @@ -4634,6 +4682,8 @@ u_int32_t xpt_freeze_simq(struct cam_sim *sim, u_int count) { + GIANT_REQUIRED; + sim->devq->send_queue.qfrozen_cnt += count; if (sim->devq->active_dev != NULL) { struct ccb_hdr *ccbh; @@ -4659,6 +4709,8 @@ void xpt_release_devq(struct cam_path *path, u_int count, int run_queue) { + GIANT_REQUIRED; + xpt_release_devq_device(path->device, count, run_queue); } @@ -4717,6 +4769,8 @@ int s; struct camq *sendq; + GIANT_REQUIRED; + sendq = &(sim->devq->send_queue); s = splcam(); if (sendq->qfrozen_cnt > 0) { @@ -4765,6 +4819,8 @@ { int s; + GIANT_REQUIRED; + s = splcam(); CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_done\n")); @@ -4796,6 +4852,8 @@ { union ccb *new_ccb; + GIANT_REQUIRED; + new_ccb = malloc(sizeof(*new_ccb), M_DEVBUF, M_WAITOK); return (new_ccb); } ==== //depot/projects/smpng/sys/cam/scsi/scsi_target.c#12 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.57 2003/10/02 08:56:14 simokawa Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.58 2003/11/09 09:17:20 tanimura Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1119,7 +1119,7 @@ * Notify users sleeping via poll(), kqueue(), and * blocking read(). */ - selwakeup(&softc->read_select); + selwakeuppri(&softc->read_select, PRIBIO); KNOTE(&softc->read_select.si_note, 0); wakeup(&softc->user_ccb_queue); } ==== //depot/projects/smpng/sys/coda/coda_psdev.c#12 (text+ko) ==== @@ -49,7 +49,7 @@ /* These routines are the device entry points for Venus. */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.28 2003/09/10 01:41:15 tjr Exp $"); +__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.29 2003/11/09 09:17:20 tanimura Exp $"); extern int coda_nc_initialized; /* Set if cache has been initialized */ @@ -526,7 +526,7 @@ /* Append msg to request queue and poke Venus. */ INSQUE(vmp->vm_chain, vcp->vc_requests); - selwakeup(&(vcp->vc_selproc)); + selwakeuppri(&(vcp->vc_selproc), coda_call_sleep); /* We can be interrupted while we wait for Venus to process * our request. If the interrupt occurs before Venus has read @@ -664,7 +664,7 @@ /* insert at head of queue! */ INSQUE(svmp->vm_chain, vcp->vc_requests); - selwakeup(&(vcp->vc_selproc)); + selwakeuppri(&(vcp->vc_selproc), coda_call_sleep); } } ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.13 2003/11/07 20:30:30 jhb Exp $ - * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.25 2003/11/07 20:29:53 jhb Exp + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.14 2003/11/08 07:31:49 peter Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.26 2003/11/08 07:31:30 peter Exp */ #ifndef _FREEBSD32_SYSPROTO_H_ ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.13 2003/11/07 20:30:30 jhb Exp $ - * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.25 2003/11/07 20:29:53 jhb Exp + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.14 2003/11/08 07:31:49 peter Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.26 2003/11/08 07:31:30 peter Exp */ #define FREEBSD32_SYS_syscall 0 @@ -67,7 +67,7 @@ /* 63 is obsolete ogetkerninfo */ /* 64 is obsolete ogetpagesize */ /* 65 is obsolete omsync */ - /* 66 is obsolete ovfork */ +#define FREEBSD32_SYS_vfork 66 /* 67 is obsolete vread */ /* 68 is obsolete vwrite */ #define FREEBSD32_SYS_sbrk 69 ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.4 2003/11/07 20:30:30 jhb Exp $ - * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.25 2003/11/07 20:29:53 jhb Exp + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.5 2003/11/08 07:31:49 peter Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.26 2003/11/08 07:31:30 peter Exp */ const char *freebsd32_syscallnames[] = { @@ -73,7 +73,7 @@ "obs_ogetkerninfo", /* 63 = obsolete ogetkerninfo */ "obs_ogetpagesize", /* 64 = obsolete ogetpagesize */ "obs_omsync", /* 65 = obsolete omsync */ - "obs_ovfork", /* 66 = obsolete ovfork */ + "vfork", /* 66 = vfork */ "obs_vread", /* 67 = obsolete vread */ "obs_vwrite", /* 68 = obsolete vwrite */ "sbrk", /* 69 = sbrk */ ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.14 2003/11/07 20:30:30 jhb Exp $ - * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.25 2003/11/07 20:29:53 jhb Exp + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.15 2003/11/08 07:31:49 peter Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.26 2003/11/08 07:31:30 peter Exp */ #include "opt_compat.h" @@ -91,7 +91,7 @@ { 0, (sy_call_t *)nosys }, /* 63 = obsolete ogetkerninfo */ { 0, (sy_call_t *)nosys }, /* 64 = obsolete ogetpagesize */ { 0, (sy_call_t *)nosys }, /* 65 = obsolete omsync */ - { 0, (sy_call_t *)nosys }, /* 66 = obsolete ovfork */ + { SYF_MPSAFE | 0, (sy_call_t *)vfork }, /* 66 = vfork */ { 0, (sy_call_t *)nosys }, /* 67 = obsolete vread */ { 0, (sy_call_t *)nosys }, /* 68 = obsolete vwrite */ { SYF_MPSAFE | AS(sbrk_args), (sy_call_t *)sbrk }, /* 69 = sbrk */ ==== //depot/projects/smpng/sys/compat/freebsd32/syscalls.master#3 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.25 2003/11/07 20:29:53 jhb Exp $ + $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.26 2003/11/08 07:31:30 peter Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 ; from: src/sys/kern/syscalls.master 1.107 ; @@ -81,6 +81,7 @@ 25 MNOPROTO POSIX { uid_t geteuid(void); } 26 MNOPROTO BSD { int ptrace(int req, pid_t pid, caddr_t addr, \ int data); } +; XXX implement 27 UNIMPL BSD recvmsg 28 MNOPROTO BSD { int sendmsg(int s, caddr_t msg, int flags); } 29 MNOPROTO BSD { int recvfrom(int s, caddr_t buf, size_t len, \ @@ -124,8 +125,9 @@ 62 OBSOL POSIX ofstat 63 OBSOL BSD ogetkerninfo 64 OBSOL BSD ogetpagesize +; XXX implement (not OBSOL at all) 65 OBSOL BSD omsync -66 OBSOL BSD ovfork +66 MNOPROTO BSD { int vfork(void); } 67 OBSOL NOHIDE vread 68 OBSOL NOHIDE vwrite 69 MNOPROTO BSD { int sbrk(int incr); } @@ -148,7 +150,9 @@ struct itimerval32 *itv, \ struct itimerval32 *oitv); } 84 OBSOL BSD owait +; XXX implement 85 OBSOL BSD oswapon +; XXX implement 86 OBSOL BSD ogetitimer 87 OBSOL BSD ogethostname 88 OBSOL BSD osethostname @@ -499,7 +503,9 @@ 343 MNOPROTO POSIX { int sigpending(sigset_t *set); } 344 MCOMPAT4 BSD { int freebsd32_sigreturn( \ const struct __ucontext *sigcntxp); } +; XXX implement 345 UNIMPL NOHIDE sigtimedwait +; XXX implement 346 UNIMPL NOHIDE sigwaitinfo 347 MNOPROTO BSD { int __acl_get_file(const char *path, \ acl_type_t type, struct acl *aclp); } @@ -581,6 +587,7 @@ 397 UNIMPL NOHIDE nosys 398 UNIMPL NOHIDE nosys 399 UNIMPL NOHIDE nosys +; XXX implement these? 400 UNIMPL NOHIDE ksem_close 401 UNIMPL NOHIDE ksem_post 402 UNIMPL NOHIDE ksem_wait @@ -605,14 +612,18 @@ 418 UNIMPL BSD __xstat 419 UNIMPL BSD __xfstat 420 UNIMPL BSD __xlstat +; XXX implement 421 UNIMPL BSD getcontext +; XXX implement 422 UNIMPL BSD setcontext +; XXX implement 423 UNIMPL BSD swapcontext 424 UNIMPL BSD swapoff 425 UNIMPL BSD __acl_get_link 426 UNIMPL BSD __acl_set_link 427 UNIMPL BSD __acl_delete_link 428 UNIMPL BSD __acl_aclcheck_link +; XXX implement 429 UNIMPL NOHIDE sigwait 430 MNOPROTO BSD { int thr_create(ucontext_t *ctx, thr_id_t *id, \ int flag s); } ==== //depot/projects/smpng/sys/compat/ia32/ia32_signal.h#4 (text+ko) ==== @@ -26,7 +26,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/ia32/ia32_signal.h,v 1.3 2003/11/08 02:36:05 peter Exp $ + * $FreeBSD: src/sys/compat/ia32/ia32_signal.h,v 1.4 2003/11/08 07:43:44 peter Exp $ */ struct ia32_sigaltstack { @@ -160,3 +160,5 @@ extern int sz_ia32_sigcode; extern int sz_freebsd4_ia32_sigcode; extern void ia32_sendsig(sig_t, int, sigset_t *, u_long); +extern void ia32_setregs(struct thread *td, u_long entry, u_long stack, + u_long ps_strings); ==== //depot/projects/smpng/sys/compat/ia32/ia32_sysvec.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.11 2003/11/08 03:35:06 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.12 2003/11/08 07:43:44 peter Exp $"); #include "opt_compat.h" @@ -86,8 +86,6 @@ #endif static register_t *ia32_copyout_strings(struct image_params *imgp); -static void ia32_setregs(struct thread *td, u_long entry, u_long stack, - u_long ps_strings); static void ia32_fixlimits(struct image_params *imgp); extern struct sysent freebsd32_sysent[]; @@ -244,49 +242,6 @@ return ((register_t *)stack_base); } -/* - * Clear registers on exec - * XXX backend MD - */ -extern int _ucode32sel, _udatasel; -void -ia32_setregs(td, entry, stack, ps_strings) - struct thread *td; - u_long entry; - u_long stack; - u_long ps_strings; -{ - struct trapframe *regs = td->td_frame; - struct pcb *pcb = td->td_pcb; - - wrmsr(MSR_FSBASE, 0); - wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ - pcb->pcb_fsbase = 0; - pcb->pcb_gsbase = 0; - load_ds(_udatasel); - load_es(_udatasel); - load_fs(_udatasel); - load_gs(_udatasel); - pcb->pcb_ds = _udatasel; - pcb->pcb_es = _udatasel; - pcb->pcb_fs = _udatasel; - pcb->pcb_gs = _udatasel; - - bzero((char *)regs, sizeof(struct trapframe)); - regs->tf_rip = entry; - regs->tf_rsp = stack; - regs->tf_rflags = PSL_USER | (regs->tf_rflags & PSL_T); - regs->tf_ss = _udatasel; - regs->tf_cs = _ucode32sel; - regs->tf_rbx = ps_strings; - load_cr0(rcr0() | CR0_MP | CR0_TS); - fpstate_drop(td); - - /* Return via doreti so that we can change to a different %cs */ - pcb->pcb_flags |= PCB_FULLCTX; - td->td_retval[1] = 0; -} - static u_long ia32_maxdsiz = IA32_MAXDSIZ; SYSCTL_ULONG(_compat_ia32, OID_AUTO, maxdsiz, CTLFLAG_RW, &ia32_maxdsiz, 0, ""); static u_long ia32_maxssiz = IA32_MAXSSIZ; ==== //depot/projects/smpng/sys/compat/linux/linux_socket.c#13 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.43 2003/10/11 15:08:32 iwasaki Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.44 2003/11/09 17:04:04 dwmalone Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -45,6 +45,7 @@ #include <sys/file.h> #include <sys/limits.h> #include <sys/malloc.h> +#include <sys/mbuf.h> #include <sys/socket.h> #include <sys/socketvar.h> #include <sys/syscallsubr.h> @@ -333,39 +334,6 @@ return ret_flags; } -/* - * Allocate stackgap and put the converted sockaddr structure - * there, address on stackgap returned in sap. - */ -static int -linux_sa_get(caddr_t *sgp, struct sockaddr **sap, - const struct osockaddr *osa, int *osalen) -{ - struct sockaddr *sa, *usa; - int alloclen, error; - - alloclen = *osalen; - error = do_sa_get(&sa, osa, &alloclen, M_TEMP); - if (error) - return (error); - - usa = (struct sockaddr *) stackgap_alloc(sgp, alloclen); - if (!usa) { - error = ENOMEM; - goto out; - } - - if ((error = copyout(sa, usa, alloclen))) - goto out; - - *sap = usa; - *osalen = alloclen; - -out: - FREE(sa, M_TEMP); - return (error); -} - static int linux_sa_put(struct osockaddr *osa) { @@ -392,6 +360,46 @@ return (0); } +static int +linux_sendit(struct thread *td, int s, struct msghdr *mp, int flags) +{ + struct mbuf *control; + struct sockaddr *to; + int error; + + if (mp->msg_name != NULL) { + error = linux_getsockaddr(&to, mp->msg_name, mp->msg_namelen); + if (error) + return (error); + mp->msg_name = to; + } else + to = NULL; + + if (mp->msg_control != NULL) { + struct cmsghdr *cmsg; + + if (mp->msg_controllen < sizeof(struct cmsghdr)) { + error = EINVAL; + goto bad; + } + error = sockargs(&control, mp->msg_control, + mp->msg_controllen, MT_CONTROL); + if (error) + goto bad; + + cmsg = mtod(control, struct cmsghdr *); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311100107.hAA17jmx056901>