qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* QEMU on x64
@ 2021-07-30 17:36 Christopher Caulfield
  2021-07-30 18:13 ` Peter Maydell
  2021-08-02  9:05 ` Paolo Bonzini
  0 siblings, 2 replies; 6+ messages in thread
From: Christopher Caulfield @ 2021-07-30 17:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: alexsmendez

[-- Attachment #1: Type: text/plain, Size: 1319 bytes --]

Hi QEMU community,

This is Christopher from the debugging experiences team at Microsoft
focused on kernel debugging. I am reaching out with a few questions about
QEMU on x64.


   1. Is it possible for the QEMU-x86-64 GDB Server to send the full set of
   x64 system registers (whether they are included in a separated system xml
   file or as part of the core registers xml file)?
      - e.g. System registers missing from i386-64bit.xml file

      DWORD64 IDTBase;
      DWORD64 IDTLimit;
      DWORD64 GDTBase;
      DWORD64 GDTLimit;
      DWORD SelLDT;
      SEG64_DESC_INFO SegLDT;
      DWORD SelTSS;
      SEG64_DESC_INFO SegTSS;
      2. How can I access x64 MSR registers by using the QEMU-x86-64 GDB
   server?
      - #define MSR_EFER 0xc0000080 // extended function enable register
      #define MSR_STAR 0xc0000081 // system call selectors
      #define MSR_LSTAR 0xc0000082 // system call 64-bit entry
      #define MSR_CSTAR 0xc0000083 // system call 32-bit entry
   3. Going off of #2 - can you access it via reading GDB memory command?
   if not - is there any plan to support reading/writing to MSRs via
   QEMU-x86-64 GDB server?


Thank you for taking time to answer our questions! :)

-Christopher
LinkedIn <https://www.linkedin.com/in/ctcaulfield/> | Twitter
<https://twitter.com/ctcaulfield>

