From rodrigc at FreeBSD.org Mon Jun 1 00:40:40 2009 From: rodrigc at FreeBSD.org (Craig Rodrigues) Date: Mon Jun 1 00:40:46 2009 Subject: svn commit: r193191 - head/sbin/mount_nfs Message-ID: <200906010040.n510edH2059058@svn.freebsd.org> Author: rodrigc Date: Mon Jun 1 00:40:39 2009 New Revision: 193191 URL: http://svn.freebsd.org/changeset/base/193191 Log: Code for parsing nmount options in kernel was merged to stable/7 branch in r190315. So only resort to fallback_mount() could which passes struct nfs_args to kernel in kernel versions less than 702100. Modified: head/sbin/mount_nfs/mount_nfs.c Modified: head/sbin/mount_nfs/mount_nfs.c ============================================================================== --- head/sbin/mount_nfs/mount_nfs.c Sun May 31 22:33:53 2009 (r193190) +++ head/sbin/mount_nfs/mount_nfs.c Mon Jun 1 00:40:39 2009 (r193191) @@ -430,7 +430,7 @@ main(int argc, char *argv[]) * struct nfs_args to be passed in via nmount(). */ osversion = getosreldate(); - if (osversion >= 800048) { + if (osversion >= 702100) { if (nmount(iov, iovlen, mntflags)) err(1, "%s, %s", mntpath, errmsg); } else { From rodrigc at FreeBSD.org Mon Jun 1 01:02:31 2009 From: rodrigc at FreeBSD.org (Craig Rodrigues) Date: Mon Jun 1 01:02:43 2009 Subject: svn commit: r193192 - in head/sys: boot/common kern Message-ID: <200906010102.n5112UmB059561@svn.freebsd.org> Author: rodrigc Date: Mon Jun 1 01:02:30 2009 New Revision: 193192 URL: http://svn.freebsd.org/changeset/base/193192 Log: sys/boot/common.c ================= Extend the loader to parse the root file system mount options in /etc/fstab, and set a new loader variable vfs.root.mountfrom.options with these options. The root mount options must be a comma-delimited string, as specified in /etc/fstab. Only set the vfs.root.mountfrom.options variable if it has not been set in the environment. sys/kern/vfs_mount.c ==================== When mounting the root file system, pass the mount options specified in vfs.root.mountfrom.options, but filter out "rw" and "noro", since the initial mount of the root file system must be done as "ro". While we are here, try to add a few hints to the mountroot prompt to give users and idea what might of gone wrong during mounting of the root file system. Reviewed by: jhb (an earlier patch) Modified: head/sys/boot/common/boot.c head/sys/kern/vfs_mount.c Modified: head/sys/boot/common/boot.c ============================================================================== --- head/sys/boot/common/boot.c Mon Jun 1 00:40:39 2009 (r193191) +++ head/sys/boot/common/boot.c Mon Jun 1 01:02:30 2009 (r193192) @@ -287,7 +287,7 @@ getbootfile(int try) int getrootmount(char *rootdev) { - char lbuf[128], *cp, *ep, *dev, *fstyp; + char lbuf[128], *cp, *ep, *dev, *fstyp, *options; int fd, error; if (getenv("vfs.root.mountfrom") != NULL) @@ -331,11 +331,30 @@ getrootmount(char *rootdev) *cp = 0; fstyp = strdup(ep); - /* build the final result and save it */ + /* skip whitespace up to mount options */ + cp += 1; + while ((*cp != 0) && isspace(*cp)) + cp++; + if (*cp == 0) /* misformatted */ + continue; + /* skip text to end of mount options and delimit */ + ep = cp; + while ((*cp != 0) && !isspace(*cp)) + cp++; + *cp = 0; + options = strdup(ep); + /* Build the : and save it in vfs.root.mountfrom */ sprintf(lbuf, "%s:%s", fstyp, dev); free(dev); free(fstyp); setenv("vfs.root.mountfrom", lbuf, 0); + + /* Don't override vfs.root.mountfrom.options if it is already set */ + if (getenv("vfs.root.mountfrom.options") == NULL) { + /* save mount options */ + setenv("vfs.root.mountfrom.options", options, 0); + } + free(options); error = 0; break; } Modified: head/sys/kern/vfs_mount.c ============================================================================== --- head/sys/kern/vfs_mount.c Mon Jun 1 00:40:39 2009 (r193191) +++ head/sys/kern/vfs_mount.c Mon Jun 1 01:02:30 2009 (r193192) @@ -77,7 +77,7 @@ static void set_rootvnode(void); static int vfs_domount(struct thread *td, const char *fstype, char *fspath, int fsflags, void *fsdata); static int vfs_mountroot_ask(void); -static int vfs_mountroot_try(const char *mountfrom); +static int vfs_mountroot_try(const char *mountfrom, const char *options); static void free_mntarg(struct mntarg *ma); static int usermount = 0; @@ -110,6 +110,10 @@ struct vnode *rootvnode; * of being mounted as root * path := disk device name or other data used by the filesystem * to locate its physical store + * + * The environment variable vfs.root.mountfrom options is a comma delimited + * set of string mount options. These mount options must be parseable + * by nmount() in the kernel. */ /* @@ -1637,9 +1641,11 @@ vfs_opterror(struct vfsoptlist *opts, co void vfs_mountroot(void) { - char *cp; + char *cp, *options; int error, i, asked = 0; + options = NULL; + root_mount_prepare(); mount_zone = uma_zcreate("Mountpoints", sizeof(struct mount), @@ -1656,12 +1662,14 @@ vfs_mountroot(void) asked = 1; } + options = getenv("vfs.root.mountfrom.options"); + /* * The root filesystem information is compiled in, and we are * booted with instructions to use it. */ if (ctrootdevname != NULL && (boothowto & RB_DFLTROOT)) { - if (!vfs_mountroot_try(ctrootdevname)) + if (!vfs_mountroot_try(ctrootdevname, options)) goto mounted; ctrootdevname = NULL; } @@ -1673,7 +1681,7 @@ vfs_mountroot(void) */ if (boothowto & RB_CDROM) { for (i = 0; cdrom_rootdevnames[i] != NULL; i++) { - if (!vfs_mountroot_try(cdrom_rootdevnames[i])) + if (!vfs_mountroot_try(cdrom_rootdevnames[i], options)) goto mounted; } } @@ -1685,7 +1693,7 @@ vfs_mountroot(void) */ cp = getenv("vfs.root.mountfrom"); if (cp != NULL) { - error = vfs_mountroot_try(cp); + error = vfs_mountroot_try(cp, options); freeenv(cp); if (!error) goto mounted; @@ -1694,16 +1702,16 @@ vfs_mountroot(void) /* * Try values that may have been computed by code during boot */ - if (!vfs_mountroot_try(rootdevnames[0])) + if (!vfs_mountroot_try(rootdevnames[0], options)) goto mounted; - if (!vfs_mountroot_try(rootdevnames[1])) + if (!vfs_mountroot_try(rootdevnames[1], options)) goto mounted; /* * If we (still) have a compiled-in default, try it. */ if (ctrootdevname != NULL) - if (!vfs_mountroot_try(ctrootdevname)) + if (!vfs_mountroot_try(ctrootdevname, options)) goto mounted; /* * Everything so far has failed, prompt on the console if we haven't @@ -1717,24 +1725,75 @@ vfs_mountroot(void) mounted: root_mount_done(); + freeenv(options); +} + +static struct mntarg * +parse_mountroot_options(struct mntarg *ma, const char *options) +{ + char *p; + char *name, *name_arg; + char *val, *val_arg; + char *opts; + + if (options == NULL || options[0] == '\0') + return (ma); + + p = opts = strdup(options, M_MOUNT); + if (opts == NULL) { + return (ma); + } + + while((name = strsep(&p, ",")) != NULL) { + if (name[0] == '\0') + break; + + val = strchr(name, '='); + if (val != NULL) { + *val = '\0'; + ++val; + } + if( strcmp(name, "rw") == 0 || + strcmp(name, "noro") == 0) { + /* + * The first time we mount the root file system, + * we need to mount 'ro', so We need to ignore + * 'rw' and 'noro' mount options. + */ + continue; + } + name_arg = strdup(name, M_MOUNT); + val_arg = NULL; + if (val != NULL) + val_arg = strdup(val, M_MOUNT); + + ma = mount_arg(ma, name_arg, val_arg, + (val_arg != NULL ? -1 : 0)); + } + free(opts, M_MOUNT); + return (ma); } /* * Mount (mountfrom) as the root filesystem. */ static int -vfs_mountroot_try(const char *mountfrom) +vfs_mountroot_try(const char *mountfrom, const char *options) { struct mount *mp; + struct mntarg *ma; char *vfsname, *path; time_t timebase; int error; char patt[32]; + char errmsg[255]; vfsname = NULL; path = NULL; mp = NULL; + ma = NULL; error = EINVAL; + bzero(errmsg, sizeof(errmsg)); if (mountfrom == NULL) return (error); /* don't complain */ @@ -1751,12 +1810,14 @@ vfs_mountroot_try(const char *mountfrom) if (path[0] == '\0') strcpy(path, ROOTNAME); - error = kernel_vmount( - MNT_RDONLY | MNT_ROOTFS, - "fstype", vfsname, - "fspath", "/", - "from", path, - NULL); + ma = mount_arg(ma, "fstype", vfsname, -1); + ma = mount_arg(ma, "fspath", "/", -1); + ma = mount_arg(ma, "from", path, -1); + ma = mount_arg(ma, "errmsg", errmsg, sizeof(errmsg)); + ma = mount_arg(ma, "ro", NULL, 0); + ma = parse_mountroot_options(ma, options); + error = kernel_mount(ma, MNT_ROOTFS); + if (error == 0) { /* * We mount devfs prior to mounting the / FS, so the first @@ -1783,6 +1844,16 @@ vfs_mountroot_try(const char *mountfrom) devfs_fixup(curthread); } + + if (error != 0 ) { + printf("ROOT MOUNT ERROR: %s\n", errmsg); + printf("If you have invalid mount options, reboot, and "); + printf("first try the following from\n"); + printf("the loader prompt:\n\n"); + printf(" set vfs.root.mountfrom.options=rw\n\n"); + printf("and then remove invalid mount options from "); + printf("/etc/fstab.\n\n"); + } out: free(path, M_MOUNT); free(vfsname, M_MOUNT); @@ -1798,15 +1869,32 @@ static int vfs_mountroot_ask(void) { char name[128]; + char *mountfrom; + char *options; for(;;) { + printf("Loader variables:\n"); + printf("vfs.root.mountfrom="); + mountfrom = getenv("vfs.root.mountfrom"); + if (mountfrom != NULL) { + printf("%s", mountfrom); + } + printf("\n"); + printf("vfs.root.mountfrom.options="); + options = getenv("vfs.root.mountfrom.options"); + if (options != NULL) { + printf("%s", options); + } + printf("\n"); + freeenv(mountfrom); + freeenv(options); printf("\nManual root filesystem specification:\n"); printf(" : Mount using filesystem \n"); -#if defined(__amd64__) || defined(__i386__) || defined(__ia64__) - printf(" eg. ufs:da0s1a\n"); -#else - printf(" eg. ufs:/dev/da0a\n"); -#endif + printf(" eg. ufs:/dev/da0s1a\n"); + printf(" eg. cd9660:/dev/acd0\n"); + printf(" This is equivalent to: "); + printf("mount -t cd9660 /dev/acd0 /\n"); + printf("\n"); printf(" ? List valid disk boot devices\n"); printf(" Abort manual input\n"); printf("\nmountroot> "); @@ -1818,7 +1906,7 @@ vfs_mountroot_ask(void) g_dev_print(); continue; } - if (!vfs_mountroot_try(name)) + if (!vfs_mountroot_try(name, NULL)) return (0); } } From weongyo at FreeBSD.org Mon Jun 1 01:51:38 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Mon Jun 1 01:51:44 2009 Subject: svn commit: r193194 - head/sys/dev/usb/wlan Message-ID: <200906010151.n511pbMb060570@svn.freebsd.org> Author: weongyo Date: Mon Jun 1 01:51:37 2009 New Revision: 193194 URL: http://svn.freebsd.org/changeset/base/193194 Log: ZyXEL G-202 has zd1211b chipset, not zd1211. Tested by: Samuel Boivie Modified: head/sys/dev/usb/wlan/if_zyd.c Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Mon Jun 1 01:42:56 2009 (r193193) +++ head/sys/dev/usb/wlan/if_zyd.c Mon Jun 1 01:51:37 2009 (r193194) @@ -232,7 +232,6 @@ static const struct usb_device_id zyd_de {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_AG225H, ZYD_ZD1211)}, {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_ZYAIRG220, ZYD_ZD1211)}, {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G200V2, ZYD_ZD1211)}, - {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G202, ZYD_ZD1211)}, /* ZYD_ZD1211B */ {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_SMCWUSBG, ZYD_ZD1211B)}, {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_ZD1211B, ZYD_ZD1211B)}, @@ -252,6 +251,7 @@ static const struct usb_device_id zyd_de {USB_VPI(USB_VENDOR_ZCOM, USB_PRODUCT_ZCOM_ZD1211B, ZYD_ZD1211B)}, {USB_VPI(USB_VENDOR_ZYDAS, USB_PRODUCT_ZYDAS_ZD1211B, ZYD_ZD1211B)}, {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_M202, ZYD_ZD1211B)}, + {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G202, ZYD_ZD1211B)}, {USB_VPI(USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G220V2, ZYD_ZD1211B)}, }; From weongyo at FreeBSD.org Mon Jun 1 02:37:07 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Mon Jun 1 02:37:18 2009 Subject: svn commit: r193195 - head/sys/modules/usb Message-ID: <200906010237.n512b6Qc061550@svn.freebsd.org> Author: weongyo Date: Mon Jun 1 02:37:06 2009 New Revision: 193195 URL: http://svn.freebsd.org/changeset/base/193195 Log: connect urtw(4) to the amd64/i386 build that it's not tested on the big endian machines yet. Modified: head/sys/modules/usb/Makefile Modified: head/sys/modules/usb/Makefile ============================================================================== --- head/sys/modules/usb/Makefile Mon Jun 1 01:51:37 2009 (r193194) +++ head/sys/modules/usb/Makefile Mon Jun 1 02:37:06 2009 (r193195) @@ -27,7 +27,7 @@ SUBDIR = usb SUBDIR += ehci musb ohci uhci uss820dci ${_at91dci} ${_atmegadci} -SUBDIR += rum uath upgt ural zyd +SUBDIR += rum uath upgt ural zyd ${_urtw} SUBDIR += uhid ukbd ums udbp ufm SUBDIR += ucom u3g uark ubsa ubser uchcom ucycom ufoma uftdi ugensa uipaq ulpt \ umct umodem umoscom uplcom uslcom uvisor uvscom @@ -35,9 +35,17 @@ SUBDIR += uether aue axe cdce cue kue ru SUBDIR += usfs umass urio SUBDIR += quirk template +.if ${MACHINE_ARCH} == "amd64" +_urtw= urtw +.endif + .if ${MACHINE_ARCH} == "arm" _at91dci= at91dci _atmegadci= atmegadci .endif +.if ${MACHINE_ARCH} == "i386" +_urtw= urtw +.endif + .include From dchagin at FreeBSD.org Mon Jun 1 04:44:44 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Mon Jun 1 04:44:51 2009 Subject: svn commit: r193196 - in stable/7/sys: . amd64/linux32 compat/linux contrib/pf dev/ath/ath_hal dev/cxgb i386/linux Message-ID: <200906010444.n514ihPS064097@svn.freebsd.org> Author: dchagin Date: Mon Jun 1 04:44:43 2009 New Revision: 193196 URL: http://svn.freebsd.org/changeset/base/193196 Log: MFC r191741: Move extern variable definitions to the header file. Approved by: kib (mentor) Modified: stable/7/sys/ (props changed) stable/7/sys/amd64/linux32/linux32_sysvec.c stable/7/sys/compat/linux/linux_futex.c stable/7/sys/compat/linux/linux_futex.h stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/i386/linux/linux_sysvec.c Modified: stable/7/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- stable/7/sys/amd64/linux32/linux32_sysvec.c Mon Jun 1 02:37:06 2009 (r193195) +++ stable/7/sys/amd64/linux32/linux32_sysvec.c Mon Jun 1 04:44:43 2009 (r193196) @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -126,9 +127,6 @@ static void exec_linux_setregs(struct th u_long stack, u_long ps_strings); static void linux32_fixlimit(struct rlimit *rl, int which); -extern LIST_HEAD(futex_list, futex) futex_list; -extern struct mtx futex_mtx; - static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; static eventhandler_tag linux_exec_tag; Modified: stable/7/sys/compat/linux/linux_futex.c ============================================================================== --- stable/7/sys/compat/linux/linux_futex.c Mon Jun 1 02:37:06 2009 (r193195) +++ stable/7/sys/compat/linux/linux_futex.c Mon Jun 1 04:44:43 2009 (r193196) @@ -81,7 +81,7 @@ struct futex { TAILQ_HEAD(lf_waiting_proc, waiting_proc) f_waiting_proc; }; -LIST_HEAD(futex_list, futex) futex_list; +struct futex_list futex_list; #define FUTEX_LOCK(f) sx_xlock(&(f)->f_lck) #define FUTEX_UNLOCK(f) sx_xunlock(&(f)->f_lck) Modified: stable/7/sys/compat/linux/linux_futex.h ============================================================================== --- stable/7/sys/compat/linux/linux_futex.h Mon Jun 1 02:37:06 2009 (r193195) +++ stable/7/sys/compat/linux/linux_futex.h Mon Jun 1 04:44:43 2009 (r193196) @@ -36,6 +36,9 @@ #ifndef _LINUX_FUTEX_H #define _LINUX_FUTEX_H +extern LIST_HEAD(futex_list, futex) futex_list; +extern struct mtx futex_mtx; + #define LINUX_FUTEX_WAIT 0 #define LINUX_FUTEX_WAKE 1 #define LINUX_FUTEX_FD 2 /* unused */ Modified: stable/7/sys/i386/linux/linux_sysvec.c ============================================================================== --- stable/7/sys/i386/linux/linux_sysvec.c Mon Jun 1 02:37:06 2009 (r193195) +++ stable/7/sys/i386/linux/linux_sysvec.c Mon Jun 1 04:44:43 2009 (r193196) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -110,9 +111,6 @@ static register_t *linux_copyout_strings static int linux_szplatform; const char *linux_platform; -extern LIST_HEAD(futex_list, futex) futex_list; -extern struct mtx futex_mtx; - static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; static eventhandler_tag linux_exec_tag; From dougb at FreeBSD.org Mon Jun 1 04:55:14 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 04:55:20 2009 Subject: svn commit: r193197 - head/etc/rc.d Message-ID: <200906010455.n514tDRb064417@svn.freebsd.org> Author: dougb Date: Mon Jun 1 04:55:13 2009 New Revision: 193197 URL: http://svn.freebsd.org/changeset/base/193197 Log: Substitute ypset for ypbind in REQUIRE lines. If you use ypset it has to happen right after ypbind, and before anything that uses NIS. The only change in rcorder accomplished by this patch is make that happen. PR: conf/117555 Submitted by: John Marshall Modified: head/etc/rc.d/amd head/etc/rc.d/keyserv head/etc/rc.d/nisdomain head/etc/rc.d/quota head/etc/rc.d/yppasswdd Modified: head/etc/rc.d/amd ============================================================================== --- head/etc/rc.d/amd Mon Jun 1 04:44:43 2009 (r193196) +++ head/etc/rc.d/amd Mon Jun 1 04:55:13 2009 (r193197) @@ -4,7 +4,7 @@ # # PROVIDE: amd -# REQUIRE: rpcbind ypbind nfsclient cleanvar ldconfig +# REQUIRE: rpcbind ypset nfsclient cleanvar ldconfig # BEFORE: DAEMON # KEYWORD: nojail shutdown Modified: head/etc/rc.d/keyserv ============================================================================== --- head/etc/rc.d/keyserv Mon Jun 1 04:44:43 2009 (r193196) +++ head/etc/rc.d/keyserv Mon Jun 1 04:55:13 2009 (r193197) @@ -6,7 +6,7 @@ # Start keyserv if we are running Secure RPC # PROVIDE: keyserv -# REQUIRE: ypbind +# REQUIRE: ypset # BEFORE: DAEMON # KEYWORD: shutdown Modified: head/etc/rc.d/nisdomain ============================================================================== --- head/etc/rc.d/nisdomain Mon Jun 1 04:44:43 2009 (r193196) +++ head/etc/rc.d/nisdomain Mon Jun 1 04:55:13 2009 (r193197) @@ -28,7 +28,7 @@ # PROVIDE: nisdomain # REQUIRE: SERVERS rpcbind -# BEFORE: ypbind ypserv ypxfrd +# BEFORE: ypset ypbind ypserv ypxfrd . /etc/rc.subr Modified: head/etc/rc.d/quota ============================================================================== --- head/etc/rc.d/quota Mon Jun 1 04:44:43 2009 (r193196) +++ head/etc/rc.d/quota Mon Jun 1 04:55:13 2009 (r193197) @@ -6,7 +6,7 @@ # Enable/Check the quotas (must be after ypbind if using NIS) # PROVIDE: quota -# REQUIRE: mountcritremote +# REQUIRE: mountcritremote ypset # BEFORE: DAEMON # KEYWORD: nojail Modified: head/etc/rc.d/yppasswdd ============================================================================== --- head/etc/rc.d/yppasswdd Mon Jun 1 04:44:43 2009 (r193196) +++ head/etc/rc.d/yppasswdd Mon Jun 1 04:55:13 2009 (r193197) @@ -4,7 +4,7 @@ # # PROVIDE: yppasswdd -# REQUIRE: ypserv ypbind +# REQUIRE: ypserv ypset # BEFORE: LOGIN # KEYWORD: shutdown From danfe at FreeBSD.org Mon Jun 1 05:06:41 2009 From: danfe at FreeBSD.org (Alexey Dokuchaev) Date: Mon Jun 1 05:06:52 2009 Subject: svn commit: r193184 - in head/sys/dev/syscons: . teken In-Reply-To: <200905311935.n4VJZfhl053022@svn.freebsd.org> References: <200905311935.n4VJZfhl053022@svn.freebsd.org> Message-ID: <20090601050625.GA98269@FreeBSD.org> On Sun, May 31, 2009 at 07:35:41PM +0000, Ed Schouten wrote: > Author: ed > Date: Sun May 31 19:35:41 2009 > New Revision: 193184 > URL: http://svn.freebsd.org/changeset/base/193184 > > Log: > Restore support for bell pitch/duration. > > Because we only support a single argument to tf_param, use 16 bits for > the pitch and 16 bits for the duration. While there, make the argument > unsigned. There isn't a single param call that needs a signed integer. > > Submitted by: danfe (modified) Thanks! ./danfe From dougb at FreeBSD.org Mon Jun 1 05:35:05 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 05:35:17 2009 Subject: svn commit: r193198 - head/etc/rc.d Message-ID: <200906010535.n515Z4qK065272@svn.freebsd.org> Author: dougb Date: Mon Jun 1 05:35:03 2009 New Revision: 193198 URL: http://svn.freebsd.org/changeset/base/193198 Log: Make the pf and ipfw firewalls start before netif, just like ipfilter already does. This eliminates a logical inconsistency, and a small window where the system is open after the network comes up. Modified: head/etc/rc.d/ip6fw head/etc/rc.d/ipfilter head/etc/rc.d/ipfs head/etc/rc.d/ipfw head/etc/rc.d/ipnat head/etc/rc.d/netif head/etc/rc.d/network_ipv6 head/etc/rc.d/pf head/etc/rc.d/pflog head/etc/rc.d/pfsync Modified: head/etc/rc.d/ip6fw ============================================================================== --- head/etc/rc.d/ip6fw Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/ip6fw Mon Jun 1 05:35:03 2009 (r193198) @@ -5,7 +5,6 @@ # PROVIDE: ip6fw # REQUIRE: routing -# BEFORE: network_ipv6 # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/ipfilter ============================================================================== --- head/etc/rc.d/ipfilter Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/ipfilter Mon Jun 1 05:35:03 2009 (r193198) @@ -5,7 +5,6 @@ # PROVIDE: ipfilter # REQUIRE: FILESYSTEMS -# BEFORE: netif # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/ipfs ============================================================================== --- head/etc/rc.d/ipfs Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/ipfs Mon Jun 1 05:35:03 2009 (r193198) @@ -5,7 +5,6 @@ # PROVIDE: ipfs # REQUIRE: ipnat -# BEFORE: netif # KEYWORD: nojail shutdown . /etc/rc.subr Modified: head/etc/rc.d/ipfw ============================================================================== --- head/etc/rc.d/ipfw Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/ipfw Mon Jun 1 05:35:03 2009 (r193198) @@ -4,8 +4,7 @@ # # PROVIDE: ipfw -# REQUIRE: ppp -# BEFORE: NETWORKING +# REQUIRE: FILESYSTEMS # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/ipnat ============================================================================== --- head/etc/rc.d/ipnat Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/ipnat Mon Jun 1 05:35:03 2009 (r193198) @@ -5,7 +5,6 @@ # PROVIDE: ipnat # REQUIRE: ipfilter -# BEFORE: DAEMON netif # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/netif ============================================================================== --- head/etc/rc.d/netif Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/netif Mon Jun 1 05:35:03 2009 (r193198) @@ -26,7 +26,8 @@ # # PROVIDE: netif -# REQUIRE: atm1 cleanvar ipfilter FILESYSTEMS serial sppp sysctl +# REQUIRE: atm1 cleanvar FILESYSTEMS serial sppp sysctl +# REQUIRE: ipfilter ipfs pf ipfw # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/network_ipv6 ============================================================================== --- head/etc/rc.d/network_ipv6 Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/network_ipv6 Mon Jun 1 05:35:03 2009 (r193198) @@ -29,7 +29,7 @@ # # PROVIDE: network_ipv6 -# REQUIRE: routing +# REQUIRE: routing ip6fw # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/pf ============================================================================== --- head/etc/rc.d/pf Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/pf Mon Jun 1 05:35:03 2009 (r193198) @@ -4,7 +4,7 @@ # # PROVIDE: pf -# REQUIRE: FILESYSTEMS netif pflog pfsync +# REQUIRE: FILESYSTEMS pflog pfsync # BEFORE: routing # KEYWORD: nojail Modified: head/etc/rc.d/pflog ============================================================================== --- head/etc/rc.d/pflog Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/pflog Mon Jun 1 05:35:03 2009 (r193198) @@ -4,7 +4,7 @@ # # PROVIDE: pflog -# REQUIRE: FILESYSTEMS netif cleanvar +# REQUIRE: FILESYSTEMS cleanvar # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/pfsync ============================================================================== --- head/etc/rc.d/pfsync Mon Jun 1 04:55:13 2009 (r193197) +++ head/etc/rc.d/pfsync Mon Jun 1 05:35:03 2009 (r193198) @@ -4,7 +4,7 @@ # # PROVIDE: pfsync -# REQUIRE: FILESYSTEMS netif +# REQUIRE: FILESYSTEMS # KEYWORD: nojail . /etc/rc.subr From dougb at FreeBSD.org Mon Jun 1 05:37:14 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 05:37:25 2009 Subject: svn commit: r193199 - head/etc Message-ID: <200906010537.n515bDou065357@svn.freebsd.org> Author: dougb Date: Mon Jun 1 05:37:13 2009 New Revision: 193199 URL: http://svn.freebsd.org/changeset/base/193199 Log: Eliminate the warning that "Values of network_interfaces other than AUTO are deprecated.' There is no good reason to deprecate them, and setting this to different values can be useful for custom solutions and/or one-off configuration problems. Modified: head/etc/network.subr Modified: head/etc/network.subr ============================================================================== --- head/etc/network.subr Mon Jun 1 05:35:03 2009 (r193198) +++ head/etc/network.subr Mon Jun 1 05:37:13 2009 (r193199) @@ -726,10 +726,6 @@ list_net_interfaces() _tmplist="${_lo}${_tmplist}" ;; *) - if [ -z "$type" ]; then - warn "Values of network_interfaces other than" \ - "AUTO are deprecated" - fi _tmplist="${network_interfaces} ${cloned_interfaces}" ;; esac From maxim at FreeBSD.org Mon Jun 1 05:48:30 2009 From: maxim at FreeBSD.org (Maxim Konovalov) Date: Mon Jun 1 05:48:46 2009 Subject: svn commit: r193200 - stable/7/sbin/geom/class/journal Message-ID: <200906010548.n515mUF3065634@svn.freebsd.org> Author: maxim Date: Mon Jun 1 05:48:30 2009 New Revision: 193200 URL: http://svn.freebsd.org/changeset/base/193200 Log: MFC r192747: fix typo in the example. Modified: stable/7/sbin/geom/class/journal/gjournal.8 Modified: stable/7/sbin/geom/class/journal/gjournal.8 ============================================================================== --- stable/7/sbin/geom/class/journal/gjournal.8 Mon Jun 1 05:37:13 2009 (r193199) +++ stable/7/sbin/geom/class/journal/gjournal.8 Mon Jun 1 05:48:30 2009 (r193200) @@ -219,7 +219,7 @@ allows this (i.e., if the last sector is .Bd -literal -offset indent umount /dev/da0s1d gjournal label da0s1d da0s1e && \e - tunefs -J enable -n disable da01sd.journal && \e + tunefs -J enable -n disable da0s1d.journal && \e mount -o async /dev/da0s1d.journal /mnt || \e mount /dev/da0s1d /mnt .Ed From alc at FreeBSD.org Mon Jun 1 06:12:09 2009 From: alc at FreeBSD.org (Alan Cox) Date: Mon Jun 1 06:12:16 2009 Subject: svn commit: r193201 - head/sys/kern Message-ID: <200906010612.n516C89j066174@svn.freebsd.org> Author: alc Date: Mon Jun 1 06:12:08 2009 New Revision: 193201 URL: http://svn.freebsd.org/changeset/base/193201 Log: Eliminate a comment describing code that was deleted over eight years ago. Move another comment to its proper place. Fix a typo in a third comment. Modified: head/sys/kern/vfs_bio.c Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Mon Jun 1 05:48:30 2009 (r193200) +++ head/sys/kern/vfs_bio.c Mon Jun 1 06:12:08 2009 (r193201) @@ -638,13 +638,6 @@ bufinit(void) hifreebuffers = 2 * lofreebuffers; numfreebuffers = nbuf; -/* - * Maximum number of async ops initiated per buf_daemon loop. This is - * somewhat of a hack at the moment, we really need to limit ourselves - * based on the number of bytes of I/O in-transit that were initiated - * from buf_daemon. - */ - bogus_page = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_NORMAL | VM_ALLOC_WIRED); } @@ -1202,7 +1195,7 @@ brelse(struct buf *bp) /* * Failed write, redirty. Must clear BIO_ERROR to prevent * pages from being scrapped. If the error is anything - * other than an I/O error (EIO), assume that retryingi + * other than an I/O error (EIO), assume that retrying * is futile. */ bp->b_ioflags &= ~BIO_ERROR; @@ -2403,15 +2396,9 @@ vfs_setdirty(struct buf *bp) /* * Degenerate case - empty buffer */ - if (bp->b_bufsize == 0) return; - /* - * We qualify the scan for modified pages on whether the - * object has been flushed yet. - */ - if ((bp->b_flags & B_VMIO) == 0) return; @@ -2428,6 +2415,11 @@ vfs_setdirty_locked_object(struct buf *b object = bp->b_bufobj->bo_object; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); + + /* + * We qualify the scan for modified pages on whether the + * object has been flushed yet. + */ if (object->flags & (OBJ_MIGHTBEDIRTY|OBJ_CLEANING)) { vm_offset_t boffset; vm_offset_t eoffset; From bzeeb-lists at lists.zabbadoz.net Mon Jun 1 06:30:13 2009 From: bzeeb-lists at lists.zabbadoz.net (Bjoern A. Zeeb) Date: Mon Jun 1 06:30:25 2009 Subject: svn commit: r193198 - head/etc/rc.d In-Reply-To: <200906010535.n515Z4qK065272@svn.freebsd.org> References: <200906010535.n515Z4qK065272@svn.freebsd.org> Message-ID: <20090601062701.C12292@maildrop.int.zabbadoz.net> On Mon, 1 Jun 2009, Doug Barton wrote: > Author: dougb > Date: Mon Jun 1 05:35:03 2009 > New Revision: 193198 > URL: http://svn.freebsd.org/changeset/base/193198 > > Log: > Make the pf and ipfw firewalls start before netif, just like ipfilter > already does. This eliminates a logical inconsistency, and a small > window where the system is open after the network comes up. Unfortunetaly this is contrary to a lot of PRs and requests on mailing lists out there that actually want the netif/network_ipv6 to be run _before_ things come up. Espescially pf really needs this to avoid rules that needs to do per paket lookups of the interface address. Further ipfw has a default option being setaable at compile time and as TUNABLE to handle this window. -- Bjoern A. Zeeb The greatest risk is not taking one. From dougb at FreeBSD.org Mon Jun 1 06:31:05 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 06:31:11 2009 Subject: svn commit: r193202 - head/contrib/bind9/lib/isc/ia64/include/isc Message-ID: <200906010631.n516V4b9066643@svn.freebsd.org> Author: dougb Date: Mon Jun 1 06:31:04 2009 New Revision: 193202 URL: http://svn.freebsd.org/changeset/base/193202 Log: Local hack to get the build going again while ISC works on a more permanent solution for 9.6.1-release. "My suggestion is to remove the whole attribute construct. It only suppresses a warning when a function is unused. In this case the function is defined as inline, so it's not causing a warning when not used." Submitted by: marcel Modified: head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h Modified: head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h ============================================================================== --- head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h Mon Jun 1 06:12:08 2009 (r193201) +++ head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h Mon Jun 1 06:31:04 2009 (r193202) @@ -32,9 +32,6 @@ */ static inline isc_int32_t isc_atomic_xadd(isc_int32_t *p, isc_int32_t val) -#ifdef __GNUC__ -__attribute__ ((unused)) -#endif { isc_int32_t prev, swapped; @@ -58,9 +55,6 @@ __attribute__ ((unused)) */ static inline void isc_atomic_store(isc_int32_t *p, isc_int32_t val) -#ifdef __GNUC__ -__attribute__ ((unused)) -#endif { __asm__ volatile( "st4.rel %0=%1" @@ -77,9 +71,6 @@ __attribute__ ((unused)) */ static inline isc_int32_t isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, isc_int32_t val) -#ifdef __GNUC__ -__attribute__ ((unused)) -#endif { isc_int32_t ret; From max at love2party.net Mon Jun 1 06:32:41 2009 From: max at love2party.net (Max Laier) Date: Mon Jun 1 06:32:52 2009 Subject: svn commit: r193198 - head/etc/rc.d In-Reply-To: <200906010535.n515Z4qK065272@svn.freebsd.org> References: <200906010535.n515Z4qK065272@svn.freebsd.org> Message-ID: <200906010820.03864.max@love2party.net> On Monday 01 June 2009 07:35:03 Doug Barton wrote: > Author: dougb > Date: Mon Jun 1 05:35:03 2009 > New Revision: 193198 > URL: http://svn.freebsd.org/changeset/base/193198 > > Log: > Make the pf and ipfw firewalls start before netif, just like ipfilter > already does. This eliminates a logical inconsistency, and a small > window where the system is open after the network comes up. Can you please add a note about this in UPDATING? It might be a slight POLA violation for people who rely on the interfaces being configured to setup the firewall. For instance when one doesn't use dynamic address rules in pf i.e. "from/to ifX" instead of "from/to (ifX)". > Modified: > head/etc/rc.d/ip6fw > head/etc/rc.d/ipfilter > head/etc/rc.d/ipfs > head/etc/rc.d/ipfw > head/etc/rc.d/ipnat > head/etc/rc.d/netif > head/etc/rc.d/network_ipv6 > head/etc/rc.d/pf > head/etc/rc.d/pflog > head/etc/rc.d/pfsync -- /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News From bzeeb-lists at lists.zabbadoz.net Mon Jun 1 06:40:07 2009 From: bzeeb-lists at lists.zabbadoz.net (Bjoern A. Zeeb) Date: Mon Jun 1 06:40:13 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <200906010537.n515bDou065357@svn.freebsd.org> References: <200906010537.n515bDou065357@svn.freebsd.org> Message-ID: <20090601063455.R12292@maildrop.int.zabbadoz.net> On Mon, 1 Jun 2009, Doug Barton wrote: > Author: dougb > Date: Mon Jun 1 05:37:13 2009 > New Revision: 193199 > URL: http://svn.freebsd.org/changeset/base/193199 > > Log: > Eliminate the warning that "Values of network_interfaces other than > AUTO are deprecated.' There is no good reason to deprecate them, and > setting this to different values can be useful for custom solutions > and/or one-off configuration problems. There used to be adisucssion about this last year. I think you would have wanted to talk to brooks before who had put this in: http://lists.freebsd.org/pipermail/cvs-all/2008-July/thread.html#263409 > Modified: > head/etc/network.subr > > Modified: head/etc/network.subr > ============================================================================== > --- head/etc/network.subr Mon Jun 1 05:35:03 2009 (r193198) > +++ head/etc/network.subr Mon Jun 1 05:37:13 2009 (r193199) > @@ -726,10 +726,6 @@ list_net_interfaces() > _tmplist="${_lo}${_tmplist}" > ;; > *) > - if [ -z "$type" ]; then > - warn "Values of network_interfaces other than" \ > - "AUTO are deprecated" > - fi > _tmplist="${network_interfaces} ${cloned_interfaces}" > ;; > esac > -- Bjoern A. Zeeb The greatest risk is not taking one. From hselasky at c2i.net Mon Jun 1 06:45:33 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Mon Jun 1 06:45:45 2009 Subject: svn commit: r192925 - in head/sys/dev/usb: . input In-Reply-To: References: <200905271927.n4RJRUH8009289@svn.freebsd.org> Message-ID: <200906010749.37072.hselasky@c2i.net> On Monday 01 June 2009, Rui Paulo wrote: > http://wiki.freebsd.org/AppleMacbook#head-7eab3730c3bf3d04bdfb0d1d3649eaddf >2fed595 Hi Rui Paulo, Regarding the eject button, can you have a look at: /sys/dev/usb/input/ukbd.c And provide a patch that masks this key the way you want? Debugging: sysctl hw.usb.ukbd.debug=15 --HPS From jmallett at FreeBSD.org Mon Jun 1 06:49:10 2009 From: jmallett at FreeBSD.org (Juli Mallett) Date: Mon Jun 1 06:49:22 2009 Subject: svn commit: r193203 - head/usr.sbin/tcpdrop Message-ID: <200906010649.n516n9IE067053@svn.freebsd.org> Author: jmallett Date: Mon Jun 1 06:49:09 2009 New Revision: 193203 URL: http://svn.freebsd.org/changeset/base/193203 Log: o) Restructure tcpdrop(8) to provide a facility to try to drop all established connections. Including a flag to instead output a sequence of tcpdrop(8) invocations that would accomplish the same thing, which is convenient for scripting. o) Make tcpdrop complain if the addresses given to it are entirely in different address families, rather than failing silently. o) When cross-referencing httpd(8), do not explicitly specify the apache2 port, since the example in question is generic. Modified: head/usr.sbin/tcpdrop/tcpdrop.8 head/usr.sbin/tcpdrop/tcpdrop.c Modified: head/usr.sbin/tcpdrop/tcpdrop.8 ============================================================================== --- head/usr.sbin/tcpdrop/tcpdrop.8 Mon Jun 1 06:31:04 2009 (r193202) +++ head/usr.sbin/tcpdrop/tcpdrop.8 Mon Jun 1 06:49:09 2009 (r193203) @@ -1,5 +1,6 @@ .\" $OpenBSD: tcpdrop.8,v 1.5 2004/05/24 13:57:31 jmc Exp $ .\" +.\" Copyright (c) 2009 Juli Mallett .\" Copyright (c) 2004 Markus Friedl .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -16,35 +17,58 @@ .\" .\" $FreeBSD$ .\" -.Dd March 21, 2004 +.Dd March 24, 2009 .Dt TCPDROP 8 .Os .Sh NAME .Nm tcpdrop -.Nd drop a TCP connection +.Nd drop TCP connections .Sh SYNOPSIS .Nm tcpdrop -.Ar laddr -.Ar lport -.Ar faddr -.Ar fport +.Ar local-address +.Ar local-port +.Ar foreign-address +.Ar foreign-port +.Nm tcpdrop +.Op Fl l +.Fl a .Sh DESCRIPTION The .Nm -command drops the TCP connection specified by the local address -.Ar laddr , +command may be used to drop TCP connections from the command line. +.Pp +If +.Fl a +is specified then +.Nm +will attempt to drop all active connections. +The +.Fl l +flag may be given to list the tcpdrop invocation to drop all active +connections one at a time. +.Pp +If +.Fl a +is not specified then only the connection between the given local +address +.Ar local-address , port -.Ar lport +.Ar local-port , and the foreign address -.Ar faddr , +.Ar foreign-address , port -.Ar fport . -Addresses and ports can be specified by name or numeric value. +.Ar foreign-port , +will be dropped. +.Pp +Addresses and ports may be specified by name or numeric value. +Both IPv4 and IPv6 address formats are supported. +.Nm +in case of success or failure. .Sh EXIT STATUS .Ex -std .Sh EXAMPLES If a connection to -.Xr httpd 8 Pq Pa ports/www/apache2 +.Xr httpd 8 is causing congestion on a network link, one can drop the TCP session in charge: .Bd -literal -offset indent @@ -57,8 +81,16 @@ The following command will drop the conn .Bd -literal -offset indent # tcpdrop 192.168.5.41 80 192.168.5.1 26747 .Ed +.Pp +The following command will drop all connections but those to or from +port 22, the port used by +.Xr sshd 8 : +.Bd -literal -offset indent +# tcpdrop -l -a | grep -vw 22 | sh +.Ed .Sh SEE ALSO .Xr netstat 1 , .Xr sockstat 1 .Sh AUTHORS .An Markus Friedl Aq markus@openbsd.org +.An Juli Mallett Aq jmallett@FreeBSD.org Modified: head/usr.sbin/tcpdrop/tcpdrop.c ============================================================================== --- head/usr.sbin/tcpdrop/tcpdrop.c Mon Jun 1 06:31:04 2009 (r193202) +++ head/usr.sbin/tcpdrop/tcpdrop.c Mon Jun 1 06:49:09 2009 (r193203) @@ -1,6 +1,7 @@ /* $OpenBSD: tcpdrop.c,v 1.4 2004/05/22 23:55:22 deraadt Exp $ */ /*- + * Copyright (c) 2009 Juli Mallett * Copyright (c) 2004 Markus Friedl * * Permission to use, copy, modify, and distribute this software for any @@ -21,15 +22,41 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include + +#include +#define TCPSTATES +#include #include #include #include +#include #include #include #include +#include + +#define TCPDROP_FOREIGN 0 +#define TCPDROP_LOCAL 1 + +struct host_service { + char hs_host[NI_MAXHOST]; + char hs_service[NI_MAXSERV]; +}; + +static bool tcpdrop_list_commands = false; + +static struct xinpgen *getxpcblist(const char *); +static void sockinfo(const struct sockaddr *, struct host_service *); +static bool tcpdrop(const struct sockaddr *, const struct sockaddr *); +static bool tcpdropall(void); +static bool tcpdropbyname(const char *, const char *, const char *, + const char *); +static bool tcpdropconn(const struct in_conninfo *); +static void usage(void); /* * Drop a tcp connection. @@ -37,55 +64,259 @@ __FBSDID("$FreeBSD$"); int main(int argc, char *argv[]) { - struct addrinfo hints, *ail, *aif, *laddr, *faddr; - /* addrs[0] is a foreign socket, addrs[1] is a local one. */ - struct sockaddr_storage addrs[2]; - int mib[] = { CTL_NET, PF_INET, IPPROTO_TCP, TCPCTL_DROP }; - int gaierr, rval = 0; - char fhbuf[NI_MAXHOST], fsbuf[NI_MAXSERV], lhbuf[NI_MAXHOST], - lsbuf[NI_MAXSERV]; + bool dropall; + int ch; + + dropall = false; + + while ((ch = getopt(argc, argv, "al")) != -1) { + switch (ch) { + case 'a': + dropall = true; + break; + case 'l': + tcpdrop_list_commands = true; + break; + default: + usage(); + } + } + argc -= optind; + argv += optind; + + if (dropall) { + if (argc != 0) + usage(); + if (!tcpdropall()) + exit(1); + exit(0); + } - if (argc != 5) { - fprintf(stderr, "usage: tcpdrop laddr lport faddr fport\n"); + if (argc != 4 || tcpdrop_list_commands) + usage(); + + if (!tcpdropbyname(argv[0], argv[1], argv[2], argv[3])) exit(1); + + exit(0); +} + +static struct xinpgen * +getxpcblist(const char *name) +{ + struct xinpgen *xinp; + size_t len; + int rv; + + len = 0; + rv = sysctlbyname(name, NULL, &len, NULL, 0); + if (rv == -1) + err(1, "sysctlbyname %s", name); + + if (len == 0) + errx(1, "%s is empty", name); + + xinp = malloc(len); + if (xinp == NULL) + errx(1, "malloc failed"); + + rv = sysctlbyname(name, xinp, &len, NULL, 0); + if (rv == -1) + err(1, "sysctlbyname %s", name); + + return (xinp); +} + +static void +sockinfo(const struct sockaddr *sa, struct host_service *hs) +{ + static const int flags = NI_NUMERICHOST | NI_NUMERICSERV; + int rv; + + rv = getnameinfo(sa, sa->sa_len, hs->hs_host, sizeof hs->hs_host, + hs->hs_service, sizeof hs->hs_service, flags); + if (rv == -1) + err(1, "getnameinfo"); +} + +static bool +tcpdrop(const struct sockaddr *lsa, const struct sockaddr *fsa) +{ + struct host_service local, foreign; + struct sockaddr_storage addrs[2]; + int rv; + + memcpy(&addrs[TCPDROP_FOREIGN], fsa, fsa->sa_len); + memcpy(&addrs[TCPDROP_LOCAL], lsa, lsa->sa_len); + + sockinfo(lsa, &local); + sockinfo(fsa, &foreign); + + if (tcpdrop_list_commands) { + printf("tcpdrop %s %s %s %s\n", local.hs_host, local.hs_service, + foreign.hs_host, foreign.hs_service); + return (true); + } + + rv = sysctlbyname("net.inet.tcp.drop", NULL, NULL, &addrs, + sizeof addrs); + if (rv == -1) { + warn("%s %s %s %s", local.hs_host, local.hs_service, + foreign.hs_host, foreign.hs_service); + return (false); + } + printf("%s %s %s %s: dropped\n", local.hs_host, local.hs_service, + foreign.hs_host, foreign.hs_service); + return (true); +} + +static bool +tcpdropall(void) +{ + struct xinpgen *head, *xinp; + struct xtcpcb *xpcb; + struct tcpcb *tp; + struct inpcb *inp; + bool ok; + + ok = true; + + head = getxpcblist("net.inet.tcp.pcblist"); + +#define XINP_NEXT(xinp) \ + ((struct xinpgen *)((uintptr_t)(xinp) + (xinp)->xig_len)) + + for (xinp = XINP_NEXT(head); xinp->xig_len > sizeof *xinp; + xinp = XINP_NEXT(xinp)) { + xpcb = (struct xtcpcb *)xinp; + tp = &xpcb->xt_tp; + inp = &xpcb->xt_inp; + + /* + * XXX + * Check protocol, support just v4 or v6, etc. + */ + + /* Ignore PCBs which were freed during copyout. */ + if (inp->inp_gencnt > head->xig_gen) + continue; + + /* Skip listening sockets. */ + if (tp->t_state == TCPS_LISTEN) + continue; + + if (!tcpdropconn(&inp->inp_inc)) + ok = false; } - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - if ((gaierr = getaddrinfo(argv[1], argv[2], &hints, &laddr)) != 0) - errx(1, "%s port %s: %s", argv[1], argv[2], - gai_strerror(gaierr)); - if ((gaierr = getaddrinfo(argv[3], argv[4], &hints, &faddr)) != 0) { - freeaddrinfo(laddr); - errx(1, "%s port %s: %s", argv[3], argv[4], - gai_strerror(gaierr)); + free(head); + + return (ok); +} + +static bool +tcpdropbyname(const char *lhost, const char *lport, const char *fhost, + const char *fport) +{ + static const struct addrinfo hints = { + /* + * Look for streams in all domains. + */ + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM, + }; + struct addrinfo *ail, *local, *aif, *foreign; + int error; + bool ok, infamily; + + error = getaddrinfo(lhost, lport, &hints, &local); + if (error != 0) + errx(1, "getaddrinfo: %s port %s: %s", lhost, lport, + gai_strerror(error)); + + error = getaddrinfo(fhost, fport, &hints, &foreign); + if (error != 0) { + freeaddrinfo(local); /* XXX gratuitous */ + errx(1, "getaddrinfo: %s port %s: %s", lhost, lport, + gai_strerror(error)); } - for (ail = laddr; ail; ail = ail->ai_next) { - for (aif = faddr; aif; aif = aif->ai_next) { + + ok = true; + infamily = false; + + /* + * Try every combination of local and foreign address pairs. + */ + for (ail = local; ail != NULL; ail = ail->ai_next) { + for (aif = foreign; aif != NULL; aif = aif->ai_next) { if (ail->ai_family != aif->ai_family) continue; - memcpy(&addrs[0], aif->ai_addr, aif->ai_addrlen); - memcpy(&addrs[1], ail->ai_addr, ail->ai_addrlen); - if (getnameinfo(aif->ai_addr, aif->ai_addrlen, - fhbuf, sizeof(fhbuf), - fsbuf, sizeof(fsbuf), - NI_NUMERICHOST | NI_NUMERICSERV) == -1) - err(1, "getnameinfo"); - if (getnameinfo(ail->ai_addr, ail->ai_addrlen, - lhbuf, sizeof(lhbuf), - lsbuf, sizeof(lsbuf), - NI_NUMERICHOST | NI_NUMERICSERV) == -1) - err(1, "getnameinfo"); - if (sysctl(mib, sizeof (mib) / sizeof (int), NULL, - NULL, &addrs, sizeof(addrs)) == -1) { - rval = 1; - warn("%s %s %s %s", lhbuf, lsbuf, fhbuf, fsbuf); - } else - printf("%s %s %s %s: dropped\n", - lhbuf, lsbuf, fhbuf, fsbuf); + infamily = true; + if (!tcpdrop(ail->ai_addr, aif->ai_addr)) + ok = false; } } - freeaddrinfo(laddr); - freeaddrinfo(faddr); - exit(rval); + + if (!infamily) { + warnx("%s %s %s %s: different address families", lhost, lport, + fhost, fport); + ok = false; + } + + freeaddrinfo(local); + freeaddrinfo(foreign); + + return (ok); +} + +static bool +tcpdropconn(const struct in_conninfo *inc) +{ + struct sockaddr *local, *foreign; + struct sockaddr_in6 sin6[2]; + struct sockaddr_in sin4[2]; + + if ((inc->inc_flags & INC_ISIPV6) != 0) { + memset(sin6, 0, sizeof sin6); + + sin6[TCPDROP_LOCAL].sin6_len = sizeof sin6[TCPDROP_LOCAL]; + sin6[TCPDROP_LOCAL].sin6_family = AF_INET6; + sin6[TCPDROP_LOCAL].sin6_port = inc->inc_lport; + memcpy(&sin6[TCPDROP_LOCAL].sin6_addr, &inc->inc6_laddr, + sizeof inc->inc6_laddr); + local = (struct sockaddr *)&sin6[TCPDROP_LOCAL]; + + sin6[TCPDROP_FOREIGN].sin6_len = sizeof sin6[TCPDROP_FOREIGN]; + sin6[TCPDROP_FOREIGN].sin6_family = AF_INET6; + sin6[TCPDROP_FOREIGN].sin6_port = inc->inc_fport; + memcpy(&sin6[TCPDROP_FOREIGN].sin6_addr, &inc->inc6_faddr, + sizeof inc->inc6_faddr); + foreign = (struct sockaddr *)&sin6[TCPDROP_FOREIGN]; + } else { + memset(&sin4[TCPDROP_LOCAL], 0, sizeof sin4[TCPDROP_LOCAL]); + + sin4[TCPDROP_LOCAL].sin_len = sizeof sin4[TCPDROP_LOCAL]; + sin4[TCPDROP_LOCAL].sin_family = AF_INET; + sin4[TCPDROP_LOCAL].sin_port = inc->inc_lport; + memcpy(&sin4[TCPDROP_LOCAL].sin_addr, &inc->inc_laddr, + sizeof inc->inc_laddr); + local = (struct sockaddr *)&sin4[TCPDROP_LOCAL]; + + sin4[TCPDROP_FOREIGN].sin_len = sizeof sin4[TCPDROP_FOREIGN]; + sin4[TCPDROP_FOREIGN].sin_family = AF_INET; + sin4[TCPDROP_FOREIGN].sin_port = inc->inc_fport; + memcpy(&sin4[TCPDROP_FOREIGN].sin_addr, &inc->inc_faddr, + sizeof inc->inc_faddr); + foreign = (struct sockaddr *)&sin4[TCPDROP_FOREIGN]; + } + + return (tcpdrop(local, foreign)); +} + +static void +usage(void) +{ + fprintf(stderr, +"usage: tcpdrop local-address local-port foreign-address foreign-port\n" +" tcpdrop [-l] -a\n"); + exit(1); } From jmallett at FreeBSD.org Mon Jun 1 06:52:03 2009 From: jmallett at FreeBSD.org (Juli Mallett) Date: Mon Jun 1 06:52:16 2009 Subject: svn commit: r193204 - head/share/man/man4 Message-ID: <200906010652.n516q3Ol067175@svn.freebsd.org> Author: jmallett Date: Mon Jun 1 06:52:03 2009 New Revision: 193204 URL: http://svn.freebsd.org/changeset/base/193204 Log: o) Remove some references to long-unsupported old-style config(8) directives. o) Borrow da(4) language about autoconfiguration for ch(4). Modified: head/share/man/man4/ch.4 head/share/man/man4/scsi.4 Modified: head/share/man/man4/ch.4 ============================================================================== --- head/share/man/man4/ch.4 Mon Jun 1 06:49:09 2009 (r193203) +++ head/share/man/man4/ch.4 Mon Jun 1 06:52:03 2009 (r193204) @@ -32,7 +32,6 @@ .Nd SCSI media-changer (juke box) driver .Sh SYNOPSIS .Cd device ch -.Cd device ch1 target 4 unit 0 .Sh DESCRIPTION The .Nm @@ -67,13 +66,12 @@ come on line as; refer to .Xr scsi 4 for details on kernel configuration. .Sh KERNEL CONFIGURATION -In configuring, if an optional -.Ar count -is given in the specification, that number of SCSI media changers -are configured; Most storage for them is allocated only when found -so a large number of configured devices is cheap. -(once the first -has included the driver). +It is only necessary to explicitly configure one +.Nm +device; data structures are dynamically allocated as media changes are found +on the +.Tn SCSI +bus. .Sh IOCTLS User mode programs communicate with the changer driver through a number of ioctls which are described below. Modified: head/share/man/man4/scsi.4 ============================================================================== --- head/share/man/man4/scsi.4 Mon Jun 1 06:49:09 2009 (r193203) +++ head/share/man/man4/scsi.4 Mon Jun 1 06:52:03 2009 (r193204) @@ -150,7 +150,7 @@ will be reset to 100ms. .Pp All devices and the SCSI busses support boot time allocation so that an upper number of devices and controllers does not need to be configured; -.Cd "device da0" +.Cd "device da" will suffice for any number of disk drivers. .Pp The devices are either From delphij at FreeBSD.org Mon Jun 1 07:05:53 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 07:06:11 2009 Subject: svn commit: r193205 - in head/sys/dev/ata: . chipsets Message-ID: <200906010705.n5175q4K067513@svn.freebsd.org> Author: delphij Date: Mon Jun 1 07:05:52 2009 New Revision: 193205 URL: http://svn.freebsd.org/changeset/base/193205 Log: According to Intel documentation (307013), 3Gbps mode is supported on Desktop chipsets only for ICH7 series, so mark all ICH7M as ATA_SA150 instead of ATA_SA300. Modified: head/sys/dev/ata/ (props changed) head/sys/dev/ata/chipsets/ata-intel.c Modified: head/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-intel.c Mon Jun 1 06:52:03 2009 (r193204) +++ head/sys/dev/ata/chipsets/ata-intel.c Mon Jun 1 07:05:52 2009 (r193205) @@ -104,9 +104,9 @@ ata_intel_probe(device_t dev) { ATA_I82801GB_S1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7" }, { ATA_I82801GB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7" }, { ATA_I82801GB_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7" }, - { ATA_I82801GBM_S1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7M" }, - { ATA_I82801GBM_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7M" }, - { ATA_I82801GBM_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7M" }, + { ATA_I82801GBM_S1, 0, INTEL_AHCI, 0, ATA_SA150, "ICH7M" }, + { ATA_I82801GBM_R1, 0, INTEL_AHCI, 0, ATA_SA150, "ICH7M" }, + { ATA_I82801GBM_AH, 0, INTEL_AHCI, 0, ATA_SA150, "ICH7M" }, { ATA_I63XXESB2, 0, 0, 1, ATA_UDMA5, "63XXESB2" }, { ATA_I63XXESB2_S1, 0, INTEL_AHCI, 0, ATA_SA300, "63XXESB2" }, { ATA_I63XXESB2_S2, 0, INTEL_AHCI, 0, ATA_SA300, "63XXESB2" }, From trasz at FreeBSD.org Mon Jun 1 07:48:28 2009 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Mon Jun 1 07:48:34 2009 Subject: svn commit: r193206 - head/share/man/man9 Message-ID: <200906010748.n517mRlU068318@svn.freebsd.org> Author: trasz Date: Mon Jun 1 07:48:27 2009 New Revision: 193206 URL: http://svn.freebsd.org/changeset/base/193206 Log: Use the "flag" word consistently. Submitted by: Ben Kaduk Modified: head/share/man/man9/VOP_ACCESS.9 Modified: head/share/man/man9/VOP_ACCESS.9 ============================================================================== --- head/share/man/man9/VOP_ACCESS.9 Mon Jun 1 07:05:52 2009 (r193205) +++ head/share/man/man9/VOP_ACCESS.9 Mon Jun 1 07:48:27 2009 (r193206) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 30, 2009 +.Dd June 1, 2009 .Os .Dt VOP_ACCESS 9 .Sh NAME @@ -77,7 +77,7 @@ are .Dv VADMIN and .Dv VAPPEND . -To check for other bits, one has to use +To check for other flags, one has to use .Fn VOP_ACCESSX instead. .Sh LOCKS From lulf at FreeBSD.org Mon Jun 1 09:25:32 2009 From: lulf at FreeBSD.org (Ulf Lilleengen) Date: Mon Jun 1 09:25:44 2009 Subject: svn commit: r193213 - head/contrib/csup Message-ID: <200906010925.n519PWad071145@svn.freebsd.org> Author: lulf Date: Mon Jun 1 09:25:32 2009 New Revision: 193213 URL: http://svn.freebsd.org/changeset/base/193213 Log: - Add missing data argument to printf. Submitted by: Pawel Worach MFC after: 1 week Modified: head/contrib/csup/updater.c Modified: head/contrib/csup/updater.c ============================================================================== --- head/contrib/csup/updater.c Mon Jun 1 09:03:55 2009 (r193212) +++ head/contrib/csup/updater.c Mon Jun 1 09:25:32 2009 (r193213) @@ -1858,7 +1858,7 @@ updater_append_file(struct updater *up, goto bad; } if (nread == -1) { - xasprintf(&up->errmsg, "%s: Error reading: %s", + xasprintf(&up->errmsg, "%s: Error reading: %s", fup->destpath, strerror(errno)); return (UPDATER_ERR_MSG); } From pjd at FreeBSD.org Mon Jun 1 09:32:13 2009 From: pjd at FreeBSD.org (Pawel Jakub Dawidek) Date: Mon Jun 1 09:32:24 2009 Subject: svn commit: r193214 - head/lib/libc/sys Message-ID: <200906010932.n519WC19071344@svn.freebsd.org> Author: pjd Date: Mon Jun 1 09:32:12 2009 New Revision: 193214 URL: http://svn.freebsd.org/changeset/base/193214 Log: Document EINVAL for bind(2). Reviewed by: rwatson Obtained from: SuSv3 Modified: head/lib/libc/sys/bind.2 Modified: head/lib/libc/sys/bind.2 ============================================================================== --- head/lib/libc/sys/bind.2 Mon Jun 1 09:25:32 2009 (r193213) +++ head/lib/libc/sys/bind.2 Mon Jun 1 09:32:12 2009 (r193214) @@ -82,6 +82,9 @@ The .Fa s argument is not a valid descriptor. +.It Bq Er EINVAL +The socket is already bound to an address, and the protocol does not support +binding to a new address; or the socket has been shut down. .It Bq Er ENOTSOCK The .Fa s From rpaulo at freebsd.org Mon Jun 1 10:27:27 2009 From: rpaulo at freebsd.org (Rui Paulo) Date: Mon Jun 1 10:27:38 2009 Subject: svn commit: r192925 - in head/sys/dev/usb: . input In-Reply-To: <200906010749.37072.hselasky@c2i.net> References: <200905271927.n4RJRUH8009289@svn.freebsd.org> <200906010749.37072.hselasky@c2i.net> Message-ID: <5C52056B-8E4A-4C15-8451-2A5576A8FC9F@freebsd.org> Skipped content of type multipart/mixed-------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 194 bytes Desc: This is a digitally signed message part Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090601/e51797a5/PGP.pgp From pjd at FreeBSD.org Mon Jun 1 10:30:02 2009 From: pjd at FreeBSD.org (Pawel Jakub Dawidek) Date: Mon Jun 1 10:30:14 2009 Subject: svn commit: r193217 - in head/sys: conf netinet netinet6 sys Message-ID: <200906011030.n51AU0SW072735@svn.freebsd.org> Author: pjd Date: Mon Jun 1 10:30:00 2009 New Revision: 193217 URL: http://svn.freebsd.org/changeset/base/193217 Log: - Rename IP_NONLOCALOK IP socket option to IP_BINDANY, to be more consistent with OpenBSD (and BSD/OS originally). We can't easly do it SOL_SOCKET option as there is no more space for more SOL_SOCKET options, but this option also fits better as an IP socket option, it seems. - Implement this functionality also for IPv6 and RAW IP sockets. - Always compile it in (don't use additional kernel options). - Remove sysctl to turn this functionality on and off. - Introduce new privilege - PRIV_NETINET_BINDANY, which allows to use this functionality (currently only unjail root can use it). Discussed with: julian, adrian, jhb, rwatson, kmacy Modified: head/sys/conf/NOTES head/sys/conf/options head/sys/netinet/in.h head/sys/netinet/in_pcb.c head/sys/netinet/in_pcb.h head/sys/netinet/ip_output.c head/sys/netinet/raw_ip.c head/sys/netinet6/in6.h head/sys/netinet6/in6_pcb.c head/sys/netinet6/ip6_output.c head/sys/sys/priv.h Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/conf/NOTES Mon Jun 1 10:30:00 2009 (r193217) @@ -639,14 +639,6 @@ options ALTQ_PRIQ # Priority Queueing options ALTQ_NOPCC # Required if the TSC is unusable options ALTQ_DEBUG -# IP optional behaviour. -# IP_NONLOCALBIND disables the check that bind() usually makes that the -# address is one that is assigned to an interface on this machine. -# It allows transparent proxies to pretend to be other machines. -# How the packet GET to that machine is a problem solved elsewhere, -# smart routers, ipfw fwd, etc. -options IP_NONLOCALBIND # Allow impersonation for proxies. - # netgraph(4). Enable the base netgraph code with the NETGRAPH option. # Individual node types can be enabled with the corresponding option # listed below; however, this is not strictly necessary as netgraph Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/conf/options Mon Jun 1 10:30:00 2009 (r193217) @@ -400,7 +400,6 @@ IPFIREWALL_VERBOSE opt_ipfw.h IPFIREWALL_VERBOSE_LIMIT opt_ipfw.h IPSEC opt_ipsec.h IPSEC_DEBUG opt_ipsec.h -IP_NONLOCALBIND opt_inet.h IPSEC_FILTERTUNNEL opt_ipsec.h IPSTEALTH IPX Modified: head/sys/netinet/in.h ============================================================================== --- head/sys/netinet/in.h Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet/in.h Mon Jun 1 10:30:00 2009 (r193217) @@ -441,8 +441,7 @@ __END_DECLS #define IP_FAITH 22 /* bool; accept FAITH'ed connections */ #define IP_ONESBCAST 23 /* bool: send all-ones broadcast */ -#define IP_NONLOCALOK 24 /* bool: allow bind to spoof non-local addresses; - requires kernel compile option IP_NONLOCALBIND */ +#define IP_BINDANY 24 /* bool: allow bind to any address */ #define IP_FW_TABLE_ADD 40 /* add entry */ #define IP_FW_TABLE_DEL 41 /* delete entry */ Modified: head/sys/netinet/in_pcb.c ============================================================================== --- head/sys/netinet/in_pcb.c Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet/in_pcb.c Mon Jun 1 10:30:00 2009 (r193217) @@ -35,7 +35,6 @@ __FBSDID("$FreeBSD$"); #include "opt_ddb.h" -#include "opt_inet.h" #include "opt_ipsec.h" #include "opt_inet6.h" #include "opt_mac.h" @@ -357,14 +356,11 @@ in_pcbbind_setup(struct inpcb *inp, stru bzero(&sin->sin_zero, sizeof(sin->sin_zero)); /* * Is the address a local IP address? - * If INP_NONLOCALOK is set, then the socket may be bound + * If INP_BINDANY is set, then the socket may be bound * to any endpoint address, local or not. */ - if ( -#if defined(IP_NONLOCALBIND) - ((inp->inp_flags & INP_NONLOCALOK) == 0) && -#endif - (ifa_ifwithaddr((struct sockaddr *)sin) == 0)) + if ((inp->inp_flags & INP_BINDANY) == 0 && + ifa_ifwithaddr((struct sockaddr *)sin) == NULL) return (EADDRNOTAVAIL); } laddr = sin->sin_addr; Modified: head/sys/netinet/in_pcb.h ============================================================================== --- head/sys/netinet/in_pcb.h Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet/in_pcb.h Mon Jun 1 10:30:00 2009 (r193217) @@ -410,8 +410,7 @@ void inp_4tuple_get(struct inpcb *inp, #define INP_FAITH 0x00000200 /* accept FAITH'ed connections */ #define INP_RECVTTL 0x00000400 /* receive incoming IP TTL */ #define INP_DONTFRAG 0x00000800 /* don't fragment packet */ -#define INP_NONLOCALOK 0x00001000 /* Allow bind to spoof any address */ - /* - requires options IP_NONLOCALBIND */ +#define INP_BINDANY 0x00001000 /* allow bind to any address */ #define INP_INHASHLIST 0x00002000 /* in_pcbinshash() has been called */ #define IN6P_IPV6_V6ONLY 0x00008000 /* restrict AF_INET6 socket for v6 */ #define IN6P_PKTINFO 0x00010000 /* receive IP6 dst and I/F */ Modified: head/sys/netinet/ip_output.c ============================================================================== --- head/sys/netinet/ip_output.c Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet/ip_output.c Mon Jun 1 10:30:00 2009 (r193217) @@ -33,7 +33,6 @@ __FBSDID("$FreeBSD$"); #include "opt_ipfw.h" -#include "opt_inet.h" #include "opt_ipsec.h" #include "opt_route.h" #include "opt_mac.h" @@ -103,12 +102,6 @@ SYSCTL_INT(_net_inet_ip, OID_AUTO, mbuf_ &mbuf_frag_size, 0, "Fragment outgoing mbufs to this size"); #endif -#if defined(IP_NONLOCALBIND) -static int ip_nonlocalok = 0; -SYSCTL_INT(_net_inet_ip, OID_AUTO, nonlocalok, - CTLFLAG_RW|CTLFLAG_SECURE, &ip_nonlocalok, 0, ""); -#endif - static void ip_mloopback (struct ifnet *, struct mbuf *, struct sockaddr_in *, int); @@ -931,14 +924,14 @@ ip_ctloutput(struct socket *so, struct s return (error); } -#if defined(IP_NONLOCALBIND) - case IP_NONLOCALOK: - if (! ip_nonlocalok) { - error = ENOPROTOOPT; - break; + case IP_BINDANY: + if (sopt->sopt_td != NULL) { + error = priv_check(sopt->sopt_td, + PRIV_NETINET_BINDANY); + if (error) + break; } /* FALLTHROUGH */ -#endif case IP_TOS: case IP_TTL: case IP_MINTTL: @@ -1010,11 +1003,9 @@ ip_ctloutput(struct socket *so, struct s case IP_DONTFRAG: OPTSET(INP_DONTFRAG); break; -#if defined(IP_NONLOCALBIND) - case IP_NONLOCALOK: - OPTSET(INP_NONLOCALOK); + case IP_BINDANY: + OPTSET(INP_BINDANY); break; -#endif } break; #undef OPTSET Modified: head/sys/netinet/raw_ip.c ============================================================================== --- head/sys/netinet/raw_ip.c Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet/raw_ip.c Mon Jun 1 10:30:00 2009 (r193217) @@ -853,15 +853,16 @@ rip_bind(struct socket *so, struct socka if (error != 0) return (error); + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("rip_bind: inp == NULL")); + if (TAILQ_EMPTY(&V_ifnet) || (addr->sin_family != AF_INET && addr->sin_family != AF_IMPLINK) || (addr->sin_addr.s_addr && - ifa_ifwithaddr((struct sockaddr *)addr) == 0)) + (inp->inp_flags & INP_BINDANY) == 0 && + ifa_ifwithaddr((struct sockaddr *)addr) == NULL)) return (EADDRNOTAVAIL); - inp = sotoinpcb(so); - KASSERT(inp != NULL, ("rip_bind: inp == NULL")); - INP_INFO_WLOCK(&V_ripcbinfo); INP_WLOCK(inp); rip_delhash(inp); Modified: head/sys/netinet6/in6.h ============================================================================== --- head/sys/netinet6/in6.h Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet6/in6.h Mon Jun 1 10:30:00 2009 (r193217) @@ -477,6 +477,8 @@ struct route_in6 { * the source address. */ +#define IPV6_BINDANY 64 /* bool: allow bind to any address */ + /* * The following option is private; do not use it from user applications. * It is deliberately defined to the same value as IP_MSFILTER. Modified: head/sys/netinet6/in6_pcb.c ============================================================================== --- head/sys/netinet6/in6_pcb.c Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet6/in6_pcb.c Mon Jun 1 10:30:00 2009 (r193217) @@ -163,11 +163,13 @@ in6_pcbbind(register struct inpcb *inp, if (so->so_options & SO_REUSEADDR) reuseport = SO_REUSEADDR|SO_REUSEPORT; } else if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - struct ifaddr *ia = NULL; + struct ifaddr *ia; sin6->sin6_port = 0; /* yech... */ - if ((ia = ifa_ifwithaddr((struct sockaddr *)sin6)) == 0) + if ((ia = ifa_ifwithaddr((struct sockaddr *)sin6)) == NULL && + (inp->inp_flags & INP_BINDANY) == 0) { return (EADDRNOTAVAIL); + } /* * XXX: bind to an anycast address might accidentally Modified: head/sys/netinet6/ip6_output.c ============================================================================== --- head/sys/netinet6/ip6_output.c Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/netinet6/ip6_output.c Mon Jun 1 10:30:00 2009 (r193217) @@ -1405,6 +1405,14 @@ ip6_ctloutput(struct socket *so, struct case IPV6_RECVTCLASS: case IPV6_V6ONLY: case IPV6_AUTOFLOWLABEL: + case IPV6_BINDANY: + if (optname == IPV6_BINDANY && td != NULL) { + error = priv_check(td, + PRIV_NETINET_BINDANY); + if (error) + break; + } + if (optlen != sizeof(int)) { error = EINVAL; break; @@ -1558,6 +1566,9 @@ do { \ OPTSET(IN6P_AUTOFLOWLABEL); break; + case IPV6_BINDANY: + OPTSET(INP_BINDANY); + break; } break; @@ -1831,6 +1842,10 @@ do { \ case IPV6_AUTOFLOWLABEL: optval = OPTBIT(IN6P_AUTOFLOWLABEL); break; + + case IPV6_BINDANY: + optval = OPTBIT(INP_BINDANY); + break; } if (error) break; Modified: head/sys/sys/priv.h ============================================================================== --- head/sys/sys/priv.h Mon Jun 1 10:04:37 2009 (r193216) +++ head/sys/sys/priv.h Mon Jun 1 10:30:00 2009 (r193217) @@ -374,6 +374,7 @@ #define PRIV_NETINET_IPSEC 503 /* Administer IPSEC. */ #define PRIV_NETINET_REUSEPORT 504 /* Allow [rapid] port/address reuse. */ #define PRIV_NETINET_SETHDROPTS 505 /* Set certain IPv4/6 header options. */ +#define PRIV_NETINET_BINDANY 506 /* Allow bind to any address. */ /* * IPX/SPX privileges. From pjd at FreeBSD.org Mon Jun 1 10:30:53 2009 From: pjd at FreeBSD.org (Pawel Jakub Dawidek) Date: Mon Jun 1 10:31:00 2009 Subject: svn commit: r193218 - head/share/man/man4 Message-ID: <200906011030.n51AUqiN072810@svn.freebsd.org> Author: pjd Date: Mon Jun 1 10:30:52 2009 New Revision: 193218 URL: http://svn.freebsd.org/changeset/base/193218 Log: Document IP_BINDANY IP socket option. Reviewed by: brueffer Modified: head/share/man/man4/ip.4 Modified: head/share/man/man4/ip.4 ============================================================================== --- head/share/man/man4/ip.4 Mon Jun 1 10:30:00 2009 (r193217) +++ head/share/man/man4/ip.4 Mon Jun 1 10:30:52 2009 (r193218) @@ -32,7 +32,7 @@ .\" @(#)ip.4 8.2 (Berkeley) 11/30/93 .\" $FreeBSD$ .\" -.Dd March 9, 2009 +.Dd June 1, 2009 .Dt IP 4 .Os .Sh NAME @@ -243,6 +243,23 @@ socket level option, otherwise the .Dv IP_ONESBCAST option has no effect. .Pp If the +.Dv IP_BINDANY +option is enabled on a +.Dv SOCK_STREAM , +.Dv SOCK_DGRAM +or a +.Dv SOCK_RAW +socket, one can +.Xr bind 2 +to any address, even one not bound to any available network interface in the +system. +This functionality (in conjunction with special firewall rules) can be used for +implementing a transparent proxy. +The +.Dv PRIV_NETINET_BINDANY +privilege is needed to set this option. +.Pp +If the .Dv IP_RECVTTL option is enabled on a .Dv SOCK_DGRAM From rwatson at FreeBSD.org Mon Jun 1 10:41:39 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 10:41:53 2009 Subject: svn commit: r193219 - in head/sys: kern net netatalk netinet netinet6 netipsec netipx netnatm sys Message-ID: <200906011041.n51AfcUu073049@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 10:41:38 2009 New Revision: 193219 URL: http://svn.freebsd.org/changeset/base/193219 Log: Reimplement the netisr framework in order to support parallel netisr threads: - Support up to one netisr thread per CPU, each processings its own workstream, or set of per-protocol queues. Threads may be bound to specific CPUs, or allowed to migrate, based on a global policy. In the future it would be desirable to support topology-centric policies, such as "one netisr per package". - Allow each protocol to advertise an ordering policy, which can currently be one of: NETISR_POLICY_SOURCE: packets must maintain ordering with respect to an implicit or explicit source (such as an interface or socket). NETISR_POLICY_FLOW: make use of mbuf flow identifiers to place work, as well as allowing protocols to provide a flow generation function for mbufs without flow identifers (m2flow). Falls back on NETISR_POLICY_SOURCE if now flow ID is available. NETISR_POLICY_CPU: allow protocols to inspect and assign a CPU for each packet handled by netisr (m2cpuid). - Provide utility functions for querying the number of workstreams being used, as well as a mapping function from workstream to CPU ID, which protocols may use in work placement decisions. - Add explicit interfaces to get and set per-protocol queue limits, and get and clear drop counters, which query data or apply changes across all workstreams. - Add a more extensible netisr registration interface, in which protocols declare 'struct netisr_handler' structures for each registered NETISR_ type. These include name, handler function, optional mbuf to flow ID function, optional mbuf to CPU ID function, queue limit, and ordering policy. Padding is present to allow these to be expanded in the future. If no queue limit is declared, then a default is used. - Queue limits are now per-workstream, and raised from the previous IFQ_MAXLEN default of 50 to 256. - All protocols are updated to use the new registration interface, and with the exception of netnatm, default queue limits. Most protocols register as NETISR_POLICY_SOURCE, except IPv4 and IPv6, which use NETISR_POLICY_FLOW, and will therefore take advantage of driver- generated flow IDs if present. - Formalize a non-packet based interface between interface polling and the netisr, rather than having polling pretend to be two protocols. Provide two explicit hooks in the netisr worker for start and end events for runs: netisr_poll() and netisr_pollmore(), as well as a function, netisr_sched_poll(), to allow the polling code to schedule netisr execution. DEVICE_POLLING still embeds single-netisr assumptions in its implementation, so for now if it is compiled into the kernel, a single and un-bound netisr thread is enforced regardless of tunable configuration. In the default configuration, the new netisr implementation maintains the same basic assumptions as the previous implementation: a single, un-bound worker thread processes all deferred work, and direct dispatch is enabled by default wherever possible. Performance measurement shows a marginal performance improvement over the old implementation due to the use of batched dequeue. An rmlock is used to synchronize use and registration/unregistration using the framework; currently, synchronized use is disabled (replicating current netisr policy) due to a measurable 3%-6% hit in ping-pong micro-benchmarking. It will be enabled once further rmlock optimization has taken place. However, in practice, netisrs are rarely registered or unregistered at runtime. A new man page for netisr will follow, but since one doesn't currently exist, it hasn't been updated. This change is not appropriate for MFC, although the polling shutdown handler should be merged to 7-STABLE. Bump __FreeBSD_version. Reviewed by: bz Modified: head/sys/kern/kern_poll.c head/sys/net/netisr.c head/sys/net/netisr.h head/sys/net/rtsock.c head/sys/netatalk/ddp_usrreq.c head/sys/netinet/if_ether.c head/sys/netinet/igmp.c head/sys/netinet/ip_divert.c head/sys/netinet/ip_input.c head/sys/netinet6/ip6_input.c head/sys/netinet6/vinet6.h head/sys/netipsec/ipsec_input.c head/sys/netipx/ipx_input.c head/sys/netnatm/natm_proto.c head/sys/sys/param.h head/sys/sys/pcpu.h Modified: head/sys/kern/kern_poll.c ============================================================================== --- head/sys/kern/kern_poll.c Mon Jun 1 10:30:52 2009 (r193218) +++ head/sys/kern/kern_poll.c Mon Jun 1 10:41:38 2009 (r193219) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include /* needed by net/if.h */ #include @@ -48,8 +49,6 @@ __FBSDID("$FreeBSD$"); #include #include -static void netisr_poll(void); /* the two netisr handlers */ -static void netisr_pollmore(void); static int poll_switch(SYSCTL_HANDLER_ARGS); void hardclock_device_poll(void); /* hook from hardclock */ @@ -110,6 +109,10 @@ SYSCTL_NODE(_kern, OID_AUTO, polling, CT SYSCTL_UINT(_kern_polling, OID_AUTO, burst, CTLFLAG_RD, &poll_burst, 0, "Current polling burst size"); +static int netisr_poll_scheduled; +static int netisr_pollmore_scheduled; +static int poll_shutting_down; + static int poll_burst_max_sysctl(SYSCTL_HANDLER_ARGS) { uint32_t val = poll_burst_max; @@ -260,12 +263,19 @@ struct pollrec { static struct pollrec pr[POLL_LIST_LEN]; static void +poll_shutdown(void *arg, int howto) +{ + + poll_shutting_down = 1; +} + +static void init_device_poll(void) { mtx_init(&poll_mtx, "polling", NULL, MTX_DEF); - netisr_register(NETISR_POLL, (netisr_t *)netisr_poll, NULL, 0); - netisr_register(NETISR_POLLMORE, (netisr_t *)netisr_pollmore, NULL, 0); + EVENTHANDLER_REGISTER(shutdown_post_sync, poll_shutdown, NULL, + SHUTDOWN_PRI_LAST); } SYSINIT(device_poll, SI_SUB_CLOCKS, SI_ORDER_MIDDLE, init_device_poll, NULL); @@ -289,7 +299,7 @@ hardclock_device_poll(void) static struct timeval prev_t, t; int delta; - if (poll_handlers == 0) + if (poll_handlers == 0 || poll_shutting_down) return; microuptime(&t); @@ -314,7 +324,9 @@ hardclock_device_poll(void) if (phase != 0) suspect++; phase = 1; - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); + netisr_poll_scheduled = 1; + netisr_pollmore_scheduled = 1; + netisr_sched_poll(); phase = 2; } if (pending_polls++ > 0) @@ -365,9 +377,16 @@ netisr_pollmore() int kern_load; mtx_lock(&poll_mtx); + if (!netisr_pollmore_scheduled) { + mtx_unlock(&poll_mtx); + return; + } + netisr_pollmore_scheduled = 0; phase = 5; if (residual_burst > 0) { - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); + netisr_poll_scheduled = 1; + netisr_pollmore_scheduled = 1; + netisr_sched_poll(); mtx_unlock(&poll_mtx); /* will run immediately on return, followed by netisrs */ return; @@ -397,23 +416,29 @@ netisr_pollmore() poll_burst -= (poll_burst / 8); if (poll_burst < 1) poll_burst = 1; - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); + netisr_poll_scheduled = 1; + netisr_pollmore_scheduled = 1; + netisr_sched_poll(); phase = 6; } mtx_unlock(&poll_mtx); } /* - * netisr_poll is scheduled by schednetisr when appropriate, typically once - * per tick. + * netisr_poll is typically scheduled once per tick. */ -static void +void netisr_poll(void) { int i, cycles; enum poll_cmd arg = POLL_ONLY; mtx_lock(&poll_mtx); + if (!netisr_poll_scheduled) { + mtx_unlock(&poll_mtx); + return; + } + netisr_poll_scheduled = 0; phase = 3; if (residual_burst == 0) { /* first call in this tick */ microuptime(&poll_start_t); Modified: head/sys/net/netisr.c ============================================================================== --- head/sys/net/netisr.c Mon Jun 1 10:30:52 2009 (r193218) +++ head/sys/net/netisr.c Mon Jun 1 10:41:38 2009 (r193219) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2001,2002,2003 Jonathan Lemon - * Copyright (c) 1997, Stefan Esser + * Copyright (c) 2007-2009 Robert N. M. Watson * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,230 +22,1103 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * netisr is a packet dispatch service, allowing synchronous (directly + * dispatched) and asynchronous (deferred dispatch) processing of packets by + * registered protocol handlers. Callers pass a protocol identifier and + * packet to netisr, along with a direct dispatch hint, and work will either + * be immediately processed with the registered handler, or passed to a + * kernel software interrupt (SWI) thread for deferred dispatch. Callers + * will generally select one or the other based on: + * + * - Might directly dispatching a netisr handler lead to code reentrance or + * lock recursion, such as entering the socket code from the socket code. + * - Might directly dispatching a netisr handler lead to recursive + * processing, such as when decapsulating several wrapped layers of tunnel + * information (IPSEC within IPSEC within ...). * - * $FreeBSD$ + * Maintaining ordering for protocol streams is a critical design concern. + * Enforcing ordering limits the opportunity for concurrency, but maintains + * the strong ordering requirements found in some protocols, such as TCP. Of + * related concern is CPU affinity--it is desirable to process all data + * associated with a particular stream on the same CPU over time in order to + * avoid acquiring locks associated with the connection on different CPUs, + * keep connection data in one cache, and to generally encourage associated + * user threads to live on the same CPU as the stream. It's also desirable + * to avoid lock migration and contention where locks are associated with + * more than one flow. + * + * netisr supports several policy variations, represented by the + * NETISR_POLICY_* constants, allowing protocols to play a varying role in + * identifying flows, assigning work to CPUs, etc. These are described in + * detail in netisr.h. */ +#include "opt_ddb.h" #include "opt_device_polling.h" #include #include -#include -#include -#include #include #include +#include #include -#include +#include +#include #include -#include -#include +#include +#include +#include +#include #include -#include +#include #include -#include -#include -#include -#include -#include +#ifdef DDB +#include +#endif #include -#include #include #include -volatile unsigned int netisr; /* scheduling bits for network */ +/*- + * Synchronize use and modification of the registered netisr data structures; + * acquire a read lock while modifying the set of registered protocols to + * prevent partially registered or unregistered protocols from being run. + * + * The following data structures and fields are protected by this lock: + * + * - The np array, including all fields of struct netisr_proto. + * - The nws array, including all fields of struct netisr_worker. + * - The nws_array array. + * + * Note: the NETISR_LOCKING define controls whether read locks are acquired + * in packet processing paths requiring netisr registration stability. This + * is disabled by default as it can lead to a measurable performance + * degradation even with rmlocks (3%-6% for loopback ping-pong traffic), and + * because netisr registration and unregistration is extremely rare at + * runtime. If it becomes more common, this decision should be revisited. + * + * XXXRW: rmlocks don't support assertions. + */ +static struct rmlock netisr_rmlock; +#define NETISR_LOCK_INIT() rm_init_flags(&netisr_rmlock, "netisr", \ + RM_NOWITNESS) +#define NETISR_LOCK_ASSERT() +#define NETISR_RLOCK(tracker) rm_rlock(&netisr_rmlock, (tracker)) +#define NETISR_RUNLOCK(tracker) rm_runlock(&netisr_rmlock, (tracker)) +#define NETISR_WLOCK() rm_wlock(&netisr_rmlock) +#define NETISR_WUNLOCK() rm_wunlock(&netisr_rmlock) +/* #define NETISR_LOCKING */ + +SYSCTL_NODE(_net, OID_AUTO, isr, CTLFLAG_RW, 0, "netisr"); + +/*- + * Three direct dispatch policies are supported: + * + * - Always defer: all work is scheduled for a netisr, regardless of context. + * (!direct) + * + * - Hybrid: if the executing context allows direct dispatch, and we're + * running on the CPU the work would be done on, then direct dispatch if it + * wouldn't violate ordering constraints on the workstream. + * (direct && !direct_force) + * + * - Always direct: if the executing context allows direct dispatch, always + * direct dispatch. (direct && direct_force) + * + * Notice that changing the global policy could lead to short periods of + * misordered processing, but this is considered acceptable as compared to + * the complexity of enforcing ordering during policy changes. + */ +static int netisr_direct_force = 1; /* Always direct dispatch. */ +TUNABLE_INT("net.isr.direct_force", &netisr_direct_force); +SYSCTL_INT(_net_isr, OID_AUTO, direct_force, CTLFLAG_RW, + &netisr_direct_force, 0, "Force direct dispatch"); + +static int netisr_direct = 1; /* Enable direct dispatch. */ +TUNABLE_INT("net.isr.direct", &netisr_direct); +SYSCTL_INT(_net_isr, OID_AUTO, direct, CTLFLAG_RW, + &netisr_direct, 0, "Enable direct dispatch"); + +/* + * Allow the administrator to limit the number of threads (CPUs) to use for + * netisr. We don't check netisr_maxthreads before creating the thread for + * CPU 0, so in practice we ignore values <= 1. This must be set at boot. + * We will create at most one thread per CPU. + */ +static int netisr_maxthreads = 1; /* Max number of threads. */ +TUNABLE_INT("net.isr.maxthreads", &netisr_maxthreads); +SYSCTL_INT(_net_isr, OID_AUTO, maxthreads, CTLFLAG_RD, + &netisr_maxthreads, 0, + "Use at most this many CPUs for netisr processing"); + +static int netisr_bindthreads = 0; /* Bind threads to CPUs. */ +TUNABLE_INT("net.isr.bindthreads", &netisr_bindthreads); +SYSCTL_INT(_net_isr, OID_AUTO, bindthreads, CTLFLAG_RD, + &netisr_bindthreads, 0, "Bind netisr threads to CPUs."); + +/* + * Limit per-workstream queues to at most net.isr.maxqlimit, both for initial + * configuration and later modification using netisr_setqlimit(). + */ +#define NETISR_DEFAULT_MAXQLIMIT 10240 +static u_int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; +TUNABLE_INT("net.isr.maxqlimit", &netisr_maxqlimit); +SYSCTL_INT(_net_isr, OID_AUTO, maxqlimit, CTLFLAG_RD, + &netisr_maxqlimit, 0, + "Maximum netisr per-protocol, per-CPU queue depth."); + +/* + * The default per-workstream queue limit for protocols that don't initialize + * the nh_qlimit field of their struct netisr_handler. If this is set above + * netisr_maxqlimit, we truncate it to the maximum during boot. + */ +#define NETISR_DEFAULT_DEFAULTQLIMIT 256 +static u_int netisr_defaultqlimit = NETISR_DEFAULT_DEFAULTQLIMIT; +TUNABLE_INT("net.isr.defaultqlimit", &netisr_defaultqlimit); +SYSCTL_INT(_net_isr, OID_AUTO, defaultqlimit, CTLFLAG_RD, + &netisr_defaultqlimit, 0, + "Default netisr per-protocol, per-CPU queue limit if not set by protocol"); + +/* + * Each protocol is described by a struct netisr_proto, which holds all + * global per-protocol information. This data structure is set up by + * netisr_register(), and derived from the public struct netisr_handler. + */ +struct netisr_proto { + const char *np_name; /* Character string protocol name. */ + netisr_handler_t *np_handler; /* Protocol handler. */ + netisr_m2flow_t *np_m2flow; /* Query flow for untagged packet. */ + netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ + u_int np_qlimit; /* Maximum per-CPU queue depth. */ + u_int np_policy; /* Work placement policy. */ +}; + +#define NETISR_MAXPROT 32 /* Compile-time limit. */ + +/* + * The np array describes all registered protocols, indexed by protocol + * number. + */ +static struct netisr_proto np[NETISR_MAXPROT]; + +/* + * Protocol-specific work for each workstream is described by struct + * netisr_work. Each work descriptor consists of an mbuf queue and + * statistics. + */ +struct netisr_work { + /* + * Packet queue, linked by m_nextpkt. + */ + struct mbuf *nw_head; + struct mbuf *nw_tail; + u_int nw_len; + u_int nw_qlimit; + u_int nw_watermark; + + /* + * Statistics -- written unlocked, but mostly from curcpu. + */ + u_int64_t nw_dispatched; /* Number of direct dispatches. */ + u_int64_t nw_hybrid_dispatched; /* "" hybrid dispatches. */ + u_int64_t nw_qdrops; /* "" drops. */ + u_int64_t nw_queued; /* "" enqueues. */ + u_int64_t nw_handled; /* "" handled in worker. */ +}; + +/* + * Workstreams hold a set of ordered work across each protocol, and are + * described by netisr_workstream. Each workstream is associated with a + * worker thread, which in turn is pinned to a CPU. Work associated with a + * workstream can be processd in other threads during direct dispatch; + * concurrent processing is prevented by the NWS_RUNNING flag, which + * indicates that a thread is already processing the work queue. + */ +struct netisr_workstream { + struct intr_event *nws_intr_event; /* Handler for stream. */ + void *nws_swi_cookie; /* swi(9) cookie for stream. */ + struct mtx nws_mtx; /* Synchronize work. */ + u_int nws_cpu; /* CPU pinning. */ + u_int nws_flags; /* Wakeup flags. */ + u_int nws_pendingbits; /* Scheduled protocols. */ + + /* + * Each protocol has per-workstream data. + */ + struct netisr_work nws_work[NETISR_MAXPROT]; +} __aligned(CACHE_LINE_SIZE); + +/* + * Per-CPU workstream data, indexed by CPU ID. + */ +static struct netisr_workstream nws[MAXCPU]; + +/* + * Map contiguous values between 0 and nws_count into CPU IDs appropriate for + * indexing the nws[] array. This allows constructions of the form + * nws[nws_array(arbitraryvalue % nws_count)]. + */ +static u_int nws_array[MAXCPU]; + +/* + * Number of registered workstreams. Will be at most the number of running + * CPUs once fully started. + */ +static u_int nws_count; +SYSCTL_INT(_net_isr, OID_AUTO, numthreads, CTLFLAG_RD, + &nws_count, 0, "Number of extant netisr threads."); + +/* + * Per-workstream flags. + */ +#define NWS_RUNNING 0x00000001 /* Currently running in a thread. */ +#define NWS_DISPATCHING 0x00000002 /* Currently being direct-dispatched. */ +#define NWS_SCHEDULED 0x00000004 /* Signal issued. */ + +/* + * Synchronization for each workstream: a mutex protects all mutable fields + * in each stream, including per-protocol state (mbuf queues). The SWI is + * woken up if asynchronous dispatch is required. + */ +#define NWS_LOCK(s) mtx_lock(&(s)->nws_mtx) +#define NWS_LOCK_ASSERT(s) mtx_assert(&(s)->nws_mtx, MA_OWNED) +#define NWS_UNLOCK(s) mtx_unlock(&(s)->nws_mtx) +#define NWS_SIGNAL(s) swi_sched((s)->nws_swi_cookie, 0) -struct netisr { - netisr_t *ni_handler; - struct ifqueue *ni_queue; - int ni_flags; -} netisrs[32]; +/* + * Utility routines for protocols that implement their own mapping of flows + * to CPUs. + */ +u_int +netisr_get_cpucount(void) +{ + + return (nws_count); +} -static void *net_ih; +u_int +netisr_get_cpuid(u_int cpunumber) +{ + + KASSERT(cpunumber < nws_count, ("%s: %u > %u", __func__, cpunumber, + nws_count)); + + return (nws_array[cpunumber]); +} + +/* + * The default implementation of -> CPU ID mapping. + * + * Non-static so that protocols can use it to map their own work to specific + * CPUs in a manner consistent to netisr for affinity purposes. + */ +u_int +netisr_default_flow2cpu(u_int flowid) +{ + return (nws_array[flowid % nws_count]); +} + +/* + * Register a new netisr handler, which requires initializing per-protocol + * fields for each workstream. All netisr work is briefly suspended while + * the protocol is installed. + */ void -legacy_setsoftnet(void) +netisr_register(const struct netisr_handler *nhp) { - swi_sched(net_ih, 0); + struct netisr_work *npwp; + const char *name; + u_int i, proto; + + proto = nhp->nh_proto; + name = nhp->nh_name; + + /* + * Test that the requested registration is valid. + */ + KASSERT(nhp->nh_name != NULL, + ("%s: nh_name NULL for %u", __func__, proto)); + KASSERT(nhp->nh_handler != NULL, + ("%s: nh_handler NULL for %s", __func__, name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_SOURCE || + nhp->nh_policy == NETISR_POLICY_FLOW || + nhp->nh_policy == NETISR_POLICY_CPU, + ("%s: unsupported nh_policy %u for %s", __func__, + nhp->nh_policy, name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_FLOW || + nhp->nh_m2flow == NULL, + ("%s: nh_policy != FLOW but m2flow defined for %s", __func__, + name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_CPU || nhp->nh_m2cpuid == NULL, + ("%s: nh_policy != CPU but m2cpuid defined for %s", __func__, + name)); + KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpuid != NULL, + ("%s: nh_policy == CPU but m2cpuid not defined for %s", __func__, + name)); + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u, %s): protocol too big", __func__, proto, name)); + + /* + * Test that no existing registration exists for this protocol. + */ + NETISR_WLOCK(); + KASSERT(np[proto].np_name == NULL, + ("%s(%u, %s): name present", __func__, proto, name)); + KASSERT(np[proto].np_handler == NULL, + ("%s(%u, %s): handler present", __func__, proto, name)); + + np[proto].np_name = name; + np[proto].np_handler = nhp->nh_handler; + np[proto].np_m2flow = nhp->nh_m2flow; + np[proto].np_m2cpuid = nhp->nh_m2cpuid; + if (nhp->nh_qlimit == 0) + np[proto].np_qlimit = netisr_defaultqlimit; + else if (nhp->nh_qlimit > netisr_maxqlimit) { + printf("%s: %s requested queue limit %u capped to " + "net.isr.maxqlimit %u\n", __func__, name, nhp->nh_qlimit, + netisr_maxqlimit); + np[proto].np_qlimit = netisr_maxqlimit; + } else + np[proto].np_qlimit = nhp->nh_qlimit; + np[proto].np_policy = nhp->nh_policy; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + bzero(npwp, sizeof(*npwp)); + npwp->nw_qlimit = np[proto].np_qlimit; + } + NETISR_WUNLOCK(); } +/* + * Clear drop counters across all workstreams for a protocol. + */ void -netisr_register(int num, netisr_t *handler, struct ifqueue *inq, int flags) +netisr_clearqdrops(const struct netisr_handler *nhp) { - - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - KASSERT(flags == 0, ("netisr_register: bad flags 0x%x\n", flags)); - netisrs[num].ni_handler = handler; - netisrs[num].ni_queue = inq; - netisrs[num].ni_flags = flags; + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u): protocol too big for %s", __func__, proto, name)); + + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("%s(%u): protocol not registered for %s", __func__, proto, + name)); + + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + npwp->nw_qdrops = 0; + } + NETISR_WUNLOCK(); } +/* + * Query the current drop counters across all workstreams for a protocol. + */ void -netisr_unregister(int num) +netisr_getqdrops(const struct netisr_handler *nhp, u_int64_t *qdropp) { - struct netisr *ni; - - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - ni = &netisrs[num]; - ni->ni_handler = NULL; - if (ni->ni_queue != NULL) - IF_DRAIN(ni->ni_queue); - ni->ni_queue = NULL; + struct netisr_work *npwp; + struct rm_priotracker tracker; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + *qdropp = 0; + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u): protocol too big for %s", __func__, proto, name)); + + NETISR_RLOCK(&tracker); + KASSERT(np[proto].np_handler != NULL, + ("%s(%u): protocol not registered for %s", __func__, proto, + name)); + + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + *qdropp += npwp->nw_qdrops; + } + NETISR_RUNLOCK(&tracker); } -struct isrstat { - int isrs_count; /* dispatch count */ - int isrs_directed; /* ...directly dispatched */ - int isrs_deferred; /* ...queued instead */ - int isrs_queued; /* intentionally queueued */ - int isrs_drop; /* dropped 'cuz no handler */ - int isrs_swi_count; /* swi_net handlers called */ -}; -static struct isrstat isrstat; +/* + * Query the current queue limit for per-workstream queues for a protocol. + */ +void +netisr_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp) +{ + struct rm_priotracker tracker; +#ifdef INVARIANTS + const char *name; +#endif + u_int proto; -SYSCTL_NODE(_net, OID_AUTO, isr, CTLFLAG_RW, 0, "netisr counters"); + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u): protocol too big for %s", __func__, proto, name)); -static int netisr_direct = 1; -SYSCTL_INT(_net_isr, OID_AUTO, direct, CTLFLAG_RW, - &netisr_direct, 0, "enable direct dispatch"); -TUNABLE_INT("net.isr.direct", &netisr_direct); + NETISR_RLOCK(&tracker); + KASSERT(np[proto].np_handler != NULL, + ("%s(%u): protocol not registered for %s", __func__, proto, + name)); + *qlimitp = np[proto].np_qlimit; + NETISR_RUNLOCK(&tracker); +} + +/* + * Update the queue limit across per-workstream queues for a protocol. We + * simply change the limits, and don't drain overflowed packets as they will + * (hopefully) take care of themselves shortly. + */ +int +netisr_setqlimit(const struct netisr_handler *nhp, u_int qlimit) +{ + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + if (qlimit > netisr_maxqlimit) + return (EINVAL); + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u): protocol too big for %s", __func__, proto, name)); + + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("%s(%u): protocol not registered for %s", __func__, proto, + name)); + + np[proto].np_qlimit = qlimit; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + npwp->nw_qlimit = qlimit; + } + NETISR_WUNLOCK(); + return (0); +} -SYSCTL_INT(_net_isr, OID_AUTO, count, CTLFLAG_RD, - &isrstat.isrs_count, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, directed, CTLFLAG_RD, - &isrstat.isrs_directed, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, deferred, CTLFLAG_RD, - &isrstat.isrs_deferred, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, queued, CTLFLAG_RD, - &isrstat.isrs_queued, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, drop, CTLFLAG_RD, - &isrstat.isrs_drop, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, swi_count, CTLFLAG_RD, - &isrstat.isrs_swi_count, 0, ""); - -/* - * Process all packets currently present in a netisr queue. Used to - * drain an existing set of packets waiting for processing when we - * begin direct dispatch, to avoid processing packets out of order. +/* + * Drain all packets currently held in a particular protocol work queue. */ static void -netisr_processqueue(struct netisr *ni) +netisr_drain_proto(struct netisr_work *npwp) { struct mbuf *m; - for (;;) { - IF_DEQUEUE(ni->ni_queue, m); - if (m == NULL) - break; - VNET_ASSERT(m->m_pkthdr.rcvif != NULL); - CURVNET_SET(m->m_pkthdr.rcvif->if_vnet); - ni->ni_handler(m); - CURVNET_RESTORE(); + /* + * We would assert the lock on the workstream but it's not passed in. + */ + while ((m = npwp->nw_head) != NULL) { + npwp->nw_head = m->m_nextpkt; + m->m_nextpkt = NULL; + if (npwp->nw_head == NULL) + npwp->nw_tail = NULL; + npwp->nw_len--; + m_freem(m); } + KASSERT(npwp->nw_tail == NULL, ("%s: tail", __func__)); + KASSERT(npwp->nw_len == 0, ("%s: len", __func__)); } /* - * Call the netisr directly instead of queueing the packet, if possible. + * Remove the registration of a network protocol, which requires clearing + * per-protocol fields across all workstreams, including freeing all mbufs in + * the queues at time of unregister. All work in netisr is briefly suspended + * while this takes place. */ void -netisr_dispatch(int num, struct mbuf *m) +netisr_unregister(const struct netisr_handler *nhp) { - struct netisr *ni; - - isrstat.isrs_count++; /* XXX redundant */ - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - ni = &netisrs[num]; - if (ni->ni_queue == NULL) { - isrstat.isrs_drop++; - m_freem(m); - return; + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("%s(%u): protocol too big for %s", __func__, proto, name)); + + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("%s(%u): protocol not registered for %s", __func__, proto, + name)); + + np[proto].np_name = NULL; + np[proto].np_handler = NULL; + np[proto].np_m2flow = NULL; + np[proto].np_m2cpuid = NULL; + np[proto].np_qlimit = 0; + np[proto].np_policy = 0; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + netisr_drain_proto(npwp); + bzero(npwp, sizeof(*npwp)); } + NETISR_WUNLOCK(); +} + +/* + * Look up the workstream given a packet and source identifier. Do this by + * checking the protocol's policy, and optionally call out to the protocol + * for assistance if required. + */ +static struct mbuf * +netisr_select_cpuid(struct netisr_proto *npp, uintptr_t source, + struct mbuf *m, u_int *cpuidp) +{ + struct ifnet *ifp; + + NETISR_LOCK_ASSERT(); /* - * Directly dispatch handling of this packet, if permitted by global - * policy. Source ordering is maintained by virtue of callers - * consistently calling one of queued or direct dispatch. + * In the event we have only one worker, shortcut and deliver to it + * without further ado. */ - if (netisr_direct) { - isrstat.isrs_directed++; - ni->ni_handler(m); + if (nws_count == 1) { + *cpuidp = nws_array[0]; + return (m); + } + + /* + * What happens next depends on the policy selected by the protocol. + * If we want to support per-interface policies, we should do that + * here first. + */ + switch (npp->np_policy) { + case NETISR_POLICY_CPU: + return (npp->np_m2cpuid(m, source, cpuidp)); + + case NETISR_POLICY_FLOW: + if (!(m->m_flags & M_FLOWID) && npp->np_m2flow != NULL) { + m = npp->np_m2flow(m, source); + if (m == NULL) + return (NULL); + } + if (m->m_flags & M_FLOWID) { + *cpuidp = + netisr_default_flow2cpu(m->m_pkthdr.flowid); + return (m); + } + /* FALLTHROUGH */ + + case NETISR_POLICY_SOURCE: + ifp = m->m_pkthdr.rcvif; + if (ifp != NULL) + *cpuidp = nws_array[(ifp->if_index + source) % + nws_count]; + else + *cpuidp = nws_array[source % nws_count]; + return (m); + + default: + panic("%s: invalid policy %u for %s", __func__, + npp->np_policy, npp->np_name); + } +} + +/* + * Process packets associated with a workstream and protocol. For reasons of + * fairness, we process up to one complete netisr queue at a time, moving the + * queue to a stack-local queue for processing, but do not loop refreshing + * from the global queue. The caller is responsible for deciding whether to + * loop, and for setting the NWS_RUNNING flag. The passed workstream will be + * locked on entry and relocked before return, but will be released while + * processing. The number of packets processed is returned. + */ +static u_int +netisr_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) +{ + struct netisr_work local_npw, *npwp; + u_int handled; + struct mbuf *m; + + NETISR_LOCK_ASSERT(); + NWS_LOCK_ASSERT(nwsp); + + KASSERT(nwsp->nws_flags & NWS_RUNNING, + ("%s(%u): not running", __func__, proto)); + KASSERT(proto >= 0 && proto < NETISR_MAXPROT, + ("%s(%u): invalid proto\n", __func__, proto)); + + npwp = &nwsp->nws_work[proto]; + if (npwp->nw_len == 0) + return (0); + + /* + * Move the global work queue to a thread-local work queue. + * + * Notice that this means the effective maximum length of the queue + * is actually twice that of the maximum queue length specified in + * the protocol registration call. + */ + handled = npwp->nw_len; + local_npw = *npwp; + npwp->nw_head = NULL; + npwp->nw_tail = NULL; + npwp->nw_len = 0; + nwsp->nws_pendingbits &= ~(1 << proto); + NWS_UNLOCK(nwsp); + while ((m = local_npw.nw_head) != NULL) { + local_npw.nw_head = m->m_nextpkt; + m->m_nextpkt = NULL; + if (local_npw.nw_head == NULL) + local_npw.nw_tail = NULL; + local_npw.nw_len--; + VNET_ASSERT(m->m_pkthdr.rcvif != NULL); + CURVNET_SET(m->m_pkthdr.rcvif->if_vnet); + np[proto].np_handler(m); + CURVNET_RESTORE(); + } + KASSERT(local_npw.nw_len == 0, + ("%s(%u): len %u", __func__, proto, local_npw.nw_len)); + NWS_LOCK(nwsp); + npwp->nw_handled += handled; + return (handled); +} + +/* + * SWI handler for netisr -- processes prackets in a set of workstreams that + * it owns, woken up by calls to NWS_SIGNAL(). If this workstream is already + * being direct dispatched, go back to sleep and wait for the dispatching + * thread to wake us up again. + */ +static void +swi_net(void *arg) +{ +#ifdef NETISR_LOCKING + struct rm_priotracker tracker; +#endif + struct netisr_workstream *nwsp; + u_int bits, prot; + + nwsp = arg; + +#ifdef DEVICE_POLLING + KASSERT(nws_count == 1, + ("%s: device_polling but nws_count != 1", __func__)); + netisr_poll(); +#endif +#ifdef NETISR_LOCKING + NETISR_RLOCK(&tracker); +#endif + NWS_LOCK(nwsp); + KASSERT(!(nwsp->nws_flags & NWS_RUNNING), ("swi_net: running")); + if (nwsp->nws_flags & NWS_DISPATCHING) + goto out; + nwsp->nws_flags |= NWS_RUNNING; + nwsp->nws_flags &= ~NWS_SCHEDULED; + while ((bits = nwsp->nws_pendingbits) != 0) { + while ((prot = ffs(bits)) != 0) { + prot--; + bits &= ~(1 << prot); + (void)netisr_process_workstream_proto(nwsp, prot); + } + } + nwsp->nws_flags &= ~NWS_RUNNING; +out: + NWS_UNLOCK(nwsp); +#ifdef NETISR_LOCKING + NETISR_RUNLOCK(&tracker); +#endif +#ifdef DEVICE_POLLING + netisr_pollmore(); +#endif +} + +static int +netisr_queue_workstream(struct netisr_workstream *nwsp, u_int proto, + struct netisr_work *npwp, struct mbuf *m, int *dosignalp) +{ + + NWS_LOCK_ASSERT(nwsp); + + *dosignalp = 0; + if (npwp->nw_len < npwp->nw_qlimit) { + m->m_nextpkt = NULL; + if (npwp->nw_head == NULL) { + npwp->nw_head = m; + npwp->nw_tail = m; + } else { + npwp->nw_tail->m_nextpkt = m; + npwp->nw_tail = m; + } + npwp->nw_len++; + if (npwp->nw_len > npwp->nw_watermark) + npwp->nw_watermark = npwp->nw_len; + nwsp->nws_pendingbits |= (1 << proto); + if (!(nwsp->nws_flags & + (NWS_RUNNING | NWS_DISPATCHING | NWS_SCHEDULED))) { + nwsp->nws_flags |= NWS_SCHEDULED; + *dosignalp = 1; /* Defer until unlocked. */ + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From delphij at FreeBSD.org Mon Jun 1 10:49:09 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 10:49:17 2009 Subject: svn commit: r193220 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/bce dev/cxgb Message-ID: <200906011049.n51An8ew076617@svn.freebsd.org> Author: delphij Date: Mon Jun 1 10:49:08 2009 New Revision: 193220 URL: http://svn.freebsd.org/changeset/base/193220 Log: DMA synchronization fixes: - In bce_rx_intr(), use BUS_DMASYNC_POSTREAD instead of BUS_DMASYNC_POSTWRITE, as we want to "read" from the rx page chain pages. - Document why we need to do PREWRITE after we have updated the rx page chain pages. - In bce_intr(), use BUS_DMASYNC_POSTREAD and BUS_DMASYNC_PREREAD when before and after CPU "reading" the status block. - Adjust some nearby style mismatches/etc. Pointed out by: yongari Approved by: davidch (no objection) but bugs are mine :) Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/bce/if_bce.c stable/7/sys/dev/cxgb/ (props changed) Modified: stable/7/sys/dev/bce/if_bce.c ============================================================================== --- stable/7/sys/dev/bce/if_bce.c Mon Jun 1 10:41:38 2009 (r193219) +++ stable/7/sys/dev/bce/if_bce.c Mon Jun 1 10:49:08 2009 (r193220) @@ -4884,7 +4884,7 @@ bce_get_rx_buf(struct bce_softc *sc, str KASSERT(nsegs == 1, ("%s(): Too many segments returned (%d)!", __FUNCTION__, nsegs)); - /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREWRITE) here? */ + /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ /* Setup the rx_bd for the segment. */ rxbd = &sc->rx_bd_chain[RX_PAGE(*chain_prod)][RX_IDX(*chain_prod)]; @@ -4993,7 +4993,7 @@ bce_get_pg_buf(struct bce_softc *sc, str goto bce_get_pg_buf_exit; } - /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREWRITE) here? */ + /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ /* * The page chain uses the same rx_bd data structure @@ -5270,13 +5270,11 @@ bce_init_rx_chain(struct bce_softc *sc) rxbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->rx_bd_chain_paddr[j])); } -/* Fill up the RX chain. */ + /* Fill up the RX chain. */ bce_fill_rx_chain(sc); for (i = 0; i < RX_PAGES; i++) { - bus_dmamap_sync( - sc->rx_bd_chain_tag, - sc->rx_bd_chain_map[i], + bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } @@ -5447,9 +5445,7 @@ bce_init_pg_chain(struct bce_softc *sc) bce_fill_pg_chain(sc); for (i = 0; i < PG_PAGES; i++) { - bus_dmamap_sync( - sc->pg_bd_chain_tag, - sc->pg_bd_chain_map[i], + bus_dmamap_sync(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } @@ -5732,13 +5728,13 @@ bce_rx_intr(struct bce_softc *sc) /* Prepare the RX chain pages to be accessed by the host CPU. */ for (int i = 0; i < RX_PAGES; i++) bus_dmamap_sync(sc->rx_bd_chain_tag, - sc->rx_bd_chain_map[i], BUS_DMASYNC_POSTWRITE); + sc->rx_bd_chain_map[i], BUS_DMASYNC_POSTREAD); #ifdef ZERO_COPY_SOCKETS /* Prepare the page chain pages to be accessed by the host CPU. */ for (int i = 0; i < PG_PAGES; i++) bus_dmamap_sync(sc->pg_bd_chain_tag, - sc->pg_bd_chain_map[i], BUS_DMASYNC_POSTWRITE); + sc->pg_bd_chain_map[i], BUS_DMASYNC_POSTREAD); #endif /* Get the hardware's view of the RX consumer index. */ @@ -5765,9 +5761,8 @@ bce_rx_intr(struct bce_softc *sc) sw_rx_cons_idx = RX_CHAIN_IDX(sw_rx_cons); /* Unmap the mbuf from DMA space. */ - bus_dmamap_sync(sc->rx_mbuf_tag, - sc->rx_mbuf_map[sw_rx_cons_idx], - BUS_DMASYNC_POSTREAD); + bus_dmamap_sync(sc->rx_mbuf_tag, sc->rx_mbuf_map[sw_rx_cons_idx], + BUS_DMASYNC_POSTREAD); bus_dmamap_unload(sc->rx_mbuf_tag, sc->rx_mbuf_map[sw_rx_cons_idx]); @@ -6011,6 +6006,7 @@ bce_rx_int_next_rx: sc->rx_cons = sw_rx_cons; bce_fill_rx_chain(sc); + /* Prepare the page chain pages to be accessed by the NIC. */ for (int i = 0; i < RX_PAGES; i++) bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], BUS_DMASYNC_PREWRITE); @@ -7023,8 +7019,9 @@ bce_intr(void *xsc) DBRUN(sc->interrupts_generated++); + /* Synchnorize before we read from interface's status block */ bus_dmamap_sync(sc->status_tag, sc->status_map, - BUS_DMASYNC_POSTWRITE); + BUS_DMASYNC_POSTREAD); /* * If the hardware status block index @@ -7112,7 +7109,7 @@ bce_intr(void *xsc) } bus_dmamap_sync(sc->status_tag, sc->status_map, - BUS_DMASYNC_PREWRITE); + BUS_DMASYNC_PREREAD); /* Re-enable interrupts. */ bce_enable_intr(sc, 0); From rse at FreeBSD.org Mon Jun 1 10:50:18 2009 From: rse at FreeBSD.org (Ralf S. Engelschall) Date: Mon Jun 1 10:50:24 2009 Subject: svn commit: r193221 - head/bin/sh Message-ID: <200906011050.n51AoH4n076677@svn.freebsd.org> Author: rse Date: Mon Jun 1 10:50:17 2009 New Revision: 193221 URL: http://svn.freebsd.org/changeset/base/193221 Log: be more type correct and align local ckmalloc() with its underlying malloc(3) by using a "size_t" instead of an "int" argument Modified: head/bin/sh/alias.c head/bin/sh/memalloc.c head/bin/sh/memalloc.h head/bin/sh/mkinit.c Modified: head/bin/sh/alias.c ============================================================================== --- head/bin/sh/alias.c Mon Jun 1 10:49:08 2009 (r193220) +++ head/bin/sh/alias.c Mon Jun 1 10:50:17 2009 (r193221) @@ -97,7 +97,7 @@ setalias(char *name, char *val) ap->val = savestr(val); #else /* hack */ { - int len = strlen(val); + size_t len = strlen(val); ap->val = ckmalloc(len + 2); memcpy(ap->val, val, len); ap->val[len] = ' '; /* fluff */ Modified: head/bin/sh/memalloc.c ============================================================================== --- head/bin/sh/memalloc.c Mon Jun 1 10:49:08 2009 (r193220) +++ head/bin/sh/memalloc.c Mon Jun 1 10:50:17 2009 (r193221) @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); */ pointer -ckmalloc(int nbytes) +ckmalloc(size_t nbytes) { pointer p; Modified: head/bin/sh/memalloc.h ============================================================================== --- head/bin/sh/memalloc.h Mon Jun 1 10:49:08 2009 (r193220) +++ head/bin/sh/memalloc.h Mon Jun 1 10:50:17 2009 (r193221) @@ -33,6 +33,8 @@ * $FreeBSD$ */ +#include + struct stackmark { struct stack_block *stackp; char *stacknxt; @@ -46,7 +48,7 @@ extern int stacknleft; extern int sstrnleft; extern int herefd; -pointer ckmalloc(int); +pointer ckmalloc(size_t); pointer ckrealloc(pointer, int); void ckfree(pointer); char *savestr(char *); Modified: head/bin/sh/mkinit.c ============================================================================== --- head/bin/sh/mkinit.c Mon Jun 1 10:49:08 2009 (r193220) +++ head/bin/sh/mkinit.c Mon Jun 1 10:50:17 2009 (r193221) @@ -159,7 +159,7 @@ void addstr(char *, struct text *); void addchar(int, struct text *); void writetext(struct text *, FILE *); FILE *ckfopen(char *, char *); -void *ckmalloc(int); +void *ckmalloc(size_t); char *savestr(char *); void error(char *); @@ -464,7 +464,7 @@ ckfopen(char *file, char *mode) } void * -ckmalloc(int nbytes) +ckmalloc(size_t nbytes) { char *p; From rse at FreeBSD.org Mon Jun 1 11:02:11 2009 From: rse at FreeBSD.org (Ralf S. Engelschall) Date: Mon Jun 1 11:02:21 2009 Subject: svn commit: r193222 - head/bin/sh Message-ID: <200906011102.n51B2AFv076962@svn.freebsd.org> Author: rse Date: Mon Jun 1 11:02:09 2009 New Revision: 193222 URL: http://svn.freebsd.org/changeset/base/193222 Log: correctly test for __GNUC__ macro (non-GCC compilers do not have it defined at all) Modified: head/bin/sh/eval.c head/bin/sh/parser.c head/bin/sh/var.c Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Mon Jun 1 10:50:17 2009 (r193221) +++ head/bin/sh/eval.c Mon Jun 1 11:02:09 2009 (r193222) @@ -594,7 +594,7 @@ evalcommand(union node *cmd, int flags, char *lastarg; int realstatus; int do_clearcmdentry; -#if __GNUC__ +#ifdef __GNUC__ /* Avoid longjmp clobbering */ (void) &argv; (void) &argc; Modified: head/bin/sh/parser.c ============================================================================== --- head/bin/sh/parser.c Mon Jun 1 10:50:17 2009 (r193221) +++ head/bin/sh/parser.c Mon Jun 1 11:02:09 2009 (r193222) @@ -898,7 +898,7 @@ readtoken1(int firstc, char const *synta int oldstyle; char const *prevsyntax; /* syntax before arithmetic */ int synentry; -#if __GNUC__ +#ifdef __GNUC__ /* Avoid longjmp clobbering */ (void) &out; (void) "ef; @@ -1323,7 +1323,7 @@ parsebackq: { struct jmploc *volatile savehandler; int savelen; int saveprompt; -#if __GNUC__ +#ifdef __GNUC__ /* Avoid longjmp clobbering */ (void) &saveprompt; #endif Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Mon Jun 1 10:50:17 2009 (r193221) +++ head/bin/sh/var.c Mon Jun 1 11:02:09 2009 (r193222) @@ -195,7 +195,7 @@ setvarsafe(char *name, char *val, int fl struct jmploc jmploc; struct jmploc *volatile savehandler = handler; int err = 0; -#if __GNUC__ +#ifdef __GNUC__ /* Avoid longjmp clobbering */ (void) &err; #endif From rse at FreeBSD.org Mon Jun 1 11:11:47 2009 From: rse at FreeBSD.org (Ralf S. Engelschall) Date: Mon Jun 1 11:11:59 2009 Subject: svn commit: r193223 - head/bin/sh Message-ID: <200906011111.n51BBkZt077175@svn.freebsd.org> Author: rse Date: Mon Jun 1 11:11:46 2009 New Revision: 193223 URL: http://svn.freebsd.org/changeset/base/193223 Log: align coding style with style(9) to avoid misunderstandings Modified: head/bin/sh/exec.c Modified: head/bin/sh/exec.c ============================================================================== --- head/bin/sh/exec.c Mon Jun 1 11:02:09 2009 (r193222) +++ head/bin/sh/exec.c Mon Jun 1 11:11:46 2009 (r193223) @@ -187,7 +187,8 @@ padvance(char **path, char *name) if (*path == NULL) return NULL; start = *path; - for (p = start ; *p && *p != ':' && *p != '%' ; p++); + for (p = start; *p && *p != ':' && *p != '%'; p++) + ; /* nothing */ len = p - start + strlen(name) + 2; /* "2" is for '/' and '\0' */ while (stackblocksize() < len) growstackblock(); From rse at FreeBSD.org Mon Jun 1 11:38:39 2009 From: rse at FreeBSD.org (Ralf S. Engelschall) Date: Mon Jun 1 11:38:50 2009 Subject: svn commit: r193225 - head/bin/sh Message-ID: <200906011138.n51BcduU077727@svn.freebsd.org> Author: rse Date: Mon Jun 1 11:38:38 2009 New Revision: 193225 URL: http://svn.freebsd.org/changeset/base/193225 Log: use explicit 'unsigned int' instead of just the implicit-style 'unsigned' to make linting tools (e.g. FlexeLint) happy, too Modified: head/bin/sh/mksyntax.c Modified: head/bin/sh/mksyntax.c ============================================================================== --- head/bin/sh/mksyntax.c Mon Jun 1 11:15:54 2009 (r193224) +++ head/bin/sh/mksyntax.c Mon Jun 1 11:38:38 2009 (r193225) @@ -354,7 +354,7 @@ output_type_macros(void) char **pp; if (digit_contig) - macro[0] = "#define is_digit(c)\t((unsigned)((c) - '0') <= 9)"; + macro[0] = "#define is_digit(c)\t((unsigned int)((c) - '0') <= 9)"; for (pp = macro ; *pp ; pp++) fprintf(hfile, "%s\n", *pp); if (digit_contig) From mav at FreeBSD.org Mon Jun 1 13:13:48 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Mon Jun 1 13:17:57 2009 Subject: svn commit: r193228 - head/sys/dev/sound/pci/hda Message-ID: <200906011313.n51DDl9f079872@svn.freebsd.org> Author: mav Date: Mon Jun 1 13:13:47 2009 New Revision: 193228 URL: http://svn.freebsd.org/changeset/base/193228 Log: Comment out old Realtek ALC883 quirk, that was disabling phantop power on mic inputs. I have no idea what for it was made that time, but now I have several reports that it should be removed to make microphones work. If this quirk is still required for some systems then they should be identified and specified explicitly. Modified: head/sys/dev/sound/pci/hda/hdac.c Modified: head/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- head/sys/dev/sound/pci/hda/hdac.c Mon Jun 1 12:29:27 2009 (r193227) +++ head/sys/dev/sound/pci/hda/hdac.c Mon Jun 1 13:13:47 2009 (r193228) @@ -83,7 +83,7 @@ #include "mixer_if.h" -#define HDA_DRV_TEST_REV "20090401_0132" +#define HDA_DRV_TEST_REV "20090601_0133" SND_DECLARE_FILE("$FreeBSD$"); @@ -4657,6 +4657,7 @@ hdac_vendor_patch_parse(struct hdac_devi } switch (id) { +#if 0 case HDA_CODEC_ALC883: /* * nid: 24/25 = External (jack) or Internal (fixed) Mic. @@ -4686,6 +4687,7 @@ hdac_vendor_patch_parse(struct hdac_devi * nid: 26 = Line-in, leave it alone. */ break; +#endif case HDA_CODEC_AD1983: /* * This codec has several possible usages, but none From jhb at FreeBSD.org Mon Jun 1 14:20:14 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 14:20:38 2009 Subject: svn commit: r193229 - head/sys/boot/i386/libi386 Message-ID: <200906011420.n51EKEMT081350@svn.freebsd.org> Author: jhb Date: Mon Jun 1 14:20:13 2009 New Revision: 193229 URL: http://svn.freebsd.org/changeset/base/193229 Log: Add a missing parameter when displaying GPT partitions with an unknown UUID. Submitted by: Pawel Worach pawel.worach | gmail MFC after: 1 week Modified: head/sys/boot/i386/libi386/biosdisk.c Modified: head/sys/boot/i386/libi386/biosdisk.c ============================================================================== --- head/sys/boot/i386/libi386/biosdisk.c Mon Jun 1 13:13:47 2009 (r193228) +++ head/sys/boot/i386/libi386/biosdisk.c Mon Jun 1 14:20:13 2009 (r193229) @@ -387,6 +387,7 @@ bd_printgptpart(struct open_disk *od, st sprintf(line, "%s: FreeBSD swap%s\n", prefix, stats); else sprintf(line, "%s: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x%s\n", + prefix, gp->gp_type.time_low, gp->gp_type.time_mid, gp->gp_type.time_hi_and_version, gp->gp_type.clock_seq_hi_and_reserved, gp->gp_type.clock_seq_low, From jhb at freebsd.org Mon Jun 1 14:26:21 2009 From: jhb at freebsd.org (John Baldwin) Date: Mon Jun 1 14:26:36 2009 Subject: svn commit: r193159 - head/sys/powerpc/powermac In-Reply-To: <200905311002.n4VA2K6c037776@svn.freebsd.org> References: <200905311002.n4VA2K6c037776@svn.freebsd.org> Message-ID: <200906010822.19951.jhb@freebsd.org> On Sunday 31 May 2009 6:02:20 am Nathan Whitehorn wrote: > Author: nwhitehorn > Date: Sun May 31 10:02:20 2009 > New Revision: 193159 > URL: http://svn.freebsd.org/changeset/base/193159 > > Log: > Provide an analogous sysctl to hw.acpi.acline (dev.pmu.0.acline) to > determine whether the computer is plugged in to mains power. I wonder if it would be a good idea to introduce a platform-independent 'acline' sysctl? Something like 'hw.acline'? For now we could simply have these devices create it. We could do something fancier where AC adapter drivers register with a centralized thingie at some point and it exports a global setting that is true so long as at least one adapter is online. I'm not sure that level of complexity is warranted until we have platforms with multiple AC lines exposed to the OS though. -- John Baldwin From bms at incunabulum.net Mon Jun 1 14:34:18 2009 From: bms at incunabulum.net (Bruce Simpson) Date: Mon Jun 1 14:34:24 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <200906010537.n515bDou065357@svn.freebsd.org> References: <200906010537.n515bDou065357@svn.freebsd.org> Message-ID: <4A23E6E4.7020506@incunabulum.net> Doug Barton wrote: > Log: > Eliminate the warning that "Values of network_interfaces other than > AUTO are deprecated.' There is no good reason to deprecate them, and > setting this to different values can be useful for custom solutions > and/or one-off configuration problems. > Thanks, I wasn't sure what the alternative to this functionality was going to be, and was relying on this mechanism for a product. From rwatson at FreeBSD.org Mon Jun 1 15:03:59 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 15:04:05 2009 Subject: svn commit: r193230 - head/sys/net Message-ID: <200906011503.n51F3wp5082274@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 15:03:58 2009 New Revision: 193230 URL: http://svn.freebsd.org/changeset/base/193230 Log: Garbage collect NETISR_POLL and NETISR_POLLMORE, which are no longer required for options DEVICE_POLLING. De-fragment the NETISR_ constant space and lower NETISR_MAXPROT from 32 to 16 -- when sizing queue arrays using this compile-time constant, significant amounts of memory are saved. Warn on the console when tunable values for netisr are automatically adjusted during boot due to exceeding limits, invalid values, or as a result of DEVICE_POLLING. Modified: head/sys/net/netisr.c head/sys/net/netisr.h Modified: head/sys/net/netisr.c ============================================================================== --- head/sys/net/netisr.c Mon Jun 1 14:20:13 2009 (r193229) +++ head/sys/net/netisr.c Mon Jun 1 15:03:58 2009 (r193230) @@ -201,7 +201,7 @@ struct netisr_proto { u_int np_policy; /* Work placement policy. */ }; -#define NETISR_MAXPROT 32 /* Compile-time limit. */ +#define NETISR_MAXPROT 16 /* Compile-time limit. */ /* * The np array describes all registered protocols, indexed by protocol @@ -1045,20 +1045,31 @@ netisr_init(void *arg) KASSERT(curcpu == 0, ("%s: not on CPU 0", __func__)); NETISR_LOCK_INIT(); - if (netisr_maxthreads < 1) + if (netisr_maxthreads < 1) { + printf("netisr2: forcing maxthreads to 1\n"); netisr_maxthreads = 1; - if (netisr_maxthreads > MAXCPU) + } + if (netisr_maxthreads > MAXCPU) { + printf("netisr2: forcing maxthreads to %d\n", MAXCPU); netisr_maxthreads = MAXCPU; - if (netisr_defaultqlimit > netisr_maxqlimit) + } + if (netisr_defaultqlimit > netisr_maxqlimit) { + printf("netisr2: forcing defaultqlimit to %d\n", + netisr_maxqlimit); netisr_defaultqlimit = netisr_maxqlimit; + } #ifdef DEVICE_POLLING /* * The device polling code is not yet aware of how to deal with * multiple netisr threads, so for the time being compiling in device * polling disables parallel netisr workers. */ - netisr_maxthreads = 1; - netisr_bindthreads = 0; + if (netisr_maxthreads != 1 || netisr_bindthreads != 0) { + printf("netisr2: forcing maxthreads to 1 and bindthreads to " + "0 for device polling\n"); + netisr_maxthreads = 1; + netisr_bindthreads = 0; + } #endif netisr_start_swi(curcpu, pcpu_find(curcpu)); Modified: head/sys/net/netisr.h ============================================================================== --- head/sys/net/netisr.h Mon Jun 1 14:20:13 2009 (r193229) +++ head/sys/net/netisr.h Mon Jun 1 15:03:58 2009 (r193230) @@ -39,19 +39,17 @@ * Historically, this was implemented by the BSD software ISR facility; it is * now implemented via a software ithread (SWI). */ -#define NETISR_POLL 0 /* polling callback, must be first */ -#define NETISR_IP 2 /* same as AF_INET */ -#define NETISR_IGMP 3 /* IGMPv3 output queue */ -#define NETISR_ROUTE 14 /* routing socket */ -#define NETISR_AARP 15 /* Appletalk ARP */ -#define NETISR_ATALK2 16 /* Appletalk phase 2 */ -#define NETISR_ATALK1 17 /* Appletalk phase 1 */ -#define NETISR_ARP 18 /* same as AF_LINK */ -#define NETISR_IPX 23 /* same as AF_IPX */ -#define NETISR_ETHER 24 /* ethernet input */ -#define NETISR_IPV6 27 -#define NETISR_NATM 28 -#define NETISR_POLLMORE 31 /* polling callback, must be last */ +#define NETISR_IP 1 +#define NETISR_IGMP 2 /* IGMPv3 output queue */ +#define NETISR_ROUTE 3 /* routing socket */ +#define NETISR_AARP 4 /* Appletalk ARP */ +#define NETISR_ATALK2 5 /* Appletalk phase 2 */ +#define NETISR_ATALK1 6 /* Appletalk phase 1 */ +#define NETISR_ARP 7 /* same as AF_LINK */ +#define NETISR_IPX 8 /* same as AF_IPX */ +#define NETISR_ETHER 9 /* ethernet input */ +#define NETISR_IPV6 10 +#define NETISR_NATM 11 /*- * Protocols express ordering constraints and affinity preferences by From tevans.uk at googlemail.com Mon Jun 1 15:13:23 2009 From: tevans.uk at googlemail.com (Tom Evans) Date: Mon Jun 1 15:13:35 2009 Subject: svn commit: r192800 - in head/sys: cddl/compat/opensolaris/kern cddl/compat/opensolaris/sys cddl/contrib/opensolaris/common/acl cddl/contrib/opensolaris/uts/common/fs/zfs cddl/contrib/opensolaris/u... In-Reply-To: <20090526200925.GA41682@lor.one-eyed-alien.net> References: <200905260822.n4Q8M0Zv051280@svn.freebsd.org> <9bbcef730905260624x289af079ue8524e821c1dc891@mail.gmail.com> <20090526200925.GA41682@lor.one-eyed-alien.net> Message-ID: <1243867778.9871.78.camel@strangepork.london.mintel.ad> On Tue, 2009-05-26 at 15:09 -0500, Brooks Davis wrote: > On Tue, May 26, 2009 at 03:24:05PM +0200, Ivan Voras wrote: > > 2009/5/26 Robert Watson : > > > On Tue, 26 May 2009, Edward Tomasz Napierala wrote: > > > > > >> +/*- > > >> + * Copyright (c) 2008, 2009 Edward Tomasz Napiera??a > > >> + * All rights reserved. > > >> + * > > >> + * Redistribution and use in source and binary forms, with or without > > >> + * modification, are permitted provided that the following conditions > > >> + * are met: > > >> + * 1. Redistributions of source code must retain the above copyright > > >> + * ?? ??notice, this list of conditions and the following disclaimer. > > >> + * 2. Redistributions in binary form must reproduce the above copyright > > >> + * ?? ??notice, this list of conditions and the following disclaimer in the > > >> + * ?? ??documentation and/or other materials provided with the > > >> distribution. > > >> + * > > >> + * ALTHOUGH THIS SOFTWARE IS MADE OF WIN AND SCIENCE, IT IS PROVIDED BY > > >> THE > > > > > > Cute though this BSD license variation is, I'm pretty sure it's not on the > > > approved license list. ??Sticking to the standard license templates > > > potentially saves significant trouble later -- especially when people > > > > Hmm, I'm sure that there exists some SVN magic which would allow > > authors to enter something > > > > $BSDL2 Charlie Root 2008,2009$ > > > > and it expands to a perfect boilerplate on checkout :) > > Such a change would result in a repository filled without license blocks. > This might be appropriate in a corporate setting, but isn't worth > considering here since copies of the repo would lack correct > attributions. > > -- Brooks It could also be written as a pre-commit hook, rather than as a property expansion, which would assuage those concerns. Of course you then get a whole bunch of other concerns, like what is checked by the committer is not what is actually checked in. Cheers Tom From bms at FreeBSD.org Mon Jun 1 15:30:19 2009 From: bms at FreeBSD.org (Bruce M Simpson) Date: Mon Jun 1 15:30:31 2009 Subject: svn commit: r193231 - head/sys/netinet Message-ID: <200906011530.n51FUIJ9082844@svn.freebsd.org> Author: bms Date: Mon Jun 1 15:30:18 2009 New Revision: 193231 URL: http://svn.freebsd.org/changeset/base/193231 Log: Merge fixes from p4: * Tighten v1 query input processing. * Borrow changes from MLDv2 for how general queries are processed. * Do address field validation upfront before accepting input. * Do NOT switch protocol version if old querier present timer active. * Always clear IGMPv3 state in igmp_v3_cancel_link_timers(). * Update comments. Tested by: deeptech71 at gmail dot com Modified: head/sys/netinet/igmp.c Modified: head/sys/netinet/igmp.c ============================================================================== --- head/sys/netinet/igmp.c Mon Jun 1 15:03:58 2009 (r193230) +++ head/sys/netinet/igmp.c Mon Jun 1 15:30:18 2009 (r193231) @@ -98,7 +98,8 @@ static void igmp_final_leave(struct in_m static int igmp_handle_state_change(struct in_multi *, struct igmp_ifinfo *); static int igmp_initial_join(struct in_multi *, struct igmp_ifinfo *); -static int igmp_input_v1_query(struct ifnet *, const struct ip *); +static int igmp_input_v1_query(struct ifnet *, const struct ip *, + const struct igmp *); static int igmp_input_v2_query(struct ifnet *, const struct ip *, const struct igmp *); static int igmp_input_v3_query(struct ifnet *, const struct ip *, @@ -702,7 +703,8 @@ igi_delete_locked(const struct ifnet *if * VIMAGE: The curvnet pointer is derived from the input ifp. */ static int -igmp_input_v1_query(struct ifnet *ifp, const struct ip *ip) +igmp_input_v1_query(struct ifnet *ifp, const struct ip *ip, + const struct igmp *igmp) { INIT_VNET_INET(ifp->if_vnet); struct ifmultiaddr *ifma; @@ -710,20 +712,18 @@ igmp_input_v1_query(struct ifnet *ifp, c struct in_multi *inm; /* - * IGMPv1 General Queries SHOULD always addressed to 224.0.0.1. + * IGMPv1 Host Mmembership Queries SHOULD always be addressed to + * 224.0.0.1. They are always treated as General Queries. * igmp_group is always ignored. Do not drop it as a userland * daemon may wish to see it. + * XXX SMPng: unlocked increments in igmpstat assumed atomic. */ - if (!in_allhosts(ip->ip_dst)) { + if (!in_allhosts(ip->ip_dst) || !in_nullhost(igmp->igmp_group)) { IGMPSTAT_INC(igps_rcv_badqueries); return (0); } - IGMPSTAT_INC(igps_rcv_gen_queries); - /* - * Switch to IGMPv1 host compatibility mode. - */ IN_MULTI_LOCK(); IGMP_LOCK(); @@ -736,6 +736,9 @@ igmp_input_v1_query(struct ifnet *ifp, c goto out_locked; } + /* + * Switch to IGMPv1 host compatibility mode. + */ igmp_set_version(igi, IGMP_VERSION_1); CTR2(KTR_IGMPV3, "process v1 query on ifp %p(%s)", ifp, ifp->if_xname); @@ -793,12 +796,29 @@ igmp_input_v2_query(struct ifnet *ifp, c struct ifmultiaddr *ifma; struct igmp_ifinfo *igi; struct in_multi *inm; + int is_general_query; uint16_t timer; + is_general_query = 0; + /* - * Perform lazy allocation of IGMP link info if required, - * and switch to IGMPv2 host compatibility mode. + * Validate address fields upfront. + * XXX SMPng: unlocked increments in igmpstat assumed atomic. */ + if (in_nullhost(igmp->igmp_group)) { + /* + * IGMPv2 General Query. + * If this was not sent to the all-hosts group, ignore it. + */ + if (!in_allhosts(ip->ip_dst)) + return (0); + IGMPSTAT_INC(igps_rcv_gen_queries); + is_general_query = 1; + } else { + /* IGMPv2 Group-Specific Query. */ + IGMPSTAT_INC(igps_rcv_group_queries); + } + IN_MULTI_LOCK(); IGMP_LOCK(); @@ -811,16 +831,37 @@ igmp_input_v2_query(struct ifnet *ifp, c goto out_locked; } + /* + * Ignore v2 query if in v1 Compatibility Mode. + */ + if (igi->igi_version == IGMP_VERSION_1) + goto out_locked; + igmp_set_version(igi, IGMP_VERSION_2); timer = igmp->igmp_code * PR_FASTHZ / IGMP_TIMER_SCALE; if (timer == 0) timer = 1; - if (!in_nullhost(igmp->igmp_group)) { + if (is_general_query) { /* - * IGMPv2 Group-Specific Query. - * If this is a group-specific IGMPv2 query, we need only + * For each reporting group joined on this + * interface, kick the report timer. + */ + CTR2(KTR_IGMPV3, "process v2 general query on ifp %p(%s)", + ifp, ifp->if_xname); + IF_ADDR_LOCK(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_INET || + ifma->ifma_protospec == NULL) + continue; + inm = (struct in_multi *)ifma->ifma_protospec; + igmp_v2_update_group(inm, timer); + } + IF_ADDR_UNLOCK(ifp); + } else { + /* + * Group-specific IGMPv2 query, we need only * look up the single group to process it. */ inm = inm_lookup(ifp, igmp->igmp_group); @@ -829,32 +870,6 @@ igmp_input_v2_query(struct ifnet *ifp, c inet_ntoa(igmp->igmp_group), ifp, ifp->if_xname); igmp_v2_update_group(inm, timer); } - IGMPSTAT_INC(igps_rcv_group_queries); - } else { - /* - * IGMPv2 General Query. - * If this was not sent to the all-hosts group, ignore it. - */ - if (in_allhosts(ip->ip_dst)) { - /* - * For each reporting group joined on this - * interface, kick the report timer. - */ - CTR2(KTR_IGMPV3, - "process v2 general query on ifp %p(%s)", - ifp, ifp->if_xname); - - IF_ADDR_LOCK(ifp); - TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { - if (ifma->ifma_addr->sa_family != AF_INET || - ifma->ifma_protospec == NULL) - continue; - inm = (struct in_multi *)ifma->ifma_protospec; - igmp_v2_update_group(inm, timer); - } - IF_ADDR_UNLOCK(ifp); - } - IGMPSTAT_INC(igps_rcv_gen_queries); } out_locked: @@ -933,10 +948,13 @@ igmp_input_v3_query(struct ifnet *ifp, c INIT_VNET_INET(ifp->if_vnet); struct igmp_ifinfo *igi; struct in_multi *inm; + int is_general_query; uint32_t maxresp, nsrc, qqi; uint16_t timer; uint8_t qrv; + is_general_query = 0; + CTR2(KTR_IGMPV3, "process v3 query on ifp %p(%s)", ifp, ifp->if_xname); maxresp = igmpv3->igmp_code; /* in 1/10ths of a second */ @@ -947,7 +965,7 @@ igmp_input_v3_query(struct ifnet *ifp, c /* * Robustness must never be less than 2 for on-wire IGMPv3. - * FIXME: Check if ifp has IGIF_LOOPBACK set, as we make + * FUTURE: Check if ifp has IGIF_LOOPBACK set, as we will make * an exception for interfaces whose IGMPv3 state changes * are redirected to loopback (e.g. MANET). */ @@ -970,6 +988,33 @@ igmp_input_v3_query(struct ifnet *ifp, c nsrc = ntohs(igmpv3->igmp_numsrc); + /* + * Validate address fields and versions upfront before + * accepting v3 query. + * XXX SMPng: Unlocked access to igmpstat counters here. + */ + if (in_nullhost(igmpv3->igmp_group)) { + /* + * IGMPv3 General Query. + * + * General Queries SHOULD be directed to 224.0.0.1. + * A general query with a source list has undefined + * behaviour; discard it. + */ + IGMPSTAT_INC(igps_rcv_gen_queries); + if (!in_allhosts(ip->ip_dst) || nsrc > 0) { + IGMPSTAT_INC(igps_rcv_badqueries); + return (0); + } + is_general_query = 1; + } else { + /* Group or group-source specific query. */ + if (nsrc == 0) + IGMPSTAT_INC(igps_rcv_group_queries); + else + IGMPSTAT_INC(igps_rcv_gsr_queries); + } + IN_MULTI_LOCK(); IGMP_LOCK(); @@ -982,8 +1027,19 @@ igmp_input_v3_query(struct ifnet *ifp, c goto out_locked; } - igmp_set_version(igi, IGMP_VERSION_3); + /* + * Discard the v3 query if we're in Compatibility Mode. + * The RFC is not obviously worded that hosts need to stay in + * compatibility mode until the Old Version Querier Present + * timer expires. + */ + if (igi->igi_version != IGMP_VERSION_3) { + CTR3(KTR_IGMPV3, "ignore v3 query in v%d mode on ifp %p(%s)", + igi->igi_version, ifp, ifp->if_xname); + goto out_locked; + } + igmp_set_version(igi, IGMP_VERSION_3); igi->igi_rv = qrv; igi->igi_qi = qqi; igi->igi_qri = maxresp; @@ -991,41 +1047,23 @@ igmp_input_v3_query(struct ifnet *ifp, c CTR4(KTR_IGMPV3, "%s: qrv %d qi %d qri %d", __func__, qrv, qqi, maxresp); - if (in_nullhost(igmpv3->igmp_group)) { + if (is_general_query) { /* - * IGMPv3 General Query. * Schedule a current-state report on this ifp for * all groups, possibly containing source lists. - */ - IGMPSTAT_INC(igps_rcv_gen_queries); - - if (!in_allhosts(ip->ip_dst) || nsrc > 0) { - /* - * General Queries SHOULD be directed to 224.0.0.1. - * A general query with a source list has undefined - * behaviour; discard it. - */ - IGMPSTAT_INC(igps_rcv_badqueries); - goto out_locked; - } - - CTR2(KTR_IGMPV3, "process v3 general query on ifp %p(%s)", - ifp, ifp->if_xname); - - /* * If there is a pending General Query response * scheduled earlier than the selected delay, do * not schedule any other reports. * Otherwise, reset the interface timer. */ + CTR2(KTR_IGMPV3, "process v3 general query on ifp %p(%s)", + ifp, ifp->if_xname); if (igi->igi_v3_timer == 0 || igi->igi_v3_timer >= timer) { igi->igi_v3_timer = IGMP_RANDOM_DELAY(timer); V_interface_timers_running = 1; } } else { /* - * IGMPv3 Group-specific or Group-and-source-specific Query. - * * Group-source-specific queries are throttled on * a per-group basis to defeat denial-of-service attempts. * Queries for groups we are not a member of on this @@ -1035,7 +1073,6 @@ igmp_input_v3_query(struct ifnet *ifp, c if (inm == NULL) goto out_locked; if (nsrc > 0) { - IGMPSTAT_INC(igps_rcv_gsr_queries); if (!ratecheck(&inm->inm_lastgsrtv, &V_igmp_gsrdelay)) { CTR1(KTR_IGMPV3, "%s: GS query throttled.", @@ -1043,8 +1080,6 @@ igmp_input_v3_query(struct ifnet *ifp, c IGMPSTAT_INC(igps_drop_gsr_queries); goto out_locked; } - } else { - IGMPSTAT_INC(igps_rcv_group_queries); } CTR3(KTR_IGMPV3, "process v3 %s query on ifp %p(%s)", inet_ntoa(igmpv3->igmp_group), ifp, ifp->if_xname); @@ -1467,7 +1502,7 @@ igmp_input(struct mbuf *m, int off) IGMPSTAT_INC(igps_rcv_v1v2_queries); if (!V_igmp_v1enable) break; - if (igmp_input_v1_query(ifp, ip) != 0) { + if (igmp_input_v1_query(ifp, ip, igmp) != 0) { m_freem(m); return; } @@ -1909,6 +1944,7 @@ igmp_v3_suppress_group_record(struct in_ static void igmp_set_version(struct igmp_ifinfo *igi, const int version) { + int old_version_timer; IGMP_LOCK_ASSERT(); @@ -1916,7 +1952,6 @@ igmp_set_version(struct igmp_ifinfo *igi version, igi->igi_ifp, igi->igi_ifp->if_xname); if (version == IGMP_VERSION_1 || version == IGMP_VERSION_2) { - int old_version_timer; /* * Compute the "Older Version Querier Present" timer as per * Section 8.12. @@ -1949,6 +1984,11 @@ igmp_set_version(struct igmp_ifinfo *igi /* * Cancel pending IGMPv3 timers for the given link and all groups * joined on it; state-change, general-query, and group-query timers. + * + * Only ever called on a transition from v3 to Compatibility mode. Kill + * the timers stone dead (this may be expensive for large N groups), they + * will be restarted if Compatibility Mode deems that they must be due to + * query processing. */ static void igmp_v3_cancel_link_timers(struct igmp_ifinfo *igi) @@ -1965,21 +2005,21 @@ igmp_v3_cancel_link_timers(struct igmp_i IGMP_LOCK_ASSERT(); /* - * Fast-track this potentially expensive operation - * by checking all the global 'timer pending' flags. + * Stop the v3 General Query Response on this link stone dead. + * If fasttimo is woken up due to V_interface_timers_running, + * the flag will be cleared if there are no pending link timers. */ - if (!V_interface_timers_running && - !V_state_change_timers_running && - !V_current_state_timers_running) - return; - igi->igi_v3_timer = 0; + /* + * Now clear the current-state and state-change report timers + * for all memberships scoped to this link. + */ ifp = igi->igi_ifp; - IF_ADDR_LOCK(ifp); TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { - if (ifma->ifma_addr->sa_family != AF_INET) + if (ifma->ifma_addr->sa_family != AF_INET || + ifma->ifma_protospec == NULL) continue; inm = (struct in_multi *)ifma->ifma_protospec; switch (inm->inm_state) { @@ -1989,12 +2029,19 @@ igmp_v3_cancel_link_timers(struct igmp_i case IGMP_LAZY_MEMBER: case IGMP_SLEEPING_MEMBER: case IGMP_AWAKENING_MEMBER: + /* + * These states are either not relevant in v3 mode, + * or are unreported. Do nothing. + */ break; case IGMP_LEAVING_MEMBER: /* - * If we are leaving the group and switching - * IGMP version, we need to release the final - * reference held for issuing the INCLUDE {}. + * If we are leaving the group and switching to + * compatibility mode, we need to release the final + * reference held for issuing the INCLUDE {}, and + * transition to REPORTING to ensure the host leave + * message is sent upstream to the old querier -- + * transition to NOT would lose the leave and race. * * SMPNG: Must drop and re-acquire IF_ADDR_LOCK * around inm_release_locked(), as it is not @@ -2009,15 +2056,16 @@ igmp_v3_cancel_link_timers(struct igmp_i inm_clear_recorded(inm); /* FALLTHROUGH */ case IGMP_REPORTING_MEMBER: - inm->inm_sctimer = 0; - inm->inm_timer = 0; inm->inm_state = IGMP_REPORTING_MEMBER; - /* - * Free any pending IGMPv3 state-change records. - */ - _IF_DRAIN(&inm->inm_scq); break; } + /* + * Always clear state-change and group report timers. + * Free any pending IGMPv3 state-change records. + */ + inm->inm_sctimer = 0; + inm->inm_timer = 0; + _IF_DRAIN(&inm->inm_scq); } IF_ADDR_UNLOCK(ifp); } From bz at FreeBSD.org Mon Jun 1 15:49:43 2009 From: bz at FreeBSD.org (Bjoern A. Zeeb) Date: Mon Jun 1 15:49:56 2009 Subject: svn commit: r193232 - in head: . sys/net sys/netinet sys/netinet6 sys/nfsclient sys/sys usr.bin/netstat Message-ID: <200906011549.n51FngRA083299@svn.freebsd.org> Author: bz Date: Mon Jun 1 15:49:42 2009 New Revision: 193232 URL: http://svn.freebsd.org/changeset/base/193232 Log: Convert the two dimensional array to be malloced and introduce an accessor function to get the correct rnh pointer back. Update netstat to get the correct pointer using kvm_read() as well. This not only fixes the ABI problem depending on the kernel option but also permits the tunable to overwrite the kernel option at boot time up to MAXFIBS, enlarging the number of FIBs without having to recompile. So people could just use GENERIC now. Reviewed by: julian, rwatson, zec X-MFC: not possible Modified: head/UPDATING head/sys/net/if.c head/sys/net/route.c head/sys/net/route.h head/sys/net/rtsock.c head/sys/net/vnet.h head/sys/netinet/in_rmx.c head/sys/netinet6/in6_ifattach.c head/sys/netinet6/in6_rmx.c head/sys/netinet6/nd6_rtr.c head/sys/nfsclient/bootp_subr.c head/sys/sys/param.h head/usr.bin/netstat/route.c Modified: head/UPDATING ============================================================================== --- head/UPDATING Mon Jun 1 15:30:18 2009 (r193231) +++ head/UPDATING Mon Jun 1 15:49:42 2009 (r193232) @@ -22,6 +22,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090601: + The way we are storing and accessing `routeing table' entries + has changed. Programs reading the FIB, like netstat, need to + be re-compiled. + Bump __FreeBSD_version to 800097. + 20090530: Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no more valid. Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/net/if.c Mon Jun 1 15:49:42 2009 (r193232) @@ -1001,7 +1001,8 @@ if_detach_internal(struct ifnet *ifp, in */ for (i = 1; i <= AF_MAX; i++) { for (j = 0; j < rt_numfibs; j++) { - if ((rnh = V_rt_tables[j][i]) == NULL) + rnh = rt_tables_get_rnh(j, i); + if (rnh == NULL) continue; RADIX_NODE_HEAD_LOCK(rnh); (void) rnh->rnh_walktree(rnh, if_rtdel, ifp); Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/net/route.c Mon Jun 1 15:49:42 2009 (r193232) @@ -91,15 +91,7 @@ TUNABLE_INT("net.add_addr_allfibs", &rt_ #ifdef VIMAGE_GLOBALS static struct rtstat rtstat; - -/* by default only the first 'row' of tables will be accessed. */ -/* - * XXXMRT When we fix netstat, and do this differnetly, - * we can allocate this dynamically. As long as we are keeping - * things backwards compaitble we need to allocate this - * statically. - */ -struct radix_node_head *rt_tables[RT_MAXFIBS][AF_MAX+1]; +struct radix_node_head *rt_tables; static int rttrash; /* routes not in table but not freed */ #endif @@ -158,6 +150,32 @@ sysctl_my_fibnum(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_net, OID_AUTO, my_fibnum, CTLTYPE_INT|CTLFLAG_RD, NULL, 0, &sysctl_my_fibnum, "I", "default FIB of caller"); +static __inline struct radix_node_head ** +rt_tables_get_rnh_ptr(int table, int fam) +{ + INIT_VNET_NET(curvnet); + struct radix_node_head **rnh; + + KASSERT(table >= 0 && table < rt_numfibs, ("%s: table out of bounds.", + __func__)); + KASSERT(fam >= 0 && fam < (AF_MAX+1), ("%s: fam out of bounds.", + __func__)); + + /* rnh is [fib=0][af=0]. */ + rnh = (struct radix_node_head **)V_rt_tables; + /* Get the offset to the requested table and fam. */ + rnh += table * (AF_MAX+1) + fam; + + return (rnh); +} + +struct radix_node_head * +rt_tables_get_rnh(int table, int fam) +{ + + return (*rt_tables_get_rnh_ptr(table, fam)); +} + static void route_init(void) { @@ -179,10 +197,14 @@ route_init(void) static int vnet_route_iattach(const void *unused __unused) { INIT_VNET_NET(curvnet); - int table; struct domain *dom; + struct radix_node_head **rnh; + int table; int fam; + V_rt_tables = malloc(rt_numfibs * (AF_MAX+1) * + sizeof(struct radix_node_head *), M_RTABLE, M_WAITOK|M_ZERO); + V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); for (dom = domains; dom; dom = dom->dom_next) { @@ -198,8 +220,10 @@ static int vnet_route_iattach(const void * (only for AF_INET and AF_INET6 * which don't need it anyhow) */ - dom->dom_rtattach( - (void **)&V_rt_tables[table][fam], + rnh = rt_tables_get_rnh_ptr(table, fam); + if (rnh == NULL) + panic("%s: rnh NULL", __func__); + dom->dom_rtattach((void **)rnh, dom->dom_rtoffset); } else { break; @@ -300,7 +324,7 @@ rtalloc1_fib(struct sockaddr *dst, int r KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum")); if (dst->sa_family != AF_INET) /* Only INET supports > 1 fib now */ fibnum = 0; - rnh = V_rt_tables[fibnum][dst->sa_family]; + rnh = rt_tables_get_rnh(fibnum, dst->sa_family); newrt = NULL; /* * Look up the address in the table for that Address Family @@ -362,7 +386,7 @@ rtfree(struct rtentry *rt) struct radix_node_head *rnh; KASSERT(rt != NULL,("%s: NULL rt", __func__)); - rnh = V_rt_tables[rt->rt_fibnum][rt_key(rt)->sa_family]; + rnh = rt_tables_get_rnh(rt->rt_fibnum, rt_key(rt)->sa_family); KASSERT(rnh != NULL,("%s: NULL rnh", __func__)); RT_LOCK_ASSERT(rt); @@ -463,8 +487,13 @@ rtredirect_fib(struct sockaddr *dst, short *stat = NULL; struct rt_addrinfo info; struct ifaddr *ifa; - struct radix_node_head *rnh = - V_rt_tables[fibnum][dst->sa_family]; + struct radix_node_head *rnh; + + rnh = rt_tables_get_rnh(fibnum, dst->sa_family); + if (rnh == NULL) { + error = EAFNOSUPPORT; + goto out; + } /* verify the gateway is directly reachable */ if ((ifa = ifa_ifwithnet(gateway)) == NULL) { @@ -774,7 +803,7 @@ rtexpunge(struct rtentry *rt) /* * Find the correct routing tree to use for this Address Family */ - rnh = V_rt_tables[rt->rt_fibnum][rt_key(rt)->sa_family]; + rnh = rt_tables_get_rnh(rt->rt_fibnum, rt_key(rt)->sa_family); RT_LOCK_ASSERT(rt); if (rnh == NULL) return (EAFNOSUPPORT); @@ -942,7 +971,7 @@ rtrequest1_fib(int req, struct rt_addrin /* * Find the correct routing tree to use for this Address Family */ - rnh = V_rt_tables[fibnum][dst->sa_family]; + rnh = rt_tables_get_rnh(fibnum, dst->sa_family); if (rnh == NULL) return (EAFNOSUPPORT); needlock = ((flags & RTF_RNH_LOCKED) == 0); @@ -1134,9 +1163,9 @@ rt_setgate(struct rtentry *rt, struct so /* XXX dst may be overwritten, can we move this to below */ int dlen = SA_SIZE(dst), glen = SA_SIZE(gate); #ifdef INVARIANTS - INIT_VNET_NET(curvnet); - struct radix_node_head *rnh = - V_rt_tables[rt->rt_fibnum][dst->sa_family]; + struct radix_node_head *rnh; + + rnh = rt_tables_get_rnh(rt->rt_fibnum, dst->sa_family); #endif RT_LOCK_ASSERT(rt); @@ -1203,7 +1232,6 @@ rt_maskedcopy(struct sockaddr *src, stru static inline int rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum) { - INIT_VNET_NET(curvnet); struct sockaddr *dst; struct sockaddr *netmask; struct rtentry *rt = NULL; @@ -1273,7 +1301,8 @@ rtinit1(struct ifaddr *ifa, int cmd, int * Look up an rtentry that is in the routing tree and * contains the correct info. */ - if ((rnh = V_rt_tables[fibnum][dst->sa_family]) == NULL) + rnh = rt_tables_get_rnh(fibnum, dst->sa_family); + if (rnh == NULL) /* this table doesn't exist but others might */ continue; RADIX_NODE_HEAD_LOCK(rnh); Modified: head/sys/net/route.h ============================================================================== --- head/sys/net/route.h Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/net/route.h Mon Jun 1 15:49:42 2009 (r193232) @@ -373,7 +373,8 @@ struct rt_addrinfo { } \ } while (0) -extern struct radix_node_head *rt_tables[][AF_MAX+1]; +extern struct radix_node_head *rt_tables; +struct radix_node_head *rt_tables_get_rnh(int, int); struct ifmultiaddr; Modified: head/sys/net/rtsock.c ============================================================================== --- head/sys/net/rtsock.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/net/rtsock.c Mon Jun 1 15:49:42 2009 (r193232) @@ -460,7 +460,6 @@ static int route_output(struct mbuf *m, struct socket *so) { #define sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0) - INIT_VNET_NET(so->so_vnet); struct rt_msghdr *rtm = NULL; struct rtentry *rt = NULL; struct radix_node_head *rnh; @@ -561,7 +560,8 @@ route_output(struct mbuf *m, struct sock case RTM_GET: case RTM_CHANGE: case RTM_LOCK: - rnh = V_rt_tables[so->so_fibnum][info.rti_info[RTAX_DST]->sa_family]; + rnh = rt_tables_get_rnh(so->so_fibnum, + info.rti_info[RTAX_DST]->sa_family); if (rnh == NULL) senderr(EAFNOSUPPORT); RADIX_NODE_HEAD_RLOCK(rnh); @@ -1418,10 +1418,9 @@ done: static int sysctl_rtsock(SYSCTL_HANDLER_ARGS) { - INIT_VNET_NET(curvnet); int *name = (int *)arg1; u_int namelen = arg2; - struct radix_node_head *rnh; + struct radix_node_head *rnh = NULL; /* silence compiler. */ int i, lim, error = EINVAL; u_char af; struct walkarg w; @@ -1469,7 +1468,8 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS) * take care of routing entries */ for (error = 0; error == 0 && i <= lim; i++) - if ((rnh = V_rt_tables[req->td->td_proc->p_fibnum][i]) != NULL) { + rnh = rt_tables_get_rnh(req->td->td_proc->p_fibnum, i); + if (rnh != NULL) { RADIX_NODE_HEAD_LOCK(rnh); error = rnh->rnh_walktree(rnh, sysctl_dumpentry, &w); Modified: head/sys/net/vnet.h ============================================================================== --- head/sys/net/vnet.h Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/net/vnet.h Mon Jun 1 15:49:42 2009 (r193232) @@ -45,7 +45,7 @@ struct vnet_net { struct knlist _ifklist; struct rtstat _rtstat; - struct radix_node_head *_rt_tables[RT_MAXFIBS][AF_MAX+1]; + struct radix_node_head *_rt_tables; int _rttrash; uma_zone_t _rtzone; Modified: head/sys/netinet/in_rmx.c ============================================================================== --- head/sys/netinet/in_rmx.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/netinet/in_rmx.c Mon Jun 1 15:49:42 2009 (r193232) @@ -251,14 +251,14 @@ static void in_rtqtimo(void *rock) { CURVNET_SET((struct vnet *) rock); - INIT_VNET_NET(curvnet); INIT_VNET_INET(curvnet); int fibnum; void *newrock; struct timeval atv; for (fibnum = 0; fibnum < rt_numfibs; fibnum++) { - if ((newrock = V_rt_tables[fibnum][AF_INET]) != NULL) + newrock = rt_tables_get_rnh(fibnum, AF_INET); + if (newrock != NULL) in_rtqtimo_one(newrock); } atv.tv_usec = 0; @@ -324,10 +324,9 @@ in_rtqdrain(void) VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); - INIT_VNET_NET(vnet_iter); for ( fibnum = 0; fibnum < rt_numfibs; fibnum++) { - rnh = V_rt_tables[fibnum][AF_INET]; + rnh = rt_tables_get_rnh(fibnum, AF_INET); arg.found = arg.killed = 0; arg.rnh = rnh; arg.nextstop = 0; @@ -423,7 +422,6 @@ in_ifadownkill(struct radix_node *rn, vo int in_ifadown(struct ifaddr *ifa, int delete) { - INIT_VNET_NET(curvnet); struct in_ifadown_arg arg; struct radix_node_head *rnh; int fibnum; @@ -432,7 +430,7 @@ in_ifadown(struct ifaddr *ifa, int delet return 1; for ( fibnum = 0; fibnum < rt_numfibs; fibnum++) { - rnh = V_rt_tables[fibnum][AF_INET]; + rnh = rt_tables_get_rnh(fibnum, AF_INET); arg.ifa = ifa; arg.del = delete; RADIX_NODE_HEAD_LOCK(rnh); Modified: head/sys/netinet6/in6_ifattach.c ============================================================================== --- head/sys/netinet6/in6_ifattach.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/netinet6/in6_ifattach.c Mon Jun 1 15:49:42 2009 (r193232) @@ -777,11 +777,11 @@ statinit: void in6_ifdetach(struct ifnet *ifp) { - INIT_VNET_NET(ifp->if_vnet); INIT_VNET_INET(ifp->if_vnet); INIT_VNET_INET6(ifp->if_vnet); struct in6_ifaddr *ia, *oia; struct ifaddr *ifa, *next; + struct radix_node_head *rnh; struct rtentry *rt; short rtflags; struct sockaddr_in6 sin6; @@ -874,15 +874,16 @@ in6_ifdetach(struct ifnet *ifp) /* XXX: should not fail */ return; /* XXX grab lock first to avoid LOR */ - if (V_rt_tables[0][AF_INET6] != NULL) { - RADIX_NODE_HEAD_LOCK(V_rt_tables[0][AF_INET6]); + rnh = rt_tables_get_rnh(0, AF_INET6); + if (rnh != NULL) { + RADIX_NODE_HEAD_LOCK(rnh); rt = rtalloc1((struct sockaddr *)&sin6, 0, RTF_RNH_LOCKED); if (rt) { if (rt->rt_ifp == ifp) rtexpunge(rt); RTFREE_LOCKED(rt); } - RADIX_NODE_HEAD_UNLOCK(V_rt_tables[0][AF_INET6]); + RADIX_NODE_HEAD_UNLOCK(rnh); } } Modified: head/sys/netinet6/in6_rmx.c ============================================================================== --- head/sys/netinet6/in6_rmx.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/netinet6/in6_rmx.c Mon Jun 1 15:49:42 2009 (r193232) @@ -289,13 +289,17 @@ static void in6_rtqtimo(void *rock) { CURVNET_SET_QUIET((struct vnet *) rock); - INIT_VNET_NET(curvnet); INIT_VNET_INET6(curvnet); - struct radix_node_head *rnh = V_rt_tables[0][AF_INET6]; + struct radix_node_head *rnh; struct rtqk_arg arg; struct timeval atv; static time_t last_adjusted_timeout = 0; + rnh = rt_tables_get_rnh(0, AF_INET6); + if (rnh == NULL) { + CURVNET_RESTORE(); + return; + } arg.found = arg.killed = 0; arg.rnh = rnh; arg.nextstop = time_uptime + V_rtq_timeout6; @@ -377,12 +381,16 @@ static void in6_mtutimo(void *rock) { CURVNET_SET_QUIET((struct vnet *) rock); - INIT_VNET_NET(curvnet); INIT_VNET_INET6(curvnet); - struct radix_node_head *rnh = V_rt_tables[0][AF_INET6]; + struct radix_node_head *rnh; struct mtuex_arg arg; struct timeval atv; + rnh = rt_tables_get_rnh(0, AF_INET6); + if (rnh == NULL) { + CURVNET_RESTORE(); + return; + } arg.rnh = rnh; arg.nextstop = time_uptime + MTUTIMO_DEFAULT; RADIX_NODE_HEAD_LOCK(rnh); @@ -405,9 +413,12 @@ void in6_rtqdrain(void) { INIT_VNET_NET(curvnet); - struct radix_node_head *rnh = V_rt_tables[0][AF_INET6]; + struct radix_node_head *rnh; struct rtqk_arg arg; + rnh = rt_tables_get_rnh(0, AF_INET6); + if (rnh == NULL) + panic("%s: rnh == NULL", __func__); arg.found = arg.killed = 0; arg.rnh = rnh; arg.nextstop = 0; @@ -429,9 +440,6 @@ in6_rtqdrain(void) int in6_inithead(void **head, int off) { -#ifdef INVARIANTS - INIT_VNET_NET(curvnet); -#endif INIT_VNET_INET6(curvnet); struct radix_node_head *rnh; @@ -447,7 +455,7 @@ in6_inithead(void **head, int off) V_rtq_timeout6 = RTQ_TIMEOUT; rnh = *head; - KASSERT(rnh == V_rt_tables[0][AF_INET6], ("rnh?")); + KASSERT(rnh == rt_tables_get_rnh(0, AF_INET6), ("rnh?")); rnh->rnh_addaddr = in6_addroute; rnh->rnh_matchaddr = in6_matroute; callout_init(&V_rtq_timer6, CALLOUT_MPSAFE); Modified: head/sys/netinet6/nd6_rtr.c ============================================================================== --- head/sys/netinet6/nd6_rtr.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/netinet6/nd6_rtr.c Mon Jun 1 15:49:42 2009 (r193232) @@ -1549,7 +1549,6 @@ pfxlist_onlink_check() int nd6_prefix_onlink(struct nd_prefix *pr) { - INIT_VNET_NET(curvnet); INIT_VNET_INET6(curvnet); struct ifaddr *ifa; struct ifnet *ifp = pr->ndpr_ifp; @@ -1632,7 +1631,8 @@ nd6_prefix_onlink(struct nd_prefix *pr) ifa->ifa_addr, (struct sockaddr *)&mask6, rtflags, &rt); if (error == 0) { if (rt != NULL) /* this should be non NULL, though */ { - rnh = V_rt_tables[rt->rt_fibnum][AF_INET6]; + rnh = rt_tables_get_rnh(rt->rt_fibnum, AF_INET6); + /* XXX what if rhn == NULL? */ RADIX_NODE_HEAD_LOCK(rnh); RT_LOCK(rt); if (!rt_setgate(rt, rt_key(rt), (struct sockaddr *)&null_sdl)) { @@ -2058,8 +2058,7 @@ in6_init_address_ltimes(struct nd_prefix void rt6_flush(struct in6_addr *gateway, struct ifnet *ifp) { - INIT_VNET_NET(curvnet); - struct radix_node_head *rnh = V_rt_tables[0][AF_INET6]; + struct radix_node_head *rnh; int s = splnet(); /* We'll care only link-local addresses */ @@ -2068,6 +2067,10 @@ rt6_flush(struct in6_addr *gateway, stru return; } + rnh = rt_tables_get_rnh(0, AF_INET6); + if (rnh == NULL) + return; + RADIX_NODE_HEAD_LOCK(rnh); rnh->rnh_walktree(rnh, rt6_deleteroute, (void *)gateway); RADIX_NODE_HEAD_UNLOCK(rnh); Modified: head/sys/nfsclient/bootp_subr.c ============================================================================== --- head/sys/nfsclient/bootp_subr.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/nfsclient/bootp_subr.c Mon Jun 1 15:49:42 2009 (r193232) @@ -361,11 +361,15 @@ void bootpboot_p_rtlist(void) { INIT_VNET_NET(curvnet); + struct radix_node_head *rnh; printf("Routing table:\n"); - RADIX_NODE_HEAD_RLOCK(V_rt_tables[0][AF_INET]); /* could sleep XXX */ - bootpboot_p_tree(V_rt_tables[0][AF_INET]->rnh_treetop); - RADIX_NODE_HEAD_RUNLOCK(V_rt_tables[0][AF_INET]); + rnh = rt_tables_get_rnh(0, AF_INET); + if (rnh == NULL) + return; + RADIX_NODE_HEAD_RLOCK(rnh); /* could sleep XXX */ + bootpboot_p_tree(rnh->rnh_treetop); + RADIX_NODE_HEAD_RUNLOCK(rnh); } void Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Mon Jun 1 15:30:18 2009 (r193231) +++ head/sys/sys/param.h Mon Jun 1 15:49:42 2009 (r193232) @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 800096 /* Master, propagated to newvers */ +#define __FreeBSD_version 800097 /* Master, propagated to newvers */ #ifndef LOCORE #include Modified: head/usr.bin/netstat/route.c ============================================================================== --- head/usr.bin/netstat/route.c Mon Jun 1 15:30:18 2009 (r193231) +++ head/usr.bin/netstat/route.c Mon Jun 1 15:49:42 2009 (r193232) @@ -122,12 +122,7 @@ int do_rtent = 0; struct rtentry rtentry; struct radix_node rnode; struct radix_mask rmask; -struct rtline { - struct radix_node_head *tables[AF_MAX+1]; /*xxx*/ -}; -struct rtline *rt_tables; - -struct radix_node_head *rt_tables_line[1][AF_MAX+1]; /*xxx*/ +struct radix_node_head **rt_tables; int NewTree = 0; @@ -155,7 +150,7 @@ static void domask(char *, in_addr_t, u_ void routepr(u_long rtree) { - struct radix_node_head *rnh, head; + struct radix_node_head **rnhp, *rnh, head; size_t intsize; int i; int numfibs; @@ -165,7 +160,8 @@ routepr(u_long rtree) fibnum = 0; if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1) numfibs = 1; - rt_tables = calloc(numfibs, sizeof(struct rtline)); + rt_tables = calloc(numfibs * (AF_MAX+1), + sizeof(struct radix_node_head *)); if (rt_tables == NULL) err(EX_OSERR, "memory allocation failed"); /* @@ -186,8 +182,8 @@ routepr(u_long rtree) return; } - if (kread((u_long)(rtree), (char *)(rt_tables), - (numfibs * sizeof(struct rtline))) != 0) + if (kread((u_long)(rtree), (char *)(rt_tables), (numfibs * + (AF_MAX+1) * sizeof(struct radix_node_head *))) != 0) return; for (i = 0; i <= AF_MAX; i++) { int tmpfib; @@ -195,8 +191,15 @@ routepr(u_long rtree) tmpfib = 0; else tmpfib = fibnum; - if ((rnh = rt_tables[tmpfib].tables[i]) == 0) + rnhp = (struct radix_node_head **)*rt_tables; + /* Calculate the in-kernel address. */ + rnhp += tmpfib * (AF_MAX+1) + i; + /* Read the in kernel rhn pointer. */ + if (kget(rnhp, rnh) != 0) + continue; + if (rnh == NULL) continue; + /* Read the rnh data. */ if (kget(rnh, head) != 0) continue; if (i == AF_UNSPEC) { From hselasky at c2i.net Mon Jun 1 15:50:10 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Mon Jun 1 15:50:26 2009 Subject: svn commit: r192925 - in head/sys/dev/usb: . input In-Reply-To: <5C52056B-8E4A-4C15-8451-2A5576A8FC9F@freebsd.org> References: <200905271927.n4RJRUH8009289@svn.freebsd.org> <200906010749.37072.hselasky@c2i.net> <5C52056B-8E4A-4C15-8451-2A5576A8FC9F@freebsd.org> Message-ID: <200906011754.14349.hselasky@c2i.net> On Monday 01 June 2009, Rui Paulo wrote: > Hi, > > On 1 Jun 2009, at 06:49, Hans Petter Selasky wrote: > > On Monday 01 June 2009, Rui Paulo wrote: > >> http://wiki.freebsd.org/AppleMacbook#head-7eab3730c3bf3d04bdfb0d1d3649ea > >>ddf 2fed595 > > > > Hi Rui Paulo, > > > > Regarding the eject button, can you have a look at: > > > > /sys/dev/usb/input/ukbd.c > > > > And provide a patch that masks this key the way you want? > > I'm not sure what you mean. I'm proposing to remove the key handling > code from the kernel. See the attached patch. Your patch looks OK. Make sure you test it before committing. --HPS From bz at FreeBSD.org Mon Jun 1 15:55:08 2009 From: bz at FreeBSD.org (Bjoern A. Zeeb) Date: Mon Jun 1 15:55:15 2009 Subject: svn commit: r193232 - in head: . sys/net sys/netinet sys/netinet6 sys/nfsclient sys/sys usr.bin/netstat In-Reply-To: <200906011549.n51FngRA083299@svn.freebsd.org> References: <200906011549.n51FngRA083299@svn.freebsd.org> Message-ID: <20090601155120.D12292@maildrop.int.zabbadoz.net> On Mon, 1 Jun 2009, Bjoern A. Zeeb wrote: > Author: bz > Date: Mon Jun 1 15:49:42 2009 > New Revision: 193232 > URL: http://svn.freebsd.org/changeset/base/193232 > > Log: > Convert the two dimensional array to be malloced and introduce > an accessor function to get the correct rnh pointer back. > > Update netstat to get the correct pointer using kvm_read() > as well. > > This not only fixes the ABI problem depending on the kernel > option but also permits the tunable to overwrite the kernel > option at boot time up to MAXFIBS, enlarging the number of > FIBs without having to recompile. So people could just use > GENERIC now. > > Reviewed by: julian, rwatson, zec > X-MFC: not possible The solution is not ideal but will help FreeBSD 8.x. Julian has suggested a cleaner way but I considered that to be to late and intrusive for 8.x; this way we will have enough time for 9.x to convert this io per AF/domain handler routines. Note: I will garbage collect a lot of opt_route.h dependencies by the end of the week as that option no longer has to be visible to most of the tree. PS: I cannot spell 'routing' correctly usually so whoever touches UPDATING next please fix the spelling;-) -- Bjoern A. Zeeb The greatest risk is not taking one. From rwatson at FreeBSD.org Mon Jun 1 16:00:37 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 16:00:49 2009 Subject: svn commit: r193233 - head Message-ID: <200906011600.n51G0aN9083598@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 16:00:36 2009 New Revision: 193233 URL: http://svn.freebsd.org/changeset/base/193233 Log: Update UPDATING for NETISR2 merge, fix a typo in another UPDATING entry. Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Mon Jun 1 15:49:42 2009 (r193232) +++ head/UPDATING Mon Jun 1 16:00:36 2009 (r193233) @@ -23,11 +23,17 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. ln -s aj /etc/malloc.conf.) 20090601: - The way we are storing and accessing `routeing table' entries + The way we are storing and accessing `routing table' entries has changed. Programs reading the FIB, like netstat, need to be re-compiled. Bump __FreeBSD_version to 800097. +20090601: + A new netisr implementation has been added for FreeBSD 8. Network + file system modules, such as igmp, ipdivert, and others, should be + rebuilt. + Bump __FreeBSD_version to 800096. + 20090530: Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no more valid. From nwhitehorn at freebsd.org Mon Jun 1 16:01:09 2009 From: nwhitehorn at freebsd.org (Nathan Whitehorn) Date: Mon Jun 1 16:01:16 2009 Subject: svn commit: r193159 - head/sys/powerpc/powermac In-Reply-To: <200906010822.19951.jhb@freebsd.org> References: <200905311002.n4VA2K6c037776@svn.freebsd.org> <200906010822.19951.jhb@freebsd.org> Message-ID: <4A23FB40.1050405@freebsd.org> John Baldwin wrote: > On Sunday 31 May 2009 6:02:20 am Nathan Whitehorn wrote: > >> Author: nwhitehorn >> Date: Sun May 31 10:02:20 2009 >> New Revision: 193159 >> URL: http://svn.freebsd.org/changeset/base/193159 >> >> Log: >> Provide an analogous sysctl to hw.acpi.acline (dev.pmu.0.acline) to >> determine whether the computer is plugged in to mains power. >> > > I wonder if it would be a good idea to introduce a > platform-independent 'acline' sysctl? Something like 'hw.acline'? For now > we could simply have these devices create it. We could do something fancier > where AC adapter drivers register with a centralized thingie at some point > and it exports a global setting that is true so long as at least one adapter > is online. I'm not sure that level of complexity is warranted until we have > platforms with multiple AC lines exposed to the OS though. > That would be nice, and easy to implement, though the existing one should be kept for a while for compatibility. In the longer term, pmu(4) also provides an ACPI-alike interface to battery status under dev.pmu.*, which it would likewise be good to report in a platform-independent way. -Nathan From rwatson at FreeBSD.org Mon Jun 1 16:13:07 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 16:13:13 2009 Subject: svn commit: r193234 - in head/sys: kern sys Message-ID: <200906011613.n51GD6kZ083855@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 16:13:06 2009 New Revision: 193234 URL: http://svn.freebsd.org/changeset/base/193234 Log: Add 'sy_flags', a currently unused per-syscall entry flags field that will see future use in 9-CURRENT and 8-STABLE for features such as the capability-mode enable flag and pay-as-you-audit. Discussed with: jhb, sson Modified: head/sys/kern/makesyscalls.sh head/sys/sys/sysent.h Modified: head/sys/kern/makesyscalls.sh ============================================================================== --- head/sys/kern/makesyscalls.sh Mon Jun 1 16:00:36 2009 (r193233) +++ head/sys/kern/makesyscalls.sh Mon Jun 1 16:13:06 2009 (r193234) @@ -318,6 +318,13 @@ s/\$//g auditev = $2; } + # + # The currently-empty flags field. + # + { + flags = "0"; + } + $3 == "STD" || $3 == "NODEF" || $3 == "NOARGS" || $3 == "NOPROTO" \ || $3 == "NOIMPL" || $3 == "NOSTD" { parseline() @@ -369,14 +376,14 @@ s/\$//g printf("\t{ %s, (sy_call_t *)", argssize) > sysent column = 8 + 2 + length(argssize) + 15 if ($3 == "NOIMPL") { - printf("%s },", "nosys, AUE_NULL, NULL, 0, 0") > sysent - column = column + length("nosys") + 3 + printf("%s },", "nosys, AUE_NULL, NULL, 0, 0, 0") > sysent + column = column + length("nosys") + length("AUE_NULL") + 3 } else if ($3 == "NOSTD") { - printf("%s },", "lkmressys, AUE_NULL, NULL, 0, 0") > sysent - column = column + length("lkmressys") + 3 + printf("%s },", "lkmressys, AUE_NULL, NULL, 0, 0, 0") > sysent + column = column + length("lkmressys") + length("AUE_NULL") + 3 } else { - printf("%s, %s, NULL, 0, 0 },", funcname, auditev) > sysent - column = column + length(funcname) + length(auditev) + 3 + printf("%s, %s, NULL, 0, 0, %s },", funcname, auditev, flags) > sysent + column = column + length(funcname) + length(auditev) + length(flags) + 3 } align_sysent_comment(column) printf("/* %d = %s */\n", syscall, funcalias) > sysent @@ -426,10 +433,10 @@ s/\$//g argalias) > sysarg printf("%s\t%s%s(struct thread *, struct %s *);\n", rettype, prefix, funcname, argalias) > outdcl - printf("\t{ %s(%s,%s), %s, NULL, 0, 0 },", - wrap, argssize, funcname, auditev) > sysent + printf("\t{ %s(%s,%s), %s, NULL, 0, 0, %s },", + wrap, argssize, funcname, auditev, flags) > sysent align_sysent_comment(8 + 9 + \ - length(argssize) + 1 + length(funcname) + length(auditev) + 4) + length(argssize) + 1 + length(funcname) + length(auditev) + length(flags) + 4) printf("/* %d = old %s */\n", syscall, funcalias) > sysent printf("\t\"%s.%s\",\t\t/* %d = old %s */\n", wrap, funcalias, syscall, funcalias) > sysnames @@ -448,10 +455,10 @@ s/\$//g ncompat++ parseline() printf("%s\to%s();\n", rettype, funcname) > syscompatdcl - printf("\t{ compat(%s,%s), %s, NULL, 0, 0 },", - argssize, funcname, auditev) > sysent + printf("\t{ compat(%s,%s), %s, NULL, 0, 0, %s },", + argssize, funcname, auditev, flags) > sysent align_sysent_comment(8 + 9 + \ - length(argssize) + 1 + length(funcname) + length(auditev) + 4) + length(argssize) + 1 + length(funcname) + length(auditev) + length(flags) + 4) printf("/* %d = old %s */\n", syscall, funcalias) > sysent printf("\t\"old.%s\",\t\t/* %d = old %s */\n", funcalias, syscall, funcalias) > sysnames @@ -462,7 +469,7 @@ s/\$//g next } $3 == "OBSOL" { - printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },") > sysent + printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 },") > sysent align_sysent_comment(34) printf("/* %d = obsolete %s */\n", syscall, comment) > sysent printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n", @@ -473,7 +480,7 @@ s/\$//g next } $3 == "UNIMPL" { - printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },\t\t\t/* %d = %s */\n", + printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 },\t\t\t/* %d = %s */\n", syscall, comment) > sysent printf("\t\"#%d\",\t\t\t/* %d = %s */\n", syscall, syscall, comment) > sysnames Modified: head/sys/sys/sysent.h ============================================================================== --- head/sys/sys/sysent.h Mon Jun 1 16:00:36 2009 (r193233) +++ head/sys/sys/sysent.h Mon Jun 1 16:13:06 2009 (r193234) @@ -60,6 +60,7 @@ struct sysent { /* system call table * /* optional argument conversion function. */ u_int32_t sy_entry; /* DTrace entry ID for systrace. */ u_int32_t sy_return; /* DTrace return ID for systrace. */ + u_int32_t sy_flags; /* General flags for system calls. */ }; struct image_params; From rwatson at FreeBSD.org Mon Jun 1 16:14:39 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 16:14:48 2009 Subject: svn commit: r193235 - in head/sys: amd64/linux32 compat/freebsd32 compat/svr4 i386/ibcs2 i386/linux kern Message-ID: <200906011614.n51GEc9J083917@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 16:14:38 2009 New Revision: 193235 URL: http://svn.freebsd.org/changeset/base/193235 Log: Regenerate generated syscall files following changes to struct sysent in r193234. Modified: head/sys/amd64/linux32/linux32_sysent.c head/sys/compat/freebsd32/freebsd32_sysent.c head/sys/compat/svr4/svr4_sysent.c head/sys/i386/ibcs2/ibcs2_sysent.c head/sys/i386/linux/linux_sysent.c head/sys/kern/init_sysent.c Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Mon Jun 1 16:13:06 2009 (r193234) +++ head/sys/amd64/linux32/linux32_sysent.c Mon Jun 1 16:14:38 2009 (r193235) @@ -19,321 +19,321 @@ /* The casts are bogus but will do for now. */ struct sysent linux_sysent[] = { #define nosys linux_nosys - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 0 = setup */ - { AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT, NULL, 0, 0 }, /* 1 = exit */ - { 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0 }, /* 2 = linux_fork */ - { AS(read_args), (sy_call_t *)read, AUE_NULL, NULL, 0, 0 }, /* 3 = read */ - { AS(write_args), (sy_call_t *)write, AUE_NULL, NULL, 0, 0 }, /* 4 = write */ - { AS(linux_open_args), (sy_call_t *)linux_open, AUE_OPEN_RWTC, NULL, 0, 0 }, /* 5 = linux_open */ - { AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0 }, /* 6 = close */ - { AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_WAIT4, NULL, 0, 0 }, /* 7 = linux_waitpid */ - { AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_CREAT, NULL, 0, 0 }, /* 8 = linux_creat */ - { AS(linux_link_args), (sy_call_t *)linux_link, AUE_LINK, NULL, 0, 0 }, /* 9 = linux_link */ - { AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_UNLINK, NULL, 0, 0 }, /* 10 = linux_unlink */ - { AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_EXECVE, NULL, 0, 0 }, /* 11 = linux_execve */ - { AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_CHDIR, NULL, 0, 0 }, /* 12 = linux_chdir */ - { AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL, NULL, 0, 0 }, /* 13 = linux_time */ - { AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_MKNOD, NULL, 0, 0 }, /* 14 = linux_mknod */ - { AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_CHMOD, NULL, 0, 0 }, /* 15 = linux_chmod */ - { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_LCHOWN, NULL, 0, 0 }, /* 16 = linux_lchown16 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 17 = break */ - { AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_STAT, NULL, 0, 0 }, /* 18 = linux_stat */ - { AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_LSEEK, NULL, 0, 0 }, /* 19 = linux_lseek */ - { 0, (sy_call_t *)linux_getpid, AUE_GETPID, NULL, 0, 0 }, /* 20 = linux_getpid */ - { AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT, NULL, 0, 0 }, /* 21 = linux_mount */ - { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT, NULL, 0, 0 }, /* 22 = linux_oldumount */ - { AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_SETUID, NULL, 0, 0 }, /* 23 = linux_setuid16 */ - { 0, (sy_call_t *)linux_getuid16, AUE_GETUID, NULL, 0, 0 }, /* 24 = linux_getuid16 */ - { 0, (sy_call_t *)linux_stime, AUE_SETTIMEOFDAY, NULL, 0, 0 }, /* 25 = linux_stime */ - { AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_PTRACE, NULL, 0, 0 }, /* 26 = linux_ptrace */ - { AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL, NULL, 0, 0 }, /* 27 = linux_alarm */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 28 = fstat */ - { 0, (sy_call_t *)linux_pause, AUE_NULL, NULL, 0, 0 }, /* 29 = linux_pause */ - { AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_UTIME, NULL, 0, 0 }, /* 30 = linux_utime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 31 = stty */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 32 = gtty */ - { AS(linux_access_args), (sy_call_t *)linux_access, AUE_ACCESS, NULL, 0, 0 }, /* 33 = linux_access */ - { AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NICE, NULL, 0, 0 }, /* 34 = linux_nice */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 35 = ftime */ - { 0, (sy_call_t *)sync, AUE_SYNC, NULL, 0, 0 }, /* 36 = sync */ - { AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_KILL, NULL, 0, 0 }, /* 37 = linux_kill */ - { AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_RENAME, NULL, 0, 0 }, /* 38 = linux_rename */ - { AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_MKDIR, NULL, 0, 0 }, /* 39 = linux_mkdir */ - { AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_RMDIR, NULL, 0, 0 }, /* 40 = linux_rmdir */ - { AS(dup_args), (sy_call_t *)dup, AUE_DUP, NULL, 0, 0 }, /* 41 = dup */ - { AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_PIPE, NULL, 0, 0 }, /* 42 = linux_pipe */ - { AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL, NULL, 0, 0 }, /* 43 = linux_times */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 44 = prof */ - { AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL, NULL, 0, 0 }, /* 45 = linux_brk */ - { AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_SETGID, NULL, 0, 0 }, /* 46 = linux_setgid16 */ - { 0, (sy_call_t *)linux_getgid16, AUE_GETGID, NULL, 0, 0 }, /* 47 = linux_getgid16 */ - { AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL, NULL, 0, 0 }, /* 48 = linux_signal */ - { 0, (sy_call_t *)linux_geteuid16, AUE_GETEUID, NULL, 0, 0 }, /* 49 = linux_geteuid16 */ - { 0, (sy_call_t *)linux_getegid16, AUE_GETEGID, NULL, 0, 0 }, /* 50 = linux_getegid16 */ - { AS(acct_args), (sy_call_t *)acct, AUE_ACCT, NULL, 0, 0 }, /* 51 = acct */ - { AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT, NULL, 0, 0 }, /* 52 = linux_umount */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 53 = lock */ - { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_IOCTL, NULL, 0, 0 }, /* 54 = linux_ioctl */ - { AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_FCNTL, NULL, 0, 0 }, /* 55 = linux_fcntl */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 56 = mpx */ - { AS(setpgid_args), (sy_call_t *)setpgid, AUE_SETPGRP, NULL, 0, 0 }, /* 57 = setpgid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 58 = ulimit */ - { 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0 }, /* 59 = linux_olduname */ - { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0 }, /* 60 = umask */ - { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0 }, /* 61 = chroot */ - { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0 }, /* 62 = linux_ustat */ - { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0 }, /* 63 = dup2 */ - { 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0 }, /* 64 = linux_getppid */ - { 0, (sy_call_t *)getpgrp, AUE_GETPGRP, NULL, 0, 0 }, /* 65 = getpgrp */ - { 0, (sy_call_t *)setsid, AUE_SETSID, NULL, 0, 0 }, /* 66 = setsid */ - { AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL, NULL, 0, 0 }, /* 67 = linux_sigaction */ - { 0, (sy_call_t *)linux_sgetmask, AUE_NULL, NULL, 0, 0 }, /* 68 = linux_sgetmask */ - { AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL, NULL, 0, 0 }, /* 69 = linux_ssetmask */ - { AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_SETREUID, NULL, 0, 0 }, /* 70 = linux_setreuid16 */ - { AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_SETREGID, NULL, 0, 0 }, /* 71 = linux_setregid16 */ - { AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL, NULL, 0, 0 }, /* 72 = linux_sigsuspend */ - { AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL, NULL, 0, 0 }, /* 73 = linux_sigpending */ - { AS(linux_sethostname_args), (sy_call_t *)linux_sethostname, AUE_SYSCTL, NULL, 0, 0 }, /* 74 = linux_sethostname */ - { AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_SETRLIMIT, NULL, 0, 0 }, /* 75 = linux_setrlimit */ - { AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_GETRLIMIT, NULL, 0, 0 }, /* 76 = linux_old_getrlimit */ - { AS(linux_getrusage_args), (sy_call_t *)linux_getrusage, AUE_GETRUSAGE, NULL, 0, 0 }, /* 77 = linux_getrusage */ - { AS(linux_gettimeofday_args), (sy_call_t *)linux_gettimeofday, AUE_NULL, NULL, 0, 0 }, /* 78 = linux_gettimeofday */ - { AS(linux_settimeofday_args), (sy_call_t *)linux_settimeofday, AUE_SETTIMEOFDAY, NULL, 0, 0 }, /* 79 = linux_settimeofday */ - { AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_GETGROUPS, NULL, 0, 0 }, /* 80 = linux_getgroups16 */ - { AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_SETGROUPS, NULL, 0, 0 }, /* 81 = linux_setgroups16 */ - { AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_SELECT, NULL, 0, 0 }, /* 82 = linux_old_select */ - { AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_SYMLINK, NULL, 0, 0 }, /* 83 = linux_symlink */ - { AS(linux_lstat_args), (sy_call_t *)linux_lstat, AUE_LSTAT, NULL, 0, 0 }, /* 84 = linux_lstat */ - { AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_READLINK, NULL, 0, 0 }, /* 85 = linux_readlink */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 86 = linux_uselib */ - { AS(swapon_args), (sy_call_t *)swapon, AUE_SWAPON, NULL, 0, 0 }, /* 87 = swapon */ - { AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_REBOOT, NULL, 0, 0 }, /* 88 = linux_reboot */ - { AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 89 = linux_readdir */ - { AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_MMAP, NULL, 0, 0 }, /* 90 = linux_mmap */ - { AS(munmap_args), (sy_call_t *)munmap, AUE_MUNMAP, NULL, 0, 0 }, /* 91 = munmap */ - { AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_TRUNCATE, NULL, 0, 0 }, /* 92 = linux_truncate */ - { AS(linux_ftruncate_args), (sy_call_t *)linux_ftruncate, AUE_FTRUNCATE, NULL, 0, 0 }, /* 93 = linux_ftruncate */ - { AS(fchmod_args), (sy_call_t *)fchmod, AUE_FCHMOD, NULL, 0, 0 }, /* 94 = fchmod */ - { AS(fchown_args), (sy_call_t *)fchown, AUE_FCHOWN, NULL, 0, 0 }, /* 95 = fchown */ - { AS(linux_getpriority_args), (sy_call_t *)linux_getpriority, AUE_GETPRIORITY, NULL, 0, 0 }, /* 96 = linux_getpriority */ - { AS(setpriority_args), (sy_call_t *)setpriority, AUE_SETPRIORITY, NULL, 0, 0 }, /* 97 = setpriority */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 98 = profil */ - { AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_STATFS, NULL, 0, 0 }, /* 99 = linux_statfs */ - { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_FSTATFS, NULL, 0, 0 }, /* 100 = linux_fstatfs */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 101 = ioperm */ - { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL, NULL, 0, 0 }, /* 102 = linux_socketcall */ - { AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL, NULL, 0, 0 }, /* 103 = linux_syslog */ - { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_SETITIMER, NULL, 0, 0 }, /* 104 = linux_setitimer */ - { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_GETITIMER, NULL, 0, 0 }, /* 105 = linux_getitimer */ - { AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_STAT, NULL, 0, 0 }, /* 106 = linux_newstat */ - { AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_LSTAT, NULL, 0, 0 }, /* 107 = linux_newlstat */ - { AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_FSTAT, NULL, 0, 0 }, /* 108 = linux_newfstat */ - { 0, (sy_call_t *)linux_uname, AUE_NULL, NULL, 0, 0 }, /* 109 = linux_uname */ - { AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL, NULL, 0, 0 }, /* 110 = linux_iopl */ - { 0, (sy_call_t *)linux_vhangup, AUE_NULL, NULL, 0, 0 }, /* 111 = linux_vhangup */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 112 = idle */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 113 = vm86old */ - { AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_WAIT4, NULL, 0, 0 }, /* 114 = linux_wait4 */ - { 0, (sy_call_t *)linux_swapoff, AUE_SWAPOFF, NULL, 0, 0 }, /* 115 = linux_swapoff */ - { AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL, NULL, 0, 0 }, /* 116 = linux_sysinfo */ - { AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL, NULL, 0, 0 }, /* 117 = linux_ipc */ - { AS(fsync_args), (sy_call_t *)fsync, AUE_FSYNC, NULL, 0, 0 }, /* 118 = fsync */ - { AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_SIGRETURN, NULL, 0, 0 }, /* 119 = linux_sigreturn */ - { AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_RFORK, NULL, 0, 0 }, /* 120 = linux_clone */ - { AS(linux_setdomainname_args), (sy_call_t *)linux_setdomainname, AUE_SYSCTL, NULL, 0, 0 }, /* 121 = linux_setdomainname */ - { AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL, NULL, 0, 0 }, /* 122 = linux_newuname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 123 = modify_ldt */ - { 0, (sy_call_t *)linux_adjtimex, AUE_ADJTIME, NULL, 0, 0 }, /* 124 = linux_adjtimex */ - { AS(linux_mprotect_args), (sy_call_t *)linux_mprotect, AUE_MPROTECT, NULL, 0, 0 }, /* 125 = linux_mprotect */ - { AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0 }, /* 126 = linux_sigprocmask */ - { 0, (sy_call_t *)linux_create_module, AUE_NULL, NULL, 0, 0 }, /* 127 = linux_create_module */ - { 0, (sy_call_t *)linux_init_module, AUE_NULL, NULL, 0, 0 }, /* 128 = linux_init_module */ - { 0, (sy_call_t *)linux_delete_module, AUE_NULL, NULL, 0, 0 }, /* 129 = linux_delete_module */ - { 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL, NULL, 0, 0 }, /* 130 = linux_get_kernel_syms */ - { 0, (sy_call_t *)linux_quotactl, AUE_QUOTACTL, NULL, 0, 0 }, /* 131 = linux_quotactl */ - { AS(getpgid_args), (sy_call_t *)getpgid, AUE_GETPGID, NULL, 0, 0 }, /* 132 = getpgid */ - { AS(fchdir_args), (sy_call_t *)fchdir, AUE_FCHDIR, NULL, 0, 0 }, /* 133 = fchdir */ - { 0, (sy_call_t *)linux_bdflush, AUE_BDFLUSH, NULL, 0, 0 }, /* 134 = linux_bdflush */ - { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL, NULL, 0, 0 }, /* 135 = linux_sysfs */ - { AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_PERSONALITY, NULL, 0, 0 }, /* 136 = linux_personality */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 137 = afs_syscall */ - { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_SETFSUID, NULL, 0, 0 }, /* 138 = linux_setfsuid16 */ - { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_SETFSGID, NULL, 0, 0 }, /* 139 = linux_setfsgid16 */ - { AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_LSEEK, NULL, 0, 0 }, /* 140 = linux_llseek */ - { AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 141 = linux_getdents */ - { AS(linux_select_args), (sy_call_t *)linux_select, AUE_SELECT, NULL, 0, 0 }, /* 142 = linux_select */ - { AS(flock_args), (sy_call_t *)flock, AUE_FLOCK, NULL, 0, 0 }, /* 143 = flock */ - { AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_MSYNC, NULL, 0, 0 }, /* 144 = linux_msync */ - { AS(linux_readv_args), (sy_call_t *)linux_readv, AUE_READV, NULL, 0, 0 }, /* 145 = linux_readv */ - { AS(linux_writev_args), (sy_call_t *)linux_writev, AUE_WRITEV, NULL, 0, 0 }, /* 146 = linux_writev */ - { AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_GETSID, NULL, 0, 0 }, /* 147 = linux_getsid */ - { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL, NULL, 0, 0 }, /* 148 = linux_fdatasync */ - { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_SYSCTL, NULL, 0, 0 }, /* 149 = linux_sysctl */ - { AS(mlock_args), (sy_call_t *)mlock, AUE_MLOCK, NULL, 0, 0 }, /* 150 = mlock */ - { AS(munlock_args), (sy_call_t *)munlock, AUE_MUNLOCK, NULL, 0, 0 }, /* 151 = munlock */ - { AS(mlockall_args), (sy_call_t *)mlockall, AUE_MLOCKALL, NULL, 0, 0 }, /* 152 = mlockall */ - { 0, (sy_call_t *)munlockall, AUE_MUNLOCKALL, NULL, 0, 0 }, /* 153 = munlockall */ - { AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0 }, /* 154 = sched_setparam */ - { AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0 }, /* 155 = sched_getparam */ - { AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_SCHED_SETSCHEDULER, NULL, 0, 0 }, /* 156 = linux_sched_setscheduler */ - { AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_SCHED_GETSCHEDULER, NULL, 0, 0 }, /* 157 = linux_sched_getscheduler */ - { 0, (sy_call_t *)sched_yield, AUE_NULL, NULL, 0, 0 }, /* 158 = sched_yield */ - { AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_SCHED_GET_PRIORITY_MAX, NULL, 0, 0 }, /* 159 = linux_sched_get_priority_max */ - { AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_SCHED_GET_PRIORITY_MIN, NULL, 0, 0 }, /* 160 = linux_sched_get_priority_min */ - { AS(linux_sched_rr_get_interval_args), (sy_call_t *)linux_sched_rr_get_interval, AUE_SCHED_RR_GET_INTERVAL, NULL, 0, 0 }, /* 161 = linux_sched_rr_get_interval */ - { AS(linux_nanosleep_args), (sy_call_t *)linux_nanosleep, AUE_NULL, NULL, 0, 0 }, /* 162 = linux_nanosleep */ - { AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL, NULL, 0, 0 }, /* 163 = linux_mremap */ - { AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_SETRESUID, NULL, 0, 0 }, /* 164 = linux_setresuid16 */ - { AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16, AUE_GETRESUID, NULL, 0, 0 }, /* 165 = linux_getresuid16 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 166 = vm86 */ - { 0, (sy_call_t *)linux_query_module, AUE_NULL, NULL, 0, 0 }, /* 167 = linux_query_module */ - { AS(poll_args), (sy_call_t *)poll, AUE_POLL, NULL, 0, 0 }, /* 168 = poll */ - { 0, (sy_call_t *)linux_nfsservctl, AUE_NULL, NULL, 0, 0 }, /* 169 = linux_nfsservctl */ - { AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16, AUE_SETRESGID, NULL, 0, 0 }, /* 170 = linux_setresgid16 */ - { AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16, AUE_GETRESGID, NULL, 0, 0 }, /* 171 = linux_getresgid16 */ - { AS(linux_prctl_args), (sy_call_t *)linux_prctl, AUE_PRCTL, NULL, 0, 0 }, /* 172 = linux_prctl */ - { AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn, AUE_NULL, NULL, 0, 0 }, /* 173 = linux_rt_sigreturn */ - { AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction, AUE_NULL, NULL, 0, 0 }, /* 174 = linux_rt_sigaction */ - { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0 }, /* 175 = linux_rt_sigprocmask */ - { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0 }, /* 176 = linux_rt_sigpending */ - { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0 }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0 }, /* 178 = linux_rt_sigqueueinfo */ - { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0 }, /* 179 = linux_rt_sigsuspend */ - { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0 }, /* 180 = linux_pread */ - { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0 }, /* 181 = linux_pwrite */ - { AS(linux_chown16_args), (sy_call_t *)linux_chown16, AUE_CHOWN, NULL, 0, 0 }, /* 182 = linux_chown16 */ - { AS(linux_getcwd_args), (sy_call_t *)linux_getcwd, AUE_GETCWD, NULL, 0, 0 }, /* 183 = linux_getcwd */ - { 0, (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0 }, /* 184 = linux_capget */ - { 0, (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0 }, /* 185 = linux_capset */ - { AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0 }, /* 186 = linux_sigaltstack */ - { 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0 }, /* 187 = linux_sendfile */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 188 = getpmsg */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 189 = putpmsg */ - { 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0 }, /* 190 = linux_vfork */ - { AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit, AUE_GETRLIMIT, NULL, 0, 0 }, /* 191 = linux_getrlimit */ - { AS(linux_mmap2_args), (sy_call_t *)linux_mmap2, AUE_MMAP, NULL, 0, 0 }, /* 192 = linux_mmap2 */ - { AS(linux_truncate64_args), (sy_call_t *)linux_truncate64, AUE_TRUNCATE, NULL, 0, 0 }, /* 193 = linux_truncate64 */ - { AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64, AUE_FTRUNCATE, NULL, 0, 0 }, /* 194 = linux_ftruncate64 */ - { AS(linux_stat64_args), (sy_call_t *)linux_stat64, AUE_STAT, NULL, 0, 0 }, /* 195 = linux_stat64 */ - { AS(linux_lstat64_args), (sy_call_t *)linux_lstat64, AUE_LSTAT, NULL, 0, 0 }, /* 196 = linux_lstat64 */ - { AS(linux_fstat64_args), (sy_call_t *)linux_fstat64, AUE_FSTAT, NULL, 0, 0 }, /* 197 = linux_fstat64 */ - { AS(linux_lchown_args), (sy_call_t *)linux_lchown, AUE_LCHOWN, NULL, 0, 0 }, /* 198 = linux_lchown */ - { 0, (sy_call_t *)linux_getuid, AUE_GETUID, NULL, 0, 0 }, /* 199 = linux_getuid */ - { 0, (sy_call_t *)linux_getgid, AUE_GETGID, NULL, 0, 0 }, /* 200 = linux_getgid */ - { 0, (sy_call_t *)geteuid, AUE_GETEUID, NULL, 0, 0 }, /* 201 = geteuid */ - { 0, (sy_call_t *)getegid, AUE_GETEGID, NULL, 0, 0 }, /* 202 = getegid */ - { AS(setreuid_args), (sy_call_t *)setreuid, AUE_SETREUID, NULL, 0, 0 }, /* 203 = setreuid */ - { AS(setregid_args), (sy_call_t *)setregid, AUE_SETREGID, NULL, 0, 0 }, /* 204 = setregid */ - { AS(linux_getgroups_args), (sy_call_t *)linux_getgroups, AUE_GETGROUPS, NULL, 0, 0 }, /* 205 = linux_getgroups */ - { AS(linux_setgroups_args), (sy_call_t *)linux_setgroups, AUE_SETGROUPS, NULL, 0, 0 }, /* 206 = linux_setgroups */ - { AS(fchown_args), (sy_call_t *)fchown, AUE_NULL, NULL, 0, 0 }, /* 207 = fchown */ - { AS(setresuid_args), (sy_call_t *)setresuid, AUE_SETRESUID, NULL, 0, 0 }, /* 208 = setresuid */ - { AS(getresuid_args), (sy_call_t *)getresuid, AUE_GETRESUID, NULL, 0, 0 }, /* 209 = getresuid */ - { AS(setresgid_args), (sy_call_t *)setresgid, AUE_SETRESGID, NULL, 0, 0 }, /* 210 = setresgid */ - { AS(getresgid_args), (sy_call_t *)getresgid, AUE_GETRESGID, NULL, 0, 0 }, /* 211 = getresgid */ - { AS(linux_chown_args), (sy_call_t *)linux_chown, AUE_CHOWN, NULL, 0, 0 }, /* 212 = linux_chown */ - { AS(setuid_args), (sy_call_t *)setuid, AUE_SETUID, NULL, 0, 0 }, /* 213 = setuid */ - { AS(setgid_args), (sy_call_t *)setgid, AUE_SETGID, NULL, 0, 0 }, /* 214 = setgid */ - { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid, AUE_SETFSUID, NULL, 0, 0 }, /* 215 = linux_setfsuid */ - { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid, AUE_SETFSGID, NULL, 0, 0 }, /* 216 = linux_setfsgid */ - { AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root, AUE_PIVOT_ROOT, NULL, 0, 0 }, /* 217 = linux_pivot_root */ - { AS(linux_mincore_args), (sy_call_t *)linux_mincore, AUE_MINCORE, NULL, 0, 0 }, /* 218 = linux_mincore */ - { AS(madvise_args), (sy_call_t *)madvise, AUE_MADVISE, NULL, 0, 0 }, /* 219 = madvise */ - { AS(linux_getdents64_args), (sy_call_t *)linux_getdents64, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 220 = linux_getdents64 */ - { AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64, AUE_FCNTL, NULL, 0, 0 }, /* 221 = linux_fcntl64 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 222 = */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 223 = */ - { 0, (sy_call_t *)linux_gettid, AUE_NULL, NULL, 0, 0 }, /* 224 = linux_gettid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 225 = linux_readahead */ - { 0, (sy_call_t *)linux_setxattr, AUE_NULL, NULL, 0, 0 }, /* 226 = linux_setxattr */ - { 0, (sy_call_t *)linux_lsetxattr, AUE_NULL, NULL, 0, 0 }, /* 227 = linux_lsetxattr */ - { 0, (sy_call_t *)linux_fsetxattr, AUE_NULL, NULL, 0, 0 }, /* 228 = linux_fsetxattr */ - { 0, (sy_call_t *)linux_getxattr, AUE_NULL, NULL, 0, 0 }, /* 229 = linux_getxattr */ - { 0, (sy_call_t *)linux_lgetxattr, AUE_NULL, NULL, 0, 0 }, /* 230 = linux_lgetxattr */ - { 0, (sy_call_t *)linux_fgetxattr, AUE_NULL, NULL, 0, 0 }, /* 231 = linux_fgetxattr */ - { 0, (sy_call_t *)linux_listxattr, AUE_NULL, NULL, 0, 0 }, /* 232 = linux_listxattr */ - { 0, (sy_call_t *)linux_llistxattr, AUE_NULL, NULL, 0, 0 }, /* 233 = linux_llistxattr */ - { 0, (sy_call_t *)linux_flistxattr, AUE_NULL, NULL, 0, 0 }, /* 234 = linux_flistxattr */ - { 0, (sy_call_t *)linux_removexattr, AUE_NULL, NULL, 0, 0 }, /* 235 = linux_removexattr */ - { 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0 }, /* 236 = linux_lremovexattr */ - { 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0 }, /* 237 = linux_fremovexattr */ - { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0 }, /* 238 = linux_tkill */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 239 = linux_sendfile64 */ - { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0 }, /* 240 = linux_sys_futex */ - { AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0 }, /* 241 = linux_sched_setaffinity */ - { AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 }, /* 242 = linux_sched_getaffinity */ - { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL, NULL, 0, 0 }, /* 243 = linux_set_thread_area */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 244 = linux_get_thread_area */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 245 = linux_io_setup */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 246 = linux_io_destroy */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 247 = linux_io_getevents */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 248 = inux_io_submit */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 249 = linux_io_cancel */ - { 0, (sy_call_t *)linux_fadvise64, AUE_NULL, NULL, 0, 0 }, /* 250 = linux_fadvise64 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 251 = */ - { AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0 }, /* 252 = linux_exit_group */ - { 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0 }, /* 253 = linux_lookup_dcookie */ - { 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0 }, /* 254 = linux_epoll_create */ - { 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 }, /* 255 = linux_epoll_ctl */ - { 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 }, /* 256 = linux_epoll_wait */ - { 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0 }, /* 257 = linux_remap_file_pages */ - { AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0 }, /* 258 = linux_set_tid_address */ - { 0, (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0 }, /* 259 = linux_timer_create */ - { 0, (sy_call_t *)linux_timer_settime, AUE_NULL, NULL, 0, 0 }, /* 260 = linux_timer_settime */ - { 0, (sy_call_t *)linux_timer_gettime, AUE_NULL, NULL, 0, 0 }, /* 261 = linux_timer_gettime */ - { 0, (sy_call_t *)linux_timer_getoverrun, AUE_NULL, NULL, 0, 0 }, /* 262 = linux_timer_getoverrun */ - { 0, (sy_call_t *)linux_timer_delete, AUE_NULL, NULL, 0, 0 }, /* 263 = linux_timer_delete */ - { AS(linux_clock_settime_args), (sy_call_t *)linux_clock_settime, AUE_CLOCK_SETTIME, NULL, 0, 0 }, /* 264 = linux_clock_settime */ - { AS(linux_clock_gettime_args), (sy_call_t *)linux_clock_gettime, AUE_NULL, NULL, 0, 0 }, /* 265 = linux_clock_gettime */ - { AS(linux_clock_getres_args), (sy_call_t *)linux_clock_getres, AUE_NULL, NULL, 0, 0 }, /* 266 = linux_clock_getres */ - { AS(linux_clock_nanosleep_args), (sy_call_t *)linux_clock_nanosleep, AUE_NULL, NULL, 0, 0 }, /* 267 = linux_clock_nanosleep */ - { AS(linux_statfs64_args), (sy_call_t *)linux_statfs64, AUE_STATFS, NULL, 0, 0 }, /* 268 = linux_statfs64 */ - { 0, (sy_call_t *)linux_fstatfs64, AUE_FSTATFS, NULL, 0, 0 }, /* 269 = linux_fstatfs64 */ - { AS(linux_tgkill_args), (sy_call_t *)linux_tgkill, AUE_NULL, NULL, 0, 0 }, /* 270 = linux_tgkill */ - { AS(linux_utimes_args), (sy_call_t *)linux_utimes, AUE_UTIMES, NULL, 0, 0 }, /* 271 = linux_utimes */ - { 0, (sy_call_t *)linux_fadvise64_64, AUE_NULL, NULL, 0, 0 }, /* 272 = linux_fadvise64_64 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 273 = */ - { 0, (sy_call_t *)linux_mbind, AUE_NULL, NULL, 0, 0 }, /* 274 = linux_mbind */ - { 0, (sy_call_t *)linux_get_mempolicy, AUE_NULL, NULL, 0, 0 }, /* 275 = linux_get_mempolicy */ - { 0, (sy_call_t *)linux_set_mempolicy, AUE_NULL, NULL, 0, 0 }, /* 276 = linux_set_mempolicy */ - { 0, (sy_call_t *)linux_mq_open, AUE_NULL, NULL, 0, 0 }, /* 277 = linux_mq_open */ - { 0, (sy_call_t *)linux_mq_unlink, AUE_NULL, NULL, 0, 0 }, /* 278 = linux_mq_unlink */ - { 0, (sy_call_t *)linux_mq_timedsend, AUE_NULL, NULL, 0, 0 }, /* 279 = linux_mq_timedsend */ - { 0, (sy_call_t *)linux_mq_timedreceive, AUE_NULL, NULL, 0, 0 }, /* 280 = linux_mq_timedreceive */ - { 0, (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0 }, /* 281 = linux_mq_notify */ - { 0, (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0 }, /* 282 = linux_mq_getsetattr */ - { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0 }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0 }, /* 284 = linux_waitid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 285 = */ - { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0 }, /* 286 = linux_add_key */ - { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0 }, /* 287 = linux_request_key */ - { 0, (sy_call_t *)linux_keyctl, AUE_NULL, NULL, 0, 0 }, /* 288 = linux_keyctl */ - { 0, (sy_call_t *)linux_ioprio_set, AUE_NULL, NULL, 0, 0 }, /* 289 = linux_ioprio_set */ - { 0, (sy_call_t *)linux_ioprio_get, AUE_NULL, NULL, 0, 0 }, /* 290 = linux_ioprio_get */ - { 0, (sy_call_t *)linux_inotify_init, AUE_NULL, NULL, 0, 0 }, /* 291 = linux_inotify_init */ - { 0, (sy_call_t *)linux_inotify_add_watch, AUE_NULL, NULL, 0, 0 }, /* 292 = linux_inotify_add_watch */ - { 0, (sy_call_t *)linux_inotify_rm_watch, AUE_NULL, NULL, 0, 0 }, /* 293 = linux_inotify_rm_watch */ - { 0, (sy_call_t *)linux_migrate_pages, AUE_NULL, NULL, 0, 0 }, /* 294 = linux_migrate_pages */ - { AS(linux_openat_args), (sy_call_t *)linux_openat, AUE_OPEN_RWTC, NULL, 0, 0 }, /* 295 = linux_openat */ - { AS(linux_mkdirat_args), (sy_call_t *)linux_mkdirat, AUE_MKDIRAT, NULL, 0, 0 }, /* 296 = linux_mkdirat */ - { AS(linux_mknodat_args), (sy_call_t *)linux_mknodat, AUE_MKNODAT, NULL, 0, 0 }, /* 297 = linux_mknodat */ - { AS(linux_fchownat_args), (sy_call_t *)linux_fchownat, AUE_FCHOWNAT, NULL, 0, 0 }, /* 298 = linux_fchownat */ - { AS(linux_futimesat_args), (sy_call_t *)linux_futimesat, AUE_FUTIMESAT, NULL, 0, 0 }, /* 299 = linux_futimesat */ - { AS(linux_fstatat64_args), (sy_call_t *)linux_fstatat64, AUE_FSTATAT, NULL, 0, 0 }, /* 300 = linux_fstatat64 */ - { AS(linux_unlinkat_args), (sy_call_t *)linux_unlinkat, AUE_UNLINKAT, NULL, 0, 0 }, /* 301 = linux_unlinkat */ - { AS(linux_renameat_args), (sy_call_t *)linux_renameat, AUE_RENAMEAT, NULL, 0, 0 }, /* 302 = linux_renameat */ - { AS(linux_linkat_args), (sy_call_t *)linux_linkat, AUE_LINKAT, NULL, 0, 0 }, /* 303 = linux_linkat */ - { AS(linux_symlinkat_args), (sy_call_t *)linux_symlinkat, AUE_SYMLINKAT, NULL, 0, 0 }, /* 304 = linux_symlinkat */ - { AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0 }, /* 305 = linux_readlinkat */ - { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0 }, /* 306 = linux_fchmodat */ - { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0 }, /* 307 = linux_faccessat */ - { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 }, /* 308 = linux_pselect6 */ - { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 }, /* 309 = linux_ppoll */ - { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 }, /* 310 = linux_unshare */ - { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 }, /* 311 = linux_set_robust_list */ - { AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 }, /* 312 = linux_get_robust_list */ - { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 }, /* 313 = linux_splice */ - { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 }, /* 314 = linux_sync_file_range */ - { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 }, /* 315 = linux_tee */ - { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0 }, /* 316 = linux_vmsplice */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 0 = setup */ + { AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT, NULL, 0, 0, 0 }, /* 1 = exit */ + { 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0, 0 }, /* 2 = linux_fork */ + { AS(read_args), (sy_call_t *)read, AUE_NULL, NULL, 0, 0, 0 }, /* 3 = read */ + { AS(write_args), (sy_call_t *)write, AUE_NULL, NULL, 0, 0, 0 }, /* 4 = write */ + { AS(linux_open_args), (sy_call_t *)linux_open, AUE_OPEN_RWTC, NULL, 0, 0, 0 }, /* 5 = linux_open */ + { AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0, 0 }, /* 6 = close */ + { AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_WAIT4, NULL, 0, 0, 0 }, /* 7 = linux_waitpid */ + { AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_CREAT, NULL, 0, 0, 0 }, /* 8 = linux_creat */ + { AS(linux_link_args), (sy_call_t *)linux_link, AUE_LINK, NULL, 0, 0, 0 }, /* 9 = linux_link */ + { AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_UNLINK, NULL, 0, 0, 0 }, /* 10 = linux_unlink */ + { AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_EXECVE, NULL, 0, 0, 0 }, /* 11 = linux_execve */ + { AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_CHDIR, NULL, 0, 0, 0 }, /* 12 = linux_chdir */ + { AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL, NULL, 0, 0, 0 }, /* 13 = linux_time */ + { AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_MKNOD, NULL, 0, 0, 0 }, /* 14 = linux_mknod */ + { AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_CHMOD, NULL, 0, 0, 0 }, /* 15 = linux_chmod */ + { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_LCHOWN, NULL, 0, 0, 0 }, /* 16 = linux_lchown16 */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 17 = break */ + { AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_STAT, NULL, 0, 0, 0 }, /* 18 = linux_stat */ + { AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_LSEEK, NULL, 0, 0, 0 }, /* 19 = linux_lseek */ + { 0, (sy_call_t *)linux_getpid, AUE_GETPID, NULL, 0, 0, 0 }, /* 20 = linux_getpid */ + { AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT, NULL, 0, 0, 0 }, /* 21 = linux_mount */ + { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT, NULL, 0, 0, 0 }, /* 22 = linux_oldumount */ + { AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_SETUID, NULL, 0, 0, 0 }, /* 23 = linux_setuid16 */ + { 0, (sy_call_t *)linux_getuid16, AUE_GETUID, NULL, 0, 0, 0 }, /* 24 = linux_getuid16 */ + { 0, (sy_call_t *)linux_stime, AUE_SETTIMEOFDAY, NULL, 0, 0, 0 }, /* 25 = linux_stime */ + { AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_PTRACE, NULL, 0, 0, 0 }, /* 26 = linux_ptrace */ + { AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL, NULL, 0, 0, 0 }, /* 27 = linux_alarm */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 28 = fstat */ + { 0, (sy_call_t *)linux_pause, AUE_NULL, NULL, 0, 0, 0 }, /* 29 = linux_pause */ + { AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_UTIME, NULL, 0, 0, 0 }, /* 30 = linux_utime */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 31 = stty */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 32 = gtty */ + { AS(linux_access_args), (sy_call_t *)linux_access, AUE_ACCESS, NULL, 0, 0, 0 }, /* 33 = linux_access */ + { AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NICE, NULL, 0, 0, 0 }, /* 34 = linux_nice */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 35 = ftime */ + { 0, (sy_call_t *)sync, AUE_SYNC, NULL, 0, 0, 0 }, /* 36 = sync */ + { AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_KILL, NULL, 0, 0, 0 }, /* 37 = linux_kill */ + { AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_RENAME, NULL, 0, 0, 0 }, /* 38 = linux_rename */ + { AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_MKDIR, NULL, 0, 0, 0 }, /* 39 = linux_mkdir */ + { AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_RMDIR, NULL, 0, 0, 0 }, /* 40 = linux_rmdir */ + { AS(dup_args), (sy_call_t *)dup, AUE_DUP, NULL, 0, 0, 0 }, /* 41 = dup */ + { AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_PIPE, NULL, 0, 0, 0 }, /* 42 = linux_pipe */ + { AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL, NULL, 0, 0, 0 }, /* 43 = linux_times */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 44 = prof */ + { AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL, NULL, 0, 0, 0 }, /* 45 = linux_brk */ + { AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_SETGID, NULL, 0, 0, 0 }, /* 46 = linux_setgid16 */ + { 0, (sy_call_t *)linux_getgid16, AUE_GETGID, NULL, 0, 0, 0 }, /* 47 = linux_getgid16 */ + { AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL, NULL, 0, 0, 0 }, /* 48 = linux_signal */ + { 0, (sy_call_t *)linux_geteuid16, AUE_GETEUID, NULL, 0, 0, 0 }, /* 49 = linux_geteuid16 */ + { 0, (sy_call_t *)linux_getegid16, AUE_GETEGID, NULL, 0, 0, 0 }, /* 50 = linux_getegid16 */ + { AS(acct_args), (sy_call_t *)acct, AUE_ACCT, NULL, 0, 0, 0 }, /* 51 = acct */ + { AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT, NULL, 0, 0, 0 }, /* 52 = linux_umount */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 53 = lock */ + { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_IOCTL, NULL, 0, 0, 0 }, /* 54 = linux_ioctl */ + { AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_FCNTL, NULL, 0, 0, 0 }, /* 55 = linux_fcntl */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 56 = mpx */ + { AS(setpgid_args), (sy_call_t *)setpgid, AUE_SETPGRP, NULL, 0, 0, 0 }, /* 57 = setpgid */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 58 = ulimit */ + { 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0, 0 }, /* 59 = linux_olduname */ + { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0, 0 }, /* 60 = umask */ + { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0, 0 }, /* 61 = chroot */ + { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0, 0 }, /* 62 = linux_ustat */ + { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0, 0 }, /* 63 = dup2 */ + { 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0, 0 }, /* 64 = linux_getppid */ + { 0, (sy_call_t *)getpgrp, AUE_GETPGRP, NULL, 0, 0, 0 }, /* 65 = getpgrp */ + { 0, (sy_call_t *)setsid, AUE_SETSID, NULL, 0, 0, 0 }, /* 66 = setsid */ + { AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL, NULL, 0, 0, 0 }, /* 67 = linux_sigaction */ + { 0, (sy_call_t *)linux_sgetmask, AUE_NULL, NULL, 0, 0, 0 }, /* 68 = linux_sgetmask */ + { AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL, NULL, 0, 0, 0 }, /* 69 = linux_ssetmask */ + { AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_SETREUID, NULL, 0, 0, 0 }, /* 70 = linux_setreuid16 */ + { AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_SETREGID, NULL, 0, 0, 0 }, /* 71 = linux_setregid16 */ + { AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL, NULL, 0, 0, 0 }, /* 72 = linux_sigsuspend */ + { AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL, NULL, 0, 0, 0 }, /* 73 = linux_sigpending */ + { AS(linux_sethostname_args), (sy_call_t *)linux_sethostname, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 74 = linux_sethostname */ + { AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_SETRLIMIT, NULL, 0, 0, 0 }, /* 75 = linux_setrlimit */ + { AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_GETRLIMIT, NULL, 0, 0, 0 }, /* 76 = linux_old_getrlimit */ + { AS(linux_getrusage_args), (sy_call_t *)linux_getrusage, AUE_GETRUSAGE, NULL, 0, 0, 0 }, /* 77 = linux_getrusage */ + { AS(linux_gettimeofday_args), (sy_call_t *)linux_gettimeofday, AUE_NULL, NULL, 0, 0, 0 }, /* 78 = linux_gettimeofday */ + { AS(linux_settimeofday_args), (sy_call_t *)linux_settimeofday, AUE_SETTIMEOFDAY, NULL, 0, 0, 0 }, /* 79 = linux_settimeofday */ + { AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_GETGROUPS, NULL, 0, 0, 0 }, /* 80 = linux_getgroups16 */ + { AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_SETGROUPS, NULL, 0, 0, 0 }, /* 81 = linux_setgroups16 */ + { AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_SELECT, NULL, 0, 0, 0 }, /* 82 = linux_old_select */ + { AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_SYMLINK, NULL, 0, 0, 0 }, /* 83 = linux_symlink */ + { AS(linux_lstat_args), (sy_call_t *)linux_lstat, AUE_LSTAT, NULL, 0, 0, 0 }, /* 84 = linux_lstat */ + { AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_READLINK, NULL, 0, 0, 0 }, /* 85 = linux_readlink */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 86 = linux_uselib */ + { AS(swapon_args), (sy_call_t *)swapon, AUE_SWAPON, NULL, 0, 0, 0 }, /* 87 = swapon */ + { AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_REBOOT, NULL, 0, 0, 0 }, /* 88 = linux_reboot */ + { AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_GETDIRENTRIES, NULL, 0, 0, 0 }, /* 89 = linux_readdir */ + { AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_MMAP, NULL, 0, 0, 0 }, /* 90 = linux_mmap */ + { AS(munmap_args), (sy_call_t *)munmap, AUE_MUNMAP, NULL, 0, 0, 0 }, /* 91 = munmap */ + { AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_TRUNCATE, NULL, 0, 0, 0 }, /* 92 = linux_truncate */ + { AS(linux_ftruncate_args), (sy_call_t *)linux_ftruncate, AUE_FTRUNCATE, NULL, 0, 0, 0 }, /* 93 = linux_ftruncate */ + { AS(fchmod_args), (sy_call_t *)fchmod, AUE_FCHMOD, NULL, 0, 0, 0 }, /* 94 = fchmod */ + { AS(fchown_args), (sy_call_t *)fchown, AUE_FCHOWN, NULL, 0, 0, 0 }, /* 95 = fchown */ + { AS(linux_getpriority_args), (sy_call_t *)linux_getpriority, AUE_GETPRIORITY, NULL, 0, 0, 0 }, /* 96 = linux_getpriority */ + { AS(setpriority_args), (sy_call_t *)setpriority, AUE_SETPRIORITY, NULL, 0, 0, 0 }, /* 97 = setpriority */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 98 = profil */ + { AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_STATFS, NULL, 0, 0, 0 }, /* 99 = linux_statfs */ + { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_FSTATFS, NULL, 0, 0, 0 }, /* 100 = linux_fstatfs */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 101 = ioperm */ + { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL, NULL, 0, 0, 0 }, /* 102 = linux_socketcall */ + { AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL, NULL, 0, 0, 0 }, /* 103 = linux_syslog */ + { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_SETITIMER, NULL, 0, 0, 0 }, /* 104 = linux_setitimer */ + { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_GETITIMER, NULL, 0, 0, 0 }, /* 105 = linux_getitimer */ + { AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_STAT, NULL, 0, 0, 0 }, /* 106 = linux_newstat */ + { AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_LSTAT, NULL, 0, 0, 0 }, /* 107 = linux_newlstat */ + { AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_FSTAT, NULL, 0, 0, 0 }, /* 108 = linux_newfstat */ + { 0, (sy_call_t *)linux_uname, AUE_NULL, NULL, 0, 0, 0 }, /* 109 = linux_uname */ + { AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL, NULL, 0, 0, 0 }, /* 110 = linux_iopl */ + { 0, (sy_call_t *)linux_vhangup, AUE_NULL, NULL, 0, 0, 0 }, /* 111 = linux_vhangup */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 112 = idle */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 113 = vm86old */ + { AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_WAIT4, NULL, 0, 0, 0 }, /* 114 = linux_wait4 */ + { 0, (sy_call_t *)linux_swapoff, AUE_SWAPOFF, NULL, 0, 0, 0 }, /* 115 = linux_swapoff */ + { AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL, NULL, 0, 0, 0 }, /* 116 = linux_sysinfo */ + { AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL, NULL, 0, 0, 0 }, /* 117 = linux_ipc */ + { AS(fsync_args), (sy_call_t *)fsync, AUE_FSYNC, NULL, 0, 0, 0 }, /* 118 = fsync */ + { AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_SIGRETURN, NULL, 0, 0, 0 }, /* 119 = linux_sigreturn */ + { AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_RFORK, NULL, 0, 0, 0 }, /* 120 = linux_clone */ + { AS(linux_setdomainname_args), (sy_call_t *)linux_setdomainname, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 121 = linux_setdomainname */ + { AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL, NULL, 0, 0, 0 }, /* 122 = linux_newuname */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 123 = modify_ldt */ + { 0, (sy_call_t *)linux_adjtimex, AUE_ADJTIME, NULL, 0, 0, 0 }, /* 124 = linux_adjtimex */ + { AS(linux_mprotect_args), (sy_call_t *)linux_mprotect, AUE_MPROTECT, NULL, 0, 0, 0 }, /* 125 = linux_mprotect */ + { AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0, 0 }, /* 126 = linux_sigprocmask */ + { 0, (sy_call_t *)linux_create_module, AUE_NULL, NULL, 0, 0, 0 }, /* 127 = linux_create_module */ + { 0, (sy_call_t *)linux_init_module, AUE_NULL, NULL, 0, 0, 0 }, /* 128 = linux_init_module */ + { 0, (sy_call_t *)linux_delete_module, AUE_NULL, NULL, 0, 0, 0 }, /* 129 = linux_delete_module */ + { 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL, NULL, 0, 0, 0 }, /* 130 = linux_get_kernel_syms */ + { 0, (sy_call_t *)linux_quotactl, AUE_QUOTACTL, NULL, 0, 0, 0 }, /* 131 = linux_quotactl */ + { AS(getpgid_args), (sy_call_t *)getpgid, AUE_GETPGID, NULL, 0, 0, 0 }, /* 132 = getpgid */ + { AS(fchdir_args), (sy_call_t *)fchdir, AUE_FCHDIR, NULL, 0, 0, 0 }, /* 133 = fchdir */ + { 0, (sy_call_t *)linux_bdflush, AUE_BDFLUSH, NULL, 0, 0, 0 }, /* 134 = linux_bdflush */ + { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL, NULL, 0, 0, 0 }, /* 135 = linux_sysfs */ + { AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_PERSONALITY, NULL, 0, 0, 0 }, /* 136 = linux_personality */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 137 = afs_syscall */ + { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_SETFSUID, NULL, 0, 0, 0 }, /* 138 = linux_setfsuid16 */ + { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_SETFSGID, NULL, 0, 0, 0 }, /* 139 = linux_setfsgid16 */ + { AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_LSEEK, NULL, 0, 0, 0 }, /* 140 = linux_llseek */ + { AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_GETDIRENTRIES, NULL, 0, 0, 0 }, /* 141 = linux_getdents */ + { AS(linux_select_args), (sy_call_t *)linux_select, AUE_SELECT, NULL, 0, 0, 0 }, /* 142 = linux_select */ + { AS(flock_args), (sy_call_t *)flock, AUE_FLOCK, NULL, 0, 0, 0 }, /* 143 = flock */ + { AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_MSYNC, NULL, 0, 0, 0 }, /* 144 = linux_msync */ + { AS(linux_readv_args), (sy_call_t *)linux_readv, AUE_READV, NULL, 0, 0, 0 }, /* 145 = linux_readv */ + { AS(linux_writev_args), (sy_call_t *)linux_writev, AUE_WRITEV, NULL, 0, 0, 0 }, /* 146 = linux_writev */ + { AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_GETSID, NULL, 0, 0, 0 }, /* 147 = linux_getsid */ + { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL, NULL, 0, 0, 0 }, /* 148 = linux_fdatasync */ + { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 149 = linux_sysctl */ + { AS(mlock_args), (sy_call_t *)mlock, AUE_MLOCK, NULL, 0, 0, 0 }, /* 150 = mlock */ + { AS(munlock_args), (sy_call_t *)munlock, AUE_MUNLOCK, NULL, 0, 0, 0 }, /* 151 = munlock */ + { AS(mlockall_args), (sy_call_t *)mlockall, AUE_MLOCKALL, NULL, 0, 0, 0 }, /* 152 = mlockall */ + { 0, (sy_call_t *)munlockall, AUE_MUNLOCKALL, NULL, 0, 0, 0 }, /* 153 = munlockall */ + { AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0, 0 }, /* 154 = sched_setparam */ + { AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0, 0 }, /* 155 = sched_getparam */ + { AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_SCHED_SETSCHEDULER, NULL, 0, 0, 0 }, /* 156 = linux_sched_setscheduler */ + { AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_SCHED_GETSCHEDULER, NULL, 0, 0, 0 }, /* 157 = linux_sched_getscheduler */ + { 0, (sy_call_t *)sched_yield, AUE_NULL, NULL, 0, 0, 0 }, /* 158 = sched_yield */ + { AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_SCHED_GET_PRIORITY_MAX, NULL, 0, 0, 0 }, /* 159 = linux_sched_get_priority_max */ + { AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_SCHED_GET_PRIORITY_MIN, NULL, 0, 0, 0 }, /* 160 = linux_sched_get_priority_min */ + { AS(linux_sched_rr_get_interval_args), (sy_call_t *)linux_sched_rr_get_interval, AUE_SCHED_RR_GET_INTERVAL, NULL, 0, 0, 0 }, /* 161 = linux_sched_rr_get_interval */ + { AS(linux_nanosleep_args), (sy_call_t *)linux_nanosleep, AUE_NULL, NULL, 0, 0, 0 }, /* 162 = linux_nanosleep */ + { AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL, NULL, 0, 0, 0 }, /* 163 = linux_mremap */ + { AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_SETRESUID, NULL, 0, 0, 0 }, /* 164 = linux_setresuid16 */ + { AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16, AUE_GETRESUID, NULL, 0, 0, 0 }, /* 165 = linux_getresuid16 */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 166 = vm86 */ + { 0, (sy_call_t *)linux_query_module, AUE_NULL, NULL, 0, 0, 0 }, /* 167 = linux_query_module */ + { AS(poll_args), (sy_call_t *)poll, AUE_POLL, NULL, 0, 0, 0 }, /* 168 = poll */ + { 0, (sy_call_t *)linux_nfsservctl, AUE_NULL, NULL, 0, 0, 0 }, /* 169 = linux_nfsservctl */ + { AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16, AUE_SETRESGID, NULL, 0, 0, 0 }, /* 170 = linux_setresgid16 */ + { AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16, AUE_GETRESGID, NULL, 0, 0, 0 }, /* 171 = linux_getresgid16 */ + { AS(linux_prctl_args), (sy_call_t *)linux_prctl, AUE_PRCTL, NULL, 0, 0, 0 }, /* 172 = linux_prctl */ + { AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn, AUE_NULL, NULL, 0, 0, 0 }, /* 173 = linux_rt_sigreturn */ + { AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction, AUE_NULL, NULL, 0, 0, 0 }, /* 174 = linux_rt_sigaction */ + { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0, 0 }, /* 175 = linux_rt_sigprocmask */ + { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0, 0 }, /* 176 = linux_rt_sigpending */ + { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0, 0 }, /* 177 = linux_rt_sigtimedwait */ + { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0 }, /* 178 = linux_rt_sigqueueinfo */ + { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0, 0 }, /* 179 = linux_rt_sigsuspend */ + { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0, 0 }, /* 180 = linux_pread */ + { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0, 0 }, /* 181 = linux_pwrite */ + { AS(linux_chown16_args), (sy_call_t *)linux_chown16, AUE_CHOWN, NULL, 0, 0, 0 }, /* 182 = linux_chown16 */ + { AS(linux_getcwd_args), (sy_call_t *)linux_getcwd, AUE_GETCWD, NULL, 0, 0, 0 }, /* 183 = linux_getcwd */ + { 0, (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0, 0 }, /* 184 = linux_capget */ + { 0, (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0, 0 }, /* 185 = linux_capset */ + { AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0, 0 }, /* 186 = linux_sigaltstack */ + { 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0 }, /* 187 = linux_sendfile */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 188 = getpmsg */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 189 = putpmsg */ + { 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0, 0 }, /* 190 = linux_vfork */ + { AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit, AUE_GETRLIMIT, NULL, 0, 0, 0 }, /* 191 = linux_getrlimit */ + { AS(linux_mmap2_args), (sy_call_t *)linux_mmap2, AUE_MMAP, NULL, 0, 0, 0 }, /* 192 = linux_mmap2 */ + { AS(linux_truncate64_args), (sy_call_t *)linux_truncate64, AUE_TRUNCATE, NULL, 0, 0, 0 }, /* 193 = linux_truncate64 */ + { AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64, AUE_FTRUNCATE, NULL, 0, 0, 0 }, /* 194 = linux_ftruncate64 */ + { AS(linux_stat64_args), (sy_call_t *)linux_stat64, AUE_STAT, NULL, 0, 0, 0 }, /* 195 = linux_stat64 */ + { AS(linux_lstat64_args), (sy_call_t *)linux_lstat64, AUE_LSTAT, NULL, 0, 0, 0 }, /* 196 = linux_lstat64 */ + { AS(linux_fstat64_args), (sy_call_t *)linux_fstat64, AUE_FSTAT, NULL, 0, 0, 0 }, /* 197 = linux_fstat64 */ + { AS(linux_lchown_args), (sy_call_t *)linux_lchown, AUE_LCHOWN, NULL, 0, 0, 0 }, /* 198 = linux_lchown */ + { 0, (sy_call_t *)linux_getuid, AUE_GETUID, NULL, 0, 0, 0 }, /* 199 = linux_getuid */ + { 0, (sy_call_t *)linux_getgid, AUE_GETGID, NULL, 0, 0, 0 }, /* 200 = linux_getgid */ + { 0, (sy_call_t *)geteuid, AUE_GETEUID, NULL, 0, 0, 0 }, /* 201 = geteuid */ + { 0, (sy_call_t *)getegid, AUE_GETEGID, NULL, 0, 0, 0 }, /* 202 = getegid */ + { AS(setreuid_args), (sy_call_t *)setreuid, AUE_SETREUID, NULL, 0, 0, 0 }, /* 203 = setreuid */ + { AS(setregid_args), (sy_call_t *)setregid, AUE_SETREGID, NULL, 0, 0, 0 }, /* 204 = setregid */ + { AS(linux_getgroups_args), (sy_call_t *)linux_getgroups, AUE_GETGROUPS, NULL, 0, 0, 0 }, /* 205 = linux_getgroups */ + { AS(linux_setgroups_args), (sy_call_t *)linux_setgroups, AUE_SETGROUPS, NULL, 0, 0, 0 }, /* 206 = linux_setgroups */ + { AS(fchown_args), (sy_call_t *)fchown, AUE_NULL, NULL, 0, 0, 0 }, /* 207 = fchown */ + { AS(setresuid_args), (sy_call_t *)setresuid, AUE_SETRESUID, NULL, 0, 0, 0 }, /* 208 = setresuid */ + { AS(getresuid_args), (sy_call_t *)getresuid, AUE_GETRESUID, NULL, 0, 0, 0 }, /* 209 = getresuid */ + { AS(setresgid_args), (sy_call_t *)setresgid, AUE_SETRESGID, NULL, 0, 0, 0 }, /* 210 = setresgid */ + { AS(getresgid_args), (sy_call_t *)getresgid, AUE_GETRESGID, NULL, 0, 0, 0 }, /* 211 = getresgid */ + { AS(linux_chown_args), (sy_call_t *)linux_chown, AUE_CHOWN, NULL, 0, 0, 0 }, /* 212 = linux_chown */ + { AS(setuid_args), (sy_call_t *)setuid, AUE_SETUID, NULL, 0, 0, 0 }, /* 213 = setuid */ + { AS(setgid_args), (sy_call_t *)setgid, AUE_SETGID, NULL, 0, 0, 0 }, /* 214 = setgid */ + { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid, AUE_SETFSUID, NULL, 0, 0, 0 }, /* 215 = linux_setfsuid */ + { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid, AUE_SETFSGID, NULL, 0, 0, 0 }, /* 216 = linux_setfsgid */ + { AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root, AUE_PIVOT_ROOT, NULL, 0, 0, 0 }, /* 217 = linux_pivot_root */ + { AS(linux_mincore_args), (sy_call_t *)linux_mincore, AUE_MINCORE, NULL, 0, 0, 0 }, /* 218 = linux_mincore */ + { AS(madvise_args), (sy_call_t *)madvise, AUE_MADVISE, NULL, 0, 0, 0 }, /* 219 = madvise */ + { AS(linux_getdents64_args), (sy_call_t *)linux_getdents64, AUE_GETDIRENTRIES, NULL, 0, 0, 0 }, /* 220 = linux_getdents64 */ + { AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64, AUE_FCNTL, NULL, 0, 0, 0 }, /* 221 = linux_fcntl64 */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 222 = */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 223 = */ + { 0, (sy_call_t *)linux_gettid, AUE_NULL, NULL, 0, 0, 0 }, /* 224 = linux_gettid */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 225 = linux_readahead */ + { 0, (sy_call_t *)linux_setxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 226 = linux_setxattr */ + { 0, (sy_call_t *)linux_lsetxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 227 = linux_lsetxattr */ + { 0, (sy_call_t *)linux_fsetxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 228 = linux_fsetxattr */ + { 0, (sy_call_t *)linux_getxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 229 = linux_getxattr */ + { 0, (sy_call_t *)linux_lgetxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 230 = linux_lgetxattr */ + { 0, (sy_call_t *)linux_fgetxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 231 = linux_fgetxattr */ + { 0, (sy_call_t *)linux_listxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 232 = linux_listxattr */ + { 0, (sy_call_t *)linux_llistxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 233 = linux_llistxattr */ + { 0, (sy_call_t *)linux_flistxattr, AUE_NULL, NULL, 0, 0, 0 }, /* 234 = linux_flistxattr */ + { 0, (sy_call_t *)linux_removexattr, AUE_NULL, NULL, 0, 0, 0 }, /* 235 = linux_removexattr */ + { 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0, 0 }, /* 236 = linux_lremovexattr */ + { 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0, 0 }, /* 237 = linux_fremovexattr */ + { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0, 0 }, /* 238 = linux_tkill */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 239 = linux_sendfile64 */ + { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0, 0 }, /* 240 = linux_sys_futex */ + { AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 241 = linux_sched_setaffinity */ + { AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 242 = linux_sched_getaffinity */ + { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL, NULL, 0, 0, 0 }, /* 243 = linux_set_thread_area */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 244 = linux_get_thread_area */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 245 = linux_io_setup */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 246 = linux_io_destroy */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 247 = linux_io_getevents */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 248 = inux_io_submit */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 249 = linux_io_cancel */ + { 0, (sy_call_t *)linux_fadvise64, AUE_NULL, NULL, 0, 0, 0 }, /* 250 = linux_fadvise64 */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 251 = */ + { AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0, 0 }, /* 252 = linux_exit_group */ + { 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0, 0 }, /* 253 = linux_lookup_dcookie */ + { 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0 }, /* 254 = linux_epoll_create */ + { 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0 }, /* 255 = linux_epoll_ctl */ + { 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0 }, /* 256 = linux_epoll_wait */ + { 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0, 0 }, /* 257 = linux_remap_file_pages */ + { AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0, 0 }, /* 258 = linux_set_tid_address */ + { 0, (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0, 0 }, /* 259 = linux_timer_create */ + { 0, (sy_call_t *)linux_timer_settime, AUE_NULL, NULL, 0, 0, 0 }, /* 260 = linux_timer_settime */ + { 0, (sy_call_t *)linux_timer_gettime, AUE_NULL, NULL, 0, 0, 0 }, /* 261 = linux_timer_gettime */ + { 0, (sy_call_t *)linux_timer_getoverrun, AUE_NULL, NULL, 0, 0, 0 }, /* 262 = linux_timer_getoverrun */ + { 0, (sy_call_t *)linux_timer_delete, AUE_NULL, NULL, 0, 0, 0 }, /* 263 = linux_timer_delete */ + { AS(linux_clock_settime_args), (sy_call_t *)linux_clock_settime, AUE_CLOCK_SETTIME, NULL, 0, 0, 0 }, /* 264 = linux_clock_settime */ + { AS(linux_clock_gettime_args), (sy_call_t *)linux_clock_gettime, AUE_NULL, NULL, 0, 0, 0 }, /* 265 = linux_clock_gettime */ + { AS(linux_clock_getres_args), (sy_call_t *)linux_clock_getres, AUE_NULL, NULL, 0, 0, 0 }, /* 266 = linux_clock_getres */ + { AS(linux_clock_nanosleep_args), (sy_call_t *)linux_clock_nanosleep, AUE_NULL, NULL, 0, 0, 0 }, /* 267 = linux_clock_nanosleep */ + { AS(linux_statfs64_args), (sy_call_t *)linux_statfs64, AUE_STATFS, NULL, 0, 0, 0 }, /* 268 = linux_statfs64 */ + { 0, (sy_call_t *)linux_fstatfs64, AUE_FSTATFS, NULL, 0, 0, 0 }, /* 269 = linux_fstatfs64 */ + { AS(linux_tgkill_args), (sy_call_t *)linux_tgkill, AUE_NULL, NULL, 0, 0, 0 }, /* 270 = linux_tgkill */ + { AS(linux_utimes_args), (sy_call_t *)linux_utimes, AUE_UTIMES, NULL, 0, 0, 0 }, /* 271 = linux_utimes */ + { 0, (sy_call_t *)linux_fadvise64_64, AUE_NULL, NULL, 0, 0, 0 }, /* 272 = linux_fadvise64_64 */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 273 = */ + { 0, (sy_call_t *)linux_mbind, AUE_NULL, NULL, 0, 0, 0 }, /* 274 = linux_mbind */ + { 0, (sy_call_t *)linux_get_mempolicy, AUE_NULL, NULL, 0, 0, 0 }, /* 275 = linux_get_mempolicy */ + { 0, (sy_call_t *)linux_set_mempolicy, AUE_NULL, NULL, 0, 0, 0 }, /* 276 = linux_set_mempolicy */ + { 0, (sy_call_t *)linux_mq_open, AUE_NULL, NULL, 0, 0, 0 }, /* 277 = linux_mq_open */ + { 0, (sy_call_t *)linux_mq_unlink, AUE_NULL, NULL, 0, 0, 0 }, /* 278 = linux_mq_unlink */ + { 0, (sy_call_t *)linux_mq_timedsend, AUE_NULL, NULL, 0, 0, 0 }, /* 279 = linux_mq_timedsend */ + { 0, (sy_call_t *)linux_mq_timedreceive, AUE_NULL, NULL, 0, 0, 0 }, /* 280 = linux_mq_timedreceive */ + { 0, (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0, 0 }, /* 281 = linux_mq_notify */ + { 0, (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0, 0 }, /* 282 = linux_mq_getsetattr */ + { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0, 0 }, /* 283 = linux_kexec_load */ + { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0, 0 }, /* 284 = linux_waitid */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 285 = */ + { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0, 0 }, /* 286 = linux_add_key */ + { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0, 0 }, /* 287 = linux_request_key */ + { 0, (sy_call_t *)linux_keyctl, AUE_NULL, NULL, 0, 0, 0 }, /* 288 = linux_keyctl */ + { 0, (sy_call_t *)linux_ioprio_set, AUE_NULL, NULL, 0, 0, 0 }, /* 289 = linux_ioprio_set */ + { 0, (sy_call_t *)linux_ioprio_get, AUE_NULL, NULL, 0, 0, 0 }, /* 290 = linux_ioprio_get */ + { 0, (sy_call_t *)linux_inotify_init, AUE_NULL, NULL, 0, 0, 0 }, /* 291 = linux_inotify_init */ + { 0, (sy_call_t *)linux_inotify_add_watch, AUE_NULL, NULL, 0, 0, 0 }, /* 292 = linux_inotify_add_watch */ + { 0, (sy_call_t *)linux_inotify_rm_watch, AUE_NULL, NULL, 0, 0, 0 }, /* 293 = linux_inotify_rm_watch */ + { 0, (sy_call_t *)linux_migrate_pages, AUE_NULL, NULL, 0, 0, 0 }, /* 294 = linux_migrate_pages */ + { AS(linux_openat_args), (sy_call_t *)linux_openat, AUE_OPEN_RWTC, NULL, 0, 0, 0 }, /* 295 = linux_openat */ + { AS(linux_mkdirat_args), (sy_call_t *)linux_mkdirat, AUE_MKDIRAT, NULL, 0, 0, 0 }, /* 296 = linux_mkdirat */ + { AS(linux_mknodat_args), (sy_call_t *)linux_mknodat, AUE_MKNODAT, NULL, 0, 0, 0 }, /* 297 = linux_mknodat */ + { AS(linux_fchownat_args), (sy_call_t *)linux_fchownat, AUE_FCHOWNAT, NULL, 0, 0, 0 }, /* 298 = linux_fchownat */ + { AS(linux_futimesat_args), (sy_call_t *)linux_futimesat, AUE_FUTIMESAT, NULL, 0, 0, 0 }, /* 299 = linux_futimesat */ + { AS(linux_fstatat64_args), (sy_call_t *)linux_fstatat64, AUE_FSTATAT, NULL, 0, 0, 0 }, /* 300 = linux_fstatat64 */ + { AS(linux_unlinkat_args), (sy_call_t *)linux_unlinkat, AUE_UNLINKAT, NULL, 0, 0, 0 }, /* 301 = linux_unlinkat */ + { AS(linux_renameat_args), (sy_call_t *)linux_renameat, AUE_RENAMEAT, NULL, 0, 0, 0 }, /* 302 = linux_renameat */ + { AS(linux_linkat_args), (sy_call_t *)linux_linkat, AUE_LINKAT, NULL, 0, 0, 0 }, /* 303 = linux_linkat */ + { AS(linux_symlinkat_args), (sy_call_t *)linux_symlinkat, AUE_SYMLINKAT, NULL, 0, 0, 0 }, /* 304 = linux_symlinkat */ + { AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0, 0 }, /* 305 = linux_readlinkat */ + { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0 }, /* 306 = linux_fchmodat */ + { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0 }, /* 307 = linux_faccessat */ + { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0, 0 }, /* 308 = linux_pselect6 */ + { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0 }, /* 309 = linux_ppoll */ + { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0 }, /* 310 = linux_unshare */ + { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0 }, /* 311 = linux_set_robust_list */ + { AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0 }, /* 312 = linux_get_robust_list */ + { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0, 0 }, /* 313 = linux_splice */ + { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0 }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0, 0 }, /* 315 = linux_tee */ + { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0 }, /* 316 = linux_vmsplice */ }; Modified: head/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_sysent.c Mon Jun 1 16:13:06 2009 (r193234) +++ head/sys/compat/freebsd32/freebsd32_sysent.c Mon Jun 1 16:14:38 2009 (r193235) @@ -38,513 +38,513 @@ /* The casts are bogus but will do for now. */ struct sysent freebsd32_sysent[] = { - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 0 = syscall */ - { AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT, NULL, 0, 0 }, /* 1 = exit */ - { 0, (sy_call_t *)fork, AUE_FORK, NULL, 0, 0 }, /* 2 = fork */ - { AS(read_args), (sy_call_t *)read, AUE_READ, NULL, 0, 0 }, /* 3 = read */ - { AS(write_args), (sy_call_t *)write, AUE_WRITE, NULL, 0, 0 }, /* 4 = write */ - { AS(open_args), (sy_call_t *)open, AUE_OPEN_RWTC, NULL, 0, 0 }, /* 5 = open */ - { AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0 }, /* 6 = close */ - { AS(freebsd32_wait4_args), (sy_call_t *)freebsd32_wait4, AUE_WAIT4, NULL, 0, 0 }, /* 7 = freebsd32_wait4 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 8 = obsolete old creat */ - { AS(link_args), (sy_call_t *)link, AUE_LINK, NULL, 0, 0 }, /* 9 = link */ - { AS(unlink_args), (sy_call_t *)unlink, AUE_UNLINK, NULL, 0, 0 }, /* 10 = unlink */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 11 = obsolete execv */ - { AS(chdir_args), (sy_call_t *)chdir, AUE_CHDIR, NULL, 0, 0 }, /* 12 = chdir */ - { AS(fchdir_args), (sy_call_t *)fchdir, AUE_FCHDIR, NULL, 0, 0 }, /* 13 = fchdir */ - { AS(mknod_args), (sy_call_t *)mknod, AUE_MKNOD, NULL, 0, 0 }, /* 14 = mknod */ - { AS(chmod_args), (sy_call_t *)chmod, AUE_CHMOD, NULL, 0, 0 }, /* 15 = chmod */ - { AS(chown_args), (sy_call_t *)chown, AUE_CHOWN, NULL, 0, 0 }, /* 16 = chown */ - { AS(obreak_args), (sy_call_t *)obreak, AUE_NULL, NULL, 0, 0 }, /* 17 = break */ - { compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), AUE_GETFSSTAT, NULL, 0, 0 }, /* 18 = old freebsd32_getfsstat */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 19 = obsolete olseek */ - { 0, (sy_call_t *)getpid, AUE_GETPID, NULL, 0, 0 }, /* 20 = getpid */ - { AS(mount_args), (sy_call_t *)mount, AUE_MOUNT, NULL, 0, 0 }, /* 21 = mount */ - { AS(unmount_args), (sy_call_t *)unmount, AUE_UMOUNT, NULL, 0, 0 }, /* 22 = unmount */ - { AS(setuid_args), (sy_call_t *)setuid, AUE_SETUID, NULL, 0, 0 }, /* 23 = setuid */ - { 0, (sy_call_t *)getuid, AUE_GETUID, NULL, 0, 0 }, /* 24 = getuid */ - { 0, (sy_call_t *)geteuid, AUE_GETEUID, NULL, 0, 0 }, /* 25 = geteuid */ - { AS(ptrace_args), (sy_call_t *)ptrace, AUE_PTRACE, NULL, 0, 0 }, /* 26 = ptrace */ - { AS(freebsd32_recvmsg_args), (sy_call_t *)freebsd32_recvmsg, AUE_RECVMSG, NULL, 0, 0 }, /* 27 = freebsd32_recvmsg */ - { AS(freebsd32_sendmsg_args), (sy_call_t *)freebsd32_sendmsg, AUE_SENDMSG, NULL, 0, 0 }, /* 28 = freebsd32_sendmsg */ - { AS(freebsd32_recvfrom_args), (sy_call_t *)freebsd32_recvfrom, AUE_RECVFROM, NULL, 0, 0 }, /* 29 = freebsd32_recvfrom */ - { AS(accept_args), (sy_call_t *)accept, AUE_ACCEPT, NULL, 0, 0 }, /* 30 = accept */ - { AS(getpeername_args), (sy_call_t *)getpeername, AUE_GETPEERNAME, NULL, 0, 0 }, /* 31 = getpeername */ - { AS(getsockname_args), (sy_call_t *)getsockname, AUE_GETSOCKNAME, NULL, 0, 0 }, /* 32 = getsockname */ - { AS(access_args), (sy_call_t *)access, AUE_ACCESS, NULL, 0, 0 }, /* 33 = access */ - { AS(chflags_args), (sy_call_t *)chflags, AUE_CHFLAGS, NULL, 0, 0 }, /* 34 = chflags */ - { AS(fchflags_args), (sy_call_t *)fchflags, AUE_FCHFLAGS, NULL, 0, 0 }, /* 35 = fchflags */ - { 0, (sy_call_t *)sync, AUE_SYNC, NULL, 0, 0 }, /* 36 = sync */ - { AS(kill_args), (sy_call_t *)kill, AUE_KILL, NULL, 0, 0 }, /* 37 = kill */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 38 = ostat */ - { 0, (sy_call_t *)getppid, AUE_GETPPID, NULL, 0, 0 }, /* 39 = getppid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 40 = olstat */ - { AS(dup_args), (sy_call_t *)dup, AUE_DUP, NULL, 0, 0 }, /* 41 = dup */ - { 0, (sy_call_t *)pipe, AUE_PIPE, NULL, 0, 0 }, /* 42 = pipe */ - { 0, (sy_call_t *)getegid, AUE_GETEGID, NULL, 0, 0 }, /* 43 = getegid */ - { AS(profil_args), (sy_call_t *)profil, AUE_PROFILE, NULL, 0, 0 }, /* 44 = profil */ - { AS(ktrace_args), (sy_call_t *)ktrace, AUE_KTRACE, NULL, 0, 0 }, /* 45 = ktrace */ - { compat(AS(ofreebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0 }, /* 46 = old freebsd32_sigaction */ - { 0, (sy_call_t *)getgid, AUE_GETGID, NULL, 0, 0 }, /* 47 = getgid */ - { compat(AS(ofreebsd32_sigprocmask_args),freebsd32_sigprocmask), AUE_SIGPROCMASK, NULL, 0, 0 }, /* 48 = old freebsd32_sigprocmask */ - { AS(getlogin_args), (sy_call_t *)getlogin, AUE_GETLOGIN, NULL, 0, 0 }, /* 49 = getlogin */ - { AS(setlogin_args), (sy_call_t *)setlogin, AUE_SETLOGIN, NULL, 0, 0 }, /* 50 = setlogin */ - { AS(acct_args), (sy_call_t *)acct, AUE_ACCT, NULL, 0, 0 }, /* 51 = acct */ - { compat(0,freebsd32_sigpending), AUE_SIGPENDING, NULL, 0, 0 }, /* 52 = old freebsd32_sigpending */ - { AS(freebsd32_sigaltstack_args), (sy_call_t *)freebsd32_sigaltstack, AUE_SIGALTSTACK, NULL, 0, 0 }, /* 53 = freebsd32_sigaltstack */ - { AS(freebsd32_ioctl_args), (sy_call_t *)freebsd32_ioctl, AUE_NULL, NULL, 0, 0 }, /* 54 = freebsd32_ioctl */ - { AS(reboot_args), (sy_call_t *)reboot, AUE_REBOOT, NULL, 0, 0 }, /* 55 = reboot */ - { AS(revoke_args), (sy_call_t *)revoke, AUE_REVOKE, NULL, 0, 0 }, /* 56 = revoke */ - { AS(symlink_args), (sy_call_t *)symlink, AUE_SYMLINK, NULL, 0, 0 }, /* 57 = symlink */ - { AS(readlink_args), (sy_call_t *)readlink, AUE_READLINK, NULL, 0, 0 }, /* 58 = readlink */ - { AS(freebsd32_execve_args), (sy_call_t *)freebsd32_execve, AUE_EXECVE, NULL, 0, 0 }, /* 59 = freebsd32_execve */ - { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0 }, /* 60 = umask */ - { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0 }, /* 61 = chroot */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 62 = obsolete ofstat */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 63 = obsolete ogetkerninfo */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 64 = obsolete ogetpagesize */ - { AS(msync_args), (sy_call_t *)msync, AUE_MSYNC, NULL, 0, 0 }, /* 65 = msync */ - { 0, (sy_call_t *)vfork, AUE_VFORK, NULL, 0, 0 }, /* 66 = vfork */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 67 = obsolete vread */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 68 = obsolete vwrite */ - { AS(sbrk_args), (sy_call_t *)sbrk, AUE_SBRK, NULL, 0, 0 }, /* 69 = sbrk */ - { AS(sstk_args), (sy_call_t *)sstk, AUE_SSTK, NULL, 0, 0 }, /* 70 = sstk */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 71 = obsolete ommap */ - { AS(ovadvise_args), (sy_call_t *)ovadvise, AUE_O_VADVISE, NULL, 0, 0 }, /* 72 = vadvise */ - { AS(munmap_args), (sy_call_t *)munmap, AUE_MUNMAP, NULL, 0, 0 }, /* 73 = munmap */ - { AS(mprotect_args), (sy_call_t *)mprotect, AUE_MPROTECT, NULL, 0, 0 }, /* 74 = mprotect */ - { AS(madvise_args), (sy_call_t *)madvise, AUE_MADVISE, NULL, 0, 0 }, /* 75 = madvise */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 76 = obsolete vhangup */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 77 = obsolete vlimit */ - { AS(mincore_args), (sy_call_t *)mincore, AUE_MINCORE, NULL, 0, 0 }, /* 78 = mincore */ - { AS(getgroups_args), (sy_call_t *)getgroups, AUE_GETGROUPS, NULL, 0, 0 }, /* 79 = getgroups */ - { AS(setgroups_args), (sy_call_t *)setgroups, AUE_SETGROUPS, NULL, 0, 0 }, /* 80 = setgroups */ - { 0, (sy_call_t *)getpgrp, AUE_GETPGRP, NULL, 0, 0 }, /* 81 = getpgrp */ - { AS(setpgid_args), (sy_call_t *)setpgid, AUE_SETPGRP, NULL, 0, 0 }, /* 82 = setpgid */ - { AS(freebsd32_setitimer_args), (sy_call_t *)freebsd32_setitimer, AUE_SETITIMER, NULL, 0, 0 }, /* 83 = freebsd32_setitimer */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 84 = obsolete owait */ - { AS(swapon_args), (sy_call_t *)swapon, AUE_SWAPON, NULL, 0, 0 }, /* 85 = swapon */ - { AS(freebsd32_getitimer_args), (sy_call_t *)freebsd32_getitimer, AUE_GETITIMER, NULL, 0, 0 }, /* 86 = freebsd32_getitimer */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 87 = obsolete ogethostname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 88 = obsolete osethostname */ - { 0, (sy_call_t *)getdtablesize, AUE_GETDTABLESIZE, NULL, 0, 0 }, /* 89 = getdtablesize */ - { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0 }, /* 90 = dup2 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 91 = getdopt */ - { AS(fcntl_args), (sy_call_t *)fcntl, AUE_FCNTL, NULL, 0, 0 }, /* 92 = fcntl */ - { AS(freebsd32_select_args), (sy_call_t *)freebsd32_select, AUE_SELECT, NULL, 0, 0 }, /* 93 = freebsd32_select */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 94 = setdopt */ - { AS(fsync_args), (sy_call_t *)fsync, AUE_FSYNC, NULL, 0, 0 }, /* 95 = fsync */ - { AS(setpriority_args), (sy_call_t *)setpriority, AUE_SETPRIORITY, NULL, 0, 0 }, /* 96 = setpriority */ - { AS(socket_args), (sy_call_t *)socket, AUE_SOCKET, NULL, 0, 0 }, /* 97 = socket */ - { AS(connect_args), (sy_call_t *)connect, AUE_CONNECT, NULL, 0, 0 }, /* 98 = connect */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 99 = obsolete oaccept */ - { AS(getpriority_args), (sy_call_t *)getpriority, AUE_GETPRIORITY, NULL, 0, 0 }, /* 100 = getpriority */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 101 = obsolete osend */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 102 = obsolete orecv */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 103 = obsolete osigreturn */ - { AS(bind_args), (sy_call_t *)bind, AUE_BIND, NULL, 0, 0 }, /* 104 = bind */ - { AS(setsockopt_args), (sy_call_t *)setsockopt, AUE_SETSOCKOPT, NULL, 0, 0 }, /* 105 = setsockopt */ - { AS(listen_args), (sy_call_t *)listen, AUE_LISTEN, NULL, 0, 0 }, /* 106 = listen */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 107 = obsolete vtimes */ - { compat(AS(ofreebsd32_sigvec_args),freebsd32_sigvec), AUE_O_SIGVEC, NULL, 0, 0 }, /* 108 = old freebsd32_sigvec */ - { compat(AS(ofreebsd32_sigblock_args),freebsd32_sigblock), AUE_O_SIGBLOCK, NULL, 0, 0 }, /* 109 = old freebsd32_sigblock */ - { compat(AS(ofreebsd32_sigsetmask_args),freebsd32_sigsetmask), AUE_O_SIGSETMASK, NULL, 0, 0 }, /* 110 = old freebsd32_sigsetmask */ - { compat(AS(ofreebsd32_sigsuspend_args),freebsd32_sigsuspend), AUE_SIGSUSPEND, NULL, 0, 0 }, /* 111 = old freebsd32_sigsuspend */ - { compat(AS(ofreebsd32_sigstack_args),freebsd32_sigstack), AUE_O_SIGSTACK, NULL, 0, 0 }, /* 112 = old freebsd32_sigstack */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 113 = obsolete orecvmsg */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 114 = obsolete osendmsg */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 115 = obsolete vtrace */ - { AS(freebsd32_gettimeofday_args), (sy_call_t *)freebsd32_gettimeofday, AUE_GETTIMEOFDAY, NULL, 0, 0 }, /* 116 = freebsd32_gettimeofday */ - { AS(freebsd32_getrusage_args), (sy_call_t *)freebsd32_getrusage, AUE_GETRUSAGE, NULL, 0, 0 }, /* 117 = freebsd32_getrusage */ - { AS(getsockopt_args), (sy_call_t *)getsockopt, AUE_GETSOCKOPT, NULL, 0, 0 }, /* 118 = getsockopt */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 119 = resuba */ - { AS(freebsd32_readv_args), (sy_call_t *)freebsd32_readv, AUE_READV, NULL, 0, 0 }, /* 120 = freebsd32_readv */ - { AS(freebsd32_writev_args), (sy_call_t *)freebsd32_writev, AUE_WRITEV, NULL, 0, 0 }, /* 121 = freebsd32_writev */ - { AS(freebsd32_settimeofday_args), (sy_call_t *)freebsd32_settimeofday, AUE_SETTIMEOFDAY, NULL, 0, 0 }, /* 122 = freebsd32_settimeofday */ - { AS(fchown_args), (sy_call_t *)fchown, AUE_FCHOWN, NULL, 0, 0 }, /* 123 = fchown */ - { AS(fchmod_args), (sy_call_t *)fchmod, AUE_FCHMOD, NULL, 0, 0 }, /* 124 = fchmod */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 125 = obsolete orecvfrom */ - { AS(setreuid_args), (sy_call_t *)setreuid, AUE_SETREUID, NULL, 0, 0 }, /* 126 = setreuid */ - { AS(setregid_args), (sy_call_t *)setregid, AUE_SETREGID, NULL, 0, 0 }, /* 127 = setregid */ - { AS(rename_args), (sy_call_t *)rename, AUE_RENAME, NULL, 0, 0 }, /* 128 = rename */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 129 = obsolete otruncate */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 130 = obsolete ftruncate */ - { AS(flock_args), (sy_call_t *)flock, AUE_FLOCK, NULL, 0, 0 }, /* 131 = flock */ - { AS(mkfifo_args), (sy_call_t *)mkfifo, AUE_MKFIFO, NULL, 0, 0 }, /* 132 = mkfifo */ - { AS(sendto_args), (sy_call_t *)sendto, AUE_SENDTO, NULL, 0, 0 }, /* 133 = sendto */ - { AS(shutdown_args), (sy_call_t *)shutdown, AUE_SHUTDOWN, NULL, 0, 0 }, /* 134 = shutdown */ - { AS(socketpair_args), (sy_call_t *)socketpair, AUE_SOCKETPAIR, NULL, 0, 0 }, /* 135 = socketpair */ - { AS(mkdir_args), (sy_call_t *)mkdir, AUE_MKDIR, NULL, 0, 0 }, /* 136 = mkdir */ - { AS(rmdir_args), (sy_call_t *)rmdir, AUE_RMDIR, NULL, 0, 0 }, /* 137 = rmdir */ - { AS(freebsd32_utimes_args), (sy_call_t *)freebsd32_utimes, AUE_UTIMES, NULL, 0, 0 }, /* 138 = freebsd32_utimes */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 139 = obsolete 4.2 sigreturn */ - { AS(freebsd32_adjtime_args), (sy_call_t *)freebsd32_adjtime, AUE_ADJTIME, NULL, 0, 0 }, /* 140 = freebsd32_adjtime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 141 = obsolete ogetpeername */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 142 = obsolete ogethostid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 143 = obsolete sethostid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 144 = obsolete getrlimit */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 145 = obsolete setrlimit */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 146 = obsolete killpg */ - { 0, (sy_call_t *)setsid, AUE_SETSID, NULL, 0, 0 }, /* 147 = setsid */ - { AS(quotactl_args), (sy_call_t *)quotactl, AUE_QUOTACTL, NULL, 0, 0 }, /* 148 = quotactl */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 149 = obsolete oquota */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 150 = obsolete ogetsockname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 151 = sem_lock */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 152 = sem_wakeup */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 153 = asyncdaemon */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 154 = nlm_syscall */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 155 = nfssvc */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 156 = obsolete ogetdirentries */ - { compat4(AS(freebsd4_freebsd32_statfs_args),freebsd32_statfs), AUE_STATFS, NULL, 0, 0 }, /* 157 = old freebsd32_statfs */ - { compat4(AS(freebsd4_freebsd32_fstatfs_args),freebsd32_fstatfs), AUE_FSTATFS, NULL, 0, 0 }, /* 158 = old freebsd32_fstatfs */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 159 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 160 = lgetfh */ - { AS(getfh_args), (sy_call_t *)getfh, AUE_NFS_GETFH, NULL, 0, 0 }, /* 161 = getfh */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 162 = obsolete getdomainname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 163 = obsolete setdomainname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 164 = obsolete uname */ - { AS(freebsd32_sysarch_args), (sy_call_t *)freebsd32_sysarch, AUE_SYSARCH, NULL, 0, 0 }, /* 165 = freebsd32_sysarch */ - { AS(rtprio_args), (sy_call_t *)rtprio, AUE_RTPRIO, NULL, 0, 0 }, /* 166 = rtprio */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 167 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 168 = nosys */ - { AS(freebsd32_semsys_args), (sy_call_t *)freebsd32_semsys, AUE_SEMSYS, NULL, 0, 0 }, /* 169 = freebsd32_semsys */ - { AS(freebsd32_msgsys_args), (sy_call_t *)freebsd32_msgsys, AUE_MSGSYS, NULL, 0, 0 }, /* 170 = freebsd32_msgsys */ - { AS(freebsd32_shmsys_args), (sy_call_t *)freebsd32_shmsys, AUE_SHMSYS, NULL, 0, 0 }, /* 171 = freebsd32_shmsys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 172 = nosys */ - { compat6(AS(freebsd6_freebsd32_pread_args),freebsd32_pread), AUE_PREAD, NULL, 0, 0 }, /* 173 = old freebsd32_pread */ - { compat6(AS(freebsd6_freebsd32_pwrite_args),freebsd32_pwrite), AUE_PWRITE, NULL, 0, 0 }, /* 174 = old freebsd32_pwrite */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 175 = nosys */ - { AS(ntp_adjtime_args), (sy_call_t *)ntp_adjtime, AUE_NTP_ADJTIME, NULL, 0, 0 }, /* 176 = ntp_adjtime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 177 = sfork */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 178 = getdescriptor */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 179 = setdescriptor */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 180 = nosys */ - { AS(setgid_args), (sy_call_t *)setgid, AUE_SETGID, NULL, 0, 0 }, /* 181 = setgid */ - { AS(setegid_args), (sy_call_t *)setegid, AUE_SETEGID, NULL, 0, 0 }, /* 182 = setegid */ - { AS(seteuid_args), (sy_call_t *)seteuid, AUE_SETEUID, NULL, 0, 0 }, /* 183 = seteuid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 184 = lfs_bmapv */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 185 = lfs_markv */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 186 = lfs_segclean */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 187 = lfs_segwait */ - { AS(freebsd32_stat_args), (sy_call_t *)freebsd32_stat, AUE_STAT, NULL, 0, 0 }, /* 188 = freebsd32_stat */ - { AS(freebsd32_fstat_args), (sy_call_t *)freebsd32_fstat, AUE_FSTAT, NULL, 0, 0 }, /* 189 = freebsd32_fstat */ - { AS(freebsd32_lstat_args), (sy_call_t *)freebsd32_lstat, AUE_LSTAT, NULL, 0, 0 }, /* 190 = freebsd32_lstat */ - { AS(pathconf_args), (sy_call_t *)pathconf, AUE_PATHCONF, NULL, 0, 0 }, /* 191 = pathconf */ - { AS(fpathconf_args), (sy_call_t *)fpathconf, AUE_FPATHCONF, NULL, 0, 0 }, /* 192 = fpathconf */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 193 = nosys */ - { AS(__getrlimit_args), (sy_call_t *)getrlimit, AUE_GETRLIMIT, NULL, 0, 0 }, /* 194 = getrlimit */ - { AS(__setrlimit_args), (sy_call_t *)setrlimit, AUE_SETRLIMIT, NULL, 0, 0 }, /* 195 = setrlimit */ - { AS(freebsd32_getdirentries_args), (sy_call_t *)freebsd32_getdirentries, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 196 = freebsd32_getdirentries */ - { compat6(AS(freebsd6_freebsd32_mmap_args),freebsd32_mmap), AUE_MMAP, NULL, 0, 0 }, /* 197 = old freebsd32_mmap */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 198 = __syscall */ - { compat6(AS(freebsd6_freebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0 }, /* 199 = old freebsd32_lseek */ - { compat6(AS(freebsd6_freebsd32_truncate_args),freebsd32_truncate), AUE_TRUNCATE, NULL, 0, 0 }, /* 200 = old freebsd32_truncate */ - { compat6(AS(freebsd6_freebsd32_ftruncate_args),freebsd32_ftruncate), AUE_FTRUNCATE, NULL, 0, 0 }, /* 201 = old freebsd32_ftruncate */ - { AS(freebsd32_sysctl_args), (sy_call_t *)freebsd32_sysctl, AUE_SYSCTL, NULL, 0, 0 }, /* 202 = freebsd32_sysctl */ - { AS(mlock_args), (sy_call_t *)mlock, AUE_MLOCK, NULL, 0, 0 }, /* 203 = mlock */ - { AS(munlock_args), (sy_call_t *)munlock, AUE_MUNLOCK, NULL, 0, 0 }, /* 204 = munlock */ - { AS(undelete_args), (sy_call_t *)undelete, AUE_UNDELETE, NULL, 0, 0 }, /* 205 = undelete */ - { AS(freebsd32_futimes_args), (sy_call_t *)freebsd32_futimes, AUE_FUTIMES, NULL, 0, 0 }, /* 206 = freebsd32_futimes */ - { AS(getpgid_args), (sy_call_t *)getpgid, AUE_GETPGID, NULL, 0, 0 }, /* 207 = getpgid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 208 = newreboot */ - { AS(poll_args), (sy_call_t *)poll, AUE_POLL, NULL, 0, 0 }, /* 209 = poll */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 210 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 211 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 212 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 213 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 214 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 215 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 216 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 217 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 218 = lkmnosys */ - { AS(nosys_args), (sy_call_t *)lkmnosys, AUE_NULL, NULL, 0, 0 }, /* 219 = lkmnosys */ - { AS(freebsd32_semctl_args), (sy_call_t *)freebsd32_semctl, AUE_SEMCTL, NULL, 0, 0 }, /* 220 = freebsd32_semctl */ - { AS(semget_args), (sy_call_t *)semget, AUE_SEMGET, NULL, 0, 0 }, /* 221 = semget */ - { AS(semop_args), (sy_call_t *)semop, AUE_SEMOP, NULL, 0, 0 }, /* 222 = semop */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 223 = semconfig */ - { AS(freebsd32_msgctl_args), (sy_call_t *)freebsd32_msgctl, AUE_MSGCTL, NULL, 0, 0 }, /* 224 = freebsd32_msgctl */ - { AS(msgget_args), (sy_call_t *)msgget, AUE_MSGGET, NULL, 0, 0 }, /* 225 = msgget */ - { AS(freebsd32_msgsnd_args), (sy_call_t *)freebsd32_msgsnd, AUE_MSGSND, NULL, 0, 0 }, /* 226 = freebsd32_msgsnd */ - { AS(freebsd32_msgrcv_args), (sy_call_t *)freebsd32_msgrcv, AUE_MSGRCV, NULL, 0, 0 }, /* 227 = freebsd32_msgrcv */ - { AS(shmat_args), (sy_call_t *)shmat, AUE_SHMAT, NULL, 0, 0 }, /* 228 = shmat */ - { AS(freebsd32_shmctl_args), (sy_call_t *)freebsd32_shmctl, AUE_SHMCTL, NULL, 0, 0 }, /* 229 = freebsd32_shmctl */ - { AS(shmdt_args), (sy_call_t *)shmdt, AUE_SHMDT, NULL, 0, 0 }, /* 230 = shmdt */ - { AS(shmget_args), (sy_call_t *)shmget, AUE_SHMGET, NULL, 0, 0 }, /* 231 = shmget */ - { AS(freebsd32_clock_gettime_args), (sy_call_t *)freebsd32_clock_gettime, AUE_NULL, NULL, 0, 0 }, /* 232 = freebsd32_clock_gettime */ - { AS(freebsd32_clock_settime_args), (sy_call_t *)freebsd32_clock_settime, AUE_CLOCK_SETTIME, NULL, 0, 0 }, /* 233 = freebsd32_clock_settime */ - { AS(freebsd32_clock_getres_args), (sy_call_t *)freebsd32_clock_getres, AUE_NULL, NULL, 0, 0 }, /* 234 = freebsd32_clock_getres */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 235 = timer_create */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 236 = timer_delete */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 237 = timer_settime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 238 = timer_gettime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 239 = timer_getoverrun */ - { AS(freebsd32_nanosleep_args), (sy_call_t *)freebsd32_nanosleep, AUE_NULL, NULL, 0, 0 }, /* 240 = freebsd32_nanosleep */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 241 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 242 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 243 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 244 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 245 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 246 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 247 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 248 = ntp_gettime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 249 = nosys */ - { AS(minherit_args), (sy_call_t *)minherit, AUE_MINHERIT, NULL, 0, 0 }, /* 250 = minherit */ - { AS(rfork_args), (sy_call_t *)rfork, AUE_RFORK, NULL, 0, 0 }, /* 251 = rfork */ - { AS(openbsd_poll_args), (sy_call_t *)openbsd_poll, AUE_POLL, NULL, 0, 0 }, /* 252 = openbsd_poll */ - { 0, (sy_call_t *)issetugid, AUE_ISSETUGID, NULL, 0, 0 }, /* 253 = issetugid */ - { AS(lchown_args), (sy_call_t *)lchown, AUE_LCHOWN, NULL, 0, 0 }, /* 254 = lchown */ - { AS(freebsd32_aio_read_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 255 = freebsd32_aio_read */ - { AS(freebsd32_aio_write_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 256 = freebsd32_aio_write */ - { AS(freebsd32_lio_listio_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 257 = freebsd32_lio_listio */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 258 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 259 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 260 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 261 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 262 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 263 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 264 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 265 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 266 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 267 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 268 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 269 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 270 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 271 = nosys */ - { AS(getdents_args), (sy_call_t *)getdents, AUE_O_GETDENTS, NULL, 0, 0 }, /* 272 = getdents */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 273 = nosys */ - { AS(lchmod_args), (sy_call_t *)lchmod, AUE_LCHMOD, NULL, 0, 0 }, /* 274 = lchmod */ - { AS(lchown_args), (sy_call_t *)lchown, AUE_LCHOWN, NULL, 0, 0 }, /* 275 = netbsd_lchown */ - { AS(freebsd32_lutimes_args), (sy_call_t *)freebsd32_lutimes, AUE_LUTIMES, NULL, 0, 0 }, /* 276 = freebsd32_lutimes */ - { AS(msync_args), (sy_call_t *)msync, AUE_MSYNC, NULL, 0, 0 }, /* 277 = netbsd_msync */ - { AS(nstat_args), (sy_call_t *)nstat, AUE_STAT, NULL, 0, 0 }, /* 278 = nstat */ - { AS(nfstat_args), (sy_call_t *)nfstat, AUE_FSTAT, NULL, 0, 0 }, /* 279 = nfstat */ - { AS(nlstat_args), (sy_call_t *)nlstat, AUE_LSTAT, NULL, 0, 0 }, /* 280 = nlstat */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 281 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 282 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 283 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 284 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 285 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 286 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 287 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 288 = nosys */ - { AS(freebsd32_preadv_args), (sy_call_t *)freebsd32_preadv, AUE_PREADV, NULL, 0, 0 }, /* 289 = freebsd32_preadv */ - { AS(freebsd32_pwritev_args), (sy_call_t *)freebsd32_pwritev, AUE_PWRITEV, NULL, 0, 0 }, /* 290 = freebsd32_pwritev */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 291 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 292 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 293 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 294 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 295 = nosys */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 296 = nosys */ - { compat4(AS(freebsd4_freebsd32_fhstatfs_args),freebsd32_fhstatfs), AUE_FHSTATFS, NULL, 0, 0 }, /* 297 = old freebsd32_fhstatfs */ - { AS(fhopen_args), (sy_call_t *)fhopen, AUE_FHOPEN, NULL, 0, 0 }, /* 298 = fhopen */ - { AS(fhstat_args), (sy_call_t *)fhstat, AUE_FHSTAT, NULL, 0, 0 }, /* 299 = fhstat */ - { AS(modnext_args), (sy_call_t *)modnext, AUE_NULL, NULL, 0, 0 }, /* 300 = modnext */ - { AS(freebsd32_modstat_args), (sy_call_t *)freebsd32_modstat, AUE_NULL, NULL, 0, 0 }, /* 301 = freebsd32_modstat */ - { AS(modfnext_args), (sy_call_t *)modfnext, AUE_NULL, NULL, 0, 0 }, /* 302 = modfnext */ - { AS(modfind_args), (sy_call_t *)modfind, AUE_NULL, NULL, 0, 0 }, /* 303 = modfind */ - { AS(kldload_args), (sy_call_t *)kldload, AUE_MODLOAD, NULL, 0, 0 }, /* 304 = kldload */ - { AS(kldunload_args), (sy_call_t *)kldunload, AUE_MODUNLOAD, NULL, 0, 0 }, /* 305 = kldunload */ - { AS(kldfind_args), (sy_call_t *)kldfind, AUE_NULL, NULL, 0, 0 }, /* 306 = kldfind */ - { AS(kldnext_args), (sy_call_t *)kldnext, AUE_NULL, NULL, 0, 0 }, /* 307 = kldnext */ - { AS(kldstat_args), (sy_call_t *)kldstat, AUE_NULL, NULL, 0, 0 }, /* 308 = kldstat */ - { AS(kldfirstmod_args), (sy_call_t *)kldfirstmod, AUE_NULL, NULL, 0, 0 }, /* 309 = kldfirstmod */ - { AS(getsid_args), (sy_call_t *)getsid, AUE_GETSID, NULL, 0, 0 }, /* 310 = getsid */ - { AS(setresuid_args), (sy_call_t *)setresuid, AUE_SETRESUID, NULL, 0, 0 }, /* 311 = setresuid */ - { AS(setresgid_args), (sy_call_t *)setresgid, AUE_SETRESGID, NULL, 0, 0 }, /* 312 = setresgid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 313 = obsolete signanosleep */ - { AS(freebsd32_aio_return_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 314 = freebsd32_aio_return */ - { AS(freebsd32_aio_suspend_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 315 = freebsd32_aio_suspend */ - { AS(freebsd32_aio_cancel_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 316 = freebsd32_aio_cancel */ - { AS(freebsd32_aio_error_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 317 = freebsd32_aio_error */ - { AS(freebsd32_oaio_read_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 318 = freebsd32_oaio_read */ - { AS(freebsd32_oaio_write_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 319 = freebsd32_oaio_write */ - { AS(freebsd32_olio_listio_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 }, /* 320 = freebsd32_olio_listio */ - { 0, (sy_call_t *)yield, AUE_NULL, NULL, 0, 0 }, /* 321 = yield */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 322 = obsolete thr_sleep */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 323 = obsolete thr_wakeup */ - { AS(mlockall_args), (sy_call_t *)mlockall, AUE_MLOCKALL, NULL, 0, 0 }, /* 324 = mlockall */ - { 0, (sy_call_t *)munlockall, AUE_MUNLOCKALL, NULL, 0, 0 }, /* 325 = munlockall */ - { AS(__getcwd_args), (sy_call_t *)__getcwd, AUE_GETCWD, NULL, 0, 0 }, /* 326 = __getcwd */ - { AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_NULL, NULL, 0, 0 }, /* 327 = sched_setparam */ - { AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_NULL, NULL, 0, 0 }, /* 328 = sched_getparam */ - { AS(sched_setscheduler_args), (sy_call_t *)sched_setscheduler, AUE_NULL, NULL, 0, 0 }, /* 329 = sched_setscheduler */ - { AS(sched_getscheduler_args), (sy_call_t *)sched_getscheduler, AUE_NULL, NULL, 0, 0 }, /* 330 = sched_getscheduler */ - { 0, (sy_call_t *)sched_yield, AUE_NULL, NULL, 0, 0 }, /* 331 = sched_yield */ - { AS(sched_get_priority_max_args), (sy_call_t *)sched_get_priority_max, AUE_NULL, NULL, 0, 0 }, /* 332 = sched_get_priority_max */ - { AS(sched_get_priority_min_args), (sy_call_t *)sched_get_priority_min, AUE_NULL, NULL, 0, 0 }, /* 333 = sched_get_priority_min */ - { AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval, AUE_NULL, NULL, 0, 0 }, /* 334 = sched_rr_get_interval */ - { AS(utrace_args), (sy_call_t *)utrace, AUE_NULL, NULL, 0, 0 }, /* 335 = utrace */ - { compat4(AS(freebsd4_freebsd32_sendfile_args),freebsd32_sendfile), AUE_SENDFILE, NULL, 0, 0 }, /* 336 = old freebsd32_sendfile */ - { AS(kldsym_args), (sy_call_t *)kldsym, AUE_NULL, NULL, 0, 0 }, /* 337 = kldsym */ - { AS(freebsd32_jail_args), (sy_call_t *)freebsd32_jail, AUE_JAIL, NULL, 0, 0 }, /* 338 = freebsd32_jail */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 339 = pioctl */ - { AS(sigprocmask_args), (sy_call_t *)sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0 }, /* 340 = sigprocmask */ - { AS(sigsuspend_args), (sy_call_t *)sigsuspend, AUE_SIGSUSPEND, NULL, 0, 0 }, /* 341 = sigsuspend */ - { compat4(AS(freebsd4_freebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0 }, /* 342 = old freebsd32_sigaction */ - { AS(sigpending_args), (sy_call_t *)sigpending, AUE_SIGPENDING, NULL, 0, 0 }, /* 343 = sigpending */ - { compat4(AS(freebsd4_freebsd32_sigreturn_args),freebsd32_sigreturn), AUE_SIGRETURN, NULL, 0, 0 }, /* 344 = old freebsd32_sigreturn */ - { AS(freebsd32_sigtimedwait_args), (sy_call_t *)freebsd32_sigtimedwait, AUE_SIGWAIT, NULL, 0, 0 }, /* 345 = freebsd32_sigtimedwait */ - { AS(freebsd32_sigwaitinfo_args), (sy_call_t *)freebsd32_sigwaitinfo, AUE_NULL, NULL, 0, 0 }, /* 346 = freebsd32_sigwaitinfo */ - { AS(__acl_get_file_args), (sy_call_t *)__acl_get_file, AUE_NULL, NULL, 0, 0 }, /* 347 = __acl_get_file */ - { AS(__acl_set_file_args), (sy_call_t *)__acl_set_file, AUE_NULL, NULL, 0, 0 }, /* 348 = __acl_set_file */ - { AS(__acl_get_fd_args), (sy_call_t *)__acl_get_fd, AUE_NULL, NULL, 0, 0 }, /* 349 = __acl_get_fd */ - { AS(__acl_set_fd_args), (sy_call_t *)__acl_set_fd, AUE_NULL, NULL, 0, 0 }, /* 350 = __acl_set_fd */ - { AS(__acl_delete_file_args), (sy_call_t *)__acl_delete_file, AUE_NULL, NULL, 0, 0 }, /* 351 = __acl_delete_file */ - { AS(__acl_delete_fd_args), (sy_call_t *)__acl_delete_fd, AUE_NULL, NULL, 0, 0 }, /* 352 = __acl_delete_fd */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From gavin at FreeBSD.org Mon Jun 1 16:15:11 2009 From: gavin at FreeBSD.org (Gavin Atkinson) Date: Mon Jun 1 16:15:28 2009 Subject: svn commit: r193220 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/bce dev/cxgb In-Reply-To: <200906011049.n51An8ew076617@svn.freebsd.org> References: <200906011049.n51An8ew076617@svn.freebsd.org> Message-ID: <1243871061.57113.3.camel@buffy.york.ac.uk> On Mon, 2009-06-01 at 10:49 +0000, Xin LI wrote: > Author: delphij > Date: Mon Jun 1 10:49:08 2009 > New Revision: 193220 > URL: http://svn.freebsd.org/changeset/base/193220 > > Log: > DMA synchronization fixes: > [snip] > - In bce_intr(), use BUS_DMASYNC_POSTREAD and > BUS_DMASYNC_PREREAD when before and after CPU "reading" > the status block. > - Adjust some nearby style mismatches/etc. Is it possible that these changes will fix the issues reported with bce(4) on amd64? For example, amd64/134788? Thanks, Gavin From imp at FreeBSD.org Mon Jun 1 16:22:02 2009 From: imp at FreeBSD.org (Warner Losh) Date: Mon Jun 1 16:22:12 2009 Subject: svn commit: r193236 - head/sys/dev/bwi Message-ID: <200906011622.n51GM1O4084183@svn.freebsd.org> Author: imp Date: Mon Jun 1 16:22:01 2009 New Revision: 193236 URL: http://svn.freebsd.org/changeset/base/193236 Log: Add a comment about what may be happening when we get certain messages. No change to actual code. Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:14:38 2009 (r193235) +++ head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:22:01 2009 (r193236) @@ -1628,6 +1628,23 @@ bwi_intr(void *xsc) /* Disable all interrupts */ bwi_disable_intrs(sc, BWI_ALL_INTRS); + /* + * http://bcm-specs.sipsolutions.net/Interrupts + * Says for this bit (0x800): + * "Fatal Error + * + * We got this one while testing things when by accident the + * template ram wasn't set to big endian when it should have + * been after writing the initial values. It keeps on being + * triggered, the only way to stop it seems to shut down the + * chip." + * + * Suggesting that we should never get it and if we do we're not + * feeding TX packets into the MAC correctly if we do... Apparently, + * it is valid only on mac version 5 and higher, but I couldn't + * find a reference for that... Since I see them from time to time + * on my card, this suggests an error in the tx path still... + */ if (intr_status & BWI_INTR_PHY_TXERR) { if (mac->mac_flags & BWI_MAC_F_PHYE_RESET) { if_printf(ifp, "%s: intr PHY TX error\n", __func__); From imp at FreeBSD.org Mon Jun 1 16:27:14 2009 From: imp at FreeBSD.org (Warner Losh) Date: Mon Jun 1 16:27:26 2009 Subject: svn commit: r193237 - head/sys/dev/bwi Message-ID: <200906011627.n51GRDD4084321@svn.freebsd.org> Author: imp Date: Mon Jun 1 16:27:13 2009 New Revision: 193237 URL: http://svn.freebsd.org/changeset/base/193237 Log: Make sure that we drain the LED blinking callout on detach. Submitted by: Paul B. Mahol Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:22:01 2009 (r193236) +++ head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:27:13 2009 (r193237) @@ -579,6 +579,7 @@ bwi_detach(struct bwi_softc *sc) int i; bwi_stop(sc, 1); + callout_drain(&sc->sc_led_blink_ch); callout_drain(&sc->sc_calib_ch); ieee80211_ifdetach(ic); From imp at FreeBSD.org Mon Jun 1 16:29:04 2009 From: imp at FreeBSD.org (Warner Losh) Date: Mon Jun 1 16:31:08 2009 Subject: svn commit: r193238 - head/sys/dev/bwi Message-ID: <200906011629.n51GT4ck084392@svn.freebsd.org> Author: imp Date: Mon Jun 1 16:29:03 2009 New Revision: 193238 URL: http://svn.freebsd.org/changeset/base/193238 Log: Move the unlock to after the ifdef (maybe the right fix is to remove the ifdef) since it calls bwi_start_locked, which expects to the lock to be held... Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:27:13 2009 (r193237) +++ head/sys/dev/bwi/if_bwi.c Mon Jun 1 16:29:03 2009 (r193238) @@ -4069,8 +4069,8 @@ bwi_restart(void *xsc, int pending) if_printf(ifp, "%s begin, help!\n", __func__); BWI_LOCK(sc); bwi_init_statechg(xsc, 0); - BWI_UNLOCK(sc); #if 0 bwi_start_locked(ifp); #endif + BWI_UNLOCK(sc); } From sam at FreeBSD.org Mon Jun 1 16:36:30 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Mon Jun 1 16:36:42 2009 Subject: svn commit: r193239 - head/sys/net80211 Message-ID: <200906011636.n51GaSAA084599@svn.freebsd.org> Author: sam Date: Mon Jun 1 16:36:28 2009 New Revision: 193239 URL: http://svn.freebsd.org/changeset/base/193239 Log: pad data structures to enable integration of future features w/o abi breakage Modified: head/sys/net80211/ieee80211_ht.h head/sys/net80211/ieee80211_ioctl.h head/sys/net80211/ieee80211_node.h head/sys/net80211/ieee80211_proto.h head/sys/net80211/ieee80211_scan.h head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211_ht.h ============================================================================== --- head/sys/net80211/ieee80211_ht.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_ht.h Mon Jun 1 16:36:28 2009 (r193239) @@ -58,6 +58,7 @@ struct ieee80211_tx_ampdu { int txa_nextrequest;/* soonest to make next request */ struct callout txa_timer; void *txa_private; /* driver-private storage */ + uint64_t txa_pad[4]; }; /* return non-zero if AMPDU tx for the TID is running */ @@ -141,6 +142,7 @@ struct ieee80211_rx_ampdu { int rxa_age; /* age of oldest frame in window */ int rxa_nframes; /* frames since ADDBA */ struct mbuf *rxa_m[IEEE80211_AGGR_BAWMAX]; + uint64_t rxa_pad[4]; }; void ieee80211_ht_attach(struct ieee80211com *); Modified: head/sys/net80211/ieee80211_ioctl.h ============================================================================== --- head/sys/net80211/ieee80211_ioctl.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_ioctl.h Mon Jun 1 16:36:28 2009 (r193239) @@ -64,6 +64,7 @@ struct ieee80211_nodestats { uint32_t ns_tx_data; /* tx data frames */ uint32_t ns_tx_mgmt; /* tx management frames */ + uint32_t ns_tx_ctrl; /* tx control frames */ uint32_t ns_tx_ucast; /* tx unicast frames */ uint32_t ns_tx_mcast; /* tx multi/broadcast frames */ uint64_t ns_tx_bytes; /* tx data count (bytes) */ @@ -83,6 +84,7 @@ struct ieee80211_nodestats { uint32_t ns_tx_deauth_code; /* last deauth reason */ uint32_t ns_tx_disassoc; /* disassociations */ uint32_t ns_tx_disassoc_code; /* last disassociation reason */ + uint32_t ns_spare[8]; }; /* @@ -101,7 +103,7 @@ struct ieee80211_stats { uint32_t is_rx_wepfail; /* rx wep processing failed */ uint32_t is_rx_decap; /* rx decapsulation failed */ uint32_t is_rx_mgtdiscard; /* rx discard mgt frames */ - uint32_t is_rx_ctl; /* rx discard ctrl frames */ + uint32_t is_rx_ctl; /* rx ctrl frames */ uint32_t is_rx_beacon; /* rx beacon frames */ uint32_t is_rx_rstoobig; /* rx rate set truncated */ uint32_t is_rx_elem_missing; /* rx required element missing*/ @@ -218,7 +220,10 @@ struct ieee80211_stats { uint32_t is_beacon_miss; /* beacon miss notification */ uint32_t is_rx_badstate; /* rx discard state != RUN */ uint32_t is_ff_flush; /* ff's flush'd from stageq */ - uint32_t is_spare[11]; + uint32_t is_tx_ctl; /* tx ctrl frames */ + uint32_t is_ampdu_rexmt; /* A-MPDU frames rexmt ok */ + uint32_t is_ampdu_rexmt_fail; /* A-MPDU frames rexmt fail */ + uint32_t is_spare[16]; }; /* Modified: head/sys/net80211/ieee80211_node.h ============================================================================== --- head/sys/net80211/ieee80211_node.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_node.h Mon Jun 1 16:36:28 2009 (r193239) @@ -81,6 +81,7 @@ struct ieee80211_ies { uint8_t *htcap_ie; /* captured HTCAP ie */ uint8_t *htinfo_ie; /* captured HTINFO ie */ uint8_t *tdma_ie; /* captured TDMA ie */ + uint8_t *spare[4]; /* NB: these must be the last members of this structure */ uint8_t *data; /* frame data > 802.11 header */ int len; /* data size in bytes */ @@ -192,6 +193,7 @@ struct ieee80211_node { struct ieee80211vap *ni_wdsvap; /* associated WDS vap */ /* XXX move to vap? */ struct ifqueue ni_wdsq; /* wds pending queue */ + uint64_t ni_spare[4]; }; MALLOC_DECLARE(M_80211_NODE); MALLOC_DECLARE(M_80211_NODE_IE); Modified: head/sys/net80211/ieee80211_proto.h ============================================================================== --- head/sys/net80211/ieee80211_proto.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_proto.h Mon Jun 1 16:36:28 2009 (r193239) @@ -305,6 +305,7 @@ struct ieee80211_beacon_offsets { uint16_t bo_appie_len; /* AppIE length in bytes */ uint16_t bo_csa_trailer_len;; uint8_t *bo_csa; /* start of CSA element */ + uint8_t *bo_spare[4]; }; struct mbuf *ieee80211_beacon_alloc(struct ieee80211_node *, struct ieee80211_beacon_offsets *); Modified: head/sys/net80211/ieee80211_scan.h ============================================================================== --- head/sys/net80211/ieee80211_scan.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_scan.h Mon Jun 1 16:36:28 2009 (r193239) @@ -211,6 +211,7 @@ struct ieee80211_scanparams { uint8_t *htinfo; uint8_t *ath; uint8_t *tdma; + uint8_t *spare[4]; }; /* @@ -281,6 +282,10 @@ struct ieee80211_scanner { /* iterate over entries in the scan cache */ void (*scan_iterate)(struct ieee80211_scan_state *, ieee80211_scan_iter_func *, void *); + void (*scan_spare0)(void); + void (*scan_spare1)(void); + void (*scan_spare2)(void); + void (*scan_spare4)(void); }; void ieee80211_scanner_register(enum ieee80211_opmode, const struct ieee80211_scanner *); Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon Jun 1 16:29:03 2009 (r193238) +++ head/sys/net80211/ieee80211_var.h Mon Jun 1 16:36:28 2009 (r193239) @@ -307,6 +307,7 @@ struct ieee80211com { int batimeout, int baseqctl); void (*ic_ampdu_rx_stop)(struct ieee80211_node *, struct ieee80211_rx_ampdu *); + uint64_t ic_spare[8]; }; struct ieee80211_aclator; @@ -456,6 +457,7 @@ struct ieee80211vap { /* 802.3 output method for raw frame xmit */ int (*iv_output)(struct ifnet *, struct mbuf *, struct sockaddr *, struct route *); + uint64_t iv_spare[8]; }; MALLOC_DECLARE(M_80211_VAP); From imp at bsdimp.com Mon Jun 1 16:46:57 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Mon Jun 1 16:47:04 2009 Subject: svn commit: r193223 - head/bin/sh In-Reply-To: <200906011111.n51BBkZt077175@svn.freebsd.org> References: <200906011111.n51BBkZt077175@svn.freebsd.org> Message-ID: <20090601.104358.-345495454.imp@bsdimp.com> In message: <200906011111.n51BBkZt077175@svn.freebsd.org> "Ralf S. Engelschall" writes: : Author: rse : Date: Mon Jun 1 11:11:46 2009 : New Revision: 193223 : URL: http://svn.freebsd.org/changeset/base/193223 : : Log: : align coding style with style(9) to avoid misunderstandings : : Modified: : head/bin/sh/exec.c : : Modified: head/bin/sh/exec.c : ============================================================================== : --- head/bin/sh/exec.c Mon Jun 1 11:02:09 2009 (r193222) : +++ head/bin/sh/exec.c Mon Jun 1 11:11:46 2009 (r193223) : @@ -187,7 +187,8 @@ padvance(char **path, char *name) : if (*path == NULL) : return NULL; : start = *path; : - for (p = start ; *p && *p != ':' && *p != '%' ; p++); : + for (p = start; *p && *p != ':' && *p != '%'; p++) : + ; /* nothing */ C already has a way of saying this: for (p = start; *p && *p != ':' && *p != '%'; p++) contionue; Warner From imp at bsdimp.com Mon Jun 1 16:49:11 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Mon Jun 1 16:49:18 2009 Subject: svn commit: r193159 - head/sys/powerpc/powermac In-Reply-To: <200906010822.19951.jhb@freebsd.org> References: <200905311002.n4VA2K6c037776@svn.freebsd.org> <200906010822.19951.jhb@freebsd.org> Message-ID: <20090601.104601.1021575663.imp@bsdimp.com> In message: <200906010822.19951.jhb@freebsd.org> John Baldwin writes: : On Sunday 31 May 2009 6:02:20 am Nathan Whitehorn wrote: : > Author: nwhitehorn : > Date: Sun May 31 10:02:20 2009 : > New Revision: 193159 : > URL: http://svn.freebsd.org/changeset/base/193159 : > : > Log: : > Provide an analogous sysctl to hw.acpi.acline (dev.pmu.0.acline) to : > determine whether the computer is plugged in to mains power. : : I wonder if it would be a good idea to introduce a : platform-independent 'acline' sysctl? Something like 'hw.acline'? For now : we could simply have these devices create it. We could do something fancier : where AC adapter drivers register with a centralized thingie at some point : and it exports a global setting that is true so long as at least one adapter : is online. I'm not sure that level of complexity is warranted until we have : platforms with multiple AC lines exposed to the OS though. We'll likely need some additional interface to the power system as well. acline is likely to be just the first one... Warner From avg at freebsd.org Mon Jun 1 16:51:30 2009 From: avg at freebsd.org (Andriy Gapon) Date: Mon Jun 1 16:51:37 2009 Subject: svn commit: r193223 - head/bin/sh In-Reply-To: <20090601.104358.-345495454.imp@bsdimp.com> References: <200906011111.n51BBkZt077175@svn.freebsd.org> <20090601.104358.-345495454.imp@bsdimp.com> Message-ID: <4A24070A.8020508@freebsd.org> on 01/06/2009 19:43 M. Warner Losh said the following: > In message: <200906011111.n51BBkZt077175@svn.freebsd.org> > "Ralf S. Engelschall" writes: > : + for (p = start; *p && *p != ':' && *p != '%'; p++) > : + ; /* nothing */ > > C already has a way of saying this: > > for (p = start; *p && *p != ':' && *p != '%'; p++) > contionue; But style(9) is holy, must never been changed or deviated from. Sorry about that :-) P.S. the typo doesn't deserve any mentioning but just in case :-) -- Andriy Gapon From dougb at FreeBSD.org Mon Jun 1 17:19:03 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 17:19:09 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <20090601063455.R12292@maildrop.int.zabbadoz.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <20090601063455.R12292@maildrop.int.zabbadoz.net> Message-ID: <4A240D79.1080905@FreeBSD.org> Bjoern A. Zeeb wrote: > On Mon, 1 Jun 2009, Doug Barton wrote: > >> Author: dougb >> Date: Mon Jun 1 05:37:13 2009 >> New Revision: 193199 >> URL: http://svn.freebsd.org/changeset/base/193199 >> >> Log: >> Eliminate the warning that "Values of network_interfaces other than >> AUTO are deprecated.' There is no good reason to deprecate them, and >> setting this to different values can be useful for custom solutions >> and/or one-off configuration problems. > > There used to be adisucssion about this last year. > > I think you would have wanted to talk to brooks before who had put > this in: > > http://lists.freebsd.org/pipermail/cvs-all/2008-July/thread.html#263409 The discussion has come up several times on the -rc list from various users who like the functionality and didn't want to see it go away. I'm aware of the argument brooks has put forth in the past that it adds "needless complexity" however I actually use the existing feature, as do other users. FWIW, I also sent an "I am going to remove this if I don't hear an objection" message to the -rc list, although given the impending freeze I didn't wait as long as I usually would have. Leaving the code "as is" costs us nothing in the common case since the default is AUTO and the code to generate the list of interfaces is super-trivial. Removing the existing feature however would be problematic for at least a vocal subset of our user base. hth, Doug From jhb at freebsd.org Mon Jun 1 17:25:30 2009 From: jhb at freebsd.org (John Baldwin) Date: Mon Jun 1 17:25:37 2009 Subject: svn commit: r193159 - head/sys/powerpc/powermac In-Reply-To: <4A23FB40.1050405@freebsd.org> References: <200905311002.n4VA2K6c037776@svn.freebsd.org> <200906010822.19951.jhb@freebsd.org> <4A23FB40.1050405@freebsd.org> Message-ID: <200906011323.15189.jhb@freebsd.org> On Monday 01 June 2009 12:01:04 pm Nathan Whitehorn wrote: > John Baldwin wrote: > > On Sunday 31 May 2009 6:02:20 am Nathan Whitehorn wrote: > > > >> Author: nwhitehorn > >> Date: Sun May 31 10:02:20 2009 > >> New Revision: 193159 > >> URL: http://svn.freebsd.org/changeset/base/193159 > >> > >> Log: > >> Provide an analogous sysctl to hw.acpi.acline (dev.pmu.0.acline) to > >> determine whether the computer is plugged in to mains power. > >> > > > > I wonder if it would be a good idea to introduce a > > platform-independent 'acline' sysctl? Something like 'hw.acline'? For now > > we could simply have these devices create it. We could do something fancier > > where AC adapter drivers register with a centralized thingie at some point > > and it exports a global setting that is true so long as at least one adapter > > is online. I'm not sure that level of complexity is warranted until we have > > platforms with multiple AC lines exposed to the OS though. > > > That would be nice, and easy to implement, though the existing one > should be kept for a while for compatibility. In the longer term, pmu(4) > also provides an ACPI-alike interface to battery status under dev.pmu.*, > which it would likewise be good to report in a platform-independent way. Yes, the existing names would have to stay around for a while for compatability. -- John Baldwin From dougb at FreeBSD.org Mon Jun 1 17:38:47 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 17:38:54 2009 Subject: svn commit: r193198 - head/etc/rc.d In-Reply-To: <20090601062701.C12292@maildrop.int.zabbadoz.net> References: <200906010535.n515Z4qK065272@svn.freebsd.org> <20090601062701.C12292@maildrop.int.zabbadoz.net> Message-ID: <4A241221.6090707@FreeBSD.org> Bjoern A. Zeeb wrote: > On Mon, 1 Jun 2009, Doug Barton wrote: > >> Author: dougb Date: Mon Jun 1 05:35:03 2009 New Revision: 193198 >> URL: http://svn.freebsd.org/changeset/base/193198 >> >> Log: Make the pf and ipfw firewalls start before netif, just like >> ipfilter already does. This eliminates a logical inconsistency, >> and a small window where the system is open after the network >> comes up. > > Unfortunetaly this is contrary to a lot of PRs and requests on > mailing lists out there that actually want the netif/network_ipv6 > to be run _before_ things come up. Can you provide links to some of those PRs? I'd love to learn more about this issue. > Espescially pf really needs this to avoid rules that needs to do > per paket lookups of the interface address. Not sure what you mean here. > Further ipfw has a default option being setaable at compile time > and as TUNABLE to handle this window. And what happens if someone sets the default to accept? You could argue that they are knowingly opening a window of vulnerability but I would argue that the right thing to do is to have the firewall rules loaded before the network comes up regardless of the default. That way you avoid both the potential window of vulnerability AND the window of time between the network being loaded and the firewall allowing access to the box. To give a little more history, this patch was discussed and reviewed a while back and someone told me that they would incorporate it into some overall work they were doing to improve the way that rc.d handles networking, so I stopped paying attention to it. Last night a user pointed out to me that another patch that this same person said they would handle never got in, so I reviewed other outstanding work and found that this one had not been done either. Obviously if this change breaks something it will have to be reverted. However from the security standpoint (primary concern) it would seem to be the right thing to do, and the previous rcorder was not logically consistent in any case. Max Laier wrote: > Can you please add a note about this in UPDATING? Yes. I was on the fence about this anyways, so now you've pushed me over. :) > It might be a slight POLA violation for people who rely on the > interfaces being configured to setup the firewall. For instance > when one doesn't use dynamic address rules in pf i.e. "from/to ifX" > instead of "from/to (ifX)". I don't understand what you've written here. It seems to me that if the interfaces are always the same then the firewall rules will be fine, but if they are using dynamic rules it doesn't matter if it starts before or after the network is up. Doug From julian at elischer.org Mon Jun 1 17:42:06 2009 From: julian at elischer.org (Julian Elischer) Date: Mon Jun 1 17:42:12 2009 Subject: svn commit: r193232 - in head: . sys/net sys/netinet sys/netinet6 sys/nfsclient sys/sys usr.bin/netstat In-Reply-To: <20090601155120.D12292@maildrop.int.zabbadoz.net> References: <200906011549.n51FngRA083299@svn.freebsd.org> <20090601155120.D12292@maildrop.int.zabbadoz.net> Message-ID: <4A2412EC.6020009@elischer.org> Bjoern A. Zeeb wrote: > On Mon, 1 Jun 2009, Bjoern A. Zeeb wrote: > >> Author: bz >> Date: Mon Jun 1 15:49:42 2009 >> New Revision: 193232 >> URL: http://svn.freebsd.org/changeset/base/193232 >> >> Log: >> Convert the two dimensional array to be malloced and introduce >> an accessor function to get the correct rnh pointer back. >> >> Update netstat to get the correct pointer using kvm_read() >> as well. >> >> This not only fixes the ABI problem depending on the kernel >> option but also permits the tunable to overwrite the kernel >> option at boot time up to MAXFIBS, enlarging the number of >> FIBs without having to recompile. So people could just use >> GENERIC now. >> >> Reviewed by: julian, rwatson, zec >> X-MFC: not possible > > The solution is not ideal but will help FreeBSD 8.x. The previous code was needed for 7.0 and 6.0 compatibility. 8 can break that ABI so this is an excellent step in the right direction. we could look at making multiple fibs not need any compile option but always be enabled and control it purely through NUMFIB -> 1 > > Julian has suggested a cleaner way but I considered that to be to > late and intrusive for 8.x; this way we will have enough time for > 9.x to convert this to per AF/domain handler routines. > > > Note: I will garbage collect a lot of opt_route.h dependencies by the > end of the week as that option no longer has to be visible to most of > the tree. > > > PS: I cannot spell 'routing' correctly usually so whoever touches > UPDATING next please fix the spelling;-) > From bzeeb-lists at lists.zabbadoz.net Mon Jun 1 17:50:08 2009 From: bzeeb-lists at lists.zabbadoz.net (Bjoern A. Zeeb) Date: Mon Jun 1 17:50:15 2009 Subject: svn commit: r193198 - head/etc/rc.d In-Reply-To: <4A241221.6090707@FreeBSD.org> References: <200906010535.n515Z4qK065272@svn.freebsd.org> <20090601062701.C12292@maildrop.int.zabbadoz.net> <4A241221.6090707@FreeBSD.org> Message-ID: <20090601174604.J12292@maildrop.int.zabbadoz.net> On Mon, 1 Jun 2009, Doug Barton wrote: > Bjoern A. Zeeb wrote: >> On Mon, 1 Jun 2009, Doug Barton wrote: >> >>> Author: dougb Date: Mon Jun 1 05:35:03 2009 New Revision: 193198 >>> URL: http://svn.freebsd.org/changeset/base/193198 >>> >>> Log: Make the pf and ipfw firewalls start before netif, just like >>> ipfilter already does. This eliminates a logical inconsistency, >>> and a small window where the system is open after the network >>> comes up. >> >> Unfortunetaly this is contrary to a lot of PRs and requests on >> mailing lists out there that actually want the netif/network_ipv6 >> to be run _before_ things come up. > > Can you provide links to some of those PRs? I'd love to learn more > about this issue. PR 130381 has one report and I had added another link to a freebsd-rc post at one point. -- Bjoern A. Zeeb The greatest risk is not taking one. From des at des.no Mon Jun 1 17:52:26 2009 From: des at des.no (=?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?=) Date: Mon Jun 1 17:52:32 2009 Subject: svn commit: r193223 - head/bin/sh In-Reply-To: <20090601.104358.-345495454.imp@bsdimp.com> (M. Warner Losh's message of "Mon, 01 Jun 2009 10:43:58 -0600 (MDT)") References: <200906011111.n51BBkZt077175@svn.freebsd.org> <20090601.104358.-345495454.imp@bsdimp.com> Message-ID: <86vdnfq1t3.fsf@ds4.des.no> "M. Warner Losh" writes: > : @@ -187,7 +187,8 @@ padvance(char **path, char *name) > : if (*path == NULL) > : return NULL; > : start = *path; > : - for (p = start ; *p && *p != ':' && *p != '%' ; p++); > : + for (p = start; *p && *p != ':' && *p != '%'; p++) > : + ; /* nothing */ > > C already has a way of saying this: > > for (p = start; *p && *p != ':' && *p != '%'; p++) > contionue; It's a matter of taste. There is plenty of precedent for /* nothing */ ; and some for ; /* nothing */ (for varying spellings of "nothing") in the tree. DES -- Dag-Erling Sm?rgrav - des@des.no From julian at elischer.org Mon Jun 1 18:06:59 2009 From: julian at elischer.org (Julian Elischer) Date: Mon Jun 1 18:07:21 2009 Subject: svn commit: r193223 - head/bin/sh In-Reply-To: <86vdnfq1t3.fsf@ds4.des.no> References: <200906011111.n51BBkZt077175@svn.freebsd.org> <20090601.104358.-345495454.imp@bsdimp.com> <86vdnfq1t3.fsf@ds4.des.no> Message-ID: <4A2418C1.5020406@elischer.org> Dag-Erling Sm?rgrav wrote: > "M. Warner Losh" writes: >> : @@ -187,7 +187,8 @@ padvance(char **path, char *name) >> : if (*path == NULL) >> : return NULL; >> : start = *path; >> : - for (p = start ; *p && *p != ':' && *p != '%' ; p++); >> : + for (p = start; *p && *p != ':' && *p != '%'; p++) >> : + ; /* nothing */ >> >> C already has a way of saying this: >> >> for (p = start; *p && *p != ':' && *p != '%'; p++) >> contionue; > > It's a matter of taste. There is plenty of precedent for > > /* nothing */ ; > > and some for > > ; /* nothing */ > > (for varying spellings of "nothing") in the tree. > > DES and just for bikeshed's sake, In non BSD code I prefer for (p = start; *p && *p != ':' && *p != '%'; p++) { /* Nothing */ } for (p = start; *p && *p != ':' && *p != '%'; p++) { /* Nothing extra */ } From sam at FreeBSD.org Mon Jun 1 18:07:03 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Mon Jun 1 18:07:22 2009 Subject: svn commit: r193240 - in head/sys: conf contrib/dev/mwl dev/mwl modules modules/mwl modules/mwlfw Message-ID: <200906011807.n51I71jV086754@svn.freebsd.org> Author: sam Date: Mon Jun 1 18:07:01 2009 New Revision: 193240 URL: http://svn.freebsd.org/changeset/base/193240 Log: driver for Marvell 88W8363 Wireless LAN controller Added: head/sys/contrib/dev/mwl/ head/sys/contrib/dev/mwl/LICENSE head/sys/contrib/dev/mwl/Makefile (contents, props changed) head/sys/contrib/dev/mwl/mw88W8363.fw.uu head/sys/contrib/dev/mwl/mwlboot.fw.uu head/sys/dev/mwl/ head/sys/dev/mwl/if_mwl.c (contents, props changed) head/sys/dev/mwl/if_mwl_pci.c (contents, props changed) head/sys/dev/mwl/if_mwlioctl.h (contents, props changed) head/sys/dev/mwl/if_mwlvar.h (contents, props changed) head/sys/dev/mwl/mwldiag.h (contents, props changed) head/sys/dev/mwl/mwlhal.c (contents, props changed) head/sys/dev/mwl/mwlhal.h (contents, props changed) head/sys/dev/mwl/mwlreg.h (contents, props changed) head/sys/modules/mwl/ head/sys/modules/mwl/Makefile (contents, props changed) head/sys/modules/mwlfw/ head/sys/modules/mwlfw/Makefile (contents, props changed) Modified: head/sys/conf/files head/sys/conf/options head/sys/modules/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon Jun 1 16:36:28 2009 (r193239) +++ head/sys/conf/files Mon Jun 1 18:07:01 2009 (r193240) @@ -1162,6 +1162,33 @@ dev/mpt/mpt_pci.c optional mpt pci dev/mpt/mpt_raid.c optional mpt dev/mpt/mpt_user.c optional mpt dev/msk/if_msk.c optional msk +dev/mwl/if_mwl.c optional mwl +dev/mwl/if_mwl_pci.c optional mwl pci +dev/mwl/mwlhal.c optional mwl +mwlfw.c optional mwlfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk mw88W8363.fw:mw88W8363fw mwlboot.fw:mwlboot -mmwl -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "mwlfw.c" +mw88W8363.fwo optional mwlfw \ + dependency "mw88W8363.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} mw88W8363.fw" \ + no-implicit-rule \ + clean "mw88W8363.fwo" +mw88W8363.fw optional mwlfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/mwl/mw88W8363.fw.uu" \ + no-obj no-implicit-rule \ + clean "mw88W8363.fw" +mwlboot.fwo optional mwlfw \ + dependency "mwlboot.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} mwlboot.fw" \ + no-implicit-rule \ + clean "mwlboot.fwo" +mwlboot.fw optional mwlfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/mwl/mwlboot.fw.uu" \ + no-obj no-implicit-rule \ + clean "mwlboot.fw" dev/mxge/if_mxge.c optional mxge pci dev/mxge/mxge_lro.c optional mxge pci dev/mxge/mxge_eth_z8e.c optional mxge pci Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Mon Jun 1 16:36:28 2009 (r193239) +++ head/sys/conf/options Mon Jun 1 18:07:01 2009 (r193240) @@ -777,6 +777,14 @@ MALO_DEBUG opt_malo.h MALO_TXBUF opt_malo.h MALO_RXBUF opt_malo.h +# options for the Marvell wireless driver +MWL_DEBUG opt_mwl.h +MWL_TXBUF opt_mwl.h +MWL_RXBUF opt_mwl.h +MWL_DIAGAPI opt_mwl.h +MWL_AGGR_SIZE opt_mwl.h +MWL_TX_NODROP opt_mwl.h + # dcons options DCONS_BUF_SIZE opt_dcons.h DCONS_POLL_HZ opt_dcons.h Added: head/sys/contrib/dev/mwl/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/mwl/LICENSE Mon Jun 1 18:07:01 2009 (r193240) @@ -0,0 +1,43 @@ +FIRMWARE LICENSE TERMS + + +Copyright (c) Marvell International Ltd. + +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the +following disclaimer in the documentation and/or other materials +provided with the distribution. + +* Neither the name of Marvell International Ltd. nor the names of its +suppliers may be used to endorse or promote products derived from this +software without specific prior written permission. + +* No reverse engineering, decompilation, or disassembly of this software +is permitted. + +Limited patent license. Marvell International Ltd. grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and sell +("Utilize") this software, but solely to the extent that any such patent +is necessary to Utilize the software alone, or in combination with an +operating system licensed under an approved Open Source license as +listed by the Open Source Initiative at http://opensource.org/licenses. +The patent license shall not apply to any other combinations which +include this software. No hardware per se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIPOSSIBILITY OF SUCH DAMAGE. + + Added: head/sys/contrib/dev/mwl/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/mwl/Makefile Mon Jun 1 18:07:01 2009 (r193240) @@ -0,0 +1,22 @@ +# $FreeBSD$ + +FILES= mw88W8363.fw.uu mwlboot.fw.uu + +mw88W8363.fw.uu: mv88W8363fw.h LICENSE + (cat mv88W8363fw.h; \ + echo 'int main(void) { \ + write(1, fmimage, sizeof(fmimage)); return 0; \ + }') | ${CC} -o build -x c - + (sed 's/^/# /' LICENSE; ./build | uuencode mw88W8363.fw) > ${.TARGET} + +mwlboot.fw.uu: mvbootfw.h LICENSE + (cat mvbootfw.h; \ + echo 'int main(void) { \ + write(1, hlpimage, sizeof(hlpimage)); return 0; \ + }') | ${CC} -o build -x c - + (sed 's/^/# /' LICENSE; ./build | uuencode mwlboot.fw) > ${.TARGET} + +clean: + rm -f build build.c ${FILES} + +.include Added: head/sys/contrib/dev/mwl/mw88W8363.fw.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/mwl/mw88W8363.fw.uu Mon Jun 1 18:07:01 2009 (r193240) @@ -0,0 +1,2179 @@ +# FIRMWARE LICENSE TERMS +# +# +# Copyright (c) Marvell International Ltd. +# +# All rights reserved. +# +# Redistribution. Redistribution and use in binary form, without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions must reproduce the above copyright notice and the +# following disclaimer in the documentation and/or other materials +# provided with the distribution. +# +# * Neither the name of Marvell International Ltd. nor the names of its +# suppliers may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# * No reverse engineering, decompilation, or disassembly of this software +# is permitted. +# +# Limited patent license. Marvell International Ltd. grants a world-wide, +# royalty-free, non-exclusive license under patents it now or hereafter +# owns or controls to make, have made, use, import, offer to sell and sell +# ("Utilize") this software, but solely to the extent that any such patent +# is necessary to Utilize the software alone, or in combination with an +# operating system licensed under an approved Open Source license as +# listed by the Open Source Initiative at http://opensource.org/licenses. +# The patent license shall not apply to any other combinations which +# include this software. No hardware per se is licensed hereunder. +# +# DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIPOSSIBILITY OF SUCH DAMAGE. +# +# +begin 644 mw88W8363.fw +M`0```````````@``!$>Z"!CPG^48\)_E&/"?Y1CPG^48\)_E&/"?Y1CPG^48 +M\)_E8#4!`#PU`0!`-0$`1#4!`$@U`0!,-0$`4#4!`%PU`0#$@(_B`P"8Z`@` +M@.`($('@`;!`X@$`4.$3```*<`"PZ`4`5.'Z__\*`0`4XPM`A!`!`!7C"U"% +M$`(`%>,)4(40`U#%XQ!@5N*,$+0HC!"E*/O__XJ&;K#A#`"T*`P`I2@$<)1$ +M!'"%1.G__^H(()CE##"8Y0@@@N`(,(/@`+!"*0H_/__BH5> +ML.%!`*0H!'"$1/#__^H`0P$`/$,!`#Q#`0!D0P$`@+0/(``#@+P`27!'`"`` +M!/=*`""1:``I!-`%*0/1]4@`:`#@]$@!,9%@<$<0M1/P._L,(`;P"_SM3&!A +M$"`&\`;\(&%,(`;P`OP0,`;P__L``@`.`0<)#P`&``\A<>!P`"`0O8"U"?"Q +M^P`@@+WXM=]-_R$E,2`U*!P2\*/]+AQ`-@$D-',*(%,A2%4I''(Q,!SA,!+P +M[OX(('"#!R"P@P8@\(,H'&`P""$!@`HA08`,(8&`#B'!@!`A`8$2(4&!%"&! +M@3&)@"`@(H%#0""!0S&!Z8PO'!`W(4,10X%#Z82N-\]K`0```/P!`````@`` +MP))E(RD<`"8B,08@_G,2\,/^`B$H'"`PN7.$@0XA#_R'Y +M,9!#B$-@,"P<,#0HAJ-X8'@&(1L"&$.(0SA#8".80X`AB$,#"F!PHW!P-2YP +M;G``(`PA@"6L2X(`(#/6&'-X,GC_)QL"&D-3"%L``B*30P0BDT,*')(&^3>[ +M0](-&D,R')X`3D;`AI#!B/;0Q-`&"(30Q\<8".?0Z]#=W`["K-P +M,WGW>`$P&P(?0S\)/P$"-SL*]W`S<00HR=.12`$F(#`!B`0G,4,Y0PL<_R'Y +M,8M#>#,#@`-YQG@;`AY#-@DV`0$VQG`S"@-Q@X@!)C-#.T.+0V@S@X`#>L9Y +M&P(>0S8)-@$"-L9Q,PH#<@.)`28S0SM#BT,#@0-[QGH;`AY#-@DV`08VQG(S +M"@-S@XE;"%L`NT.+0R@S@X$#><%XQGD;`AE#`WIN3QL"'D.)&0-[QGH;`AY# +MB1D/(UD:`WS&>PD'&P(>0S,)&P$)#QE#"PK!$IX +M@"4;`AI#JD-*X +M0V`C&$-H8R@<-3`%'!/PD_FP0P0AB$,((8A#N$,@(A!#*1P2\)[]_R"@<>!Q +M`B``(34]*A@P,@$P$"B16$>2P0S&6@/(A(%$4,98!I+(#O9 +M:O\B$@*10]EB,8L3*0?1&TEE(L`Y2F+%(HIB)R'!80`@P>=T)0#`PDT`P"T! +M````I0"`@J@"E+^H`@8`J`"`S!,"P-`3`L#4$P+`W!,"P-@3`L!T!```X!," +MP$#H`(#___\/-CX``"`@`(`44`+`_P$``#8(```(@`"0*)``D,"B`("`M1/P +M6?@3\%OX`""`O>1)@+6(:`$PB&#B2$%J`2%!8A/P5O@!(("]_[4)G@8H`=(2 +M*0+3F"`$L/"]VTV"`*Q8`"P!T)<@]N?73P0!8#_D&:Q0(6"O6`*P!!P&+!&8$)V61IQ&`M.8(`NP\+VZ2:8`&#F)60`I`="7 +M(/7G`"("(021!9*P3P(<`Y`X:;-)`)"4(&!#1!@"D@B:(!QA1@&5PM0$H +M!])Z380`%#4H61+PT/\`("A1L+T(M0$H"])T28``%#$(6&E&`"(2\,K_`"@! +MT0"8"+T`(/SG@[4!*`K2;$F``!0Q"%@!J0`B$O#!_P`H`-&,O0$@_.<`M0,< +M`2B)L!/2!*D%J`"0`9%A29@``ZH"DA0Q"%@(J0>J!JL2\+#_`"@"T0>8";`` +MO0`@^^=P1X"U@"`2\*S_@+V`M0`@$O"G_X"]<$=P1W!'@+6`(!+PG_^`O8"U +M$O";_X"]@+4%*`C2'"-,2EA#8#*`&`H<`"&RL.CN`0```.P)`````@``'G.Y +M#A+PEO^`O8"U!2@&TAPC1DE80V`Q0!@2\)/_@+V`M04H"-(<(T!)6$-@,4`8 +M`"')0Q+PCO^`O8"U!2@&TAPC.DE80V`Q0!@2\(O_@+V`M08H!M(U24`![#%` +M&``A$O"(_X"]@+4&*`;2+TI``>PR@!@`(A+PA?^`O1RU%!P&*`[2`"+20P"2 +M*$I``>PR@!@B'`&K$O!]_P`H`=$!F!R]`"#\YX"U!B@%TA])0`'L,4`8$O!V +M_X"]@+4&*`;2&DI``>PR@!@"(A+P6_^`O0"UA[`&*!'2`ZD`D1-)`JI``>PQ +M0!@!D@6J!JD$JQ+P8?\`*`+1!9@'L`"]`"#[YQ"U!!P$*`S2'"`,26!#0!@! +M(@`A$O`._PA*`""A`!`Z4%`0O00```0`D`"0G!<`!'L'``"\!``$+`$`!%@9 +M``2`M00H!](<(W5)6$-`&``AR4,2\/_^@+V`M00H#-)P2P$A@@`0.YE0'"-M +M25A#0!@`(25A#0!@2\-K^@+V`M<%H`AP`:))H$O`"_X"]\+4" +M*`'3F"#PO55-A``K60`K`="7(/"]+"-03D-#<#:;&4Y/*U$&`<@WN%'P&8%@ +MPF``(4%@2TD982E92&&"X3Q3`0```.@+`````@``ZIL'LP`@\+W^M0L<$1P" +M*!;21$P"`<@T%1EJ:(0``"I!3@[1`2("D@"3`9$P60`A`FE#:1+PT/X`*`'1 +M`2!H8/Z]-1P*'!D<,%D2\,W^*%D2\-+^].>PM0(H!M(R380`*%D2\-'^`"`H +M4;"]@+4"*`32+4F```A8$O"^_H"]@+4"*`32*$F```A8$O#%_H"]$+4$'!+P +MR/X@8!"]`","X`%P`3`!,Y-"^M-P1_BU($@`:`5H`"T@T!Y/`"0!(*!`*$`7 +MT!M)H``8,0A8A@"Y60`I#]`(:(IH*1P2\'7^`B@(T;A9PV@`*P30*AP!(0!H +M$O"B_@$T$BS@VPM,(#P#S`@\@4(+T`A)"#$(7!+PG/X`*`30(&@!,``&``X@ +M8``@^+T``%@9``0D```$FPL```````2<%P`$@+4+\.7__R$#(`_P9OWK200@ +M"&`&\(C]!/!<^X"]YTAPM8`P!&D`:^5-`"9I:Z%"!M'D28Q"`]!IBP$Q:8,! +MX&Z#;&.J:P$#$@,2"PD+D4(>T0$#'-"IBP$Q"00)#*F#"BD,V=5*0#(1:5)I +M$4,&T:Z#*&2H;`$PJ&3_]\'_:(L**`39;H/L8VAL`3!H9'"]KH.H8_/G<$`M0`H!=`!'``@__=`_@`@@+T!(("]PT@'(0%B'R)"8H%B +MPF*A>`!V`0```.0-`````@``\V/9PP%C0F.!8\)CODDD(`A@2&"(8,A@O$D! +M(`AP<$=P1X"U2W@*>!L"&D,!(]L#&D,*,MX&P(:0P7P +M_?R`O8"U2W@*>!L"&D,!(]L#&D,*`"*`'0 +M`R@%T04@#/!1^@0!L"&D,!(]L#&D,*@$K`M$!,``&``X!,A(&$@X'*O'3`20`(P$H=4I] +M3038`2@(T8A^`2@%T%1R*&L`*`#0*V,PO5-R*&L`*/K19B`H8S"]L+4,'!4< +M`2$(\.OZ`"@`T;"]1($%@;"]^+4/'`0<`"AQT"`=`)`2\`7\T")I27I#5A@` +M*!/0!"!<23!W"&H!,`AB`2@+T5Y(6TD`BT`Y#R@!T0P@`N`3*`'1!2!(8S4< +M'C4@'!+PYOLI'#DQ$?#X_P"8$O#?^RDBEY&P(80VMYP`?` +M#QL"&4-)"$D`"$,H<0,*:W'C>J%Z`B(;`AE#B0?)#Y!#20#]0"E3`0```.`/ +M`````@``!XMG?@%#*7$+"FMQXWJ@>B`B&P(80X`&P`^10T`!"$,H<0,*:W'C +M>J%Z0"(;`AE#20;)#XD!D$,(0RAQ`PH@'`@P:W$2\*#[:7BK>(`&P`\;`AE# +M("*10P#@3N!``0A#:'`#"JMP8'M!(0PB2%4@>ZAQXWJ@>G&,&P(80P`'@`^` +M`)%#"$-PA``'@`\!)0$H`M$;2AL"&$,`!X`/ +M`=$`(0#@`2$X'`OP3?P52`"+#R@:T1E(`GH"*@'0`RH4T0-[%DF0.0`K!M&* +M>P(J`=`#*@K117(#X(M[`2L%T4)R0'J(A-`"((X(1"!=%0`$`90'@(<`$@,+T! +M,E,`[%QC'/+1`"`PO?BU!1S?2E`U*'FC3X2%`0```-P1`````@``>9#`SFEY +M_R<6'!0<<#00-ODW`"DDT6E&__?<_P"K&'C722!P2W@*>!L"&D,"(YI#4@A2 +M``0CFD,*P`K`]&Z0X`&@`X&X`4C`R@`TP,6E&__>4_P"K&'A@?PM:E/!"8`(F`ED0#)&0QX2W@; +M`AQ#XP<5U+1#(PH,<$MP`R@&T4QXBW@;`AQ#K$,@-`3@3'B+>!L"'$.L0TQP +M(PJ+<`3@8P<"U`,H\M'JYP$R!"K9T_"]$+5+>`IX!'@;`AI#0WB2!](/&P(< +M0P(CG$-2`")#`G`3"D-PBWA*>$1X&P(:0X-XT@:2#QL"'$,8(YQ#T@`B0T)P +M$PJ#<(MX27@;`AE#20:)#V`CFD-)`1%#07`+"GY*@W"2:/\R83+3>8`B`2L! +MT1%#`."10T%P"PJ#1L"&$/`!S#4#_!4^B@<0###>H!Z`28;`AA#P`8`*`K:94F( +M:#(X"&!C2$`P!F!#\=N$`0```-@3`````@``C7A^1L"&$,P0Z!Q`PHH'"(PXW$2\+/YH7H`(P"1*1P0,8I[S'L!'"`<$/!! +M^OB]\+5.3K^P,1P@,0$@(9`^D8AYRWD;`AA#P`<$U$Q)"&A`(A!#"&`(\!S[ +M!!P(\"O[/ID%'(AYRWD;`AA#P`<)U"!X8W@;`AA#0`1`#!PH`=#_]YK_(7AC +M>#E*%AQ@-CV6%AP;`AE#H#8\EA8<2`0X2T`,$#:80EO06]P7'%`W.Y<7'"(W +M,#+_(Q`SF$(YDCJ78]!CW/\G`3<=*`'1`?!M^W3<&2@!T0'P0OM8W`,H`=$! +M\`'X!"@!T0'P0O@4*`'0`O#K^6!Y`2@!T0'PM?D"*`'1`?#+^0,H`=`!\`3Z +M`"$@'`@P"/`*^`8<(!RZ(0XP$?#'^P`N`=$!\,[YO""`7;@C%$D@UA#0!BP,(!X,1P.,>!S<(D@="`<(#`1\/W[`?#6^=+C#^$``.!+ +M`0#\)0#`4$T`P$A-`,`44`+``*8`@`P@`(`"`@``2,,!`+'C9N`:*`'1`?!4 +M^QLH`=$!\'O['"BFT2!Z8WH;`AA#`2@!T`+P,?F@>N-Z&P(80P#@$N`!*`'1 +M`?`4^0,H`=$!\`CY!2CMT?=)`2"):/\Q83&(<0`@`?`+^;A"<=`BW!XH`=%$ +M-U_<`0```-05`````@``E("@`P'P!OD@*`'1`?!5^%`H`-!WYP$@P`,(0R!P +M`PIC<``@H''@<2`<)AP(,!+PL?CF20`H8GELT`$@D$`*>!!#"'"WX_\C"S.8 +M0F/0`S.80G'0`3.80MS1`"`,\(OYVTD`(`A@VTD(:$`B$$,(8*CG_R,D,YA" +MAL"&$,` +M*`'0`O`5^F-Z +M&P(80P`HCV8&P(90X![$/`Y_[A)`2`( +M<3J8$O!'^#N9`"<)>@"1LGOV>Y#BU^,VX_\C*3.80@'1`?"8_R/AL"&$,!*)+1XWJ@>B$<&P(80P(&$@ZA +M2`PQ`G`"X-C@4^'CX`$P$?``^RKG_R,J,YA"`=$!\&#_FDN80MW18WH@>I!) +M&P*):!A##B#_,6$QB'(6YP+BA.*03Y)+4#>80@'1`?#Q^''OIA"F]$!(,`#"$,@<`,*8W`!X(SCP.,`(*!QX'$@'`@P$?"X_VU) +M#"+(<0+P9/AN2P<[F$(!T0'P$?DOW&I+%SN80I/0`C.80@'1`?"/^69+"#N8 +M0@#05N9>24`Y"&H!,!V0(!P(,!'PE?\8J]AV(!P,,!'PC_\8JYAV(!P0,!'P +MB?\8JQAW(!P`)A0P`.`AX":0`3`ED`'P8?CGXU)+!#N80@'1`?`S^@$SF$(! +MT0'P'_H",YA"SM%&24`Y"&H!X&#AU.,!,``F)QP(-Q^0`?!8^,WC1$L',\`: +M%"@$T@.C&Q@;6EL`GT0-Y@``90@Z`D`"R0[0#G0/I@BE#[-ZH7I@?1L"&4,.\.+X8'T<(UA#@1F@>N-ZQ#$;`AA#$?`%^R!Z8WH; +M`AA#0`<@U2%]8'T3X!10`L#$)@#``*4`@`"C`(#&30#`)#,`P+E(`L`!`@`` +M*1$``'!$`0`.\+[X8'T<(UA#@1G;DPP&`0```,P9`````@``IW$J!ZZ4D;`AA#"'`@>NA)8WH.'*(Q&P(80Y8V`"@XD5S1 +M)QP((!^0*#<"(!#P$_@*X#B8$?"H_C%H"@)1&A'P5_HX8`0_!#X?F`$X'Y!# +M'._1V$@!)P%H.4,!8`OP6/F`(1\@#O#9_M`A&R`.\-7^8"$G(`[PT?Y0(2@@ +M#O#-_B@A*R`.\,G^/IF(>H9)8WH.'`\<&P(80YHWGC8`*!'1,1PX'`WP\O\X'!'PZ?T! +M`@\:,!P1\.3].1P1\)7Y(1P,,6[E.1P`)S@<$?#O^3$<.!P1\.OY#?#-_UOE +M=$H0:`$A"02?"8S/`0```,@;`````@``4YFB7@A#$&`!(`[PE/AQ24AI,"*0 +M0TAA;4D@.4AJ!"*00TAB"_#N^69)`"_9[ +M`1PP'#L<#_!#_L#D74D!(`AQ.I@1\*/].Y\`(SEZ`)&R>_9[`1PP'`_P,OY8 +M2B`Z$&H!(0D$B$,08E1)!#$(:`0B$$,(8``@#O!4^%%)%#$(:#`B$$,(8`OP +MN?FA>N-Z/9@;`AE#@'L0\&7\C^1)2$%H20A)`$%@B>3^]Z'^!AQ@>?\C73-$ +M3UA#P!DP,!HB(1P(,1'P3_CC>*)X8'D;`AI#_R-=,UA#P!E0,!HZ(1PB,1'P +M0/A@>?\A)C$X2D%#B1@W2H``$5`(\&SX,!SQXS5(`&@`*!70+DD(:@$P`"8G +M'`@W'Y`*X*WB.!P1\#?]`1PP!@$B``X(\'_X`38?F(9"\M,@'`@P$?`I_8`' +M`=4!(`#@`"`D20DBB6B2`8D8B&/_]Y+X$.<@'`@P$?`7_3R9P.,720]J`3<` +M)@7@,`8`#B%Z"/#"^`$VOD+WT_SF('IC>AL"&$,!*(?1(!P+,`<<$?#\_,(' +M$4DFU0`@\',(<`])6B`(8`])9"`(8"'@E^(D,P#`4$T`P%3Q`0`@J`"`P*(` +M@$"F`(#H(P+`Z#X"P.@8`L!T)0#`%%`"P'\L`,!`10$`1$4!`$`'`M4]*@'' +M`0```,0=`````@``2F%\+@$@\',(<#@<$?#*_$`%P`X!*`S1`""P!!X&P(80XA#$'`#"E-P5N!@)P(H%=$!(+!S.9H$(5-X$'@;`AA#B$,0<`,* +M4W`YFI-X4'@;`AA#N$-0<`,*DW`]X#F:!"%3>!!X&P(80PA#$'`#"B`<##!3 +M<#>0$?"1_,`&/IF`#PAP-Y@1\(K\P`:`#P$H#-$YFI-X4'@;`AA#N$-0<`,* +MDW`"(+!S`"`.X`,H$=$YFI-X4'@;`AA#N$,@,%!P`PJ3<`,@L',!(.Q)B'0$ +MX`KB8>`^F0(@"'"@>CJ9$?!T^+![/)D()-X&P(80T`& +M@`\+\![].I@1\$O\.YF$1@EZ`",`D;)[\'MA1@_PVORP>__WXOG620$@B'%( +M:@`H`-`BY+!["O#.^![DT4@$8R`<"#`1\"W\STD!*!S1X&@1\#WX(!P,,!'P +M(_R`!P?5.9H0>%-X&P(80P(C&$,&X#F:$'A3>!L"&$,"(YA#.9H#"A!P4W`, +MY``HTM$('!'P"/PA'`PQ$?`:^,CD(!P*,`OP=O_#Y/[W+?T=D+5(Q&(@'`@P +M$?#U^[-/&#\!*''1/)C`>P`H%]"O2-PP$?#I^P$<`B`-\+?]JTCL,!'PX?L! +M'`(@#?#%_:=(Y#`1\-G[`1P"(`WPP_VB2,!J__<#H9R@`0```,`?`````@`` +MOHG"DPCYH$C`:C:0##`1\,O[GDD4.361`2AKT3D<`"`0\-C_-I@4,!'POON7 +M2<`'+#E+>`EXP`\;`AE#20A)``%#DD@/'"PX!W`["D-P-I@<,!'PJ?L`!@`. +M^0<3U!ZI__?&^(E)!"(L.4MX"'@;`AA#D$,"(YA#"'`#"DMP'.!SX3_A!.(8 +MJQAV.9H$(8]#$7A3>'U(&P(90TH'T@\L.)(`.D,"(YI#`.#/X(D'R0])`!%# +M`7`+"D-P=$C_(BPX0W@!>/DR&P(90Y%#&*L:?I(&T@T10P%P"PI#<`-YP7@/ +M(AL"&4,10\%P"PH#<369#B"`?F0@! +M-)#`&3.0%#`1\$?['YE;2HD`+#J/&'MX.7C`!QL"&4-)"$D`P`\(0SAP`PI[ +M<#*0,9`SF!PP$?`P^P`&,9D`#LD'"]0>J?_W3/@X>'MX!"$;`AA#B$,"(8A# +M$N`8JQAV,I@$(0A#.'`#"GMP.9H"(8A#$7A3>!L"&4.)!\D/20`(0SAP`PK_ +M(?DQ>W`8JXA#&7Z)!LD-"$,X<`,*>W`V2328R6I`&#"0&#`1\/;Z`"@-T3"8 +M(#`1\/#Z^7@[>0`'&P(90PD)"0$`#PA#!N#X>#MY&P(80P`)``$",/AP`PH[ +M<368$?#9^OEX.WD;`AE#"0=VFW*-`0```+PA`````@``ME8S3@D/0!@UF1#P +MY?X?F0$Q'D@?D<=J.!P0,!'PQOH?F8A"`-ERYS68$?"_^C69`3@0\-'^`2`- +M\+;]__?%^#$<`2`0\,C^L'O_]U/X&>`.20`H%M`"*!31(!S^]]W_"DG(:@PP +M$?"A^@$H`M$Y'``@`>`Y'`$@$/"N_C$<`"`0\*K^'9C^]\?[A>0D,P#`?$T` +MP"!Z8WH;`AA#`"@6T?E.!B(A'`HQ,&@0\&O],&@!:""1"ASU28IB@(@@JQB` +M()C(8F%Y\DK_(%!4Q.0!*`;1(AP*,@$A8'D.\,KXN^0"*//1(!P*,`8<"_#6 +M_3`<"_`&_K#D`2"00`IX@D,*<`AX"_#P_<'@8'G_(R8SX4Y80X`9&APA'`@Q +M$/`S_6-X('@!(1L"&$/)`PA#('`#"F-P`""@<>!Q/)C)",-Y@'G_(AL"&$,( +M0SR9`PJ(<!Q(!PF'`@P$?`1^@$H)-$\F`$GPWF`>3R9&P(80SA#B'$# +M"KY(RW$`:`OP\?I@>0@H!]+_(28QMTI!0XD8"/!S_0/@LTD(7`WPO/ZU20AH +M""(00PA@!"!*X``&#=5@>0@H!=(`(@`A!_`O_6!Y`>"H20A<#?"]_CS@#?#+ +M_@</`0```+@C`````@``0KZ-\P!H`"@0T0`O#M!@>0@H!=(`(@`A +M!_`8_6!Y`>"<20A<#?"F_@$O)-$\F0`@B''(<9U)"2*):)(!B1B(8_[W+/U@ +M>0@H`](`(@`A!_#]_`KP1?N620AH!"(00PA@D$D(:`@BD$,(8``@#?!K_`$@ +M$?#U^8](PWJ!>AL"&4/)",D``C$0(YE#@7(+"L-R#"(Q'`'P/OHA'(=."#$& +M(C`<$/!Q_&-X('@!(1L"&$/)`PA#('`#"F-P`""@<>!Q/)A)",-Y@'D;`AA# +M"$,\F0,*B'%R2,MQ`&@`*`K0,'AS>!L"&$,`*`318'G`&0%X`3$!<+`<$?!; +M^7-X,7AF>1L"&4,!X/+BH>("'#`<"/!%_`XB`?#]^:![_R@'T5M(!B(!:"`< +M#C`0\"[\$>!73@8B(1P.,3!H$/`F_#!H`6@@D0H<4DF*8H"((*L8@""8R&([ +MF0$G2'J@=0,*XW4["B=S(!P<,&-S!_`N^@KPD?P@P,* +M('5C=4U(&#$0\"C]/IG+>8AY&P(80SA#B'$#"LMQ`?"H^2`<)#`OD"Z0$?`! +M^0<<(!P@,!'P_/@B'"@R.1P'\!/Z+I@1\/3X/4D`)TAT(!P\,"V0%^"Y``@9 +M*#`KD"R1$?#F^#=*+)E04"N8$?#@^"J0+9@1\-SX*IE``0@8+)D#'DUE`0`` +M`+0E`````@``6T93@S%*`3=04"^8$?#2^+A"XM@@'#@P!QP1\,OX`0[-[&P(80Q_@S!,"P`"E`(!<+`#`Z#X"P.@8`L!T)0#``*,` +M@%A0`L`44`+`)*@`@)!-`,`82P+``1D$`R0S`,"(5`#`F%0`P!!#<',#"K-S +MF-Z\D_R2!L"&D,!*O%)&-`"*@O0!"INT`@J`-!3YPAX`BAITZ=R.PKC +MCN9&P(80P`&``[(<0KPY_E!YZ)ZXWH;`AI#ND(1T3N92'H!*.+9 +M/IG+>8AY&P(80Q`C&$.(<0,*RW';20`@"'`IYSZ?UTG[>;IY&P(:0Q`CFD.Z +M<1,*^W$`)P]P.YD)>@(I`=$'<`#@`7"@>N-Z.YD;`AA#``8`#@ARS$D)BQ0I +M#M`3*0S0`R@*T1^I`2`-\./_&*L8?P,H`M`[F0(@"'(ZF!'P`?@[F0EZ`)&R +M>_9[`1PP'#L<#_"0^+I)`2`)>`[P"/CGY@#@`N``>`(HD=(!,*!R`PKCF-Z&P*K3PB>`0```+`G`````@``KZ[M +M/AA#`2B*T:!ZXWH;`AA#"O"_^<;FJ$D`((EH_S%A,8AQ`2`%X*1)`""):/\Q +M83&(<F-Z&P(80P$H$-&@>N-Z&P(80P`&``X-\"O\.I@0\*__LWL" +M'``@\7L*\(+\('IC>AL"&$,"*`G1.I@0\*#_`AP@'+=[\7L0,`#P"/\ZF!#P +MEO\[F0`C"7H`D;)[]GL!'#`<#_`E^('F(!P(,,`A!AP0\!_Z`2$P'`;PF/X@ +M'$0P"_`[^P`F!B!P0P$92C$P'`WPP_T!-A`N]=MVX``A(!P(,`;P0_X&'"`< +MNB$.,!#P`/H`+FG0NR"`73$<6#&@!!X&P(80T`'P`\@ +M=#F:DWA0>!L"&$-`!H`/8'0]F,![@`?`#Z!T/9C`>\`'P`_@=`+P+?DA'"`Q +M2'!?2`!H"'$,(B`<%#!=20/@;")=22`<"#`0\!KZ,N`EF!#P*O_`!HYAP8'O8 +M<*![&''A?%@=`"D%T`,Q67`A'!0QXGP&X.%[`*L#,5EPXGLA'!`Q$/"M^0`F +M!>`P!@`.:48(\.?[`3:^0O?3%>,@>F-Z/9D;`AA#B',^Y"!Z8WHA'!L"&$,` +M*`318'D*,0CP]?LRY`$H\-%@>0HQ"/``_"OD_??+_P<<)AP0-B`<"#`0\)/^ +M`081L"&D,['/[W%?L!*!'0`28/X`$H$-%C?")\ +M(7H;`AI#8WH@'!L"&4,*,/[W%?H`*.W0!?#J^0C@`B@&T2`<"C`&\%W]!B@` +MT0$F`"$@'`HP!O#S_"$<+#$0\"[Z`"X`T0OE@>$@>O=)"':"X_5(0&H`*`/0 +M(1PH'/[WL?D@>F-Z`2;V!QL"&$,`*`K0(!P,,!#P_/WC>J%Z&P(90S%#"&#K +MY.-Z(1R@>@PQ&P(80S!#`&@0\`'ZX.3B2$!J`"@#T"$<*!S^]XOYH'OC>QL" +M&$-E0?''`0```*@K`````@``G%]1W@`H$M`!*"[0`B@)T2`<"#`0\-3]`1P@ +M'#H<$#`#\$#^(1PH'/[W&?FMXR![8WL;`AA#0"CTV"`<"#`0\+_]!QP`)@G@ +ML``!&3AH$#$0\,SY!#V-[&P(80[!"W=GNYR`<"#`0\*?]!AP@ +M'!`P$/"B_3!@T>>]2$!J`"@#T"$<*!S^]T'Y"O!:^"!Z8WH;`AA#`"@2T"%[ +MH'KC>AL"&$,-\&G\H'KC>AL"&$.$*#[1L$D@>XEHT#$(<3C@H'KC>A^I&P(8 +M0PWP3OT>X*A(0&H`*`/0(1PH'/[W%OD*\"3X('IC>AL"&$,`*`?0(7N@>N-Z +M&P(80PWP,OP8X*!ZXWH?J1L"&$,-\([]&*L8?R!S#>"82`$G!W!]()=)P`#( +M8R!Z""@#T)%)3W$/\/S[P>,@'`@P$/`__9%/`"ALT2$B(1P,,1>H$/`B^!>8 +M`"'`!\`/%I`3J`+``L`7F!VJ`C(`!T$/`"DDDFW1%Z@&\"OZ`"@$T7Y)B&H! +M,(ABB>`8JQA]&ZDCD0`H;]%X:``H!]%\2``A0G@`*@+1@'@`*`+0!2!X21'A +M<4C`>@`H<=$$\%#^`"@%T03PB_]L20$@R')GX`$A(Y@&\,W[:$FP,4AA!QQ> +MT&M(0'P`*`+1`2`%\,3X`"`%\,'X`"$!(`7P2/@`(A>I%IAY`H3_`0```*0M +M`````@``A:>/K@3PWOXDF1#P\?@8JUA]84F`"!606'V`!X`/`R@"T1@@">#K +MX@(H`=$0(`3@`2@!T0@@`.`$(!BK"?%-)B'%-2$!Y`"@$T`4@#_!Q^P7@ +MP.)1204@%9H/\-;Z,!P0\*_\`2@.T!68!B@$T0$@NB'(50/@GN``(;H@P55X +M>P`A"?#%_@`AO2#!51BKV'P`*`_1/$A!8P\A!2``X!?A#/!A_C\A!2`,\&C^ +M/$E!($AA(.`8J]A\.DXP7`$P#/!8_@$0`H!-`&(`_P6?H%X`?BR$D& +M(!6:#_"^^3`<$/"7^P$H#=`5F`8H`]$!(`#@A^``X``@NB'(57A[`2$)\*[] +M`"&](,%5&*O8?``H#]&Y2(%C#R$&(`SP3/T`X.G@/R$&(`SP4?VT24$@B&$@ +MX!BKV'RR3C!<`3`,\$']`1P&(`SP-_T8J]A\,%P!,`SP0OT!'`8@#/`X_1BK +MV'RG23!<@`!"&%)HBF&C24`80&J(8YM.`"`7J0D8"7PR&`$P!BA1P`H!=`ZB1BKV7P`(`OP'OF72(!K`"@%T)5*@#*0:4`A"$,$X))*@#*0:4`A +MB$.082.8@'L`*`'0`2`P=`$GBTEX`X`Q=W2(8/WWV?XCF`-\P7L;`AE#2![" +M%Q(-$A@2$Q(#@!H`!``,"@IB``%(8G=(AW$/X7I)`2"(2/SA&*M8?1E]@@C8?,L`61A82\D8B'%< +M23@<#_#G^#`<$/#`^@$H!=`8JQE]$IA`>PGPW_P2F`$AL#!!".X07BB1@)>@$I`M`!,`@H\]L(*"S1 +M!"\!V``O-=$8J]A\.DXP7`$P#/!0_`$<.!P,\$;\&*O8?#!<`3`,\%'\`1PX +M'`SP1_P8J]A\+DDP7(``0!A`:"*:41@(8-A\*4DP7(``0!A`:B*:41@(8@S@ +M!"$X'`SP)/P/(3@<#/`K_"%*(ID@((D8"&`!+P'0`B\(T1BKV'P$*`32&DHB +MF0`@B1@(8B.8@'L`*`?0&*L8?0Y*`2'#`!@8@!C!<1BK&'T*2@$APP`8&(`8 +M`7(BF0U("!@`:@`H(M`*2H`R4&D!(0D$B$,:X&3A@E`"P#1H`L!P1`$```P` +M@"0S`,!44`+`_V<``$"B`("`I@"`'"<`P$"K`(!`I`"`*',"P%!A`2#E2B*9 +M0`.)&`AC_?>S_0G@0`\!*`;1%ZD6F`3PIOTDF0_P`OXDF!#PZ?G_*$_1(1RR +M=^7Z`0```)@S`````@``^[PH'B@<_?>,_2SA`BA?T0@B(1P,,1VH#_#&_!Z8 +MU$H&!C8.@`H +M$]$&X`$N!-&[26@Y2'L`*`O1'Y@.\/__,!P$\"K\`"X$T;5)`2!H.`! +M+F/1L4D!(&@Y2'->X*]*`"!(,M!1K4@?F1`X05P`*531'YD!)T=44.`\X0$H +M$-$*(B$<##$=J`_P9/P=F!Z9P`?`#Q"K"08)#IJ/!/`H_3S@`R@+T0@B(1P, +M,1ZH#_!1_!^8``8`#@3P&_TNX`0H+-$A(B$<##$7J`_P0_P7F``'0`\BT1>H +M!?!8_@`H`-$KY!BK&'T;K@`H+-%X:``H1M&+2$%X`"E"T8!X`"@_T89/:#_X +M>@`H.M$$\(7Z`"@%T03PP/L!(/AR,>!UX`$A,!P&\`+X?4E(,4AA`"@GT$![ +M"?!?^@"(P06)#@,I']/`!V+4'.`8JQA]`2@MT3AK`"@5T7)(@7H`*1'1P'H` +M*`[1;D]H/WA[`"@)T0$@!/!3^@`H!=$!(`3PC?L!('AS/N`!(3`PGP+?H`B,$%B0X#*2W3P`PGP`?H`B,$%B0X#*0'3P`<$ +MU"$<*!S]]V/\!N`A'"@<_?<9_"&8`"@"T$1)!"#(8C^P\+T@>F-Z&P(80P$H +M8]&@>N-Z&P(80PGPL?A_%[`AP` +M(#L<"?!G_?_W\_@@>CR9R',L26@Y"'+/X"!Z+DD>*&C0'MP1*%W0$-P`*#_0 +M#B@VT`\H/-`0*#'18'H.*"[2="-80T`8*2$)`87@$RA2T!4H4M`:*%30'2@@ +MT2<@@`%-X",H%=`)W!\H7-`@*&/0(2@+T"(H$M$82$#@)"@+T"4H8M#_*`K1 +M%4@XX!<@P`$UX!)(,#`RX!!(T#`OX'3@8'H"*''27"-80T$80#%4X&!Z`BAI +MTLPC6$-!&/@Q3."`H@"`C#,`P#1H`L`H@,H3](P(UA#0!CA23'@#N#A2`'@X$A$,`D8*^!@>@(H0-(D(UA#0!C: +M29`Q(>!@>@(H-](8(UA#0!C623`Y&.!@>@,H+M(4(UA#0!C22=PQ#^#_YV!Z +M`R@DTD`!0!A9(4D!!N!@>@,H'-*C8G,>`0```)`W`````@``%JQ(TUPC6$-` +M&,I)01@`*170H")/X`$G`2$@'`@P!?"R_@8<(]"A>PP@`"D-T'**X7N"0X@' +M``\00W""`.!LX.![`"@$T0`G`N!QB@A#<()PB@`'@`\!*`#1`.``(+9)R'/] +M]R_[<'LY'`GPG/@A'"@<_?<5^_WF`2$@'`@P!?""_@`H2=!`>[@CK$E80T`8 +M`1QH,2`<'B(.,"C@J$@!:$MX"'@;`AA#('(#"F-R"GA+>!L"&D,@'`PP&.!@ +M>2%Z.50JX&=Y)GIC>B`<&P(>0PHP#_"!_P(<,1PX'`?P-Q""(A'"@<`O"K_Y?F +M^+5\3.%L`3'A9``H;=']]RSZ"O">_N!Z`"4`*!/0('M!'"%S`2@.V?WW9?@& +M'"5S`2$`(.5R!?"+^P4@`?!N^3`<_?==^&M,8'L`*!30)ARP>T$![X`5@24@!:``I"=$!(`3P +M&O@`*`710TD&(`AP]V(`X`5@`?!2^3A*U70W2I!]01R1=00H&=D`(#U+`"&, +M`!Q99"P"V0$P``8`#@$Q""GUVP`DH0`!-`@L75#ZVP(H`MD!(-!U`.#5=95U +M)TH0?4$<$74!*!G9`"0#X`4L$-`&+`[0*TF@``I8`"H(T2`@`H`=`+\#O[^+T``.@(```("@``U`P``"0S`,!(PP$`T"8`P!`W`L#01P$` +M``P`@$!0`L!P1`$`1%`"P+10`L"44`+`*',"P/BU!?#H_PGP:_H7(4D"2D@/ +M\.SX24]*30`F`2(Y'``@_/>F_P0<^-#@!`+5`"#_]]7^H``M21(`_",^0`H +M!-`92D%H46``(0%@@+T`(@$<%4B`M4!H`_">^8"]$DB`M4!H`_"@^8"]$+4/ +M3&!H`"@'VP/PF/E@:`/PF?D`(,!#8&`0O8"U`2```_WWS_B`O8"U#O!+_H"] +M2,,!`/__``#L$P+`&3P``/`E`,!#0B!0/\CR3/<2EE###*.&#$<_S&! +M,=E*CF(2>-E,_R"3`!H90#K5:P$P36+23=PU71E`/>UKTFNJ&A($$@P`)8)" +M`M,(8LUB$."`&@ACR4@W'/\WS#`8&+$W"F+/8D`XP&M(8XAJ@!B(8\UC,!S_ +M,,5)H3#(8\-*0#+0:(D-B$/08,!+3#,8:#TA"0((0QA@T&A`!/S4_/='_C<< +M_S?!-P"0O8!6X!0A04.-&?\U0`&$&0$U(!P/\`;]`"A-VF%Y`"`(*0'1`2!@ +M<:Q)"7@$*0#1`3!A>0#PYO\!D``H!-$!\"GX`?!FF'RR`0```(0]`````@`` +M/*4J0RCX-^`T(0&8#O"$_P&8-#`!D"A@(!P/\./\0`!`""$<#_#T^"`<%#`/ +M\-K\FDF;2@EXB0")&$`YR&-C>R![&P(80VA@`9CH8"`<"#`/\,C\J&``("AA +MN(@!*`73%"-80X`9!#7`,,5CN(@!,+B`N(@(**73`)C\]^G]N(@`*`[0`2`" +MD(-)`""(8(9)@TH(8(%(`'B``(`80#C`:SA@`IC^O7Q(_R,`>,DS>DE80PPQ +M0!C_,'I)!3#(8WE*0#+0:(D-B$/08'9*3#(0:#TA"0((0Q!@<$=R24`QR&A` +M!/S4<$=L2'"U`'C_(\DS:4E80PPQ01@+'/\SP3,8'$`X'&A":@`EE$(%V:(: +M`F)":D%B@F(3X$%B8$R"8B1X7$X::,PVI`"D&4`\Y&NB0@;9$AL"8T)KA&N" +M8T1C`.#%8O\Q5TBA,<%C5DI`,M!HD0V(0]!@4TQ,-"!H/2$)`@A#(�:$`$ +M_-1029B("FB`&`A@<+WXM1<<'AP-'`0!L"&$,!!XH/`-$! +M)00M!MB)#P(I$]$`!@`/""@/T0`N`="X-C9H(!P@,$-X`'@Z'!L"&$,!!PD/ +M(!P*\/GY,QPZ'"D<(!P+\$_Y^+VPM35,`"4@>``H!]`-\)+^(7@!*0'1,4D( +M8"5P,4P@>``H!]`.\!?Y(7@%*WC``0```(`_`````@``R$V4_@$I`=$M20A@ +M)7"PO?"U#QP4'`0PA[`&D`_PY/LH204!L"&4,)!XD/<=`` +M+&_0NR$)72%*$7`(*6G2`:-;7%L`GT0#965E/64]/28<0#8PBX$'7-7`!(`. +M(1P#\&3Z`"A5T`:8#_"Y^T-X`'@QBQL"&$/*!`@X``22#@`,203+#P"2P>`` +M`#`F`,"\4P#`/%``P(@/`,!D#P#``.@`@!@T`,"$#P#`I3X`P*P^`,"D/@#` +MJ#X`P+!-`,`=)@#`@7D_!C\.S@&MXH"`;`AE#%#D`D0-;G"`"62D<(#$H'`WPK_\"(/-)`"X(<`W0(!R@,(&) +M`3$)!`D,@8$#T8`TH&H!,*!B![#PO2``$B&P(80Q`X +M`00K'`&2(APH,PD,*!P`EPWPF?P"(-1)'N``+LS0`"C*T2$<`_"#^0`HQ=`& +MF`_P]/IR6`9>`0```'Q!`````@``+1K)^4-X`'@`(AL"&$,(.``$``R`-`"2 +MXWHI'"0Q`AP('PWP@?[$20(@"'"MY_BU#AP$'!<<_/<*_`4<__?/_@`L!-`Z +M'#$<(!S_]^/^*!S\]P+\^+WXM04"P<+#0;`AE#"0>)#P(I +MLTH%T8!YP`<"U2$<$!P!X"$<$!T.\,?^KD@!>``I!M"M2QEH`2(10QE@`"$! +M<"`<#_"C^@$P0W@&>&`G&P(>0[Y#!G`S"D-PI$B`>P,H"=$@'`_PDOJ^0S$< +M(#%!<`L*@W`(X`(H!M$@'`_PAOJ^0T9P,PJ#<"@<'#`$'`_P??H!(0D#B$,A +M'`[PC?[XO9-)2&!P1Y)(0&AP1_"UF[``(`B0C4B-21`P&I`",!F0"C@6D`0X +M0#$8D160`",$DQPP$#$4D"`X$Y`7D0$B`R"$2?SWT_L$'(-(`(L4*`O1&)E( +M>0(H!]&`2E!H0`0#U%!HT0$(0U!@(!P$\.?[`"@"T`#P=/WAYR`<`/"@_AJ8 +M8!Y$#H;`AA#P`?5U1.8@WM`>QL"&$.`!L[5<$D!(`AW;TD$(PMP`"`' +MD/_WJO\`*!S0!/"?_0`H9-#_]T'\`"@4T1F8#_`0^AB9`"0)>B,<`)$3F8I[ +MS7L!'"@<#?"=^A.8@'O\]Z3_6$A$8`B8`2@>T5Q(`6E`:8%"`=`RO9E:`0`` +M`'A#`````@``V?)W1`#P+?T`\"K]__=K_0>8`"@%T`>8!ID%F@2;__>P_?_W +M9OW_]WW\`2@"T?_W0/T6X``@$^#_]W3\`"AQT/_W-_W_]T_]0DD!(@AX4$`( +M(!X&P(80P`'@`\"*`;1$9@/\";Y!QR`><`'4=4@'/_W5/X1F`_P'/F! +M>,-X&P(90PH'D@]#T0D&"0\%*3_1%YD'',E[B0<9U.I)"6@`*0/0.1P@,0`@ +M!N`!'!(Q`"`*\"O^.1P@,07P`?L!D!&8#_#3(;L>`0```'1%`````@``P`JI +M-/?X`9D!<`L*0W`'X`%X0W@;`AE###DL,`;P@/T"(-I)('`(:$EH.AP@,@,$ +M&PX0<%-P`P(;#I-P``[0<`@$``X1<5!Q"`(`#I!Q"`[0<9?A$Y@/\,WX`2AF +MT2$<+#$0D`AX_R$;`AA#^3&(0P"K&7F)!LD-"$-`"$``!"&( +M0PZ9`PH(<$MP"/"`^@Z9&"*+>$EX@`<;`AE#D4/`#@A##ID#"DAPBW`/F`_P +MA_@!*`31`*L8>0$H"-`#X`"K&'D$*`/0`*L8>?\P&'$!-S\&/PX$+\#3#Y@/ +M\'#X`2@*T9U)_R((>TM[^3(;`AA#D$,(,`G@P."82?\B"'M+>_DR&P(80Y!# +M*#`(0`M`9$3T1&8#_!-^`8P`"$$\"#_!1P*T1280W@` +M>!L"&$-!!\D/@`?`#P"1"N!H>P3PN_\!!@D.`)%H>P3PR/\`!@`.`)G`!\D' +M20\-D8$/#)%[2;@`01@+D0AX2W@!(1L"&$,(0P(AB$,,F0A#_R'Y,8A#`9F) +M!LD-"$,$(8A##9D(0PN9`PH(<$MP"/#S^0N9&"*+>$EX@`<;`AE#D4/`#@A# +M"YD#"DAPBW`!F0`I!]`F8H6>`0```'!'`````@``-.(7B0&9("D$T`&9_S$) +M!@D.`9$!-S\&/PX$+\+374K_(5-[$'OY,1L"&$.(0Q!S`PI3U1)&P(80XA""]E03Q:8#O#0__E[.WP;`AE#"0<)#T`:`N`6 +MF`[PQ?\!,"!P(!P<,`<<#O"^_P$A"0.(0SD<#O#.^T1)"&@!(A!#"&`0F`[P +ML/\!>#L=&7)!>%ER"9D$*6_2.D\X>#!W>'AP=VG@`"T2T;@=`"$$\'/^!1P, +MT0`A,B`!52$<"B`@,8AR`PK+WH; +M`AA#P`<*U'MX.'A@(1L"&$.(0P`A"$,X<`,*>W`P'`[P`O\!(A!#,1P.\!/[ +M`"UL.Y/1`0```&Q)`````@``\_L5U`C1$9@.\/C^!C`!(03PR_T%'!K0+HEH +MB@`'@`\!*"#1.'I[>AL"&$/!!QK5P`6`#@!L"&$-` +M!@G5.'A[>"H<&P(80P$'"0\@'/_WV?O%28AL`3"(9`>8`"@%T`>8!ID%F@2; +M__=T^@F9!Y0%E@25!I$#F`$P``0`#`.0$IB`B`.9B$(`V>GD^_?*_P0<__>/ +M^B`<^_?)_PB8`"@`T)#D!Y@`*`70!Y@&F06:!)O_]T_Z__<%^H3DK$D(>/\P +M``8`#@AP`-!9Y``DJ$D`(`QW!/#'_QOD?+4#(/OWVO^D2`+PAOVB32AB`O"K +M_BACH$@@,`+P??UH8@+PH_YH8YQ(8#`"\'7]J&*:2$`P`O!P_>AB`R#\]Q7X +M?2')``4B`9(`(@"1EDD#().C^_>B_@`H`=`!('R]!_#:_XQ.`"0X-BAJ`O"? +M_:$``305+'!0]]L%X&AJ`O"6_:$`<%`!-"4L]]L`)*``,%@"\.S]`30E+/C; +M`"#>YQ"U?4P@:@+P8?XA:XA"!]%@:@+P6_YA:XA"`=$!(!"]`"`0O71(@+4` +M:@+P3_Z`O8"U`R#[]Z'^@+V`M0`H!=`!'`,@^_=U_P`@@+T/>.QV`0```&A+ +M`````@``!Q.K:0$@@+WXM08<;4@/'`!X-#<-'``D`"@3T`PB,1QI2`'P7_X! +M\'[^9T@`(08P!/"]_``H!=``B0GPL/P`*`#0`20A'#@<`/#*^`0<`"A>20?1 +MB&@!,(A@4TE(;`$P2&0/X%I*`"`08(A@64D(8#0A(!P.\%[X-#0J'#$<(!P! +M\##^(!SXO?BU!1S[]^G^!AP`)``G1DF@`#@Q"%@!(8D'!2+2`T$8D4(/V`$< +M(#&*>LMZ&P(:0ZI"!]$R(A=4""**AL" +M&$,%*`'0!B@6T2!X_B@!T/\H$=$@'#`P@G@!,A(&$@Z"<`(J"-D((HIR$PK+ +M/_X"]L+4$'``H$TT, +MT2P@$DI(0X`8@&H`*`70!2D#T`8I`=!->.N;`0```&1-`````@``'NMU&2AH +M#N`-2`!H`O"$_``H"M$H:`+P?_P`*`71`BP#T0A(`&@"\'?\L+V`M0+PK/R` +MO7!'<$?@4P#`*',"P-Q3`,#H4P#`H"%+`%D8`"!)"`#@`3"!0OS8<$=!!DD/ +M@+4%T`$<`R#[]T'^`""`O0$@@+UP1_"US$J%L!%H`Y$0:5=I`"3*2\I-`"$! +MKLE-,54I50$T""SXT^O@.`8#F0`."$,-(0D"`"4(0P!H`"AIT,%)"$`)!T08 +M(!PD,`20#O"@_`8&-@XP!S?4(!P@,,-Z@'H;`AA#!2@*T`8H"-`L(;-*04.) +M&(EJ`"D$T'$'`M6R2H$`55@`+1+0!2@!T`8H&]%H>[@CK4E80T$8#1P,-2@< +M#O!V_`$P*1P.\(CX#.`@'0[P;OP&,``A!/!!^P`H`]!!>R`MR"%4_X"PC +MU0`FZWJH>@`A&P)T[H>*`0```&!/`````@``Z@/+I!A#`:H15*IZZWH!J!L" +M&D,1&"`<`_#._>MZJ'H!J1L"&$,(7``H$=#_]P[_`38(+N+3"^!P!PG4`"`R +M(0A5"B"H<@,*ZW(@'/_W\/X`(`29#?#N_PG@`"`R(0A5"B"H<@,*ZW(@'/_W +MX?XX'4]*QP40:?\-N$(`T!#G3$I7851(`'@`*"70^_?N_`4<""1)3@`G`:@` +M&1`XP'L!*`O1A2```4Q)8$-`&(4A"0%`&@\A`_#.^0C@,!D0.,%[`2D#T<=S +M8!X#\$/[`3SBT2@<^_?/_`6P\+WXM00?-Y&P(80\`' +M]M4`+`K1N'K[>AL"&$.!!L`&P`_)#P@8`-`!)"M-*'A!'"EP"B@0V:AH`1PI +M.2((ABKN>,M2,A"0$>(@&2`"(`D1%)`2`.H_OW_/H`*`/1!DG(8`AA +MC+T!(/SG@+4!(/OW+_N`O0``4$T`P`0T`,`<)@#``*8`@$SQ`0!`I`"`261L +M90````!940``\+7M2`0A`6'L2>U/06%+(4D!"QS_.X%A.3O#80(A`6(`(0$B +M$@-'8H%BPF+C2TLFY$UV`0%CS``]4>098V";&0$Q`2GWV^!,R0!\4,D92V#9 +M208C0#&+8=Q+I`W+80QBVTP!(DQB"B2,8M5,$@,0-,QB2F,`)-).#&,`(M5- +M$#:,8]0`-5&D&6-@`21D`AL9`3()*O7;T$S2`+10DAE38`4B0F/-2@,C&P*" +M8\-CS$OD#`M@`B-+8,%+P4T0.XM@`"/+8`QA2V$`(<9,$#W+`.Q06QE:8`,C +M&P+2&`$Q`2GUV[E+R0!K4$D92F"R2@,A@#K19KQ)L$N6:O1<`0```%A3```` +M`@``8/#2J1%G@#O4(EIG`2)2`YIG:2+:9ZU,`2,`(F`T&P-"8(-@!&#"8+-+ +M`"#"`*-0$AE18-0Q`3!H*/?;KTK``")0HDI@,H`806"M2``B`F"K24`QS6$" +M(XMAJ4K##$`Z4V)/80(D#&$38DYB"B0,8I-BEDE@,4%C:2$!8Q-AH4D`((A@ +MGDEC(,`Y"&*=2<`'0#D(88AA2&$(8/"]-N?_M0P<'AQ+>`EXA;`;`AE#`9'A +M>"-Y`"4;`AE#2086U0`N%-"[(8E=D$H''!%P(AP@,@.2!#(@-P@I!))ST@&C +M6UQ;`)]$!@-O;T-O0T,`(`FP\+TP'$`P`I``BX`'8M4#F()*P7B-"0%X$7!! +M>%%P@'B0"-Y&P(80T`'`R#[]U'[`I@`E`"+ +M!)E`!,,/`9@D.`($$@PX'`SP:OT%'`,@^_=O^P`M!=$@>&-X&P(80P@X=>#[ +M]X7Z!"4_X*!YQ0?M#_[W1OTP'%`P`"T#T8%Z`2D_T0+@P7H!*3O1,AP`(2@< +M`O`9^``H+=`#(/OW&OL!FCD<*#H@'`>;#/!L_@4<`R#[]S[[`"T3T>!X(WD; +M`AA#`.!)X$`'!=0@>&-X&P(80Q0X/.`@>&-X&P(80PPX-N#[]T;Z*0>)#P70 +M_R%(2@$QT6(#X&/@J0<`U0(E^_=!1=Y-`0```%15`````@``>0@,V3WZ*N"! +M>@(I`M#`>@(H)M$Q'"@<`?"__P4<4=`#(/OWV?H'FBL<`)(!FCD<,#H@'`SP +ME?L%'`,@^_?[^@`M`=!K'`G1('AC>``E&P(80Q`X('`#"F-P`.`0)2@<1^<` +M+2[0`"@LT0.8*$K!>(T)`7@1<$%X47"`>)!P_O?"_#$<*!P!\$__`"@:T.!X +M(WD;`AA#0`<#(/OWG?H`E(`V\WH!F`29)#@"!!(,.!P,\+C\!1P#(/OWO?H` +M+0#04N=+YRC@``!D$0+`<&\!P#P-`L``E@"`@((`@/B``<`4!````"``@$!! +M`(!(9`'`*`@````P`(`,EP'`0`T`@````H#`HP"`P*0`@!TF`,!\-@#```P` +M@`$@ZN;PM96P`*L`(1ER)"/W25A#1!C@:0`%P`V@86%IP``/&'YH`2`.\-#Y +M\4D(:`$P"&"P>/-X[TD;`AA#B$($T.Y)2&D!,$AA?N``(+!P\'`P'"`P!Y`Q +MC`$@0`,@.0B1@4)QV`B8`"ANT`>8!9##>(!X&P(80P$'B0\!*1K1``8`#PHH +M`]$%F`3P8OA)#P(I"M$`!@`/ +M""@&T7-[,'NZBQ(D`0```%!7`````@``C>"R9!L"&$,H=`,*:W0H?&M\&P(8 +M0T`'0`\$D,%(P'N`!A+4!9@!(1(P`_#,_@.0*!P(,`WP\/\"J@"2!)H'F0.; +M__9")H!\!GXL'D'\#SYL4D(7`#@D^#H<3%YR0<# +MU`(H`=$8(.AQ\'EHBAWL7TH'!0P$Y`4D0WPL?\`"A29``((0Q.9#?#`^W%]*!P5 +M,!&0$I$-\*/_``H2F0`""$,1F0WPLOLQ?2@<%C`/D!"1#?"5_P`*$)D``@A# +M#YD-\*3[L7XH'!@P#9`.D0WPA_\`"@Z9``((0PV9#?"6^W%^*!P9,`N0#)$- +M\'G_``H,F0`""$,+F0WPB/LQ?B@<&C`)D`J1#?!K_P`*"ID``@A#"9D-\'K[ +M*!P$\,[X,'ET20:0<4@@.,-Z@'H;`AA#@`8$U0680'P*>)!""-!N2`!H`"@( +MT`68P'H)>(A"`]$P'`B9!_#;^`$F-@,`(:!I]00!(SIH&P4:0"-I`3N#0@K1 +MX&@``2A#.&#C:3`0FC1`""X[A[&P(80[!Q$)@P<0,*Y?3`<%#`.D`^1#?"R_@`*#YD``@A##ID-\,'Z>7TP'!4P#)`-D0WPI/X` +M"@V9``((0PR9#?"S^CE],!P6,`J0"Y$-\);^``H+F0`""$,*F0WPI?JY?C`< +M&#`(D`F1#?"(_AC@^>#D$`+`##0`P.^^```P9`'`+C,`P`"@`("P30#`L"8` +MP$GQ`0!T)0#`%%`"P"P-`L``"@F9``((0PB9#?!]^GE^,!P9,`:0!Y$-\&#^ +M``H'F0`""$,&F0WP;_HY?C`<&C`$D`61#?!2_@`*!9D``@A#!)D-\&'Z,!P# +M\+7_\$XP:`$P,&#O3K!Z\WH;`AA#@`8-U0&8[$E`?`EXB$('T.M(`&@`*`/1 +M.!P"F0;PQO^P>O-Z&P(80X`&1M7A3AX@,6@-\-CY`2D\T0.8(#!">P$<##%7 +M&/%H`"D*T0HP#?`6_D`&!=1X>`4H*='X>2PH)M'L[<#Z`0```$A;`````@`` +MOA$.A-=(`'@`*"31UDD)($AC`B$`(`GPU?\/(0`@"?#<_P(A`2`)\,W_#R$! +M(`GPU/\"(0,@"?#%_P\A`R`)\,S_R4D6($`Q"&!(8,A@`2``X``@L&`P:`$P +M,&`!(A(#`"&@:=<$`28K:#8%,T`F:0$^AD(*T>!H``$X0RA@Y6D0'*A#X&%E +M:0`@"N"F:`$P-@$^0RY@YFD(-0@V]@3V#.9A`"L#T2-I`3&+0MO2`2`1L/"] +M`"(!)Z%I_P5I"0.I0^%A96D` +M(0K@IF@!,38!/D,N8.9I"#4(-O8$]@SF80`KV-$C:0$RDT+:TM/GF$M34-+G +M\+5!:8)I`2?4``D9/P,`(_X$`24,:"T%+$`%:0$]E4(*T<)H$@$R0PI@PFDY +M')%#P6%!:0`B"N"%:`$R+0$U0PU@Q6D(->T$[0S%80@Q`"P#T01I`3.<0MO2 +M\+WXM8!.`"0`)Z``A1FH:@`H`M`!\!/]KV(!-!`L]-,W<'>$^+WPM<%I`"8) +M!$,D4/!84%I`"(,X(-H`23D!QL!(T,+8,-I`3((,]L$VPS#80@QQ&D# +M:B4%'P4_#2T-O4+2T0$E+0/J5/,=`0```$1=`````@``I^G0]"Q`*T"<0LS0 +M@F$P'/"]\+6OL`"K`"$9=P`B!)(D(D)#5$@2&"Z23$I`.A,<0#-@,H`P*Y`L +MDBV3`"0`(`B0`"$*E`"K&7<%D`.0+I@.D/_WGO\`*`+1!)@OL/"]#IB`:0Z9 +MP`!):0@816@!(`V5#?`__D%)"&@!,`A@#9T_2:AXZW@;`AA#B$)CT0`@J'#H +M<`V?`2`@-SJ(0`,@.@R2@D)7V`R:`"I4T`R:/AP0!``,*I`X@/AX.WD!(1L" +M&$/`!S@<##`#\(/[`Y#P>#-Y&P(80T$&6-4#F2E*L#')>A%P!"D&T``P9`'`D$T`P$GQ`0!T)0#`_#,`P$"F`(``,`"` +ME!("P.00`L`,-`#`[[X``!TF`,#<4P#`[$D!(`AP#IB`:`SPJ_X#\)G]!!Q( +MT+!X\W@;`AA#``8`#P@H"=%K>RA[&P(80R!T`PI`!T`/8W0*D`28`3`$D/!X +M,WD;`AA#0`9DU0$@")`@'`@P&Y`-\!_\!ZH`D@J:.1P#F__W7_H`*''0`B@7 +MT1N8#?`WPXN<`0```$!?`````@``4P%N21'\("(Y'`#P1_P!X(;@$N`@("!Q +M`PIC<8`@('""(*!P`"`@=&!T(!P#\&G]Q4F(;@$PB&9TX,1*4(P!F8A")=$0 +M>`*9`3"(0B#1`ID&F(D`B1B(8@*9$7`"F2J820")&$B`\'@S>1L"&$-`!UC4 +MMT@`>``H#M!K>RA[&P(80P,*('1C=$$'20\#F@7@!I@!\(S[0^`#F@`A,!P# +M\/O[`"#-X-S@`_`4_00<-]`)F*9)@`!`&"F0A6H)F"\<0`!`&$"((#<^'"B$ +MN'C[>!L"&$,!!XD/`BD,T0`&`."WX``/""@&T6M[*'L;`AA#('0#"F-T('QC +M?!L"&$-`!T`/"I`@'`@P*)`-\(W[!ZH`D@J:.1P#F__WS?D`*`+0__0;PU/R$20AAY8'#K>ZA[&P(80Z!Q>W@X>!L"&$,@<0,*8W&`("!P`2"@<`KP:?O@<&AZ +M('>I?2`<%#`FD">1#?!,^P`*)YD``@A#)ID,\%O_:7T@'!4P))`ED0WP/OL` +M"B69``((0R29#/!-_RE](!P6,"*0(Y$-\##[``HCF0`""$,BF0SP/_^I?B`< +M&#`@D"&1#?`B^P`*(9D``@A#()D,\#'_:7X@'!DP'I`?D0WP%/M\`J@;`0`` +M`#QA`````@``6]Z?E``*'YD``@A#'ID,\"/_*7X@'!HP')`=D0WP!OL`"AV9 +M``((0QR9#/`5_R`<`_!I_"F8@&H!\+OZ*9@`(8%B"9@!,`*9"9"(0@#8+>![>#AX&P(80R!Q`PIC<0[@>W@X>!L"&$,@<0,*(!P(,&-Q#?#8^CD< +M#)H`\`[[*'D+D"V8PWJ`>AL"&$.`!@35,4EP?`EXB$((T"](`&@`*`C0+$GP +M>@EXB$(#T2@<#)D&\%#\#IC_]RW]!9@!*&C0+)C`>\`&*]0#F``H!]$!(3`< +M##`#\'[Y`Y``*!O0`YBP,$!Z`"@6T+!X\W@;`AA#``8`#P0H`]`,*`'0""@/ +MT6M[*'L;`AA#`PH@=&-T00=)#P.:`>`#F@`A,!P#\+OZ#TB`:/\P83"!>0`I +M&]`*20EH`"D"T0N9R0<2U0$A$>```!TF`,`@-`#`E!("P"0;PIOOU20AAY8'#K +M>ZA[&P(80Z!Q@"`@<`$@H'`*\$+ZX'!K>"AX&P(80Z!T`PKC=&AZ('>I?2`< +M%#`8D!F1#?`>^@`*&9D``@A#&)D,\"W^:7V#&M6U`0```#AC`````@``KS8A +M*2`<%3`6D!>1#?`0^@`*%YD``@A#%ID,\!_^*7T@'!8P%)`5D0WP`OH`"A69 +M``((0Q29#/`1_JE^(!P8,!*0$Y$-\/3Y``H3F0`""$,2F0SP`_YI?B`<&3`0 +MD!&1#?#F^0`*$9D``@A#$)D,\/7]*7X@'!HP!1P/D0WPV/D`"@^9``((0RD< +M#/#G_0#P*OH+\&#\!1P(F``H!]`@'`@P#?#%^2`B.1P`\/OY`"T"T2`<`_`I +M^RN8L4F`:`AAPN3XM:](!!S`-`4<@#4!(@(@K4GZ]RS[!ASXT'`'2M6G2(`P +M`&D`#"AC`"<2X*=(`'@`*`K0ID@!(4%A@6(`(<%B_R&B2(DQ0#`!8`0@__<3 +M^0$WZ6HH:PH%`P4;#1(-FD+DT0$B$@,10!!`@4+>T)-)Z&H(8I=)"&C`&0A@ +M`"\)T``@`_#A^I-(`"&32@%@4&@!,%!@DDB23SAAD4E`.4AHP`4'U8U*$&D! +M,!!ACDA(8(Y(.&'P!SG5@4E`,0AK``SH8`,@__=*_'U*J6@188!*$6@)&!%@ +M`"@"T``@`_"T^H`@?T_`0SAA=4FH:$`Q"6L)#`H%`P4;#1(-FD($T?H,$4`0 +M0(%"`]$!(0(@^O>D^G1)0#E(:``'"-5O2A!I`3`080@@P$-(8'!(.&&P!SG5 +M8TB`,(!I``Q@80`G!.`,\UI``0```#1E`````@``ML[_60CP4_K_]P[Z`3R_7TAR0`" +M(@&2`"(`D1=)!"`4H_KW@_@`*`#1C+T!(/SG@+4$(/KWN?B`O8"U`"@%T`$< +M`B"TI64@`0```#!G`````@``0B9!Y/KWC?D`(("]`2"`O?BU"TX`)``GH`"% +M&:AJ`"@"T`#PS/^O8@$T$"STTS=P=X3XO4U!0R!2>```]V,``)02`L"PM0T< +M`0,(&($-04`(`4`800I!0(@"0!B!"$%`R`%`&`$+2$`-\,KZ7R')!0WP_/H$ +M'"@<#?#"^B$<#?#U^@WPC?JPO0LP`I_-$Z22`Q"'((>7!'-T@( +M(0&`@B$!<3A(`(C`!C=)`=4"(`#@`R`(<'!'-$HPM11X`1PS2^("!*F0$10QI*$8$93`,A(#0A<0$&`@02#@D. +M`BL$T`,K!-$``@`.('$B<2%Q('D0O1"U`AP,'/_W7_^D`0`J"=$_(/_W:O^` +M!H`.($,!!@D./R`(X$`@__=@_X`&@`X@0P$&"0Y`(/_W3?\0O0#H`(``P0"` +M?2P`P`"C`(``(`"`Y!,"P`($``#XM>Q)`"#(8!@Q"'#J3@`E`"1(2_@$U`302+._3^+UPM=].`"4`).``,%@`*`/0 +M*!SY]XW_`34!-!(L]--PO?BUV$@%:`$DUD\!)C`?\@!0/5!"$"(/GW<__@!`?5.&A`(2AA`B#Y]VO_JT@P82`&!=4X:`$A +M*&$"(/GW8?^G2*A/`&@`*!/0X``#U0?P(/^E2#!A(`$+U:1)`"`):``I`=&B +M2(!J``8`#@3P'O@W82`$`]40(0,@^?="_YA(`&@`*`+1(`$`U3=AX`>93PK5 +M>&L$(0$P>&-H:`A#:&!`(0,@^?'1+)#.(`!I0A4I`,I)I%#,:4(-* +M0#+2:10S&E"`2D`R$FH4,QI02!PH<`0I`=D`("AP("$#(/GW^/X$X"$@>$G` +M`H`Y"&)@!PG5:&@0(0A#:&"X:@$PN&($(,!#,&$@!PK5:&@@(0A#:&#X:A`A +M`3#X8@(@^??9_N`&$=5H:$`A"$-H8#AK!"$!,#AC9$B`.`%@`/#%_?[WF?L0 +M(,!#,&&@!A'5:&B`(0A#:&!X:@0A`3!X8EI(@#@!8`#PL?W^]X7[("#`0S!A +MH`0$U?\A`3$"(/GWJOYH:``H`]`!(,`#^O=<^#U)"#$(:`$BD@(00PA@^+W_ +M(#E)`3#(8`(@<$=<3CVX`0```"1M`````@``:"\C=("U`O!%_C5*"#(0:/\A +M`3$(0Q!@@+TQ2`!H`B!P1W!'_K4N2$`FQF!`3WAJ!?#,_P*I/2`)\$O]`:D[ +M(`GP1_T`JQAZ&GJ`(0A`?R&10RM,"$-V/"$<(#'+>8EY``8;`AE#`!:)!@#5 +M!3!`0@`&5B')0P`6B$("W"`<>C!>X`$<5C$$*0+8(!Q^,%?@`1Q1,00I`M@@ +M'((P4.`!'$PQ!"D"V"`&()20AH,$,(8`(@_KUP1P9)@"`(.!@HV"*8,M@`2$!(/GW>OT`(!"]L+4%'`$@^?>+_2!) +M'T@@,=R0$@^?=^_0`@L+V`M?GW7OZ`O1!)``%`&'!' +M@+7Y]Y'^@+T0M00<`2#Y]U[]"4D@`4`8@6@`*0G1P6@`*0;1!4H@,M%HB� +M8,%@@F`!(/GW6/T0O5P4`L!PM0`@BTH`)($``3`**%10^M.(38=)*#V&3B@< +M4#D-810P/#[P8"AAZ6`&(2@=+&`+\';^+6)L808A*!P8,&YB"_!N_G"]@+7_ +M]]K_`2$"(/GW!OUW20$@5#D(<``@@+W.Y_BU%AP$(@4<#!R!'&A&"_"H_@HA +M`)C_][[[,&!M28``"%@@8``H%=`$,`0B*1P+\!K^`"@*T0?@(&`$,`0B*1P+ +M\!'^`"@!T0(@^+T@:`!I`"CQT00@^.=\M08<`"``D%Q(#!Q4.`!X`"@!T0,@ +M?+T"(/GWW/P!JFE&(!S_]\#_!"@$T`(@^???_`4@[^=035!)4#TH:3PYB$(D +MT`0P!B(A'`OP7OXI:0`B#F``F``H"M$`D0AI*&'%8,I@"F$!F$1*@``14`G@ +M`6$I:0EI*6'-8`%IR&``:0"0`F$"(/GWL_P`(,/G`B#Y]Z[\!R"^YWRU!1P` +M(`"0-D@,'%0X`'@`*`'1`R!\O0(@^?>0_`&J:48@'/_W=/\$'`(H!-`"(/GW +MDOP@'.[G`)@I3@!H4#XH8`"8,FDF3=!@,&$!:0`I!=%`5K<[`0```!QQ```` +M`@``XMPZ><-H`"L"T0&;FP`$X`&;FP#L6(1"`='I4`/@PV@`*P#0&6$!:0`I +M`=##:,M@`F'&8`(@^?=H_`$@Q.?XM0(@^?=5_!-/`":U`!?@(&C_]^?^(&C_ +M]^C^(&D`*`+1`"%Y40/@`"'!8"!I>%$)25`Y"&G$8.%@"&D@80QA?%D`+.31 +M`38*+M_3`B#Y]SW\^+T``/`4`L!PM04<`2$Z,`+PJ_D$'"70Z4B`(H-[07L; +M`AE#D4-!.MX&P(80P`H%M`!*`'0`B@1T2@=!1P,\+KZ``<`)@`H +M`=I9(`95*!P,\+'Z0`>`#P'04#1FP&8&P(: +M0PXC6$,`&5LP,1RNX"$.MX&P(80P#@>N``!@`.B'(I>VM[&P(90P`I<=`!*"C1$"(Q'"`<7#`+\/G\ +M.!P,\`KZ@`$+U0@B(!QL,`.9"_#N_`@B(!QT,`29"_#H_#@<#/#Y^4`&4]4% +MF`SP]/F<(0A1!II3>1!Y&P(80Z`T((!&X`(H1-$0(C$<(!Q<,%'@(!Q0,`$A +M07+K>*EX&P(90PD&"0[!<@*1")@,\-3Y`R@!V0`@`>"`!X`/!YD(<2I[:WL; +M`AI#`"HBT`*9`2DJT1`B,1P@''PP"_"I_#@<#/"Z^8`!"]4((B`QL"&$,-*`/1`2&`-.%R`N``((`TX'(`(`NP\+TPM0`I#-"+($!<`"@! +MT0@C`N`!*`31$",`(-P>-DH'X``@,+T+&'`S&WL5&`$PZW"@0O?3`2`PO3"U +M`"D!T0`@,+U8(E):4@0!U`@D`.`0)`XC6$-`&``BXQXG307@@1A0,"#8<9`@&'*@ +M(%AR`""8<@20`Y5IBR`<$#``&T`8$#``"0`!`)`0(B`<`:D+\)[[KHH!/@S@ +M`)@G'"08$"(@'`&I"_"3^R$<##$X'`OPN/P!/O#2*!PL8S^0`M`M`H'!`P<+T`('"]L+4$'`#PS/C@B@`H%=`!.``$``S@ +M@B&+B$(`TB"#)6DH'`PP#/!B^"!A`2#H<:AQ`"T"T"@<$#"PO0`@L+T!'!`Y +M$+4*:%U+6TR:0@/0('@!,"!P">!B:)%"!M.B:)%"`]@*'!`R@D(!T``@$+T( +M'!"]<+7_]^/_!!P(T"`<"#`,\#3X!1P`\(OX`"@!T`$@<+V@>0`H!='GSB*`3#H@@`@H'$P'/GW0_D`('"]L+7_]['_!!P(T"`< +M"#`,\`+X!1P`\%GX`"@!T`$@L+V@>0`H!=$N20PQ"&@!,`A@].?@>?\P``8` +M#N!Q"M$A'`PQ*&D+\/W[+&'HB@$PZ((`(*!Q`""PO1"U__>%_P0<$-`@'`@P +M"_#6_P#P+O@`*`C1^?%Y`"D!T`$QX7'Y]__X$+T0M00<`/`>^``H`=`` +M(!"]((L0O1"U!!P`\!3X`"@!T``@$+W@BA"]$#B">1%#@7%P1Q`X@GF*0X)Q +M<$<0.(!Y"$!P1P5)2FB00@+3B6B(0@'9`2!P1P`@<$<``!@5`L`2-%9X@+4! +M8`$@"?`&^("][TCP20A@<$?XM>Y.@"0@-C<=`"7K2"@P!&`!(`CP]?\]8`$@ +M"/#Q_S5@`2`(\.W__R!!,`$TA$+LT^-(16#_]]__^+WXM0`DA2```=])8$-% +M&(4A"0$H'`OP(/I8(-Q)8$-!&`$@P`(H&$$B4@$!80`AJA@1_#`0````QY`````@`` +M/#WF5%(`B5J)!LL-G$:!`'$82W@*>`$P&P(:0_\C^3.:0V-&&D,*$]X2AP;`A]#&",?0T]P.PJ+<$MX#W@`!AL"'T,"(Y]#?PA_``0CGT,/<#L* +M2W!3>!=X`C$;`A]#@".?0Q=P.PI3<`J(`2/;`YI#``X"*`J`QM-QB`\B$@*1 +M0YL)R1AQ@/&(D4,#(I("B1CQ@"@<"_#>_@0A`7`+"D-P*!P+\-?^`C!#>`9X +M#"$;`AY#CD,$-@9P,PI#<"@<"_#)_O`BED,Q'(`Q@7`+"L-P*!P+\+_^CTD, +M,`8B"6@+\*7Y`30D!B0.""P`TD;G^+V)2@`H&M&`2X`[&&M9:\D%P`7`#``B_S#H +M<")S(6@('"`PPWJ`>AL"&$,'*`;9#"@$TEU)"&@!,`A@$.`D,0`@"_!D^B%H +M"2`@,8AR`PK+$-$&$$@0`$F&#![`"@=T#@<__>K_P$G_P(`(3%SX!F!8@%I#APD-C`<"_`3 +M_D`(0``Q'`OP)/H`(``A(A@!,``&TAD`#@8H$7+WTR@<^/`$"E`(`!+-S1]DL: +M8QH](06@!(E('$4-!8.U) +M`2`(8,'GZ4I`.M%H`"@'T0$@P`6!0]%@$&A`"$``!^`!*`;1P`:!0]%@$&@" +M(8A#$&!P1X4C&P'?25A#0!A!(4D!0!C`>``H`=`!('!'`"!P1_>UA+`-'/CW +M>?[52@`A$6`&F84C&P'32EE#CAA!(4D!=!@A>P`I#-$!)R=S!ID`D?CW:?X` +MF0@I!M'\.?81`0````1]`````@``T2V&F0`@P$,'L/"]^/=@_OCG@R```3`8 +M`Y`'<@`@`"$#Q@/&`2')`A`^=Q@"EWA@.&`!(&!S$#%Q&``@"''X8;AAX'!@ +M<2@<##`+\`O]('$`F"D`IX +M``<;`AI#$@D2`0`/$$,(<`,*2W!H?@:9A2,;`:A*64.*&"$AB0&`!X`/41@# +M*`'1&"`(X`(H`=$/(`3@`2@!T0@@`.`$(`AS`9@`(0'PJ/L`*`+00'L#F4AR +M.!T$'`OPR/P@,$-X`7@$(AL"&4,10P%P"PI#<`*9`""(8CD<)#$*(`OPS/@@ +M'`OPL_P&,`8B`9D*\)K_[7T@'`OPJOPA,$-X`7CP(AL"&4.10RH'$@X10P%P +M"PI#<`"8;.?XM7Q-`"88/2P<*#P@:``I(-$!)S\'.$,@8`$@"/``_2!HN$,@ +M8`$@"/#Z_/\@"3`H8`$@"/#T_"@?!F`!(`CP[_QL2"`X!F`!(`CPZ?QI2,`X +M(.`!)W\'.$,@8`$@"/#?_"!HN$,@8`$@"/#9_/\@"C`H8`$@"/#3_%Y('#@& +M8`$@"/#-_%M((#@&8`$@"/#'_%A(0#`&8EQ)06(!(`CPO_SXO0`@<$=P1W!' +M<$W$8"WH"'"`RG4(DT4-[3'JC0B#1@WN,>J-"'-'#>\QZHT(8T0-\ +M#'NC0A310WQ)>XM"$-&3>%%X&P(90Y)+"08@,_,8G'@)#Z%"!-$9>P`I`=`' +M(37@`"&%(QL!ATQ+0QP9`2/;`N,8'GJU0B+11GM?>KY"'M&&>Y]ZOD(:T<9[ +MWWJ^0A;1!GP?>[Y"$M%&?%M[GD(.T9-X5G@;`AY#,P9!)G8!I!FF>!L/LT(" +MT2-[`"L$T0$Q"08)#@@IS-,(*1[0A2,;`5E#;$X!).0"B1D,&0`CHV+3>))X +M020;`AI#$@ED`0L9VH(`(H,8C1@@,QMY`3(2!BT9$@X(*JMS]-/PO?.UA;`, +M'/CW@OL!D(4@``%@0UE)`I0%G4$8`"0$-0.1*!P+\$/Z`!F`>0.9`2+2`@D9 +MB1@)>HA"-]$!-"0&)`[?Z6'L`0```/B"`````@``5OU=Z@8L[=-!(`.90`$/ +M&#A[`"@KT'UY`YP`)B@!`!D`>P`H&=$H`009`2`@P\+T!-6@&0`YX<0$@`YG``@@8`6@`*0'1!&`!X$%H +M3&!$8/AX`3#X<'A[`2@%T0*`%X#R(;`AE#$4`R`1%#`7`+"D-P(&D'<"%I`"!(<"%IB'#(<"%I$#$* +M\+[](&D$,`OPI/D#,`%X0W@((AL"&4.10PG@X*H`@+R``0`("```2!4"P#!" +M```!<`L*0W`A:20Q"R`*\*#](6D/'!PW.!P+\(3Y`2%)`PA#.1P*\)3](6D! +M(APQ$@,00PKPC?T@:2@P0W@!>!L"&4-)"$D``7`+"D-P_R/Y,YE#"!PB:2@P +M*#(0<`,*4W`@:2DP`.`.X$-X`7@8(AL"&4,10P%P"PI#<*EY(&D%\-?]`"@! +MT0`@^+VH>?!)@``*6K)"!=%`&`(P`H@!,@*`!>`.4JAY`"*``$`80H"H>>A+ +M@@`;8+T'`0```/2$`````@``3P6#FE(84H@;:)I""MGF2A!P`2#E2H`"T&*J +M>0`@D@!1&$B``2#B2:!B2&@!,$A@`2#1Y_&UB+`(F$$A20%`&`>0P(H(F@`F +M`Y`('"`X%1@L:``@!I`%D`B8!9E`&$$A20%`&(![`9``(`20`9C`!VG5`Y@& +MF4`8`04)#0*1`"QAT"!H!#`+\/7X0WX`?@*9&P(80P`)"!H!(0D#0!C!%PD- +M"1@)$PD#0!H`!``,0"A)V"!H`"<$,`OPW/A#?@!^`ID;`AA#``F(0CW1`"(B +MS^R!H`"(P,,)PZ&D!,.AA`>`)X"8<9&@`+P/0`"`X8'A@ +M`>``+*K1!)@&F0$P``8`#@20`9@!,4`(`9`)!@D.!)@&D0@H`-)VYP69`3$) +M!@D.!9$'*0#89.>!(0B:"0%1&``@"'$'F(^0:0$IB%(QL!>DE80T$8!9$`(0`D`)0! +MD4$@!9E``0\8.'L`*`71!ICX]W?Y`"`3L/"]`2`%F<`""1@0]0QC`0```/"& +M`````@``N^T])Q&1#F@`+@G0,&@$,`OP,OA#?@!^&P(80P$)!)$`(0*1!9F# +M(``!"!@0D!*8!R$``0A##Y`A(`69@`$)&!*8+",.D5Y)6$-!&`V174D,D6GA +M,&@$'`0A__=C^``H"]%221*8"'`!(%%)@`+(8E5)2&@!,$A@D^`0F`!Z`2AR +MT0`E(!T+D`N8"O#U_T`9@'D%F0$BT@))&8D8"7J(0@?00DG_(`AP04E0",AB +M`2$!D0$U+08M#@8MY=,!F0`I;]$!("!P`"!@<"$<)#$/F`KPZ/MP:``H)]`` +M:`4`$Q&P(80XA"N'D'TBM) +M@``4,4`8`6@!,0%@">`G28``%#$*6`0J`=D!(@"2`"(*4`Z9"'L"F8A"#M!P +M:``H"]``F@`J"-$#F`290!H`(4`8``4`#4`H!M,-F0$@B&$!(0&1#ID(<`N8 +M"O")_P#@UN"!>,-X&P(90PH'D@\"*@;1"08)#P@I`M&`><`'(=4`(#(A"%4A +M'`H@(#&(<@,*RW(@'/[W+_^VX,3@?!@"P,`F`,!P1`$```P`@$@5`L`H9`'` +MO(`!`"AS`L!,30#`)!4"P"4<(#4I>FMZ&P(90PJ1R`&L`0```.R(`````@``?/0_>LAB +MY4F(:`$PB&"0X`J9`2(10RER"PIKBAZ&P(80Y!#8#`H +M<@,*:W(@'#`P!Y#`>``H']`$*!/2N'F_28``"%@`*`W00'L$\"#X(1PL,0KP +M]OH!>",<(#,93^`'@`2!X:%(QL!DDI80X`8(2*2`0`A@!@!<'!' +M<$>%(QL!6D.,2S"UTQ@!(M("FA@$>!5ZK$(>T41X57JL0AK1A'B5>JQ"%M'$ +M>-5ZK$(2T01Y%7NL0@[10'E2>Y!""M%!($`!&!B">(I"!-$`>P`H`=`!(#"] +M`"`PO1"U!!P`((`L*=-A!`/5!R#_]_/]`2`A!@/5`"#_]^W]`2#A!0/5`2#_ +M]^?]`2"A!0/5`B"TW?OL`0```.B*`````@``B!R!Q__WX?T!(&$%`]4#(/_W +MV_T!("$%`]4$(/_WU?T!(.$$`-4!(*$$`-4!(!"]^+4,'!4<]_=4_P8/\QP7`A:`@<(###>H!Z +M&P(80P Author: bz Date: Mon Jun 1 18:07:38 2009 New Revision: 193241 URL: http://svn.freebsd.org/changeset/base/193241 Log: Decrement __FreeBSD_version again to 96 as we are runing out of digits and want to be conservative - so not more than one version bump per day. Discussed with: jhb, kensmith Modified: head/UPDATING head/sys/sys/param.h Modified: head/UPDATING ============================================================================== --- head/UPDATING Mon Jun 1 18:07:01 2009 (r193240) +++ head/UPDATING Mon Jun 1 18:07:38 2009 (r193241) @@ -26,7 +26,6 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. The way we are storing and accessing `routing table' entries has changed. Programs reading the FIB, like netstat, need to be re-compiled. - Bump __FreeBSD_version to 800097. 20090601: A new netisr implementation has been added for FreeBSD 8. Network Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Mon Jun 1 18:07:01 2009 (r193240) +++ head/sys/sys/param.h Mon Jun 1 18:07:38 2009 (r193241) @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 800097 /* Master, propagated to newvers */ +#define __FreeBSD_version 800096 /* Master, propagated to newvers */ #ifndef LOCORE #include From kensmith at cse.Buffalo.EDU Mon Jun 1 18:15:47 2009 From: kensmith at cse.Buffalo.EDU (Ken Smith) Date: Mon Jun 1 18:16:09 2009 Subject: svn commit: r193241 - in head: . sys/sys In-Reply-To: <200906011807.n51I7ccW086812@svn.freebsd.org> References: <200906011807.n51I7ccW086812@svn.freebsd.org> Message-ID: <1243880140.25229.23.camel@bauer.cse.buffalo.edu> On Mon, 2009-06-01 at 18:07 +0000, Bjoern A. Zeeb wrote: > Author: bz > Date: Mon Jun 1 18:07:38 2009 > New Revision: 193241 > URL: http://svn.freebsd.org/changeset/base/193241 > > Log: > Decrement __FreeBSD_version again to 96 as we are runing out of digits > and want to be conservative - so not more than one version bump per day. > > Discussed with: jhb, kensmith > > Modified: > head/UPDATING > head/sys/sys/param.h > > Modified: head/UPDATING > ============================================================================== > --- head/UPDATING Mon Jun 1 18:07:01 2009 (r193240) > +++ head/UPDATING Mon Jun 1 18:07:38 2009 (r193241) > @@ -26,7 +26,6 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. > The way we are storing and accessing `routing table' entries > has changed. Programs reading the FIB, like netstat, need to > be re-compiled. > - Bump __FreeBSD_version to 800097. > > 20090601: > A new netisr implementation has been added for FreeBSD 8. Network > > Modified: head/sys/sys/param.h > ============================================================================== > --- head/sys/sys/param.h Mon Jun 1 18:07:01 2009 (r193240) > +++ head/sys/sys/param.h Mon Jun 1 18:07:38 2009 (r193241) > @@ -57,7 +57,7 @@ > * is created, otherwise 1. > */ > #undef __FreeBSD_version > -#define __FreeBSD_version 800097 /* Master, propagated to newvers */ > +#define __FreeBSD_version 800096 /* Master, propagated to newvers */ > > #ifndef LOCORE > #include It was noted we're close to running out of numbers we can use before we hit code freeze and the branch for the release. Since we're entering code slush at the end of today in theory all changes that would warrant a bump in __FreeBSD_version are supposed to be done. But it wouldn't surprise me if we have one or two or so things that come along between now and when we hit code freeze and the branch. So we need to be a bit conservative with this. Please be sure to coordinate anything that might require a bump in __FreeBSD_version with re@ from now on. If it turns out things do come along that require bumps we'll need to "batch them up" having one bump represent several changes. Thanks. -- Ken Smith - From there to here, from here to | kensmith@cse.buffalo.edu there, funny things are everywhere. | - Theodore Geisel | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: This is a digitally signed message part Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090601/e5c8a78a/attachment-0001.pgp From imp at bsdimp.com Mon Jun 1 18:23:43 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Mon Jun 1 18:23:49 2009 Subject: svn commit: r193223 - head/bin/sh In-Reply-To: <86vdnfq1t3.fsf@ds4.des.no> References: <200906011111.n51BBkZt077175@svn.freebsd.org> <20090601.104358.-345495454.imp@bsdimp.com> <86vdnfq1t3.fsf@ds4.des.no> Message-ID: <20090601.122054.1585999559.imp@bsdimp.com> In message: <86vdnfq1t3.fsf@ds4.des.no> Dag-Erling_Sm?rgrav writes: : "M. Warner Losh" writes: : > : @@ -187,7 +187,8 @@ padvance(char **path, char *name) : > : if (*path == NULL) : > : return NULL; : > : start = *path; : > : - for (p = start ; *p && *p != ':' && *p != '%' ; p++); : > : + for (p = start; *p && *p != ':' && *p != '%'; p++) : > : + ; /* nothing */ : > : > C already has a way of saying this: : > : > for (p = start; *p && *p != ':' && *p != '%'; p++) : > continue; : : It's a matter of taste. There is plenty of precedent for : : /* nothing */ ; : : and some for : : ; /* nothing */ : : (for varying spellings of "nothing") in the tree. True. I had some experience with early static analysis tools preferred the continue form because for them it was clear that you indented to do nothing. I suppose that the state of the art has progressed since then (this was like mid 1990's). Warner From sam at FreeBSD.org Mon Jun 1 18:27:17 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Mon Jun 1 18:27:25 2009 Subject: svn commit: r193242 - in head/tools/tools: . mwl mwl/mwldebug mwl/mwlstats Message-ID: <200906011827.n51IRGZl087328@svn.freebsd.org> Author: sam Date: Mon Jun 1 18:27:16 2009 New Revision: 193242 URL: http://svn.freebsd.org/changeset/base/193242 Log: tools for mwl driver Added: head/tools/tools/mwl/ head/tools/tools/mwl/Makefile (contents, props changed) head/tools/tools/mwl/mwldebug/ head/tools/tools/mwl/mwldebug/Makefile (contents, props changed) head/tools/tools/mwl/mwldebug/mwldebug.c (contents, props changed) head/tools/tools/mwl/mwlstats/ head/tools/tools/mwl/mwlstats/Makefile (contents, props changed) head/tools/tools/mwl/mwlstats/main.c (contents, props changed) head/tools/tools/mwl/mwlstats/mwlstats.c (contents, props changed) head/tools/tools/mwl/mwlstats/mwlstats.h (contents, props changed) head/tools/tools/mwl/mwlstats/statfoo.c (contents, props changed) head/tools/tools/mwl/mwlstats/statfoo.h (contents, props changed) Modified: head/tools/tools/README Modified: head/tools/tools/README ============================================================================== --- head/tools/tools/README Mon Jun 1 18:07:38 2009 (r193241) +++ head/tools/tools/README Mon Jun 1 18:27:16 2009 (r193242) @@ -46,6 +46,7 @@ mctest A multicast test program mfc Merge a directory from HEAD to a branch where it does not already exist and other MFC related script(s). mid Create a Message-ID database for mailing lists. +mwl Tools specific to the Marvell 88W8363 support ncpus Count the number of processors npe Tools specific to the Intel IXP4XXX NPE device nxge A diagnostic tool for the nxge(4) driver Added: head/tools/tools/mwl/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/Makefile Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +SUBDIR= mwlstats mwldebug + +.include Added: head/tools/tools/mwl/mwldebug/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwldebug/Makefile Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +PROG= mwldebug +BINDIR= /usr/local/bin +NO_MAN= + +.include Added: head/tools/tools/mwl/mwldebug/mwldebug.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwldebug/mwldebug.c Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,212 @@ +/*- + * Copyright (c) 2007 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any + * redistribution must be conditioned upon including a substantially + * similar Disclaimer requirement for further binary redistribution. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGES. + * + * $FreeBSD$ + */ + +/* + * mwldebug [-i interface] flags + * (default interface is mwl0). + */ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#define N(a) (sizeof(a)/sizeof(a[0])) + +const char *progname; + +enum { + MWL_DEBUG_XMIT = 0x00000001, /* basic xmit operation */ + MWL_DEBUG_XMIT_DESC = 0x00000002, /* xmit descriptors */ + MWL_DEBUG_RECV = 0x00000004, /* basic recv operation */ + MWL_DEBUG_RECV_DESC = 0x00000008, /* recv descriptors */ + MWL_DEBUG_RESET = 0x00000010, /* reset processing */ + MWL_DEBUG_BEACON = 0x00000020, /* beacon handling */ + MWL_DEBUG_INTR = 0x00000040, /* ISR */ + MWL_DEBUG_TX_PROC = 0x00000080, /* tx ISR proc */ + MWL_DEBUG_RX_PROC = 0x00000100, /* rx ISR proc */ + MWL_DEBUG_KEYCACHE = 0x00000200, /* key cache management */ + MWL_DEBUG_STATE = 0x00000400, /* 802.11 state transitions */ + MWL_DEBUG_NODE = 0x00000800, /* node management */ + MWL_DEBUG_RECV_ALL = 0x00001000, /* trace all frames (beacons) */ + MWL_DEBUG_TSO = 0x00002000, /* TSO processing */ + MWL_DEBUG_AMPDU = 0x00004000, /* BA stream handling */ + MWL_DEBUG_ANY = 0xffffffff +}; + +static struct { + const char *name; + u_int bit; +} flags[] = { + { "xmit", MWL_DEBUG_XMIT }, + { "xmit_desc", MWL_DEBUG_XMIT_DESC }, + { "recv", MWL_DEBUG_RECV }, + { "recv_desc", MWL_DEBUG_RECV_DESC }, + { "reset", MWL_DEBUG_RESET }, + { "beacon", MWL_DEBUG_BEACON }, + { "intr", MWL_DEBUG_INTR }, + { "xmit_proc", MWL_DEBUG_TX_PROC }, + { "recv_proc", MWL_DEBUG_RX_PROC }, + { "keycache", MWL_DEBUG_KEYCACHE }, + { "state", MWL_DEBUG_STATE }, + { "node", MWL_DEBUG_NODE }, + { "recv_all", MWL_DEBUG_RECV_ALL }, + { "tso", MWL_DEBUG_TSO }, + { "ampdu", MWL_DEBUG_AMPDU }, + /* XXX these are a hack; there should be a separate sysctl knob */ + { "hal", 0x02000000 }, /* cmd-completion processing */ + { "hal2", 0x01000000 }, /* cmd submission processing */ + { "halhang", 0x04000000 }, /* disable fw hang stuff */ +}; + +static u_int +getflag(const char *name, int len) +{ + int i; + + for (i = 0; i < N(flags); i++) + if (strncasecmp(flags[i].name, name, len) == 0) + return flags[i].bit; + return 0; +} + +#if 0 +static const char * +getflagname(u_int flag) +{ + int i; + + for (i = 0; i < N(flags); i++) + if (flags[i].bit == flag) + return flags[i].name; + return "???"; +} +#endif + +static void +usage(void) +{ + int i; + + fprintf(stderr, "usage: %s [-i device] [flags]\n", progname); + fprintf(stderr, "where flags are:\n"); + for (i = 0; i < N(flags); i++) + printf("%s\n", flags[i].name); + exit(-1); +} + +int +main(int argc, char *argv[]) +{ + const char *ifname = "mwl0"; + const char *cp, *tp; + const char *sep; + int c, op, i; + u_int32_t debug, ndebug; + size_t debuglen; + char oid[256]; + + progname = argv[0]; + if (argc > 1) { + if (strcmp(argv[1], "-i") == 0) { + if (argc < 2) + errx(1, "missing interface name for -i option"); + ifname = argv[2]; + if (strncmp(ifname, "mv", 2) != 0) + errx(2, "huh, this is for mv devices?"); + argc -= 2, argv += 2; + } else if (strcmp(argv[1], "-?") == 0) + usage(); + } + + snprintf(oid, sizeof(oid), "dev.mwl.%s.debug", ifname+3); + debuglen = sizeof(debug); + if (sysctlbyname(oid, &debug, &debuglen, NULL, 0) < 0) + err(1, "sysctl-get(%s)", oid); + ndebug = debug; + for (; argc > 1; argc--, argv++) { + cp = argv[1]; + do { + u_int bit; + + if (*cp == '-') { + cp++; + op = -1; + } else if (*cp == '+') { + cp++; + op = 1; + } else + op = 0; + for (tp = cp; *tp != '\0' && *tp != '+' && *tp != '-';) + tp++; + bit = getflag(cp, tp-cp); + if (op < 0) + ndebug &= ~bit; + else if (op > 0) + ndebug |= bit; + else { + if (bit == 0) { + c = *cp; + if (isdigit(c)) + bit = strtoul(cp, NULL, 0); + else + errx(1, "unknown flag %.*s", + (int)(tp-cp), cp); + } + ndebug = bit; + } + } while (*(cp = tp) != '\0'); + } + if (debug != ndebug) { + printf("%s: 0x%x => ", oid, debug); + if (sysctlbyname(oid, NULL, NULL, &ndebug, sizeof(ndebug)) < 0) + err(1, "sysctl-set(%s)", oid); + printf("0x%x", ndebug); + debug = ndebug; + } else + printf("%s: 0x%x", oid, debug); + sep = "<"; + for (i = 0; i < N(flags); i++) + if (debug & flags[i].bit) { + printf("%s%s", sep, flags[i].name); + sep = ","; + } + printf("%s\n", *sep != '<' ? ">" : ""); + return 0; +} Added: head/tools/tools/mwl/mwlstats/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwlstats/Makefile Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,11 @@ +# $FreeBSD$ + +PROG= mwlstats +BINDIR= /usr/local/bin +NO_MAN= + +SRCS= main.c statfoo.c mwlstats.c + +.include + +CFLAGS+= -I. Added: head/tools/tools/mwl/mwlstats/main.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwlstats/main.c Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,128 @@ +/*- + * Copyright (c) 2006 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any + * redistribution must be conditioned upon including a substantially + * similar Disclaimer requirement for further binary redistribution. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGES. + * + * $FreeBSD$ + */ + +/* + * Simple Marvell-specific tool to inspect and monitor network traffic + * statistics. + * + * mwlstats [-i interface] [-l] [-o fmtstring] [interval] + * + * (default interface is mv0). If interval is specified a rolling output + * a la netstat -i is displayed every interval seconds. The format of + * the rolling display can be controlled a la ps. The -l option will + * print a list of all possible statistics for use with the -o option. + */ + +#include +#include +#include +#include +#include + +#include "mwlstats.h" + +#define S_DEFAULT \ + "input,output,txtry,txretry,txmretry,txdoneput,rxfcs,rxcrypt,rxicv,rssi,rate" + +static int signalled; + +static void +catchalarm(int signo __unused) +{ + signalled = 1; +} + +int +main(int argc, char *argv[]) +{ + struct mwlstatfoo *wf; + int c; + + wf = mwlstats_new("mwl0", S_DEFAULT); + while ((c = getopt(argc, argv, "i:lo:")) != -1) { + switch (c) { + case 'i': + wf->setifname(wf, optarg); + break; + case 'l': + wf->print_fields(wf, stdout); + return 0; + case 'o': + wf->setfmt(wf, optarg); + break; + default: + errx(-1, "usage: %s [-a] [-i ifname] [-l] [-o fmt] [interval]\n", argv[0]); + /*NOTREACHED*/ + } + } + argc -= optind; + argv += optind; + + if (argc > 0) { + u_long interval = strtoul(argv[0], NULL, 0); + int line, omask; + + if (interval < 1) + interval = 1; + signal(SIGALRM, catchalarm); + signalled = 0; + alarm(interval); + banner: + wf->print_header(wf, stdout); + line = 0; + loop: + if (line != 0) { + wf->collect_cur(wf); + wf->print_current(wf, stdout); + wf->update_tot(wf); + } else { + wf->collect_tot(wf); + wf->print_total(wf, stdout); + } + fflush(stdout); + omask = sigblock(sigmask(SIGALRM)); + if (!signalled) + sigpause(0); + sigsetmask(omask); + signalled = 0; + alarm(interval); + line++; + if (line == 21) /* XXX tty line count */ + goto banner; + else + goto loop; + /*NOTREACHED*/ + } else { + wf->collect_tot(wf); + wf->print_verbose(wf, stdout); + } + return 0; +} Added: head/tools/tools/mwl/mwlstats/mwlstats.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwlstats/mwlstats.c Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,578 @@ +/*- + * Copyright (c) 2007 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any + * redistribution must be conditioned upon including a substantially + * similar Disclaimer requirement for further binary redistribution. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGES. + * + * $FreeBSD$ + */ + +/* + * mwl statistics class. + */ +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "../../sys/net80211/ieee80211_ioctl.h" +#include "../../sys/net80211/ieee80211_radiotap.h" + +/* + * Get Hardware Statistics. + */ +struct mwl_hal_hwstats { + uint32_t TxRetrySuccesses; + uint32_t TxMultipleRetrySuccesses; + uint32_t TxFailures; + uint32_t RTSSuccesses; + uint32_t RTSFailures; + uint32_t AckFailures; + uint32_t RxDuplicateFrames; + uint32_t FCSErrorCount; + uint32_t TxWatchDogTimeouts; + uint32_t RxOverflows; + uint32_t RxFragErrors; + uint32_t RxMemErrors; + uint32_t PointerErrors; + uint32_t TxUnderflows; + uint32_t TxDone; + uint32_t TxDoneBufTryPut; + uint32_t TxDoneBufPut; + uint32_t Wait4TxBuf; + uint32_t TxAttempts; + uint32_t TxSuccesses; + uint32_t TxFragments; + uint32_t TxMulticasts; + uint32_t RxNonCtlPkts; + uint32_t RxMulticasts; + uint32_t RxUndecryptableFrames; + uint32_t RxICVErrors; + uint32_t RxExcludedFrames; +}; +#include "../../../../sys/dev/mwl/if_mwlioctl.h" + +#include "mwlstats.h" + +#define AFTER(prev) ((prev)+1) + +static const struct fmt mwlstats[] = { +#define S_INPUT 0 + { 8, "input", "input", "total frames received" }, +#define S_RX_MCAST AFTER(S_INPUT) + { 7, "rxmcast", "rxmcast", "rx multicast frames" }, +#define S_RX_NONCTL AFTER(S_RX_MCAST) + { 8, "rxnonctl", "rxnonctl" "rx non control frames" }, +#define S_RX_MGT AFTER(S_RX_NONCTL) + { 5, "rxmgt", "rxmgt", "rx management frames" }, +#define S_RX_CTL AFTER(S_RX_MGT) + { 5, "rxctl", "rxctl", "rx control frames" }, +#define S_OUTPUT AFTER(S_RX_CTL) + { 8, "output", "output", "total frames transmit" }, +#define S_TX_MCAST AFTER(S_OUTPUT) + { 7, "txmcast", "txmcast", "tx multicast frames" }, +#define S_TX_MGMT AFTER(S_TX_MCAST) + { 5, "txmgt", "txmgt", "tx management frames" }, +#define S_TX_RETRY AFTER(S_TX_MGMT) + { 7, "txretry", "txretry", "tx success with 1 retry" }, +#define S_TX_MRETRY AFTER(S_TX_RETRY) + { 8, "txmretry", "txmretry", "tx success with >1 retry" }, +#define S_TX_RTSGOOD AFTER(S_TX_MRETRY) + { 7, "rtsgood", "rtsgood", "RTS tx success" }, +#define S_TX_RTSBAD AFTER(S_TX_RTSGOOD) + { 6, "rtsbad", "rtsbad", "RTS tx failed" }, +#define S_TX_NOACK AFTER(S_TX_RTSBAD) + { 5, "noack", "noack", "tx failed because no ACK was received" }, +#define S_RX_DUPLICATE AFTER(S_TX_NOACK) + { 5, "rxdup", "rxdup", "rx discarded by f/w as dup" }, +#define S_RX_FCS AFTER(S_RX_DUPLICATE) + { 5, "rxfcs", "rxfcs", "rx discarded by f/w for bad FCS" }, +#define S_TX_WATCHDOG AFTER(S_RX_FCS) + { 7, "txwatch", "txwatch", "MAC tx hang (f/w recovery)" }, +#define S_RX_OVERFLOW AFTER(S_TX_WATCHDOG) + { 6, "rxover", "rxover", "no f/w buffer for rx" }, +#define S_RX_FRAGERROR AFTER(S_RX_OVERFLOW) + { 6, "rxfrag", "rxfrag", "rx failed in f/w due to defrag" }, +#define S_RX_MEMERROR AFTER(S_RX_FRAGERROR) + { 5, "rxmem", "rxmem", "rx failed in f/w 'cuz out of of memory" }, +#define S_PTRERROR AFTER(S_RX_MEMERROR) + { 6, "badptr", "badptr", "MAC internal pointer problem" }, +#define S_TX_UNDERFLOW AFTER(S_PTRERROR) + { 7, "txunder", "txunder", "tx failed in f/w 'cuz of underflow" }, +#define S_TX_DONE AFTER(S_TX_UNDERFLOW) + { 6, "txdone", "txdone", "MAC tx ops completed" }, +#define S_TX_DONEBUFPUT AFTER(S_TX_DONE) + { 9, "txdoneput", "txdoneput", "tx buffers returned by f/w to host" }, +#define S_TX_WAIT4BUF AFTER(S_TX_DONEBUFPUT) + { 6, "txwait", "txwait", "no f/w buffers available when supplied a tx descriptor" }, +#define S_TX_ATTEMPTS AFTER(S_TX_WAIT4BUF) + { 5, "txtry", "txtry", "tx descriptors processed by f/w" }, +#define S_TX_SUCCESS AFTER(S_TX_ATTEMPTS) + { 4, "txok", "txok", "tx attempts successful" }, +#define S_TX_FRAGS AFTER(S_TX_SUCCESS) + { 6, "txfrag", "txfrag", "tx attempts with fragmentation" }, +#define S_RX_UNDECRYPT AFTER(S_TX_FRAGS) + { 7, "rxcrypt", "rxcrypt", "rx failed in f/w 'cuz decrypt failed" }, +#define S_RX_ICVERROR AFTER(S_RX_UNDECRYPT) + { 5, "rxicv", "rxicv", "rx failed in f/w 'cuz ICV check" }, +#define S_RX_EXCLUDE AFTER(S_RX_ICVERROR) + { 8, "rxfilter", "rxfilter", "rx frames filtered in f/w" }, +#define S_TX_LINEAR AFTER(S_RX_EXCLUDE) + { 5, "txlinear", "txlinear", "tx linearized to cluster" }, +#define S_TX_DISCARD AFTER(S_TX_LINEAR) + { 5, "txdisc", "txdisc", "tx frames discarded prior to association" }, +#define S_TX_QSTOP AFTER(S_TX_DISCARD) + { 5, "qstop", "qstop", "tx stopped 'cuz no xmit buffer" }, +#define S_TX_ENCAP AFTER(S_TX_QSTOP) + { 5, "txencode", "txencode", "tx encapsulation failed" }, +#define S_TX_NOMBUF AFTER(S_TX_ENCAP) + { 5, "txnombuf", "txnombuf", "tx failed 'cuz mbuf allocation failed" }, +#define S_TX_SHORTPRE AFTER(S_TX_NOMBUF) + { 5, "shpre", "shpre", "tx frames with short preamble" }, +#define S_TX_NOHEADROOM AFTER(S_TX_SHORTPRE) + { 5, "nohead", "nohead", "tx frames discarded for lack of headroom" }, +#define S_TX_BADFRAMETYPE AFTER(S_TX_NOHEADROOM) + { 5, "badtxtype", "badtxtype", "tx frames discarded for invalid/unknown 802.11 frame type" }, +#define S_RX_CRYPTO_ERR AFTER(S_TX_BADFRAMETYPE) + { 5, "crypt", "crypt", "rx failed 'cuz decryption" }, +#define S_RX_NOMBUF AFTER(S_RX_CRYPTO_ERR) + { 5, "rxnombuf", "rxnombuf", "rx setup failed 'cuz no mbuf" }, +#define S_RX_TKIPMIC AFTER(S_RX_NOMBUF) + { 5, "rxtkipmic", "rxtkipmic", "rx failed 'cuz TKIP MIC error" }, +#define S_RX_NODMABUF AFTER(S_RX_TKIPMIC) + { 5, "rxnodmabuf", "rxnodmabuf", "rx failed 'cuz no DMA buffer available" }, +#define S_RX_DMABUFMISSING AFTER(S_RX_NODMABUF) + { 5, "rxdmabufmissing", "rxdmabufmissing", "rx descriptor with no DMA buffer attached" }, +#define S_TX_NODATA AFTER(S_RX_DMABUFMISSING) + { 5, "txnodata", "txnodata", "tx discarded empty frame" }, +#define S_TX_BUSDMA AFTER(S_TX_NODATA) + { 5, "txbusdma", "txbusdma", "tx failed for dma resources" }, +#define S_RX_BUSDMA AFTER(S_TX_BUSDMA) + { 5, "rxbusdma", "rxbusdma", "rx setup failed for dma resources" }, +#define S_AMPDU_NOSTREAM AFTER(S_RX_BUSDMA) + { 5, "ampdu_nostream","ampdu_nostream","ADDBA request failed 'cuz all BA streams in use" }, +#define S_AMPDU_REJECT AFTER(S_AMPDU_NOSTREAM) + { 5, "ampdu_reject","ampdu_reject","ADDBA request failed 'cuz station already has one BA stream" }, +#define S_ADDBA_NOSTREAM AFTER(S_AMPDU_REJECT) + { 5, "addba_nostream","addba_nostream","ADDBA response processed but no BA stream present" }, +#define S_TX_TSO AFTER(S_ADDBA_NOSTREAM) + { 8, "txtso", "tso", "tx frames using TSO" }, +#define S_TSO_BADETH AFTER(S_TX_TSO) + { 5, "tsoeth", "tsoeth", "TSO failed 'cuz ether header type not IPv4" }, +#define S_TSO_NOHDR AFTER(S_TSO_BADETH) + { 5, "tsonohdr", "tsonohdr", "TSO failed 'cuz header not in first mbuf" }, +#define S_TSO_BADSPLIT AFTER(S_TSO_NOHDR) + { 5, "tsobadsplit", "tsobadsplit", "TSO failed 'cuz payload split failed" }, +#define S_BAWATCHDOG AFTER(S_TSO_BADSPLIT) + { 5, "bawatchdog", "bawatchdog", "BA watchdog interrupts" }, +#define S_BAWATCHDOG_NOTFOUND AFTER(S_BAWATCHDOG) + { 5, "bawatchdog_notfound", "bawatchdog_notfound", + "BA watchdog for unknown stream" }, +#define S_BAWATCHDOG_EMPTY AFTER(S_BAWATCHDOG_NOTFOUND) + { 5, "bawatchdog_empty", "bawatchdog_empty", + "BA watchdog on all streams but none found" }, +#define S_BAWATCHDOG_FAILED AFTER(S_BAWATCHDOG_EMPTY) + { 5, "bawatchdog_failed", "bawatchdog_failed", + "BA watchdog processing failed to get bitmap from f/w" }, +#define S_RADARDETECT AFTER(S_BAWATCHDOG_FAILED) + { 5, "radardetect", "radardetect", "radar detect interrupts" }, +#define S_RATE AFTER(S_RADARDETECT) + { 4, "rate", "rate", "rate of last transmit" }, +#define S_TX_RSSI AFTER(S_RATE) + { 4, "arssi", "arssi", "rssi of last ack" }, +#define S_RX_RSSI AFTER(S_TX_RSSI) + { 4, "rssi", "rssi", "avg recv rssi" }, +#define S_RX_NOISE AFTER(S_RX_RSSI) + { 5, "noise", "noise", "rx noise floor" }, +#define S_TX_SIGNAL AFTER(S_RX_NOISE) + { 4, "asignal", "asig", "signal of last ack (dBm)" }, +#define S_RX_SIGNAL AFTER(S_TX_SIGNAL) + { 4, "signal", "sig", "avg recv signal (dBm)" }, +#define S_ANT_TX0 AFTER(S_RX_SIGNAL) + { 8, "tx0", "ant0(tx)", "frames tx on antenna 0" }, +#define S_ANT_TX1 (S_RX_SIGNAL+2) + { 8, "tx1", "ant1(tx)", "frames tx on antenna 1" }, +#define S_ANT_TX2 (S_RX_SIGNAL+3) + { 8, "tx2", "ant2(tx)", "frames tx on antenna 2" }, +#define S_ANT_TX3 (S_RX_SIGNAL+4) + { 8, "tx3", "ant3(tx)", "frames tx on antenna 3" }, +#define S_ANT_RX0 AFTER(S_ANT_TX3) + { 8, "rx0", "ant0(rx)", "frames rx on antenna 0" }, +#define S_ANT_RX1 (S_ANT_TX3+2) + { 8, "rx1", "ant1(rx)", "frames rx on antenna 1" }, +#define S_ANT_RX2 (S_ANT_TX3+3) + { 8, "rx2", "ant2(rx)", "frames rx on antenna 2" }, +#define S_ANT_RX3 (S_ANT_TX3+4) + { 8, "rx3", "ant3(rx)", "frames rx on antenna 3" }, +}; +/* NB: this intentionally avoids per-antenna stats */ +#define S_LAST (S_RX_SIGNAL+1) + +struct mwlstatfoo_p { + struct mwlstatfoo base; + int s; + struct ifreq ifr; + struct mwl_stats cur; + struct mwl_stats total; +}; + +static void +mwl_setifname(struct mwlstatfoo *wf0, const char *ifname) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) wf0; + + strncpy(wf->ifr.ifr_name, ifname, sizeof (wf->ifr.ifr_name)); +} + +static void +mwl_collect(struct mwlstatfoo_p *wf, struct mwl_stats *stats) +{ + wf->ifr.ifr_data = (caddr_t) stats; + if (ioctl(wf->s, SIOCGMVSTATS, &wf->ifr) < 0) + err(1, wf->ifr.ifr_name); +} + +static void +mwl_collect_cur(struct statfoo *sf) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; + + mwl_collect(wf, &wf->cur); +} + +static void +mwl_collect_tot(struct statfoo *sf) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; + + mwl_collect(wf, &wf->total); +} + +static void +mwl_update_tot(struct statfoo *sf) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; + + wf->total = wf->cur; +} + +static void +setrate(char b[], size_t bs, uint8_t rate) +{ + if (rate & IEEE80211_RATE_MCS) + snprintf(b, bs, "MCS%u", rate & IEEE80211_RATE_VAL); + else if (rate & 1) + snprintf(b, bs, "%u.5M", rate / 2); + else + snprintf(b, bs, "%uM", rate / 2); +} + +static int +mwl_get_curstat(struct statfoo *sf, int s, char b[], size_t bs) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; +#define STAT(x) \ + snprintf(b, bs, "%u", wf->cur.mst_##x - wf->total.mst_##x); return 1 +#define HWSTAT(x) \ + snprintf(b, bs, "%u", wf->cur.hw_stats.x - wf->total.hw_stats.x); return 1 +#define RXANT(x) \ + snprintf(b, bs, "%u", wf->cur.mst_ant_rx[x] - wf->total.mst_ant_rx[x]); return 1 +#define TXANT(x) \ + snprintf(b, bs, "%u", wf->cur.mst_ant_tx[x] - wf->total.mst_ant_tx[x]); return 1 + + switch (s) { + case S_INPUT: + snprintf(b, bs, "%lu", (u_long)( + (wf->cur.mst_rx_packets - wf->total.mst_rx_packets))); + return 1; + case S_OUTPUT: + snprintf(b, bs, "%lu", (u_long)( + wf->cur.mst_tx_packets - wf->total.mst_tx_packets)); + return 1; + case S_RATE: + setrate(b, bs, wf->cur.mst_tx_rate); + return 1; + case S_TX_RETRY: HWSTAT(TxRetrySuccesses); + case S_TX_MRETRY: HWSTAT(TxMultipleRetrySuccesses); + case S_TX_RTSGOOD: HWSTAT(RTSSuccesses); + case S_TX_RTSBAD: HWSTAT(RTSFailures); + case S_TX_NOACK: HWSTAT(AckFailures); + case S_RX_DUPLICATE: HWSTAT(RxDuplicateFrames); + case S_RX_FCS: HWSTAT(FCSErrorCount); + case S_TX_WATCHDOG: HWSTAT(TxWatchDogTimeouts); + case S_RX_OVERFLOW: HWSTAT(RxOverflows); + case S_RX_FRAGERROR: HWSTAT(RxFragErrors); + case S_RX_MEMERROR: HWSTAT(RxMemErrors); + case S_PTRERROR: HWSTAT(PointerErrors); + case S_TX_UNDERFLOW: HWSTAT(TxUnderflows); + case S_TX_DONE: HWSTAT(TxDone); + case S_TX_DONEBUFPUT: HWSTAT(TxDoneBufPut); + case S_TX_WAIT4BUF: HWSTAT(Wait4TxBuf); + case S_TX_ATTEMPTS: HWSTAT(TxAttempts); + case S_TX_SUCCESS: HWSTAT(TxSuccesses); + case S_TX_FRAGS: HWSTAT(TxFragments); + case S_TX_MCAST: HWSTAT(TxMulticasts); + case S_RX_NONCTL: HWSTAT(RxNonCtlPkts); + case S_RX_MCAST: HWSTAT(RxMulticasts); + case S_RX_UNDECRYPT: HWSTAT(RxUndecryptableFrames); + case S_RX_ICVERROR: HWSTAT(RxICVErrors); + case S_RX_EXCLUDE: HWSTAT(RxExcludedFrames); + case S_TX_MGMT: STAT(tx_mgmt); + case S_TX_DISCARD: STAT(tx_discard); + case S_TX_QSTOP: STAT(tx_qstop); + case S_TX_ENCAP: STAT(tx_encap); + case S_TX_NOMBUF: STAT(tx_nombuf); + case S_TX_LINEAR: STAT(tx_linear); + case S_TX_NODATA: STAT(tx_nodata); + case S_TX_BUSDMA: STAT(tx_busdma); + case S_TX_SHORTPRE: STAT(tx_shortpre); + case S_TX_NOHEADROOM: STAT(tx_noheadroom); + case S_TX_BADFRAMETYPE: STAT(tx_badframetype); + case S_RX_CRYPTO_ERR: STAT(rx_crypto); + case S_RX_TKIPMIC: STAT(rx_tkipmic); + case S_RX_NODMABUF: STAT(rx_nodmabuf); + case S_RX_DMABUFMISSING:STAT(rx_dmabufmissing); + case S_RX_NOMBUF: STAT(rx_nombuf); + case S_RX_BUSDMA: STAT(rx_busdma); + case S_AMPDU_NOSTREAM: STAT(ampdu_nostream); + case S_AMPDU_REJECT: STAT(ampdu_reject); + case S_ADDBA_NOSTREAM: STAT(addba_nostream); + case S_TX_TSO: STAT(tx_tso); + case S_TSO_BADETH: STAT(tso_badeth); + case S_TSO_NOHDR: STAT(tso_nohdr); + case S_TSO_BADSPLIT: STAT(tso_badsplit); + case S_BAWATCHDOG: STAT(bawatchdog); + case S_BAWATCHDOG_NOTFOUND:STAT(bawatchdog_notfound); + case S_BAWATCHDOG_EMPTY: STAT(bawatchdog_empty); + case S_BAWATCHDOG_FAILED:STAT(bawatchdog_failed); + case S_RADARDETECT: STAT(radardetect); + case S_RX_RSSI: + snprintf(b, bs, "%d", wf->cur.mst_rx_rssi); + return 1; + case S_ANT_TX0: TXANT(0); + case S_ANT_TX1: TXANT(1); + case S_ANT_TX2: TXANT(2); + case S_ANT_TX3: TXANT(3); + case S_ANT_RX0: RXANT(0); + case S_ANT_RX1: RXANT(1); + case S_ANT_RX2: RXANT(2); + case S_ANT_RX3: RXANT(3); + case S_RX_NOISE: + snprintf(b, bs, "%d", wf->cur.mst_rx_noise); + return 1; + case S_RX_SIGNAL: + snprintf(b, bs, "%d", + wf->cur.mst_rx_rssi + wf->cur.mst_rx_noise); + return 1; + } + b[0] = '\0'; + return 0; +#undef RXANT +#undef TXANT +#undef HWSTAT +#undef STAT +} + +static int +mwl_get_totstat(struct statfoo *sf, int s, char b[], size_t bs) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; +#define STAT(x) \ + snprintf(b, bs, "%u", wf->total.mst_##x); return 1 +#define HWSTAT(x) \ + snprintf(b, bs, "%u", wf->total.hw_stats.x); return 1 +#define TXANT(x) \ + snprintf(b, bs, "%u", wf->total.mst_ant_tx[x]); return 1 +#define RXANT(x) \ + snprintf(b, bs, "%u", wf->total.mst_ant_rx[x]); return 1 + + switch (s) { + case S_INPUT: + snprintf(b, bs, "%lu", (u_long)wf->total.mst_rx_packets); + return 1; + case S_OUTPUT: + snprintf(b, bs, "%lu", (u_long) wf->total.mst_tx_packets); + return 1; + case S_RATE: + setrate(b, bs, wf->total.mst_tx_rate); + return 1; + case S_TX_RETRY: HWSTAT(TxRetrySuccesses); + case S_TX_MRETRY: HWSTAT(TxMultipleRetrySuccesses); + case S_TX_RTSGOOD: HWSTAT(RTSSuccesses); + case S_TX_RTSBAD: HWSTAT(RTSFailures); + case S_TX_NOACK: HWSTAT(AckFailures); + case S_RX_DUPLICATE: HWSTAT(RxDuplicateFrames); + case S_RX_FCS: HWSTAT(FCSErrorCount); + case S_TX_WATCHDOG: HWSTAT(TxWatchDogTimeouts); + case S_RX_OVERFLOW: HWSTAT(RxOverflows); + case S_RX_FRAGERROR: HWSTAT(RxFragErrors); + case S_RX_MEMERROR: HWSTAT(RxMemErrors); + case S_PTRERROR: HWSTAT(PointerErrors); + case S_TX_UNDERFLOW: HWSTAT(TxUnderflows); + case S_TX_DONE: HWSTAT(TxDone); + case S_TX_DONEBUFPUT: HWSTAT(TxDoneBufPut); + case S_TX_WAIT4BUF: HWSTAT(Wait4TxBuf); + case S_TX_ATTEMPTS: HWSTAT(TxAttempts); + case S_TX_SUCCESS: HWSTAT(TxSuccesses); + case S_TX_FRAGS: HWSTAT(TxFragments); + case S_TX_MCAST: HWSTAT(TxMulticasts); + case S_RX_NONCTL: HWSTAT(RxNonCtlPkts); + case S_RX_MCAST: HWSTAT(RxMulticasts); + case S_RX_UNDECRYPT: HWSTAT(RxUndecryptableFrames); + case S_RX_ICVERROR: HWSTAT(RxICVErrors); + case S_RX_EXCLUDE: HWSTAT(RxExcludedFrames); + case S_TX_MGMT: STAT(tx_mgmt); + case S_TX_DISCARD: STAT(tx_discard); + case S_TX_QSTOP: STAT(tx_qstop); + case S_TX_ENCAP: STAT(tx_encap); + case S_TX_NOMBUF: STAT(tx_nombuf); + case S_TX_LINEAR: STAT(tx_linear); + case S_TX_NODATA: STAT(tx_nodata); + case S_TX_BUSDMA: STAT(tx_busdma); + case S_TX_SHORTPRE: STAT(tx_shortpre); + case S_TX_NOHEADROOM: STAT(tx_noheadroom); + case S_TX_BADFRAMETYPE: STAT(tx_badframetype); + case S_RX_CRYPTO_ERR: STAT(rx_crypto); + case S_RX_TKIPMIC: STAT(rx_tkipmic); + case S_RX_NODMABUF: STAT(rx_nodmabuf); + case S_RX_DMABUFMISSING:STAT(rx_dmabufmissing); + case S_RX_NOMBUF: STAT(rx_nombuf); + case S_RX_BUSDMA: STAT(rx_busdma); + case S_AMPDU_NOSTREAM: STAT(ampdu_nostream); + case S_AMPDU_REJECT: STAT(ampdu_reject); + case S_ADDBA_NOSTREAM: STAT(addba_nostream); + case S_TX_TSO: STAT(tx_tso); + case S_TSO_BADETH: STAT(tso_badeth); + case S_TSO_NOHDR: STAT(tso_nohdr); + case S_TSO_BADSPLIT: STAT(tso_badsplit); + case S_BAWATCHDOG: STAT(bawatchdog); + case S_BAWATCHDOG_NOTFOUND:STAT(bawatchdog_notfound); + case S_BAWATCHDOG_EMPTY: STAT(bawatchdog_empty); + case S_BAWATCHDOG_FAILED:STAT(bawatchdog_failed); + case S_RADARDETECT: STAT(radardetect); + case S_RX_RSSI: + snprintf(b, bs, "%d", wf->total.mst_rx_rssi); + return 1; + case S_ANT_TX0: TXANT(0); + case S_ANT_TX1: TXANT(1); + case S_ANT_TX2: TXANT(2); + case S_ANT_TX3: TXANT(3); + case S_ANT_RX0: RXANT(0); + case S_ANT_RX1: RXANT(1); + case S_ANT_RX2: RXANT(2); + case S_ANT_RX3: RXANT(3); + case S_RX_NOISE: + snprintf(b, bs, "%d", wf->total.mst_rx_noise); + return 1; + case S_RX_SIGNAL: + snprintf(b, bs, "%d", + wf->total.mst_rx_rssi + wf->total.mst_rx_noise); + return 1; + } + b[0] = '\0'; + return 0; +#undef RXANT +#undef TXANT +#undef HWSTAT +#undef STAT +} + +static void +mwl_print_verbose(struct statfoo *sf, FILE *fd) +{ + struct mwlstatfoo_p *wf = (struct mwlstatfoo_p *) sf; + const struct fmt *f; + char s[32]; + const char *indent; + int i, width; + + width = 0; + for (i = 0; i < S_LAST; i++) { + f = &sf->stats[i]; + if (f->width > width) + width = f->width; + } + for (i = 0; i < S_LAST; i++) { + f = &sf->stats[i]; + if (mwl_get_totstat(sf, i, s, sizeof(s)) && strcmp(s, "0")) { + indent = ""; + fprintf(fd, "%s%-*s %s\n", indent, width, s, f->desc); + } + } + fprintf(fd, "Antenna profile:\n"); + for (i = 0; i < 4; i++) + if (wf->total.mst_ant_rx[i] || wf->total.mst_ant_tx[i]) + fprintf(fd, "[%u] tx %8u rx %8u\n", i, + wf->total.mst_ant_tx[i], + wf->total.mst_ant_rx[i]); +} + +STATFOO_DEFINE_BOUNCE(mwlstatfoo) + +struct mwlstatfoo * +mwlstats_new(const char *ifname, const char *fmtstring) +{ +#define N(a) (sizeof(a) / sizeof(a[0])) + struct mwlstatfoo_p *wf; + + wf = calloc(1, sizeof(struct mwlstatfoo_p)); + if (wf != NULL) { + statfoo_init(&wf->base.base, "mwlstats", mwlstats, N(mwlstats)); + /* override base methods */ + wf->base.base.collect_cur = mwl_collect_cur; + wf->base.base.collect_tot = mwl_collect_tot; + wf->base.base.get_curstat = mwl_get_curstat; + wf->base.base.get_totstat = mwl_get_totstat; + wf->base.base.update_tot = mwl_update_tot; + wf->base.base.print_verbose = mwl_print_verbose; + + /* setup bounce functions for public methods */ + STATFOO_BOUNCE(wf, mwlstatfoo); + + /* setup our public methods */ + wf->base.setifname = mwl_setifname; +#if 0 + wf->base.setstamac = wlan_setstamac; +#endif + wf->s = socket(AF_INET, SOCK_DGRAM, 0); + if (wf->s < 0) + err(1, "socket"); + + mwl_setifname(&wf->base, ifname); + wf->base.setfmt(&wf->base, fmtstring); + } + return &wf->base; +#undef N +} Added: head/tools/tools/mwl/mwlstats/mwlstats.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/mwl/mwlstats/mwlstats.h Mon Jun 1 18:27:16 2009 (r193242) @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2007 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any + * redistribution must be conditioned upon including a substantially + * similar Disclaimer requirement for further binary redistribution. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGES. + * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From rwatson at FreeBSD.org Mon Jun 1 18:38:36 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 18:38:49 2009 Subject: svn commit: r193243 - head/sys/net Message-ID: <200906011838.n51Ica2i087615@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 18:38:36 2009 New Revision: 193243 URL: http://svn.freebsd.org/changeset/base/193243 Log: Revert a recent netisr2 change: when billing packets to the current CPU, don't lock the workstream, as its mutexes may not have been initialized if there are fewer workstreams than CPUs. Run into by: hps, ps Modified: head/sys/net/netisr.c Modified: head/sys/net/netisr.c ============================================================================== --- head/sys/net/netisr.c Mon Jun 1 18:27:16 2009 (r193242) +++ head/sys/net/netisr.c Mon Jun 1 18:38:36 2009 (r193243) @@ -893,10 +893,8 @@ netisr_dispatch_src(u_int proto, uintptr if (netisr_direct_force) { nwsp = &nws[curcpu]; npwp = &nwsp->nws_work[proto]; - NWS_LOCK(nwsp); npwp->nw_dispatched++; npwp->nw_handled++; - NWS_UNLOCK(nwsp); np[proto].np_handler(m); error = 0; goto out_unlock; From bz at FreeBSD.org Mon Jun 1 18:40:08 2009 From: bz at FreeBSD.org (Bjoern A. Zeeb) Date: Mon Jun 1 18:40:15 2009 Subject: svn commit: r193241 - in head: . sys/sys In-Reply-To: <1243880140.25229.23.camel@bauer.cse.buffalo.edu> References: <200906011807.n51I7ccW086812@svn.freebsd.org> <1243880140.25229.23.camel@bauer.cse.buffalo.edu> Message-ID: <20090601182802.N12292@maildrop.int.zabbadoz.net> On Mon, 1 Jun 2009, Ken Smith wrote: > On Mon, 2009-06-01 at 18:07 +0000, Bjoern A. Zeeb wrote: >> Author: bz >> Date: Mon Jun 1 18:07:38 2009 >> New Revision: 193241 >> URL: http://svn.freebsd.org/changeset/base/193241 >> >> Log: >> Decrement __FreeBSD_version again to 96 as we are runing out of digits >> and want to be conservative - so not more than one version bump per day. >> >> Discussed with: jhb, kensmith > > It was noted we're close to running out of numbers we can use before we > hit code freeze and the branch for the release. Since we're entering > code slush at the end of today in theory all changes that would warrant > a bump in __FreeBSD_version are supposed to be done. But it wouldn't > surprise me if we have one or two or so things that come along between > now and when we hit code freeze and the branch. So we need to be a bit > conservative with this. Please be sure to coordinate anything that > might require a bump in __FreeBSD_version with re@ from now on. If it > turns out things do come along that require bumps we'll need to "batch > them up" having one bump represent several changes. Talking about "padding of structures", as this will be one of those changes most likely, I had suggested previously in private email: Can't we start collecting all those somewhere, perhaps on the wiki, and do one big padding day, one commit for all and everything? This would have several advantages: 1) no ABI breakage in HEAD as v-structs would possibly change in size 2) actual documentation of A|KB|PI relevant structures which would be good to have them written down finally after I heard people talking about this for multiple releases now. 3) a list of things we might need to work on in the future to reduce the problem and also a list for the time 9.x would come;-) just my 0.01$ /bz -- Bjoern A. Zeeb The greatest risk is not taking one. From delphij at FreeBSD.org Mon Jun 1 18:42:18 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 18:42:25 2009 Subject: svn commit: r193244 - head/sys/dev/aic7xxx/aicasm Message-ID: <200906011842.n51IgHpW087717@svn.freebsd.org> Author: delphij Date: Mon Jun 1 18:42:16 2009 New Revision: 193244 URL: http://svn.freebsd.org/changeset/base/193244 Log: Code cleanups to make this WARNS=6 clean. PR: bin/96128 Modified: head/sys/dev/aic7xxx/aicasm/aicasm.c head/sys/dev/aic7xxx/aicasm/aicasm_gram.y head/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l head/sys/dev/aic7xxx/aicasm/aicasm_scan.l head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c head/sys/dev/aic7xxx/aicasm/aicasm_symbol.h Modified: head/sys/dev/aic7xxx/aicasm/aicasm.c ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm.c Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm.c Mon Jun 1 18:42:16 2009 (r193244) @@ -79,8 +79,8 @@ static void output_code(void); static void output_listing(char *ifilename); static void dump_scope(scope_t *scope); static void emit_patch(scope_t *scope, int patch); -static int check_patch(patch_t **start_patch, int start_instr, - int *skip_addr, int *func_vals); +static int check_patch(patch_t **start_patch, unsigned int start_instr, + unsigned int *skip_addr, int *func_vals); struct path_list search_path; int includes_search_curdir; @@ -116,8 +116,6 @@ int main(int argc, char *argv[]); int main(int argc, char *argv[]) { - extern char *optarg; - extern int optind; int ch; int retval; char *inputfilename; @@ -530,7 +528,7 @@ output_listing(char *ifilename) int *func_values; int instrcount; int instrptr; - int line; + unsigned int line; int func_count; int skip_addr; @@ -649,8 +647,8 @@ output_listing(char *ifilename) } static int -check_patch(patch_t **start_patch, int start_instr, - int *skip_addr, int *func_vals) +check_patch(patch_t **start_patch, unsigned int start_instr, + unsigned int *skip_addr, int *func_vals) { patch_t *cur_patch; Modified: head/sys/dev/aic7xxx/aicasm/aicasm_gram.y ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_gram.y Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_gram.y Mon Jun 1 18:42:16 2009 (r193244) @@ -88,7 +88,7 @@ static int in_critical_section; static u_int enum_increment; static u_int enum_next_value; -static void process_field(int field_type, symbol_t *sym, int mask); +static void process_field(unsigned int field_type, symbol_t *sym, int mask); static void initialize_symbol(symbol_t *symbol); static void add_macro_arg(const char *argtext, int position); static void add_macro_body(const char *bodytext); @@ -107,6 +107,9 @@ static void add_conditional(symbol_t *sy static void add_version(const char *verstring); static int is_download_const(expression_t *immed); +extern int yylex (void); +extern int yyparse (void); + #define SRAM_SYMNAME "SRAM_BASE" #define SCB_SYMNAME "SCB_BASE" %} @@ -867,7 +870,7 @@ reg_symbol: stop("register offset must be a constant", EX_DATAERR); /* NOTREACHED */ } - if (($3->info.cinfo->value + 1) > $1->info.rinfo->size) { + if (($3->info.cinfo->value + 1) > (unsigned)$1->info.rinfo->size) { stop("Accessing offset beyond range of register", EX_DATAERR); /* NOTREACHED */ @@ -878,7 +881,7 @@ reg_symbol: | T_SYMBOL '[' T_NUMBER ']' { process_register(&$1); - if (($3 + 1) > $1->info.rinfo->size) { + if (($3 + 1) > (unsigned)$1->info.rinfo->size) { stop("Accessing offset beyond range of register", EX_DATAERR); /* NOTREACHED */ @@ -1379,7 +1382,7 @@ code: %% static void -process_field(int field_type, symbol_t *sym, int value) +process_field(unsigned int field_type, symbol_t *sym, int value) { /* * Add the current register to its @@ -1531,10 +1534,9 @@ initialize_symbol(symbol_t *symbol) } static void -add_macro_arg(const char *argtext, int argnum) +add_macro_arg(const char *argtext, int argnum __unused) { struct macro_arg *marg; - int i; int retval; @@ -1553,7 +1555,7 @@ add_macro_arg(const char *argtext, int a retval = snprintf(regex_pattern, sizeof(regex_pattern), "[^-/A-Za-z0-9_](%s)([^-/A-Za-z0-9_]|$)", argtext); - if (retval >= sizeof(regex_pattern)) { + if (retval >= (int)sizeof(regex_pattern)) { stop("Regex text buffer too small for arg", EX_SOFTWARE); /* NOTREACHED */ @@ -1911,24 +1913,24 @@ add_conditional(symbol_t *symbol) static void add_version(const char *verstring) { - const char prefix[] = " * "; + const char verprefix[] = " * "; int newlen; int oldlen; - newlen = strlen(verstring) + strlen(prefix); + newlen = strlen(verstring) + strlen(verprefix); oldlen = 0; if (versions != NULL) oldlen = strlen(versions); versions = realloc(versions, newlen + oldlen + 2); if (versions == NULL) stop("Can't allocate version string", EX_SOFTWARE); - strcpy(&versions[oldlen], prefix); - strcpy(&versions[oldlen + strlen(prefix)], verstring); + strcpy(&versions[oldlen], verprefix); + strcpy(&versions[oldlen + strlen(verprefix)], verstring); versions[newlen + oldlen] = '\n'; versions[newlen + oldlen + 1] = '\0'; } -void +static void yyerror(const char *string) { stop(string, EX_DATAERR); Modified: head/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y Mon Jun 1 18:42:16 2009 (r193244) @@ -66,6 +66,9 @@ static symbol_t *macro_symbol; static void add_macro_arg(const char *argtext, int position); +extern int mmlex(void); +extern int mmparse(void); + %} %union { @@ -157,7 +160,7 @@ add_macro_arg(const char *argtext, int a } } -void +static void mmerror(const char *string) { stop(string, EX_DATAERR); Modified: head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l Mon Jun 1 18:42:16 2009 (r193244) @@ -65,7 +65,9 @@ static char string_buf[MAX_STR_CONST]; static char *string_buf_ptr; static int parren_count; -static char buf[255]; +static char msgbuf[255]; + +extern int mmlex(void); %} WORD [A-Za-z_][-A-Za-z_0-9]* @@ -143,9 +145,9 @@ MCARG [^(), \t]+ return T_SYMBOL; } . { - snprintf(buf, sizeof(buf), "Invalid character " + snprintf(msgbuf, sizeof(msgbuf), "Invalid character " "'%c'", mmtext[0]); - stop(buf, EX_DATAERR); + stop(msgbuf, EX_DATAERR); } %% @@ -153,4 +155,5 @@ int mmwrap() { stop("EOF encountered in macro call", EX_DATAERR); + return (1); } Modified: head/sys/dev/aic7xxx/aicasm/aicasm_scan.l ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_scan.l Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_scan.l Mon Jun 1 18:42:16 2009 (r193244) @@ -67,7 +67,13 @@ static char string_buf[MAX_STR_CONST]; static char *string_buf_ptr; static int parren_count; static int quote_count; -static char buf[255]; +static char msgbuf[255]; + +extern int yylex(void); +extern int mmlex(void); +extern int mmparse(void); +extern void mm_switch_to_buffer(YY_BUFFER_STATE); +extern void mm_delete_buffer(YY_BUFFER_STATE); %} PATH ([/]*[-A-Za-z0-9_.])+ @@ -315,10 +321,10 @@ else { return T_ELSE; } return ')'; } . { - snprintf(buf, sizeof(buf), "Invalid character " + snprintf(msgbuf, sizeof(msgbuf), "Invalid character " "'%c' in macro argument list", yytext[0]); - stop(buf, EX_DATAERR); + stop(msgbuf, EX_DATAERR); } {SPACE} ; \( { @@ -375,7 +381,7 @@ else { return T_ELSE; } char c; yptr = yytext; - while (c = *yptr++) { + while ((c = *yptr++)) { /* * Strip carriage returns. */ @@ -430,9 +436,9 @@ else { return T_ELSE; } } } . { - snprintf(buf, sizeof(buf), "Invalid character " + snprintf(msgbuf, sizeof(msgbuf), "Invalid character " "'%c'", yytext[0]); - stop(buf, EX_DATAERR); + stop(msgbuf, EX_DATAERR); } %% Modified: head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c Mon Jun 1 18:42:16 2009 (r193244) @@ -49,6 +49,7 @@ #else #include #endif +#include #include #include #include @@ -62,8 +63,8 @@ static DB *symtable; -symbol_t * -symbol_create(char *name) +static symbol_t * +symbol_create(const char *name) { symbol_t *new_symbol; @@ -163,14 +164,14 @@ symtable_close() * if a lookup fails. */ symbol_t * -symtable_get(char *name) +symtable_get(const char *name) { symbol_t *stored_ptr; DBT key; DBT data; int retval; - key.data = (void *)name; + key.data = strdup(name); key.size = strlen(name); if ((retval = symtable->get(symtable, &key, &data, /*flags*/0)) != 0) { @@ -190,6 +191,7 @@ symtable_get(char *name) perror("Symtable put failed"); exit(EX_SOFTWARE); } + free(key.data); return (new_symbol); } else { perror("Unexpected return value from db get routine"); @@ -198,6 +200,7 @@ symtable_get(char *name) } } memcpy(&stored_ptr, data.data, sizeof(stored_ptr)); + free(key.data); return (stored_ptr); } @@ -321,7 +324,7 @@ symlist_merge(symlist_t *symlist_dest, s SLIST_INIT(symlist_src2); } -void +static void aic_print_file_prologue(FILE *ofile) { @@ -337,16 +340,16 @@ aic_print_file_prologue(FILE *ofile) versions); } -void -aic_print_include(FILE *dfile, char *include_file) +static void +aic_print_include(FILE *dfile, char *header_file) { if (dfile == NULL) return; - fprintf(dfile, "\n#include \"%s\"\n\n", include_file); + fprintf(dfile, "\n#include \"%s\"\n\n", header_file); } -void +static void aic_print_reg_dump_types(FILE *ofile) { if (ofile == NULL) @@ -586,10 +589,9 @@ symtable_dump(FILE *ofile, FILE *dfile) /* Output generated #defines. */ while (SLIST_FIRST(®isters) != NULL) { - symbol_node_t *curnode; u_int value; - char *tab_str; - char *tab_str2; + const char *tab_str; + const char *tab_str2; curnode = SLIST_FIRST(®isters); SLIST_REMOVE_HEAD(®isters, links); @@ -636,7 +638,6 @@ symtable_dump(FILE *ofile, FILE *dfile) fprintf(ofile, "\n\n"); while (SLIST_FIRST(&constants) != NULL) { - symbol_node_t *curnode; curnode = SLIST_FIRST(&constants); SLIST_REMOVE_HEAD(&constants, links); @@ -650,7 +651,6 @@ symtable_dump(FILE *ofile, FILE *dfile) fprintf(ofile, "\n\n/* Downloaded Constant Definitions */\n"); for (i = 0; SLIST_FIRST(&download_constants) != NULL; i++) { - symbol_node_t *curnode; curnode = SLIST_FIRST(&download_constants); SLIST_REMOVE_HEAD(&download_constants, links); @@ -664,7 +664,6 @@ symtable_dump(FILE *ofile, FILE *dfile) fprintf(ofile, "\n\n/* Exported Labels */\n"); while (SLIST_FIRST(&exported_labels) != NULL) { - symbol_node_t *curnode; curnode = SLIST_FIRST(&exported_labels); SLIST_REMOVE_HEAD(&exported_labels, links); Modified: head/sys/dev/aic7xxx/aicasm/aicasm_symbol.h ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_symbol.h Mon Jun 1 18:38:36 2009 (r193243) +++ head/sys/dev/aic7xxx/aicasm/aicasm_symbol.h Mon Jun 1 18:42:16 2009 (r193244) @@ -190,7 +190,7 @@ void symtable_open(void); void symtable_close(void); symbol_t * - symtable_get(char *name); + symtable_get(const char *name); symbol_node_t * symlist_search(symlist_t *symlist, char *symname); From delphij at FreeBSD.org Mon Jun 1 18:43:34 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 18:43:45 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm Message-ID: <200906011843.n51IhXt4087781@svn.freebsd.org> Author: delphij Date: Mon Jun 1 18:43:33 2009 New Revision: 193245 URL: http://svn.freebsd.org/changeset/base/193245 Log: Mark as WARNS=6. Modified: head/sys/dev/aic7xxx/aicasm/Makefile Modified: head/sys/dev/aic7xxx/aicasm/Makefile ============================================================================== --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} DPADD= ${LIBL} LDADD= -ll +WARNS?= 6 # Correct path for kernel builds # Don't rely on the kernel's .depend file From dougb at FreeBSD.org Mon Jun 1 18:48:43 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 18:48:49 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <200906011843.n51IhXt4087781@svn.freebsd.org> References: <200906011843.n51IhXt4087781@svn.freebsd.org> Message-ID: <4A242282.4030404@FreeBSD.org> Xin LI wrote: > Author: delphij > Date: Mon Jun 1 18:43:33 2009 > New Revision: 193245 > URL: http://svn.freebsd.org/changeset/base/193245 > > Log: > Mark as WARNS=6. > > Modified: > head/sys/dev/aic7xxx/aicasm/Makefile > > Modified: head/sys/dev/aic7xxx/aicasm/Makefile > ============================================================================== > --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) > +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) > @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR > CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} > DPADD= ${LIBL} > LDADD= -ll > +WARNS?= 6 > > # Correct path for kernel builds > # Don't rely on the kernel's .depend file > Is there more coming? cc -O2 -pipe -ggdb -nostdinc -I/usr/include -I. -I/usr/local/src/sys/dev/aic7xxx/aicasm -ggdb -std=gnu99 -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wno-pointer-sign -c aicasm_scan.c cc1: warnings being treated as errors /usr/local/src/sys/dev/aic7xxx/aicasm/aicasm_scan.l: In function 'expand_macro': /usr/local/src/sys/dev/aic7xxx/aicasm/aicasm_scan.l:528: warning: 'match.rm_eo' may be used uninitialized in this function /usr/local/src/sys/dev/aic7xxx/aicasm/aicasm_scan.l:528: warning: 'match.rm_so' may be used uninitialized in this function *** Error code 1 Stop in /usr/local/obj/usr/local/src/sys/LAP. *** Error code 1 -- This .signature sanitized for your protection From rdivacky at FreeBSD.org Mon Jun 1 18:50:41 2009 From: rdivacky at FreeBSD.org (Roman Divacky) Date: Mon Jun 1 18:50:48 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <4A242282.4030404@FreeBSD.org> References: <200906011843.n51IhXt4087781@svn.freebsd.org> <4A242282.4030404@FreeBSD.org> Message-ID: <20090601184937.GA24177@freebsd.org> On Mon, Jun 01, 2009 at 11:48:34AM -0700, Doug Barton wrote: > Xin LI wrote: > > Author: delphij > > Date: Mon Jun 1 18:43:33 2009 > > New Revision: 193245 > > URL: http://svn.freebsd.org/changeset/base/193245 > > > > Log: > > Mark as WARNS=6. > > > > Modified: > > head/sys/dev/aic7xxx/aicasm/Makefile > > > > Modified: head/sys/dev/aic7xxx/aicasm/Makefile > > ============================================================================== > > --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) > > +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) > > @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR > > CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} > > DPADD= ${LIBL} > > LDADD= -ll > > +WARNS?= 6 > > > > # Correct path for kernel builds > > # Don't rely on the kernel's .depend file > > > > Is there more coming? > > cc -O2 -pipe -ggdb -nostdinc -I/usr/include -I. > -I/usr/local/src/sys/dev/aic7xxx/aicasm -ggdb -std=gnu99 ^^^^^^^^^^ how did you get this? this should be used for userland compilation, kernel is done with -std=c99, can you show me how you got this? thnx roman -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 196 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090601/d59159d7/attachment.pgp From rdivacky at FreeBSD.org Mon Jun 1 18:56:39 2009 From: rdivacky at FreeBSD.org (Roman Divacky) Date: Mon Jun 1 18:56:46 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <20090601184937.GA24177@freebsd.org> References: <200906011843.n51IhXt4087781@svn.freebsd.org> <4A242282.4030404@FreeBSD.org> <20090601184937.GA24177@freebsd.org> Message-ID: <20090601185532.GA24838@freebsd.org> On Mon, Jun 01, 2009 at 08:49:37PM +0200, Roman Divacky wrote: > On Mon, Jun 01, 2009 at 11:48:34AM -0700, Doug Barton wrote: > > Xin LI wrote: > > > Author: delphij > > > Date: Mon Jun 1 18:43:33 2009 > > > New Revision: 193245 > > > URL: http://svn.freebsd.org/changeset/base/193245 > > > > > > Log: > > > Mark as WARNS=6. > > > > > > Modified: > > > head/sys/dev/aic7xxx/aicasm/Makefile > > > > > > Modified: head/sys/dev/aic7xxx/aicasm/Makefile > > > ============================================================================== > > > --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) > > > +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) > > > @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR > > > CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} > > > DPADD= ${LIBL} > > > LDADD= -ll > > > +WARNS?= 6 > > > > > > # Correct path for kernel builds > > > # Don't rely on the kernel's .depend file > > > > > > > Is there more coming? > > > > cc -O2 -pipe -ggdb -nostdinc -I/usr/include -I. > > -I/usr/local/src/sys/dev/aic7xxx/aicasm -ggdb -std=gnu99 > ^^^^^^^^^^ > > how did you get this? this should be used for userland compilation, > kernel is done with -std=c99, can you show me how you got this? ok.. when you cd /usr/src make you build the kernel with -std=gnu99 instead of -std=c99. which is a bug. I am trying to fix this. if anyone has any idea please mail me.. roman From joel at FreeBSD.org Mon Jun 1 18:58:48 2009 From: joel at FreeBSD.org (Joel Dahl) Date: Mon Jun 1 18:58:54 2009 Subject: svn commit: r193246 - head/share/man/man4 Message-ID: <200906011858.n51Iwlvr088146@svn.freebsd.org> Author: joel (doc committer) Date: Mon Jun 1 18:58:46 2009 New Revision: 193246 URL: http://svn.freebsd.org/changeset/base/193246 Log: - Remove obsolete and confusing comment about renaming "sound" to "snd". We will look at renaming stuff for 9.0, but it's far from certain that we will do it this way. - Sort sysctl's alphabetically. I'll add a bunch of new sysctl's once ariff's next mega-patch goes in, and having everything sorted makes my job easier. Modified: head/share/man/man4/pcm.4 Modified: head/share/man/man4/pcm.4 ============================================================================== --- head/share/man/man4/pcm.4 Mon Jun 1 18:43:33 2009 (r193245) +++ head/share/man/man4/pcm.4 Mon Jun 1 18:58:46 2009 (r193246) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 23, 2007 +.Dd June 1, 2009 .Dt SOUND 4 .Os .Sh NAME @@ -51,16 +51,6 @@ hint.pcm.0.drq="1" hint.pcm.0.flags="0x0" .Ed .Sh DESCRIPTION -.Bf -emphasis -Note: There exists some ambiguity in the naming at the moment -.Pq Nm sound , pcm , snd . -It will be resolved soon by renaming -.Cd "device sound" -to -.Cd "device snd" , -and doing associated changes. -.Ef -.Pp The .Nm driver provides support for @@ -170,14 +160,34 @@ tunables are global settings and .Va dev.pcm.* are device specific. .Bl -tag -width ".Va hw.snd.report_soft_formats" -offset indent -.It Va hw.snd.latency_profile -Define sets of buffering latency conversion tables for the -.Va hw.snd.latency -tunable. -A value of 0 will use a low and aggressive latency profile which can result -in possible underruns if the application cannot keep up with a rapid irq -rate, especially during high workload. -The default value is 1, which is considered a moderate/safe latency profile. +.It Va hw.snd.compat_linux_mmap +Enable to allow PROT_EXEC page mappings. +All Linux applications using sound and +.Xr mmap 2 +require this. +.It Va hw.snd.default_auto +Enable to automatically assign default sound unit to the most recent +attached device. +.It Va hw.snd.default_unit +Default sound card for systems with multiple sound cards. +When using +.Xr devfs 5 , +the default device for +.Pa /dev/dsp . +Equivalent to a symlink from +.Pa /dev/dsp +to +.Pa /dev/dsp Ns Va ${hw.snd.default_unit} . +.It Va hw.snd.feeder_rate_max +Maximum allowable sample rate. +.It Va hw.snd.feeder_rate_min +Minimum allowable sample rate. +.It Va hw.snd.feeder_rate_round +Sample rate rounding threshold, to avoid large prime division at the +cost of accuracy. +All requested sample rates will be rounded to the nearest threshold value. +Possible values range between 0 (disabled) and 500. +Default is 25. .It Va hw.snd.latency Configure the buffering latency. Only affects applications that do not explicitly request @@ -186,26 +196,31 @@ This tunable provides finer granularity .Va hw.snd.latency_profile tunable. Possible values range between 0 (lowest latency) and 10 (highest latency). +.It Va hw.snd.latency_profile +Define sets of buffering latency conversion tables for the +.Va hw.snd.latency +tunable. +A value of 0 will use a low and aggressive latency profile which can result +in possible underruns if the application cannot keep up with a rapid irq +rate, especially during high workload. +The default value is 1, which is considered a moderate/safe latency profile. +.It Va hw.snd.maxautovchans +Global +.Tn VCHAN +setting that only affects devices with at least one playback or recording channel available. +The sound system will dynamically create up this many +.Tn VCHANs . +Set to +.Dq 0 +if no +.Tn VCHANS +are desired. +Maximum value is 256. .It Va hw.snd.report_soft_formats Controls the internal format conversion if it is available transparently to the application software. When disabled or not available, the application will only be able to select formats the device natively supports. -.It Va hw.snd.compat_linux_mmap -Enable to allow PROT_EXEC page mappings. -All Linux applications using sound and -.Xr mmap 2 -require this. -.It Va hw.snd.feeder_rate_round -Sample rate rounding threshold, to avoid large prime division at the -cost of accuracy. -All requested sample rates will be rounded to the nearest threshold value. -Possible values range between 0 (disabled) and 500. -Default is 25. -.It Va hw.snd.feeder_rate_max -Maximum allowable sample rate. -.It Va hw.snd.feeder_rate_min -Minimum allowable sample rate. .It Va hw.snd.verbose Level of verbosity for the .Pa /dev/sndstat @@ -228,31 +243,6 @@ File names and versions of the currently .It 4 Various messages intended for debugging. .El -.It Va hw.snd.maxautovchans -Global -.Tn VCHAN -setting that only affects devices with at least one playback or recording channel available. -The sound system will dynamically create up this many -.Tn VCHANs . -Set to -.Dq 0 -if no -.Tn VCHANS -are desired. -Maximum value is 256. -.It Va hw.snd.default_unit -Default sound card for systems with multiple sound cards. -When using -.Xr devfs 5 , -the default device for -.Pa /dev/dsp . -Equivalent to a symlink from -.Pa /dev/dsp -to -.Pa /dev/dsp Ns Va ${hw.snd.default_unit} . -.It Va hw.snd.default_auto -Enable to automatically assign default sound unit to the most recent -attached device. .It Va dev.pcm.%d.[play|rec].vchans The current number of .Tn VCHANs @@ -264,18 +254,18 @@ Setting this value to will disable .Tn VCHANs for this device. -.It Va dev.pcm.%d.[play|rec].vchanrate -Sample rate speed for -.Tn VCHAN -mixing. -All playback paths will be converted to this sample rate before the mixing -process begins. .It Va dev.pcm.%d.[play|rec].vchanformat Format for .Tn VCHAN mixing. All playback paths will be converted to this format before the mixing process begins. +.It Va dev.pcm.%d.[play|rec].vchanrate +Sample rate speed for +.Tn VCHAN +mixing. +All playback paths will be converted to this sample rate before the mixing +process begins. .It Va dev.pcm.%d.polling Experimental polling mode support where the driver operates by querying the device state on each tick using a From delphij at FreeBSD.org Mon Jun 1 19:06:09 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 19:06:15 2009 Subject: svn commit: r193247 - head/sys/dev/aic7xxx/aicasm Message-ID: <200906011906.n51J68CY088367@svn.freebsd.org> Author: delphij Date: Mon Jun 1 19:06:08 2009 New Revision: 193247 URL: http://svn.freebsd.org/changeset/base/193247 Log: Revert the WARNS change for now, need some time to fix the real problem. Modified: head/sys/dev/aic7xxx/aicasm/Makefile Modified: head/sys/dev/aic7xxx/aicasm/Makefile ============================================================================== --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:58:46 2009 (r193246) +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 19:06:08 2009 (r193247) @@ -15,7 +15,6 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} DPADD= ${LIBL} LDADD= -ll -WARNS?= 6 # Correct path for kernel builds # Don't rely on the kernel's .depend file From jkim at FreeBSD.org Mon Jun 1 19:10:19 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 19:10:24 2009 Subject: svn commit: r193248 - svnadmin/conf Message-ID: <200906011910.n51JAIrQ088495@svn.freebsd.org> Author: jkim Date: Mon Jun 1 19:10:17 2009 New Revision: 193248 URL: http://svn.freebsd.org/changeset/base/193248 Log: Add myself for ACPICA import preparation. Modified: svnadmin/conf/sizelimit.conf Modified: svnadmin/conf/sizelimit.conf ============================================================================== --- svnadmin/conf/sizelimit.conf Mon Jun 1 19:06:08 2009 (r193247) +++ svnadmin/conf/sizelimit.conf Mon Jun 1 19:10:17 2009 (r193248) @@ -21,6 +21,7 @@ brooks des dougb imp +jkim lstewart #lulf obrien From delphij at delphij.net Mon Jun 1 19:10:57 2009 From: delphij at delphij.net (Xin LI) Date: Mon Jun 1 19:11:24 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <20090601185532.GA24838@freebsd.org> References: <200906011843.n51IhXt4087781@svn.freebsd.org> <4A242282.4030404@FreeBSD.org> <20090601184937.GA24177@freebsd.org> <20090601185532.GA24838@freebsd.org> Message-ID: <4A242771.3090605@delphij.net> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Roman Divacky wrote: > On Mon, Jun 01, 2009 at 08:49:37PM +0200, Roman Divacky wrote: >> On Mon, Jun 01, 2009 at 11:48:34AM -0700, Doug Barton wrote: >>> Xin LI wrote: >>>> Author: delphij >>>> Date: Mon Jun 1 18:43:33 2009 >>>> New Revision: 193245 >>>> URL: http://svn.freebsd.org/changeset/base/193245 >>>> >>>> Log: >>>> Mark as WARNS=6. >>>> >>>> Modified: >>>> head/sys/dev/aic7xxx/aicasm/Makefile >>>> >>>> Modified: head/sys/dev/aic7xxx/aicasm/Makefile >>>> ============================================================================== >>>> --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) >>>> +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) >>>> @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR >>>> CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} >>>> DPADD= ${LIBL} >>>> LDADD= -ll >>>> +WARNS?= 6 >>>> >>>> # Correct path for kernel builds >>>> # Don't rely on the kernel's .depend file >>>> >>> Is there more coming? >>> >>> cc -O2 -pipe -ggdb -nostdinc -I/usr/include -I. >>> -I/usr/local/src/sys/dev/aic7xxx/aicasm -ggdb -std=gnu99 >> ^^^^^^^^^^ >> >> how did you get this? this should be used for userland compilation, >> kernel is done with -std=c99, can you show me how you got this? > > ok.. when you > > cd /usr/src > make > > you build the kernel with -std=gnu99 instead of -std=c99. which is a bug. I am > trying to fix this. if anyone has any idea please mail me.. This is strange... Let me take a look at this, I have reverted the WARNS?=6 change for now. Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.11 (FreeBSD) iEYEARECAAYFAkokJ3EACgkQi+vbBBjt66AnHACfXXyxcoKUsfCORzcOv4Nz8X3D IJoAn2dXFSLAq/HzO+S0XXuFbFFTJuhJ =3Uqo -----END PGP SIGNATURE----- From jkim at FreeBSD.org Mon Jun 1 19:16:33 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 19:16:59 2009 Subject: svn commit: r193249 - in vendor-sys/acpica/dist: . debugger disassembler events hardware include include/platform interpreter interpreter/dispatcher interpreter/executer interpreter/parser namespac... Message-ID: <200906011916.n51JGWt0088664@svn.freebsd.org> Author: jkim Date: Mon Jun 1 19:16:31 2009 New Revision: 193249 URL: http://svn.freebsd.org/changeset/base/193249 Log: Restore directory structures from actual vendor distribution. Added: vendor-sys/acpica/dist/changes.txt - copied unchanged from r193239, vendor-sys/acpica/dist/CHANGES.txt vendor-sys/acpica/dist/debugger/ vendor-sys/acpica/dist/debugger/dbcmds.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbxface.c vendor-sys/acpica/dist/disassembler/ vendor-sys/acpica/dist/disassembler/dmbuffer.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmwalk.c vendor-sys/acpica/dist/events/ vendor-sys/acpica/dist/events/evevent.c - copied unchanged from r193239, vendor-sys/acpica/dist/evevent.c vendor-sys/acpica/dist/events/evgpe.c - copied unchanged from r193239, vendor-sys/acpica/dist/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c - copied unchanged from r193239, vendor-sys/acpica/dist/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/evmisc.c vendor-sys/acpica/dist/events/evregion.c - copied unchanged from r193239, vendor-sys/acpica/dist/evregion.c vendor-sys/acpica/dist/events/evrgnini.c - copied unchanged from r193239, vendor-sys/acpica/dist/evrgnini.c vendor-sys/acpica/dist/events/evsci.c - copied unchanged from r193239, vendor-sys/acpica/dist/evsci.c vendor-sys/acpica/dist/events/evxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxfregn.c vendor-sys/acpica/dist/hardware/ vendor-sys/acpica/dist/hardware/hwacpi.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwtimer.c vendor-sys/acpica/dist/include/ vendor-sys/acpica/dist/include/acapps.h - copied unchanged from r193239, vendor-sys/acpica/dist/acapps.h vendor-sys/acpica/dist/include/acconfig.h - copied unchanged from r193239, vendor-sys/acpica/dist/acconfig.h vendor-sys/acpica/dist/include/acdebug.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdebug.h vendor-sys/acpica/dist/include/acdisasm.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdisasm.h vendor-sys/acpica/dist/include/acdispat.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdispat.h vendor-sys/acpica/dist/include/acevents.h - copied unchanged from r193239, vendor-sys/acpica/dist/acevents.h vendor-sys/acpica/dist/include/acexcep.h - copied unchanged from r193239, vendor-sys/acpica/dist/acexcep.h vendor-sys/acpica/dist/include/acglobal.h - copied unchanged from r193239, vendor-sys/acpica/dist/acglobal.h vendor-sys/acpica/dist/include/achware.h - copied unchanged from r193239, vendor-sys/acpica/dist/achware.h vendor-sys/acpica/dist/include/acinterp.h - copied unchanged from r193239, vendor-sys/acpica/dist/acinterp.h vendor-sys/acpica/dist/include/aclocal.h - copied unchanged from r193239, vendor-sys/acpica/dist/aclocal.h vendor-sys/acpica/dist/include/acmacros.h - copied unchanged from r193239, vendor-sys/acpica/dist/acmacros.h vendor-sys/acpica/dist/include/acnames.h - copied unchanged from r193239, vendor-sys/acpica/dist/acnames.h vendor-sys/acpica/dist/include/acnamesp.h - copied unchanged from r193239, vendor-sys/acpica/dist/acnamesp.h vendor-sys/acpica/dist/include/acobject.h - copied unchanged from r193239, vendor-sys/acpica/dist/acobject.h vendor-sys/acpica/dist/include/acopcode.h - copied unchanged from r193239, vendor-sys/acpica/dist/acopcode.h vendor-sys/acpica/dist/include/acoutput.h - copied unchanged from r193239, vendor-sys/acpica/dist/acoutput.h vendor-sys/acpica/dist/include/acparser.h - copied unchanged from r193239, vendor-sys/acpica/dist/acparser.h vendor-sys/acpica/dist/include/acpi.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpixf.h vendor-sys/acpica/dist/include/acresrc.h - copied unchanged from r193239, vendor-sys/acpica/dist/acresrc.h vendor-sys/acpica/dist/include/acstruct.h - copied unchanged from r193239, vendor-sys/acpica/dist/acstruct.h vendor-sys/acpica/dist/include/actables.h - copied unchanged from r193239, vendor-sys/acpica/dist/actables.h vendor-sys/acpica/dist/include/actbl.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl.h vendor-sys/acpica/dist/include/actbl1.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl1.h vendor-sys/acpica/dist/include/actbl2.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl2.h vendor-sys/acpica/dist/include/actypes.h - copied unchanged from r193239, vendor-sys/acpica/dist/actypes.h vendor-sys/acpica/dist/include/acutils.h - copied unchanged from r193239, vendor-sys/acpica/dist/acutils.h vendor-sys/acpica/dist/include/amlcode.h - copied unchanged from r193239, vendor-sys/acpica/dist/amlcode.h vendor-sys/acpica/dist/include/amlresrc.h - copied unchanged from r193239, vendor-sys/acpica/dist/amlresrc.h vendor-sys/acpica/dist/include/platform/ vendor-sys/acpica/dist/include/platform/acefi.h - copied unchanged from r193239, vendor-sys/acpica/dist/acefi.h vendor-sys/acpica/dist/include/platform/acenv.h - copied unchanged from r193239, vendor-sys/acpica/dist/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h - copied unchanged from r193239, vendor-sys/acpica/dist/acfreebsd.h vendor-sys/acpica/dist/include/platform/acgcc.h - copied unchanged from r193239, vendor-sys/acpica/dist/acgcc.h vendor-sys/acpica/dist/interpreter/ vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/interpreter/dispatcher/dsfield.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsfield.c vendor-sys/acpica/dist/interpreter/dispatcher/dsinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsinit.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmethod.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsmethod.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmthdat.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsmthdat.c vendor-sys/acpica/dist/interpreter/dispatcher/dsobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsobject.c vendor-sys/acpica/dist/interpreter/dispatcher/dsopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsopcode.c vendor-sys/acpica/dist/interpreter/dispatcher/dsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsutils.c vendor-sys/acpica/dist/interpreter/dispatcher/dswexec.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswexec.c vendor-sys/acpica/dist/interpreter/dispatcher/dswload.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswload.c vendor-sys/acpica/dist/interpreter/dispatcher/dswscope.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswscope.c vendor-sys/acpica/dist/interpreter/dispatcher/dswstate.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswstate.c vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/interpreter/executer/exconfig.c - copied unchanged from r193239, vendor-sys/acpica/dist/exconfig.c vendor-sys/acpica/dist/interpreter/executer/exconvrt.c - copied unchanged from r193239, vendor-sys/acpica/dist/exconvrt.c vendor-sys/acpica/dist/interpreter/executer/excreate.c - copied unchanged from r193239, vendor-sys/acpica/dist/excreate.c vendor-sys/acpica/dist/interpreter/executer/exdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/exdump.c vendor-sys/acpica/dist/interpreter/executer/exfield.c - copied unchanged from r193239, vendor-sys/acpica/dist/exfield.c vendor-sys/acpica/dist/interpreter/executer/exfldio.c - copied unchanged from r193239, vendor-sys/acpica/dist/exfldio.c vendor-sys/acpica/dist/interpreter/executer/exmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/exmisc.c vendor-sys/acpica/dist/interpreter/executer/exmutex.c - copied unchanged from r193239, vendor-sys/acpica/dist/exmutex.c vendor-sys/acpica/dist/interpreter/executer/exnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/exnames.c vendor-sys/acpica/dist/interpreter/executer/exoparg1.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg1.c vendor-sys/acpica/dist/interpreter/executer/exoparg2.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg2.c vendor-sys/acpica/dist/interpreter/executer/exoparg3.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg3.c vendor-sys/acpica/dist/interpreter/executer/exoparg6.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg6.c vendor-sys/acpica/dist/interpreter/executer/exprep.c - copied unchanged from r193239, vendor-sys/acpica/dist/exprep.c vendor-sys/acpica/dist/interpreter/executer/exregion.c - copied unchanged from r193239, vendor-sys/acpica/dist/exregion.c vendor-sys/acpica/dist/interpreter/executer/exresnte.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresnte.c vendor-sys/acpica/dist/interpreter/executer/exresolv.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresolv.c vendor-sys/acpica/dist/interpreter/executer/exresop.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresop.c vendor-sys/acpica/dist/interpreter/executer/exstore.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstore.c vendor-sys/acpica/dist/interpreter/executer/exstoren.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstoren.c vendor-sys/acpica/dist/interpreter/executer/exstorob.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstorob.c vendor-sys/acpica/dist/interpreter/executer/exsystem.c - copied unchanged from r193239, vendor-sys/acpica/dist/exsystem.c vendor-sys/acpica/dist/interpreter/executer/exutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/exutils.c vendor-sys/acpica/dist/interpreter/parser/ vendor-sys/acpica/dist/interpreter/parser/psargs.c - copied unchanged from r193239, vendor-sys/acpica/dist/psargs.c vendor-sys/acpica/dist/interpreter/parser/psloop.c - copied unchanged from r193239, vendor-sys/acpica/dist/psloop.c vendor-sys/acpica/dist/interpreter/parser/psopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/psopcode.c vendor-sys/acpica/dist/interpreter/parser/psparse.c - copied unchanged from r193239, vendor-sys/acpica/dist/psparse.c vendor-sys/acpica/dist/interpreter/parser/psscope.c - copied unchanged from r193239, vendor-sys/acpica/dist/psscope.c vendor-sys/acpica/dist/interpreter/parser/pstree.c - copied unchanged from r193239, vendor-sys/acpica/dist/pstree.c vendor-sys/acpica/dist/interpreter/parser/psutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/psutils.c vendor-sys/acpica/dist/interpreter/parser/pswalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/pswalk.c vendor-sys/acpica/dist/interpreter/parser/psxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/psxface.c vendor-sys/acpica/dist/namespace/ vendor-sys/acpica/dist/namespace/nsaccess.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c - copied unchanged from r193239, vendor-sys/acpica/dist/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c - copied unchanged from r193239, vendor-sys/acpica/dist/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfobj.c vendor-sys/acpica/dist/resources/ vendor-sys/acpica/dist/resources/rsaddr.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c - copied unchanged from r193239, vendor-sys/acpica/dist/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c - copied unchanged from r193239, vendor-sys/acpica/dist/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsio.c vendor-sys/acpica/dist/resources/rsirq.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsirq.c vendor-sys/acpica/dist/resources/rslist.c - copied unchanged from r193239, vendor-sys/acpica/dist/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsxface.c vendor-sys/acpica/dist/tables/ vendor-sys/acpica/dist/tables/tbfadt.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbxfroot.c vendor-sys/acpica/dist/tools/ vendor-sys/acpica/dist/tools/acpiexec/ vendor-sys/acpica/dist/tools/acpiexec/aecommon.h - copied unchanged from r193239, vendor-sys/acpica/dist/aecommon.h vendor-sys/acpica/dist/utilities/ vendor-sys/acpica/dist/utilities/utalloc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c - copied unchanged from r193239, vendor-sys/acpica/dist/utcache.c vendor-sys/acpica/dist/utilities/utclib.c - copied unchanged from r193239, vendor-sys/acpica/dist/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c - copied unchanged from r193239, vendor-sys/acpica/dist/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c - copied unchanged from r193239, vendor-sys/acpica/dist/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c - copied unchanged from r193239, vendor-sys/acpica/dist/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c - copied unchanged from r193239, vendor-sys/acpica/dist/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c - copied unchanged from r193239, vendor-sys/acpica/dist/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/utinit.c vendor-sys/acpica/dist/utilities/utmath.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c - copied unchanged from r193239, vendor-sys/acpica/dist/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c - copied unchanged from r193239, vendor-sys/acpica/dist/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/utxface.c Deleted: vendor-sys/acpica/dist/CHANGES.txt vendor-sys/acpica/dist/acapps.h vendor-sys/acpica/dist/acconfig.h vendor-sys/acpica/dist/acdebug.h vendor-sys/acpica/dist/acdisasm.h vendor-sys/acpica/dist/acdispat.h vendor-sys/acpica/dist/acefi.h vendor-sys/acpica/dist/acenv.h vendor-sys/acpica/dist/acevents.h vendor-sys/acpica/dist/acexcep.h vendor-sys/acpica/dist/acfreebsd.h vendor-sys/acpica/dist/acgcc.h vendor-sys/acpica/dist/acglobal.h vendor-sys/acpica/dist/achware.h vendor-sys/acpica/dist/acinterp.h vendor-sys/acpica/dist/aclocal.h vendor-sys/acpica/dist/acmacros.h vendor-sys/acpica/dist/acnames.h vendor-sys/acpica/dist/acnamesp.h vendor-sys/acpica/dist/acobject.h vendor-sys/acpica/dist/acopcode.h vendor-sys/acpica/dist/acoutput.h vendor-sys/acpica/dist/acparser.h vendor-sys/acpica/dist/acpi.h vendor-sys/acpica/dist/acpiosxf.h vendor-sys/acpica/dist/acpixf.h vendor-sys/acpica/dist/acresrc.h vendor-sys/acpica/dist/acstruct.h vendor-sys/acpica/dist/actables.h vendor-sys/acpica/dist/actbl.h vendor-sys/acpica/dist/actbl1.h vendor-sys/acpica/dist/actbl2.h vendor-sys/acpica/dist/actypes.h vendor-sys/acpica/dist/acutils.h vendor-sys/acpica/dist/aecommon.h vendor-sys/acpica/dist/amlcode.h vendor-sys/acpica/dist/amlresrc.h vendor-sys/acpica/dist/dbcmds.c vendor-sys/acpica/dist/dbdisply.c vendor-sys/acpica/dist/dbexec.c vendor-sys/acpica/dist/dbfileio.c vendor-sys/acpica/dist/dbhistry.c vendor-sys/acpica/dist/dbinput.c vendor-sys/acpica/dist/dbstats.c vendor-sys/acpica/dist/dbutils.c vendor-sys/acpica/dist/dbxface.c vendor-sys/acpica/dist/dmbuffer.c vendor-sys/acpica/dist/dmnames.c vendor-sys/acpica/dist/dmobject.c vendor-sys/acpica/dist/dmopcode.c vendor-sys/acpica/dist/dmresrc.c vendor-sys/acpica/dist/dmresrcl.c vendor-sys/acpica/dist/dmresrcs.c vendor-sys/acpica/dist/dmutils.c vendor-sys/acpica/dist/dmwalk.c vendor-sys/acpica/dist/dsfield.c vendor-sys/acpica/dist/dsinit.c vendor-sys/acpica/dist/dsmethod.c vendor-sys/acpica/dist/dsmthdat.c vendor-sys/acpica/dist/dsobject.c vendor-sys/acpica/dist/dsopcode.c vendor-sys/acpica/dist/dsutils.c vendor-sys/acpica/dist/dswexec.c vendor-sys/acpica/dist/dswload.c vendor-sys/acpica/dist/dswscope.c vendor-sys/acpica/dist/dswstate.c vendor-sys/acpica/dist/evevent.c vendor-sys/acpica/dist/evgpe.c vendor-sys/acpica/dist/evgpeblk.c vendor-sys/acpica/dist/evmisc.c vendor-sys/acpica/dist/evregion.c vendor-sys/acpica/dist/evrgnini.c vendor-sys/acpica/dist/evsci.c vendor-sys/acpica/dist/evxface.c vendor-sys/acpica/dist/evxfevnt.c vendor-sys/acpica/dist/evxfregn.c vendor-sys/acpica/dist/exconfig.c vendor-sys/acpica/dist/exconvrt.c vendor-sys/acpica/dist/excreate.c vendor-sys/acpica/dist/exdump.c vendor-sys/acpica/dist/exfield.c vendor-sys/acpica/dist/exfldio.c vendor-sys/acpica/dist/exmisc.c vendor-sys/acpica/dist/exmutex.c vendor-sys/acpica/dist/exnames.c vendor-sys/acpica/dist/exoparg1.c vendor-sys/acpica/dist/exoparg2.c vendor-sys/acpica/dist/exoparg3.c vendor-sys/acpica/dist/exoparg6.c vendor-sys/acpica/dist/exprep.c vendor-sys/acpica/dist/exregion.c vendor-sys/acpica/dist/exresnte.c vendor-sys/acpica/dist/exresolv.c vendor-sys/acpica/dist/exresop.c vendor-sys/acpica/dist/exstore.c vendor-sys/acpica/dist/exstoren.c vendor-sys/acpica/dist/exstorob.c vendor-sys/acpica/dist/exsystem.c vendor-sys/acpica/dist/exutils.c vendor-sys/acpica/dist/hwacpi.c vendor-sys/acpica/dist/hwgpe.c vendor-sys/acpica/dist/hwregs.c vendor-sys/acpica/dist/hwsleep.c vendor-sys/acpica/dist/hwtimer.c vendor-sys/acpica/dist/nsaccess.c vendor-sys/acpica/dist/nsalloc.c vendor-sys/acpica/dist/nsdump.c vendor-sys/acpica/dist/nsdumpdv.c vendor-sys/acpica/dist/nseval.c vendor-sys/acpica/dist/nsinit.c vendor-sys/acpica/dist/nsload.c vendor-sys/acpica/dist/nsnames.c vendor-sys/acpica/dist/nsobject.c vendor-sys/acpica/dist/nsparse.c vendor-sys/acpica/dist/nssearch.c vendor-sys/acpica/dist/nsutils.c vendor-sys/acpica/dist/nswalk.c vendor-sys/acpica/dist/nsxfeval.c vendor-sys/acpica/dist/nsxfname.c vendor-sys/acpica/dist/nsxfobj.c vendor-sys/acpica/dist/psargs.c vendor-sys/acpica/dist/psloop.c vendor-sys/acpica/dist/psopcode.c vendor-sys/acpica/dist/psparse.c vendor-sys/acpica/dist/psscope.c vendor-sys/acpica/dist/pstree.c vendor-sys/acpica/dist/psutils.c vendor-sys/acpica/dist/pswalk.c vendor-sys/acpica/dist/psxface.c vendor-sys/acpica/dist/rsaddr.c vendor-sys/acpica/dist/rscalc.c vendor-sys/acpica/dist/rscreate.c vendor-sys/acpica/dist/rsdump.c vendor-sys/acpica/dist/rsinfo.c vendor-sys/acpica/dist/rsio.c vendor-sys/acpica/dist/rsirq.c vendor-sys/acpica/dist/rslist.c vendor-sys/acpica/dist/rsmemory.c vendor-sys/acpica/dist/rsmisc.c vendor-sys/acpica/dist/rsutils.c vendor-sys/acpica/dist/rsxface.c vendor-sys/acpica/dist/tbfadt.c vendor-sys/acpica/dist/tbfind.c vendor-sys/acpica/dist/tbinstal.c vendor-sys/acpica/dist/tbutils.c vendor-sys/acpica/dist/tbxface.c vendor-sys/acpica/dist/tbxfroot.c vendor-sys/acpica/dist/utalloc.c vendor-sys/acpica/dist/utcache.c vendor-sys/acpica/dist/utclib.c vendor-sys/acpica/dist/utcopy.c vendor-sys/acpica/dist/utdebug.c vendor-sys/acpica/dist/utdelete.c vendor-sys/acpica/dist/uteval.c vendor-sys/acpica/dist/utglobal.c vendor-sys/acpica/dist/utinit.c vendor-sys/acpica/dist/utmath.c vendor-sys/acpica/dist/utmisc.c vendor-sys/acpica/dist/utmutex.c vendor-sys/acpica/dist/utobject.c vendor-sys/acpica/dist/utresrc.c vendor-sys/acpica/dist/utstate.c vendor-sys/acpica/dist/uttrack.c vendor-sys/acpica/dist/utxface.c Copied: vendor-sys/acpica/dist/changes.txt (from r193239, vendor-sys/acpica/dist/CHANGES.txt) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor-sys/acpica/dist/changes.txt Mon Jun 1 19:16:31 2009 (r193249, copy of r193239, vendor-sys/acpica/dist/CHANGES.txt) @@ -0,0 +1,8448 @@ +---------------------------------------- +20 March 2007. Summary of changes for version 20070320: + +1) ACPI CA Core Subsystem: + +Implemented a change to the order of interpretation and +evaluation of AML operand objects within the AML interpreter. The +interpreter now evaluates operands in the order that they appear +in the AML stream (and the corresponding ASL code), instead of in +the reverse order (after the entire operand list has been +parsed). The previous behavior caused several subtle +incompatibilities with the Microsoft AML interpreter as well as +being somewhat non-intuitive. BZ 7871, local BZ 263. Valery +Podrezov. + +Implemented a change to the ACPI Global Lock support. All +interfaces to the global lock now allow the same thread to +acquire the lock multiple times. This affects the +AcpiAcquireGlobalLock external interface to the global lock as +well as the internal use of the global lock to support AML fields +-- a control method that is holding the global lock can now +simultaneously access AML fields that require global lock +protection. Previously, in both cases, this would have resulted +in an AE_ALREADY_ACQUIRED exception. The change to +AcpiAcquireGlobalLock is of special interest to drivers for the +Embedded Controller. There is no change to the behavior of the +AML Acquire operator, as this can already be used to acquire a +mutex multiple times by the same thread. BZ 8066. With assistance +from Alexey Starikovskiy. + +Fixed a problem where invalid objects could be referenced in the +AML Interpreter after error conditions. During operand +evaluation, ensure that the internal "Return Object" field is +cleared on error and only valid pointers are stored there. Caused +occasional access to deleted objects that resulted in "large +reference count" warning messages. Valery Podrezov. + +Fixed a problem where an AE_STACK_OVERFLOW internal exception +could occur on deeply nested control method invocations. BZ 7873, +local BZ 487. Valery Podrezov. + +Fixed an internal problem with the handling of result objects on +the interpreter result stack. BZ 7872. Valery Podrezov. + +Removed obsolete code that handled the case where AML_NAME_OP is +the target of a reference (Reference.Opcode). This code was no +longer necessary. BZ 7874. Valery Podrezov. + +Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. +This was a remnant from the previously discontinued 16-bit +support. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + +---------------------------------------- +26 January 2007. Summary of changes for version 20070126: + +1) ACPI CA Core Subsystem: + +Added the 2007 copyright to all module headers and signons. This +affects virtually every file in the ACPICA core subsystem, the +iASL compiler, and the utilities. + +Implemented a fix for an incorrect parameter passed to +AcpiTbDeleteTable during a table load. A bad pointer was passed +in the case where the DSDT is overridden, causing a fault in this +case. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + +---------------------------------------- +15 December 2006. Summary of changes for version 20061215: + +1) ACPI CA Core Subsystem: + +Support for 16-bit ACPICA has been completely removed since it is +no longer necessary and it clutters the code. All 16-bit macros, +types, and conditional compiles have been removed, cleaning up +and simplifying the code across the entire subsystem. DOS support +is no longer needed since the bootable Linux firmware kit is now +available. + +The handler for the Global Lock is now removed during +AcpiTerminate to enable a clean subsystem restart, via the +implementation of the AcpiEvRemoveGlobalLockHandler function. +(With assistance from Joel Bretz, HP) + +Implemented enhancements to the multithreading support within the +debugger to enable improved multithreading debugging and +evaluation of the subsystem. (Valery Podrezov) + +Debugger: Enhanced the Statistics/Memory command to emit the +total (maximum) memory used during the execution, as well as the +maximum memory consumed by each of the various object types. +(Valery Podrezov) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Implemented a new option (-m) to display full memory +use statistics upon subsystem/program termination. (Valery +Podrezov) + +---------------------------------------- +09 November 2006. Summary of changes for version 20061109: + +1) ACPI CA Core Subsystem: + +Optimized the Load ASL operator in the case where the source +operand is an operation region. Simply map the operation region +memory, instead of performing a bytewise read. (Region must be of +type SystemMemory, see below.) + +Fixed the Load ASL operator for the case where the source operand +is a region field. A buffer object is also allowed as the source +operand. BZ 480 + +Fixed a problem where the Load ASL operator allowed the source +operand to be an operation region of any type. It is now +restricted to regions of type SystemMemory, as per the ACPI +specification. BZ 481 + +Additional cleanup and optimizations for the new Table Manager +code. + +AcpiEnable will now fail if all of the required ACPI tables are +not loaded (FADT, FACS, DSDT). BZ 477 + +Added #pragma pack(8/4) to acobject.h to ensure that the +structures in this header are always compiled as aligned. The +ACPI_OPERAND_OBJECT has been manually optimized to be aligned and +will not work if it is byte-packed. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem where the presence of the _OSI predefined control +method within complex expressions could cause an internal +compiler error. + +AcpiExec: Implemented full region support for multiple address +spaces. SpaceId is now part of the REGION object. BZ 429 + +---------------------------------------- +11 October 2006. Summary of changes for version 20061011: + +1) ACPI CA Core Subsystem: + +Completed an AML interpreter performance enhancement for control +method execution. Previously a 2-pass parse/execution, control +methods are now completely parsed and executed in a single pass. +This improves overall interpreter performance by ~25%, reduces +code size, and reduces CPU stack use. (Valery Podrezov + +interpreter changes in version 20051202 that eliminated namespace +loading during the pass one parse.) + +Implemented _CID support for PCI Root Bridge detection. If the +_HID does not match the predefined PCI Root Bridge IDs, the _CID +list (if present) is now obtained and also checked for an ID +match. + +Implemented additional support for the PCI _ADR execution: +upsearch until a device scope is found before executing _ADR. +This allows PCI_Config operation regions to be declared locally +within control methods underneath PCI device objects. + +Fixed a problem with a possible race condition between threads +executing AcpiWalkNamespace and the AML interpreter. This +condition was removed by modifying AcpiWalkNamespace to (by +default) ignore all temporary namespace entries created during +any concurrent control method execution. An additional namespace +race condition is known to exist between AcpiWalkNamespace and +the Load/Unload ASL operators and is still under investigation. + +Restructured the AML ParseLoop function, breaking it into several +subfunctions in order to reduce CPU stack use and improve +maintainability. (Mikhail Kouzmich) + +AcpiGetHandle: Fix for parameter validation to detect invalid +combinations of prefix handle and pathname. BZ 478 + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + Current Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + +2) iASL Compiler/Disassembler and Tools: + +Ported the -g option (get local ACPI tables) to the new ACPICA +Table Manager to restore original behavior. + +---------------------------------------- +27 September 2006. Summary of changes for version 20060927: + +1) ACPI CA Core Subsystem: + +Removed the "Flags" parameter from AcpiGetRegister and +AcpiSetRegister. These functions now use a spinlock for mutual +exclusion and the interrupt level indication flag is not needed. + +Fixed a problem with the Global Lock where the lock could appear +to be obtained before it is actually obtained. The global lock +semaphore was inadvertently created with one unit instead of zero +units. (BZ 464) Fiodor Suietov. + +Fixed a possible memory leak and fault in +AcpiExResolveObjectToValue during a read from a buffer or region +field. (BZ 458) Fiodor Suietov. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a compilation problem with the pre-defined Resource +Descriptor field names where an "object does not exist" error +could be incorrectly generated if the parent ResourceTemplate +pathname places the template within a different namespace scope +than the current scope. (BZ 7212) + +Fixed a problem where the compiler could hang after syntax errors +detected in an ElseIf construct. (BZ 453) + +Fixed a problem with the AmlFilename parameter to the +DefinitionBlock() operator. An incorrect output filename was +produced when this parameter was a null string (""). Now, the +original input filename is used as the AML output filename, with +an ".aml" extension. + +Implemented a generic batch command mode for the AcpiExec utility +(execute any AML debugger command) (Valery Podrezov). + +---------------------------------------- +12 September 2006. Summary of changes for version 20060912: + +1) ACPI CA Core Subsystem: + +Enhanced the implementation of the "serialized mode" of the +interpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.) +When this mode is specified, instead of creating a serialization +semaphore per control method, the interpreter lock is simply no +longer released before a blocking operation during control method +execution. This effectively makes the AML Interpreter single- +threaded. The overhead of a semaphore per-method is eliminated. + +Fixed a regression where an error was no longer emitted if a +control method attempts to create 2 objects of the same name. +This once again returns AE_ALREADY_EXISTS. When this exception +occurs, it invokes the mechanism that will dynamically serialize +the control method to possible prevent future errors. (BZ 440) + +Integrated a fix for a problem with PCI Express HID detection in +the PCI Config Space setup procedure. (BZ 7145) + +Moved all FADT-related functions to a new file, tbfadt.c. +Eliminated the AcpiHwInitialize function - the FADT registers are +now validated when the table is loaded. + +Added two new warnings during FADT verification - 1) if the FADT +is larger than the largest known FADT version, and 2) if there is +a mismatch between a 32-bit block address and the 64-bit X +counterpart (when both are non-zero.) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the implementation of the Switch() operator +where the temporary variable was declared too close to the actual +Switch, instead of at method level. This could cause a problem if +the Switch() operator is within a while loop, causing an error on +the second iteration. (BZ 460) + +Disassembler - fix for error emitted for unknown type for target +of scope operator. Now, ignore it and continue. + +Disassembly of an FADT now verifies the input FADT and reports +any errors found. Fix for proper disassembly of full-sized (ACPI +2.0) FADTs. + +Disassembly of raw data buffers with byte initialization data now +prefixes each output line with the current buffer offset. + +Disassembly of ASF! table now includes all variable-length data +fields at the end of some of the subtables. + +The disassembler now emits a comment if a buffer appears to be a +ResourceTemplate, but cannot be disassembled as such because the +EndTag does not appear at the very end of the buffer. + +AcpiExec - Added the "-t" command line option to enable the +serialized mode of the AML interpreter. + +---------------------------------------- +31 August 2006. Summary of changes for version 20060831: + +1) ACPI CA Core Subsystem: + +Miscellaneous fixes for the Table Manager: +- Correctly initialize internal common FADT for all 64-bit "X" +fields +- Fixed a couple table mapping issues during table load +- Fixed a couple alignment issues for IA64 +- Initialize input array to zero in AcpiInitializeTables +- Additional parameter validation for AcpiGetTable, +AcpiGetTableHeader, AcpiGetTableByIndex + +Change for GPE support: when a "wake" GPE is received, all wake +GPEs are now immediately disabled to prevent the waking GPE from +firing again and to prevent other wake GPEs from interrupting the +wake process. + +Added the AcpiGpeCount global that tracks the number of processed +GPEs, to be used for debugging systems with a large number of +ACPI interrupts. + +Implemented support for the "DMAR" ACPI table (DMA Redirection +Table) in both the ACPICA headers and the disassembler. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + Current Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler support for the DMAR ACPI table. + +---------------------------------------- +23 August 2006. Summary of changes for version 20060823: + +1) ACPI CA Core Subsystem: + +The Table Manager component has been completely redesigned and +reimplemented. The new design is much simpler, and reduces the +overall code and data size of the kernel-resident ACPICA by +approximately 5%. Also, it is now possible to obtain the ACPI +tables very early during kernel initialization, even before +dynamic memory management is initialized. (Alexey Starikovskiy, +Fiodor Suietov, Bob Moore) + +Obsolete ACPICA interfaces: + +- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early +kernel init time). +- AcpiLoadTable: Not needed. +- AcpiUnloadTable: Not needed. + +New ACPICA interfaces: + +- AcpiInitializeTables: Must be called before the table manager +can be used. +- AcpiReallocateRootTable: Used to transfer the root table to +dynamically allocated memory after it becomes available. +- AcpiGetTableByIndex: Allows the host to easily enumerate all +ACPI tables in the RSDT/XSDT. + +Other ACPICA changes: + +- AcpiGetTableHeader returns the actual mapped table header, not +a copy. Use AcpiOsUnmapMemory to free this mapping. +- AcpiGetTable returns the actual mapped table. The mapping is +managed internally and must not be deleted by the caller. Use of +this interface causes no additional dynamic memory allocation. +- AcpiFindRootPointer: Support for physical addressing has been +eliminated, it appeared to be unused. +- The interface to AcpiOsMapMemory has changed to be consistent +with the other allocation interfaces. +- The interface to AcpiOsGetRootPointer has changed to eliminate +unnecessary parameters. +- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 +bits on 64-bit platforms. Was previously 64 bits on all +platforms. +- The interface to the ACPI Global Lock acquire/release macros +have changed slightly since ACPICA no longer keeps a local copy +of the FACS with a constructed pointer to the actual global lock. + +Porting to the new table manager: + +- AcpiInitializeTables: Must be called once, and can be called +anytime during the OS initialization process. It allows the host +to specify an area of memory to be used to store the internal +version of the RSDT/XSDT (root table). This allows the host to +access ACPI tables before memory management is initialized and +running. +- AcpiReallocateRootTable: Can be called after memory management +is running to copy the root table to a dynamically allocated +array, freeing up the scratch memory specified in the call to +AcpiInitializeTables. +- AcpiSubsystemInitialize: This existing interface is independent +of the Table Manager, and does not have to be called before the +Table Manager can be used, it only must be called before the rest +of ACPICA can be used. +- ACPI Tables: Some changes have been made to the names and +structure of the actbl.h and actbl1.h header files and may +require changes to existing code. For example, bitfields have +been completely removed because of their lack of portability +across C compilers. +- Update interfaces to the Global Lock acquire/release macros if +local versions are used. (see acwin.h) + +Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c + +New files: tbfind.c + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + Current Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +21 July 2006. Summary of changes for version 20060721: + +1) ACPI CA Core Subsystem: + +The full source code for the ASL test suite used to validate the +iASL compiler and the ACPICA core subsystem is being released +with the ACPICA source for the first time. The source is +contained in a separate package and consists of over 1100 files +that exercise all ASL/AML operators. The package should appear on +the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor +Suietov) + +Completed a new design and implementation for support of the ACPI +Global Lock. On the OS side, the global lock is now treated as a +standard AML mutex. Previously, multiple OS threads could +"acquire" the global lock simultaneously. However, this could +cause the BIOS to be starved out of the lock - especially in +cases such as the Embedded Controller driver where there is a +tight coupling between the OS and the BIOS. + +Implemented an optimization for the ACPI Global Lock interrupt +mechanism. The Global Lock interrupt handler no longer queues the +execution of a separate thread to signal the global lock +semaphore. Instead, the semaphore is signaled directly from the +interrupt handler. + +Implemented support within the AML interpreter for package +objects that contain a larger AML length (package list length) +than the package element count. In this case, the length of the +package is truncated to match the package element count. Some +BIOS code apparently modifies the package length on the fly, and +this change supports this behavior. Provides compatibility with +the MS AML interpreter. (With assistance from Fiodor Suietov) + +Implemented a temporary fix for the BankValue parameter of a Bank +Field to support all constant values, now including the Zero and +One opcodes. Evaluation of this parameter must eventually be +converted to a full TermArg evaluation. A not-implemented error +is now returned (temporarily) for non-constant values for this +parameter. + +Fixed problem reports (Fiodor Suietov) integrated: +- Fix for premature object deletion after CopyObject on Operation +Region (BZ 350) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total + Debug Version: 160.9K Code, 65.1K Data, 226.0K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +07 July 2006. Summary of changes for version 20060707: + +1) ACPI CA Core Subsystem: + +Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C +compilers that do not allow the initialization of address +pointers within packed structures - even though the hardware +itself may support misaligned transfers. Some of the debug data +structures are packed by default to minimize size. + +Added an error message for the case where AcpiOsGetThreadId() +returns zero. A non-zero value is required by the core ACPICA +code to ensure the proper operation of AML mutexes and recursive +control methods. + +The DSDT is now the only ACPI table that determines whether the +AML interpreter is in 32-bit or 64-bit mode. Not really a +functional change, but the hooks for per-table 32/64 switching +have been removed from the code. A clarification to the ACPI +specification is forthcoming in ACPI 3.0B. + +Fixed a possible leak of an OwnerID in the error path of +AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table +OwnerID deletion to a single place in AcpiTbUninstallTable to +correct possible leaks when using the AcpiTbDeleteTablesByType +interface (with assistance from Lance Ortiz.) + +Fixed a problem with Serialized control methods where the +semaphore associated with the method could be over-signaled after +multiple method invocations. + +Fixed two issues with the locking of the internal namespace data +structure. Both the Unload() operator and AcpiUnloadTable +interface now lock the namespace during the namespace deletion +associated with the table unload (with assistance from Linn +Crosetto.) + +Fixed problem reports (Valery Podrezov) integrated: +- Eliminate unnecessary memory allocation for CreateXxxxField (BZ +5426) + +Fixed problem reports (Fiodor Suietov) integrated: +- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) +- On Address Space handler deletion, needless deactivation call +(BZ 374) +- AcpiRemoveAddressSpaceHandler: validate Device handle parameter +(BZ 375) +- Possible memory leak, Notify sub-objects of Processor, Power, +ThermalZone (BZ 376) +- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ +378) +- Minimum Length of RSDT should be validated (BZ 379) +- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj +has no Handler (BZ (380) +- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified +type loaded (BZ 381) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed problem reports: +Compiler segfault when ASL contains a long (>1024) String +declaration (BZ 436) + +---------------------------------------- +23 June 2006. Summary of changes for version 20060623: + +1) ACPI CA Core Subsystem: + +Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. +This allows the type to be customized to the host OS for improved +efficiency (since a spinlock is usually a very small object.) + +Implemented support for "ignored" bits in the ACPI registers. +According to the ACPI specification, these bits should be +preserved when writing the registers via a read/modify/write +cycle. There are 3 bits preserved in this manner: PM1_CONTROL[0] +(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. + +Implemented the initial deployment of new OSL mutex interfaces. +Since some host operating systems have separate mutex and +semaphore objects, this feature was requested. The base code now +uses mutexes (and the new mutex interfaces) wherever a binary +semaphore was used previously. However, for the current release, +the mutex interfaces are defined as macros to map them to the +existing semaphore interfaces. Therefore, no OSL changes are +required at this time. (See acpiosxf.h) + +Fixed several problems with the support for the control method +SyncLevel parameter. The SyncLevel now works according to the +ACPI specification and in concert with the Mutex SyncLevel +parameter, since the current SyncLevel is a property of the +executing thread. Mutual exclusion for control methods is now +implemented with a mutex instead of a semaphore. + +Fixed three instances of the use of the C shift operator in the +bitfield support code (exfldio.c) to avoid the use of a shift +value larger than the target data width. The behavior of C +compilers is undefined in this case and can cause unpredictable +results, and therefore the case must be detected and avoided. +(Fiodor Suietov) + +Added an info message whenever an SSDT or OEM table is loaded +dynamically via the Load() or LoadTable() ASL operators. This +should improve debugging capability since it will show exactly +what tables have been loaded (beyond the tables present in the +RSDT/XSDT.) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + Current Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +08 June 2006. Summary of changes for version 20060608: + +1) ACPI CA Core Subsystem: + +Converted the locking mutex used for the ACPI hardware to a +spinlock. This change should eliminate all problems caused by +attempting to acquire a semaphore at interrupt level, and it +means that all ACPICA external interfaces that directly access +the ACPI hardware can be safely called from interrupt level. OSL +code that implements the semaphore interfaces should be able to +eliminate any workarounds for being called at interrupt level. + +Fixed a regression introduced in 20060526 where the ACPI device +initialization could be prematurely aborted with an AE_NOT_FOUND +if a device did not have an optional _INI method. + +Fixed an IndexField issue where a write to the Data Register +should be limited in size to the AccessSize (width) of the +IndexField itself. (BZ 433, Fiodor Suietov) + +Fixed problem reports (Valery Podrezov) integrated: +- Allow store of ThermalZone objects to Debug object (BZ +5369/5370) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiGetTableHeader doesn't handle multiple instances correctly +(BZ 364) + +Removed four global mutexes that were obsolete and were no longer +being used. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a fault when using -g option (get tables from registry) on +Windows machines. + +Fixed problem reports integrated: +- Generate error if CreateField NumBits parameter is zero. (BZ +405) +- Fault if Offset/Length in Field unit is very large (BZ 432, +Fiodor Suietov) +- Global table revision override (-r) is ignored (BZ 413) + +---------------------------------------- +26 May 2006. Summary of changes for version 20060526: + +1) ACPI CA Core Subsystem: + +Restructured, flattened, and simplified the internal interfaces +for namespace object evaluation - resulting in smaller code, less +CPU stack use, and fewer interfaces. (With assistance from +Mikhail Kouzmich) + +Fixed a problem with the CopyObject operator where the first +parameter was not typed correctly for the parser, interpreter, +compiler, and disassembler. Caused various errors and unexpected +behavior. + +Fixed a problem where a ShiftLeft or ShiftRight of more than 64 +bits produced incorrect results with some C compilers. Since the +behavior of C compilers when the shift value is larger than the +datatype width is apparently not well defined, the interpreter +now detects this condition and simply returns zero as expected in +all such cases. (BZ 395) + +Fixed problem reports (Valery Podrezov) integrated: +- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ +5329) +- Allow interpreter to handle nested method declarations (BZ +5361) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiTerminate doesn't free debug memory allocation list objects +(BZ 355) +- After Core Subsystem shutdown, AcpiSubsystemStatus returns +AE_OK (BZ 356) +- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ +357) +- Resource Manager should return AE_TYPE for non-device objects +(BZ 358) +- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) +- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData +(BZ 360) +- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) +- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) +- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is +loaded (BZ 365) +- Status of the Global Initialization Handler call not used (BZ +366) +- Incorrect object parameter to Global Initialization Handler (BZ +367) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +Modified the parser to allow the names IO, DMA, and IRQ to be +used as namespace identifiers with no collision with existing +resource descriptor macro names. This provides compatibility with +other ASL compilers and is most useful for +disassembly/recompilation of existing tables without parse +errors. (With assistance from Thomas Renninger) + +Disassembler: fixed an incorrect disassembly problem with the +DataTableRegion and CopyObject operators. Fixed a possible fault +during disassembly of some Alias operators. + +---------------------------------------- +12 May 2006. Summary of changes for version 20060512: + +1) ACPI CA Core Subsystem: + +Replaced the AcpiOsQueueForExecution interface with a new +interface named AcpiOsExecute. The major difference is that the +new interface does not have a Priority parameter, this appeared +to be useless and has been replaced by a Type parameter. The Type +tells the host what type of execution is being requested, such as +global lock handler, notify handler, GPE handler, etc. This +allows the host to queue and execute the request as appropriate +for the request type, possibly using different work queues and +different priorities for the various request types. This enables +fixes for multithreading deadlock problems such as BZ #5534, and +will require changes to all existing OS interface layers. (Alexey +Starikovskiy and Bob Moore) + +Fixed a possible memory leak associated with the support for the +so-called "implicit return" ACPI extension. Reported by FreeBSD, +BZ #6514. (Fiodor Suietov) + +Fixed a problem with the Load() operator where a table load from +an operation region could overwrite an internal table buffer by +up to 7 bytes and cause alignment faults on IPF systems. (With +assistance from Luming Yu) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + Current Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to cross reference the internal +namespace and automatically generate ASL External() statements +for symbols not defined within the current table being +disassembled. This will simplify the disassembly and +recompilation of interdependent tables such as SSDTs since these +statements will no longer have to be added manually. + +Disassembler: Implemented experimental support to automatically +detect invocations of external control methods and generate +appropriate External() statements. This is problematic because +the AML cannot be correctly parsed until the number of arguments +for each control method is known. Currently, standalone method +invocations and invocations as the source operand of a Store() +statement are supported. + +Disassembler: Implemented support for the ASL pseudo-operators +LNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled +as LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this +makes the disassembled ASL code more readable and likely closer +to the original ASL source. + +---------------------------------------- +21 April 2006. Summary of changes for version 20060421: + +1) ACPI CA Core Subsystem: + +Removed a device initialization optimization introduced in +20051216 where the _STA method was not run unless an _INI was +also present for the same device. This optimization could cause +problems because it could allow _INI methods to be run within a +not-present device subtree. (If a not-present device had no _INI, +_STA would not be run, the not-present status would not be +discovered, and the children of the device would be incorrectly +traversed.) + +Implemented a new _STA optimization where namespace subtrees that +do not contain _INI are identified and ignored during device +initialization. Selectively running _STA can significantly +improve boot time on large machines (with assistance from Len +Brown.) + +Implemented support for the device initialization case where the +returned _STA flags indicate a device not-present but +functioning. In this case, _INI is not run, but the device +children are examined for presence, as per the ACPI +specification. + +Implemented an additional change to the IndexField support in +order to conform to MS behavior. The value written to the Index +Register is not simply a byte offset, it is a byte offset in +units of the access width of the parent Index Field. (Fiodor +Suietov) + +Defined and deployed a new OSL interface, AcpiOsValidateAddress. +This interface is called during the creation of all AML operation +regions, and allows the host OS to exert control over what +addresses it will allow the AML code to access. Operation Regions +whose addresses are disallowed will cause a runtime exception +when they are actually accessed (will not affect or abort table +loading.) See oswinxf or osunixxf for an example implementation. + +Defined and deployed a new OSL interface, +AcpiOsValidateInterface. This interface allows the host OS to +match the various "optional" interface/behavior strings for the +_OSI predefined control method as appropriate (with assistance +from Bjorn Helgaas.) See oswinxf or osunixxf for an example +implementation. + +Restructured and corrected various problems in the exception +handling code paths within DsCallControlMethod and +DsTerminateControlMethod in dsmethod (with assistance from +Takayoshi Kochi.) + +Modified the Linux source converter to ignore quoted string +literals while converting identifiers from mixed to lower case. +This will correct problems with the disassembler and other areas +where such strings must not be modified. + +The ACPI_FUNCTION_* macros no longer require quotes around the +function name. This allows the Linux source converter to convert +the names, now that the converter ignores quoted strings. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented 3 new warnings for iASL, and implemented multiple +warning levels (w2 flag). + +1) Ignored timeouts: If the TimeoutValue parameter to Wait or +Acquire is not WAIT_FOREVER (0xFFFF) and the code does not +examine the return value to check for the possible timeout, a +warning is issued. + +2) Useless operators: If an ASL operator does not specify an +optional target operand and it also does not use the function +return value from the operator, a warning is issued since the +operator effectively does nothing. + +3) Unreferenced objects: If a namespace object is created, but +never referenced, a warning is issued. This is a warning level 2 +since there are cases where this is ok, such as when a secondary +table is loaded that uses the unreferenced objects. Even so, care +is taken to only flag objects that don't look like they will ever +be used. For example, the reserved methods (starting with an +underscore) are usually not referenced because it is expected +that the OS will invoke them. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From jkim at FreeBSD.org Mon Jun 1 19:16:34 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 19:17:13 2009 Subject: svn commit: r193249 - in vendor-sys/acpica/dist: . debugger disassembler events hardware include include/platform interpreter interpreter/dispatcher interpreter/executer interpreter/parser namespac... Message-ID: <200906011916.n51JGWO7088670@svn.freebsd.org> Author: jkim Date: Mon Jun 1 19:16:31 2009 New Revision: 193249 URL: http://svn.freebsd.org/changeset/base/193249 Log: Restore directory structures from actual vendor distribution. Added: vendor-sys/acpica/dist/changes.txt - copied unchanged from r193239, vendor-sys/acpica/dist/CHANGES.txt vendor-sys/acpica/dist/debugger/ vendor-sys/acpica/dist/debugger/dbcmds.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/dbxface.c vendor-sys/acpica/dist/disassembler/ vendor-sys/acpica/dist/disassembler/dmbuffer.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/dmwalk.c vendor-sys/acpica/dist/events/ vendor-sys/acpica/dist/events/evevent.c - copied unchanged from r193239, vendor-sys/acpica/dist/evevent.c vendor-sys/acpica/dist/events/evgpe.c - copied unchanged from r193239, vendor-sys/acpica/dist/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c - copied unchanged from r193239, vendor-sys/acpica/dist/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/evmisc.c vendor-sys/acpica/dist/events/evregion.c - copied unchanged from r193239, vendor-sys/acpica/dist/evregion.c vendor-sys/acpica/dist/events/evrgnini.c - copied unchanged from r193239, vendor-sys/acpica/dist/evrgnini.c vendor-sys/acpica/dist/events/evsci.c - copied unchanged from r193239, vendor-sys/acpica/dist/evsci.c vendor-sys/acpica/dist/events/evxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c - copied unchanged from r193239, vendor-sys/acpica/dist/evxfregn.c vendor-sys/acpica/dist/hardware/ vendor-sys/acpica/dist/hardware/hwacpi.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c - copied unchanged from r193239, vendor-sys/acpica/dist/hwtimer.c vendor-sys/acpica/dist/include/ vendor-sys/acpica/dist/include/acapps.h - copied unchanged from r193239, vendor-sys/acpica/dist/acapps.h vendor-sys/acpica/dist/include/acconfig.h - copied unchanged from r193239, vendor-sys/acpica/dist/acconfig.h vendor-sys/acpica/dist/include/acdebug.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdebug.h vendor-sys/acpica/dist/include/acdisasm.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdisasm.h vendor-sys/acpica/dist/include/acdispat.h - copied unchanged from r193239, vendor-sys/acpica/dist/acdispat.h vendor-sys/acpica/dist/include/acevents.h - copied unchanged from r193239, vendor-sys/acpica/dist/acevents.h vendor-sys/acpica/dist/include/acexcep.h - copied unchanged from r193239, vendor-sys/acpica/dist/acexcep.h vendor-sys/acpica/dist/include/acglobal.h - copied unchanged from r193239, vendor-sys/acpica/dist/acglobal.h vendor-sys/acpica/dist/include/achware.h - copied unchanged from r193239, vendor-sys/acpica/dist/achware.h vendor-sys/acpica/dist/include/acinterp.h - copied unchanged from r193239, vendor-sys/acpica/dist/acinterp.h vendor-sys/acpica/dist/include/aclocal.h - copied unchanged from r193239, vendor-sys/acpica/dist/aclocal.h vendor-sys/acpica/dist/include/acmacros.h - copied unchanged from r193239, vendor-sys/acpica/dist/acmacros.h vendor-sys/acpica/dist/include/acnames.h - copied unchanged from r193239, vendor-sys/acpica/dist/acnames.h vendor-sys/acpica/dist/include/acnamesp.h - copied unchanged from r193239, vendor-sys/acpica/dist/acnamesp.h vendor-sys/acpica/dist/include/acobject.h - copied unchanged from r193239, vendor-sys/acpica/dist/acobject.h vendor-sys/acpica/dist/include/acopcode.h - copied unchanged from r193239, vendor-sys/acpica/dist/acopcode.h vendor-sys/acpica/dist/include/acoutput.h - copied unchanged from r193239, vendor-sys/acpica/dist/acoutput.h vendor-sys/acpica/dist/include/acparser.h - copied unchanged from r193239, vendor-sys/acpica/dist/acparser.h vendor-sys/acpica/dist/include/acpi.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h - copied unchanged from r193239, vendor-sys/acpica/dist/acpixf.h vendor-sys/acpica/dist/include/acresrc.h - copied unchanged from r193239, vendor-sys/acpica/dist/acresrc.h vendor-sys/acpica/dist/include/acstruct.h - copied unchanged from r193239, vendor-sys/acpica/dist/acstruct.h vendor-sys/acpica/dist/include/actables.h - copied unchanged from r193239, vendor-sys/acpica/dist/actables.h vendor-sys/acpica/dist/include/actbl.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl.h vendor-sys/acpica/dist/include/actbl1.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl1.h vendor-sys/acpica/dist/include/actbl2.h - copied unchanged from r193239, vendor-sys/acpica/dist/actbl2.h vendor-sys/acpica/dist/include/actypes.h - copied unchanged from r193239, vendor-sys/acpica/dist/actypes.h vendor-sys/acpica/dist/include/acutils.h - copied unchanged from r193239, vendor-sys/acpica/dist/acutils.h vendor-sys/acpica/dist/include/amlcode.h - copied unchanged from r193239, vendor-sys/acpica/dist/amlcode.h vendor-sys/acpica/dist/include/amlresrc.h - copied unchanged from r193239, vendor-sys/acpica/dist/amlresrc.h vendor-sys/acpica/dist/include/platform/ vendor-sys/acpica/dist/include/platform/acefi.h - copied unchanged from r193239, vendor-sys/acpica/dist/acefi.h vendor-sys/acpica/dist/include/platform/acenv.h - copied unchanged from r193239, vendor-sys/acpica/dist/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h - copied unchanged from r193239, vendor-sys/acpica/dist/acfreebsd.h vendor-sys/acpica/dist/include/platform/acgcc.h - copied unchanged from r193239, vendor-sys/acpica/dist/acgcc.h vendor-sys/acpica/dist/interpreter/ vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/interpreter/dispatcher/dsfield.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsfield.c vendor-sys/acpica/dist/interpreter/dispatcher/dsinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsinit.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmethod.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsmethod.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmthdat.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsmthdat.c vendor-sys/acpica/dist/interpreter/dispatcher/dsobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsobject.c vendor-sys/acpica/dist/interpreter/dispatcher/dsopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsopcode.c vendor-sys/acpica/dist/interpreter/dispatcher/dsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/dsutils.c vendor-sys/acpica/dist/interpreter/dispatcher/dswexec.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswexec.c vendor-sys/acpica/dist/interpreter/dispatcher/dswload.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswload.c vendor-sys/acpica/dist/interpreter/dispatcher/dswscope.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswscope.c vendor-sys/acpica/dist/interpreter/dispatcher/dswstate.c - copied unchanged from r193239, vendor-sys/acpica/dist/dswstate.c vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/interpreter/executer/exconfig.c - copied unchanged from r193239, vendor-sys/acpica/dist/exconfig.c vendor-sys/acpica/dist/interpreter/executer/exconvrt.c - copied unchanged from r193239, vendor-sys/acpica/dist/exconvrt.c vendor-sys/acpica/dist/interpreter/executer/excreate.c - copied unchanged from r193239, vendor-sys/acpica/dist/excreate.c vendor-sys/acpica/dist/interpreter/executer/exdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/exdump.c vendor-sys/acpica/dist/interpreter/executer/exfield.c - copied unchanged from r193239, vendor-sys/acpica/dist/exfield.c vendor-sys/acpica/dist/interpreter/executer/exfldio.c - copied unchanged from r193239, vendor-sys/acpica/dist/exfldio.c vendor-sys/acpica/dist/interpreter/executer/exmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/exmisc.c vendor-sys/acpica/dist/interpreter/executer/exmutex.c - copied unchanged from r193239, vendor-sys/acpica/dist/exmutex.c vendor-sys/acpica/dist/interpreter/executer/exnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/exnames.c vendor-sys/acpica/dist/interpreter/executer/exoparg1.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg1.c vendor-sys/acpica/dist/interpreter/executer/exoparg2.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg2.c vendor-sys/acpica/dist/interpreter/executer/exoparg3.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg3.c vendor-sys/acpica/dist/interpreter/executer/exoparg6.c - copied unchanged from r193239, vendor-sys/acpica/dist/exoparg6.c vendor-sys/acpica/dist/interpreter/executer/exprep.c - copied unchanged from r193239, vendor-sys/acpica/dist/exprep.c vendor-sys/acpica/dist/interpreter/executer/exregion.c - copied unchanged from r193239, vendor-sys/acpica/dist/exregion.c vendor-sys/acpica/dist/interpreter/executer/exresnte.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresnte.c vendor-sys/acpica/dist/interpreter/executer/exresolv.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresolv.c vendor-sys/acpica/dist/interpreter/executer/exresop.c - copied unchanged from r193239, vendor-sys/acpica/dist/exresop.c vendor-sys/acpica/dist/interpreter/executer/exstore.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstore.c vendor-sys/acpica/dist/interpreter/executer/exstoren.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstoren.c vendor-sys/acpica/dist/interpreter/executer/exstorob.c - copied unchanged from r193239, vendor-sys/acpica/dist/exstorob.c vendor-sys/acpica/dist/interpreter/executer/exsystem.c - copied unchanged from r193239, vendor-sys/acpica/dist/exsystem.c vendor-sys/acpica/dist/interpreter/executer/exutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/exutils.c vendor-sys/acpica/dist/interpreter/parser/ vendor-sys/acpica/dist/interpreter/parser/psargs.c - copied unchanged from r193239, vendor-sys/acpica/dist/psargs.c vendor-sys/acpica/dist/interpreter/parser/psloop.c - copied unchanged from r193239, vendor-sys/acpica/dist/psloop.c vendor-sys/acpica/dist/interpreter/parser/psopcode.c - copied unchanged from r193239, vendor-sys/acpica/dist/psopcode.c vendor-sys/acpica/dist/interpreter/parser/psparse.c - copied unchanged from r193239, vendor-sys/acpica/dist/psparse.c vendor-sys/acpica/dist/interpreter/parser/psscope.c - copied unchanged from r193239, vendor-sys/acpica/dist/psscope.c vendor-sys/acpica/dist/interpreter/parser/pstree.c - copied unchanged from r193239, vendor-sys/acpica/dist/pstree.c vendor-sys/acpica/dist/interpreter/parser/psutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/psutils.c vendor-sys/acpica/dist/interpreter/parser/pswalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/pswalk.c vendor-sys/acpica/dist/interpreter/parser/psxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/psxface.c vendor-sys/acpica/dist/namespace/ vendor-sys/acpica/dist/namespace/nsaccess.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c - copied unchanged from r193239, vendor-sys/acpica/dist/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c - copied unchanged from r193239, vendor-sys/acpica/dist/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c - copied unchanged from r193239, vendor-sys/acpica/dist/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c - copied unchanged from r193239, vendor-sys/acpica/dist/nsxfobj.c vendor-sys/acpica/dist/resources/ vendor-sys/acpica/dist/resources/rsaddr.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c - copied unchanged from r193239, vendor-sys/acpica/dist/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c - copied unchanged from r193239, vendor-sys/acpica/dist/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsio.c vendor-sys/acpica/dist/resources/rsirq.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsirq.c vendor-sys/acpica/dist/resources/rslist.c - copied unchanged from r193239, vendor-sys/acpica/dist/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/rsxface.c vendor-sys/acpica/dist/tables/ vendor-sys/acpica/dist/tables/tbfadt.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c - copied unchanged from r193239, vendor-sys/acpica/dist/tbxfroot.c vendor-sys/acpica/dist/tools/ vendor-sys/acpica/dist/tools/acpiexec/ vendor-sys/acpica/dist/tools/acpiexec/aecommon.h - copied unchanged from r193239, vendor-sys/acpica/dist/aecommon.h vendor-sys/acpica/dist/utilities/ vendor-sys/acpica/dist/utilities/utalloc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c - copied unchanged from r193239, vendor-sys/acpica/dist/utcache.c vendor-sys/acpica/dist/utilities/utclib.c - copied unchanged from r193239, vendor-sys/acpica/dist/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c - copied unchanged from r193239, vendor-sys/acpica/dist/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c - copied unchanged from r193239, vendor-sys/acpica/dist/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c - copied unchanged from r193239, vendor-sys/acpica/dist/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c - copied unchanged from r193239, vendor-sys/acpica/dist/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c - copied unchanged from r193239, vendor-sys/acpica/dist/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c - copied unchanged from r193239, vendor-sys/acpica/dist/utinit.c vendor-sys/acpica/dist/utilities/utmath.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c - copied unchanged from r193239, vendor-sys/acpica/dist/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c - copied unchanged from r193239, vendor-sys/acpica/dist/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c - copied unchanged from r193239, vendor-sys/acpica/dist/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c - copied unchanged from r193239, vendor-sys/acpica/dist/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c - copied unchanged from r193239, vendor-sys/acpica/dist/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c - copied unchanged from r193239, vendor-sys/acpica/dist/utxface.c Deleted: vendor-sys/acpica/dist/CHANGES.txt vendor-sys/acpica/dist/acapps.h vendor-sys/acpica/dist/acconfig.h vendor-sys/acpica/dist/acdebug.h vendor-sys/acpica/dist/acdisasm.h vendor-sys/acpica/dist/acdispat.h vendor-sys/acpica/dist/acefi.h vendor-sys/acpica/dist/acenv.h vendor-sys/acpica/dist/acevents.h vendor-sys/acpica/dist/acexcep.h vendor-sys/acpica/dist/acfreebsd.h vendor-sys/acpica/dist/acgcc.h vendor-sys/acpica/dist/acglobal.h vendor-sys/acpica/dist/achware.h vendor-sys/acpica/dist/acinterp.h vendor-sys/acpica/dist/aclocal.h vendor-sys/acpica/dist/acmacros.h vendor-sys/acpica/dist/acnames.h vendor-sys/acpica/dist/acnamesp.h vendor-sys/acpica/dist/acobject.h vendor-sys/acpica/dist/acopcode.h vendor-sys/acpica/dist/acoutput.h vendor-sys/acpica/dist/acparser.h vendor-sys/acpica/dist/acpi.h vendor-sys/acpica/dist/acpiosxf.h vendor-sys/acpica/dist/acpixf.h vendor-sys/acpica/dist/acresrc.h vendor-sys/acpica/dist/acstruct.h vendor-sys/acpica/dist/actables.h vendor-sys/acpica/dist/actbl.h vendor-sys/acpica/dist/actbl1.h vendor-sys/acpica/dist/actbl2.h vendor-sys/acpica/dist/actypes.h vendor-sys/acpica/dist/acutils.h vendor-sys/acpica/dist/aecommon.h vendor-sys/acpica/dist/amlcode.h vendor-sys/acpica/dist/amlresrc.h vendor-sys/acpica/dist/dbcmds.c vendor-sys/acpica/dist/dbdisply.c vendor-sys/acpica/dist/dbexec.c vendor-sys/acpica/dist/dbfileio.c vendor-sys/acpica/dist/dbhistry.c vendor-sys/acpica/dist/dbinput.c vendor-sys/acpica/dist/dbstats.c vendor-sys/acpica/dist/dbutils.c vendor-sys/acpica/dist/dbxface.c vendor-sys/acpica/dist/dmbuffer.c vendor-sys/acpica/dist/dmnames.c vendor-sys/acpica/dist/dmobject.c vendor-sys/acpica/dist/dmopcode.c vendor-sys/acpica/dist/dmresrc.c vendor-sys/acpica/dist/dmresrcl.c vendor-sys/acpica/dist/dmresrcs.c vendor-sys/acpica/dist/dmutils.c vendor-sys/acpica/dist/dmwalk.c vendor-sys/acpica/dist/dsfield.c vendor-sys/acpica/dist/dsinit.c vendor-sys/acpica/dist/dsmethod.c vendor-sys/acpica/dist/dsmthdat.c vendor-sys/acpica/dist/dsobject.c vendor-sys/acpica/dist/dsopcode.c vendor-sys/acpica/dist/dsutils.c vendor-sys/acpica/dist/dswexec.c vendor-sys/acpica/dist/dswload.c vendor-sys/acpica/dist/dswscope.c vendor-sys/acpica/dist/dswstate.c vendor-sys/acpica/dist/evevent.c vendor-sys/acpica/dist/evgpe.c vendor-sys/acpica/dist/evgpeblk.c vendor-sys/acpica/dist/evmisc.c vendor-sys/acpica/dist/evregion.c vendor-sys/acpica/dist/evrgnini.c vendor-sys/acpica/dist/evsci.c vendor-sys/acpica/dist/evxface.c vendor-sys/acpica/dist/evxfevnt.c vendor-sys/acpica/dist/evxfregn.c vendor-sys/acpica/dist/exconfig.c vendor-sys/acpica/dist/exconvrt.c vendor-sys/acpica/dist/excreate.c vendor-sys/acpica/dist/exdump.c vendor-sys/acpica/dist/exfield.c vendor-sys/acpica/dist/exfldio.c vendor-sys/acpica/dist/exmisc.c vendor-sys/acpica/dist/exmutex.c vendor-sys/acpica/dist/exnames.c vendor-sys/acpica/dist/exoparg1.c vendor-sys/acpica/dist/exoparg2.c vendor-sys/acpica/dist/exoparg3.c vendor-sys/acpica/dist/exoparg6.c vendor-sys/acpica/dist/exprep.c vendor-sys/acpica/dist/exregion.c vendor-sys/acpica/dist/exresnte.c vendor-sys/acpica/dist/exresolv.c vendor-sys/acpica/dist/exresop.c vendor-sys/acpica/dist/exstore.c vendor-sys/acpica/dist/exstoren.c vendor-sys/acpica/dist/exstorob.c vendor-sys/acpica/dist/exsystem.c vendor-sys/acpica/dist/exutils.c vendor-sys/acpica/dist/hwacpi.c vendor-sys/acpica/dist/hwgpe.c vendor-sys/acpica/dist/hwregs.c vendor-sys/acpica/dist/hwsleep.c vendor-sys/acpica/dist/hwtimer.c vendor-sys/acpica/dist/nsaccess.c vendor-sys/acpica/dist/nsalloc.c vendor-sys/acpica/dist/nsdump.c vendor-sys/acpica/dist/nsdumpdv.c vendor-sys/acpica/dist/nseval.c vendor-sys/acpica/dist/nsinit.c vendor-sys/acpica/dist/nsload.c vendor-sys/acpica/dist/nsnames.c vendor-sys/acpica/dist/nsobject.c vendor-sys/acpica/dist/nsparse.c vendor-sys/acpica/dist/nssearch.c vendor-sys/acpica/dist/nsutils.c vendor-sys/acpica/dist/nswalk.c vendor-sys/acpica/dist/nsxfeval.c vendor-sys/acpica/dist/nsxfname.c vendor-sys/acpica/dist/nsxfobj.c vendor-sys/acpica/dist/psargs.c vendor-sys/acpica/dist/psloop.c vendor-sys/acpica/dist/psopcode.c vendor-sys/acpica/dist/psparse.c vendor-sys/acpica/dist/psscope.c vendor-sys/acpica/dist/pstree.c vendor-sys/acpica/dist/psutils.c vendor-sys/acpica/dist/pswalk.c vendor-sys/acpica/dist/psxface.c vendor-sys/acpica/dist/rsaddr.c vendor-sys/acpica/dist/rscalc.c vendor-sys/acpica/dist/rscreate.c vendor-sys/acpica/dist/rsdump.c vendor-sys/acpica/dist/rsinfo.c vendor-sys/acpica/dist/rsio.c vendor-sys/acpica/dist/rsirq.c vendor-sys/acpica/dist/rslist.c vendor-sys/acpica/dist/rsmemory.c vendor-sys/acpica/dist/rsmisc.c vendor-sys/acpica/dist/rsutils.c vendor-sys/acpica/dist/rsxface.c vendor-sys/acpica/dist/tbfadt.c vendor-sys/acpica/dist/tbfind.c vendor-sys/acpica/dist/tbinstal.c vendor-sys/acpica/dist/tbutils.c vendor-sys/acpica/dist/tbxface.c vendor-sys/acpica/dist/tbxfroot.c vendor-sys/acpica/dist/utalloc.c vendor-sys/acpica/dist/utcache.c vendor-sys/acpica/dist/utclib.c vendor-sys/acpica/dist/utcopy.c vendor-sys/acpica/dist/utdebug.c vendor-sys/acpica/dist/utdelete.c vendor-sys/acpica/dist/uteval.c vendor-sys/acpica/dist/utglobal.c vendor-sys/acpica/dist/utinit.c vendor-sys/acpica/dist/utmath.c vendor-sys/acpica/dist/utmisc.c vendor-sys/acpica/dist/utmutex.c vendor-sys/acpica/dist/utobject.c vendor-sys/acpica/dist/utresrc.c vendor-sys/acpica/dist/utstate.c vendor-sys/acpica/dist/uttrack.c vendor-sys/acpica/dist/utxface.c Copied: vendor-sys/acpica/dist/changes.txt (from r193239, vendor-sys/acpica/dist/CHANGES.txt) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor-sys/acpica/dist/changes.txt Mon Jun 1 19:16:31 2009 (r193249, copy of r193239, vendor-sys/acpica/dist/CHANGES.txt) @@ -0,0 +1,8448 @@ +---------------------------------------- +20 March 2007. Summary of changes for version 20070320: + +1) ACPI CA Core Subsystem: + +Implemented a change to the order of interpretation and +evaluation of AML operand objects within the AML interpreter. The +interpreter now evaluates operands in the order that they appear +in the AML stream (and the corresponding ASL code), instead of in +the reverse order (after the entire operand list has been +parsed). The previous behavior caused several subtle +incompatibilities with the Microsoft AML interpreter as well as +being somewhat non-intuitive. BZ 7871, local BZ 263. Valery +Podrezov. + +Implemented a change to the ACPI Global Lock support. All +interfaces to the global lock now allow the same thread to +acquire the lock multiple times. This affects the +AcpiAcquireGlobalLock external interface to the global lock as +well as the internal use of the global lock to support AML fields +-- a control method that is holding the global lock can now +simultaneously access AML fields that require global lock +protection. Previously, in both cases, this would have resulted +in an AE_ALREADY_ACQUIRED exception. The change to +AcpiAcquireGlobalLock is of special interest to drivers for the +Embedded Controller. There is no change to the behavior of the +AML Acquire operator, as this can already be used to acquire a +mutex multiple times by the same thread. BZ 8066. With assistance +from Alexey Starikovskiy. + +Fixed a problem where invalid objects could be referenced in the +AML Interpreter after error conditions. During operand +evaluation, ensure that the internal "Return Object" field is +cleared on error and only valid pointers are stored there. Caused +occasional access to deleted objects that resulted in "large +reference count" warning messages. Valery Podrezov. + +Fixed a problem where an AE_STACK_OVERFLOW internal exception +could occur on deeply nested control method invocations. BZ 7873, +local BZ 487. Valery Podrezov. + +Fixed an internal problem with the handling of result objects on +the interpreter result stack. BZ 7872. Valery Podrezov. + +Removed obsolete code that handled the case where AML_NAME_OP is +the target of a reference (Reference.Opcode). This code was no +longer necessary. BZ 7874. Valery Podrezov. + +Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. +This was a remnant from the previously discontinued 16-bit +support. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + +---------------------------------------- +26 January 2007. Summary of changes for version 20070126: + +1) ACPI CA Core Subsystem: + +Added the 2007 copyright to all module headers and signons. This +affects virtually every file in the ACPICA core subsystem, the +iASL compiler, and the utilities. + +Implemented a fix for an incorrect parameter passed to +AcpiTbDeleteTable during a table load. A bad pointer was passed +in the case where the DSDT is overridden, causing a fault in this +case. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + +---------------------------------------- +15 December 2006. Summary of changes for version 20061215: + +1) ACPI CA Core Subsystem: + +Support for 16-bit ACPICA has been completely removed since it is +no longer necessary and it clutters the code. All 16-bit macros, +types, and conditional compiles have been removed, cleaning up +and simplifying the code across the entire subsystem. DOS support +is no longer needed since the bootable Linux firmware kit is now +available. + +The handler for the Global Lock is now removed during +AcpiTerminate to enable a clean subsystem restart, via the +implementation of the AcpiEvRemoveGlobalLockHandler function. +(With assistance from Joel Bretz, HP) + +Implemented enhancements to the multithreading support within the +debugger to enable improved multithreading debugging and +evaluation of the subsystem. (Valery Podrezov) + +Debugger: Enhanced the Statistics/Memory command to emit the +total (maximum) memory used during the execution, as well as the +maximum memory consumed by each of the various object types. +(Valery Podrezov) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Implemented a new option (-m) to display full memory +use statistics upon subsystem/program termination. (Valery +Podrezov) + +---------------------------------------- +09 November 2006. Summary of changes for version 20061109: + +1) ACPI CA Core Subsystem: + +Optimized the Load ASL operator in the case where the source +operand is an operation region. Simply map the operation region +memory, instead of performing a bytewise read. (Region must be of +type SystemMemory, see below.) + +Fixed the Load ASL operator for the case where the source operand +is a region field. A buffer object is also allowed as the source +operand. BZ 480 + +Fixed a problem where the Load ASL operator allowed the source +operand to be an operation region of any type. It is now +restricted to regions of type SystemMemory, as per the ACPI +specification. BZ 481 + +Additional cleanup and optimizations for the new Table Manager +code. + +AcpiEnable will now fail if all of the required ACPI tables are +not loaded (FADT, FACS, DSDT). BZ 477 + +Added #pragma pack(8/4) to acobject.h to ensure that the +structures in this header are always compiled as aligned. The +ACPI_OPERAND_OBJECT has been manually optimized to be aligned and +will not work if it is byte-packed. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem where the presence of the _OSI predefined control +method within complex expressions could cause an internal +compiler error. + +AcpiExec: Implemented full region support for multiple address +spaces. SpaceId is now part of the REGION object. BZ 429 + +---------------------------------------- +11 October 2006. Summary of changes for version 20061011: + +1) ACPI CA Core Subsystem: + +Completed an AML interpreter performance enhancement for control +method execution. Previously a 2-pass parse/execution, control +methods are now completely parsed and executed in a single pass. +This improves overall interpreter performance by ~25%, reduces +code size, and reduces CPU stack use. (Valery Podrezov + +interpreter changes in version 20051202 that eliminated namespace +loading during the pass one parse.) + +Implemented _CID support for PCI Root Bridge detection. If the +_HID does not match the predefined PCI Root Bridge IDs, the _CID +list (if present) is now obtained and also checked for an ID +match. + +Implemented additional support for the PCI _ADR execution: +upsearch until a device scope is found before executing _ADR. +This allows PCI_Config operation regions to be declared locally +within control methods underneath PCI device objects. + +Fixed a problem with a possible race condition between threads +executing AcpiWalkNamespace and the AML interpreter. This +condition was removed by modifying AcpiWalkNamespace to (by +default) ignore all temporary namespace entries created during +any concurrent control method execution. An additional namespace +race condition is known to exist between AcpiWalkNamespace and +the Load/Unload ASL operators and is still under investigation. + +Restructured the AML ParseLoop function, breaking it into several +subfunctions in order to reduce CPU stack use and improve +maintainability. (Mikhail Kouzmich) + +AcpiGetHandle: Fix for parameter validation to detect invalid +combinations of prefix handle and pathname. BZ 478 + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + Current Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + +2) iASL Compiler/Disassembler and Tools: + +Ported the -g option (get local ACPI tables) to the new ACPICA +Table Manager to restore original behavior. + +---------------------------------------- +27 September 2006. Summary of changes for version 20060927: + +1) ACPI CA Core Subsystem: + +Removed the "Flags" parameter from AcpiGetRegister and +AcpiSetRegister. These functions now use a spinlock for mutual +exclusion and the interrupt level indication flag is not needed. + +Fixed a problem with the Global Lock where the lock could appear +to be obtained before it is actually obtained. The global lock +semaphore was inadvertently created with one unit instead of zero +units. (BZ 464) Fiodor Suietov. + +Fixed a possible memory leak and fault in +AcpiExResolveObjectToValue during a read from a buffer or region +field. (BZ 458) Fiodor Suietov. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a compilation problem with the pre-defined Resource +Descriptor field names where an "object does not exist" error +could be incorrectly generated if the parent ResourceTemplate +pathname places the template within a different namespace scope +than the current scope. (BZ 7212) + +Fixed a problem where the compiler could hang after syntax errors +detected in an ElseIf construct. (BZ 453) + +Fixed a problem with the AmlFilename parameter to the +DefinitionBlock() operator. An incorrect output filename was +produced when this parameter was a null string (""). Now, the +original input filename is used as the AML output filename, with +an ".aml" extension. + +Implemented a generic batch command mode for the AcpiExec utility +(execute any AML debugger command) (Valery Podrezov). + +---------------------------------------- +12 September 2006. Summary of changes for version 20060912: + +1) ACPI CA Core Subsystem: + +Enhanced the implementation of the "serialized mode" of the +interpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.) +When this mode is specified, instead of creating a serialization +semaphore per control method, the interpreter lock is simply no +longer released before a blocking operation during control method +execution. This effectively makes the AML Interpreter single- +threaded. The overhead of a semaphore per-method is eliminated. + +Fixed a regression where an error was no longer emitted if a +control method attempts to create 2 objects of the same name. +This once again returns AE_ALREADY_EXISTS. When this exception +occurs, it invokes the mechanism that will dynamically serialize +the control method to possible prevent future errors. (BZ 440) + +Integrated a fix for a problem with PCI Express HID detection in +the PCI Config Space setup procedure. (BZ 7145) + +Moved all FADT-related functions to a new file, tbfadt.c. +Eliminated the AcpiHwInitialize function - the FADT registers are +now validated when the table is loaded. + +Added two new warnings during FADT verification - 1) if the FADT +is larger than the largest known FADT version, and 2) if there is +a mismatch between a 32-bit block address and the 64-bit X +counterpart (when both are non-zero.) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the implementation of the Switch() operator +where the temporary variable was declared too close to the actual +Switch, instead of at method level. This could cause a problem if +the Switch() operator is within a while loop, causing an error on +the second iteration. (BZ 460) + +Disassembler - fix for error emitted for unknown type for target +of scope operator. Now, ignore it and continue. + +Disassembly of an FADT now verifies the input FADT and reports +any errors found. Fix for proper disassembly of full-sized (ACPI +2.0) FADTs. + +Disassembly of raw data buffers with byte initialization data now +prefixes each output line with the current buffer offset. + +Disassembly of ASF! table now includes all variable-length data +fields at the end of some of the subtables. + +The disassembler now emits a comment if a buffer appears to be a +ResourceTemplate, but cannot be disassembled as such because the +EndTag does not appear at the very end of the buffer. + +AcpiExec - Added the "-t" command line option to enable the +serialized mode of the AML interpreter. + +---------------------------------------- +31 August 2006. Summary of changes for version 20060831: + +1) ACPI CA Core Subsystem: + +Miscellaneous fixes for the Table Manager: +- Correctly initialize internal common FADT for all 64-bit "X" +fields +- Fixed a couple table mapping issues during table load +- Fixed a couple alignment issues for IA64 +- Initialize input array to zero in AcpiInitializeTables +- Additional parameter validation for AcpiGetTable, +AcpiGetTableHeader, AcpiGetTableByIndex + +Change for GPE support: when a "wake" GPE is received, all wake +GPEs are now immediately disabled to prevent the waking GPE from +firing again and to prevent other wake GPEs from interrupting the +wake process. + +Added the AcpiGpeCount global that tracks the number of processed +GPEs, to be used for debugging systems with a large number of +ACPI interrupts. + +Implemented support for the "DMAR" ACPI table (DMA Redirection +Table) in both the ACPICA headers and the disassembler. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + Current Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler support for the DMAR ACPI table. + +---------------------------------------- +23 August 2006. Summary of changes for version 20060823: + +1) ACPI CA Core Subsystem: + +The Table Manager component has been completely redesigned and +reimplemented. The new design is much simpler, and reduces the +overall code and data size of the kernel-resident ACPICA by +approximately 5%. Also, it is now possible to obtain the ACPI +tables very early during kernel initialization, even before +dynamic memory management is initialized. (Alexey Starikovskiy, +Fiodor Suietov, Bob Moore) + +Obsolete ACPICA interfaces: + +- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early +kernel init time). +- AcpiLoadTable: Not needed. +- AcpiUnloadTable: Not needed. + +New ACPICA interfaces: + +- AcpiInitializeTables: Must be called before the table manager +can be used. +- AcpiReallocateRootTable: Used to transfer the root table to +dynamically allocated memory after it becomes available. +- AcpiGetTableByIndex: Allows the host to easily enumerate all +ACPI tables in the RSDT/XSDT. + +Other ACPICA changes: + +- AcpiGetTableHeader returns the actual mapped table header, not +a copy. Use AcpiOsUnmapMemory to free this mapping. +- AcpiGetTable returns the actual mapped table. The mapping is +managed internally and must not be deleted by the caller. Use of +this interface causes no additional dynamic memory allocation. +- AcpiFindRootPointer: Support for physical addressing has been +eliminated, it appeared to be unused. +- The interface to AcpiOsMapMemory has changed to be consistent +with the other allocation interfaces. +- The interface to AcpiOsGetRootPointer has changed to eliminate +unnecessary parameters. +- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 +bits on 64-bit platforms. Was previously 64 bits on all +platforms. +- The interface to the ACPI Global Lock acquire/release macros +have changed slightly since ACPICA no longer keeps a local copy +of the FACS with a constructed pointer to the actual global lock. + +Porting to the new table manager: + +- AcpiInitializeTables: Must be called once, and can be called +anytime during the OS initialization process. It allows the host +to specify an area of memory to be used to store the internal +version of the RSDT/XSDT (root table). This allows the host to +access ACPI tables before memory management is initialized and +running. +- AcpiReallocateRootTable: Can be called after memory management +is running to copy the root table to a dynamically allocated +array, freeing up the scratch memory specified in the call to +AcpiInitializeTables. +- AcpiSubsystemInitialize: This existing interface is independent +of the Table Manager, and does not have to be called before the +Table Manager can be used, it only must be called before the rest +of ACPICA can be used. +- ACPI Tables: Some changes have been made to the names and +structure of the actbl.h and actbl1.h header files and may +require changes to existing code. For example, bitfields have +been completely removed because of their lack of portability +across C compilers. +- Update interfaces to the Global Lock acquire/release macros if +local versions are used. (see acwin.h) + +Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c + +New files: tbfind.c + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + Current Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +21 July 2006. Summary of changes for version 20060721: + +1) ACPI CA Core Subsystem: + +The full source code for the ASL test suite used to validate the +iASL compiler and the ACPICA core subsystem is being released +with the ACPICA source for the first time. The source is +contained in a separate package and consists of over 1100 files +that exercise all ASL/AML operators. The package should appear on +the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor +Suietov) + +Completed a new design and implementation for support of the ACPI +Global Lock. On the OS side, the global lock is now treated as a +standard AML mutex. Previously, multiple OS threads could +"acquire" the global lock simultaneously. However, this could +cause the BIOS to be starved out of the lock - especially in +cases such as the Embedded Controller driver where there is a +tight coupling between the OS and the BIOS. + +Implemented an optimization for the ACPI Global Lock interrupt +mechanism. The Global Lock interrupt handler no longer queues the +execution of a separate thread to signal the global lock +semaphore. Instead, the semaphore is signaled directly from the +interrupt handler. + +Implemented support within the AML interpreter for package +objects that contain a larger AML length (package list length) +than the package element count. In this case, the length of the +package is truncated to match the package element count. Some +BIOS code apparently modifies the package length on the fly, and +this change supports this behavior. Provides compatibility with +the MS AML interpreter. (With assistance from Fiodor Suietov) + +Implemented a temporary fix for the BankValue parameter of a Bank +Field to support all constant values, now including the Zero and +One opcodes. Evaluation of this parameter must eventually be +converted to a full TermArg evaluation. A not-implemented error +is now returned (temporarily) for non-constant values for this +parameter. + +Fixed problem reports (Fiodor Suietov) integrated: +- Fix for premature object deletion after CopyObject on Operation +Region (BZ 350) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total + Debug Version: 160.9K Code, 65.1K Data, 226.0K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +07 July 2006. Summary of changes for version 20060707: + +1) ACPI CA Core Subsystem: + +Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C +compilers that do not allow the initialization of address +pointers within packed structures - even though the hardware +itself may support misaligned transfers. Some of the debug data +structures are packed by default to minimize size. + +Added an error message for the case where AcpiOsGetThreadId() +returns zero. A non-zero value is required by the core ACPICA +code to ensure the proper operation of AML mutexes and recursive +control methods. + +The DSDT is now the only ACPI table that determines whether the +AML interpreter is in 32-bit or 64-bit mode. Not really a +functional change, but the hooks for per-table 32/64 switching +have been removed from the code. A clarification to the ACPI +specification is forthcoming in ACPI 3.0B. + +Fixed a possible leak of an OwnerID in the error path of +AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table +OwnerID deletion to a single place in AcpiTbUninstallTable to +correct possible leaks when using the AcpiTbDeleteTablesByType +interface (with assistance from Lance Ortiz.) + +Fixed a problem with Serialized control methods where the +semaphore associated with the method could be over-signaled after +multiple method invocations. + +Fixed two issues with the locking of the internal namespace data +structure. Both the Unload() operator and AcpiUnloadTable +interface now lock the namespace during the namespace deletion +associated with the table unload (with assistance from Linn +Crosetto.) + +Fixed problem reports (Valery Podrezov) integrated: +- Eliminate unnecessary memory allocation for CreateXxxxField (BZ +5426) + +Fixed problem reports (Fiodor Suietov) integrated: +- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) +- On Address Space handler deletion, needless deactivation call +(BZ 374) +- AcpiRemoveAddressSpaceHandler: validate Device handle parameter +(BZ 375) +- Possible memory leak, Notify sub-objects of Processor, Power, +ThermalZone (BZ 376) +- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ +378) +- Minimum Length of RSDT should be validated (BZ 379) +- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj +has no Handler (BZ (380) +- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified +type loaded (BZ 381) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed problem reports: +Compiler segfault when ASL contains a long (>1024) String +declaration (BZ 436) + +---------------------------------------- +23 June 2006. Summary of changes for version 20060623: + +1) ACPI CA Core Subsystem: + +Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. +This allows the type to be customized to the host OS for improved +efficiency (since a spinlock is usually a very small object.) + +Implemented support for "ignored" bits in the ACPI registers. +According to the ACPI specification, these bits should be +preserved when writing the registers via a read/modify/write +cycle. There are 3 bits preserved in this manner: PM1_CONTROL[0] +(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. + +Implemented the initial deployment of new OSL mutex interfaces. +Since some host operating systems have separate mutex and +semaphore objects, this feature was requested. The base code now +uses mutexes (and the new mutex interfaces) wherever a binary +semaphore was used previously. However, for the current release, +the mutex interfaces are defined as macros to map them to the +existing semaphore interfaces. Therefore, no OSL changes are +required at this time. (See acpiosxf.h) + +Fixed several problems with the support for the control method +SyncLevel parameter. The SyncLevel now works according to the +ACPI specification and in concert with the Mutex SyncLevel +parameter, since the current SyncLevel is a property of the +executing thread. Mutual exclusion for control methods is now +implemented with a mutex instead of a semaphore. + +Fixed three instances of the use of the C shift operator in the +bitfield support code (exfldio.c) to avoid the use of a shift +value larger than the target data width. The behavior of C +compilers is undefined in this case and can cause unpredictable +results, and therefore the case must be detected and avoided. +(Fiodor Suietov) + +Added an info message whenever an SSDT or OEM table is loaded +dynamically via the Load() or LoadTable() ASL operators. This +should improve debugging capability since it will show exactly +what tables have been loaded (beyond the tables present in the +RSDT/XSDT.) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + Current Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +08 June 2006. Summary of changes for version 20060608: + +1) ACPI CA Core Subsystem: + +Converted the locking mutex used for the ACPI hardware to a +spinlock. This change should eliminate all problems caused by +attempting to acquire a semaphore at interrupt level, and it +means that all ACPICA external interfaces that directly access +the ACPI hardware can be safely called from interrupt level. OSL +code that implements the semaphore interfaces should be able to +eliminate any workarounds for being called at interrupt level. + +Fixed a regression introduced in 20060526 where the ACPI device +initialization could be prematurely aborted with an AE_NOT_FOUND +if a device did not have an optional _INI method. + +Fixed an IndexField issue where a write to the Data Register +should be limited in size to the AccessSize (width) of the +IndexField itself. (BZ 433, Fiodor Suietov) + +Fixed problem reports (Valery Podrezov) integrated: +- Allow store of ThermalZone objects to Debug object (BZ +5369/5370) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiGetTableHeader doesn't handle multiple instances correctly +(BZ 364) + +Removed four global mutexes that were obsolete and were no longer +being used. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a fault when using -g option (get tables from registry) on +Windows machines. + +Fixed problem reports integrated: +- Generate error if CreateField NumBits parameter is zero. (BZ +405) +- Fault if Offset/Length in Field unit is very large (BZ 432, +Fiodor Suietov) +- Global table revision override (-r) is ignored (BZ 413) + +---------------------------------------- +26 May 2006. Summary of changes for version 20060526: + +1) ACPI CA Core Subsystem: + +Restructured, flattened, and simplified the internal interfaces +for namespace object evaluation - resulting in smaller code, less +CPU stack use, and fewer interfaces. (With assistance from +Mikhail Kouzmich) + +Fixed a problem with the CopyObject operator where the first +parameter was not typed correctly for the parser, interpreter, +compiler, and disassembler. Caused various errors and unexpected +behavior. + +Fixed a problem where a ShiftLeft or ShiftRight of more than 64 +bits produced incorrect results with some C compilers. Since the +behavior of C compilers when the shift value is larger than the +datatype width is apparently not well defined, the interpreter +now detects this condition and simply returns zero as expected in +all such cases. (BZ 395) + +Fixed problem reports (Valery Podrezov) integrated: +- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ +5329) +- Allow interpreter to handle nested method declarations (BZ +5361) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiTerminate doesn't free debug memory allocation list objects +(BZ 355) +- After Core Subsystem shutdown, AcpiSubsystemStatus returns +AE_OK (BZ 356) +- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ +357) +- Resource Manager should return AE_TYPE for non-device objects +(BZ 358) +- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) +- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData +(BZ 360) +- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) +- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) +- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is +loaded (BZ 365) +- Status of the Global Initialization Handler call not used (BZ +366) +- Incorrect object parameter to Global Initialization Handler (BZ +367) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +Modified the parser to allow the names IO, DMA, and IRQ to be +used as namespace identifiers with no collision with existing +resource descriptor macro names. This provides compatibility with +other ASL compilers and is most useful for +disassembly/recompilation of existing tables without parse +errors. (With assistance from Thomas Renninger) + +Disassembler: fixed an incorrect disassembly problem with the +DataTableRegion and CopyObject operators. Fixed a possible fault +during disassembly of some Alias operators. + +---------------------------------------- +12 May 2006. Summary of changes for version 20060512: + +1) ACPI CA Core Subsystem: + +Replaced the AcpiOsQueueForExecution interface with a new +interface named AcpiOsExecute. The major difference is that the +new interface does not have a Priority parameter, this appeared +to be useless and has been replaced by a Type parameter. The Type +tells the host what type of execution is being requested, such as +global lock handler, notify handler, GPE handler, etc. This +allows the host to queue and execute the request as appropriate +for the request type, possibly using different work queues and +different priorities for the various request types. This enables +fixes for multithreading deadlock problems such as BZ #5534, and +will require changes to all existing OS interface layers. (Alexey +Starikovskiy and Bob Moore) + +Fixed a possible memory leak associated with the support for the +so-called "implicit return" ACPI extension. Reported by FreeBSD, +BZ #6514. (Fiodor Suietov) + +Fixed a problem with the Load() operator where a table load from +an operation region could overwrite an internal table buffer by +up to 7 bytes and cause alignment faults on IPF systems. (With +assistance from Luming Yu) + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + Current Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to cross reference the internal +namespace and automatically generate ASL External() statements +for symbols not defined within the current table being +disassembled. This will simplify the disassembly and +recompilation of interdependent tables such as SSDTs since these +statements will no longer have to be added manually. + +Disassembler: Implemented experimental support to automatically +detect invocations of external control methods and generate +appropriate External() statements. This is problematic because +the AML cannot be correctly parsed until the number of arguments +for each control method is known. Currently, standalone method +invocations and invocations as the source operand of a Store() +statement are supported. + +Disassembler: Implemented support for the ASL pseudo-operators +LNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled +as LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this +makes the disassembled ASL code more readable and likely closer +to the original ASL source. + +---------------------------------------- +21 April 2006. Summary of changes for version 20060421: + +1) ACPI CA Core Subsystem: + +Removed a device initialization optimization introduced in +20051216 where the _STA method was not run unless an _INI was +also present for the same device. This optimization could cause +problems because it could allow _INI methods to be run within a +not-present device subtree. (If a not-present device had no _INI, +_STA would not be run, the not-present status would not be +discovered, and the children of the device would be incorrectly +traversed.) + +Implemented a new _STA optimization where namespace subtrees that +do not contain _INI are identified and ignored during device +initialization. Selectively running _STA can significantly +improve boot time on large machines (with assistance from Len +Brown.) + +Implemented support for the device initialization case where the +returned _STA flags indicate a device not-present but +functioning. In this case, _INI is not run, but the device +children are examined for presence, as per the ACPI +specification. + +Implemented an additional change to the IndexField support in +order to conform to MS behavior. The value written to the Index +Register is not simply a byte offset, it is a byte offset in +units of the access width of the parent Index Field. (Fiodor +Suietov) + +Defined and deployed a new OSL interface, AcpiOsValidateAddress. +This interface is called during the creation of all AML operation +regions, and allows the host OS to exert control over what +addresses it will allow the AML code to access. Operation Regions +whose addresses are disallowed will cause a runtime exception +when they are actually accessed (will not affect or abort table +loading.) See oswinxf or osunixxf for an example implementation. + +Defined and deployed a new OSL interface, +AcpiOsValidateInterface. This interface allows the host OS to +match the various "optional" interface/behavior strings for the +_OSI predefined control method as appropriate (with assistance +from Bjorn Helgaas.) See oswinxf or osunixxf for an example +implementation. + +Restructured and corrected various problems in the exception +handling code paths within DsCallControlMethod and +DsTerminateControlMethod in dsmethod (with assistance from +Takayoshi Kochi.) + +Modified the Linux source converter to ignore quoted string +literals while converting identifiers from mixed to lower case. +This will correct problems with the disassembler and other areas +where such strings must not be modified. + +The ACPI_FUNCTION_* macros no longer require quotes around the +function name. This allows the Linux source converter to convert +the names, now that the converter ignores quoted strings. + +Example Code and Data Size: These are the sizes for the OS- +independent acpica.lib produced by the Microsoft Visual C++ 6.0 +32-bit compiler. The debug version of the code includes the debug +output trace mechanism and has a much larger code and data size. + + Previous Release: + + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented 3 new warnings for iASL, and implemented multiple +warning levels (w2 flag). + +1) Ignored timeouts: If the TimeoutValue parameter to Wait or +Acquire is not WAIT_FOREVER (0xFFFF) and the code does not +examine the return value to check for the possible timeout, a +warning is issued. + +2) Useless operators: If an ASL operator does not specify an +optional target operand and it also does not use the function +return value from the operator, a warning is issued since the +operator effectively does nothing. + +3) Unreferenced objects: If a namespace object is created, but +never referenced, a warning is issued. This is a warning level 2 +since there are cases where this is ok, such as when a secondary +table is loaded that uses the unreferenced objects. Even so, care +is taken to only flag objects that don't look like they will ever +be used. For example, the reserved methods (starting with an +underscore) are usually not referenced because it is expected +that the OS will invoke them. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From gallatin at FreeBSD.org Mon Jun 1 19:16:59 2009 From: gallatin at FreeBSD.org (Andrew Gallatin) Date: Mon Jun 1 19:17:23 2009 Subject: svn commit: r193250 - head/sys/dev/mxge Message-ID: <200906011916.n51JGvB3088714@svn.freebsd.org> Author: gallatin Date: Mon Jun 1 19:16:57 2009 New Revision: 193250 URL: http://svn.freebsd.org/changeset/base/193250 Log: Set an rx jumbo cluster to the correct size before using bus_dmamap_load_mbuf_sg() on it. This prevents data corruption when the mxge MTU is between 4076 and 8172 on machines with 4KB pages and MXGE_VIRT_JUMBOS is in use (which it isn't, in -current or -stable) Modified: head/sys/dev/mxge/if_mxge.c head/sys/dev/mxge/if_mxge_var.h Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Mon Jun 1 19:16:31 2009 (r193249) +++ head/sys/dev/mxge/if_mxge.c Mon Jun 1 19:16:57 2009 (r193250) @@ -2351,7 +2351,7 @@ mxge_get_buf_big(struct mxge_slice_state err = ENOBUFS; goto done; } - m->m_len = rx->cl_size; + m->m_len = rx->mlen; err = bus_dmamap_load_mbuf_sg(rx->dmat, map, m, seg, &cnt, BUS_DMA_NOWAIT); if (err != 0) { @@ -3432,6 +3432,8 @@ mxge_slice_open(struct mxge_slice_state } ss->rx_big.nbufs = nbufs; ss->rx_big.cl_size = cl_size; + ss->rx_big.mlen = ss->sc->ifp->if_mtu + ETHER_HDR_LEN + + ETHER_VLAN_ENCAP_LEN + MXGEFW_PAD; for (i = 0; i <= ss->rx_big.mask; i += ss->rx_big.nbufs) { map = ss->rx_big.info[i].map; err = mxge_get_buf_big(ss, map, i); Modified: head/sys/dev/mxge/if_mxge_var.h ============================================================================== --- head/sys/dev/mxge/if_mxge_var.h Mon Jun 1 19:16:31 2009 (r193249) +++ head/sys/dev/mxge/if_mxge_var.h Mon Jun 1 19:16:57 2009 (r193250) @@ -120,6 +120,7 @@ typedef struct int cl_size; int alloc_fail; int mask; /* number of rx slots -1 */ + int mlen; } mxge_rx_ring_t; typedef struct From jkim at FreeBSD.org Mon Jun 1 19:24:30 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 19:24:44 2009 Subject: svn commit: r193251 - in vendor-sys/acpica/dist: . common compiler debugger disassembler events hardware include include/platform interpreter/dispatcher interpreter/executer interpreter/parser name... Message-ID: <200906011924.n51JOQsp088911@svn.freebsd.org> Author: jkim Date: Mon Jun 1 19:24:26 2009 New Revision: 193251 URL: http://svn.freebsd.org/changeset/base/193251 Log: Temporarily revert system includes fixups to make future import easier. Modified: vendor-sys/acpica/dist/common/adfile.c vendor-sys/acpica/dist/common/adisasm.c vendor-sys/acpica/dist/common/adwalk.c vendor-sys/acpica/dist/common/dmrestag.c vendor-sys/acpica/dist/common/dmtable.c vendor-sys/acpica/dist/common/dmtbdump.c vendor-sys/acpica/dist/common/dmtbinfo.c vendor-sys/acpica/dist/compiler/aslanalyze.c vendor-sys/acpica/dist/compiler/aslcodegen.c vendor-sys/acpica/dist/compiler/aslcompile.c vendor-sys/acpica/dist/compiler/aslcompiler.h vendor-sys/acpica/dist/compiler/aslcompiler.l vendor-sys/acpica/dist/compiler/aslcompiler.y vendor-sys/acpica/dist/compiler/aslerror.c vendor-sys/acpica/dist/compiler/aslfiles.c vendor-sys/acpica/dist/compiler/aslfold.c vendor-sys/acpica/dist/compiler/asllength.c vendor-sys/acpica/dist/compiler/asllisting.c vendor-sys/acpica/dist/compiler/aslload.c vendor-sys/acpica/dist/compiler/asllookup.c vendor-sys/acpica/dist/compiler/aslmain.c vendor-sys/acpica/dist/compiler/aslmap.c vendor-sys/acpica/dist/compiler/aslopcodes.c vendor-sys/acpica/dist/compiler/asloperands.c vendor-sys/acpica/dist/compiler/aslopt.c vendor-sys/acpica/dist/compiler/aslresource.c vendor-sys/acpica/dist/compiler/aslrestype1.c vendor-sys/acpica/dist/compiler/aslrestype2.c vendor-sys/acpica/dist/compiler/aslstubs.c vendor-sys/acpica/dist/compiler/asltransform.c vendor-sys/acpica/dist/compiler/asltree.c vendor-sys/acpica/dist/compiler/aslutils.c vendor-sys/acpica/dist/debugger/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c vendor-sys/acpica/dist/disassembler/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c vendor-sys/acpica/dist/events/evevent.c vendor-sys/acpica/dist/events/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c vendor-sys/acpica/dist/events/evregion.c vendor-sys/acpica/dist/events/evrgnini.c vendor-sys/acpica/dist/events/evsci.c vendor-sys/acpica/dist/events/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c vendor-sys/acpica/dist/hardware/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c vendor-sys/acpica/dist/include/acdisasm.h vendor-sys/acpica/dist/include/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h vendor-sys/acpica/dist/include/acresrc.h vendor-sys/acpica/dist/include/actbl.h vendor-sys/acpica/dist/include/platform/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h vendor-sys/acpica/dist/interpreter/dispatcher/dsfield.c vendor-sys/acpica/dist/interpreter/dispatcher/dsinit.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmethod.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmthdat.c vendor-sys/acpica/dist/interpreter/dispatcher/dsobject.c vendor-sys/acpica/dist/interpreter/dispatcher/dsopcode.c vendor-sys/acpica/dist/interpreter/dispatcher/dsutils.c vendor-sys/acpica/dist/interpreter/dispatcher/dswexec.c vendor-sys/acpica/dist/interpreter/dispatcher/dswload.c vendor-sys/acpica/dist/interpreter/dispatcher/dswscope.c vendor-sys/acpica/dist/interpreter/dispatcher/dswstate.c vendor-sys/acpica/dist/interpreter/executer/exconfig.c vendor-sys/acpica/dist/interpreter/executer/exconvrt.c vendor-sys/acpica/dist/interpreter/executer/excreate.c vendor-sys/acpica/dist/interpreter/executer/exdump.c vendor-sys/acpica/dist/interpreter/executer/exfield.c vendor-sys/acpica/dist/interpreter/executer/exfldio.c vendor-sys/acpica/dist/interpreter/executer/exmisc.c vendor-sys/acpica/dist/interpreter/executer/exmutex.c vendor-sys/acpica/dist/interpreter/executer/exnames.c vendor-sys/acpica/dist/interpreter/executer/exoparg1.c vendor-sys/acpica/dist/interpreter/executer/exoparg2.c vendor-sys/acpica/dist/interpreter/executer/exoparg3.c vendor-sys/acpica/dist/interpreter/executer/exoparg6.c vendor-sys/acpica/dist/interpreter/executer/exprep.c vendor-sys/acpica/dist/interpreter/executer/exregion.c vendor-sys/acpica/dist/interpreter/executer/exresnte.c vendor-sys/acpica/dist/interpreter/executer/exresolv.c vendor-sys/acpica/dist/interpreter/executer/exresop.c vendor-sys/acpica/dist/interpreter/executer/exstore.c vendor-sys/acpica/dist/interpreter/executer/exstoren.c vendor-sys/acpica/dist/interpreter/executer/exstorob.c vendor-sys/acpica/dist/interpreter/executer/exsystem.c vendor-sys/acpica/dist/interpreter/executer/exutils.c vendor-sys/acpica/dist/interpreter/parser/psargs.c vendor-sys/acpica/dist/interpreter/parser/psloop.c vendor-sys/acpica/dist/interpreter/parser/psopcode.c vendor-sys/acpica/dist/interpreter/parser/psparse.c vendor-sys/acpica/dist/interpreter/parser/psscope.c vendor-sys/acpica/dist/interpreter/parser/pstree.c vendor-sys/acpica/dist/interpreter/parser/psutils.c vendor-sys/acpica/dist/interpreter/parser/pswalk.c vendor-sys/acpica/dist/interpreter/parser/psxface.c vendor-sys/acpica/dist/namespace/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c vendor-sys/acpica/dist/osunixxf.c vendor-sys/acpica/dist/resources/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c vendor-sys/acpica/dist/resources/rsirq.c vendor-sys/acpica/dist/resources/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c vendor-sys/acpica/dist/tables/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c vendor-sys/acpica/dist/tools/acpiexec/aecommon.h vendor-sys/acpica/dist/utilities/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c vendor-sys/acpica/dist/utilities/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c vendor-sys/acpica/dist/utilities/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c Modified: vendor-sys/acpica/dist/common/adfile.c ============================================================================== --- vendor-sys/acpica/dist/common/adfile.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adfile.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acapps.h" #include #include Modified: vendor-sys/acpica/dist/common/adisasm.c ============================================================================== --- vendor-sys/acpica/dist/common/adisasm.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adisasm.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,15 +115,15 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "actables.h" +#include "acapps.h" #include #include Modified: vendor-sys/acpica/dist/common/adwalk.c ============================================================================== --- vendor-sys/acpica/dist/common/adwalk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adwalk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,14 +115,14 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "acapps.h" #define _COMPONENT ACPI_TOOLS Modified: vendor-sys/acpica/dist/common/dmrestag.c ============================================================================== --- vendor-sys/acpica/dist/common/dmrestag.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmrestag.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "acdisasm.h" +#include "acnamesp.h" +#include "amlcode.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtable.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtable.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "actables.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtbdump.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbdump.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtbdump.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "actables.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtbinfo.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbinfo.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtbinfo.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,8 +114,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/compiler/aslanalyze.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslanalyze.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslanalyze.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include +#include "acparser.h" +#include "amlcode.h" #include Modified: vendor-sys/acpica/dist/compiler/aslcodegen.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcodegen.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcodegen.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcodegen") Modified: vendor-sys/acpica/dist/compiler/aslcompile.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompile.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompile.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,7 +117,7 @@ #include #include -#include +#include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcompile") Modified: vendor-sys/acpica/dist/compiler/aslcompiler.h ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.h Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.h Mon Jun 1 19:24:26 2009 (r193251) @@ -139,15 +139,15 @@ #include -#include -#include -#include +#include "acpi.h" +#include "amlresrc.h" +#include "acdebug.h" /* Compiler headers */ -#include -#include -#include +#include "asldefine.h" +#include "asltypes.h" +#include "aslglobal.h" /******************************************************************************* Modified: vendor-sys/acpica/dist/compiler/aslcompiler.l ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.l Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.l Mon Jun 1 19:24:26 2009 (r193251) @@ -119,7 +119,7 @@ #include #include -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" YYSTYPE AslCompilerlval; Modified: vendor-sys/acpica/dist/compiler/aslcompiler.y ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.y Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.y Mon Jun 1 19:24:26 2009 (r193251) @@ -124,11 +124,11 @@ */ #define YYINITDEPTH 600 -#include +#include "aslcompiler.h" #include #include #include -#include +#include "acpi.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslparse") Modified: vendor-sys/acpica/dist/compiler/aslerror.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslerror.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslerror.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ #define ASL_EXCEPTIONS -#include +#include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslerror") Modified: vendor-sys/acpica/dist/compiler/aslfiles.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslfiles.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslfiles.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ * *****************************************************************************/ -#include -#include +#include "aslcompiler.h" +#include "acapps.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfiles") Modified: vendor-sys/acpica/dist/compiler/aslfold.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslfold.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslfold.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,12 +116,12 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" -#include -#include +#include "acdispat.h" +#include "acparser.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfold") Modified: vendor-sys/acpica/dist/compiler/asllength.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllength.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllength.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/asllisting.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllisting.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllisting.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,11 +116,11 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include +#include "amlcode.h" +#include "acparser.h" +#include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslisting") Modified: vendor-sys/acpica/dist/compiler/aslload.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslload.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslload.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ #define __ASLLOAD_C__ -#include -#include -#include -#include +#include "aslcompiler.h" +#include "amlcode.h" +#include "acdispat.h" +#include "acnamesp.h" #include "aslcompiler.y.h" Modified: vendor-sys/acpica/dist/compiler/asllookup.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllookup.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllookup.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,13 +115,13 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include -#include +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdispat.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslmain.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslmain.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslmain.c Mon Jun 1 19:24:26 2009 (r193251) @@ -118,10 +118,10 @@ #define _DECLARE_GLOBALS -#include -#include -#include -#include +#include "aslcompiler.h" +#include "acnamesp.h" +#include "actables.h" +#include "acapps.h" #ifdef _DEBUG #include Modified: vendor-sys/acpica/dist/compiler/aslmap.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslmap.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslmap.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include -#include -#include +#include "aslcompiler.h" +#include "amlcode.h" +#include "acparser.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslopcodes.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslopcodes.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslopcodes.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslopcodes") Modified: vendor-sys/acpica/dist/compiler/asloperands.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asloperands.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asloperands.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asloperands") Modified: vendor-sys/acpica/dist/compiler/aslopt.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslopt.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslopt.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,12 +115,12 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslresource.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslresource.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslresource.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslrestype1.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslrestype1.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslrestype1.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslrestype2.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslrestype2.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslrestype2.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslstubs.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslstubs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslstubs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ #include -#include -#include -#include +#include "aslcompiler.h" +#include "acdispat.h" +#include "actables.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslstubs") Modified: vendor-sys/acpica/dist/compiler/asltransform.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asltransform.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asltransform.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/asltree.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asltree.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asltree.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslutils.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include +#include "acnamesp.h" +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslutils") Modified: vendor-sys/acpica/dist/debugger/dbcmds.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbcmds.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbcmds.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,17 +115,17 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acdispat.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acevents.h" +#include "acdebug.h" +#include "acresrc.h" +#include "acdisasm.h" -#include +#include "acparser.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbdisply.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbdisply.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbdisply.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,14 +115,14 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "acparser.h" +#include "acinterp.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbexec.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbexec.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbexec.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbfileio.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbfileio.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbfileio.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,11 +116,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" +#include "actables.h" +#include "acdisasm.h" #if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER) Modified: vendor-sys/acpica/dist/debugger/dbhistry.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbhistry.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbhistry.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdebug.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbinput.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbinput.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbinput.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdebug.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbstats.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbstats.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbstats.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbutils.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbxface.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbxface.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbxface.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/disassembler/dmbuffer.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmbuffer.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmbuffer.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "acparser.h" +#include "amlcode.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmnames.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmnames.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmnames.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmobject.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmobject.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmobject.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdisasm.h" +#include "acparser.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmopcode.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmopcode.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmopcode.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,10 +114,10 @@ * *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrc.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrc.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrc.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrcl.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrcl.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrcl.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrcs.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrcs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrcs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmutils.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,12 +115,12 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_ASL_COMPILER -#include +#include #endif #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmwalk.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmwalk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmwalk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdisasm.h" +#include "acdebug.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/events/evevent.c ============================================================================== --- vendor-sys/acpica/dist/events/evevent.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evevent.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,8 +114,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evevent") Modified: vendor-sys/acpica/dist/events/evgpe.c ============================================================================== --- vendor-sys/acpica/dist/events/evgpe.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evgpe.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpe") Modified: vendor-sys/acpica/dist/events/evgpeblk.c ============================================================================== --- vendor-sys/acpica/dist/events/evgpeblk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evgpeblk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpeblk") Modified: vendor-sys/acpica/dist/events/evmisc.c ============================================================================== --- vendor-sys/acpica/dist/events/evmisc.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evmisc.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,10 +114,10 @@ * *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evmisc") Modified: vendor-sys/acpica/dist/events/evregion.c ============================================================================== --- vendor-sys/acpica/dist/events/evregion.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evregion.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVREGION_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evregion") Modified: vendor-sys/acpica/dist/events/evrgnini.c ============================================================================== --- vendor-sys/acpica/dist/events/evrgnini.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evrgnini.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,9 +117,9 @@ #define __EVRGNINI_C__ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evrgnini") Modified: vendor-sys/acpica/dist/events/evsci.c ============================================================================== --- vendor-sys/acpica/dist/events/evsci.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evsci.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,8 +116,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS Modified: vendor-sys/acpica/dist/events/evxface.c ============================================================================== --- vendor-sys/acpica/dist/events/evxface.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxface.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVXFACE_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acevents.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxface") Modified: vendor-sys/acpica/dist/events/evxfevnt.c ============================================================================== --- vendor-sys/acpica/dist/events/evxfevnt.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxfevnt.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVXFEVNT_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "actables.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfevnt") Modified: vendor-sys/acpica/dist/events/evxfregn.c ============================================================================== --- vendor-sys/acpica/dist/events/evxfregn.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxfregn.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,9 +117,9 @@ #define __EVXFREGN_C__ -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfregn") Modified: vendor-sys/acpica/dist/hardware/hwacpi.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwacpi.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwacpi.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,7 +117,7 @@ #define __HWACPI_C__ -#include +#include "acpi.h" #define _COMPONENT ACPI_HARDWARE Modified: vendor-sys/acpica/dist/hardware/hwgpe.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwgpe.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwgpe.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwgpe") Modified: vendor-sys/acpica/dist/hardware/hwregs.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwregs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwregs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -118,9 +118,9 @@ #define __HWREGS_C__ -#include -#include *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From jkim at FreeBSD.org Mon Jun 1 19:24:33 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 19:24:58 2009 Subject: svn commit: r193251 - in vendor-sys/acpica/dist: . common compiler debugger disassembler events hardware include include/platform interpreter/dispatcher interpreter/executer interpreter/parser name... Message-ID: <200906011924.n51JOT10088981@svn.freebsd.org> Author: jkim Date: Mon Jun 1 19:24:26 2009 New Revision: 193251 URL: http://svn.freebsd.org/changeset/base/193251 Log: Temporarily revert system includes fixups to make future import easier. Modified: vendor-sys/acpica/dist/common/adfile.c vendor-sys/acpica/dist/common/adisasm.c vendor-sys/acpica/dist/common/adwalk.c vendor-sys/acpica/dist/common/dmrestag.c vendor-sys/acpica/dist/common/dmtable.c vendor-sys/acpica/dist/common/dmtbdump.c vendor-sys/acpica/dist/common/dmtbinfo.c vendor-sys/acpica/dist/compiler/aslanalyze.c vendor-sys/acpica/dist/compiler/aslcodegen.c vendor-sys/acpica/dist/compiler/aslcompile.c vendor-sys/acpica/dist/compiler/aslcompiler.h vendor-sys/acpica/dist/compiler/aslcompiler.l vendor-sys/acpica/dist/compiler/aslcompiler.y vendor-sys/acpica/dist/compiler/aslerror.c vendor-sys/acpica/dist/compiler/aslfiles.c vendor-sys/acpica/dist/compiler/aslfold.c vendor-sys/acpica/dist/compiler/asllength.c vendor-sys/acpica/dist/compiler/asllisting.c vendor-sys/acpica/dist/compiler/aslload.c vendor-sys/acpica/dist/compiler/asllookup.c vendor-sys/acpica/dist/compiler/aslmain.c vendor-sys/acpica/dist/compiler/aslmap.c vendor-sys/acpica/dist/compiler/aslopcodes.c vendor-sys/acpica/dist/compiler/asloperands.c vendor-sys/acpica/dist/compiler/aslopt.c vendor-sys/acpica/dist/compiler/aslresource.c vendor-sys/acpica/dist/compiler/aslrestype1.c vendor-sys/acpica/dist/compiler/aslrestype2.c vendor-sys/acpica/dist/compiler/aslstubs.c vendor-sys/acpica/dist/compiler/asltransform.c vendor-sys/acpica/dist/compiler/asltree.c vendor-sys/acpica/dist/compiler/aslutils.c vendor-sys/acpica/dist/debugger/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c vendor-sys/acpica/dist/disassembler/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c vendor-sys/acpica/dist/events/evevent.c vendor-sys/acpica/dist/events/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c vendor-sys/acpica/dist/events/evregion.c vendor-sys/acpica/dist/events/evrgnini.c vendor-sys/acpica/dist/events/evsci.c vendor-sys/acpica/dist/events/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c vendor-sys/acpica/dist/hardware/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c vendor-sys/acpica/dist/include/acdisasm.h vendor-sys/acpica/dist/include/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h vendor-sys/acpica/dist/include/acresrc.h vendor-sys/acpica/dist/include/actbl.h vendor-sys/acpica/dist/include/platform/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h vendor-sys/acpica/dist/interpreter/dispatcher/dsfield.c vendor-sys/acpica/dist/interpreter/dispatcher/dsinit.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmethod.c vendor-sys/acpica/dist/interpreter/dispatcher/dsmthdat.c vendor-sys/acpica/dist/interpreter/dispatcher/dsobject.c vendor-sys/acpica/dist/interpreter/dispatcher/dsopcode.c vendor-sys/acpica/dist/interpreter/dispatcher/dsutils.c vendor-sys/acpica/dist/interpreter/dispatcher/dswexec.c vendor-sys/acpica/dist/interpreter/dispatcher/dswload.c vendor-sys/acpica/dist/interpreter/dispatcher/dswscope.c vendor-sys/acpica/dist/interpreter/dispatcher/dswstate.c vendor-sys/acpica/dist/interpreter/executer/exconfig.c vendor-sys/acpica/dist/interpreter/executer/exconvrt.c vendor-sys/acpica/dist/interpreter/executer/excreate.c vendor-sys/acpica/dist/interpreter/executer/exdump.c vendor-sys/acpica/dist/interpreter/executer/exfield.c vendor-sys/acpica/dist/interpreter/executer/exfldio.c vendor-sys/acpica/dist/interpreter/executer/exmisc.c vendor-sys/acpica/dist/interpreter/executer/exmutex.c vendor-sys/acpica/dist/interpreter/executer/exnames.c vendor-sys/acpica/dist/interpreter/executer/exoparg1.c vendor-sys/acpica/dist/interpreter/executer/exoparg2.c vendor-sys/acpica/dist/interpreter/executer/exoparg3.c vendor-sys/acpica/dist/interpreter/executer/exoparg6.c vendor-sys/acpica/dist/interpreter/executer/exprep.c vendor-sys/acpica/dist/interpreter/executer/exregion.c vendor-sys/acpica/dist/interpreter/executer/exresnte.c vendor-sys/acpica/dist/interpreter/executer/exresolv.c vendor-sys/acpica/dist/interpreter/executer/exresop.c vendor-sys/acpica/dist/interpreter/executer/exstore.c vendor-sys/acpica/dist/interpreter/executer/exstoren.c vendor-sys/acpica/dist/interpreter/executer/exstorob.c vendor-sys/acpica/dist/interpreter/executer/exsystem.c vendor-sys/acpica/dist/interpreter/executer/exutils.c vendor-sys/acpica/dist/interpreter/parser/psargs.c vendor-sys/acpica/dist/interpreter/parser/psloop.c vendor-sys/acpica/dist/interpreter/parser/psopcode.c vendor-sys/acpica/dist/interpreter/parser/psparse.c vendor-sys/acpica/dist/interpreter/parser/psscope.c vendor-sys/acpica/dist/interpreter/parser/pstree.c vendor-sys/acpica/dist/interpreter/parser/psutils.c vendor-sys/acpica/dist/interpreter/parser/pswalk.c vendor-sys/acpica/dist/interpreter/parser/psxface.c vendor-sys/acpica/dist/namespace/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c vendor-sys/acpica/dist/osunixxf.c vendor-sys/acpica/dist/resources/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c vendor-sys/acpica/dist/resources/rsirq.c vendor-sys/acpica/dist/resources/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c vendor-sys/acpica/dist/tables/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c vendor-sys/acpica/dist/tools/acpiexec/aecommon.h vendor-sys/acpica/dist/utilities/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c vendor-sys/acpica/dist/utilities/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c vendor-sys/acpica/dist/utilities/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c Modified: vendor-sys/acpica/dist/common/adfile.c ============================================================================== --- vendor-sys/acpica/dist/common/adfile.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adfile.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acapps.h" #include #include Modified: vendor-sys/acpica/dist/common/adisasm.c ============================================================================== --- vendor-sys/acpica/dist/common/adisasm.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adisasm.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,15 +115,15 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "actables.h" +#include "acapps.h" #include #include Modified: vendor-sys/acpica/dist/common/adwalk.c ============================================================================== --- vendor-sys/acpica/dist/common/adwalk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/adwalk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,14 +115,14 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "acapps.h" #define _COMPONENT ACPI_TOOLS Modified: vendor-sys/acpica/dist/common/dmrestag.c ============================================================================== --- vendor-sys/acpica/dist/common/dmrestag.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmrestag.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "acdisasm.h" +#include "acnamesp.h" +#include "amlcode.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtable.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtable.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "actables.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtbdump.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbdump.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtbdump.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "actables.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/common/dmtbinfo.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbinfo.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/common/dmtbinfo.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,8 +114,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" /* This module used for application-level code only */ Modified: vendor-sys/acpica/dist/compiler/aslanalyze.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslanalyze.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslanalyze.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include +#include "acparser.h" +#include "amlcode.h" #include Modified: vendor-sys/acpica/dist/compiler/aslcodegen.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcodegen.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcodegen.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcodegen") Modified: vendor-sys/acpica/dist/compiler/aslcompile.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompile.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompile.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,7 +117,7 @@ #include #include -#include +#include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcompile") Modified: vendor-sys/acpica/dist/compiler/aslcompiler.h ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.h Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.h Mon Jun 1 19:24:26 2009 (r193251) @@ -139,15 +139,15 @@ #include -#include -#include -#include +#include "acpi.h" +#include "amlresrc.h" +#include "acdebug.h" /* Compiler headers */ -#include -#include -#include +#include "asldefine.h" +#include "asltypes.h" +#include "aslglobal.h" /******************************************************************************* Modified: vendor-sys/acpica/dist/compiler/aslcompiler.l ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.l Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.l Mon Jun 1 19:24:26 2009 (r193251) @@ -119,7 +119,7 @@ #include #include -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" YYSTYPE AslCompilerlval; Modified: vendor-sys/acpica/dist/compiler/aslcompiler.y ============================================================================== --- vendor-sys/acpica/dist/compiler/aslcompiler.y Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslcompiler.y Mon Jun 1 19:24:26 2009 (r193251) @@ -124,11 +124,11 @@ */ #define YYINITDEPTH 600 -#include +#include "aslcompiler.h" #include #include #include -#include +#include "acpi.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslparse") Modified: vendor-sys/acpica/dist/compiler/aslerror.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslerror.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslerror.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ #define ASL_EXCEPTIONS -#include +#include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslerror") Modified: vendor-sys/acpica/dist/compiler/aslfiles.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslfiles.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslfiles.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ * *****************************************************************************/ -#include -#include +#include "aslcompiler.h" +#include "acapps.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfiles") Modified: vendor-sys/acpica/dist/compiler/aslfold.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslfold.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslfold.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,12 +116,12 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" -#include -#include +#include "acdispat.h" +#include "acparser.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfold") Modified: vendor-sys/acpica/dist/compiler/asllength.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllength.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllength.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/asllisting.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllisting.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllisting.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,11 +116,11 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include +#include "amlcode.h" +#include "acparser.h" +#include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslisting") Modified: vendor-sys/acpica/dist/compiler/aslload.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslload.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslload.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ #define __ASLLOAD_C__ -#include -#include -#include -#include +#include "aslcompiler.h" +#include "amlcode.h" +#include "acdispat.h" +#include "acnamesp.h" #include "aslcompiler.y.h" Modified: vendor-sys/acpica/dist/compiler/asllookup.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asllookup.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asllookup.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,13 +115,13 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include -#include +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdispat.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslmain.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslmain.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslmain.c Mon Jun 1 19:24:26 2009 (r193251) @@ -118,10 +118,10 @@ #define _DECLARE_GLOBALS -#include -#include -#include -#include +#include "aslcompiler.h" +#include "acnamesp.h" +#include "actables.h" +#include "acapps.h" #ifdef _DEBUG #include Modified: vendor-sys/acpica/dist/compiler/aslmap.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslmap.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslmap.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include -#include -#include +#include "aslcompiler.h" +#include "amlcode.h" +#include "acparser.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslopcodes.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslopcodes.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslopcodes.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslopcodes") Modified: vendor-sys/acpica/dist/compiler/asloperands.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asloperands.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asloperands.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asloperands") Modified: vendor-sys/acpica/dist/compiler/aslopt.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslopt.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslopt.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,12 +115,12 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include -#include +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslresource.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslresource.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslresource.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslrestype1.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslrestype1.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslrestype1.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslrestype2.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslrestype2.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslrestype2.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslstubs.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslstubs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslstubs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,9 +116,9 @@ *****************************************************************************/ #include -#include -#include -#include +#include "aslcompiler.h" +#include "acdispat.h" +#include "actables.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslstubs") Modified: vendor-sys/acpica/dist/compiler/asltransform.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asltransform.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asltransform.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/asltree.c ============================================================================== --- vendor-sys/acpica/dist/compiler/asltree.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/asltree.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,7 +116,7 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER Modified: vendor-sys/acpica/dist/compiler/aslutils.c ============================================================================== --- vendor-sys/acpica/dist/compiler/aslutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/compiler/aslutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,10 +116,10 @@ *****************************************************************************/ -#include +#include "aslcompiler.h" #include "aslcompiler.y.h" -#include -#include +#include "acnamesp.h" +#include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslutils") Modified: vendor-sys/acpica/dist/debugger/dbcmds.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbcmds.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbcmds.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,17 +115,17 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acdispat.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acevents.h" +#include "acdebug.h" +#include "acresrc.h" +#include "acdisasm.h" -#include +#include "acparser.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbdisply.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbdisply.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbdisply.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,14 +115,14 @@ *****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "acparser.h" +#include "acinterp.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbexec.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbexec.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbexec.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbfileio.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbfileio.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbfileio.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,11 +116,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" +#include "actables.h" +#include "acdisasm.h" #if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER) Modified: vendor-sys/acpica/dist/debugger/dbhistry.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbhistry.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbhistry.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdebug.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbinput.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbinput.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbinput.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdebug.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbstats.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbstats.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbstats.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acdebug.h" +#include "acnamesp.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbutils.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/debugger/dbxface.c ============================================================================== --- vendor-sys/acpica/dist/debugger/dbxface.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/debugger/dbxface.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdebug.h" +#include "acdisasm.h" #ifdef ACPI_DEBUGGER Modified: vendor-sys/acpica/dist/disassembler/dmbuffer.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmbuffer.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmbuffer.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,10 +115,10 @@ *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acdisasm.h" +#include "acparser.h" +#include "amlcode.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmnames.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmnames.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmnames.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmobject.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmobject.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmobject.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acnamesp.h" +#include "acdisasm.h" +#include "acparser.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmopcode.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmopcode.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmopcode.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,10 +114,10 @@ * *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrc.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrc.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrc.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,9 +115,9 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrcl.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrcl.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrcl.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmresrcs.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmresrcs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmresrcs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acdisasm.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmutils.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmutils.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmutils.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,12 +115,12 @@ *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "amlcode.h" +#include "acdisasm.h" #ifdef ACPI_ASL_COMPILER -#include +#include #endif #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/disassembler/dmwalk.c ============================================================================== --- vendor-sys/acpica/dist/disassembler/dmwalk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/disassembler/dmwalk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,11 +115,11 @@ *****************************************************************************/ -#include -#include -#include -#include -#include +#include "acpi.h" +#include "acparser.h" +#include "amlcode.h" +#include "acdisasm.h" +#include "acdebug.h" #ifdef ACPI_DISASSEMBLER Modified: vendor-sys/acpica/dist/events/evevent.c ============================================================================== --- vendor-sys/acpica/dist/events/evevent.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evevent.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,8 +114,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evevent") Modified: vendor-sys/acpica/dist/events/evgpe.c ============================================================================== --- vendor-sys/acpica/dist/events/evgpe.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evgpe.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpe") Modified: vendor-sys/acpica/dist/events/evgpeblk.c ============================================================================== --- vendor-sys/acpica/dist/events/evgpeblk.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evgpeblk.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,9 +114,9 @@ * *****************************************************************************/ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpeblk") Modified: vendor-sys/acpica/dist/events/evmisc.c ============================================================================== --- vendor-sys/acpica/dist/events/evmisc.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evmisc.c Mon Jun 1 19:24:26 2009 (r193251) @@ -114,10 +114,10 @@ * *****************************************************************************/ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evmisc") Modified: vendor-sys/acpica/dist/events/evregion.c ============================================================================== --- vendor-sys/acpica/dist/events/evregion.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evregion.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVREGION_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evregion") Modified: vendor-sys/acpica/dist/events/evrgnini.c ============================================================================== --- vendor-sys/acpica/dist/events/evrgnini.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evrgnini.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,9 +117,9 @@ #define __EVRGNINI_C__ -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evrgnini") Modified: vendor-sys/acpica/dist/events/evsci.c ============================================================================== --- vendor-sys/acpica/dist/events/evsci.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evsci.c Mon Jun 1 19:24:26 2009 (r193251) @@ -116,8 +116,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS Modified: vendor-sys/acpica/dist/events/evxface.c ============================================================================== --- vendor-sys/acpica/dist/events/evxface.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxface.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVXFACE_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acevents.h" +#include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxface") Modified: vendor-sys/acpica/dist/events/evxfevnt.c ============================================================================== --- vendor-sys/acpica/dist/events/evxfevnt.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxfevnt.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,10 +117,10 @@ #define __EVXFEVNT_C__ -#include -#include -#include -#include +#include "acpi.h" +#include "acevents.h" +#include "acnamesp.h" +#include "actables.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfevnt") Modified: vendor-sys/acpica/dist/events/evxfregn.c ============================================================================== --- vendor-sys/acpica/dist/events/evxfregn.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/events/evxfregn.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,9 +117,9 @@ #define __EVXFREGN_C__ -#include -#include -#include +#include "acpi.h" +#include "acnamesp.h" +#include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfregn") Modified: vendor-sys/acpica/dist/hardware/hwacpi.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwacpi.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwacpi.c Mon Jun 1 19:24:26 2009 (r193251) @@ -117,7 +117,7 @@ #define __HWACPI_C__ -#include +#include "acpi.h" #define _COMPONENT ACPI_HARDWARE Modified: vendor-sys/acpica/dist/hardware/hwgpe.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwgpe.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwgpe.c Mon Jun 1 19:24:26 2009 (r193251) @@ -115,8 +115,8 @@ * *****************************************************************************/ -#include -#include +#include "acpi.h" +#include "acevents.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwgpe") Modified: vendor-sys/acpica/dist/hardware/hwregs.c ============================================================================== --- vendor-sys/acpica/dist/hardware/hwregs.c Mon Jun 1 19:16:57 2009 (r193250) +++ vendor-sys/acpica/dist/hardware/hwregs.c Mon Jun 1 19:24:26 2009 (r193251) @@ -118,9 +118,9 @@ #define __HWREGS_C__ -#include -#include *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From dougb at FreeBSD.org Mon Jun 1 20:00:41 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 20:00:47 2009 Subject: svn commit: r193252 - svnadmin/conf Message-ID: <200906012000.n51K0ekB089931@svn.freebsd.org> Author: dougb Date: Mon Jun 1 20:00:39 2009 New Revision: 193252 URL: http://svn.freebsd.org/changeset/base/193252 Log: Remove myself now that the BIND 9.6 drama is over Modified: svnadmin/conf/sizelimit.conf Modified: svnadmin/conf/sizelimit.conf ============================================================================== --- svnadmin/conf/sizelimit.conf Mon Jun 1 19:24:26 2009 (r193251) +++ svnadmin/conf/sizelimit.conf Mon Jun 1 20:00:39 2009 (r193252) @@ -19,7 +19,6 @@ #kan brooks des -dougb imp jkim lstewart From dougb at FreeBSD.org Mon Jun 1 20:14:07 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 20:14:19 2009 Subject: svn commit: r193253 - vendor/bind9/dist Message-ID: <200906012014.n51KE5vB090234@svn.freebsd.org> Author: dougb Date: Mon Jun 1 20:14:05 2009 New Revision: 193253 URL: http://svn.freebsd.org/changeset/base/193253 Log: Add a comment about the new dist-9.4 directory and using it for 7-stable Modified: vendor/bind9/dist/FREEBSD-Upgrade Modified: vendor/bind9/dist/FREEBSD-Upgrade ============================================================================== --- vendor/bind9/dist/FREEBSD-Upgrade Mon Jun 1 20:00:39 2009 (r193252) +++ vendor/bind9/dist/FREEBSD-Upgrade Mon Jun 1 20:14:05 2009 (r193253) @@ -10,6 +10,7 @@ svn co $REPO/vendor/bind9/dist NOTE: For RELENG_6 (BIND 9.3.x) s/dist/dist-9.3/ throughout this file + For RELENG_7 (BIND 9.4.x) s/dist/dist-9.4/ throughout this file 3) Unpack the tarball in a suitable directory: From rdivacky at FreeBSD.ORG Mon Jun 1 20:17:21 2009 From: rdivacky at FreeBSD.ORG (Roman Divacky) Date: Mon Jun 1 20:17:28 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <4A242771.3090605@delphij.net> References: <200906011843.n51IhXt4087781@svn.freebsd.org> <4A242282.4030404@FreeBSD.org> <20090601184937.GA24177@freebsd.org> <20090601185532.GA24838@freebsd.org> <4A242771.3090605@delphij.net> Message-ID: <20090601201621.GA35383@freebsd.org> On Mon, Jun 01, 2009 at 12:09:37PM -0700, Xin LI wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Roman Divacky wrote: > > On Mon, Jun 01, 2009 at 08:49:37PM +0200, Roman Divacky wrote: > >> On Mon, Jun 01, 2009 at 11:48:34AM -0700, Doug Barton wrote: > >>> Xin LI wrote: > >>>> Author: delphij > >>>> Date: Mon Jun 1 18:43:33 2009 > >>>> New Revision: 193245 > >>>> URL: http://svn.freebsd.org/changeset/base/193245 > >>>> > >>>> Log: > >>>> Mark as WARNS=6. > >>>> > >>>> Modified: > >>>> head/sys/dev/aic7xxx/aicasm/Makefile > >>>> > >>>> Modified: head/sys/dev/aic7xxx/aicasm/Makefile > >>>> ============================================================================== > >>>> --- head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:42:16 2009 (r193244) > >>>> +++ head/sys/dev/aic7xxx/aicasm/Makefile Mon Jun 1 18:43:33 2009 (r193245) > >>>> @@ -15,6 +15,7 @@ SRCS= ${GENHDRS} ${CSRCS} ${YSRCS} ${LSR > >>>> CLEANFILES+= ${GENHDRS} ${YSRCS:R:C/(.*)/\1.output/g} > >>>> DPADD= ${LIBL} > >>>> LDADD= -ll > >>>> +WARNS?= 6 > >>>> > >>>> # Correct path for kernel builds > >>>> # Don't rely on the kernel's .depend file > >>>> > >>> Is there more coming? > >>> > >>> cc -O2 -pipe -ggdb -nostdinc -I/usr/include -I. > >>> -I/usr/local/src/sys/dev/aic7xxx/aicasm -ggdb -std=gnu99 > >> ^^^^^^^^^^ > >> > >> how did you get this? this should be used for userland compilation, > >> kernel is done with -std=c99, can you show me how you got this? > > > > ok.. when you > > > > cd /usr/src > > make > > > > you build the kernel with -std=gnu99 instead of -std=c99. which is a bug. I am > > trying to fix this. if anyone has any idea please mail me.. > > This is strange... Let me take a look at this, I have reverted the > WARNS?=6 change for now. oh.. sorry. this has nothing to do with this commit. I just noticed it in doug's reply.. From jkim at FreeBSD.org Mon Jun 1 20:21:14 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 20:21:27 2009 Subject: svn commit: r193254 - vendor-sys/acpica/20070320resync Message-ID: <200906012021.n51KLDDJ090414@svn.freebsd.org> Author: jkim Date: Mon Jun 1 20:21:13 2009 New Revision: 193254 URL: http://svn.freebsd.org/changeset/base/193254 Log: Re-tag ACPI-CA 20070320. This is not really pristine vendor distribution but close enough. Added: vendor-sys/acpica/20070320resync/ - copied from r193253, vendor-sys/acpica/dist/ From jkim at FreeBSD.org Mon Jun 1 20:21:15 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 20:21:36 2009 Subject: svn commit: r193254 - vendor-sys/acpica/20070320resync Message-ID: <200906012021.n51KLEfL090419@svn.freebsd.org> Author: jkim Date: Mon Jun 1 20:21:13 2009 New Revision: 193254 URL: http://svn.freebsd.org/changeset/base/193254 Log: Re-tag ACPI-CA 20070320. This is not really pristine vendor distribution but close enough. Added: vendor-sys/acpica/20070320resync/ - copied from r193253, vendor-sys/acpica/dist/ From rwatson at FreeBSD.org Mon Jun 1 20:26:52 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon Jun 1 20:26:59 2009 Subject: svn commit: r193255 - in head/sys: kern sys Message-ID: <200906012026.n51KQp6x090577@svn.freebsd.org> Author: rwatson Date: Mon Jun 1 20:26:51 2009 New Revision: 193255 URL: http://svn.freebsd.org/changeset/base/193255 Log: Add a flags field to struct ucred, and export that via kinfo_proc, consuming one of its spare fields. The cr_flags field is currently unused, but will be used for features, including capability mode and pay-as-you-go audit. Discussed with: jhb, sson Modified: head/sys/kern/kern_proc.c head/sys/sys/ucred.h head/sys/sys/user.h Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Mon Jun 1 20:21:13 2009 (r193254) +++ head/sys/kern/kern_proc.c Mon Jun 1 20:26:51 2009 (r193255) @@ -736,6 +736,7 @@ fill_kinfo_proc_only(struct proc *p, str kp->ki_ngroups * sizeof(gid_t)); kp->ki_rgid = cred->cr_rgid; kp->ki_svgid = cred->cr_svgid; + kp->ki_cr_flags = cred->cr_flags; /* If jailed(cred), emulate the old P_JAILED flag. */ if (jailed(cred)) { kp->ki_flag |= P_JAILED; Modified: head/sys/sys/ucred.h ============================================================================== --- head/sys/sys/ucred.h Mon Jun 1 20:21:13 2009 (r193254) +++ head/sys/sys/ucred.h Mon Jun 1 20:26:51 2009 (r193255) @@ -56,6 +56,7 @@ struct ucred { struct uidinfo *cr_ruidinfo; /* per ruid resource consumption */ struct prison *cr_prison; /* jail(2) */ struct vimage *cr_vimage; /* vimage */ + u_int cr_flags; /* credential flags */ void *cr_pspare[2]; /* general use 2 */ #define cr_endcopy cr_label struct label *cr_label; /* MAC label */ Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Mon Jun 1 20:21:13 2009 (r193254) +++ head/sys/sys/user.h Mon Jun 1 20:26:51 2009 (r193255) @@ -83,7 +83,7 @@ * it in two places: function fill_kinfo_proc in sys/kern/kern_proc.c and * function kvm_proclist in lib/libkvm/kvm_proc.c . */ -#define KI_NSPARE_INT 10 +#define KI_NSPARE_INT 9 #define KI_NSPARE_LONG 12 #define KI_NSPARE_PTR 7 @@ -190,6 +190,7 @@ struct kinfo_proc { */ char ki_sparestrings[68]; /* spare string space */ int ki_spareints[KI_NSPARE_INT]; /* spare room for growth */ + u_int ki_cr_flags; /* Credential flags */ int ki_jid; /* Process jail ID */ int ki_numthreads; /* XXXKSE number of threads in total */ lwpid_t ki_tid; /* XXXKSE thread id */ From jhb at FreeBSD.org Mon Jun 1 20:27:15 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 20:27:22 2009 Subject: svn commit: r193256 - head/sys/dev/pci Message-ID: <200906012027.n51KREdb090624@svn.freebsd.org> Author: jhb Date: Mon Jun 1 20:27:14 2009 New Revision: 193256 URL: http://svn.freebsd.org/changeset/base/193256 Log: Adjust some comments. Modified: head/sys/dev/pci/pcivar.h Modified: head/sys/dev/pci/pcivar.h ============================================================================== --- head/sys/dev/pci/pcivar.h Mon Jun 1 20:26:51 2009 (r193255) +++ head/sys/dev/pci/pcivar.h Mon Jun 1 20:27:14 2009 (r193256) @@ -159,10 +159,10 @@ typedef struct pcicfg { uint8_t slot; /* config space slot address */ uint8_t func; /* config space function number */ - struct pcicfg_pp pp; /* pci power management */ - struct pcicfg_vpd vpd; /* pci vital product data */ - struct pcicfg_msi msi; /* pci msi */ - struct pcicfg_msix msix; /* pci msi-x */ + struct pcicfg_pp pp; /* Power management */ + struct pcicfg_vpd vpd; /* Vital product data */ + struct pcicfg_msi msi; /* PCI MSI */ + struct pcicfg_msix msix; /* PCI MSI-X */ struct pcicfg_ht ht; /* HyperTransport */ } pcicfgregs; From jhb at FreeBSD.org Mon Jun 1 20:30:01 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 20:30:07 2009 Subject: svn commit: r193257 - head/sys/dev/pci Message-ID: <200906012030.n51KU01x090713@svn.freebsd.org> Author: jhb Date: Mon Jun 1 20:30:00 2009 New Revision: 193257 URL: http://svn.freebsd.org/changeset/base/193257 Log: Add an internal pci_printf() routine similar to device_printf() except that it prefixes the output with 'pci:::: '. Modified: head/sys/dev/pci/pci.c Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Mon Jun 1 20:27:14 2009 (r193256) +++ head/sys/dev/pci/pci.c Mon Jun 1 20:30:00 2009 (r193257) @@ -76,6 +76,7 @@ static const char *pci_maptype(uint64_t static int pci_mapsize(uint64_t testval); static int pci_maprange(uint64_t mapreg); static void pci_fixancient(pcicfgregs *cfg); +static int pci_printf(pcicfgregs *cfg, const char *fmt, ...); static int pci_porten(device_t dev); static int pci_memen(device_t dev); @@ -313,6 +314,20 @@ pci_find_device(uint16_t vendor, uint16_ return (NULL); } +static int +pci_printf(pcicfgregs *cfg, const char *fmt, ...) +{ + va_list ap; + int retval; + + retval = printf("pci%d:%d:%d:%d: ", cfg->domain, cfg->bus, cfg->slot, + cfg->func); + va_start(ap, fmt); + retval += vprintf(fmt, ap); + va_end(ap); + return (retval); +} + /* return base address of memory or port map */ static pci_addr_t @@ -2049,10 +2064,8 @@ pci_set_powerstate_method(device_t dev, } if (bootverbose) - printf( - "pci%d:%d:%d:%d: Transition from D%d to D%d\n", - dinfo->cfg.domain, dinfo->cfg.bus, dinfo->cfg.slot, - dinfo->cfg.func, oldstate, state); + pci_printf(cfg, "Transition from D%d to D%d\n", oldstate, + state); PCI_WRITE_CONFIG(dev, child, cfg->pp.pp_status, status, 2); if (delay) @@ -2815,9 +2828,7 @@ pci_driver_added(device_t dev, driver_t dinfo = device_get_ivars(child); pci_print_verbose(dinfo); if (bootverbose) - printf("pci%d:%d:%d:%d: reprobing on driver added\n", - dinfo->cfg.domain, dinfo->cfg.bus, dinfo->cfg.slot, - dinfo->cfg.func); + pci_printf(&dinfo->cfg, "reprobing on driver added\n"); pci_cfg_restore(child, dinfo); if (device_probe_and_attach(child) != 0) pci_cfg_save(child, dinfo, 1); From rmacklem at FreeBSD.org Mon Jun 1 20:34:01 2009 From: rmacklem at FreeBSD.org (Rick Macklem) Date: Mon Jun 1 20:34:12 2009 Subject: svn commit: r193258 - head/usr.bin/nfsstat Message-ID: <200906012034.n51KY00Z090919@svn.freebsd.org> Author: rmacklem Date: Mon Jun 1 20:34:00 2009 New Revision: 193258 URL: http://svn.freebsd.org/changeset/base/193258 Log: Change the "-4" option flag to "-e" since it does not refer to IPv4 and to make it consistent with the flag used by nfsd and mountd. Approved by: kib (mentor) Modified: head/usr.bin/nfsstat/nfsstat.1 head/usr.bin/nfsstat/nfsstat.c Modified: head/usr.bin/nfsstat/nfsstat.1 ============================================================================== --- head/usr.bin/nfsstat/nfsstat.1 Mon Jun 1 20:30:00 2009 (r193257) +++ head/usr.bin/nfsstat/nfsstat.1 Mon Jun 1 20:34:00 2009 (r193258) @@ -42,7 +42,7 @@ statistics .Sh SYNOPSIS .Nm -.Op Fl cszW4 +.Op Fl ceszW .Op Fl M Ar core .Op Fl N Ar system .Op Fl w Ar wait @@ -83,7 +83,7 @@ second intervals. .It Fl z Reset statistics after displaying them. (Not currently supported by the experimental nfs subsystem.) -.It Fl 4 +.It Fl e Gather statistics from the experimental nfs subsystem that includes support for NFSv4 instead of the regular nfs subsystem. .El Modified: head/usr.bin/nfsstat/nfsstat.c ============================================================================== --- head/usr.bin/nfsstat/nfsstat.c Mon Jun 1 20:30:00 2009 (r193257) +++ head/usr.bin/nfsstat/nfsstat.c Mon Jun 1 20:34:00 2009 (r193258) @@ -113,7 +113,7 @@ main(int argc, char **argv) interval = 0; memf = nlistf = NULL; - while ((ch = getopt(argc, argv, "csWM:N:w:z4")) != -1) + while ((ch = getopt(argc, argv, "cesWM:N:w:z")) != -1) switch(ch) { case 'M': memf = optarg; @@ -140,7 +140,7 @@ main(int argc, char **argv) case 'z': zflag = 1; break; - case '4': + case 'e': run_v4 = 1; break; case '?': @@ -505,7 +505,7 @@ void usage(void) { (void)fprintf(stderr, - "usage: nfsstat [-cszW] [-M core] [-N system] [-w interval]\n"); + "usage: nfsstat [-ceszW] [-M core] [-N system] [-w interval]\n"); exit(1); } From jkim at FreeBSD.org Mon Jun 1 20:35:10 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 20:35:27 2009 Subject: svn commit: r193259 - in vendor-sys/acpica/dist: dispatcher executer interpreter/dispatcher interpreter/executer interpreter/parser parser Message-ID: <200906012035.n51KZ9KE090983@svn.freebsd.org> Author: jkim Date: Mon Jun 1 20:35:09 2009 New Revision: 193259 URL: http://svn.freebsd.org/changeset/base/193259 Log: Move subdirectoies of interpreter one level up as it is done in the vendor distribution tarball since 20080514. Added: vendor-sys/acpica/dist/dispatcher/ - copied from r193252, vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/executer/ - copied from r193252, vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/parser/ - copied from r193252, vendor-sys/acpica/dist/interpreter/parser/ Deleted: vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/interpreter/parser/ From jkim at FreeBSD.org Mon Jun 1 20:35:11 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 20:35:27 2009 Subject: svn commit: r193259 - in vendor-sys/acpica/dist: dispatcher executer interpreter/dispatcher interpreter/executer interpreter/parser parser Message-ID: <200906012035.n51KZ97w090988@svn.freebsd.org> Author: jkim Date: Mon Jun 1 20:35:09 2009 New Revision: 193259 URL: http://svn.freebsd.org/changeset/base/193259 Log: Move subdirectoies of interpreter one level up as it is done in the vendor distribution tarball since 20080514. Added: vendor-sys/acpica/dist/dispatcher/ - copied from r193252, vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/executer/ - copied from r193252, vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/parser/ - copied from r193252, vendor-sys/acpica/dist/interpreter/parser/ Deleted: vendor-sys/acpica/dist/interpreter/dispatcher/ vendor-sys/acpica/dist/interpreter/executer/ vendor-sys/acpica/dist/interpreter/parser/ From jhb at FreeBSD.org Mon Jun 1 20:35:40 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 20:35:47 2009 Subject: svn commit: r193260 - in head: share/man/man9 sys/conf sys/kern sys/sys Message-ID: <200906012035.n51KZdgc091039@svn.freebsd.org> Author: jhb Date: Mon Jun 1 20:35:39 2009 New Revision: 193260 URL: http://svn.freebsd.org/changeset/base/193260 Log: Add a simple API to manage scatter/gather lists of phyiscal addresses. Each list describes a logical memory object that is backed by one or more physical address ranges. To minimize locking, the sglist objects themselves are immutable once they are shared. These objects may be used in the future to facilitate I/O requests using physically-addressed buffers. For the immediate future I plan to use them to implement a new type of VM object and pager. Reviewed by: jeff, scottl MFC after: 1 month Added: head/share/man/man9/sglist.9 (contents, props changed) head/sys/kern/subr_sglist.c (contents, props changed) head/sys/sys/sglist.h (contents, props changed) Modified: head/share/man/man9/Makefile head/sys/conf/files Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Mon Jun 1 20:35:09 2009 (r193259) +++ head/share/man/man9/Makefile Mon Jun 1 20:35:39 2009 (r193260) @@ -218,6 +218,7 @@ MAN= accept_filter.9 \ selrecord.9 \ sema.9 \ sf_buf.9 \ + sglist.9 \ signal.9 \ sleep.9 \ sleepqueue.9 \ @@ -1022,6 +1023,24 @@ MLINKS+=sf_buf.9 sf_buf_alloc.9 \ sf_buf.9 sf_buf_free.9 \ sf_buf.9 sf_buf_kva.9 \ sf_buf.9 sf_buf_page.9 +MLINKS+=sglist.9 sglist_alloc.9 \ + sglist.9 sglist_append.9 \ + sglist.9 sglist_append_mbuf.9 \ + sglist.9 sglist_append_phys.9 \ + sglist.9 sglist_append_uio.9 \ + sglist.9 sglist_append_user.9 \ + sglist.9 sglist_build.9 \ + sglist.9 sglist_clone.9 \ + sglist.9 sglist_consume_uio.9 \ + sglist.9 sglist_count.9 \ + sglist.9 sglist_free.9 \ + sglist.9 sglist_hold.9 \ + sglist.9 sglist_init.9 \ + sglist.9 sglist_join.9 \ + sglist.9 sglist_length.9 \ + sglist.9 sglist_reset.9 \ + sglist.9 sglist_slice.9 \ + sglist.9 sglist_split.9 MLINKS+=signal.9 cursig.9 \ signal.9 execsigs.9 \ signal.9 issignal.9 \ Added: head/share/man/man9/sglist.9 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man9/sglist.9 Mon Jun 1 20:35:39 2009 (r193260) @@ -0,0 +1,503 @@ +.\" +.\" Copyright (c) 2009 Advanced Computing Technologies LLC +.\" Written by: John H. Baldwin +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (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$ +.\" +.Dd May 15, 2009 +.Dt SGLIST 9 +.Os +.Sh NAME +.Nm sglist , +.Nm sglist_alloc , +.Nm sglist_append , +.Nm sglist_append_mbuf , +.Nm sglist_append_phys , +.Nm sglist_append_uio , +.Nm sglist_append_user , +.Nm sglist_build , +.Nm sglist_clone , +.Nm sglist_consume_uio , +.Nm sglist_count , +.Nm sglist_free , +.Nm sglist_hold , +.Nm sglist_init , +.Nm sglist_join , +.Nm sglist_length , +.Nm sglist_reset , +.Nm sglist_slice , +.Nm sglist_split +.Nd manage a scatter/gather list of physical memory addresses +.Sh SYNOPSIS +.In sys/types.h +.In sys/sglist.h +.Ft struct sglist * +.Fn sglist_alloc "int nsegs" "int mflags" +.Ft int +.Fn sglist_append "struct sglist *sg" "void *buf" "size_t len" +.Ft int +.Fn sglist_append_mbuf "struct sglist *sg" "struct mbuf *m" +.Ft int +.Fn sglist_append_phys "struct sglist *sg" "vm_paddr_t paddr" "size_t len" +.Ft int +.Fn sglist_append_uio "struct sglist *sg" "struct uio *uio" +.Ft int +.Fn sglist_append_user "struct sglist *sg" "void *buf" "size_t len" "struct thread *td" +.Ft struct sglist * +.Fn sglist_build "void *buf" "size_t len" "int mflags" +.Ft struct sglist * +.Fn sglist_clone "struct sglist *sg" "int mflags" +.Ft int +.Fn sglist_consume_uio "struct sglist *sg" "struct uio *uio" "int resid" +.Ft int +.Fn sglist_count "void *buf" "size_t len" +.Ft void +.Fn sglist_free "struct sglist *sg" +.Ft struct sglist * +.Fn sglist_hold "struct sglist *sg" +.Ft void +.Fn sglist_init "struct sglist *sg" "int maxsegs" "struct sglist_seg *segs" +.Ft int +.Fn sglist_join "struct sglist *first" "struct sglist *second" +.Ft size_t +.Fn sglist_length "struct sglist *sg" +.Ft void +.Fn sglist_reset "struct sglist *sg" +.Ft int +.Fn sglist_slice "struct sglist *original" "struct sglist **slice" "size_t offset" "size_t length" "int mflags" +.Ft int +.Fn sglist_split "struct sglist *original" "struct sglist **head" "size_t length" "int mflags" +.Sh DESCRIPTION +The +.Nm +API manages physical address ranges. +Each list contains one or more elements. +Each element contains a starting physical address and a length. +Scatter/gather lists are read-only while they are shared. +If one wishes to alter an existing scatter/gather list and does not hold the +sole reference to the list, +then one should create a new list instead of modifying the existing list. +.Pp +Each scatter/gather list object contains a reference count. +New lists are created with a single reference. +New references are obtained by calling +.Nm sglist_hold +and are released by calling +.Nm sglist_free . +.Ss Allocating and Initializing Lists +Each +.Nm +object consists of a header structure and a variable-length array of +scatter/gather list elements. +The +.Nm sglist_alloc +function allocates a new list that contains a header and +.Fa nsegs +scatter/gather list elements. +The +.Fa mflags +argument can be set to either +.Dv M_NOWAIT +or +.Dv M_WAITOK . +.Pp +The +.Nm sglist_count +function returns the number of scatter/gather list elements needed to describe +the physical address ranges mapped by a single kernel virtual address range. +The kernel virtual address range starts at +.Fa buf +and is +.Fa len +bytes long. +.Pp +The +.Nm sglist_build +function allocates a new scatter/gather list object that describes the physical +address ranges mapped by a single kernel virtual address range. +The kernel virtual address range starts at +.Fa buf +and is +.Fa len +bytes long. +The +.Fa mflags +argument can be set to either +.Dv M_NOWAIT +or +.Dv M_WAITOK . +.Pp +The +.Nm sglist_clone +function returns a copy of an exising scatter/gather list object +.Fa sg . +The +.Fa mflags +argument can be set to either +.Dv M_NOWAIT +or +.Dv M_WAITOK . +This can be used to obtain a private copy of a scatter/gather list before +modifying it. +.Pp +The +.Nm sglist_init +function initializes a scatter/gather list header. +The header is pointed to by +.Fa sg +and is initialized to manage an array of +.Fa maxsegs +scatter/gather list elements pointed to by +.Fa segs . +This can be used to initialize a scatter/gather list header whose storage +is not provided by +.Nm sglist_alloc . +In that case, the caller should not call +.Nm sglist_free +to release its own reference and is responsible for ensuring all other +references to the list are dropped before it releases the storage for +.Fa sg +and +.Fa segs . +.Ss Constructing Scatter/Gather Lists +The +.Nm +API provides several routines for building a scatter/gather list to describe +one or more objects. +Specifically, the +.Nm sglist_append +family of routines can be used to append the physical address ranges described +by an object to the end of a scatter/gather list. +All of these routines return 0 on success or an error on failure. +.Pp +The +.Nm sglist_append +function appends the physical address ranges described by a single kernel +virtual address range to the scatter/gather list +.Fa sg . +The kernel virtual address range starts at +.Fa buf +and is +.Fa len +bytes long. +.Pp +The +.Nm sglist_append_mbuf +function appends the physical address ranges described by an entire mbuf +chain +.Fa m +to the scatter/gather list +.Fa sg . +.Pp +The +.Nm sglist_append_phys +function appends a single physical address range to the scatter/gather list +.Fa sg . +The physical address range starts at +.Fa paddr +and is +.Fa len +bytes long. +.Pp +The +.Nm sglist_append_uio +function appends the physical address ranges described by a +.Xr uio 9 +object to the scatter/gather list +.Fa sg . +Note that it is the caller's responsibility to ensure that the pages backing +the I/O request are wired for the lifetime of +.Fa sg . +Note also that this routine does not modify +.Fa uio . +.Pp +The +.Nm sglist_append_user +function appends the physical address ranges described by a single user +virtual address range to the scatter/gather list +.Fa sg . +The user virtual address range is relative to the address space of the thread +.Fa td . +It starts at +.Fa buf +and is +.Fa len +bytes long. +Note that it is the caller's responsibility to ensure that the pages backing +the user buffer are wired for the lifetime of +.Fa sg . +.Pp +The +.Nm sglist_consume_uio +function is a variation of +.Nm sglist_append_uio . +As with +.Nm sglist_append_uio , +it appends the physical address ranges described by +.Fa uio +to the scatter/gather list +.Fa sg . +Unlike +.Nm sglist_append_uio , +however, +.Nm sglist_consume_uio +modifies the I/O request to indicate that the appended address ranges have +been processed similar to calling +.Xr uiomove 9 . +This routine will only append ranges that describe up to +.Fa resid +total bytes in length. +If the available segments in the scatter/gather list are exhausted before +.Fa resid +bytes are processed, +then the +.Fa uio +structure will be updated to reflect the actual number of bytes processed, +and +.Nm sglist_consume_io +will return zero to indicate success. +In effect, this function will perform partial reads or writes. +The caller can compare the +.Fa uio_resid +member of +.Fa uio +before and after calling +.Nm sglist_consume_uio +to determine the actual number of bytes processed. +.Ss Manipulating Scatter/Gather Lists +The +.Nm sglist_join +function appends physical address ranges from the scatter/gather list +.Fa second +onto +.Fa first +and then resets +.Fa second +to an empty list. +It returns zero on success or an error on failure. +.Pp +The +.Nm sglist_split +function splits an existing scatter/gather list into two lists. +The first +.Fa length +bytes described by the list +.Fa original +are moved to a new list +.Fa *head . +If +.Fa original +describes a total address range that is smaller than +.Fa length +bytes, +then all of the address ranges will be moved to the new list at +.Fa *head +and +.Fa original +will be an empty list. +The caller may supply an existing scatter/gather list in +.Fa *head . +If so, the list must be empty. +Otherwise, the caller may set +.Fa *head +to +.Dv NULL +in which case a new scatter/gather list will be allocated. +In that case, +.Fa mflags +may be set to either +.Dv M_NOWAIT +or +.Dv M_WAITOK . +Note that since the +.Fa original +list is modified by this call, it must be a private list with no other +references. +The +.Nm sglist_split +function returns zero on success or an error on failure. +.Pp +The +.Nm sglist_slice +function generates a new scatter/gather list from a sub-range of an existing +scatter/gather list +.Fa original . +The sub-range to extract is specified by the +.Fa offset +and +.Fa length +parameters. +The new scatter/gather list is stored in +.Fa *slice . +As with +.Fa head +for +.Nm sglist_join , +the caller may either provide an empty scatter/gather list, +or it may set +.Fa *slice +to +.Dv NULL +in which case +.Nm sglist_slice +will allocate a new list subject to +.Fa mflags . +Unlike +.Nm sglist_split , +.Nm sglist_slice +does not modify +.Fa original +and does not require it to be a private list. +The +.Nm sglist_split +function returns zero on success or an error on failure. +.Ss Miscellaneous Routines +The +.Nm sglist_reset +function clears the scatter/gather list +.Fa sg +so that it no longer maps any address ranges. +This can allow reuse of a single scatter/gather list object for multiple +requests. +.Pp +The +.Nm sglist_length +function returns the total length of the physical address ranges described +by the scatter/gather list +.Fa sg . +.Sh RETURN VALUES +The +.Nm sglist_alloc , +.Nm sglist_build , +and +.Nm sglist_clone +functions return a new scatter/gather list on success or +.Dv NULL +on failure. +.Pp +The +.Nm sglist_append +family of functions and the +.Nm sglist_consume_uio , +.Nm sglist_join , +.Nm sglist_slice , +and +.Nm sglist_split +functions return zero on success or an error on failure. +.Pp +The +.Nm sglist_count +function returns a count of scatter/gather list elements. +.Pp +The +.Nm sglist_length +function returns a count of address space described by a scatter/gather list +in bytes. +.Sh ERRORS +The +.Nm sglist_append +functions return the following errors on failure: +.Bl -tag -width Er +.It Bq Er EINVAL +The scatter/gather list has zero segments. +.It Bq Er EFBIG +There are not enough available segments in the scatter/gather list to append +the specified physical address ranges. +.El +.Pp +The +.Nm sglist_consume_uio +function returns the following error on failure: +.Bl -tag -width Er +.It Bq Er EINVAL +The scatter/gather list has zero segments. +.El +.Pp +The +.Nm sglist_join +function returns the following error on failure: +.Bl -tag -width Er +.It Bq Er EFBIG +There are not enough available segments in the scatter/gather list +.Fa first +to append the physical address ranges from +.Fa second . +.El +The +.Nm sglist_slice +function returns the following errors on failure: +.Bl -tag -width Er +.It Bq Er EINVAL +The +.Fa original +scatter/gather list does not describe enough address space to cover the +requested sub-range. +.It Bq Er EINVAL +The caller-supplied scatter/gather list in +.Fa *slice +is not empty. +.It Bq Er ENOMEM +An attempt to allocate a new scatter/gather list with +.Dv M_NOWAIT +set in +.Fa mflags +failed. +.It Bq Er EFBIG +There are not enough available segments in the caller-supplied scatter/gather +list in +.Fa *slice +to describe the requested physical address ranges. +.El +The +.Nm sglist_split +function returns the following errors on failure: +.Bl -tag -width Er +.It Bq Er EDOOFUS +The +.Fa original +scatter/gather list has more than one reference. +.It Bq Er EINVAL +The caller-supplied scatter/gather list in +.Fa *head +is not empty. +.It Bq Er ENOMEM +An attempt to allocate a new scatter/gather list with +.Dv M_NOWAIT +set in +.Fa mflags +failed. +.It Bq Er EFBIG +There are not enough available segments in the caller-supplied scatter/gather +list in +.Fa *head +to describe the requested physical address ranges. +.El +.Sh SEE ALSO +.Xr malloc 9 , +.Xr mbuf 9 , +.Xr uio 9 +.Sh HISTORY +This API was first introduced in +.Fx 8.0 . Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon Jun 1 20:35:09 2009 (r193259) +++ head/sys/conf/files Mon Jun 1 20:35:39 2009 (r193260) @@ -1994,6 +1994,7 @@ kern/subr_rman.c standard kern/subr_rtc.c standard kern/subr_sbuf.c standard kern/subr_scanf.c standard +kern/subr_sglist.c standard kern/subr_sleepqueue.c standard kern/subr_smp.c standard kern/subr_stack.c optional ddb | stack | ktr Added: head/sys/kern/subr_sglist.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/kern/subr_sglist.c Mon Jun 1 20:35:39 2009 (r193260) @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2008 Yahoo!, Inc. + * All rights reserved. + * Written by: John Baldwin + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +static MALLOC_DEFINE(M_SGLIST, "sglist", "scatter/gather lists"); + +/* + * Append a single (paddr, len) to a sglist. sg is the list and ss is + * the current segment in the list. If we run out of segments then + * EFBIG will be returned. + */ +static __inline int +_sglist_append_range(struct sglist *sg, struct sglist_seg **ssp, + vm_paddr_t paddr, size_t len) +{ + struct sglist_seg *ss; + + ss = *ssp; + if (ss->ss_paddr + ss->ss_len == paddr) + ss->ss_len += len; + else { + if (sg->sg_nseg == sg->sg_maxseg) { + sg->sg_nseg = 0; + return (EFBIG); + } + ss++; + ss->ss_paddr = paddr; + ss->ss_len = len; + sg->sg_nseg++; + *ssp = ss; + } + return (0); +} + +/* + * Worker routine to append a virtual address range (either kernel or + * user) to a scatter/gather list. + */ +static __inline int +_sglist_append_buf(struct sglist *sg, void *buf, size_t len, pmap_t pmap, + size_t *donep) +{ + struct sglist_seg *ss; + vm_offset_t vaddr, offset; + vm_paddr_t paddr; + size_t seglen; + int error; + + if (donep) + *donep = 0; + if (len == 0) + return (0); + + /* Do the first page. It may have an offset. */ + vaddr = (vm_offset_t)buf; + offset = vaddr & PAGE_MASK; + if (pmap != NULL) + paddr = pmap_extract(pmap, vaddr); + else + paddr = pmap_kextract(vaddr); + seglen = MIN(len, PAGE_SIZE - offset); + if (sg->sg_nseg == 0) { + ss = sg->sg_segs; + ss->ss_paddr = paddr; + ss->ss_len = seglen; + sg->sg_nseg = 1; + error = 0; + } else { + ss = &sg->sg_segs[sg->sg_nseg - 1]; + error = _sglist_append_range(sg, &ss, paddr, seglen); + } + + while (error == 0 && len > seglen) { + vaddr += seglen; + len -= seglen; + if (donep) + *donep += seglen; + seglen = MIN(len, PAGE_SIZE); + if (pmap != NULL) + paddr = pmap_extract(pmap, vaddr); + else + paddr = pmap_kextract(vaddr); + error = _sglist_append_range(sg, &ss, paddr, seglen); + } + + return (error); +} + +/* + * Determine the number of scatter/gather list elements needed to + * describe a kernel virtual address range. + */ +int +sglist_count(void *buf, size_t len) +{ + vm_offset_t vaddr, vendaddr; + vm_paddr_t lastaddr, paddr; + int nsegs; + + if (len == 0) + return (0); + + vaddr = trunc_page((vm_offset_t)buf); + vendaddr = (vm_offset_t)buf + len; + nsegs = 1; + lastaddr = pmap_kextract(vaddr); + vaddr += PAGE_SIZE; + while (vaddr < vendaddr) { + paddr = pmap_kextract(vaddr); + if (lastaddr + PAGE_SIZE != paddr) + nsegs++; + lastaddr = paddr; + vaddr += PAGE_SIZE; + } + return (nsegs); +} + +/* + * Allocate a scatter/gather list along with 'nsegs' segments. The + * 'mflags' parameters are the same as passed to malloc(9). The caller + * should use sglist_free() to free this list. + */ +struct sglist * +sglist_alloc(int nsegs, int mflags) +{ + struct sglist *sg; + + sg = malloc(sizeof(struct sglist) + nsegs * sizeof(struct sglist_seg), + M_SGLIST, mflags); + if (sg == NULL) + return (NULL); + sglist_init(sg, nsegs, (struct sglist_seg *)(sg + 1)); + return (sg); +} + +/* + * Free a scatter/gather list allocated via sglist_allc(). + */ +void +sglist_free(struct sglist *sg) +{ + + if (refcount_release(&sg->sg_refs)) + free(sg, M_SGLIST); +} + +/* + * Append the segments to describe a single kernel virtual address + * range to a scatter/gather list. If there are insufficient + * segments, then this fails with EFBIG. + */ +int +sglist_append(struct sglist *sg, void *buf, size_t len) +{ + + if (sg->sg_maxseg == 0) + return (EINVAL); + return (_sglist_append_buf(sg, buf, len, NULL, NULL)); +} + +/* + * Append a single physical address range to a scatter/gather list. + * If there are insufficient segments, then this fails with EFBIG. + */ +int +sglist_append_phys(struct sglist *sg, vm_paddr_t paddr, size_t len) +{ + struct sglist_seg *ss; + + if (sg->sg_maxseg == 0) + return (EINVAL); + if (len == 0) + return (0); + + if (sg->sg_nseg == 0) { + sg->sg_segs[0].ss_paddr = paddr; + sg->sg_segs[0].ss_len = len; + sg->sg_nseg = 1; + return (0); + } + ss = &sg->sg_segs[sg->sg_nseg - 1]; + return (_sglist_append_range(sg, &ss, paddr, len)); +} + +/* + * Append the segments that describe a single mbuf chain to a + * scatter/gather list. If there are insufficient segments, then this + * fails with EFBIG. + */ +int +sglist_append_mbuf(struct sglist *sg, struct mbuf *m0) +{ + struct mbuf *m; + int error; + + if (sg->sg_maxseg == 0) + return (EINVAL); + + error = 0; + for (m = m0; m != NULL; m = m->m_next) { + if (m->m_len > 0) { + error = sglist_append(sg, m->m_data, m->m_len); + if (error) + return (error); + } + } + return (0); +} + +/* + * Append the segments that describe a single user address range to a + * scatter/gather list. If there are insufficient segments, then this + * fails with EFBIG. + */ +int +sglist_append_user(struct sglist *sg, void *buf, size_t len, struct thread *td) +{ + + if (sg->sg_maxseg == 0) + return (EINVAL); + return (_sglist_append_buf(sg, buf, len, + vmspace_pmap(td->td_proc->p_vmspace), NULL)); +} + +/* + * Append the segments that describe a single uio to a scatter/gather + * list. If there are insufficient segments, then this fails with + * EFBIG. + */ +int +sglist_append_uio(struct sglist *sg, struct uio *uio) +{ + struct iovec *iov; + size_t resid, minlen; + pmap_t pmap; + int error, i; + + if (sg->sg_maxseg == 0) + return (EINVAL); + + resid = uio->uio_resid; + iov = uio->uio_iov; + + if (uio->uio_segflg == UIO_USERSPACE) { + KASSERT(uio->uio_td != NULL, + ("sglist_append_uio: USERSPACE but no thread")); + pmap = vmspace_pmap(uio->uio_td->td_proc->p_vmspace); + } else + pmap = NULL; + + error = 0; + for (i = 0; i < uio->uio_iovcnt && resid != 0; i++) { + /* + * Now at the first iovec to load. Load each iovec + * until we have exhausted the residual count. + */ + minlen = MIN(resid, iov[i].iov_len); + if (minlen > 0) { + error = _sglist_append_buf(sg, iov[i].iov_base, minlen, + pmap, NULL); + if (error) + return (error); + resid -= minlen; + } + } + return (0); +} + +/* + * Append the segments that describe at most 'resid' bytes from a + * single uio to a scatter/gather list. If there are insufficient + * segments, then only the amount that fits is appended. + */ +int +sglist_consume_uio(struct sglist *sg, struct uio *uio, int resid) +{ + struct iovec *iov; + size_t done; + pmap_t pmap; + int error, len; + + if (sg->sg_maxseg == 0) + return (EINVAL); + + if (uio->uio_segflg == UIO_USERSPACE) { + KASSERT(uio->uio_td != NULL, + ("sglist_consume_uio: USERSPACE but no thread")); + pmap = vmspace_pmap(uio->uio_td->td_proc->p_vmspace); + } else + pmap = NULL; + + error = 0; + while (resid > 0 && uio->uio_resid) { + iov = uio->uio_iov; + len = iov->iov_len; + if (len == 0) { + uio->uio_iov++; + uio->uio_iovcnt--; + continue; + } + if (len > resid) + len = resid; + + /* + * Try to append this iovec. If we run out of room, + * then break out of the loop. + */ + error = _sglist_append_buf(sg, iov->iov_base, len, pmap, &done); + iov->iov_base = (char *)iov->iov_base + done; + iov->iov_len -= done; + uio->uio_resid -= done; + uio->uio_offset += done; + resid -= done; + if (error) + break; + } + return (0); +} + +/* + * Allocate and populate a scatter/gather list to describe a single + * kernel virtual address range. + */ +struct sglist * +sglist_build(void *buf, size_t len, int mflags) +{ + struct sglist *sg; + int nsegs; + + if (len == 0) + return (NULL); + + nsegs = sglist_count(buf, len); + sg = sglist_alloc(nsegs, mflags); + if (sg == NULL) + return (NULL); + if (sglist_append(sg, buf, len) != 0) { + sglist_free(sg); + return (NULL); + } + return (sg); +} + +/* + * Clone a new copy of a scatter/gather list. + */ +struct sglist * +sglist_clone(struct sglist *sg, int mflags) +{ + struct sglist *new; + + if (sg == NULL) + return (NULL); + new = sglist_alloc(sg->sg_maxseg, mflags); + if (new == NULL) + return (NULL); + bcopy(sg->sg_segs, new->sg_segs, sizeof(struct sglist_seg) * + sg->sg_nseg); + return (new); +} + +/* + * Calculate the total length of the segments described in a + * scatter/gather list. + */ +size_t +sglist_length(struct sglist *sg) +{ + size_t space; + int i; + + space = 0; + for (i = 0; i < sg->sg_nseg; i++) + space += sg->sg_segs[i].ss_len; + return (space); +} + +/* + * Split a scatter/gather list into two lists. The scatter/gather + * entries for the first 'length' bytes of the 'original' list are + * stored in the '*head' list and are removed from 'original'. + * + * If '*head' is NULL, then a new list will be allocated using + * 'mflags'. If M_NOWAIT is specified and the allocation fails, + * ENOMEM will be returned. + * + * If '*head' is not NULL, it should point to an empty sglist. If it + * does not have enough room for the remaining space, then EFBIG will + * be returned. If '*head' is not empty, then EINVAL will be + * returned. + * + * If 'original' is shared (refcount > 1), then EDOOFUS will be + * returned. + */ +int +sglist_split(struct sglist *original, struct sglist **head, size_t length, + int mflags) +{ + struct sglist *sg; + size_t space, split; + int count, i; + + if (original->sg_refs > 1) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From dchagin at FreeBSD.org Mon Jun 1 20:42:28 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Mon Jun 1 20:42:35 2009 Subject: svn commit: r193262 - head/sys/compat/linux Message-ID: <200906012042.n51KgSc5091261@svn.freebsd.org> Author: dchagin Date: Mon Jun 1 20:42:27 2009 New Revision: 193262 URL: http://svn.freebsd.org/changeset/base/193262 Log: Split linux_accept() syscall onto linux_accept_common() which should be used by linuxulator and linux_accept() itself. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Mon Jun 1 20:41:33 2009 (r193261) +++ head/sys/compat/linux/linux_socket.c Mon Jun 1 20:42:27 2009 (r193262) @@ -763,14 +763,9 @@ linux_listen(struct thread *td, struct l return (listen(td, &bsd_args)); } -struct linux_accept_args { - int s; - l_uintptr_t addr; - l_uintptr_t namelen; -}; - static int -linux_accept(struct thread *td, struct linux_accept_args *args) +linux_accept_common(struct thread *td, int s, l_uintptr_t addr, + l_uintptr_t namelen) { struct accept_args /* { int s; @@ -779,19 +774,19 @@ linux_accept(struct thread *td, struct l } */ bsd_args; int error, fd; - bsd_args.s = args->s; + bsd_args.s = s; /* XXX: */ - bsd_args.name = (struct sockaddr * __restrict)PTRIN(args->addr); - bsd_args.anamelen = PTRIN(args->namelen);/* XXX */ + bsd_args.name = (struct sockaddr * __restrict)PTRIN(addr); + bsd_args.anamelen = PTRIN(namelen);/* XXX */ error = accept(td, &bsd_args); bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name); if (error) { - if (error == EFAULT && args->namelen != sizeof(struct sockaddr_in)) + if (error == EFAULT && namelen != sizeof(struct sockaddr_in)) return (EINVAL); return (error); } - if (args->addr) { - error = linux_sa_put(PTRIN(args->addr)); + if (addr) { + error = linux_sa_put(PTRIN(addr)); if (error) { (void)kern_close(td, td->td_retval[0]); return (error); @@ -809,6 +804,20 @@ linux_accept(struct thread *td, struct l return (0); } +struct linux_accept_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; +}; + +static int +linux_accept(struct thread *td, struct linux_accept_args *args) +{ + + return (linux_accept_common(td, args->s, args->addr, + args->namelen)); +} + struct linux_getsockname_args { int s; l_uintptr_t addr; From dchagin at FreeBSD.org Mon Jun 1 20:44:59 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Mon Jun 1 20:45:05 2009 Subject: svn commit: r193263 - head/sys/compat/linux Message-ID: <200906012044.n51Kiwxd091373@svn.freebsd.org> Author: dchagin Date: Mon Jun 1 20:44:58 2009 New Revision: 193263 URL: http://svn.freebsd.org/changeset/base/193263 Log: Implement a variation of the accept_common() which takes a flags argument. Do not preserve td_retval before kern_fcntl(F_SETFL) as it does not changed. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Mon Jun 1 20:42:27 2009 (r193262) +++ head/sys/compat/linux/linux_socket.c Mon Jun 1 20:44:58 2009 (r193263) @@ -772,7 +772,10 @@ linux_accept_common(struct thread *td, i struct sockaddr * __restrict name; socklen_t * __restrict anamelen; } */ bsd_args; - int error, fd; + int error; + + if (flags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK)) + return (EINVAL); bsd_args.s = s; /* XXX: */ @@ -785,23 +788,27 @@ linux_accept_common(struct thread *td, i return (EINVAL); return (error); } - if (addr) { - error = linux_sa_put(PTRIN(addr)); - if (error) { - (void)kern_close(td, td->td_retval[0]); - return (error); - } - } /* * linux appears not to copy flags from the parent socket to the - * accepted one, so we must clear the flags in the new descriptor. - * Ignore any errors, because we already have an open fd. + * accepted one, so we must clear the flags in the new descriptor + * and apply the requested flags. */ - fd = td->td_retval[0]; - (void)kern_fcntl(td, fd, F_SETFL, 0); - td->td_retval[0] = fd; - return (0); + error = kern_fcntl(td, td->td_retval[0], F_SETFL, 0); + if (error) + goto out; + error = linux_set_socket_flags(td, td->td_retval[0], flags); + if (error) + goto out; + if (addr) + error = linux_sa_put(PTRIN(addr)); + +out: + if (error) { + (void)kern_close(td, td->td_retval[0]); + td->td_retval[0] = 0; + } + return (error); } struct linux_accept_args { From dchagin at FreeBSD.org Mon Jun 1 20:48:40 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Mon Jun 1 20:48:46 2009 Subject: svn commit: r193264 - in head/sys: amd64/linux32 compat/linux i386/linux Message-ID: <200906012048.n51KmeAi091488@svn.freebsd.org> Author: dchagin Date: Mon Jun 1 20:48:39 2009 New Revision: 193264 URL: http://svn.freebsd.org/changeset/base/193264 Log: Implement accept4 syscall. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/amd64/linux32/linux.h head/sys/compat/linux/linux_socket.c head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Mon Jun 1 20:44:58 2009 (r193263) +++ head/sys/amd64/linux32/linux.h Mon Jun 1 20:48:39 2009 (r193264) @@ -669,6 +669,7 @@ union l_semun { #define LINUX_GETSOCKOPT 15 #define LINUX_SENDMSG 16 #define LINUX_RECVMSG 17 +#define LINUX_ACCEPT4 18 #define LINUX_SOL_SOCKET 1 #define LINUX_SOL_IP 0 Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Mon Jun 1 20:44:58 2009 (r193263) +++ head/sys/compat/linux/linux_socket.c Mon Jun 1 20:48:39 2009 (r193264) @@ -825,6 +825,21 @@ linux_accept(struct thread *td, struct l args->namelen)); } +struct linux_accept4_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; + int flags; +}; + +static int +linux_accept4(struct thread *td, struct linux_accept4_args *args) +{ + + return (linux_accept_common(td, args->s, args->addr, + args->namelen, args->flags)); +} + struct linux_getsockname_args { int s; l_uintptr_t addr; @@ -1528,7 +1543,8 @@ static const unsigned char lxs_args[] = LINUX_AL(4) /* recv */, LINUX_AL(6) /* sendto */, LINUX_AL(6) /* recvfrom */, LINUX_AL(2) /* shutdown */, LINUX_AL(5) /* setsockopt */, LINUX_AL(5) /* getsockopt */, - LINUX_AL(3) /* sendmsg */, LINUX_AL(3) /* recvmsg */ + LINUX_AL(3) /* sendmsg */, LINUX_AL(3) /* recvmsg */, + LINUX_AL(4) /* accept4 */ }; #define LINUX_AL_SIZE sizeof(lxs_args) / sizeof(lxs_args[0]) - 1 @@ -1582,6 +1598,8 @@ linux_socketcall(struct thread *td, stru return (linux_sendmsg(td, arg)); case LINUX_RECVMSG: return (linux_recvmsg(td, arg)); + case LINUX_ACCEPT4: + return (linux_accept4(td, arg)); } uprintf("LINUX: 'socket' typ=%d not implemented\n", args->what); Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Mon Jun 1 20:44:58 2009 (r193263) +++ head/sys/i386/linux/linux.h Mon Jun 1 20:48:39 2009 (r193264) @@ -645,6 +645,7 @@ union l_semun { #define LINUX_GETSOCKOPT 15 #define LINUX_SENDMSG 16 #define LINUX_RECVMSG 17 +#define LINUX_ACCEPT4 18 #define LINUX_SOL_SOCKET 1 #define LINUX_SOL_IP 0 From dchagin at FreeBSD.org Mon Jun 1 20:54:42 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Mon Jun 1 20:54:54 2009 Subject: svn commit: r193265 - head/sys/compat/linux Message-ID: <200906012054.n51KsfPt091635@svn.freebsd.org> Author: dchagin Date: Mon Jun 1 20:54:41 2009 New Revision: 193265 URL: http://svn.freebsd.org/changeset/base/193265 Log: Add forgotten in previous commit flags argument. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Mon Jun 1 20:48:39 2009 (r193264) +++ head/sys/compat/linux/linux_socket.c Mon Jun 1 20:54:41 2009 (r193265) @@ -765,7 +765,7 @@ linux_listen(struct thread *td, struct l static int linux_accept_common(struct thread *td, int s, l_uintptr_t addr, - l_uintptr_t namelen) + l_uintptr_t namelen, int flags) { struct accept_args /* { int s; @@ -822,7 +822,7 @@ linux_accept(struct thread *td, struct l { return (linux_accept_common(td, args->s, args->addr, - args->namelen)); + args->namelen, 0)); } struct linux_accept4_args { From zec at FreeBSD.org Mon Jun 1 20:59:41 2009 From: zec at FreeBSD.org (Marko Zec) Date: Mon Jun 1 20:59:47 2009 Subject: svn commit: r193266 - head/sys/netinet6 Message-ID: <200906012059.n51Kxe1l091789@svn.freebsd.org> Author: zec Date: Mon Jun 1 20:59:40 2009 New Revision: 193266 URL: http://svn.freebsd.org/changeset/base/193266 Log: Remove an #undef MIN that slipped under the radar and led me to hastily introduce an #define MIN() a few lines below in r191816. Approved by: julian (mentor) Discussed with: bz Modified: head/sys/netinet6/nd6.c Modified: head/sys/netinet6/nd6.c ============================================================================== --- head/sys/netinet6/nd6.c Mon Jun 1 20:54:41 2009 (r193265) +++ head/sys/netinet6/nd6.c Mon Jun 1 20:59:40 2009 (r193266) @@ -281,7 +281,6 @@ nd6_setmtu0(struct ifnet *ifp, struct nd if (ndi->maxmtu > V_in6_maxmtu) in6_setmaxmtu(); /* check all interfaces just in case */ -#undef MIN } void @@ -489,14 +488,6 @@ nd6_llinfo_timer(void *arg) if ((ifp = ((ln->lle_tbl != NULL) ? ln->lle_tbl->llt_ifp : NULL)) == NULL) panic("ln ifp == NULL"); -/* - * XXX XXX XXX XXX XXX - * - * Why the ^%(@)*&%^) is this #define MIN() needed for CURVNET_SET()?!? - * And #define MIN() is in sys/param.h already, which is #included first - * here?!? - */ -#define MIN(a,b) (((a)<(b))?(a):(b)) CURVNET_SET(ifp->if_vnet); INIT_VNET_INET6(curvnet); From delphij at delphij.net Mon Jun 1 21:02:02 2009 From: delphij at delphij.net (Xin LI) Date: Mon Jun 1 21:02:09 2009 Subject: svn commit: r193245 - head/sys/dev/aic7xxx/aicasm In-Reply-To: <20090601201621.GA35383@freebsd.org> References: <200906011843.n51IhXt4087781@svn.freebsd.org> <4A242282.4030404@FreeBSD.org> <20090601184937.GA24177@freebsd.org> <20090601185532.GA24838@freebsd.org> <4A242771.3090605@delphij.net> <20090601201621.GA35383@freebsd.org> Message-ID: <4A24417C.9060509@delphij.net> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Roman Divacky wrote: [...] >>> you build the kernel with -std=gnu99 instead of -std=c99. which is a bug. I am >>> trying to fix this. if anyone has any idea please mail me.. >> This is strange... Let me take a look at this, I have reverted the >> WARNS?=6 change for now. > > oh.. sorry. this has nothing to do with this commit. I just noticed it in > doug's reply.. The commit itself has a problem :) I'll correct it before marking this back to WARNS=6. Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.11 (FreeBSD) iEYEARECAAYFAkokQXsACgkQi+vbBBjt66DrKACdH90YE8KyOq+lmN8adEBP50Yz ZyEAoLVQvb95bpC2jQCF3YXpJh/roNkm =w4NO -----END PGP SIGNATURE----- From jkim at FreeBSD.org Mon Jun 1 21:02:41 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 21:02:50 2009 Subject: svn commit: r193267 - in vendor-sys/acpica/dist: . common compiler debugger disassembler dispatcher events executer generate generate/lint hardware include include/platform interpreter namespace os... Message-ID: <200906012102.n51L2eYJ091912@svn.freebsd.org> Author: jkim Date: Mon Jun 1 21:02:40 2009 New Revision: 193267 URL: http://svn.freebsd.org/changeset/base/193267 Log: Import ACPICA 20090521 (with three patches from ACPICA GIT). Added: vendor-sys/acpica/dist/README vendor-sys/acpica/dist/compiler/Makefile (contents, props changed) vendor-sys/acpica/dist/compiler/aslstartup.c (contents, props changed) vendor-sys/acpica/dist/compiler/readme.txt (contents, props changed) vendor-sys/acpica/dist/generate/ vendor-sys/acpica/dist/generate/lint/ vendor-sys/acpica/dist/generate/lint/files.lnt vendor-sys/acpica/dist/generate/lint/lint.bat vendor-sys/acpica/dist/generate/lint/lset.bat vendor-sys/acpica/dist/generate/lint/options.lnt vendor-sys/acpica/dist/generate/lint/readme.txt (contents, props changed) vendor-sys/acpica/dist/generate/lint/std16.lnt vendor-sys/acpica/dist/generate/lint/std32.lnt vendor-sys/acpica/dist/generate/lint/std64.lnt vendor-sys/acpica/dist/hardware/hwvalid.c (contents, props changed) vendor-sys/acpica/dist/hardware/hwxface.c (contents, props changed) vendor-sys/acpica/dist/include/accommon.h (contents, props changed) vendor-sys/acpica/dist/include/acpredef.h (contents, props changed) vendor-sys/acpica/dist/include/acrestyp.h (contents, props changed) vendor-sys/acpica/dist/include/platform/accygwin.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acintel.h (contents, props changed) vendor-sys/acpica/dist/include/platform/aclinux.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acmsvc.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acnetbsd.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acos2.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acwin.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acwin64.h (contents, props changed) vendor-sys/acpica/dist/namespace/nspredef.c (contents, props changed) vendor-sys/acpica/dist/os_specific/ vendor-sys/acpica/dist/os_specific/service_layers/ vendor-sys/acpica/dist/os_specific/service_layers/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/osunixxf.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswindir.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswintbl.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswinxf.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aeexec.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aehandlers.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aemain.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aetables.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/ vendor-sys/acpica/dist/tools/acpisrc/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/acpisrc.h (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/ascase.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asconvrt.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asfile.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asmain.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asremove.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/astable.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asutils.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/tools/acpixtract/ vendor-sys/acpica/dist/tools/acpixtract/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpixtract/acpixtract.c (contents, props changed) vendor-sys/acpica/dist/tools/examples/ vendor-sys/acpica/dist/tools/examples/examples.c (contents, props changed) vendor-sys/acpica/dist/utilities/utlock.c (contents, props changed) Deleted: vendor-sys/acpica/dist/interpreter/ Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/common/adfile.c vendor-sys/acpica/dist/common/adisasm.c vendor-sys/acpica/dist/common/adwalk.c vendor-sys/acpica/dist/common/dmrestag.c vendor-sys/acpica/dist/common/dmtable.c vendor-sys/acpica/dist/common/dmtbdump.c vendor-sys/acpica/dist/common/dmtbinfo.c vendor-sys/acpica/dist/common/getopt.c vendor-sys/acpica/dist/compiler/aslanalyze.c vendor-sys/acpica/dist/compiler/aslcodegen.c vendor-sys/acpica/dist/compiler/aslcompile.c vendor-sys/acpica/dist/compiler/aslcompiler.h vendor-sys/acpica/dist/compiler/aslcompiler.l vendor-sys/acpica/dist/compiler/aslcompiler.y vendor-sys/acpica/dist/compiler/asldefine.h vendor-sys/acpica/dist/compiler/aslerror.c vendor-sys/acpica/dist/compiler/aslfiles.c vendor-sys/acpica/dist/compiler/aslfold.c vendor-sys/acpica/dist/compiler/aslglobal.h vendor-sys/acpica/dist/compiler/asllength.c vendor-sys/acpica/dist/compiler/asllisting.c vendor-sys/acpica/dist/compiler/aslload.c vendor-sys/acpica/dist/compiler/asllookup.c vendor-sys/acpica/dist/compiler/aslmain.c vendor-sys/acpica/dist/compiler/aslmap.c vendor-sys/acpica/dist/compiler/aslopcodes.c vendor-sys/acpica/dist/compiler/asloperands.c vendor-sys/acpica/dist/compiler/aslopt.c vendor-sys/acpica/dist/compiler/aslresource.c vendor-sys/acpica/dist/compiler/aslrestype1.c vendor-sys/acpica/dist/compiler/aslrestype2.c vendor-sys/acpica/dist/compiler/aslstubs.c vendor-sys/acpica/dist/compiler/asltransform.c vendor-sys/acpica/dist/compiler/asltree.c vendor-sys/acpica/dist/compiler/asltypes.h vendor-sys/acpica/dist/compiler/aslutils.c vendor-sys/acpica/dist/debugger/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c vendor-sys/acpica/dist/disassembler/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c vendor-sys/acpica/dist/dispatcher/dsfield.c vendor-sys/acpica/dist/dispatcher/dsinit.c vendor-sys/acpica/dist/dispatcher/dsmethod.c vendor-sys/acpica/dist/dispatcher/dsmthdat.c vendor-sys/acpica/dist/dispatcher/dsobject.c vendor-sys/acpica/dist/dispatcher/dsopcode.c vendor-sys/acpica/dist/dispatcher/dsutils.c vendor-sys/acpica/dist/dispatcher/dswexec.c vendor-sys/acpica/dist/dispatcher/dswload.c vendor-sys/acpica/dist/dispatcher/dswscope.c vendor-sys/acpica/dist/dispatcher/dswstate.c vendor-sys/acpica/dist/events/evevent.c vendor-sys/acpica/dist/events/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c vendor-sys/acpica/dist/events/evregion.c vendor-sys/acpica/dist/events/evrgnini.c vendor-sys/acpica/dist/events/evsci.c vendor-sys/acpica/dist/events/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c vendor-sys/acpica/dist/executer/exconfig.c vendor-sys/acpica/dist/executer/exconvrt.c vendor-sys/acpica/dist/executer/excreate.c vendor-sys/acpica/dist/executer/exdump.c vendor-sys/acpica/dist/executer/exfield.c vendor-sys/acpica/dist/executer/exfldio.c vendor-sys/acpica/dist/executer/exmisc.c vendor-sys/acpica/dist/executer/exmutex.c vendor-sys/acpica/dist/executer/exnames.c vendor-sys/acpica/dist/executer/exoparg1.c vendor-sys/acpica/dist/executer/exoparg2.c vendor-sys/acpica/dist/executer/exoparg3.c vendor-sys/acpica/dist/executer/exoparg6.c vendor-sys/acpica/dist/executer/exprep.c vendor-sys/acpica/dist/executer/exregion.c vendor-sys/acpica/dist/executer/exresnte.c vendor-sys/acpica/dist/executer/exresolv.c vendor-sys/acpica/dist/executer/exresop.c vendor-sys/acpica/dist/executer/exstore.c vendor-sys/acpica/dist/executer/exstoren.c vendor-sys/acpica/dist/executer/exstorob.c vendor-sys/acpica/dist/executer/exsystem.c vendor-sys/acpica/dist/executer/exutils.c vendor-sys/acpica/dist/hardware/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c vendor-sys/acpica/dist/include/acapps.h vendor-sys/acpica/dist/include/acconfig.h vendor-sys/acpica/dist/include/acdebug.h vendor-sys/acpica/dist/include/acdisasm.h vendor-sys/acpica/dist/include/acdispat.h vendor-sys/acpica/dist/include/acevents.h vendor-sys/acpica/dist/include/acexcep.h vendor-sys/acpica/dist/include/acglobal.h vendor-sys/acpica/dist/include/achware.h vendor-sys/acpica/dist/include/acinterp.h vendor-sys/acpica/dist/include/aclocal.h vendor-sys/acpica/dist/include/acmacros.h vendor-sys/acpica/dist/include/acnames.h vendor-sys/acpica/dist/include/acnamesp.h vendor-sys/acpica/dist/include/acobject.h vendor-sys/acpica/dist/include/acopcode.h vendor-sys/acpica/dist/include/acoutput.h vendor-sys/acpica/dist/include/acparser.h vendor-sys/acpica/dist/include/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h vendor-sys/acpica/dist/include/acresrc.h vendor-sys/acpica/dist/include/acstruct.h vendor-sys/acpica/dist/include/actables.h vendor-sys/acpica/dist/include/actbl.h vendor-sys/acpica/dist/include/actbl1.h vendor-sys/acpica/dist/include/actbl2.h vendor-sys/acpica/dist/include/actypes.h vendor-sys/acpica/dist/include/acutils.h vendor-sys/acpica/dist/include/amlcode.h vendor-sys/acpica/dist/include/amlresrc.h vendor-sys/acpica/dist/include/platform/acefi.h vendor-sys/acpica/dist/include/platform/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h vendor-sys/acpica/dist/include/platform/acgcc.h vendor-sys/acpica/dist/namespace/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c vendor-sys/acpica/dist/osunixxf.c vendor-sys/acpica/dist/parser/psargs.c vendor-sys/acpica/dist/parser/psloop.c vendor-sys/acpica/dist/parser/psopcode.c vendor-sys/acpica/dist/parser/psparse.c vendor-sys/acpica/dist/parser/psscope.c vendor-sys/acpica/dist/parser/pstree.c vendor-sys/acpica/dist/parser/psutils.c vendor-sys/acpica/dist/parser/pswalk.c vendor-sys/acpica/dist/parser/psxface.c vendor-sys/acpica/dist/resources/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c vendor-sys/acpica/dist/resources/rsirq.c vendor-sys/acpica/dist/resources/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c vendor-sys/acpica/dist/tables/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c vendor-sys/acpica/dist/tools/acpiexec/aecommon.h vendor-sys/acpica/dist/utilities/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c vendor-sys/acpica/dist/utilities/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c vendor-sys/acpica/dist/utilities/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c Added: vendor-sys/acpica/dist/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor-sys/acpica/dist/README Mon Jun 1 21:02:40 2009 (r193267) @@ -0,0 +1,79 @@ +acpica-unix +----------- + +This source release includes: + + +1) a cross-OS AML interpreter + +This is intended to allow commercial and open source operating systems +to be enabled for ACPI. OS specific code is still needed, but the +AML interpreter should greatly improve the development speed of ACPI +support. + +The AML interpreter source should be integrated into the kernel's +build process. We recommend establishing an automated method for +this, so later versions can also be incorporated easily. Please see +the documentation on the website for API and other implementation +information. + + +2) iasl, an ASL compiler/decompiler + +iasl compiles ASL (ACPI Source Language) into AML (ACPI Machine +Language). This AML is suitable for inclusion as a DSDT in system +firmware. It also can disassemble AML, for debugging purposes. + +To compile: + +cd compiler +make + +It has been compiled on Linux, but should easily port to other Unix +environments. + +Run 'iasl -h' for more information, or download the binary version for +documentation in PDF format. + + +3) acpisrc, a source code conversion tool + +acpisrc converts the standard form of the acpica source release (included +here) into a version that meets Linux coding guidelines. This consists +mainly of performing a series of string replacements and transformations +to the code. + +To compile: + +cd tools/acpisrc +make + +It has been compiled on Linux, but should easily port to other Unix +environments. + + +4) acpibin, an AML file tool + +acpibin compares AML files, dumps AML binary files to text files, +extracts binary AML from text files, and other AML file +manipulation. + +To compile: + +cd tools/acpibin +make + + +5) acpiexec, a user-space AML interpreter + +acpiexec allows the loading of ACPI tables and execution of control +methods from user space. Useful for debugging AML code and testing +the AML interpreter. + +To compile: + +cd tools/acpiexec +make + + +Thanks -- The ACPI CA Team Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Mon Jun 1 20:59:40 2009 (r193266) +++ vendor-sys/acpica/dist/changes.txt Mon Jun 1 21:02:40 2009 (r193267) @@ -1,59 +1,1462 @@ ---------------------------------------- +21 May 2009. Summary of changes for version 20090521: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Disabled the preservation of the SCI enable bit in the PM1 control register. +The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be +a "preserved" bit - "OSPM always preserves this bit position", section +4.7.3.2.1. However, some machines fail if this bit is in fact preserved +because the bit needs to be explicitly set by the OS as a workaround. No +machines fail if the bit is not preserved. Therefore, ACPICA no longer +attempts to preserve this bit. + +Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or +incorrectly formed _PRT package could cause a fault. Added validation to +ensure that each package element is actually a sub-package. + +Implemented a new interface to install or override a single control method, +AcpiInstallMethod. This interface is useful when debugging in order to repair +an existing method or to install a missing method without having to override +the entire ACPI table. See the ACPICA Programmer Reference for use and +examples. Lin Ming, Bob Moore. + +Fixed several reference count issues with the DdbHandle object that is +created from a Load or LoadTable operator. Prevent premature deletion of the +object. Also, mark the object as invalid once the table has been unloaded. +This is needed because the handle itself may not be deleted after the table +unload, depending on whether it has been stored in a named object by the +caller. Lin Ming. + +Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple +mutexes of the same sync level are acquired but then not released in strict +opposite order, the internally maintained Current Sync Level becomes confused +and can cause subsequent execution errors. ACPICA BZ 471. + +Changed the allowable release order for ASL mutex objects. The ACPI 4.0 +specification has been changed to make the SyncLevel for mutex objects more +useful. When releasing a mutex, the SyncLevel of the mutex must now be the +same as the current sync level. This makes more sense than the previous rule +(SyncLevel less than or equal). This change updates the code to match the +specification. + +Fixed a problem with the local version of the AcpiOsPurgeCache function. The +(local) cache must be locked during all cache object deletions. Andrew +Baumann. + +Updated the Load operator to use operation region interfaces. This replaces +direct memory mapping with region access calls. Now, all region accesses go +through the installed region handler as they should. + +Simplified and optimized the NsGetNextNode function. Reduced parameter count +and reduced code for this frequently used function. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + Current Release: + Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total + Debug Version: 158.9K Code, 50.0K Data, 208.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems +with sub-table disassembly and handling invalid sub-tables. Attempt recovery +after an invalid sub-table ID. + +---------------------------------------- +22 April 2009. Summary of changes for version 20090422: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Fixed a compatibility issue with the recently released I/O port protection +mechanism. For windows compatibility, 1) On a port protection violation, +simply ignore the request and do not return an exception (allow the control +method to continue execution.) 2) If only part of the request overlaps a +protected port, read/write the individual ports that are not protected. Linux +BZ 13036. Lin Ming + +Enhanced the execution of the ASL/AML BreakPoint operator so that it actually +breaks into the AML debugger if the debugger is present. This matches the +ACPI-defined behavior. + +Fixed several possible warnings related to the use of the configurable +ACPI_THREAD_ID. This type can now be configured as either an integer or a +pointer with no warnings. Also fixes several warnings in printf-like +statements for the 64-bit build when the type is configured as a pointer. +ACPICA BZ 766, 767. + +Fixed a number of possible warnings when compiling with gcc 4+ (depending on +warning options.) Examples include printf formats, aliasing, unused globals, +missing prototypes, missing switch default statements, use of non-ANSI +library functions, use of non-ANSI constructs. See generate/unix/Makefile for +a list of warning options used with gcc 3 and 4. ACPICA BZ 735. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + Current Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on +the 64-bit build. + +iASL: Fixed a problem where the Unix/Linux versions of the compiler could not +correctly digest Windows/DOS formatted files (with CR/LF). + +iASL: Added a new option for "quiet mode" (-va) that produces only the +compilation summary, not individual errors and warnings. Useful for large +batch compilations. + +AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex +timeout that can be used to detect hang conditions during execution of AML +code (includes both internal semaphores and AML-defined mutexes and events.) + +Added new makefiles for the generation of acpica in a generic unix-like +environment. These makefiles are intended to generate the acpica tools and +utilities from the original acpica git source tree structure. + +Test Suites: Updated and cleaned up the documentation files. Updated the +copyrights to 2009, affecting all source files. Use the new version of iASL +with quiet mode. Increased the number of available semaphores in the Windows +OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added +an alternate implementation of the semaphore timeout to allow aslts to +execute fully on Cygwin. + +---------------------------------------- +20 March 2009. Summary of changes for version 20090320: + +1) ACPI CA Core Subsystem: + +Fixed a possible race condition between AcpiWalkNamespace and dynamic table +unloads. Added a reader/writer locking mechanism to allow multiple concurrent +namespace walks (readers), but block a dynamic table unload until it can gain +exclusive write access to the namespace. This fixes a problem where a table +unload could (possibly catastrophically) delete the portion of the namespace +that is currently being examined by a walk. Adds a new file, utlock.c, that +implements the reader/writer lock mechanism. ACPICA BZ 749. + +Fixed a regression introduced in version 20090220 where a change to the FADT +handling could cause the ACPICA subsystem to access non-existent I/O ports. + +Modified the handling of FADT register and table (FACS/DSDT) addresses. The +FADT can contain both 32-bit and 64-bit versions of these addresses. +Previously, the 64-bit versions were favored, meaning that if both 32 and 64 +versions were valid, but not equal, the 64-bit version was used. This was +found to cause some machines to fail. Now, in this case, the 32-bit version +is used instead. This now matches the Windows behavior. + +Implemented a new mechanism to protect certain I/O ports. Provides Microsoft +compatibility and protects the standard PC I/O ports from access via AML +code. Adds a new file, hwvalid.c + +Fixed a possible extraneous warning message from the FADT support. The +message warns of a 32/64 length mismatch between the legacy and GAS +definitions for a register. + +Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is +made obsolete by the port protection mechanism above. It was previously used +to validate the entire address range of an operation region, which could be +incorrect if the range included illegal ports, but fields within the +operation region did not actually access those ports. Validation is now +performed on a per-field basis instead of the entire region. + +Modified the handling of the PM1 Status Register ignored bit (bit 11.) +Ignored bits must be "preserved" according to the ACPI spec. Usually, this +means a read/modify/write when writing to the register. However, for status +registers, writing a one means clear the event. Writing a zero means preserve +the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, +and the ACPICA code now simply always writes a zero to the ignored bit. + +Modified the handling of ignored bits for the PM1 A/B Control Registers. As +per the ACPI specification, for the control registers, preserve +(read/modify/write) all bits that are defined as either reserved or ignored. + +Updated the handling of write-only bits in the PM1 A/B Control Registers. +When reading the register, zero the write-only bits as per the ACPI spec. +ACPICA BZ 443. Lin Ming. + +Removed "Linux" from the list of supported _OSI strings. Linux no longer +wants to reply true to this request. The Windows strings are the only paths +through the AML that are tested and known to work properly. + + Previous Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + Current Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and +aetables.c + +---------------------------------------- +20 February 2009. Summary of changes for version 20090220: + +1) ACPI CA Core Subsystem: + +Optimized the ACPI register locking. Removed locking for reads from the ACPI +bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is +not required when reading the single-bit registers. The +AcpiGetRegisterUnlocked function is no longer needed and has been removed. +This will improve performance for reads on these registers. ACPICA BZ 760. + +Fixed the parameter validation for AcpiRead/Write. Now return +AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if +the register has an address of zero. Previously, these cases simply returned +AE_OK. For optional registers such as PM1B status/enable/control, the caller +should check for a valid register address before calling. ACPICA BZ 748. + +Renamed the external ACPI bit register access functions. Renamed +AcpiGetRegister and AcpiSetRegister to clarify the purpose of these +functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. +Also, restructured the code for these functions by simplifying the code path +and condensing duplicate code to reduce code size. + +Added new functions to transparently handle the possibly split PM1 A/B +registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions +now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ +746. + +Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. +This function writes both of the PM1 control registers (A/B). These registers +are different than the PM1 A/B status and enable registers in that different +values can be written to the A/B registers. Most notably, the SLP_TYP bits +can be different, as per the values returned from the _Sx predefined methods. + +Removed an extra register write within AcpiHwClearAcpiStatus. This function +was writing an optional PM1B status register twice. The existing call to the +low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B +register. ACPICA BZ 751. + +Split out the PM1 Status registers from the FADT. Added new globals for these +registers (A/B), similar to the way the PM1 Enable registers are handled. +Instead of overloading the FADT Event Register blocks. This makes the code +clearer and less prone to error. + +Fixed the warning message for when the platform contains too many ACPI tables +for the default size of the global root table data structure. The calculation +for the truncation value was incorrect. + +Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this +obsolete macro, since it is now a simple reference to ->common.type. There +were about 150 invocations of the macro across 41 files. ACPICA BZ 755. + +Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as +TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to +simply SLEEP_TYPE. ACPICA BZ 754. + +Conditionally compile the AcpiSetFirmwareWakingVector64 function. This +function is only needed on 64-bit host operating systems and is thus not +included for 32-bit hosts. + +Debug output: print the input and result for invocations of the _OSI reserved +control method via the ACPI_LV_INFO debug level. Also, reduced some of the +verbosity of this debug level. Len Brown. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + Current Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the +various legal performance profiles. + +---------------------------------------- +23 January 2009. Summary of changes for version 20090123: + +1) ACPI CA Core Subsystem: + +Added the 2009 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Implemented a change to allow the host to override any ACPI table, including +dynamically loaded tables. Previously, only the DSDT could be replaced by the +host. With this change, the AcpiOsTableOverride interface is called for each +table found in the RSDT/XSDT during ACPICA initialization, and also whenever +a table is dynamically loaded via the AML Load operator. + +Updated FADT flag definitions, especially the Boot Architecture flags. + +Debugger: For the Find command, automatically pad the input ACPI name with +underscores if the name is shorter than 4 characters. This enables a match +with the actual namespace entry which is itself padded with underscores. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + +2) iASL Compiler/Disassembler and Tools: + +Fix build error under Bison-2.4. + +Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture +flags. Now decode all flags, regardless of the FADT version. Flag output +includes the FADT version which first defined each flag. + +The iASL -g option now dumps the RSDT to a file (in addition to the FADT and +DSDT). Windows only. + +---------------------------------------- +04 December 2008. Summary of changes for version 20081204: + +1) ACPI CA Core Subsystem: + +The ACPICA Programmer Reference has been completely updated and revamped for +this release. This includes updates to the external interfaces, OSL +interfaces, the overview sections, and the debugger reference. + +Several new ACPICA interfaces have been implemented and documented in the +programmer reference: +AcpiReset - Writes the reset value to the FADT-defined reset register. +AcpiDisableAllGpes - Disable all available GPEs. +AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. +AcpiGetGpeDevice - Get the GPE block device associated with a GPE. +AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. +AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) +AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) + +Most of the public ACPI hardware-related interfaces have been moved to a new +file, components/hardware/hwxface.c + +Enhanced the FADT parsing and low-level ACPI register access: The ACPI +register lengths within the FADT are now used, and the low level ACPI +register access no longer hardcodes the ACPI register lengths. Given that +there may be some risk in actually trusting the FADT register lengths, a run- +time option was added to fall back to the default hardcoded lengths if the +FADT proves to contain incorrect values - UseDefaultRegisterWidths. This +option is set to true for now, and a warning is issued if a suspicious FADT +register length is overridden with the default value. + +Fixed a reference count issue in NsRepairObject. This problem was introduced +in version 20081031 as part of a fix to repair Buffer objects within +Packages. Lin Ming. + +Added semaphore support to the Linux/Unix application OS-services layer +(OSL). ACPICA BZ 448. Lin Ming. + +Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will +be implemented in the OSL, or will binary semaphores be used instead. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Completed the '-e' option to include additional ACPI tables in order to +aid with disassembly and External statement generation. ACPICA BZ 742. Lin +Ming. + +iASL: Removed the "named object in while loop" error. The compiler cannot +determine how many times a loop will execute. ACPICA BZ 730. + +Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA +BZ 743. + +Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). + +---------------------------------------- +31 October 2008. Summary of changes for version 20081031: + +1) ACPI CA Core Subsystem: + +Restructured the ACPICA header files into public/private. acpi.h now includes +only the "public" acpica headers. All other acpica headers are "private" and +should not be included by acpica users. One new file, accommon.h is used to +include the commonly used private headers for acpica code generation. Future +plans include moving all private headers to a new subdirectory. + +Implemented an automatic Buffer->String return value conversion for +predefined ACPI methods. For these methods (such as _BIF), added automatic +conversion for return objects that are required to be a String, but a Buffer +was found instead. This can happen when reading string battery data from an +operation region, because it used to be difficult to convert the data from +buffer to string from within the ASL. Ensures that the host OS is provided +with a valid null-terminated string. Linux BZ 11822. + +Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector +into two: one for the 32-bit vector, another for the 64-bit vector. This is +required because the host OS must setup the wake much differently for each +vector (real vs. protected mode, etc.) and the interface itself should not be +deciding which vector to use. Also, eliminated the GetFirmwareWakingVector +interface, as it served no purpose (only the firmware reads the vector, OS +only writes the vector.) ACPICA BZ 731. + +Implemented a mechanism to escape infinite AML While() loops. Added a loop +counter to force exit from AML While loops if the count becomes too large. +This can occur in poorly written AML when the hardware does not respond +within a while loop and the loop does not implement a timeout. The maximum +loop count is configurable. A new exception code is returned when a loop is +broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. + +Optimized the execution of AML While loops. Previously, a control state +object was allocated and freed for each execution of the loop. The +optimization is to simply reuse the control state for each iteration. This +speeds up the raw loop execution time by about 5%. + +Enhanced the implicit return mechanism. For Windows compatibility, return an +implicit integer of value zero for methods that contain no executable code. +Such methods are seen in the field as stubs (presumably), and can cause +drivers to fail if they expect a return value. Lin Ming. + +Allow multiple backslashes as root prefixes in namepaths. In a fully +qualified namepath, allow multiple backslash prefixes. This can happen (and +is seen in the field) because of the use of a double-backslash in strings +(since backslash is the escape character) causing confusion. ACPICA BZ 739 +Lin Ming. + +Emit a warning if two different FACS or DSDT tables are discovered in the +FADT. Checks if there are two valid but different addresses for the FACS and +DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) + +Consolidated the method argument count validation code. Merged the code that +validates control method argument counts into the predefined validation +module. Eliminates possible multiple warnings for incorrect argument counts. + +Implemented ACPICA example code. Includes code for ACPICA initialization, +handler installation, and calling a control method. Available at +source/tools/examples. + +Added a global pointer for FACS table to simplify internal FACS access. Use +the global pointer instead of using AcpiGetTableByIndex for each FACS access. +This simplifies the code for the Global Lock and the Firmware Waking +Vector(s). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + Current Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Improved disassembly of external method calls. Added the -e option to +allow the inclusion of additional ACPI tables to help with the disassembly of +method invocations and the generation of external declarations during the +disassembly. Certain external method invocations cannot be disassembled +properly without the actual declaration of the method. Use the -e option to +include the table where the external method(s) are actually declared. Most +useful for disassembling SSDTs that make method calls back to the master +DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl -d +-e dsdt.aml ssdt1.aml + +iASL: Fix to allow references to aliases within ASL namepaths. Fixes a +problem where the use of an alias within a namepath would result in a not +found error or cause the compiler to fault. Also now allows forward +references from the Alias operator itself. ACPICA BZ 738. + +---------------------------------------- +26 September 2008. Summary of changes for version 20080926: + +1) ACPI CA Core Subsystem: + +Designed and implemented a mechanism to validate predefined ACPI methods and +objects. This code validates the predefined ACPI objects (objects whose names +start with underscore) that appear in the namespace, at the time they are +evaluated. The argument count and the type of the returned object are +validated against the ACPI specification. The purpose of this validation is +to detect problems with the BIOS-implemented predefined ACPI objects before +the results are returned to the ACPI-related drivers. Future enhancements may +include actual repair of incorrect return objects where possible. Two new +files are nspredef.c and acpredef.h. + +Fixed a fault in the AML parser if a memory allocation fails during the Op +completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. + +Fixed an issue with implicit return compatibility. This change improves the +implicit return mechanism to be more compatible with the MS interpreter. Lin +Ming, ACPICA BZ 349. + +Implemented support for zero-length buffer-to-string conversions. Allow zero +length strings during interpreter buffer-to-string conversions. For example, +during the ToDecimalString and ToHexString operators, as well as implicit +conversions. Fiodor Suietov, ACPICA BZ 585. + +Fixed two possible memory leaks in the error exit paths of +AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are +similar in that they use a stack of state objects in order to eliminate +recursion. The stack must be fully unwound and deallocated if an error +occurs. Lin Ming. ACPICA BZ 383. + +Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global +ACPI register table. This bit does not exist and is unused. Lin Ming, Bob +Moore ACPICA BZ 442. + +Removed the obsolete version number in module headers. Removed the +"$Revision" number that appeared in each module header. This version number +was useful under SourceSafe and CVS, but has no meaning under git. It is not +only incorrect, it could also be misleading. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + Current Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + +---------------------------------------- +29 August 2008. Summary of changes for version 20080829: + +1) ACPI CA Core Subsystem: + +Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type +Reference. Changes include the elimination of cheating on the Object field +for the DdbHandle subtype, addition of a reference class field to +differentiate the various reference types (instead of an AML opcode), and the +cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 + +Reduce an error to a warning for an incorrect method argument count. +Previously aborted with an error if too few arguments were passed to a +control method via the external ACPICA interface. Now issue a warning instead +and continue. Handles the case where the method inadvertently declares too +many arguments, but does not actually use the extra ones. Applies mainly to +the predefined methods. Lin Ming. Linux BZ 11032. + +Disallow the evaluation of named object types with no intrinsic value. Return +AE_TYPE for objects that have no value and therefore evaluation is undefined: +Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of +these types were allowed, but an exception would be generated at some point +during the evaluation. Now, the error is generated up front. + +Fixed a possible memory leak in the AcpiNsGetExternalPathname function +(nsnames.c). Fixes a leak in the error exit path. + +Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug +levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION +interfaces. Also added ACPI_DB_EVENTS to correspond with the existing +ACPI_LV_EVENTS. + +Removed obsolete and/or unused exception codes from the acexcep.h header. +There is the possibility that certain device drivers may be affected if they +use any of these exceptions. + +The ACPICA documentation has been added to the public git source tree, under +acpica/documents. Included are the ACPICA programmer reference, the iASL +compiler reference, and the changes.txt release logfile. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 +defines _SCP with 3 arguments. Previous versions defined it with only 1 +argument. iASL now allows both definitions. + +iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- +length subtables when disassembling ACPI tables. Also fixed a couple of +errors where a full 16-bit table type field was not extracted from the input +properly. + +acpisrc: Improve comment counting mechanism for generating source code +statistics. Count first and last lines of multi-line comments as whitespace, +not comment lines. Handle Linux legal header in addition to standard acpica +header. + +---------------------------------------- + +29 July 2008. Summary of changes for version 20080729: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +1) ACPI CA Core Subsystem: + +Fix a possible deadlock in the GPE dispatch. Remove call to +AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt +to acquire the GPE lock but can deadlock since the GPE lock is already held +at dispatch time. This code was introduced in version 20060831 as a response +to Linux BZ 6881 and has since been removed from Linux. + +Add a function to dereference returned reference objects. Examines the return +object from a call to AcpiEvaluateObject. Any Index or RefOf references are +automatically dereferenced in an attempt to return something useful (these +reference types cannot be converted into an external ACPI_OBJECT.) Provides +MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 + +x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new +subtables for the MADT and one new subtable for the SRAT. Includes +disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC +Specification, June 2008. + +Additional error checking for pathname utilities. Add error check after all +calls to AcpiNsGetPathnameLength. Add status return from +AcpiNsBuildExternalPath and check after all calls. Add parameter validation +to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. + +Return status from the global init function AcpiUtGlobalInitialize. This is +used by both the kernel subsystem and the utilities such as iASL compiler. +The function could possibly fail when the caches are initialized. Yang Yi. + +Add a function to decode reference object types to strings. Created for +improved error messages. + +Improve object conversion error messages. Better error messages during object +conversion from internal to the external ACPI_OBJECT. Used for external calls +to AcpiEvaluateObject. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + +2) iASL Compiler/Disassembler and Tools: + +Debugger: fix a possible hang when evaluating non-methods. Fixes a problem +introduced in version 20080701. If the object being evaluated (via execute +command) is not a method, the debugger can hang while trying to obtain non- +existent parameters. + +iASL: relax error for using reserved "_T_x" identifiers. These names can +appear in a disassembled ASL file if they were emitted by the original +compiler. Instead of issuing an error or warning and forcing the user to +manually change these names, issue a remark instead. + +iASL: error if named object created in while loop. Emit an error if any named +object is created within a While loop. If allowed, this code will generate a +run-time error on the second iteration of the loop when an attempt is made to +create the same named object twice. ACPICA bugzilla 730. + +iASL: Support absolute pathnames for include files. Add support for absolute +pathnames within the Include operator. previously, only relative pathnames +were supported. + +iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. +The ACPI spec requires one interrupt minimum. BZ 423 + +iASL: Handle a missing ResourceSource arg, with a present SourceIndex. +Handles the case for the Interrupt Resource Descriptor where +the ResourceSource argument is omitted but ResourceSourceIndex +is present. Now leave room for the Index. BZ 426 + +iASL: Prevent error message if CondRefOf target does not exist. Fixes cases +where an error message is emitted if the target does not exist. BZ 516 + +iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option +(get ACPI tables on Windows). This was apparently broken in version 20070919. + +AcpiXtract: Handle EOF while extracting data. Correctly handle the case where +the EOF happens immediately after the last table in the input file. Print +completion message. Previously, no message was displayed in this case. + +---------------------------------------- +01 July 2008. Summary of changes for version 20080701: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +0) Git source tree / acpica.org + +Fixed a problem where a git-clone from http would not transfer the entire +source tree. + +1) ACPI CA Core Subsystem: + +Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one +enable bit. Now performs a read-change-write of the enable register instead +of simply writing out the cached enable mask. This will prevent inadvertent +enabling of GPEs if a rogue GPE is received during initialization (before GPE +handlers are installed.) + +Implemented a copy for dynamically loaded tables. Previously, dynamically +loaded tables were simply mapped - but on some machines this memory is +corrupted after suspend. Now copy the table to a local buffer. For the +OpRegion case, added checksum verify. Use the table length from the table +header, not the region length. For the Buffer case, use the table length +also. Dennis Noordsij, Bob Moore. BZ 10734 + +Fixed a problem where the same ACPI table could not be dynamically loaded and +unloaded more than once. Without this change, a table cannot be loaded again +once it has been loaded/unloaded one time. The current mechanism does not +unregister a table upon an unload. During a load, if the same table is found, +this no longer returns an exception. BZ 722 + +Fixed a problem where the wrong descriptor length was calculated for the +EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag +are calculated as 12 bytes long, but the actual length in the internal +descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported +by Linn Crosetto. BZ 728 + +Fixed a possible memory leak in the Unload operator. The DdbHandle returned +by Load() did not have its reference count decremented during unload, leading +to a memory leak. Lin Ming. BZ 727 + +Fixed a possible memory leak when deleting thermal/processor objects. Any +associated notify handlers (and objects) were not being deleted. Fiodor +Suietov. BZ 506 + +Fixed the ordering of the ASCII names in the global mutex table to match the +actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. +Vegard Nossum. BZ 726 + +Enhanced the AcpiGetObjectInfo interface to return the number of required +arguments if the object is a control method. Added this call to the debugger +so the proper number of default arguments are passed to a method. This +prevents a warning when executing methods from AcpiExec. + +Added a check for an invalid handle in AcpiGetObjectInfo. Return +AE_BAD_PARAMETER if input handle is invalid. BZ 474 + +Fixed an extraneous warning from exconfig.c on the 64-bit build. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + Current Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both +resource descriptor names. + +iASL: Detect invalid ASCII characters in input (windows version). Removed the +"-CF" flag from the flex compile, enables correct detection of non-ASCII +characters in the input. BZ 441 + +iASL: Eliminate warning when result of LoadTable is not used. Eliminate the +"result of operation not used" warning when the DDB handle returned from +LoadTable is not used. The warning is not needed. BZ 590 + +AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to +pass address of table to the AML. Added option to disable OpRegion simulation +to allow creation of an OpRegion with a real address that was passed to _CFG. +All of this allows testing of the Load and Unload operators from AcpiExec. + +Debugger: update tables command for unloaded tables. Handle unloaded tables +and use the standard table header output routine. + +---------------------------------------- +09 June 2008. Summary of changes for version 20080609: + +1) ACPI CA Core Subsystem: + +Implemented a workaround for reversed _PRT entries. A significant number of +BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This +change dynamically detects and repairs this problem. Provides compatibility +with MS ACPI. BZ 6859 + +Simplified the internal ACPI hardware interfaces to eliminate the locking +flag parameter from Register Read/Write. Added a new external interface, +AcpiGetRegisterUnlocked. + +Fixed a problem where the invocation of a GPE control method could hang. This +was a regression introduced in 20080514. The new method argument count +validation mechanism can enter an infinite loop when a GPE method is +dispatched. Problem fixed by removing the obsolete code that passed GPE block +information to the notify handler via the control method parameter pointer. + +Fixed a problem where the _SST execution status was incorrectly returned to +the caller of AcpiEnterSleepStatePrep. This was a regression introduced in +20080514. _SST is optional and a NOT_FOUND exception should never be +returned. BZ 716 + +Fixed a problem where a deleted object could be accessed from within the AML +parser. This was a regression introduced in version 20080123 as a fix for the +Unload operator. Lin Ming. BZ 10669 + +Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands +and eliminated the use of a negative index in a loop. Operands are now +displayed in the correct order, not backwards. This also fixes a regression +introduced in 20080514 on 64-bit systems where the elimination of +ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 + +Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit +path did not delete a locally allocated structure. + +Updated definitions for the DMAR and SRAT tables to synchronize with the +current specifications. Includes disassembler support. + +Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect +loop termination value was used. Loop terminated on iteration early, missing +one mutex. Linn Crosetto + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + Current Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support for EisaId() within _CID objects. Now +disassemble integer _CID objects back to EisaId invocations, including +multiple integers within _CID packages. Includes single-step support for +debugger also. + +Disassembler: Added support for DMAR and SRAT table definition changes. + +---------------------------------------- +14 May 2008. Summary of changes for version 20080514: + +1) ACPI CA Core Subsystem: + +Fixed a problem where GPEs were enabled too early during the ACPICA +initialization. This could lead to "handler not installed" errors on some +machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This +ensures that all operation regions and devices throughout the namespace have +been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. + +Implemented a change to the enter sleep code. Moved execution of the _GTS +method to just before setting sleep enable bit. The execution was moved from +AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed +immediately before the SLP_EN bit is set, as per the ACPI specification. +Luming Yu, BZ 1653. + +Implemented a fix to disable unknown GPEs (2nd version). Now always disable +the GPE, even if ACPICA thinks that that it is already disabled. It is +possible that the AML or some other code has enabled the GPE unbeknownst to +the ACPICA code. + +Fixed a problem with the Field operator where zero-length fields would return +an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL +field declarations in Field(), BankField(), and IndexField(). BZ 10606. + +Implemented a fix for the Load operator, now load the table at the namespace +root. This reverts a change introduced in version 20071019. The table is now +loaded at the namespace root even though this goes against the ACPI +specification. This provides compatibility with other ACPI implementations. +The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming. + +Fixed a problem where ACPICA would not Load() tables with unusual signatures. +Now ignore ACPI table signature for Load() operator. Only "SSDT" is +acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. +Therefore, signature validation is worthless. Apparently MS ACPI accepts such +signatures, ACPICA must be compatible. BZ 10454. + +Fixed a possible negative array index in AcpiUtValidateException. Added NULL +fields to the exception string arrays to eliminate a -1 subtraction on the +SubStatus field. + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From jkim at FreeBSD.org Mon Jun 1 21:02:42 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 21:03:06 2009 Subject: svn commit: r193267 - in vendor-sys/acpica/dist: . common compiler debugger disassembler dispatcher events executer generate generate/lint hardware include include/platform interpreter namespace os... Message-ID: <200906012102.n51L2e9g091920@svn.freebsd.org> Author: jkim Date: Mon Jun 1 21:02:40 2009 New Revision: 193267 URL: http://svn.freebsd.org/changeset/base/193267 Log: Import ACPICA 20090521 (with three patches from ACPICA GIT). Added: vendor-sys/acpica/dist/README vendor-sys/acpica/dist/compiler/Makefile (contents, props changed) vendor-sys/acpica/dist/compiler/aslstartup.c (contents, props changed) vendor-sys/acpica/dist/compiler/readme.txt (contents, props changed) vendor-sys/acpica/dist/generate/ vendor-sys/acpica/dist/generate/lint/ vendor-sys/acpica/dist/generate/lint/files.lnt vendor-sys/acpica/dist/generate/lint/lint.bat vendor-sys/acpica/dist/generate/lint/lset.bat vendor-sys/acpica/dist/generate/lint/options.lnt vendor-sys/acpica/dist/generate/lint/readme.txt (contents, props changed) vendor-sys/acpica/dist/generate/lint/std16.lnt vendor-sys/acpica/dist/generate/lint/std32.lnt vendor-sys/acpica/dist/generate/lint/std64.lnt vendor-sys/acpica/dist/hardware/hwvalid.c (contents, props changed) vendor-sys/acpica/dist/hardware/hwxface.c (contents, props changed) vendor-sys/acpica/dist/include/accommon.h (contents, props changed) vendor-sys/acpica/dist/include/acpredef.h (contents, props changed) vendor-sys/acpica/dist/include/acrestyp.h (contents, props changed) vendor-sys/acpica/dist/include/platform/accygwin.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acintel.h (contents, props changed) vendor-sys/acpica/dist/include/platform/aclinux.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acmsvc.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acnetbsd.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acos2.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acwin.h (contents, props changed) vendor-sys/acpica/dist/include/platform/acwin64.h (contents, props changed) vendor-sys/acpica/dist/namespace/nspredef.c (contents, props changed) vendor-sys/acpica/dist/os_specific/ vendor-sys/acpica/dist/os_specific/service_layers/ vendor-sys/acpica/dist/os_specific/service_layers/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/osunixxf.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswindir.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswintbl.c (contents, props changed) vendor-sys/acpica/dist/os_specific/service_layers/oswinxf.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aeexec.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aehandlers.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aemain.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/aetables.c (contents, props changed) vendor-sys/acpica/dist/tools/acpiexec/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/ vendor-sys/acpica/dist/tools/acpisrc/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/acpisrc.h (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/ascase.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asconvrt.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asfile.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asmain.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asremove.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/astable.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/asutils.c (contents, props changed) vendor-sys/acpica/dist/tools/acpisrc/osunixdir.c (contents, props changed) vendor-sys/acpica/dist/tools/acpixtract/ vendor-sys/acpica/dist/tools/acpixtract/Makefile (contents, props changed) vendor-sys/acpica/dist/tools/acpixtract/acpixtract.c (contents, props changed) vendor-sys/acpica/dist/tools/examples/ vendor-sys/acpica/dist/tools/examples/examples.c (contents, props changed) vendor-sys/acpica/dist/utilities/utlock.c (contents, props changed) Deleted: vendor-sys/acpica/dist/interpreter/ Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/common/adfile.c vendor-sys/acpica/dist/common/adisasm.c vendor-sys/acpica/dist/common/adwalk.c vendor-sys/acpica/dist/common/dmrestag.c vendor-sys/acpica/dist/common/dmtable.c vendor-sys/acpica/dist/common/dmtbdump.c vendor-sys/acpica/dist/common/dmtbinfo.c vendor-sys/acpica/dist/common/getopt.c vendor-sys/acpica/dist/compiler/aslanalyze.c vendor-sys/acpica/dist/compiler/aslcodegen.c vendor-sys/acpica/dist/compiler/aslcompile.c vendor-sys/acpica/dist/compiler/aslcompiler.h vendor-sys/acpica/dist/compiler/aslcompiler.l vendor-sys/acpica/dist/compiler/aslcompiler.y vendor-sys/acpica/dist/compiler/asldefine.h vendor-sys/acpica/dist/compiler/aslerror.c vendor-sys/acpica/dist/compiler/aslfiles.c vendor-sys/acpica/dist/compiler/aslfold.c vendor-sys/acpica/dist/compiler/aslglobal.h vendor-sys/acpica/dist/compiler/asllength.c vendor-sys/acpica/dist/compiler/asllisting.c vendor-sys/acpica/dist/compiler/aslload.c vendor-sys/acpica/dist/compiler/asllookup.c vendor-sys/acpica/dist/compiler/aslmain.c vendor-sys/acpica/dist/compiler/aslmap.c vendor-sys/acpica/dist/compiler/aslopcodes.c vendor-sys/acpica/dist/compiler/asloperands.c vendor-sys/acpica/dist/compiler/aslopt.c vendor-sys/acpica/dist/compiler/aslresource.c vendor-sys/acpica/dist/compiler/aslrestype1.c vendor-sys/acpica/dist/compiler/aslrestype2.c vendor-sys/acpica/dist/compiler/aslstubs.c vendor-sys/acpica/dist/compiler/asltransform.c vendor-sys/acpica/dist/compiler/asltree.c vendor-sys/acpica/dist/compiler/asltypes.h vendor-sys/acpica/dist/compiler/aslutils.c vendor-sys/acpica/dist/debugger/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c vendor-sys/acpica/dist/debugger/dbstats.c vendor-sys/acpica/dist/debugger/dbutils.c vendor-sys/acpica/dist/debugger/dbxface.c vendor-sys/acpica/dist/disassembler/dmbuffer.c vendor-sys/acpica/dist/disassembler/dmnames.c vendor-sys/acpica/dist/disassembler/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c vendor-sys/acpica/dist/disassembler/dmresrcl.c vendor-sys/acpica/dist/disassembler/dmresrcs.c vendor-sys/acpica/dist/disassembler/dmutils.c vendor-sys/acpica/dist/disassembler/dmwalk.c vendor-sys/acpica/dist/dispatcher/dsfield.c vendor-sys/acpica/dist/dispatcher/dsinit.c vendor-sys/acpica/dist/dispatcher/dsmethod.c vendor-sys/acpica/dist/dispatcher/dsmthdat.c vendor-sys/acpica/dist/dispatcher/dsobject.c vendor-sys/acpica/dist/dispatcher/dsopcode.c vendor-sys/acpica/dist/dispatcher/dsutils.c vendor-sys/acpica/dist/dispatcher/dswexec.c vendor-sys/acpica/dist/dispatcher/dswload.c vendor-sys/acpica/dist/dispatcher/dswscope.c vendor-sys/acpica/dist/dispatcher/dswstate.c vendor-sys/acpica/dist/events/evevent.c vendor-sys/acpica/dist/events/evgpe.c vendor-sys/acpica/dist/events/evgpeblk.c vendor-sys/acpica/dist/events/evmisc.c vendor-sys/acpica/dist/events/evregion.c vendor-sys/acpica/dist/events/evrgnini.c vendor-sys/acpica/dist/events/evsci.c vendor-sys/acpica/dist/events/evxface.c vendor-sys/acpica/dist/events/evxfevnt.c vendor-sys/acpica/dist/events/evxfregn.c vendor-sys/acpica/dist/executer/exconfig.c vendor-sys/acpica/dist/executer/exconvrt.c vendor-sys/acpica/dist/executer/excreate.c vendor-sys/acpica/dist/executer/exdump.c vendor-sys/acpica/dist/executer/exfield.c vendor-sys/acpica/dist/executer/exfldio.c vendor-sys/acpica/dist/executer/exmisc.c vendor-sys/acpica/dist/executer/exmutex.c vendor-sys/acpica/dist/executer/exnames.c vendor-sys/acpica/dist/executer/exoparg1.c vendor-sys/acpica/dist/executer/exoparg2.c vendor-sys/acpica/dist/executer/exoparg3.c vendor-sys/acpica/dist/executer/exoparg6.c vendor-sys/acpica/dist/executer/exprep.c vendor-sys/acpica/dist/executer/exregion.c vendor-sys/acpica/dist/executer/exresnte.c vendor-sys/acpica/dist/executer/exresolv.c vendor-sys/acpica/dist/executer/exresop.c vendor-sys/acpica/dist/executer/exstore.c vendor-sys/acpica/dist/executer/exstoren.c vendor-sys/acpica/dist/executer/exstorob.c vendor-sys/acpica/dist/executer/exsystem.c vendor-sys/acpica/dist/executer/exutils.c vendor-sys/acpica/dist/hardware/hwacpi.c vendor-sys/acpica/dist/hardware/hwgpe.c vendor-sys/acpica/dist/hardware/hwregs.c vendor-sys/acpica/dist/hardware/hwsleep.c vendor-sys/acpica/dist/hardware/hwtimer.c vendor-sys/acpica/dist/include/acapps.h vendor-sys/acpica/dist/include/acconfig.h vendor-sys/acpica/dist/include/acdebug.h vendor-sys/acpica/dist/include/acdisasm.h vendor-sys/acpica/dist/include/acdispat.h vendor-sys/acpica/dist/include/acevents.h vendor-sys/acpica/dist/include/acexcep.h vendor-sys/acpica/dist/include/acglobal.h vendor-sys/acpica/dist/include/achware.h vendor-sys/acpica/dist/include/acinterp.h vendor-sys/acpica/dist/include/aclocal.h vendor-sys/acpica/dist/include/acmacros.h vendor-sys/acpica/dist/include/acnames.h vendor-sys/acpica/dist/include/acnamesp.h vendor-sys/acpica/dist/include/acobject.h vendor-sys/acpica/dist/include/acopcode.h vendor-sys/acpica/dist/include/acoutput.h vendor-sys/acpica/dist/include/acparser.h vendor-sys/acpica/dist/include/acpi.h vendor-sys/acpica/dist/include/acpiosxf.h vendor-sys/acpica/dist/include/acpixf.h vendor-sys/acpica/dist/include/acresrc.h vendor-sys/acpica/dist/include/acstruct.h vendor-sys/acpica/dist/include/actables.h vendor-sys/acpica/dist/include/actbl.h vendor-sys/acpica/dist/include/actbl1.h vendor-sys/acpica/dist/include/actbl2.h vendor-sys/acpica/dist/include/actypes.h vendor-sys/acpica/dist/include/acutils.h vendor-sys/acpica/dist/include/amlcode.h vendor-sys/acpica/dist/include/amlresrc.h vendor-sys/acpica/dist/include/platform/acefi.h vendor-sys/acpica/dist/include/platform/acenv.h vendor-sys/acpica/dist/include/platform/acfreebsd.h vendor-sys/acpica/dist/include/platform/acgcc.h vendor-sys/acpica/dist/namespace/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c vendor-sys/acpica/dist/namespace/nsdumpdv.c vendor-sys/acpica/dist/namespace/nseval.c vendor-sys/acpica/dist/namespace/nsinit.c vendor-sys/acpica/dist/namespace/nsload.c vendor-sys/acpica/dist/namespace/nsnames.c vendor-sys/acpica/dist/namespace/nsobject.c vendor-sys/acpica/dist/namespace/nsparse.c vendor-sys/acpica/dist/namespace/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c vendor-sys/acpica/dist/namespace/nsxfeval.c vendor-sys/acpica/dist/namespace/nsxfname.c vendor-sys/acpica/dist/namespace/nsxfobj.c vendor-sys/acpica/dist/osunixxf.c vendor-sys/acpica/dist/parser/psargs.c vendor-sys/acpica/dist/parser/psloop.c vendor-sys/acpica/dist/parser/psopcode.c vendor-sys/acpica/dist/parser/psparse.c vendor-sys/acpica/dist/parser/psscope.c vendor-sys/acpica/dist/parser/pstree.c vendor-sys/acpica/dist/parser/psutils.c vendor-sys/acpica/dist/parser/pswalk.c vendor-sys/acpica/dist/parser/psxface.c vendor-sys/acpica/dist/resources/rsaddr.c vendor-sys/acpica/dist/resources/rscalc.c vendor-sys/acpica/dist/resources/rscreate.c vendor-sys/acpica/dist/resources/rsdump.c vendor-sys/acpica/dist/resources/rsinfo.c vendor-sys/acpica/dist/resources/rsio.c vendor-sys/acpica/dist/resources/rsirq.c vendor-sys/acpica/dist/resources/rslist.c vendor-sys/acpica/dist/resources/rsmemory.c vendor-sys/acpica/dist/resources/rsmisc.c vendor-sys/acpica/dist/resources/rsutils.c vendor-sys/acpica/dist/resources/rsxface.c vendor-sys/acpica/dist/tables/tbfadt.c vendor-sys/acpica/dist/tables/tbfind.c vendor-sys/acpica/dist/tables/tbinstal.c vendor-sys/acpica/dist/tables/tbutils.c vendor-sys/acpica/dist/tables/tbxface.c vendor-sys/acpica/dist/tables/tbxfroot.c vendor-sys/acpica/dist/tools/acpiexec/aecommon.h vendor-sys/acpica/dist/utilities/utalloc.c vendor-sys/acpica/dist/utilities/utcache.c vendor-sys/acpica/dist/utilities/utclib.c vendor-sys/acpica/dist/utilities/utcopy.c vendor-sys/acpica/dist/utilities/utdebug.c vendor-sys/acpica/dist/utilities/utdelete.c vendor-sys/acpica/dist/utilities/uteval.c vendor-sys/acpica/dist/utilities/utglobal.c vendor-sys/acpica/dist/utilities/utinit.c vendor-sys/acpica/dist/utilities/utmath.c vendor-sys/acpica/dist/utilities/utmisc.c vendor-sys/acpica/dist/utilities/utmutex.c vendor-sys/acpica/dist/utilities/utobject.c vendor-sys/acpica/dist/utilities/utresrc.c vendor-sys/acpica/dist/utilities/utstate.c vendor-sys/acpica/dist/utilities/uttrack.c vendor-sys/acpica/dist/utilities/utxface.c Added: vendor-sys/acpica/dist/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor-sys/acpica/dist/README Mon Jun 1 21:02:40 2009 (r193267) @@ -0,0 +1,79 @@ +acpica-unix +----------- + +This source release includes: + + +1) a cross-OS AML interpreter + +This is intended to allow commercial and open source operating systems +to be enabled for ACPI. OS specific code is still needed, but the +AML interpreter should greatly improve the development speed of ACPI +support. + +The AML interpreter source should be integrated into the kernel's +build process. We recommend establishing an automated method for +this, so later versions can also be incorporated easily. Please see +the documentation on the website for API and other implementation +information. + + +2) iasl, an ASL compiler/decompiler + +iasl compiles ASL (ACPI Source Language) into AML (ACPI Machine +Language). This AML is suitable for inclusion as a DSDT in system +firmware. It also can disassemble AML, for debugging purposes. + +To compile: + +cd compiler +make + +It has been compiled on Linux, but should easily port to other Unix +environments. + +Run 'iasl -h' for more information, or download the binary version for +documentation in PDF format. + + +3) acpisrc, a source code conversion tool + +acpisrc converts the standard form of the acpica source release (included +here) into a version that meets Linux coding guidelines. This consists +mainly of performing a series of string replacements and transformations +to the code. + +To compile: + +cd tools/acpisrc +make + +It has been compiled on Linux, but should easily port to other Unix +environments. + + +4) acpibin, an AML file tool + +acpibin compares AML files, dumps AML binary files to text files, +extracts binary AML from text files, and other AML file +manipulation. + +To compile: + +cd tools/acpibin +make + + +5) acpiexec, a user-space AML interpreter + +acpiexec allows the loading of ACPI tables and execution of control +methods from user space. Useful for debugging AML code and testing +the AML interpreter. + +To compile: + +cd tools/acpiexec +make + + +Thanks -- The ACPI CA Team Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Mon Jun 1 20:59:40 2009 (r193266) +++ vendor-sys/acpica/dist/changes.txt Mon Jun 1 21:02:40 2009 (r193267) @@ -1,59 +1,1462 @@ ---------------------------------------- +21 May 2009. Summary of changes for version 20090521: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Disabled the preservation of the SCI enable bit in the PM1 control register. +The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be +a "preserved" bit - "OSPM always preserves this bit position", section +4.7.3.2.1. However, some machines fail if this bit is in fact preserved +because the bit needs to be explicitly set by the OS as a workaround. No +machines fail if the bit is not preserved. Therefore, ACPICA no longer +attempts to preserve this bit. + +Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or +incorrectly formed _PRT package could cause a fault. Added validation to +ensure that each package element is actually a sub-package. + +Implemented a new interface to install or override a single control method, +AcpiInstallMethod. This interface is useful when debugging in order to repair +an existing method or to install a missing method without having to override +the entire ACPI table. See the ACPICA Programmer Reference for use and +examples. Lin Ming, Bob Moore. + +Fixed several reference count issues with the DdbHandle object that is +created from a Load or LoadTable operator. Prevent premature deletion of the +object. Also, mark the object as invalid once the table has been unloaded. +This is needed because the handle itself may not be deleted after the table +unload, depending on whether it has been stored in a named object by the +caller. Lin Ming. + +Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple +mutexes of the same sync level are acquired but then not released in strict +opposite order, the internally maintained Current Sync Level becomes confused +and can cause subsequent execution errors. ACPICA BZ 471. + +Changed the allowable release order for ASL mutex objects. The ACPI 4.0 +specification has been changed to make the SyncLevel for mutex objects more +useful. When releasing a mutex, the SyncLevel of the mutex must now be the +same as the current sync level. This makes more sense than the previous rule +(SyncLevel less than or equal). This change updates the code to match the +specification. + +Fixed a problem with the local version of the AcpiOsPurgeCache function. The +(local) cache must be locked during all cache object deletions. Andrew +Baumann. + +Updated the Load operator to use operation region interfaces. This replaces +direct memory mapping with region access calls. Now, all region accesses go +through the installed region handler as they should. + +Simplified and optimized the NsGetNextNode function. Reduced parameter count +and reduced code for this frequently used function. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + Current Release: + Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total + Debug Version: 158.9K Code, 50.0K Data, 208.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems +with sub-table disassembly and handling invalid sub-tables. Attempt recovery +after an invalid sub-table ID. + +---------------------------------------- +22 April 2009. Summary of changes for version 20090422: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Fixed a compatibility issue with the recently released I/O port protection +mechanism. For windows compatibility, 1) On a port protection violation, +simply ignore the request and do not return an exception (allow the control +method to continue execution.) 2) If only part of the request overlaps a +protected port, read/write the individual ports that are not protected. Linux +BZ 13036. Lin Ming + +Enhanced the execution of the ASL/AML BreakPoint operator so that it actually +breaks into the AML debugger if the debugger is present. This matches the +ACPI-defined behavior. + +Fixed several possible warnings related to the use of the configurable +ACPI_THREAD_ID. This type can now be configured as either an integer or a +pointer with no warnings. Also fixes several warnings in printf-like +statements for the 64-bit build when the type is configured as a pointer. +ACPICA BZ 766, 767. + +Fixed a number of possible warnings when compiling with gcc 4+ (depending on +warning options.) Examples include printf formats, aliasing, unused globals, +missing prototypes, missing switch default statements, use of non-ANSI +library functions, use of non-ANSI constructs. See generate/unix/Makefile for +a list of warning options used with gcc 3 and 4. ACPICA BZ 735. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + Current Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on +the 64-bit build. + +iASL: Fixed a problem where the Unix/Linux versions of the compiler could not +correctly digest Windows/DOS formatted files (with CR/LF). + +iASL: Added a new option for "quiet mode" (-va) that produces only the +compilation summary, not individual errors and warnings. Useful for large +batch compilations. + +AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex +timeout that can be used to detect hang conditions during execution of AML +code (includes both internal semaphores and AML-defined mutexes and events.) + +Added new makefiles for the generation of acpica in a generic unix-like +environment. These makefiles are intended to generate the acpica tools and +utilities from the original acpica git source tree structure. + +Test Suites: Updated and cleaned up the documentation files. Updated the +copyrights to 2009, affecting all source files. Use the new version of iASL +with quiet mode. Increased the number of available semaphores in the Windows +OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added +an alternate implementation of the semaphore timeout to allow aslts to +execute fully on Cygwin. + +---------------------------------------- +20 March 2009. Summary of changes for version 20090320: + +1) ACPI CA Core Subsystem: + +Fixed a possible race condition between AcpiWalkNamespace and dynamic table +unloads. Added a reader/writer locking mechanism to allow multiple concurrent +namespace walks (readers), but block a dynamic table unload until it can gain +exclusive write access to the namespace. This fixes a problem where a table +unload could (possibly catastrophically) delete the portion of the namespace +that is currently being examined by a walk. Adds a new file, utlock.c, that +implements the reader/writer lock mechanism. ACPICA BZ 749. + +Fixed a regression introduced in version 20090220 where a change to the FADT +handling could cause the ACPICA subsystem to access non-existent I/O ports. + +Modified the handling of FADT register and table (FACS/DSDT) addresses. The +FADT can contain both 32-bit and 64-bit versions of these addresses. +Previously, the 64-bit versions were favored, meaning that if both 32 and 64 +versions were valid, but not equal, the 64-bit version was used. This was +found to cause some machines to fail. Now, in this case, the 32-bit version +is used instead. This now matches the Windows behavior. + +Implemented a new mechanism to protect certain I/O ports. Provides Microsoft +compatibility and protects the standard PC I/O ports from access via AML +code. Adds a new file, hwvalid.c + +Fixed a possible extraneous warning message from the FADT support. The +message warns of a 32/64 length mismatch between the legacy and GAS +definitions for a register. + +Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is +made obsolete by the port protection mechanism above. It was previously used +to validate the entire address range of an operation region, which could be +incorrect if the range included illegal ports, but fields within the +operation region did not actually access those ports. Validation is now +performed on a per-field basis instead of the entire region. + +Modified the handling of the PM1 Status Register ignored bit (bit 11.) +Ignored bits must be "preserved" according to the ACPI spec. Usually, this +means a read/modify/write when writing to the register. However, for status +registers, writing a one means clear the event. Writing a zero means preserve +the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, +and the ACPICA code now simply always writes a zero to the ignored bit. + +Modified the handling of ignored bits for the PM1 A/B Control Registers. As +per the ACPI specification, for the control registers, preserve +(read/modify/write) all bits that are defined as either reserved or ignored. + +Updated the handling of write-only bits in the PM1 A/B Control Registers. +When reading the register, zero the write-only bits as per the ACPI spec. +ACPICA BZ 443. Lin Ming. + +Removed "Linux" from the list of supported _OSI strings. Linux no longer +wants to reply true to this request. The Windows strings are the only paths +through the AML that are tested and known to work properly. + + Previous Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + Current Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and +aetables.c + +---------------------------------------- +20 February 2009. Summary of changes for version 20090220: + +1) ACPI CA Core Subsystem: + +Optimized the ACPI register locking. Removed locking for reads from the ACPI +bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is +not required when reading the single-bit registers. The +AcpiGetRegisterUnlocked function is no longer needed and has been removed. +This will improve performance for reads on these registers. ACPICA BZ 760. + +Fixed the parameter validation for AcpiRead/Write. Now return +AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if +the register has an address of zero. Previously, these cases simply returned +AE_OK. For optional registers such as PM1B status/enable/control, the caller +should check for a valid register address before calling. ACPICA BZ 748. + +Renamed the external ACPI bit register access functions. Renamed +AcpiGetRegister and AcpiSetRegister to clarify the purpose of these +functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. +Also, restructured the code for these functions by simplifying the code path +and condensing duplicate code to reduce code size. + +Added new functions to transparently handle the possibly split PM1 A/B +registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions +now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ +746. + +Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. +This function writes both of the PM1 control registers (A/B). These registers +are different than the PM1 A/B status and enable registers in that different +values can be written to the A/B registers. Most notably, the SLP_TYP bits +can be different, as per the values returned from the _Sx predefined methods. + +Removed an extra register write within AcpiHwClearAcpiStatus. This function +was writing an optional PM1B status register twice. The existing call to the +low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B +register. ACPICA BZ 751. + +Split out the PM1 Status registers from the FADT. Added new globals for these +registers (A/B), similar to the way the PM1 Enable registers are handled. +Instead of overloading the FADT Event Register blocks. This makes the code +clearer and less prone to error. + +Fixed the warning message for when the platform contains too many ACPI tables +for the default size of the global root table data structure. The calculation +for the truncation value was incorrect. + +Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this +obsolete macro, since it is now a simple reference to ->common.type. There +were about 150 invocations of the macro across 41 files. ACPICA BZ 755. + +Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as +TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to +simply SLEEP_TYPE. ACPICA BZ 754. + +Conditionally compile the AcpiSetFirmwareWakingVector64 function. This +function is only needed on 64-bit host operating systems and is thus not +included for 32-bit hosts. + +Debug output: print the input and result for invocations of the _OSI reserved +control method via the ACPI_LV_INFO debug level. Also, reduced some of the +verbosity of this debug level. Len Brown. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + Current Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the +various legal performance profiles. + +---------------------------------------- +23 January 2009. Summary of changes for version 20090123: + +1) ACPI CA Core Subsystem: + +Added the 2009 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Implemented a change to allow the host to override any ACPI table, including +dynamically loaded tables. Previously, only the DSDT could be replaced by the +host. With this change, the AcpiOsTableOverride interface is called for each +table found in the RSDT/XSDT during ACPICA initialization, and also whenever +a table is dynamically loaded via the AML Load operator. + +Updated FADT flag definitions, especially the Boot Architecture flags. + +Debugger: For the Find command, automatically pad the input ACPI name with +underscores if the name is shorter than 4 characters. This enables a match +with the actual namespace entry which is itself padded with underscores. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + +2) iASL Compiler/Disassembler and Tools: + +Fix build error under Bison-2.4. + +Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture +flags. Now decode all flags, regardless of the FADT version. Flag output +includes the FADT version which first defined each flag. + +The iASL -g option now dumps the RSDT to a file (in addition to the FADT and +DSDT). Windows only. + +---------------------------------------- +04 December 2008. Summary of changes for version 20081204: + +1) ACPI CA Core Subsystem: + +The ACPICA Programmer Reference has been completely updated and revamped for +this release. This includes updates to the external interfaces, OSL +interfaces, the overview sections, and the debugger reference. + +Several new ACPICA interfaces have been implemented and documented in the +programmer reference: +AcpiReset - Writes the reset value to the FADT-defined reset register. +AcpiDisableAllGpes - Disable all available GPEs. +AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. +AcpiGetGpeDevice - Get the GPE block device associated with a GPE. +AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. +AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) +AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) + +Most of the public ACPI hardware-related interfaces have been moved to a new +file, components/hardware/hwxface.c + +Enhanced the FADT parsing and low-level ACPI register access: The ACPI +register lengths within the FADT are now used, and the low level ACPI +register access no longer hardcodes the ACPI register lengths. Given that +there may be some risk in actually trusting the FADT register lengths, a run- +time option was added to fall back to the default hardcoded lengths if the +FADT proves to contain incorrect values - UseDefaultRegisterWidths. This +option is set to true for now, and a warning is issued if a suspicious FADT +register length is overridden with the default value. + +Fixed a reference count issue in NsRepairObject. This problem was introduced +in version 20081031 as part of a fix to repair Buffer objects within +Packages. Lin Ming. + +Added semaphore support to the Linux/Unix application OS-services layer +(OSL). ACPICA BZ 448. Lin Ming. + +Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will +be implemented in the OSL, or will binary semaphores be used instead. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Completed the '-e' option to include additional ACPI tables in order to +aid with disassembly and External statement generation. ACPICA BZ 742. Lin +Ming. + +iASL: Removed the "named object in while loop" error. The compiler cannot +determine how many times a loop will execute. ACPICA BZ 730. + +Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA +BZ 743. + +Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). + +---------------------------------------- +31 October 2008. Summary of changes for version 20081031: + +1) ACPI CA Core Subsystem: + +Restructured the ACPICA header files into public/private. acpi.h now includes +only the "public" acpica headers. All other acpica headers are "private" and +should not be included by acpica users. One new file, accommon.h is used to +include the commonly used private headers for acpica code generation. Future +plans include moving all private headers to a new subdirectory. + +Implemented an automatic Buffer->String return value conversion for +predefined ACPI methods. For these methods (such as _BIF), added automatic +conversion for return objects that are required to be a String, but a Buffer +was found instead. This can happen when reading string battery data from an +operation region, because it used to be difficult to convert the data from +buffer to string from within the ASL. Ensures that the host OS is provided +with a valid null-terminated string. Linux BZ 11822. + +Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector +into two: one for the 32-bit vector, another for the 64-bit vector. This is +required because the host OS must setup the wake much differently for each +vector (real vs. protected mode, etc.) and the interface itself should not be +deciding which vector to use. Also, eliminated the GetFirmwareWakingVector +interface, as it served no purpose (only the firmware reads the vector, OS +only writes the vector.) ACPICA BZ 731. + +Implemented a mechanism to escape infinite AML While() loops. Added a loop +counter to force exit from AML While loops if the count becomes too large. +This can occur in poorly written AML when the hardware does not respond +within a while loop and the loop does not implement a timeout. The maximum +loop count is configurable. A new exception code is returned when a loop is +broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. + +Optimized the execution of AML While loops. Previously, a control state +object was allocated and freed for each execution of the loop. The +optimization is to simply reuse the control state for each iteration. This +speeds up the raw loop execution time by about 5%. + +Enhanced the implicit return mechanism. For Windows compatibility, return an +implicit integer of value zero for methods that contain no executable code. +Such methods are seen in the field as stubs (presumably), and can cause +drivers to fail if they expect a return value. Lin Ming. + +Allow multiple backslashes as root prefixes in namepaths. In a fully +qualified namepath, allow multiple backslash prefixes. This can happen (and +is seen in the field) because of the use of a double-backslash in strings +(since backslash is the escape character) causing confusion. ACPICA BZ 739 +Lin Ming. + +Emit a warning if two different FACS or DSDT tables are discovered in the +FADT. Checks if there are two valid but different addresses for the FACS and +DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) + +Consolidated the method argument count validation code. Merged the code that +validates control method argument counts into the predefined validation +module. Eliminates possible multiple warnings for incorrect argument counts. + +Implemented ACPICA example code. Includes code for ACPICA initialization, +handler installation, and calling a control method. Available at +source/tools/examples. + +Added a global pointer for FACS table to simplify internal FACS access. Use +the global pointer instead of using AcpiGetTableByIndex for each FACS access. +This simplifies the code for the Global Lock and the Firmware Waking +Vector(s). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + Current Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Improved disassembly of external method calls. Added the -e option to +allow the inclusion of additional ACPI tables to help with the disassembly of +method invocations and the generation of external declarations during the +disassembly. Certain external method invocations cannot be disassembled +properly without the actual declaration of the method. Use the -e option to +include the table where the external method(s) are actually declared. Most +useful for disassembling SSDTs that make method calls back to the master +DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl -d +-e dsdt.aml ssdt1.aml + +iASL: Fix to allow references to aliases within ASL namepaths. Fixes a +problem where the use of an alias within a namepath would result in a not +found error or cause the compiler to fault. Also now allows forward +references from the Alias operator itself. ACPICA BZ 738. + +---------------------------------------- +26 September 2008. Summary of changes for version 20080926: + +1) ACPI CA Core Subsystem: + +Designed and implemented a mechanism to validate predefined ACPI methods and +objects. This code validates the predefined ACPI objects (objects whose names +start with underscore) that appear in the namespace, at the time they are +evaluated. The argument count and the type of the returned object are +validated against the ACPI specification. The purpose of this validation is +to detect problems with the BIOS-implemented predefined ACPI objects before +the results are returned to the ACPI-related drivers. Future enhancements may +include actual repair of incorrect return objects where possible. Two new +files are nspredef.c and acpredef.h. + +Fixed a fault in the AML parser if a memory allocation fails during the Op +completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. + +Fixed an issue with implicit return compatibility. This change improves the +implicit return mechanism to be more compatible with the MS interpreter. Lin +Ming, ACPICA BZ 349. + +Implemented support for zero-length buffer-to-string conversions. Allow zero +length strings during interpreter buffer-to-string conversions. For example, +during the ToDecimalString and ToHexString operators, as well as implicit +conversions. Fiodor Suietov, ACPICA BZ 585. + +Fixed two possible memory leaks in the error exit paths of +AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are +similar in that they use a stack of state objects in order to eliminate +recursion. The stack must be fully unwound and deallocated if an error +occurs. Lin Ming. ACPICA BZ 383. + +Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global +ACPI register table. This bit does not exist and is unused. Lin Ming, Bob +Moore ACPICA BZ 442. + +Removed the obsolete version number in module headers. Removed the +"$Revision" number that appeared in each module header. This version number +was useful under SourceSafe and CVS, but has no meaning under git. It is not +only incorrect, it could also be misleading. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + Current Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + +---------------------------------------- +29 August 2008. Summary of changes for version 20080829: + +1) ACPI CA Core Subsystem: + +Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type +Reference. Changes include the elimination of cheating on the Object field +for the DdbHandle subtype, addition of a reference class field to +differentiate the various reference types (instead of an AML opcode), and the +cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 + +Reduce an error to a warning for an incorrect method argument count. +Previously aborted with an error if too few arguments were passed to a +control method via the external ACPICA interface. Now issue a warning instead +and continue. Handles the case where the method inadvertently declares too +many arguments, but does not actually use the extra ones. Applies mainly to +the predefined methods. Lin Ming. Linux BZ 11032. + +Disallow the evaluation of named object types with no intrinsic value. Return +AE_TYPE for objects that have no value and therefore evaluation is undefined: +Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of +these types were allowed, but an exception would be generated at some point +during the evaluation. Now, the error is generated up front. + +Fixed a possible memory leak in the AcpiNsGetExternalPathname function +(nsnames.c). Fixes a leak in the error exit path. + +Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug +levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION +interfaces. Also added ACPI_DB_EVENTS to correspond with the existing +ACPI_LV_EVENTS. + +Removed obsolete and/or unused exception codes from the acexcep.h header. +There is the possibility that certain device drivers may be affected if they +use any of these exceptions. + +The ACPICA documentation has been added to the public git source tree, under +acpica/documents. Included are the ACPICA programmer reference, the iASL +compiler reference, and the changes.txt release logfile. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 +defines _SCP with 3 arguments. Previous versions defined it with only 1 +argument. iASL now allows both definitions. + +iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- +length subtables when disassembling ACPI tables. Also fixed a couple of +errors where a full 16-bit table type field was not extracted from the input +properly. + +acpisrc: Improve comment counting mechanism for generating source code +statistics. Count first and last lines of multi-line comments as whitespace, +not comment lines. Handle Linux legal header in addition to standard acpica +header. + +---------------------------------------- + +29 July 2008. Summary of changes for version 20080729: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +1) ACPI CA Core Subsystem: + +Fix a possible deadlock in the GPE dispatch. Remove call to +AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt +to acquire the GPE lock but can deadlock since the GPE lock is already held +at dispatch time. This code was introduced in version 20060831 as a response +to Linux BZ 6881 and has since been removed from Linux. + +Add a function to dereference returned reference objects. Examines the return +object from a call to AcpiEvaluateObject. Any Index or RefOf references are +automatically dereferenced in an attempt to return something useful (these +reference types cannot be converted into an external ACPI_OBJECT.) Provides +MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 + +x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new +subtables for the MADT and one new subtable for the SRAT. Includes +disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC +Specification, June 2008. + +Additional error checking for pathname utilities. Add error check after all +calls to AcpiNsGetPathnameLength. Add status return from +AcpiNsBuildExternalPath and check after all calls. Add parameter validation +to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. + +Return status from the global init function AcpiUtGlobalInitialize. This is +used by both the kernel subsystem and the utilities such as iASL compiler. +The function could possibly fail when the caches are initialized. Yang Yi. + +Add a function to decode reference object types to strings. Created for +improved error messages. + +Improve object conversion error messages. Better error messages during object +conversion from internal to the external ACPI_OBJECT. Used for external calls +to AcpiEvaluateObject. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + +2) iASL Compiler/Disassembler and Tools: + +Debugger: fix a possible hang when evaluating non-methods. Fixes a problem +introduced in version 20080701. If the object being evaluated (via execute +command) is not a method, the debugger can hang while trying to obtain non- +existent parameters. + +iASL: relax error for using reserved "_T_x" identifiers. These names can +appear in a disassembled ASL file if they were emitted by the original +compiler. Instead of issuing an error or warning and forcing the user to +manually change these names, issue a remark instead. + +iASL: error if named object created in while loop. Emit an error if any named +object is created within a While loop. If allowed, this code will generate a +run-time error on the second iteration of the loop when an attempt is made to +create the same named object twice. ACPICA bugzilla 730. + +iASL: Support absolute pathnames for include files. Add support for absolute +pathnames within the Include operator. previously, only relative pathnames +were supported. + +iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. +The ACPI spec requires one interrupt minimum. BZ 423 + +iASL: Handle a missing ResourceSource arg, with a present SourceIndex. +Handles the case for the Interrupt Resource Descriptor where +the ResourceSource argument is omitted but ResourceSourceIndex +is present. Now leave room for the Index. BZ 426 + +iASL: Prevent error message if CondRefOf target does not exist. Fixes cases +where an error message is emitted if the target does not exist. BZ 516 + +iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option +(get ACPI tables on Windows). This was apparently broken in version 20070919. + +AcpiXtract: Handle EOF while extracting data. Correctly handle the case where +the EOF happens immediately after the last table in the input file. Print +completion message. Previously, no message was displayed in this case. + +---------------------------------------- +01 July 2008. Summary of changes for version 20080701: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +0) Git source tree / acpica.org + +Fixed a problem where a git-clone from http would not transfer the entire +source tree. + +1) ACPI CA Core Subsystem: + +Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one +enable bit. Now performs a read-change-write of the enable register instead +of simply writing out the cached enable mask. This will prevent inadvertent +enabling of GPEs if a rogue GPE is received during initialization (before GPE +handlers are installed.) + +Implemented a copy for dynamically loaded tables. Previously, dynamically +loaded tables were simply mapped - but on some machines this memory is +corrupted after suspend. Now copy the table to a local buffer. For the +OpRegion case, added checksum verify. Use the table length from the table +header, not the region length. For the Buffer case, use the table length +also. Dennis Noordsij, Bob Moore. BZ 10734 + +Fixed a problem where the same ACPI table could not be dynamically loaded and +unloaded more than once. Without this change, a table cannot be loaded again +once it has been loaded/unloaded one time. The current mechanism does not +unregister a table upon an unload. During a load, if the same table is found, +this no longer returns an exception. BZ 722 + +Fixed a problem where the wrong descriptor length was calculated for the +EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag +are calculated as 12 bytes long, but the actual length in the internal +descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported +by Linn Crosetto. BZ 728 + +Fixed a possible memory leak in the Unload operator. The DdbHandle returned +by Load() did not have its reference count decremented during unload, leading +to a memory leak. Lin Ming. BZ 727 + +Fixed a possible memory leak when deleting thermal/processor objects. Any +associated notify handlers (and objects) were not being deleted. Fiodor +Suietov. BZ 506 + +Fixed the ordering of the ASCII names in the global mutex table to match the +actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. +Vegard Nossum. BZ 726 + +Enhanced the AcpiGetObjectInfo interface to return the number of required +arguments if the object is a control method. Added this call to the debugger +so the proper number of default arguments are passed to a method. This +prevents a warning when executing methods from AcpiExec. + +Added a check for an invalid handle in AcpiGetObjectInfo. Return +AE_BAD_PARAMETER if input handle is invalid. BZ 474 + +Fixed an extraneous warning from exconfig.c on the 64-bit build. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + Current Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both +resource descriptor names. + +iASL: Detect invalid ASCII characters in input (windows version). Removed the +"-CF" flag from the flex compile, enables correct detection of non-ASCII +characters in the input. BZ 441 + +iASL: Eliminate warning when result of LoadTable is not used. Eliminate the +"result of operation not used" warning when the DDB handle returned from +LoadTable is not used. The warning is not needed. BZ 590 + +AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to +pass address of table to the AML. Added option to disable OpRegion simulation +to allow creation of an OpRegion with a real address that was passed to _CFG. +All of this allows testing of the Load and Unload operators from AcpiExec. + +Debugger: update tables command for unloaded tables. Handle unloaded tables +and use the standard table header output routine. + +---------------------------------------- +09 June 2008. Summary of changes for version 20080609: + +1) ACPI CA Core Subsystem: + +Implemented a workaround for reversed _PRT entries. A significant number of +BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This +change dynamically detects and repairs this problem. Provides compatibility +with MS ACPI. BZ 6859 + +Simplified the internal ACPI hardware interfaces to eliminate the locking +flag parameter from Register Read/Write. Added a new external interface, +AcpiGetRegisterUnlocked. + +Fixed a problem where the invocation of a GPE control method could hang. This +was a regression introduced in 20080514. The new method argument count +validation mechanism can enter an infinite loop when a GPE method is +dispatched. Problem fixed by removing the obsolete code that passed GPE block +information to the notify handler via the control method parameter pointer. + +Fixed a problem where the _SST execution status was incorrectly returned to +the caller of AcpiEnterSleepStatePrep. This was a regression introduced in +20080514. _SST is optional and a NOT_FOUND exception should never be +returned. BZ 716 + +Fixed a problem where a deleted object could be accessed from within the AML +parser. This was a regression introduced in version 20080123 as a fix for the +Unload operator. Lin Ming. BZ 10669 + +Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands +and eliminated the use of a negative index in a loop. Operands are now +displayed in the correct order, not backwards. This also fixes a regression +introduced in 20080514 on 64-bit systems where the elimination of +ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 + +Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit +path did not delete a locally allocated structure. + +Updated definitions for the DMAR and SRAT tables to synchronize with the +current specifications. Includes disassembler support. + +Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect +loop termination value was used. Loop terminated on iteration early, missing +one mutex. Linn Crosetto + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + Current Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support for EisaId() within _CID objects. Now +disassemble integer _CID objects back to EisaId invocations, including +multiple integers within _CID packages. Includes single-step support for +debugger also. + +Disassembler: Added support for DMAR and SRAT table definition changes. + +---------------------------------------- +14 May 2008. Summary of changes for version 20080514: + +1) ACPI CA Core Subsystem: + +Fixed a problem where GPEs were enabled too early during the ACPICA +initialization. This could lead to "handler not installed" errors on some +machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This +ensures that all operation regions and devices throughout the namespace have +been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. + +Implemented a change to the enter sleep code. Moved execution of the _GTS +method to just before setting sleep enable bit. The execution was moved from +AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed +immediately before the SLP_EN bit is set, as per the ACPI specification. +Luming Yu, BZ 1653. + +Implemented a fix to disable unknown GPEs (2nd version). Now always disable +the GPE, even if ACPICA thinks that that it is already disabled. It is +possible that the AML or some other code has enabled the GPE unbeknownst to +the ACPICA code. + +Fixed a problem with the Field operator where zero-length fields would return +an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL +field declarations in Field(), BankField(), and IndexField(). BZ 10606. + +Implemented a fix for the Load operator, now load the table at the namespace +root. This reverts a change introduced in version 20071019. The table is now +loaded at the namespace root even though this goes against the ACPI +specification. This provides compatibility with other ACPI implementations. +The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming. + +Fixed a problem where ACPICA would not Load() tables with unusual signatures. +Now ignore ACPI table signature for Load() operator. Only "SSDT" is +acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. +Therefore, signature validation is worthless. Apparently MS ACPI accepts such +signatures, ACPICA must be compatible. BZ 10454. + +Fixed a possible negative array index in AcpiUtValidateException. Added NULL +fields to the exception string arrays to eliminate a -1 subtraction on the +SubStatus field. + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From delphij at FreeBSD.org Mon Jun 1 21:07:55 2009 From: delphij at FreeBSD.org (Xin LI) Date: Mon Jun 1 21:08:29 2009 Subject: svn commit: r193268 - head/sys/dev/aic7xxx/aicasm Message-ID: <200906012107.n51L7slY092073@svn.freebsd.org> Author: delphij Date: Mon Jun 1 21:07:54 2009 New Revision: 193268 URL: http://svn.freebsd.org/changeset/base/193268 Log: Initialize the match structure. This is unnecessary but gcc insists to complain about it when we raise the WARNS level. Modified: head/sys/dev/aic7xxx/aicasm/aicasm_scan.l Modified: head/sys/dev/aic7xxx/aicasm/aicasm_scan.l ============================================================================== --- head/sys/dev/aic7xxx/aicasm/aicasm_scan.l Mon Jun 1 21:02:40 2009 (r193267) +++ head/sys/dev/aic7xxx/aicasm/aicasm_scan.l Mon Jun 1 21:07:54 2009 (r193268) @@ -516,6 +516,7 @@ expand_macro(struct symbol *macro_symbol const char *body_head; const char *body_pos; const char *next_match; + regmatch_t match = { .rm_so = 0, .rm_eo = 0 }; /* * Due to the nature of unput, we must work @@ -525,8 +526,6 @@ expand_macro(struct symbol *macro_symbol body_head = macro_symbol->info.macroinfo->body; body_pos = body_head + strlen(body_head); while (body_pos > body_head) { - regmatch_t match; - next_match = body_head; match_marg = NULL; next_substitution(macro_symbol, body_pos, &next_match, From zec at FreeBSD.org Mon Jun 1 21:10:24 2009 From: zec at FreeBSD.org (Marko Zec) Date: Mon Jun 1 21:10:36 2009 Subject: svn commit: r193270 - head/sys/dev/cxgb/ulp/tom Message-ID: <200906012110.n51LANuj092212@svn.freebsd.org> Author: zec Date: Mon Jun 1 21:10:23 2009 New Revision: 193270 URL: http://svn.freebsd.org/changeset/base/193270 Log: Update VNET base pointer setting macro to use a correct source of vnet context. Approved by: julian (mentor) Modified: head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c Modified: head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c ============================================================================== --- head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c Mon Jun 1 21:10:19 2009 (r193269) +++ head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c Mon Jun 1 21:10:23 2009 (r193270) @@ -1219,7 +1219,7 @@ install_offload_ops(struct socket *so) static __inline int select_rcv_wscale(int space, struct vnet *vnet) { - INIT_VNET_INET(so->so_vnet); + INIT_VNET_INET(vnet); int wscale = 0; if (space > MAX_RCV_WND) From jkim at FreeBSD.org Mon Jun 1 21:13:39 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 21:13:51 2009 Subject: svn commit: r193271 - vendor-sys/acpica/20090521 Message-ID: <200906012113.n51LDdGj092332@svn.freebsd.org> Author: jkim Date: Mon Jun 1 21:13:38 2009 New Revision: 193271 URL: http://svn.freebsd.org/changeset/base/193271 Log: Tag ACPICA 20090521. Added: vendor-sys/acpica/20090521/ - copied from r193270, vendor-sys/acpica/dist/ From jkim at FreeBSD.org Mon Jun 1 21:13:40 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon Jun 1 21:14:01 2009 Subject: svn commit: r193271 - vendor-sys/acpica/20090521 Message-ID: <200906012113.n51LDdrI092337@svn.freebsd.org> Author: jkim Date: Mon Jun 1 21:13:38 2009 New Revision: 193271 URL: http://svn.freebsd.org/changeset/base/193271 Log: Tag ACPICA 20090521. Added: vendor-sys/acpica/20090521/ - copied from r193270, vendor-sys/acpica/dist/ From jhb at FreeBSD.org Mon Jun 1 21:17:04 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 21:17:12 2009 Subject: svn commit: r193272 - in head/sys: dev/cxgb/ulp/iw_cxgb kern netgraph netgraph/bluetooth/socket netinet netsmb nfsclient nfsserver rpc sys Message-ID: <200906012117.n51LH3F8092452@svn.freebsd.org> Author: jhb Date: Mon Jun 1 21:17:03 2009 New Revision: 193272 URL: http://svn.freebsd.org/changeset/base/193272 Log: Rework socket upcalls to close some races with setup/teardown of upcalls. - Each socket upcall is now invoked with the appropriate socket buffer locked. It is not permissible to call soisconnected() with this lock held; however, so socket upcalls now return an integer value. The two possible values are SU_OK and SU_ISCONNECTED. If an upcall returns SU_ISCONNECTED, then the soisconnected() will be invoked on the socket after the socket buffer lock is dropped. - A new API is provided for setting and clearing socket upcalls. The API consists of soupcall_set() and soupcall_clear(). - To simplify locking, each socket buffer now has a separate upcall. - When a socket upcall returns SU_ISCONNECTED, the upcall is cleared from the receive socket buffer automatically. Note that a SO_SND upcall should never return SU_ISCONNECTED. - All this means that accept filters should now return SU_ISCONNECTED instead of calling soisconnected() directly. They also no longer need to explicitly clear the upcall on the new socket. - The HTTP accept filter still uses soupcall_set() to manage its internal state machine, but other accept filters no longer have any explicit knowlege of socket upcall internals aside from their return value. - The various RPC client upcalls currently drop the socket buffer lock while invoking soreceive() as a temporary band-aid. The plan for the future is to add a new flag to allow soreceive() to be called with the socket buffer locked. - The AIO callback for socket I/O is now also invoked with the socket buffer locked. Previously sowakeup() would drop the socket buffer lock only to call aio_swake() which immediately re-acquired the socket buffer lock for the duration of the function call. Discussed with: rwatson, rmacklem Modified: head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c head/sys/kern/uipc_sockbuf.c head/sys/kern/uipc_socket.c head/sys/kern/vfs_aio.c head/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c head/sys/netgraph/ng_ksocket.c head/sys/netinet/accf_data.c head/sys/netinet/accf_dns.c head/sys/netinet/accf_http.c head/sys/netsmb/smb_trantcp.c head/sys/nfsclient/nfs_socket.c head/sys/nfsserver/nfs.h head/sys/nfsserver/nfs_srvsock.c head/sys/nfsserver/nfs_syscalls.c head/sys/rpc/clnt_dg.c head/sys/rpc/clnt_vc.c head/sys/rpc/svc_dg.c head/sys/rpc/svc_vc.c head/sys/sys/sockbuf.h head/sys/sys/socketvar.h Modified: head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c ============================================================================== --- head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c Mon Jun 1 21:17:03 2009 (r193272) @@ -141,7 +141,7 @@ SYSCTL_UINT(_hw_cxgb, OID_AUTO, cong_fla static void ep_timeout(void *arg); static void connect_reply_upcall(struct iwch_ep *ep, int status); -static void iwch_so_upcall(struct socket *so, void *arg, int waitflag); +static int iwch_so_upcall(struct socket *so, void *arg, int waitflag); /* * Cruft to offload socket upcalls onto thread. @@ -335,9 +335,7 @@ close_socket(struct iwch_ep_common *epc) { CTR4(KTR_IW_CXGB, "%s ep %p so %p state %s", __FUNCTION__, epc, epc->so, states[epc->state]); SOCK_LOCK(epc->so); - epc->so->so_upcall = NULL; - epc->so->so_upcallarg = NULL; - epc->so->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(epc->so, SO_RCV); SOCK_UNLOCK(epc->so); soshutdown(epc->so, SHUT_WR|SHUT_RD); epc->so = NULL; @@ -1108,7 +1106,7 @@ terminate(struct t3cdev *tdev, struct mb { struct toepcb *toep = (struct toepcb *)ctx; struct socket *so = toeptoso(toep); - struct iwch_ep *ep = so->so_upcallarg; + struct iwch_ep *ep = so->so_rcv.sb_upcallarg; CTR2(KTR_IW_CXGB, "%s ep %p", __FUNCTION__, ep); m_adj(m, sizeof(struct cpl_rdma_terminate)); @@ -1129,7 +1127,7 @@ ec_status(struct t3cdev *tdev, struct mb struct iwch_qp_attributes attrs; int release = 0; - ep = so->so_upcallarg; + ep = so->so_rcv.sb_upcallarg; CTR5(KTR_IW_CXGB, "%s ep %p so %p state %s ec_status %d", __FUNCTION__, ep, ep->com.so, states[ep->com.state], rep->status); if (!so || !ep) { panic("bogosity ep %p state %d, so %p state %x\n", ep, ep ? ep->com.state : -1, so, so ? so->so_state : -1); @@ -1309,10 +1307,10 @@ static int init_sock(struct iwch_ep_comm struct sockopt sopt; int on=1; - epc->so->so_upcall = iwch_so_upcall; - epc->so->so_upcallarg = epc; - epc->so->so_rcv.sb_flags |= SB_UPCALL; + SOCK_LOCK(epc->so); + soupcall_set(epc->so, SO_RCV, iwch_so_upcall, epc); epc->so->so_state |= SS_NBIO; + SOCK_UNLOCK(epc->so); sopt.sopt_dir = SOPT_SET; sopt.sopt_level = SOL_SOCKET; sopt.sopt_name = SO_NO_DDP; @@ -1611,10 +1609,8 @@ dequeue_socket(struct socket *head, stru so->so_qstate &= ~SQ_COMP; so->so_head = NULL; soref(so); - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, iwch_so_upcall, child_ep); so->so_state |= SS_NBIO; - so->so_upcall = iwch_so_upcall; - so->so_upcallarg = child_ep; PANIC_IF(!(so->so_state & SS_ISCONNECTED)); PANIC_IF(so->so_error); SOCK_UNLOCK(so); @@ -1661,7 +1657,7 @@ process_newconn(struct iwch_ep *parent_e process_mpa_request(child_ep); } -static void +static int iwch_so_upcall(struct socket *so, void *arg, int waitflag) { struct iwch_ep *ep = arg; @@ -1674,6 +1670,7 @@ iwch_so_upcall(struct socket *so, void * taskqueue_enqueue(iw_cxgb_taskq, &iw_cxgb_task); } mtx_unlock(&req_lock); + return (SU_OK); } static void Modified: head/sys/kern/uipc_sockbuf.c ============================================================================== --- head/sys/kern/uipc_sockbuf.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/kern/uipc_sockbuf.c Mon Jun 1 21:17:03 2009 (r193272) @@ -175,6 +175,7 @@ sbunlock(struct sockbuf *sb) void sowakeup(struct socket *so, struct sockbuf *sb) { + int ret; SOCKBUF_LOCK_ASSERT(sb); @@ -186,13 +187,22 @@ sowakeup(struct socket *so, struct sockb wakeup(&sb->sb_cc); } KNOTE_LOCKED(&sb->sb_sel.si_note, 0); + if (sb->sb_upcall != NULL) { + ret = sb->sb_upcall(so, sb->sb_upcallarg, M_DONTWAIT); + if (ret == SU_ISCONNECTED) { + KASSERT(sb == &so->so_rcv, + ("SO_SND upcall returned SU_ISCONNECTED")); + soupcall_clear(so, SO_RCV); + } + } else + ret = SU_OK; + if (sb->sb_flags & SB_AIO) + aio_swake(so, sb); SOCKBUF_UNLOCK(sb); + if (ret == SU_ISCONNECTED) + soisconnected(so); if ((so->so_state & SS_ASYNC) && so->so_sigio != NULL) pgsigio(&so->so_sigio, SIGIO, 0); - if (sb->sb_flags & SB_UPCALL) - (*so->so_upcall)(so, so->so_upcallarg, M_DONTWAIT); - if (sb->sb_flags & SB_AIO) - aio_swake(so, sb); mtx_assert(SOCKBUF_MTX(sb), MA_NOTOWNED); } Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/kern/uipc_socket.c Mon Jun 1 21:17:03 2009 (r193272) @@ -3054,8 +3054,10 @@ soisconnecting(struct socket *so) void soisconnected(struct socket *so) { - struct socket *head; + struct socket *head; + int ret; +restart: ACCEPT_LOCK(); SOCK_LOCK(so); so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING|SS_ISCONFIRMING); @@ -3075,13 +3077,17 @@ soisconnected(struct socket *so) wakeup_one(&head->so_timeo); } else { ACCEPT_UNLOCK(); - so->so_upcall = - head->so_accf->so_accept_filter->accf_callback; - so->so_upcallarg = head->so_accf->so_accept_filter_arg; - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, + head->so_accf->so_accept_filter->accf_callback, + head->so_accf->so_accept_filter_arg); so->so_options &= ~SO_ACCEPTFILTER; + ret = head->so_accf->so_accept_filter->accf_callback(so, + head->so_accf->so_accept_filter_arg, M_DONTWAIT); + if (ret == SU_ISCONNECTED) + soupcall_clear(so, SO_RCV); SOCK_UNLOCK(so); - so->so_upcall(so, so->so_upcallarg, M_DONTWAIT); + if (ret == SU_ISCONNECTED) + goto restart; } return; } @@ -3146,6 +3152,57 @@ sodupsockaddr(const struct sockaddr *sa, } /* + * Register per-socket buffer upcalls. + */ +void +soupcall_set(struct socket *so, int which, + int (*func)(struct socket *, void *, int), void *arg) +{ + struct sockbuf *sb; + + switch (which) { + case SO_RCV: + sb = &so->so_rcv; + break; + case SO_SND: + sb = &so->so_snd; + break; + default: + panic("soupcall_set: bad which"); + } + SOCKBUF_LOCK_ASSERT(sb); +#if 0 + /* XXX: accf_http actually wants to do this on purpose. */ + KASSERT(sb->sb_upcall == NULL, ("soupcall_set: overwriting upcall")); +#endif + sb->sb_upcall = func; + sb->sb_upcallarg = arg; + sb->sb_flags |= SB_UPCALL; +} + +void +soupcall_clear(struct socket *so, int which) +{ + struct sockbuf *sb; + + switch (which) { + case SO_RCV: + sb = &so->so_rcv; + break; + case SO_SND: + sb = &so->so_snd; + break; + default: + panic("soupcall_clear: bad which"); + } + SOCKBUF_LOCK_ASSERT(sb); + KASSERT(sb->sb_upcall != NULL, ("soupcall_clear: no upcall to clear")); + sb->sb_upcall = NULL; + sb->sb_upcallarg = NULL; + sb->sb_flags &= ~SB_UPCALL; +} + +/* * Create an external-format (``xsocket'') structure using the information in * the kernel-format socket structure pointed to by so. This is done to * reduce the spew of irrelevant information over this interface, to isolate Modified: head/sys/kern/vfs_aio.c ============================================================================== --- head/sys/kern/vfs_aio.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/kern/vfs_aio.c Mon Jun 1 21:17:03 2009 (r193272) @@ -1313,12 +1313,12 @@ aio_swake_cb(struct socket *so, struct s struct aiocblist *cb, *cbn; int opcode; + SOCKBUF_LOCK_ASSERT(sb); if (sb == &so->so_snd) opcode = LIO_WRITE; else opcode = LIO_READ; - SOCKBUF_LOCK(sb); sb->sb_flags &= ~SB_AIO; mtx_lock(&aio_job_mtx); TAILQ_FOREACH_SAFE(cb, &so->so_aiojobq, list, cbn) { @@ -1336,7 +1336,6 @@ aio_swake_cb(struct socket *so, struct s } } mtx_unlock(&aio_job_mtx); - SOCKBUF_UNLOCK(sb); } static int Modified: head/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c ============================================================================== --- head/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c Mon Jun 1 21:17:03 2009 (r193272) @@ -93,7 +93,7 @@ MALLOC_DEFINE(M_NETGRAPH_BTSOCKET_RFCOMM #define ALOT 0x7fff /* Local prototypes */ -static void ng_btsocket_rfcomm_upcall +static int ng_btsocket_rfcomm_upcall (struct socket *so, void *arg, int waitflag); static void ng_btsocket_rfcomm_sessions_task (void *ctx, int pending); @@ -1007,7 +1007,7 @@ ng_btsocket_rfcomm_sockaddr(struct socke * Upcall function for L2CAP sockets. Enqueue RFCOMM task. */ -static void +static int ng_btsocket_rfcomm_upcall(struct socket *so, void *arg, int waitflag) { int error; @@ -1018,6 +1018,7 @@ ng_btsocket_rfcomm_upcall(struct socket if ((error = ng_btsocket_rfcomm_task_wakeup()) != 0) NG_BTSOCKET_RFCOMM_ALERT( "%s: Could not enqueue RFCOMM task, error=%d\n", __func__, error); + return (SU_OK); } /* ng_btsocket_rfcomm_upcall */ /* @@ -1047,13 +1048,11 @@ ng_btsocket_rfcomm_sessions_task(void *c panic("%s: DLC list is not empty\n", __func__); /* Close L2CAP socket */ - s->l2so->so_upcallarg = NULL; - s->l2so->so_upcall = NULL; SOCKBUF_LOCK(&s->l2so->so_rcv); - s->l2so->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(s->l2so, SO_RCV); SOCKBUF_UNLOCK(&s->l2so->so_rcv); SOCKBUF_LOCK(&s->l2so->so_snd); - s->l2so->so_snd.sb_flags &= ~SB_UPCALL; + soupcall_clear(s->l2so, SO_SND); SOCKBUF_UNLOCK(&s->l2so->so_snd); soclose(s->l2so); @@ -1286,13 +1285,11 @@ ng_btsocket_rfcomm_session_create(ng_bts LIST_INIT(&s->dlcs); /* Prepare L2CAP socket */ - l2so->so_upcallarg = NULL; - l2so->so_upcall = ng_btsocket_rfcomm_upcall; SOCKBUF_LOCK(&l2so->so_rcv); - l2so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(l2so, SO_RCV, ng_btsocket_rfcomm_upcall, NULL); SOCKBUF_UNLOCK(&l2so->so_rcv); SOCKBUF_LOCK(&l2so->so_snd); - l2so->so_snd.sb_flags |= SB_UPCALL; + soupcall_set(l2so, SO_SND, ng_btsocket_rfcomm_upcall, NULL); SOCKBUF_UNLOCK(&l2so->so_snd); l2so->so_state |= SS_NBIO; s->l2so = l2so; @@ -1370,13 +1367,11 @@ bad: mtx_unlock(&s->session_mtx); /* Return L2CAP socket back to its original state */ - l2so->so_upcallarg = NULL; - l2so->so_upcall = NULL; SOCKBUF_LOCK(&l2so->so_rcv); - l2so->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(s->l2so, SO_RCV); SOCKBUF_UNLOCK(&l2so->so_rcv); SOCKBUF_LOCK(&l2so->so_snd); - l2so->so_snd.sb_flags &= ~SB_UPCALL; + soupcall_clear(s->l2so, SO_SND); SOCKBUF_UNLOCK(&l2so->so_snd); l2so->so_state &= ~SS_NBIO; Modified: head/sys/netgraph/ng_ksocket.c ============================================================================== --- head/sys/netgraph/ng_ksocket.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netgraph/ng_ksocket.c Mon Jun 1 21:17:03 2009 (r193272) @@ -158,7 +158,7 @@ static const struct ng_ksocket_alias ng_ /* Helper functions */ static int ng_ksocket_check_accept(priv_p); static void ng_ksocket_finish_accept(priv_p); -static void ng_ksocket_incoming(struct socket *so, void *arg, int waitflag); +static int ng_ksocket_incoming(struct socket *so, void *arg, int waitflag); static int ng_ksocket_parse(const struct ng_ksocket_alias *aliases, const char *s, int family); static void ng_ksocket_incoming2(node_p node, hook_p hook, @@ -616,13 +616,11 @@ ng_ksocket_connect(hook_p hook) struct socket *const so = priv->so; /* Add our hook for incoming data and other events */ - priv->so->so_upcallarg = (caddr_t)node; - priv->so->so_upcall = ng_ksocket_incoming; SOCKBUF_LOCK(&priv->so->so_rcv); - priv->so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(priv->so, SO_RCV, ng_ksocket_incoming, node); SOCKBUF_UNLOCK(&priv->so->so_rcv); SOCKBUF_LOCK(&priv->so->so_snd); - priv->so->so_snd.sb_flags |= SB_UPCALL; + soupcall_set(priv->so, SO_SND, ng_ksocket_incoming, node); SOCKBUF_UNLOCK(&priv->so->so_snd); SOCK_LOCK(priv->so); priv->so->so_state |= SS_NBIO; @@ -941,12 +939,11 @@ ng_ksocket_shutdown(node_p node) /* Close our socket (if any) */ if (priv->so != NULL) { SOCKBUF_LOCK(&priv->so->so_rcv); - priv->so->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(priv->so, SO_RCV); SOCKBUF_UNLOCK(&priv->so->so_rcv); SOCKBUF_LOCK(&priv->so->so_snd); - priv->so->so_snd.sb_flags &= ~SB_UPCALL; + soupcall_clear(priv->so, SO_SND); SOCKBUF_UNLOCK(&priv->so->so_snd); - priv->so->so_upcall = NULL; soclose(priv->so); priv->so = NULL; } @@ -1000,7 +997,7 @@ ng_ksocket_disconnect(hook_p hook) * To decouple stack, we use queue version of ng_send_fn(). */ -static void +static int ng_ksocket_incoming(struct socket *so, void *arg, int waitflag) { const node_p node = arg; @@ -1017,6 +1014,7 @@ ng_ksocket_incoming(struct socket *so, v ng_send_fn1(node, NULL, &ng_ksocket_incoming2, so, 0, wait)) { atomic_store_rel_int(&priv->fn_sent, 0); } + return (SU_OK); } @@ -1258,13 +1256,11 @@ ng_ksocket_finish_accept(priv_p priv) */ LIST_INSERT_HEAD(&priv->embryos, priv2, siblings); - so->so_upcallarg = (caddr_t)node; - so->so_upcall = ng_ksocket_incoming; SOCKBUF_LOCK(&so->so_rcv); - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, ng_ksocket_incoming, node); SOCKBUF_UNLOCK(&so->so_rcv); SOCKBUF_LOCK(&so->so_snd); - so->so_snd.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, ng_ksocket_incoming, node); SOCKBUF_UNLOCK(&so->so_snd); /* Fill in the response data and send it or return it to the caller */ Modified: head/sys/netinet/accf_data.c ============================================================================== --- head/sys/netinet/accf_data.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netinet/accf_data.c Mon Jun 1 21:17:03 2009 (r193272) @@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$"); /* accept filter that holds a socket until data arrives */ -static void sohasdata(struct socket *so, void *arg, int waitflag); +static int sohasdata(struct socket *so, void *arg, int waitflag); static struct accept_filter accf_data_filter = { "dataready", @@ -55,15 +55,12 @@ static moduledata_t accf_data_mod = { DECLARE_MODULE(accf_data, accf_data_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); -static void +static int sohasdata(struct socket *so, void *arg, int waitflag) { if (!soreadable(so)) - return; + return (SU_OK); - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected(so); - return; + return (SU_ISCONNECTED); } Modified: head/sys/netinet/accf_dns.c ============================================================================== --- head/sys/netinet/accf_dns.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netinet/accf_dns.c Mon Jun 1 21:17:03 2009 (r193272) @@ -37,7 +37,7 @@ #include /* check for full DNS request */ -static void sohasdns(struct socket *so, void *arg, int waitflag); +static int sohasdns(struct socket *so, void *arg, int waitflag); struct packet { struct mbuf *m; /* Current mbuf. */ @@ -69,7 +69,7 @@ static moduledata_t accf_dns_mod = { DECLARE_MODULE(accf_dns, accf_dns_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); -static void +static int sohasdns(struct socket *so, void *arg, int waitflag) { struct sockbuf *sb = &so->so_rcv; @@ -80,13 +80,10 @@ sohasdns(struct socket *so, void *arg, i /* Check to see if we have a request. */ if (skippacket(sb) == DNS_WAIT) - return; + return (SU_OK); ready: - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected(so); - return; + return (SU_ISCONNECTED); } #define GET8(p, val) do { \ Modified: head/sys/netinet/accf_http.c ============================================================================== --- head/sys/netinet/accf_http.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netinet/accf_http.c Mon Jun 1 21:17:03 2009 (r193272) @@ -39,11 +39,11 @@ __FBSDID("$FreeBSD$"); #include /* check for GET/HEAD */ -static void sohashttpget(struct socket *so, void *arg, int waitflag); +static int sohashttpget(struct socket *so, void *arg, int waitflag); /* check for HTTP/1.0 or HTTP/1.1 */ -static void soparsehttpvers(struct socket *so, void *arg, int waitflag); +static int soparsehttpvers(struct socket *so, void *arg, int waitflag); /* check for end of HTTP/1.x request */ -static void soishttpconnected(struct socket *so, void *arg, int waitflag); +static int soishttpconnected(struct socket *so, void *arg, int waitflag); /* strcmp on an mbuf chain */ static int mbufstrcmp(struct mbuf *m, struct mbuf *npkt, int offset, char *cmp); /* strncmp on an mbuf chain */ @@ -158,7 +158,7 @@ mbufstrncmp(struct mbuf *m, struct mbuf slen = sizeof(str) - 1; \ } while(0) -static void +static int sohashttpget(struct socket *so, void *arg, int waitflag) { @@ -170,7 +170,7 @@ sohashttpget(struct socket *so, void *ar m = so->so_rcv.sb_mb; cc = so->so_rcv.sb_cc - 1; if (cc < 1) - return; + return (SU_OK); switch (*mtod(m, char *)) { case 'G': STRSETUP(cmp, cmplen, "ET "); @@ -184,7 +184,7 @@ sohashttpget(struct socket *so, void *ar if (cc < cmplen) { if (mbufstrncmp(m, m->m_nextpkt, 1, cc, cmp) == 1) { DPRINT("short cc (%d) but mbufstrncmp ok", cc); - return; + return (SU_OK); } else { DPRINT("short cc (%d) mbufstrncmp failed", cc); goto fallout; @@ -193,23 +193,19 @@ sohashttpget(struct socket *so, void *ar if (mbufstrcmp(m, m->m_nextpkt, 1, cmp) == 1) { DPRINT("mbufstrcmp ok"); if (parse_http_version == 0) - soishttpconnected(so, arg, waitflag); + return (soishttpconnected(so, arg, waitflag)); else - soparsehttpvers(so, arg, waitflag); - return; + return (soparsehttpvers(so, arg, waitflag)); } DPRINT("mbufstrcmp bad"); } fallout: DPRINT("fallout"); - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected(so); - return; + return (SU_ISCONNECTED); } -static void +static int soparsehttpvers(struct socket *so, void *arg, int waitflag) { struct mbuf *m, *n; @@ -261,10 +257,9 @@ soparsehttpvers(struct socket *so, void } else if ( mbufstrcmp(m, n, i, "HTTP/1.0") || mbufstrcmp(m, n, i, "HTTP/1.1")) { - DPRINT("ok"); - soishttpconnected(so, - arg, waitflag); - return; + DPRINT("ok"); + return (soishttpconnected(so, + arg, waitflag)); } else { DPRINT("bad"); goto fallout; @@ -279,22 +274,18 @@ readmore: * if we hit here we haven't hit something * we don't understand or a newline, so try again */ - so->so_upcall = soparsehttpvers; - so->so_rcv.sb_flags |= SB_UPCALL; - return; + soupcall_set(so, SO_RCV, soparsehttpvers, arg); + return (SU_OK); fallout: DPRINT("fallout"); - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected(so); - return; + return (SU_ISCONNECTED); } #define NCHRS 3 -static void +static int soishttpconnected(struct socket *so, void *arg, int waitflag) { char a, b, c; @@ -350,13 +341,9 @@ soishttpconnected(struct socket *so, voi } readmore: - so->so_upcall = soishttpconnected; - so->so_rcv.sb_flags |= SB_UPCALL; - return; + soupcall_set(so, SO_RCV, soishttpconnected, arg); + return (SU_OK); gotit: - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected(so); - return; + return (SU_ISCONNECTED); } Modified: head/sys/netsmb/smb_trantcp.c ============================================================================== --- head/sys/netsmb/smb_trantcp.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/netsmb/smb_trantcp.c Mon Jun 1 21:17:03 2009 (r193272) @@ -100,14 +100,15 @@ nb_intr(struct nbpcb *nbp, struct proc * return 0; } -static void +static int nb_upcall(struct socket *so, void *arg, int waitflag) { struct nbpcb *nbp = arg; if (arg == NULL || nbp->nbp_selectid == NULL) - return; + return (SU_OK); wakeup(nbp->nbp_selectid); + return (SU_OK); } static int @@ -152,10 +153,8 @@ nb_connect_in(struct nbpcb *nbp, struct if (error) return error; nbp->nbp_tso = so; - so->so_upcallarg = (caddr_t)nbp; - so->so_upcall = nb_upcall; SOCKBUF_LOCK(&so->so_rcv); - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, nb_upcall, nbp); SOCKBUF_UNLOCK(&so->so_rcv); so->so_rcv.sb_timeo = (5 * hz); so->so_snd.sb_timeo = (5 * hz); Modified: head/sys/nfsclient/nfs_socket.c ============================================================================== --- head/sys/nfsclient/nfs_socket.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/nfsclient/nfs_socket.c Mon Jun 1 21:17:03 2009 (r193272) @@ -122,8 +122,8 @@ static int nfs_realign(struct mbuf **pm, static int nfs_reply(struct nfsreq *); static void nfs_softterm(struct nfsreq *rep); static int nfs_reconnect(struct nfsreq *rep); -static void nfs_clnt_tcp_soupcall(struct socket *so, void *arg, int waitflag); -static void nfs_clnt_udp_soupcall(struct socket *so, void *arg, int waitflag); +static int nfs_clnt_tcp_soupcall(struct socket *so, void *arg, int waitflag); +static int nfs_clnt_udp_soupcall(struct socket *so, void *arg, int waitflag); extern struct mtx nfs_reqq_mtx; @@ -457,12 +457,10 @@ nfs_connect(struct nfsmount *nmp, struct goto bad; SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_flags |= SB_NOINTR; - so->so_upcallarg = (caddr_t)nmp; if (so->so_type == SOCK_STREAM) - so->so_upcall = nfs_clnt_tcp_soupcall; - else - so->so_upcall = nfs_clnt_udp_soupcall; - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, nfs_clnt_tcp_soupcall, nmp); + else + soupcall_set(so, SO_RCV, nfs_clnt_udp_soupcall, nmp); SOCKBUF_UNLOCK(&so->so_rcv); SOCKBUF_LOCK(&so->so_snd); so->so_snd.sb_flags |= SB_NOINTR; @@ -600,9 +598,7 @@ nfs_disconnect(struct nfsmount *nmp) nmp->nm_so = NULL; mtx_unlock(&nmp->nm_mtx); SOCKBUF_LOCK(&so->so_rcv); - so->so_upcallarg = NULL; - so->so_upcall = NULL; - so->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(so, SO_RCV); SOCKBUF_UNLOCK(&so->so_rcv); soshutdown(so, SHUT_WR); soclose(so); @@ -811,7 +807,7 @@ tryagain: * XXX TO DO * Make nfs_realign() non-blocking. Also make nfsm_dissect() nonblocking. */ -static void +static int nfs_clnt_match_xid(struct socket *so, struct nfsmount *nmp, struct mbuf *mrep) @@ -928,11 +924,10 @@ nfstcp_readable(struct socket *so, int b { int retval; - SOCKBUF_LOCK(&so->so_rcv); + SOCKBUF_LOCK_ASSERT(&so->so_rcv); retval = (so->so_rcv.sb_cc >= (bytes) || (so->so_rcv.sb_state & SBS_CANTRCVMORE) || so->so_error); - SOCKBUF_UNLOCK(&so->so_rcv); return (retval); } @@ -969,7 +964,7 @@ nfs_clnt_tcp_soupcall(struct socket *so, mtx_lock(&nmp->nm_mtx); if (nmp->nm_nfstcpstate.flags & NFS_TCP_FORCE_RECONNECT) { mtx_unlock(&nmp->nm_mtx); - return; + return (SU_OK); } else mtx_unlock(&nmp->nm_mtx); auio.uio_td = curthread; @@ -983,8 +978,9 @@ nfs_clnt_tcp_soupcall(struct socket *so, mtx_unlock(&nmp->nm_mtx); if (!nfstcp_marker_readable(so)) { /* Marker is not readable */ - return; + return (SU_OK); } + SOCKBUF_UNLOCK(&so->so_rcv); auio.uio_resid = sizeof(u_int32_t); auio.uio_iov = NULL; auio.uio_iovcnt = 0; @@ -992,6 +988,7 @@ nfs_clnt_tcp_soupcall(struct socket *so, rcvflg = (MSG_DONTWAIT | MSG_SOCALLBCK); error = soreceive(so, (struct sockaddr **)0, &auio, &mp, (struct mbuf **)0, &rcvflg); + SOCKBUF_LOCK(&so->so_rcv); /* * We've already tested that the socket is readable. 2 cases * here, we either read 0 bytes (client closed connection), @@ -1052,8 +1049,9 @@ nfs_clnt_tcp_soupcall(struct socket *so, mtx_unlock(&nmp->nm_mtx); if (!nfstcp_readable(so, nmp->nm_nfstcpstate.rpcresid)) { /* All data not readable */ - return; + return (SU_OK); } + SOCKBUF_UNLOCK(&so->so_rcv); auio.uio_resid = nmp->nm_nfstcpstate.rpcresid; auio.uio_iov = NULL; auio.uio_iovcnt = 0; @@ -1061,6 +1059,7 @@ nfs_clnt_tcp_soupcall(struct socket *so, rcvflg = (MSG_DONTWAIT | MSG_SOCALLBCK); error = soreceive(so, (struct sockaddr **)0, &auio, &mp, (struct mbuf **)0, &rcvflg); + SOCKBUF_LOCK(&so->so_rcv); if (error || auio.uio_resid > 0) { if (error && error != ECONNRESET) { log(LOG_ERR, @@ -1083,6 +1082,7 @@ nfs_clnt_tcp_soupcall(struct socket *so, mark_reconnect: nfs_mark_for_reconnect(nmp); + return (SU_OK); } static void @@ -1094,6 +1094,7 @@ nfs_clnt_udp_soupcall(struct socket *so, struct mbuf *control = NULL; int error, rcvflag; + SOCKBUF_UNLOCK(&so->so_rcv); auio.uio_resid = 1000000; auio.uio_td = curthread; rcvflag = MSG_DONTWAIT; @@ -1106,6 +1107,8 @@ nfs_clnt_udp_soupcall(struct socket *so, if (mp) nfs_clnt_match_xid(so, nmp, mp); } while (mp && !error); + SOCKBUF_LOCK(&so->so_rcv); + return (SU_OK); } /* Modified: head/sys/nfsserver/nfs.h ============================================================================== --- head/sys/nfsserver/nfs.h Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/nfsserver/nfs.h Mon Jun 1 21:17:03 2009 (r193272) @@ -367,7 +367,7 @@ void nfsrv_timer(void *); int nfsrv_getcache(struct nfsrv_descript *, struct mbuf **); void nfsrv_updatecache(struct nfsrv_descript *, int, struct mbuf *); void nfsrv_cleancache(void); -void nfsrv_rcv(struct socket *so, void *arg, int waitflag); +int nfsrv_rcv(struct socket *so, void *arg, int waitflag); void nfsrv_slpderef(struct nfssvc_sock *slp); void nfsrv_wakenfsd(struct nfssvc_sock *slp); int nfsrv_writegather(struct nfsrv_descript **, struct nfssvc_sock *, Modified: head/sys/nfsserver/nfs_srvsock.c ============================================================================== --- head/sys/nfsserver/nfs_srvsock.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/nfsserver/nfs_srvsock.c Mon Jun 1 21:17:03 2009 (r193272) @@ -406,7 +406,7 @@ nfsmout: * Essentially do as much as possible non-blocking, else punt and it will * be called with M_WAIT from an nfsd. */ -void +int nfsrv_rcv(struct socket *so, void *arg, int waitflag) { struct nfssvc_sock *slp = (struct nfssvc_sock *)arg; @@ -420,7 +420,7 @@ nfsrv_rcv(struct socket *so, void *arg, /* XXXRW: Unlocked read. */ if ((slp->ns_flag & SLP_VALID) == 0) - return; + return (SU_OK); /* * We can't do this in the context of a socket callback Modified: head/sys/nfsserver/nfs_syscalls.c ============================================================================== --- head/sys/nfsserver/nfs_syscalls.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/nfsserver/nfs_syscalls.c Mon Jun 1 21:17:03 2009 (r193272) @@ -263,11 +263,11 @@ nfssvc_addsock(struct file *fp, struct s slp->ns_nam = mynam; fhold(fp); slp->ns_fp = fp; + NFSD_UNLOCK(); SOCKBUF_LOCK(&so->so_rcv); - so->so_upcallarg = (caddr_t)slp; - so->so_upcall = nfsrv_rcv; - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, nfsrv_rcv, slp); SOCKBUF_UNLOCK(&so->so_rcv); + NFSD_LOCK(); slp->ns_flag = (SLP_VALID | SLP_NEEDQ); nfsrv_wakenfsd(slp); NFSD_UNLOCK(); @@ -585,9 +585,7 @@ nfsrv_zapsock(struct nfssvc_sock *slp) slp->ns_fp = NULL; so = slp->ns_so; SOCKBUF_LOCK(&so->so_rcv); - so->so_rcv.sb_flags &= ~SB_UPCALL; - so->so_upcall = NULL; - so->so_upcallarg = NULL; + soupcall_clear(so, SO_RCV); SOCKBUF_UNLOCK(&so->so_rcv); soshutdown(so, SHUT_RDWR); closef(fp, NULL); Modified: head/sys/rpc/clnt_dg.c ============================================================================== --- head/sys/rpc/clnt_dg.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/rpc/clnt_dg.c Mon Jun 1 21:17:03 2009 (r193272) @@ -79,7 +79,7 @@ static void clnt_dg_abort(CLIENT *); static bool_t clnt_dg_control(CLIENT *, u_int, void *); static void clnt_dg_close(CLIENT *); static void clnt_dg_destroy(CLIENT *); -static void clnt_dg_soupcall(struct socket *so, void *arg, int waitflag); +static int clnt_dg_soupcall(struct socket *so, void *arg, int waitflag); static struct clnt_ops clnt_dg_ops = { .cl_call = clnt_dg_call, @@ -112,7 +112,7 @@ TAILQ_HEAD(cu_request_list, cu_request); #define MCALL_MSG_SIZE 24 /* - * This structure is pointed to by the socket's so_upcallarg + * This structure is pointed to by the socket buffer's sb_upcallarg * member. It is separate from the client private data to facilitate * multiple clients sharing the same socket. The cs_lock mutex is used * to protect all fields of this structure, the socket's receive @@ -183,6 +183,7 @@ clnt_dg_create( CLIENT *cl = NULL; /* client handle */ struct cu_data *cu = NULL; /* private data */ struct cu_socket *cs = NULL; + struct sockbuf *sb; struct timeval now; struct rpc_msg call_msg; struct __rpc_sockinfo si; @@ -260,15 +261,16 @@ clnt_dg_create( cu->cu_socket = so; soreserve(so, 256*1024, 256*1024); + sb = &so->so_rcv; SOCKBUF_LOCK(&so->so_rcv); recheck_socket: - if (so->so_upcall) { - if (so->so_upcall != clnt_dg_soupcall) { + if (sb->sb_upcall) { + if (sb->sb_upcall != clnt_dg_soupcall) { SOCKBUF_UNLOCK(&so->so_rcv); printf("clnt_dg_create(): socket already has an incompatible upcall\n"); goto err2; } - cs = (struct cu_socket *) so->so_upcallarg; + cs = (struct cu_socket *) sb->sb_upcallarg; mtx_lock(&cs->cs_lock); cs->cs_refs++; mtx_unlock(&cs->cs_lock); @@ -277,10 +279,10 @@ recheck_socket: * We are the first on this socket - allocate the * structure and install it in the socket. */ - SOCKBUF_UNLOCK(&cu->cu_socket->so_rcv); + SOCKBUF_UNLOCK(&so->so_rcv); cs = mem_alloc(sizeof(*cs)); - SOCKBUF_LOCK(&cu->cu_socket->so_rcv); - if (so->so_upcall) { + SOCKBUF_LOCK(&so->so_rcv); + if (sb->sb_upcall) { /* * We have lost a race with some other client. */ @@ -290,9 +292,7 @@ recheck_socket: mtx_init(&cs->cs_lock, "cs->cs_lock", NULL, MTX_DEF); cs->cs_refs = 1; TAILQ_INIT(&cs->cs_pending); - so->so_upcallarg = cs; - so->so_upcall = clnt_dg_soupcall; - so->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(so, SO_RCV, clnt_dg_soupcall, cs); } SOCKBUF_UNLOCK(&so->so_rcv); @@ -322,7 +322,7 @@ clnt_dg_call( struct timeval utimeout) /* seconds to wait before giving up */ { struct cu_data *cu = (struct cu_data *)cl->cl_private; - struct cu_socket *cs = (struct cu_socket *) cu->cu_socket->so_upcallarg; + struct cu_socket *cs; struct rpc_timers *rt; AUTH *auth; struct rpc_err *errp; @@ -343,6 +343,7 @@ clnt_dg_call( struct cu_request *cr; int error; + cs = cu->cu_socket->so_rcv.sb_upcallarg; cr = malloc(sizeof(struct cu_request), M_RPC, M_WAITOK); mtx_lock(&cs->cs_lock); @@ -797,9 +798,10 @@ static bool_t clnt_dg_control(CLIENT *cl, u_int request, void *info) { struct cu_data *cu = (struct cu_data *)cl->cl_private; - struct cu_socket *cs = (struct cu_socket *) cu->cu_socket->so_upcallarg; + struct cu_socket *cs; struct sockaddr *addr; + cs = cu->cu_socket->so_rcv.sb_upcallarg; mtx_lock(&cs->cs_lock); switch (request) { @@ -929,9 +931,10 @@ static void clnt_dg_close(CLIENT *cl) { struct cu_data *cu = (struct cu_data *)cl->cl_private; - struct cu_socket *cs = (struct cu_socket *) cu->cu_socket->so_upcallarg; + struct cu_socket *cs; struct cu_request *cr; + cs = cu->cu_socket->so_rcv.sb_upcallarg; mtx_lock(&cs->cs_lock); if (cu->cu_closed) { @@ -974,10 +977,11 @@ static void clnt_dg_destroy(CLIENT *cl) { struct cu_data *cu = (struct cu_data *)cl->cl_private; - struct cu_socket *cs = (struct cu_socket *) cu->cu_socket->so_upcallarg; + struct cu_socket *cs; struct socket *so = NULL; bool_t lastsocketref; + cs = cu->cu_socket->so_rcv.sb_upcallarg; clnt_dg_close(cl); mtx_lock(&cs->cs_lock); @@ -986,9 +990,7 @@ clnt_dg_destroy(CLIENT *cl) if (cs->cs_refs == 0) { mtx_destroy(&cs->cs_lock); SOCKBUF_LOCK(&cu->cu_socket->so_rcv); - cu->cu_socket->so_upcallarg = NULL; - cu->cu_socket->so_upcall = NULL; - cu->cu_socket->so_rcv.sb_flags &= ~SB_UPCALL; + soupcall_clear(cu->cu_socket, SO_RCV); SOCKBUF_UNLOCK(&cu->cu_socket->so_rcv); mem_free(cs, sizeof(*cs)); lastsocketref = TRUE; @@ -1023,7 +1025,7 @@ time_not_ok(struct timeval *t) t->tv_usec < -1 || t->tv_usec > 1000000); } -void +int clnt_dg_soupcall(struct socket *so, void *arg, int waitflag) { struct cu_socket *cs = (struct cu_socket *) arg; @@ -1037,12 +1039,14 @@ clnt_dg_soupcall(struct socket *so, void uio.uio_resid = 1000000000; uio.uio_td = curthread; do { + SOCKBUF_UNLOCK(&so->so_rcv); m = NULL; control = NULL; rcvflag = MSG_DONTWAIT; error = soreceive(so, NULL, &uio, &m, &control, &rcvflag); if (control) m_freem(control); + SOCKBUF_LOCK(&so->so_rcv); if (error == EWOULDBLOCK) break; @@ -1107,5 +1111,6 @@ clnt_dg_soupcall(struct socket *so, void if (!foundreq) m_freem(m); } while (m); + return (SU_OK); } Modified: head/sys/rpc/clnt_vc.c ============================================================================== --- head/sys/rpc/clnt_vc.c Mon Jun 1 21:13:38 2009 (r193271) +++ head/sys/rpc/clnt_vc.c Mon Jun 1 21:17:03 2009 (r193272) @@ -91,7 +91,7 @@ static bool_t clnt_vc_control(CLIENT *, static void clnt_vc_close(CLIENT *); static void clnt_vc_destroy(CLIENT *); static bool_t time_not_ok(struct timeval *); -static void clnt_vc_soupcall(struct socket *so, void *arg, int waitflag); +static int clnt_vc_soupcall(struct socket *so, void *arg, int waitflag); static struct clnt_ops clnt_vc_ops = { .cl_call = clnt_vc_call, @@ -286,9 +286,7 @@ clnt_vc_create( soreserve(ct->ct_socket, sendsz, recvsz); SOCKBUF_LOCK(&ct->ct_socket->so_rcv); - ct->ct_socket->so_upcallarg = ct; - ct->ct_socket->so_upcall = clnt_vc_soupcall; - ct->ct_socket->so_rcv.sb_flags |= SB_UPCALL; + soupcall_set(ct->ct_socket, SO_RCV, clnt_vc_soupcall, ct); SOCKBUF_UNLOCK(&ct->ct_socket->so_rcv); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From jilles at FreeBSD.org Mon Jun 1 21:26:53 2009 From: jilles at FreeBSD.org (Jilles Tjoelker) Date: Mon Jun 1 21:27:04 2009 Subject: svn commit: r193273 - head/usr.sbin/pkg_install/info Message-ID: <200906012126.n51LQqNw092706@svn.freebsd.org> Author: jilles Date: Mon Jun 1 21:26:52 2009 New Revision: 193273 URL: http://svn.freebsd.org/changeset/base/193273 Log: Fix segfault when giving invalid long option to pkg_info. PR: bin/133473 Submitted by: Rafal Grodzinski Approved by: ed (mentor) MFC after: 1 week Modified: head/usr.sbin/pkg_install/info/main.c Modified: head/usr.sbin/pkg_install/info/main.c ============================================================================== --- head/usr.sbin/pkg_install/info/main.c Mon Jun 1 21:17:03 2009 (r193272) +++ head/usr.sbin/pkg_install/info/main.c Mon Jun 1 21:26:52 2009 (r193273) @@ -58,6 +58,7 @@ static struct option longopts[] = { { "verbose", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'P' }, { "which", required_argument, NULL, 'W' }, + { NULL, 0, NULL, 0 } }; int From zec at FreeBSD.org Mon Jun 1 21:29:55 2009 From: zec at FreeBSD.org (Marko Zec) Date: Mon Jun 1 21:30:07 2009 Subject: svn commit: r193274 - in head/sys: contrib/pf/net netinet6 Message-ID: <200906012129.n51LTsN7092816@svn.freebsd.org> Author: zec Date: Mon Jun 1 21:29:54 2009 New Revision: 193274 URL: http://svn.freebsd.org/changeset/base/193274 Log: V_loif is not an array but a pure pointer, so treat it as such. Reviewed by: bz Approved by: julian (mentor) Modified: head/sys/contrib/pf/net/pf_ioctl.c head/sys/netinet6/ip6_input.c Modified: head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- head/sys/contrib/pf/net/pf_ioctl.c Mon Jun 1 21:26:52 2009 (r193273) +++ head/sys/contrib/pf/net/pf_ioctl.c Mon Jun 1 21:29:54 2009 (r193274) @@ -3717,7 +3717,7 @@ pf_check6_in(void *arg, struct mbuf **m, * order to support scoped addresses. In order to support stateful * filtering we have change this to lo0 as it is the case in IPv4. */ - chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? &V_loif[0] : ifp, m, + chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? V_loif : ifp, m, NULL, inp); if (chk && *m) { m_freem(*m); Modified: head/sys/netinet6/ip6_input.c ============================================================================== --- head/sys/netinet6/ip6_input.c Mon Jun 1 21:26:52 2009 (r193273) +++ head/sys/netinet6/ip6_input.c Mon Jun 1 21:29:54 2009 (r193274) @@ -380,7 +380,7 @@ ip6_input(struct mbuf *m) #define M2MMAX (sizeof(V_ip6stat.ip6s_m2m)/sizeof(V_ip6stat.ip6s_m2m[0])) if (m->m_next) { if (m->m_flags & M_LOOP) { - V_ip6stat.ip6s_m2m[V_loif[0].if_index]++; /* XXX */ + V_ip6stat.ip6s_m2m[V_loif->if_index]++; } else if (m->m_pkthdr.rcvif->if_index < M2MMAX) V_ip6stat.ip6s_m2m[m->m_pkthdr.rcvif->if_index]++; else From jhb at FreeBSD.org Mon Jun 1 21:32:53 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 21:33:05 2009 Subject: svn commit: r193275 - in head/sys: kern sys vm Message-ID: <200906012132.n51LWq2U092924@svn.freebsd.org> Author: jhb Date: Mon Jun 1 21:32:52 2009 New Revision: 193275 URL: http://svn.freebsd.org/changeset/base/193275 Log: Add an extension to the character device interface that allows character device drivers to use arbitrary VM objects to satisfy individual mmap() requests. - A new d_mmap_single(cdev, &foff, objsize, &object, prot) callback is added to cdevsw. This function is called for each mmap() request. If it returns ENODEV, then the mmap() request will fall back to using the device's device pager object and d_mmap(). Otherwise, the method can return a VM object to satisfy this entire mmap() request via *object. It can also modify the starting offset into this object via *foff. This allows device drivers to use the file offset as a cookie to identify specific VM objects. - vm_mmap_vnode() has been changed to call vm_mmap_cdev() directly when mapping V_CHR vnodes. This avoids duplicating all the cdev mmap handling code and simplifies some of vm_mmap_vnode(). - D_VERSION has been bumped to D_VERSION_02. Older device drivers using D_VERSION_01 are still supported. MFC after: 1 month Modified: head/sys/kern/kern_conf.c head/sys/sys/conf.h head/sys/vm/vm_mmap.c Modified: head/sys/kern/kern_conf.c ============================================================================== --- head/sys/kern/kern_conf.c Mon Jun 1 21:29:54 2009 (r193274) +++ head/sys/kern/kern_conf.c Mon Jun 1 21:32:52 2009 (r193275) @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include static MALLOC_DEFINE(M_DEVT, "cdev", "cdev storage"); @@ -275,6 +276,7 @@ dead_strategy(struct bio *bp) #define dead_dump (dumper_t *)enxio #define dead_kqfilter (d_kqfilter_t *)enxio +#define dead_mmap_single (d_mmap_single_t *)enodev static struct cdevsw dead_cdevsw = { .d_version = D_VERSION, @@ -289,7 +291,8 @@ static struct cdevsw dead_cdevsw = { .d_strategy = dead_strategy, .d_name = "dead", .d_dump = dead_dump, - .d_kqfilter = dead_kqfilter + .d_kqfilter = dead_kqfilter, + .d_mmap_single = dead_mmap_single }; /* Default methods if driver does not specify method */ @@ -301,6 +304,7 @@ static struct cdevsw dead_cdevsw = { #define no_ioctl (d_ioctl_t *)enodev #define no_mmap (d_mmap_t *)enodev #define no_kqfilter (d_kqfilter_t *)enodev +#define no_mmap_single (d_mmap_single_t *)enodev static void no_strategy(struct bio *bp) @@ -480,6 +484,23 @@ giant_mmap(struct cdev *dev, vm_offset_t return (retval); } +static int +giant_mmap_single(struct cdev *dev, vm_ooffset_t *offset, vm_size_t size, + vm_object_t *object, int nprot) +{ + struct cdevsw *dsw; + int retval; + + dsw = dev_refthread(dev); + if (dsw == NULL) + return (ENXIO); + mtx_lock(&Giant); + retval = dsw->d_gianttrick->d_mmap_single(dev, offset, size, object, + nprot); + mtx_unlock(&Giant); + dev_relthread(dev); + return (retval); +} static void notify(struct cdev *dev, const char *ev) @@ -569,7 +590,8 @@ prep_cdevsw(struct cdevsw *devsw) return; } - if (devsw->d_version != D_VERSION_01) { + if (devsw->d_version != D_VERSION_01 && + devsw->d_version != D_VERSION_02) { printf( "WARNING: Device driver \"%s\" has wrong version %s\n", devsw->d_name == NULL ? "???" : devsw->d_name, @@ -585,6 +607,8 @@ prep_cdevsw(struct cdevsw *devsw) devsw->d_dump = dead_dump; devsw->d_kqfilter = dead_kqfilter; } + if (devsw->d_version == D_VERSION_01) + devsw->d_mmap_single = NULL; if (devsw->d_flags & D_NEEDGIANT) { if (devsw->d_gianttrick == NULL) { @@ -613,6 +637,7 @@ prep_cdevsw(struct cdevsw *devsw) FIXUP(d_mmap, no_mmap, giant_mmap); FIXUP(d_strategy, no_strategy, giant_strategy); FIXUP(d_kqfilter, no_kqfilter, giant_kqfilter); + FIXUP(d_mmap_single, no_mmap_single, giant_mmap_single); if (devsw->d_dump == NULL) devsw->d_dump = no_dump; Modified: head/sys/sys/conf.h ============================================================================== --- head/sys/sys/conf.h Mon Jun 1 21:29:54 2009 (r193274) +++ head/sys/sys/conf.h Mon Jun 1 21:32:52 2009 (r193275) @@ -103,6 +103,7 @@ struct thread; struct uio; struct knote; struct clonedevs; +struct vm_object; struct vnode; /* @@ -136,6 +137,8 @@ typedef int d_poll_t(struct cdev *dev, i typedef int d_kqfilter_t(struct cdev *dev, struct knote *kn); typedef int d_mmap_t(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot); +typedef int d_mmap_single_t(struct cdev *cdev, vm_ooffset_t *offset, + vm_size_t size, struct vm_object **object, int nprot); typedef void d_purge_t(struct cdev *dev); typedef int d_spare2_t(struct cdev *dev); @@ -175,7 +178,8 @@ typedef int dumper_t( */ #define D_VERSION_00 0x20011966 #define D_VERSION_01 0x17032005 /* Add d_uid,gid,mode & kind */ -#define D_VERSION D_VERSION_01 +#define D_VERSION_02 0x28042009 /* Add d_mmap_single */ +#define D_VERSION D_VERSION_02 /* * Flags used for internal housekeeping @@ -201,7 +205,7 @@ struct cdevsw { dumper_t *d_dump; d_kqfilter_t *d_kqfilter; d_purge_t *d_purge; - d_spare2_t *d_spare2; + d_mmap_single_t *d_mmap_single; uid_t d_uid; gid_t d_gid; mode_t d_mode; Modified: head/sys/vm/vm_mmap.c ============================================================================== --- head/sys/vm/vm_mmap.c Mon Jun 1 21:29:54 2009 (r193274) +++ head/sys/vm/vm_mmap.c Mon Jun 1 21:32:52 2009 (r193275) @@ -117,9 +117,9 @@ vmmapentry_rsrc_init(dummy) } static int vm_mmap_vnode(struct thread *, vm_size_t, vm_prot_t, vm_prot_t *, - int *, struct vnode *, vm_ooffset_t, vm_object_t *); + int *, struct vnode *, vm_ooffset_t *, vm_object_t *); static int vm_mmap_cdev(struct thread *, vm_size_t, vm_prot_t, vm_prot_t *, - int *, struct cdev *, vm_ooffset_t, vm_object_t *); + int *, struct cdev *, vm_ooffset_t *, vm_object_t *); static int vm_mmap_shm(struct thread *, vm_size_t, vm_prot_t, vm_prot_t *, int *, struct shmfd *, vm_ooffset_t, vm_object_t *); @@ -1142,15 +1142,14 @@ munlock(td, uap) int vm_mmap_vnode(struct thread *td, vm_size_t objsize, vm_prot_t prot, vm_prot_t *maxprotp, int *flagsp, - struct vnode *vp, vm_ooffset_t foff, vm_object_t *objp) + struct vnode *vp, vm_ooffset_t *foffp, vm_object_t *objp) { struct vattr va; - void *handle; vm_object_t obj; + vm_offset_t foff; struct mount *mp; - struct cdevsw *dsw; struct ucred *cred; - int error, flags, type; + int error, flags; int vfslocked; mp = vp->v_mount; @@ -1160,6 +1159,7 @@ vm_mmap_vnode(struct thread *td, vm_size VFS_UNLOCK_GIANT(vfslocked); return (error); } + foff = *foffp; flags = *flagsp; obj = vp->v_object; if (vp->v_type == VREG) { @@ -1175,41 +1175,12 @@ vm_mmap_vnode(struct thread *td, vm_size vp = (struct vnode*)obj->handle; vget(vp, LK_SHARED, td); } - type = OBJT_VNODE; - handle = vp; } else if (vp->v_type == VCHR) { - type = OBJT_DEVICE; - handle = vp->v_rdev; - - dsw = dev_refthread(handle); - if (dsw == NULL) { - error = ENXIO; - goto done; - } - if (dsw->d_flags & D_MMAP_ANON) { - dev_relthread(handle); - *maxprotp = VM_PROT_ALL; - *flagsp |= MAP_ANON; - error = 0; - goto done; - } - dev_relthread(handle); - /* - * cdevs does not provide private mappings of any kind. - */ - if ((*maxprotp & VM_PROT_WRITE) == 0 && - (prot & PROT_WRITE) != 0) { - error = EACCES; - goto done; - } - if (flags & (MAP_PRIVATE|MAP_COPY)) { - error = EINVAL; - goto done; - } - /* - * Force device mappings to be shared. - */ - flags |= MAP_SHARED; + error = vm_mmap_cdev(td, objsize, prot, maxprotp, flagsp, + vp->v_rdev, foffp, objp); + if (error == 0) + goto mark_atime; + goto done; } else { error = EINVAL; goto done; @@ -1235,18 +1206,18 @@ vm_mmap_vnode(struct thread *td, vm_size * we do not need to sync it. * Adjust object size to be the size of actual file. */ - if (vp->v_type == VREG) { - objsize = round_page(va.va_size); - if (va.va_nlink == 0) - flags |= MAP_NOSYNC; - } - obj = vm_pager_allocate(type, handle, objsize, prot, foff); + objsize = round_page(va.va_size); + if (va.va_nlink == 0) + flags |= MAP_NOSYNC; + obj = vm_pager_allocate(OBJT_VNODE, vp, objsize, prot, foff); if (obj == NULL) { - error = (type == OBJT_DEVICE ? EINVAL : ENOMEM); + error = ENOMEM; goto done; } *objp = obj; *flagsp = flags; + +mark_atime: vfs_mark_atime(vp, cred); done: @@ -1266,11 +1237,11 @@ done: int vm_mmap_cdev(struct thread *td, vm_size_t objsize, vm_prot_t prot, vm_prot_t *maxprotp, int *flagsp, - struct cdev *cdev, vm_ooffset_t foff, vm_object_t *objp) + struct cdev *cdev, vm_ooffset_t *foff, vm_object_t *objp) { vm_object_t obj; struct cdevsw *dsw; - int flags; + int error, flags; flags = *flagsp; @@ -1283,25 +1254,43 @@ vm_mmap_cdev(struct thread *td, vm_size_ *flagsp |= MAP_ANON; return (0); } - dev_relthread(cdev); /* - * cdevs does not provide private mappings of any kind. + * cdevs do not provide private mappings of any kind. */ if ((*maxprotp & VM_PROT_WRITE) == 0 && - (prot & PROT_WRITE) != 0) + (prot & PROT_WRITE) != 0) { + dev_relthread(cdev); return (EACCES); - if (flags & (MAP_PRIVATE|MAP_COPY)) + } + if (flags & (MAP_PRIVATE|MAP_COPY)) { + dev_relthread(cdev); return (EINVAL); + } /* * Force device mappings to be shared. */ flags |= MAP_SHARED; #ifdef MAC_XXX - error = mac_check_cdev_mmap(td->td_ucred, cdev, prot); - if (error != 0) + error = mac_cdev_check_mmap(td->td_ucred, cdev, prot); + if (error != 0) { + dev_relthread(cdev); return (error); + } #endif - obj = vm_pager_allocate(OBJT_DEVICE, cdev, objsize, prot, foff); + /* + * First, try d_mmap_single(). If that is not implemented + * (returns ENODEV), fall back to using the device pager. + * Note that d_mmap_single() must return a reference to the + * object (it needs to bump the reference count of the object + * it returns somehow). + * + * XXX assumes VM_PROT_* == PROT_* + */ + error = dsw->d_mmap_single(cdev, foff, objsize, objp, (int)prot); + dev_relthread(cdev); + if (error != ENODEV) + return (error); + obj = vm_pager_allocate(OBJT_DEVICE, cdev, objsize, prot, *foff); if (obj == NULL) return (EINVAL); *objp = obj; @@ -1396,11 +1385,11 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, switch (handle_type) { case OBJT_DEVICE: error = vm_mmap_cdev(td, size, prot, &maxprot, &flags, - handle, foff, &object); + handle, &foff, &object); break; case OBJT_VNODE: error = vm_mmap_vnode(td, size, prot, &maxprot, &flags, - handle, foff, &object); + handle, &foff, &object); break; case OBJT_SWAP: error = vm_mmap_shm(td, size, prot, &maxprot, &flags, From jhb at freebsd.org Mon Jun 1 21:36:02 2009 From: jhb at freebsd.org (John Baldwin) Date: Mon Jun 1 21:36:13 2009 Subject: svn commit: r193272 - in head/sys: dev/cxgb/ulp/iw_cxgb kern netgraph netgraph/bluetooth/socket netinet netsmb nfsclient nfsserver rpc sys In-Reply-To: <200906012117.n51LH3F8092452@svn.freebsd.org> References: <200906012117.n51LH3F8092452@svn.freebsd.org> Message-ID: <200906011734.06721.jhb@freebsd.org> On Monday 01 June 2009 5:17:03 pm John Baldwin wrote: > Author: jhb > Date: Mon Jun 1 21:17:03 2009 > New Revision: 193272 > URL: http://svn.freebsd.org/changeset/base/193272 > > Log: > Rework socket upcalls to close some races with setup/teardown of upcalls. > - The various RPC client upcalls currently drop the socket buffer lock > while invoking soreceive() as a temporary band-aid. The plan for > the future is to add a new flag to allow soreceive() to be called with > the socket buffer locked. Hopefully once this last bit is done, the various panics people have seen with the new NFS code in 8 will be fixed as they all seem to be due to races between socket upcall teardown and socket upcall invocations. -- John Baldwin From mav at FreeBSD.org Mon Jun 1 21:42:27 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Mon Jun 1 21:42:33 2009 Subject: svn commit: r193277 - in head/sys/dev/ata: . chipsets Message-ID: <200906012142.n51LgQrU093221@svn.freebsd.org> Author: mav Date: Mon Jun 1 21:42:26 2009 New Revision: 193277 URL: http://svn.freebsd.org/changeset/base/193277 Log: MFp4. Log supported AHCI controller capabilities. Modified: head/sys/dev/ata/ata-all.h head/sys/dev/ata/chipsets/ata-ahci.c Modified: head/sys/dev/ata/ata-all.h ============================================================================== --- head/sys/dev/ata/ata-all.h Mon Jun 1 21:38:44 2009 (r193276) +++ head/sys/dev/ata/ata-all.h Mon Jun 1 21:42:26 2009 (r193277) @@ -149,11 +149,26 @@ /* SATA AHCI v1.0 register defines */ #define ATA_AHCI_CAP 0x00 #define ATA_AHCI_CAP_NPMASK 0x0000001f +#define ATA_AHCI_CAP_SXS 0x00000020 +#define ATA_AHCI_CAP_EMS 0x00000040 +#define ATA_AHCI_CAP_CCCS 0x00000080 +#define ATA_AHCI_CAP_NCS 0x00001F00 +#define ATA_AHCI_CAP_NCS_SHIFT 8 #define ATA_AHCI_CAP_PSC 0x00002000 #define ATA_AHCI_CAP_SSC 0x00004000 +#define ATA_AHCI_CAP_PMD 0x00008000 +#define ATA_AHCI_CAP_FBSS 0x00010000 #define ATA_AHCI_CAP_SPM 0x00020000 -#define ATA_AHCI_CAP_CLO 0x01000000 +#define ATA_AHCI_CAP_SAM 0x00080000 +#define ATA_AHCI_CAP_ISS 0x00F00000 +#define ATA_AHCI_CAP_ISS_SHIFT 20 +#define ATA_AHCI_CAP_SCLO 0x01000000 +#define ATA_AHCI_CAP_SAL 0x02000000 #define ATA_AHCI_CAP_SALP 0x04000000 +#define ATA_AHCI_CAP_SSS 0x08000000 +#define ATA_AHCI_CAP_SMPS 0x10000000 +#define ATA_AHCI_CAP_SSNTF 0x20000000 +#define ATA_AHCI_CAP_SNCQ 0x40000000 #define ATA_AHCI_CAP_64BIT 0x80000000 #define ATA_AHCI_GHC 0x04 Modified: head/sys/dev/ata/chipsets/ata-ahci.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-ahci.c Mon Jun 1 21:38:44 2009 (r193276) +++ head/sys/dev/ata/chipsets/ata-ahci.c Mon Jun 1 21:42:26 2009 (r193277) @@ -101,8 +101,8 @@ int ata_ahci_chipinit(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(dev); - int error; - u_int32_t version; + int error, speed; + u_int32_t caps, version; /* if we have a memory BAR(5) we are likely on an AHCI part */ ctlr->r_type2 = SYS_RES_MEMORY; @@ -142,16 +142,45 @@ ata_ahci_chipinit(device_t dev) ctlr->suspend = ata_ahci_suspend; ctlr->resume = ata_ahci_ctlr_reset; - /* announce we support the HW */ - version = ATA_INL(ctlr->r_res2, ATA_AHCI_VS); - device_printf(dev, - "AHCI Version %x%x.%x%x controller with %d ports PM %s\n", - (version >> 24) & 0xff, (version >> 16) & 0xff, - (version >> 8) & 0xff, version & 0xff, - (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_CAP_NPMASK) + 1, - (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_CAP_SPM) ? - "supported" : "not supported"); - return 0; + /* announce we support the HW */ + version = ATA_INL(ctlr->r_res2, ATA_AHCI_VS); + caps = ATA_INL(ctlr->r_res2, ATA_AHCI_CAP); + speed = (caps & ATA_AHCI_CAP_ISS) >> ATA_AHCI_CAP_ISS_SHIFT; + device_printf(dev, + "AHCI v%x.%02x controller with %d %sGbps ports, PM %s\n", + ((version >> 20) & 0xf0) + ((version >> 16) & 0x0f), + ((version >> 4) & 0xf0) + (version & 0x0f), + (caps & ATA_AHCI_CAP_NPMASK) + 1, + ((speed == 1) ? "1.5":((speed == 2) ? "3": + ((speed == 3) ? "6":"?"))), + (caps & ATA_AHCI_CAP_SPM) ? + "supported" : "not supported"); + if (bootverbose) { + device_printf(dev, "Caps:%s%s%s%s%s%s%s%s %sGbps", + (caps & ATA_AHCI_CAP_64BIT) ? " 64bit":"", + (caps & ATA_AHCI_CAP_SNCQ) ? " NCQ":"", + (caps & ATA_AHCI_CAP_SSNTF) ? " SNTF":"", + (caps & ATA_AHCI_CAP_SMPS) ? " MPS":"", + (caps & ATA_AHCI_CAP_SSS) ? " SS":"", + (caps & ATA_AHCI_CAP_SALP) ? " ALP":"", + (caps & ATA_AHCI_CAP_SAL) ? " AL":"", + (caps & ATA_AHCI_CAP_SCLO) ? " CLO":"", + ((speed == 1) ? "1.5":((speed == 2) ? "3": + ((speed == 3) ? "6":"?")))); + printf("%s%s%s%s%s%s %dcmd%s%s%s %dports\n", + (caps & ATA_AHCI_CAP_SAM) ? " AM":"", + (caps & ATA_AHCI_CAP_SPM) ? " PM":"", + (caps & ATA_AHCI_CAP_FBSS) ? " FBS":"", + (caps & ATA_AHCI_CAP_PMD) ? " PMD":"", + (caps & ATA_AHCI_CAP_SSC) ? " SSC":"", + (caps & ATA_AHCI_CAP_PSC) ? " PSC":"", + ((caps & ATA_AHCI_CAP_NCS) >> ATA_AHCI_CAP_NCS_SHIFT) + 1, + (caps & ATA_AHCI_CAP_CCCS) ? " CCC":"", + (caps & ATA_AHCI_CAP_EMS) ? " EM":"", + (caps & ATA_AHCI_CAP_SXS) ? " eSATA":"", + (caps & ATA_AHCI_CAP_NPMASK) + 1); + } + return 0; } int @@ -625,7 +654,7 @@ ata_ahci_clo(device_t dev) int timeout; /* issue Command List Override if supported */ - if (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_CAP_CLO) { + if (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_CAP_SCLO) { cmd = ATA_INL(ctlr->r_res2, ATA_AHCI_P_CMD + offset); cmd |= ATA_AHCI_P_CMD_CLO; ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_CMD + offset, cmd); From jhb at FreeBSD.org Mon Jun 1 21:54:23 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Jun 1 21:54:35 2009 Subject: svn commit: r193278 - head/sys/dev/ksyms Message-ID: <200906012154.n51LsMA7093527@svn.freebsd.org> Author: jhb Date: Mon Jun 1 21:54:22 2009 New Revision: 193278 URL: http://svn.freebsd.org/changeset/base/193278 Log: Remove another d_thread_t use that crept in. Modified: head/sys/dev/ksyms/ksyms.c Modified: head/sys/dev/ksyms/ksyms.c ============================================================================== --- head/sys/dev/ksyms/ksyms.c Mon Jun 1 21:42:26 2009 (r193277) +++ head/sys/dev/ksyms/ksyms.c Mon Jun 1 21:54:22 2009 (r193278) @@ -552,7 +552,7 @@ ksyms_read(struct cdev *dev, struct uio /* ARGSUSED */ static int ksyms_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int32_t flag __unused, - d_thread_t *td __unused) + struct thread *td __unused) { int error = 0; struct ksyms_softc *sc; From gabor at FreeBSD.org Mon Jun 1 21:55:00 2009 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Mon Jun 1 21:55:12 2009 Subject: svn commit: r193279 - in head/usr.bin/ee: . nls/hu_HU.ISO8859-2 Message-ID: <200906012154.n51Lsx4M093571@svn.freebsd.org> Author: gabor (doc,ports committer) Date: Mon Jun 1 21:54:59 2009 New Revision: 193279 URL: http://svn.freebsd.org/changeset/base/193279 Log: - Add Hungarian catalog Added: head/usr.bin/ee/nls/hu_HU.ISO8859-2/ head/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg (contents, props changed) Modified: head/usr.bin/ee/Makefile Modified: head/usr.bin/ee/Makefile ============================================================================== --- head/usr.bin/ee/Makefile Mon Jun 1 21:54:22 2009 (r193278) +++ head/usr.bin/ee/Makefile Mon Jun 1 21:54:59 2009 (r193279) @@ -14,7 +14,7 @@ LDADD= -lncurses WARNS?= 2 NLS= en_US.US-ASCII fr_FR.ISO8859-1 de_DE.ISO8859-1 pl_PL.ISO8859-2 \ - uk_UA.KOI8-U ru_RU.KOI8-R + uk_UA.KOI8-U ru_RU.KOI8-R hu_HU.ISO8859-2 NLSLINKS_en_US.US-ASCII= en_US.ISO8859-1 en_US.ISO8859-15 NLSLINKS_fr_FR.ISO8859-1= fr_BE.ISO8859-1 fr_BE.ISO8859-15 \ Added: head/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg Mon Jun 1 21:54:59 2009 (r193279) @@ -0,0 +1,185 @@ +$ This file contains the messages for ee ("easy editor"). See the file +$ ee.i18n.guide for more information +$ +$ For ee patchlevel 3 +$ +$ $FreeBSD$ +$ +$ +$set 1 +$quote " +1 "üzemmód menü" +2 "tabulátorok szóközzé " +3 "kis- és nagybetû érzékeny keresés " +4 "margók megfigyelésre " +5 "automatikus bekezdésformázás " +6 "nyolcbites karakterek " +7 "info ablak " +8 "jobb margó " +9 "kilépés a menübõl " +10 "változtatások mentése" +11 "nincs mentés" +12 "fájl menü" +13 "fájl olvasása" +14 "fájl írása" +15 "fájl mentése" +16 "a szerkesztõ tartalmának nyomtatása" +17 "keresés menü" +18 "keresés erre" +19 "keresés" +20 "helyesírás menü" +21 "'spell' használata" +22 "'ispell' használata" +23 "egyéb menü" +24 "bekezdés formázása" +25 "shell parancs" +26 "helyesírás-ellenõrzés" +27 "fõmenü" +28 "kilépés a szerkesztõbõl" +29 "súgó" +30 "fájlmûveletek" +31 "képernyõ újrarajzolása" +32 "beállítások" +33 "keresés" +34 "egyéb" +35 "Vezérlõbillentyûk: " +36 "^a ascii kód ^i tabulátor ^r jobb " +37 "^b szöveg alja ^j újsor ^t szöveg teteje " +38 "^c parancs ^k karakter törlése ^u fel " +39 "^d le ^l balra ^v szótörlés vissza " +40 "^e keresés prompt ^m újsor ^w szó törlése " +41 "^f karaktertörlés vissza ^n következõ oldal ^x keresés " +42 "^g sor eleje ^o sor vége ^y sor törlése " +43 "^h visszatörlés ^p elõzõ oldal ^z sortörlés vissza " +44 "^[ (escape) menü " +45 " " +46 "Parancsok: " +47 "help : ez az info file : fájlnév megjelenítése " +48 "read : fájl olvasása char : karakter ascii kódja " +49 "write : fájl írása case : k/n betû érzékeny keresés" +50 "exit : kilépés és mentés nocase : nem betûérzékeny keresés " +51 "quit : kilépés mentés nélkül !cmd : \"cmd\" shell parancs " +52 "line : #. sor megjelenítése 0-9 : \"#\" sorra ugrás " +53 "expand : tabok kifejtése noexpand: ne fejtse ki a tabokat " +54 " " +55 " ee [+#] [-i] [-e] [-h] [fájl(ok) " +56 "+# :ugrás sorra # -i :info ablak ki -e :tabkifejtés ki -h :kiemelés ki" +57 "^[ (escape) menü ^e keresés prompt ^y sor törlése ^u fel ^p elõzõ old " +58 "^a ascii kód ^x keresés ^z sortörl vissza ^d le ^n köv old " +59 "^b szöve alja ^g sor eleje ^w szó törlése ^l bal " +60 "^t szöveg teteje ^o sor vége ^v szótörl vissza ^r jobb " +61 "^c parancs ^k karalter törl ^f kartörl vissza " +62 "help : súgó |file : fájlnév megjelenítése |line : sor # kiírása " +63 "read : fájl olvasása |char : ascii kód |0-9 : # sorra ugrás " +64 "write: fájl írása |case : k/n érzékeny keresés |exit : kilép és ment " +65 "!cmd : shell parancs |nocase: nem érzékeny keresés |quit : kilép, nem ment" +66 "expand: tabkifejtés |noexpand: ne legyen tabkifejtés " +67 " nyomja le az Escape billentyût (^[) a menü eléréséhez" +68 "nincs fájl" +69 "ascii kód: " +70 "a puffer tartalmának küldése -> \"%s\" " +71 "parancs: " +72 "a mentendõ fájl neve: " +73 "az olvasandó fájl neve: " +74 "karakter = %d" +75 "ismeretlen parancs: \"%s\"" +76 "a megadott parancs nem egyéni" +77 "sor %d " +78 "hossz = %d" +79 "az aktuális fájl \"%s\" " +80 "használat: %s [-i] [-e] [-h] [+sor_száma] [fájl(ok)]\n" +81 " -i info ablak kikapcsolása\n" +82 " -e ne konvertálja a tabokat szóközzé\n" +83 " -h ne használjon kiemelést\n" +84 "\"%s\" egy könyvtár" +85 "új fájl: \"%s\"" +86 "\"%s\" nem nyitható meg" +87 "\"%s\" fájl, %d sor" +88 "\"%s\" fájl olvasása befejezõdött" +89 "\"%s\" fájl olvasása" +90 ", csak olvasható" +91 "\"%s\" fájl, %d sor" +92 "adja meg a fájlnevet: " +93 "nem adott meg fájlnevet: a fájl nem lett elmentve" +94 "változások történtek, biztos benne? (i/n [n]) " +95 "i" +96 "a fájl már létezik, felülírjam? (i/n) [n] " +97 "\"%s\" fájl nem hozható létre" +98 "\"%s\" fájl írása" +99 "\"%s\" %d sor, %d karakter" +100 " ...keresés" +101 "\"%s\" karakterlánc nem található" +102 "keresés erre: " +103 "%s nem hajtható végre\n" +104 "nyomjon entert a folytatáshoz" +105 "nyomja le az Esc billentyût a visszalépéshez" +106 "a menü túl nagy az ablakhoz" +107 "nyomjon le egy billentyût a folytatáshoz" +108 "shell parancs: " +109 "...bekezdés formázása..." +110 " Author: dougb Date: Mon Jun 1 21:58:59 2009 New Revision: 193280 URL: http://svn.freebsd.org/changeset/base/193280 Log: Add support for the build options that are currently in the port: WITH_BIND_IDN WITH_BIND_LARGE_FILE WITH_BIND_SIGCHASE WITH_BIND_XML Added: head/tools/build/options/WITH_BIND_IDN (contents, props changed) head/tools/build/options/WITH_BIND_LARGE_FILE (contents, props changed) head/tools/build/options/WITH_BIND_SIGCHASE (contents, props changed) head/tools/build/options/WITH_BIND_XML (contents, props changed) Replaced: head/tools/build/options/WITH_BIND_LIBS (contents, props changed) Modified: head/lib/bind/config.mk head/share/mk/bsd.own.mk head/usr.bin/dig/Makefile head/usr.sbin/named/Makefile Modified: head/lib/bind/config.mk ============================================================================== --- head/lib/bind/config.mk Mon Jun 1 21:54:59 2009 (r193279) +++ head/lib/bind/config.mk Mon Jun 1 21:58:59 2009 (r193280) @@ -70,6 +70,19 @@ ISC_ATOMIC_ARCH= x86_32 ISC_ATOMIC_ARCH= ${MACHINE_ARCH} .endif +# Optional features +.if ${MK_BIND_LARGE_FILE} == "yes" +CFLAGS+= -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +.endif +.if ${MK_BIND_SIGCHASE} == "yes" +CFLAGS+= -DDIG_SIGCHASE +.endif +.if ${MK_BIND_XML} == "yes" +CFLAGS+= -DHAVE_LIBXML2 +CFLAGS+= -I/usr/local/include -I/usr/local/include/libxml2 +CFLAGS+= -L/usr/local/lib -lxml2 -lz -liconv -lm +.endif + # Link against BIND libraries .if ${MK_BIND_LIBS} == "no" LIBBIND9= ${LIB_BIND_REL}/bind9/libbind9.a Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Mon Jun 1 21:54:59 2009 (r193279) +++ head/share/mk/bsd.own.mk Mon Jun 1 21:58:59 2009 (r193280) @@ -402,7 +402,11 @@ MK_${var}:= yes # MK_* options which default to "no". # .for var in \ + BIND_IDN \ + BIND_LARGE_FILE \ BIND_LIBS \ + BIND_SIGCHASE \ + BIND_XML \ GNU_CPIO \ HESIOD \ IDEA Added: head/tools/build/options/WITH_BIND_IDN ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_BIND_IDN Mon Jun 1 21:58:59 2009 (r193280) @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to enable IDN support for dig, host, and nslookup. +This requires ports/dns/idnkit to be installed in /usr/local. Added: head/tools/build/options/WITH_BIND_LARGE_FILE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_BIND_LARGE_FILE Mon Jun 1 21:58:59 2009 (r193280) @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to enable 64-bit file support. Added: head/tools/build/options/WITH_BIND_LIBS ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_BIND_LIBS Mon Jun 1 21:58:59 2009 (r193280) @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to install BIND libraries and include files. Added: head/tools/build/options/WITH_BIND_SIGCHASE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_BIND_SIGCHASE Mon Jun 1 21:58:59 2009 (r193280) @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to enable DNSSEC validation support for dig, host, and nslookup. Added: head/tools/build/options/WITH_BIND_XML ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_BIND_XML Mon Jun 1 21:58:59 2009 (r193280) @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to enable the http statistics interface for named. +This requires ports/textproc/libxml2 to be installed in /usr/local. Modified: head/usr.bin/dig/Makefile ============================================================================== --- head/usr.bin/dig/Makefile Mon Jun 1 21:54:59 2009 (r193279) +++ head/usr.bin/dig/Makefile Mon Jun 1 21:58:59 2009 (r193280) @@ -15,6 +15,11 @@ SRCS+= dig.c dighost.c CFLAGS+= -I${SRCDIR}/include CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include +.if ${MK_BIND_IDN} == "yes" +CFLAGS+= -DWITH_IDN -I/usr/local/include +CFLAGS+= -L/usr/local/lib -lidnkit -R/usr/local/lib -liconv +.endif + DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} Modified: head/usr.sbin/named/Makefile ============================================================================== --- head/usr.sbin/named/Makefile Mon Jun 1 21:54:59 2009 (r193279) +++ head/usr.sbin/named/Makefile Mon Jun 1 21:58:59 2009 (r193280) @@ -9,7 +9,25 @@ SRCDIR= ${BIND_DIR}/bin/named PROG= named -CONFIGARGS='--prefix=/usr' '--without-libxml2' '--without-idn' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--enable-threads' '--disable-ipv6' '--enable-getifaddrs' '--disable-linux-caps' '--with-openssl=/usr' '--with-randomdev=/dev/random' +CONFIGARGS='--prefix=/usr' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--enable-threads' '--disable-ipv6' '--enable-getifaddrs' '--disable-linux-caps' '--with-openssl=/usr' '--with-randomdev=/dev/random' + +# Optional features +.if ${MK_BIND_LARGE_FILE} == "yes" +CONFIGARGS+='--enable-largefile' +.endif +.if ${MK_BIND_SIGCHASE} == "yes" +CONFIGARGS+='STD_CDEFINES=-DDIG_SIGCHASE=1' +.endif +.if ${MK_BIND_IDN} == "yes" +CONFIGARGS+='--with-idn=/usr/local' +.else +CONFIGARGS+='--without-idn' +.endif +.if ${MK_BIND_XML} == "yes" +CONFIGARGS+='--with-libxml2=/usr/local' +.else +CONFIGARGS+='--without-libxml2' +.endif .PATH: ${SRCDIR}/unix SRCS+= os.c From rpaulo at freebsd.org Mon Jun 1 22:01:50 2009 From: rpaulo at freebsd.org (Rui Paulo) Date: Mon Jun 1 22:02:02 2009 Subject: svn commit: r192925 - in head/sys/dev/usb: . input In-Reply-To: <200906011754.14349.hselasky@c2i.net> References: <200905271927.n4RJRUH8009289@svn.freebsd.org> <200906010749.37072.hselasky@c2i.net> <5C52056B-8E4A-4C15-8451-2A5576A8FC9F@freebsd.org> <200906011754.14349.hselasky@c2i.net> Message-ID: On 1 Jun 2009, at 16:54, Hans Petter Selasky wrote: > On Monday 01 June 2009, Rui Paulo wrote: >> Hi, >> >> On 1 Jun 2009, at 06:49, Hans Petter Selasky wrote: >>> On Monday 01 June 2009, Rui Paulo wrote: >>>> http://wiki.freebsd.org/AppleMacbook#head-7eab3730c3bf3d04bdfb0d1d3649ea >>>> ddf 2fed595 >>> >>> Hi Rui Paulo, >>> >>> Regarding the eject button, can you have a look at: >>> >>> /sys/dev/usb/input/ukbd.c >>> >>> And provide a patch that masks this key the way you want? >> >> I'm not sure what you mean. I'm proposing to remove the key handling >> code from the kernel. See the attached patch. > > Your patch looks OK. Make sure you test it before committing. I can't test it right now for various reasons. If anyone can test it, I would be glad. Regards, -- Rui Paulo -------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 194 bytes Desc: This is a digitally signed message part Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090601/91888f74/PGP.pgp From dougb at FreeBSD.org Mon Jun 1 22:05:09 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 22:05:15 2009 Subject: svn commit: r193281 - vendor/bind9/dist Message-ID: <200906012205.n51M58tO094031@svn.freebsd.org> Author: dougb Date: Mon Jun 1 22:05:08 2009 New Revision: 193281 URL: http://svn.freebsd.org/changeset/base/193281 Log: Update note about IDN and XML support, and combine it with the note about IPv6 support Fix alphebetization of the new dnssec-keyfromlabel directory Modified: vendor/bind9/dist/FREEBSD-Upgrade Modified: vendor/bind9/dist/FREEBSD-Upgrade ============================================================================== --- vendor/bind9/dist/FREEBSD-Upgrade Mon Jun 1 21:58:59 2009 (r193280) +++ vendor/bind9/dist/FREEBSD-Upgrade Mon Jun 1 22:05:08 2009 (r193281) @@ -63,9 +63,6 @@ 10) Generate and run configure: - NOTE: Disabling libxml and idn is temporary, adding support - for these features is planned. - aclocal ; autoheader ; autoconf $ ./configure --prefix=/usr \ --without-libxml2 --without-idn \ @@ -74,9 +71,10 @@ --enable-getifaddrs --disable-linux-caps \ --with-openssl=/usr --with-randomdev=/dev/random - Note that we intentionally disable IPv6 support on the configure - command line; src/lib/bind/config.mk will re-enable it at compile - time if WITHOUT_INET6 is not defined. + NOTE: Disabling libxml, idn, and IPv6 is the default. + Knobs are provided for users to enabled the first 2, and + src/lib/bind/config.mk will re-enable IPv6 at compile + time if WITHOUT_INET6 is not defined. 11) Copy the following generated files to src/lib/bind: @@ -113,8 +111,8 @@ src/usr.bin/nslookup bind9/bin/dig src/usr.bin/nsupdate bind9/bin/nsupdate src/usr.sbin/dnssec-dsfromkey bind9/bin/dnssec - src/usr.sbin/dnssec-keygen bind9/bin/dnssec src/usr.sbin/dnssec-keyfromlabel bind9/bin/dnssec + src/usr.sbin/dnssec-keygen bind9/bin/dnssec src/usr.sbin/dnssec-signzone bind9/bin/dnssec src/usr.sbin/named bind9/bin/named src/usr.sbin/named-checkconf bind9/bin/check From kmacy at FreeBSD.org Mon Jun 1 22:09:43 2009 From: kmacy at FreeBSD.org (Kip Macy) Date: Mon Jun 1 22:09:54 2009 Subject: svn commit: r193282 - stable/7/sys/libkern Message-ID: <200906012209.n51M9gTU094161@svn.freebsd.org> Author: kmacy Date: Mon Jun 1 22:09:42 2009 New Revision: 193282 URL: http://svn.freebsd.org/changeset/base/193282 Log: memmove is defined in support.S on arm - don't compile in Modified: stable/7/sys/libkern/memmove.c Modified: stable/7/sys/libkern/memmove.c ============================================================================== --- stable/7/sys/libkern/memmove.c Mon Jun 1 22:05:08 2009 (r193281) +++ stable/7/sys/libkern/memmove.c Mon Jun 1 22:09:42 2009 (r193282) @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include +#if !defined(__arm__) void * memmove(void *dest, const void *src, size_t n) { @@ -36,3 +37,4 @@ memmove(void *dest, const void *src, siz bcopy(src, dest, n); return (dest); } +#endif From dougb at FreeBSD.org Mon Jun 1 22:14:46 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 22:14:58 2009 Subject: svn commit: r193283 - head/share/man/man5 Message-ID: <200906012214.n51MEk75094369@svn.freebsd.org> Author: dougb Date: Mon Jun 1 22:14:45 2009 New Revision: 193283 URL: http://svn.freebsd.org/changeset/base/193283 Log: Commit the updates to this file for the new BIND options Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Mon Jun 1 22:09:42 2009 (r193282) +++ head/share/man/man5/src.conf.5 Mon Jun 1 22:14:45 2009 (r193283) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 188848 2009-02-20 11:09:55Z mtm .\" $FreeBSD$ -.Dd April 5, 2009 +.Dd June 1, 2009 .Dt SRC.CONF 5 .Os .Sh NAME @@ -150,8 +150,15 @@ and .\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_ETC 156932 2006-03-21 07:50:50Z ru Set to avoid installing the default files to .Pa /var/named/etc/namedb . +.It Va WITH_BIND_IDN +.\" from FreeBSD: head/tools/build/options/WITH_BIND_IDN 193280 2009-06-01 21:58:59Z dougb +Set to enable IDN support for dig, host, and nslookup. +This requires ports/dns/idnkit to be installed in /usr/local. +.It Va WITH_BIND_LARGE_FILE +.\" from FreeBSD: head/tools/build/options/WITH_BIND_LARGE_FILE 193280 2009-06-01 21:58:59Z dougb +Set to enable 64-bit file support. .It Va WITH_BIND_LIBS -.\" from FreeBSD: head/tools/build/options/WITH_BIND_LIBS 156932 2006-03-21 07:50:50Z ru +.\" from FreeBSD: head/tools/build/options/WITH_BIND_LIBS 193280 2009-06-01 21:58:59Z dougb Set to install BIND libraries and include files. .It Va WITHOUT_BIND_LIBS_LWRES .\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_LIBS_LWRES 156932 2006-03-21 07:50:50Z ru @@ -182,6 +189,9 @@ Set to avoid building or installing .Xr rndc 8 , and .Xr rndc-confgen 8 . +.It Va WITH_BIND_SIGCHASE +.\" from FreeBSD: head/tools/build/options/WITH_BIND_SIGCHASE 193280 2009-06-01 21:58:59Z dougb +Set to enable DNSSEC validation support for dig, host, and nslookup. .It Va WITHOUT_BIND_UTILS .\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_UTILS 156932 2006-03-21 07:50:50Z ru Set to avoid building or installing the BIND userland utilities, @@ -190,6 +200,10 @@ Set to avoid building or installing the .Xr nslookup 1 , and .Xr nsupdate 8 . +.It Va WITH_BIND_XML +.\" from FreeBSD: head/tools/build/options/WITH_BIND_XML 193280 2009-06-01 21:58:59Z dougb +Set to enable the http statistics interface for named. +This requires ports/textproc/libxml2 to be installed in /usr/local. .It Va WITHOUT_BLUETOOTH .\" from FreeBSD: head/tools/build/options/WITHOUT_BLUETOOTH 156932 2006-03-21 07:50:50Z ru Set to not build Bluetooth related kernel modules, programs and libraries. From dougb at FreeBSD.org Mon Jun 1 22:48:01 2009 From: dougb at FreeBSD.org (Doug Barton) Date: Mon Jun 1 22:48:07 2009 Subject: svn commit: r193285 - head Message-ID: <200906012248.n51Mm0ED095111@svn.freebsd.org> Author: dougb Date: Mon Jun 1 22:47:59 2009 New Revision: 193285 URL: http://svn.freebsd.org/changeset/base/193285 Log: Add a note about the change to rcorder for pf and ipfw. Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Mon Jun 1 22:34:09 2009 (r193284) +++ head/UPDATING Mon Jun 1 22:47:59 2009 (r193285) @@ -33,6 +33,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. rebuilt. Bump __FreeBSD_version to 800096. +20090531: + For those who use ipfw and especially pf, those two firewalls + are now started BEFORE the network is initialized (i.e., before + rc.d/netif). Please review your rules to make sure that your + interfaces will be properly described. + 20090530: Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no more valid. From sobomax at FreeBSD.org Mon Jun 1 23:27:40 2009 From: sobomax at FreeBSD.org (Maxim Sobolev) Date: Mon Jun 1 23:27:56 2009 Subject: svn: stable/7: lib/libc/i386/stdlib lib/libc/i386/string lib/libc_r/arch/amd64 lib/libc_r/arch/i386 lib/libstand/i386 lib/msun/amd64 lib/msun/i387 lib/msun/ia64 tools/KSE/ksetes... In-Reply-To: <200905302327.n4UNRmxV022733@svn.freebsd.org> References: <200905302327.n4UNRmxV022733@svn.freebsd.org> Message-ID: <4A245D67.8020908@FreeBSD.org> Attilio Rao wrote: > Author: attilio > Date: Sat May 30 23:27:48 2009 > New Revision: 193134 > URL: http://svn.freebsd.org/changeset/base/193134 > > Log: > MFC r192760: > Use the END() macro appropriately in order to improve debugging for > tools (Valgrind mainly). > > Modified: stable/7/lib/libc/i386/stdlib/ldiv.S > ============================================================================== > --- stable/7/lib/libc/i386/stdlib/ldiv.S Sat May 30 23:01:27 2009 (r193133) > +++ stable/7/lib/libc/i386/stdlib/ldiv.S Sat May 30 23:27:48 2009 (r193134) > @@ -40,3 +40,4 @@ ENTRY(ldiv) > movl %edx,8(%esp) > ret > END(ldiv) > +END(ldiv) > > Modified: stable/7/lib/libc/i386/string/wcscmp.S > ============================================================================== > --- stable/7/lib/libc/i386/string/wcscmp.S Sat May 30 23:01:27 2009 (r193133) > +++ stable/7/lib/libc/i386/string/wcscmp.S Sat May 30 23:27:48 2009 (r193134) > @@ -78,3 +78,4 @@ no0: subl (%esi),%eax > popl %edi > ret > END(wcscmp) > +END(wcscmp) Are those double-ENDs intentional? -Maxim From attilio at freebsd.org Mon Jun 1 23:51:15 2009 From: attilio at freebsd.org (Attilio Rao) Date: Mon Jun 1 23:51:26 2009 Subject: svn: stable/7: lib/libc/i386/stdlib lib/libc/i386/string lib/libc_r/arch/amd64 lib/libc_r/arch/i386 lib/libstand/i386 lib/msun/amd64 lib/msun/i387 lib/msun/ia64 tools/KSE/ksetes... In-Reply-To: <4A245D67.8020908@FreeBSD.org> References: <200905302327.n4UNRmxV022733@svn.freebsd.org> <4A245D67.8020908@FreeBSD.org> Message-ID: <3bbf2fe10906011651qdce77a2ya4ac09922308217d@mail.gmail.com> 2009/6/2 Maxim Sobolev : > Attilio Rao wrote: >> >> Author: attilio >> Date: Sat May 30 23:27:48 2009 >> New Revision: 193134 >> URL: http://svn.freebsd.org/changeset/base/193134 >> >> Log: >> MFC r192760: >> Use the END() macro appropriately in order to improve debugging for >> tools (Valgrind mainly). >> >> Modified: stable/7/lib/libc/i386/stdlib/ldiv.S >> >> ============================================================================== >> --- stable/7/lib/libc/i386/stdlib/ldiv.S Sat May 30 23:01:27 2009 >> (r193133) >> +++ stable/7/lib/libc/i386/stdlib/ldiv.S Sat May 30 23:27:48 2009 >> (r193134) >> @@ -40,3 +40,4 @@ ENTRY(ldiv) >> movl %edx,8(%esp) >> ret >> END(ldiv) >> +END(ldiv) >> >> Modified: stable/7/lib/libc/i386/string/wcscmp.S >> >> ============================================================================== >> --- stable/7/lib/libc/i386/string/wcscmp.S Sat May 30 23:01:27 2009 >> (r193133) >> +++ stable/7/lib/libc/i386/string/wcscmp.S Sat May 30 23:27:48 2009 >> (r193134) >> @@ -78,3 +78,4 @@ no0: subl (%esi),%eax >> popl %edi >> ret >> END(wcscmp) >> +END(wcscmp) > > Are those double-ENDs intentional? No, thanks for catching them. Attilio -- Peace can only be achieved by understanding - A. Einstein From attilio at FreeBSD.org Mon Jun 1 23:53:16 2009 From: attilio at FreeBSD.org (Attilio Rao) Date: Mon Jun 1 23:53:34 2009 Subject: svn commit: r193286 - in stable/7/lib/libc/i386: stdlib string Message-ID: <200906012353.n51NrFAd096363@svn.freebsd.org> Author: attilio Date: Mon Jun 1 23:53:15 2009 New Revision: 193286 URL: http://svn.freebsd.org/changeset/base/193286 Log: Remove double-inserted END() macros. Reported by: sobomax Modified: stable/7/lib/libc/i386/stdlib/ldiv.S stable/7/lib/libc/i386/string/wcscmp.S Modified: stable/7/lib/libc/i386/stdlib/ldiv.S ============================================================================== --- stable/7/lib/libc/i386/stdlib/ldiv.S Mon Jun 1 22:47:59 2009 (r193285) +++ stable/7/lib/libc/i386/stdlib/ldiv.S Mon Jun 1 23:53:15 2009 (r193286) @@ -40,4 +40,3 @@ ENTRY(ldiv) movl %edx,8(%esp) ret END(ldiv) -END(ldiv) Modified: stable/7/lib/libc/i386/string/wcscmp.S ============================================================================== --- stable/7/lib/libc/i386/string/wcscmp.S Mon Jun 1 22:47:59 2009 (r193285) +++ stable/7/lib/libc/i386/string/wcscmp.S Mon Jun 1 23:53:15 2009 (r193286) @@ -78,4 +78,3 @@ no0: subl (%esi),%eax popl %edi ret END(wcscmp) -END(wcscmp) From sam at FreeBSD.org Tue Jun 2 00:04:11 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Tue Jun 2 00:04:23 2009 Subject: svn commit: r193287 - head/sys/net80211 Message-ID: <200906020004.n5204AYY096634@svn.freebsd.org> Author: sam Date: Tue Jun 2 00:04:10 2009 New Revision: 193287 URL: http://svn.freebsd.org/changeset/base/193287 Log: count packets Modified: head/sys/net80211/ieee80211_monitor.c Modified: head/sys/net80211/ieee80211_monitor.c ============================================================================== --- head/sys/net80211/ieee80211_monitor.c Mon Jun 1 23:53:15 2009 (r193286) +++ head/sys/net80211/ieee80211_monitor.c Tue Jun 2 00:04:10 2009 (r193287) @@ -127,6 +127,9 @@ static int monitor_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; + struct ifnet *ifp = vap->iv_ifp; + + ifp->if_ipackets++; if (ieee80211_radiotap_active_vap(vap)) ieee80211_radiotap_rx(vap, m); From sam at FreeBSD.org Tue Jun 2 00:06:40 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Tue Jun 2 00:06:46 2009 Subject: svn commit: r193288 - head/sys/net80211 Message-ID: <200906020006.n5206d51096716@svn.freebsd.org> Author: sam Date: Tue Jun 2 00:06:39 2009 New Revision: 193288 URL: http://svn.freebsd.org/changeset/base/193288 Log: don't dispatch frames to vap's not running Modified: head/sys/net80211/ieee80211_input.c Modified: head/sys/net80211/ieee80211_input.c ============================================================================== --- head/sys/net80211/ieee80211_input.c Tue Jun 2 00:04:10 2009 (r193287) +++ head/sys/net80211/ieee80211_input.c Tue Jun 2 00:06:39 2009 (r193288) @@ -65,6 +65,9 @@ ieee80211_input_all(struct ieee80211com struct ieee80211_node *ni; struct mbuf *mcopy; + /* NB: could check for IFF_UP but this is cheaper */ + if (vap->iv_state == IEEE80211_S_INIT) + continue; /* * WDS vap's only receive directed traffic from the * station at the ``far end''. That traffic should From yongari at FreeBSD.org Tue Jun 2 00:21:31 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 00:21:42 2009 Subject: svn commit: r193289 - head/sys/dev/mii Message-ID: <200906020021.n520LVHR097034@svn.freebsd.org> Author: yongari Date: Tue Jun 2 00:21:30 2009 New Revision: 193289 URL: http://svn.freebsd.org/changeset/base/193289 Log: Don't assume page register value is 0 and restore previous page register after issuing 'powerup'. Modified: head/sys/dev/mii/e1000phy.c Modified: head/sys/dev/mii/e1000phy.c ============================================================================== --- head/sys/dev/mii/e1000phy.c Tue Jun 2 00:06:39 2009 (r193288) +++ head/sys/dev/mii/e1000phy.c Tue Jun 2 00:21:30 2009 (r193289) @@ -239,11 +239,13 @@ e1000phy_reset(struct mii_softc *sc) PHY_WRITE(sc, E1000_SCR, reg); if (esc->mii_model == MII_MODEL_MARVELL_E1116) { + page = PHY_READ(sc, E1000_EADR); + /* Select page 2, MAC specific control register. */ PHY_WRITE(sc, E1000_EADR, 2); reg = PHY_READ(sc, E1000_SCR); reg |= E1000_SCR_RGMII_POWER_UP; PHY_WRITE(sc, E1000_SCR, reg); - PHY_WRITE(sc, E1000_EADR, 0); + PHY_WRITE(sc, E1000_EADR, page); } } From yongari at FreeBSD.org Tue Jun 2 00:30:31 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 00:30:38 2009 Subject: svn commit: r193291 - head/sys/dev/mii Message-ID: <200906020030.n520UV0K097289@svn.freebsd.org> Author: yongari Date: Tue Jun 2 00:30:30 2009 New Revision: 193291 URL: http://svn.freebsd.org/changeset/base/193291 Log: Program LED registers for 88E1116/88E1149 PHYs. These PHYs are found on Marvell Yukon Ultra, Marvell Yukon Extreme controllers. While I'm here explicitly issue 'powerup' command for 88E1149 PHY. Tested by: jhb, Warren Block ( wblock <> wonkity dot com ) Modified: head/sys/dev/mii/e1000phy.c head/sys/dev/mii/e1000phyreg.h Modified: head/sys/dev/mii/e1000phy.c ============================================================================== --- head/sys/dev/mii/e1000phy.c Tue Jun 2 00:21:47 2009 (r193290) +++ head/sys/dev/mii/e1000phy.c Tue Jun 2 00:30:30 2009 (r193291) @@ -238,7 +238,8 @@ e1000phy_reset(struct mii_softc *sc) } PHY_WRITE(sc, E1000_SCR, reg); - if (esc->mii_model == MII_MODEL_MARVELL_E1116) { + if (esc->mii_model == MII_MODEL_MARVELL_E1116 || + esc->mii_model == MII_MODEL_MARVELL_E1149) { page = PHY_READ(sc, E1000_EADR); /* Select page 2, MAC specific control register. */ PHY_WRITE(sc, E1000_EADR, 2); @@ -252,9 +253,22 @@ e1000phy_reset(struct mii_softc *sc) switch (MII_MODEL(esc->mii_model)) { case MII_MODEL_MARVELL_E3082: case MII_MODEL_MARVELL_E1112: - case MII_MODEL_MARVELL_E1116: case MII_MODEL_MARVELL_E1118: + break; + case MII_MODEL_MARVELL_E1116: case MII_MODEL_MARVELL_E1149: + page = PHY_READ(sc, E1000_EADR); + /* Select page 3, LED control register. */ + PHY_WRITE(sc, E1000_EADR, 3); + PHY_WRITE(sc, E1000_SCR, + E1000_SCR_LED_LOS(1) | /* Link/Act */ + E1000_SCR_LED_INIT(8) | /* 10Mbps */ + E1000_SCR_LED_STAT1(7) | /* 100Mbps */ + E1000_SCR_LED_STAT0(7)); /* 1000Mbps */ + /* Set blink rate. */ + PHY_WRITE(sc, E1000_IER, E1000_PULSE_DUR(E1000_PULSE_170MS) | + E1000_BLINK_RATE(E1000_BLINK_84MS)); + PHY_WRITE(sc, E1000_EADR, page); break; case MII_MODEL_MARVELL_E3016: /* LED2 -> ACT, LED1 -> LINK, LED0 -> SPEED. */ Modified: head/sys/dev/mii/e1000phyreg.h ============================================================================== --- head/sys/dev/mii/e1000phyreg.h Tue Jun 2 00:21:47 2009 (r193290) +++ head/sys/dev/mii/e1000phyreg.h Tue Jun 2 00:30:30 2009 (r193291) @@ -256,9 +256,19 @@ /* 88E1116 page 0 */ #define E1000_SCR_POWER_DOWN 0x0004 -/* 88E1116 page 2 */ +/* 88E1116, 88E1149 page 2 */ #define E1000_SCR_RGMII_POWER_UP 0x0008 +/* 88E1116, 88E1149 page 3 */ +#define E1000_SCR_LED_STAT0_MASK 0x000F +#define E1000_SCR_LED_STAT1_MASK 0x00F0 +#define E1000_SCR_LED_INIT_MASK 0x0F00 +#define E1000_SCR_LED_LOS_MASK 0xF000 +#define E1000_SCR_LED_STAT0(x) ((x) & E1000_SCR_LED_STAT0_MASK) +#define E1000_SCR_LED_STAT1(x) ((x) & E1000_SCR_LED_STAT1_MASK) +#define E1000_SCR_LED_INIT(x) ((x) & E1000_SCR_LED_INIT_MASK) +#define E1000_SCR_LED_LOS(x) ((x) & E1000_SCR_LED_LOS_MASK) + #define E1000_SSR 0x11 /* special status register */ #define E1000_SSR_JABBER 0x0001 #define E1000_SSR_REV_POLARITY 0x0002 @@ -286,6 +296,26 @@ #define E1000_IER_SPEED_CHANGED 0x4000 #define E1000_IER_AUTO_NEG_ERR 0x8000 +/* 88E1116, 88E1149 page 3, LED timer control. */ +#define E1000_PULSE_MASK 0x7000 +#define E1000_PULSE_NO_STR 0 /* no pulse stretching */ +#define E1000_PULSE_21MS 1 /* 21 ms to 42 ms */ +#define E1000_PULSE_42MS 2 /* 42 ms to 84 ms */ +#define E1000_PULSE_84MS 3 /* 84 ms to 170 ms */ +#define E1000_PULSE_170MS 4 /* 170 ms to 340 ms */ +#define E1000_PULSE_340MS 5 /* 340 ms to 670 ms */ +#define E1000_PULSE_670MS 6 /* 670 ms to 1300 ms */ +#define E1000_PULSE_1300MS 7 /* 1300 ms to 2700 ms */ +#define E1000_PULSE_DUR(x) ((x) & E1000_PULSE_MASK) + +#define E1000_BLINK_MASK 0x0700 +#define E1000_BLINK_42MS 0 /* 42 ms */ +#define E1000_BLINK_84MS 1 /* 84 ms */ +#define E1000_BLINK_170MS 2 /* 170 ms */ +#define E1000_BLINK_340MS 3 /* 340 ms */ +#define E1000_BLINK_670MS 4 /* 670 ms */ +#define E1000_BLINK_RATE(x) ((x) & E1000_BLINK_MASK) + #define E1000_ISR 0x13 /* interrupt status reg */ #define E1000_ISR_JABBER 0x0001 #define E1000_ISR_POLARITY_CHANGE 0x0002 From sam at FreeBSD.org Tue Jun 2 00:33:29 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Tue Jun 2 00:33:36 2009 Subject: svn commit: r193292 - head/sys/net80211 Message-ID: <200906020033.n520XSbb097397@svn.freebsd.org> Author: sam Date: Tue Jun 2 00:33:28 2009 New Revision: 193292 URL: http://svn.freebsd.org/changeset/base/193292 Log: Fix monitor mode vaps to work as intended: o track # bpf taps on monitor mode vaps instead of # monitor mode vaps o spam monitor mode taps on tx/rx o fix ieee80211_radiotap_rx_all to dispatch frames only if the vap is up o while here print radiotap (and superg) state in show com Modified: head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_ddb.c head/sys/net80211/ieee80211_freebsd.c head/sys/net80211/ieee80211_hostap.c head/sys/net80211/ieee80211_input.c head/sys/net80211/ieee80211_radiotap.c head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211.c Tue Jun 2 00:33:28 2009 (r193292) @@ -513,8 +513,6 @@ ieee80211_vap_attach(struct ieee80211vap IEEE80211_LOCK(ic); TAILQ_INSERT_TAIL(&ic->ic_vaps, vap, iv_next); - if (vap->iv_opmode == IEEE80211_M_MONITOR) - ic->ic_monvaps++; ieee80211_syncflag_locked(ic, IEEE80211_F_WME); #ifdef IEEE80211_SUPPORT_SUPERG ieee80211_syncflag_locked(ic, IEEE80211_F_TURBOP); @@ -575,8 +573,6 @@ ieee80211_vap_detach(struct ieee80211vap IEEE80211_LOCK(ic); KASSERT(vap->iv_state == IEEE80211_S_INIT , ("vap still running")); TAILQ_REMOVE(&ic->ic_vaps, vap, iv_next); - if (vap->iv_opmode == IEEE80211_M_MONITOR) - ic->ic_monvaps--; ieee80211_syncflag_locked(ic, IEEE80211_F_WME); #ifdef IEEE80211_SUPPORT_SUPERG ieee80211_syncflag_locked(ic, IEEE80211_F_TURBOP); Modified: head/sys/net80211/ieee80211_ddb.c ============================================================================== --- head/sys/net80211/ieee80211_ddb.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_ddb.c Tue Jun 2 00:33:28 2009 (r193292) @@ -584,6 +584,11 @@ _db_show_com(const struct ieee80211com * db_printf(" lastnonht %d", ic->ic_lastnonht); db_printf("\n"); + db_printf("\tsuperg %p\n", ic->ic_superg); + + db_printf("\tmontaps %d th %p txchan %p rh %p rxchan %p\n", + ic->ic_montaps, ic->ic_th, ic->ic_txchan, ic->ic_rh, ic->ic_rxchan); + if (showprocs) { DB_PRINTSYM("\t", "ic_vap_create", ic->ic_vap_create); DB_PRINTSYM("\t", "ic_vap_delete", ic->ic_vap_delete); Modified: head/sys/net80211/ieee80211_freebsd.c ============================================================================== --- head/sys/net80211/ieee80211_freebsd.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_freebsd.c Tue Jun 2 00:33:28 2009 (r193292) @@ -706,11 +706,16 @@ bpf_track(void *arg, struct ifnet *ifp, * vap. This flag is used by drivers to prepare radiotap * state only when needed. */ - if (attach) + if (attach) { ieee80211_syncflag_ext(vap, IEEE80211_FEXT_BPF); + if (vap->iv_opmode == IEEE80211_M_MONITOR) + atomic_add_int(&vap->iv_ic->ic_montaps, 1); /* NB: if_softc is NULL on vap detach */ - else if (vap != NULL && !bpf_peers_present(vap->iv_rawbpf)) + } else if (vap != NULL && !bpf_peers_present(vap->iv_rawbpf)) { ieee80211_syncflag_ext(vap, -IEEE80211_FEXT_BPF); + if (vap->iv_opmode == IEEE80211_M_MONITOR) + atomic_subtract_int(&vap->iv_ic->ic_montaps, 1); + } } } Modified: head/sys/net80211/ieee80211_hostap.c ============================================================================== --- head/sys/net80211/ieee80211_hostap.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_hostap.c Tue Jun 2 00:33:28 2009 (r193292) @@ -302,6 +302,9 @@ hostap_deliver_data(struct ieee80211vap struct ether_header *eh = mtod(m, struct ether_header *); struct ifnet *ifp = vap->iv_ifp; + /* clear driver/net80211 flags before passing up */ + m->m_flags &= ~(M_80211_RX | M_MCAST | M_BCAST); + KASSERT(vap->iv_opmode == IEEE80211_M_HOSTAP, ("gack, opmode %d", vap->iv_opmode)); /* @@ -316,9 +319,6 @@ hostap_deliver_data(struct ieee80211vap } else IEEE80211_NODE_STAT(ni, rx_ucast); - /* clear driver/net80211 flags before passing up */ - m->m_flags &= ~M_80211_RX; - /* perform as a bridge within the AP */ if ((vap->iv_flags & IEEE80211_F_NOBRIDGE) == 0) { struct mbuf *mcopy = NULL; Modified: head/sys/net80211/ieee80211_input.c ============================================================================== --- head/sys/net80211/ieee80211_input.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_input.c Tue Jun 2 00:33:28 2009 (r193292) @@ -60,6 +60,8 @@ ieee80211_input_all(struct ieee80211com struct ieee80211vap *vap; int type = -1; + m->m_flags |= M_BCAST; /* NB: mark for bpf tap'ing */ + /* XXX locking */ TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { struct ieee80211_node *ni; @@ -199,6 +201,9 @@ ieee80211_deliver_data(struct ieee80211v struct ether_header *eh = mtod(m, struct ether_header *); struct ifnet *ifp = vap->iv_ifp; + /* clear driver/net80211 flags before passing up */ + m->m_flags &= ~(M_80211_RX | M_MCAST | M_BCAST); + /* NB: see hostap_deliver_data, this path doesn't handle hostap */ KASSERT(vap->iv_opmode != IEEE80211_M_HOSTAP, ("gack, hostap")); /* @@ -214,9 +219,6 @@ ieee80211_deliver_data(struct ieee80211v IEEE80211_NODE_STAT(ni, rx_ucast); m->m_pkthdr.rcvif = ifp; - /* clear driver/net80211 flags before passing up */ - m->m_flags &= ~M_80211_RX; - if (ni->ni_vlan != 0) { /* attach vlan tag */ m->m_pkthdr.ether_vtag = ni->ni_vlan; Modified: head/sys/net80211/ieee80211_radiotap.c ============================================================================== --- head/sys/net80211/ieee80211_radiotap.c Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_radiotap.c Tue Jun 2 00:33:28 2009 (r193292) @@ -168,6 +168,7 @@ ieee80211_radiotap_chan_change(struct ie } } +#if 0 static void dispatch_radiotap(struct ieee80211vap *vap0, struct mbuf *m, struct ieee80211_radiotap_header *rh) @@ -175,17 +176,46 @@ dispatch_radiotap(struct ieee80211vap *v struct ieee80211com *ic = vap0->iv_ic; int len = le16toh(rh->it_len); - if (ieee80211_radiotap_active_vap(vap0)) + if (vap0->iv_flags_ext & IEEE80211_FEXT_BPF) bpf_mtap2(vap0->iv_rawbpf, rh, len, m); - if (ic->ic_monvaps) { + /* + * Spam monitor mode vaps with unicast frames. Multicast + * frames are handled by passing through ieee80211_input_all + * which distributes copies to the monitor mode vaps to be + * processed above. + */ + if (ic->ic_montaps != 0 && (m->m_flags & M_BCAST) == 0) { struct ieee80211vap *vap; TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { - if (vap->iv_opmode == IEEE80211_M_MONITOR && - vap != vap0 && ieee80211_radiotap_active_vap(vap)) + if (vap != vap0 && + vap->iv_opmode == IEEE80211_M_MONITOR && + (vap->iv_flags_ext & IEEE80211_FEXT_BPF) && + vap->iv_state != IEEE80211_S_INIT) bpf_mtap2(vap->iv_rawbpf, rh, len, m); } } } +#endif + +/* + * Distribute radiotap data (+packet) to all monitor mode + * vaps with an active tap other than vap0. + */ +static void +spam_vaps(struct ieee80211vap *vap0, struct mbuf *m, + struct ieee80211_radiotap_header *rh, int len) +{ + struct ieee80211com *ic = vap0->iv_ic; + struct ieee80211vap *vap; + + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + if (vap != vap0 && + vap->iv_opmode == IEEE80211_M_MONITOR && + (vap->iv_flags_ext & IEEE80211_FEXT_BPF) && + vap->iv_state != IEEE80211_S_INIT) + bpf_mtap2(vap->iv_rawbpf, rh, len, m); + } +} /* * Dispatch radiotap data for transmitted packet. @@ -193,8 +223,20 @@ dispatch_radiotap(struct ieee80211vap *v void ieee80211_radiotap_tx(struct ieee80211vap *vap0, struct mbuf *m) { - KASSERT(vap0->iv_ic->ic_th != NULL, ("no tx radiotap header")); - dispatch_radiotap(vap0, m, vap0->iv_ic->ic_th); + struct ieee80211com *ic = vap0->iv_ic; + struct ieee80211_radiotap_header *th = ic->ic_th; + int len; + + KASSERT(th != NULL, ("no tx radiotap header")); + len = le16toh(th->it_len); + + if (vap0->iv_flags_ext & IEEE80211_FEXT_BPF) + bpf_mtap2(vap0->iv_rawbpf, th, len, m); + /* + * Spam monitor mode vaps. + */ + if (ic->ic_montaps != 0) + spam_vaps(vap0, m, th, len); } /* @@ -203,8 +245,22 @@ ieee80211_radiotap_tx(struct ieee80211va void ieee80211_radiotap_rx(struct ieee80211vap *vap0, struct mbuf *m) { - KASSERT(vap0->iv_ic->ic_rh != NULL, ("no rx radiotap header")); - dispatch_radiotap(vap0, m, vap0->iv_ic->ic_rh); + struct ieee80211com *ic = vap0->iv_ic; + struct ieee80211_radiotap_header *rh = ic->ic_rh; + int len; + + KASSERT(rh != NULL, ("no rx radiotap header")); + len = le16toh(rh->it_len); + + if (vap0->iv_flags_ext & IEEE80211_FEXT_BPF) + bpf_mtap2(vap0->iv_rawbpf, rh, len, m); + /* + * Spam monitor mode vaps with unicast frames. Multicast + * frames are handled by passing through ieee80211_input_all + * which distributes copies to the monitor mode vaps. + */ + if (ic->ic_montaps != 0 && (m->m_flags & M_BCAST) == 0) + spam_vaps(vap0, m, rh, len); } /* @@ -221,7 +277,8 @@ ieee80211_radiotap_rx_all(struct ieee802 /* XXX locking? */ TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { - if (ieee80211_radiotap_active_vap(vap)) + if (ieee80211_radiotap_active_vap(vap) && + vap->iv_state != IEEE80211_S_INIT) bpf_mtap2(vap->iv_rawbpf, rh, len, m); } } Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Tue Jun 2 00:30:30 2009 (r193291) +++ head/sys/net80211/ieee80211_var.h Tue Jun 2 00:33:28 2009 (r193292) @@ -215,7 +215,7 @@ struct ieee80211com { void *ic_txchan; /* channel state in ic_th */ struct ieee80211_radiotap_header *ic_rh;/* rx radiotap headers */ void *ic_rxchan; /* channel state in ic_rh */ - int ic_monvaps; /* # monitor mode vaps */ + int ic_montaps; /* active monitor mode taps */ /* virtual ap create/delete */ struct ieee80211vap* (*ic_vap_create)(struct ieee80211com *, @@ -669,7 +669,8 @@ ieee80211_radiotap_active(const struct i static __inline int ieee80211_radiotap_active_vap(const struct ieee80211vap *vap) { - return (vap->iv_flags_ext & IEEE80211_FEXT_BPF) != 0; + return (vap->iv_flags_ext & IEEE80211_FEXT_BPF) || + vap->iv_ic->ic_montaps != 0; } /* From yongari at FreeBSD.org Tue Jun 2 04:00:18 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 04:00:25 2009 Subject: svn commit: r193293 - head/sys/dev/msk Message-ID: <200906020400.n5240He4001722@svn.freebsd.org> Author: yongari Date: Tue Jun 2 04:00:17 2009 New Revision: 193293 URL: http://svn.freebsd.org/changeset/base/193293 Log: Add preliminary Yukon Extreme support and register definitions. Yukon Extreme uses new descriptor format for TSO and has Tx frame parser which greatly reduces CPU cycles spent in computing TCP/UDP payload offset calculation in Tx checksum offloading path. The new descriptor format also removed TCP/UDP payload computation for TSO which in turn results in better TSO performance. It seems Yukon Extreme has a lot of new (unknown) features but only basic offloading is supported at this time. So far there are two known issues. o Sometimes Rx overrun errors happen when pulling data over gigabit link. Running over 100Mbps seem to ok. o Ethernet hardware address shows all-zeroed value on 88E8070. Assigning ethernet address with ifconfig is necessary to make it work. Support for Yukon Extreme is not perfect but it would be better than having a non-working device. Special thanks to jbh who fixed several bugs of initial patch. Tested by: jhb, Warren Block ( wblock <> wonkity dot com ) Modified: head/sys/dev/msk/if_msk.c head/sys/dev/msk/if_mskreg.h Modified: head/sys/dev/msk/if_msk.c ============================================================================== --- head/sys/dev/msk/if_msk.c Tue Jun 2 00:33:28 2009 (r193292) +++ head/sys/dev/msk/if_msk.c Tue Jun 2 04:00:17 2009 (r193293) @@ -226,7 +226,7 @@ static struct msk_product { static const char *model_name[] = { "Yukon XL", "Yukon EC Ultra", - "Yukon Unknown", + "Yukon EX", "Yukon EC", "Yukon FE", "Yukon FE+" @@ -1116,16 +1116,19 @@ msk_phy_power(struct msk_softc *sc, int val = pci_read_config(sc->msk_dev, PCI_OUR_REG_1, 4); val &= ~(PCI_Y2_PHY1_POWD | PCI_Y2_PHY2_POWD); - switch (sc->msk_hw_id) { - case CHIP_ID_YUKON_XL: + if (sc->msk_hw_id == CHIP_ID_YUKON_XL) { if (sc->msk_hw_rev > CHIP_REV_YU_XL_A1) { /* Deassert Low Power for 1st PHY. */ val |= PCI_Y2_PHY1_COMA; if (sc->msk_num_port > 1) val |= PCI_Y2_PHY2_COMA; } - break; + } + /* Release PHY from PowerDown/COMA mode. */ + pci_write_config(sc->msk_dev, PCI_OUR_REG_1, val, 4); + switch (sc->msk_hw_id) { case CHIP_ID_YUKON_EC_U: + case CHIP_ID_YUKON_EX: case CHIP_ID_YUKON_FE_P: CSR_WRITE_2(sc, B0_CTST, Y2_HW_WOL_OFF); @@ -1136,14 +1139,22 @@ msk_phy_power(struct msk_softc *sc, int PCI_ASPM_INT_FIFO_EMPTY|PCI_ASPM_CLKRUN_REQUEST); /* Set all bits to 0 except bits 15..12. */ pci_write_config(sc->msk_dev, PCI_OUR_REG_4, our, 4); - /* Set to default value. */ - pci_write_config(sc->msk_dev, PCI_OUR_REG_5, 0, 4); + our = pci_read_config(sc->msk_dev, PCI_OUR_REG_5, 4); + our &= PCI_CTL_TIM_VMAIN_AV_MSK; + pci_write_config(sc->msk_dev, PCI_OUR_REG_5, our, 4); + pci_write_config(sc->msk_dev, PCI_CFG_REG_1, 0, 4); + /* + * Disable status race, workaround for + * Yukon EC Ultra & Yukon EX. + */ + val = CSR_READ_4(sc, B2_GP_IO); + val |= GLB_GPIO_STAT_RACE_DIS; + CSR_WRITE_4(sc, B2_GP_IO, val); + CSR_READ_4(sc, B2_GP_IO); break; default: break; } - /* Release PHY from PowerDown/COMA mode. */ - pci_write_config(sc->msk_dev, PCI_OUR_REG_1, val, 4); for (i = 0; i < sc->msk_num_port; i++) { CSR_WRITE_2(sc, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_SET); @@ -1194,10 +1205,18 @@ mskc_reset(struct msk_softc *sc) CSR_WRITE_2(sc, B0_CTST, CS_RST_CLR); /* Disable ASF. */ - if (sc->msk_hw_id < CHIP_ID_YUKON_XL) { - CSR_WRITE_4(sc, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET); - CSR_WRITE_2(sc, B0_CTST, Y2_ASF_DISABLE); - } + if (sc->msk_hw_id == CHIP_ID_YUKON_EX) { + status = CSR_READ_2(sc, B28_Y2_ASF_HCU_CCSR); + /* Clear AHB bridge & microcontroller reset. */ + status &= ~(Y2_ASF_HCU_CCSR_AHB_RST | + Y2_ASF_HCU_CCSR_CPU_RST_MODE); + /* Clear ASF microcontroller state. */ + status &= ~ Y2_ASF_HCU_CCSR_UC_STATE_MSK; + CSR_WRITE_2(sc, B28_Y2_ASF_HCU_CCSR, status); + } else + CSR_WRITE_1(sc, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET); + CSR_WRITE_2(sc, B0_CTST, Y2_ASF_DISABLE); + /* * Since we disabled ASF, S/W reset is required for Power Management. */ @@ -1249,6 +1268,10 @@ mskc_reset(struct msk_softc *sc) CSR_WRITE_4(sc, MR_ADDR(i, GMAC_CTRL), GMC_RST_SET); CSR_WRITE_4(sc, MR_ADDR(i, GMAC_CTRL), GMC_RST_CLR); CSR_WRITE_4(sc, MR_ADDR(i, GMAC_CTRL), GMC_F_LOOPB_OFF); + if (sc->msk_hw_id == CHIP_ID_YUKON_EX) + CSR_WRITE_4(sc, MR_ADDR(i, GMAC_CTRL), + GMC_BYP_MACSECRX_ON | GMC_BYP_MACSECTX_ON | + GMC_BYP_RETR_ON); } CSR_WRITE_1(sc, B2_TST_CTRL1, TST_CFG_WRITE_OFF); @@ -1651,6 +1674,10 @@ mskc_attach(device_t dev) sc->msk_clock = 125; /* 125 Mhz */ sc->msk_pflags |= MSK_FLAG_JUMBO | MSK_FLAG_JUMBO_NOCSUM; break; + case CHIP_ID_YUKON_EX: + sc->msk_clock = 125; /* 125 Mhz */ + sc->msk_pflags |= MSK_FLAG_JUMBO | MSK_FLAG_DESCV2; + break; case CHIP_ID_YUKON_FE: sc->msk_clock = 100; /* 100 Mhz */ sc->msk_pflags |= MSK_FLAG_FASTETHER; @@ -3542,6 +3569,48 @@ done: } static void +msk_set_tx_stfwd(struct msk_if_softc *sc_if) +{ + struct msk_softc *sc; + struct ifnet *ifp; + + ifp = sc_if->msk_ifp; + sc = sc_if->msk_softc; + switch (sc->msk_hw_id) { + case CHIP_ID_YUKON_EX: + if (sc->msk_hw_rev == CHIP_REV_YU_EX_A0) + goto yukon_ex_workaround; + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_4(sc, + MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), + TX_JUMBO_ENA | TX_STFW_ENA); + else + CSR_WRITE_4(sc, + MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), + TX_JUMBO_DIS | TX_STFW_ENA); + break; + default: +yukon_ex_workaround: + if (ifp->if_mtu > ETHERMTU) { + /* Set Tx GMAC FIFO Almost Empty Threshold. */ + CSR_WRITE_4(sc, + MR_ADDR(sc_if->msk_port, TX_GMF_AE_THR), + MSK_ECU_JUMBO_WM << 16 | MSK_ECU_AE_THR); + /* Disable Store & Forward mode for Tx. */ + CSR_WRITE_4(sc, + MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), + TX_JUMBO_ENA | TX_STFW_DIS); + } else { + /* Enable Store & Forward mode for Tx. */ + CSR_WRITE_4(sc, + MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), + TX_JUMBO_DIS | TX_STFW_ENA); + } + break; + } +} + +static void msk_init(void *xsc) { struct msk_if_softc *sc_if = xsc; @@ -3590,6 +3659,10 @@ msk_init_locked(struct msk_if_softc *sc_ CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, GMAC_CTRL), GMC_RST_SET); CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, GMAC_CTRL), GMC_RST_CLR); CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, GMAC_CTRL), GMC_F_LOOPB_OFF); + if (sc->msk_hw_id == CHIP_ID_YUKON_EX) + CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, GMAC_CTRL), + GMC_BYP_MACSECRX_ON | GMC_BYP_MACSECTX_ON | + GMC_BYP_RETR_ON); /* * Initialize GMAC first such that speed/duplex/flow-control @@ -3642,7 +3715,8 @@ msk_init_locked(struct msk_if_softc *sc_ CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_CTRL_T), GMF_RST_SET); CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_CTRL_T), GMF_RST_CLR); reg = GMF_OPER_ON | GMF_RX_F_FL_ON; - if (sc->msk_hw_id == CHIP_ID_YUKON_FE_P) + if (sc->msk_hw_id == CHIP_ID_YUKON_FE_P || + sc->msk_hw_id == CHIP_ID_YUKON_EX) reg |= GMF_RX_OVER_ON; CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_CTRL_T), reg); @@ -3678,20 +3752,8 @@ msk_init_locked(struct msk_if_softc *sc_ MSK_ECU_LLPP); CSR_WRITE_1(sc, MR_ADDR(sc_if->msk_port, RX_GMF_UP_THR), MSK_ECU_ULPP); - if (ifp->if_mtu > ETHERMTU) { - /* - * Set Tx GMAC FIFO Almost Empty Threshold. - */ - CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_AE_THR), - MSK_ECU_JUMBO_WM << 16 | MSK_ECU_AE_THR); - /* Disable Store & Forward mode for Tx. */ - CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), - TX_JUMBO_ENA | TX_STFW_DIS); - } else { - /* Enable Store & Forward mode for Tx. */ - CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), - TX_JUMBO_DIS | TX_STFW_ENA); - } + /* Configure store-and-forward for Tx. */ + msk_set_tx_stfwd(sc_if); } if (sc->msk_hw_id == CHIP_ID_YUKON_FE_P && Modified: head/sys/dev/msk/if_mskreg.h ============================================================================== --- head/sys/dev/msk/if_mskreg.h Tue Jun 2 00:33:28 2009 (r193292) +++ head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:00:17 2009 (r193293) @@ -225,6 +225,8 @@ #define PCI_OUR_REG_3 0x80 /* 32 bit Our Register 3 */ #define PCI_OUR_REG_4 0x84 /* 32 bit Our Register 4 */ #define PCI_OUR_REG_5 0x88 /* 32 bit Our Register 5 */ +#define PCI_CFG_REG_0 0x90 /* 32 bit Config Register 0 */ +#define PCI_CFG_REG_1 0x94 /* 32 bit Config Register 1 */ /* PCI Express Capability */ #define PEX_CAP_ID 0xe0 /* 8 bit PEX Capability ID */ @@ -325,6 +327,56 @@ #define PCI_CLK_GATE_PEX_UNIT_ENA BIT_1 /* Enable Gate PEX Unit Clock */ #define PCI_CLK_GATE_ROOT_COR_ENA BIT_0 /* Enable Gate Root Core Clock */ +/* PCI_OUR_REG_5 32 bit Our Register 5 (Yukon-ECU only) */ + /* Bit 31..27: for A3 & later */ +#define PCI_CTL_DIV_CORE_CLK_ENA BIT_31 /* Divide Core Clock Enable */ +#define PCI_CTL_SRESET_VMAIN_AV BIT_30 /* Soft Reset for Vmain_av De-Glitch */ +#define PCI_CTL_BYPASS_VMAIN_AV BIT_29 /* Bypass En. for Vmain_av De-Glitch */ +#define PCI_CTL_TIM_VMAIN_AV1 BIT_28 /* Bit 28..27: Timer Vmain_av Mask */ +#define PCI_CTL_TIM_VMAIN_AV0 BIT_27 /* Bit 28..27: Timer Vmain_av Mask */ +#define PCI_CTL_TIM_VMAIN_AV_MSK (BIT_28 | BIT_27) + /* Bit 26..16: Release Clock on Event */ +#define PCI_REL_PCIE_RST_DE_ASS BIT_26 /* PCIe Reset De-Asserted */ +#define PCI_REL_GPHY_REC_PACKET BIT_25 /* GPHY Received Packet */ +#define PCI_REL_INT_FIFO_N_EMPTY BIT_24 /* Internal FIFO Not Empty */ +#define PCI_REL_MAIN_PWR_AVAIL BIT_23 /* Main Power Available */ +#define PCI_REL_CLKRUN_REQ_REL BIT_22 /* CLKRUN Request Release */ +#define PCI_REL_PCIE_RESET_ASS BIT_21 /* PCIe Reset Asserted */ +#define PCI_REL_PME_ASSERTED BIT_20 /* PME Asserted */ +#define PCI_REL_PCIE_EXIT_L1_ST BIT_19 /* PCIe Exit L1 State */ +#define PCI_REL_LOADER_NOT_FIN BIT_18 /* EPROM Loader Not Finished */ +#define PCI_REL_PCIE_RX_EX_IDLE BIT_17 /* PCIe Rx Exit Electrical Idle State */ +#define PCI_REL_GPHY_LINK_UP BIT_16 /* GPHY Link Up */ + /* Bit 10.. 0: Mask for Gate Clock */ +#define PCI_GAT_PCIE_RST_ASSERTED BIT_10 /* PCIe Reset Asserted */ +#define PCI_GAT_GPHY_N_REC_PACKET BIT_9 /* GPHY Not Received Packet */ +#define PCI_GAT_INT_FIFO_EMPTY BIT_8 /* Internal FIFO Empty */ +#define PCI_GAT_MAIN_PWR_N_AVAIL BIT_7 /* Main Power Not Available */ +#define PCI_GAT_CLKRUN_REQ_REL BIT_6 /* CLKRUN Not Requested */ +#define PCI_GAT_PCIE_RESET_ASS BIT_5 /* PCIe Reset Asserted */ +#define PCI_GAT_PME_DE_ASSERTED BIT_4 /* PME De-Asserted */ +#define PCI_GAT_PCIE_ENTER_L1_ST BIT_3 /* PCIe Enter L1 State */ +#define PCI_GAT_LOADER_FINISHED BIT_2 /* EPROM Loader Finished */ +#define PCI_GAT_PCIE_RX_EL_IDLE BIT_1 /* PCIe Rx Electrical Idle State */ +#define PCI_GAT_GPHY_LINK_DOWN BIT_0 /* GPHY Link Down */ + +/* PCI_CFG_REG_1 32 bit Config Register 1 */ +#define PCI_CF1_DIS_REL_EVT_RST BIT_24 /* Dis. Rel. Event during PCIE reset */ + /* Bit 23..21: Release Clock on Event */ +#define PCI_CF1_REL_LDR_NOT_FIN BIT_23 /* EEPROM Loader Not Finished */ +#define PCI_CF1_REL_VMAIN_AVLBL BIT_22 /* Vmain available */ +#define PCI_CF1_REL_PCIE_RESET BIT_21 /* PCI-E reset */ + /* Bit 20..18: Gate Clock on Event */ +#define PCI_CF1_GAT_LDR_NOT_FIN BIT_20 /* EEPROM Loader Finished */ +#define PCI_CF1_GAT_PCIE_RX_IDLE BIT_19 /* PCI-E Rx Electrical idle */ +#define PCI_CF1_GAT_PCIE_RESET BIT_18 /* PCI-E Reset */ +#define PCI_CF1_PRST_PHY_CLKREQ BIT_17 /* Enable PCI-E rst & PM2PHY gen. CLKREQ */ +#define PCI_CF1_PCIE_RST_CLKREQ BIT_16 /* Enable PCI-E rst generate CLKREQ */ + +#define PCI_CF1_ENA_CFG_LDR_DONE BIT_8 /* Enable core level Config loader done */ +#define PCI_CF1_ENA_TXBMU_RD_IDLE BIT_1 /* Enable TX BMU Read IDLE for ASPM */ +#define PCI_CF1_ENA_TXBMU_WR_IDLE BIT_0 /* Enable TX BMU Write IDLE for ASPM */ + /* PEX_DEV_CTRL 16 bit PEX Device Control (Yukon-2) */ #define PEX_DC_MAX_RRS_MSK (7<<12) /* Bit 14..12: Max. Read Request Size */ #define PEX_DC_EN_NO_SNOOP BIT_11 /* Enable No Snoop */ @@ -621,6 +673,7 @@ #define B28_Y2_SMB_CSD_REG 0x0e44 /* 32 bit ASF SMB Control/Status/Data */ #define B28_Y2_ASF_IRQ_V_BASE 0x0e60 /* 32 bit ASF IRQ Vector Base */ #define B28_Y2_ASF_STAT_CMD 0x0e68 /* 32 bit ASF Status and Command Reg */ +#define B28_Y2_ASF_HCU_CCSR 0x0e68 /* 32 bit ASF HCU CCSR (Yukon EX) */ #define B28_Y2_ASF_HOST_COM 0x0e6c /* 32 bit ASF Host Communication Reg */ #define B28_Y2_DATA_REG_1 0x0e70 /* 32 bit ASF/Host Data Register 1 */ #define B28_Y2_DATA_REG_2 0x0e74 /* 32 bit ASF/Host Data Register 2 */ @@ -830,6 +883,7 @@ #define CHIP_ID_YUKON_LP 0xb2 /* Chip ID for YUKON-LP */ #define CHIP_ID_YUKON_XL 0xb3 /* Chip ID for YUKON-2 XL */ #define CHIP_ID_YUKON_EC_U 0xb4 /* Chip ID for YUKON-2 EC Ultra */ +#define CHIP_ID_YUKON_EX 0xb5 /* Chip ID for YUKON-2 Extreme */ #define CHIP_ID_YUKON_EC 0xb6 /* Chip ID for YUKON-2 EC */ #define CHIP_ID_YUKON_FE 0xb7 /* Chip ID for YUKON-2 FE */ #define CHIP_ID_YUKON_FE_P 0xb8 /* Chip ID for YUKON-2 FE+ */ @@ -848,6 +902,9 @@ #define CHIP_REV_YU_FE_P_A0 0 /* Chip Rev. for Yukon-2 FE+ A0 */ +#define CHIP_REV_YU_EX_A0 1 /* Chip Rev. for Yukon-2 EX A0 */ +#define CHIP_REV_YU_EX_B0 2 /* Chip Rev. for Yukon-2 EX B0 */ + /* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ #define Y2_STATUS_LNK2_INAC BIT_7 /* Status Link 2 inactiv (0 = activ) */ #define Y2_CLK_GAT_LNK2_DIS BIT_6 /* Disable clock gating Link 2 */ @@ -912,6 +969,18 @@ #define TST_CFG_WRITE_ON BIT_1 /* Enable Config Reg WR */ #define TST_CFG_WRITE_OFF BIT_0 /* Disable Config Reg WR */ +/* B2_GP_IO */ +#define GLB_GPIO_CLK_DEB_ENA BIT_31 /* Clock Debug Enable */ +#define GLB_GPIO_CLK_DBG_MSK 0x3c000000 /* Clock Debug */ + +#define GLB_GPIO_INT_RST_D3_DIS BIT_15 /* Disable Internal Reset After D3 to D0 */ +#define GLB_GPIO_LED_PAD_SPEED_UP BIT_14 /* LED PAD Speed Up */ +#define GLB_GPIO_STAT_RACE_DIS BIT_13 /* Status Race Disable */ +#define GLB_GPIO_TEST_SEL_MSK 0x00001800 /* Testmode Select */ +#define GLB_GPIO_TEST_SEL_BASE BIT_11 +#define GLB_GPIO_RAND_ENA BIT_10 /* Random Enable */ +#define GLB_GPIO_RAND_BIT_1 BIT_9 /* Random Bit 1 */ + /* B2_I2C_CTRL 32 bit I2C HW Control Register */ #define I2C_FLAG BIT_31 /* Start read/write if WR */ #define I2C_ADDR (0x7fff<<16) /* Bit 30..16: Addr to be RD/WR */ @@ -1033,13 +1102,16 @@ /* Bit 10..0: same as for Rx */ /* Q_F 32 bit Flag Register */ -#define F_ALM_FULL BIT_27 /* Rx FIFO: almost full */ -#define F_EMPTY BIT_27 /* Tx FIFO: empty flag */ -#define F_FIFO_EOF BIT_26 /* Tag (EOF Flag) bit in FIFO */ -#define F_WM_REACHED BIT_25 /* Watermark reached */ -#define F_M_RX_RAM_DIS BIT_24 /* MAC Rx RAM Read Port disable */ -#define F_FIFO_LEVEL (0x1f<<16) /* Bit 23..16: # of Qwords in FIFO */ -#define F_WATER_MARK 0x0007ff /* Bit 10.. 0: Watermark */ +#define F_TX_CHK_AUTO_OFF BIT_31 /* Tx checksum auto-calc Off(Yukon EX)*/ +#define F_TX_CHK_AUTO_ON BIT_30 /* Tx checksum auto-calc On(Yukon EX)*/ +#define F_ALM_FULL BIT_28 /* Rx FIFO: almost full */ +#define F_EMPTY BIT_27 /* Tx FIFO: empty flag */ +#define F_FIFO_EOF BIT_26 /* Tag (EOF Flag) bit in FIFO */ +#define F_WM_REACHED BIT_25 /* Watermark reached */ +#define F_M_RX_RAM_DIS BIT_24 /* MAC Rx RAM Read Port disable */ +#define F_FIFO_LEVEL (0x1f<<16) + /* Bit 23..16: # of Qwords in FIFO */ +#define F_WATER_MARK 0x0007ff/* Bit 10.. 0: Watermark */ /* Queue Prefetch Unit Offsets, use Y2_PREF_Q_ADDR() to address (Yukon-2 only)*/ /* PREF_UNIT_CTRL_REG 32 bit Prefetch Control register */ @@ -1927,6 +1999,28 @@ #define Y2_ASF_UC_STATE (3<<2) /* ASF uC State */ #define Y2_ASF_CLK_HALT 0 /* ASF system clock stopped */ +/* B28_Y2_ASF_HCU_CCSR 32bit CPU Control and Status Register (Yukon EX) */ +#define Y2_ASF_HCU_CCSR_SMBALERT_MONITOR BIT_27 /* SMBALERT pin monitor */ +#define Y2_ASF_HCU_CCSR_CPU_SLEEP BIT_26 /* CPU sleep status */ +#define Y2_ASF_HCU_CCSR_CS_TO BIT_25 /* Clock Stretching Timeout */ +#define Y2_ASF_HCU_CCSR_WDOG BIT_24 /* Watchdog Reset */ +#define Y2_ASF_HCU_CCSR_CLR_IRQ_HOST BIT_17 /* Clear IRQ_HOST */ +#define Y2_ASF_HCU_CCSR_SET_IRQ_HCU BIT_16 /* Set IRQ_HCU */ +#define Y2_ASF_HCU_CCSR_AHB_RST BIT_9 /* Reset AHB bridge */ +#define Y2_ASF_HCU_CCSR_CPU_RST_MODE BIT_8 /* CPU Reset Mode */ +#define Y2_ASF_HCU_CCSR_SET_SYNC_CPU BIT_5 +#define Y2_ASF_HCU_CCSR_CPU_CLK_DIVIDE1 BIT_4 +#define Y2_ASF_HCU_CCSR_CPU_CLK_DIVIDE0 BIT_3 +#define Y2_ASF_HCU_CCSR_CPU_CLK_DIVIDE_MSK (BIT_4 | BIT_3) /* CPU Clock Divide */ +#define Y2_ASF_HCU_CCSR_CPU_CLK_DIVIDE_BASE BIT_3 +#define Y2_ASF_HCU_CCSR_OS_PRSNT BIT_2 /* ASF OS Present */ + /* Microcontroller State */ +#define Y2_ASF_HCU_CCSR_UC_STATE_MSK 3 +#define Y2_ASF_HCU_CCSR_UC_STATE_BASE BIT_0 +#define Y2_ASF_HCU_CCSR_ASF_RESET 0 +#define Y2_ASF_HCU_CCSR_ASF_HALTED BIT_1 +#define Y2_ASF_HCU_CCSR_ASF_RUNNING BIT_0 + /* B28_Y2_ASF_HOST_COM 32 bit ASF Host Communication Reg */ /* This register is used by the ASF firmware */ #define Y2_ASF_CLR_ASFI BIT_1 /* Clear host IRQ */ @@ -1940,6 +2034,14 @@ #define SC_STAT_RST_SET BIT_0 /* Set Status Unit Reset */ /* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ +#define GMC_SEC_RST BIT_15 /* MAC SEC RST */ +#define GMC_SEC_RST_OFF BIT_14 /* MAC SEC RST Off */ +#define GMC_BYP_MACSECRX_ON BIT_13 /* Bypass MAC SEC RX */ +#define GMC_BYP_MACSECRX_OFF BIT_12 /* Bypass MAC SEC RX Off */ +#define GMC_BYP_MACSECTX_ON BIT_11 /* Bypass MAC SEC TX */ +#define GMC_BYP_MACSECTX_OFF BIT_10 /* Bypass MAC SEC TX Off */ +#define GMC_BYP_RETR_ON BIT_9 /* Bypass MAC retransmit FIFO On */ +#define GMC_BYP_RETR_OFF BIT_8 /* Bypass MAC retransmit FIFO Off */ #define GMC_H_BURST_ON BIT_7 /* Half Duplex Burst Mode On */ #define GMC_H_BURST_OFF BIT_6 /* Half Duplex Burst Mode Off */ #define GMC_F_LOOPB_ON BIT_5 /* FIFO Loopback On */ From yongari at FreeBSD.org Tue Jun 2 04:35:45 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 04:35:57 2009 Subject: svn commit: r193294 - head/sys/dev/msk Message-ID: <200906020435.n524ZiNk002470@svn.freebsd.org> Author: yongari Date: Tue Jun 2 04:35:44 2009 New Revision: 193294 URL: http://svn.freebsd.org/changeset/base/193294 Log: Add frame parser capability of Yukon FE+ and Yukon Extreme. With this feature hardware automatically computes TCP/UDP payload offset. Introduce MSK_FLAG_AUTOTX_CSUM to mark the capability. Yukon Extreme B0 revision is known to have a silicon for the feature so disable it. Yukon Extreme B0 still can do Tx checksum offloading but CPU have to compute TCP/UDP payload offset. To enable traditional checksum offloading, disable automatic Tx checksum calculation capability. Yukon Extreme A0 revision could not use store-and-forward mode for jumbo frames(silicon bug) so disable Tx checksum offloading for jumbo frames. I believe controllers that have MSK_FLAG_AUTOTX_CSUM capability or new descriptor format do not have Tx checksum offload bug so disable checksum offloading workaround for for short frames. Tested by: jhb, Warren Block ( wblock <> wonkity dot com ) Modified: head/sys/dev/msk/if_msk.c head/sys/dev/msk/if_mskreg.h Modified: head/sys/dev/msk/if_msk.c ============================================================================== --- head/sys/dev/msk/if_msk.c Tue Jun 2 04:00:17 2009 (r193293) +++ head/sys/dev/msk/if_msk.c Tue Jun 2 04:35:44 2009 (r193294) @@ -1676,7 +1676,21 @@ mskc_attach(device_t dev) break; case CHIP_ID_YUKON_EX: sc->msk_clock = 125; /* 125 Mhz */ - sc->msk_pflags |= MSK_FLAG_JUMBO | MSK_FLAG_DESCV2; + sc->msk_pflags |= MSK_FLAG_JUMBO | MSK_FLAG_DESCV2 | + MSK_FLAG_AUTOTX_CSUM; + /* + * Yukon Extreme seems to have silicon bug for + * automatic Tx checksum calculation capability. + */ + if (sc->msk_hw_rev == CHIP_REV_YU_EX_B0) + sc->msk_pflags &= ~MSK_FLAG_AUTOTX_CSUM; + /* + * Yukon Extreme A0 could not use store-and-forward + * for jumbo frames, so disable Tx checksum + * offloading for jumbo frames. + */ + if (sc->msk_hw_rev == CHIP_REV_YU_EX_A0) + sc->msk_pflags |= MSK_FLAG_JUMBO_NOCSUM; break; case CHIP_ID_YUKON_FE: sc->msk_clock = 100; /* 100 Mhz */ @@ -1684,7 +1698,8 @@ mskc_attach(device_t dev) break; case CHIP_ID_YUKON_FE_P: sc->msk_clock = 50; /* 50 Mhz */ - sc->msk_pflags |= MSK_FLAG_FASTETHER | MSK_FLAG_DESCV2; + sc->msk_pflags |= MSK_FLAG_FASTETHER | MSK_FLAG_DESCV2 | + MSK_FLAG_AUTOTX_CSUM; if (sc->msk_hw_rev == CHIP_REV_YU_FE_P_A0) { /* * XXX @@ -2477,8 +2492,10 @@ msk_encap(struct msk_if_softc *sc_if, st tcp_offset = offset = 0; m = *m_head; - if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && - (m->m_pkthdr.csum_flags & (MSK_CSUM_FEATURES | CSUM_TSO)) != 0) { + if (((sc_if->msk_flags & MSK_FLAG_AUTOTX_CSUM) == 0 && + (m->m_pkthdr.csum_flags & MSK_CSUM_FEATURES) != 0) || + ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && + (m->m_pkthdr.csum_flags & CSUM_TSO) != 0)) { /* * Since mbuf has no protocol specific structure information * in it we have to inspect protocol information here to @@ -2537,9 +2554,12 @@ msk_encap(struct msk_if_softc *sc_if, st * resort to S/W checksum routine when we encounter short * TCP frames. * Short UDP packets appear to be handled correctly by - * Yukon II. + * Yukon II. Also I assume this bug does not happen on + * controllers that use newer descriptor format or + * automatic Tx checksum calaulcation. */ - if (m->m_pkthdr.len < MSK_MIN_FRAMELEN && + if ((sc_if->msk_flags & MSK_FLAG_AUTOTX_CSUM) == 0 && + (m->m_pkthdr.len < MSK_MIN_FRAMELEN) && (m->m_pkthdr.csum_flags & CSUM_TCP) != 0) { m = m_pullup(m, offset + sizeof(struct tcphdr)); if (m == NULL) { @@ -2640,7 +2660,7 @@ msk_encap(struct msk_if_softc *sc_if, st } /* Check if we have to handle checksum offload. */ if (tso == 0 && (m->m_pkthdr.csum_flags & MSK_CSUM_FEATURES) != 0) { - if ((sc_if->msk_flags & MSK_FLAG_DESCV2) != 0) + if ((sc_if->msk_flags & MSK_FLAG_AUTOTX_CSUM) != 0) control |= CALSUM; else { tx_le = &sc_if->msk_rdata.msk_tx_ring[prod]; @@ -3784,10 +3804,23 @@ msk_init_locked(struct msk_if_softc *sc_ CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_OPER_INIT); CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_FIFO_OP_ON); CSR_WRITE_2(sc, Q_ADDR(sc_if->msk_txq, Q_WM), MSK_BMU_TX_WM); - if (sc->msk_hw_id == CHIP_ID_YUKON_EC_U && - sc->msk_hw_rev == CHIP_REV_YU_EC_U_A0) { - /* Fix for Yukon-EC Ultra: set BMU FIFO level */ - CSR_WRITE_2(sc, Q_ADDR(sc_if->msk_txq, Q_AL), MSK_ECU_TXFF_LEV); + switch (sc->msk_hw_id) { + case CHIP_ID_YUKON_EC_U: + if (sc->msk_hw_rev == CHIP_REV_YU_EC_U_A0) { + /* Fix for Yukon-EC Ultra: set BMU FIFO level */ + CSR_WRITE_2(sc, Q_ADDR(sc_if->msk_txq, Q_AL), + MSK_ECU_TXFF_LEV); + } + break; + case CHIP_ID_YUKON_EX: + /* + * Yukon Extreme seems to have silicon bug for + * automatic Tx checksum calculation capability. + */ + if (sc->msk_hw_rev == CHIP_REV_YU_EX_B0) + CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_F), + F_TX_CHK_AUTO_OFF); + break; } /* Setup Rx Queue Bus Memory Interface. */ Modified: head/sys/dev/msk/if_mskreg.h ============================================================================== --- head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:00:17 2009 (r193293) +++ head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:35:44 2009 (r193294) @@ -2502,8 +2502,9 @@ struct msk_if_softc { #define MSK_FLAG_JUMBO_NOCSUM 0x0010 #define MSK_FLAG_RAMBUF 0x0020 #define MSK_FLAG_DESCV2 0x0040 -#define MSK_FLAG_NOHWVLAN 0x0080 -#define MSK_FLAG_NORXCHK 0x0100 +#define MSK_FLAG_AUTOTX_CSUM 0x0080 +#define MSK_FLAG_NOHWVLAN 0x0100 +#define MSK_FLAG_NORXCHK 0x0200 #define MSK_FLAG_SUSPEND 0x2000 #define MSK_FLAG_DETACH 0x4000 #define MSK_FLAG_LINK 0x8000 From dchagin at FreeBSD.org Tue Jun 2 04:44:39 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Tue Jun 2 04:44:46 2009 Subject: svn commit: r193295 - in stable/7/sys: . compat/linux contrib/pf dev/ath/ath_hal dev/cxgb Message-ID: <200906020444.n524icjH002690@svn.freebsd.org> Author: dchagin Date: Tue Jun 2 04:44:38 2009 New Revision: 193295 URL: http://svn.freebsd.org/changeset/base/193295 Log: MFC r191742,r191871: Linux socketpair() call expects explicit specified protocol for AF_LOCAL domain unlike FreeBSD which expects 0 in this case. Return EAFNOSUPPORT in case when the incorrect domain argument is specified. Return EPROTONOSUPPORT instead of passing values that are not 0 to the BSD layer. Approved by: kib (mentor) Modified: stable/7/sys/ (props changed) stable/7/sys/compat/linux/linux_socket.c stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) Modified: stable/7/sys/compat/linux/linux_socket.c ============================================================================== --- stable/7/sys/compat/linux/linux_socket.c Tue Jun 2 04:35:44 2009 (r193294) +++ stable/7/sys/compat/linux/linux_socket.c Tue Jun 2 04:44:38 2009 (r193295) @@ -812,11 +812,21 @@ linux_socketpair(struct thread *td, stru } */ bsd_args; bsd_args.domain = linux_to_bsd_domain(args->domain); - if (bsd_args.domain == -1) - return (EINVAL); + if (bsd_args.domain != PF_LOCAL) + return (EAFNOSUPPORT); bsd_args.type = args->type; - bsd_args.protocol = args->protocol; + if (args->protocol != 0 && args->protocol != PF_UNIX) + + /* + * Use of PF_UNIX as protocol argument is not right, + * but Linux does it. + * Do not map PF_UNIX as its Linux value is identical + * to FreeBSD one. + */ + return (EPROTONOSUPPORT); + else + bsd_args.protocol = 0; bsd_args.rsv = (int *)PTRIN(args->rsv); return (socketpair(td, &bsd_args)); } From jkoshy at FreeBSD.org Tue Jun 2 04:45:57 2009 From: jkoshy at FreeBSD.org (Joseph Koshy) Date: Tue Jun 2 04:46:02 2009 Subject: svn commit: r193296 - head/usr.sbin/pmcstat Message-ID: <200906020445.n524juhw002771@svn.freebsd.org> Author: jkoshy Date: Tue Jun 2 04:45:56 2009 New Revision: 193296 URL: http://svn.freebsd.org/changeset/base/193296 Log: Catch up with the times: "mozilla" -> "firefox". Modified: head/usr.sbin/pmcstat/pmcstat.8 Modified: head/usr.sbin/pmcstat/pmcstat.8 ============================================================================== --- head/usr.sbin/pmcstat/pmcstat.8 Tue Jun 2 04:44:38 2009 (r193295) +++ head/usr.sbin/pmcstat/pmcstat.8 Tue Jun 2 04:45:56 2009 (r193296) @@ -312,10 +312,10 @@ use: .Dl "pmcstat -O sample.stat -n 32768 -S k7-retired-instructions" .Pp To execute -.Nm mozilla +.Nm firefox and measure the number of data cache misses suffered by it and its children every 12 seconds on an AMD Athlon, use: -.Dl "pmcstat -d -w 12 -p k7-dc-misses mozilla" +.Dl "pmcstat -d -w 12 -p k7-dc-misses firefox" .Pp To measure instructions retired for all processes named .Dq emacs From dchagin at FreeBSD.org Tue Jun 2 04:47:29 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Tue Jun 2 04:47:45 2009 Subject: svn commit: r193297 - in stable/7/sys: . compat/linux contrib/pf dev/ath/ath_hal dev/cxgb Message-ID: <200906020447.n524lSau002833@svn.freebsd.org> Author: dchagin Date: Tue Jun 2 04:47:28 2009 New Revision: 193297 URL: http://svn.freebsd.org/changeset/base/193297 Log: MFC r191875: Return EAFNOSUPPORT instead of EINVAL in case when the incorrect or unsupported domain argument to linux_socket() is specified. Approved by: kib (mentor) Modified: stable/7/sys/ (props changed) stable/7/sys/compat/linux/linux_socket.c stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) Modified: stable/7/sys/compat/linux/linux_socket.c ============================================================================== --- stable/7/sys/compat/linux/linux_socket.c Tue Jun 2 04:45:56 2009 (r193296) +++ stable/7/sys/compat/linux/linux_socket.c Tue Jun 2 04:47:28 2009 (r193297) @@ -556,7 +556,7 @@ linux_socket(struct thread *td, struct l bsd_args.type = args->type; bsd_args.domain = linux_to_bsd_domain(args->domain); if (bsd_args.domain == -1) - return (EINVAL); + return (EAFNOSUPPORT); retval_socket = socket(td, &bsd_args); if (bsd_args.type == SOCK_RAW From yongari at FreeBSD.org Tue Jun 2 04:59:30 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 04:59:44 2009 Subject: svn commit: r193298 - head/sys/dev/msk Message-ID: <200906020459.n524xTE5003101@svn.freebsd.org> Author: yongari Date: Tue Jun 2 04:59:29 2009 New Revision: 193298 URL: http://svn.freebsd.org/changeset/base/193298 Log: Add Rx checksum offloading support for Yukon FE+ and Yukon Extreme. These controllers use newer descriptor format and the new descriptor format uses status LE to indicate the status of checksum. Rx checksummed value used in previous controllers were very cryptic and I failed to understand how to use them. In addition most controllers in previous generations had Rx checksum offloading bug. While I'm here introduce a MSK_FLAG_NORX_CSUM flag to bypass checking Rx checksum offloading as Yukon FE+ A0 has status LE bug. Modified: head/sys/dev/msk/if_msk.c head/sys/dev/msk/if_mskreg.h Modified: head/sys/dev/msk/if_msk.c ============================================================================== --- head/sys/dev/msk/if_msk.c Tue Jun 2 04:47:28 2009 (r193297) +++ head/sys/dev/msk/if_msk.c Tue Jun 2 04:59:29 2009 (r193298) @@ -258,8 +258,8 @@ static void msk_intr_hwerr(struct msk_so #ifndef __NO_STRICT_ALIGNMENT static __inline void msk_fixup_rx(struct mbuf *); #endif -static void msk_rxeof(struct msk_if_softc *, uint32_t, int); -static void msk_jumbo_rxeof(struct msk_if_softc *, uint32_t, int); +static void msk_rxeof(struct msk_if_softc *, uint32_t, uint32_t, int); +static void msk_jumbo_rxeof(struct msk_if_softc *, uint32_t, uint32_t, int); static void msk_txeof(struct msk_if_softc *, int); static int msk_encap(struct msk_if_softc *, struct mbuf **); static void msk_tx_task(void *, int); @@ -267,6 +267,7 @@ static void msk_start(struct ifnet *); static int msk_ioctl(struct ifnet *, u_long, caddr_t); static void msk_set_prefetch(struct msk_softc *, int, bus_addr_t, uint32_t); static void msk_set_rambuffer(struct msk_if_softc *); +static void msk_set_tx_stfwd(struct msk_if_softc *); static void msk_init(void *); static void msk_init_locked(struct msk_if_softc *); static void msk_stop(struct msk_if_softc *); @@ -991,12 +992,17 @@ msk_ioctl(struct ifnet *ifp, u_long comm else ifp->if_hwassist &= ~MSK_CSUM_FEATURES; } + if ((mask & IFCAP_RXCSUM) != 0 && + (IFCAP_RXCSUM & ifp->if_capabilities) != 0) + ifp->if_capenable ^= IFCAP_RXCSUM; if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && (IFCAP_VLAN_HWTAGGING & ifp->if_capabilities) != 0) { ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; msk_setvlan(sc_if, ifp); } - + if ((mask & IFCAP_VLAN_HWCSUM) != 0 && + (IFCAP_VLAN_HWCSUM & ifp->if_capabilities) != 0) + ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; if ((mask & IFCAP_TSO4) != 0 && (IFCAP_TSO4 & ifp->if_capabilities) != 0) { ifp->if_capenable ^= IFCAP_TSO4; @@ -1492,6 +1498,13 @@ msk_attach(device_t dev) * make Rx checksum offload work on Yukon II hardware. */ ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_TSO4; + /* + * Enable Rx checksum offloading if controller support new + * descriptor format. + */ + if ((sc_if->msk_flags & MSK_FLAG_DESCV2) != 0 && + (sc_if->msk_flags & MSK_FLAG_NORX_CSUM) == 0) + ifp->if_capabilities |= IFCAP_RXCSUM; ifp->if_hwassist = MSK_CSUM_FEATURES | CSUM_TSO; ifp->if_capenable = ifp->if_capabilities; ifp->if_ioctl = msk_ioctl; @@ -1535,6 +1548,13 @@ msk_attach(device_t dev) * for VLAN interface. */ ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING; + /* + * Enable Rx checksum offloading for VLAN taggedd frames + * if controller support new descriptor format. + */ + if ((sc_if->msk_flags & MSK_FLAG_DESCV2) != 0 && + (sc_if->msk_flags & MSK_FLAG_NORX_CSUM) == 0) + ifp->if_capabilities |= IFCAP_VLAN_HWCSUM; } ifp->if_capenable = ifp->if_capabilities; @@ -1711,7 +1731,8 @@ mskc_attach(device_t dev) * Just pass received frames to upper stack with * minimal test and let upper stack handle them. */ - sc->msk_pflags |= MSK_FLAG_NOHWVLAN | MSK_FLAG_NORXCHK; + sc->msk_pflags |= MSK_FLAG_NOHWVLAN | + MSK_FLAG_NORXCHK | MSK_FLAG_NORX_CSUM; } break; case CHIP_ID_YUKON_XL: @@ -2942,7 +2963,8 @@ msk_fixup_rx(struct mbuf *m) #endif static void -msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len) +msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, + int len) { struct mbuf *m; struct ifnet *ifp; @@ -2994,6 +3016,18 @@ msk_rxeof(struct msk_if_softc *sc_if, ui msk_fixup_rx(m); #endif ifp->if_ipackets++; + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0 && + (control & (CSS_IPV4 | CSS_IPFRAG)) == CSS_IPV4) { + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if ((control & CSS_IPV4_CSUM_OK) != 0) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if ((control & (CSS_TCP | CSS_UDP)) != 0 && + (control & (CSS_TCPUDP_CSUM_OK)) != 0) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID | + CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + } + } /* Check for VLAN tagged packets. */ if ((status & GMR_FS_VLAN) != 0 && (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) { @@ -3010,7 +3044,8 @@ msk_rxeof(struct msk_if_softc *sc_if, ui } static void -msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len) +msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, + int len) { struct mbuf *m; struct ifnet *ifp; @@ -3051,6 +3086,18 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_ msk_fixup_rx(m); #endif ifp->if_ipackets++; + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0 && + (control & (CSS_IPV4 | CSS_IPFRAG)) == CSS_IPV4) { + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if ((control & CSS_IPV4_CSUM_OK) != 0) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if ((control & (CSS_TCP | CSS_UDP)) != 0 && + (control & (CSS_TCPUDP_CSUM_OK)) != 0) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID | + CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + } + } /* Check for VLAN tagged packets. */ if ((status & GMR_FS_VLAN) != 0 && (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) { @@ -3379,9 +3426,9 @@ msk_handle_events(struct msk_softc *sc) case OP_RXSTAT: if (sc_if->msk_framesize > (MCLBYTES - MSK_RX_BUF_ALIGN)) - msk_jumbo_rxeof(sc_if, status, len); + msk_jumbo_rxeof(sc_if, status, control, len); else - msk_rxeof(sc_if, status, len); + msk_rxeof(sc_if, status, control, len); rxprog++; /* * Because there is no way to sync single Rx LE Modified: head/sys/dev/msk/if_mskreg.h ============================================================================== --- head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:47:28 2009 (r193297) +++ head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:59:29 2009 (r193298) @@ -2255,8 +2255,19 @@ struct msk_stat_desc { #define OP_PUTIDX 0x70000000 #define STLE_OP_MASK 0xff000000 +#define STLE_CSS_MASK 0x00ff0000 #define STLE_LEN_MASK 0x0000ffff +/* CSS defined in status LE(valid for descriptor V2 format). */ +#define CSS_TCPUDP_CSUM_OK 0x00800000 +#define CSS_UDP 0x00400000 +#define CSS_TCP 0x00200000 +#define CSS_IPFRAG 0x00100000 +#define CSS_IPV6 0x00080000 +#define CSS_IPV4_CSUM_OK 0x00040000 +#define CSS_IPV4 0x00020000 +#define CSS_PORT 0x00010000 + /* Descriptor Bit Definition */ /* TxCtrl Transmit Buffer Control Field */ /* RxCtrl Receive Buffer Control Field */ @@ -2505,6 +2516,7 @@ struct msk_if_softc { #define MSK_FLAG_AUTOTX_CSUM 0x0080 #define MSK_FLAG_NOHWVLAN 0x0100 #define MSK_FLAG_NORXCHK 0x0200 +#define MSK_FLAG_NORX_CSUM 0x0400 #define MSK_FLAG_SUSPEND 0x2000 #define MSK_FLAG_DETACH 0x4000 #define MSK_FLAG_LINK 0x8000 From yongari at FreeBSD.org Tue Jun 2 05:08:58 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 05:09:05 2009 Subject: svn commit: r193299 - head/sys/dev/msk Message-ID: <200906020508.n5258vOe003326@svn.freebsd.org> Author: yongari Date: Tue Jun 2 05:08:57 2009 New Revision: 193299 URL: http://svn.freebsd.org/changeset/base/193299 Log: Add Yukon Extreme device ids, 88E8071 and 88E8072. While I'm here correct description of 88E8070. 88E8070 is Yukon Extreme and have gigabit PHY. Modified: head/sys/dev/msk/if_msk.c head/sys/dev/msk/if_mskreg.h Modified: head/sys/dev/msk/if_msk.c ============================================================================== --- head/sys/dev/msk/if_msk.c Tue Jun 2 04:59:29 2009 (r193298) +++ head/sys/dev/msk/if_msk.c Tue Jun 2 05:08:57 2009 (r193299) @@ -203,8 +203,6 @@ static struct msk_product { "Marvell Yukon 88E8040T Fast Ethernet" }, { VENDORID_MARVELL, DEVICEID_MRVL_8048, "Marvell Yukon 88E8048 Fast Ethernet" }, - { VENDORID_MARVELL, DEVICEID_MRVL_8070, - "Marvell Yukon 88E8070 Fast Ethernet" }, { VENDORID_MARVELL, DEVICEID_MRVL_4361, "Marvell Yukon 88E8050 Gigabit Ethernet" }, { VENDORID_MARVELL, DEVICEID_MRVL_4360, @@ -215,8 +213,14 @@ static struct msk_product { "Marvell Yukon 88E8055 Gigabit Ethernet" }, { VENDORID_MARVELL, DEVICEID_MRVL_4364, "Marvell Yukon 88E8056 Gigabit Ethernet" }, + { VENDORID_MARVELL, DEVICEID_MRVL_4365, + "Marvell Yukon 88E8070 Gigabit Ethernet" }, { VENDORID_MARVELL, DEVICEID_MRVL_436A, "Marvell Yukon 88E8058 Gigabit Ethernet" }, + { VENDORID_MARVELL, DEVICEID_MRVL_436B, + "Marvell Yukon 88E8071 Gigabit Ethernet" }, + { VENDORID_MARVELL, DEVICEID_MRVL_436C, + "Marvell Yukon 88E8072 Gigabit Ethernet" }, { VENDORID_DLINK, DEVICEID_DLINK_DGE550SX, "D-Link 550SX Gigabit Ethernet" }, { VENDORID_DLINK, DEVICEID_DLINK_DGE560T, Modified: head/sys/dev/msk/if_mskreg.h ============================================================================== --- head/sys/dev/msk/if_mskreg.h Tue Jun 2 04:59:29 2009 (r193298) +++ head/sys/dev/msk/if_mskreg.h Tue Jun 2 05:08:57 2009 (r193299) @@ -139,8 +139,10 @@ #define DEVICEID_MRVL_4362 0x4362 #define DEVICEID_MRVL_4363 0x4363 #define DEVICEID_MRVL_4364 0x4364 -#define DEVICEID_MRVL_8070 0x4365 +#define DEVICEID_MRVL_4365 0x4365 #define DEVICEID_MRVL_436A 0x436A +#define DEVICEID_MRVL_436B 0x436B +#define DEVICEID_MRVL_436C 0x436C /* * D-Link gigabit ethernet device ID From yongari at FreeBSD.org Tue Jun 2 05:13:03 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Tue Jun 2 05:13:15 2009 Subject: svn commit: r193300 - head/share/man/man4 Message-ID: <200906020513.n525D2Oe003472@svn.freebsd.org> Author: yongari Date: Tue Jun 2 05:13:02 2009 New Revision: 193300 URL: http://svn.freebsd.org/changeset/base/193300 Log: Add 88E8071, 88E8072 to the supported hardware list. While I'm here correct description of 88E8070. It's Yukon Extreme and have gigabit PHY. Modified: head/share/man/man4/msk.4 Modified: head/share/man/man4/msk.4 ============================================================================== --- head/share/man/man4/msk.4 Tue Jun 2 05:08:57 2009 (r193299) +++ head/share/man/man4/msk.4 Tue Jun 2 05:13:02 2009 (r193300) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 25, 2009 +.Dd June 2, 2009 .Dt MSK 4 .Os .Sh NAME @@ -202,7 +202,11 @@ Marvell Yukon 88E8056 Gigabit Ethernet .It Marvell Yukon 88E8058 Gigabit Ethernet .It -Marvell Yukon 88E8070 Fast Ethernet +Marvell Yukon 88E8070 Gigabit Ethernet +.It +Marvell Yukon 88E8071 Gigabit Ethernet +.It +Marvell Yukon 88E8072 Gigabit Ethernet .It SysKonnect SK-9Sxx Gigabit Ethernet .It From jeff at FreeBSD.org Tue Jun 2 06:55:33 2009 From: jeff at FreeBSD.org (Jeff Roberson) Date: Tue Jun 2 06:55:39 2009 Subject: svn commit: r193301 - head/sys/kern Message-ID: <200906020655.n526tWQH005450@svn.freebsd.org> Author: jeff Date: Tue Jun 2 06:55:32 2009 New Revision: 193301 URL: http://svn.freebsd.org/changeset/base/193301 Log: - Use an acquire barrier to increment f_count in fget_unlocked and remove the volatile cast. Describe the reason in detail in a comment. Discussed with: bde, jhb Modified: head/sys/kern/kern_descrip.c Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Tue Jun 2 05:13:02 2009 (r193300) +++ head/sys/kern/kern_descrip.c Tue Jun 2 06:55:32 2009 (r193301) @@ -2075,9 +2075,13 @@ fget_unlocked(struct filedesc *fdp, int count = fp->f_count; if (count == 0) continue; - if (atomic_cmpset_int(&fp->f_count, count, count + 1) != 1) + /* + * Use an acquire barrier to prevent caching of fd_ofiles + * so it is refreshed for verification. + */ + if (atomic_cmpset_acq_int(&fp->f_count, count, count + 1) != 1) continue; - if (fp == ((struct file *volatile*)fdp->fd_ofiles)[fd]) + if (fp == fdp->fd_ofiles[fd]) break; fdrop(fp, curthread); } From brian at FreeBSD.org Tue Jun 2 07:35:52 2009 From: brian at FreeBSD.org (Brian Somers) Date: Tue Jun 2 07:36:04 2009 Subject: svn commit: r193302 - head/etc/periodic/daily Message-ID: <200906020735.n527Zppv006238@svn.freebsd.org> Author: brian Date: Tue Jun 2 07:35:51 2009 New Revision: 193302 URL: http://svn.freebsd.org/changeset/base/193302 Log: Rather than using both -prune (which requires directory-first tree traversal) and -delete (which implies depth-first traversal), avoid using -delete in favour of -execdir. This has a side-effect of not removing directories that contain files, even if we delete all of those files, but IMHO that's a better option than specifying all possible local filesystem types in this script. PR: 122811 MFC after: 3 weeks Modified: head/etc/periodic/daily/100.clean-disks Modified: head/etc/periodic/daily/100.clean-disks ============================================================================== --- head/etc/periodic/daily/100.clean-disks Tue Jun 2 06:55:32 2009 (r193301) +++ head/etc/periodic/daily/100.clean-disks Tue Jun 2 07:35:51 2009 (r193302) @@ -29,7 +29,7 @@ case "$daily_clean_disks_enable" in echo "" echo "Cleaning disks:" set -f noglob - args="$args -name "`echo "$daily_clean_disks_files" | + args="-name "`echo "$daily_clean_disks_files" | sed -e 's/^[ ]*//' \ -e 's/[ ]*$//' \ -e 's/[ ][ ]*/ -o -name /g'` @@ -41,9 +41,9 @@ case "$daily_clean_disks_enable" in print=;; esac - rc=$(find / \( ! -fstype local -o -fstype rdonly \) -a -prune -o \ - \( $args \) -atime +$daily_clean_disks_days -delete $print | - tee /dev/stderr | wc -l) + rc=$(find / \( ! -fstype local -o -fstype rdonly \) -prune -o \ + \( $args \) -atime +$daily_clean_disks_days \ + -execdir rm -df {} \; $print | tee /dev/stderr | wc -l) [ -z "$print" ] && rc=0 [ $rc -gt 1 ] && rc=1 set -f glob From brian at Awfulhak.org Tue Jun 2 07:50:09 2009 From: brian at Awfulhak.org (Brian Somers) Date: Tue Jun 2 07:50:15 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <4A23E6E4.7020506@incunabulum.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> Message-ID: <20090602002149.1d7822b2@dev.lan.Awfulhak.org> On Mon, 01 Jun 2009 15:34:12 +0100 Bruce Simpson wrote: > Doug Barton wrote: > > Log: > > Eliminate the warning that "Values of network_interfaces other than > > AUTO are deprecated.' There is no good reason to deprecate them, and > > setting this to different values can be useful for custom solutions > > and/or one-off configuration problems. > > > > Thanks, I wasn't sure what the alternative to this functionality was > going to be, and was relying on this mechanism for a product. +1 - I rely on it to handle renamed interfaces properly (ifconfig -l gives different answers before and after the rename(s)). -- Brian Somers Don't _EVER_ lose your sense of humour ! From alc at FreeBSD.org Tue Jun 2 08:02:28 2009 From: alc at FreeBSD.org (Alan Cox) Date: Tue Jun 2 08:02:40 2009 Subject: svn commit: r193303 - in head/sys: kern vm Message-ID: <200906020802.n5282RM0006794@svn.freebsd.org> Author: alc Date: Tue Jun 2 08:02:27 2009 New Revision: 193303 URL: http://svn.freebsd.org/changeset/base/193303 Log: Correct a boundary case error in the management of a page's dirty bits by shm_dotruncate() and vnode_pager_setsize(). Specifically, if the length of a shared memory object or a file is truncated such that the length modulo the page size is between 1 and 511, then all of the page's dirty bits were cleared. Now, a dirty bit is cleared only if the corresponding block is truncated in its entirety. Modified: head/sys/kern/uipc_shm.c head/sys/vm/vnode_pager.c Modified: head/sys/kern/uipc_shm.c ============================================================================== --- head/sys/kern/uipc_shm.c Tue Jun 2 07:35:51 2009 (r193302) +++ head/sys/kern/uipc_shm.c Tue Jun 2 08:02:27 2009 (r193303) @@ -274,7 +274,7 @@ shm_dotruncate(struct shmfd *shmfd, off_ /* * If the last page is partially mapped, then zero out * the garbage at the end of the page. See comments - * in vnode_page_setsize() for more details. + * in vnode_pager_setsize() for more details. * * XXXJHB: This handles in memory pages, but what about * a page swapped out to disk? @@ -286,10 +286,23 @@ shm_dotruncate(struct shmfd *shmfd, off_ int size = PAGE_SIZE - base; pmap_zero_page_area(m, base, size); + + /* + * Update the valid bits to reflect the blocks that + * have been zeroed. Some of these valid bits may + * have already been set. + */ + vm_page_set_valid(m, base, size); + + /* + * Round "base" to the next block boundary so that the + * dirty bit for a partially zeroed block is not + * cleared. + */ + base = roundup2(base, DEV_BSIZE); + vm_page_lock_queues(); - vm_page_set_validclean(m, base, size); - if (m->dirty != 0) - m->dirty = VM_PAGE_BITS_ALL; + vm_page_clear_dirty(m, base, PAGE_SIZE - base); vm_page_unlock_queues(); } else if ((length & PAGE_MASK) && __predict_false(object->cache != NULL)) { Modified: head/sys/vm/vnode_pager.c ============================================================================== --- head/sys/vm/vnode_pager.c Tue Jun 2 07:35:51 2009 (r193302) +++ head/sys/vm/vnode_pager.c Tue Jun 2 08:02:27 2009 (r193303) @@ -403,22 +403,28 @@ vnode_pager_setsize(vp, nsize) pmap_zero_page_area(m, base, size); /* - * Clear out partial-page dirty bits. This - * has the side effect of setting the valid - * bits, but that is ok. There are a bunch - * of places in the VM system where we expected - * m->dirty == VM_PAGE_BITS_ALL. The file EOF - * case is one of them. If the page is still - * partially dirty, make it fully dirty. + * Update the valid bits to reflect the blocks that + * have been zeroed. Some of these valid bits may + * have already been set. + */ + vm_page_set_valid(m, base, size); + + /* + * Round "base" to the next block boundary so that the + * dirty bit for a partially zeroed block is not + * cleared. + */ + base = roundup2(base, DEV_BSIZE); + + /* + * Clear out partial-page dirty bits. * * note that we do not clear out the valid * bits. This would prevent bogus_page * replacement from working properly. */ vm_page_lock_queues(); - vm_page_set_validclean(m, base, size); - if (m->dirty != 0) - m->dirty = VM_PAGE_BITS_ALL; + vm_page_clear_dirty(m, base, PAGE_SIZE - base); vm_page_unlock_queues(); } else if ((nsize & PAGE_MASK) && __predict_false(object->cache != NULL)) { From brian at FreeBSD.org Tue Jun 2 09:25:57 2009 From: brian at FreeBSD.org (Brian Somers) Date: Tue Jun 2 09:26:09 2009 Subject: svn commit: r193304 - in stable/7/share/examples: . ppp Message-ID: <200906020925.n529PuA5008528@svn.freebsd.org> Author: brian Date: Tue Jun 2 09:25:56 2009 New Revision: 193304 URL: http://svn.freebsd.org/changeset/base/193304 Log: MFC: Mention the danger of running programs using ``!''. PR: 112481 Modified: stable/7/share/examples/ (props changed) stable/7/share/examples/ppp/ppp.linkup.sample Modified: stable/7/share/examples/ppp/ppp.linkup.sample ============================================================================== --- stable/7/share/examples/ppp/ppp.linkup.sample Tue Jun 2 08:02:27 2009 (r193303) +++ stable/7/share/examples/ppp/ppp.linkup.sample Tue Jun 2 09:25:56 2009 (r193304) @@ -30,11 +30,16 @@ MYADDR: 192.244.176.32: add 192.244.176.0 0 HISADDR -#You may want to execute a script after connecting. This script can do +# You may want to execute a script after connecting. This script can do # nice things such as kick off "sendmail -q", "popclient my.isp" and # "slurp -d news". It can be passed MYADDR, HISADDR and INTERFACE # as arguments too - useful for informing a DNS of your assigned IP. # +# NOTE: It's vital that you use ``!bg'' rather than ``!'' if the program +# you're running will take some time or will require network +# connectivity. Using ``!'' will delay ppp 'till the completion +# of the program being run! +# # You may also want some sound effects.... # pmdemand: From rwatson at FreeBSD.org Tue Jun 2 09:58:18 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Tue Jun 2 09:58:25 2009 Subject: svn commit: r193305 - head/sys/dev/puc Message-ID: <200906020958.n529wImV009198@svn.freebsd.org> Author: rwatson Date: Tue Jun 2 09:58:17 2009 New Revision: 193305 URL: http://svn.freebsd.org/changeset/base/193305 Log: Add support for the four PUC serial interfaces found on IBM SurePOS 300 series POS terminals. MFC after: 3 days Submitted by: Marc Balmer Modified: head/sys/dev/puc/pucdata.c Modified: head/sys/dev/puc/pucdata.c ============================================================================== --- head/sys/dev/puc/pucdata.c Tue Jun 2 09:25:56 2009 (r193304) +++ head/sys/dev/puc/pucdata.c Tue Jun 2 09:58:17 2009 (r193305) @@ -234,6 +234,17 @@ const struct puc_cfg puc_pci_devices[] = }, /* + * IBM SurePOS 300 Series (481033H) serial ports + * Details can be found on the IBM RSS websites + */ + + { 0x1014, 0x0297, 0xffff, 0, + "IBM SurePOS 300 Series (481033H) serial ports", + DEFAULT_RCLK, + PUC_PORT_4S, 0x10, 4, 0 + }, + + /* * SIIG Boards. * * SIIG provides documentation for their boards at: From jhay at meraka.org.za Tue Jun 2 12:06:16 2009 From: jhay at meraka.org.za (John Hay) Date: Tue Jun 2 12:06:23 2009 Subject: svn2cvs down? was: svn commit: r193282 - stable/7/sys/libkern In-Reply-To: <200906012209.n51M9gTU094161@svn.freebsd.org> References: <200906012209.n51M9gTU094161@svn.freebsd.org> Message-ID: <20090602120608.GA98052@zibbi.meraka.csir.co.za> Hi Guys, Is there something wrong with the svn to cvs gateway? At least this commit has not pitched on the cvs side. Who should one contact about it? John -- John Hay -- John.Hay@meraka.csir.co.za / jhay@FreeBSD.org On Mon, Jun 01, 2009 at 10:09:42PM +0000, Kip Macy wrote: > Author: kmacy > Date: Mon Jun 1 22:09:42 2009 > New Revision: 193282 > URL: http://svn.freebsd.org/changeset/base/193282 > > Log: > memmove is defined in support.S on arm - don't compile in > > Modified: > stable/7/sys/libkern/memmove.c > > Modified: stable/7/sys/libkern/memmove.c > ============================================================================== > --- stable/7/sys/libkern/memmove.c Mon Jun 1 22:05:08 2009 (r193281) > +++ stable/7/sys/libkern/memmove.c Mon Jun 1 22:09:42 2009 (r193282) > @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); > > #include > > +#if !defined(__arm__) > void * > memmove(void *dest, const void *src, size_t n) > { > @@ -36,3 +37,4 @@ memmove(void *dest, const void *src, siz > bcopy(src, dest, n); > return (dest); > } > +#endif From jhb at FreeBSD.org Tue Jun 2 12:35:05 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Tue Jun 2 12:35:11 2009 Subject: svn commit: r193306 - head/sys/dev/pci Message-ID: <200906021235.n52CZ4BF015807@svn.freebsd.org> Author: jhb Date: Tue Jun 2 12:35:04 2009 New Revision: 193306 URL: http://svn.freebsd.org/changeset/base/193306 Log: Include for va_*(). I'm not sure how this compiled on amd64 without this. Modified: head/sys/dev/pci/pci.c Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Tue Jun 2 09:58:17 2009 (r193305) +++ head/sys/dev/pci/pci.c Tue Jun 2 12:35:04 2009 (r193306) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #if defined(__i386__) || defined(__amd64__) #include From attilio at FreeBSD.org Tue Jun 2 13:03:36 2009 From: attilio at FreeBSD.org (Attilio Rao) Date: Tue Jun 2 13:03:43 2009 Subject: svn commit: r193307 - in head/sys: kern sys ufs/ffs Message-ID: <200906021303.n52D3ZwD016385@svn.freebsd.org> Author: attilio Date: Tue Jun 2 13:03:35 2009 New Revision: 193307 URL: http://svn.freebsd.org/changeset/base/193307 Log: Handle lock recursion differenty by always checking against LO_RECURSABLE instead the lock own flag itself. Tested by: pho Modified: head/sys/kern/kern_lock.c head/sys/kern/kern_rwlock.c head/sys/kern/kern_sx.c head/sys/sys/vnode.h head/sys/ufs/ffs/ffs_softdep.c Modified: head/sys/kern/kern_lock.c ============================================================================== --- head/sys/kern/kern_lock.c Tue Jun 2 12:35:04 2009 (r193306) +++ head/sys/kern/kern_lock.c Tue Jun 2 13:03:35 2009 (r193307) @@ -51,8 +51,7 @@ __FBSDID("$FreeBSD$"); #include #endif -CTASSERT(((LK_CANRECURSE | LK_NOSHARE) & LO_CLASSFLAGS) == - (LK_CANRECURSE | LK_NOSHARE)); +CTASSERT((LK_NOSHARE & LO_CLASSFLAGS) == LK_NOSHARE); #define SQ_EXCLUSIVE_QUEUE 0 #define SQ_SHARED_QUEUE 1 @@ -316,7 +315,9 @@ lockinit(struct lock *lk, int pri, const MPASS((flags & ~LK_INIT_MASK) == 0); - iflags = LO_RECURSABLE | LO_SLEEPABLE | LO_UPGRADABLE; + iflags = LO_SLEEPABLE | LO_UPGRADABLE; + if (flags & LK_CANRECURSE) + iflags |= LO_RECURSABLE; if ((flags & LK_NODUP) == 0) iflags |= LO_DUPOK; if (flags & LK_NOPROFILE) @@ -325,7 +326,7 @@ lockinit(struct lock *lk, int pri, const iflags |= LO_WITNESS; if (flags & LK_QUIET) iflags |= LO_QUIET; - iflags |= flags & (LK_CANRECURSE | LK_NOSHARE); + iflags |= flags & LK_NOSHARE; lk->lk_lock = LK_UNLOCKED; lk->lk_recurse = 0; @@ -530,7 +531,7 @@ __lockmgr_args(struct lock *lk, u_int fl */ if (lockmgr_xlocked(lk)) { if ((flags & LK_CANRECURSE) == 0 && - (lk->lock_object.lo_flags & LK_CANRECURSE) == 0) { + (lk->lock_object.lo_flags & LO_RECURSABLE) == 0) { /* * If the lock is expected to not panic just Modified: head/sys/kern/kern_rwlock.c ============================================================================== --- head/sys/kern/kern_rwlock.c Tue Jun 2 12:35:04 2009 (r193306) +++ head/sys/kern/kern_rwlock.c Tue Jun 2 13:03:35 2009 (r193307) @@ -51,8 +51,6 @@ __FBSDID("$FreeBSD$"); #include -CTASSERT((RW_RECURSE & LO_CLASSFLAGS) == RW_RECURSE); - #if defined(SMP) && !defined(NO_ADAPTIVE_RWLOCKS) #define ADAPTIVE_RWLOCKS #endif @@ -177,16 +175,17 @@ rw_init_flags(struct rwlock *rw, const c MPASS((opts & ~(RW_DUPOK | RW_NOPROFILE | RW_NOWITNESS | RW_QUIET | RW_RECURSE)) == 0); - flags = LO_UPGRADABLE | LO_RECURSABLE; + flags = LO_UPGRADABLE; if (opts & RW_DUPOK) flags |= LO_DUPOK; if (opts & RW_NOPROFILE) flags |= LO_NOPROFILE; if (!(opts & RW_NOWITNESS)) flags |= LO_WITNESS; + if (opts & RW_RECURSE) + flags |= LO_RECURSABLE; if (opts & RW_QUIET) flags |= LO_QUIET; - flags |= opts & RW_RECURSE; rw->rw_lock = RW_UNLOCKED; rw->rw_recurse = 0; @@ -249,7 +248,8 @@ _rw_try_wlock(struct rwlock *rw, const c KASSERT(rw->rw_lock != RW_DESTROYED, ("rw_try_wlock() of destroyed rwlock @ %s:%d", file, line)); - if (rw_wlocked(rw) && (rw->lock_object.lo_flags & RW_RECURSE) != 0) { + if (rw_wlocked(rw) && + (rw->lock_object.lo_flags & LO_RECURSABLE) != 0) { rw->rw_recurse++; rval = 1; } else @@ -646,7 +646,7 @@ _rw_wlock_hard(struct rwlock *rw, uintpt #endif if (rw_wlocked(rw)) { - KASSERT(rw->lock_object.lo_flags & RW_RECURSE, + KASSERT(rw->lock_object.lo_flags & LO_RECURSABLE, ("%s: recursing but non-recursive rw %s @ %s:%d\n", __func__, rw->lock_object.lo_name, file, line)); rw->rw_recurse++; Modified: head/sys/kern/kern_sx.c ============================================================================== --- head/sys/kern/kern_sx.c Tue Jun 2 12:35:04 2009 (r193306) +++ head/sys/kern/kern_sx.c Tue Jun 2 13:03:35 2009 (r193307) @@ -66,8 +66,7 @@ __FBSDID("$FreeBSD$"); #define ADAPTIVE_SX #endif -CTASSERT(((SX_NOADAPTIVE | SX_RECURSE) & LO_CLASSFLAGS) == - (SX_NOADAPTIVE | SX_RECURSE)); +CTASSERT((SX_NOADAPTIVE & LO_CLASSFLAGS) == SX_NOADAPTIVE); /* Handy macros for sleep queues. */ #define SQ_EXCLUSIVE_QUEUE 0 @@ -207,17 +206,19 @@ sx_init_flags(struct sx *sx, const char MPASS((opts & ~(SX_QUIET | SX_RECURSE | SX_NOWITNESS | SX_DUPOK | SX_NOPROFILE | SX_NOADAPTIVE)) == 0); - flags = LO_RECURSABLE | LO_SLEEPABLE | LO_UPGRADABLE; + flags = LO_SLEEPABLE | LO_UPGRADABLE; if (opts & SX_DUPOK) flags |= LO_DUPOK; if (opts & SX_NOPROFILE) flags |= LO_NOPROFILE; if (!(opts & SX_NOWITNESS)) flags |= LO_WITNESS; + if (opts & SX_RECURSE) + flags |= LO_RECURSABLE; if (opts & SX_QUIET) flags |= LO_QUIET; - flags |= opts & (SX_NOADAPTIVE | SX_RECURSE); + flags |= opts & SX_NOADAPTIVE; sx->sx_lock = SX_LOCK_UNLOCKED; sx->sx_recurse = 0; lock_init(&sx->lock_object, &lock_class_sx, description, NULL, flags); @@ -305,7 +306,8 @@ _sx_try_xlock(struct sx *sx, const char KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, ("sx_try_xlock() of destroyed sx @ %s:%d", file, line)); - if (sx_xlocked(sx) && (sx->lock_object.lo_flags & SX_RECURSE) != 0) { + if (sx_xlocked(sx) && + (sx->lock_object.lo_flags & LO_RECURSABLE) != 0) { sx->sx_recurse++; atomic_set_ptr(&sx->sx_lock, SX_LOCK_RECURSED); rval = 1; @@ -479,7 +481,7 @@ _sx_xlock_hard(struct sx *sx, uintptr_t /* If we already hold an exclusive lock, then recurse. */ if (sx_xlocked(sx)) { - KASSERT((sx->lock_object.lo_flags & SX_RECURSE) != 0, + KASSERT((sx->lock_object.lo_flags & LO_RECURSABLE) != 0, ("_sx_xlock_hard: recursed on non-recursive sx %s @ %s:%d\n", sx->lock_object.lo_name, file, line)); sx->sx_recurse++; Modified: head/sys/sys/vnode.h ============================================================================== --- head/sys/sys/vnode.h Tue Jun 2 12:35:04 2009 (r193306) +++ head/sys/sys/vnode.h Tue Jun 2 13:03:35 2009 (r193307) @@ -419,7 +419,7 @@ extern struct vattr va_null; /* predefi #define VI_MTX(vp) (&(vp)->v_interlock) #define VN_LOCK_AREC(vp) \ - ((vp)->v_vnlock->lock_object.lo_flags |= LK_CANRECURSE) + ((vp)->v_vnlock->lock_object.lo_flags |= LO_RECURSABLE) #define VN_LOCK_ASHARE(vp) \ ((vp)->v_vnlock->lock_object.lo_flags &= ~LK_NOSHARE) Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Tue Jun 2 12:35:04 2009 (r193306) +++ head/sys/ufs/ffs/ffs_softdep.c Tue Jun 2 13:03:35 2009 (r193307) @@ -556,8 +556,8 @@ MTX_SYSINIT(softdep_lock, &lk, "Softdep #define ACQUIRE_LOCK(lk) mtx_lock(lk) #define FREE_LOCK(lk) mtx_unlock(lk) -#define BUF_AREC(bp) ((bp)->b_lock.lock_object.lo_flags |= LK_CANRECURSE) -#define BUF_NOREC(bp) ((bp)->b_lock.lock_object.lo_flags &= ~LK_CANRECURSE) +#define BUF_AREC(bp) ((bp)->b_lock.lock_object.lo_flags |= LO_RECURSABLE) +#define BUF_NOREC(bp) ((bp)->b_lock.lock_object.lo_flags &= ~LO_RECURSABLE) /* * Worklist queue management. From ed at FreeBSD.org Tue Jun 2 13:44:37 2009 From: ed at FreeBSD.org (Ed Schouten) Date: Tue Jun 2 13:44:44 2009 Subject: svn commit: r193308 - in head: . usr.bin usr.bin/window Message-ID: <200906021344.n52Dia3s017267@svn.freebsd.org> Author: ed Date: Tue Jun 2 13:44:36 2009 New Revision: 193308 URL: http://svn.freebsd.org/changeset/base/193308 Log: Remove window(1) from the base system. Some time ago Tom Rhodes sent me an email that he was willing to perform various cleanups to the window(1) source code. After some discussion, we both decided the best thing to do, was to move window(1) to the ports tree. The application isn't used a lot nowadays, mainly because it has been superseeded by screen, tmux, etc. A couple of hours ago Tom committed window(1) to ports (misc/window), so I'm removing it from the tree. I don't think people will really miss it, but I'm describing the change in UPDATING anyway. Discussed with: trhodes, pav, kib Approved by: re Deleted: head/usr.bin/window/ Modified: head/ObsoleteFiles.inc head/UPDATING head/usr.bin/Makefile Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Tue Jun 2 13:03:35 2009 (r193307) +++ head/ObsoleteFiles.inc Tue Jun 2 13:44:36 2009 (r193308) @@ -14,6 +14,9 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090602: removal of window(1) +OLD_FILES+=usr/bin/window +OLD_FILES+=usr/share/man/man1/window.1.gz # 20090530: removal of early.sh OLD_FILES+=etc/rc.d/early.sh # 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER() Modified: head/UPDATING ============================================================================== --- head/UPDATING Tue Jun 2 13:03:35 2009 (r193307) +++ head/UPDATING Tue Jun 2 13:44:36 2009 (r193308) @@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090602: + window(1) has been removed from the base system. It can now be + installed from ports. The port is called misc/window. + 20090601: The way we are storing and accessing `routing table' entries has changed. Programs reading the FIB, like netstat, need to Modified: head/usr.bin/Makefile ============================================================================== --- head/usr.bin/Makefile Tue Jun 2 13:03:35 2009 (r193307) +++ head/usr.bin/Makefile Tue Jun 2 13:44:36 2009 (r193308) @@ -222,7 +222,6 @@ SUBDIR= alias \ which \ who \ whois \ - window \ write \ xargs \ xinstall \ From gallatin at cs.duke.edu Tue Jun 2 14:26:03 2009 From: gallatin at cs.duke.edu (Andrew Gallatin) Date: Tue Jun 2 14:26:10 2009 Subject: svn commit: r193275 - in head/sys: kern sys vm In-Reply-To: <200906012132.n51LWq2U092924@svn.freebsd.org> References: <200906012132.n51LWq2U092924@svn.freebsd.org> Message-ID: <4A253627.4090505@cs.duke.edu> John Baldwin wrote: > Author: jhb > Date: Mon Jun 1 21:32:52 2009 > New Revision: 193275 > URL: http://svn.freebsd.org/changeset/base/193275 > > Log: > Add an extension to the character device interface that allows character > device drivers to use arbitrary VM objects to satisfy individual mmap() > requests. Is there an example usage of this? Was this one of the things that Nvidia asked for? Thanks, Drew From jhb at freebsd.org Tue Jun 2 15:11:49 2009 From: jhb at freebsd.org (John Baldwin) Date: Tue Jun 2 15:12:00 2009 Subject: svn commit: r193275 - in head/sys: kern sys vm In-Reply-To: <4A253627.4090505@cs.duke.edu> References: <200906012132.n51LWq2U092924@svn.freebsd.org> <4A253627.4090505@cs.duke.edu> Message-ID: <200906021110.40347.jhb@freebsd.org> On Tuesday 02 June 2009 10:24:39 am Andrew Gallatin wrote: > John Baldwin wrote: > > Author: jhb > > Date: Mon Jun 1 21:32:52 2009 > > New Revision: 193275 > > URL: http://svn.freebsd.org/changeset/base/193275 > > > > Log: > > Add an extension to the character device interface that allows character > > device drivers to use arbitrary VM objects to satisfy individual mmap() > > requests. > > Is there an example usage of this? Was this one of the things that > Nvidia asked for? Yes, this is for Nvidia. I have a bizarr-o test device in //depot/user/jhb/pat/modules/patdev/patdev.c. It exports a single anonymous memory object for mappings that use an offset at page 0 and a OBJT_SG (new type of VM object) object that maps the local APIC for mappings that use an offset at page 1. It's d_mmap_single() routine looks like this: static int pat_mmap_single(struct cdev *dev, vm_ooffset_t *offset, vm_size_t size, vm_object_t *object, int nprot) { struct patdev_softc *sc; int error; sc = dev->si_drv1; error = 0; sx_xlock(&sc->lock); switch (*offset) { case 0: /* * The first mmap() attempt with an offset of 0 creates * a new memory object with the requested size. Subsequent * mmap()'s map the same object. */ if (sc->mem == NULL) { /* * Note that this does not wire any backing * pages. I could do that later before a DMA * was started by wiring pages (even just * using the userland mapping to do that) * while the DMA was in-progress and unwiring * them later. */ sc->mem = vm_pager_allocate(OBJT_DEFAULT, NULL, size, VM_PROT_DEFAULT, 0); VM_OBJECT_LOCK(sc->mem); vm_object_clear_flag(sc->mem, OBJ_ONEMAPPING); vm_object_set_flag(sc->mem, OBJ_NOSPLIT); vm_object_set_cache_mode(sc->mem, VM_CACHE_WRITE_COMBINING); VM_OBJECT_UNLOCK(sc->mem); } vm_object_reference(sc->mem); *object = sc->mem; break; case PAGE_SIZE: /* Map the local APIC. */ vm_object_reference(sc->sgobj); *object = sc->sgobj; *offset = 0; break; default: /* Use ENODEV to fallback to d_mmap(). */ error = EINVAL; break; } sx_xunlock(&sc->lock); return (error); } The 'sgobj' object is created when the module is loaded: static int pat_attach(struct patdev_softc *sc) { vm_offset_t va; int rv; bzero(sc, sizeof(*sc)); sx_init(&sc->lock, "patdev"); sc->cdev = make_dev(&pat_devsw, 0, UID_ROOT, GID_WHEEL, 0640, "pat"); sc->cdev->si_drv1 = sc; /* Create a scatter/gather list that maps the local APIC. */ sc->sg = sglist_alloc(1, M_WAITOK); sglist_append_phys(sc->sg, lapic_paddr, LAPIC_LEN); /* Create a VM object that is backed by the scatter/gather list. */ sc->sgobj = vm_pager_allocate(OBJT_SG, sc->sg, LAPIC_LEN, VM_PROT_READ, 0); VM_OBJECT_LOCK(sc->sgobj); vm_object_set_cache_mode(sc->sgobj, VM_CACHE_UNCACHEABLE); VM_OBJECT_UNLOCK(sc->sgobj); ... } -- John Baldwin From brooks at FreeBSD.org Tue Jun 2 15:27:12 2009 From: brooks at FreeBSD.org (Brooks Davis) Date: Tue Jun 2 15:27:24 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <20090602002149.1d7822b2@dev.lan.Awfulhak.org> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> <20090602002149.1d7822b2@dev.lan.Awfulhak.org> Message-ID: <20090602152718.GA14685@lor.one-eyed-alien.net> On Tue, Jun 02, 2009 at 12:21:49AM -0700, Brian Somers wrote: > On Mon, 01 Jun 2009 15:34:12 +0100 Bruce Simpson wrote: > > Doug Barton wrote: > > > Log: > > > Eliminate the warning that "Values of network_interfaces other than > > > AUTO are deprecated.' There is no good reason to deprecate them, and > > > setting this to different values can be useful for custom solutions > > > and/or one-off configuration problems. > > > > > > > Thanks, I wasn't sure what the alternative to this functionality was > > going to be, and was relying on this mechanism for a product. > > +1 - I rely on it to handle renamed interfaces properly (ifconfig -l > gives different answers before and after the rename(s)). That's a supported configuration with network_interfaces=AUTO. I use it on the server I'm writing this from. For instance you can do something like: ifconfig_fxp0_name="iatel" ifconfig_iatel="up" ipv4_addrs_iatel="#.#.#.#/26" ifconfig_em0_name="priv" ifconfig_priv="inet 192.168.1.100 netmask 255.255.255.0" The use of ipv4_addrs_iatel is mostly just testing the feature. -- Brooks -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090602/277dae01/attachment.pgp From brooks at FreeBSD.org Tue Jun 2 15:27:30 2009 From: brooks at FreeBSD.org (Brooks Davis) Date: Tue Jun 2 15:27:37 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <4A23E6E4.7020506@incunabulum.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> Message-ID: <20090602152741.GB14685@lor.one-eyed-alien.net> On Mon, Jun 01, 2009 at 03:34:12PM +0100, Bruce Simpson wrote: > Doug Barton wrote: >> Log: >> Eliminate the warning that "Values of network_interfaces other than >> AUTO are deprecated.' There is no good reason to deprecate them, and >> setting this to different values can be useful for custom solutions >> and/or one-off configuration problems. >> > > Thanks, I wasn't sure what the alternative to this functionality was going > to be, and was relying on this mechanism for a product. Could you please say what you are actually doing? -- Brooks -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090602/c1c070fc/attachment.pgp From bms at incunabulum.net Tue Jun 2 15:34:12 2009 From: bms at incunabulum.net (Bruce Simpson) Date: Tue Jun 2 15:34:24 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <20090602152741.GB14685@lor.one-eyed-alien.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> <20090602152741.GB14685@lor.one-eyed-alien.net> Message-ID: <4A25466F.40504@incunabulum.net> Brooks Davis wrote: > On Mon, Jun 01, 2009 at 03:34:12PM +0100, Bruce Simpson wrote: > >> Doug Barton wrote: >> >>> Log: >>> Eliminate the warning that "Values of network_interfaces other than >>> AUTO are deprecated.' There is no good reason to deprecate them, and >>> setting this to different values can be useful for custom solutions >>> and/or one-off configuration problems. >>> >>> >> Thanks, I wasn't sure what the alternative to this functionality was going >> to be, and was relying on this mechanism for a product. >> > > Could you please say what you are actually doing? > On boot time I instantiate a tap0 instance from cloned_interfaces=".." in /etc/rc.conf, and then use ifconfig_tap0="..." to clone the MAC address on the tap instance from the internal Ethernet port, as there is no other way of uniquely identifying the client for an automated bootstrap. This happens from within a flash image. From brooks at FreeBSD.org Tue Jun 2 15:37:09 2009 From: brooks at FreeBSD.org (Brooks Davis) Date: Tue Jun 2 15:37:14 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <4A25466F.40504@incunabulum.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> <20090602152741.GB14685@lor.one-eyed-alien.net> <4A25466F.40504@incunabulum.net> Message-ID: <20090602153719.GD14685@lor.one-eyed-alien.net> On Tue, Jun 02, 2009 at 04:34:07PM +0100, Bruce Simpson wrote: > Brooks Davis wrote: >> On Mon, Jun 01, 2009 at 03:34:12PM +0100, Bruce Simpson wrote: >> >>> Doug Barton wrote: >>> >>>> Log: >>>> Eliminate the warning that "Values of network_interfaces other than >>>> AUTO are deprecated.' There is no good reason to deprecate them, and >>>> setting this to different values can be useful for custom solutions >>>> and/or one-off configuration problems. >>>> >>> Thanks, I wasn't sure what the alternative to this functionality was >>> going to be, and was relying on this mechanism for a product. >>> >> >> Could you please say what you are actually doing? >> > > On boot time I instantiate a tap0 instance from cloned_interfaces=".." in > /etc/rc.conf, and then use ifconfig_tap0="..." to clone the MAC address on > the tap instance from the internal Ethernet port, as there is no other way > of uniquely identifying the client for an automated bootstrap. > > This happens from within a flash image. I see nothing related to network_interfaces here... -- Brooks -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090602/6a340a37/attachment.pgp From bms at incunabulum.net Tue Jun 2 15:45:35 2009 From: bms at incunabulum.net (Bruce Simpson) Date: Tue Jun 2 15:45:47 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <20090602153719.GD14685@lor.one-eyed-alien.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> <20090602152741.GB14685@lor.one-eyed-alien.net> <4A25466F.40504@incunabulum.net> <20090602153719.GD14685@lor.one-eyed-alien.net> Message-ID: <4A25491B.4030406@incunabulum.net> Brooks Davis wrote: > ... >> On boot time I instantiate a tap0 instance from cloned_interfaces=".." in >> /etc/rc.conf, and then use ifconfig_tap0="..." to clone the MAC address on >> the tap instance from the internal Ethernet port, as there is no other way >> of uniquely identifying the client for an automated bootstrap. >> >> This happens from within a flash image. >> > > I see nothing related to network_interfaces here... > I did explicitly name them there, so there would be no automated DHCP setup of any interfaces, even if hot-plugged. Perhaps I am thinking of cloned_interfaces=""... From rwatson at FreeBSD.org Tue Jun 2 15:59:47 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Tue Jun 2 15:59:53 2009 Subject: svn commit: r193309 - head/sys/kern Message-ID: <200906021559.n52FxklU020018@svn.freebsd.org> Author: rwatson Date: Tue Jun 2 15:59:46 2009 New Revision: 193309 URL: http://svn.freebsd.org/changeset/base/193309 Log: Remove unneeded include. MFC after: 3 days Modified: head/sys/kern/uipc_mbuf.c Modified: head/sys/kern/uipc_mbuf.c ============================================================================== --- head/sys/kern/uipc_mbuf.c Tue Jun 2 13:44:36 2009 (r193308) +++ head/sys/kern/uipc_mbuf.c Tue Jun 2 15:59:46 2009 (r193309) @@ -49,8 +49,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include - int max_linkhdr; int max_protohdr; int max_hdr; From imp at FreeBSD.org Tue Jun 2 16:48:11 2009 From: imp at FreeBSD.org (Warner Losh) Date: Tue Jun 2 16:48:23 2009 Subject: svn commit: r193310 - head/sys/dev/bwi Message-ID: <200906021648.n52GmAhp021052@svn.freebsd.org> Author: imp Date: Tue Jun 2 16:48:10 2009 New Revision: 193310 URL: http://svn.freebsd.org/changeset/base/193310 Log: In bwi_newstate, only zero the bssid when we stop a STA. And only when we've not stopped the card. It hangs the system when we touch the CSR after bwistop. This fixes the hanging on kldunload. Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Tue Jun 2 15:59:46 2009 (r193309) +++ head/sys/dev/bwi/if_bwi.c Tue Jun 2 16:48:10 2009 (r193310) @@ -1771,10 +1771,12 @@ static int bwi_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) { struct bwi_vap *bvp = BWI_VAP(vap); - struct ifnet *ifp = vap->iv_ic->ic_ifp; + struct ieee80211com *ic= vap->iv_ic; + struct ifnet *ifp = ic->ic_ifp; + enum ieee80211_state ostate = vap->iv_state; struct bwi_softc *sc = ifp->if_softc; struct bwi_mac *mac; - struct ieee80211_node *ni; + struct ieee80211_node *ni = vap->iv_bss; int error; BWI_LOCK(sc); @@ -1790,11 +1792,25 @@ bwi_newstate(struct ieee80211vap *vap, e if (error != 0) goto back; + /* + * Clear the BSSID when we stop a STA + */ + if (vap->iv_opmode == IEEE80211_M_STA) { + if (ostate == IEEE80211_S_RUN && nstate != IEEE80211_S_RUN) { + /* + * Clear out the BSSID. If we reassociate to + * the same AP, this will reinialize things + * correctly... + */ + if (ic->ic_opmode == IEEE80211_M_STA && + !(sc->sc_flags & BWI_F_STOP)) + bwi_set_bssid(sc, bwi_zero_addr); + } + } + if (vap->iv_opmode == IEEE80211_M_MONITOR) { /* Nothing to do */ } else if (nstate == IEEE80211_S_RUN) { - ni = vap->iv_bss; - bwi_set_bssid(sc, vap->iv_bss->ni_bssid); KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC, @@ -1814,8 +1830,6 @@ bwi_newstate(struct ieee80211vap *vap, e } callout_reset(&sc->sc_calib_ch, hz, bwi_calibrate, sc); - } else { - bwi_set_bssid(sc, bwi_zero_addr); } back: BWI_UNLOCK(sc); From brooks at FreeBSD.org Tue Jun 2 16:50:10 2009 From: brooks at FreeBSD.org (Brooks Davis) Date: Tue Jun 2 16:50:17 2009 Subject: svn commit: r193199 - head/etc In-Reply-To: <4A25491B.4030406@incunabulum.net> References: <200906010537.n515bDou065357@svn.freebsd.org> <4A23E6E4.7020506@incunabulum.net> <20090602152741.GB14685@lor.one-eyed-alien.net> <4A25466F.40504@incunabulum.net> <20090602153719.GD14685@lor.one-eyed-alien.net> <4A25491B.4030406@incunabulum.net> Message-ID: <20090602165021.GB15552@lor.one-eyed-alien.net> On Tue, Jun 02, 2009 at 04:45:31PM +0100, Bruce Simpson wrote: > Brooks Davis wrote: >> ... >>> On boot time I instantiate a tap0 instance from cloned_interfaces=".." in >>> /etc/rc.conf, and then use ifconfig_tap0="..." to clone the MAC address >>> on the tap instance from the internal Ethernet port, as there is no other >>> way of uniquely identifying the client for an automated bootstrap. >>> >>> This happens from within a flash image. >>> >> >> I see nothing related to network_interfaces here... >> > > I did explicitly name them there, so there would be no automated DHCP setup > of any interfaces, even if hot-plugged. Perhaps I am thinking of > cloned_interfaces=""... cloned_interfaces is different and will definiterly remain since you've got to create them some how. They get created early and thus end up on the list. Also, there's no need to worry about hot plugged interfaces getting margically configured to do dhcp. For the system to do something with an interface they following must be true: - It makes it in to the list of interfaces some how - It actually exists or is create early in the process via cloned_interfaces, gif_interfaces, etc - The ifconfig_ variable is set (I think i can be "", but "up" is alwasy a good choice if you just want a stub. - The ifconfig_ variable must not contain the NOAUTO keyword. If all of those things are true, the interface will be configured at startup or on insert. Otherwise, it won't be. -- Brooks -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090602/edbc6ba3/attachment.pgp From gallatin at FreeBSD.org Tue Jun 2 16:52:34 2009 From: gallatin at FreeBSD.org (Andrew Gallatin) Date: Tue Jun 2 16:52:41 2009 Subject: svn commit: r193311 - head/sys/dev/mxge Message-ID: <200906021652.n52GqYnj021164@svn.freebsd.org> Author: gallatin Date: Tue Jun 2 16:52:33 2009 New Revision: 193311 URL: http://svn.freebsd.org/changeset/base/193311 Log: Buf-ring fixes for mxge - always maintain byte/mcast/drop stats via drbr - move #define of IFNET_BUF_RING so that its picked up by all files in the driver - conditionalize IFNET_BUF_RING on the FreeBSD_version bump just after it appeared in the tree. Sponsored by: Myricom Inc. Modified: head/sys/dev/mxge/if_mxge.c head/sys/dev/mxge/if_mxge_var.h Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Tue Jun 2 16:48:10 2009 (r193310) +++ head/sys/dev/mxge/if_mxge.c Tue Jun 2 16:52:33 2009 (r193311) @@ -30,8 +30,6 @@ POSSIBILITY OF SUCH DAMAGE. #include __FBSDID("$FreeBSD$"); -#define IFNET_BUF_RING - #include #include #include @@ -68,9 +66,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef IFNET_BUF_RING -#include -#endif #include #include #include @@ -90,6 +85,9 @@ __FBSDID("$FreeBSD$"); #include /*#define MXGE_FAKE_IFP*/ #include +#ifdef IFNET_BUF_RING +#include +#endif /* tunable params */ static int mxge_nvidia_ecrc_enable = 1; @@ -2200,6 +2198,7 @@ mxge_transmit_locked(struct mxge_slice_s BPF_MTAP(ifp, m); /* give it to the nic */ mxge_encap(ss, m); + drbr_stats_update(ifp, m->m_pkthdr.len, m->m_flags); } else if ((err = drbr_enqueue(ifp, tx->br, m)) != 0) { return (err); } @@ -2656,11 +2655,6 @@ mxge_tx_done(struct mxge_slice_state *ss /* mbuf and DMA map only attached to the first segment per-mbuf */ if (m != NULL) { -#ifdef IFNET_BUF_RING - ss->obytes += m->m_pkthdr.len; - if (m->m_flags & M_MCAST) - ss->omcasts++; -#endif ss->opackets++; tx->info[idx].m = NULL; map = tx->info[idx].map; @@ -3787,11 +3781,6 @@ mxge_update_stats(mxge_s