summaryrefslogtreecommitdiffstats
path: root/sys/ia64/acpica
Commit message (Collapse)AuthorAgeFilesLines
* Improve style(9) in the previous commit.jkim2012-06-011-2/+2
|
* Call AcpiLeaveSleepStatePrep() in interrupt disabled contextiwasaki2012-06-011-0/+7
| | | | | | | | | | | | | | | | | | (described in ACPICA source code). - Move intr_disable() and intr_restore() from acpi_wakeup.c to acpi.c and call AcpiLeaveSleepStatePrep() in interrupt disabled context. - Add acpi_wakeup_machdep() to execute wakeup MD procedures and call it twice in interrupt disabled/enabled context (ia64 version is just dummy). - Rename wakeup_cpus variable in acpi_sleep_machdep() to suspcpus in order to be shared by acpi_sleep_machdep() and acpi_wakeup_machdep(). - Move identity mapping related code to acpi_install_wakeup_handler() (i386 version) for preparation of x86/acpica/acpi_wakeup.c (MFC candidate). Reviewed by: jkim@ MFC after: 2 days
* Improve cpu_idle():marcel2011-06-061-0/+7
| | | | | | | | | | o cpu_idle_hook is expected to be called with interrupts disabled and re-enables interrupts on return. o sync with x86: don't idle when the CPU has runnable tasks o have callers of ia64_call_pal_static() disable interrupts and re-enable interrupts. o add, but compile-out, support for idle mode. This will be enabled at some later time, after proper testing.
* Remove unneeded includes of <sys/linker_set.h>. Other headers that usejhb2011-01-111-1/+0
| | | | | | it internally contain nested includes. Reviewed by: bde
* Reduce diff between platforms and fix style(9) bugs.jkim2010-11-091-11/+17
|
* Add acpi_find_table() -- a convenience function for looking up anmarcel2010-07-071-2/+37
| | | | ACPI table given the signature.
* Some code churn:marcel2010-02-141-4/+2
| | | | | | | | | | | | | | | | | | | | | o Eliminate IA64_PHYS_TO_RR6 and change all places where the macro is used by calling either bus_space_map() or pmap_mapdev(). o Implement bus_space_map() in terms of pmap_mapdev() and implement bus_space_unmap() in terms of pmap_unmapdev(). o Have ia64_pib hold the uncached virtual address of the processor interrupt block throughout the kernel's life and access the elements of the PIB through this structure pointer. This is a non-functional change with the exception of using ia64_ld1() and ia64_st8() to write to the PIB. We were still using assignments, for which the compiler generates semaphore reads -- which cause undefined behaviour for uncacheable memory. Note also that the memory barriers in ipi_send() are critical for proper functioning. With all the mapping of uncached memory done by pmap_mapdev(), we can keep track of the translations and wire them in the CPU. This then eliminates the need to reserve a whole region for uncached I/O and it eliminates translation traps for device I/O accesses.
* Import ACPICA 20090521.jkim2009-06-054-5/+7
|
* Catch up with ACPI-CA 20070320 import.jkim2007-03-222-81/+86
|
* Canonize the include of acpi.h.obrien2005-09-114-4/+4
|
* Move the code for halting the CPU (acpi_cpu_c1) into machdep files.njl2004-10-111-0/+7
| | | | | | This removes the last MD portion of acpi_cpu.c. MFC after: 2 weeks
* MFp4:marcel2004-09-191-23/+17
| | | | | | Completely remove the remaining EFI includes and add our own (type) definitions instead. While here, abstract more of the internals by providing interface functions.
* Add machdep quirks functions. On i386, this disables acpi on systems withnjl2004-06-301-0/+6
| | | | BIOS dates earlier than Jan 1, 1999. Add prototypes and quirks flags.
* Make unnecessary globals static and remove unused includes.njl2004-05-061-1/+1
| | | | Pointed out by: cscout
* Verify the MADT checksum before using the table.marcel2004-05-011-2/+5
| | | | Submitted by: njl
* Don't check for NULL, device_get_softc() always succeeds.njl2004-04-211-2/+1
|
* Return AE_OK for stub functions returning ACPI_STATUS, not NULLpeter2003-12-241-2/+2
|
* Use the ACPI-CA definitions for the various APIC tables instead of ournjl2003-12-091-45/+41
| | | | own.
* Move the definitions for ACPI MADT table entries not present in the ACPICAjhb2003-09-101-62/+1
| | | | distribution to a MI header so it can be shared with other architectures.
* Untangle the code in this file to improve understandability. Bothmarcel2003-09-071-159/+155
| | | | | | | | | | | | | | ia64_count_cpus() and ia64_probe_sapics() called a single function to do the the actual work. The difference in behaviour was handled in that function and was further complicated by adding bootverbose related code. As such, even the simplest of changes was hard to comprehend. Untangling has been done by increasing code duplication and using a more naive style of coding. FWIW, the object file is slightly smaller than before, so things aren't as bad as it may seem. Triggered by: a simple fix on the P4 branch that never got merged.
* Minor style cleanups.njl2003-08-283-13/+6
|
* Further cleanup <machine/cpu.h> and <machine/md_var.h>: move the MImarcel2003-08-161-1/+1
| | | | | | | | | | | | | | | | | | | prototypes of cpu_halt(), cpu_reset() and swi_vm() from md_var.h to cpu.h. This affects db_command.c and kern_shutdown.c. ia64: move all MD prototypes from cpu.h to md_var.h. This affects madt.c, interrupt.c and mp_machdep.c. Remove is_physical_memory(). It's not used (vm_machdep.c). alpha: the MD prototypes have been left in cpu.h with a comment that they should be there. Moving them is left for later. It was expected that the impact would be significant enough to be done in a seperate commit. powerpc: MD prototypes left in cpu.h. Comment added. Suggested by: bde Tested with: make universe (pc98 incomplete)
* Don't hardcode the address of the local (S)APIC (aka processormarcel2003-01-051-0/+25
| | | | | | | interrupt block). We use the previously hardcoded address as a default only, but will otherwise use whatever ACPI tells us. The address can be found in the MADT table header or in the LAPIC override table entry.
* Export the physical address of the RSDP to userland by meansmarcel2002-12-181-10/+23
| | | | | | | | | | of the `machdep.acpi_root' sysctl. This is required on ia64 because the root pointer hardly ever, if at all, lives in the first MB of memory and also because scanning the first MB of memory can cause machine checks. This provides a save and reliable way for ACPI tools to work with the tables if ACPI support is present in the kernel. On ia64 ACPI is non-optional.
* Fix a transcription typo. s/ACPI_PTR/ACPI_POINTER/peter2002-07-171-1/+1
|
* Update for new ACPICA import. Gah.peter2002-07-171-3/+3
|
* Resolve conflicts arising from the ACPI CA 20020404 import.iwasaki2002-06-301-5/+10
|
* o Remove namespace pollution from param.h:marcel2002-05-191-0/+2
| | | | | | | | | | | - Don't include ia64_cpu.h and cpu.h - Guard definitions by _NO_NAMESPACE_POLLUTION - Move definition of KERNBASE to vmparam.h o Move definitions of IA64_RR_{BASE|MASK} to vmparam.h o Move definitions of IA64_PHYS_TO_RR{6|7} to vmparam.h o While here, remove some left-over Alpha references.
* o Rename ia64_count_aps to ia64_count_cpus and reimplement themarcel2002-05-121-13/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function to return the total number of CPUs and not the highest CPU id. o Define mp_maxid based on the minimum of the actual number of CPUs in the system and MAXCPU. o In cpu_mp_add, when the CPU id of the CPU we're trying to add is larger than mp_maxid, don't add the CPU. Formerly this was based on MAXCPU. Don't count CPUs when we add them. We already know how many CPUs exist. o Replace MAXCPU with mp_maxid when used in loops that iterate over the id space. This avoids a couple of useless iterations. o In cpu_mp_unleash, use the number of CPUs to determine if we need to launch the CPUs. o Remove mp_hardware as it's not used anymore. o Move the IPI vector array from mp_machdep.c to sal.c. We use the array as a centralized place to collect vector assignments. Note that we still assign vectors to SMP specific IPIs in non-SMP configurations. Rename the array from mp_ipi_vector to ipi_vector. o Add IPI_MCA_RENDEZ and IPI_MCA_CMCV. These are used by MCA. Note that IPI_MCA_CMCV is not SMP specific. o Initialize the ipi_vector array so that we place the IPIs in sensible priority classes. The classes are relative to where the AP wake-up vector is located to guarantee that it's the highest priority (external) interrupt. Class assignment is as follows: class IPI notes x AP wake-up (normally x=15) x-1 MCA rendezvous x-2 AST, Rendezvous, stop x-3 CMCV, test
* Move a couple of prototypes together instead of being incompletelypeter2002-03-191-1/+0
| | | | scattered around.
* * Remove a breakpoint() I accidentally left in for debugging :-(.dfr2002-03-151-11/+42
| | | | | * Make cpu_mp_probe() work before the VM system is available and initialise mp_maxid accordingly.
* Deal with a structure member rename in a recent acpica importpeter2002-03-121-1/+1
|
* Small correction in the LOCAL_SAPIC structure. The Flags fieldmarcel2001-10-291-3/+2
| | | | | | | | starts at offset 8; not 6. Hence the structure is 12 bytes and not 10 bytes. Adjust the definition so that the ProcessorEnabled flag is moved from bit 15 to bit 31 in the Flags field. The definition now matches ACPI 2.0 Errata 1.5.
* o Do not parse the MADT as a side-effect in AcpiOsGetRootPointer,marcel2001-10-292-110/+78
| | | | | | | | | | | | | | | | | | do it as a side-effect of probing for MP hardware. This allows us to scan for local SAPICs early (especially before MBUF initialization). o Fix the Local SAPIC structure so that matches the Local SAPIC table entry. Now that the Local SAPIC info is the same as the Local APIC info, stop dumping the Local APIC entries. o For every Local SAPIC entry in the MADT that's not disabled, let the SMP code know about it. They represent actual CPUs. o Register the OS_BOOT_RENDEZ entry point and provide a (bogus) implementation for the entry point. o Provide a mapping for internal IPI numbers to ExtINT vectors. o In a MP system, announce the CPUs and start them by sending IPI_AP_WAKEUP to each of them. Not that it makes a difference at this time :-) o Miscellaneous style fixes and other adjustments.
* Add APM compatibility feature to ACPI.iwasaki2001-10-261-0/+48
| | | | | | | | | | | | | | | | | This emulates APM device node interface APIs (mainly ioctl) and provides APM services for the applications. The goal is to support most of APM applications without any changes. Implemented ioctls in this commit are: - APMIO_SUSPEND (mapped ACPI S3 as default but changable by sysctl) - APMIO_STANDBY (mapped ACPI S1 as default but changable by sysctl) - APMIO_GETINFO and APMIO_GETINFO_OLD - APMIO_GETPWSTATUS With above, many APM applications which get batteries, ac-line info. and transition the system into suspend/standby mode (such as wmapm, xbatt) should work with ACPI enabled kernel (if ACPI works well :-) Reviewed by: arch@, audit@ and some guys
* Add parse functions for local APIC and I/O APIC entries.marcel2001-10-241-7/+31
| | | | Also, show when a local APIC or SAPIC is disabled.
* Wire up most of the interrupt handling infrastructure. Not sure it worksdfr2001-10-051-21/+27
| | | | | right yet but its enough for the ATA probe to work. The SCSI probes which follow are broken though.
* Add low-level ACPI support code and make a start on parsing the ACPIdfr2001-10-043-0/+356
interrupt information.
OpenPOWER on IntegriCloud