Re: QEMU on x64

2021-11-12 Thread Christopher Caulfield
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 
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 
> wrote:
>
>>
>> Peter Maydell  writes:
>>
>> > On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
>> >  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 0xc080 // 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
>>
>


Re: QEMU on x64

2021-08-02 Thread Christopher Caulfield
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  wrote:

>
> Peter Maydell  writes:
>
> > On Fri, 30 Jul 2021 at 19:05, Christopher Caulfield
> >  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 0xc080 // 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
>


QEMU on x64

2021-07-30 Thread Christopher Caulfield
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 0xc080 // extended function enable register
  #define MSR_STAR 0xc081 // system call selectors
  #define MSR_LSTAR 0xc082 // system call 64-bit entry
  #define MSR_CSTAR 0xc083 // 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  | Twitter