--- a/usr/src/uts/i86pc/os/cpuid.c Wed Jul 11 18:54:04 2007 -0700
+++ b/usr/src/uts/i86pc/os/cpuid.c Wed Jul 11 18:54:16 2007 -0700
@@ -587,6 +587,12 @@
mask_ecx = 0xffffffff;
} else if (cpi->cpi_family > 0xf)
mask_ecx = 0xffffffff;
+ /*
+ * We don't support MONITOR/MWAIT if leaf 5 is not available
+ * to obtain the monitor linesize.
+ */
+ if (cpi->cpi_maxeax < 5)
+ mask_ecx &= ~CPUID_INTC_ECX_MON;
break;
case X86_VENDOR_IntelClone:
default:
@@ -631,6 +637,12 @@
*/
if (cpi->cpi_family >= 0xf)
mask_ecx = 0xffffffff;
+ /*
+ * We don't support MONITOR/MWAIT if leaf 5 is not available
+ * to obtain the monitor linesize.
+ */
+ if (cpi->cpi_maxeax < 5)
+ mask_ecx &= ~CPUID_INTC_ECX_MON;
break;
case X86_VENDOR_TM:
/*