* [Xen-devel] [PATCH] xen: make debugger support configurable
@ 2019-11-13 16:22 Juergen Gross
2019-11-13 16:59 ` Jan Beulich
2019-11-13 17:26 ` Andrew Cooper
0 siblings, 2 replies; 4+ messages in thread
From: Juergen Gross @ 2019-11-13 16:22 UTC (permalink / raw)
To: xen-devel
Cc: Juergen Gross, Stefano Stabellini, Julien Grall, Wei Liu,
Konrad Rzeszutek Wilk, George Dunlap, Andrew Cooper, Ian Jackson,
Jan Beulich, Roger Pau Monné
Debugger support in the hypervisor is rarely used and it is opening a
way for dom0 to modify the running hypervisor by very easy means.
Add a Kconfig option to control support of gdbsx. Default is off.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
xen/Kconfig.debug | 4 ++++
xen/arch/x86/Kconfig | 1 -
xen/arch/x86/domctl.c | 4 ++++
xen/common/Kconfig | 3 ---
xen/common/domain.c | 2 +-
xen/include/asm-x86/debugger.h | 30 ++++++++++++++++++------------
xen/include/xen/sched.h | 4 ++++
7 files changed, 31 insertions(+), 17 deletions(-)
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index 22573e74db..84a6e1b8eb 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -13,9 +13,13 @@ config DEBUG
if DEBUG || EXPERT = "y"
+config GDBSX
+ bool
+
config CRASH_DEBUG
bool "Crash Debugging Support"
depends on X86
+ select GDBSX
---help---
If you want to attach gdb to Xen to debug Xen if it crashes
then say Y.
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 28b3b4692a..c72da8964a 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -13,7 +13,6 @@ config X86
select HAS_EHCI
select HAS_EX_TABLE
select HAS_FAST_MULTIPLY
- select HAS_GDBSX
select HAS_IOPORTS
select HAS_KEXEC
select MEM_ACCESS_ALWAYS_ON
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 43e368d63b..90e36b9ad8 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -36,6 +36,7 @@
#include <asm/psr.h>
#include <asm/cpuid.h>
+#ifdef CONFIG_GDBSX
static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
{
void * __user gva = (void *)iop->gva, * __user uva = (void *)iop->uva;
@@ -45,6 +46,7 @@ static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
return iop->remain ? -EFAULT : 0;
}
+#endif
static void domain_cpu_policy_changed(struct domain *d)
{
@@ -912,6 +914,7 @@ long arch_do_domctl(
}
#endif
+#ifdef CONFIG_GDBSX
case XEN_DOMCTL_gdbsx_guestmemio:
domctl->u.gdbsx_guest_memio.remain = domctl->u.gdbsx_guest_memio.len;
ret = gdbsx_guest_mem_io(domctl->domain, &domctl->u.gdbsx_guest_memio);
@@ -976,6 +979,7 @@ long arch_do_domctl(
copyback = true;
break;
}
+#endif
case XEN_DOMCTL_setvcpuextstate:
case XEN_DOMCTL_getvcpuextstate:
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index f754741972..7bde6aff02 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -57,9 +57,6 @@ config HAS_UBSAN
config HAS_KEXEC
bool
-config HAS_GDBSX
- bool
-
config HAS_IOPORTS
bool
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 611116c7fc..b4e041ffd0 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -915,7 +915,7 @@ void vcpu_end_shutdown_deferral(struct vcpu *v)
vcpu_check_shutdown(v);
}
-#ifdef CONFIG_HAS_GDBSX
+#ifdef CONFIG_GDBSX
void domain_pause_for_debugger(void)
{
struct vcpu *curr = current;
diff --git a/xen/include/asm-x86/debugger.h b/xen/include/asm-x86/debugger.h
index b1b627f1fa..4a8f226b86 100644
--- a/xen/include/asm-x86/debugger.h
+++ b/xen/include/asm-x86/debugger.h
@@ -47,18 +47,6 @@ static inline bool debugger_trap_fatal(
/* Int3 is a trivial way to gather cpu_user_regs context. */
#define debugger_trap_immediate() __asm__ __volatile__ ( "int3" );
-#else
-
-static inline bool debugger_trap_fatal(
- unsigned int vector, struct cpu_user_regs *regs)
-{
- return false;
-}
-
-#define debugger_trap_immediate() ((void)0)
-
-#endif
-
static inline bool debugger_trap_entry(
unsigned int vector, struct cpu_user_regs *regs)
{
@@ -88,4 +76,22 @@ unsigned int dbg_rw_mem(void * __user addr, void * __user buf,
unsigned int len, domid_t domid, bool toaddr,
uint64_t pgd3);
+#else
+
+static inline bool debugger_trap_fatal(
+ unsigned int vector, struct cpu_user_regs *regs)
+{
+ return false;
+}
+
+#define debugger_trap_immediate() ((void)0)
+
+static inline bool debugger_trap_entry(
+ unsigned int vector, struct cpu_user_regs *regs)
+{
+ return false;
+}
+
+#endif
+
#endif /* __X86_DEBUGGER_H__ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9f7bc69293..094003f562 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -652,7 +652,11 @@ void domain_destroy(struct domain *d);
int domain_kill(struct domain *d);
int domain_shutdown(struct domain *d, u8 reason);
void domain_resume(struct domain *d);
+#ifdef CONFIG_GDBSX
void domain_pause_for_debugger(void);
+#else
+static inline void domain_pause_for_debugger(void) { }
+#endif
int domain_soft_reset(struct domain *d);
--
2.16.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Xen-devel] [PATCH] xen: make debugger support configurable
2019-11-13 16:22 [Xen-devel] [PATCH] xen: make debugger support configurable Juergen Gross
@ 2019-11-13 16:59 ` Jan Beulich
2019-11-13 17:26 ` Andrew Cooper
1 sibling, 0 replies; 4+ messages in thread
From: Jan Beulich @ 2019-11-13 16:59 UTC (permalink / raw)
To: Juergen Gross
Cc: Stefano Stabellini, Julien Grall, Wei Liu, Konrad Rzeszutek Wilk,
George Dunlap, Andrew Cooper, Ian Jackson, xen-devel,
Roger Pau Monné
On 13.11.2019 17:22, Juergen Gross wrote:
> Debugger support in the hypervisor is rarely used and it is opening a
> way for dom0 to modify the running hypervisor by very easy means.
>
> Add a Kconfig option to control support of gdbsx. Default is off.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Xen-devel] [PATCH] xen: make debugger support configurable
2019-11-13 16:22 [Xen-devel] [PATCH] xen: make debugger support configurable Juergen Gross
2019-11-13 16:59 ` Jan Beulich
@ 2019-11-13 17:26 ` Andrew Cooper
2019-11-14 7:52 ` Jürgen Groß
1 sibling, 1 reply; 4+ messages in thread
From: Andrew Cooper @ 2019-11-13 17:26 UTC (permalink / raw)
To: Juergen Gross, xen-devel
Cc: Stefano Stabellini, Julien Grall, Wei Liu, Konrad Rzeszutek Wilk,
George Dunlap, Ian Jackson, Jan Beulich, Roger Pau Monné
On 13/11/2019 16:22, Juergen Gross wrote:
> Debugger support in the hypervisor is rarely used and it is opening a
> way for dom0 to modify the running hypervisor by very easy means.
>
> Add a Kconfig option to control support of gdbsx. Default is off.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> xen/Kconfig.debug | 4 ++++
> xen/arch/x86/Kconfig | 1 -
> xen/arch/x86/domctl.c | 4 ++++
> xen/common/Kconfig | 3 ---
> xen/common/domain.c | 2 +-
> xen/include/asm-x86/debugger.h | 30 ++++++++++++++++++------------
> xen/include/xen/sched.h | 4 ++++
> 7 files changed, 31 insertions(+), 17 deletions(-)
>
> diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
> index 22573e74db..84a6e1b8eb 100644
> --- a/xen/Kconfig.debug
> +++ b/xen/Kconfig.debug
> @@ -13,9 +13,13 @@ config DEBUG
>
> if DEBUG || EXPERT = "y"
>
> +config GDBSX
> + bool
> +
> config CRASH_DEBUG
> bool "Crash Debugging Support"
> depends on X86
> + select GDBSX
> ---help---
> If you want to attach gdb to Xen to debug Xen if it crashes
> then say Y.
CRASH_DEBUG and GDBSX are unrelated.
The former is gdbstub over serial for Xen itself (which I've never seen
used, and therefore doubt functions), while the latter is a set of dom0
hypercalls used by the gdbsx utility.
I'm happy to make CONFIG_GDBSX more useful than it currently is, but I
don't think the two options want conflating.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Xen-devel] [PATCH] xen: make debugger support configurable
2019-11-13 17:26 ` Andrew Cooper
@ 2019-11-14 7:52 ` Jürgen Groß
0 siblings, 0 replies; 4+ messages in thread
From: Jürgen Groß @ 2019-11-14 7:52 UTC (permalink / raw)
To: Andrew Cooper, xen-devel
Cc: Stefano Stabellini, Julien Grall, Wei Liu, Konrad Rzeszutek Wilk,
George Dunlap, Ian Jackson, Jan Beulich, Roger Pau Monné
On 13.11.19 18:26, Andrew Cooper wrote:
> On 13/11/2019 16:22, Juergen Gross wrote:
>> Debugger support in the hypervisor is rarely used and it is opening a
>> way for dom0 to modify the running hypervisor by very easy means.
>>
>> Add a Kconfig option to control support of gdbsx. Default is off.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> xen/Kconfig.debug | 4 ++++
>> xen/arch/x86/Kconfig | 1 -
>> xen/arch/x86/domctl.c | 4 ++++
>> xen/common/Kconfig | 3 ---
>> xen/common/domain.c | 2 +-
>> xen/include/asm-x86/debugger.h | 30 ++++++++++++++++++------------
>> xen/include/xen/sched.h | 4 ++++
>> 7 files changed, 31 insertions(+), 17 deletions(-)
>>
>> diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
>> index 22573e74db..84a6e1b8eb 100644
>> --- a/xen/Kconfig.debug
>> +++ b/xen/Kconfig.debug
>> @@ -13,9 +13,13 @@ config DEBUG
>>
>> if DEBUG || EXPERT = "y"
>>
>> +config GDBSX
>> + bool
>> +
>> config CRASH_DEBUG
>> bool "Crash Debugging Support"
>> depends on X86
>> + select GDBSX
>> ---help---
>> If you want to attach gdb to Xen to debug Xen if it crashes
>> then say Y.
>
> CRASH_DEBUG and GDBSX are unrelated.
>
> The former is gdbstub over serial for Xen itself (which I've never seen
> used, and therefore doubt functions), while the latter is a set of dom0
> hypercalls used by the gdbsx utility.
>
> I'm happy to make CONFIG_GDBSX more useful than it currently is, but I
> don't think the two options want conflating.
Ah, okay.
Will send V2 with 2 patches: one for putting more code under
CONFIG_CRASH_DEBUG and one for introducing CONFIG_GDBSX.
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-11-14 7:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-13 16:22 [Xen-devel] [PATCH] xen: make debugger support configurable Juergen Gross
2019-11-13 16:59 ` Jan Beulich
2019-11-13 17:26 ` Andrew Cooper
2019-11-14 7:52 ` Jürgen Groß
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.