Sun, May 05, 2019 at 02:33:23AM CEST, [email protected] wrote:
>From: Moshe Shemesh <[email protected]>
>
>Create mlx5_devlink_health_reporter for FW reporter. The FW reporter
>implements devlink_health_reporter diagnose callback.
>
>The fw reporter diagnose command can be triggered any time by the user
>to check current fw status.
>In healthy status, it will return clear syndrome. Otherwise it will dump
>the health info buffer.
>
>Command example and output on healthy status:
>$ devlink health diagnose pci/0000:82:00.0 reporter fw
>Syndrome: 0
>
>Command example and output on non healthy status:
>$ devlink health diagnose pci/0000:82:00.0 reporter fw
>diagnose data:
>assert_var[0] 0xfc3fc043
>assert_var[1] 0x0001b41c
>assert_var[2] 0x00000000
>assert_var[3] 0x00000000
>assert_var[4] 0x00000000
>assert_exit_ptr 0x008033b4
>assert_callra 0x0080365c
>fw_ver 16.24.1000
>hw_id 0x0000020d
>irisc_index 0
>synd 0x8: unrecoverable hardware error
>ext_synd 0x003d
>raw fw_ver 0x101803e8
>
>Signed-off-by: Moshe Shemesh <[email protected]>
>Signed-off-by: Eran Ben Elisha <[email protected]>
>Signed-off-by: Saeed Mahameed <[email protected]>

        
[...]   
        
        
>+static int
>+mlx5_fw_reporter_diagnose(struct devlink_health_reporter *reporter,
>+                        struct devlink_fmsg *fmsg)
>+{
>+      struct mlx5_core_dev *dev = devlink_health_reporter_priv(reporter);
>+      struct mlx5_core_health *health = &dev->priv.health;
>+      u8 synd;
>+      int err;
>+
>+      mutex_lock(&health->info_buf_lock);
>+      mlx5_get_health_info(dev, &synd);
>+
>+      if (!synd) {
>+              mutex_unlock(&health->info_buf_lock);
>+              return devlink_fmsg_u8_pair_put(fmsg, "Syndrome", synd);
>+      }
>+
>+      err = devlink_fmsg_string_pair_put(fmsg, "diagnose data",
>+                                         health->info_buf);

No! This is wrong! You are sneaking in text blob. Please put the info in
structured form using proper fmsg helpers.

Reply via email to