Как увидеть дополнительный аппаратный дамп в vmcore - PullRequest
0 голосов
/ 25 марта 2019

Я включаю поток дампа памяти в моем Linux, используя механизм Linux kexec. Этот поток заканчивается изображением эльфа vmcore, отражающим ситуацию с полной памятью в момент сбоя. Драйвер vmcore в ядре, который выводит образ vmcore elf, имеет vmcore_add_device_dump API, который используется для вставки некоторых дополнительных разделов аппаратной памяти в ELF. Я использую этот API следующим образом:

int hw_dump_collect(void *buf, u32 *buf_size)
{
    unsigned int val = 0xFEFE; // fill buf with hw data
    memcpy(buf, &val, sizeof(unsigned int));
    return 0;
}

static int hw_dump_vmcoredd_collect(struct vmcoredd_data *data, void *buf)
{
    u32 len = data->size;
    return hw_dump_collect(buf, &len);
}

int hw_dump_vmcore_add_dump(struct device *dev)
{
    struct vmcoredd_data *data = vmalloc(sizeof (struct vmcoredd_data));
    u32 len;

    len = dev->data_len;

    data->size = len;
    snprintf(data->dump_name, sizeof(data->dump_name), "%s",
         dev->dev->name);
    data->vmcoredd_callback = hw_dump_vmcoredd_collect;

    return vmcore_add_device_dump(data);
}

Однако, после создания файла vmcore я хочу посмотреть эти данные, но не знаю, как это сделать. Может быть, правильный путь - утилита аварийного отключения, но как?

Пожалуйста, сообщите,

...