mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
wifi: iwlwifi: add support for the devcoredump
This handler will be used by upcoming changes to trigger firmware dumps from devcoredump through trans layer. Signed-off-by: Pagadala Yesu Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250611222325.bb38efe6700d.I9c666440dd1eac13ac52a2c2d533224c36fea2a6@changeid
This commit is contained in:
committed by
Miri Korenblit
parent
8689bc3fc0
commit
5943ce4e37
@@ -147,6 +147,8 @@ struct iwl_fw_error_dump_mode {
|
||||
* Op_mode needs to reset its internal state because the device did not
|
||||
* survive the system state transition. The firmware is no longer running,
|
||||
* etc...
|
||||
* @dump: Op_mode needs to collect the firmware dump upon this handler
|
||||
* being called.
|
||||
*/
|
||||
struct iwl_op_mode_ops {
|
||||
struct iwl_op_mode *(*start)(struct iwl_trans *trans,
|
||||
@@ -174,6 +176,7 @@ struct iwl_op_mode_ops {
|
||||
enum iwl_fw_ini_time_point tp_id,
|
||||
union iwl_dbg_tlv_tp_data *tp_data);
|
||||
void (*device_powered_off)(struct iwl_op_mode *op_mode);
|
||||
void (*dump)(struct iwl_op_mode *op_mode);
|
||||
};
|
||||
|
||||
int iwl_opmode_register(const char *name, const struct iwl_op_mode_ops *ops);
|
||||
@@ -286,4 +289,11 @@ static inline void iwl_op_mode_device_powered_off(struct iwl_op_mode *op_mode)
|
||||
op_mode->ops->device_powered_off(op_mode);
|
||||
}
|
||||
|
||||
static inline void iwl_op_mode_dump(struct iwl_op_mode *op_mode)
|
||||
{
|
||||
if (!op_mode || !op_mode->ops || !op_mode->ops->dump)
|
||||
return;
|
||||
op_mode->ops->dump(op_mode);
|
||||
}
|
||||
|
||||
#endif /* __iwl_op_mode_h__ */
|
||||
|
||||
@@ -1564,12 +1564,21 @@ static const struct dev_pm_ops iwl_dev_pm_ops = {
|
||||
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
static void iwl_pci_dump(struct device *device)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(device);
|
||||
struct iwl_trans *trans = pci_get_drvdata(pdev);
|
||||
|
||||
iwl_op_mode_dump(trans->op_mode);
|
||||
}
|
||||
|
||||
static struct pci_driver iwl_pci_driver = {
|
||||
.name = DRV_NAME,
|
||||
.id_table = iwl_hw_card_ids,
|
||||
.probe = iwl_pci_probe,
|
||||
.remove = iwl_pci_remove,
|
||||
.driver.pm = IWL_PM_OPS,
|
||||
.driver.coredump = iwl_pci_dump,
|
||||
};
|
||||
|
||||
int __must_check iwl_pci_register_driver(void)
|
||||
|
||||
Reference in New Issue
Block a user