Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Nov 2010 09:49:14 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/amd64/acpica acpi_machdep.c acpi_switch.S acpi_wakecode.S acpi_wakeup.c src/sys/amd64/amd64 cpu_switch.S fpu.c genassym.c machdep.c mp_machdep.c trap.c vm_machdep.c src/sys/amd64/ia32 ia32_reg.c ia32_signal.c src/sys/amd64/include ...
Message-ID:  <201011190949.oAJ9nnpt003354@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
kib         2010-11-19 09:49:14 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sys/amd64/acpica     acpi_machdep.c acpi_switch.S 
                         acpi_wakecode.S acpi_wakeup.c 
    sys/amd64/amd64      cpu_switch.S fpu.c genassym.c machdep.c 
                         mp_machdep.c trap.c vm_machdep.c 
    sys/amd64/ia32       ia32_reg.c ia32_signal.c 
    sys/amd64/include    fpu.h pcb.h 
    sys/crypto/via       padlock.c padlock.h padlock_cipher.c 
                         padlock_hash.c 
    sys/dev/fb           fbreg.h 
    sys/dev/random       nehemiah.c 
    sys/i386/i386        identcpu.c initcpu.c machdep.c perfmon.c 
                         ptrace_machdep.c support.s swtch.s trap.c 
                         vm_machdep.c 
    sys/i386/include     md_var.h npx.h pcb.h 
    sys/i386/isa         npx.c 
    sys/i386/linux       linux_ptrace.c 
    sys/kern             subr_trap.c 
    sys/opencrypto       crypto.c 
    sys/pc98/include     npx.h 
    sys/pc98/pc98        machdep.c 
    sys/x86/x86          local_apic.c 
  Log:
  SVN rev 215513 on 2010-11-19 09:49:14Z by kib
  
  Merge the kern_fpu_enter/kern_fpu_leave KPI and followup fixes for the
  amd64 suspend/resume support.
  
  Tested by:      Mike Tancsa
  Also tested by: Dewayne Geraghty <dewayne.geraghty heuristicsystems com au>,
       Daryl Richards <daryl isletech net>
  
  Below is the svn log of the merged revisions.
  ------------------------------------------------------------------------
  r197455 | emaste | 2009-09-24 17:26:42 +0300 (Thu, 24 Sep 2009) | 5 lines
  
  Add a backtrace to the "fpudna in kernel mode!" case, to help track down
  where this comes from.
  
  Reviewed by:    bde
  
  ------------------------------------------------------------------------
  r197863 | jkim | 2009-10-08 20:41:53 +0300 (Thu, 08 Oct 2009) | 8 lines
  
  Clean up amd64 suspend/resume code.
  
  - Allocate memory for wakeup code after ACPI bus is attached.  The early
  memory allocation hack was inherited from i386 but amd64 does not need it.
  - Exclude real mode IVT and BDA explicitly.  Improve comments about memory
  allocation and reason for the exclusions.  It is a no-op in reality, though.
  - Remove an unnecessary CLD from wakeup code and re-align.
  
  ------------------------------------------------------------------------
  r198931 | jkim | 2009-11-05 00:39:18 +0200 (Thu, 05 Nov 2009) | 2 lines
  
  Tweak memory allocation for amd64 suspend/resume CPU context.
  
  ------------------------------------------------------------------------
  r200280 | jkim | 2009-12-09 00:38:42 +0200 (Wed, 09 Dec 2009) | 2 lines
  
  Simplify a macro not to generate unncessary symbols.
  
  ------------------------------------------------------------------------
  r205444 | emaste | 2010-03-22 13:52:53 +0200 (Mon, 22 Mar 2010) | 7 lines
  
  Merge r197455 from amd64:
  
    Add a backtrace to the "fpudna in kernel mode!" case, to help track down
    where this comes from.
  
    Reviewed by:  bde
  
  ------------------------------------------------------------------------
  r208833 | kib | 2010-06-05 18:59:59 +0300 (Sat, 05 Jun 2010) | 15 lines
  
  Introduce the x86 kernel interfaces to allow kernel code to use
  FPU/SSE hardware. Caller should provide a save area that is chained
  into the stack of the areas; pcb save_area for usermode FPU state is
  on top. The pcb now contains a pointer to the current FPU saved area,
  used during FPUDNA handling and context switches.  There is also a
  facility to allow the kernel thread to use pcb save_area.
  
  Change the dreaded warnings "npxdna in kernel mode!" into the panics
  when FPU usage is not registered.
  
  KPI discussed with:     fabient
  Tested by:    pho, fabient
  Hardware provided by:   Sentex Communications
  MFC after:    1 month
  
  ------------------------------------------------------------------------
  r208834 | kib | 2010-06-05 19:00:53 +0300 (Sat, 05 Jun 2010) | 13 lines
  
  Use the fpu_kern_enter() interface to properly separate usermode FPU
  context from in-kernel execution of padlock instructions and to handle
  spurious FPUDNA exceptions that sometime are raised when doing padlock
  calculations.
  
  Globally mark crypto(9) kthread as using FPU.
  
  Reviewed by:    pjd
  Hardware provided by:   Sentex Communications
  Tested by:        pho
  PR:    amd64/135014
  MFC after:    1 month
  
  ------------------------------------------------------------------------
  r208877 | kib | 2010-06-06 19:13:50 +0300 (Sun, 06 Jun 2010) | 5 lines
  
  Style-compilant order of declarations.
  
  Noted by:       bde
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r209174 | jkim | 2010-06-14 23:08:26 +0300 (Mon, 14 Jun 2010) | 3 lines
  
  Fix ACPI suspend/resume on amd64, which was broken since r208833.
  We need actual storage for FPU state to save and restore.
  
  ------------------------------------------------------------------------
  r209198 | kib | 2010-06-15 12:19:33 +0300 (Tue, 15 Jun 2010) | 10 lines
  
  Use critical sections instead of disabling local interrupts to ensure
  the consistency between PCPU fpcurthread and the state of the FPU.
  
  Explicitely assert that the calling conventions for fpudrop() are
  adhered too. In cpu_thread_exit(), add missed critical section entrance.
  
  Reviewed by:    bde
  Tested by:      pho
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r209204 | kib | 2010-06-15 17:59:35 +0300 (Tue, 15 Jun 2010) | 5 lines
  
  Rename CRITSECT_ASSERT to CRITICAL_ASSERT.
  
  Suggested by:   jhb
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r209208 | kib | 2010-06-15 21:16:04 +0300 (Tue, 15 Jun 2010) | 4 lines
  
  Remove two obsoleted comments, add a note about 32bit compatibility.
  
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r209252 | kib | 2010-06-17 15:35:17 +0300 (Thu, 17 Jun 2010) | 6 lines
  
  In the ia32_{get,set}_fpcontext(), use fpu{get,set}userregs instead
  of fpu{get,set}regs.
  
  Noted by:       bde
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r209460 | kib | 2010-06-23 13:40:28 +0300 (Wed, 23 Jun 2010) | 8 lines
  
  Remove unused i586 optimized bcopy/bzero/etc implementations that utilize
  FPU registers for copying. Remove the switch table and jumps from
  bcopy/bzero/... to the actual implementation.
  As a side-effect, i486-optimized bzero is removed.
  
  Reviewed by:    bde
  Tested by:      pho (previous version)
  
  ------------------------------------------------------------------------
  r209461 | kib | 2010-06-23 14:12:58 +0300 (Wed, 23 Jun 2010) | 8 lines
  
  Remove the support for int13 FPU exception reporting on i386. It is
  believed that all 486-class CPUs FreeBSD is capable to run on, either
  have no FPU and cannot use external coprocessor, or have FPU on the
  package and can use #MF.
  
  Reviewed by:    bde
  Tested by:      pho (previous version)
  
  ------------------------------------------------------------------------
  r209462 | kib | 2010-06-23 14:21:19 +0300 (Wed, 23 Jun 2010) | 8 lines
  
  After the FPU use requires #MF working due to INT13 FPU exception handling
  removal, MFi386 r209198:
      Use critical sections instead of disabling local interrupts to ensure
      the consistency between PCPU fpcurthread and the state of FPU.
  
  Reviewed by:    bde
  Tested by:      pho
  
  ------------------------------------------------------------------------
  r210514 | jkim | 2010-07-26 22:53:09 +0300 (Mon, 26 Jul 2010) | 6 lines
  
  Re-implement FPU suspend/resume for amd64.  This removes superfluous uses
  of critical_enter(9) and critical_exit(9) by fpugetregs() and fpusetregs().
  Also, we do not touch PCB flags any more.
  
  MFC after:      1 month
  
  ------------------------------------------------------------------------
  r210517 | jkim | 2010-07-27 00:24:52 +0300 (Tue, 27 Jul 2010) | 4 lines
  
  FNSTSW instruction can use AX register as an operand.
  
  Obtained from:  fenv.h
  
  ------------------------------------------------------------------------
  r210518 | jkim | 2010-07-27 01:16:36 +0300 (Tue, 27 Jul 2010) | 5 lines
  
  Reduce diff against fenv.h:
  
  Mark all inline asms as volatile for safety.  No object file change after
  this commit (verified with md5).
  
  ------------------------------------------------------------------------
  r210519 | jkim | 2010-07-27 01:55:14 +0300 (Tue, 27 Jul 2010) | 2 lines
  
  Remove an unused macro since r189418.
  
  ------------------------------------------------------------------------
  r210520 | jkim | 2010-07-27 02:02:18 +0300 (Tue, 27 Jul 2010) | 2 lines
  
  Add missing ldmxcsr() prototype for lint case.
  
  ------------------------------------------------------------------------
  r210521 | jkim | 2010-07-27 02:20:55 +0300 (Tue, 27 Jul 2010) | 3 lines
  
  Simplify fldcw() macro.  There is no reason to use pointer here.  No object
  file change after this commit (verified with md5).
  
  ------------------------------------------------------------------------
  r210614 | jkim | 2010-07-29 19:41:21 +0300 (Thu, 29 Jul 2010) | 2 lines
  
  Rename PCB_USER_FPU to PCB_USERFPU not to clash with a macro from fpu.h.
  
  ------------------------------------------------------------------------
  r210615 | jkim | 2010-07-29 19:49:20 +0300 (Thu, 29 Jul 2010) | 5 lines
  
  Fix another fallout from r208833.  savectx() is used to save CPU context
  for crash dump (dumppcb) and kdb (stoppcbs).  For both cases, there cannot
  have a valid pointer in pcb_save.  This should restore the previous
  behaviour.
  
  ------------------------------------------------------------------------
  r210777 | jkim | 2010-08-02 20:35:00 +0300 (Mon, 02 Aug 2010) | 13 lines
  
  - Merge savectx2() with savectx() and struct xpcb with struct pcb. [1]
  savectx() is only used for panic dump (dumppcb) and kdb (stoppcbs).  Thus,
  saving additional information does not hurt and it may be even beneficial.
  Unfortunately, struct pcb has grown larger to accommodate more data.
  Move 512-byte long pcb_user_save to the end of struct pcb while I am here.
  - savectx() now saves FPU state unconditionally and copy it to the PCB of
  FPU thread if necessary.  This gives panic dump and kdb a chance to take
  a look at the current FPU state even if the FPU is "supposedly" not used.
  - Resuming CPU now unconditionally reinitializes FPU.  If the saved FPU
  state was irrelevant, it could be in an unknown state.
  
  Suggested by:   bde [1]
  
  ------------------------------------------------------------------------
  r210804 | jkim | 2010-08-03 18:32:08 +0300 (Tue, 03 Aug 2010) | 6 lines
  
  savectx() has not been used for fork(2) for about 15 years. [1]
  Do not clobber FPU thread's PCB as it is more harmful.  When we resume CPU,
  unconditionally reload FPU state.
  
  Pointed out by: bde [1]
  
  ------------------------------------------------------------------------
  r212026 | jkim | 2010-08-31 00:19:42 +0300 (Tue, 31 Aug 2010) | 3 lines
  
  Save MSR_FSBASE, MSR_GSBASE and MSR_KGSBASE directly to PCB as we do not use
  these values in the function.
  
  ------------------------------------------------------------------------
  r214347 | jhb | 2010-10-25 18:31:13 +0300 (Mon, 25 Oct 2010) | 5 lines
  
  Use 'saveintr' instead of 'savecrit' or 'eflags' to hold the state returned
  by intr_disable().
  
  Requested by:   bde
  
  ------------------------------------------------------------------------
  
  Revision    Changes    Path
  1.21.2.4    +10 -3     src/sys/amd64/acpica/acpi_machdep.c
  1.4.2.2     +42 -62    src/sys/amd64/acpica/acpi_switch.S
  1.3.2.3     +7 -7      src/sys/amd64/acpica/acpi_wakecode.S
  1.26.2.3    +36 -49    src/sys/amd64/acpica/acpi_wakeup.c
  1.169.2.4   +38 -97    src/sys/amd64/amd64/cpu_switch.S
  1.165.2.2   +165 -45   src/sys/amd64/amd64/fpu.c
  1.177.2.2   +17 -21    src/sys/amd64/amd64/genassym.c
  1.707.2.10  +10 -13    src/sys/amd64/amd64/machdep.c
  1.309.2.9   +4 -7      src/sys/amd64/amd64/mp_machdep.c
  1.332.2.13  +22 -5     src/sys/amd64/amd64/trap.c
  1.264.2.6   +10 -3     src/sys/amd64/amd64/vm_machdep.c
  1.5.2.3     +2 -2      src/sys/amd64/ia32/ia32_reg.c
  1.23.2.6    +9 -6      src/sys/amd64/ia32/ia32_signal.c
  1.35.2.2    +24 -0     src/sys/amd64/include/fpu.h
  1.72.2.2    +22 -22    src/sys/amd64/include/pcb.h
  1.23.2.2    +7 -1      src/sys/crypto/via/padlock.c
  1.4.12.2    +7 -0      src/sys/crypto/via/padlock.h
  1.5.10.2    +12 -2     src/sys/crypto/via/padlock_cipher.c
  1.4.2.2     +8 -0      src/sys/crypto/via/padlock_hash.c
  1.22.2.2    +1 -10     src/sys/dev/fb/fbreg.h
  1.5.2.2     +11 -1     src/sys/dev/random/nehemiah.c
  1.202.2.10  +0 -1      src/sys/i386/i386/identcpu.c
  1.62.2.6    +3 -3      src/sys/i386/i386/initcpu.c
  1.688.2.12  +11 -10    src/sys/i386/i386/machdep.c
  1.38.30.2   +9 -9      src/sys/i386/i386/perfmon.c
  1.6.10.2    +1 -1      src/sys/i386/i386/ptrace_machdep.c
  1.121.2.2   +6 -767    src/sys/i386/i386/support.s
  1.158.2.2   +3 -4      src/sys/i386/i386/swtch.s
  1.320.2.9   +23 -5     src/sys/i386/i386/trap.c
  1.297.2.5   +13 -9     src/sys/i386/i386/vm_machdep.c
  1.79.2.3    +0 -10     src/sys/i386/include/md_var.h
  1.33.2.2    +19 -6     src/sys/i386/include/npx.h
  1.57.2.2    +4 -2      src/sys/i386/include/pcb.h
  1.180.2.2   +225 -247  src/sys/i386/isa/npx.c
  1.18.10.2   +2 -2      src/sys/i386/linux/linux_ptrace.c
  1.308.2.6   +0 -21     src/sys/kern/subr_trap.c
  1.28.2.3    +8 -0      src/sys/opencrypto/crypto.c
  1.2.22.2    +2 -45     src/sys/pc98/include/npx.h
  1.412.2.11  +6 -7      src/sys/pc98/pc98/machdep.c
  1.17.2.3    +6 -6      src/sys/x86/x86/local_apic.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011190949.oAJ9nnpt003354>