Re: [PATCH kvm-unit-tests 07/10] Correct the tss size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- "Avi Kivity" <avi@xxxxxxxxxx> wrote:

> On 08/25/2010 03:27 PM, Jason Wang wrote:
> > ----- "Avi Kivity"<avi@xxxxxxxxxx>  wrote:
> >
> >> On 08/25/2010 12:40 PM, Jason Wang wrote:
> >>> ----- "Avi Kivity"<avi@xxxxxxxxxx>   wrote:
> >>>
> >>>> On 08/24/2010 04:47 PM, Jason Wang wrote:
> >>>>> TSS size should be 104 byte.
> >>>>>
> >>>>> Signed-off-by: Jason Wang<jasowang@xxxxxxxxxx>
> >>>>> ---
> >>>>>     x86/cstart64.S |    2 +-
> >>>>>     1 files changed, 1 insertions(+), 1 deletions(-)
> >>>>>
> >>>>> diff --git a/x86/cstart64.S b/x86/cstart64.S
> >>>>> index 5d358ad..b871153 100644
> >>>>> --- a/x86/cstart64.S
> >>>>> +++ b/x86/cstart64.S
> >>>>> @@ -69,7 +69,7 @@ tss:
> >>>>>     	.long 0
> >>>>>     	.quad ring0stacktop - i * 4096
> >>>> ring 0 stack
> >>>>
> >>>>>     	.quad 0, 0, 0
> >>>> rings 1, 2, 3 stack
> >>> Hello avi:
> >>>
> >>> Rechek with the manual, there's no filed of RSP3. So this patch
> may
> >>> make sense.
> >> That is true.  But please redo it to remove one 0 from the line
> above,
> >>
> >> not from the IST.
> >>
> >>> But unfortunately it breaks 64bit vmexit test. Triple
> >>> fault happens in setup_args(). Any suggestions or is there any
> thing
> >> I
> >>> missed?
> >> No idea.  Can you post an ftrace of the crash?
> >>
> > The trace before triple fault:
> >
> >          ......
> >          qemu-kvm-8101  [002]   243.138507: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138508: kvm_exit: reason
> IO_INSTRUCTION rip 0x400e5f
> >          qemu-kvm-8101  [002]   243.138508: kvm_pio: pio_read at
> 0x510 size 2 count 1
> >          qemu-kvm-8101  [002]   243.138512: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138513: kvm_exit: reason
> IO_INSTRUCTION rip 0x400e71
> >          qemu-kvm-8101  [002]   243.138514: kvm_emulate_insn:
> 0:400e71: ec (prot64)
> >          qemu-kvm-8101  [002]   243.138515: kvm_pio: pio_write at
> 0x511 size 1 count 1
> >          qemu-kvm-8101  [002]   243.138519: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138520: kvm_exit: reason
> IO_INSTRUCTION rip 0x400e71
> >          qemu-kvm-8101  [002]   243.138521: kvm_emulate_insn:
> 0:400e71: ec (prot64)
> >          qemu-kvm-8101  [002]   243.138521: kvm_pio: pio_write at
> 0x511 size 1 count 1
> >          qemu-kvm-8101  [002]   243.138525: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138526: kvm_exit: reason CPUID
> rip 0x400ff7
> >          qemu-kvm-8101  [002]   243.138526: kvm_cpuid: func 1 rax
> 6d3 rbx 800 rcx 80002001 rdx 78bfbfd
> >          qemu-kvm-8101  [002]   243.138527: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138528: kvm_exit: reason
> EXCEPTION_NMI rip 0x400271
> >          qemu-kvm-8101  [002]   243.138528: kvm_page_fault: address
> 40f3a0 error_code b
> >          qemu-kvm-8101  [002]   243.138530: kvm_entry: vcpu 0
> >          qemu-kvm-8101  [002]   243.138531: kvm_exit: reason
> TRIPLE_FAULT rip 0x400c15
> >
> 
> What's the corresponding disassembly?

0000000000400bb8 <__setup_args>:
  400bb8:       41 55                   push   %r13
  400bba:       41 54                   push   %r12
  400bbc:       55                      push   %rbp
  400bbd:       53                      push   %rbx
  400bbe:       48 8b 1d db e7 00 00    mov    0xe7db(%rip),%rbx        # 40f3a0 <__args>
  400bc5:       41 bc 80 ec 40 00       mov    $0x40ec80,%r12d
  400bcb:       41 bd 80 f0 40 00       mov    $0x40f080,%r13d
  400bd1:       eb 42                   jmp    400c15 <__setup_args+0x5d>
  400bd3:       4d 89 65 00             mov    %r12,0x0(%r13)
  400bd7:       0f b6 28                movzbl (%rax),%ebp
  400bda:       40 84 ed                test   %bpl,%bpl
  400bdd:       75 16                   jne    400bf5 <__setup_args+0x3d>
  400bdf:       eb 21                   jmp    400c02 <__setup_args+0x4a>
  400be1:       41 88 2c 24             mov    %bpl,(%r12)
  400be5:       49 83 c4 01             add    $0x1,%r12
  400bed:       0f b6 2b                movzbl (%rbx),%ebp
  400bf0:       40 84 ed                test   %bpl,%bpl
  400bf3:       74 0d                   je     400c02 <__setup_args+0x4a>
  400bf5:       40 0f be fd             movsbl %bpl,%edi
  400bf9:       e8 a6 ff ff ff          callq  400ba4 <isblank>
  400bfe:       84 c0                   test   %al,%al
  400c00:       74 df                   je     400be1 <__setup_args+0x29>
  400c02:       49 83 c5 08             add    $0x8,%r13
  400c06:       41 c6 04 24 00          movb   $0x0,(%r12)
  400c0b:       49 83 c4 01             add    $0x1,%r12
  400c0f:       eb 04                   jmp    400c15 <__setup_args+0x5d>
  400c11:       48 83 c3 01             add    $0x1,%rbx
>>400c15:       0f b6 2b                movzbl (%rbx),%ebp
  400c18:       40 0f be fd             movsbl %bpl,%edi
  400c1c:       e8 83 ff ff ff          callq  400ba4 <isblank>
  ....


> 
> -- 
> I have a truly marvellous patch that fixes the bug which this
> signature is too narrow to contain.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux