Date: Tue, 14 Mar 2006 21:22:40 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 93305 for review Message-ID: <200603142122.k2ELMeWO089536@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93305 Change 93305 by jhb@jhb_slimer on 2006/03/14 21:22:36 IFC @93304. Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/apic_vector.S#13 integrate .. //depot/projects/smpng/sys/amd64/amd64/db_trace.c#17 integrate .. //depot/projects/smpng/sys/amd64/amd64/io_apic.c#14 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#51 integrate .. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#34 integrate .. //depot/projects/smpng/sys/amd64/amd64/pmap.c#52 integrate .. //depot/projects/smpng/sys/amd64/amd64/trap.c#43 integrate .. //depot/projects/smpng/sys/amd64/include/asmacros.h#6 integrate .. //depot/projects/smpng/sys/amd64/include/bus.h#8 integrate .. //depot/projects/smpng/sys/amd64/include/pmap.h#20 integrate .. //depot/projects/smpng/sys/amd64/include/trap.h#3 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#10 integrate .. //depot/projects/smpng/sys/amd64/pci/pci_bus.c#16 integrate .. //depot/projects/smpng/sys/arm/arm/in_cksum.c#6 integrate .. //depot/projects/smpng/sys/arm/include/in_cksum.h#4 integrate .. //depot/projects/smpng/sys/boot/i386/libi386/Makefile#15 integrate .. //depot/projects/smpng/sys/boot/i386/libi386/libi386.h#11 integrate .. //depot/projects/smpng/sys/boot/i386/libi386/smbios.c#4 integrate .. //depot/projects/smpng/sys/cam/scsi/scsi_da.c#65 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#34 integrate .. //depot/projects/smpng/sys/conf/files#169 integrate .. //depot/projects/smpng/sys/contrib/pf/net/if_pflog.h#7 integrate .. //depot/projects/smpng/sys/dev/ata/ata-all.c#81 integrate .. //depot/projects/smpng/sys/dev/ata/ata-all.h#46 integrate .. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#65 integrate .. //depot/projects/smpng/sys/dev/ata/ata-disk.c#57 integrate .. //depot/projects/smpng/sys/dev/ata/ata-pci.h#42 integrate .. //depot/projects/smpng/sys/dev/ata/ata-queue.c#33 integrate .. //depot/projects/smpng/sys/dev/ata/ata-raid.c#46 integrate .. //depot/projects/smpng/sys/dev/ata/ata-usb.c#1 branch .. //depot/projects/smpng/sys/dev/ata/atapi-cd.c#61 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-fd.c#32 integrate .. //depot/projects/smpng/sys/dev/ath/ath_rate/sample/sample.c#7 integrate .. //depot/projects/smpng/sys/dev/cs/if_cs.c#17 integrate .. //depot/projects/smpng/sys/dev/exca/exca.c#19 integrate .. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_logging.c#5 integrate .. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_mod.c#13 integrate .. //depot/projects/smpng/sys/dev/ieee488/upd7210.c#7 integrate .. //depot/projects/smpng/sys/dev/ipw/if_ipw.c#10 integrate .. //depot/projects/smpng/sys/dev/ipw/if_ipwreg.h#2 integrate .. //depot/projects/smpng/sys/dev/ipw/if_ipwvar.h#3 integrate .. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#15 integrate .. //depot/projects/smpng/sys/dev/iwi/if_iwireg.h#7 integrate .. //depot/projects/smpng/sys/dev/iwi/if_iwivar.h#6 integrate .. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#39 integrate .. //depot/projects/smpng/sys/fs/nullfs/null_vnops.c#27 integrate .. //depot/projects/smpng/sys/geom/geom_io.c#41 integrate .. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#26 integrate .. //depot/projects/smpng/sys/geom/mirror/g_mirror.h#11 integrate .. //depot/projects/smpng/sys/geom/mirror/g_mirror_ctl.c#9 integrate .. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#23 integrate .. //depot/projects/smpng/sys/geom/raid3/g_raid3.h#11 integrate .. //depot/projects/smpng/sys/geom/raid3/g_raid3_ctl.c#10 integrate .. //depot/projects/smpng/sys/gnu/fs/xfs/FreeBSD/support/kdb.c#2 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#104 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#99 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#76 integrate .. //depot/projects/smpng/sys/isofs/cd9660/cd9660_rrip.c#10 integrate .. //depot/projects/smpng/sys/kern/kern_environment.c#20 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#95 integrate .. //depot/projects/smpng/sys/kern/kern_exit.c#115 integrate .. //depot/projects/smpng/sys/kern/kern_mbuf.c#17 integrate .. //depot/projects/smpng/sys/kern/kern_resource.c#61 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#120 integrate .. //depot/projects/smpng/sys/kern/kern_tc.c#39 integrate .. //depot/projects/smpng/sys/kern/kern_thread.c#88 integrate .. //depot/projects/smpng/sys/kern/subr_prf.c#44 integrate .. //depot/projects/smpng/sys/kern/uipc_mbuf.c#45 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#59 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#124 integrate .. //depot/projects/smpng/sys/kern/vfs_vnops.c#67 integrate .. //depot/projects/smpng/sys/modules/ata/atausb/Makefile#1 branch .. //depot/projects/smpng/sys/modules/iwi/Makefile#4 integrate .. //depot/projects/smpng/sys/modules/pf/Makefile#10 integrate .. //depot/projects/smpng/sys/modules/pflog/Makefile#5 integrate .. //depot/projects/smpng/sys/net/if_vlan.c#47 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_proto.c#19 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#57 integrate .. //depot/projects/smpng/sys/nfsserver/nfs_serv.c#45 integrate .. //depot/projects/smpng/sys/nfsserver/nfs_srvsock.c#26 integrate .. //depot/projects/smpng/sys/pc98/pc98/machdep.c#11 integrate .. //depot/projects/smpng/sys/sys/cdefs.h#33 integrate .. //depot/projects/smpng/sys/sys/disk.h#13 integrate .. //depot/projects/smpng/sys/sys/hash.h#1 branch .. //depot/projects/smpng/sys/sys/mount.h#51 integrate .. //depot/projects/smpng/sys/sys/proc.h#166 integrate .. //depot/projects/smpng/sys/sys/vnode.h#72 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_extern.h#21 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_snapshot.c#56 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_softdep.c#53 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#81 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_inode.c#23 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_lookup.c#24 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_quota.c#32 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufsmount.h#15 integrate .. //depot/projects/smpng/sys/vm/swap_pager.c#61 integrate .. //depot/projects/smpng/sys/vm/vm_contig.c#37 integrate .. //depot/projects/smpng/sys/vm/vm_fault.c#56 integrate .. //depot/projects/smpng/sys/vm/vm_map.c#78 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#73 integrate .. //depot/projects/smpng/sys/vm/vm_pageq.c#17 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/apic_vector.S#13 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * from: vector.s, 386BSD 0.1 unknown origin - * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.107 2005/12/14 21:47:01 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.108 2006/03/13 23:55:31 peter Exp $ */ /* @@ -188,11 +188,7 @@ jmp doreti /* - * Executed by a CPU when it receives an Xcpustop IPI from another CPU, - * - * - Signals its receipt. - * - Waits for permission to restart. - * - Signals its restart. + * Executed by a CPU when it receives an IPI_STOP from another CPU. */ .text SUPERALIGN_TEXT ==== //depot/projects/smpng/sys/amd64/amd64/db_trace.c#17 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.73 2005/12/27 23:23:47 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.74 2006/03/13 23:56:44 peter Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -192,6 +192,7 @@ #define TRAP 1 #define INTERRUPT 2 #define SYSCALL 3 +#define TRAP_INTERRUPT 5 static void db_nextframe(struct amd64_frame **, db_addr_t *, struct thread *); static int db_numargs(struct amd64_frame *); @@ -326,6 +327,12 @@ frame_type = INTERRUPT; else if (strcmp(name, "Xfast_syscall") == 0) frame_type = SYSCALL; + /* XXX: These are interrupts with trap frames. */ + else if (strcmp(name, "Xtimerint") == 0 || + strcmp(name, "Xcpustop") == 0 || + strcmp(name, "Xrendezvous") == 0 || + strcmp(name, "Xipi_intr_bitmap_handler") == 0) + frame_type = TRAP_INTERRUPT; } /* @@ -357,6 +364,7 @@ db_printf("--- syscall"); decode_syscall(tf->tf_rax, td); break; + case TRAP_INTERRUPT: case INTERRUPT: db_printf("--- interrupt"); break; ==== //depot/projects/smpng/sys/amd64/amd64/io_apic.c#14 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.21 2006/02/28 22:24:54 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.22 2006/03/13 23:55:31 peter Exp $"); #include "opt_atpic.h" #include "opt_isa.h" @@ -73,6 +73,10 @@ * IRQs behave as PCI IRQs by default. We also assume that the pin for * IRQ 0 is actually an ExtINT pin. The apic enumerators override the * configuration of individual pins as indicated by their tables. + * + * Documentation for the I/O APIC: "82093AA I/O Advanced Programmable + * Interrupt Controller (IOAPIC)", May 1996, Intel Corp. + * ftp://download.intel.com/design/chipsets/datashts/29056601.pdf */ struct ioapic_intsrc { ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#51 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.646 2006/02/03 02:49:14 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.648 2006/03/14 16:13:54 jhb Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -247,8 +247,8 @@ struct sigacts *psp; char *sp; struct trapframe *regs; + int sig; int oonstack; - int sig; td = curthread; p = td->td_proc; ==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#34 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.269 2006/02/28 22:24:54 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.270 2006/03/09 16:38:52 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -612,12 +612,12 @@ continue; if (cpu_info[apic_id].cpu_bsp) continue; -#if 0 + /* Don't let hyperthreads service interrupts. */ if (hyperthreading_cpus > 1 && apic_id % hyperthreading_cpus != 0) continue; -#endif + intr_add_cpu(apic_id); } } ==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#52 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.536 2006/02/03 00:16:36 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.537 2006/03/13 08:13:37 ps Exp $"); /* * Manages physical address maps. @@ -1360,7 +1360,7 @@ return sysctl_handle_long(oidp, &ksize, 0, req); } SYSCTL_PROC(_vm, OID_AUTO, kvm_size, CTLTYPE_LONG|CTLFLAG_RD, - 0, 0, kvm_size, "IU", "Size of KVM"); + 0, 0, kvm_size, "LU", "Size of KVM"); static int kvm_free(SYSCTL_HANDLER_ARGS) @@ -1370,7 +1370,7 @@ return sysctl_handle_long(oidp, &kfree, 0, req); } SYSCTL_PROC(_vm, OID_AUTO, kvm_free, CTLTYPE_LONG|CTLFLAG_RD, - 0, 0, kvm_free, "IU", "Amount of KVM free"); + 0, 0, kvm_free, "LU", "Amount of KVM free"); /* * grow the number of kernel page table entries, if needed ==== //depot/projects/smpng/sys/amd64/amd64/trap.c#43 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.302 2006/02/08 08:09:15 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.303 2006/03/13 23:55:31 peter Exp $"); /* * AMD64 Trap and System call handling @@ -872,7 +872,6 @@ */ if (orig_tf_rflags & PSL_T) { frame.tf_rflags &= ~PSL_T; - ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGTRAP; ksi.ksi_code = TRAP_TRACE; ==== //depot/projects/smpng/sys/amd64/include/asmacros.h#6 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/asmacros.h,v 1.29 2005/12/08 18:33:30 jhb Exp $ + * $FreeBSD: src/sys/amd64/include/asmacros.h,v 1.30 2006/03/14 00:01:56 peter Exp $ */ #ifndef _MACHINE_ASMACROS_H_ @@ -130,7 +130,7 @@ #ifdef LOCORE /* - * Convenience macros for declaring interrupt entry points. + * Convenience macro for declaring interrupt entry points. */ #define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(X,name); \ .type __CONCAT(X,name),@function; __CONCAT(X,name): ==== //depot/projects/smpng/sys/amd64/include/bus.h#8 (text+ko) ==== @@ -28,7 +28,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/include/bus.h,v 1.16 2005/05/29 04:42:15 nyan Exp $ + * $FreeBSD: src/sys/amd64/include/bus.h,v 1.17 2006/03/14 00:01:56 peter Exp $ */ /* $NetBSD: bus.h,v 1.12 1997/10/01 08:25:15 fvdl Exp $ */ @@ -1004,6 +1004,17 @@ #endif } +#ifdef BUS_SPACE_NO_LEGACY +#undef inb +#undef outb +#define inb(a) compiler_error +#define inw(a) compiler_error +#define inl(a) compiler_error +#define outb(a, b) compiler_error +#define outw(a, b) compiler_error +#define outl(a, b) compiler_error +#endif + #include <machine/bus_dma.h> /* ==== //depot/projects/smpng/sys/amd64/include/pmap.h#20 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.128 2005/12/06 21:09:01 jhb Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.129 2006/03/14 00:01:56 peter Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -176,7 +176,7 @@ * the corresponding pde that in turn maps it. */ pt_entry_t *vtopte(vm_offset_t); -#define vtophys(va) pmap_kextract((vm_offset_t)(va)) +#define vtophys(va) pmap_kextract(((vm_offset_t) (va))) static __inline pt_entry_t pte_load(pt_entry_t *ptep) ==== //depot/projects/smpng/sys/amd64/include/trap.h#3 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * from: @(#)trap.h 5.4 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/trap.h,v 1.14 2004/04/05 21:25:51 imp Exp $ + * $FreeBSD: src/sys/amd64/include/trap.h,v 1.15 2006/03/14 00:01:22 peter Exp $ */ #ifndef _MACHINE_TRAP_H_ @@ -72,16 +72,6 @@ #define ILL_ALIGN_FAULT T_ALIGNFLT #define ILL_FPOP_FAULT T_FPOPFLT /* coprocessor operand fault */ -/* portable macros for SIGFPE/ARITHTRAP */ -#define FPE_INTOVF 1 /* integer overflow */ -#define FPE_INTDIV 2 /* integer divide by zero */ -#define FPE_FLTDIV 3 /* floating point divide by zero */ -#define FPE_FLTOVF 4 /* floating point overflow */ -#define FPE_FLTUND 5 /* floating point underflow */ -#define FPE_FLTRES 6 /* floating point inexact result */ -#define FPE_FLTINV 7 /* invalid floating point operation */ -#define FPE_FLTSUB 8 /* subscript out of range */ - /* old FreeBSD macros, deprecated */ #define FPE_INTOVF_TRAP 0x1 /* integer overflow */ #define FPE_INTDIV_TRAP 0x2 /* integer divide by zero */ ==== //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#10 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.11 2006/02/06 22:06:53 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.12 2006/03/08 20:21:53 ups Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -130,7 +130,7 @@ copystr(fname, args->fname, PATH_MAX, &length) : copyinstr(fname, args->fname, PATH_MAX, &length); if (error != 0) - return (error); + goto err_exit; /* * extract arguments first @@ -139,16 +139,16 @@ for (;;) { error = copyin(p32++, &arg, sizeof(arg)); if (error) - return (error); + goto err_exit; if (arg == 0) break; argp = PTRIN(arg); error = copyinstr(argp, args->endp, args->stringspace, &length); if (error) { if (error == ENAMETOOLONG) - return (E2BIG); - else - return (error); + error = E2BIG; + + goto err_exit; } args->stringspace -= length; args->endp += length; @@ -165,7 +165,7 @@ for (;;) { error = copyin(p32++, &arg, sizeof(arg)); if (error) - return (error); + goto err_exit; if (arg == 0) break; envp = PTRIN(arg); @@ -173,9 +173,8 @@ &length); if (error) { if (error == ENAMETOOLONG) - return (E2BIG); - else - return (error); + error = E2BIG; + goto err_exit; } args->stringspace -= length; args->endp += length; @@ -184,6 +183,12 @@ } return (0); + +err_exit: + kmem_free_wakeup(exec_map, (vm_offset_t)args->buf, + PATH_MAX + ARG_MAX + MAXSHELLCMDLEN); + args->buf = NULL; + return (error); } int ==== //depot/projects/smpng/sys/amd64/pci/pci_bus.c#16 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.116 2006/01/06 19:22:18 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.117 2006/03/13 23:58:40 peter Exp $"); #include "opt_cpu.h" @@ -326,10 +326,10 @@ { 0, 0 } }; -static devclass_t pcib_devclass; +static devclass_t hostb_devclass; DEFINE_CLASS_0(pcib, legacy_pcib_driver, legacy_pcib_methods, 1); -DRIVER_MODULE(pcib, legacy, legacy_pcib_driver, pcib_devclass, 0, 0); +DRIVER_MODULE(pcib, legacy, legacy_pcib_driver, hostb_devclass, 0, 0); /* ==== //depot/projects/smpng/sys/arm/arm/in_cksum.c#6 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__FBSDID("$FreeBSD: src/sys/arm/arm/in_cksum.c,v 1.5 2005/10/03 14:06:44 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/in_cksum.c,v 1.6 2006/03/09 23:33:59 cognet Exp $"); #include <sys/param.h> #include <sys/mbuf.h> @@ -130,3 +130,12 @@ REDUCE16; return (~sum & 0xffff); } + +u_int in_cksum_hdr(const struct ip *ip) +{ + u_int64_t sum = do_cksum(ip, sizeof(struct ip)); + union q_util q_util; + union l_util l_util; + REDUCE16; + return (~sum & 0xffff); +} ==== //depot/projects/smpng/sys/arm/include/in_cksum.h#4 (text+ko) ==== @@ -33,7 +33,7 @@ * from tahoe: in_cksum.c 1.2 86/01/05 * from: @(#)in_cksum.c 1.3 (Berkeley) 1/19/91 * from: Id: in_cksum.c,v 1.8 1995/12/03 18:35:19 bde Exp - * $FreeBSD: src/sys/arm/include/in_cksum.h,v 1.3 2005/10/03 14:06:44 cognet Exp $ + * $FreeBSD: src/sys/arm/include/in_cksum.h,v 1.4 2006/03/09 23:33:59 cognet Exp $ */ #ifndef _MACHINE_IN_CKSUM_H_ @@ -46,80 +46,7 @@ u_short in_addword(u_short sum, u_short b); u_short in_cksum_skip(struct mbuf *m, int len, int skip); u_int do_cksum(const void *, int); -static __inline u_int -in_cksum_hdr(const struct ip *ip) -{ - u_int sum = 0; - u_int tmp1, tmp2, tmp3, tmp4; - - if (((vm_offset_t)ip & 0x03) == 0) - __asm __volatile ( - "adds %0, %0, %1\n" - "adcs %0, %0, %2\n" - "adcs %0, %0, %3\n" - "adcs %0, %0, %4\n" - "adcs %0, %0, %5\n" - "adc %0, %0, #0\n" - : "+r" (sum) - : "r" (((const u_int32_t *)ip)[0]), - "r" (((const u_int32_t *)ip)[1]), - "r" (((const u_int32_t *)ip)[2]), - "r" (((const u_int32_t *)ip)[3]), - "r" (((const u_int32_t *)ip)[4]) - ); - else - __asm __volatile ( - "and %1, %5, #3\n" - "cmp %1, #0x02\n" - "ldrb %2, [%5], #0x01\n" - "ldrgeb %3, [%5], #0x01\n" - "movlt %3, #0\n" - "ldrgtb %4, [%5], #0x01\n" - "movle %4, #0x00\n" -#ifdef __ARMEB__ - "orreq %0, %3, %2, lsl #8\n" - "orreq %0, %0, %4, lsl #24\n" - "orrne %0, %0, %3, lsl #8\n" - "orrne %0, %0, %4, lsl #16\n" -#else - "orreq %0, %2, %3, lsl #8\n" - "orreq %0, %0, %4, lsl #16\n" - "orrne %0, %3, %2, lsl #8\n" - "orrne %0, %0, %4, lsl #24\n" -#endif - "ldmia %5, {%2, %3, %4}\n" - "adcs %0, %0, %2\n" - "adcs %0, %0, %3\n" - "adcs %0, %0, %4\n" - "ldrb %2, [%5]\n" - "cmp %1, #0x02\n" - "ldrgeb %3, [%5, #0x01]\n" - "movlt %3, #0x00\n" - "ldrgtb %4, [%5, #0x02]\n" - "movle %4, #0x00\n" - "tst %5, #0x01\n" -#ifdef __ARMEB__ - "orreq %2, %3, %2, lsl #8\n" - "orreq %2, %2, %4, lsl #24\n" - "orrne %2, %2, %3, lsl #8\n" - "orrne %2, %2, %4, lsl #16\n" -#else - "orreq %2, %2, %3, lsl #8\n" - "orreq %2, %2, %4, lsl #16\n" - "orrne %2, %3, %2, lsl #8\n" - "orrne %2, %2, %4, lsl #24\n" -#endif - "adds %0, %0, %2\n" - "adc %0, %0, #0\n" - : "+r" (sum), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), - "=r" (tmp4) - : "r" (ip)); - - sum = (sum & 0xffff) + (sum >> 16); - if (sum > 0xffff) - sum -= 0xffff; - return (~sum & 0xffff); -} +u_int in_cksum_hdr(const struct ip *); static __inline u_short in_pseudo(u_int sum, u_int b, u_int c) ==== //depot/projects/smpng/sys/boot/i386/libi386/Makefile#15 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.39 2005/12/19 09:00:11 sobomax Exp $ +# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.41 2006/03/14 19:02:00 jkim Exp $ # LIB= i386 INTERNALLIB= @@ -21,6 +21,11 @@ CFLAGS+= -DDISK_DEBUG .endif +.if !defined(BOOT_HIDE_SERIAL_NUMBERS) +# Export serial numbers, UUID, and asset tag from loader. +CFLAGS+= -DSMBIOS_SERIAL_NUMBERS +.endif + # Include simple terminal emulation (cons25-compatible) CFLAGS+= -DTERM_EMU ==== //depot/projects/smpng/sys/boot/i386/libi386/libi386.h#11 (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/boot/i386/libi386/libi386.h,v 1.23 2005/12/21 02:17:58 sobomax Exp $ + * $FreeBSD: src/sys/boot/i386/libi386/libi386.h,v 1.24 2006/03/09 22:49:44 jkim Exp $ */ @@ -100,9 +100,9 @@ int biospci_write_config(uint32_t locator, int offset, int width, int val); int biospci_read_config(uint32_t locator, int offset, int width, uint32_t *val); -void biosacpi_detect(); +void biosacpi_detect(void); -void smbios_detect(); +void smbios_detect(void); void gateA20(void); ==== //depot/projects/smpng/sys/boot/i386/libi386/smbios.c#4 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2005 Jung-uk Kim <jkim@FreeBSD.org> + * Copyright (c) 2005, 2006 Jung-uk Kim <jkim@FreeBSD.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,12 +25,13 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/smbios.c,v 1.3 2005/10/18 20:03:31 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/smbios.c,v 1.6 2006/03/14 19:02:00 jkim Exp $"); #include <stand.h> #include <bootstrap.h> #include "btxv86.h" +#include "libi386.h" /* * Detect SMBIOS and export information about the SMBIOS into the @@ -54,21 +55,26 @@ #define SMBIOS_SIG "_SM_" #define SMBIOS_DMI_SIG "_DMI_" -static u_int8_t smbios_enabled_sockets = 0; -static u_int8_t smbios_populated_sockets = 0; +static uint8_t smbios_enabled_sockets = 0; +static uint8_t smbios_populated_sockets = 0; + +static uint8_t *smbios_parse_table(const uint8_t *dmi); +static void smbios_setenv(const char *name, const uint8_t *dmi, + const int offset); +static uint8_t smbios_checksum(const caddr_t addr, const uint8_t len); +static uint8_t *smbios_sigsearch(const caddr_t addr, const uint32_t len); -static u_int8_t *smbios_parse_table(const u_int8_t *dmi); -static void smbios_setenv(const char *env, const u_int8_t *dmi, +#ifdef SMBIOS_SERIAL_NUMBERS +static void smbios_setuuid(const char *name, const uint8_t *dmi, const int offset); -static u_int8_t smbios_checksum(const u_int8_t *addr, const u_int8_t len); -static u_int8_t *smbios_sigsearch(const caddr_t addr, const u_int32_t len); +#endif void smbios_detect(void) { - u_int8_t *smbios, *dmi, *addr; - u_int16_t i, length, count; - u_int32_t paddr; + uint8_t *smbios, *dmi, *addr; + uint16_t i, length, count; + uint32_t paddr; char buf[4]; /* locate and validate the SMBIOS */ @@ -76,9 +82,9 @@ if (smbios == NULL) return; - length = *(u_int16_t *)(smbios + 0x16); /* Structure Table Length */ - paddr = *(u_int32_t *)(smbios + 0x18); /* Structure Table Address */ - count = *(u_int16_t *)(smbios + 0x1c); /* No of SMBIOS Structures */ + length = *(uint16_t *)(smbios + 0x16); /* Structure Table Length */ + paddr = *(uint32_t *)(smbios + 0x18); /* Structure Table Address */ + count = *(uint16_t *)(smbios + 0x1c); /* No of SMBIOS Structures */ for (dmi = addr = PTOV(paddr), i = 0; dmi - addr < length && i < count; i++) @@ -89,10 +95,10 @@ setenv("smbios.socket.populated", buf, 1); } -static u_int8_t * -smbios_parse_table(const u_int8_t *dmi) +static uint8_t * +smbios_parse_table(const uint8_t *dmi) { - u_int8_t *dp; + uint8_t *dp; switch(dmi[0]) { case 0: /* Type 0: BIOS */ @@ -105,17 +111,28 @@ smbios_setenv("smbios.system.maker", dmi, 0x04); smbios_setenv("smbios.system.product", dmi, 0x05); smbios_setenv("smbios.system.version", dmi, 0x06); +#ifdef SMBIOS_SERIAL_NUMBERS + smbios_setenv("smbios.system.serial", dmi, 0x07); + smbios_setuuid("smbios.system.uuid", dmi, 0x08); +#endif break; case 2: /* Type 2: Base Board (or Module) */ smbios_setenv("smbios.planar.maker", dmi, 0x04); smbios_setenv("smbios.planar.product", dmi, 0x05); smbios_setenv("smbios.planar.version", dmi, 0x06); +#ifdef SMBIOS_SERIAL_NUMBERS + smbios_setenv("smbios.planar.serial", dmi, 0x07); +#endif break; case 3: /* Type 3: System Enclosure or Chassis */ smbios_setenv("smbios.chassis.maker", dmi, 0x04); smbios_setenv("smbios.chassis.version", dmi, 0x06); +#ifdef SMBIOS_SERIAL_NUMBERS + smbios_setenv("smbios.chassis.serial", dmi, 0x07); + smbios_setenv("smbios.chassis.tag", dmi, 0x08); +#endif break; case 4: /* Type 4: Processor Information */ @@ -147,7 +164,7 @@ } /* find structure terminator */ - dp = (u_int8_t *)(dmi + dmi[1]); + dp = __DECONST(uint8_t *, dmi + dmi[1]); while (dp[0] != 0 || dp[1] != 0) dp++; @@ -155,42 +172,43 @@ } static void -smbios_setenv(const char *str, const u_int8_t *dmi, const int offset) +smbios_setenv(const char *name, const uint8_t *dmi, const int offset) { - char *cp; + char *cp = __DECONST(char *, dmi + dmi[1]); int i; /* skip undefined string */ if (dmi[offset] == 0) return; - for (cp = (char *)(dmi + dmi[1]), i = 0; i < dmi[offset] - 1; i++) + for (i = 0; i < dmi[offset] - 1; i++) cp += strlen(cp) + 1; - setenv(str, cp, 1); + setenv(name, cp, 1); } -static u_int8_t -smbios_checksum(const u_int8_t *addr, const u_int8_t len) +static uint8_t +smbios_checksum(const caddr_t addr, const uint8_t len) { - u_int8_t sum; + const uint8_t *cp = addr; + uint8_t sum; int i; for (sum = 0, i = 0; i < len; i++) - sum += addr[i]; + sum += cp[i]; return(sum); } -static u_int8_t * -smbios_sigsearch(const caddr_t addr, const u_int32_t len) +static uint8_t * +smbios_sigsearch(const caddr_t addr, const uint32_t len) { caddr_t cp; /* search on 16-byte boundaries */ - for (cp = addr; cp - addr < len; cp += SMBIOS_STEP) { + for (cp = addr; cp < addr + len; cp += SMBIOS_STEP) { /* compare signature, validate checksum */ if (!strncmp(cp, SMBIOS_SIG, 4)) { - if (smbios_checksum(cp, *(cp + 0x05))) + if (smbios_checksum(cp, *(uint8_t *)(cp + 0x05))) continue; if (strncmp(cp + 0x10, SMBIOS_DMI_SIG, 5)) continue; @@ -203,3 +221,31 @@ return(NULL); } + +#ifdef SMBIOS_SERIAL_NUMBERS +static void +smbios_setuuid(const char *name, const uint8_t *dmi, const int offset) +{ + const uint8_t *idp = dmi + offset; + int i, f = 0, z = 0; + char uuid[37]; + + for (i = 0; i < 16; i++) { + if (idp[i] == 0xff) + f++; + else if (idp[i] == 0x00) + z++; + else + break; + } + if (f != 16 && z != 16) { + sprintf(uuid, "%02X%02X%02X%02X-" + "%02X%02X-%02X%02X-%02X%02X-" + "%02X%02X%02X%02X%02X%02X", + idp[0], idp[1], idp[2], idp[3], + idp[4], idp[5], idp[6], idp[7], idp[8], idp[9], + idp[10], idp[11], idp[12], idp[13], idp[14], idp[15]); + setenv(name, uuid, 1); + } +} +#endif ==== //depot/projects/smpng/sys/cam/scsi/scsi_da.c#65 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.186 2006/01/30 20:27:44 flz Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.187 2006/03/13 22:26:33 joerg Exp $"); #include <sys/param.h> @@ -421,6 +421,13 @@ }, { /* + * TOSHIBA TransMemory USB sticks + */ + {T_DIRECT, SIP_MEDIA_REMOVABLE, "TOSHIBA", "TransMemory", + "*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE + }, + { + /* * PNY USB Flash keys * PR: usb/75578, usb/72344, usb/65436 */ ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#34 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.52 2006/03/04 00:09:09 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.53 2006/03/08 20:21:53 ups Exp $"); #include "opt_compat.h" @@ -260,7 +260,7 @@ copystr(fname, args->fname, PATH_MAX, &length) : copyinstr(fname, args->fname, PATH_MAX, &length); if (error != 0) - return (error); + goto err_exit; /* * extract arguments first @@ -269,16 +269,15 @@ for (;;) { error = copyin(p32++, &arg, sizeof(arg)); if (error) - return (error); + goto err_exit; if (arg == 0) break; argp = PTRIN(arg); error = copyinstr(argp, args->endp, args->stringspace, &length); if (error) { if (error == ENAMETOOLONG) - return (E2BIG); - else - return (error); + error = E2BIG; + goto err_exit; } args->stringspace -= length; args->endp += length; @@ -295,7 +294,7 @@ for (;;) { error = copyin(p32++, &arg, sizeof(arg)); if (error) - return (error); + goto err_exit; if (arg == 0) break; envp = PTRIN(arg); @@ -303,9 +302,8 @@ &length); if (error) { if (error == ENAMETOOLONG) - return (E2BIG); - else - return (error); + error = E2BIG; + goto err_exit; } args->stringspace -= length; args->endp += length; @@ -314,6 +312,12 @@ } return (0); + +err_exit: + kmem_free_wakeup(exec_map, (vm_offset_t)args->buf, + PATH_MAX + ARG_MAX + MAXSHELLCMDLEN); + args->buf = NULL; + return (error); } int ==== //depot/projects/smpng/sys/conf/files#169 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1100 2006/03/05 22:52:16 yar Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1102 2006/03/13 06:38:22 ru Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -11,7 +11,7 @@ clean "acpi_quirks.h" aicasm optional ahc | ahd \ dependency "$S/dev/aic7xxx/aicasm/*.[chyl]" \ - compile-with "CC=${CC} ${MAKE} -f $S/dev/aic7xxx/aicasm/Makefile MAKESRCPATH=$S/dev/aic7xxx/aicasm" \ + compile-with "CC='${CC}' ${MAKE} -f $S/dev/aic7xxx/aicasm/Makefile MAKESRCPATH=$S/dev/aic7xxx/aicasm" \ no-obj no-implicit-rule \ clean "aicasm* y.tab.h" aic7xxx_seq.h optional ahc \ @@ -52,7 +52,7 @@ no-implicit-rule local emu10k1-alsa%diked.h optional snd_emu10k1 pci \ dependency "$S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h" \ >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603142122.k2ELMeWO089536>