dump_info
struct ssr_dump_info *dump_info;
struct ssr_dump_info *dump_info = ssr_crash->dump_info;
ssr_crash->dump_info = NULL;
if (!dump_info)
if (!dump_info->read_buf_req_queued)
kfree(dump_info->read_buf_req);
vfree(dump_info->tbl_addr);
vfree(dump_info->dump_addr);
kfree(dump_info);
static int alloc_dump(struct ssr_dump_info *dump_info)
struct debug_info_table *tbl_ent = dump_info->tbl_addr;
while (tbl_sz_lp < dump_info->tbl_len) {
dump_info->dump_sz = dump_size + dump_info->tbl_len + sizeof(*dump_meta);
dump_info->dump_addr = vzalloc(dump_info->dump_sz);
if (!dump_info->dump_addr)
dump_meta = dump_info->dump_addr;
dump_meta->size = dump_info->dump_sz;
dump_meta->tbl_len = dump_info->tbl_len;
memcpy(dump_info->dump_addr + sizeof(*dump_meta), dump_info->tbl_addr, dump_info->tbl_len);
dump_info->dump_off = dump_info->tbl_len + sizeof(*dump_meta);
struct ssr_dump_info *dump_info;
dump_info = ssr_crash->dump_info;
read_buf_req = dump_info->read_buf_req;
dump_info->read_buf_req_queued = true;
static int ssr_copy_table(struct ssr_dump_info *dump_info, void *data, u64 len)
if (len > dump_info->tbl_len - dump_info->tbl_off)
memcpy(dump_info->tbl_addr + dump_info->tbl_off, data, len);
dump_info->tbl_off += len;
if (dump_info->tbl_off == dump_info->tbl_len) {
dump_info->tbl_ent = dump_info->tbl_addr;
return alloc_dump(dump_info);
static int ssr_copy_dump(struct ssr_dump_info *dump_info, void *data, u64 len)
tbl_ent = dump_info->tbl_ent;
if (len > tbl_ent->len - dump_info->tbl_ent_off)
memcpy(dump_info->dump_addr + dump_info->dump_off, data, len);
dump_info->dump_off += len;
dump_info->tbl_ent_off += len;
if (tbl_ent->len == dump_info->tbl_ent_off) {
dump_info->tbl_ent++;
dump_info->tbl_ent_off = 0;
struct ssr_dump_info *dump_info;
dump_info = ssr_crash->dump_info;
if (!dump_info)
if (dump_info->tbl_off < dump_info->tbl_len) /* Chunk belongs to table */
ret = ssr_copy_table(dump_info, mem_rd_resp->data, data_len);
ret = ssr_copy_dump(dump_info, mem_rd_resp->data, data_len);
if (dump_info->tbl_off < dump_info->tbl_len) {
dest_addr = dump_info->tbl_addr_dev + dump_info->tbl_off;
dest_len = min(SSR_MEM_READ_CHUNK_SIZE, dump_info->tbl_len - dump_info->tbl_off);
} else if (dump_info->dump_off < dump_info->dump_sz) {
tbl_ent = dump_info->tbl_ent;
dest_addr = tbl_ent->mem_base + dump_info->tbl_ent_off;
dest_len = min(SSR_MEM_READ_CHUNK_SIZE, tbl_ent->len - dump_info->tbl_ent_off);
ret = send_xfer_done(qdev, dump_info->resp->data, hdr.dbc_id);
struct ssr_dump_info *dump_info;
dump_info = kzalloc_obj(*dump_info);
if (!dump_info) {
dump_info->read_buf_req = kzalloc_obj(*dump_info->read_buf_req);
if (!dump_info->read_buf_req) {
dump_info->tbl_addr = vzalloc(debug_info->tbl_len);
if (!dump_info->tbl_addr) {
dump_info->tbl_addr_dev = debug_info->tbl_addr;
dump_info->tbl_len = debug_info->tbl_len;
return dump_info;
kfree(dump_info->read_buf_req);
kfree(dump_info);
ssr_crash->dump_info = alloc_dump_info(qdev, debug_info);
if (IS_ERR(ssr_crash->dump_info)) {
ret = PTR_ERR(ssr_crash->dump_info);
ssr_crash->dump_info = NULL;
struct ssr_dump_info *dump_info;
dump_info = ssr_crash->dump_info;
if (!dump_info)
dev_coredumpv(dev, dump_info->dump_addr, dump_info->dump_sz, GFP_KERNEL);
dump_info->dump_addr = NULL;
struct ssr_dump_info *dump_info = NULL;
dump_info = ssr_crash->dump_info;
dump_info->dbc = dbc;
dump_info->resp = resp;
ret = mem_read_req(qdev, dump_info->tbl_addr_dev,
min(dump_info->tbl_len, SSR_MEM_READ_CHUNK_SIZE));
if (ssr_crash && ssr_crash->dump_info) {
struct ssr_dump_info *dump_info;
dump_info = ssr_crash->dump_info;
if (dump_info) {
dump_info->read_buf_req_queued = false;
struct mcif_wb_frame_dump_info *dump_info,
struct mcif_wb_frame_dump_info *dump_info,
dump_info->format = out_format;
dump_info->width = dest_width;
dump_info->height = dest_height;
dump_info->luma_pitch = mcif_params->luma_pitch;
dump_info->chroma_pitch = mcif_params->chroma_pitch;
dump_info->size = dest_height * (mcif_params->luma_pitch + mcif_params->chroma_pitch);
struct mcif_wb_frame_dump_info *dump_info,
mutex_lock(&dmn->dump_info.dbg_mutex);
mutex_unlock(&dmn->dump_info.dbg_mutex);
if (atomic_read(&dmn->dump_info.state) != MLX5DR_DEBUG_DUMP_STATE_FREE) {
atomic_set(&dmn->dump_info.state, MLX5DR_DEBUG_DUMP_STATE_IN_PROGRESS);
dump_data = dmn->dump_info.dump_data;
dmn->dump_info.dump_data = dump_data;
dmn->dump_info.dump_data = NULL;
atomic_set(&dmn->dump_info.state, MLX5DR_DEBUG_DUMP_STATE_FREE);
dump_data = dmn->dump_info.dump_data;
dump_data = dmn->dump_info.dump_data;
dmn->dump_info.dump_data = NULL;
atomic_set(&dmn->dump_info.state, MLX5DR_DEBUG_DUMP_STATE_FREE);
dmn->dump_info.steering_debugfs =
dmn->dump_info.fdb_debugfs =
debugfs_create_dir("fdb", dmn->dump_info.steering_debugfs);
debugfs_create_file(file_name, 0444, dmn->dump_info.fdb_debugfs,
mutex_init(&dmn->dump_info.dbg_mutex);
debugfs_remove_recursive(dmn->dump_info.steering_debugfs);
mutex_destroy(&dmn->dump_info.dbg_mutex);
dump_data = dmn->dump_info.dump_data;
mutex_lock(&tbl->dmn->dump_info.dbg_mutex);
mutex_unlock(&tbl->dmn->dump_info.dbg_mutex);
mutex_lock(&tbl->dmn->dump_info.dbg_mutex);
mutex_unlock(&tbl->dmn->dump_info.dbg_mutex);
mutex_lock(&dmn->dump_info.dbg_mutex);
mutex_unlock(&dmn->dump_info.dbg_mutex);
mutex_lock(&dmn->dump_info.dbg_mutex);
mutex_unlock(&dmn->dump_info.dbg_mutex);
mutex_lock(&matcher->tbl->dmn->dump_info.dbg_mutex);
mutex_unlock(&matcher->tbl->dmn->dump_info.dbg_mutex);
mutex_lock(&matcher->tbl->dmn->dump_info.dbg_mutex);
mutex_unlock(&matcher->tbl->dmn->dump_info.dbg_mutex);
struct mlx5dr_dbg_dump_info dump_info;
struct qede_dump_info dump_info;
if (edev->dump_info.cmd == QEDE_DUMP_CMD_NONE) {
edev->dump_info.cmd = val->flag;
edev->dump_info.num_args = 0;
if (edev->dump_info.num_args == QEDE_DUMP_MAX_ARGS) {
DP_ERR(edev, "Arg count = %d\n", edev->dump_info.num_args);
switch (edev->dump_info.cmd) {
edev->dump_info.args[edev->dump_info.num_args] = val->flag;
edev->dump_info.num_args++;
switch (edev->dump_info.cmd) {
edev->dump_info.args[0]);
DP_ERR(edev, "Invalid cmd = %d\n", edev->dump_info.cmd);
switch (edev->dump_info.cmd) {
if (edev->dump_info.num_args != QEDE_DUMP_NVM_ARG_COUNT) {
edev->dump_info.num_args,
edev->dump_info.args[0],
edev->dump_info.args[1]);
DP_ERR(edev, "Invalid cmd = %d\n", edev->dump_info.cmd);
edev->dump_info.cmd = QEDE_DUMP_CMD_NONE;
edev->dump_info.num_args = 0;
memset(edev->dump_info.args, 0, sizeof(edev->dump_info.args));
struct iwl_fw_error_dump_info *dump_info;
file_len += sizeof(*dump_data) + sizeof(*dump_info);
sizeof(*dump_info) + sizeof(*dump_smem_cfg);
dump_data->len = cpu_to_le32(sizeof(*dump_info));
dump_info = (void *)dump_data->data;
dump_info->hw_type =
dump_info->hw_step =
memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable,
sizeof(dump_info->fw_human_readable));
strscpy_pad(dump_info->dev_human_readable,
sizeof(dump_info->dev_human_readable));
strscpy_pad(dump_info->bus_human_readable, fwrt->dev->bus->name,
sizeof(dump_info->bus_human_readable));
dump_info->num_of_lmacs = fwrt->smem_cfg.num_lmacs;
dump_info->lmac_err_id[0] =
dump_info->lmac_err_id[1] =
dump_info->umac_err_id = cpu_to_le32(fwrt->dump.umac_err_id);
struct dump_info mcq_dumps[] = {
struct genl_dumpit_info *dump_info = cb->data;
const struct genl_split_ops *ops = &dump_info->op;
struct genl_info *info = &dump_info->info;
struct genl_dumpit_info *dump_info = cb->data;
const struct genl_split_ops *ops = &dump_info->op;
struct genl_info *info = &dump_info->info;
genl_dumpit_info_free(dump_info);
dump_info();