It is certainly the case that Mach and the Hurd are intended to support full SMP, with very fine-grained parallelism in nearly all parts of the system.
Much work has been done on Mach with SMP in the past (it's a compile-time option in the microkernel), but I would not be at all surprised if the x86 port does not support the SMP hardware that is now commonly available. It should be reasonably straightforward to port the hardware support code from linux or whereever into GNUmach, if someone wants to take the time. As far as I know, the Hurd has never been tested on a multiprocessor. Since the microkernel always does preemptive scheduling, in the abstract there is almost no way for the Hurd to tell whether kernel threads are purely software or are running on multiple real processors, and there is nothing whatsoever it does that is supposed to care. But since it hasn't been tested, I have to assume there are bugs that will only show up on real SMP hardware.

