arch/s390/kernel/ipl.c
Source file repositories/reference/linux-study-clean/arch/s390/kernel/ipl.c
File Facts
- System
- Linux kernel
- Corpus path
arch/s390/kernel/ipl.c- Extension
.c- Size
- 67524 bytes
- Lines
- 2530
- Domain
- Architecture Layer
- Bucket
- arch/s390
- Inferred role
- Architecture Layer: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/export.hlinux/init.hlinux/device.hlinux/delay.hlinux/kstrtox.hlinux/panic_notifier.hlinux/reboot.hlinux/ctype.hlinux/fs.hlinux/gfp.hlinux/crash_dump.hlinux/debug_locks.hlinux/vmalloc.hlinux/secure_boot.hasm/asm-extable.hasm/machine.hasm/diag.hasm/ipl.hasm/smp.hasm/setup.hasm/cpcmd.hasm/ebcdic.hasm/sclp.hasm/checksum.hasm/debug.hasm/abs_lowcore.hasm/os_info.hasm/sections.hasm/boot_data.hentry.h
Detected Declarations
struct shutdown_actionstruct shutdown_triggerstruct shutdown_actionenum dump_typefunction __diag308function diag308function get_ipl_typefunction ipl_type_showfunction ipl_secure_showfunction ipl_has_secure_showfunction ipl_vm_parm_showfunction sys_ipl_device_showfunction sys_ipl_parameter_readfunction ipl_ccw_loadparm_showfunction __ipl_runfunction ipl_runfunction ipl_initfunction reipl_generic_vmparm_showfunction reipl_generic_vmparm_storefunction reipl_nss_vmparm_showfunction reipl_nss_vmparm_storefunction reipl_ccw_vmparm_showfunction reipl_ccw_vmparm_storefunction reipl_get_ascii_loadparmfunction reipl_generic_loadparm_showfunction reipl_generic_loadparm_storefunction reipl_fcp_clear_showfunction reipl_fcp_clear_storefunction reipl_nvme_clear_showfunction reipl_nvme_clear_storefunction reipl_ccw_clear_showfunction reipl_ccw_clear_storefunction reipl_eckd_clear_showfunction reipl_eckd_clear_storefunction reipl_get_ascii_nss_namefunction reipl_nss_name_showfunction reipl_nss_name_storefunction set_os_info_reipl_blockfunction reipl_set_typefunction reipl_type_showfunction reipl_type_storefunction __reipl_runfunction reipl_runfunction reipl_block_ccw_initfunction reipl_block_ccw_fill_parmsfunction reipl_nss_initfunction reipl_ccw_initfunction reipl_fcp_init
Annotated Snippet
struct shutdown_trigger {
char *name;
struct shutdown_action *action;
};
/*
* The following shutdown action types are supported:
*/
#define SHUTDOWN_ACTION_IPL_STR "ipl"
#define SHUTDOWN_ACTION_REIPL_STR "reipl"
#define SHUTDOWN_ACTION_DUMP_STR "dump"
#define SHUTDOWN_ACTION_VMCMD_STR "vmcmd"
#define SHUTDOWN_ACTION_STOP_STR "stop"
#define SHUTDOWN_ACTION_DUMP_REIPL_STR "dump_reipl"
struct shutdown_action {
char *name;
void (*fn) (struct shutdown_trigger *trigger);
int (*init) (void);
int init_rc;
};
static char *ipl_type_str(enum ipl_type type)
{
switch (type) {
case IPL_TYPE_CCW:
return IPL_CCW_STR;
case IPL_TYPE_ECKD:
return IPL_ECKD_STR;
case IPL_TYPE_ECKD_DUMP:
return IPL_ECKD_DUMP_STR;
case IPL_TYPE_FCP:
return IPL_FCP_STR;
case IPL_TYPE_FCP_DUMP:
return IPL_FCP_DUMP_STR;
case IPL_TYPE_NSS:
return IPL_NSS_STR;
case IPL_TYPE_NVME:
return IPL_NVME_STR;
case IPL_TYPE_NVME_DUMP:
return IPL_NVME_DUMP_STR;
case IPL_TYPE_UNKNOWN:
default:
return IPL_UNKNOWN_STR;
}
}
enum dump_type {
DUMP_TYPE_NONE = 1,
DUMP_TYPE_CCW = 2,
DUMP_TYPE_FCP = 4,
DUMP_TYPE_NVME = 8,
DUMP_TYPE_ECKD = 16,
};
static char *dump_type_str(enum dump_type type)
{
switch (type) {
case DUMP_TYPE_NONE:
return DUMP_NONE_STR;
case DUMP_TYPE_CCW:
return DUMP_CCW_STR;
case DUMP_TYPE_ECKD:
return DUMP_ECKD_STR;
case DUMP_TYPE_FCP:
return DUMP_FCP_STR;
case DUMP_TYPE_NVME:
return DUMP_NVME_STR;
default:
return NULL;
}
}
int __bootdata_preserved(ipl_block_valid);
struct ipl_parameter_block __bootdata_preserved(ipl_block);
int __bootdata_preserved(ipl_secure_flag);
unsigned long __bootdata_preserved(ipl_cert_list_addr);
unsigned long __bootdata_preserved(ipl_cert_list_size);
unsigned long __bootdata(early_ipl_comp_list_addr);
unsigned long __bootdata(early_ipl_comp_list_size);
static int reipl_capabilities = IPL_TYPE_UNKNOWN;
static enum ipl_type reipl_type = IPL_TYPE_UNKNOWN;
static struct ipl_parameter_block *reipl_block_fcp;
static struct ipl_parameter_block *reipl_block_nvme;
static struct ipl_parameter_block *reipl_block_ccw;
static struct ipl_parameter_block *reipl_block_eckd;
Annotation
- Immediate include surface: `linux/types.h`, `linux/export.h`, `linux/init.h`, `linux/device.h`, `linux/delay.h`, `linux/kstrtox.h`, `linux/panic_notifier.h`, `linux/reboot.h`.
- Detected declarations: `struct shutdown_action`, `struct shutdown_trigger`, `struct shutdown_action`, `enum dump_type`, `function __diag308`, `function diag308`, `function get_ipl_type`, `function ipl_type_show`, `function ipl_secure_show`, `function ipl_has_secure_show`.
- Atlas domain: Architecture Layer / arch/s390.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.