Index: /trunk/src/VBox/ValidationKit/testdriver/vbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 61510)
+++ /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 61511)
@@ -2552,10 +2552,40 @@
                 sLastScreenshotPath = None;
 
-        #
         # Query the OS kernel log from the debugger if appropriate/requested.
-        #
         sOsKernelLog = None;
         if self.fAlwaysUploadLogs or reporter.testErrorCount() > 0:
             sOsKernelLog = oSession.queryOsKernelLog();
+
+        # Do "info vgatext all" separately.
+        sVgaText = None;
+        if self.fAlwaysUploadLogs or reporter.testErrorCount() > 0:
+            sVgaText = oSession.queryDbgInfoVgaText();
+
+        # Various infos (do after kernel because of symbols).
+        asMiscInfos = [];
+        if self.fAlwaysUploadLogs or reporter.testErrorCount() > 0:
+            for sInfo, sArg in [ ('mode', 'all'),
+                                 ('fflags', ''),
+                                 ('cpumguest', 'verbose all'),
+                                 ('cpumguestinstr', 'symbol all'),
+                                 ('pic', ''),
+                                 ('apic', ''),
+                                 ('ioapic', ''),
+                                 ('pit', ''),
+                                 ('phys', ''),
+                                 ('clocks', ''),
+                                 ('timers', ''),
+                                 ('guestgdt', ''),
+                                 ('ldtguest', ''),
+                                ]:
+                sThis = oSession.queryDbgInfo(sInfo, sArg);
+                if sThis is not None and len(sThis) > 0:
+                    if sThis[-1] != '\n':
+                        sThis += '\n';
+                    asMiscInfos += [
+                        '================ start %s %s ================\n' % (sInfo, sArg),
+                        sThis,
+                        '================ end %s %s ==================\n' % (sInfo, sArg),
+                    ];
 
         #
@@ -2632,4 +2662,13 @@
         if sOsKernelLog is not None:
             reporter.addLogString(sOsKernelLog, 'kernel.log', 'log/guest/kernel', 'Guest OS kernel log');
+
+        # Add "info vgatext all" if we've got it.
+        if sVgaText is not None:
+            reporter.addLogString(sVgaText, 'vgatext.txt', 'info/vgatext', 'info vgatext all');
+
+        # Add the "info xxxx" items if we've got any.
+        if len(asMiscInfos) > 0:
+            reporter.addLogString(u''.join(asMiscInfos), 'info.txt', 'info/collection', 'A bunch of info items.');
+
 
         return fRc;
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 61510)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 61511)
@@ -1440,5 +1440,5 @@
             try:
                 sHostName = socket.getfqdn()
-                if not '.' in sHostName:
+                if '.' not in sHostName:
                     # somewhat misconfigured system, needs expensive approach to guessing FQDN
                     for aAI in socket.getaddrinfo(sHostName, None):
@@ -2399,4 +2399,33 @@
                     reporter.logXcpt('Unable to get the guest OS (%s) kernel log' % (sOsDetected,));
         return sOsKernelLog;
+
+    def queryDbgInfo(self, sItem, sArg = '', sDefault = None):
+        """
+        Simple wrapper around IMachineDebugger::info.
+
+        Returns string on success, sDefault on failure (logged).
+        """
+        try:
+            return self.o.console.debugger.info(sItem, sArg);
+        except:
+            reporter.logXcpt('Unable to query "%s" with arg "%s"' % (sItem, sArg,));
+        return sDefault;
+
+    def queryDbgInfoVgaText(self, sArg = 'all'):
+        """
+        Tries to get the 'info vgatext' output, provided we're in next mode.
+
+        Returns string containing text on success.
+        Returns None on failure or not text mode.
+        """
+        sVgaText = None;
+        try:
+            sVgaText = self.o.console.debugger.info('vgatext', sArg);
+            if sVgaText == 'Not in text mode!':
+                sVgaText = None;
+        except:
+            reporter.logXcpt('Unable to query vgatext with arg "%s"' % (sArg,));
+        return sVgaText;
+
 
     #
@@ -2547,5 +2576,5 @@
         fReversedSetup = False;
         fUseNatForTxs  = False;
-        if sIpAddr == None:
+        if sIpAddr is None:
             try:
                 oNic = self.oVM.getNetworkAdapter(0);
Index: /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py	(revision 61510)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py	(revision 61511)
@@ -719,4 +719,6 @@
                           'crash/report/client',
                           'crash/dump/client',
+                          'info/collection',
+                          'info/vgatext',
                           'misc/other',
                           'screenshot/failure',
Index: /trunk/src/VBox/ValidationKit/testmanager/core/testresults.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testresults.py	(revision 61510)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testresults.py	(revision 61511)
@@ -406,4 +406,6 @@
     ksKind_CrashReportClient    = 'crash/report/client';
     ksKind_CrashDumpClient      = 'crash/dump/client';
+    ksKind_InfoCollection       = 'info/collection';
+    ksKind_InfoVgaText          = 'info/vgatext';
     ksKind_MiscOther            = 'misc/other';
     ksKind_ScreenshotFailure    = 'screenshot/failure';
