#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
262981 |
|
10-Mar-2014 |
jkim |
MFC: r262746, r262748, r262750, r262752
Move fpusave() wrapper for suspend hander to sys/amd64/amd64/fpu.c.
|
#
247881 |
|
06-Mar-2013 |
avg |
MFC r233579,236403,236408: make interrupt flags management closer to head
r233579: Restore interrupt state after executing AcpiEnterSleepState(). r236403,236408: acpi_wakeup_machdep/acpi_sleep_machdep
The merged changes are modified a bit to account for lots of missing acpi and acpica MFCs. For the same reason MFC to stable/8 is not practical.
MFC slackers: iwasaki, jkim
|
#
234197 |
|
12-Apr-2012 |
jkim |
MFC: r233704
Re-initialize more model-specific registers when we resume CPUs.
|
#
233582 |
|
27-Mar-2012 |
jkim |
MFC: r233208, r233249
Fix a witness panic. We cannot enter critical section here.
|
#
232085 |
|
23-Feb-2012 |
jkim |
MFC: r231797
Clean up RFLAG and CR3 register handling and nearby comments. For BSP, use spinlock_enter()/spinlock_exit() to save/restore RFLAGS. We know interrupt is disabled when returning from S3. For AP, we do not have to save/restore it because IRET will do it for us any way. Do not save CR3 locally because savectx() does it and BSP does not have to switch to kernel map for amd64. Change contigmalloc(9) flag while I am in the neighborhood.
|
#
232084 |
|
23-Feb-2012 |
jkim |
MFC: r231227
Reset clock after atrtc(4) is properly resumed.
|
#
232082 |
|
23-Feb-2012 |
jkim |
MFC: r231791, r231840
Set up an event handler to turn off speaker if user requested it. Speaker will stop beeping after all device drivers are resumed. Use proper API to "acquire" and "release" PIC timer2 for consistency and correctness.
|
#
232077 |
|
23-Feb-2012 |
jkim |
MFC: r230957
Fix a function prototype to reflect reality.
|
#
232076 |
|
23-Feb-2012 |
jkim |
MFC: r230830
Restore XCR0 before restoring extended FPU states.
|
#
231979 |
|
21-Feb-2012 |
kib |
MFC r230426: Add support for the extended FPU states on amd64, both for native 64bit and 32bit ABIs. As a side-effect, it enables AVX on capable CPUs.
MFC r230765: Synchronize the struct sigcontext definitions on x86 with mcontext_t.
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
223758 |
|
04-Jul-2011 |
attilio |
With retirement of cpumask_t and usage of cpuset_t for representing a mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient.
Remove them and replace their usage with custom pc_cpuid magic (as, atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))).
This change is not targeted for MFC because of struct pcpu members removal and dependency by cpumask_t retirement.
MD review by: marcel, marius, alc Tested by: pluknet MD testing by: marcel, marius, gonzo, andreast
|
#
222813 |
|
07-Jun-2011 |
attilio |
etire the cpumask_t type and replace it with cpuset_t usage.
This is intended to fix the bug where cpu mask objects are capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever value. Anyway, as long as several structures in the kernel are statically allocated and sized as MAXCPU, it is suggested to keep it as low as possible for the time being.
Technical notes on this commit itself: - More functions to handle with cpuset_t objects are introduced. The most notable are cpusetobj_ffs() (which calculates a ffs(3) for a cpuset_t object), cpusetobj_strprint() (which prepares a string representing a cpuset_t object) and cpusetobj_strscan() (which creates a valid cpuset_t starting from a string representation). - pc_cpumask and pc_other_cpus are target to be removed soon. With the moving from cpumask_t to cpuset_t they are now inefficient and not really useful. Anyway, for the time being, please note that access to pcpu datas is protected by sched_pin() in order to avoid migrating the CPU while reading more than one (possible) word - Please note that size of cpuset_t objects may differ between kernel and userland. While this is not directly related to the patch itself, it is good to understand that concept and possibly use the patch as a reference on how to deal with cpuset_t objects in userland, when accessing kernland members. - KTR_CPUMASK is changed and now is represented through a string, to be set as the example reported in NOTES.
Please additively note that no MAXCPU is bumped in this patch, but private testing has been done until to MAXCPU=128 on a real 8x8x2(htt) machine (amd64).
Please note that the FreeBSD version is not yet bumped because of the upcoming pcpu changes. However, note that this patch is not targeted for MFC.
People to thank for the time spent on this patch: - sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested several revision of the patches and really helped in improving stability of this work. - marius fixed several bugs in the sparc64 implementation and reviewed patches related to ktr. - jeff and jhb discussed the basic approach followed. - kib and marcel made targeted review on some specific part of the patch. - marius, art, nwhitehorn and andreast reviewed MD specific part of the patch. - marius, andreast, gonzo, nwhitehorn and jceel tested MD specific implementations of the patch. - Other people have made contributions on other patches that have been already committed and have been listed separately.
Companies that should be mentioned for having participated at several degrees: - Yahoo! for having offered the machines used for testing on big count of CPUs. - The FreeBSD Foundation for having sponsored my devsummit attendance, which has been instrumental. - Sandvine for having offered offices and infrastructure during development.
(I really hope I didn't forget anyone, if it happened I apologize in advance).
|
#
215753 |
|
23-Nov-2010 |
jkim |
Reinitialize PAT MSR via pmap_init_pat() while resuming. This function does better job since r215703 and it is safer now.
|
#
214631 |
|
01-Nov-2010 |
jhb |
Move <machine/apicreg.h> to <x86/apicreg.h>.
|
#
214630 |
|
01-Nov-2010 |
jhb |
Move the <machine/mca.h> header to <x86/mca.h>.
|
#
211292 |
|
13-Aug-2010 |
jkim |
Reset switchtime to zero rather than the current CPU ticker (TSC) value. It is more appropriate in this context because TSC MSR is reset to zero when the CPU is restarted from S3 and above. Move acpi_resync_clock() back to where it was before r211202. It does not make a difference any more.
|
#
211202 |
|
11-Aug-2010 |
jkim |
Reset switchtime and switchticks after resynchronizing the system clock. This should fix weird runtime problem after resume on amd64. It also fixes "calcru: runtime went backwards" warnings with bootverbose.
|
#
210942 |
|
06-Aug-2010 |
jkim |
Remove unnecessary casting and simplify code. We are not there yet. ;-)
|
#
210940 |
|
06-Aug-2010 |
jkim |
Correct argument order of acpi_restorecpu(), which was forgotten in r210804.
|
#
210777 |
|
02-Aug-2010 |
jkim |
- 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]
|
#
210514 |
|
26-Jul-2010 |
jkim |
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
|
#
209212 |
|
15-Jun-2010 |
jhb |
Restore the machine check register banks on resume. For banks being monitored via CMCI, reset the interrupt threshold to 1 on resume.
Reviewed by: jkim MFC after: 2 weeks
|
#
209174 |
|
14-Jun-2010 |
jkim |
Fix ACPI suspend/resume on amd64, which was broken since r208833. We need actual storage for FPU state to save and restore.
|
#
208833 |
|
05-Jun-2010 |
kib |
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
|
#
198931 |
|
04-Nov-2009 |
jkim |
Tweak memory allocation for amd64 suspend/resume CPU context.
|
#
197863 |
|
08-Oct-2009 |
jkim |
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.
|
#
193530 |
|
05-Jun-2009 |
jkim |
Import ACPICA 20090521.
|
#
190635 |
|
01-Apr-2009 |
jkim |
Chase GDT layout changes and unbreak suspend/resume on amd64.
|
#
190341 |
|
23-Mar-2009 |
jkim |
- Clean up suspend/resume code for amd64. - Call acpi_resync_clock() to reset system time before hardclock is ready to tick. Note we assume the current timecounter hardware and RTC are already available for read operation.
Tested by: mav
|
#
189903 |
|
16-Mar-2009 |
jkim |
Initial suspend/resume support for amd64.
This code is heavily inspired by Takanori Watanabe's experimental SMP patch for i386 and large portion was shamelessly cut and pasted from Peter Wemm's AP boot code.
|
#
150003 |
|
11-Sep-2005 |
obrien |
Canonize the include of acpi.h.
|
#
119531 |
|
28-Aug-2003 |
njl |
Minor style cleanups.
|
#
118030 |
|
25-Jul-2003 |
obrien |
Use __FBSDID().
Brought to you by: a boring talk at OLS
|
#
114349 |
|
30-Apr-2003 |
peter |
Commit MD parts of a loosely functional AMD64 port. This is based on a heavily stripped down FreeBSD/i386 (brutally stripped down actually) to attempt to get a stable base to start from. There is a lot missing still. Worth noting: - The kernel runs at 1GB in order to cheat with the pmap code. pmap uses a variation of the PAE code in order to avoid having to worry about 4 levels of page tables yet. - It boots in 64 bit "long mode" with a tiny trampoline embedded in the i386 loader. This simplifies locore.s greatly. - There are still quite a few fragments of i386-specific code that have not been translated yet, and some that I cheated and wrote dumb C versions of (bcopy etc). - It has both int 0x80 for syscalls (but using registers for argument passing, as is native on the amd64 ABI), and the 'syscall' instruction for syscalls. int 0x80 preserves all registers, 'syscall' does not. - I have tried to minimize looking at the NetBSD code, except in a couple of places (eg: to find which register they use to replace the trashed %rcx register in the syscall instruction). As a result, there is not a lot of similarity. I did look at NetBSD a few times while debugging to get some ideas about what I might have done wrong in my first attempt.
|
#
112569 |
|
24-Mar-2003 |
jake |
- Add vm_paddr_t, a physical address type. This is required for systems where physical addresses larger than virtual addresses, such as i386s with PAE. - Use this to represent physical addresses in the MI vm system and in the i386 pmap code. This also changes the paddr parameter to d_mmap_t. - Fix printf formats to handle physical addresses >4G in the i386 memory detection code, and due to kvtop returning vm_paddr_t instead of u_long.
Note that this is a name change only; vm_paddr_t is still the same as vm_offset_t on all currently supported platforms.
Sponsored by: DARPA, Network Associates Laboratories Discussed with: re, phk (cdevsw change)
|
#
107618 |
|
04-Dec-2002 |
alc |
Hold the page queues lock around calls to pmap_remove().
Approved by: re
|
#
107199 |
|
24-Nov-2002 |
iwasaki |
Add `if (!cold)' checkings for functions which is called via SYSINIT. Loading acpi.ko with kldload is disallowed, however some functions were executed unexpectedly.
Approved by: re
|
#
105277 |
|
16-Oct-2002 |
jhb |
- curproc may be NULL in 4-stable. In that case use the vmspace from proc0. - Remove unused include.
Sponsored by: The Weather Channel
|
#
103748 |
|
21-Sep-2002 |
markm |
Wrap GCC-specific asm() code in #ifdef __GNUC__
|
#
102291 |
|
22-Aug-2002 |
archie |
Replace (ab)uses of "NULL" where "0" is really meant.
|
#
101459 |
|
07-Aug-2002 |
iwasaki |
Improve stack manipulation code of ACPI wakeup routine. The new code just override stack top value with saved return address rather than pop/push operation.
Submitted by: jhb
|
#
101140 |
|
01-Aug-2002 |
iwasaki |
Fix a bug about stack manipulation at ACPI wakeup. This should avoid kernel panic on kernel compiled w/o NO_CPU_COPTFLAGS.
Suggested by: optimized code by -mcpu=pentiumpro
|
#
96929 |
|
19-May-2002 |
peter |
Make this compile with gcc-3.1, which objects to the multi-line string.
|
#
89179 |
|
10-Jan-2002 |
wes |
Fix typo in function name.
Reviewed by: peter@ Obtained from: mux@sneakerz.org
|
#
89156 |
|
09-Jan-2002 |
takawata |
Fix S3 breakage. Now AcpiEnterSleep() is light enough, so flushing cache before the function is not too early.
|
#
89054 |
|
08-Jan-2002 |
msmith |
Staticise devclasses and some unnecessarily global variables.
|
#
86554 |
|
18-Nov-2001 |
iwasaki |
Yet another verbose printing cleanup. Remove debug_wakeup flag and check common verbose flag instead.
|
#
86262 |
|
11-Nov-2001 |
iwasaki |
Add two minor changes. - clean up wakeup routing fixup code by using macros. - allocate pte object temporary for kernel thread to avoid kernel panic by events from sleep button or lid switch.
|
#
86133 |
|
06-Nov-2001 |
iwasaki |
Add S4BIOS sleep (BIOS hibernation) and DSDT overriding support. - Add S4BIOS sleep implementation. This will works well if MIB hw.acpi.s4bios is set (and of course BIOS supports it and hibernation is enabled correctly). - Add DSDT overriding support which is submitted by takawata originally. If loader tunable acpi_dsdt_load="YES" and DSDT file is set to acpi_dsdt_name (default DSDT file name is /boot/acpi_dsdt.aml), ACPI CA core loads DSDT from given file rather than BIOS memory block. DSDT file can be generated by iasl in ports/devel/acpicatools/. - Add new files so that we can add our proposed additional code to Intel ACPI CA into these files temporary. They will be removed when similar code is added into ACPI CA officially.
|
#
80160 |
|
22-Jul-2001 |
iwasaki |
Don't do sleep state transition if specified sleep state is not supported by the system.
|
#
80078 |
|
21-Jul-2001 |
msmith |
Convert from acpi_strerror() to AcpiFormatException()
Fix dangling include of the dear departed acpi_ecreg.h
|
#
80028 |
|
20-Jul-2001 |
takawata |
Add ACPI S2-S4BIOS Suspend/Resume code. Some problems may remain.
Reviewed by:iwasaki
|