On Thursday 07 April 2011 05:32 pm, John Baldwin wrote: > Author: jhb > Date: Thu Apr 7 21:32:25 2011 > New Revision: 220430 > URL: http://svn.freebsd.org/changeset/base/220430 > > Log: > If a system call does not request a full interrupt return, use a > fast path via the sysretq instruction to return from the system > call. This was removed in 190620 and not quite fully restored in > 195486. This resolves most of the performance regression in system > call microbenchmarks between 7 and 8 on amd64. > > Reviewed by: kib > MFC after: 1 week > > Modified: > head/sys/amd64/amd64/exception.S > > Modified: head/sys/amd64/amd64/exception.S > =================================================================== >=========== --- head/sys/amd64/amd64/exception.S Thu Apr 7 21:29:34 > 2011 (r220429) +++ head/sys/amd64/amd64/exception.S Thu Apr 7 > 21:32:25 2011 (r220430) @@ -339,6 +339,9 @@ IDTVEC(prot) > * and the new privilige level. We are still running on the old > user stack * pointer. We have to juggle a few things around to > find our stack etc. * swapgs gives us access to our PCPU space > only. > + * > + * We do not support invoking this from a custom %cs or %ss (e.g. > using + * entries from an LDT). > */ > IDTVEC(fast_syscall) > swapgs > @@ -380,6 +383,36 @@ IDTVEC(fast_syscall) > movq %rsp,%rdi > call syscall > movq PCPU(CURPCB),%rax > + testq $PCB_FULL_IRET,PCB_FLAGS(%rax)
FYI, pcb_flags is u_int now, i.e., we need testl here. Jung-uk Kim _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"