[-- Attachment #2: Type: text/html, Size: 1435 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: QEMU on x64
  2021-07-30 17:36 QEMU on x64 Christopher Caulfield
@ 2021-07-30 18:13 ` Peter Maydell
  2021-08-02 17:27   ` Alex Bennée
  2021-08-02  9:05 ` Paolo Bonzini
  1 sibling, 1 reply; 6+ messages in thread
From: Peter Maydell @ 2021-07-30 18:13 UTC (permalink / raw)
  To: Christopher Caulfield; +Cc: alexsmendez, QEMU Developers

On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
<ctcaulfield@gmail.com> wrote:
> This is Christopher from the debugging experiences team at Microsoft focused on kernel debugging. I am reaching out with a few questions about QEMU on x64.
>
> Is it possible for the QEMU-x86-64 GDB Server to send the full set of x64 system registers (whether they are included in a separated system xml file or as part of the core registers xml file)?

Do you mean "is it possible for somebody to write code for
QEMU to make it do that", or "does QEMU do it today if you pass
it the right command line option" ? The answer to the former
is "yes", to the latter "no". (If you want the debugger to
be able to write to the system registers this might be a little
trickier, mostly in terms of "auditing the code to make sure this
can't confuse QEMU if you change some sysreg under its feet.".)

> e.g. System registers missing from i386-64bit.xml file

> DWORD64 IDTBase;
> DWORD64 IDTLimit;
> DWORD64 GDTBase;
> DWORD64 GDTLimit;
> DWORD SelLDT;
> SEG64_DESC_INFO SegLDT;
> DWORD SelTSS;
> SEG64_DESC_INFO SegTSS;
>
> How can I access x64 MSR registers by using the QEMU-x86-64 GDB server?
>
> #define MSR_EFER 0xc0000080 // extended function enable register

EFER is in the xml ("x64_efer") so should be already accessible.
For anything else you're going to need to write some code to
make it happen.

>is there any plan to support reading/writing to MSRs via QEMU-x86-64 GDB server?

Not that I know of. We'd be happy to review patches if you want to
write them.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: QEMU on x64
  2021-07-30 17:36 QEMU on x64 Christopher Caulfield
  2021-07-30 18:13 ` Peter Maydell
@ 2021-08-02  9:05 ` Paolo Bonzini
  1 sibling, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2021-08-02  9:05 UTC (permalink / raw)
  To: Christopher Caulfield, qemu-devel; +Cc: alexsmendez

On 30/07/21 19:36, Christopher Caulfield wrote:
> Hi QEMU community,
> 
> This is Christopher from the debugging experiences team at Microsoft 
> focused on kernel debugging. I am reaching out with a few questions 
> about QEMU on x64.
> 
>  1. Is it possible for the QEMU-x86-64 GDB Server to send the full set
>     of x64 system registers (whether they are included in a separated
>     system xml file or as part of the core registers xml file)?
>       * e.g. System registers missing from i386-64bit.xml file
> 
>         DWORD64 IDTBase;
>         DWORD64 IDTLimit;
>         DWORD64 GDTBase;
>         DWORD64 GDTLimit;
>         DWORD SelLDT;
>         SEG64_DESC_INFO SegLDT;
>         DWORD SelTSS;
>         SEG64_DESC_INFO SegTSS;

Yes, that is possible.

>  2. How can I access x64 MSR registers by using the QEMU-x86-64 GDB server?
>       * #define MSR_EFER 0xc0000080 // extended function enable register
>         #define MSR_STAR 0xc0000081 // system call selectors
>         #define MSR_LSTAR 0xc0000082 // system call 64-bit entry
>         #define MSR_CSTAR 0xc0000083 // system call 32-bit entry
>  3. Going off of #2 - can you access it via reading GDB memory command?
>     if not - is there any plan to support reading/writing to MSRs via
>     QEMU-x86-64 GDB server?

Right now it's not possible, but for specific MSRs it's possible to add 
them to the XML and export them.

Can you create an issue on https://gitlab.com/qemu-project/qemu/-/issues 
please?

Paolo



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: QEMU on x64
  2021-07-30 18:13 ` Peter Maydell
@ 2021-08-02 17:27   ` Alex Bennée
  2021-08-03  1:34     ` Christopher Caulfield
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Bennée @ 2021-08-02 17:27 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Christopher Caulfield, alexsmendez, qemu-devel


Peter Maydell <peter.maydell@linaro.org> writes:

> On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
> <ctcaulfield@gmail.com> wrote:
>> This is Christopher from the debugging experiences team at Microsoft focused on kernel debugging. I am reaching out with a few questions about QEMU on x64.
>>
>> Is it possible for the QEMU-x86-64 GDB Server to send the full set
>> of x64 system registers (whether they are included in a separated
>> system xml file or as part of the core registers xml file)?
>
> Do you mean "is it possible for somebody to write code for
> QEMU to make it do that", or "does QEMU do it today if you pass
> it the right command line option" ? The answer to the former
> is "yes", to the latter "no". (If you want the debugger to
> be able to write to the system registers this might be a little
> trickier, mostly in terms of "auditing the code to make sure this
> can't confuse QEMU if you change some sysreg under its feet.".)
>
>> e.g. System registers missing from i386-64bit.xml file
>
>> DWORD64 IDTBase;
>> DWORD64 IDTLimit;
>> DWORD64 GDTBase;
>> DWORD64 GDTLimit;
>> DWORD SelLDT;
>> SEG64_DESC_INFO SegLDT;
>> DWORD SelTSS;
>> SEG64_DESC_INFO SegTSS;
>>
>> How can I access x64 MSR registers by using the QEMU-x86-64 GDB server?
>>
>> #define MSR_EFER 0xc0000080 // extended function enable register
>
> EFER is in the xml ("x64_efer") so should be already accessible.
> For anything else you're going to need to write some code to
> make it happen.
>
>>is there any plan to support reading/writing to MSRs via QEMU-x86-64
>GDB server?

Not at the moment but I am keen to see any eventual solution try to be
generic rather than hardwired for one architecture. The ARM code
currently builds custom XML from it's register descriptors to expose
it's MSR registers to the gdbstub. Ideally architecture front ends
should register their registers with a new subsystem which can then do
the glue between gdbstub as well as other systems that also care about
register values (logging, HMP, TCG plugins).

That said I'm not going to block any patches that just fix up the
current XML and target/i386/gdbstub code. I'm not familiar enough with
what the internal register representation state is for x86 w.r.t to TCG
and hypervisor based running modes.

> Not that I know of. We'd be happy to review patches if you want to
> write them.
>
> thanks
> -- PMM


-- 
Alex Bennée


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: QEMU on x64
  2021-08-02 17:27   ` Alex Bennée
@ 2021-08-03  1:34     ` Christopher Caulfield
  2021-11-12 23:18       ` Christopher Caulfield
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Caulfield @ 2021-08-03  1:34 UTC (permalink / raw)
  To: Alex Bennée; +Cc: Peter Maydell, qemu-devel, alexsmendez

[-- Attachment #1: Type: text/plain, Size: 2971 bytes --]

Thanks folks! I went ahead and made a feature/issue request based on
Paolo's suggestion:
QEMU registers support on x64 (#510) · Issues · QEMU / QEMU · GitLab
<https://gitlab.com/qemu-project/qemu/-/issues/510>

Please let me know if someone has the cycles to support this.

-Christopher

On Mon, Aug 2, 2021 at 10:37 AM Alex Bennée <alex.bennee@linaro.org> wrote:

>
> Peter Maydell <peter.maydell@linaro.org> writes:
>
> > On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
> > <ctcaulfield@gmail.com> wrote:
> >> This is Christopher from the debugging experiences team at Microsoft
> focused on kernel debugging. I am reaching out with a few questions about
> QEMU on x64.
> >>
> >> Is it possible for the QEMU-x86-64 GDB Server to send the full set
> >> of x64 system registers (whether they are included in a separated
> >> system xml file or as part of the core registers xml file)?
> >
> > Do you mean "is it possible for somebody to write code for
> > QEMU to make it do that", or "does QEMU do it today if you pass
> > it the right command line option" ? The answer to the former
> > is "yes", to the latter "no". (If you want the debugger to
> > be able to write to the system registers this might be a little
> > trickier, mostly in terms of "auditing the code to make sure this
> > can't confuse QEMU if you change some sysreg under its feet.".)
> >
> >> e.g. System registers missing from i386-64bit.xml file
> >
> >> DWORD64 IDTBase;
> >> DWORD64 IDTLimit;
> >> DWORD64 GDTBase;
> >> DWORD64 GDTLimit;
> >> DWORD SelLDT;
> >> SEG64_DESC_INFO SegLDT;
> >> DWORD SelTSS;
> >> SEG64_DESC_INFO SegTSS;
> >>
> >> How can I access x64 MSR registers by using the QEMU-x86-64 GDB server?
> >>
> >> #define MSR_EFER 0xc0000080 // extended function enable register
> >
> > EFER is in the xml ("x64_efer") so should be already accessible.
> > For anything else you're going to need to write some code to
> > make it happen.
> >
> >>is there any plan to support reading/writing to MSRs via QEMU-x86-64
> >GDB server?
>
> Not at the moment but I am keen to see any eventual solution try to be
> generic rather than hardwired for one architecture. The ARM code
> currently builds custom XML from it's register descriptors to expose
> it's MSR registers to the gdbstub. Ideally architecture front ends
> should register their registers with a new subsystem which can then do
> the glue between gdbstub as well as other systems that also care about
> register values (logging, HMP, TCG plugins).
>
> That said I'm not going to block any patches that just fix up the
> current XML and target/i386/gdbstub code. I'm not familiar enough with
> what the internal register representation state is for x86 w.r.t to TCG
> and hypervisor based running modes.
>
> > Not that I know of. We'd be happy to review patches if you want to
> > write them.
> >
> > thanks
> > -- PMM
>
>
> --
> Alex Bennée
>

[-- Attachment #2: Type: text/html, Size: 3852 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: QEMU on x64
  2021-08-03  1:34     ` Christopher Caulfield
@ 2021-11-12 23:18       ` Christopher Caulfield
  0 siblings, 0 replies; 6+ messages in thread
From: Christopher Caulfield @ 2021-11-12 23:18 UTC (permalink / raw)
  To: Alex Bennée; +Cc: Peter Maydell, qemu-devel, alexsmendez

[-- Attachment #1: Type: text/plain, Size: 4799 bytes --]

Hi folks! Wanted to share some documentation if you all want to give QEMU a
try within WinDbg. This is something we've been invested in supporting.

   - Link to public project:
   https://github.com/microsoft/WinDbg-Samples/tree/master/Exdi/exdigdbsrv
   <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FWinDbg-Samples%2Ftree%2Fmaster%2FExdi%2Fexdigdbsrv&data=04%7C01%7CChristopher.Caulfield%40microsoft.com%7C7f9c66afb4f74e9cd61e08d9a625465a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637723501320501730%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Bd%2Bvx2JaYtse35JmHigFtWLQzbXv1H9gZ1NseZB%2BF38%3D&reserved=0>
   - Link to external readme:  WinDbg-Samples/ExdiGdbSrv_readme.md at
   master · microsoft/WinDbg-Samples · GitHub
   <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FWinDbg-Samples%2Fblob%2Fmaster%2FExdi%2Fexdigdbsrv%2Fdoc%2FExdiGdbSrv_readme.md&data=04%7C01%7CChristopher.Caulfield%40microsoft.com%7C7f9c66afb4f74e9cd61e08d9a625465a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637723501320511728%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=kWn9Tlqtx1erYK8Pg0AHCSqNOLAYh171Cb9EmrR9cLg%3D&reserved=0>
   .

Anyone planning to add the missing x86-64 system registers to the QEMU
x86-64 GDb server?: QEMU registers support on x64 (#510) · Issues · QEMU /
QEMU · GitLab <https://gitlab.com/qemu-project/qemu/-/issues/510>? (I just
realized the title isn't great - O well...)

Thanks so much!
-Christopher

On Mon, Aug 2, 2021 at 6:34 PM Christopher Caulfield <ctcaulfield@gmail.com>
wrote:

> Thanks folks! I went ahead and made a feature/issue request based on
> Paolo's suggestion:
> QEMU registers support on x64 (#510) · Issues · QEMU / QEMU · GitLab
> <https://gitlab.com/qemu-project/qemu/-/issues/510>
>
> Please let me know if someone has the cycles to support this.
>
> -Christopher
>
> On Mon, Aug 2, 2021 at 10:37 AM Alex Bennée <alex.bennee@linaro.org>
> wrote:
>
>>
>> Peter Maydell <peter.maydell@linaro.org> writes:
>>
>> > On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
>> > <ctcaulfield@gmail.com> wrote:
>> >> This is Christopher from the debugging experiences team at Microsoft
>> focused on kernel debugging. I am reaching out with a few questions about
>> QEMU on x64.
>> >>
>> >> Is it possible for the QEMU-x86-64 GDB Server to send the full set
>> >> of x64 system registers (whether they are included in a separated
>> >> system xml file or as part of the core registers xml file)?
>> >
>> > Do you mean "is it possible for somebody to write code for
>> > QEMU to make it do that", or "does QEMU do it today if you pass
>> > it the right command line option" ? The answer to the former
>> > is "yes", to the latter "no". (If you want the debugger to
>> > be able to write to the system registers this might be a little
>> > trickier, mostly in terms of "auditing the code to make sure this
>> > can't confuse QEMU if you change some sysreg under its feet.".)
>> >
>> >> e.g. System registers missing from i386-64bit.xml file
>> >
>> >> DWORD64 IDTBase;
>> >> DWORD64 IDTLimit;
>> >> DWORD64 GDTBase;
>> >> DWORD64 GDTLimit;
>> >> DWORD SelLDT;
>> >> SEG64_DESC_INFO SegLDT;
>> >> DWORD SelTSS;
>> >> SEG64_DESC_INFO SegTSS;
>> >>
>> >> How can I access x64 MSR registers by using the QEMU-x86-64 GDB server?
>> >>
>> >> #define MSR_EFER 0xc0000080 // extended function enable register
>> >
>> > EFER is in the xml ("x64_efer") so should be already accessible.
>> > For anything else you're going to need to write some code to
>> > make it happen.
>> >
>> >>is there any plan to support reading/writing to MSRs via QEMU-x86-64
>> >GDB server?
>>
>> Not at the moment but I am keen to see any eventual solution try to be
>> generic rather than hardwired for one architecture. The ARM code
>> currently builds custom XML from it's register descriptors to expose
>> it's MSR registers to the gdbstub. Ideally architecture front ends
>> should register their registers with a new subsystem which can then do
>> the glue between gdbstub as well as other systems that also care about
>> register values (logging, HMP, TCG plugins).
>>
>> That said I'm not going to block any patches that just fix up the
>> current XML and target/i386/gdbstub code. I'm not familiar enough with
>> what the internal register representation state is for x86 w.r.t to TCG
>> and hypervisor based running modes.
>>
>> > Not that I know of. We'd be happy to review patches if you want to
>> > write them.
>> >
>> > thanks
>> > -- PMM
>>
>>
>> --
>> Alex Bennée
>>
>

[-- Attachment #2: Type: text/html, Size: 6603 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-11-12 23:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-30 17:36 QEMU on x64 Christopher Caulfield
2021-07-30 18:13 ` Peter Maydell
2021-08-02 17:27   ` Alex Bennée
2021-08-03  1:34     ` Christopher Caulfield
2021-11-12 23:18       ` Christopher Caulfield
2021-08-02  9:05 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).