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

Re: [PATCH v4 2/6] x86/debugger: separate Xen and guest debugging debugger_trap_* functions


  • To: Bobby Eshleman <bobby.eshleman@xxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Tue, 28 Sep 2021 21:52:48 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=eJvj6b8iMf2UBiRV3R4j4nZib8IPWx0Hcuyv/lqleVE=; b=Jx61mVOqyWl/JrCh+tA9oiThG5b14IuZGzk9aFzqSfwLJ6Y6pITGfdAkFd6bnYfnMUIdXaZGhabDXmrX8w2gqo0cCOsD5yBcQvcknDag/cEb5eiaA3TLK9mLSeiqEX8f+UiTxIeEc5oUAVyS1hyuPG8K7L01h1RSe50IJmQzDlbuGgSPeRe2VsNoZmTcew0hLr/P9CB1jUdAYkYg6bI2uI/L2BbD6GCZGbTFaZNwjKwTBpn1FMQvaJdd6kRPRYJkSqOkhntWmujdas6XCgaPJDOFY/cmxlBgQu4EhVx846VEhhbYmjHMkbqu177BCFomJjzrBYhXci6ffsKYZXUfkA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d6OsxfCaspSy50YuOaIS66Vt4WurlNCR0ynH234Ww9GkPlczb7PNpib29qcuE8VCkFFw19Sl/p1bMuzTJ9c2bgClu/HlZykmThQzSqnrllctT3B4tBb6rQSBJmjlx9fRxuqgeFdNAgt83kI+f9pDHiP18E6w3X3U50RLeQ4b/qV4oUs6xpwFCx2IL4vDPaRrav6RRTzyZUACI1XIuQj8hfsesGOmQSvZ36dV52oGF8L5xnQQGdFHeMOhhHistNOpNZ6Pq3lXtFmKB/SwsG4iWRywZdlRBhz0ckNHJBjip58eRVSPJlCgjXI2Q9pG/J+8KBBShZTOUFuCYIj4RT+04g==
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Elena Ufimtseva <elena.ufimtseva@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>
  • Delivery-date: Tue, 28 Sep 2021 20:53:25 +0000
  • Ironport-data: A9a23:KsWEWaC70XfVjhVW/13lw5YqxClBgxIJ4kV8jS/XYbTApGsigWYAn TdMCz+CPvncNmrze9gjPojjpx5T7ceAm9JnQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLOs1hxZH1c+EX9w00I7wIbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/ljiwuYB1i 8Rxtt+1U1Y2HKfQwNslakwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcFgWlg25AXQJ4yY eIoax1rRRn/SiFAO1ENJYhjk/+53VvGJmgwRFW9+vNsvjm7IBZK+KP2LNPfd9iORMNUtkWVv GTL+yL+GB5yHN6CzTuI9Fq8i+mJmjn0MKoYE7ey57hnm12Xy2kaDjUZUFK6pb+yjUvWc8JSL QkY9zQjqYA29Ve3VZ/tUhugunmGsxUAHd1KHIUS1gaJzabF5heDMUINRDVBdd8Oudc/QHoh0 Vrht97tCDpm9qCbSHeB7bqKpBu1IyEeKWJEbigBJSME/NvLsIw1lgjITNtoDOiylNKdMTP6z i2OrSM+r64OlsNN3KK+lXjYhxq8q56PSRQ6jjg7RUr8sFk/PtT8IdX1tx6Ltp6sMbp1UHGcs UEiy8zd/dwNTpSXxTOvSvlVI4mQsqPt3CLnvXZjGJwo9jKI8nGlfJxN7DwWGHqFIvroahezP haM6Fo5CIt7eSvyNPArM+pdHuxwlcDd+cLZuuc4hzakSrZ2bhPP2ChzaUOK02npnSDAeolkY szDIK5A4ZsAYJmLLQZapc9BjdfHJQhknAs/oKwXKTz8itJyg1bPFd843KOmNLxR0U99iFy9H yxjH8WL0Q5Dd+b1fzPa94UeRXhTcyNhWs6m8ZUNKrfYSuaDJI3HI6SKqV/GU9Y595m5a8+Sp i3tMqOm4ACXaYL7xfWiNSk4NeKHsWdXpnMnJy08VWtEKFB5CbtDGJw3LsNtFZF+rbQL5actE 5EtJpXRatwSG2+v02lMMvHAQHlKKU3DafSmZHH+PlDSvvdIGmT0xzMTVlG0qXZSXnbp75tWT n/J/lqzfKfvjj9KVa7+QPmu00mwrT4anudzVFHPOd5dZAPn940CFsA7pqZmSy3VARmclDacy SiMBhIU+bvEr4MvqYGbjqGYtYa5VeB5GxMCTWXc6L+3Mwjc/3aintAcALrZI2iFWTOm4rima MVU0+r4bK8NkmFVvtcuCL1s168/uYfi/ucI0gR+EXzXRF23Ebc8cGKe1MxCu/QVlL9UsAe7Q GyV/dxeNenbMc/pCgdJdgEkcv6CxbcfnTyLtaY5J0Dz5SlW+rubUBoNY0nQ2XIFdLYsadEr2 +YsvsIS+jeTsBtyP4bUlD1Q+kSNMmcED/ctuKYFDdK5kQEs0FxDP8DRU3ek/JGVZtxQGUA2O TvI1rHajrFRy0eeIXo+EX/BgbhUiZgU4U0YyVYDIxKCm8bfh+9x1xpUqGxlQgNQxxRB8uRyJ mk0aBElefTQp29l1JpZQmShOwBdHxnIqEX+xmwAmHDdU0T1BHfGK3cwOLrV8U0Um46GkuO3I F1MJL7ZbAvX
  • Ironport-hdrordr: A9a23:iJUiEqxLz+fhe383aqGLKrPwKL1zdoMgy1knxilNoHtuA6ulfq GV7ZAmPHrP4wr5N0tNpTntAsa9qBDnlaKdg7N+AV7KZmCP0gaVxepZjLfK8nnNHDD/6/4Y9Y oISdkaNDQoNykYsS8t2njbL+od
  • Ironport-sdr: PnVj/hs2/wCpLn3pVSkJUBkVqrRR2+CxQYukDWP/aWkuRHBzGyUBKjmoYB7FKzJSynrt2G0caU CpkZ8veUi34LP8iRYGam2jba0rczK5U4CLLZci1zU7zZN+zpu4fWNaqPBYE9VfkW2EvxnJW1kP ShXtQCuAlIVflInYy+po2aagO6ePpTPWDiKLw6ZElIXC1AWkN58d6hnD+ob6yDzSXkbg0YjtKe DLE1j0KagEuzDZlxWa7XgxkkhaO9wk4bZUaPup4vT8CM0/k6RFWg4yc7lg142d7KJFP5qaCD/4 NREx+Hdgv8E/ZQ0aWLdPiNJo
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 28/09/2021 21:30, Bobby Eshleman wrote:
> diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
> index e60af16ddd..772e2a5bfc 100644
> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -858,13 +858,20 @@ static void do_trap(struct cpu_user_regs *regs)
>      if ( regs->error_code & X86_XEC_EXT )
>          goto hardware_trap;
>  
> -    if ( debugger_trap_entry(trapnr, regs) )
> -        return;
> -
>      ASSERT(trapnr < 32);
>  
>      if ( guest_mode(regs) )
>      {
> +        struct vcpu *curr = current;
> +        if ( (trapnr == TRAP_debug || trapnr == TRAP_int3) &&
> +              guest_kernel_mode(curr, regs) &&
> +              curr->domain->debugger_attached )
> +        {
> +            if ( trapnr != TRAP_debug )
> +                curr->arch.gdbsx_vcpu_event = trapnr;
> +            domain_pause_for_debugger();
> +            return;
> +        }

This is unreachable.  do_trap() isn't used for TRAP_debug or TRAP_int3.

> @@ -2014,9 +2021,6 @@ void do_entry_CP(struct cpu_user_regs *regs)
>      const char *err = "??";
>      unsigned int ec = regs->error_code;
>  
> -    if ( debugger_trap_entry(TRAP_debug, regs) )
> -        return;
> -
>      /* Decode ec if possible */
>      if ( ec < ARRAY_SIZE(errors) && errors[ec][0] )
>          err = errors[ec];
> @@ -2028,6 +2032,12 @@ void do_entry_CP(struct cpu_user_regs *regs)
>       */
>      if ( guest_mode(regs) )
>      {
> +        struct vcpu *curr = current;
> +        if ( guest_kernel_mode(curr, regs) && 
> curr->domain->debugger_attached )
> +        {
> +            domain_pause_for_debugger();
> +            return;
> +        }

Urgh.  The TRAP_debug above was a copy/paste error.

I'll submit a patch, as it wants backporting for a couple of releases,
after which there should be no additions in do_entry_CP().

Everything else looks good.

~Andrew




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.