Date: Fri, 19 Jun 2009 18:42:13 +0000 (UTC) From: Brooks Davis <brooks@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r194503 - in projects/ngroups: . bin/sh cddl/contrib/opensolaris contrib/ee contrib/less include/rpc lib/libc/rpc lib/libc/sys lib/libdisk lib/libusb release/picobsd/mfs_tree/etc sbin/f... Message-ID: <200906191842.n5JIgDtD052184@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: brooks Date: Fri Jun 19 18:42:13 2009 New Revision: 194503 URL: http://svn.freebsd.org/changeset/base/194503 Log: MFH r194301-194502 Added: projects/ngroups/sys/mips/conf/.cvsignore - copied unchanged from r194502, head/sys/mips/conf/.cvsignore Modified: projects/ngroups/ (props changed) projects/ngroups/UPDATING projects/ngroups/bin/sh/input.c projects/ngroups/cddl/contrib/opensolaris/ (props changed) projects/ngroups/contrib/ee/ (props changed) projects/ngroups/contrib/less/ (props changed) projects/ngroups/include/rpc/svc_dg.h projects/ngroups/lib/libc/rpc/svc_dg.c projects/ngroups/lib/libc/rpc/svc_generic.c projects/ngroups/lib/libc/sys/Symbol.map projects/ngroups/lib/libdisk/change.c projects/ngroups/lib/libusb/ (props changed) projects/ngroups/release/picobsd/mfs_tree/etc/motd (contents, props changed) projects/ngroups/sbin/fdisk/fdisk.c projects/ngroups/share/man/man9/lock.9 projects/ngroups/share/zoneinfo/ (props changed) projects/ngroups/share/zoneinfo/asia projects/ngroups/sys/arm/arm/pmap.c projects/ngroups/sys/arm/conf/CAMBRIA.hints projects/ngroups/sys/arm/include/pmap.h projects/ngroups/sys/arm/xscale/ixp425/if_npe.c projects/ngroups/sys/arm/xscale/ixp425/ixp425.c projects/ngroups/sys/arm/xscale/ixp425/ixp425_npe.c projects/ngroups/sys/arm/xscale/ixp425/ixp425_npereg.h projects/ngroups/sys/arm/xscale/ixp425/ixp425var.h projects/ngroups/sys/cddl/contrib/opensolaris/ (props changed) projects/ngroups/sys/compat/freebsd32/freebsd32_proto.h projects/ngroups/sys/compat/freebsd32/freebsd32_syscall.h projects/ngroups/sys/compat/freebsd32/freebsd32_syscalls.c projects/ngroups/sys/compat/freebsd32/freebsd32_sysent.c projects/ngroups/sys/compat/freebsd32/syscalls.master projects/ngroups/sys/compat/linux/linux_ioctl.c projects/ngroups/sys/conf/options projects/ngroups/sys/contrib/dev/acpica/ (props changed) projects/ngroups/sys/dev/ata/ (props changed) projects/ngroups/sys/dev/if_ndis/if_ndis.c projects/ngroups/sys/dev/usb/wlan/if_uath.c projects/ngroups/sys/dev/xen/netfront/ (props changed) projects/ngroups/sys/dev/xen/xenpci/ (props changed) projects/ngroups/sys/fs/nfs/nfsport.h projects/ngroups/sys/fs/nfsclient/nfs_clbio.c projects/ngroups/sys/fs/nfsclient/nfs_clkrpc.c projects/ngroups/sys/fs/nfsclient/nfs_clvnops.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdstate.c projects/ngroups/sys/geom/label/g_label_gpt.c projects/ngroups/sys/i386/ibcs2/ibcs2_isc_sysent.c projects/ngroups/sys/i386/ibcs2/ibcs2_xenix_sysent.c projects/ngroups/sys/kern/init_sysent.c projects/ngroups/sys/kern/kern_lock.c projects/ngroups/sys/kern/kern_lockf.c projects/ngroups/sys/kern/kern_mbuf.c projects/ngroups/sys/kern/kern_prot.c projects/ngroups/sys/kern/kern_sysctl.c projects/ngroups/sys/kern/makesyscalls.sh projects/ngroups/sys/kern/syscalls.c projects/ngroups/sys/kern/syscalls.master projects/ngroups/sys/kern/systrace_args.c projects/ngroups/sys/kern/uipc_usrreq.c projects/ngroups/sys/mips/adm5120/if_admsw.c projects/ngroups/sys/mips/conf/ (props changed) projects/ngroups/sys/mips/idt/idtpci.c projects/ngroups/sys/mips/idt/if_kr.c projects/ngroups/sys/modules/acpi/acpi/Makefile projects/ngroups/sys/modules/dtrace/dtnfsclient/ (props changed) projects/ngroups/sys/modules/ip6_mroute_mod/ (props changed) projects/ngroups/sys/modules/ipmi/ipmi_linux/ (props changed) projects/ngroups/sys/modules/wlan/Makefile projects/ngroups/sys/net/bpf.c projects/ngroups/sys/net/if_enc.c projects/ngroups/sys/net/if_gre.c projects/ngroups/sys/net/if_tun.c projects/ngroups/sys/net80211/ieee80211_wds.c projects/ngroups/sys/netinet/in_proto.c projects/ngroups/sys/netinet/ip_var.h projects/ngroups/sys/netinet/ipfw/ip_dummynet.c (props changed) projects/ngroups/sys/netinet/ipfw/ip_fw2.c (props changed) projects/ngroups/sys/netinet/ipfw/ip_fw_pfil.c (props changed) projects/ngroups/sys/netinet/sctp.h projects/ngroups/sys/netinet/sctp_indata.c projects/ngroups/sys/netinet/sctp_input.c projects/ngroups/sys/netinet/sctp_output.c projects/ngroups/sys/netinet/tcp_input.c projects/ngroups/sys/netinet/tcp_output.c projects/ngroups/sys/netinet/tcp_subr.c projects/ngroups/sys/netinet/tcp_timer.c projects/ngroups/sys/netinet/tcp_usrreq.c projects/ngroups/sys/netinet/tcp_var.h projects/ngroups/sys/netinet6/in6_proto.c projects/ngroups/sys/netipsec/xform_tcp.c projects/ngroups/sys/nfsclient/nfs_bio.c projects/ngroups/sys/nfsclient/nfs_vnops.c projects/ngroups/sys/nfsserver/nfs_srvkrpc.c projects/ngroups/sys/nlm/nlm_prot_impl.c projects/ngroups/sys/powerpc/include/spr.h projects/ngroups/sys/powerpc/powerpc/cpu.c projects/ngroups/sys/rpc/svc.c projects/ngroups/sys/rpc/svc_generic.c projects/ngroups/sys/rpc/svc_vc.c projects/ngroups/sys/sys/lockmgr.h projects/ngroups/sys/sys/syscall.h projects/ngroups/sys/sys/syscall.mk projects/ngroups/sys/sys/sysproto.h projects/ngroups/sys/sys/vimage.h projects/ngroups/sys/ufs/ufs/ufs_dirhash.c projects/ngroups/sys/vm/uma_core.c projects/ngroups/sys/vm/vm_contig.c projects/ngroups/sys/vm/vm_extern.h projects/ngroups/sys/vm/vm_phys.c projects/ngroups/tools/regression/lib/msun/test-conj.t (props changed) projects/ngroups/tools/tools/ath/common/dumpregs.h (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/ngroups/tools/tools/nanobsd/FlashDevice.sub projects/ngroups/tools/tools/nanobsd/gateworks/G2358 projects/ngroups/tools/tools/nanobsd/nanobsd.sh projects/ngroups/usr.bin/ncal/ncal.c projects/ngroups/usr.sbin/jls/jls.c projects/ngroups/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/ngroups/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/ngroups/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/ngroups/usr.sbin/makefs/getid.c (props changed) projects/ngroups/usr.sbin/mountd/mountd.c projects/ngroups/usr.sbin/pkg_install/add/perform.c projects/ngroups/usr.sbin/pkg_install/create/perform.c projects/ngroups/usr.sbin/pkg_install/info/perform.c projects/ngroups/usr.sbin/pkg_install/lib/lib.h projects/ngroups/usr.sbin/pkg_install/lib/pen.c projects/ngroups/usr.sbin/pkg_install/lib/url.c Modified: projects/ngroups/UPDATING ============================================================================== --- projects/ngroups/UPDATING Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/UPDATING Fri Jun 19 18:42:13 2009 (r194503) @@ -22,6 +22,30 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090619: + NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 + and 1024 respectively. As long as no more than 16 groups per + process are used, no changes should be visible. When more + than 16 groups are used, old binaries may fail if they call + getgroups() or getgrouplist() with statically sized storage. + Recompiling will work around this, but applications should be + modified to use dynamically allocated storage for group arrays + as POSIX.1-2008 does not cap an implementation's number of + supported groups at NGROUPS_MAX+1 as previous versions did. + + NFS and portalfs mounts may also be affected as the list of + groups is truncated to 16. Users of NFS who use more than 16 + groups, should take care that negative group permissions are not + used on the exported file systems as they will not be reliable + unless a GSSAPI based authentication method is used. + +20090616: + The compiling option ADAPTIVE_LOCKMGRS has been introduced. + This option compiles in the support for adaptive spinning for lockmgrs + which want to enable it. The lockinit() function now accepts the + flag LK_ADAPTIVE in order to make the lock object subject to + adaptive spinning when both held in write and read mode. + 20090613: The layout of the structure returned by IEEE80211_IOC_STA_INFO has changed. User applications that use this ioctl need to be Modified: projects/ngroups/bin/sh/input.c ============================================================================== --- projects/ngroups/bin/sh/input.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/bin/sh/input.c Fri Jun 19 18:42:13 2009 (r194503) @@ -118,9 +118,9 @@ INIT { } RESET { + popallfiles(); if (exception != EXSHELLPROC) parselleft = parsenleft = 0; /* clear input buffer */ - popallfiles(); } SHELLPROC { Modified: projects/ngroups/include/rpc/svc_dg.h ============================================================================== --- projects/ngroups/include/rpc/svc_dg.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/include/rpc/svc_dg.h Fri Jun 19 18:42:13 2009 (r194503) @@ -46,6 +46,7 @@ struct svc_dg_data { XDR su_xdrs; /* XDR handle */ char su_verfbody[MAX_AUTH_BYTES]; /* verifier body */ void *su_cache; /* cached data, NULL if none */ + struct netbuf su_srcaddr; /* dst address of last msg */ }; #define __rpcb_get_dg_xidp(x) (&((struct svc_dg_data *)(x)->xp_p2)->su_xid) Modified: projects/ngroups/lib/libc/rpc/svc_dg.c ============================================================================== --- projects/ngroups/lib/libc/rpc/svc_dg.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/lib/libc/rpc/svc_dg.c Fri Jun 19 18:42:13 2009 (r194503) @@ -97,8 +97,9 @@ int svc_dg_enablecache(SVCXPRT *, u_int) */ static const char svc_dg_str[] = "svc_dg_create: %s"; static const char svc_dg_err1[] = "could not get transport information"; -static const char svc_dg_err2[] = " transport does not support data transfer"; +static const char svc_dg_err2[] = "transport does not support data transfer"; static const char svc_dg_err3[] = "getsockname failed"; +static const char svc_dg_err4[] = "cannot set IP_RECVDSTADDR"; static const char __no_mem_str[] = "out of memory"; SVCXPRT * @@ -156,6 +157,23 @@ svc_dg_create(fd, sendsize, recvsize) xprt->xp_ltaddr.len = slen; memcpy(xprt->xp_ltaddr.buf, &ss, slen); + if (ss.ss_family == AF_INET) { + struct sockaddr_in *sin; + static const int true_value = 1; + + sin = (struct sockaddr_in *)(void *)&ss; + if (sin->sin_addr.s_addr == INADDR_ANY) { + su->su_srcaddr.buf = mem_alloc(sizeof (ss)); + su->su_srcaddr.maxlen = sizeof (ss); + + if (_setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, + &true_value, sizeof(true_value))) { + warnx(svc_dg_str, svc_dg_err4); + goto freedata_nowarn; + } + } + } + xprt_register(xprt); return (xprt); freedata: @@ -197,13 +215,15 @@ svc_dg_recvfrom(int fd, char *buf, int b msg.msg_iovlen = 1; msg.msg_namelen = *raddrlen; msg.msg_name = (char *)raddr; - msg.msg_control = (caddr_t)tmp; - msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + if (laddr != NULL) { + msg.msg_control = (caddr_t)tmp; + msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + } rlen = _recvmsg(fd, &msg, 0); if (rlen >= 0) *raddrlen = msg.msg_namelen; - if (rlen == -1 || !laddr || + if (rlen == -1 || laddr == NULL || msg.msg_controllen < sizeof(struct cmsghdr) || msg.msg_flags & MSG_CTRUNC) return rlen; @@ -214,18 +234,19 @@ svc_dg_recvfrom(int fd, char *buf, int b cmsg->cmsg_type == IP_RECVDSTADDR) { have_lin = TRUE; memcpy(&lin->sin_addr, - (struct in_addr *)CMSG_DATA(cmsg), sizeof(struct in_addr)); + (struct in_addr *)CMSG_DATA(cmsg), + sizeof(struct in_addr)); break; } } - if (!have_lin) - return rlen; - lin->sin_family = AF_INET; lin->sin_port = 0; *laddrlen = sizeof(struct sockaddr_in); + if (!have_lin) + lin->sin_addr.s_addr = INADDR_ANY; + return rlen; } @@ -246,7 +267,7 @@ again: alen = sizeof (struct sockaddr_storage); rlen = svc_dg_recvfrom(xprt->xp_fd, rpc_buffer(xprt), su->su_iosz, (struct sockaddr *)(void *)&ss, &alen, - (struct sockaddr *)xprt->xp_ltaddr.buf, &xprt->xp_ltaddr.len); + (struct sockaddr *)su->su_srcaddr.buf, &su->su_srcaddr.len); if (rlen == -1 && errno == EINTR) goto again; if (rlen == -1 || (rlen < (ssize_t)(4 * sizeof (u_int32_t)))) @@ -300,7 +321,8 @@ svc_dg_sendto(int fd, char *buf, int buf msg.msg_namelen = raddrlen; msg.msg_name = (char *)raddr; - if (laddr->sa_family == AF_INET && lin->s_addr != INADDR_ANY) { + if (laddr != NULL && laddr->sa_family == AF_INET && + lin->s_addr != INADDR_ANY) { msg.msg_control = (caddr_t)tmp; msg.msg_controllen = CMSG_LEN(sizeof(*lin)); cmsg = CMSG_FIRSTHDR(&msg); @@ -346,8 +368,8 @@ svc_dg_reply(xprt, msg) if (svc_dg_sendto(xprt->xp_fd, rpc_buffer(xprt), slen, (struct sockaddr *)xprt->xp_rtaddr.buf, (socklen_t)xprt->xp_rtaddr.len, - (struct sockaddr *)xprt->xp_ltaddr.buf, - xprt->xp_ltaddr.len) == (ssize_t) slen) { + (struct sockaddr *)su->su_srcaddr.buf, + (socklen_t)su->su_srcaddr.len) == (ssize_t) slen) { stat = TRUE; if (su->su_cache) cache_set(xprt, slen); @@ -393,6 +415,8 @@ svc_dg_destroy(xprt) (void)_close(xprt->xp_fd); XDR_DESTROY(&(su->su_xdrs)); (void) mem_free(rpc_buffer(xprt), su->su_iosz); + if (su->su_srcaddr.buf) + (void) mem_free(su->su_srcaddr.buf, su->su_srcaddr.maxlen); (void) mem_free(su, sizeof (*su)); if (xprt->xp_rtaddr.buf) (void) mem_free(xprt->xp_rtaddr.buf, xprt->xp_rtaddr.maxlen); Modified: projects/ngroups/lib/libc/rpc/svc_generic.c ============================================================================== --- projects/ngroups/lib/libc/rpc/svc_generic.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/lib/libc/rpc/svc_generic.c Fri Jun 19 18:42:13 2009 (r194503) @@ -199,7 +199,6 @@ svc_tli_create(fd, nconf, bindaddr, send struct __rpc_sockinfo si; struct sockaddr_storage ss; socklen_t slen; - static const int true_value = 1; if (fd == RPC_ANYFD) { if (nconf == NULL) { @@ -226,14 +225,6 @@ svc_tli_create(fd, nconf, bindaddr, send } } - if (si.si_af == AF_INET && si.si_socktype == SOCK_DGRAM) { - if (_setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, - &true_value, sizeof(true_value))) { - warnx("svc_tli_create: cannot set IP_RECVDSTADDR"); - return (NULL); - } - } - /* * If the fd is unbound, try to bind it. */ Modified: projects/ngroups/lib/libc/sys/Symbol.map ============================================================================== --- projects/ngroups/lib/libc/sys/Symbol.map Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/lib/libc/sys/Symbol.map Fri Jun 19 18:42:13 2009 (r194503) @@ -196,7 +196,6 @@ FBSD_1.0 { nanosleep; netbsd_lchown; netbsd_msync; - nfsclnt; nfssvc; nfstat; nlstat; @@ -748,8 +747,6 @@ FBSDprivate_1.0 { __sys_netbsd_lchown; _netbsd_msync; __sys_netbsd_msync; - _nfsclnt; - __sys_nfsclnt; _nfssvc; __sys_nfssvc; _nfstat; Modified: projects/ngroups/lib/libdisk/change.c ============================================================================== --- projects/ngroups/lib/libdisk/change.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/lib/libdisk/change.c Fri Jun 19 18:42:13 2009 (r194503) @@ -36,7 +36,7 @@ Sanitize_Bios_Geom(struct disk *disk) if (disk->bios_cyl >= 65536) sane = 0; - if (disk->bios_hd >= 256) + if (disk->bios_hd > 256) sane = 0; #ifdef PC98 if (disk->bios_sect >= 256) Modified: projects/ngroups/release/picobsd/mfs_tree/etc/motd ============================================================================== --- projects/ngroups/release/picobsd/mfs_tree/etc/motd Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/release/picobsd/mfs_tree/etc/motd Fri Jun 19 18:42:13 2009 (r194503) @@ -3,7 +3,7 @@ [31m)\_)\[37m Welcome to PicoBSD [31m([37m[1mo,o[m[31m)[37m [32m__ [31m\~/[37m - [32m-->=[41m===[40m[31m\[37m + [32m-->=[41m===[0m[31m\[37m [32m~~[37m [31md d[37m ============================================================== Modified: projects/ngroups/sbin/fdisk/fdisk.c ============================================================================== --- projects/ngroups/sbin/fdisk/fdisk.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sbin/fdisk/fdisk.c Fri Jun 19 18:42:13 2009 (r194503) @@ -1066,8 +1066,8 @@ process_geometry(CMD *command) warnx("ERROR line %d: number of heads not specified", current_line_number); status = 0; - } else if (dos_heads > 255) { - warnx("ERROR line %d: number of heads must be within (1-255)", + } else if (dos_heads > 256) { + warnx("ERROR line %d: number of heads must be within (1-256)", current_line_number); status = 0; } Modified: projects/ngroups/share/man/man9/lock.9 ============================================================================== --- projects/ngroups/share/man/man9/lock.9 Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/share/man/man9/lock.9 Fri Jun 19 18:42:13 2009 (r194503) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 05, 2009 +.Dd June 16, 2009 .Dt LOCK 9 .Os .Sh NAME @@ -96,6 +96,9 @@ The timeout value passed to .It Fa flags The flags the lock is to be initialized with: .Bl -tag -width ".Dv LK_CANRECURSE" +.It Dv LK_ADAPTIVE +Enable adaptive spinning for this lock if the kernel is compiled with the +ADAPTIVE_LOCKMGRS option. .It Dv LK_CANRECURSE Allow recursive exclusive locks. .It Dv LK_NOPROFILE Modified: projects/ngroups/share/zoneinfo/asia ============================================================================== --- projects/ngroups/share/zoneinfo/asia Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/share/zoneinfo/asia Fri Jun 19 18:42:13 2009 (r194503) @@ -1,5 +1,5 @@ # <pre> -# @(#)asia 8.34 +# @(#)asia 8.35 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. @@ -165,9 +165,12 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # # http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html # </a> -# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Bang 2009 only - Jan 1 0:00 0 - -Rule Bang 2009 only - Jun 20 0:00 1:00 S +# From A. N. M. Kamrus Saadat (2009-06-15): +# Finally we've got the official mail regarding DST start time where DST start +# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh +# Telecommunication Regulatory Commission). +# +# No DST end date has been announced yet. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dhaka 6:01:40 - LMT 1890 @@ -176,8 +179,8 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890 5:30 - IST 1942 Sep 6:30 - BURT 1951 Sep 30 6:00 - DACT 1971 Mar 26 # Dacca Time - 6:00 - BDT 2009 # Bangladesh Time - 6:00 Bang BD%sT + 6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time + 6:00 1:00 BDST # Bhutan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Modified: projects/ngroups/sys/arm/arm/pmap.c ============================================================================== --- projects/ngroups/sys/arm/arm/pmap.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/arm/pmap.c Fri Jun 19 18:42:13 2009 (r194503) @@ -200,8 +200,7 @@ static pv_entry_t pmap_get_pv_entry(void static void pmap_enter_locked(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, boolean_t, int); -static __inline void pmap_fix_cache(struct vm_page *, pmap_t, - vm_offset_t); +static void pmap_fix_cache(struct vm_page *, pmap_t, vm_offset_t); static void pmap_alloc_l1(pmap_t); static void pmap_free_l1(pmap_t); static void pmap_use_l1(pmap_t); @@ -406,7 +405,7 @@ int pmap_needs_pte_sync; #define pmap_is_current(pm) ((pm) == pmap_kernel() || \ curproc->p_vmspace->vm_map.pmap == (pm)) -static uma_zone_t pvzone; +static uma_zone_t pvzone = NULL; uma_zone_t l2zone; static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; @@ -1451,6 +1450,7 @@ pmap_fix_cache(struct vm_page *pg, pmap_ * kernel writable or kernel readable with writable user entry */ if ((kwritable && entries) || + (kwritable > 1) || ((kwritable != writable) && kentries && (pv->pv_pmap == pmap_kernel() || (pv->pv_flags & PVF_WRITE) || @@ -1472,7 +1472,8 @@ pmap_fix_cache(struct vm_page *pg, pmap_ continue; } /* user is no longer sharable and writable */ - if (pm != pmap_kernel() && (pv->pv_pmap == pm) && + if (pm != pmap_kernel() && + (pv->pv_pmap == pm || pv->pv_pmap == pmap_kernel()) && !pmwc && (pv->pv_flags & PVF_NC)) { pv->pv_flags &= ~(PVF_NC | PVF_MWC); @@ -1674,7 +1675,29 @@ pmap_enter_pv(struct vm_page *pg, struct vm_offset_t va, u_int flags) { + int km; + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + + if (pg->md.pv_kva) { + /* PMAP_ASSERT_LOCKED(pmap_kernel()); */ + pve->pv_pmap = pmap_kernel(); + pve->pv_va = pg->md.pv_kva; + pve->pv_flags = PVF_WRITE | PVF_UNMAN; + pg->md.pv_kva = 0; + + TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list); + TAILQ_INSERT_HEAD(&pm->pm_pvlist, pve, pv_plist); + if ((km = PMAP_OWNED(pmap_kernel()))) + PMAP_UNLOCK(pmap_kernel()); + vm_page_unlock_queues(); + if ((pve = pmap_get_pv_entry()) == NULL) + panic("pmap_kenter_internal: no pv entries"); + vm_page_lock_queues(); + if (km) + PMAP_LOCK(pmap_kernel()); + } + PMAP_ASSERT_LOCKED(pm); pve->pv_pmap = pm; pve->pv_va = va; @@ -1742,6 +1765,7 @@ static void pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve) { + struct pv_entry *pv; mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_ASSERT_LOCKED(pm); TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list); @@ -1766,6 +1790,20 @@ pmap_nuke_pv(struct vm_page *pg, pmap_t vm_page_flag_clear(pg, PG_WRITEABLE); } } + pv = TAILQ_FIRST(&pg->md.pv_list); + if (pv != NULL && (pv->pv_flags & PVF_UNMAN) && + TAILQ_NEXT(pv, pv_list) == NULL) { + pg->md.pv_kva = pv->pv_va; + /* a recursive pmap_nuke_pv */ + TAILQ_REMOVE(&pg->md.pv_list, pv, pv_list); + TAILQ_REMOVE(&pm->pm_pvlist, pv, pv_plist); + if (pv->pv_flags & PVF_WIRED) + --pm->pm_stats.wired_count; + pg->md.pvh_attrs &= ~PVF_REF; + pg->md.pvh_attrs &= ~PVF_MOD; + vm_page_flag_clear(pg, PG_WRITEABLE); + pmap_free_pv_entry(pv); + } } static struct pv_entry * @@ -1784,6 +1822,9 @@ pmap_remove_pv(struct vm_page *pg, pmap_ pve = TAILQ_NEXT(pve, pv_list); } + if (pve == NULL && pg->md.pv_kva == va) + pg->md.pv_kva = 0; + return(pve); /* return removed pve */ } /* @@ -2711,8 +2752,8 @@ pmap_remove_pages(pmap_t pmap) cpu_idcache_wbinv_all(); cpu_l2cache_wbinv_all(); for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) { - if (pv->pv_flags & PVF_WIRED) { - /* The page is wired, cannot remove it now. */ + if (pv->pv_flags & PVF_WIRED || pv->pv_flags & PVF_UNMAN) { + /* Cannot remove wired or unmanaged pages now. */ npv = TAILQ_NEXT(pv, pv_plist); continue; } @@ -2822,6 +2863,9 @@ pmap_kenter_internal(vm_offset_t va, vm_ struct l2_bucket *l2b; pt_entry_t *pte; pt_entry_t opte; + struct pv_entry *pve; + vm_page_t m; + PDEBUG(1, printf("pmap_kenter: va = %08x, pa = %08x\n", (uint32_t) va, (uint32_t) pa)); @@ -2835,10 +2879,7 @@ pmap_kenter_internal(vm_offset_t va, vm_ PDEBUG(1, printf("pmap_kenter: pte = %08x, opte = %08x, npte = %08x\n", (uint32_t) pte, opte, *pte)); if (l2pte_valid(opte)) { - cpu_dcache_wbinv_range(va, PAGE_SIZE); - cpu_l2cache_wbinv_range(va, PAGE_SIZE); - cpu_tlb_flushD_SE(va); - cpu_cpwait(); + pmap_kremove(va); } else { if (opte == 0) l2b->l2b_occupancy++; @@ -2850,6 +2891,33 @@ pmap_kenter_internal(vm_offset_t va, vm_ if (flags & KENTER_USER) *pte |= L2_S_PROT_U; PTE_SYNC(pte); + + /* kernel direct mappings can be shared, so use a pv_entry + * to ensure proper caching. + * + * The pvzone is used to delay the recording of kernel + * mappings until the VM is running. + * + * This expects the physical memory to have vm_page_array entry. + */ + if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa))) { + vm_page_lock_queues(); + if (!TAILQ_EMPTY(&m->md.pv_list) || m->md.pv_kva) { + /* release vm_page lock for pv_entry UMA */ + vm_page_unlock_queues(); + if ((pve = pmap_get_pv_entry()) == NULL) + panic("pmap_kenter_internal: no pv entries"); + vm_page_lock_queues(); + PMAP_LOCK(pmap_kernel()); + pmap_enter_pv(m, pve, pmap_kernel(), va, + PVF_WRITE | PVF_UNMAN); + pmap_fix_cache(m, pmap_kernel(), va); + PMAP_UNLOCK(pmap_kernel()); + } else { + m->md.pv_kva = va; + } + vm_page_unlock_queues(); + } } void @@ -2886,6 +2954,9 @@ pmap_kremove(vm_offset_t va) { struct l2_bucket *l2b; pt_entry_t *pte, opte; + struct pv_entry *pve; + vm_page_t m; + vm_offset_t pa; l2b = pmap_get_l2_bucket(pmap_kernel(), va); if (!l2b) @@ -2894,6 +2965,25 @@ pmap_kremove(vm_offset_t va) pte = &l2b->l2b_kva[l2pte_index(va)]; opte = *pte; if (l2pte_valid(opte)) { + /* pa = vtophs(va) taken from pmap_extract() */ + switch (opte & L2_TYPE_MASK) { + case L2_TYPE_L: + pa = (opte & L2_L_FRAME) | (va & L2_L_OFFSET); + break; + default: + pa = (opte & L2_S_FRAME) | (va & L2_S_OFFSET); + break; + } + /* note: should never have to remove an allocation + * before the pvzone is initialized. + */ + vm_page_lock_queues(); + PMAP_LOCK(pmap_kernel()); + if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa)) && + (pve = pmap_remove_pv(m, pmap_kernel(), va))) + pmap_free_pv_entry(pve); + PMAP_UNLOCK(pmap_kernel()); + vm_page_unlock_queues(); cpu_dcache_wbinv_range(va, PAGE_SIZE); cpu_l2cache_wbinv_range(va, PAGE_SIZE); cpu_tlb_flushD_SE(va); @@ -3137,16 +3227,24 @@ pmap_remove_all(vm_page_t m) cpu_l2cache_inv_range(pv->pv_va, PAGE_SIZE); } - l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va); - KASSERT(l2b != NULL, ("No l2 bucket")); - ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - *ptep = 0; - PTE_SYNC_CURRENT(pv->pv_pmap, ptep); - pmap_free_l2_bucket(pv->pv_pmap, l2b, 1); - if (pv->pv_flags & PVF_WIRED) - pv->pv_pmap->pm_stats.wired_count--; - pv->pv_pmap->pm_stats.resident_count--; - flags |= pv->pv_flags; + if (pv->pv_flags & PVF_UNMAN) { + /* remove the pv entry, but do not remove the mapping + * and remember this is a kernel mapped page + */ + m->md.pv_kva = pv->pv_va; + } else { + /* remove the mapping and pv entry */ + l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va); + KASSERT(l2b != NULL, ("No l2 bucket")); + ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; + *ptep = 0; + PTE_SYNC_CURRENT(pv->pv_pmap, ptep); + pmap_free_l2_bucket(pv->pv_pmap, l2b, 1); + if (pv->pv_flags & PVF_WIRED) + pv->pv_pmap->pm_stats.wired_count--; + pv->pv_pmap->pm_stats.resident_count--; + flags |= pv->pv_flags; + } pmap_nuke_pv(m, pv->pv_pmap, pv); PMAP_UNLOCK(pv->pv_pmap); pmap_free_pv_entry(pv); @@ -3428,25 +3526,19 @@ do_l2b_alloc: * It is part of our managed memory so we * must remove it from the PV list */ - pve = pmap_remove_pv(opg, pmap, va); - if (m && (m->flags & (PG_UNMANAGED | PG_FICTITIOUS)) && - pve) - pmap_free_pv_entry(pve); - else if (!pve && - !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) - pve = pmap_get_pv_entry(); - KASSERT(pve != NULL || m->flags & (PG_UNMANAGED | - PG_FICTITIOUS), ("No pv")); - oflags = pve->pv_flags; - + if ((pve = pmap_remove_pv(opg, pmap, va))) { + + /* note for patch: the oflags/invalidation was moved + * because PG_FICTITIOUS pages could free the pve + */ + oflags = pve->pv_flags; /* * If the old mapping was valid (ref/mod * emulation creates 'invalid' mappings * initially) then make sure to frob * the cache. */ - if ((oflags & PVF_NC) == 0 && - l2pte_valid(opte)) { + if ((oflags & PVF_NC) == 0 && l2pte_valid(opte)) { if (PV_BEEN_EXECD(oflags)) { pmap_idcache_wbinv_range(pmap, va, PAGE_SIZE); @@ -3456,15 +3548,43 @@ do_l2b_alloc: PAGE_SIZE, TRUE, (oflags & PVF_WRITE) == 0); } - } - } else if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) - if ((pve = pmap_get_pv_entry()) == NULL) { - panic("pmap_enter: no pv entries"); - } - if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) { + } + + /* free/allocate a pv_entry for UNMANAGED pages if + * this physical page is not/is already mapped. + */ + + if (m && ((m->flags & PG_FICTITIOUS) || + ((m->flags & PG_UNMANAGED) && + !m->md.pv_kva && + TAILQ_EMPTY(&m->md.pv_list)))) { + pmap_free_pv_entry(pve); + pve = NULL; + } + } else if (m && !(m->flags & PG_FICTITIOUS) && + (!(m->flags & PG_UNMANAGED) || m->md.pv_kva || + !TAILQ_EMPTY(&m->md.pv_list))) + pve = pmap_get_pv_entry(); + } else if (m && !(m->flags & PG_FICTITIOUS) && + (!(m->flags & PG_UNMANAGED) || m->md.pv_kva || + !TAILQ_EMPTY(&m->md.pv_list))) + pve = pmap_get_pv_entry(); + + if (m && !(m->flags & PG_FICTITIOUS)) { KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva, - ("pmap_enter: managed mapping within the clean submap")); - pmap_enter_pv(m, pve, pmap, va, nflags); + ("pmap_enter: managed mapping within the clean submap")); + if (m->flags & PG_UNMANAGED) { + if (!TAILQ_EMPTY(&m->md.pv_list) || + m->md.pv_kva) { + KASSERT(pve != NULL, ("No pv")); + nflags |= PVF_UNMAN; + pmap_enter_pv(m, pve, pmap, va, nflags); + } else + m->md.pv_kva = va; + } else { + KASSERT(pve != NULL, ("No pv")); + pmap_enter_pv(m, pve, pmap, va, nflags); + } } } /* Modified: projects/ngroups/sys/arm/conf/CAMBRIA.hints ============================================================================== --- projects/ngroups/sys/arm/conf/CAMBRIA.hints Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/conf/CAMBRIA.hints Fri Jun 19 18:42:13 2009 (r194503) @@ -21,11 +21,11 @@ hint.npe.0.npeid="C" hint.npe.0.mac="C" hint.npe.0.mii="C" hint.npe.0.phy=1 -#hint.npe.1.at="ixp0" -#hint.npe.1.npeid="A" -#hint.npe.1.mac="A" -#hint.npe.1.mii="C" -#hint.npe.1.phy=2 +hint.npe.1.at="ixp0" +hint.npe.1.npeid="A" +hint.npe.1.mac="A" +hint.npe.1.mii="C" +hint.npe.1.phy=2 # FLASH hint.cfi.0.at="ixp0" Modified: projects/ngroups/sys/arm/include/pmap.h ============================================================================== --- projects/ngroups/sys/arm/include/pmap.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/include/pmap.h Fri Jun 19 18:42:13 2009 (r194503) @@ -94,6 +94,7 @@ struct pv_entry; struct md_page { int pvh_attrs; + vm_offset_t pv_kva; /* first kernel VA mapping */ TAILQ_HEAD(,pv_entry) pv_list; }; @@ -494,6 +495,7 @@ void pmap_use_minicache(vm_offset_t, vm_ #define PVF_EXEC 0x10 /* mapping is executable */ #define PVF_NC 0x20 /* mapping is non-cacheable */ #define PVF_MWC 0x40 /* mapping is used multiple times in userland */ +#define PVF_UNMAN 0x80 /* mapping is unmanaged */ void vector_page_setprot(int); Modified: projects/ngroups/sys/arm/xscale/ixp425/if_npe.c ============================================================================== --- projects/ngroups/sys/arm/xscale/ixp425/if_npe.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/xscale/ixp425/if_npe.c Fri Jun 19 18:42:13 2009 (r194503) @@ -153,9 +153,9 @@ struct npe_softc { * multi-port processing. It may be better to handle * all traffic through one Q (as done by the Intel drivers). * - * Note that the PHY's are accessible only from MAC A - * on the IXP425. This and other platform-specific - * assumptions probably need to be handled through hints. + * Note that the PHY's are accessible only from MAC B on the + * IXP425 and from MAC C on other devices. This and other + * platform-specific assumptions are handled with hints. */ static const struct { uint32_t macbase; @@ -177,7 +177,7 @@ static const struct { }, [NPE_B] = { .macbase = IXP425_MAC_B_HWBASE, - .miibase = IXP425_MAC_C_HWBASE, + .miibase = IXP425_MAC_B_HWBASE, .phy = 0, .rx_qid = 4, .rx_freeqid = 27, @@ -186,7 +186,7 @@ static const struct { }, [NPE_C] = { .macbase = IXP425_MAC_C_HWBASE, - .miibase = IXP425_MAC_C_HWBASE, + .miibase = IXP425_MAC_B_HWBASE, .phy = 1, .rx_qid = 12, .rx_freeqid = 28, @@ -239,6 +239,7 @@ static int npeioctl(struct ifnet * ifp, static int npe_setrxqosentry(struct npe_softc *, int classix, int trafclass, int qid); +static int npe_setportaddress(struct npe_softc *, const uint8_t mac[]); static int npe_setfirewallmode(struct npe_softc *, int onoff); static int npe_updatestats(struct npe_softc *); #if 0 @@ -666,7 +667,7 @@ npe_mac_reset(struct npe_softc *sc) static int npe_activate(device_t dev) { - struct npe_softc * sc = device_get_softc(dev); + struct npe_softc *sc = device_get_softc(dev); int error, i, macbase, miibase; /* @@ -1024,7 +1025,7 @@ npe_txdone(int qid, void *arg) struct txdone *td, q[NPE_MAX]; uint32_t entry; - /* XXX no NPE-A support */ + q[NPE_A].tail = &q[NPE_A].head; q[NPE_A].count = 0; q[NPE_B].tail = &q[NPE_B].head; q[NPE_B].count = 0; q[NPE_C].tail = &q[NPE_C].head; q[NPE_C].count = 0; /* XXX max # at a time? */ @@ -1043,6 +1044,8 @@ npe_txdone(int qid, void *arg) td->count++; } + if (q[NPE_A].count) + npe_txdone_finish(npes[NPE_A], &q[NPE_A]); if (q[NPE_B].count) npe_txdone_finish(npes[NPE_B], &q[NPE_B]); if (q[NPE_C].count) @@ -1252,6 +1255,7 @@ if (ifp->if_drv_flags & IFF_DRV_RUNNING) WR4(sc, NPE_MAC_RX_CNTRL2, 0); npe_setmac(sc, IF_LLADDR(ifp)); + npe_setportaddress(sc, IF_LLADDR(ifp)); npe_setmcast(sc); npe_startxmit(sc); @@ -1552,6 +1556,22 @@ npe_setrxqosentry(struct npe_softc *sc, } static int +npe_setportaddress(struct npe_softc *sc, const uint8_t mac[ETHER_ADDR_LEN]) +{ + uint32_t msg[2]; + + msg[0] = (NPE_SETPORTADDRESS << 24) + | (sc->sc_npeid << 20) + | (mac[0] << 8) + | (mac[1] << 0); + msg[1] = (mac[2] << 24) + | (mac[3] << 16) + | (mac[4] << 8) + | (mac[5] << 0); + return ixpnpe_sendandrecvmsg_sync(sc->sc_npe, msg, msg); +} + +static int npe_setfirewallmode(struct npe_softc *sc, int onoff) { uint32_t msg[2]; Modified: projects/ngroups/sys/arm/xscale/ixp425/ixp425.c ============================================================================== --- projects/ngroups/sys/arm/xscale/ixp425/ixp425.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/xscale/ixp425/ixp425.c Fri Jun 19 18:42:13 2009 (r194503) @@ -85,6 +85,12 @@ ixp4xx_read_feature_bits(void) return bits; } +void +ixp4xx_write_feature_bits(uint32_t v) +{ + IXPREG(IXP425_EXP_VBASE + EXP_FCTRL_OFFSET) = ~v; +} + struct arm32_dma_range * bus_dma_get_range(void) { Modified: projects/ngroups/sys/arm/xscale/ixp425/ixp425_npe.c ============================================================================== --- projects/ngroups/sys/arm/xscale/ixp425/ixp425_npe.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/xscale/ixp425/ixp425_npe.c Fri Jun 19 18:42:13 2009 (r194503) @@ -306,8 +306,14 @@ ixpnpe_attach(device_t dev, int npeid) sc->sc_nrefs = 1; sc->sc_size = config->size; - sc->insMemSize = config->ins_memsize; /* size of instruction memory */ - sc->dataMemSize = config->data_memsize; /* size of data memory */ + if (cpu_is_ixp42x()) { + /* NB: instruction/data memory sizes are NPE-dependent */ + sc->insMemSize = config->ins_memsize; + sc->dataMemSize = config->data_memsize; + } else { + sc->insMemSize = IXP46X_NPEDL_INS_MEMSIZE_WORDS; + sc->dataMemSize = IXP46X_NPEDL_DATA_MEMSIZE_WORDS; + } if (bus_space_map(sc->sc_iot, config->base, sc->sc_size, 0, &sc->sc_ioh)) panic("%s: Cannot map registers", device_get_name(dev)); @@ -798,20 +804,34 @@ static const uint32_t ixNpeDlCtxtRegRese IX_NPEDL_CTXT_REG_RESET_CINDEX, }; -#define IX_NPEDL_RESET_NPE_PARITY 0x0800 #define IX_NPEDL_PARITY_BIT_MASK 0x3F00FFFF #define IX_NPEDL_CONFIG_CTRL_REG_MASK 0x3F3FFFFF +#if 0 +/* + * Reset the NPE and its coprocessor using the + * fuse bits in the feature control register. + */ +static void +npe_reset(int npeid) +{ + uint32_t mask = EXP_FCTRL_NPEA << npeid; + uint32_t v; + + v = ixp4xx_read_feature_bits(); + ixp4xx_write_feature_bits(v &~ mask); + /* un-fuse and un-reset the NPE & coprocessor */ + ixp4xx_write_feature_bits(v | mask); +} +#endif + static int npe_cpu_reset(struct ixpnpe_softc *sc) { #define N(a) (sizeof(a) / sizeof(a[0])) - struct ixp425_softc *sa = - device_get_softc(device_get_parent(sc->sc_dev)); uint32_t ctxtReg; /* identifies Context Store reg (0-3) */ uint32_t regAddr; uint32_t regVal; - uint32_t resetNpeParity; uint32_t ixNpeConfigCtrlRegVal; int i, error = 0; @@ -929,33 +949,15 @@ npe_cpu_reset(struct ixpnpe_softc *sc) /* Reset the Watch-count register */ npe_reg_write(sc, IX_NPEDL_REG_OFFSET_WC, 0); - +#if 0 /* * WR IXA00055043 - Remove IMEM Parity Introduced by NPE Reset Operation + * XXX Removed because it breaks IXP435 operation; e.g. on Gateworks + * XXX 2358 boards reseting NPE-A after NPE-C is running causes both + * XXX npe's to stop working */ - - /* - * Reset the NPE and its coprocessor - to reset internal - * states and remove parity error. Note this makes no - * sense based on the documentation. The feature control - * register always reads back as 0 on the ixp425 and further - * the bit definition of NPEA/NPEB is off by 1 according to - * the Intel documention--so we're blindly following the - * Intel code w/o any real understanding. - */ - regVal = EXP_BUS_READ_4(sa, EXP_FCTRL_OFFSET); - DPRINTFn(2, sc->sc_dev, "%s: FCTRL 0x%x\n", __func__, regVal); - resetNpeParity = - IX_NPEDL_RESET_NPE_PARITY << (1 + device_get_unit(sc->sc_dev)); - DPRINTFn(2, sc->sc_dev, "%s: FCTRL fuse parity, write 0x%x\n", - __func__, regVal | resetNpeParity); - EXP_BUS_WRITE_4(sa, EXP_FCTRL_OFFSET, regVal | resetNpeParity); - - /* un-fuse and un-reset the NPE & coprocessor */ - DPRINTFn(2, sc->sc_dev, "%s: FCTRL unfuse parity, write 0x%x\n", - __func__, regVal & resetNpeParity); - EXP_BUS_WRITE_4(sa, EXP_FCTRL_OFFSET, regVal &~ resetNpeParity); - + npe_reset(sc->sc_npeid); +#endif /* * Call NpeMgr function to stop the NPE again after the Feature Control * has unfused and Un-Reset the NPE and its associated Coprocessors. Modified: projects/ngroups/sys/arm/xscale/ixp425/ixp425_npereg.h ============================================================================== --- projects/ngroups/sys/arm/xscale/ixp425/ixp425_npereg.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/xscale/ixp425/ixp425_npereg.h Fri Jun 19 18:42:13 2009 (r194503) @@ -95,7 +95,6 @@ /* * Instruction and Data Memory Size (in words) for each NPE */ -#ifndef __ixp46X #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA 4096 #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB 2048 #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC 2048 @@ -103,15 +102,9 @@ #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA 2048 #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB 2048 #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC 2048 -#else -#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA 4096 -#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB 4096 -#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC 4096 -#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA 4096 -#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB 4096 -#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC 4096 -#endif +#define IXP46X_NPEDL_INS_MEMSIZE_WORDS 4096 +#define IXP46X_NPEDL_DATA_MEMSIZE_WORDS 4096 /* BAR offsets */ #define IX_NPEDL_REG_OFFSET_EXAD 0x00000000 /* Execution Address */ Modified: projects/ngroups/sys/arm/xscale/ixp425/ixp425var.h ============================================================================== --- projects/ngroups/sys/arm/xscale/ixp425/ixp425var.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/arm/xscale/ixp425/ixp425var.h Fri Jun 19 18:42:13 2009 (r194503) @@ -101,6 +101,7 @@ void ixp425_mem_bs_init(bus_space_tag_t, uint32_t ixp425_sdram_size(void); uint32_t ixp435_ddram_size(void); uint32_t ixp4xx_read_feature_bits(void); +void ixp4xx_write_feature_bits(uint32_t); int ixp425_md_route_interrupt(device_t, device_t, int); void ixp425_md_attach(device_t); Modified: projects/ngroups/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- projects/ngroups/sys/compat/freebsd32/freebsd32_proto.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/compat/freebsd32/freebsd32_proto.h Fri Jun 19 18:42:13 2009 (r194503) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb */ #ifndef _FREEBSD32_SYSPROTO_H_ Modified: projects/ngroups/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- projects/ngroups/sys/compat/freebsd32/freebsd32_syscall.h Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/compat/freebsd32/freebsd32_syscall.h Fri Jun 19 18:42:13 2009 (r194503) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb */ #define FREEBSD32_SYS_syscall 0 Modified: projects/ngroups/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- projects/ngroups/sys/compat/freebsd32/freebsd32_syscalls.c Fri Jun 19 18:18:09 2009 (r194502) +++ projects/ngroups/sys/compat/freebsd32/freebsd32_syscalls.c Fri Jun 19 18:42:13 2009 (r194503) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb */ const char *freebsd32_syscallnames[] = { @@ -25,7 +25,7 @@ const char *freebsd32_syscallnames[] = { "chmod", /* 15 = chmod */ "chown", /* 16 = chown */ "break", /* 17 = break */ - "compat4.freebsd32_getfsstat", /* 18 = old freebsd32_getfsstat */ + "compat4.freebsd32_getfsstat", /* 18 = freebsd4 freebsd32_getfsstat */ "obs_olseek", /* 19 = obsolete olseek */ "getpid", /* 20 = getpid */ "mount", /* 21 = mount */ @@ -164,8 +164,8 @@ const char *freebsd32_syscallnames[] = { "#154", /* 154 = nlm_syscall */ "#155", /* 155 = nfssvc */ "obs_ogetdirentries", /* 156 = obsolete ogetdirentries */ - "compat4.freebsd32_statfs", /* 157 = old freebsd32_statfs */ - "compat4.freebsd32_fstatfs", /* 158 = old freebsd32_fstatfs */ + "compat4.freebsd32_statfs", /* 157 = freebsd4 freebsd32_statfs */ + "compat4.freebsd32_fstatfs", /* 158 = freebsd4 freebsd32_fstatfs */ "#159", /* 159 = nosys */ "#160", /* 160 = lgetfh */ "getfh", /* 161 = getfh */ @@ -180,8 +180,8 @@ const char *freebsd32_syscallnames[] = { "freebsd32_msgsys", /* 170 = freebsd32_msgsys */ "freebsd32_shmsys", /* 171 = freebsd32_shmsys */ "#172", /* 172 = nosys */ - "compat6.freebsd32_pread", /* 173 = old freebsd32_pread */ - "compat6.freebsd32_pwrite", /* 174 = old freebsd32_pwrite */ + "compat6.freebsd32_pread", /* 173 = freebsd6 freebsd32_pread */ + "compat6.freebsd32_pwrite", /* 174 = freebsd6 freebsd32_pwrite */ "#175", /* 175 = nosys */ "ntp_adjtime", /* 176 = ntp_adjtime */ "#177", /* 177 = sfork */ @@ -204,11 +204,11 @@ const char *freebsd32_syscallnames[] = { "getrlimit", /* 194 = getrlimit */ "setrlimit", /* 195 = setrlimit */ "freebsd32_getdirentries", /* 196 = freebsd32_getdirentries */ - "compat6.freebsd32_mmap", /* 197 = old freebsd32_mmap */ + "compat6.freebsd32_mmap", /* 197 = freebsd6 freebsd32_mmap */ "__syscall", /* 198 = __syscall */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906191842.n5JIgDtD052184>