• Bug#265989: qemu: QEMU acts incorrectly when TSS of v86 task is not in

    From Guy T. Rice@1:229/2 to All on Mon Aug 16 08:10:09 2004
    From: [email protected]

    Package: qemu
    Version: 0.6.0-1
    Severity: normal

    When operating in Virtual-8086 mode, when the processor hits an instruction that should cause a 0x0D General Protection exception, it accesses the TSS of the v86 task.

    On an actual Intel processor, with paging enabled, the TSS of a Virtual-8086 mode task can be located in a page marked for supervisor-only access, and when the processor attempts to access the TSS it does so without difficulty, even though a v86 task is a user mode task, since it first switches to supervisor mode to handle the exception. The 0x0D General Protection exception proceeds normally.

    Under QEMU, if the TSS of the v86 task is located in a page marked for supervisor-only access, instead of the expected 0x0D General Protection exception, we instead receive a 0x0E Page Fault exception, with the error
    code 5 (indicating a protection violation from user mode) and the CR2
    register pointing to the 103rd byte of the v86 task's TSS.

    This causes code that executes perfectly fine on real hardware or under Bochs to fail when running under QEMU. Contact me if you require sample code that demonstrates this behavior.

    -- System Information:
    Debian Release: 3.1
    APT prefers unstable
    APT policy: (500, 'unstable')
    Architecture: i386 (i686)
    Kernel: Linux 2.4.26-1-686
    Locale: LANG=C, LC_CTYPE=C

    Versions of packages qemu depends on:
    ii libc6 2.3.2.ds1-16 GNU C Library: Shared libraries an ii libsdl1.2debian 1.2.7-7 Simple DirectMedia Layer

    -- no debconf information


    --
    To UNSUBSCRIBE, email to [email protected]
    with a subject of "unsubscribe". Trouble? Contact [email protected]

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)