[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2021-05-10 Thread Thomas Huth
This is an automated cleanup. This bug report has been moved to QEMU's new bug tracker on gitlab.com and thus gets marked as 'expired' now. Please continue with the discussion here: https://gitlab.com/qemu-project/qemu/-/issues/249 ** Changed in: qemu Status: Confirmed => Expired **

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2021-05-05 Thread Peter Maydell
The QEMU code implementing the iret insn is still doing loads/stores as if kernel mode, so this is still a bug. ** Changed in: qemu Status: Incomplete => Confirmed -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU.

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2021-05-05 Thread Thomas Huth
The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. If you still think this bug report here is valid, then please switch the

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-25 Thread Robert Henry
The change should only be dynamically visible when doing an iretq from and to the same protection level, AFAICT. The code clearly[sic] works now for the interrupt return that is used by the linux kernel, presumably {from=kernel, to=kernel} or {from=kernel, to=user}. I would claim that to make

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-25 Thread Richard Henderson
Robert, please try replacing s/_kernel_/_data_/g. That will use the current address space and permissions as opposed to cpl=0 address space and permissions. -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU.

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-25 Thread Peter Maydell
That function is for "do a guest memory load as if from the kernel" (ie with the permissions and page table settings that guest kernel-mode accesses would use). We'd need to look at what the required semantics for the instruction are for user-mode iretq: are the loads supposed to be done with only

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-24 Thread Robert Henry
Peter: I think your intuition is right. The POPQ_RA (pop quad, passing through return address handle) is only called from helper_ret_protected, and it suspiciously calls cpu_ldq_kernel_ra which calls cpu_mmu_index_kernel which only is prepared for kernel space iretq (and of course the substring

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-24 Thread Robert Henry
I've stepped/nexted from the helper_iret_protected, going deep into the bowels of the TLB, MMU and page table engine. None of which I understand. The helper_ret_protected faults in the first POPQ_RA. I'll investigate the value of sp at the time of the POPQ_RA. Here's the POPQ_RA in

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-19 Thread Peter Maydell
Thanks, that's pretty clear. I expect you'll find the bug is just that QEMU doesn't get the semantics of an iret from userspace correct. The helper_iret_protected() function is probably a good place to look. -- You received this bug notification because you are a member of qemu- devel-ml, which

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-19 Thread Robert Henry
yes, it is intentional. I don't yet understand why, but am talking to those who do. https://github.com/dotnet/runtime/blob/1b02665be501b695b9c22c1ebd69148c07a225f6/src/coreclr/src/pal/src/arch/amd64/context2.S#L183 -- You received this bug notification because you are a member of qemu-

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-19 Thread Peter Maydell
Is dotnet intentionally doing an iret? It seems like an odd thing for a userspace program to do, given it's basically "return from interrupt". -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1866892

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-19 Thread Robert Henry
I have confirmed that the dotnet guest application is executing a "iretq" instruction when this guest kernel bug is hit. A first round of analysis shows nothing unreasonable at the point the iretq is executed. The $rsp points into the middle of a mapped in page, the returned-to $rip looks

[Bug 1866892] Re: guest OS catches a page fault bug when running dotnet

2020-03-16 Thread Robert Henry
A simpler case seems to produce the same error. See https://bugs.launchpad.net/qemu/+bug/1824344 -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1866892 Title: guest OS catches a page fault bug