mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Add controller logs to kdump. Driver allocates DMA memory and communicates this address to FW. In the event of system crash, host driver notifies the firmware about the crash and firmware posts all the necessary logs in the pre-allocated host buffer for firmware debugging. Once firmware notifies the completion of the log uploading to the host memory and host continues with the OS crash dump saving. This is a "feature" driven capability and is backward compatible with existing controller FW. Rename some prefixes for OFA (Online-Firmware Activation ofa_*) buffers to host_memory_*. So, not a lot of actual functional changes to smartpqi_init.c, mainly determining the memory size allocation. Added a function to notify the controller to copy debug data into host memory before continuing kdump. Most of the functional changes are in smartpqi_sis.c where the actual handshaking is done. Reviewed-by: Scott Benesh <scott.benesh@microchip.com> Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com> Signed-off-by: Murthy Bhat <Murthy.Bhat@microchip.com> Signed-off-by: Don Brace <don.brace@microchip.com> Link: https://lore.kernel.org/r/20240827185501.692804-2-don.brace@microchip.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
40 lines
1.8 KiB
C
40 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* driver for Microchip PQI-based storage controllers
|
|
* Copyright (c) 2019-2023 Microchip Technology Inc. and its subsidiaries
|
|
* Copyright (c) 2016-2018 Microsemi Corporation
|
|
* Copyright (c) 2016 PMC-Sierra, Inc.
|
|
*
|
|
* Questions/Comments/Bugfixes to storagedev@microchip.com
|
|
*
|
|
*/
|
|
|
|
#if !defined(_SMARTPQI_SIS_H)
|
|
#define _SMARTPQI_SIS_H
|
|
|
|
void sis_verify_structures(void);
|
|
int sis_wait_for_ctrl_ready(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_wait_for_ctrl_ready_resume(struct pqi_ctrl_info *ctrl_info);
|
|
bool sis_is_firmware_running(struct pqi_ctrl_info *ctrl_info);
|
|
bool sis_is_kernel_up(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_get_ctrl_properties(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_get_pqi_capabilities(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_init_base_struct_addr(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_enable_msix(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_enable_intx(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_shutdown_ctrl(struct pqi_ctrl_info *ctrl_info,
|
|
enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason);
|
|
int sis_pqi_reset_quiesce(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_reenable_sis_mode(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_write_driver_scratch(struct pqi_ctrl_info *ctrl_info, u32 value);
|
|
u32 sis_read_driver_scratch(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_soft_reset(struct pqi_ctrl_info *ctrl_info);
|
|
u32 sis_get_product_id(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_wait_for_fw_triage_completion(struct pqi_ctrl_info *ctrl_info);
|
|
bool sis_is_ctrl_logging_supported(struct pqi_ctrl_info *ctrl_info);
|
|
void sis_notify_kdump(struct pqi_ctrl_info *ctrl_info);
|
|
int sis_wait_for_ctrl_logging_completion(struct pqi_ctrl_info *ctrl_info);
|
|
|
|
extern unsigned int sis_ctrl_ready_timeout_secs;
|
|
|
|
#endif /* _SMARTPQI_SIS_H */
|