From owner-p4-projects@FreeBSD.ORG Wed Jul 28 08:21:47 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EF87B106632C; Wed, 28 Jul 2010 08:21:38 +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 E26E21065742 for ; Wed, 28 Jul 2010 08:21:37 +0000 (UTC) (envelope-from bfiedler@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D48458FC14 for ; Wed, 28 Jul 2010 08:21:36 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id o6S8LavF009172 for ; Wed, 28 Jul 2010 08:21:36 GMT (envelope-from bfiedler@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id o6S8LaJX009170 for perforce@freebsd.org; Wed, 28 Jul 2010 08:21:36 GMT (envelope-from bfiedler@FreeBSD.org) Date: Wed, 28 Jul 2010 08:21:36 GMT Message-Id: <201007280821.o6S8LaJX009170@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bfiedler@FreeBSD.org using -f From: Benjamin Fiedler To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 181472 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 08:21:47 -0000 http://p4web.freebsd.org/@@181472?ac=10 Change 181472 by bfiedler@freebsd-home on 2010/07/27 01:54:13 IFC Affected files ... .. //depot/projects/soc2010/bsdtextproc/src/bin/ps/keyword.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/bin/ps/ps.1#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/cddl/contrib/opensolaris/tools/ctf/cvt/output.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_machdep.c#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_proto.h#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_syscall.h#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_sysent.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/syscalls.master#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/arm/s3c2xx0/s3c24x0.c#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/arm/s3c2xx0/s3c24x0reg.h#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/boot/pc98/loader/Makefile#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/compat/freebsd32/freebsd32_misc.c#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/compat/freebsd32/freebsd32_util.h#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/conf/files#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/dev/e1000/if_igb.c#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/dev/ichwd/ichwd.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_cllock.c#2 delete .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clnfsiod.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clport.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clsubs.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clvnops.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_lock.h#2 delete .. //depot/projects/soc2010/bsdtextproc/src/sys/mips/include/vmparam.h#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/modules/Makefile#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/modules/nfscl/Makefile#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/modules/nfsclient/Makefile#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/modules/nfslock/Makefile#1 branch .. //depot/projects/soc2010/bsdtextproc/src/sys/nfs/nfs_lock.c#1 branch .. //depot/projects/soc2010/bsdtextproc/src/sys/nfs/nfs_lock.h#1 branch .. //depot/projects/soc2010/bsdtextproc/src/sys/nfsclient/nfs_lock.c#2 delete .. //depot/projects/soc2010/bsdtextproc/src/sys/nfsclient/nfs_lock.h#2 delete .. //depot/projects/soc2010/bsdtextproc/src/sys/nfsclient/nfs_nfsiod.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/nfsclient/nfs_vfsops.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/nfsclient/nfs_vnops.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/sys/imgact.h#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/sys/imgact_elf.h#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/sys/ktr.h#3 integrate .. //depot/projects/soc2010/bsdtextproc/src/sys/x86/x86/local_apic.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_diskstorage_tbl.c#2 integrate .. //depot/projects/soc2010/bsdtextproc/src/usr.sbin/rpc.lockd/kern.c#2 integrate Differences ... ==== //depot/projects/soc2010/bsdtextproc/src/bin/ps/keyword.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/keyword.c,v 1.82 2010/03/17 22:57:58 jmallett Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/keyword.c,v 1.83 2010/07/24 15:37:36 trasz Exp $"); #include #include @@ -90,7 +90,7 @@ NULL, 0}, {"etime", "ELAPSED", NULL, USER, elapsed, NULL, 12, 0, CHAR, NULL, 0}, {"etimes", "ELAPSED", NULL, USER, elapseds, NULL, 12, 0, CHAR, NULL, 0}, - {"f", "F", NULL, 0, kvar, NULL, 7, KOFF(ki_flag), INT, "x", 0}, + {"f", "F", NULL, 0, kvar, NULL, 8, KOFF(ki_flag), INT, "x", 0}, {"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG, @@ -187,7 +187,7 @@ UINT, UIDFMT, 0}, {"svuid", "SVUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svuid), UINT, UIDFMT, 0}, - {"tdev", "TDEV", NULL, 0, tdev, NULL, 4, 0, CHAR, NULL, 0}, + {"tdev", "TDEV", NULL, 0, tdev, NULL, 5, 0, CHAR, NULL, 0}, {"tdnam", "TDNAM", NULL, LJUST, tdnam, NULL, COMMLEN, 0, CHAR, NULL, 0}, {"time", "TIME", NULL, USER, cputime, NULL, 9, 0, CHAR, NULL, 0}, {"tpgid", "TPGID", NULL, 0, kvar, NULL, 4, KOFF(ki_tpgid), UINT, ==== //depot/projects/soc2010/bsdtextproc/src/bin/ps/ps.1#2 (text+ko) ==== @@ -27,9 +27,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 -.\" $FreeBSD: src/bin/ps/ps.1,v 1.95 2010/04/13 08:54:53 kib Exp $ +.\" $FreeBSD: src/bin/ps/ps.1,v 1.96 2010/07/24 15:24:12 trasz Exp $ .\" -.Dd April 13, 2010 +.Dd July 24, 2010 .Dt PS 1 .Os .Sh NAME @@ -291,6 +291,7 @@ .It Dv "P_PPWAIT" Ta No "0x00010 Parent is waiting for child to exec/exit" .It Dv "P_PROFIL" Ta No "0x00020 Has started profiling" .It Dv "P_STOPPROF" Ta No "0x00040 Has thread in requesting to stop prof" +.It Dv "P_HASTHREADS" Ta No "0x00080 Has had threads (no cleanup shortcuts)" .It Dv "P_SUGID" Ta No "0x00100 Had set id privileges since last exec" .It Dv "P_SYSTEM" Ta No "0x00200 System proc: no sigs, stats or swapping" .It Dv "P_SINGLE_EXIT" Ta No "0x00400 Threads suspending should exit, not wait" ==== //depot/projects/soc2010/bsdtextproc/src/cddl/contrib/opensolaris/tools/ctf/cvt/output.c#2 (text+ko) ==== @@ -644,7 +644,7 @@ } #if !defined(sun) - if (ddata->d_buf == NULL) { + if (ddata->d_buf == NULL && sdata->d_buf != NULL) { ddata->d_buf = xmalloc(shdr.sh_size); bcopy(sdata->d_buf, ddata->d_buf, shdr.sh_size); } ==== //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_machdep.c#3 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.56 2010/07/23 18:58:27 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.57 2010/07/23 21:30:33 kib Exp $"); #include #include @@ -64,6 +64,7 @@ #include #include +#include #include #include #include @@ -107,103 +108,6 @@ return (lsa); } -/* - * Custom version of exec_copyin_args() so that we can translate - * the pointers. - */ -static int -linux_exec_copyin_args(struct image_args *args, char *fname, - enum uio_seg segflg, char **argv, char **envv) -{ - char *argp, *envp; - u_int32_t *p32, arg; - size_t length; - int error; - - bzero(args, sizeof(*args)); - if (argv == NULL) - return (EFAULT); - - /* - * Allocate temporary demand zeroed space for argument and - * environment strings - */ - args->buf = (char *)kmem_alloc_wait(exec_map, - PATH_MAX + ARG_MAX + MAXSHELLCMDLEN); - if (args->buf == NULL) - return (ENOMEM); - args->begin_argv = args->buf; - args->endp = args->begin_argv; - args->stringspace = ARG_MAX; - - args->fname = args->buf + ARG_MAX; - - /* - * Copy the file name. - */ - error = (segflg == UIO_SYSSPACE) ? - copystr(fname, args->fname, PATH_MAX, &length) : - copyinstr(fname, args->fname, PATH_MAX, &length); - if (error != 0) - goto err_exit; - - /* - * extract arguments first - */ - p32 = (u_int32_t *)argv; - for (;;) { - error = copyin(p32++, &arg, sizeof(arg)); - if (error) - goto err_exit; - if (arg == 0) - break; - argp = PTRIN(arg); - error = copyinstr(argp, args->endp, args->stringspace, &length); - if (error) { - if (error == ENAMETOOLONG) - error = E2BIG; - - goto err_exit; - } - args->stringspace -= length; - args->endp += length; - args->argc++; - } - - args->begin_envv = args->endp; - - /* - * extract environment strings - */ - if (envv) { - p32 = (u_int32_t *)envv; - for (;;) { - error = copyin(p32++, &arg, sizeof(arg)); - if (error) - goto err_exit; - if (arg == 0) - break; - envp = PTRIN(arg); - error = copyinstr(envp, args->endp, args->stringspace, - &length); - if (error) { - if (error == ENAMETOOLONG) - error = E2BIG; - goto err_exit; - } - args->stringspace -= length; - args->endp += length; - args->envc++; - } - } - - return (0); - -err_exit: - exec_free_args(args); - return (error); -} - int linux_execve(struct thread *td, struct linux_execve_args *args) { @@ -218,8 +122,8 @@ printf(ARGS(execve, "%s"), path); #endif - error = linux_exec_copyin_args(&eargs, path, UIO_SYSSPACE, args->argp, - args->envp); + error = freebsd32_exec_copyin_args(&eargs, path, UIO_SYSSPACE, + args->argp, args->envp); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); ==== //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_proto.h#2 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.40 2009/09/10 13:20:27 des Exp $ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 185438 2008-11-29 14:55:24Z kib + * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.41 2010/07/23 21:31:03 kib Exp $ + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 210431 2010-07-23 21:30:33Z kib */ #ifndef _LINUX_SYSPROTO_H_ @@ -59,8 +59,8 @@ }; struct linux_execve_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; - char argp_l_[PADL_(char **)]; char ** argp; char argp_r_[PADR_(char **)]; - char envp_l_[PADL_(char **)]; char ** envp; char envp_r_[PADR_(char **)]; + char argp_l_[PADL_(u_int32_t *)]; u_int32_t * argp; char argp_r_[PADR_(u_int32_t *)]; + char envp_l_[PADL_(u_int32_t *)]; u_int32_t * envp; char envp_r_[PADR_(u_int32_t *)]; }; struct linux_chdir_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; ==== //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_syscall.h#2 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.39 2008/11/29 14:57:58 kib Exp $ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 185438 2008-11-29 14:55:24Z kib + * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.40 2010/07/23 21:31:03 kib Exp $ + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 210431 2010-07-23 21:30:33Z kib */ #define LINUX_SYS_exit 1 ==== //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/linux32_sysent.c#2 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.41 2010/06/28 18:17:21 kib Exp $ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 185438 2008-11-29 14:55:24Z kib + * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.42 2010/07/23 21:31:03 kib Exp $ + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 210431 2010-07-23 21:30:33Z kib */ #include "opt_compat.h" ==== //depot/projects/soc2010/bsdtextproc/src/sys/amd64/linux32/syscalls.master#2 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.36 2008/11/29 14:55:24 kib Exp $ + $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.37 2010/07/23 21:30:33 kib Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; System call name/number master file (or rather, slave, from LINUX). @@ -54,8 +54,8 @@ l_int mode); } 9 AUE_LINK STD { int linux_link(char *path, char *to); } 10 AUE_UNLINK STD { int linux_unlink(char *path); } -11 AUE_EXECVE STD { int linux_execve(char *path, char **argp, \ - char **envp); } +11 AUE_EXECVE STD { int linux_execve(char *path, u_int32_t *argp, \ + u_int32_t *envp); } 12 AUE_CHDIR STD { int linux_chdir(char *path); } 13 AUE_NULL STD { int linux_time(l_time_t *tm); } 14 AUE_MKNOD STD { int linux_mknod(char *path, l_int mode, \ ==== //depot/projects/soc2010/bsdtextproc/src/sys/arm/s3c2xx0/s3c24x0.c#3 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/s3c2xx0/s3c24x0.c,v 1.3 2010/07/22 23:23:39 andrew Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/s3c2xx0/s3c24x0.c,v 1.4 2010/07/24 23:41:09 andrew Exp $"); #include #include @@ -118,6 +118,8 @@ driver_filter_t *, driver_intr_t *, void *, void **); static int s3c24x0_teardown_intr(device_t, device_t, struct resource *, void *); +static int s3c24x0_config_intr(device_t, int, enum intr_trigger, + enum intr_polarity); static struct resource *s3c24x0_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); static int s3c24x0_activate_resource(device_t, device_t, int, int, @@ -134,6 +136,7 @@ DEVMETHOD(device_identify, s3c24x0_identify), DEVMETHOD(bus_setup_intr, s3c24x0_setup_intr), DEVMETHOD(bus_teardown_intr, s3c24x0_teardown_intr), + DEVMETHOD(bus_config_intr, s3c24x0_config_intr), DEVMETHOD(bus_alloc_resource, s3c24x0_alloc_resource), DEVMETHOD(bus_activate_resource, s3c24x0_activate_resource), DEVMETHOD(bus_release_resource, s3c24x0_release_resource), @@ -176,6 +179,30 @@ return (child); } +static void +s3c24x0_enable_ext_intr(unsigned int irq) +{ + uint32_t reg, value; + int offset; + + if (irq <= 7) { + reg = GPIO_PFCON; + offset = irq * 2; + } else if (irq <= 23) { + reg = GPIO_PGCON; + offset = (irq - 8) * 2; + } else + return; + + /* Make the pin an interrupt source */ + value = bus_space_read_4(s3c2xx0_softc->sc_iot, + s3c2xx0_softc->sc_gpio_ioh, reg); + value &= ~(3 << offset); + value |= 2 << offset; + bus_space_write_4(s3c2xx0_softc->sc_iot, s3c2xx0_softc->sc_gpio_ioh, + reg, value); +} + static int s3c24x0_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, driver_filter_t *filt, @@ -189,6 +216,10 @@ return (error); for (irq = rman_get_start(ires); irq <= rman_get_end(ires); irq++) { + if (irq >= S3C24X0_EXTIRQ_MIN && irq <= S3C24X0_EXTIRQ_MAX) { + /* Enable the external interrupt pin */ + s3c24x0_enable_ext_intr(irq - S3C24X0_EXTIRQ_MIN); + } arm_unmask_irq(irq); } return (0); @@ -201,6 +232,59 @@ return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, res, cookie)); } +static int +s3c24x0_config_intr(device_t dev, int irq, enum intr_trigger trig, + enum intr_polarity pol) +{ + uint32_t mask, reg, value; + int offset; + + /* Only external interrupts can be configured */ + if (irq < S3C24X0_EXTIRQ_MIN || irq > S3C24X0_EXTIRQ_MAX) + return (EINVAL); + + /* There is no standard trigger or polarity for the bus */ + if (trig == INTR_TRIGGER_CONFORM || pol == INTR_POLARITY_CONFORM) + return (EINVAL); + + irq -= S3C24X0_EXTIRQ_MIN; + + /* Get the bits to set */ + mask = 0; + if (pol == INTR_POLARITY_LOW) { + mask = 2; + } else if (pol == INTR_POLARITY_HIGH) { + mask = 4; + } + if (trig == INTR_TRIGGER_LEVEL) { + mask >>= 2; + } + + /* Get the register to set */ + if (irq <= 7) { + reg = GPIO_EXTINT(0); + offset = irq * 4; + } else if (irq <= 15) { + reg = GPIO_EXTINT(1); + offset = (irq - 8) * 4; + } else if (irq <= 23) { + reg = GPIO_EXTINT(2); + offset = (irq - 16) * 4; + } else { + return (EINVAL); + } + + /* Set the new signaling method */ + value = bus_space_read_4(s3c2xx0_softc->sc_iot, + s3c2xx0_softc->sc_gpio_ioh, reg); + value &= ~(7 << offset); + value |= mask << offset; + bus_space_write_4(s3c2xx0_softc->sc_iot, + s3c2xx0_softc->sc_gpio_ioh, reg, value); + + return (0); +} + static struct resource * s3c24x0_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) @@ -356,6 +440,7 @@ bus_space_tag_t iot; device_t child; unsigned int i, j; + u_long irqmax; s3c2xx0_softc = &(sc->sc_sx); sc->sc_sx.sc_iot = iot = &s3c2xx0_bs_tag; @@ -363,10 +448,6 @@ s3c2xx0_softc->s3c2xx0_irq_rman.rm_descr = "S3C24X0 IRQs"; s3c2xx0_softc->s3c2xx0_mem_rman.rm_type = RMAN_ARRAY; s3c2xx0_softc->s3c2xx0_mem_rman.rm_descr = "S3C24X0 Device Registers"; - if (rman_init(&s3c2xx0_softc->s3c2xx0_irq_rman) != 0 || - rman_manage_region(&s3c2xx0_softc->s3c2xx0_irq_rman, 0, - S3C2410_SUBIRQ_MAX) != 0) /* XXX Change S3C2440_SUBIRQ_MAX depending on micro */ - panic("s3c24x0_attach: failed to set up IRQ rman"); /* Manage the registor memory space */ if ((rman_init(&s3c2xx0_softc->s3c2xx0_mem_rman) != 0) || (rman_manage_region(&s3c2xx0_softc->s3c2xx0_mem_rman, @@ -388,6 +469,22 @@ */ s3c24x0_identify_cpu(dev); + /* + * Manage the interrupt space. + * We need to put this after s3c24x0_identify_cpu as the avaliable + * interrupts change depending on which CPU we have. + */ + if (sc->sc_sx.sc_cpu == CPU_S3C2410) + irqmax = S3C2410_SUBIRQ_MAX; + else + irqmax = S3C2440_SUBIRQ_MAX; + if (rman_init(&s3c2xx0_softc->s3c2xx0_irq_rman) != 0 || + rman_manage_region(&s3c2xx0_softc->s3c2xx0_irq_rman, 0, + irqmax) != 0 || + rman_manage_region(&s3c2xx0_softc->s3c2xx0_irq_rman, + S3C24X0_EXTIRQ_MIN, S3C24X0_EXTIRQ_MAX)) + panic("s3c24x0_attach: failed to set up IRQ rman"); + /* calculate current clock frequency */ s3c24x0_clock_freq(&sc->sc_sx); device_printf(dev, "fclk %d MHz hclk %d MHz pclk %d MHz\n", @@ -607,6 +704,33 @@ return (irq); return (S3C24X0_SUBIRQ_MIN + subirq); + + case S3C24X0_INT_0: + case S3C24X0_INT_1: + case S3C24X0_INT_2: + case S3C24X0_INT_3: + /* There is a 1:1 mapping to the IRQ we are handling */ + return S3C24X0_INT_EXT(irq); + + case S3C24X0_INT_4_7: + case S3C24X0_INT_8_23: + /* Find the external interrupt being called */ + subirq = 0x7fffff; + subirq &= bus_space_read_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_gpio_ioh, GPIO_EINTPEND); + subirq &= ~bus_space_read_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_gpio_ioh, GPIO_EINTMASK); + if (subirq == 0) + return (irq); + + subirq = ffs(subirq) - 1; + + /* Clear the external irq pending bit */ + bus_space_write_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_gpio_ioh, GPIO_EINTPEND, + (1 << subirq)); + + return S3C24X0_INT_EXT(subirq); } return (irq); @@ -619,18 +743,28 @@ { u_int32_t mask; + if (irq >= S3C24X0_INT_EXT(0) && irq <= S3C24X0_INT_EXT(3)) { + /* External interrupt 0..3 are directly mapped to irq 0..3 */ + irq -= S3C24X0_EXTIRQ_MIN; + } if (irq < S3C24X0_SUBIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTMSK); mask |= (1 << irq); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTMSK, mask); - } else { + } else if (irq < S3C24X0_EXTIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK); mask |= (1 << (irq - S3C24X0_SUBIRQ_MIN)); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK, mask); + } else { + mask = bus_space_read_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_gpio_ioh, GPIO_EINTMASK); + mask |= (1 << (irq - S3C24X0_EXTIRQ_MIN)); + bus_space_write_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_intctl_ioh, GPIO_EINTMASK, mask); } } @@ -639,17 +773,27 @@ { u_int32_t mask; + if (irq >= S3C24X0_INT_EXT(0) && irq <= S3C24X0_INT_EXT(3)) { + /* External interrupt 0..3 are directly mapped to irq 0..3 */ + irq -= S3C24X0_EXTIRQ_MIN; + } if (irq < S3C24X0_SUBIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTMSK); mask &= ~(1 << irq); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTMSK, mask); - } else { + } else if (irq < S3C24X0_EXTIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK); mask &= ~(1 << (irq - S3C24X0_SUBIRQ_MIN)); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK, mask); + } else { + mask = bus_space_read_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_gpio_ioh, GPIO_EINTMASK); + mask &= ~(1 << (irq - S3C24X0_EXTIRQ_MIN)); + bus_space_write_4(&s3c2xx0_bs_tag, + s3c2xx0_softc->sc_intctl_ioh, GPIO_EINTMASK, mask); } } ==== //depot/projects/soc2010/bsdtextproc/src/sys/arm/s3c2xx0/s3c24x0reg.h#3 (text+ko) ==== @@ -28,7 +28,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/s3c2xx0/s3c24x0reg.h,v 1.3 2010/07/22 23:23:39 andrew Exp $ + * $FreeBSD: src/sys/arm/s3c2xx0/s3c24x0reg.h,v 1.4 2010/07/24 23:41:09 andrew Exp $ */ @@ -207,7 +207,10 @@ #define S3C24X0_INT_BFLT 7 /* Battery fault */ #define S3C24X0_INT_8_23 5 /* Ext int 8..23 */ #define S3C24X0_INT_4_7 4 /* Ext int 4..7 */ -#define S3C24X0_INT_EXT(n) (n) /* External interrupt [3:0] for 24{1,4}0 */ +#define S3C24X0_INT_3 3 +#define S3C24X0_INT_2 2 +#define S3C24X0_INT_1 1 +#define S3C24X0_INT_0 0 /* 24{1,4}0 has more than 32 interrupt sources. These are sub-sources * that are OR-ed into main interrupt sources, and controlled via @@ -230,6 +233,15 @@ #define S3C24X0_INT_TXD0 (S3C24X0_SUBIRQ_MIN+1) /* UART0 Tx */ #define S3C24X0_INT_RXD0 (S3C24X0_SUBIRQ_MIN+0) /* UART0 Rx */ +/* + * Support for external interrupts. We use values from 48 + * to allow new CPU's to allocate new subirq's. + */ +#define S3C24X0_EXTIRQ_MIN 48 +#define S3C24X0_EXTIRQ_COUNT 24 +#define S3C24X0_EXTIRQ_MAX (S3C24X0_EXTIRQ_MIN + S3C24X0_EXTIRQ_COUNT - 1) +#define S3C24X0_INT_EXT(n) (S3C24X0_EXTIRQ_MIN + (n)) + /* DMA controller */ /* XXX */ ==== //depot/projects/soc2010/bsdtextproc/src/sys/boot/pc98/loader/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/pc98/loader/Makefile,v 1.44 2009/03/19 13:53:42 nyan Exp $ +# $FreeBSD: src/sys/boot/pc98/loader/Makefile,v 1.45 2010/07/25 02:22:32 nyan Exp $ .include MK_SSP= no @@ -94,6 +94,6 @@ OBJS= ${BTXCRT} DPADD= ${LIBFICL} ${LIBPC98} ${LIBSTAND} -LDADD= ${LIBFICL} ${LIBPC98} -lstand +LDADD= ${LIBFICL} ${LIBPC98} ${LIBSTAND} .include ==== //depot/projects/soc2010/bsdtextproc/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c#2 (text+ko) ==== @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -66,8 +66,6 @@ * The ZAP OBJ is referred to as the jump object. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #include #include @@ -540,7 +538,7 @@ dsl_pool_t *dp; void *cookie; int error; - char checkflag = ZFS_DELEG_LOCAL; + char checkflag; objset_t *mos; avl_tree_t permsets; perm_set_t *setnode; @@ -563,6 +561,16 @@ return (EPERM); } + if (dsl_dataset_is_snapshot(ds)) { + /* + * Snapshots are treated as descendents only, + * local permissions do not apply. + */ + checkflag = ZFS_DELEG_DESCENDENT; + } else { + checkflag = ZFS_DELEG_LOCAL; + } + avl_create(&permsets, perm_set_compare, sizeof (perm_set_t), offsetof(perm_set_t, p_node)); ==== //depot/projects/soc2010/bsdtextproc/src/sys/compat/freebsd32/freebsd32_misc.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.107 2010/07/23 18:58:27 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.108 2010/07/23 21:30:33 kib Exp $"); #include "opt_compat.h" #include "opt_inet.h" @@ -265,7 +265,7 @@ * Custom version of exec_copyin_args() so that we can translate * the pointers. */ -static int +int freebsd32_exec_copyin_args(struct image_args *args, char *fname, enum uio_seg segflg, u_int32_t *argv, u_int32_t *envv) { ==== //depot/projects/soc2010/bsdtextproc/src/sys/compat/freebsd32/freebsd32_util.h#2 (text+ko) ==== @@ -25,7 +25,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/compat/freebsd32/freebsd32_util.h,v 1.17 2010/04/21 19:28:01 kib Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_util.h,v 1.18 2010/07/23 21:30:33 kib Exp $ */ #ifndef _COMPAT_FREEBSD32_FREEBSD32_UTIL_H_ @@ -101,5 +101,9 @@ struct iovec **iov, int error); void freebsd32_rusage_out(const struct rusage *s, struct rusage32 *s32); +enum uio_seg; +struct image_args; +int freebsd32_exec_copyin_args(struct image_args *args, char *fname, + enum uio_seg segflg, u_int32_t *argv, u_int32_t *envv); #endif /* !_COMPAT_FREEBSD32_FREEBSD32_UTIL_H_ */ ==== //depot/projects/soc2010/bsdtextproc/src/sys/conf/files#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1524 2010/07/15 11:26:07 bschmidt Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1525 2010/07/24 22:11:11 rmacklem Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1914,7 +1914,6 @@ fs/nfsclient/nfs_clvnops.c optional nfscl fs/nfsclient/nfs_clnode.c optional nfscl fs/nfsclient/nfs_clvfsops.c optional nfscl -fs/nfsclient/nfs_cllock.c optional nfscl fs/nfsclient/nfs_clport.c optional nfscl fs/nfsclient/nfs_clbio.c optional nfscl fs/nfsclient/nfs_clnfsiod.c optional nfscl @@ -2680,6 +2679,7 @@ netsmb/smb_trantcp.c optional netsmb netsmb/smb_usr.c optional netsmb nfs/nfs_common.c optional nfsclient | nfsserver +nfs/nfs_lock.c optional nfsclient | nfscl nfsclient/bootp_subr.c optional bootp nfsclient nfsclient/krpc_subr.c optional bootp nfsclient nfsclient/nfs_bio.c optional nfsclient @@ -2690,7 +2690,6 @@ nfsclient/nfs_nfsiod.c optional nfsclient nfsclient/nfs_vfsops.c optional nfsclient nfsclient/nfs_vnops.c optional nfsclient -nfsclient/nfs_lock.c optional nfsclient nfsserver/nfs_fha.c optional nfsserver nfsserver/nfs_serv.c optional nfsserver nfsserver/nfs_srvkrpc.c optional nfsserver ==== //depot/projects/soc2010/bsdtextproc/src/sys/dev/e1000/if_igb.c#3 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/e1000/if_igb.c,v 1.52 2010/07/23 17:53:39 gnn Exp $*/ +/*$FreeBSD: src/sys/dev/e1000/if_igb.c,v 1.53 2010/07/24 18:53:46 gnn Exp $*/ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -4930,7 +4930,8 @@ /** igb_sysctl_tdh_handler - Handler function * Retrieves the TDH value from the hardware */ -static int igb_sysctl_tdh_handler(SYSCTL_HANDLER_ARGS) +static int +igb_sysctl_tdh_handler(SYSCTL_HANDLER_ARGS) { int error; @@ -4947,7 +4948,8 @@ /** igb_sysctl_tdt_handler - Handler function * Retrieves the TDT value from the hardware */ -static int igb_sysctl_tdt_handler(SYSCTL_HANDLER_ARGS) +static int +igb_sysctl_tdt_handler(SYSCTL_HANDLER_ARGS) { int error; @@ -4964,7 +4966,8 @@ /** igb_sysctl_rdh_handler - Handler function * Retrieves the RDH value from the hardware */ -static int igb_sysctl_rdh_handler(SYSCTL_HANDLER_ARGS) +static int +igb_sysctl_rdh_handler(SYSCTL_HANDLER_ARGS) { int error; @@ -4981,7 +4984,8 @@ /** igb_sysctl_rdt_handler - Handler function * Retrieves the RDT value from the hardware */ -static int igb_sysctl_rdt_handler(SYSCTL_HANDLER_ARGS) +static int +igb_sysctl_rdt_handler(SYSCTL_HANDLER_ARGS) { int error; ==== //depot/projects/soc2010/bsdtextproc/src/sys/dev/ichwd/ichwd.c#2 (text+ko) ==== @@ -56,7 +56,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.21 2010/01/24 10:50:20 remko Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.22 2010/07/24 19:40:16 avg Exp $"); #include #include @@ -256,8 +256,8 @@ uint8_t tmr_val8 = ichwd_read_tco_1(sc, TCO_TMR1); tmr_val8 &= 0xc0; - if (timeout > 0xbf) - timeout = 0xbf; + if (timeout > 0x3f) + timeout = 0x3f; tmr_val8 |= timeout; ichwd_write_tco_1(sc, TCO_TMR1, tmr_val8); } else { ==== //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clnfsiod.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clnfsiod.c,v 1.3 2010/04/22 23:51:01 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clnfsiod.c,v 1.4 2010/07/24 22:11:11 rmacklem Exp $"); #include #include @@ -67,7 +67,6 @@ #include #include #include -#include extern struct mtx ncl_iod_mutex; ==== //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clport.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clport.c,v 1.11 2010/07/15 19:40:48 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clport.c,v 1.12 2010/07/24 22:11:11 rmacklem Exp $"); /* * generally, I don't like #includes inside .h files, but it seems to @@ -1268,4 +1268,5 @@ MODULE_DEPEND(nfscl, nfscommon, 1, 1, 1); MODULE_DEPEND(nfscl, krpc, 1, 1, 1); MODULE_DEPEND(nfscl, nfssvc, 1, 1, 1); +MODULE_DEPEND(nfscl, nfslock, 1, 1, 1); ==== //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clsubs.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clsubs.c,v 1.8 2010/07/18 00:24:01 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clsubs.c,v 1.9 2010/07/24 22:11:11 rmacklem Exp $"); /* * These functions support the macros and help fiddle mbuf chains for @@ -67,7 +67,6 @@ #include #include #include -#include #include ==== //depot/projects/soc2010/bsdtextproc/src/sys/fs/nfsclient/nfs_clvnops.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clvnops.c,v 1.23 2010/07/18 22:35:46 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clvnops.c,v 1.24 2010/07/24 22:11:11 rmacklem Exp $"); /* * vnode op calls for Sun NFS version 2, 3 and 4 @@ -67,24 +67,24 @@ #include #include - #include #include #include #include -#include #include #include #include +#include + /* Defs */ #define TRUE 1 #define FALSE 0 extern struct nfsstats newnfsstats; MALLOC_DECLARE(M_NEWNFSREQ); -vop_advlock_t *ncl_advlock_p = ncl_dolock; +vop_advlock_t *ncl_advlock_p = nfs_dolock; /* * Ifdef for FreeBSD-current merged buffer cache. It is unfortunate that these ==== //depot/projects/soc2010/bsdtextproc/src/sys/mips/include/vmparam.h#3 (text+ko) ==== @@ -37,7 +37,7 @@ * from: Utah Hdr: vmparam.h 1.16 91/01/18 * @(#)vmparam.h 8.2 (Berkeley) 4/22/94 * JNPR: vmparam.h,v 1.3.2.1 2007/09/10 06:01:28 girish - * $FreeBSD: src/sys/mips/include/vmparam.h,v 1.6 2010/07/21 09:27:00 jchandra Exp $ + * $FreeBSD: src/sys/mips/include/vmparam.h,v 1.7 2010/07/25 04:19:05 imp Exp $ */ #ifndef _MACHINE_VMPARAM_H_ @@ -184,6 +184,7 @@ #ifdef __mips_n64 #define VM_NFREELIST 1 #define VM_FREELIST_DEFAULT 0 +#define VM_FREELIST_DIRECT VM_FREELIST_DEFAULT #else #define VM_NFREELIST 2 #define VM_FREELIST_DEFAULT 1 ==== //depot/projects/soc2010/bsdtextproc/src/sys/modules/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/modules/Makefile,v 1.657 2010/07/23 11:00:46 kib Exp $ +# $FreeBSD: src/sys/modules/Makefile,v 1.658 2010/07/24 22:11:11 rmacklem Exp $ .include @@ -205,6 +205,7 @@ nfsclient \ nfscommon \ nfsd \ + nfslock \ nfslockd \ nfsserver \ nfssvc \ ==== //depot/projects/soc2010/bsdtextproc/src/sys/modules/nfscl/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/modules/nfscl/Makefile,v 1.1 2009/05/28 19:45:11 rmacklem Exp $ +# $FreeBSD: src/sys/modules/nfscl/Makefile,v 1.2 2010/07/24 22:11:11 rmacklem Exp $ .PATH: ${.CURDIR}/../../fs/nfsclient KMOD= nfscl @@ -9,7 +9,6 @@ nfs_clcomsubs.c \ nfs_clport.c \ nfs_clbio.c \ - nfs_cllock.c \ nfs_clnfsiod.c \ nfs_clnode.c \ nfs_clsubs.c \ ==== //depot/projects/soc2010/bsdtextproc/src/sys/modules/nfsclient/Makefile#2 (text+ko) ==== @@ -1,10 +1,10 @@ -# $FreeBSD: src/sys/modules/nfsclient/Makefile,v 1.42 2010/02/16 20:00:21 marius Exp $ >>> TRUNCATED FOR MAIL (1000 lines) <<<