/root/src/xen/xen/include/asm/acpi.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef _ASM_X86_ACPI_H |
2 | | #define _ASM_X86_ACPI_H |
3 | | |
4 | | /* |
5 | | * Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> |
6 | | * Copyright (C) 2001 Patrick Mochel <mochel@osdl.org> |
7 | | * |
8 | | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
9 | | * |
10 | | * This program is free software; you can redistribute it and/or modify |
11 | | * it under the terms of the GNU General Public License as published by |
12 | | * the Free Software Foundation; either version 2 of the License, or |
13 | | * (at your option) any later version. |
14 | | * |
15 | | * This program is distributed in the hope that it will be useful, |
16 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
18 | | * GNU General Public License for more details. |
19 | | * |
20 | | * You should have received a copy of the GNU General Public License |
21 | | * along with this program; If not, see <http://www.gnu.org/licenses/>. |
22 | | * |
23 | | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
24 | | */ |
25 | | |
26 | | #include <acpi/pdc_intel.h> |
27 | | #include <acpi/acconfig.h> |
28 | | #include <acpi/actbl.h> |
29 | | |
30 | | #define COMPILER_DEPENDENT_INT64 long long |
31 | | #define COMPILER_DEPENDENT_UINT64 unsigned long long |
32 | | |
33 | | /* |
34 | | * Calling conventions: |
35 | | * |
36 | | * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) |
37 | | * ACPI_EXTERNAL_XFACE - External ACPI interfaces |
38 | | * ACPI_INTERNAL_XFACE - Internal ACPI interfaces |
39 | | * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces |
40 | | */ |
41 | | #define ACPI_SYSTEM_XFACE |
42 | | #define ACPI_EXTERNAL_XFACE |
43 | | #define ACPI_INTERNAL_XFACE |
44 | | #define ACPI_INTERNAL_VAR_XFACE |
45 | | |
46 | | /* Asm macros */ |
47 | | |
48 | | #define ACPI_ASM_MACROS |
49 | | #define BREAKPOINT3 |
50 | | #define ACPI_DISABLE_IRQS() local_irq_disable() |
51 | | #define ACPI_ENABLE_IRQS() local_irq_enable() |
52 | 0 | #define ACPI_FLUSH_CPU_CACHE() wbinvd() |
53 | | |
54 | | int __acpi_acquire_global_lock(unsigned int *lock); |
55 | | int __acpi_release_global_lock(unsigned int *lock); |
56 | | |
57 | | #define ACPI_ACQUIRE_GLOBAL_LOCK(facs, Acq) \ |
58 | | ((Acq) = __acpi_acquire_global_lock(&facs->global_lock)) |
59 | | |
60 | | #define ACPI_RELEASE_GLOBAL_LOCK(facs, Acq) \ |
61 | | ((Acq) = __acpi_release_global_lock(&facs->global_lock)) |
62 | | |
63 | | /* |
64 | | * Math helper asm macros |
65 | | */ |
66 | | #define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ |
67 | | asm("divl %2;" \ |
68 | | :"=a"(q32), "=d"(r32) \ |
69 | | :"r"(d32), \ |
70 | | "0"(n_lo), "1"(n_hi)) |
71 | | |
72 | | |
73 | | #define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ |
74 | | asm("shrl $1,%2 ;" \ |
75 | | "rcrl $1,%3;" \ |
76 | | :"=r"(n_hi), "=r"(n_lo) \ |
77 | | :"0"(n_hi), "1"(n_lo)) |
78 | | |
79 | | extern bool acpi_lapic, acpi_ioapic, acpi_noirq; |
80 | | extern bool acpi_force, acpi_ht, acpi_disabled; |
81 | | extern u32 acpi_smi_cmd; |
82 | | extern u8 acpi_enable_value, acpi_disable_value; |
83 | | void acpi_pic_sci_set_trigger(unsigned int, u16); |
84 | | |
85 | | static inline void disable_acpi(void) |
86 | 0 | { |
87 | 0 | acpi_disabled = 1; |
88 | 0 | acpi_ht = 0; |
89 | 0 | acpi_noirq = 1; |
90 | 0 | } Unexecuted instantiation: kexec.c:disable_acpi Unexecuted instantiation: ns16550.c:disable_acpi Unexecuted instantiation: ehci-dbgp.c:disable_acpi Unexecuted instantiation: cpufreq.c:disable_acpi Unexecuted instantiation: cpufreq_ondemand.c:disable_acpi Unexecuted instantiation: cpufreq_misc_governors.c:disable_acpi Unexecuted instantiation: utility.c:disable_acpi Unexecuted instantiation: io.c:disable_acpi Unexecuted instantiation: pci.c:disable_acpi Unexecuted instantiation: iommu.c:disable_acpi Unexecuted instantiation: dmar.c:disable_acpi Unexecuted instantiation: utils.c:disable_acpi Unexecuted instantiation: intremap.c:disable_acpi Unexecuted instantiation: quirks.c:disable_acpi Unexecuted instantiation: vtd.c:disable_acpi Unexecuted instantiation: iommu_init.c:disable_acpi Unexecuted instantiation: iommu_map.c:disable_acpi Unexecuted instantiation: pci_amd_iommu.c:disable_acpi Unexecuted instantiation: iommu_intr.c:disable_acpi Unexecuted instantiation: numa.c:disable_acpi Unexecuted instantiation: osl.c:disable_acpi Unexecuted instantiation: pmstat.c:disable_acpi Unexecuted instantiation: hwregs.c:disable_acpi Unexecuted instantiation: reboot.c:disable_acpi Unexecuted instantiation: tbutils.c:disable_acpi Unexecuted instantiation: utglobal.c:disable_acpi Unexecuted instantiation: erst.c:disable_acpi Unexecuted instantiation: hest.c:disable_acpi Unexecuted instantiation: apei-base.c:disable_acpi Unexecuted instantiation: apei-io.c:disable_acpi Unexecuted instantiation: apic.c:disable_acpi Unexecuted instantiation: crash.c:disable_acpi Unexecuted instantiation: domctl.c:disable_acpi Unexecuted instantiation: domain.c:disable_acpi Unexecuted instantiation: i8259.c:disable_acpi Unexecuted instantiation: io_apic.c:disable_acpi Unexecuted instantiation: msi.c:disable_acpi Unexecuted instantiation: irq.c:disable_acpi Unexecuted instantiation: machine_kexec.c:disable_acpi Unexecuted instantiation: mm.c:disable_acpi Unexecuted instantiation: mpparse.c:disable_acpi Unexecuted instantiation: nmi.c:disable_acpi Unexecuted instantiation: physdev.c:disable_acpi Unexecuted instantiation: platform_hypercall.c:disable_acpi Unexecuted instantiation: setup.c:disable_acpi Unexecuted instantiation: shutdown.c:disable_acpi Unexecuted instantiation: smp.c:disable_acpi Unexecuted instantiation: smpboot.c:disable_acpi Unexecuted instantiation: srat.c:disable_acpi Unexecuted instantiation: time.c:disable_acpi Unexecuted instantiation: traps.c:disable_acpi Unexecuted instantiation: tboot.c:disable_acpi Unexecuted instantiation: hpet.c:disable_acpi Unexecuted instantiation: lib.c:disable_acpi Unexecuted instantiation: power.c:disable_acpi Unexecuted instantiation: suspend.c:disable_acpi Unexecuted instantiation: cpu_idle.c:disable_acpi Unexecuted instantiation: cpuidle_menu.c:disable_acpi Unexecuted instantiation: powernow.c:disable_acpi Unexecuted instantiation: amd.c:disable_acpi Unexecuted instantiation: common.c:disable_acpi Unexecuted instantiation: intel.c:disable_acpi Unexecuted instantiation: mwait-idle.c:disable_acpi Unexecuted instantiation: vpmu.c:disable_acpi Unexecuted instantiation: vpmu_amd.c:disable_acpi Unexecuted instantiation: vpmu_intel.c:disable_acpi Unexecuted instantiation: mce.c:disable_acpi Unexecuted instantiation: mce-apei.c:disable_acpi Unexecuted instantiation: mce_intel.c:disable_acpi Unexecuted instantiation: bigsmp.c:disable_acpi Unexecuted instantiation: x2apic.c:disable_acpi Unexecuted instantiation: default.c:disable_acpi Unexecuted instantiation: delivery.c:disable_acpi Unexecuted instantiation: probe.c:disable_acpi Unexecuted instantiation: hvm.c:disable_acpi Unexecuted instantiation: pmtimer.c:disable_acpi Unexecuted instantiation: vioapic.c:disable_acpi Unexecuted instantiation: viridian.c:disable_acpi Unexecuted instantiation: vlapic.c:disable_acpi Unexecuted instantiation: vmsi.c:disable_acpi Unexecuted instantiation: vpt.c:disable_acpi Unexecuted instantiation: svm.c:disable_acpi Unexecuted instantiation: vmcs.c:disable_acpi Unexecuted instantiation: vmx.c:disable_acpi Unexecuted instantiation: nmi_int.c:disable_acpi Unexecuted instantiation: op_model_p4.c:disable_acpi Unexecuted instantiation: op_model_ppro.c:disable_acpi Unexecuted instantiation: op_model_athlon.c:disable_acpi Unexecuted instantiation: emul-gate-op.c:disable_acpi Unexecuted instantiation: emul-inv-op.c:disable_acpi Unexecuted instantiation: emul-priv-op.c:disable_acpi Unexecuted instantiation: acpi_mmcfg.c:disable_acpi Unexecuted instantiation: mmconf-fam10h.c:disable_acpi Unexecuted instantiation: mmconfig_64.c:disable_acpi Unexecuted instantiation: mmconfig-shared.c:disable_acpi |
91 | | |
92 | 0 | static inline void acpi_noirq_set(void) { acpi_noirq = 1; } Unexecuted instantiation: kexec.c:acpi_noirq_set Unexecuted instantiation: ns16550.c:acpi_noirq_set Unexecuted instantiation: ehci-dbgp.c:acpi_noirq_set Unexecuted instantiation: cpufreq.c:acpi_noirq_set Unexecuted instantiation: cpufreq_ondemand.c:acpi_noirq_set Unexecuted instantiation: cpufreq_misc_governors.c:acpi_noirq_set Unexecuted instantiation: utility.c:acpi_noirq_set Unexecuted instantiation: io.c:acpi_noirq_set Unexecuted instantiation: pci.c:acpi_noirq_set Unexecuted instantiation: iommu.c:acpi_noirq_set Unexecuted instantiation: dmar.c:acpi_noirq_set Unexecuted instantiation: utils.c:acpi_noirq_set Unexecuted instantiation: intremap.c:acpi_noirq_set Unexecuted instantiation: quirks.c:acpi_noirq_set Unexecuted instantiation: vtd.c:acpi_noirq_set Unexecuted instantiation: iommu_init.c:acpi_noirq_set Unexecuted instantiation: iommu_map.c:acpi_noirq_set Unexecuted instantiation: pci_amd_iommu.c:acpi_noirq_set Unexecuted instantiation: iommu_intr.c:acpi_noirq_set Unexecuted instantiation: numa.c:acpi_noirq_set Unexecuted instantiation: osl.c:acpi_noirq_set Unexecuted instantiation: pmstat.c:acpi_noirq_set Unexecuted instantiation: hwregs.c:acpi_noirq_set Unexecuted instantiation: reboot.c:acpi_noirq_set Unexecuted instantiation: tbutils.c:acpi_noirq_set Unexecuted instantiation: utglobal.c:acpi_noirq_set Unexecuted instantiation: erst.c:acpi_noirq_set Unexecuted instantiation: hest.c:acpi_noirq_set Unexecuted instantiation: apei-base.c:acpi_noirq_set Unexecuted instantiation: apei-io.c:acpi_noirq_set Unexecuted instantiation: apic.c:acpi_noirq_set Unexecuted instantiation: crash.c:acpi_noirq_set Unexecuted instantiation: domctl.c:acpi_noirq_set Unexecuted instantiation: domain.c:acpi_noirq_set Unexecuted instantiation: i8259.c:acpi_noirq_set Unexecuted instantiation: io_apic.c:acpi_noirq_set Unexecuted instantiation: msi.c:acpi_noirq_set Unexecuted instantiation: irq.c:acpi_noirq_set Unexecuted instantiation: machine_kexec.c:acpi_noirq_set Unexecuted instantiation: mm.c:acpi_noirq_set Unexecuted instantiation: mpparse.c:acpi_noirq_set Unexecuted instantiation: nmi.c:acpi_noirq_set Unexecuted instantiation: physdev.c:acpi_noirq_set Unexecuted instantiation: platform_hypercall.c:acpi_noirq_set Unexecuted instantiation: setup.c:acpi_noirq_set Unexecuted instantiation: shutdown.c:acpi_noirq_set Unexecuted instantiation: smp.c:acpi_noirq_set Unexecuted instantiation: smpboot.c:acpi_noirq_set Unexecuted instantiation: srat.c:acpi_noirq_set Unexecuted instantiation: time.c:acpi_noirq_set Unexecuted instantiation: traps.c:acpi_noirq_set Unexecuted instantiation: tboot.c:acpi_noirq_set Unexecuted instantiation: hpet.c:acpi_noirq_set Unexecuted instantiation: lib.c:acpi_noirq_set Unexecuted instantiation: power.c:acpi_noirq_set Unexecuted instantiation: suspend.c:acpi_noirq_set Unexecuted instantiation: cpu_idle.c:acpi_noirq_set Unexecuted instantiation: cpuidle_menu.c:acpi_noirq_set Unexecuted instantiation: powernow.c:acpi_noirq_set Unexecuted instantiation: amd.c:acpi_noirq_set Unexecuted instantiation: common.c:acpi_noirq_set Unexecuted instantiation: intel.c:acpi_noirq_set Unexecuted instantiation: mwait-idle.c:acpi_noirq_set Unexecuted instantiation: vpmu.c:acpi_noirq_set Unexecuted instantiation: vpmu_amd.c:acpi_noirq_set Unexecuted instantiation: vpmu_intel.c:acpi_noirq_set Unexecuted instantiation: mce.c:acpi_noirq_set Unexecuted instantiation: mce-apei.c:acpi_noirq_set Unexecuted instantiation: mce_intel.c:acpi_noirq_set Unexecuted instantiation: bigsmp.c:acpi_noirq_set Unexecuted instantiation: x2apic.c:acpi_noirq_set Unexecuted instantiation: default.c:acpi_noirq_set Unexecuted instantiation: delivery.c:acpi_noirq_set Unexecuted instantiation: probe.c:acpi_noirq_set Unexecuted instantiation: hvm.c:acpi_noirq_set Unexecuted instantiation: pmtimer.c:acpi_noirq_set Unexecuted instantiation: vioapic.c:acpi_noirq_set Unexecuted instantiation: viridian.c:acpi_noirq_set Unexecuted instantiation: vlapic.c:acpi_noirq_set Unexecuted instantiation: vmsi.c:acpi_noirq_set Unexecuted instantiation: vpt.c:acpi_noirq_set Unexecuted instantiation: svm.c:acpi_noirq_set Unexecuted instantiation: vmcs.c:acpi_noirq_set Unexecuted instantiation: vmx.c:acpi_noirq_set Unexecuted instantiation: nmi_int.c:acpi_noirq_set Unexecuted instantiation: op_model_p4.c:acpi_noirq_set Unexecuted instantiation: op_model_ppro.c:acpi_noirq_set Unexecuted instantiation: op_model_athlon.c:acpi_noirq_set Unexecuted instantiation: emul-gate-op.c:acpi_noirq_set Unexecuted instantiation: emul-inv-op.c:acpi_noirq_set Unexecuted instantiation: emul-priv-op.c:acpi_noirq_set Unexecuted instantiation: acpi_mmcfg.c:acpi_noirq_set Unexecuted instantiation: mmconf-fam10h.c:acpi_noirq_set Unexecuted instantiation: mmconfig_64.c:acpi_noirq_set Unexecuted instantiation: mmconfig-shared.c:acpi_noirq_set |
93 | | |
94 | | /* routines for saving/restoring kernel state */ |
95 | | extern int acpi_save_state_mem(void); |
96 | | extern int acpi_save_state_disk(void); |
97 | | extern void acpi_restore_state_mem(void); |
98 | | |
99 | | extern unsigned long acpi_wakeup_address; |
100 | | |
101 | | /* early initialization routine */ |
102 | | extern void acpi_reserve_bootmem(void); |
103 | | |
104 | | #define ARCH_HAS_POWER_INIT 1 |
105 | | |
106 | | extern s8 acpi_numa; |
107 | | extern int acpi_scan_nodes(u64 start, u64 end); |
108 | 0 | #define NR_NODE_MEMBLKS (MAX_NUMNODES*2) |
109 | | |
110 | | #ifdef CONFIG_ACPI_SLEEP |
111 | | |
112 | | extern struct acpi_sleep_info acpi_sinfo; |
113 | 0 | #define acpi_video_flags bootsym(video_flags) |
114 | | struct xenpf_enter_acpi_sleep; |
115 | | extern int acpi_enter_sleep(struct xenpf_enter_acpi_sleep *sleep); |
116 | | extern int acpi_enter_state(u32 state); |
117 | | |
118 | | struct acpi_sleep_info { |
119 | | struct acpi_generic_address pm1a_cnt_blk; |
120 | | struct acpi_generic_address pm1b_cnt_blk; |
121 | | struct acpi_generic_address pm1a_evt_blk; |
122 | | struct acpi_generic_address pm1b_evt_blk; |
123 | | struct acpi_generic_address sleep_control; |
124 | | struct acpi_generic_address sleep_status; |
125 | | union { |
126 | | uint16_t pm1a_cnt_val; |
127 | | uint8_t sleep_type_a; |
128 | | }; |
129 | | union { |
130 | | uint16_t pm1b_cnt_val; |
131 | | uint8_t sleep_type_b; |
132 | | }; |
133 | | uint32_t sleep_state; |
134 | | uint64_t wakeup_vector; |
135 | | uint32_t vector_width; |
136 | | bool_t sleep_extended; |
137 | | }; |
138 | | |
139 | | #endif /* CONFIG_ACPI_SLEEP */ |
140 | | |
141 | 0 | #define MAX_MADT_ENTRIES MAX(256, 2 * NR_CPUS) |
142 | | extern u32 x86_acpiid_to_apicid[]; |
143 | 24 | #define MAX_LOCAL_APIC MAX(256, 4 * NR_CPUS) |
144 | | |
145 | 0 | #define INVALID_ACPIID (-1U) |
146 | | |
147 | | extern u32 pmtmr_ioport; |
148 | | extern unsigned int pmtmr_width; |
149 | | |
150 | | int acpi_dmar_init(void); |
151 | | void acpi_mmcfg_init(void); |
152 | | |
153 | | /* Incremented whenever we transition through S3. Value is 1 during boot. */ |
154 | | extern uint32_t system_reset_counter; |
155 | | |
156 | | void hvm_acpi_power_button(struct domain *d); |
157 | | void hvm_acpi_sleep_button(struct domain *d); |
158 | | |
159 | | /* suspend/resume */ |
160 | | void save_rest_processor_state(void); |
161 | | void restore_rest_processor_state(void); |
162 | | |
163 | 22 | #define ACPI_MAP_MEM_ATTR PAGE_HYPERVISOR_UCMINUS |
164 | | |
165 | | #endif /*__X86_ASM_ACPI_H*/ |