/* SPDX-License-Identifier: GPL-2.0 */ /* * File: mca.h * Purpose: Machine check handling specific defines * * Copyright (C) 1999, 2004 Silicon Graphics, Inc. * Copyright (C) Vijay Chander <vijay@engr.sgi.com> * Copyright (C) Srinivasa Thirumalachar <sprasad@engr.sgi.com> * Copyright (C) Russ Anderson <rja@sgi.com> */ #ifndef _ASM_IA64_MCA_H #define _ASM_IA64_MCA_H #if !defined(__ASSEMBLY__) #include <linux/interrupt.h> #include <linux/types.h> #include <asm/param.h> #include <asm/sal.h> #include <asm/processor.h> #include <asm/mca_asm.h> #define IA64_MCA_RENDEZ_TIMEOUT (20 * 1000) /* value in milliseconds - 20 seconds */ typedef struct ia64_fptr { unsigned long fp; unsigned long gp; } ia64_fptr_t; typedef union cmcv_reg_u { u64 cmcv_regval; struct { u64 cmcr_vector : 8; u64 cmcr_reserved1 : 4; u64 cmcr_ignored1 : 1; u64 cmcr_reserved2 : 3; u64 cmcr_mask : 1; u64 cmcr_ignored2 : 47; } cmcv_reg_s; } cmcv_reg_t; #define cmcv_mask cmcv_reg_s.cmcr_mask #define cmcv_vector cmcv_reg_s.cmcr_vector enum { IA64_MCA_RENDEZ_CHECKIN_NOTDONE = 0x0, IA64_MCA_RENDEZ_CHECKIN_DONE = 0x1, IA64_MCA_RENDEZ_CHECKIN_INIT = 0x2, IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA = 0x3, }; /* Information maintained by the MC infrastructure */ typedef struct ia64_mc_info_s { u64 imi_mca_handler; size_t imi_mca_handler_size; u64 imi_monarch_init_handler; size_t imi_monarch_init_handler_size; u64 imi_slave_init_handler; size_t imi_slave_init_handler_size; u8 imi_rendez_checkin[NR_CPUS]; } ia64_mc_info_t; /* Handover state from SAL to OS and vice versa, for both MCA and INIT events. * Besides the handover state, it also contains some saved registers from the * time of the event. * Note: mca_asm.S depends on the precise layout of this structure. */ struct ia64_sal_os_state { /* SAL to OS */ unsigned long os_gp; /* GP of the os registered with the SAL, physical */ unsigned long pal_proc; /* PAL_PROC entry point, physical */ unsigned long sal_proc; /* SAL_PROC entry point, physical */ unsigned long rv_rc; /* MCA - Rendezvous state, INIT - reason code */ unsigned long proc_state_param; /* from R18 */ unsigned long monarch; /* 1 for a monarch event, 0 for a slave */ /* common */ unsigned long sal_ra; /* Return address in SAL, physical */ unsigned long sal_gp; /* GP of the SAL - physical */ pal_min_state_area_t *pal_min_state; /* from R17. physical in asm, virtual in C */ /* Previous values of IA64_KR(CURRENT) and IA64_KR(CURRENT_STACK). * Note: if the MCA/INIT recovery code wants to resume to a new context * then it must change these values to reflect the new kernel stack. */ unsigned long prev_IA64_KR_CURRENT; /* previous value of IA64_KR(CURRENT) */ unsigned long prev_IA64_KR_CURRENT_STACK; struct task_struct *prev_task; /* previous task, NULL if it is not useful */ /* Some interrupt registers are not saved in minstate, pt_regs or * switch_stack. Because MCA/INIT can occur when interrupts are * disabled, we need to save the additional interrupt registers over * MCA/INIT and resume. */ unsigned long isr; unsigned long ifa; unsigned long itir; unsigned long iipa; unsigned long iim; unsigned long iha; /* OS to SAL */ unsigned long os_status; /* OS status to SAL, enum below */ unsigned long context; /* 0 if return to same context 1 if return to new context */ /* I-resources */ unsigned long iip; unsigned long ipsr; unsigned long ifs; }; enum { IA64_MCA_CORRECTED = 0x0, /* Error has been corrected by OS_MCA */ IA64_MCA_WARM_BOOT = -1, /* Warm boot of the system need from SAL */ IA64_MCA_COLD_BOOT = -2, /* Cold boot of the system need from SAL */ IA64_MCA_HALT = -3 /* System to be halted by SAL */ }; enum { IA64_INIT_RESUME = 0x0, /* Resume after return from INIT */ IA64_INIT_WARM_BOOT = -1, /* Warm boot of the system need from SAL */ }; enum { IA64_MCA_SAME_CONTEXT = 0x0, /* SAL to return to same context */ IA64_MCA_NEW_CONTEXT = -1 /* SAL to return to new context */ }; /* Per-CPU MCA state that is too big for normal per-CPU variables. */ struct ia64_mca_cpu { u64 mca_stack[KERNEL_STACK_SIZE/8]; u64 init_stack[KERNEL_STACK_SIZE/8]; }; /* Array of physical addresses of each CPU's MCA area. */ extern unsigned long __per_cpu_mca[NR_CPUS]; extern int cpe_vector; extern int ia64_cpe_irq; extern void ia64_mca_init(void); extern void ia64_mca_irq_init(void); extern void ia64_mca_cpu_init(void *); extern void ia64_os_mca_dispatch(void); extern void ia64_os_mca_dispatch_end(void); extern void ia64_mca_ucmc_handler(struct pt_regs *, struct ia64_sal_os_state *); extern void ia64_init_handler(struct pt_regs *, struct switch_stack *, struct ia64_sal_os_state *); extern void ia64_os_init_on_kdump(void); extern void ia64_monarch_init_handler(void); extern void ia64_slave_init_handler(void); extern void ia64_mca_cmc_vector_setup(void); extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); extern void ia64_unreg_MCA_extension(void); extern unsigned long ia64_get_rnat(unsigned long *); extern void ia64_set_psr_mc(void); extern void ia64_mca_printk(const char * fmt, ...) __attribute__ ((format (printf, 1, 2))); struct ia64_mca_notify_die { struct ia64_sal_os_state *sos; int *monarch_cpu; int *data; }; DECLARE_PER_CPU(u64, ia64_mca_pal_base); #else /* __ASSEMBLY__ */ #define IA64_MCA_CORRECTED 0x0 /* Error has been corrected by OS_MCA */ #define IA64_MCA_WARM_BOOT -1 /* Warm boot of the system need from SAL */ #define IA64_MCA_COLD_BOOT -2 /* Cold boot of the system need from SAL */ #define IA64_MCA_HALT -3 /* System to be halted by SAL */ #define IA64_INIT_RESUME 0x0 /* Resume after return from INIT */ #define IA64_INIT_WARM_BOOT -1 /* Warm boot of the system need from SAL */ #define IA64_MCA_SAME_CONTEXT 0x0 /* SAL to return to same context */ #define IA64_MCA_NEW_CONTEXT -1 /* SAL to return to new context */ #endif /* !__ASSEMBLY__ */ #endif /* _ASM_IA64_MCA_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
native | Folder | 0755 |
|
|
sn | Folder | 0755 |
|
|
uv | Folder | 0755 |
|
|
Kbuild | File | 224 B | 0644 |
|
acenv.h | File | 1.27 KB | 0644 |
|
acpi-ext.h | File | 590 B | 0644 |
|
acpi.h | File | 4.1 KB | 0644 |
|
agp.h | File | 857 B | 0644 |
|
asm-offsets.h | File | 35 B | 0644 |
|
asm-prototypes.h | File | 890 B | 0644 |
|
asmmacro.h | File | 3.29 KB | 0644 |
|
atomic.h | File | 9.47 KB | 0644 |
|
barrier.h | File | 2.36 KB | 0644 |
|
bitops.h | File | 10.84 KB | 0644 |
|
bug.h | File | 404 B | 0644 |
|
bugs.h | File | 436 B | 0644 |
|
cache.h | File | 771 B | 0644 |
|
cacheflush.h | File | 1.71 KB | 0644 |
|
checksum.h | File | 2.1 KB | 0644 |
|
clocksource.h | File | 276 B | 0644 |
|
cpu.h | File | 456 B | 0644 |
|
cputime.h | File | 855 B | 0644 |
|
current.h | File | 418 B | 0644 |
|
cyclone.h | File | 442 B | 0644 |
|
delay.h | File | 1.7 KB | 0644 |
|
device.h | File | 323 B | 0644 |
|
div64.h | File | 31 B | 0644 |
|
dma-mapping.h | File | 1.17 KB | 0644 |
|
dma.h | File | 466 B | 0644 |
|
dmi.h | File | 343 B | 0644 |
|
early_ioremap.h | File | 428 B | 0644 |
|
elf.h | File | 9.83 KB | 0644 |
|
emergency-restart.h | File | 149 B | 0644 |
|
esi.h | File | 887 B | 0644 |
|
exception.h | File | 1.13 KB | 0644 |
|
export.h | File | 115 B | 0644 |
|
extable.h | File | 330 B | 0644 |
|
fb.h | File | 569 B | 0644 |
|
fpswa.h | File | 1.88 KB | 0644 |
|
ftrace.h | File | 748 B | 0644 |
|
futex.h | File | 2.56 KB | 0644 |
|
gcc_intrin.h | File | 368 B | 0644 |
|
hardirq.h | File | 564 B | 0644 |
|
hpsim.h | File | 364 B | 0644 |
|
hugetlb.h | File | 1.67 KB | 0644 |
|
hw_irq.h | File | 6.33 KB | 0644 |
|
idle.h | File | 200 B | 0644 |
|
intrinsics.h | File | 306 B | 0644 |
|
io.h | File | 11.77 KB | 0644 |
|
iommu.h | File | 555 B | 0644 |
|
iommu_table.h | File | 175 B | 0644 |
|
iosapic.h | File | 3.16 KB | 0644 |
|
irq.h | File | 1.02 KB | 0644 |
|
irq_regs.h | File | 34 B | 0644 |
|
irq_remapping.h | File | 142 B | 0644 |
|
irqflags.h | File | 2.11 KB | 0644 |
|
kdebug.h | File | 1.64 KB | 0644 |
|
kexec.h | File | 1.57 KB | 0644 |
|
kmap_types.h | File | 260 B | 0644 |
|
kprobes.h | File | 3.82 KB | 0644 |
|
kregs.h | File | 6.73 KB | 0644 |
|
libata-portmap.h | File | 225 B | 0644 |
|
linkage.h | File | 398 B | 0644 |
|
local.h | File | 31 B | 0644 |
|
local64.h | File | 33 B | 0644 |
|
machvec.h | File | 12.1 KB | 0644 |
|
machvec_dig.h | File | 449 B | 0644 |
|
machvec_dig_vtd.h | File | 558 B | 0644 |
|
machvec_hpsim.h | File | 544 B | 0644 |
|
machvec_hpzx1.h | File | 544 B | 0644 |
|
machvec_hpzx1_swiotlb.h | File | 632 B | 0644 |
|
machvec_init.h | File | 1.33 KB | 0644 |
|
machvec_sn2.h | File | 4.71 KB | 0644 |
|
machvec_uv.h | File | 684 B | 0644 |
|
mca.h | File | 5.91 KB | 0644 |
|
mca_asm.h | File | 7.18 KB | 0644 |
|
meminit.h | File | 2.24 KB | 0644 |
|
mman.h | File | 432 B | 0644 |
|
mmu.h | File | 374 B | 0644 |
|
mmu_context.h | File | 5.29 KB | 0644 |
|
mmzone.h | File | 1.1 KB | 0644 |
|
module.h | File | 1.1 KB | 0644 |
|
msidef.h | File | 1.4 KB | 0644 |
|
nodedata.h | File | 1.85 KB | 0644 |
|
numa.h | File | 2.18 KB | 0644 |
|
page.h | File | 6.49 KB | 0644 |
|
pal.h | File | 53.39 KB | 0644 |
|
param.h | File | 439 B | 0644 |
|
parport.h | File | 534 B | 0644 |
|
patch.h | File | 1.19 KB | 0644 |
|
pci.h | File | 2.83 KB | 0644 |
|
percpu.h | File | 1.32 KB | 0644 |
|
perfmon.h | File | 4.33 KB | 0644 |
|
pgalloc.h | File | 2.84 KB | 0644 |
|
pgtable.h | File | 20.92 KB | 0644 |
|
processor.h | File | 17.98 KB | 0644 |
|
ptrace.h | File | 5.2 KB | 0644 |
|
rwsem.h | File | 3.82 KB | 0644 |
|
sal.h | File | 26.51 KB | 0644 |
|
sections.h | File | 1.35 KB | 0644 |
|
segment.h | File | 162 B | 0644 |
|
serial.h | File | 446 B | 0644 |
|
shmparam.h | File | 445 B | 0644 |
|
signal.h | File | 749 B | 0644 |
|
smp.h | File | 3.21 KB | 0644 |
|
sparsemem.h | File | 621 B | 0644 |
|
spinlock.h | File | 6.92 KB | 0644 |
|
spinlock_types.h | File | 475 B | 0644 |
|
string.h | File | 659 B | 0644 |
|
swiotlb.h | File | 344 B | 0644 |
|
switch_to.h | File | 2.89 KB | 0644 |
|
syscall.h | File | 2.06 KB | 0644 |
|
termios.h | File | 1.88 KB | 0644 |
|
thread_info.h | File | 4.66 KB | 0644 |
|
timex.h | File | 1.47 KB | 0644 |
|
tlb.h | File | 8.42 KB | 0644 |
|
tlbflush.h | File | 2.33 KB | 0644 |
|
topology.h | File | 1.58 KB | 0644 |
|
types.h | File | 828 B | 0644 |
|
uaccess.h | File | 9.86 KB | 0644 |
|
unaligned.h | File | 337 B | 0644 |
|
uncached.h | File | 463 B | 0644 |
|
unistd.h | File | 1.45 KB | 0644 |
|
unwind.h | File | 5.74 KB | 0644 |
|
user.h | File | 2.25 KB | 0644 |
|
ustack.h | File | 403 B | 0644 |
|
vga.h | File | 657 B | 0644 |
|
xor.h | File | 1.12 KB | 0644 |
|