Date: Mon, 20 Aug 2007 09:28:11 GMT From: Roman Divacky <rdivacky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 125395 for review Message-ID: <200708200928.l7K9SBfq005245@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125395 Change 125395 by rdivacky@rdivacky_witten on 2007/08/20 09:27:45 IFC Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/conf/NOTES#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/include/specialreg.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/arm/busdma_machdep.c#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/boot/arm/at91/boot2/boot2.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_proto.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/syscalls.master#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/opensolaris/sys/proc.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/NOTES#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.amd64#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.i386#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ata/ata-raid.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/coretemp/coretemp.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/common/cxgb_t3_hw.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_adapter.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_ioctl.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_l2t.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_l2t.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_main.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_offload.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_offload.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_sge.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/dcons/dcons_os.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ichwd/ichwd.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ichwd/ichwd.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi_disk.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi_pci.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfireg.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfivar.h#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt.c#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt.h#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt_cam.c#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/re/if_re.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/ehci.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/fs/msdosfs/msdosfs_vfsops.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/fs/tmpfs/tmpfs_vnops.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/gnu/fs/ext2fs/ext2_vfsops.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/conf/NOTES#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/include/specialreg.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/init_sysent.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_cpu.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_switch.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_thr.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/sched_ule.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/syscalls.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/syscalls.master#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/systrace_args.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/vfs_mount.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/vfs_subr.c#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/Makefile#4 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/coretemp/Makefile#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/netgraph/bluetooth/Makefile#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/bridgestp.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/bluetooth/drivers/h4/TODO#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/bluetooth/drivers/h4/ng_h4.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/bluetooth/drivers/h4/ng_h4_prse.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/bluetooth/drivers/h4/ng_h4_var.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/ng_base.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_asconf.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_input.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_output.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_pcb.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_timer.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_usrreq.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctputil.c#5 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_subr.c#6 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/include/intr_machdep.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/include/md_var.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/include/openpicvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powermac/hrowpic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powermac/hrowpicvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powermac/openpic_macio.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/autoconf.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/interrupt.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/intr_machdep.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/nexus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/openpic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/powerpc/pic_if.m#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/psim/openpic_iobus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/ata.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/syscall.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/syscall.mk#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/sysproto.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/thr.h#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/vm/device_pager.c#3 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/vm/phys_pager.c#3 integrate Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/conf/NOTES#4 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.68 2007/07/04 00:18:38 bz Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.69 2007/08/15 19:26:02 des Exp $ # # @@ -446,6 +446,13 @@ # device ichwd +# +# Temperature sensors: +# +# coretemp: on-die sensor on Intel Core and newer CPUs +# +device coretemp + #--------------------------------------------------------------------------- # ISDN4BSD # ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/include/specialreg.h#3 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.39 2007/05/31 11:26:44 des Exp $ + * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.40 2007/08/15 19:26:01 des Exp $ */ #ifndef _MACHINE_SPECIALREG_H_ @@ -179,6 +179,7 @@ #define MSR_BIOS_SIGN 0x08b #define MSR_PERFCTR0 0x0c1 #define MSR_PERFCTR1 0x0c2 +#define MSR_IA32_EXT_CONFIG 0x0ee /* Undocumented. Core Solo/Duo only */ #define MSR_MTRRcap 0x0fe #define MSR_BBL_CR_ADDR 0x116 #define MSR_BBL_CR_DECC 0x118 ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/arm/busdma_machdep.c#4 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.34 2007/07/27 14:46:43 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.35 2007/08/18 16:47:28 cognet Exp $"); /* * ARM bus dma support routines @@ -1091,13 +1091,19 @@ { char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; - if (op & BUS_DMASYNC_PREWRITE) { + if ((op & BUS_DMASYNC_PREWRITE) && !(op & BUS_DMASYNC_PREREAD)) { cpu_dcache_wb_range((vm_offset_t)buf, len); cpu_l2cache_wb_range((vm_offset_t)buf, len); } if (op & BUS_DMASYNC_PREREAD) { - cpu_idcache_wbinv_range((vm_offset_t)buf, len); - cpu_l2cache_wbinv_range((vm_offset_t)buf, len); + if ((op & BUS_DMASYNC_PREWRITE) || + ((((vm_offset_t)(buf) | len) & arm_dcache_align_mask) == 0)) { + cpu_dcache_inv_range((vm_offset_t)buf, len); + cpu_l2cache_inv_range((vm_offset_t)buf, len); + } else { + cpu_dcache_wbinv_range((vm_offset_t)buf, len); + cpu_l2cache_wbinv_range((vm_offset_t)buf, len); + } } if (op & BUS_DMASYNC_POSTREAD) { if ((vm_offset_t)buf & arm_dcache_align_mask) { ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/boot/arm/at91/boot2/boot2.c#3 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/arm/at91/boot2/boot2.c,v 1.6 2007/07/13 14:27:04 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/arm/at91/boot2/boot2.c,v 1.7 2007/08/17 18:22:31 imp Exp $"); #include <sys/param.h> #include <sys/disklabel.h> @@ -216,7 +216,7 @@ return; } addr = eh.e_entry; - ((void(*)(int))addr)(RB_BOOTINFO | (opts & RBX_MASK)); + ((void(*)(int))addr)(opts & RBX_MASK); } static int ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.77 2007/07/04 23:03:50 peter Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.78 2007/08/16 05:32:25 davidxu Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp */ ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.75 2007/07/04 23:03:50 peter Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.76 2007/08/16 05:32:25 davidxu Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp */ @@ -337,4 +337,5 @@ #define FREEBSD32_SYS_freebsd32_lseek 478 #define FREEBSD32_SYS_freebsd32_truncate 479 #define FREEBSD32_SYS_freebsd32_ftruncate 480 -#define FREEBSD32_SYS_MAXSYSCALL 481 +#define FREEBSD32_SYS_thr_kill2 481 +#define FREEBSD32_SYS_MAXSYSCALL 482 ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.66 2007/07/04 23:03:50 peter Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.67 2007/08/16 05:32:25 davidxu Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp */ @@ -488,4 +488,5 @@ "freebsd32_lseek", /* 478 = freebsd32_lseek */ "freebsd32_truncate", /* 479 = freebsd32_truncate */ "freebsd32_ftruncate", /* 480 = freebsd32_ftruncate */ + "thr_kill2", /* 481 = thr_kill2 */ }; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.76 2007/07/04 23:03:50 peter Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.77 2007/08/16 05:32:25 davidxu Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp */ @@ -519,4 +519,5 @@ { AS(freebsd32_lseek_args), (sy_call_t *)freebsd32_lseek, AUE_LSEEK, NULL, 0, 0 }, /* 478 = freebsd32_lseek */ { AS(freebsd32_truncate_args), (sy_call_t *)freebsd32_truncate, AUE_TRUNCATE, NULL, 0, 0 }, /* 479 = freebsd32_truncate */ { AS(freebsd32_ftruncate_args), (sy_call_t *)freebsd32_ftruncate, AUE_FTRUNCATE, NULL, 0, 0 }, /* 480 = freebsd32_ftruncate */ + { AS(thr_kill2_args), (sy_call_t *)thr_kill2, AUE_KILL, NULL, 0, 0 }, /* 481 = thr_kill2 */ }; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/syscalls.master#3 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp $ + $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.91 2007/08/16 05:30:04 davidxu Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 ; from: src/sys/kern/syscalls.master 1.107 ; @@ -794,3 +794,4 @@ u_int32_t lengthlo, u_int32_t lengthhi); } 480 AUE_FTRUNCATE STD { int freebsd32_ftruncate(int fd, \ u_int32_t lengthlo, u_int32_t lengthhi); } +481 AUE_KILL NOPROTO { int thr_kill2(pid_t pid, long id, int sig); } ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/opensolaris/sys/proc.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/opensolaris/sys/proc.h,v 1.1 2007/04/06 01:09:06 pjd Exp $ + * $FreeBSD: src/sys/compat/opensolaris/sys/proc.h,v 1.2 2007/08/16 20:33:20 pjd Exp $ */ #ifndef _OPENSOLARIS_SYS_PROC_H_ @@ -56,6 +56,12 @@ typedef struct thread *kthread_id_t; typedef struct proc proc_t; +#if (KSTACK_PAGES * PAGE_SIZE) < 16384 +#define ZFS_KSTACK_PAGES (16384 / PAGE_SIZE) +#else +#define ZFS_KSTACK_PAGES 0 +#endif + static __inline kthread_t * thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg, size_t len, proc_t *pp, int state, pri_t pri) @@ -71,7 +77,8 @@ ASSERT(len == 0); ASSERT(state == TS_RUN); - error = kthread_create(proc, arg, &p, 0, 0, "solthread %p", proc); + error = kthread_create(proc, arg, &p, 0, ZFS_KSTACK_PAGES, + "solthread %p", proc); return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL); } ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/NOTES#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1448 2007/08/05 16:16:15 bz Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1449 2007/08/13 17:19:27 emax Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -627,7 +627,7 @@ options NETGRAPH_ATM_ATMPIF options NETGRAPH_BLUETOOTH # ng_bluetooth(4) options NETGRAPH_BLUETOOTH_BT3C # ng_bt3c(4) -# options NETGRAPH_BLUETOOTH_H4 # ng_h4(4) - not MPSAFE +options NETGRAPH_BLUETOOTH_H4 # ng_h4(4) options NETGRAPH_BLUETOOTH_HCI # ng_hci(4) options NETGRAPH_BLUETOOTH_L2CAP # ng_l2cap(4) options NETGRAPH_BLUETOOTH_SOCKET # ng_btsocket(4) ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.amd64#5 (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.106 2007/07/05 06:12:40 peter Exp $ +# $FreeBSD: src/sys/conf/files.amd64,v 1.107 2007/08/15 19:26:01 des Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -145,6 +145,7 @@ dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc +dev/coretemp/coretemp.c optional coretemp # There are no systems with isa slots, so all ed isa entries should go.. dev/ed/if_ed_3c503.c optional ed isa ed_3c503 dev/ed/if_ed_isa.c optional ed isa ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.i386#5 (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.579 2007/07/05 06:12:40 peter Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.580 2007/08/15 19:26:01 des Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -158,6 +158,7 @@ dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce dev/cm/if_cm_isa.c optional cm isa +dev/coretemp/coretemp.c optional coretemp dev/cp/cpddk.c optional cp dev/cp/if_cp.c optional cp dev/ctau/ctau.c optional ctau ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ata/ata-raid.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.123 2007/02/21 19:07:18 sos Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.124 2007/08/13 18:46:31 jhb Exp $"); #include "opt_ata.h" #include <sys/param.h> @@ -56,7 +56,7 @@ /* prototypes */ static void ata_raid_done(struct ata_request *request); static void ata_raid_config_changed(struct ar_softc *rdp, int writeback); -static int ata_raid_status(struct ata_ioc_raid_config *config); +static int ata_raid_status(struct ata_ioc_raid_status *status); static int ata_raid_create(struct ata_ioc_raid_config *config); static int ata_raid_delete(int array); static int ata_raid_addspare(struct ata_ioc_raid_config *config); @@ -216,13 +216,14 @@ static int ata_raid_ioctl(u_long cmd, caddr_t data) { + struct ata_ioc_raid_status *status = (struct ata_ioc_raid_status *)data; struct ata_ioc_raid_config *config = (struct ata_ioc_raid_config *)data; int *lun = (int *)data; int error = EOPNOTSUPP; switch (cmd) { case IOCATARAIDSTATUS: - error = ata_raid_status(config); + error = ata_raid_status(status); break; case IOCATARAIDCREATE: @@ -929,25 +930,32 @@ } static int -ata_raid_status(struct ata_ioc_raid_config *config) +ata_raid_status(struct ata_ioc_raid_status *status) { struct ar_softc *rdp; int i; - if (!(rdp = ata_raid_arrays[config->lun])) + if (!(rdp = ata_raid_arrays[status->lun])) return ENXIO; - config->type = rdp->type; - config->total_disks = rdp->total_disks; + status->type = rdp->type; + status->total_disks = rdp->total_disks; for (i = 0; i < rdp->total_disks; i++ ) { - if ((rdp->disks[i].flags & AR_DF_PRESENT) && rdp->disks[i].dev) - config->disks[i] = device_get_unit(rdp->disks[i].dev); - else - config->disks[i] = -1; + status->disks[i].state = 0; + if ((rdp->disks[i].flags & AR_DF_PRESENT) && rdp->disks[i].dev) { + status->disks[i].lun = device_get_unit(rdp->disks[i].dev); + if (rdp->disks[i].flags & AR_DF_PRESENT) + status->disks[i].state |= AR_DISK_PRESENT; + if (rdp->disks[i].flags & AR_DF_ONLINE) + status->disks[i].state |= AR_DISK_ONLINE; + if (rdp->disks[i].flags & AR_DF_SPARE) + status->disks[i].state |= AR_DISK_SPARE; + } else + status->disks[i].lun = -1; } - config->interleave = rdp->interleave; - config->status = rdp->status; - config->progress = 100 * rdp->rebuild_lba / rdp->total_sectors; + status->interleave = rdp->interleave; + status->status = rdp->status; + status->progress = 100 * rdp->rebuild_lba / rdp->total_sectors; return 0; } ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/common/cxgb_t3_hw.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/common/cxgb_t3_hw.c,v 1.6 2007/07/17 06:50:34 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/common/cxgb_t3_hw.c,v 1.7 2007/08/17 05:57:04 kmacy Exp $"); #ifdef CONFIG_DEFINED @@ -501,7 +501,7 @@ #undef CAPS_10G #define VPD_ENTRY(name, len) \ - u8 name##_kword[2]; u8 name##_len; u8 name##_data[len] + u8 name##_kword[2]; u8 name##_len; char name##_data[len] /* * Partial EEPROM Vital Product Data structure. Includes only the ID and ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_adapter.h#3 (text+ko) ==== @@ -26,7 +26,7 @@ POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.15 2007/08/10 23:33:34 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.16 2007/08/17 05:57:03 kmacy Exp $ ***************************************************************************/ @@ -36,7 +36,7 @@ #define _CXGB_ADAPTER_H_ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.15 2007/08/10 23:33:34 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.16 2007/08/17 05:57:03 kmacy Exp $"); #include <sys/lock.h> #include <sys/mutex.h> @@ -310,7 +310,7 @@ TAILQ_ENTRY(adapter) adapter_entry; /* PCI register resources */ - uint32_t regs_rid; + int regs_rid; struct resource *regs_res; bus_space_handle_t bh; bus_space_tag_t bt; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_ioctl.h#3 (text+ko) ==== @@ -25,7 +25,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_ioctl.h,v 1.4 2007/07/17 06:50:33 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_ioctl.h,v 1.5 2007/08/17 05:57:03 kmacy Exp $ ***************************************************************************/ #ifndef __CHIOCTL_H__ @@ -128,7 +128,7 @@ int8_t channel; int32_t kbps; /* rate in Kbps */ int32_t class_ipg; /* tenths of nanoseconds */ - int32_t flow_ipg; /* usec */ + uint32_t flow_ipg; /* usec */ }; struct ch_filter_tuple { ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_l2t.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_l2t.c,v 1.2 2007/05/28 22:57:26 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_l2t.c,v 1.3 2007/08/17 05:57:03 kmacy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -37,9 +37,10 @@ #include <sys/bus.h> #include <sys/lock.h> #include <sys/mutex.h> +#if __FreeBSD_version > 700000 #include <sys/rwlock.h> +#endif - #include <sys/socket.h> #include <sys/socketvar.h> #include <net/if.h> @@ -58,7 +59,7 @@ #define VLAN_NONE 0xfff #define SDL(s) ((struct sockaddr_dl *)s) -#define RT_ENADDR(rt) ((char *)LLADDR(SDL((rt)))) +#define RT_ENADDR(rt) ((u_char *)LLADDR(SDL((rt)))) #define rt_expire rt_rmx.rmx_expire struct llinfo_arp { ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_l2t.h#2 (text+ko) ==== @@ -25,7 +25,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_l2t.h,v 1.1 2007/05/25 09:48:19 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_l2t.h,v 1.2 2007/08/17 05:57:03 kmacy Exp $ ***************************************************************************/ #ifndef _CHELSIO_L2T_H @@ -33,7 +33,18 @@ #include <dev/cxgb/ulp/toecore/toedev.h> #include <sys/lock.h> + +#if __FreeBSD_version > 700000 #include <sys/rwlock.h> +#else +#define rwlock mtx +#define rw_wlock(x) mtx_lock((x)) +#define rw_wunlock(x) mtx_unlock((x)) +#define rw_rlock(x) mtx_lock((x)) +#define rw_runlock(x) mtx_unlock((x)) +#define rw_init(x, str) mtx_init((x), (str), NULL, MTX_DEF) +#define rw_destroy(x) mtx_destroy((x)) +#endif enum { L2T_STATE_VALID, /* entry is up to date */ ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_main.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.30 2007/08/10 23:47:39 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.31 2007/08/17 05:57:04 kmacy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -384,10 +384,12 @@ device_t child; const struct adapter_info *ai; struct adapter *sc; - int i, reg, msi_needed, error = 0; + int i, reg, error = 0; uint32_t vers; int port_qsets = 1; - +#ifdef MSI_SUPPORTED + int msi_needed; +#endif sc = device_get_softc(dev); sc->dev = dev; sc->msi_count = 0; @@ -935,6 +937,7 @@ /* Don't enable TSO6 yet */ #define CXGB_CAP_ENABLE (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | IFCAP_JUMBO_MTU) #define IFCAP_TSO4 0x0 +#define IFCAP_TSO6 0x0 #define CSUM_TSO 0x0 #endif @@ -1038,7 +1041,7 @@ taskqueue_thread_enqueue, &p->tq); #else /* Create a port for handling TX without starvation */ - p->tq = taskqueue_create_fast(buf, M_NOWAIT, + p->tq = taskqueue_create_fast(p->taskqbuf, M_NOWAIT, taskqueue_thread_enqueue, &p->tq); #endif ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_offload.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_offload.c,v 1.7 2007/08/10 23:33:34 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_offload.c,v 1.8 2007/08/17 05:57:04 kmacy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -596,7 +596,7 @@ BUG_ON(tid >= t->ntids); if (tdev->type == T3A) - atomic_cmpset_ptr((long *)&t->tid_tab[tid].ctx, (long)NULL, (long)ctx); + atomic_cmpset_ptr((uintptr_t *)&t->tid_tab[tid].ctx, (long)NULL, (long)ctx); else { struct mbuf *m; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_offload.h#2 (text+ko) ==== @@ -26,7 +26,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_offload.h,v 1.3 2007/07/17 06:50:33 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_offload.h,v 1.4 2007/08/17 05:57:04 kmacy Exp $ ***************************************************************************/ @@ -149,7 +149,7 @@ struct tid_info { struct toe_tid_entry *tid_tab; unsigned int ntids; - volatile int tids_in_use; + volatile unsigned int tids_in_use; union listen_entry *stid_tab; unsigned int nstids; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/cxgb/cxgb_sge.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_sge.c,v 1.26 2007/08/10 23:47:39 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_sge.c,v 1.27 2007/08/17 05:57:04 kmacy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1168,8 +1168,8 @@ struct sge_txq *txq; struct tx_sw_desc *stx; struct txq_state txqs; - unsigned int nsegs, ndesc, flits, cntrl, mlen; - int err, tso_info = 0; + unsigned int ndesc, flits, cntrl, mlen; + int err, nsegs, tso_info = 0; struct work_request_hdr *wrp; struct tx_sw_desc *txsd; @@ -1212,7 +1212,7 @@ struct cpl_tx_pkt_lso *hdr = (struct cpl_tx_pkt_lso *) cpl; struct ip *ip; struct tcphdr *tcp; - uint8_t *pkthdr, tmp[TCPPKTHDRSIZE]; /* is this too large for the stack? */ + char *pkthdr, tmp[TCPPKTHDRSIZE]; /* is this too large for the stack? */ txd->flit[2] = 0; cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT_LSO); @@ -1222,7 +1222,7 @@ pkthdr = &tmp[0]; m_copydata(m0, 0, TCPPKTHDRSIZE, pkthdr); } else { - pkthdr = mtod(m0, uint8_t *); + pkthdr = mtod(m0, char *); } if (__predict_false(m0->m_flags & M_VLANTAG)) { @@ -1792,12 +1792,10 @@ static int ofld_xmit(adapter_t *adap, struct sge_txq *q, struct mbuf *m) { - int ret; - unsigned int pidx, gen, nsegs; - unsigned int ndesc; + unsigned int pidx, gen, ndesc; struct mbuf *m_vec[TX_CLEAN_MAX_DESC]; bus_dma_segment_t segs[TX_MAX_SEGS]; - int i, cleaned; + int i, cleaned, ret, nsegs; struct tx_sw_desc *stx = &q->sdesc[q->pidx]; mtx_lock(&q->lock); ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/dcons/dcons_os.c#3 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/dcons/dcons_os.c,v 1.18 2007/06/11 04:08:50 simokawa Exp $ + * $FreeBSD: src/sys/dev/dcons/dcons_os.c,v 1.19 2007/08/17 05:32:39 simokawa Exp $ */ #include <sys/param.h> @@ -241,11 +241,10 @@ #endif static int -dcons_os_checkc(struct dcons_softc *dc) +dcons_os_checkc_nopoll(struct dcons_softc *dc) { int c; - EVENTHANDLER_INVOKE(dcons_poll, 0); if (dg.dma_tag != NULL) bus_dmamap_sync(dg.dma_tag, dg.dma_map, BUS_DMASYNC_POSTREAD); @@ -257,6 +256,13 @@ return (c); } +static int +dcons_os_checkc(struct dcons_softc *dc) +{ + EVENTHANDLER_INVOKE(dcons_poll, 0); + return (dcons_os_checkc_nopoll(dc)); +} + #if defined(GDB) || !defined(CONS_NODEV) static int dcons_os_getc(struct dcons_softc *dc) @@ -408,7 +414,7 @@ for (i = 0; i < DCONS_NPORT; i ++) { dc = &sc[i]; tp = ((DEV)dc->dev)->si_tty; - while ((c = dcons_os_checkc(dc)) != -1) + while ((c = dcons_os_checkc_nopoll(dc)) != -1) if (tp->t_state & TS_ISOPEN) #if __FreeBSD_version < 502113 (*linesw[tp->t_line].l_rint)(c, tp); ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ichwd/ichwd.c#2 (text+ko) ==== @@ -51,10 +51,12 @@ * (document no. 292273-001). The WDT is also described in the individual * chipset datasheets, e.g. Intel82801EB ICH5 / 82801ER ICH5R Datasheet * (document no. 252516-001) sections 9.10 and 9.11. + * + * ICH6/7/8 support by Takeharu KATO <takeharu1219@ybb.ne.jp> */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.9 2007/03/27 21:03:36 n_hibma Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.10 2007/08/13 18:52:37 des Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -71,20 +73,27 @@ #include <dev/ichwd/ichwd.h> static struct ichwd_device ichwd_devices[] = { - { VENDORID_INTEL, DEVICEID_82801AA, "Intel 82801AA watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801AB, "Intel 82801AB watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801BA, "Intel 82801BA watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801BAM, "Intel 82801BAM watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801CA, "Intel 82801CA watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801CAM, "Intel 82801CAM watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801DB, "Intel 82801DB watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801DBM, "Intel 82801DBM watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801E, "Intel 82801E watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801EBR, "Intel 82801EB/ER watchdog timer" }, - { VENDORID_INTEL, DEVICEID_82801FBR, "Intel 82801FB/FR watchdog timer" }, - { VENDORID_INTEL, DEVICEID_ICH5, "Intel ICH5 watchdog timer"}, - { VENDORID_INTEL, DEVICEID_6300ESB, "Intel 6300ESB watchdog timer"}, - { 0, 0, NULL }, + { DEVICEID_82801AA, "Intel 82801AA watchdog timer", 1 }, + { DEVICEID_82801AB, "Intel 82801AB watchdog timer", 1 }, + { DEVICEID_82801BA, "Intel 82801BA watchdog timer", 2 }, + { DEVICEID_82801BAM, "Intel 82801BAM watchdog timer", 2 }, + { DEVICEID_82801CA, "Intel 82801CA watchdog timer", 3 }, + { DEVICEID_82801CAM, "Intel 82801CAM watchdog timer", 3 }, + { DEVICEID_82801DB, "Intel 82801DB watchdog timer", 4 }, + { DEVICEID_82801DBM, "Intel 82801DBM watchdog timer", 4 }, + { DEVICEID_82801E, "Intel 82801E watchdog timer", 5 }, + { DEVICEID_82801EBR, "Intel 82801EB/ER watchdog timer", 5 }, + { DEVICEID_6300ESB, "Intel 6300ESB watchdog timer", 5 }, + { DEVICEID_82801FBR, "Intel 82801FB/FR watchdog timer", 6 }, + { DEVICEID_ICH6M, "Intel ICH6M watchdog timer", 6 }, + { DEVICEID_ICH6W, "Intel ICH6W watchdog timer", 6 }, + { DEVICEID_ICH7, "Intel ICH7 watchdog timer", 7 }, + { DEVICEID_ICH7M, "Intel ICH7M watchdog timer", 7 }, + { DEVICEID_ICH7MDH, "Intel ICH7MDH watchdog timer", 7 }, + { DEVICEID_ICH8, "Intel ICH8 watchdog timer", 8 }, + { DEVICEID_ICH8DH, "Intel ICH8DH watchdog timer", 8 }, + { DEVICEID_ICH8DO, "Intel ICH8DO watchdog timer", 8 }, + { 0, NULL, 0 }, }; static devclass_t ichwd_devclass; @@ -95,6 +104,10 @@ bus_space_read_2((sc)->tco_bst, (sc)->tco_bsh, (off)) #define ichwd_read_tco_4(sc, off) \ bus_space_read_4((sc)->tco_bst, (sc)->tco_bsh, (off)) +#define ichwd_read_smi_4(sc, off) \ + bus_space_read_4((sc)->smi_bst, (sc)->smi_bsh, (off)) +#define ichwd_read_gcs_4(sc, off) \ + bus_space_read_4((sc)->gcs_bst, (sc)->gcs_bsh, (off)) #define ichwd_write_tco_1(sc, off, val) \ bus_space_write_1((sc)->tco_bst, (sc)->tco_bsh, (off), (val)) @@ -102,12 +115,17 @@ bus_space_write_2((sc)->tco_bst, (sc)->tco_bsh, (off), (val)) #define ichwd_write_tco_4(sc, off, val) \ bus_space_write_4((sc)->tco_bst, (sc)->tco_bsh, (off), (val)) - -#define ichwd_read_smi_4(sc, off) \ - bus_space_read_4((sc)->smi_bst, (sc)->smi_bsh, (off)) #define ichwd_write_smi_4(sc, off, val) \ bus_space_write_4((sc)->smi_bst, (sc)->smi_bsh, (off), (val)) +#define ichwd_write_gcs_4(sc, off, val) \ + bus_space_write_4((sc)->gcs_bst, (sc)->gcs_bsh, (off), (val)) +#define ichwd_verbose_printf(dev, ...) \ + do { \ + if (bootverbose) \ + device_printf(dev, __VA_ARGS__);\ + } while (0) + static __inline void ichwd_intr_enable(struct ichwd_softc *sc) { @@ -136,8 +154,7 @@ cnt = ichwd_read_tco_2(sc, TCO1_CNT) & TCO_CNT_PRESERVE; ichwd_write_tco_2(sc, TCO1_CNT, cnt & ~TCO_TMR_HALT); sc->active = 1; - if (bootverbose) - device_printf(sc->device, "timer enabled\n"); + ichwd_verbose_printf(sc->device, "timer enabled\n"); } static __inline void @@ -148,25 +165,85 @@ cnt = ichwd_read_tco_2(sc, TCO1_CNT) & TCO_CNT_PRESERVE; ichwd_write_tco_2(sc, TCO1_CNT, cnt | TCO_TMR_HALT); sc->active = 0; - if (bootverbose) - device_printf(sc->device, "timer disabled\n"); + ichwd_verbose_printf(sc->device, "timer disabled\n"); } static __inline void ichwd_tmr_reload(struct ichwd_softc *sc) { - ichwd_write_tco_1(sc, TCO_RLD, 1); - if (bootverbose) - device_printf(sc->device, "timer reloaded\n"); + if (sc->ich_version <= 5) + ichwd_write_tco_1(sc, TCO_RLD, 1); + else + ichwd_write_tco_2(sc, TCO_RLD, 1); + + ichwd_verbose_printf(sc->device, "timer reloaded\n"); } static __inline void -ichwd_tmr_set(struct ichwd_softc *sc, uint8_t timeout) +ichwd_tmr_set(struct ichwd_softc *sc, unsigned int timeout) { - ichwd_write_tco_1(sc, TCO_TMR, timeout); + + /* + * If the datasheets are to be believed, the minimum value + * actually varies from chipset to chipset - 4 for ICH5 and 2 for + * all other chipsets. I suspect this is a bug in the ICH5 + * datasheet and that the minimum is uniformly 2, but I'd rather + * err on the side of caution. + */ + if (timeout < 4) + timeout = 4; + + if (sc->ich_version <= 5) { + uint8_t tmr_val8 = ichwd_read_tco_1(sc, TCO_TMR1); + + tmr_val8 &= 0xc0; + if (timeout > 0xbf) + timeout = 0xbf; + tmr_val8 |= timeout; + ichwd_write_tco_1(sc, TCO_TMR1, tmr_val8); + } else { + uint16_t tmr_val16 = ichwd_read_tco_2(sc, TCO_TMR2); + + tmr_val16 &= 0xfc00; + if (timeout > 0x0bff) + timeout = 0x0bff; + tmr_val16 |= timeout; + ichwd_write_tco_2(sc, TCO_TMR2, tmr_val16); + } + sc->timeout = timeout; - if (bootverbose) - device_printf(sc->device, "timeout set to %u ticks\n", timeout); + + ichwd_verbose_printf(sc->device, "timeout set to %u ticks\n", timeout); +} + +static __inline int +ichwd_clear_noreboot(struct ichwd_softc *sc) +{ + uint32_t status; + int rc = 0; + + /* try to clear the NO_REBOOT bit */ + if (sc->ich_version <= 5) { + status = pci_read_config(sc->ich, ICH_GEN_STA, 1); + status &= ~ICH_GEN_STA_NO_REBOOT; + pci_write_config(sc->ich, ICH_GEN_STA, status, 1); + status = pci_read_config(sc->ich, ICH_GEN_STA, 1); + if (status & ICH_GEN_STA_NO_REBOOT) + rc = EIO; + } else { + status = ichwd_read_gcs_4(sc, 0); + status &= ~ICH_GCS_NO_REBOOT; + ichwd_write_gcs_4(sc, 0, status); + status = ichwd_read_gcs_4(sc, 0); + if (status & ICH_GCS_NO_REBOOT) + rc = EIO; + } + + if (rc) + device_printf(sc->device, + "ICH WDT present but disabled in BIOS or hardware\n"); + + return (rc); } /* @@ -181,14 +258,12 @@ /* convert from power-of-two-ns to WDT ticks */ cmd &= WD_INTERVAL; timeout = ((uint64_t)1 << cmd) / ICHWD_TICK; - if (cmd > 0 && cmd <= 63 - && timeout >= ICHWD_MIN_TIMEOUT && timeout <= ICHWD_MAX_TIMEOUT) { + if (cmd) { if (timeout != sc->timeout) { if (!sc->active) ichwd_tmr_enable(sc); ichwd_tmr_set(sc, timeout); } - ichwd_tmr_reload(sc); *error = 0; } else { @@ -197,7 +272,28 @@ } } -static unsigned int pmbase = 0; +static device_t +ichwd_find_ich_lpc_bridge(struct ichwd_device **id_p) +{ >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708200928.l7K9SBfq005245>