Path: blob/master/arch/powerpc/platforms/pseries/pseries.h
26481 views
/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* Copyright 2006 IBM Corporation.3*/45#ifndef _PSERIES_PSERIES_H6#define _PSERIES_PSERIES_H78#include <linux/interrupt.h>9#include <asm/rtas.h>1011struct device_node;1213void __init request_event_sources_irqs(struct device_node *np,14irq_handler_t handler, const char *name);1516#include <linux/of.h>1718struct pt_regs;1920extern int pSeries_system_reset_exception(struct pt_regs *regs);21extern int pSeries_machine_check_exception(struct pt_regs *regs);22extern long pseries_machine_check_realmode(struct pt_regs *regs);23void pSeries_machine_check_log_err(void);2425#ifdef CONFIG_SMP26extern void smp_init_pseries(void);2728/* Get state of physical CPU from query_cpu_stopped */29int smp_query_cpu_stopped(unsigned int pcpu);30#define QCSS_STOPPED 031#define QCSS_STOPPING 132#define QCSS_NOT_STOPPED 233#define QCSS_HARDWARE_ERROR -134#define QCSS_HARDWARE_BUSY -235#else36static inline void smp_init_pseries(void) { }37#endif3839extern void pseries_kexec_cpu_down(int crash_shutdown, int secondary);4041extern void pSeries_final_fixup(void);4243/* Poweron flag used for enabling auto ups restart */44extern unsigned long rtas_poweron_auto;4546/* Dynamic logical Partitioning/Mobility */47extern void dlpar_free_cc_nodes(struct device_node *);48extern void dlpar_free_cc_property(struct property *);49extern struct device_node *dlpar_configure_connector(__be32,50struct device_node *);51extern int dlpar_attach_node(struct device_node *, struct device_node *);52extern int dlpar_detach_node(struct device_node *);53extern int dlpar_acquire_drc(u32 drc_index);54extern int dlpar_release_drc(u32 drc_index);55extern int dlpar_unisolate_drc(u32 drc_index);56extern void post_mobility_fixup(void);5758void queue_hotplug_event(struct pseries_hp_errorlog *hp_errlog);59int handle_dlpar_errorlog(struct pseries_hp_errorlog *hp_errlog);6061#ifdef CONFIG_MEMORY_HOTPLUG62int dlpar_memory(struct pseries_hp_errorlog *hp_elog);63int dlpar_hp_pmem(struct pseries_hp_errorlog *hp_elog);64#else65static inline int dlpar_memory(struct pseries_hp_errorlog *hp_elog)66{67return -EOPNOTSUPP;68}69static inline int dlpar_hp_pmem(struct pseries_hp_errorlog *hp_elog)70{71return -EOPNOTSUPP;72}73#endif7475#ifdef CONFIG_HOTPLUG_CPU76int dlpar_cpu(struct pseries_hp_errorlog *hp_elog);77void pseries_cpu_hotplug_init(void);78#else79static inline int dlpar_cpu(struct pseries_hp_errorlog *hp_elog)80{81return -EOPNOTSUPP;82}83static inline void pseries_cpu_hotplug_init(void) { }84#endif8586/* PCI root bridge prepare function override for pseries */87struct pci_host_bridge;88int pseries_root_bridge_prepare(struct pci_host_bridge *bridge);8990extern struct pci_controller_ops pseries_pci_controller_ops;91int pseries_msi_allocate_domains(struct pci_controller *phb);92void pseries_msi_free_domains(struct pci_controller *phb);9394extern int CMO_PrPSP;95extern int CMO_SecPSP;96extern unsigned long CMO_PageSize;9798static inline int cmo_get_primary_psp(void)99{100return CMO_PrPSP;101}102103static inline int cmo_get_secondary_psp(void)104{105return CMO_SecPSP;106}107108static inline unsigned long cmo_get_page_size(void)109{110return CMO_PageSize;111}112113int dlpar_workqueue_init(void);114115extern u32 pseries_security_flavor;116void pseries_setup_security_mitigations(void);117118#ifdef CONFIG_PPC_64S_HASH_MMU119void pseries_lpar_read_hblkrm_characteristics(void);120#else121static inline void pseries_lpar_read_hblkrm_characteristics(void) { }122#endif123124void pseries_rng_init(void);125#ifdef CONFIG_SPAPR_TCE_IOMMU126struct iommu_group *pSeries_pci_device_group(struct pci_controller *hose,127struct pci_dev *pdev);128#endif129130#endif /* _PSERIES_PSERIES_H */131132133