Index: sys/amd64/amd64/machdep.c =================================================================== RCS file: /home/ncvs/src/sys/amd64/amd64/machdep.c,v retrieving revision 1.633 diff -u -p -r1.633 machdep.c --- sys/amd64/amd64/machdep.c 4 Apr 2005 21:53:52 -0000 1.633 +++ sys/amd64/amd64/machdep.c 6 Apr 2005 00:35:05 -0000 @@ -1251,6 +1251,9 @@ hammer_time(u_int64_t modulep, u_int64_t /* doublefault stack space, runs on ist1 */ common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)]; + /* Set the IO permission bitmap (empty due to tss seg limit) */ + common_tss[0].tss_iobase = sizeof(struct amd64tss); + gsel_tss = GSEL(GPROC0_SEL, SEL_KPL); ltr(gsel_tss); Index: sys/amd64/amd64/mp_machdep.c =================================================================== RCS file: /home/ncvs/src/sys/amd64/amd64/mp_machdep.c,v retrieving revision 1.251 diff -u -p -r1.251 mp_machdep.c --- sys/amd64/amd64/mp_machdep.c 4 Apr 2005 21:53:52 -0000 1.251 +++ sys/amd64/amd64/mp_machdep.c 6 Apr 2005 00:35:05 -0000 @@ -379,6 +379,7 @@ init_secondary(void) /* Init tss */ common_tss[cpu] = common_tss[0]; common_tss[cpu].tss_rsp0 = 0; /* not used until after switch */ + common_tss[cpu].tss_iobase = sizeof(struct amd64tss); gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu]; ssdtosyssd(&gdt_segs[GPROC0_SEL], Index: sys/amd64/include/tss.h =================================================================== RCS file: /home/ncvs/src/sys/amd64/include/tss.h,v retrieving revision 1.16 diff -u -p -r1.16 tss.h --- sys/amd64/include/tss.h 5 Apr 2004 21:25:51 -0000 1.16 +++ sys/amd64/include/tss.h 6 Apr 2005 00:35:05 -0000 @@ -50,7 +50,6 @@ struct amd64tss { u_int64_t tss_rsp2 __packed; /* kernel stack pointer ring 2 */ u_int32_t tss_rsvd1; u_int32_t tss_rsvd2; - u_int32_t tss_rsvd3; u_int64_t tss_ist1 __packed; /* Interrupt stack table 1 */ u_int64_t tss_ist2 __packed; /* Interrupt stack table 2 */ u_int64_t tss_ist3 __packed; /* Interrupt stack table 3 */