From owner-p4-projects@FreeBSD.ORG Thu Mar 26 19:41:53 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 15AF7106566C; Thu, 26 Mar 2009 19:41:53 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C8E59106564A for ; Thu, 26 Mar 2009 19:41:52 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B57998FC08 for ; Thu, 26 Mar 2009 19:41:52 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n2QJfql1070810 for ; Thu, 26 Mar 2009 19:41:52 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n2QJfqYp070805 for perforce@freebsd.org; Thu, 26 Mar 2009 19:41:52 GMT (envelope-from jhb@freebsd.org) Date: Thu, 26 Mar 2009 19:41:52 GMT Message-Id: <200903261941.n2QJfqYp070805@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 159870 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Mar 2009 19:41:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=159870 Change 159870 by jhb@jhb_jhbbsd on 2009/03/26 19:41:26 IFC @159867 Affected files ... .. //depot/projects/smpng/sys/amd64/acpica/acpi_machdep.c#12 integrate .. //depot/projects/smpng/sys/amd64/acpica/acpi_wakecode.S#2 integrate .. //depot/projects/smpng/sys/amd64/acpica/acpi_wakeup.c#6 integrate .. //depot/projects/smpng/sys/amd64/acpica/genwakecode.sh#2 integrate .. //depot/projects/smpng/sys/amd64/amd64/fpu.c#14 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#76 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux.h#19 integrate .. //depot/projects/smpng/sys/amd64/pci/pci_cfgreg.c#12 integrate .. //depot/projects/smpng/sys/cddl/dev/dtnfsclient/dtnfsclient.c#2 delete .. //depot/projects/smpng/sys/compat/linprocfs/linprocfs.c#75 integrate .. //depot/projects/smpng/sys/compat/linux/linux_file.c#43 integrate .. //depot/projects/smpng/sys/conf/files#234 integrate .. //depot/projects/smpng/sys/conf/files.amd64#64 integrate .. //depot/projects/smpng/sys/conf/files.i386#121 integrate .. //depot/projects/smpng/sys/conf/options#164 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi.c#111 integrate .. //depot/projects/smpng/sys/dev/acpica/acpivar.h#69 integrate .. //depot/projects/smpng/sys/dev/ath/ah_osdep.c#7 integrate .. //depot/projects/smpng/sys/dev/drm/ati_pcigart.c#8 integrate .. //depot/projects/smpng/sys/dev/drm/drmP.h#24 integrate .. //depot/projects/smpng/sys/dev/drm/drm_irq.c#10 integrate .. //depot/projects/smpng/sys/dev/drm/drm_scatter.c#9 integrate .. //depot/projects/smpng/sys/dev/drm/i915_dma.c#14 integrate .. //depot/projects/smpng/sys/dev/drm/i915_irq.c#10 integrate .. //depot/projects/smpng/sys/dev/ed/if_ed.c#41 integrate .. //depot/projects/smpng/sys/dev/ed/if_ed_pccard.c#44 integrate .. //depot/projects/smpng/sys/dev/fe/if_fe_pccard.c#21 integrate .. //depot/projects/smpng/sys/dev/hptiop/hptiop.h#4 integrate .. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#54 integrate .. //depot/projects/smpng/sys/dev/ipmi/ipmi_linux.c#1 branch .. //depot/projects/smpng/sys/dev/iwn/if_iwn.c#4 integrate .. //depot/projects/smpng/sys/dev/msk/if_msk.c#16 integrate .. //depot/projects/smpng/sys/dev/pccard/pccarddevs#64 integrate .. //depot/projects/smpng/sys/geom/label/g_label.c#14 integrate .. //depot/projects/smpng/sys/geom/label/g_label.h#8 integrate .. //depot/projects/smpng/sys/geom/label/g_label_ufs.c#9 integrate .. //depot/projects/smpng/sys/geom/part/g_part_ebr.c#5 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#137 integrate .. //depot/projects/smpng/sys/i386/isa/npx.c#66 integrate .. //depot/projects/smpng/sys/i386/pci/pci_cfgreg.c#37 integrate .. //depot/projects/smpng/sys/kern/subr_bus.c#77 integrate .. //depot/projects/smpng/sys/kern/subr_param.c#29 integrate .. //depot/projects/smpng/sys/kern/subr_rtc.c#4 integrate .. //depot/projects/smpng/sys/kern/vfs_bio.c#118 integrate .. //depot/projects/smpng/sys/kern/vfs_cache.c#52 integrate .. //depot/projects/smpng/sys/kern/vfs_lookup.c#56 integrate .. //depot/projects/smpng/sys/modules/Makefile#158 integrate .. //depot/projects/smpng/sys/modules/dtrace/dtnfsclient/Makefile#2 integrate .. //depot/projects/smpng/sys/modules/ipmi/Makefile#3 integrate .. //depot/projects/smpng/sys/modules/ipmi/ipmi_linux/Makefile#1 branch .. //depot/projects/smpng/sys/modules/linprocfs/Makefile#7 integrate .. //depot/projects/smpng/sys/modules/opensolaris/Makefile#2 integrate .. //depot/projects/smpng/sys/net80211/ieee80211.c#37 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_adhoc.c#6 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.h#17 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_hostap.c#8 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_input.c#45 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_input.h#3 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#44 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.c#43 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_output.c#39 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_proto.c#32 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_proto.h#21 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_sta.c#6 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_superg.c#1 branch .. //depot/projects/smpng/sys/net80211/ieee80211_superg.h#1 branch .. //depot/projects/smpng/sys/net80211/ieee80211_tdma.c#8 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_tdma.h#3 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_wds.c#6 integrate .. //depot/projects/smpng/sys/netinet/igmp.c#28 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#54 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_kdtrace.c#1 branch .. //depot/projects/smpng/sys/nfsclient/nfs_kdtrace.h#1 branch .. //depot/projects/smpng/sys/nfsclient/nfs_subs.c#37 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#85 integrate .. //depot/projects/smpng/sys/powerpc/powermac/ata_macio.c#17 integrate .. //depot/projects/smpng/sys/sys/dtrace_bsd.h#3 integrate .. //depot/projects/smpng/sys/sys/param.h#140 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/acpica/acpi_machdep.c#12 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.19 2009/03/17 00:48:11 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.20 2009/03/23 22:35:30 jkim Exp $"); #include #include @@ -40,11 +40,12 @@ SYSCTL_DECL(_debug_acpi); -uint32_t acpi_resume_beep; +int acpi_resume_beep; TUNABLE_INT("debug.acpi.resume_beep", &acpi_resume_beep); -SYSCTL_UINT(_debug_acpi, OID_AUTO, resume_beep, CTLFLAG_RW, &acpi_resume_beep, +SYSCTL_INT(_debug_acpi, OID_AUTO, resume_beep, CTLFLAG_RW, &acpi_resume_beep, 0, "Beep the PC speaker when resuming"); -uint32_t acpi_reset_video; + +int acpi_reset_video; TUNABLE_INT("hw.acpi.reset_video", &acpi_reset_video); static int intr_model = ACPI_INTR_PIC; ==== //depot/projects/smpng/sys/amd64/acpica/acpi_wakecode.S#2 (text+ko) ==== @@ -2,7 +2,7 @@ * Copyright (c) 2001 Takanori Watanabe * Copyright (c) 2001 Mitsuru IWASAKI * Copyright (c) 2003 Peter Wemm - * Copyright (c) 2008 Jung-uk Kim + * Copyright (c) 2008-2009 Jung-uk Kim * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/acpica/acpi_wakecode.S,v 1.1 2009/03/17 00:48:11 jkim Exp $ + * $FreeBSD: src/sys/amd64/acpica/acpi_wakecode.S,v 1.2 2009/03/23 22:35:30 jkim Exp $ */ #define LOCORE @@ -66,12 +66,14 @@ mov %ax, %ds /* are offsets rather than selectors */ mov %ax, %ss movw $PAGE_SIZE - 8, %sp - pushw $0 + xorw %ax, %ax + pushw %ax popfw /* To debug resume hangs, beep the speaker if the user requested. */ - cmpw $0, resume_beep - wakeup_start - je 1f + testb $~0, resume_beep - wakeup_start + jz 1f + movb $0, resume_beep - wakeup_start movb $0xc0, %al outb %al, $0x42 movb $0x04, %al @@ -79,22 +81,16 @@ inb $0x61, %al orb $0x3, %al outb %al, $0x61 - movw $0, resume_beep - wakeup_start 1: /* Re-initialize video BIOS if the reset_video tunable is set. */ - cmpw $0, reset_video - wakeup_start - je 1f + testb $~0, reset_video - wakeup_start + jz 1f + movb $0, reset_video - wakeup_start lcall $0xc000, $3 - movw $0, reset_video - wakeup_start - /* - * Set up segment registers for real mode again in case the - * previous BIOS call clobbers them. - */ - mov %cs, %ax - mov %ax, %ds - mov %ax, %ss + /* Re-start in case the previous BIOS call clobbers them. */ + jmp wakeup_start 1: /* @@ -204,6 +200,7 @@ * space. Remember that jmp is relative and that we've been relocated, * so use an indirect jump. */ + ALIGN_TEXT .code64 wakeup_64: mov $bootdata64 - bootgdt, %eax @@ -215,6 +212,13 @@ movq wakeup_retaddr - wakeup_start(%rbx), %rax jmp *%rax + .data + +resume_beep: + .byte 0 +reset_video: + .byte 0 + ALIGN_DATA bootgdt: .long 0x00000000 @@ -245,10 +249,6 @@ .long bootgdt - wakeup_start /* Offset plus %ds << 4 */ ALIGN_DATA -resume_beep: - .long 0 -reset_video: - .long 0 wakeup_retaddr: .quad 0 wakeup_kpml4: ==== //depot/projects/smpng/sys/amd64/acpica/acpi_wakeup.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.23 2009/03/17 00:48:11 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.24 2009/03/23 22:35:30 jkim Exp $"); #include #include @@ -37,7 +37,6 @@ #include #include #include -#include #include #include @@ -67,8 +66,8 @@ #error this file needs sys/cdefs.h as a prerequisite #endif -extern uint32_t acpi_resume_beep; -extern uint32_t acpi_reset_video; +extern int acpi_resume_beep; +extern int acpi_reset_video; #ifdef SMP extern struct xpcb *stopxpcbs; @@ -280,8 +279,8 @@ } #endif - WAKECODE_FIXUP(resume_beep, uint32_t, acpi_resume_beep); - WAKECODE_FIXUP(reset_video, uint32_t, acpi_reset_video); + WAKECODE_FIXUP(resume_beep, uint8_t, (acpi_resume_beep != 0)); + WAKECODE_FIXUP(reset_video, uint8_t, (acpi_reset_video != 0)); WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, &stopxpcbs[0]); WAKECODE_FIXUP(wakeup_gdt, uint16_t, @@ -309,13 +308,11 @@ ia32_pause(); } else { fpusetregs(curthread, stopfpu); - - WAKECODE_FIXUP(resume_beep, uint32_t, 0); - WAKECODE_FIXUP(reset_video, uint32_t, 0); #ifdef SMP if (wakeup_cpus != 0) acpi_wakeup_cpus(sc, wakeup_cpus); #endif + acpi_resync_clock(sc); ret = 0; } ==== //depot/projects/smpng/sys/amd64/acpica/genwakecode.sh#2 (text+ko) ==== @@ -1,6 +1,6 @@ #!/bin/sh -# $FreeBSD: src/sys/amd64/acpica/genwakecode.sh,v 1.1 2009/03/17 00:48:11 jkim Exp $ +# $FreeBSD: src/sys/amd64/acpica/genwakecode.sh,v 1.2 2009/03/23 22:35:30 jkim Exp $ # -file2c 'static char wakecode[] = {' '};' -__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.163 2009/03/05 19:42:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.165 2009/03/25 22:08:30 jhb Exp $"); #include #include @@ -101,7 +101,7 @@ SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD, NULL, 1, "Floating point instructions executed in hardware"); -static struct savefpu fpu_cleanstate; +static struct savefpu fpu_initialstate; /* * Initialize the floating point unit. On the boot CPU we generate a @@ -123,13 +123,13 @@ mxcsr = __INITIAL_MXCSR__; ldmxcsr(mxcsr); if (PCPU_GET(cpuid) == 0) { - fxsave(&fpu_cleanstate); - if (fpu_cleanstate.sv_env.en_mxcsr_mask) - cpu_mxcsr_mask = fpu_cleanstate.sv_env.en_mxcsr_mask; + fxsave(&fpu_initialstate); + if (fpu_initialstate.sv_env.en_mxcsr_mask) + cpu_mxcsr_mask = fpu_initialstate.sv_env.en_mxcsr_mask; else cpu_mxcsr_mask = 0xFFBF; - bzero(fpu_cleanstate.sv_fp, sizeof(fpu_cleanstate.sv_fp)); - bzero(fpu_cleanstate.sv_xmm, sizeof(fpu_cleanstate.sv_xmm)); + bzero(fpu_initialstate.sv_fp, sizeof(fpu_initialstate.sv_fp)); + bzero(fpu_initialstate.sv_xmm, sizeof(fpu_initialstate.sv_xmm)); } start_emulating(); intr_restore(savecrit); @@ -416,10 +416,11 @@ if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) { /* - * This is the first time this thread has used the FPU, - * explicitly load sanitized registers. + * This is the first time this thread has used the FPU or + * the PCB doesn't contain a clean FPU state. Explicitly + * load an initial state. */ - fxrstor(&fpu_cleanstate); + fxrstor(&fpu_initialstate); if (pcb->pcb_initial_fpucw != __INITIAL_FPUCW__) fldcw(&pcb->pcb_initial_fpucw); pcb->pcb_flags |= PCB_FPUINITDONE; @@ -453,7 +454,7 @@ register_t s; if ((td->td_pcb->pcb_flags & PCB_FPUINITDONE) == 0) { - bcopy(&fpu_cleanstate, addr, sizeof(fpu_cleanstate)); + bcopy(&fpu_initialstate, addr, sizeof(fpu_initialstate)); addr->sv_env.en_cw = td->td_pcb->pcb_initial_fpucw; return (_MC_FPOWNED_NONE); } @@ -479,7 +480,6 @@ s = intr_disable(); if (td == PCPU_GET(fpcurthread)) { - fpu_clean_state(); fxrstor(addr); intr_restore(s); } else { @@ -498,10 +498,10 @@ * In order to avoid leaking this information across processes, we clean * these values by performing a dummy load before executing fxrstor(). */ -static double dummy_variable = 0.0; static void fpu_clean_state(void) { + static float dummy_variable = 0.0; u_short status; /* ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#76 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.693 2009/03/11 15:30:12 dfr Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.694 2009/03/26 18:07:13 kib Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -818,87 +818,86 @@ /* software prototypes -- in more palatable form */ struct soft_segment_descriptor gdt_segs[] = { /* GNULL_SEL 0 Null Descriptor */ -{ 0x0, /* segment base address */ - 0x0, /* length */ - 0, /* segment type */ - 0, /* segment descriptor priority level */ - 0, /* segment descriptor present */ - 0, /* long */ - 0, /* default 32 vs 16 bit size */ - 0 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0x0, + .ssd_type = 0, + .ssd_dpl = 0, + .ssd_p = 0, + .ssd_long = 0, + .ssd_def32 = 0, + .ssd_gran = 0 }, /* GCODE_SEL 1 Code Descriptor for kernel */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMERA, /* segment type */ - SEL_KPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 1, /* long */ - 0, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMERA, + .ssd_dpl = SEL_KPL, + .ssd_p = 1, + .ssd_long = 1, + .ssd_def32 = 0, + .ssd_gran = 1 }, /* GDATA_SEL 2 Data Descriptor for kernel */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMRWA, /* segment type */ - SEL_KPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 1, /* long */ - 0, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMRWA, + .ssd_dpl = SEL_KPL, + .ssd_p = 1, + .ssd_long = 1, + .ssd_def32 = 0, + .ssd_gran = 1 }, /* GUCODE32_SEL 3 32 bit Code Descriptor for user */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMERA, /* segment type */ - SEL_UPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 0, /* long */ - 1, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMERA, + .ssd_dpl = SEL_UPL, + .ssd_p = 1, + .ssd_long = 0, + .ssd_def32 = 1, + .ssd_gran = 1 }, /* GUDATA_SEL 4 32/64 bit Data Descriptor for user */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMRWA, /* segment type */ - SEL_UPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 0, /* long */ - 1, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMRWA, + .ssd_dpl = SEL_UPL, + .ssd_p = 1, + .ssd_long = 0, + .ssd_def32 = 1, + .ssd_gran = 1 }, /* GUCODE_SEL 5 64 bit Code Descriptor for user */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMERA, /* segment type */ - SEL_UPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 1, /* long */ - 0, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMERA, + .ssd_dpl = SEL_UPL, + .ssd_p = 1, + .ssd_long = 1, + .ssd_def32 = 0, + .ssd_gran = 1 }, /* GPROC0_SEL 6 Proc 0 Tss Descriptor */ -{ - 0x0, /* segment base address */ - sizeof(struct amd64tss)-1,/* length */ - SDT_SYSTSS, /* segment type */ - SEL_KPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 0, /* long */ - 0, /* unused - default 32 vs 16 bit size */ - 0 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = sizeof(struct amd64tss)-1, + .ssd_type = SDT_SYSTSS, + .ssd_dpl = SEL_KPL, + .ssd_p = 1, + .ssd_long = 0, + .ssd_def32 = 0, + .ssd_gran = 0 }, /* Actually, the TSS is a system descriptor which is double size */ -{ 0x0, /* segment base address */ - 0x0, /* length */ - 0, /* segment type */ - 0, /* segment descriptor priority level */ - 0, /* segment descriptor present */ - 0, /* long */ - 0, /* default 32 vs 16 bit size */ - 0 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0x0, + .ssd_type = 0, + .ssd_dpl = 0, + .ssd_p = 0, + .ssd_long = 0, + .ssd_def32 = 0, + .ssd_gran = 0 }, /* GUGS32_SEL 8 32 bit GS Descriptor for user */ -{ 0x0, /* segment base address */ - 0xfffff, /* length - all address space */ - SDT_MEMRWA, /* segment type */ - SEL_UPL, /* segment descriptor priority level */ - 1, /* segment descriptor present */ - 0, /* long */ - 1, /* default 32 vs 16 bit size */ - 1 /* limit granularity (byte/page units)*/ }, +{ .ssd_base = 0x0, + .ssd_limit = 0xfffff, + .ssd_type = SDT_MEMRWA, + .ssd_dpl = SEL_UPL, + .ssd_p = 1, + .ssd_long = 0, + .ssd_def32 = 1, + .ssd_gran = 1 }, }; void ==== //depot/projects/smpng/sys/amd64/linux32/linux.h#19 (text+ko) ==== @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.23 2009/03/04 12:14:33 dchagin Exp $ + * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.24 2009/03/26 17:14:22 ambrisko Exp $ */ #ifndef _AMD64_LINUX_H_ @@ -79,7 +79,7 @@ typedef l_int l_key_t; typedef l_longlong l_loff_t; typedef l_ushort l_mode_t; -typedef l_long l_off_t; +typedef l_ulong l_off_t; typedef l_int l_pid_t; typedef l_uint l_size_t; typedef l_long l_suseconds_t; ==== //depot/projects/smpng/sys/amd64/pci/pci_cfgreg.c#12 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_cfgreg.c,v 1.113 2008/09/11 21:42:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_cfgreg.c,v 1.114 2009/03/24 18:10:22 jhb Exp $"); #include #include @@ -119,6 +119,7 @@ { if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && (bus != 0 || !(1 << slot & pcie_badslots))) return (pciereg_cfgread(bus, slot, func, reg, bytes)); else @@ -158,6 +159,7 @@ { if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && (bus != 0 || !(1 << slot & pcie_badslots))) pciereg_cfgwrite(bus, slot, func, reg, data, bytes); else ==== //depot/projects/smpng/sys/compat/linprocfs/linprocfs.c#75 (text+ko) ==== @@ -43,7 +43,7 @@ #include "opt_compat.h" #include -__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.136 2009/02/27 14:12:05 bz Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.137 2009/03/26 17:14:22 ambrisko Exp $"); #include #include @@ -75,6 +75,7 @@ #include #include #include +#include #include #include @@ -90,6 +91,9 @@ #include +#include +#include + #if defined(__i386__) || defined(__amd64__) #include #include @@ -359,6 +363,9 @@ sbuf_printf(sb, "/sys %s sysfs %s", mntto, mp->mnt_stat.f_flags & MNT_RDONLY ? "ro" : "rw"); } else { + /* For Linux msdosfs is called vfat */ + if (strcmp(fstype, "msdosfs") == 0) + fstype = "vfat"; sbuf_printf(sb, "%s %s %s %s", mntfrom, mntto, fstype, mp->mnt_stat.f_flags & MNT_RDONLY ? "ro" : "rw"); } @@ -383,6 +390,69 @@ } /* + * Filler function for proc/partitions + * + */ +static int +linprocfs_dopartitions(PFS_FILL_ARGS) +{ + struct g_class *cp; + struct g_geom *gp; + struct g_provider *pp; + struct nameidata nd; + const char *lep; + char *dlep, *flep; + size_t lep_len; + int error; + int major, minor; + + /* resolve symlinks etc. in the emulation tree prefix */ + NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, linux_emul_path, td); + flep = NULL; + error = namei(&nd); + lep = linux_emul_path; + if (error == 0) { + if (vn_fullpath(td, nd.ni_vp, &dlep, &flep) == 0) + lep = dlep; + vrele(nd.ni_vp); + VFS_UNLOCK_GIANT(NDHASGIANT(&nd)); + } + lep_len = strlen(lep); + + g_topology_lock(); + error = 0; + sbuf_printf(sb, "major minor #blocks name rio rmerge rsect " + "ruse wio wmerge wsect wuse running use aveq\n"); + + LIST_FOREACH(cp, &g_classes, class) { + if (strcmp(cp->name, "DISK") == 0 || + strcmp(cp->name, "PART") == 0) + LIST_FOREACH(gp, &cp->geom, geom) { + LIST_FOREACH(pp, &gp->provider, provider) { + if (linux_driver_get_major_minor( + pp->name, &major, &minor) != 0) { + major = 0; + minor = 0; + } + sbuf_printf(sb, "%d %d %lld %s " + "%d %d %d %d %d " + "%d %d %d %d %d %d\n", + major, minor, + (long long)pp->mediasize, pp->name, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0); + } + } + } + g_topology_unlock(); + + if (flep != NULL) + free(flep, M_TEMP); + return (error); +} + + +/* * Filler function for proc/stat */ static int @@ -1206,6 +1276,8 @@ NULL, NULL, NULL, PFS_RD); pfs_create_file(root, "mtab", &linprocfs_domtab, NULL, NULL, NULL, PFS_RD); + pfs_create_file(root, "partitions", &linprocfs_dopartitions, + NULL, NULL, NULL, PFS_RD); pfs_create_link(root, "self", &procfs_docurproc, NULL, NULL, NULL, 0); pfs_create_file(root, "stat", &linprocfs_dostat, ==== //depot/projects/smpng/sys/compat/linux/linux_file.c#43 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.117 2009/02/13 18:18:14 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.118 2009/03/26 17:14:22 ambrisko Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -1109,6 +1109,9 @@ } else if (strcmp(fstypename, "proc") == 0) { strcpy(fstypename, "linprocfs"); fsdata = NULL; + } else if (strcmp(fstypename, "vfat") == 0) { + strcpy(fstypename, "msdosfs"); + fsdata = NULL; } else { return (ENODEV); } @@ -1135,6 +1138,12 @@ "fstype", fstypename, "fspath", mntonname, NULL); + } else if (strcmp(fstypename, "msdosfs") == 0) { + error = kernel_vmount(fsflags, + "fstype", fstypename, + "fspath", mntonname, + "from", mntfromname, + NULL); } else error = EOPNOTSUPP; return (error); ==== //depot/projects/smpng/sys/conf/files#234 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1383 2009/03/19 20:33:26 thompsa Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1386 2009/03/24 20:39:08 sam Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -2189,14 +2189,14 @@ mxge | netgraph_deflate | \ ddb_ctf net80211/ieee80211.c optional wlan -net80211/ieee80211_acl.c optional wlan_acl +net80211/ieee80211_acl.c optional wlan wlan_acl net80211/ieee80211_adhoc.c optional wlan -net80211/ieee80211_amrr.c optional wlan_amrr +net80211/ieee80211_amrr.c optional wlan wlan_amrr net80211/ieee80211_crypto.c optional wlan -net80211/ieee80211_crypto_ccmp.c optional wlan_ccmp +net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp net80211/ieee80211_crypto_none.c optional wlan -net80211/ieee80211_crypto_tkip.c optional wlan_tkip -net80211/ieee80211_crypto_wep.c optional wlan_wep +net80211/ieee80211_crypto_tkip.c optional wlan wlan_tkip +net80211/ieee80211_crypto_wep.c optional wlan wlan_wep net80211/ieee80211_ddb.c optional wlan ddb net80211/ieee80211_dfs.c optional wlan net80211/ieee80211_freebsd.c optional wlan @@ -2211,13 +2211,14 @@ net80211/ieee80211_power.c optional wlan net80211/ieee80211_proto.c optional wlan net80211/ieee80211_regdomain.c optional wlan -net80211/ieee80211_rssadapt.c optional wlan_rssadapt +net80211/ieee80211_rssadapt.c optional wlan wlan_rssadapt net80211/ieee80211_scan.c optional wlan net80211/ieee80211_scan_sta.c optional wlan net80211/ieee80211_sta.c optional wlan -net80211/ieee80211_tdma.c optional wlan +net80211/ieee80211_superg.c optional wlan ieee80211_support_superg +net80211/ieee80211_tdma.c optional wlan ieee80211_support_tdma net80211/ieee80211_wds.c optional wlan -net80211/ieee80211_xauth.c optional wlan_xauth +net80211/ieee80211_xauth.c optional wlan wlan_xauth netatalk/aarp.c optional netatalk netatalk/at_control.c optional netatalk netatalk/at_proto.c optional netatalk ==== //depot/projects/smpng/sys/conf/files.amd64#64 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.amd64,v 1.133 2009/03/17 00:48:11 jkim Exp $ +# $FreeBSD: src/sys/conf/files.amd64,v 1.134 2009/03/26 17:14:22 ambrisko Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -183,6 +183,7 @@ dev/ipmi/ipmi_smbios.c optional ipmi dev/ipmi/ipmi_ssif.c optional ipmi smbus dev/ipmi/ipmi_pci.c optional ipmi pci +dev/ipmi/ipmi_linux.c optional ipmi linux_compat32 dev/fdc/fdc.c optional fdc dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa ==== //depot/projects/smpng/sys/conf/files.i386#121 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.617 2009/03/15 14:21:05 rwatson Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.618 2009/03/26 17:14:22 ambrisko Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -196,6 +196,7 @@ dev/ipmi/ipmi_smbios.c optional ipmi dev/ipmi/ipmi_ssif.c optional ipmi smbus dev/ipmi/ipmi_pci.c optional ipmi pci +dev/ipmi/ipmi_linux.c optional ipmi linux_compat dev/kbd/kbd.c optional atkbd | sc | ukbd | usb2_input_kbd dev/le/if_le_isa.c optional le isa dev/mem/memutil.c optional mem ==== //depot/projects/smpng/sys/conf/options#164 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.662 2009/03/15 14:21:05 rwatson Exp $ +# $FreeBSD: src/sys/conf/options,v 1.663 2009/03/24 20:39:08 sam Exp $ # # On the handling of kernel options # @@ -789,6 +789,7 @@ IEEE80211_DEBUG opt_wlan.h IEEE80211_DEBUG_REFCNT opt_wlan.h IEEE80211_AMPDU_AGE opt_wlan.h +IEEE80211_SUPPORT_SUPERG opt_wlan.h IEEE80211_SUPPORT_TDMA opt_wlan.h # 802.11 TDMA support ==== //depot/projects/smpng/sys/dev/acpica/acpi.c#111 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.255 2009/03/17 00:48:11 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.257 2009/03/23 22:12:33 jkim Exp $"); #include "opt_acpi.h" #include @@ -254,6 +254,12 @@ SYSCTL_INT(_debug_acpi, OID_AUTO, do_powerstate, CTLFLAG_RW, &acpi_do_powerstate, 1, "Turn off devices when suspending."); +/* Reset system clock while resuming. XXX Remove once tested. */ +static int acpi_reset_clock = 1; +TUNABLE_INT("debug.acpi.reset_clock", &acpi_reset_clock); +SYSCTL_INT(_debug_acpi, OID_AUTO, reset_clock, CTLFLAG_RW, + &acpi_reset_clock, 1, "Reset system clock while resuming."); + /* Allow users to override quirks. */ TUNABLE_INT("debug.acpi.quirks", &acpi_quirks); @@ -2336,7 +2342,7 @@ #endif /* If devd(8) is not running, immediately enter the sleep state. */ - if (devctl_process_running() == FALSE) { + if (!devctl_process_running()) { ACPI_UNLOCK(acpi); if (ACPI_SUCCESS(acpi_EnterSleepState(sc, sc->acpi_next_sstate))) { return (0); @@ -2345,9 +2351,6 @@ } } - /* Now notify devd(8) also. */ - acpi_UserNotify("Suspend", ACPI_ROOT_OBJECT, state); - /* * Set a timeout to fire if userland doesn't ack the suspend request * in time. This way we still eventually go to sleep if we were @@ -2357,6 +2360,10 @@ */ callout_reset(&sc->susp_force_to, 10 * hz, acpi_sleep_force, sc); ACPI_UNLOCK(acpi); + + /* Now notify devd(8) also. */ + acpi_UserNotify("Suspend", ACPI_ROOT_OBJECT, state); + return (0); #else /* This platform does not support acpi suspend/resume. */ @@ -2432,8 +2439,24 @@ static void acpi_sleep_enable(void *arg) { + struct acpi_softc *sc = (struct acpi_softc *)arg; + + ACPI_LOCK(acpi); + sc->acpi_sleep_disabled = 0; + ACPI_UNLOCK(acpi); +} + +static ACPI_STATUS +acpi_sleep_disable(struct acpi_softc *sc) +{ + ACPI_STATUS status; + + ACPI_LOCK(acpi); + status = sc->acpi_sleep_disabled ? AE_ERROR : AE_OK; + sc->acpi_sleep_disabled = 1; + ACPI_UNLOCK(acpi); - ((struct acpi_softc *)arg)->acpi_sleep_disabled = 0; + return (status); } enum acpi_sleep_state { @@ -2460,15 +2483,11 @@ ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, state); /* Re-entry once we're suspending is not allowed. */ - status = AE_OK; - ACPI_LOCK(acpi); - if (sc->acpi_sleep_disabled) { - ACPI_UNLOCK(acpi); + status = acpi_sleep_disable(sc); + if (ACPI_FAILURE(status)) { printf("acpi: suspend request ignored (not ready yet)\n"); - return (AE_ERROR); + return (status); } - sc->acpi_sleep_disabled = 1; - ACPI_UNLOCK(acpi); #ifdef SMP thread_lock(curthread); @@ -2557,6 +2576,7 @@ * shutdown handlers. */ shutdown_nice(RB_POWEROFF); + status = AE_OK; break; case ACPI_STATE_S0: default: @@ -2580,26 +2600,38 @@ if (slp_state >= ACPI_SS_SLEPT) acpi_enable_fixed_events(sc); + mtx_unlock(&Giant); + +#ifdef SMP + thread_lock(curthread); + sched_unbind(curthread); + thread_unlock(curthread); +#endif + /* Allow another sleep request after a while. */ if (state != ACPI_STATE_S5) timeout(acpi_sleep_enable, sc, hz * ACPI_MINIMUM_AWAKETIME); /* Run /etc/rc.resume after we are back. */ - acpi_UserNotify("Resume", ACPI_ROOT_OBJECT, state); + if (devctl_process_running()) + acpi_UserNotify("Resume", ACPI_ROOT_OBJECT, state); + + return_ACPI_STATUS (status); +} + +void +acpi_resync_clock(struct acpi_softc *sc) +{ - mtx_unlock(&Giant); + if (!acpi_reset_clock) + return; - /* Warm up timecounter again */ + /* + * Warm up timecounter again and reset system clock. + */ (void)timecounter->tc_get_timecount(timecounter); (void)timecounter->tc_get_timecount(timecounter); - -#ifdef SMP - thread_lock(curthread); - sched_unbind(curthread); - thread_unlock(curthread); -#endif - - return_ACPI_STATUS (status); >>> TRUNCATED FOR MAIL (1000 lines) <<<