Index: /trunk/src/VBox/ValidationKit/tests/serial/tdSerial1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/serial/tdSerial1.py	(revision 73622)
+++ /trunk/src/VBox/ValidationKit/tests/serial/tdSerial1.py	(revision 73623)
@@ -70,4 +70,6 @@
         self.asSerialTestsDef = ['Write', 'ReadWrite'];
         self.asSerialTests    = self.asSerialTestsDef;
+        self.asUartsDef       = ['16450', '16550A', '16750'];
+        self.asUarts          = self.asUartsDef;
         self.oLoopback        = None;
         self.sLocation        = None;
@@ -85,4 +87,6 @@
         reporter.log('  --serial-tests    <t1[:t2[:]]');
         reporter.log('      Default: %s' % (':'.join(self.asSerialTestsDef)));
+        reporter.log('  --uarts           <u1[:u2[:]]');
+        reporter.log('      Default: %s' % (':'.join(self.asUartsDef)));
         reporter.log('  --verbose-test');
         reporter.log('      Whether to enable verbose output when running the');
@@ -107,4 +111,12 @@
                 if s not in self.asSerialTestsDef:
                     reporter.log('warning: The "--serial-tests" value "%s" is not a valid serial port test.' % (s));
+        elif asArgs[iArg] == '--aurts':
+            iArg += 1;
+            if iArg >= len(asArgs):
+                raise base.InvalidOption('The "--uarts" takes a colon separated list of uarts to test');
+            self.asUarts = asArgs[iArg].split(':');
+            for s in self.asUarts:
+                if s not in self.asUartsDef:
+                    reporter.log('warning: The "--uarts" value "%s" is not a valid uart.' % (s));
         elif asArgs[iArg] == '--verbose-test':
             iArg += 1;
@@ -202,7 +214,7 @@
 
         reporter.testStart('Write');
-        tupCmdLine = ('SerialTest', '--tests', 'write', '--txbytes', '1048576',);
+        tupCmdLine = ('SerialTest', '--tests', 'write', '--txbytes', '1048576');
         if self.fVerboseTest:
-            tupCmdLine += ('--verbose');
+            tupCmdLine += ('--verbose',);
         if oTestVm.isWindows():
             tupCmdLine += ('--device', r'\\.\COM1',);
@@ -246,5 +258,5 @@
         tupCmdLine = ('SerialTest', '--tests', 'readwrite', '--txbytes', '1048576');
         if self.fVerboseTest:
-            tupCmdLine += ('--verbose');
+            tupCmdLine += ('--verbose',);
         if oTestVm.isWindows():
             tupCmdLine += ('--device', r'\\.\COM1',);
@@ -277,41 +289,46 @@
         """
 
-        # Reconfigure the VM
-        fRc = True;
-        oSession = self.openSession(oVM);
-        if oSession is not None:
-            fRc = oSession.enableSerialPort(0);
-
-            fRc = fRc and oSession.saveSettings();
-            fRc = oSession.close() and fRc;
-            oSession = None;
-        else:
-            fRc = False;
-
-        if fRc is True:
-            self.logVmInfo(oVM);
-            oSession, oTxsSession = self.startVmAndConnectToTxsViaTcp(oTestVm.sVmName, fCdWait = True);
+        for sUart in self.asUarts:
+            reporter.testStart(sUart);
+            # Reconfigure the VM
+            fRc = True;
+            oSession = self.openSession(oVM);
             if oSession is not None:
-                self.addTask(oTxsSession);
-
-                for sMode in self.asSerialModes:
-                    reporter.testStart(sMode);
-                    fRc = self.setupSerialMode(oSession, oTestVm, sMode);
-                    if fRc:
-                        for sTest in self.asSerialTests:
-                            # Skip tests which don't work with the current mode.
-                            if self.isModeCompatibleWithTest(sMode, sTest):
-                                if sTest == 'Write':
-                                    fRc = self.testWrite(oSession, oTxsSession, oTestVm, sMode);
-                                if sTest == 'ReadWrite':
-                                    fRc = self.testReadWrite(oSession, oTxsSession, oTestVm);
-                        if self.oLoopback is not None:
-                            self.oLoopback.shutdown();
-                            self.oLoopback = None;
-
-                    reporter.testDone();
-
-                self.removeTask(oTxsSession);
-                self.terminateVmBySession(oSession);
+                fRc = oSession.enableSerialPort(0);
+
+                fRc = fRc and oSession.setExtraData("VBoxInternal/Devices/serial/0/Config/UartType", "string:" + sUart);
+                fRc = fRc and oSession.saveSettings();
+                fRc = oSession.close() and fRc;
+                oSession = None;
+            else:
+                fRc = False;
+
+            if fRc is True:
+                self.logVmInfo(oVM);
+                oSession, oTxsSession = self.startVmAndConnectToTxsViaTcp(oTestVm.sVmName, fCdWait = True);
+                if oSession is not None:
+                    self.addTask(oTxsSession);
+
+                    for sMode in self.asSerialModes:
+                        reporter.testStart(sMode);
+                        fRc = self.setupSerialMode(oSession, oTestVm, sMode);
+                        if fRc:
+                            for sTest in self.asSerialTests:
+                                # Skip tests which don't work with the current mode.
+                                if self.isModeCompatibleWithTest(sMode, sTest):
+                                    if sTest == 'Write':
+                                        fRc = self.testWrite(oSession, oTxsSession, oTestVm, sMode);
+                                    if sTest == 'ReadWrite':
+                                        fRc = self.testReadWrite(oSession, oTxsSession, oTestVm);
+                            if self.oLoopback is not None:
+                                self.oLoopback.shutdown();
+                                self.oLoopback = None;
+
+                        reporter.testDone();
+
+                    self.removeTask(oTxsSession);
+                    self.terminateVmBySession(oSession);
+            reporter.testDone();
+
         return fRc;
 
