diff options
author | neel <neel@FreeBSD.org> | 2012-10-27 22:54:23 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2012-10-27 22:54:23 +0000 |
commit | 1e4c5ce626aeb0ef445b18d433bc3b6142f88be6 (patch) | |
tree | 797e0b6400ebc0b313563ddeb79794fb13c90751 | |
parent | 86d868af7f0eb18ca829186c66cecc7117189f41 (diff) | |
download | FreeBSD-src-1e4c5ce626aeb0ef445b18d433bc3b6142f88be6.zip FreeBSD-src-1e4c5ce626aeb0ef445b18d433bc3b6142f88be6.tar.gz |
Probe for existence of the bvm debug port instead of just assuming that it is
always present.
Suggested by: grehan
Obtained from: NetApp
-rw-r--r-- | sys/dev/bvm/bvm_dbg.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/sys/dev/bvm/bvm_dbg.c b/sys/dev/bvm/bvm_dbg.c index 6ae9357..1ba7ce0 100644 --- a/sys/dev/bvm/bvm_dbg.c +++ b/sys/dev/bvm/bvm_dbg.c @@ -49,6 +49,8 @@ GDB_DBGPORT(bvm, bvm_dbg_probe, bvm_dbg_init, bvm_dbg_term, #define BVM_DBG_PORT 0x224 static int bvm_dbg_port = BVM_DBG_PORT; +#define BVM_DBG_SIG ('B' << 8 | 'V') + static int bvm_dbg_probe(void) { @@ -56,17 +58,21 @@ bvm_dbg_probe(void) disabled = 0; resource_int_value("bvmdbg", 0, "disabled", &disabled); - if (disabled) - return (-1); - if (resource_int_value("bvmdbg", 0, "port", &port) == 0) - bvm_dbg_port = port; + if (!disabled) { + if (resource_int_value("bvmdbg", 0, "port", &port) == 0) + bvm_dbg_port = port; + + if (inw(bvm_dbg_port) == BVM_DBG_SIG) { + /* + * Return a higher priority than 0 to override other + * gdb dbgport providers that may be present (e.g. uart) + */ + return (1); + } + } - /* - * Return a higher priority than 0 to override other - * gdb dbgport providers that may be present (e.g. uart) - */ - return (1); + return (-1); } static void |