HomeFreeBSD

Add SMP/i386 suspend/resume support.

Description

Add SMP/i386 suspend/resume support.
Most part is merged from amd64.

  • i386/acpica/acpi_wakecode.S

Replaced with amd64 code (from realmode to paging enabling code).

  • i386/acpica/acpi_wakeup.c

Replaced with amd64 code (except for wakeup_pagetables stuff).

  • i386/include/pcb.h
  • i386/i386/genassym.c

Added PCB new members (CR0, CR2, CR4, DS, ED, FS, SS, GDT, IDT, LDT
and TR) needed for suspend/resume, not for context switch.

  • i386/i386/swtch.s

Added suspendctx() and resumectx().
Note that savectx() was not changed and used for suspending (while
amd64 code uses it).
BSP and AP execute the same sequence, suspendctx(), acpi_wakecode()
and resumectx() for suspend/resume (in case of UP system also).

  • i386/i386/apic_vector.s

Added cpususpend().

  • i386/i386/mp_machdep.c
  • i386/include/smp.h

Added cpususpend_handler().

  • i386/include/apicvar.h
  • kern/subr_smp.c
  • sys/smp.h

Added IPI_SUSPEND and suspend_cpus().

  • i386/i386/initcpu.c
  • i386/i386/machdep.c
  • i386/include/md_var.h
  • pc98/pc98/machdep.c

Moved initializecpu() declarations to md_var.h.

MFC after: 3 days

Details

Provenance
Mitsuru IWASAKI <iwasaki@FreeBSD.org>Authored on May 18 2012, 6:55 PM
Parents
rG11c15f90db86: Update comment to document that the vnode free-list mutex needs to be
Branches
Unknown
Tags
Unknown

Event Timeline