#
296373 |
|
04-Mar-2016 |
marius |
- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1 builds. - Update newvers.sh to reflect RC1. - Update __FreeBSD_version to reflect 10.3. - Update default pkg(8) configuration to use the quarterly branch.
Approved by: re (implicit) |
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
255726 |
|
20-Sep-2013 |
gibbs |
Add support for suspend/resume/migration operations when running as a Xen PVHVM guest.
Submitted by: Roger Pau Monné Sponsored by: Citrix Systems R&D Reviewed by: gibbs Approved by: re (blanket Xen) MFC after: 2 weeks
sys/amd64/amd64/mp_machdep.c: sys/i386/i386/mp_machdep.c: - Make sure that are no MMU related IPIs pending on migration. - Reset pending IPI_BITMAP on resume. - Init vcpu_info on resume.
sys/amd64/include/intr_machdep.h: sys/i386/include/intr_machdep.h: sys/x86/acpica/acpi_wakeup.c: sys/x86/x86/intr_machdep.c: sys/x86/isa/atpic.c: sys/x86/x86/io_apic.c: sys/x86/x86/local_apic.c: - Add a "suspend_cancelled" parameter to pic_resume(). For the Xen PIC, restoration of interrupt services differs between the aborted suspend and normal resume cases, so we must provide this information.
sys/dev/acpica/acpi_timer.c: sys/dev/xen/timer/timer.c: sys/timetc.h: - Don't swap out "suspend safe" timers across a suspend/resume cycle. This includes the Xen PV and ACPI timers.
sys/dev/xen/control/control.c: - Perform proper suspend/resume process for PVHVM: - Suspend all APs before going into suspension, this allows us to reset the vcpu_info on resume for each AP. - Reset shared info page and callback on resume.
sys/dev/xen/timer/timer.c: - Implement suspend/resume support for the PV timer. Since FreeBSD doesn't perform a per-cpu resume of the timer, we need to call smp_rendezvous in order to correctly resume the timer on each CPU.
sys/dev/xen/xenpci/xenpci.c: - Don't reset the PCI interrupt on each suspend/resume.
sys/kern/subr_smp.c: - When suspending a PVHVM domain make sure there are no MMU IPIs in-flight, or we will get a lockup on resume due to the fact that pending event channels are not carried over on migration. - Implement a generic version of restart_cpus that can be used by suspended and stopped cpus.
sys/x86/xen/hvm.c: - Implement resume support for the hypercall page and shared info. - Clear vcpu_info so it can be reset by APs when resuming from suspension.
sys/dev/xen/xenpci/xenpci.c: sys/x86/xen/hvm.c: sys/x86/xen/xen_intr.c: - Support UP kernel configurations.
sys/x86/xen/xen_intr.c: - Properly rebind per-cpus VIRQs and IPIs on resume.
|
#
246128 |
|
30-Jan-2013 |
sbz |
Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays
Reviewed by: cognet Approved by: cognet
|
#
231295 |
|
09-Feb-2012 |
jkim |
Refine r231226. Swap timecounters before suspending any device drivers.
|
#
231226 |
|
08-Feb-2012 |
jkim |
Revert r211288 and move the logic to the acpi_timer itself.
|
#
231161 |
|
07-Feb-2012 |
jkim |
- Give all clocks and timers on acpi0 the equal probing order. - Increase probing order for ECDT table to match HID-based probing. - Decrease probing order for HPET table to match HID-based probing. - Decrease probing order for CPUs and system resources. - Fix ACPI_DEV_BASE_ORDER to reflect the reality.
|
#
222222 |
|
23-May-2011 |
jkim |
Decrease ACPI-fast timecounter quality to 900 and increase HPET timecounter quality to 950. HPET on modern platforms usually have better resolution and lower latency than ACPI timer. Effectively this changes default timecounter hardware from ACPI-fast to HPET by default when both are available.
Discussed with: avg
|
#
220805 |
|
18-Apr-2011 |
jkim |
Do not assume PM timer GAS type is I/O or memory. It may be an unsupported type, i. e., a broken table. Also, do not hardcode ACPI timer frequency in device description.
|
#
220613 |
|
14-Apr-2011 |
jkim |
Add some tunable descriptions about x86 timers.
Requested by: arundel
|
#
220369 |
|
05-Apr-2011 |
jkim |
Lower the bar for ACPI-fast on real machines slightly. Empirical evidences show that there are perfectly working PM timers with occasional "hiccups", probably because of an SMI. Now we ignore the maximum if it happens once in the test loop and the width is small enough. Also, relax normal width a bit to count in a boundary case.
|
#
220336 |
|
04-Apr-2011 |
jkim |
Always check the current minimum value to make the test more predictable. Use INT32_MAX instead of an arbitrary big number for the initial minimum.
|
#
220333 |
|
04-Apr-2011 |
jkim |
Lower the bar for ACPI-fast on virtual machines. The current logic depends on the fact that real hardware has almost fixed cost to read the ACPI timer. It is virtually always false for hardware emulation and it makes no sense to read it multiple times, which is already quite expensive for full emulation.
|
#
220331 |
|
04-Apr-2011 |
jkim |
Add inline to acpi_timer_read() to reduce unnecessary jumps and calls.
|
#
193530 |
|
05-Jun-2009 |
jkim |
Import ACPICA 20090521.
|
#
171657 |
|
30-Jul-2007 |
njl |
Dynamically choose the quality of the ACPI timer depending on whether the fast or safe/slow method is in use. Fast remains at 1000, slow is now at 850 (always preferred to TSC). Since the HPET has proven slower than ACPI-fast on some systems, drop its quality to 900. In the future, it is hoped that HPET performance will improve as it is the main timer Intel supports. HPET may move back to 2000 in -current once RELENG_7 is branched to ensure that it gets tested.
Approved by: re
|
#
170289 |
|
04-Jun-2007 |
dwmalone |
Despite several examples in the kernel, the third argument of sysctl_handle_int is not sizeof the int type you want to export. The type must always be an int or an unsigned int.
Remove the instances where a sizeof(variable) is passed to stop people accidently cut and pasting these examples.
In a few places this was sysctl_handle_int was being used on 64 bit types, which would truncate the value to be exported. In these cases use sysctl_handle_quad to export them and change the format to Q so that sysctl(1) can still print them.
|
#
167814 |
|
22-Mar-2007 |
jkim |
Catch up with ACPI-CA 20070320 import.
|
#
150003 |
|
11-Sep-2005 |
obrien |
Canonize the include of acpi.h.
|
#
143002 |
|
02-Mar-2005 |
obrien |
Fix SCM ID's.
|
#
137151 |
|
03-Nov-2004 |
phk |
Make the bootverbose output from qualitydetermination of the ACPI timer take up only one line.
|
#
136270 |
|
08-Oct-2004 |
njl |
Update a quirk for the ASUS P5A to disable the timer. It appears to work fine with acpi but the timer runs twice as fast. Note that the main problem (system doesn't work properly with acpi disabled) should be fixed separately.
Changes: * Add a quirk to disable the timer * Merge the P5A and P5A-B quirks since they appear to be based on the same ASL.
PR: i386/72450 Tested by: Kevin Oberman <oberman es.net> MFC after: 3 days
|
#
132528 |
|
22-Jul-2004 |
njl |
Reinsert the bus space handle and tag, they are needed for the timer test.
|
#
132527 |
|
22-Jul-2004 |
njl |
Instead of doing everything in identify, do a proper probe/attach. Also, don't add another device if identify is called twice. Minor reworking by myself.
Submitted by: marcel
|
#
129879 |
|
30-May-2004 |
phk |
Add missing <sys/module.h> includes
|
#
128607 |
|
24-Apr-2004 |
njl |
Disable interrupts while testing the timer. Not doing this unnecessarily added an arbitrary delay to our readings, causing us to use the ACPI-safe read method when not necessary. Submitted by: bde
Old: ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks BAD min = 3, max = 19, width = 16 ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks BAD min = 3, max = 19, width = 16 ACPI timer looks GOOD min = 3, max = 5, width = 2 ACPI timer looks GOOD min = 3, max = 4, width = 1 Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000
New: ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 ACPI timer looks GOOD min = 3, max = 4, width = 1 Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
Also, reduce unnecesary overhead in ACPI-fast by remove the barrier for reads. The timer in the ACPI-fast case is known to increase monotonically so there is no need to serialize access to it.
|
#
128543 |
|
22-Apr-2004 |
njl |
Fix stepping in ddb by not checking for a maximum interval. The ACPI-safe workaround was for hardware where the clock was not latched, not for hardware that was too slow. Also, make variable names more specific for ddb printing.
|
#
128528 |
|
21-Apr-2004 |
njl |
Add comments, including restoring the PIIX4 errata comment, to indicate what the ACPI-safe workaround is intended to fix. Requested by phk.
Set the bushandle and tag when attaching the timer, don't do it each time in read_counter(). Pointed out by bde.
Move test_counter() to the end. Staticize acpi_timer_reg.
|
#
128506 |
|
21-Apr-2004 |
njl |
Fix several bugs where 32-bit timers and wraparound were not properly supported. Symptoms of this bug included unnecessary use of ACPI-safe and a dmesg that has deltas of about 2^24:
ACPI timer looks BAD min = 2, max = 16777206, width = 16777204 ACPI timer looks BAD min = 2, max = 7, width = 5 ACPI timer looks GOOD min = 4, max = 5, width = 1 ACPI timer looks BAD min = 2, max = 16777206, width = 16777204 ACPI timer looks BAD min = 2, max = 7, width = 5 ACPI timer looks BAD min = 2, max = 16777210, width = 16777208 ACPI timer looks BAD min = 4, max = 16777189, width = 16777185 ACPI timer looks GOOD min = 4, max = 5, width = 1 ACPI timer looks BAD min = 2, max = 7, width = 5 ACPI timer looks BAD min = 4, max = 16777189, width = 16777185
To fix this: * Use a 32 bit timecounter mask when the timer is 32 bits. * In test_counter(), use the acpi_TimerDelta function which handles 24/32 bit timers and wraparound.
Miscellaneous fixes: * Use C99 initializers for timecounter struct. * Use u_int and uint32_t where appropriate instead of unsigned. * Remove whitespace-only lines * Remove the old PIIX4 PCI workaround. The timecounter testing code has been in use for long enough to prove it's functional.
|
#
128071 |
|
09-Apr-2004 |
njl |
Add MODULE_DEPEND entries so some of these drivers can eventually be loaded separately from ACPI (i.e., embedded use).
|
#
127135 |
|
17-Mar-2004 |
njl |
Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
|
#
126517 |
|
03-Mar-2004 |
njl |
Add support for quirks for acpi tables. Key off OEM vendor and revision. Sort acpi debug values. Change "disable" to "disabled" to match rest of the kernel. Remove debugging from acpi_toshiba since it was only used for probe/attach.
|
#
119529 |
|
28-Aug-2003 |
njl |
Style and whitespace changes. Also, make the ivar functions non-inline since inlining failed due to the size of BUS_*
|
#
119281 |
|
22-Aug-2003 |
imp |
Prefer new location of pci include files (which have only been in the tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD.
|
#
118987 |
|
16-Aug-2003 |
phk |
Give timecounters a numeric quality field.
A timecounter will be selected when registered if its quality is not negative and no less than the current timecounters.
Add a sysctl to report all available timecounters and their qualities.
Give the dummy timecounter a solid negative quality of minus a million.
Give the i8254 zero and the ACPI 1000.
The TSC gets 800, unless APM or SMP forces it negative.
Other timecounters default to zero quality and thereby retain current selection behaviour.
|
#
114277 |
|
30-Apr-2003 |
marcel |
o Don't announce that the timer is good when in fact it isn't timing at all (ie reads yield constant values). Display the width as the difference between max and min so that constant timers have width zero. o Get the address of the timer from the XPmTmrBlk field instead of the V1_PmTmrBlk field. The former is a generic address and can specify a memory mapped I/O address. Remove <machine/bus_pio.h> to account for this. The timer is now properly configured on machines with ACPI v2 tables, whether PIO or MEMIO. Note that the acpica code converts v1 tables into v2 tables so the address is always present in XPmTmrBlk. o Replace the TIMER_READ macro with a call to the read_counter() function and add a barrier to make sure that we observe proper ordering of the reads.
|
#
105281 |
|
16-Oct-2002 |
jhb |
struct timecounter is defined in sys/time.h on 4-stable.
Sponsored by: The Weather Channel
|
#
104726 |
|
09-Oct-2002 |
jhb |
Include <dev/acpica/acpivar.h> instead of <acpica/acpivar.h> like all the other sys/dev/acpica files.
|
#
96926 |
|
19-May-2002 |
peter |
Brutally deal with __func__ being 'const char *' on gcc-3.1.
|
#
95814 |
|
30-Apr-2002 |
phk |
Don't export timecounter structures under debug. with sysctl, they contain no truly interesting data anymore.
|
#
95489 |
|
26-Apr-2002 |
phk |
Remove the tc_update() function. Any frequency change to the timecounter will be used starting at the next second, which is good enough for sysctl purposes. If better adjustment is needed the NTP PLL should be used.
|
#
94936 |
|
17-Apr-2002 |
mux |
Rework the kernel environment subsystem. We now convert the static environment needed at boot time to a dynamic subsystem when VM is up. The dynamic kernel environment is protected by an sx lock.
This adds some new functions to manipulate the kernel environment : freeenv(), setenv(), unsetenv() and testenv(). freeenv() has to be called after every getenv() when you have finished using the string. testenv() only tests if an environment variable is present, and doesn't require a freeenv() call. setenv() and unsetenv() are self explanatory.
The kenv(2) syscall exports these new functionalities to userland, mainly for kenv(1).
Reviewed by: peter
|
#
93093 |
|
24-Mar-2002 |
phk |
Hide the ACPI counter probing printf behind bootverbose.
The conclusion is that this method really can tell the perfect from the less than perfect ACPI counters.
It is in fact probably a bit more discriminative than that, but we will rather condemn some otherwise perfect counters to the slightly slower "-safe" version, than certify a counter as perfect which will let us down later.
Many thanks to all the people who sent email reports!
|
#
91237 |
|
25-Feb-2002 |
phk |
Add a new test_counter() function which tries to determine the width of the inter-value histogram for 2000 samples. If the width is 3 or less for 10 consequtive samples, we trust the counter to be good, otherwise we use the *_safe() method.
This method may be too strict, but the worst which can happen is that we take the performance hit of the *_safe() method when we should not.
Make the *_safe() method more discriminating by mandating that the three samples do not span more than 15 ticks on the counter.
Disable the PCI-ident based probing as a means to recognize good counters.
Inspiration from: dillon and msmith
|
#
91204 |
|
24-Feb-2002 |
dillon |
Tests by numerous people have shown that many chipsets do not properly latch the acpi timer, resulting in weird deltas. The problem is severe enough to adversely effect the timecounter code.
Default to the 'safe' version of the get-timecount function. The probe will override it if a known-good chipset is found. This is temporary until a more complete solution is found.
Reviewed by: phk
|
#
91128 |
|
23-Feb-2002 |
msmith |
Match namespace cleanup changes in ACPI CA 20020217 update.
|
#
89054 |
|
08-Jan-2002 |
msmith |
Staticise devclasses and some unnecessarily global variables.
|
#
81172 |
|
05-Aug-2001 |
msmith |
The Intel 440MX ACPI timer seems to work properly, so add it to the list here. Restructure slightly so that adding more devices is easier.
Submitted by: Jose Gabriel J Marcelino <gabriel@maquina.com>
|
#
81096 |
|
03-Aug-2001 |
msmith |
Reverse the logic here again with regards to "trusted" ACPI timer implementations. More of them seem to be broken, so only "trust" timers we know work.
|
#
80602 |
|
30-Jul-2001 |
msmith |
Minor updates (no functional changes)
- Remove the beer-ware license (reqested by phk) - Reorganise so that the PIIX4 workaround code is kept together, and switch the workaround function via the timecounter struct, saving a compare in the read-timecounter codepath. Also indicate that the workaround is active by changing the timecounter hardware string.
|
#
80442 |
|
27-Jul-2001 |
msmith |
The ACPI timer register corruption problem is resolved in the PIIX4 starting with the PIIX4M. Restrict enabling the workaround to those chips known to be buggy.
|
#
80070 |
|
21-Jul-2001 |
msmith |
Implement a "proper" timecounter hung off the ACPI timer device.
This code is based on the mp_clock code by phk. It attempts to detect the PIIX4 (see comments for details) and use a workaround for its problems.
This code is experimental, and could use some testing and review by a timekeeping enthusiast.
|
#
77432 |
|
29-May-2001 |
msmith |
- Updates for new constant naming in the ACPI CA 20010518 update. - Use __func__ instead of __FUNCTION. - Support power-off to S3 or S5 (takawata) - Enable ACPI debugging earlier (with a sysinit) - Fix a deadlock in the EC code (takawata) - Improve arithmetic and reduce the risk of spurious wakeup in AcpiOsSleep. - Add AcpiOsGetThreadId. - Simplify mutex code (still disabled).
|
#
71872 |
|
31-Jan-2001 |
msmith |
ACPI_NUMBER becomes ACPI_INTEGER. acpi_EvaluateNumber becomes acpi_EvaluateInteger.
Use acpi_EvaluateInteger instead of doing things the hard way where possible.
AcpiSetSystemSleepState (unofficial) becomes AcpiEnterSleepState.
Use the AcpiGbl_FADT pointer rather than searching for the FADT.
|
#
69744 |
|
08-Dec-2000 |
msmith |
- Convert a lot of homebrew debugging output to use the ACPI CA debugging infrastructure. It's not perfect, but it's a lot better than what we've been using so far. The following rules apply to this: o BSD component names should be capitalised o Layer names should be taken from the non-CA set for now. We may elect to add some new BSD-specific layers later.
- Make it possible to turn off selective debugging flags or layers by listing them in debug.acpi.layer or debug.acpi.level prefixed with !.
- Fully implement support for avoiding nodes in the ACPI namespace. Nodes may be listed in the debug.acpi.avoid environment variable; these nodes and all their children will be ignored (although still scanned over) by ACPI functions which scan the namespace. Multiple nodes can be specified, separated by whitespace.
- Implement support for selectively disabling ACPI subsystem components via the debug.acpi.disable environment variable. The following components can be disabled: o bus creation/scanning of the ACPI 'bus' o children attachment of children to the ACPI 'bus' o button the acpi_button control-method button driver o ec the acpi_ec embedded-controller driver o isa acpi replacement of PnP BIOS for ISA device discovery o lid the control-method lid switch driver o pci pci root-bus discovery o processor CPU power/speed management o thermal system temperature detection and control o timer ACPI timecounter Multiple components may be disabled by specifying their name(s) separated by whitespace.
- Add support for ioctl registration. ACPI subsystem components may register ioctl handlers with the /dev/acpi generic ioctl handler, allowing us to avoid the need for a multitude of /dev/acpi* control devices, etc.
|
#
69458 |
|
01-Dec-2000 |
msmith |
Update to work with the new ACPI CA snapshot.
- Use ACPI_PHYSICAL_ADDRESS - RSDT -> XSDT - FACP -> FADT - No APIC table support - Don't install a global EC handler; this has bad side-effects (it invokes _REG in *all* EC spaces in the namespace!) - Check for PCI bus instances already existing before adding them
|
#
67761 |
|
28-Oct-2000 |
msmith |
Initial FreeBSD OSPM (operating system power management) modules for ACPICA. Most of these are still works in progress. Support exists for:
- Fixed feature and control method power, lid and sleep buttons. - Detection of ISA PnP devices using ACPI namespace. - Detection of PCI root busses using ACPI namespace. - CPU throttling and sleep states (incomplete) - Thermal monitoring and cooling control (incomplete) - Interface to platform embedded controllers (mostly complete) - ACPI timer (incomplete) - Simple userland control of sleep states. - Shutdown and poweroff.
|