[Crash-utility] [PATCH 1/2] vmware_vmss: get proper ITDR

d.hatayama at fujitsu.com d.hatayama at fujitsu.com
Tue Oct 20 05:58:23 UTC 2020


> diff --git a/vmware_vmss.c b/vmware_vmss.c
> index b168f29..8aa0de0 100644
> --- a/vmware_vmss.c
> +++ b/vmware_vmss.c
> @@ -881,6 +881,27 @@ vmware_vmss_get_cr3_idtr(ulong *cr3, ulong *idtr)
>         *cr3 = vmss.regs64[0]->cr[3];
>         *idtr = vmss.regs64[0]->idtr;
> 
> +       /*
> +        * debug.guest is generated on guest triple fault. One of the possible
> +        * ways to triple fault is: zeroing IDTR and int3.
> +        * This is used in linux to reboot machine using triple fault:
> +        * "reboot=t" cmdline.
> +        * In that case CPU which triggered triple fault will have zeroed
> +        * IDTR. IDTR and CR3 are used to calculate kaslr offset and phys
> +        * base.
> +        * If IDTR on CPU0 is zeroed and we have several CPUs, return IDTR from
> +        * another CPU.
> +        */
> +       if (vmss.num_vcpus > 1 && *idtr == 0) {
> +               int i;
> +               for (i = 0; i < vmss.num_vcpus; i++) {
> +                       if (vmss.vcpu_regs[i] == REGS_PRESENT_ALL) {
> +                               *idtr = vmss.regs64[i]->idtr;
> +                               break;
> +                       }
> +               }
> +       }
> +
>         return TRUE;
>  }

It looks that this is useful regardless of crash dump mechanism such as VMware, virsh dump, sadump and so on.
Should be in kaslr_helper.c.

Thanks.
HATAYAMA, Daisuke






More information about the Crash-utility mailing list