Re: svn commit: r314831 - head/usr.bin/fortune
On 3/6/17 10:07 PM, Jordan Hubbard wrote: [ Charset ISO-Latin1 unsupported, converting… ] Is it true you still use mutt to read your e-mail? :-) - Jordan I had to use mutt(1) to send a patch to the git project to support FreeBSD's propset commands a couple years back. was... fun? I sorta miss it! -Alfred ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
svn commit: r314289 - head/usr.bin/fortune/datfiles
Author: alfred Date: Sun Feb 26 06:05:29 2017 New Revision: 314289 URL: https://svnweb.freebsd.org/changeset/base/314289 Log: spelling fix Submitted by: adamw Modified: head/usr.bin/fortune/datfiles/freebsd-tips Modified: head/usr.bin/fortune/datfiles/freebsd-tips == --- head/usr.bin/fortune/datfiles/freebsd-tips Sun Feb 26 04:41:37 2017 (r314288) +++ head/usr.bin/fortune/datfiles/freebsd-tips Sun Feb 26 06:05:29 2017 (r314289) @@ -494,7 +494,7 @@ attributes use -- Lars Engels% Do you wonder what a terminal program is doing at the moment? dd(1) does not -show any troughput? Hit "^T" (Control + t) to send SIGINFO to the process +show any throughput? Hit "^T" (Control + t) to send SIGINFO to the process and see what it is doing. -- Lars Engels ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
svn commit: r314288 - head/usr.bin/fortune/datfiles
Author: alfred Date: Sun Feb 26 04:41:37 2017 New Revision: 314288 URL: https://svnweb.freebsd.org/changeset/base/314288 Log: More FreeBSD tips for fortune(6) Submitted by: lme PR: 192373 Modified: head/usr.bin/fortune/datfiles/freebsd-tips Modified: head/usr.bin/fortune/datfiles/freebsd-tips == --- head/usr.bin/fortune/datfiles/freebsd-tips Sun Feb 26 01:05:27 2017 (r314287) +++ head/usr.bin/fortune/datfiles/freebsd-tips Sun Feb 26 04:41:37 2017 (r314288) @@ -7,6 +7,7 @@ a root login. You can add a user to the % By pressing "Scroll Lock" you can use the arrow keys to scroll backward through the console output. Press "Scroll Lock" again to turn it off. +Don't have a "Scroll Lock" key? The "Pause / Break" key acts alike. % Can't remember if you've installed a certain port or not? Try "pkg info -x port_name". @@ -40,8 +41,8 @@ Having trouble using fetch through a fir variable FTP_PASSIVE_MODE to yes, and see fetch(3) for more details. % If other operating systems have damaged your Master Boot Record, you can -reinstall it with boot0cfg(8). See -"man boot0cfg" for details. +reinstall it with gpart(8). See +"man gpart" for details. % If you accidentally end up inside vi, you can quit it by pressing Escape, colon (:), q (q), bang (!) and pressing return. @@ -116,7 +117,7 @@ In order to support national characters less without creating other nationalisation aspects, set the environment variable LC_ALL to 'en_US.ISO8859-1'. % -"man firewall" will give advice for building a FreeBSD firewall +"man firewall" will give advice for building a FreeBSD firewall using ipfw(8). -- David Scheidt% "man hier" will explain the way FreeBSD filesystems are normally laid out. @@ -141,7 +142,8 @@ FreeBSD system. -- David Scheidt % Need to do a search in a manpage or in a file you've sent to a pager? Use -"/search_word". To repeat the same search, type "n" for next. +"/search_word". To repeat the same search, type "n" for next or "p" for +previous. -- Dru % Need to find the location of a program? Use "locate program_name". @@ -183,7 +185,7 @@ flag is your gateway. Nice bash prompt: PS1='(\[$(tput md)\]\t <\w>\[$(tput me)\]) $(echo $?) \$ ' -- Mathieu % -Over quota? "du -s * | sort -n " will give you a sorted list of your +Over quota? "du -sh * | sort -h " will give you a sorted list of your directory sizes. -- David Scheidt % @@ -191,7 +193,8 @@ nc(1) (or netcat) is useful not only for TCP or UDP connections, but also for proxying them with inetd(8). % sh (the default Bourne shell in FreeBSD) supports command-line editing. Just -``set -o emacs'' or ``set -o vi'' to enable it. +``set -o emacs'' or ``set -o vi'' to enable it. Use "" key to complete +paths. % Simple tcsh prompt: set prompt = '%# ' % @@ -215,6 +218,8 @@ the scroll lock key and use your page up press the scroll lock key again to get your prompt back. -- Dru % +You can press Ctrl-L while in the shell to clear the screen. +% To determine whether a file is a text file, executable, or some other type of file, use @@ -231,10 +236,10 @@ is running FreeBSD at the time) to quick To erase a line you've written at the command prompt, use "Ctrl-U". -- Dru % -To find the hostname associated with an IP address, use +To find out the hostname associated with an IP address, use drill -x IP_address - -- Allan Jude + -- Dru % To obtain a neat PostScript rendering of a manual page, use ``-t'' switch of the man(1) utility: ``man -t ''. For example: @@ -247,7 +252,8 @@ To quickly create an empty file, use "to -- Dru % To read a compressed file without having to first uncompress it, use -"zcat" or "zless" to view it. +"zcat" or "zless" to view it. There is also "bzcat", "bzless", "xzcat" +and "xzless". -- Dru % To repeat the last command in the C shell, type "!!". @@ -283,7 +289,7 @@ To see how much disk space is left on yo % To see the 10 largest files on a directory or partition, use - du /partition_or_directory_name | sort -rn | head + du -h /partition_or_directory_name | sort -rh | head -- Dru % To see the IP addresses currently set on your active interfaces, type @@ -291,7 +297,8 @@ To see the IP addresses currently set on -- Dru % To see the last 10 lines of a long file, use "tail filename". To see the -first 10 lines, use "head filename". +first 10 lines, use "head filename". To see new lines as they're appended
Re: svn commit: r308314 - head/usr.bin/sed
On 11/5/16 2:07 AM, Konstantin Belousov wrote: On Fri, Nov 04, 2016 at 08:49:59PM +, Pedro F. Giffuni wrote: Author: pfg Date: Fri Nov 4 20:49:59 2016 New Revision: 308314 URL: https://svnweb.freebsd.org/changeset/base/308314 Log: sed(1): add LEGACY_BSDSED_COMPAT compile-time flag. In r297602, which included a __FreeBSD_version bump to 1100105, we changed sed 'i' and 'a' from discarding whitespaces to conform with what GNU and sysvish sed do. There are arguments in favor of keeping the old behavior but the new behavior is also useful for migration purposes. It seems important to at least consider the case of developers depending on the previous behavior, so add a CFLAG to enable the old behaviour. If such legacy behavior appears to be useful or even important for real-world scenarios, I think that an environment variable controlling it is more practical and traditional than the recompilation. +1 ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r295136 - in head: sys/kern sys/netinet sys/sys usr.bin/netstat
On 2/2/16 1:09 PM, Slawa Olhovchenkov wrote: On Tue, Feb 02, 2016 at 12:35:47PM -0800, Alfred Perlstein wrote: I would second John's comment on the necessity of the change though, if one already have 32K of *backlogged* connections, it's probably not very useful to allow more coming in. It sounds like the application itself is seriously broken, and unless expanding the field have some performance benefit, I don't think it should stay. Imagine a hugely busy image board like 2ch.net, if there is a single hiccup, it's very possible to start dropping connections. In reality start dropping connections in any case: nobody will be infinity wait of accept (user close browser and go away, etc). Also, if you have more then 4K backloged connections -- you have problem, you can't process all connections request and in next second you will be have 8K, after next second -- 12K and etc. Thank you Slawa, I am pretty familiar with what you are describing which are "cascade failures", however in order to understand why such a change makes sense I can give you a little early history lesson on a project I developed under FreeBSD, and then explain why such a project would probably not work with FreeBSD as a platform today (we would have to use Linux or custom patches). Here is that use case: Back in 1999 I wrote a custom webserver using FreeBSD that was processing over 1500 connections per second. What we were doing was tracking web hits using "hidden gifs". Now this was 1999 with only 100mbit hardware and a pentium 400mhz. Mind you I was doing this with cpu to spare, so having an influx of additional hits was OK. Meaning I could easily deal with backlog. Now what was important about this case was that EVERY time we served the data we were able to monitize it and pay for my salary at the time which was working on SMP for FreeBSD and a bunch of other patches. Any lost hits / broken connections would easily cost us money, which in turn meant less time on FreeBSD and less time fixing things to scale. In our case the user would not really know if our "page" didn't load because we were just an invisible gif. So back to the example, let's scale that out to today's numbers. 100mbps -> 10gigE, so that would be 1500 conn/sec -> 150,000 conn/sec. so basically at 0.20 of a second of any sort of latency I will be overflowing the listen queue and dropping connections. Now when you still have CPU to spare because connections *are* precious, then the model makes sense to slightly over-provision the servers to allow for somebacklog to be processed. So, in today's day and age, it really does make sense to allow for buffering more than 32k connections, particularly if the developer knows what he is doing. Does this help explain the reasoning? thanks! -Alfred ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r295136 - in head: sys/kern sys/netinet sys/sys usr.bin/netstat
On 2/2/16 12:23 PM, Xin LI wrote: On Tuesday, February 2, 2016, Alfred Perlstein <alf...@freebsd.org <mailto:alf...@freebsd.org>> wrote: On 2/2/16 11:39 AM, John Baldwin wrote: On Tuesday, February 02, 2016 05:57:59 AM Alfred Perlstein wrote: Author: alfred Date: Tue Feb 2 05:57:59 2016 New Revision: 295136 URL: https://svnweb.freebsd.org/changeset/base/295136 Log: Increase max allowed backlog for listen sockets from short to int. PR: 203922 Submitted by: White Knight <white_kni...@2ch.net> MFC After: 4 weeks You do realize that this breaks the ABI of the sysctls used to fetch connection lists (and so will break existing binaries like ucd-snmpd, etc.) and thus can't be MFC'd right? OK, I will not MFC it. Is it worthwhile to extend the xsocket to have padding so that in 11.x and beyond we can allow for some changes in the structure? Another idea I had was to include a version number with the sysctl request so that we can send back versioned structures, let me know what you think about that. The first idea will take not more than a few days for me to accomplish, the second (versioning the sysctl) probably a few more days than that. We have similar construction (versioned ioctl) in FreeBSD ZFS but the main goal is to keep system bootable, not to support all functionalities. Do we change the structure often and is it important enough to warrant the complexity? I think kmem interface have a simple size check to guard against world/kernel inconsistency. I would second John's comment on the necessity of the change though, if one already have 32K of *backlogged* connections, it's probably not very useful to allow more coming in. It sounds like the application itself is seriously broken, and unless expanding the field have some performance benefit, I don't think it should stay. Imagine a hugely busy image board like 2ch.net, if there is a single hiccup, it's very possible to start dropping connections. I stand by the scalability improvement offered here even though it is an edge case. Linux appears to offer 32 bits of backlog and so should we. -Alfred ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r295136 - in head: sys/kern sys/netinet sys/sys usr.bin/netstat
On 2/2/16 11:39 AM, John Baldwin wrote: On Tuesday, February 02, 2016 05:57:59 AM Alfred Perlstein wrote: Author: alfred Date: Tue Feb 2 05:57:59 2016 New Revision: 295136 URL: https://svnweb.freebsd.org/changeset/base/295136 Log: Increase max allowed backlog for listen sockets from short to int. PR: 203922 Submitted by: White Knight <white_kni...@2ch.net> MFC After: 4 weeks You do realize that this breaks the ABI of the sysctls used to fetch connection lists (and so will break existing binaries like ucd-snmpd, etc.) and thus can't be MFC'd right? OK, I will not MFC it. Is it worthwhile to extend the xsocket to have padding so that in 11.x and beyond we can allow for some changes in the structure? Another idea I had was to include a version number with the sysctl request so that we can send back versioned structures, let me know what you think about that. The first idea will take not more than a few days for me to accomplish, the second (versioning the sysctl) probably a few more days than that. thanks, -Alfred ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
svn commit: r295136 - in head: sys/kern sys/netinet sys/sys usr.bin/netstat
Author: alfred Date: Tue Feb 2 05:57:59 2016 New Revision: 295136 URL: https://svnweb.freebsd.org/changeset/base/295136 Log: Increase max allowed backlog for listen sockets from short to int. PR: 203922 Submitted by: White KnightMFC After: 4 weeks Modified: head/sys/kern/uipc_debug.c head/sys/kern/uipc_socket.c head/sys/netinet/sctp_sysctl.c head/sys/netinet/sctp_uio.h head/sys/sys/socketvar.h head/usr.bin/netstat/inet.c head/usr.bin/netstat/sctp.c head/usr.bin/netstat/unix.c Modified: head/sys/kern/uipc_debug.c == --- head/sys/kern/uipc_debug.c Tue Feb 2 03:08:37 2016(r295135) +++ head/sys/kern/uipc_debug.c Tue Feb 2 05:57:59 2016(r295136) @@ -461,9 +461,9 @@ db_print_socket(struct socket *so, const db_print_indent(indent); /* so_list skipped */ - db_printf("so_qlen: %d ", so->so_qlen); - db_printf("so_incqlen: %d ", so->so_incqlen); - db_printf("so_qlimit: %d ", so->so_qlimit); + db_printf("so_qlen: %u ", so->so_qlen); + db_printf("so_incqlen: %u ", so->so_incqlen); + db_printf("so_qlimit: %u ", so->so_qlimit); db_printf("so_timeo: %d ", so->so_timeo); db_printf("so_error: %d\n", so->so_error); Modified: head/sys/kern/uipc_socket.c == --- head/sys/kern/uipc_socket.c Tue Feb 2 03:08:37 2016(r295135) +++ head/sys/kern/uipc_socket.c Tue Feb 2 05:57:59 2016(r295136) @@ -196,7 +196,7 @@ VNET_DEFINE(struct hhook_head *, socket_ * NB: The orginal sysctl somaxconn is still available but hidden * to prevent confusion about the actual purpose of this number. */ -static int somaxconn = SOMAXCONN; +static u_int somaxconn = SOMAXCONN; static int sysctl_somaxconn(SYSCTL_HANDLER_ARGS) @@ -209,7 +209,13 @@ sysctl_somaxconn(SYSCTL_HANDLER_ARGS) if (error || !req->newptr ) return (error); - if (val < 1 || val > USHRT_MAX) + /* +* The purpose of the UINT_MAX / 3 limit, is so that the formula +* 3 * so_qlimit / 2 +* below, will not overflow. + */ + + if (val < 1 || val > UINT_MAX / 3) return (EINVAL); somaxconn = val; Modified: head/sys/netinet/sctp_sysctl.c == --- head/sys/netinet/sctp_sysctl.c Tue Feb 2 03:08:37 2016 (r295135) +++ head/sys/netinet/sctp_sysctl.c Tue Feb 2 05:57:59 2016 (r295136) @@ -426,7 +426,11 @@ sctp_sysctl_handle_assoclist(SYSCTL_HAND xinpcb.maxqlen = 0; } else { xinpcb.qlen = so->so_qlen; + xinpcb.qlen_old = so->so_qlen > USHRT_MAX ? + USHRT_MAX : (uint16_t) so->so_qlen; xinpcb.maxqlen = so->so_qlimit; + xinpcb.maxqlen_old = so->so_qlimit > USHRT_MAX ? + USHRT_MAX : (uint16_t) so->so_qlimit; } SCTP_INP_INCR_REF(inp); SCTP_INP_RUNLOCK(inp); Modified: head/sys/netinet/sctp_uio.h == --- head/sys/netinet/sctp_uio.h Tue Feb 2 03:08:37 2016(r295135) +++ head/sys/netinet/sctp_uio.h Tue Feb 2 05:57:59 2016(r295136) @@ -1170,13 +1170,15 @@ struct xsctp_inpcb { uint32_t total_nospaces; uint32_t fragmentation_point; uint16_t local_port; - uint16_t qlen; - uint16_t maxqlen; + uint16_t qlen_old; + uint16_t maxqlen_old; void *socket; + uint32_t qlen; + uint32_t maxqlen; #if defined(__LP64__) - uint32_t extra_padding[29]; /* future */ + uint32_t extra_padding[27]; /* future */ #else - uint32_t extra_padding[30]; /* future */ + uint32_t extra_padding[28]; /* future */ #endif }; Modified: head/sys/sys/socketvar.h == --- head/sys/sys/socketvar.hTue Feb 2 03:08:37 2016(r295135) +++ head/sys/sys/socketvar.hTue Feb 2 05:57:59 2016(r295136) @@ -95,10 +95,10 @@ struct socket { TAILQ_HEAD(, socket) so_incomp; /* (e) queue of partial unaccepted connections */ TAILQ_HEAD(, socket) so_comp; /* (e) queue of complete unaccepted connections */ TAILQ_ENTRY(socket) so_list;/* (e) list of unaccepted connections */ - u_short so_qlen;/* (e) number of unaccepted connections */ - u_short so_incqlen; /* (e) number of unaccepted incomplete + u_int so_qlen;/* (e) number of unaccepted connections */ + u_int so_incqlen; /* (e) number of
Re: svn commit: r287606 - head/sys/kern
64k hard is too low a number for large memory machines. -Alfred On 9/10/15 9:18 AM, Adrian Chadd wrote: On 10 September 2015 at 09:04, Warner Loshwrote: On Thu, Sep 10, 2015 at 9:53 AM, Ed Maste wrote: On 10 September 2015 at 04:05, Adrian Chadd wrote: Author: adrian Date: Thu Sep 10 04:05:58 2015 New Revision: 287606 URL: https://svnweb.freebsd.org/changeset/base/287606 Log: Also make kern.maxfilesperproc a boot time tunable. ... TODO: Also "we" should * Submit patches upstream or to the ports tree to use closefrom I thought the consensus was that we'd fix things to have fewer FDs by default, but instead allow individual processes to raise it via the usual methods. I'm looking at how to do this in a somewhat sensible fashion. Right now we just have openfiles=unlimited; in /etc/login.conf which seems a little odd. I don't know yet if that affects the default set that services started via /etc/rc get - init gets the whole default maxfilesperproc and stuff seems to inherit from that unless told otherwise. I think the more sensible default would be: * set /etc/login.conf to some much lower values - say, 4k soft, 64k hard; * root can always override its settings up to kern.maxfilesperproc; * modify /etc/rc to set some default rlimits as appropriate; * introduce configuration options ({daemon_rlimit_XXX}?) in /etc/rc.conf that lets someone override what the default rlimits should be for a given process,, as (and I'm not making this up) if you run 'service XXX restart' from a root login you get the rlimits from the shell, which may differ from the system startup. That way we can setup various services to have higher openfile limits via /etc/rc.conf entries for those services rather than having to hack each startup script. It also means that no matter what is running 'service XXX YYY' as root, you'll get the 'correct'(er) rlimits. Thoughts? -adrian ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r287606 - head/sys/kern
The idea is sane defaults. Surely 256k makes sense for a machine with that much memory. Sent from my iPhone > On Sep 11, 2015, at 2:02 PM, Adrian Chadd <adr...@freebsd.org> wrote: > >> On 11 September 2015 at 13:46, Alfred Perlstein <bri...@mu.org> wrote: >> 64k hard is too low a number for large memory machines. > > Root can always bump it up all the way to kern.maxfilesperproc. > > I'm also a big fan of having the description of config of service > stuff be in /etc/rc.conf, rather than splattered around the place. So > I also like the idea of _rlimit_openfiles="" so it can be > clearly overridden for services that require it. > > I'm open to other suggestions! > > > > -adrian > >> -Alfred >> >> >>> On 9/10/15 9:18 AM, Adrian Chadd wrote: >>> >>>> On 10 September 2015 at 09:04, Warner Losh <i...@bsdimp.com> wrote: >>>> >>>> >>>>> On Thu, Sep 10, 2015 at 9:53 AM, Ed Maste <ema...@freebsd.org> wrote: >>>>> >>>>>> On 10 September 2015 at 04:05, Adrian Chadd <adr...@freebsd.org> wrote: >>>>>> >>>>>> Author: adrian >>>>>> Date: Thu Sep 10 04:05:58 2015 >>>>>> New Revision: 287606 >>>>>> URL: https://svnweb.freebsd.org/changeset/base/287606 >>>>>> >>>>>> Log: >>>>>> Also make kern.maxfilesperproc a boot time tunable. >>>>>> ... >>>>>> TODO: >>>>> >>>>> Also "we" should >>>>> * Submit patches upstream or to the ports tree to use closefrom >>>> >>>> >>>> I thought the consensus was that we'd fix things to have fewer FDs >>>> by default, but instead allow individual processes to raise it via the >>>> usual methods. >>> >>> I'm looking at how to do this in a somewhat sensible fashion. Right >>> now we just have openfiles=unlimited; in /etc/login.conf which seems a >>> little odd. I don't know yet if that affects the default set that >>> services started via /etc/rc get - init gets the whole default >>> maxfilesperproc and stuff seems to inherit from that unless told >>> otherwise. >>> >>> I think the more sensible default would be: >>> >>> * set /etc/login.conf to some much lower values - say, 4k soft, 64k hard; >>> * root can always override its settings up to kern.maxfilesperproc; >>> * modify /etc/rc to set some default rlimits as appropriate; >>> * introduce configuration options ({daemon_rlimit_XXX}?) in >>> /etc/rc.conf that lets someone override what the default rlimits >>> should be for a given process,, as (and I'm not making this up) if you >>> run 'service XXX restart' from a root login you get the rlimits from >>> the shell, which may differ from the system startup. >>> >>> That way we can setup various services to have higher openfile limits >>> via /etc/rc.conf entries for those services rather than having to hack >>> each startup script. It also means that no matter what is running >>> 'service XXX YYY' as root, you'll get the 'correct'(er) rlimits. >>> >>> Thoughts? >>> >>> >>> -adrian > ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r285950 - stable/10/usr.sbin/mfiutil
Can't this use asprintf? There's a catchall free() at the end and no early returns in this function. Otherwise snprintf? On 7/28/15 8:40 AM, Ed Maste wrote: Author: emaste Date: Tue Jul 28 12:40:41 2015 New Revision: 285950 URL: https://svnweb.freebsd.org/changeset/base/285950 Log: MFC r201289: mfiutil: increase buffer size to accommodate sprintf string PR: 201289 Modified: stable/10/usr.sbin/mfiutil/mfi_foreign.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/mfiutil/mfi_foreign.c == --- stable/10/usr.sbin/mfiutil/mfi_foreign.cTue Jul 28 12:40:09 2015 (r285949) +++ stable/10/usr.sbin/mfiutil/mfi_foreign.cTue Jul 28 12:40:41 2015 (r285950) @@ -110,7 +110,7 @@ static int foreign_show_cfg(int fd, uint32_t opcode, uint8_t cfgidx, int diagnostic) { struct mfi_config_data *config; - char prefix[26]; + char prefix[64]; int error; uint8_t mbox[4]; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r280120 - head/sys/dev/wpi
Just use github, you can then just follow my directions on the https://wiki.freebsd.org/GitWorkflow page. you can commit them as individual commits if you would like or make a giant squash commit. Better would really be to replay all the commits into an svn branch, then make a single svn merge commit. Although svn is meh. -Alfred On Mar 15, 2015, at 2:35 PM, Adrian Chadd wrote: .. promise I'm done for now. (God, it'd be nice to use git, or some web ui that lets me batch review and commit things like this.) -a On 15 March 2015 at 14:32, Adrian Chadd adr...@freebsd.org wrote: Author: adrian Date: Sun Mar 15 21:32:11 2015 New Revision: 280120 URL: https://svnweb.freebsd.org/changeset/base/280120 Log: Add a new taskqueue (device specific, not net80211 ic-tq); use it for device restart. (Committers note - once scan overhaul and a few other things have been fixed in net80211 to not block things in the taskqueue, this can disappear and the device specific taskqueues in other drivers can also go away.) PR: kern/197143 Submitted by: Andriy Voskoboinyk s3er...@gmail.com Modified: head/sys/dev/wpi/if_wpi.c head/sys/dev/wpi/if_wpivar.h Modified: head/sys/dev/wpi/if_wpi.c == --- head/sys/dev/wpi/if_wpi.c Sun Mar 15 21:30:20 2015(r280119) +++ head/sys/dev/wpi/if_wpi.c Sun Mar 15 21:32:11 2015(r280120) @@ -532,6 +532,14 @@ wpi_attach(device_t dev) TASK_INIT(sc-sc_radioon_task, 0, wpi_radio_on, sc); TASK_INIT(sc-sc_start_task, 0, wpi_start_task, sc); + sc-sc_tq = taskqueue_create(wpi_taskq, M_WAITOK, + taskqueue_thread_enqueue, sc-sc_tq); + error = taskqueue_start_threads(sc-sc_tq, 1, 0, wpi_taskq); + if (error != 0) { + device_printf(dev, can't start threads, error %d\n, error); + goto fail; + } + wpi_sysctlattach(sc); /* @@ -688,6 +696,9 @@ wpi_detach(device_t dev) wpi_stop(sc); + taskqueue_drain_all(sc-sc_tq); + taskqueue_free(sc-sc_tq); + callout_drain(sc-watchdog_rfkill); callout_drain(sc-tx_timeout); callout_drain(sc-scan_timeout); @@ -2387,8 +2398,6 @@ wpi_intr(void *arg) WPI_WRITE(sc, WPI_FH_INT, r2); if (r1 (WPI_INT_SW_ERR | WPI_INT_HW_ERR)) { - struct ieee80211com *ic = ifp-if_l2com; - device_printf(sc-sc_dev, fatal firmware error\n); #ifdef WPI_DEBUG wpi_debug_registers(sc); @@ -2397,7 +2406,7 @@ wpi_intr(void *arg) DPRINTF(sc, WPI_DEBUG_HW, (%s)\n, (r1 WPI_INT_SW_ERR) ? (Software Error) : (Hardware Error)); - ieee80211_runtask(ic, sc-sc_reinittask); + taskqueue_enqueue(sc-sc_tq, sc-sc_reinittask); goto end; } @@ -2950,10 +2959,9 @@ wpi_scan_timeout(void *arg) { struct wpi_softc *sc = arg; struct ifnet *ifp = sc-sc_ifp; - struct ieee80211com *ic = ifp-if_l2com; if_printf(ifp, scan timeout\n); - ieee80211_runtask(ic, sc-sc_reinittask); + taskqueue_enqueue(sc-sc_tq, sc-sc_reinittask); } static void @@ -2961,11 +2969,10 @@ wpi_tx_timeout(void *arg) { struct wpi_softc *sc = arg; struct ifnet *ifp = sc-sc_ifp; - struct ieee80211com *ic = ifp-if_l2com; if_printf(ifp, device timeout\n); if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); - ieee80211_runtask(ic, sc-sc_reinittask); + taskqueue_enqueue(sc-sc_tq, sc-sc_reinittask); } static int Modified: head/sys/dev/wpi/if_wpivar.h == --- head/sys/dev/wpi/if_wpivar.hSun Mar 15 21:30:20 2015 (r280119) +++ head/sys/dev/wpi/if_wpivar.hSun Mar 15 21:32:11 2015 (r280120) @@ -228,6 +228,9 @@ struct wpi_softc { struct task sc_radioon_task; struct task sc_start_task; + /* Taskqueue */ + struct taskqueue*sc_tq; + /* Eeprom info. */ uint8_t cap; uint16_trev; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r279603 - in head: bin/rcp usr.bin/rlogin usr.bin/rsh
On 3/5/15 6:09 AM, David Chisnall wrote: On 5 Mar 2015, at 14:04, Dmitry Sivachenko de...@freebsd.org wrote: It is so nice to have most useful stuff out of the box. The question is whether a tool for logging into remote machines without encryption is 'the most useful stuff'. The tool is also [ab]used for network testing, but we already provide a better tool for that in the form of nc(1). David Agree. Moving it out of base +1000. It's time we made FreeBSD into an actual distro which is what is happening anyhow. This is a great time! ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r279603 - in head: bin/rcp usr.bin/rlogin usr.bin/rsh
On 3/5/15 4:30 AM, Gleb Smirnoff wrote: On Thu, Mar 05, 2015 at 03:30:16PM +0300, Slawa Olhovchenkov wrote: S On Thu, Mar 05, 2015 at 03:21:03PM +0300, Slawa Olhovchenkov wrote: S S On Wed, Mar 04, 2015 at 10:01:45PM +, Baptiste Daroussin wrote: S S B Author: bapt S S B Date: Wed Mar 4 22:01:44 2015 S S B New Revision: 279603 S S B URL: https://svnweb.freebsd.org/changeset/base/279603 S S B S S B Log: S S B r* commands are not precious anymore S S B S S B Modified: S S B head/bin/rcp/Makefile S S B head/usr.bin/rlogin/Makefile S S S S I guess when they are going to be not precious enough to be removed? :) S S S S In modern world of ssh and https, does any OS require them in base? S S S S yes. S S Some telecom equipment require rlogin. S S Other telecom equipment require a JRE and special .jar to S configure them. Does that mean operating systems must ship S them? S S Yes, if ships before (don't break if working). S Some Linux distro remove telnet from default install. S Do you like to remove telnet also? Yes. +1 :) (well at least not have it in source tree as-is) :) ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r279603 - in head: bin/rcp usr.bin/rlogin usr.bin/rsh
On 3/5/15 5:06 AM, David Chisnall wrote: On 5 Mar 2015, at 12:42, Slawa Olhovchenkov s...@zxy.spb.ru wrote: nc don't work with unix socket. Okay, now you're changing your requirements - you first spoke of remote equipment and network testing. However, UNIX domain sockets appear as files in the filesystem, and we have a host of utilities that are capable of interacting with files (unless they're message-oriented, but then telnet doesn't help either). nc -U ? -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r279603 - in head: bin/rcp usr.bin/rlogin usr.bin/rsh
On 3/5/15 4:49 AM, Edward Tomasz Napierała wrote: On 0305T1555, Gleb Smirnoff wrote: On Thu, Mar 05, 2015 at 03:40:37PM +0300, Slawa Olhovchenkov wrote: S nc(1), which is a pure socket testing tool. For telnet(1) this S capability is a side effect. S S You don't try this in practice. S % nc zxy.spb.ru 81 S % S % telnet zxy.spb.ru 81 S Trying 195.70.199.98... S telnet: connect to address 195.70.199.98: Connection refused S telnet: Unable to connect to remote host S S nc is not usable. Yes, this how unix way works. Command has return value, or you can use '-v', of you want it to be chatty. Actually, not giving error message on error by default seems quite broken to me. Standard UNIX utilities don't fail silently: You need to read unix hater's handbook. :) -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r279603 - in head: bin/rcp usr.bin/rlogin usr.bin/rsh
On 3/5/15 4:28 AM, Slawa Olhovchenkov wrote: On Thu, Mar 05, 2015 at 12:24:05PM +, David Chisnall wrote: On 5 Mar 2015, at 12:21, Slawa Olhovchenkov s...@zxy.spb.ru wrote: I guess when they are going to be not precious enough to be removed? :) In modern world of ssh and https, does any OS require them in base? yes. Some telecom equipment require rlogin. 'Some relatively obscure use case needs them' is not usually the requirement for keeping something in the base system. Presumably people who interact with telecoms equipment are capable of installing packages... And install from package ssh, inetd, systemd, binutils... How does one patch systemd under FreeBSD? -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r277694 - head/sys/amd64/conf
Don't have a strong opinion on this because I'm not in the know lately, but was wondering: 1) if we wanted to keep NE1000/2000 support for FreeBSD in emulators? Probably not I assume? 2) Does Linux nuke these devices? why/why-not? On Jan 25, 2015, at 9:58 AM, Warner Losh wrote: On Jan 25, 2015, at 7:54 AM, Garrett Cooper yaneurab...@gmail.com wrote: On Jan 25, 2015, at 04:43, Sergey Kandaurov pluk...@freebsd.org wrote: On 25 January 2015 at 15:02, Dag-Erling Smørgrav d...@freebsd.org wrote: Author: des Date: Sun Jan 25 12:02:38 2015 New Revision: 277694 URL: https://svnweb.freebsd.org/changeset/base/277694 Log: Remove ISA NICs. Anyone still using these on amd64 can build their own kernel. Modified: head/sys/amd64/conf/GENERIC If so, what about i386? (I'd rather not pc98) What about device isa in DEFAULTS? isa is still needed in some scenarios. I just don't remember the full details offhand (something about internal buses iirc... And IPMI for starters...) isa” in this context should be read as “mainbus” not as “ISA slots”. You can’t remove it without some significant work, and even then the interface changes to long established interfaces isn’t worth the pain. Warner ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r277694 - head/sys/amd64/conf
Never mind, apologies, thought this was i386+amd64. I'm going to guess anything emulating amd64 has pci NICs in it. :) On Jan 26, 2015, at 9:21 AM, Alfred Perlstein wrote: Don't have a strong opinion on this because I'm not in the know lately, but was wondering: 1) if we wanted to keep NE1000/2000 support for FreeBSD in emulators? Probably not I assume? 2) Does Linux nuke these devices? why/why-not? On Jan 25, 2015, at 9:58 AM, Warner Losh wrote: On Jan 25, 2015, at 7:54 AM, Garrett Cooper yaneurab...@gmail.com wrote: On Jan 25, 2015, at 04:43, Sergey Kandaurov pluk...@freebsd.org wrote: On 25 January 2015 at 15:02, Dag-Erling Smørgrav d...@freebsd.org wrote: Author: des Date: Sun Jan 25 12:02:38 2015 New Revision: 277694 URL: https://svnweb.freebsd.org/changeset/base/277694 Log: Remove ISA NICs. Anyone still using these on amd64 can build their own kernel. Modified: head/sys/amd64/conf/GENERIC If so, what about i386? (I'd rather not pc98) What about device isa in DEFAULTS? isa is still needed in some scenarios. I just don't remember the full details offhand (something about internal buses iirc... And IPMI for starters...) isa” in this context should be read as “mainbus” not as “ISA slots”. You can’t remove it without some significant work, and even then the interface changes to long established interfaces isn’t worth the pain. Warner ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r277653 - head/sys/dev/netmap
Wasn't this pointed out by James K? On 1/24/15 11:49 AM, Adrian Chadd wrote: Author: adrian Date: Sat Jan 24 19:49:27 2015 New Revision: 277653 URL: https://svnweb.freebsd.org/changeset/base/277653 Log: Change the permissions from 0660 to 0600. Otherwise people in wheel can do things with netmap, including but not limited to promisc transmit/receive. Approved by: luigi MFC after: 1 week Modified: head/sys/dev/netmap/netmap.c Modified: head/sys/dev/netmap/netmap.c == --- head/sys/dev/netmap/netmap.cSat Jan 24 19:13:03 2015 (r277652) +++ head/sys/dev/netmap/netmap.cSat Jan 24 19:49:27 2015 (r277653) @@ -3075,10 +3075,10 @@ netmap_init(void) #ifdef __FreeBSD__ /* support for the 'eternal' flag */ netmap_dev = make_dev_credf(MAKEDEV_ETERNAL_KLD, - netmap_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0660, + netmap_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0600, netmap); #else - netmap_dev = make_dev(netmap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0660, + netmap_dev = make_dev(netmap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, netmap); #endif if (!netmap_dev) ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r276565 - in head/gnu: lib/libstdc++/doc usr.bin/diff usr.bin/diff/doc usr.bin/gdb usr.bin/gperf usr.bin/gperf/doc
On 1/2/15 1:33 PM, Steve Kargl wrote: On Fri, Jan 02, 2015 at 03:59:11PM -0500, Benjamin Kaduk wrote: On Fri, Jan 2, 2015 at 3:44 PM, Steve Kargl s...@troutmask.apl.washington.edu wrote: On Fri, Jan 02, 2015 at 08:34:56PM +, Garrett Cooper wrote: Author: ngie Date: Fri Jan 2 20:34:55 2015 New Revision: 276565 URL: https://svnweb.freebsd.org/changeset/base/276565 Log: Remove gnu/ info pages to unbreak the build with MK_GCC != no, etc Does this mean that FreeBSD is now shipping utilities without documentation? I'm pretty sure we've been doing that for a long, long time. Note that MK_GCC=no is the default on head for the tier-1 platforms. Yeah, I know what the default is for tier-1, which is somewhat irrelevant to my question. bapt@ has removed info pages (and Garrett seems to have cleanup after bapt). Noting that FreeBSD has more than just tier-1, the question remains. Is FreeBSD now shipping utilities without proper documentation? The docs are there, you just need to install a package to read them. It was explained in the commit log. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r276195 - in head: . lib/libxo
You are correct. Reason for move was due to programs inside of /bin and /sbin depending on libxo. -Alfred On 12/29/14 8:49 AM, Bjoern A. Zeeb wrote: On 25 Dec 2014, at 03:15 , Alfred Perlstein alf...@freebsd.org wrote: Author: alfred Date: Thu Dec 25 03:15:56 2014 New Revision: 276195 URL: https://svnweb.freebsd.org/changeset/base/276195 Log: Move libxo to /lib Update ObsoleteFiles to reflect libxo move. What this commit message doesn’t say is “WHY?” Everything else you described is kind of obvious from the commit diff ;-) Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D1370 Modified: head/ObsoleteFiles.inc head/lib/libxo/Makefile Modified: head/ObsoleteFiles.inc == --- head/ObsoleteFiles.inc Thu Dec 25 02:17:17 2014(r276194) +++ head/ObsoleteFiles.inc Thu Dec 25 03:15:56 2014(r276195) @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20141224: libxo moved to /lib +OLD_FILES+=usr/lib/libxo.a +OLD_FILES+=usr/lib/libxo_p.a # 20141223: remove in6_gif.h, in_gif.h and if_stf.h OLD_FILES+=usr/include/net/if_stf.h OLD_FILES+=usr/include/netinet/in_gif.h Modified: head/lib/libxo/Makefile == --- head/lib/libxo/Makefile Thu Dec 25 02:17:17 2014(r276194) +++ head/lib/libxo/Makefile Thu Dec 25 03:15:56 2014(r276195) @@ -7,6 +7,8 @@ LIBXO= ${.CURDIR:H:H}/contrib/libxo LIB=xo SHLIB_MAJOR=0 +SHLIBDIR?= /lib + SRCS= libxo.c CFLAGS+=-I${LIBXO}/libxo — Bjoern A. Zeeb Charles Haddon Spurgeon: Friendship is one of the sweetest joys of life. Many might have failed beneath the bitterness of their trial had they not found a friend. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r276273 - head/contrib/libxo/libxo
Author: alfred Date: Sat Dec 27 01:06:19 2014 New Revision: 276273 URL: https://svnweb.freebsd.org/changeset/base/276273 Log: Output strerror from xo_warn Reported by: bapt Reviewed by: bapt, ngie Differential Revision: https://reviews.freebsd.org/D1378 Modified: head/contrib/libxo/libxo/libxo.c Modified: head/contrib/libxo/libxo/libxo.c == --- head/contrib/libxo/libxo/libxo.cSat Dec 27 00:55:14 2014 (r276272) +++ head/contrib/libxo/libxo/libxo.cSat Dec 27 01:06:19 2014 (r276273) @@ -956,9 +956,6 @@ xo_warn_hcv (xo_handle_t *xop, int code, } memcpy(newfmt + plen, fmt, len); -/* Add a newline to the fmt string */ -if (!(xop-xo_flags XOF_WARN_XML)) - newfmt[len++ + plen] = '\n'; newfmt[len + plen] = '\0'; if (xop-xo_flags XOF_WARN_XML) { @@ -1010,6 +1007,7 @@ xo_warn_hcv (xo_handle_t *xop, int code, } else { vfprintf(stderr, newfmt, vap); + fprintf(stderr, : %s\n, strerror(code)); } } ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r276209 - head
Author: alfred Date: Thu Dec 25 17:53:43 2014 New Revision: 276209 URL: https://svnweb.freebsd.org/changeset/base/276209 Log: Fix OLD_LIBS for libxo moved to /lib Pointed out by: kib Modified: head/ObsoleteFiles.inc Modified: head/ObsoleteFiles.inc == --- head/ObsoleteFiles.inc Thu Dec 25 17:50:04 2014(r276208) +++ head/ObsoleteFiles.inc Thu Dec 25 17:53:43 2014(r276209) @@ -39,8 +39,7 @@ # done # 20141224: libxo moved to /lib -OLD_FILES+=usr/lib/libxo.a -OLD_FILES+=usr/lib/libxo_p.a +OLD_LIBS+=usr/lib/libxo.so.0 # 20141223: remove in6_gif.h, in_gif.h and if_stf.h OLD_FILES+=usr/include/net/if_stf.h OLD_FILES+=usr/include/netinet/in_gif.h ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r276195 - in head: . lib/libxo
On 12/25/14 12:07 PM, Garrett Cooper wrote: On Dec 25, 2014, at 02:21, Konstantin Belousov kostik...@gmail.com wrote: On Wed, Dec 24, 2014 at 11:04:01PM -0800, Garrett Cooper wrote: On Dec 24, 2014, at 19:56, Alfred Perlstein alf...@freebsd.org wrote: On 12/24/14 7:36 PM, Garrett Cooper wrote: ... There isn't a leftover versioned .so in /usr/lib ? usr/lib/libxo.so.0 (without leading slash) must go into OLD_LIBS. It is all explained in the first paragraph of the file comment. +1 to what kib said :).. I *think* i fixed it, but tbh the docs in that file make very little sense to the layperson. The suggested sanity scripts should be either make(1) targets, or perhaps scripts in /usr/share to run, not inline comments. Having a make sanity-obsolete would be nice. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r276195 - in head: . lib/libxo
Author: alfred Date: Thu Dec 25 03:15:56 2014 New Revision: 276195 URL: https://svnweb.freebsd.org/changeset/base/276195 Log: Move libxo to /lib Update ObsoleteFiles to reflect libxo move. Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D1370 Modified: head/ObsoleteFiles.inc head/lib/libxo/Makefile Modified: head/ObsoleteFiles.inc == --- head/ObsoleteFiles.inc Thu Dec 25 02:17:17 2014(r276194) +++ head/ObsoleteFiles.inc Thu Dec 25 03:15:56 2014(r276195) @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20141224: libxo moved to /lib +OLD_FILES+=usr/lib/libxo.a +OLD_FILES+=usr/lib/libxo_p.a # 20141223: remove in6_gif.h, in_gif.h and if_stf.h OLD_FILES+=usr/include/net/if_stf.h OLD_FILES+=usr/include/netinet/in_gif.h Modified: head/lib/libxo/Makefile == --- head/lib/libxo/Makefile Thu Dec 25 02:17:17 2014(r276194) +++ head/lib/libxo/Makefile Thu Dec 25 03:15:56 2014(r276195) @@ -7,6 +7,8 @@ LIBXO= ${.CURDIR:H:H}/contrib/libxo LIB= xo SHLIB_MAJOR=0 +SHLIBDIR?= /lib + SRCS= libxo.c CFLAGS+=-I${LIBXO}/libxo ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r276195 - in head: . lib/libxo
On 12/24/14 7:36 PM, Garrett Cooper wrote: On Dec 24, 2014, at 19:15, Alfred Perlstein alf...@freebsd.org wrote: Author: alfred Date: Thu Dec 25 03:15:56 2014 New Revision: 276195 URL: https://svnweb.freebsd.org/changeset/base/276195 Log: Move libxo to /lib Update ObsoleteFiles to reflect libxo move. Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D1370 Modified: head/ObsoleteFiles.inc head/lib/libxo/Makefile Modified: head/ObsoleteFiles.inc == --- head/ObsoleteFiles.incThu Dec 25 02:17:17 2014(r276194) +++ head/ObsoleteFiles.incThu Dec 25 03:15:56 2014(r276195) @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20141224: libxo moved to /lib +OLD_FILES+=usr/lib/libxo.a +OLD_FILES+=usr/lib/libxo_p.a This should actually be the .so file only. Static libraries are always in /usr/lib . Sorry for not being explicit about this (I'm currently writing from the boonies so bandwidth is limited) :/. I think the .so gets clobbered with a symlink, so it should be fine? Meaning that after I moved the lib to /lib this is what I see in /usr/lib: /usr/src/contrib/libxo % ls -l /usr/lib/libxo* -r--r--r-- 1 root wheel 83764 Dec 24 19:31 /usr/lib/libxo.a lrwxr-xr-x 1 root wheel 15 Dec 24 19:31 /usr/lib/libxo.so - /lib/libxo.so.0 -r--r--r-- 1 root wheel 95164 Dec 24 19:31 /usr/lib/libxo_p.a Or should I reference it explicitly? What is the end result here? -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275804 - head/gnu/usr.bin/cc/cc1plus
On 12/15/14 1:44 PM, Craig Rodrigues wrote: On Mon, Dec 15, 2014 at 1:38 PM, Ed Maste ema...@freebsd.org mailto:ema...@freebsd.org wrote: cfns.h: cfns.gperf gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \ ${.ALLSRC} ${.TARGET}_temp mv ${.TARGET}_temp ${.TARGET} Yeah. There are already examples of both approaches in the tree; I don't see a reason to strongly prefer one over the other. For very large build systems, sometimes it is easier to debug weird build problems when the make operations do not have conditional logic in them. +1 Also, not removing temporary files upon failure makes things easier to debug. +100 -- Craig ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275431 - in head/sys/dev: e1000 ixgbe
here: https://reviews.freebsd.org/D1149 The gist of this change is just to allow later tuning of the num_queues parameter for Intel NICS. Can you please sign up for a phabricator account? https://wiki.freebsd.org/CodeReview -Alfred Original Message Subject: [Differential] [Commented On] D1149: ixgbe and igb should check tunables at load time. Also support per-device queue count. Date: Sat, 15 Nov 2014 20:13:51 + From: alfredperlstein (Alfred Perlstein) phabric-nore...@freebsd.org To: alf...@freebsd.org alfredperlstein added a comment. I don't know how to do that. Please make 'jfv' an account. REVISION DETAIL https://reviews.freebsd.org/D1149 To: alfredperlstein, glebius, adrian, melifaro, hrs, wollman, bryanv, rpaulo, bz, gnn, hiren, rwatson, smh Cc: ngie, bryanv ---End Message--- ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
John, Will work on a new revision based on feedback. Two things to note however: Already explored the idea of using kernel_sysctlbyname but rejected due to following: It makes little sense to have a rw sysctl that only takes effect some times. This violates POLA at the expense of making code appear cleaner. Expectation is that writable sysctls take effect or are read only. They are not to be write sometimes unless we are to introduce a new flag. Instead of going to a confusing model we consider some form of rw sysctl that can set itself ro somehow. Otherwise people will be confused as to why nic queues says N while actually M. What the rw-ro api would look like I have no idea. Suggestions? Btw the review was cc'd to jvf and smh and gleb in phabricator. Smh responded. Jvf + gleb timed out after 2+ weeks for a relatively trivial change. Will look at the device_get_int stuff soon. Wasn't aware that function existed. Sent from my iPhone On Dec 1, 2014, at 6:32 AM, John Baldwin j...@freebsd.org wrote: On Wednesday, November 26, 2014 08:19:36 PM Alfred Perlstein wrote: Author: alfred Date: Wed Nov 26 20:19:36 2014 New Revision: 275136 URL: https://svnweb.freebsd.org/changeset/base/275136 Log: Make igb and ixgbe check tunables at probe time. This allows one to make a kernel module to tune the number of queues before the driver loads. This is needed so that a module at SI_SUB_CPU can set tunables for these drivers to take. Otherwise getenv is called too early by the TUNABLE macros. Reviewed by: smh Phabric: https://reviews.freebsd.org/D1149 The explicit TUNABLE_INT_FETCH strikes me as the wrong approach and hackish. That is, each time you want to frob a tunable like this you will have to go add a bunch of code to explicitly re-read the tunable, etc. Instead, you could have simply changed your helper module to use kernel_sysctlbyname() to set hw.igb.num_queues. That would have required only a single character change to make the SYSCTL read/write instead of read/only for each tunable in question. To be completely future proof (i.e. to handle loading the module in question post-boot), your module could both do setenv() and kernel_sysctlbyname(). That seems to be a more extensible approach in terms of allowing more of these to be changed in the future without having to do a manual bypass of the existing tunable infrastructure for each tunable. I would much prefer that you revert this part and change the relevant tunables to CTLFLAG_RWTUN and update your out-of-tree module to use kernel_sysctlbyname(). Also, if you didn't run this by the Intel folks (e.g. jfv@) that might have been nice as a courtesy. Also, please use the existing resource_int_value() that uses 'hint.igb.0.foo' instead of inventing a different wheel (device_get_int()). This is what all the other drivers in the tree that provide per-instance tunables use. You could perhaps have device_get_int() as a wrapper around resource_int_value(), but we should use the existing convention, not invent a conflicting one. Modified: head/sys/dev/e1000/if_igb.c head/sys/dev/ixgbe/ixgbe.c head/sys/kern/subr_bus.c head/sys/sys/bus.h Modified: head/sys/dev/e1000/if_igb.c == --- head/sys/dev/e1000/if_igb.cWed Nov 26 18:03:25 2014(r275135) +++ head/sys/dev/e1000/if_igb.cWed Nov 26 20:19:36 2014(r275136) @@ -188,6 +188,7 @@ static char *igb_strings[] = { /* * Function prototypes */ +static intigb_per_unit_num_queues(SYSCTL_HANDLER_ARGS); static intigb_probe(device_t); static intigb_attach(device_t); static intigb_detach(device_t); @@ -493,6 +494,11 @@ igb_attach(device_t dev) OID_AUTO, nvm, CTLTYPE_INT|CTLFLAG_RW, adapter, 0, igb_sysctl_nvm_info, I, NVM Information); +SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), +SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), +OID_AUTO, num_queues, CTLTYPE_INT | CTLFLAG_RD, +adapter, 0, igb_per_unit_num_queues, I, Number of Queues); + You don't need igb_per_unit_num_queues(). SYSCTL_ADD_INT(..., adapter-num_queues) should have been used instead. @@ -2831,6 +2837,7 @@ igb_setup_msix(struct adapter *adapter) { device_tdev = adapter-dev; intbar, want, queues, msgs, maxqueues; +intn_queues; /* tuneable override */ if (igb_enable_msix == 0) @@ -2858,8 +2865,18 @@ igb_setup_msix(struct adapter *adapter) goto msi; } -/* Figure out a reasonable auto config value */ -queues = (mp_ncpus (msgs-1)) ? (msgs-1) : mp_ncpus; +n_queues = 0; +/* try more specific tunable, then global, then finally default to boot time
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 7:26 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:19, Alfred Perlstein wrote: It makes little sense to have a rw sysctl that only takes effect some times. This violates POLA at the expense of making code appear cleaner. Expectation is that writable sysctls take Hi, I think you are missing a new feature in 11-current, that if you add CTLFLAG_TUN to even dynamic sysctls, they get initialized from the enviroment, if any. That way you can just skip the TUNABLE_INT_FETCH() stuff! Ok I can probably switch to that. Any objection if I mfc this feature to -stable if it does what I need? --HPS ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 7:34 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:29, Alfred Perlstein wrote: On Dec 1, 2014, at 7:26 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:19, Alfred Perlstein wrote: It makes little sense to have a rw sysctl that only takes effect some times. This violates POLA at the expense of making code appear cleaner. Expectation is that writable sysctls take Hi, I think you are missing a new feature in 11-current, that if you add CTLFLAG_TUN to even dynamic sysctls, they get initialized from the enviroment, if any. That way you can just skip the TUNABLE_INT_FETCH() stuff! Ok I can probably switch to that. Any objection if I mfc this feature to -stable if it does what I need? Hi, No objections from me at least, but it might require some work from your side, because there was a lot of cleanup about removing duplicate definitions, like static SYSCTLS which have already CTLFLAG_TUN and a TUNABLE fetch statement, which makes the variable init twice. Just look at the revision history for kern/kern_sysctl.c in 11-current. --HPS One question though... For the global sysctl for all nodes When is the var fetched? If it's before SI_SUB_CPU it is not useful. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 7:43 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:39, Alfred Perlstein wrote: On Dec 1, 2014, at 7:34 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:29, Alfred Perlstein wrote: On Dec 1, 2014, at 7:26 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:19, Alfred Perlstein wrote: It makes little sense to have a rw sysctl that only takes effect some times. This violates POLA at the expense of making code appear cleaner. Expectation is that writable sysctls take Hi, I think you are missing a new feature in 11-current, that if you add CTLFLAG_TUN to even dynamic sysctls, they get initialized from the enviroment, if any. That way you can just skip the TUNABLE_INT_FETCH() stuff! Ok I can probably switch to that. Any objection if I mfc this feature to -stable if it does what I need? Hi, No objections from me at least, but it might require some work from your side, because there was a lot of cleanup about removing duplicate definitions, like static SYSCTLS which have already CTLFLAG_TUN and a TUNABLE fetch statement, which makes the variable init twice. Just look at the revision history for kern/kern_sysctl.c in 11-current. --HPS One question though... For the global sysctl for all nodes When is the var fetched? If it's before SI_SUB_CPU it is not useful. Hi, It is quite early, actually: SYSINIT(sysctl, SI_SUB_KMEM, SI_ORDER_FIRST, sysctl_register_all, 0); In some parts of the machine independent, MI, code you neee to keep the TUNABLE_FETCH'es, because its run before SI_SUB_KMEM ! Then it will not work unless I move the global n_queues sysctl creation into the driver's mod load function. Is that ok? --HPS ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 7:49 AM, John Baldwin j...@freebsd.org wrote: On Monday, December 01, 2014 07:19:13 AM Alfred Perlstein wrote: John, Will work on a new revision based on feedback. Two things to note however: Already explored the idea of using kernel_sysctlbyname but rejected due to following: It makes little sense to have a rw sysctl that only takes effect some times. This violates POLA at the expense of making code appear cleaner. Expectation is that writable sysctls take effect or are read only. They are not to be write sometimes unless we are to introduce a new flag. Instead of going to a confusing model we consider some form of rw sysctl that can set itself ro somehow. Otherwise people will be confused as to why nic queues says N while actually M. What the rw-ro api would look like I have no idea. Suggestions? This is only somewhat true. In the near distant future we will have a devctl tool which would let you do 'devctl detach igb0 devctl attach igb0' which would honor your post-boot setting of hw.igb.num_queues. Instead what is important to understand about this particular sysctl node is that it only takes affect when a device is attached. However, there are other control knobs that also only affect future operations and not existing instances of objects, so I don't think this is that big of a leap. Strongly disagree here. If I were not able to grok the c code I would be very confused by such a thing. In fact even with the fact that I do grok c code I would be very discouraged to find such behavior and strongly object to writable sysctls that do nothing. The ux is that the user has a bunch of dials on their dashboard that function as a busybox as opposed to doing what they are advertised to do. Sort of like those crossing light buttons in New York City that aren't actually hooked to anything. So: No. Frankly would rather back out the change entirely and keep this change local to us than expose users to such a UX. I will however like to discuss the possibility of a tunable/sysctl system that makes sense. -Alfred. -- John Baldwin ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 7:49 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:45, Alfred Perlstein wrote: Hi, It is quite early, actually: SYSINIT(sysctl, SI_SUB_KMEM, SI_ORDER_FIRST, sysctl_register_all, 0); In some parts of the machine independent, MI, code you neee to keep the TUNABLE_FETCH'es, because its run before SI_SUB_KMEM ! Then it will not work unless I move the global n_queues sysctl creation into the driver's mod load function. Is that ok? Are you asking me? In soviet russia no one is ever sure whom to ask for permission to proceed. (Also you have significant commits to the driver so it makes sense. ) --HPS ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 8:28 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:56, Alfred Perlstein wrote: On Dec 1, 2014, at 7:49 AM, Hans Petter Selasky h...@selasky.org wrote: On 12/01/14 16:45, Alfred Perlstein wrote: Hi, It is quite early, actually: SYSINIT(sysctl, SI_SUB_KMEM, SI_ORDER_FIRST, sysctl_register_all, 0); In some parts of the machine independent, MI, code you neee to keep the TUNABLE_FETCH'es, because its run before SI_SUB_KMEM ! Then it will not work unless I move the global n_queues sysctl creation into the driver's mod load function. Is that ok? Are you asking me? In soviet russia no one is ever sure whom to ask for permission to proceed. (Also you have significant commits to the driver so it makes sense. ) Ok, You need to check sys/sys/kernel.h for the full init order and figure out where exactly your driver code is running and make sure that is running after the SYSCTL/TUNABLE gets init. Yes that is why it is being done by hand in the probe routine. I think proper thing might be a way to sort out how to get tunables to run at a driver load event? Is that possible? --HPS ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
On Dec 1, 2014, at 8:37 AM, Hans Petter Selasky h...@selasky.org wrote: Hi, I think you maybe missed a point On 12/01/14 17:31, Alfred Perlstein wrote: Yes that is why it is being done by hand in the probe routine. I think proper thing might be a way to sort out how to get tunables to run at a driver load event? Is that possible? All sysctls are tried init when they are created, both so-called static and dynamic ones. If the sysctl is created inside the probe routine and has the tunable flag set, it will get init before the creation is complete, if present in the boot environment. If the sysctl is of a static kind, it will be created and initialized when SI_SUB_KMEM is executing! I totally understand this. It is in the phabricator review. :) --HPS ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r275326 - in head: sys/dev/cxgbe/tom sys/kern sys/netinet sys/sys usr.bin/bluetooth/btsockstat usr.bin/netstat usr.bin/systat
Agree, this was already discussed as quite possibly an incorrect way forward some months ago. Where is the actual review for this huge change to the networking stack? Splitting this into the mbuf layer adds a huge level of complexity where again, there are already completion paths in the socket layer to do this. I am completely confused as to why this couldn't just be done with the socket callback system already in place. Very open to being educated on this! The concept of not filled mbufs in a socket buffer seems absolutely wrong at a glance, I'm sure with some better explanation this would all make sense, but really am still not convinced this is at all the right way to go on this. Does any other OS do this for any reason? Or is this just a short sighted hack for an experiment in sendfile? I am really trying very hard to rationalize this change, so I will ask, is there something about keeping TCP windows open that you are hoping to accomplish that you can not otherwise do without sb_ccc and sb_acc? If not then why is all this stuff being stuffed into mbufs as opposed to using callbacks? It really seems wrong, my thoughts are this is like kse for mbufs something done with good intentions, but is complex and will have to be ripped out later. Am I wrong here? -Alfred On 11/30/14, 9:55 AM, Adrian Chadd wrote: Hi, I really wished that these commits got individual reviews before they went in. The whole idea of an mbuf whose data isn't quite there yet makes debugging issues rather amusing, as now you may have VM issues to debug at the same time as you're debugging network related stuff. I really think this could've been done without all the back-handed VM work. The mbufs and IO buffers both have completion function calls; it would've been much less intrusive to do it that way. -adrian On 30 November 2014 at 04:52, Gleb Smirnoff gleb...@freebsd.org wrote: Author: glebius Date: Sun Nov 30 12:52:33 2014 New Revision: 275326 URL: https://svnweb.freebsd.org/changeset/base/275326 Log: Merge from projects/sendfile: o Introduce a notion of not ready mbufs in socket buffers. These mbufs are now being populated by some I/O in background and are referenced outside. This forces following implications: - An mbuf which is not ready can't be taken out of the buffer. - An mbuf that is behind a not ready in the queue neither. - If sockbet buffer is flushed, then not ready mbufs shouln't be freed. o In struct sockbuf the sb_cc field is split into sb_ccc and sb_acc. The sb_ccc stands for claimed character count, or committed character count. And the sb_acc is available character count. Consumers of socket buffer API shouldn't already access them directly, but use sbused() and sbavail() respectively. o Not ready mbufs are marked with M_NOTREADY, and ready but blocked ones with M_BLOCKED. o New field sb_fnrdy points to the first not ready mbuf, to avoid linear search. o New function sbready() is provided to activate certain amount of mbufs in a socket buffer. A special note on SCTP: SCTP has its own sockbufs. Unfortunately, FreeBSD stack doesn't yet allow protocol specific sockbufs. Thus, SCTP does some hacks to make itself compatible with FreeBSD: it manages sockbufs on its own, but keeps sb_cc updated to inform the stack of amount of data in them. The new notion of not ready data isn't supported by SCTP. Instead, only a mechanical substitute is done: s/sb_cc/sb_ccc/. A proper solution would be to take away struct sockbuf from struct socket and allow protocols to implement their own socket buffers, like SCTP already does. This was discussed with rrs@. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/dev/cxgbe/tom/t4_ddp.c head/sys/kern/uipc_debug.c head/sys/kern/uipc_sockbuf.c head/sys/kern/uipc_socket.c head/sys/netinet/sctp_indata.c head/sys/netinet/sctp_input.c head/sys/netinet/sctp_os_bsd.h head/sys/netinet/sctp_output.c head/sys/netinet/sctp_pcb.c head/sys/netinet/sctp_pcb.h head/sys/netinet/sctp_structs.h head/sys/netinet/sctp_usrreq.c head/sys/netinet/sctp_var.h head/sys/netinet/sctputil.c head/sys/netinet/sctputil.h head/sys/sys/sockbuf.h head/usr.bin/bluetooth/btsockstat/btsockstat.c head/usr.bin/netstat/inet.c head/usr.bin/netstat/netgraph.c head/usr.bin/netstat/unix.c head/usr.bin/systat/netstat.c Modified: head/sys/dev/cxgbe/tom/t4_ddp.c == --- head/sys/dev/cxgbe/tom/t4_ddp.c Sun Nov 30 12:37:20 2014 (r275325) +++ head/sys/dev/cxgbe/tom/t4_ddp.c Sun Nov 30 12:52:33 2014 (r275326) @@ -971,8 +971,9 @@ handle_ddp(struct socket *so, struct uio */ rc = sbwait(sb); while (toep-ddp_flags buf_flag) { + /* XXXGL: shouldn't here be sbwait()
Re: svn commit: r275326 - in head: sys/dev/cxgbe/tom sys/kern sys/netinet sys/sys usr.bin/bluetooth/btsockstat usr.bin/netstat usr.bin/systat
On 11/30/14, 10:38 AM, Gleb Smirnoff wrote: Adrian Alfred, On Sun, Nov 30, 2014 at 09:55:05AM -0800, Adrian Chadd wrote: A I really wished that these commits got individual reviews before they went in. On Sun, Nov 30, 2014 at 10:10:57AM -0800, Alfred Perlstein wrote: A Agree, this was already discussed as quite possibly an incorrect way A forward some months ago. A A Where is the actual review for this huge change to the networking stack? A The development was going on in the open branch, and I've been sending the diff on the new sendfile constantly during this year. Last time I sent the diff, the discussion very quickly moved to Lua in kernel, script(2) and other buzz, actually ignoring my review and test request and hijacking my thread: https://lists.freebsd.org/pipermail/freebsd-arch/2014-September/015861.html Yes, Alfred did ask me why can't this be accomplished with socket upcalls, and replied I to him, but discussion ended there: https://lists.freebsd.org/pipermail/freebsd-arch/2014-September/015858.html Probably the script(2) topic was more appealing. If you don't mind, I will make a separate replies on your actual technical questions. Gleb, Maybe I misread your reply to 'https://lists.freebsd.org/pipermail/freebsd-arch/2014-September/015858.html' but my interpretation of your reply was that you would reconsider your approach because the suggestion to use socket callback was a valid one. I am very open to being wrong on this issue, but with all due respect I don't see a good reason why not to use socket callbacks to even implement what you have right now. I appreciate what seem to be kind words saying my idea is good, but it didn't really answer the question nor address the issue I raised. I am currently sorting out why this approach was taken and here's what I have so far, this is me trying to find the best here: 1) Possible that the socket buffer accounting needs to be done to keep TCP window open for send? (Could this be forced via setsockopt(2) option instead)? 2) Lock order issues in the socket callback. 3) There is only a single socket callback func and arg (maybe we need more?) 4) Properly asserting backpressure and actual blocking in sendfile(2) becomes very difficult otherwise, meaning that if you don't have the complexity in socketbuffer, then you need to sort of implement this inside a private control block AND do accounting there. 5) This is a cool feature and maybe other things can make use of it eventually? - hoping this is more of a good thing as opposed to (sorry) kse. 6) Alllows one to mix async sendfile write WITH sync write and the correct thing happens? Am I right in assuming that socketbuffers can wind up with mbufs as such: M_NOTREADY, M_READY, M_NOTREADY, M_READY, M_NOTREADY, M_READY ? If so that is pretty interesting and useful. Again my proposal would be to use socket callback and callback arg would basically be something like: socket_sendfile_cb_arg { struct mbuf *head; /* list of mbufs queued */ } When the callback is fired just pop off the front of the queue and put on the socketbuffer. This however has the following drawbacks: 1) May have trouble if anyone else is using the sbcallback as well? aio? (might need to allow multiple callbacks now). 2) Can't do M_NOTREADY, M_READY, M_NOTREADY, M_READY, M_NOTREADY, M_READY, basically write(2) can get in front of async sendfile. I know you have put a lot of effort into this and these are just my semi-random thoughts on the issue, so I apologize if I'm making you repeat a lot of your thinking on the issue, I would just like to understand a bit better why this was done and if we really need to do it. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r275136 - in head/sys: dev/e1000 dev/ixgbe kern sys
Author: alfred Date: Wed Nov 26 20:19:36 2014 New Revision: 275136 URL: https://svnweb.freebsd.org/changeset/base/275136 Log: Make igb and ixgbe check tunables at probe time. This allows one to make a kernel module to tune the number of queues before the driver loads. This is needed so that a module at SI_SUB_CPU can set tunables for these drivers to take. Otherwise getenv is called too early by the TUNABLE macros. Reviewed by: smh Phabric: https://reviews.freebsd.org/D1149 Modified: head/sys/dev/e1000/if_igb.c head/sys/dev/ixgbe/ixgbe.c head/sys/kern/subr_bus.c head/sys/sys/bus.h Modified: head/sys/dev/e1000/if_igb.c == --- head/sys/dev/e1000/if_igb.c Wed Nov 26 18:03:25 2014(r275135) +++ head/sys/dev/e1000/if_igb.c Wed Nov 26 20:19:36 2014(r275136) @@ -188,6 +188,7 @@ static char *igb_strings[] = { /* * Function prototypes */ +static int igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS); static int igb_probe(device_t); static int igb_attach(device_t); static int igb_detach(device_t); @@ -493,6 +494,11 @@ igb_attach(device_t dev) OID_AUTO, nvm, CTLTYPE_INT|CTLFLAG_RW, adapter, 0, igb_sysctl_nvm_info, I, NVM Information); +SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), +SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, num_queues, CTLTYPE_INT | CTLFLAG_RD, + adapter, 0, igb_per_unit_num_queues, I, Number of Queues); + igb_set_sysctl_value(adapter, enable_aim, Interrupt Moderation, adapter-enable_aim, igb_enable_aim); @@ -2831,6 +2837,7 @@ igb_setup_msix(struct adapter *adapter) { device_tdev = adapter-dev; int bar, want, queues, msgs, maxqueues; + int n_queues; /* tuneable override */ if (igb_enable_msix == 0) @@ -2858,8 +2865,18 @@ igb_setup_msix(struct adapter *adapter) goto msi; } - /* Figure out a reasonable auto config value */ - queues = (mp_ncpus (msgs-1)) ? (msgs-1) : mp_ncpus; + n_queues = 0; + /* try more specific tunable, then global, then finally default to boot time tunable if set. */ + if (device_getenv_int(dev, num_queues, n_queues) != 0) { + device_printf(dev, using specific tunable num_queues=%d, n_queues); + } else if (TUNABLE_INT_FETCH(hw.igb.num_queues, n_queues) != 0) { + if (igb_num_queues != n_queues) { + device_printf(dev, using global tunable hw.igb.num_queues=%d, n_queues); + igb_num_queues = n_queues; + } + } else { + n_queues = igb_num_queues; + } #ifdef RSS /* If we're doing RSS, clamp at the number of RSS buckets */ @@ -2867,10 +2884,12 @@ igb_setup_msix(struct adapter *adapter) queues = rss_getnumbuckets(); #endif - - /* Manual override */ - if (igb_num_queues != 0) - queues = igb_num_queues; + if (n_queues != 0) { + queues = n_queues; + } else { + /* Figure out a reasonable auto config value */ + queues = (mp_ncpus (msgs-1)) ? (msgs-1) : mp_ncpus; + } /* Sanity check based on HW */ switch (adapter-hw.mac.type) { @@ -2893,12 +2912,17 @@ igb_setup_msix(struct adapter *adapter) maxqueues = 1; break; } - if (queues maxqueues) + if (queues maxqueues) { + device_printf(adapter-dev, requested %d queues, but max for this adapter is %d\n, + queues, maxqueues); queues = maxqueues; - - /* Manual override */ - if (igb_num_queues != 0) - queues = igb_num_queues; + } else if (queues == 0) { + queues = 1; + } else if (queues 0) { + device_printf(adapter-dev, requested %d queues, but min for this adapter is %d\n, + queues, 1); + queues = 1; + } /* ** One vector (RX/TX pair) per queue @@ -6384,3 +6408,14 @@ igb_sysctl_eee(SYSCTL_HANDLER_ARGS) IGB_CORE_UNLOCK(adapter); return (0); } + +static int +igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS) +{ + struct adapter *adapter; + + adapter = (struct adapter *) arg1; + + return sysctl_handle_int(oidp, adapter-num_queues, 0, req); +} + Modified: head/sys/dev/ixgbe/ixgbe.c == --- head/sys/dev/ixgbe/ixgbe.c Wed Nov 26 18:03:25 2014(r275135) +++ head/sys/dev/ixgbe/ixgbe.c Wed Nov 26 20:19:36
Re: svn commit: r274672 - in head/contrib/libxo: . libxo xolint
Marcel, is there a way to get libxo programs to emit time series data? Any examples of this in the tree right now? Example would be if netstat -1 was libxo-ified, it would also emit a timestamp. -Alfred On Nov 18, 2014, at 10:03 AM, Marcel Moolenaar wrote: Author: marcel Date: Tue Nov 18 18:03:40 2014 New Revision: 274672 URL: https://svnweb.freebsd.org/changeset/base/274672 Log: Upgrade libxo to 0.1.6. Summary of changes: 1. Coverity defect fixes Obtained from: https://github.com/Juniper/libxo/releases/tag/0.1.6 Modified: head/contrib/libxo/configure.ac head/contrib/libxo/libxo/libxo.c head/contrib/libxo/libxo/xoconfig.h head/contrib/libxo/libxo/xoversion.h head/contrib/libxo/xolint/xolint.pl Modified: head/contrib/libxo/configure.ac == --- head/contrib/libxo/configure.ac Tue Nov 18 17:37:33 2014 (r274671) +++ head/contrib/libxo/configure.ac Tue Nov 18 18:03:40 2014 (r274672) @@ -12,7 +12,7 @@ # AC_PREREQ(2.2) -AC_INIT([libxo], [0.1.5], [p...@juniper.net]) +AC_INIT([libxo], [0.1.6], [p...@juniper.net]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) # Support silent build rules. Requires at least automake-1.11. Modified: head/contrib/libxo/libxo/libxo.c == --- head/contrib/libxo/libxo/libxo.c Tue Nov 18 17:37:33 2014 (r274671) +++ head/contrib/libxo/libxo/libxo.c Tue Nov 18 18:03:40 2014 (r274672) @@ -317,7 +317,7 @@ xo_init_handle (xo_handle_t *xop) cp = getenv(LC_ALL); if (cp == NULL) cp = UTF-8; /* Optimistic? */ - cp = setlocale(LC_CTYPE, cp); + (void) setlocale(LC_CTYPE, cp); } /* @@ -607,8 +607,10 @@ xo_vsnprintf (xo_handle_t *xop, xo_buffe rc = vsnprintf(xbp-xb_curp, left, fmt, va_local); if (rc xbp-xb_size) { - if (!xo_buf_has_room(xbp, rc)) + if (!xo_buf_has_room(xbp, rc)) { + va_end(va_local); return -1; + } /* * After we call vsnprintf(), the stage of vap is not defined. @@ -648,8 +650,10 @@ xo_printf_v (xo_handle_t *xop, const cha rc = vsnprintf(xbp-xb_curp, left, fmt, va_local); if (rc xbp-xb_size) { - if (!xo_buf_has_room(xbp, rc)) + if (!xo_buf_has_room(xbp, rc)) { + va_end(va_local); return -1; + } va_end(va_local); /* Reset vap to the start */ va_copy(va_local, vap); @@ -974,8 +978,10 @@ xo_warn_hcv (xo_handle_t *xop, int code, int left = xbp-xb_size - (xbp-xb_curp - xbp-xb_bufp); int rc = vsnprintf(xbp-xb_curp, left, newfmt, vap); if (rc xbp-xb_size) { - if (!xo_buf_has_room(xbp, rc)) + if (!xo_buf_has_room(xbp, rc)) { + va_end(va_local); return; + } va_end(vap);/* Reset vap to the start */ va_copy(vap, va_local); @@ -1118,8 +1124,10 @@ xo_message_hcv (xo_handle_t *xop, int co int left = xbp-xb_size - (xbp-xb_curp - xbp-xb_bufp); rc = vsnprintf(xbp-xb_curp, left, fmt, vap); if (rc xbp-xb_size) { - if (!xo_buf_has_room(xbp, rc)) + if (!xo_buf_has_room(xbp, rc)) { + va_end(va_local); return; + } va_end(vap);/* Reset vap to the start */ va_copy(vap, va_local); @@ -1154,14 +1162,15 @@ xo_message_hcv (xo_handle_t *xop, int co va_copy(va_local, vap); - rc = vsnprintf(buf, bufsiz, fmt, va_local); + rc = vsnprintf(bp, bufsiz, fmt, va_local); if (rc bufsiz) { bufsiz = rc + BUFSIZ; bp = alloca(bufsiz); va_end(va_local); va_copy(va_local, vap); - rc = vsnprintf(buf, bufsiz, fmt, va_local); + rc = vsnprintf(bp, bufsiz, fmt, va_local); } + va_end(va_local); cp = bp + rc; if (need_nl) { @@ -1302,9 +1311,9 @@ xo_create_to_file (FILE *fp, xo_style_t * @xop XO handle to alter (or NULL for default handle) */ void -xo_destroy (xo_handle_t *xop) +xo_destroy (xo_handle_t *xop_arg) { -xop = xo_default(xop); +xo_handle_t *xop = xo_default(xop_arg); if (xop-xo_close (xop-xo_flags XOF_CLOSE_FP)) xop-xo_close(xop-xo_opaque); @@ -1315,7 +1324,7 @@ xo_destroy (xo_handle_t *xop) xo_buf_cleanup(xop-xo_predicate); xo_buf_cleanup(xop-xo_attrs); -if (xop == xo_default_handle) { +if (xop_arg == NULL) { bzero(xo_default_handle, sizeof(xo_default_handle)); xo_default_inited = 0; } else @@ -1743,7 +1752,7 @@ xo_format_string_direct (xo_handle_t *xo int need_enc, int have_enc) { int cols = 0; -wchar_t wc; +wchar_t wc = 0; int ilen, olen, width; int
Re: svn commit: r274573 - head/contrib/netbsd-tests/lib/libpthread
This looks easy enough to fix under _thr_find_thread() in libthread. Any interest in fixing it? Might be worth hacking _thr_find_thread() to take an ERRNO to return based on NULL until we chase down all the paths into it just in case EINVAL is a valid ptr. Also, just wondering what happens on other platforms, does it elicit a crash? Ie. is NULL a safe value to pass in on other platforms? -Alfred On 11/15/14, 9:08 PM, Garrett Cooper wrote: Author: ngie Date: Sun Nov 16 05:08:19 2014 New Revision: 274573 URL: https://svnweb.freebsd.org/changeset/base/274573 Log: Expect :pthread_detach to fail with EINVAL instead of ESRCH on FreeBSD PR: 191906 In collaboration with: pho Modified: head/contrib/netbsd-tests/lib/libpthread/t_detach.c Modified: head/contrib/netbsd-tests/lib/libpthread/t_detach.c == --- head/contrib/netbsd-tests/lib/libpthread/t_detach.c Sun Nov 16 05:06:35 2014(r274572) +++ head/contrib/netbsd-tests/lib/libpthread/t_detach.c Sun Nov 16 05:08:19 2014(r274573) @@ -75,6 +75,10 @@ ATF_TC_BODY(pthread_detach, tc) rv = pthread_join(t, NULL); ATF_REQUIRE(rv == EINVAL); +#if defined(__FreeBSD__) + atf_tc_expect_fail(PR # 191906: fails with EINVAL, not ESRCH); +#endif + /* * As usual, ESRCH should follow if * we try to detach an invalid thread. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r274573 - head/contrib/netbsd-tests/lib/libpthread
On 11/15/14, 9:22 PM, Garrett Cooper wrote: On Nov 15, 2014, at 21:19, Alfred Perlstein alf...@freebsd.org wrote: This looks easy enough to fix under _thr_find_thread() in libthread. Any interest in fixing it? Yes, if it’s POSIXly correct and doesn’t break everything else. Might be worth hacking _thr_find_thread() to take an ERRNO to return based on NULL until we chase down all the paths into it just in case EINVAL is a valid ptr. K. Thanks for the hint! Also, just wondering what happens on other platforms, does it elicit a crash? Ie. is NULL a safe value to pass in on other platforms? I wish I knew what happened on !x86 platforms… I honestly don’t have access to ARM/MIPS/PowerPC, so I can’t say :/. Thanks! Oh, I meant Linux and Solaris, or even other BSD. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r274017 - head/sys/kern
On Nov 4, 2014, at 1:25 AM, Konstantin Belousov kostik...@gmail.com wrote: On Mon, Nov 03, 2014 at 01:45:21PM -0800, Alfred Perlstein wrote: Isn't there a problem where the stack can be swapped out? I seem to recall a problem where a swapped out process was causing problems due to a buffer passed being stack allocated and that process being swapped out... If this is not the case then please disregard. Sure, stack can be swapped out, but buffer passing is usually not a problem. At least, I am not aware of cases. In fact, many compat layers do exactly this, allocate the native-ABI structure on the stack, copyin the foreighn-ABI structure in pieces into the native-ABI one, and pass native to kern_foo() implementations. So I think you worries are not realized. Ok then as long as system will not pass this buffer as Dma target down to driver we are ok. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r274017 - head/sys/kern
On Nov 4, 2014, at 6:22 AM, Alfred Perlstein bri...@mu.org wrote: On Nov 4, 2014, at 1:25 AM, Konstantin Belousov kostik...@gmail.com wrote: On Mon, Nov 03, 2014 at 01:45:21PM -0800, Alfred Perlstein wrote: Isn't there a problem where the stack can be swapped out? I seem to recall a problem where a swapped out process was causing problems due to a buffer passed being stack allocated and that process being swapped out... If this is not the case then please disregard. Sure, stack can be swapped out, but buffer passing is usually not a problem. At least, I am not aware of cases. In fact, many compat layers do exactly this, allocate the native-ABI structure on the stack, copyin the foreighn-ABI structure in pieces into the native-ABI one, and pass native to kern_foo() implementations. So I think you worries are not realized. Ok then as long as system will not pass this buffer as Dma target down to driver we are ok. Also thank you for explanation. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r274017 - head/sys/kern
Isn't there a problem where the stack can be swapped out? I seem to recall a problem where a swapped out process was causing problems due to a buffer passed being stack allocated and that process being swapped out... If this is not the case then please disregard. -Alfred On 11/2/14, 11:46 PM, Mateusz Guzik wrote: Author: mjg Date: Mon Nov 3 07:46:51 2014 New Revision: 274017 URL: https://svnweb.freebsd.org/changeset/base/274017 Log: Provide an on-stack temporary buffer for small ioctl requests. Modified: head/sys/kern/sys_generic.c Modified: head/sys/kern/sys_generic.c == --- head/sys/kern/sys_generic.c Mon Nov 3 07:18:42 2014(r274016) +++ head/sys/kern/sys_generic.c Mon Nov 3 07:46:51 2014(r274017) @@ -649,6 +649,7 @@ sys_ioctl(struct thread *td, struct ioct u_long com; int arg, error; u_int size; + u_char smalldata[128]; caddr_t data; if (uap-com 0x) { @@ -680,17 +681,18 @@ sys_ioctl(struct thread *td, struct ioct arg = (intptr_t)uap-data; data = (void *)arg; size = 0; - } else - data = malloc((u_long)size, M_IOCTLOPS, M_WAITOK); + } else { + if (size = sizeof(smalldata)) + data = smalldata; + else + data = malloc((u_long)size, M_IOCTLOPS, M_WAITOK); + } } else data = (void *)uap-data; if (com IOC_IN) { error = copyin(uap-data, data, (u_int)size); - if (error) { - if (size 0) - free(data, M_IOCTLOPS); - return (error); - } + if (error != 0) + goto out; } else if (com IOC_OUT) { /* * Zero the buffer so the user always @@ -704,7 +706,8 @@ sys_ioctl(struct thread *td, struct ioct if (error == 0 (com IOC_OUT)) error = copyout(data, uap-data, (u_int)size); - if (size 0) +out: + if (size 0 data != (caddr_t)smalldata) free(data, M_IOCTLOPS); return (error); } ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r267858 - in head/sys/dev: virtio/balloon xen/balloon
On 6/25/14 8:30 AM, Attilio Rao wrote: On Wed, Jun 25, 2014 at 5:16 PM, Alfred Perlstein alf...@freebsd.org wrote: On 6/25/14 5:41 AM, Attilio Rao wrote: On Wed, Jun 25, 2014 at 2:09 PM, Gleb Smirnoff gleb...@freebsd.org wrote: On Wed, Jun 25, 2014 at 01:58:29PM +0200, Attilio Rao wrote: A Log: Axen/virtio: fix balloon drivers to not mark pages as WIRED A APrevent the Xen and VirtIO balloon drivers from marking pages as Awired. This prevents them from increasing the system wired page count, Awhich can lead to mlock failing because of hitting the limit in Avm.max_wired. A A This change is conceptually wrong. A The pages balloon is allocating are unmanaged and they should be wired A by definition. Alan and I are considering enforcing this (mandatory A wired pages for unmanaged pages allocation) directly in the KPI. A This in practice just seem an artifact to deal with scarce wired A memory limit. I suggest that for the XEN case this limit gets bumped A rather relying on similar type of hacks. Proper limit would be to count pages wired by userland via mlock(2) and enforce limit only on those pages. Pages wired by kernel should be either unlimited or controled by a separate limit. FWIW, I mostly agree with this. I think that the kernel and userland limits should be split apart. But for the time being, rising the limit is better. Attilio Can you explain? I would think that if you were designing some kind of embedded device you would want to know exactly how much locked pages there are overall, not just in userland. Meaning you would not want to overcommit and have too many locked pages due to kernel+user. Well, assuming you trace them indipendently I don't think this is going to be problematic to aggregate them, is it? I am not sure as I am not as strong in this area as you are. As far as I understand it, right now we have RMEM_LIMIT to someway limit per-process amount of wired memory and finally max_wired as a global accounted wired memory limit. I think that the idea now is that RMEM_LIMIT is enough to correctly control all the front-end check, coming from untrusted sources (userland, non-privileged syscalls like mlock(), mmap(), etc.). Possibly that's not always the case and I think that the hypervisor can be a fair example of this. Having more granular accountability, means that rather than having a global limit (or, rather, along with it) we can grow a per-process limit to control kernel-allocated wired memory. Perhaps that needs an API as well? I don't have anything in my mind yet. My initial point was more trying to get a better semantic on a paradigm that is at least dangerous. Attilio My concern is a group of daemons working to provide system services playing nicely with each other and the system as a whole. I think the point is that let's say you have a concert of userspace daemons importantd(8) and imperatived(8) running on a system. Both importantd(8) and imperatived(8) need pages wired for dealing with important timing/throughput issues. The kernel obviously needs such pages as well. importantd(8) and imperatived(8) do not want to blow up the system by requesting more than a fixed amount otherwise supposed bad things will happen, or perhaps they deadlock against each other. A global count seems (to me) to make sense at this point even if the kernel ignores it as a way for everything to act in concert. Is there a way for kernel, importantd(8), and imperatived(8) to play nice together, meaning they can take each other's wired count into account if we get rid of the global? My feeling is no, that they will then need another rendezvous to do global accounting, if we retire this facility. I'm likely wrong, but wanted to bring this up as a concern. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r267858 - in head/sys/dev: virtio/balloon xen/balloon
On 6/25/14 5:41 AM, Attilio Rao wrote: On Wed, Jun 25, 2014 at 2:09 PM, Gleb Smirnoff gleb...@freebsd.org wrote: On Wed, Jun 25, 2014 at 01:58:29PM +0200, Attilio Rao wrote: A Log: Axen/virtio: fix balloon drivers to not mark pages as WIRED A APrevent the Xen and VirtIO balloon drivers from marking pages as Awired. This prevents them from increasing the system wired page count, Awhich can lead to mlock failing because of hitting the limit in Avm.max_wired. A A This change is conceptually wrong. A The pages balloon is allocating are unmanaged and they should be wired A by definition. Alan and I are considering enforcing this (mandatory A wired pages for unmanaged pages allocation) directly in the KPI. A This in practice just seem an artifact to deal with scarce wired A memory limit. I suggest that for the XEN case this limit gets bumped A rather relying on similar type of hacks. Proper limit would be to count pages wired by userland via mlock(2) and enforce limit only on those pages. Pages wired by kernel should be either unlimited or controled by a separate limit. FWIW, I mostly agree with this. I think that the kernel and userland limits should be split apart. But for the time being, rising the limit is better. Attilio Can you explain? I would think that if you were designing some kind of embedded device you would want to know exactly how much locked pages there are overall, not just in userland. Meaning you would not want to overcommit and have too many locked pages due to kernel+user. Perhaps that needs an API as well? ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r267559 - head/share/examples/bhyve
Author: alfred Date: Tue Jun 17 00:53:00 2014 New Revision: 267559 URL: http://svnweb.freebsd.org/changeset/base/267559 Log: Support for multiple disks and tap devices. This allows you to give a bhyve instance multiple network devices and disk devices easily by specifying additional -d and -t options. Reviewed by: neel Sponsored by: Norse Modified: head/share/examples/bhyve/vmrun.sh Modified: head/share/examples/bhyve/vmrun.sh == --- head/share/examples/bhyve/vmrun.sh Mon Jun 16 22:59:18 2014 (r267558) +++ head/share/examples/bhyve/vmrun.sh Tue Jun 17 00:53:00 2014 (r267559) @@ -78,8 +78,8 @@ isofile=${DEFAULT_ISOFILE} memsize=${DEFAULT_MEMSIZE} console=${DEFAULT_CONSOLE} cpus=${DEFAULT_CPUS} -virtio_diskdev=${DEFAULT_VIRTIO_DISK} -tapdev=${DEFAULT_TAPDEV} +tap_total=0 +disk_total=0 apic_opt= gdbport=0 loader_opt= @@ -96,7 +96,8 @@ while getopts ac:C:d:e:g:hH:iI:m:t: c ; console=${OPTARG} ;; d) - virtio_diskdev=${OPTARG} + eval disk_dev${disk_total}=\${OPTARG}\ + disk_total=$(($disk_total + 1)) ;; e) loader_opt=${loader_opt} -e ${OPTARG} @@ -117,7 +118,8 @@ while getopts ac:C:d:e:g:hH:iI:m:t: c ; memsize=${OPTARG} ;; t) - tapdev=${OPTARG} + eval tap_dev${tap_total}=\${OPTARG}\ + tap_total=$(($tap_total + 1)) ;; *) usage @@ -125,6 +127,16 @@ while getopts ac:C:d:e:g:hH:iI:m:t: c ; esac done +if [ $tap_total -eq 0 ] ; then +tap_total=1 +tap_dev0=${DEFAULT_TAPDEV} +fi +if [ $disk_total -eq 0 ] ; then +disk_total=1 +disk_dev0=${DEFAULT_VIRTIO_DISK} + +fi + shift $((${OPTIND} - 1)) if [ $# -ne 1 ]; then @@ -136,25 +148,31 @@ if [ -n ${host_base} ]; then loader_opt=${loader_opt} -h ${host_base} fi -# Create the virtio diskdev file if needed -if [ ! -f ${virtio_diskdev} ]; then - echo virtio disk device file \${virtio_diskdev}\ does not exist. - echo Creating it ... - truncate -s 8G ${virtio_diskdev} /dev/null -fi - -if [ ! -r ${virtio_diskdev} ]; then - echo virtio disk device file \${virtio_diskdev}\ is not readable - exit 1 -fi - -if [ ! -w ${virtio_diskdev} ]; then - echo virtio disk device file \${virtio_diskdev}\ is not writable - exit 1 -fi +make_and_check_diskdev() +{ +local virtio_diskdev=$1 +# Create the virtio diskdev file if needed +if [ ! -f ${virtio_diskdev} ]; then + echo virtio disk device file \${virtio_diskdev}\ does not exist. + echo Creating it ... + truncate -s 8G ${virtio_diskdev} /dev/null +fi + +if [ ! -r ${virtio_diskdev} ]; then + echo virtio disk device file \${virtio_diskdev}\ is not readable + exit 1 +fi + +if [ ! -w ${virtio_diskdev} ]; then + echo virtio disk device file \${virtio_diskdev}\ is not writable + exit 1 +fi +} echo Launching virtual machine \$vmname\ ... +virtio_diskdev=$disk_dev0 + while [ 1 ]; do ${BHYVECTL} --vm=${vmname} --destroy /dev/null 21 @@ -189,12 +207,33 @@ while [ 1 ]; do break fi + # + # Build up args for additional tap and disk devices now. + # + nextslot=2 # slot 0 is hostbridge, slot 1 is lpc + devargs= # accumulate disk/tap args here + i=0 + while [ $i -lt $tap_total ] ; do + eval tapname=\$tap_dev${i} + devargs=$devargs -s $nextslot:0,virtio-net,${tapname} + nextslot=$(($nextslot + 1)) + i=$(($i + 1)) + done + + i=0 + while [ $i -lt $disk_total ] ; do + eval disk=\$disk_dev${i} + make_and_check_diskdev ${disk} + devargs=$devargs -s $nextslot:0,virtio-blk,${disk} + nextslot=$(($nextslot + 1)) + i=$(($i + 1)) + done + ${FBSDRUN} -c ${cpus} -m ${memsize} ${apic_opt} -A -H -P\ -g ${gdbport} \ -s 0:0,hostbridge \ -s 1:0,lpc \ - -s 2:0,virtio-net,${tapdev} \ - -s 3:0,virtio-blk,${virtio_diskdev} \ + ${devargs} \ -l com1,${console} \ ${installer_opt}\ ${vmname} ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r267233 - in head: . bin/rmail gnu/usr.bin/binutils/addr2line gnu/usr.bin/binutils/nm gnu/usr.bin/binutils/objcopy gnu/usr.bin/binutils/objdump gnu/usr.bin/binutils/readelf gnu/usr.bin
On 6/8/14 11:27 AM, Konstantin Belousov wrote: On Sun, Jun 08, 2014 at 05:38:49PM +, Bjoern A. Zeeb wrote: On 08 Jun 2014, at 17:29 , Bryan Drewery bdrew...@freebsd.org wrote: Author: bdrewery Date: Sun Jun 8 17:29:31 2014 New Revision: 267233 URL: http://svnweb.freebsd.org/changeset/base/267233 Log: In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE. This is currently an opt-in build flag. Once ASLR support is ready and stable it should changed to opt-out and be enabled by default along with ASLR. Each application Makefile uses opt-out to ensure that ASLR will be enabled by default in new directories when the system is compiled with PIE/ASLR. [2] Mark known build failures as NO_PIE for now. No, no, no, no more NOs! I?ll leave it to others who understand the current build system in days when it?s not broken to fix this entire splattering across all these Makefiles; we really need a better way for this. I have no words to express my dissatisfaction with this commit. If change to the build of _some_ usermode binaries require patching of loader', csu and rtld Makefiles, obviously it is done wrong. Why almost half of the binaries require opt-out ? PLEASE REVERT THIS. Wait. Does this not serve as a useful stake in the ground for people to come in and update things? Instead of asking to back out, shouldn't we be doing an announcement ok folks, it's now time to fix this! and move forward? Otherwise we may never get any pie. -Alfred -- Alfred Perlstein ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r267233 - in head: . bin/rmail gnu/usr.bin/binutils/addr2line gnu/usr.bin/binutils/nm gnu/usr.bin/binutils/objcopy gnu/usr.bin/binutils/objdump gnu/usr.bin/binutils/readelf gnu/usr.bin
On 6/8/14 11:44 AM, Konstantin Belousov wrote: On Sun, Jun 08, 2014 at 11:30:42AM -0700, Alfred Perlstein wrote: On 6/8/14 11:27 AM, Konstantin Belousov wrote: On Sun, Jun 08, 2014 at 05:38:49PM +, Bjoern A. Zeeb wrote: On 08 Jun 2014, at 17:29 , Bryan Drewery bdrew...@freebsd.org wrote: Author: bdrewery Date: Sun Jun 8 17:29:31 2014 New Revision: 267233 URL: http://svnweb.freebsd.org/changeset/base/267233 Log: In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE. This is currently an opt-in build flag. Once ASLR support is ready and stable it should changed to opt-out and be enabled by default along with ASLR. Each application Makefile uses opt-out to ensure that ASLR will be enabled by default in new directories when the system is compiled with PIE/ASLR. [2] Mark known build failures as NO_PIE for now. No, no, no, no more NOs! I?ll leave it to others who understand the current build system in days when it?s not broken to fix this entire splattering across all these Makefiles; we really need a better way for this. I have no words to express my dissatisfaction with this commit. If change to the build of _some_ usermode binaries require patching of loader', csu and rtld Makefiles, obviously it is done wrong. Why almost half of the binaries require opt-out ? PLEASE REVERT THIS. Wait. Does this not serve as a useful stake in the ground for people to come in and update things? Instead of asking to back out, shouldn't we be doing an announcement ok folks, it's now time to fix this! and move forward? Otherwise we may never get any pie. Let me reformulate. Somebody commits broken change, despite it was pointed out by many before the commit. From the changes it is obvious that people which proposed it do not understand what they hack on. And then, somebody else must run and 'fix' previously non-broken code. Sure, you get the pie. Sure, but hasn't the default stayed unchanged? It seems like you have to enable ASLR first before you see all the breakage. Right now it seems like goal was to document what even compiles versus doesn't compile with ASLR. Afaik there is not setting of ASLR on by default. There has to be a way to call out what works and what doesn't work and form a transition from a world with no ASLR to one with some ASLR and eventually one with almost entirely ASLR coverage. I'm not sure it can be done in one fell swoop. Hooks like this in -current allow for this to be done as a group effort. It would be very unlikely that we retain the semantics all the way until a -stable release. -Alfred -- Alfred Perlstein ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r267233 - in head: . bin/rmail gnu/usr.bin/binutils/addr2line gnu/usr.bin/binutils/nm gnu/usr.bin/binutils/objcopy gnu/usr.bin/binutils/objdump gnu/usr.bin/binutils/readelf gnu/usr.bin
On 6/8/14 1:13 PM, Pedro Giffuni wrote: Hello; El 6/8/2014 2:14 PM, Alfred Perlstein escribió: There has to be a way to call out what works and what doesn't work and form a transition from a world with no ASLR to one with some ASLR and eventually one with almost entirely ASLR coverage. I'm not sure it can be done in one fell swoop. Hooks like this in -current allow for this to be done as a group effort. It would be very unlikely that we retain the semantics all the way until a -stable release. I am not (yet) criticizing the patches to the build system as I want to preserve my innocence ;) ... but perhaps if the semantics are not finalized this should be done in a branch. It is my opinion that in general we are not using SVN branches as much as we should. IMO branching is great for something that causes instability, known performance issues or won't build. This is not the same as changes build system. Putting things like this on branches is likely a good way to imo kill discussion. Right now we have discussion, it's rather healthy. Let's take a while to think about this before saying this all should be done in a branch. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r260898 - head/sys/kern
On 1/22/14, 10:14 AM, John-Mark Gurney wrote: Scott Long wrote this message on Tue, Jan 21, 2014 at 15:12 -0700: On Jan 21, 2014, at 9:26 AM, John Baldwin j...@freebsd.org wrote: On Monday, January 20, 2014 5:18:44 pm Alexander Kabaev wrote: On Mon, 20 Jan 2014 11:32:29 -0500 John Baldwin j...@freebsd.org wrote: On Sunday 19 January 2014 18:18:03 Rui Paulo wrote: On 19 Jan 2014, at 17:59, Neel Natu n...@freebsd.org wrote: Author: neel Date: Mon Jan 20 01:59:35 2014 New Revision: 260898 URL: http://svnweb.freebsd.org/changeset/base/260898 Log: Bump up WITNESS_COUNT from 1024 to 1536 so there are sufficient entries for WITNESS to actually work. This value should be automatically tuned... How do you propose to do so? This is the count of locks initialized before witness' own SYSINIT is executed and the array it sizes is allocated statically at compile time. This used to not be a static array, but an intrusive list embedded in locks themselves, but we decided to shave a pointer off of each lock that was only used for that and to use a statically sized table instead. -- John Baldwin As CONSTANT1 + CONSTANT2 * MAXCPU, as evidently most recent overflows reported were caused by jacking MAXCPU up from its default value? If raising MAXCPU changes the number of unique lock names used, then the locks are named incorrectly. We don't use the 'pid' in the name for PROC_LOCK precisely so that WITNESS will treat them all the same so that if if it learns a lock order for pid 37 it enforces the same lock order for pid 38. Device locks should follow a similar rule. They should generally not include the device name (and in some cases they really shouldn't even have the driver name). Why shouldn?t they have a driver and device name? Wouldn?t it help identify possible deadlocks from driver instances calling into each other? Locks have a name and a type. The type is used for witness, but if it is NULL, the name is used. So you could if you wanted, create a common type, and then put driver/device name in name, but the passed in strings to both name and type have to be stable storage (only the pointer is stored), so you can't use a stack variable to construct it. Hmm, what if locks had a pointer to a 2 element char * array, the first being the name, the second the type. That would keep the size of the lock down and most locks could share a common tuple of name/type in each subsystem. This would allow us to get rid of the pending static list. effectively: struct lock_object { char *lo_name; /* Individual lock name. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; would change to: struct lock_object { char **lo_name_type; /* Individual lock name[0]/type[1]. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; This may be somewhat disruptive, I haven't played with how it would actually change driver/etc/code. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r260898 - head/sys/kern
On 1/22/14, 12:27 PM, John Baldwin wrote: On Wednesday, January 22, 2014 2:06:39 pm Alfred Perlstein wrote: Hmm, what if locks had a pointer to a 2 element char * array, the first being the name, the second the type. That would keep the size of the lock down and most locks could share a common tuple of name/type in each subsystem. This would allow us to get rid of the pending static list. effectively: struct lock_object { char *lo_name; /* Individual lock name. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; would change to: struct lock_object { char **lo_name_type; /* Individual lock name[0]/type[1]. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; This may be somewhat disruptive, I haven't played with how it would actually change driver/etc/code. Where would the memory for the char* array come from? That is a good question. I suspect it would be up to the subsystem to allocate it. Wouldn't it be trivial for *most* of the subsystems to simply have this either as a static global or static function variable: static char *mutex_typename = { kqueue, foo }; Under kern I see this: grep mtx_init * | grep -v NULL ... kern_rmlock.c:mtx_init(rm-rm_lock_mtx, name, rmlock_mtx, MTX_NOWITNESS); subr_bus.c:mtx_init(devsoftc.mtx, dev mtx, devd, MTX_DEF); Those are solved with statics. Another example: sys/dev/ae/if_ae.c mtx_init(sc-mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); I think the array could be in the softc here? sc-mutex_name_type[0] = device_get_nameunit(dev); sc-mutex_name_type[1] = MTX_NETWORK_LOCK; Do we want to do that? It moves wasting space to another variable. I'm not sure where there isn't the possibility of using either static (for a global mutex) or space inside the equiv of the softc (or proc or whatever) for this? I'm not sure this is a good idea, just an idea. Are there places where it's not as simple as doing this? -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r260898 - head/sys/kern
On 1/22/14, 1:22 PM, John Baldwin wrote: On Wednesday, January 22, 2014 3:59:37 pm Alfred Perlstein wrote: On 1/22/14, 12:27 PM, John Baldwin wrote: On Wednesday, January 22, 2014 2:06:39 pm Alfred Perlstein wrote: Hmm, what if locks had a pointer to a 2 element char * array, the first being the name, the second the type. That would keep the size of the lock down and most locks could share a common tuple of name/type in each subsystem. This would allow us to get rid of the pending static list. effectively: struct lock_object { char *lo_name; /* Individual lock name. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; would change to: struct lock_object { char **lo_name_type; /* Individual lock name[0]/type[1]. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; This may be somewhat disruptive, I haven't played with how it would actually change driver/etc/code. Where would the memory for the char* array come from? That is a good question. I suspect it would be up to the subsystem to allocate it. Wouldn't it be trivial for *most* of the subsystems to simply have this either as a static global or static function variable: static char *mutex_typename = { kqueue, foo }; Under kern I see this: grep mtx_init * | grep -v NULL ... kern_rmlock.c:mtx_init(rm-rm_lock_mtx, name, rmlock_mtx, MTX_NOWITNESS); subr_bus.c:mtx_init(devsoftc.mtx, dev mtx, devd, MTX_DEF); Those are solved with statics. Another example: sys/dev/ae/if_ae.c mtx_init(sc-mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); I think the array could be in the softc here? sc-mutex_name_type[0] = device_get_nameunit(dev); sc-mutex_name_type[1] = MTX_NETWORK_LOCK; Do we want to do that? It moves wasting space to another variable. I'm not sure where there isn't the possibility of using either static (for a global mutex) or space inside the equiv of the softc (or proc or whatever) for this? I'm not sure this is a good idea, just an idea. Are there places where it's not as simple as doing this? To be honest, the whole name vs type thing isn't widely used, and it makes the mtx_init() function kind of fugly. I think what I would actually prefer is to just kill it, changing the various places that pass a separate name to just pass the type instead. Note that none of the other lock APIs even allow setting a separate type. This would let us remove the static pending list array as well. (And yes, I added the name vs type thing, but at this point I think it did not turn out nearly as useful as I had thought it would be.) The original issue of picking useful-to-witness lock names (i.e. not just using device_get_nameunit()) still remains of course. I really want to agree, but anything that reduces the immediate ability for people to diagnose problems really makes me worry. This would mean that you would see network device lock or some type but not know the actual owner. I would say that maybe given this it's just better to grow WITNESS_PENDING based on maxcpu like the PR I pointed out, that way we do not introduce churn AND we maintain the debug-ability. http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/185831 -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r260898 - head/sys/kern
On 1/22/14, 2:52 PM, John-Mark Gurney wrote: Alfred Perlstein wrote this message on Wed, Jan 22, 2014 at 14:15 -0800: On 1/22/14, 1:22 PM, John Baldwin wrote: On Wednesday, January 22, 2014 3:59:37 pm Alfred Perlstein wrote: On 1/22/14, 12:27 PM, John Baldwin wrote: On Wednesday, January 22, 2014 2:06:39 pm Alfred Perlstein wrote: Hmm, what if locks had a pointer to a 2 element char * array, the first being the name, the second the type. That would keep the size of the lock down and most locks could share a common tuple of name/type in each subsystem. This would allow us to get rid of the pending static list. effectively: struct lock_object { char *lo_name; /* Individual lock name. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; would change to: struct lock_object { char **lo_name_type; /* Individual lock name[0]/type[1]. */ u_int lo_flags; u_int lo_data;/* General class specific data. */ struct witness *lo_witness;/* Data for witness. */ }; This may be somewhat disruptive, I haven't played with how it would actually change driver/etc/code. Where would the memory for the char* array come from? That is a good question. I suspect it would be up to the subsystem to allocate it. Wouldn't it be trivial for *most* of the subsystems to simply have this either as a static global or static function variable: static char *mutex_typename = { kqueue, foo }; Under kern I see this: grep mtx_init * | grep -v NULL ... kern_rmlock.c:mtx_init(rm-rm_lock_mtx, name, rmlock_mtx, MTX_NOWITNESS); subr_bus.c:mtx_init(devsoftc.mtx, dev mtx, devd, MTX_DEF); Those are solved with statics. Another example: sys/dev/ae/if_ae.c mtx_init(sc-mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); I think the array could be in the softc here? sc-mutex_name_type[0] = device_get_nameunit(dev); sc-mutex_name_type[1] = MTX_NETWORK_LOCK; Do we want to do that? It moves wasting space to another variable. I'm not sure where there isn't the possibility of using either static (for a global mutex) or space inside the equiv of the softc (or proc or whatever) for this? I'm not sure this is a good idea, just an idea. Are there places where it's not as simple as doing this? To be honest, the whole name vs type thing isn't widely used, and it makes the mtx_init() function kind of fugly. I think what I would actually prefer is to just kill it, changing the various places that pass a separate name to just pass the type instead. Note that none of the other lock APIs even allow setting a separate type. This would let us remove the static pending list array as well. (And yes, I added the name vs type thing, but at this point I think it did not turn out nearly as useful as I had thought it would be.) The original issue of picking useful-to-witness lock names (i.e. not just using device_get_nameunit()) still remains of course. I really want to agree, but anything that reduces the immediate ability for people to diagnose problems really makes me worry. This would mean that you would see network device lock or some type but not know the actual owner. isn't it usually apparent which lock it is from the backtrace? Isn't the backtrace pretty obvious given IP/PC? -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r260898 - head/sys/kern
On 1/22/14, 8:34 PM, Rui Paulo wrote: On 22 Jan 2014, at 20:05, Adrian Chadd adrian.ch...@gmail.com wrote: .. Make it be an offset into the table rather than a pointer, then we can do dirty rcu style hacks to just replace and grow the table as we need more memory. Don't we have a standard way to pull memory from the top of the physmem area early on for allocations like this? Perhaps a bit overkill for this problem? Probably.. I keep thinking we should just increase the size by 2x but allow platforms to override. for SMALL. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r255219 - in head: contrib/tcpdump lib/libc lib/libc/capability lib/libc/include lib/libc/sys lib/libprocstat sbin/dhclient sbin/hastd sys/amd64/linux32 sys/bsm sys/cddl/compat/opensol
On 1/2/14 1:33 AM, Pawel Jakub Dawidek wrote: On Wed, Jan 01, 2014 at 11:16:22PM -0800, Stanislav Sedov wrote: On Sep 4, 2013, at 5:09 PM, Pawel Jakub Dawidek p...@freebsd.org wrote: This commit also breaks compatibility with some existing Capsicum system calls, but I see no other way to do that. This should be fine as Capsicum is still experimental and this change is not going to 9.x. Hi! This change also increases the size of kinfo_file structure, which won’t allow programs not compiled against HEAD and working with kern.info.filedesc sysctl to run properly on HEAD (e.g. 8.x, 9.x and 10.x jails won’t run properly on HEAD, and it also broke valgrind). Is there absolutely no way to avoid extending the size of this struct? Well, I made this change to have space for future cap_rights_t expension. I did that change for a major branch, so we don't have to do it in the middle of 10.x or to not block the work until 11.0. Note that the structure changed size not only because of _kf_cap_spare[3] field, but also because cap_rights_t is not uint64_t anymore, it is now struct that contains two uint64_t (1424 - 1392 = 4 * 8). I'm afraid it is too late to change it for 10.0 at this point anyway. Not sure if you are aware this was merged to 10, because you write about 10.x jails not working properly on HEAD. 10.x jails will work properly on HEAD. BTW. I'd love if we stop using such structures for a running kernel. We should really move to using libnv to export data like that. Aren't there enough bits in int _kf_ispare[4]; /* Space for more stuff. */ to make this work for the time being until you can provide an alternate way to fetch the cap stuff from the kernel. Afaik you could just remove the spare and steal 2 or 4 entries from _kf_ispare until it is sorted. Can you please make use of that and discuss merge to 10 with re@? It really sounds like breaking top/etc under jails is something that should and can be avoided. Thank you, -Alfred #if defined(__amd64__) || defined(__i386__) -#defineKINFO_FILE_SIZE 1392 +#defineKINFO_FILE_SIZE 1424 #endif struct kinfo_file { @@ -389,6 +390,7 @@ uint16_tkf_pad1;/* Round to 32 bit alignment. */ int _kf_ispare0;/* Space for more stuff. */ cap_rights_tkf_cap_rights; /* Capability rights. */ + uint64_t_kf_cap_spare[3]; /* Space for future cap_rights_t. */ int _kf_ispare[4]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ charkf_path[PATH_MAX]; /* Path to file, if any. */ -- Alfred Perlstein ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r255219 - in head: contrib/tcpdump lib/libc lib/libc/capability lib/libc/include lib/libc/sys lib/libprocstat sbin/dhclient sbin/hastd sys/amd64/linux32 sys/bsm sys/cddl/compat/opensol
On 1/2/14 2:49 AM, Pawel Jakub Dawidek wrote: On Thu, Jan 02, 2014 at 02:28:57AM -0800, Alfred Perlstein wrote: On 1/2/14 1:33 AM, Pawel Jakub Dawidek wrote: On Wed, Jan 01, 2014 at 11:16:22PM -0800, Stanislav Sedov wrote: On Sep 4, 2013, at 5:09 PM, Pawel Jakub Dawidek p...@freebsd.org wrote: This commit also breaks compatibility with some existing Capsicum system calls, but I see no other way to do that. This should be fine as Capsicum is still experimental and this change is not going to 9.x. Hi! This change also increases the size of kinfo_file structure, which won’t allow programs not compiled against HEAD and working with kern.info.filedesc sysctl to run properly on HEAD (e.g. 8.x, 9.x and 10.x jails won’t run properly on HEAD, and it also broke valgrind). Is there absolutely no way to avoid extending the size of this struct? Well, I made this change to have space for future cap_rights_t expension. I did that change for a major branch, so we don't have to do it in the middle of 10.x or to not block the work until 11.0. Note that the structure changed size not only because of _kf_cap_spare[3] field, but also because cap_rights_t is not uint64_t anymore, it is now struct that contains two uint64_t (1424 - 1392 = 4 * 8). I'm afraid it is too late to change it for 10.0 at this point anyway. Not sure if you are aware this was merged to 10, because you write about 10.x jails not working properly on HEAD. 10.x jails will work properly on HEAD. BTW. I'd love if we stop using such structures for a running kernel. We should really move to using libnv to export data like that. Aren't there enough bits in int _kf_ispare[4]; /* Space for more stuff. */ to make this work for the time being until you can provide an alternate way to fetch the cap stuff from the kernel. I don't plan to provide alternative way to fetch the cap stuff. Well, I implemented libnv, which can be used to reimplement how we fetch all data like kinfo_file in a ABI friendly way, but I don't plan to modify this specific code myself. Afaik you could just remove the spare and steal 2 or 4 entries from _kf_ispare until it is sorted. Yes, this would work for current cap_rights_t structure, at least for i386 and amd64, but would only allow to expand the structure by one uint64_t in the future (which might or might not be enough). The cap_rights_t structure is designed to be expanded to 5 uint64_ts without breaking ABI. I don't want to stuck with current cap_rights_t that is designed to expand, but cannot be, because kinfo_file wasn't modified at the start of a major branch. Can you please make use of that and discuss merge to 10 with re@? I'm Bccing re@, but I'm pretty sure it is too late for such a change, especially that it breaks ABI with all 10-RCs. I'm also not changing my mind. I'd like to structure to stay as-is. It really sounds like breaking top/etc under jails is something that should and can be avoided. I agree. Maybe it should be done every 10 major releases (I'm still fine with that rule), but we cannot just stuck with it forever. My suggestions would be: 1. Move to libnv. 2. Detect that the given binary was compiled against some older version of this structure and copy old structure to userland. Not sure if we can do that now or not, but I'd expect we can detect that. Well I agree strongly with what you are doing except the part where 9.x jails and earlier are broken because of this change. It seems like there is a way out and you agree. Perhaps since the cap fits in the spare area we can make do for the time being? The way to do a major re-org of the kinfo_file/proc/whatever is to either use libnv as you suggest, check the binary version (as you suggest) or to make an entirely new one and make the old one kinfo_file_old and make a new way to fetch the new data as we did with the various syscalls ostatfs, ostat, etc. It still seems like we have a way out that would even give capabilities another version (there are enough cells in _kf_ispare for the next version of the capabilities code. -Alfred #if defined(__amd64__) || defined(__i386__) -#defineKINFO_FILE_SIZE 1392 +#defineKINFO_FILE_SIZE 1424 #endif struct kinfo_file { @@ -389,6 +390,7 @@ uint16_tkf_pad1;/* Round to 32 bit alignment. */ int _kf_ispare0;/* Space for more stuff. */ cap_rights_tkf_cap_rights; /* Capability rights. */ + uint64_t_kf_cap_spare[3]; /* Space for future cap_rights_t. */ int _kf_ispare[4]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ charkf_path[PATH_MAX]; /* Path to file, if any. */ -- Alfred Perlstein ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src
Re: svn commit: r255219 - in head: contrib/tcpdump lib/libc lib/libc/capability lib/libc/include lib/libc/sys lib/libprocstat sbin/dhclient sbin/hastd sys/amd64/linux32 sys/bsm sys/cddl/compat/opensol
On 1/2/14, 11:14 AM, John-Mark Gurney wrote: Konstantin Belousov wrote this message on Thu, Jan 02, 2014 at 15:13 +0200: Afaik you could just remove the spare and steal 2 or 4 entries from _kf_ispare until it is sorted. Yes, this would work for current cap_rights_t structure, at least for i386 and amd64, but would only allow to expand the structure by one uint64_t in the future (which might or might not be enough). The cap_rights_t structure is designed to be expanded to 5 uint64_ts without breaking ABI. I don't want to stuck with current cap_rights_t that is designed to expand, but cannot be, because kinfo_file wasn't modified at the start of a major branch. The ABI stability is not limited to the single branch. It must be preserved across whole project lifetime. Umm. when did this policy change happen? I thought ABI compatibility was limited to major releases of FreeBSD? How are you suppose to do any work if you can't break ABI ever? I did a quick search for freebsd policy abi breakage and found some mailing list posts about this, but no authoritative statement... Of course the problem is that when we move to (ASN.1/libnv/ctf/YAML/JSON/XML/etc) we will break ABI compatibility too, or introduce tons of compatibility code that will rot... I agree, however there is a very easy way to fix it for the time being. Let's not be binary about it well it's going to have to break, so let's break it! when such an easy way to not break it exists. It should be let's see if there's a non-intrusive way of not breaking it and the answer to that seems to be yes. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r255219 - in head: contrib/tcpdump lib/libc lib/libc/capability lib/libc/include lib/libc/sys lib/libprocstat sbin/dhclient sbin/hastd sys/amd64/linux32 sys/bsm sys/cddl/compat/opensol
On 1/2/14, 11:34 AM, Konstantin Belousov wrote: On Thu, Jan 02, 2014 at 11:23:55AM -0800, Alfred Perlstein wrote: On 1/2/14, 11:14 AM, John-Mark Gurney wrote: Konstantin Belousov wrote this message on Thu, Jan 02, 2014 at 15:13 +0200: Afaik you could just remove the spare and steal 2 or 4 entries from _kf_ispare until it is sorted. Yes, this would work for current cap_rights_t structure, at least for i386 and amd64, but would only allow to expand the structure by one uint64_t in the future (which might or might not be enough). The cap_rights_t structure is designed to be expanded to 5 uint64_ts without breaking ABI. I don't want to stuck with current cap_rights_t that is designed to expand, but cannot be, because kinfo_file wasn't modified at the start of a major branch. The ABI stability is not limited to the single branch. It must be preserved across whole project lifetime. Umm. when did this policy change happen? I thought ABI compatibility was limited to major releases of FreeBSD? How are you suppose to do any work if you can't break ABI ever? I did a quick search for freebsd policy abi breakage and found some mailing list posts about this, but no authoritative statement... Of course the problem is that when we move to (ASN.1/libnv/ctf/YAML/JSON/XML/etc) we will break ABI compatibility too, or introduce tons of compatibility code that will rot... I agree, however there is a very easy way to fix it for the time being. Let's not be binary about it well it's going to have to break, so let's break it! when such an easy way to not break it exists. It should be let's see if there's a non-intrusive way of not breaking it and the answer to that seems to be yes. If parts of ABI is broken, then why spend efforts trying to keep other parts stable ? You already have random set of binaries broken, sometimes in subtle way. Then, making other interfaces stable is just a waste. ABI stability is a yes/no proposition, you cannot have it partly done. Personally, I do not want to spend a time on hobbyist system. BTW, to point out obvious thing, Linux has almost perfect ABI stability and forward compatibility. It is pity to see that our people do not understand the importance and benefits of it. I agree strongly. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r259616 - releng/10.0/sys/ofed/drivers/net/mlx4
Author: alfred Date: Thu Dec 19 15:45:03 2013 New Revision: 259616 URL: http://svnweb.freebsd.org/changeset/base/259616 Log: Defer start/stop port to workqueues. MF10: r259608 Approved by: re Modified: releng/10.0/sys/ofed/drivers/net/mlx4/en_netdev.c releng/10.0/sys/ofed/drivers/net/mlx4/mlx4_en.h Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/sys/ofed/drivers/net/mlx4/en_netdev.c == --- releng/10.0/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Dec 19 15:31:20 2013(r259615) +++ releng/10.0/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Dec 19 15:45:03 2013(r259616) @@ -153,6 +153,19 @@ restart: return (i); } +static void mlx4_en_stop_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-stop_port_task); +} + +static void mlx4_en_start_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-start_port_task); +} static void mlx4_en_set_multicast(struct net_device *dev) { @@ -473,6 +486,7 @@ static void mlx4_en_do_get_stats(struct queue_delayed_work(mdev-workqueue, priv-stats_task, STATS_DELAY); } + mlx4_en_QUERY_PORT(priv-mdev, priv-port); mutex_unlock(mdev-state_lock); } @@ -498,8 +512,31 @@ static void mlx4_en_linkstate(struct wor mutex_unlock(mdev-state_lock); } +static void mlx4_en_lock_and_stop_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +stop_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_stop_port(dev); + mutex_unlock(mdev-state_lock); +} + +static void mlx4_en_lock_and_start_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +start_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_start_port(dev); + mutex_unlock(mdev-state_lock); +} -int mlx4_en_start_port(struct net_device *dev) +int mlx4_en_do_start_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -691,7 +728,7 @@ cq_err: } -void mlx4_en_stop_port(struct net_device *dev) +void mlx4_en_do_stop_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -761,8 +798,8 @@ reset: mutex_lock(mdev-state_lock); if (priv-port_up) { - mlx4_en_stop_port(dev); - if (mlx4_en_start_port(dev)) + mlx4_en_do_stop_port(dev); + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed restarting port %d\n, priv-port); } mutex_unlock(mdev-state_lock); @@ -793,7 +830,7 @@ mlx4_en_init_locked(struct mlx4_en_priv dev = priv-dev; mdev = priv-mdev; if (dev-if_drv_flags IFF_DRV_RUNNING) - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); if (!mdev-device_up) { en_err(priv, Cannot open - device down/disabled\n); @@ -816,7 +853,7 @@ mlx4_en_init_locked(struct mlx4_en_priv } mlx4_en_set_default_moderation(priv); - if (mlx4_en_start_port(dev)) + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed starting port:%d\n, priv-port); } @@ -905,7 +942,7 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_free_hwq_res(mdev-dev, priv-res, MLX4_EN_PAGE_SIZE); mutex_lock(mdev-state_lock); - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mutex_unlock(mdev-state_lock); cancel_delayed_work(priv-stats_task); @@ -925,7 +962,6 @@ void mlx4_en_destroy_netdev(struct net_d mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); - mtx_destroy(priv-ioctl_lock.m); kfree(priv); if_free(dev); } @@ -951,9 +987,9 @@ static int mlx4_en_change_mtu(struct net * the port */ en_dbg(DRV, priv, Change MTU called with card down!?\n); } else { - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mlx4_en_set_default_moderation(priv); - err = mlx4_en_start_port(dev); + err = mlx4_en_do_start_port(dev); if (err) { en_err(priv, Failed restarting port:%d\n,
svn commit: r259608 - stable/10/sys/ofed/drivers/net/mlx4
Author: alfred Date: Thu Dec 19 07:33:07 2013 New Revision: 259608 URL: http://svnweb.freebsd.org/changeset/base/259608 Log: Defer start/stop port to workqueues. MFC: 259411 Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c stable/10/sys/ofed/drivers/net/mlx4/mlx4_en.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Dec 19 07:20:37 2013(r259607) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Dec 19 07:33:07 2013(r259608) @@ -153,6 +153,19 @@ restart: return (i); } +static void mlx4_en_stop_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-stop_port_task); +} + +static void mlx4_en_start_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-start_port_task); +} static void mlx4_en_set_multicast(struct net_device *dev) { @@ -473,6 +486,7 @@ static void mlx4_en_do_get_stats(struct queue_delayed_work(mdev-workqueue, priv-stats_task, STATS_DELAY); } + mlx4_en_QUERY_PORT(priv-mdev, priv-port); mutex_unlock(mdev-state_lock); } @@ -498,8 +512,31 @@ static void mlx4_en_linkstate(struct wor mutex_unlock(mdev-state_lock); } +static void mlx4_en_lock_and_stop_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +stop_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_stop_port(dev); + mutex_unlock(mdev-state_lock); +} + +static void mlx4_en_lock_and_start_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +start_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_start_port(dev); + mutex_unlock(mdev-state_lock); +} -int mlx4_en_start_port(struct net_device *dev) +int mlx4_en_do_start_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -691,7 +728,7 @@ cq_err: } -void mlx4_en_stop_port(struct net_device *dev) +void mlx4_en_do_stop_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -761,8 +798,8 @@ reset: mutex_lock(mdev-state_lock); if (priv-port_up) { - mlx4_en_stop_port(dev); - if (mlx4_en_start_port(dev)) + mlx4_en_do_stop_port(dev); + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed restarting port %d\n, priv-port); } mutex_unlock(mdev-state_lock); @@ -793,7 +830,7 @@ mlx4_en_init_locked(struct mlx4_en_priv dev = priv-dev; mdev = priv-mdev; if (dev-if_drv_flags IFF_DRV_RUNNING) - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); if (!mdev-device_up) { en_err(priv, Cannot open - device down/disabled\n); @@ -816,7 +853,7 @@ mlx4_en_init_locked(struct mlx4_en_priv } mlx4_en_set_default_moderation(priv); - if (mlx4_en_start_port(dev)) + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed starting port:%d\n, priv-port); } @@ -905,7 +942,7 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_free_hwq_res(mdev-dev, priv-res, MLX4_EN_PAGE_SIZE); mutex_lock(mdev-state_lock); - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mutex_unlock(mdev-state_lock); cancel_delayed_work(priv-stats_task); @@ -925,7 +962,6 @@ void mlx4_en_destroy_netdev(struct net_d mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); - mtx_destroy(priv-ioctl_lock.m); kfree(priv); if_free(dev); } @@ -951,9 +987,9 @@ static int mlx4_en_change_mtu(struct net * the port */ en_dbg(DRV, priv, Change MTU called with card down!?\n); } else { - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mlx4_en_set_default_moderation(priv); - err = mlx4_en_start_port(dev); + err = mlx4_en_do_start_port(dev); if (err) { en_err(priv, Failed restarting port:%d\n,
svn commit: r259411 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sun Dec 15 07:07:13 2013 New Revision: 259411 URL: http://svnweb.freebsd.org/changeset/base/259411 Log: Defer start/stop port to workqueues. We need to do this because the Linux compat layer uses sx(9) for mutex, however the lagg code uses rmlocks and calls into the mellanox driver. This causes deadlock due to sleeping while holding a rmlock. Submitted by: Shahar Klein (shahark mellanox.com) MFC After: 3 days. Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/mlx4_en.h Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Dec 15 07:04:59 2013 (r259410) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Dec 15 07:07:13 2013 (r259411) @@ -153,6 +153,19 @@ restart: return (i); } +static void mlx4_en_stop_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-stop_port_task); +} + +static void mlx4_en_start_port(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + queue_work(priv-mdev-workqueue, priv-start_port_task); +} static void mlx4_en_set_multicast(struct net_device *dev) { @@ -473,6 +486,7 @@ static void mlx4_en_do_get_stats(struct queue_delayed_work(mdev-workqueue, priv-stats_task, STATS_DELAY); } + mlx4_en_QUERY_PORT(priv-mdev, priv-port); mutex_unlock(mdev-state_lock); } @@ -498,8 +512,31 @@ static void mlx4_en_linkstate(struct wor mutex_unlock(mdev-state_lock); } +static void mlx4_en_lock_and_stop_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +stop_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_stop_port(dev); + mutex_unlock(mdev-state_lock); +} + +static void mlx4_en_lock_and_start_port(struct work_struct *work) +{ + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, +start_port_task); + struct net_device *dev = priv-dev; + struct mlx4_en_dev *mdev = priv-mdev; + + mutex_lock(mdev-state_lock); + mlx4_en_do_start_port(dev); + mutex_unlock(mdev-state_lock); +} -int mlx4_en_start_port(struct net_device *dev) +int mlx4_en_do_start_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -691,7 +728,7 @@ cq_err: } -void mlx4_en_stop_port(struct net_device *dev) +void mlx4_en_do_stop_port(struct net_device *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv-mdev; @@ -761,8 +798,8 @@ reset: mutex_lock(mdev-state_lock); if (priv-port_up) { - mlx4_en_stop_port(dev); - if (mlx4_en_start_port(dev)) + mlx4_en_do_stop_port(dev); + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed restarting port %d\n, priv-port); } mutex_unlock(mdev-state_lock); @@ -793,7 +830,7 @@ mlx4_en_init_locked(struct mlx4_en_priv dev = priv-dev; mdev = priv-mdev; if (dev-if_drv_flags IFF_DRV_RUNNING) - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); if (!mdev-device_up) { en_err(priv, Cannot open - device down/disabled\n); @@ -816,7 +853,7 @@ mlx4_en_init_locked(struct mlx4_en_priv } mlx4_en_set_default_moderation(priv); - if (mlx4_en_start_port(dev)) + if (mlx4_en_do_start_port(dev)) en_err(priv, Failed starting port:%d\n, priv-port); } @@ -905,7 +942,7 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_free_hwq_res(mdev-dev, priv-res, MLX4_EN_PAGE_SIZE); mutex_lock(mdev-state_lock); - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mutex_unlock(mdev-state_lock); cancel_delayed_work(priv-stats_task); @@ -925,7 +962,6 @@ void mlx4_en_destroy_netdev(struct net_d mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); - mtx_destroy(priv-ioctl_lock.m); kfree(priv); if_free(dev); } @@ -951,9 +987,9 @@ static int mlx4_en_change_mtu(struct net * the port */ en_dbg(DRV, priv, Change MTU called with card down!?\n); } else { - mlx4_en_stop_port(dev); + mlx4_en_do_stop_port(dev); mlx4_en_set_default_moderation(priv); - err = mlx4_en_start_port(dev); +
svn commit: r259114 - head/sys/modules/crypto
Author: alfred Date: Mon Dec 9 02:06:52 2013 New Revision: 259114 URL: http://svnweb.freebsd.org/changeset/base/259114 Log: Chase down cryptodeflate.c change from r259109. Modified: head/sys/modules/crypto/Makefile Modified: head/sys/modules/crypto/Makefile == --- head/sys/modules/crypto/MakefileMon Dec 9 01:30:20 2013 (r259113) +++ head/sys/modules/crypto/MakefileMon Dec 9 02:06:52 2013 (r259114) @@ -11,7 +11,7 @@ KMOD = crypto SRCS = crypto.c cryptodev_if.c SRCS += criov.c cryptosoft.c xform.c -SRCS += cast.c deflate.c rmd160.c rijndael-alg-fst.c rijndael-api.c +SRCS += cast.c cryptodeflate.c rmd160.c rijndael-alg-fst.c rijndael-api.c SRCS += skipjack.c bf_enc.c bf_ecb.c bf_skey.c SRCS += des_ecb.c des_enc.c des_setkey.c SRCS += sha1.c sha2.c ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r258276 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sun Nov 17 20:58:31 2013 New Revision: 258276 URL: http://svnweb.freebsd.org/changeset/base/258276 Log: Fix creating a vlan over lagg over mlxen crash. PR: 181931 Submitted by: Shahar Klein (shahark mellanox.com) Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 20:29:33 2013 (r258275) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 20:58:31 2013 (r258276) @@ -52,6 +52,9 @@ static void mlx4_en_vlan_rx_add_vid(void int idx; u8 field; + if (arg != priv) + return; + if ((vid == 0) || (vid 4095))/* Invalid */ return; en_dbg(HW, priv, adding VLAN:%d\n, vid); @@ -73,6 +76,9 @@ static void mlx4_en_vlan_rx_kill_vid(voi int idx; u8 field; + if (arg != priv) + return; + if ((vid == 0) || (vid 4095))/* Invalid */ return; en_dbg(HW, priv, Killing VID:%d\n, vid); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r258280 - stable/10/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sun Nov 17 22:24:34 2013 New Revision: 258280 URL: http://svnweb.freebsd.org/changeset/base/258280 Log: MFC: 258276 Fix creating a vlan over lagg over mlxen crash. PR: 181931 Submitted by: Shahar Klein (shahark mellanox.com) Approved by: re Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 21:36:19 2013(r258279) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 22:24:34 2013(r258280) @@ -52,6 +52,9 @@ static void mlx4_en_vlan_rx_add_vid(void int idx; u8 field; + if (arg != priv) + return; + if ((vid == 0) || (vid 4095))/* Invalid */ return; en_dbg(HW, priv, adding VLAN:%d\n, vid); @@ -73,6 +76,9 @@ static void mlx4_en_vlan_rx_kill_vid(voi int idx; u8 field; + if (arg != priv) + return; + if ((vid == 0) || (vid 4095))/* Invalid */ return; en_dbg(HW, priv, Killing VID:%d\n, vid); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r258242 - stable/10/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sun Nov 17 01:07:46 2013 New Revision: 258242 URL: http://svnweb.freebsd.org/changeset/base/258242 Log: MFC: 257542 Fix API mismatch exposed by lagg. When destroying a lagg the driver tries to restore the old mac and fails due to API mismatch. Submitted by: Shahar Klein (shahark at mellanox.com) Approved by: re Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 00:49:55 2013(r258241) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Nov 17 01:07:46 2013(r258242) @@ -604,8 +604,8 @@ int mlx4_en_start_port(struct net_device en_dbg(DRV, priv, Setting mac for port %d\n, priv-port); err = mlx4_register_mac(mdev-dev, priv-port, mlx4_en_mac_to_u64(IF_LLADDR(dev))); - if (err) { - en_err(priv, Failed setting port mac\n); + if (err 0) { + en_err(priv, Failed setting port mac err=%d\n, err); goto tx_err; } mdev-mac_removed[priv-port] = 0; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r257862 - head/sys/ofed/include/linux
Author: alfred Date: Fri Nov 8 18:20:19 2013 New Revision: 257862 URL: http://svnweb.freebsd.org/changeset/base/257862 Log: Use explicit long cast to avoid overflow in bitopts. This was causing problems with the buddy allocator inside of ofed. Submitted by: odeds Modified: head/sys/ofed/include/linux/bitops.h Modified: head/sys/ofed/include/linux/bitops.h == --- head/sys/ofed/include/linux/bitops.hFri Nov 8 17:27:38 2013 (r257861) +++ head/sys/ofed/include/linux/bitops.hFri Nov 8 18:20:19 2013 (r257862) @@ -286,14 +286,14 @@ bitmap_empty(unsigned long *addr, int si #defineNBLONG (NBBY * sizeof(long)) #defineset_bit(i, a) \ -atomic_set_long(((volatile long *)(a))[(i)/NBLONG], 1 (i) % NBLONG) +atomic_set_long(((volatile long *)(a))[(i)/NBLONG], 1UL (i) % NBLONG) #defineclear_bit(i, a) \ -atomic_clear_long(((volatile long *)(a))[(i)/NBLONG], 1 (i) % NBLONG) +atomic_clear_long(((volatile long *)(a))[(i)/NBLONG], 1UL (i) % NBLONG) #definetest_bit(i, a) \ !!(atomic_load_acq_long(((volatile long *)(a))[(i)/NBLONG]) \ -1 ((i) % NBLONG)) +1UL ((i) % NBLONG)) static inline long test_and_clear_bit(long bit, long *var) ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r257863 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Fri Nov 8 18:26:28 2013 New Revision: 257863 URL: http://svnweb.freebsd.org/changeset/base/257863 Log: Fix for bad performance when mtu is increased. Update the auto moderation behavior in the mlxen driver to match the new LINUX OFED code. Submitted by: odeds Modified: head/sys/ofed/drivers/net/mlx4/en_ethtool.c head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/mlx4_en.h Modified: head/sys/ofed/drivers/net/mlx4/en_ethtool.c == --- head/sys/ofed/drivers/net/mlx4/en_ethtool.c Fri Nov 8 18:20:19 2013 (r257862) +++ head/sys/ofed/drivers/net/mlx4/en_ethtool.c Fri Nov 8 18:26:28 2013 (r257863) @@ -366,13 +366,13 @@ static int mlx4_en_set_coalesce(struct n priv-rx_usecs_high = coal-rx_coalesce_usecs_high; priv-sample_interval = coal-rate_sample_interval; priv-adaptive_rx_coal = coal-use_adaptive_rx_coalesce; - priv-last_moder_time = MLX4_EN_AUTO_CONF; if (priv-adaptive_rx_coal) return 0; for (i = 0; i priv-rx_ring_num; i++) { priv-rx_cq[i].moder_cnt = priv-rx_frames; priv-rx_cq[i].moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; err = mlx4_en_set_cq_moder(priv, priv-rx_cq[i]); if (err) return err; @@ -418,6 +418,7 @@ static int mlx4_en_set_ringparam(struct u32 rx_size, tx_size; int port_up = 0; int err = 0; + int i; if (param-rx_jumbo_pending || param-rx_mini_pending) return -EINVAL; @@ -456,6 +457,15 @@ static int mlx4_en_set_ringparam(struct en_err(priv, Failed starting port\n); } + for (i = 0; i priv-rx_ring_num; i++) { + priv-rx_cq[i].moder_cnt = priv-rx_frames; + priv-rx_cq[i].moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; + err = mlx4_en_set_cq_moder(priv, priv-rx_cq[i]); + if (err) + goto out; + } + out: mutex_unlock(mdev-state_lock); return err; Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 18:20:19 2013 (r257862) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 18:26:28 2013 (r257863) @@ -318,6 +318,9 @@ static void mlx4_en_set_default_moderati cq = priv-rx_cq[i]; cq-moder_cnt = priv-rx_frames; cq-moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; + priv-last_moder_packets[i] = 0; + priv-last_moder_bytes[i] = 0; } for (i = 0; i priv-tx_ring_num; i++) { @@ -333,11 +336,8 @@ static void mlx4_en_set_default_moderati priv-rx_usecs_high = MLX4_EN_RX_COAL_TIME_HIGH; priv-sample_interval = MLX4_EN_SAMPLE_INTERVAL; priv-adaptive_rx_coal = 1; - priv-last_moder_time = MLX4_EN_AUTO_CONF; priv-last_moder_jiffies = 0; - priv-last_moder_packets = 0; priv-last_moder_tx_packets = 0; - priv-last_moder_bytes = 0; } static void mlx4_en_auto_moderation(struct mlx4_en_priv *priv) @@ -349,43 +349,29 @@ static void mlx4_en_auto_moderation(stru unsigned long avg_pkt_size; unsigned long rx_packets; unsigned long rx_bytes; - unsigned long tx_packets; - unsigned long tx_pkt_diff; unsigned long rx_pkt_diff; int moder_time; - int i, err; + int ring, err; if (!priv-adaptive_rx_coal || period priv-sample_interval * HZ) return; - - spin_lock(priv-stats_lock); - rx_packets = priv-dev-if_ipackets; - rx_bytes = priv-dev-if_ibytes; - tx_packets = priv-dev-if_opackets; - spin_unlock(priv-stats_lock); - - if (!priv-last_moder_jiffies || !period) - goto out; - - tx_pkt_diff = ((unsigned long) (tx_packets - - priv-last_moder_tx_packets)); - rx_pkt_diff = ((unsigned long) (rx_packets - - priv-last_moder_packets)); - packets = max(tx_pkt_diff, rx_pkt_diff); - rate = packets * HZ / period; - avg_pkt_size = packets ? ((unsigned long) (rx_bytes - -priv-last_moder_bytes)) / packets : 0; - - /* Apply auto-moderation only when packet rate exceeds a rate that -* it matters */ - if (rate MLX4_EN_RX_RATE_THRESH) { - /* If tx and rx packet rates are not balanced, assume that -* traffic is mainly BW bound and apply maximum moderation. -* Otherwise, moderate according to
svn commit: r257864 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Fri Nov 8 18:28:48 2013 New Revision: 257864 URL: http://svnweb.freebsd.org/changeset/base/257864 Log: Do not use a sleep lock when protecting the driver flags. This was causing a locking issue with lagg Submitted by: odeds Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/mlx4_en.h Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 18:26:28 2013 (r257863) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 18:28:48 2013 (r257864) @@ -919,6 +919,7 @@ void mlx4_en_destroy_netdev(struct net_d mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); + mtx_destroy(priv-ioctl_lock.m); kfree(priv); if_free(dev); } @@ -1087,9 +1088,9 @@ static int mlx4_en_ioctl(struct ifnet *d break; case SIOCADDMULTI: case SIOCDELMULTI: - mutex_lock(mdev-state_lock); +spin_lock(priv-ioctl_lock); mlx4_en_set_multicast(dev); - mutex_unlock(mdev-state_lock); +spin_unlock(priv-ioctl_lock); break; case SIOCSIFMEDIA: case SIOCGIFMEDIA: @@ -1510,6 +1511,7 @@ int mlx4_en_init_netdev(struct mlx4_en_d priv-msg_enable = MLX4_EN_MSG_LEVEL; priv-ip_reasm = priv-mdev-profile.ip_reasm; mtx_init(priv-stats_lock.m, mlx4 stats, NULL, MTX_DEF); + mtx_init(priv-ioctl_lock.m, mlx4 ioctl, NULL, MTX_DEF); mtx_init(priv-vlan_lock.m, mlx4 vlan, NULL, MTX_DEF); INIT_WORK(priv-mcast_task, mlx4_en_do_set_multicast); INIT_WORK(priv-watchdog_task, mlx4_en_restart); Modified: head/sys/ofed/drivers/net/mlx4/mlx4_en.h == --- head/sys/ofed/drivers/net/mlx4/mlx4_en.hFri Nov 8 18:26:28 2013 (r257863) +++ head/sys/ofed/drivers/net/mlx4/mlx4_en.hFri Nov 8 18:28:48 2013 (r257864) @@ -493,6 +493,7 @@ struct mlx4_en_priv { spinlock_t vlan_lock; struct mlx4_en_port_state port_state; spinlock_t stats_lock; + spinlock_t ioctl_lock; unsigned long last_moder_packets[MAX_RX_RINGS]; unsigned long last_moder_tx_packets; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r257867 - in stable/10/sys/ofed: drivers/net/mlx4 include/linux
Author: alfred Date: Fri Nov 8 22:29:07 2013 New Revision: 257867 URL: http://svnweb.freebsd.org/changeset/base/257867 Log: MFC: r257862, r257863, r257864 r257862: Use explicit long cast to avoid overflow in bitopts. This was causing problems with the buddy allocator inside of ofed. r257863: Fix for bad performance when mtu is increased. Update the auto moderation behavior in the mlxen driver to match the new LINUX OFED code. r257864: Do not use a sleep lock when protecting the driver flags. This was causing a locking issue with lagg. Approved by: re Modified: stable/10/sys/ofed/drivers/net/mlx4/en_ethtool.c stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c stable/10/sys/ofed/drivers/net/mlx4/mlx4_en.h stable/10/sys/ofed/include/linux/bitops.h Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_ethtool.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_ethtool.cFri Nov 8 21:03:47 2013(r257866) +++ stable/10/sys/ofed/drivers/net/mlx4/en_ethtool.cFri Nov 8 22:29:07 2013(r257867) @@ -366,13 +366,13 @@ static int mlx4_en_set_coalesce(struct n priv-rx_usecs_high = coal-rx_coalesce_usecs_high; priv-sample_interval = coal-rate_sample_interval; priv-adaptive_rx_coal = coal-use_adaptive_rx_coalesce; - priv-last_moder_time = MLX4_EN_AUTO_CONF; if (priv-adaptive_rx_coal) return 0; for (i = 0; i priv-rx_ring_num; i++) { priv-rx_cq[i].moder_cnt = priv-rx_frames; priv-rx_cq[i].moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; err = mlx4_en_set_cq_moder(priv, priv-rx_cq[i]); if (err) return err; @@ -418,6 +418,7 @@ static int mlx4_en_set_ringparam(struct u32 rx_size, tx_size; int port_up = 0; int err = 0; + int i; if (param-rx_jumbo_pending || param-rx_mini_pending) return -EINVAL; @@ -456,6 +457,15 @@ static int mlx4_en_set_ringparam(struct en_err(priv, Failed starting port\n); } + for (i = 0; i priv-rx_ring_num; i++) { + priv-rx_cq[i].moder_cnt = priv-rx_frames; + priv-rx_cq[i].moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; + err = mlx4_en_set_cq_moder(priv, priv-rx_cq[i]); + if (err) + goto out; + } + out: mutex_unlock(mdev-state_lock); return err; Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 21:03:47 2013(r257866) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Fri Nov 8 22:29:07 2013(r257867) @@ -318,6 +318,9 @@ static void mlx4_en_set_default_moderati cq = priv-rx_cq[i]; cq-moder_cnt = priv-rx_frames; cq-moder_time = priv-rx_usecs; + priv-last_moder_time[i] = MLX4_EN_AUTO_CONF; + priv-last_moder_packets[i] = 0; + priv-last_moder_bytes[i] = 0; } for (i = 0; i priv-tx_ring_num; i++) { @@ -333,11 +336,8 @@ static void mlx4_en_set_default_moderati priv-rx_usecs_high = MLX4_EN_RX_COAL_TIME_HIGH; priv-sample_interval = MLX4_EN_SAMPLE_INTERVAL; priv-adaptive_rx_coal = 1; - priv-last_moder_time = MLX4_EN_AUTO_CONF; priv-last_moder_jiffies = 0; - priv-last_moder_packets = 0; priv-last_moder_tx_packets = 0; - priv-last_moder_bytes = 0; } static void mlx4_en_auto_moderation(struct mlx4_en_priv *priv) @@ -349,43 +349,29 @@ static void mlx4_en_auto_moderation(stru unsigned long avg_pkt_size; unsigned long rx_packets; unsigned long rx_bytes; - unsigned long tx_packets; - unsigned long tx_pkt_diff; unsigned long rx_pkt_diff; int moder_time; - int i, err; + int ring, err; if (!priv-adaptive_rx_coal || period priv-sample_interval * HZ) return; - - spin_lock(priv-stats_lock); - rx_packets = priv-dev-if_ipackets; - rx_bytes = priv-dev-if_ibytes; - tx_packets = priv-dev-if_opackets; - spin_unlock(priv-stats_lock); - - if (!priv-last_moder_jiffies || !period) - goto out; - - tx_pkt_diff = ((unsigned long) (tx_packets - - priv-last_moder_tx_packets)); - rx_pkt_diff = ((unsigned long) (rx_packets - - priv-last_moder_packets)); - packets = max(tx_pkt_diff, rx_pkt_diff); - rate = packets * HZ / period; -
svn commit: r257542 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sat Nov 2 10:49:47 2013 New Revision: 257542 URL: http://svnweb.freebsd.org/changeset/base/257542 Log: Fix API mismatch exposed by lagg. When destroying a lagg the driver tries to restore the old mac and fails due to API mismatch Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Sat Nov 2 09:16:11 2013 (r257541) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Sat Nov 2 10:49:47 2013 (r257542) @@ -633,8 +633,8 @@ int mlx4_en_start_port(struct net_device en_dbg(DRV, priv, Setting mac for port %d\n, priv-port); err = mlx4_register_mac(mdev-dev, priv-port, mlx4_en_mac_to_u64(IF_LLADDR(dev))); - if (err) { - en_err(priv, Failed setting port mac\n); + if (err 0) { + en_err(priv, Failed setting port mac err=%d\n, err); goto tx_err; } mdev-mac_removed[priv-port] = 0; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r257543 - head/sys/dev/usb/wlan
Author: alfred Date: Sat Nov 2 11:37:16 2013 New Revision: 257543 URL: http://svnweb.freebsd.org/changeset/base/257543 Log: Add device ID for 'Sanoxy 802.11N' usb Modified: head/sys/dev/usb/wlan/if_urtwn.c Modified: head/sys/dev/usb/wlan/if_urtwn.c == --- head/sys/dev/usb/wlan/if_urtwn.cSat Nov 2 10:49:47 2013 (r257542) +++ head/sys/dev/usb/wlan/if_urtwn.cSat Nov 2 11:37:16 2013 (r257543) @@ -139,6 +139,7 @@ static const STRUCT_USB_HOST_ID urtwn_de URTWN_DEV(REALTEK, RTL8191CU), URTWN_DEV(REALTEK, RTL8192CE), URTWN_DEV(REALTEK, RTL8192CU), + URTWN_DEV(REALTEK, RTL8188CU_0), URTWN_DEV(SITECOMEU,RTL8188CU_1), URTWN_DEV(SITECOMEU,RTL8188CU_2), URTWN_DEV(SITECOMEU,RTL8192CU), ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r256810 - stable/10/sys/ofed/drivers/net/mlx4
Author: alfred Date: Sun Oct 20 21:21:50 2013 New Revision: 256810 URL: http://svnweb.freebsd.org/changeset/base/256810 Log: Fix resource free. The order of releasing resources in mlxen was wrong, which caused panic on reload of the module. MFC: 256682 Submitted by: Shahar Klein (shahark at mellanox.com) Approved by: re Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c == --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Oct 20 21:21:07 2013(r256809) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Oct 20 21:21:50 2013(r256810) @@ -927,9 +927,6 @@ void mlx4_en_destroy_netdev(struct net_d if (priv-allocated) mlx4_free_hwq_res(mdev-dev, priv-res, MLX4_EN_PAGE_SIZE); - if (priv-sysctl) - sysctl_ctx_free(priv-conf_ctx); - mutex_lock(mdev-state_lock); mlx4_en_stop_port(dev); mutex_unlock(mdev-state_lock); @@ -946,6 +943,9 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_en_free_resources(priv); + if (priv-sysctl) + sysctl_ctx_free(priv-conf_ctx); + mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); kfree(priv); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r256682 - head/sys/ofed/drivers/net/mlx4
Author: alfred Date: Thu Oct 17 12:19:36 2013 New Revision: 256682 URL: http://svnweb.freebsd.org/changeset/base/256682 Log: Fix resource free. The order of releasing resources in mlxen was wrong, which caused panic on reload of the module. conf_ctx list should be released before stat_ctx list, otherwise the leafs in conf_ctx list won't be released because of the dependancy. The fix is to change the order of the releases. Submitted by: Shahar Klein (shahark at mellanox.com) Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c == --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Oct 17 12:15:21 2013 (r256681) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Thu Oct 17 12:19:36 2013 (r256682) @@ -927,9 +927,6 @@ void mlx4_en_destroy_netdev(struct net_d if (priv-allocated) mlx4_free_hwq_res(mdev-dev, priv-res, MLX4_EN_PAGE_SIZE); - if (priv-sysctl) - sysctl_ctx_free(priv-conf_ctx); - mutex_lock(mdev-state_lock); mlx4_en_stop_port(dev); mutex_unlock(mdev-state_lock); @@ -946,6 +943,9 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_en_free_resources(priv); + if (priv-sysctl) + sysctl_ctx_free(priv-conf_ctx); + mtx_destroy(priv-stats_lock.m); mtx_destroy(priv-vlan_lock.m); kfree(priv); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r256686 - stable/10/sys/ofed/include/linux
Author: alfred Date: Thu Oct 17 14:08:46 2013 New Revision: 256686 URL: http://svnweb.freebsd.org/changeset/base/256686 Log: Fix __free_pages() in the linux shim. __free_pages() is actaully supposed to take a struct page * not an address. MFC: 256546 Approved by: re Modified: stable/10/sys/ofed/include/linux/gfp.h Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/include/linux/gfp.h == --- stable/10/sys/ofed/include/linux/gfp.h Thu Oct 17 13:28:57 2013 (r256685) +++ stable/10/sys/ofed/include/linux/gfp.h Thu Oct 17 14:08:46 2013 (r256686) @@ -92,14 +92,14 @@ __free_page(struct page *m) } static inline void -__free_pages(void *p, unsigned int order) +__free_pages(struct page *m, unsigned int order) { size_t size; - if (p == 0) + if (m == NULL) return; size = PAGE_SIZE order; - kmem_free(kmem_arena, (vm_offset_t)p, size); + kmem_free(kmem_arena, (vm_offset_t)page_address(m), size); } /* ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r256546 - head/sys/ofed/include/linux
Author: alfred Date: Tue Oct 15 15:50:43 2013 New Revision: 256546 URL: http://svnweb.freebsd.org/changeset/base/256546 Log: Fix __free_pages() in the linux shim. __free_pages() is actaully supposed to take a struct page * not an address. Modified: head/sys/ofed/include/linux/gfp.h Modified: head/sys/ofed/include/linux/gfp.h == --- head/sys/ofed/include/linux/gfp.h Tue Oct 15 15:43:29 2013 (r256545) +++ head/sys/ofed/include/linux/gfp.h Tue Oct 15 15:50:43 2013 (r256546) @@ -92,14 +92,14 @@ __free_page(struct page *m) } static inline void -__free_pages(void *p, unsigned int order) +__free_pages(struct page *m, unsigned int order) { size_t size; - if (p == 0) + if (m == NULL) return; size = PAGE_SIZE order; - kmem_free(kmem_arena, (vm_offset_t)p, size); + kmem_free(kmem_arena, (vm_offset_t)page_address(m), size); } /* ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r256269 - head/sys/ofed/drivers/infiniband/hw/mlx4
Author: alfred Date: Thu Oct 10 14:03:03 2013 New Revision: 256269 URL: http://svnweb.freebsd.org/changeset/base/256269 Log: Fix for When more than one NIC is present. The device name was incorrect due to a specific function we ported from the Linux driver that is not FBSD compatible. This resulted with a false sysctl registration and some more problematic issues. The patch basically revokes it all together. Submitted by: Meny Yossefi (menyy mellanox.com) Approved by: re Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/main.c == --- head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Thu Oct 10 12:47:34 2013(r256268) +++ head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Thu Oct 10 14:03:03 2013(r256269) @@ -1859,33 +1859,6 @@ err: is incorrect. The parameter value is discarded!); } -static int mlx4_ib_dev_idx(struct mlx4_dev *dev) -{ - int /*bus,*/ slot, fn; - int i; - - if (!dev) - return -1; - else if (!dev-pdev) - return -1; - //else if (!dev-pdev-bus) - // return -1; - - //bus = dev-pdev-bus-conf.pc_sel.pc_bus; - slot= PCI_SLOT(dev-pdev-devfn); - fn = PCI_FUNC(dev-pdev-devfn); - - for (i = 0; i MAX_DR; ++i) { - if (/*dr[i].bus == bus */ - dr[i].dev == slot - dr[i].func == fn) { - return dr[i].nr; - } - } - - return -1; -} - static void *mlx4_ib_add(struct mlx4_dev *dev) { struct mlx4_ib_dev *ibdev; @@ -1893,7 +1866,6 @@ static void *mlx4_ib_add(struct mlx4_dev int i, j; int err; struct mlx4_ib_iboe *iboe; - int dev_idx; printk(KERN_INFO %s, mlx4_ib_version); @@ -1928,12 +1900,7 @@ static void *mlx4_ib_add(struct mlx4_dev ibdev-dev = dev; - dev_idx = mlx4_ib_dev_idx(dev); - if (dev_idx = 0) - sprintf(ibdev-ib_dev.name, mlx4_%d, dev_idx); - else - strlcpy(ibdev-ib_dev.name, mlx4_%d, IB_DEVICE_NAME_MAX); - + strlcpy(ibdev-ib_dev.name, mlx4_%d, IB_DEVICE_NAME_MAX); ibdev-ib_dev.owner = THIS_MODULE; ibdev-ib_dev.node_type = RDMA_NODE_IB_CA; ibdev-ib_dev.local_dma_lkey= dev-caps.reserved_lkey; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r255969 - in head/sys/ofed/drivers: infiniband/hw/mlx4 net/mlx4
Author: alfred Date: Tue Oct 1 15:36:51 2013 New Revision: 255969 URL: http://svnweb.freebsd.org/changeset/base/255969 Log: Fixed kernel crash when removing IPOIB_CM option from configuration file Changed module init from module_init() to module_init_order() with SI_ORDER_MIDDLE flag Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/main.c head/sys/ofed/drivers/net/mlx4/main.c Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/main.c == --- head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 1 15:33:00 2013(r255968) +++ head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 1 15:36:51 2013(r255969) @@ -2431,7 +2431,7 @@ static void __exit mlx4_ib_cleanup(void) } -module_init(mlx4_ib_init); +module_init_order(mlx4_ib_init, SI_ORDER_MIDDLE); module_exit(mlx4_ib_cleanup); #undef MODULE_VERSION Modified: head/sys/ofed/drivers/net/mlx4/main.c == --- head/sys/ofed/drivers/net/mlx4/main.c Tue Oct 1 15:33:00 2013 (r255968) +++ head/sys/ofed/drivers/net/mlx4/main.c Tue Oct 1 15:36:51 2013 (r255969) @@ -2859,7 +2859,7 @@ static void __exit mlx4_cleanup(void) destroy_workqueue(mlx4_wq); } -module_init(mlx4_init); +module_init_order(mlx4_init, SI_ORDER_MIDDLE); module_exit(mlx4_cleanup); #undef MODULE_VERSION ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r255970 - head/sys/ofed/drivers/infiniband/hw/mlx4
Author: alfred Date: Tue Oct 1 15:38:29 2013 New Revision: 255970 URL: http://svnweb.freebsd.org/changeset/base/255970 Log: Fixed 'Couldn't Create QP' issue when running rc_pingpong, uc_pingpong, srq_pingpong IBverbs Removed refrences using 'ifdef __linux__' to qpg functions and related fields in struct ib_qp_init_attr. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/qp.c Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/qp.c == --- head/sys/ofed/drivers/infiniband/hw/mlx4/qp.c Tue Oct 1 15:36:51 2013(r255969) +++ head/sys/ofed/drivers/infiniband/hw/mlx4/qp.c Tue Oct 1 15:38:29 2013(r255970) @@ -611,6 +611,7 @@ static int qp_has_rq(struct ib_qp_init_a return !attr-srq; } +#ifdef __linux__ static int init_qpg_parent(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *pqp, struct ib_qp_init_attr *attr, int *qpn) { @@ -791,6 +792,7 @@ static void free_qpg_qpn(struct mlx4_ib_ break; } } +#endif static int alloc_qpn_common(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp, struct ib_qp_init_attr *attr, int *qpn) @@ -811,11 +813,15 @@ static int alloc_qpn_common(struct mlx4_ } break; case IB_QPG_PARENT: +#ifdef __linux__ err = init_qpg_parent(dev, qp, attr, qpn); +#endif break; case IB_QPG_CHILD_TX: case IB_QPG_CHILD_RX: +#ifdef __linux__ err = alloc_qpg_qpn(attr, qp, qpn); +#endif break; default: qp-qpg_type = IB_QPG_NONE; @@ -839,11 +845,15 @@ static void free_qpn_common(struct mlx4_ mlx4_qp_release_range(dev-dev, qpn, 1); break; case IB_QPG_PARENT: +#ifdef __linux__ free_qpg_parent(dev, qp); +#endif break; case IB_QPG_CHILD_TX: case IB_QPG_CHILD_RX: +#ifdef __linux__ free_qpg_qpn(qp, qpn); +#endif break; default: break; @@ -872,6 +882,10 @@ static int create_qp_common(struct mlx4_ struct mlx4_ib_qp *qp; enum mlx4_ib_qp_type qp_type = (enum mlx4_ib_qp_type) init_attr-qp_type; +#ifndef __linux__ +init_attr-qpg_type = IB_QPG_NONE; +#endif + /* When tunneling special qps, we use a plain UD qp */ if (sqpn) { if (mlx4_is_mfunc(dev-dev) @@ -1287,6 +1301,7 @@ static u32 get_sqp_num(struct mlx4_ib_de return dev-dev-caps.qp1_proxy[attr-port_num - 1]; } +#ifdef __linux__ static int check_qpg_attr(struct mlx4_ib_dev *dev, struct ib_qp_init_attr *attr) { @@ -1332,6 +1347,7 @@ static int check_qpg_attr(struct mlx4_ib } return 0; } +#endif #define RESERVED_FLAGS_MASK unsigned int)IB_QP_CREATE_RESERVED_END - 1) | IB_QP_CREATE_RESERVED_END) \ ~(IB_QP_CREATE_RESERVED_START - 1)) @@ -1390,9 +1406,11 @@ struct ib_qp *mlx4_ib_create_qp(struct i init_attr-qp_type IB_QPT_GSI))) return ERR_PTR(-EINVAL); +#ifdef __linux__ err = check_qpg_attr(to_mdev(device), init_attr); if (err) return ERR_PTR(err); +#endif switch (init_attr-qp_type) { case IB_QPT_XRC_TGT: ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r255972 - in head/sys/ofed: drivers/infiniband/core drivers/infiniband/hw/mlx4 include/rdma
Author: alfred Date: Tue Oct 1 15:42:38 2013 New Revision: 255972 URL: http://svnweb.freebsd.org/changeset/base/255972 Log: Enable ib_dev.mmap function Removed the ifdef linux from this function. Added stub function for contiguous pages to avoid compilation errors. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re Modified: head/sys/ofed/drivers/infiniband/core/umem.c head/sys/ofed/drivers/infiniband/hw/mlx4/main.c head/sys/ofed/include/rdma/ib_umem.h Modified: head/sys/ofed/drivers/infiniband/core/umem.c == --- head/sys/ofed/drivers/infiniband/core/umem.cTue Oct 1 15:40:27 2013(r255971) +++ head/sys/ofed/drivers/infiniband/core/umem.cTue Oct 1 15:42:38 2013(r255972) @@ -530,3 +530,46 @@ int ib_umem_page_count(struct ib_umem *u return n; } EXPORT_SYMBOL(ib_umem_page_count); + +/**/ +/* + * Stub functions for contiguous pages - + * We currently do not support this feature + */ +/**/ + +/** + * ib_cmem_release_contiguous_pages - release memory allocated by + * ib_cmem_alloc_contiguous_pages. + * @cmem: cmem struct to release + */ +void ib_cmem_release_contiguous_pages(struct ib_cmem *cmem) +{ +} +EXPORT_SYMBOL(ib_cmem_release_contiguous_pages); + +/** + * * ib_cmem_alloc_contiguous_pages - allocate contiguous pages + * * @context: userspace context to allocate memory for + * * @total_size: total required size for that allocation. + ** @page_size_order: order of one contiguous page. + * */ +struct ib_cmem *ib_cmem_alloc_contiguous_pages(struct ib_ucontext *context, +unsigned long total_size, + unsigned long page_size_order) +{ + return NULL; +} +EXPORT_SYMBOL(ib_cmem_alloc_contiguous_pages); + +/** + * * ib_cmem_map_contiguous_pages_to_vma - map contiguous pages into VMA + * * @ib_cmem: cmem structure returned by ib_cmem_alloc_contiguous_pages + ** @vma: VMA to inject pages into. + * */ +int ib_cmem_map_contiguous_pages_to_vma(struct ib_cmem *ib_cmem, +struct vm_area_struct *vma) +{ + return 0; +} +EXPORT_SYMBOL(ib_cmem_map_contiguous_pages_to_vma); Modified: head/sys/ofed/drivers/infiniband/hw/mlx4/main.c == --- head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 1 15:40:27 2013(r255971) +++ head/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 1 15:42:38 2013(r255972) @@ -726,6 +726,7 @@ full_search: addr = ALIGN(vma-vm_end, 1 page_size_order); } } +#endif static int mlx4_ib_mmap(struct ib_ucontext *context, struct vm_area_struct *vma) { @@ -780,7 +781,6 @@ static int mlx4_ib_mmap(struct ib_uconte return 0; } -#endif static struct ib_pd *mlx4_ib_alloc_pd(struct ib_device *ibdev, struct ib_ucontext *context, @@ -1984,8 +1984,8 @@ static void *mlx4_ib_add(struct mlx4_dev ibdev-ib_dev.modify_port = mlx4_ib_modify_port; ibdev-ib_dev.alloc_ucontext= mlx4_ib_alloc_ucontext; ibdev-ib_dev.dealloc_ucontext = mlx4_ib_dealloc_ucontext; -#ifdef __linux__ ibdev-ib_dev.mmap = mlx4_ib_mmap; +#ifdef __linux__ ibdev-ib_dev.get_unmapped_area = mlx4_ib_get_unmapped_area; #endif ibdev-ib_dev.alloc_pd = mlx4_ib_alloc_pd; Modified: head/sys/ofed/include/rdma/ib_umem.h == --- head/sys/ofed/include/rdma/ib_umem.hTue Oct 1 15:40:27 2013 (r255971) +++ head/sys/ofed/include/rdma/ib_umem.hTue Oct 1 15:42:38 2013 (r255972) @@ -57,6 +57,24 @@ struct ib_umem { unsigned long diff; }; +struct ib_cmem { + +struct ib_ucontext *context; +size_t length; +/* Link list of contiguous blocks being part of that cmem */ +struct list_head ib_cmem_block; + +/* Order of cmem block, 2^ block_order will equal number + of physical pages per block +*/ +unsigned longblock_order; +/* Refernce counter for that memory area + - When value became 0 pages will be returned to the kernel. +*/ +struct kref refcount; +}; + + struct ib_umem_chunk { struct list_headlist; int nents; @@ -70,4 +88,14 @@ struct ib_umem *ib_umem_get(struct ib_uc void ib_umem_release(struct ib_umem *umem); int ib_umem_page_count(struct ib_umem *umem); +int ib_cmem_map_contiguous_pages_to_vma(struct ib_cmem *ib_cmem, +struct
svn commit: r255973 - head/sys/ofed/drivers/infiniband/core
Author: alfred Date: Tue Oct 1 15:43:23 2013 New Revision: 255973 URL: http://svnweb.freebsd.org/changeset/base/255973 Log: Fixed kernel crash when running devinfo When calling to ib_uverbs_cleanup_ucontext, there is a call to mutex_lock of xrcd_table_mutex, which was not initialized. Added missing initialization for xrcd_table_mutex. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re Modified: head/sys/ofed/drivers/infiniband/core/device.c Modified: head/sys/ofed/drivers/infiniband/core/device.c == --- head/sys/ofed/drivers/infiniband/core/device.c Tue Oct 1 15:42:38 2013(r255972) +++ head/sys/ofed/drivers/infiniband/core/device.c Tue Oct 1 15:43:23 2013(r255973) @@ -296,6 +296,8 @@ int ib_register_device(struct ib_device INIT_LIST_HEAD(device-client_data_list); spin_lock_init(device-event_handler_lock); spin_lock_init(device-client_data_lock); + device-ib_uverbs_xrcd_table = RB_ROOT; + mutex_init(device-xrcd_table_mutex); ret = read_port_table_lengths(device); if (ret) { ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r255968 - head/sys/ofed/include/linux
Author: alfred Date: Tue Oct 1 15:33:00 2013 New Revision: 255968 URL: http://svnweb.freebsd.org/changeset/base/255968 Log: Fix mis-merge of upstream fix. We would accidentally make the string one byte too short. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re Modified: head/sys/ofed/include/linux/sysfs.h Modified: head/sys/ofed/include/linux/sysfs.h == --- head/sys/ofed/include/linux/sysfs.h Tue Oct 1 12:01:20 2013 (r255967) +++ head/sys/ofed/include/linux/sysfs.h Tue Oct 1 15:33:00 2013 (r255968) @@ -105,10 +105,6 @@ sysctl_handle_attr(SYSCTL_HANDLER_ARGS) /* Trim trailing newline. */ buf[len] = '\0'; } - - /* Trim trailing newline. */ - len--; - ((char*)buf)[len] = '\0'; } /* Leave one trailing byte to append a newline. */ ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r255932 - in head/sys: conf contrib/rdma dev/cxgb/ulp/iw_cxgb modules modules/ibcore modules/ipoib modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/ml...
Author: alfred Date: Sun Sep 29 00:35:03 2013 New Revision: 255932 URL: http://svnweb.freebsd.org/changeset/base/255932 Log: Update OFED to Linux 3.7 and update Mellanox drivers. Update the OFED Infiniband core to the version supplied in Linux version 3.7. The update to OFED is nearly all additional defines and functions with the exception of the addition of additional parameters to ib_register_device() and the reg_user_mr callback. In addition the ibcore (Infiniband core) and ipoib (IP over Infiniband) have both been made into completely loadable modules to facilitate testing of the OFED stack in FreeBSD. Finally the Mellanox Infiniband drivers are now updated to the latest version shipping with Linux 3.7. Submitted by: Mellanox FreeBSD driver team: Oded Shanoon (odeds mellanox.com), Meny Yossefi (menyy mellanox.com), Orit Moskovich (oritm mellanox.com) Approved by: re Added: head/sys/modules/ibcore/ head/sys/modules/ibcore/Makefile (contents, props changed) head/sys/modules/ipoib/ head/sys/modules/ipoib/Makefile (contents, props changed) head/sys/ofed/drivers/infiniband/hw/mlx4/alias_GUID.c (contents, props changed) head/sys/ofed/drivers/infiniband/hw/mlx4/cm.c (contents, props changed) head/sys/ofed/drivers/infiniband/hw/mlx4/mcg.c (contents, props changed) head/sys/ofed/drivers/infiniband/hw/mlx4/sysfs.c (contents, props changed) head/sys/ofed/drivers/net/mlx4/resource_tracker.c (contents, props changed) head/sys/ofed/drivers/net/mlx4/sys_tune.c (contents, props changed) head/sys/ofed/include/linux/atomic.h (contents, props changed) head/sys/ofed/include/linux/clocksource.h (contents, props changed) head/sys/ofed/include/rdma/ib_pma.h (contents, props changed) Modified: head/sys/conf/files head/sys/contrib/rdma/ib_umem.h head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c head/sys/modules/Makefile head/sys/modules/mlx4/Makefile head/sys/modules/mlx4ib/Makefile head/sys/ofed/drivers/infiniband/core/addr.c head/sys/ofed/drivers/infiniband/core/cma.c head/sys/ofed/drivers/infiniband/core/core_priv.h head/sys/ofed/drivers/infiniband/core/device.c head/sys/ofed/drivers/infiniband/core/sa_query.c head/sys/ofed/drivers/infiniband/core/sysfs.c head/sys/ofed/drivers/infiniband/core/uverbs_cmd.c head/sys/ofed/drivers/infiniband/core/uverbs_main.c head/sys/ofed/drivers/infiniband/core/verbs.c head/sys/ofed/drivers/infiniband/hw/mlx4/Kconfig head/sys/ofed/drivers/infiniband/hw/mlx4/Makefile head/sys/ofed/drivers/infiniband/hw/mlx4/ah.c head/sys/ofed/drivers/infiniband/hw/mlx4/cq.c head/sys/ofed/drivers/infiniband/hw/mlx4/mad.c head/sys/ofed/drivers/infiniband/hw/mlx4/main.c head/sys/ofed/drivers/infiniband/hw/mlx4/mlx4_ib.h head/sys/ofed/drivers/infiniband/hw/mlx4/mr.c head/sys/ofed/drivers/infiniband/hw/mlx4/qp.c head/sys/ofed/drivers/infiniband/hw/mlx4/srq.c head/sys/ofed/drivers/infiniband/hw/mlx4/user.h head/sys/ofed/drivers/infiniband/hw/mlx4/wc.c head/sys/ofed/drivers/infiniband/hw/mthca/mthca_cmd.c head/sys/ofed/drivers/infiniband/hw/mthca/mthca_main.c head/sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c head/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c head/sys/ofed/drivers/net/mlx4/Makefile head/sys/ofed/drivers/net/mlx4/alloc.c head/sys/ofed/drivers/net/mlx4/catas.c head/sys/ofed/drivers/net/mlx4/cmd.c head/sys/ofed/drivers/net/mlx4/cq.c head/sys/ofed/drivers/net/mlx4/en_cq.c head/sys/ofed/drivers/net/mlx4/en_main.c head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/en_port.c head/sys/ofed/drivers/net/mlx4/en_port.h head/sys/ofed/drivers/net/mlx4/en_rx.c head/sys/ofed/drivers/net/mlx4/en_tx.c head/sys/ofed/drivers/net/mlx4/eq.c head/sys/ofed/drivers/net/mlx4/fw.c head/sys/ofed/drivers/net/mlx4/fw.h head/sys/ofed/drivers/net/mlx4/icm.c head/sys/ofed/drivers/net/mlx4/icm.h head/sys/ofed/drivers/net/mlx4/intf.c head/sys/ofed/drivers/net/mlx4/main.c head/sys/ofed/drivers/net/mlx4/mcg.c head/sys/ofed/drivers/net/mlx4/mlx4.h head/sys/ofed/drivers/net/mlx4/mlx4_en.h head/sys/ofed/drivers/net/mlx4/mr.c head/sys/ofed/drivers/net/mlx4/pd.c head/sys/ofed/drivers/net/mlx4/port.c head/sys/ofed/drivers/net/mlx4/profile.c head/sys/ofed/drivers/net/mlx4/qp.c head/sys/ofed/drivers/net/mlx4/reset.c head/sys/ofed/drivers/net/mlx4/sense.c head/sys/ofed/drivers/net/mlx4/srq.c head/sys/ofed/include/asm/atomic.h head/sys/ofed/include/asm/byteorder.h head/sys/ofed/include/linux/bitops.h head/sys/ofed/include/linux/compat.h head/sys/ofed/include/linux/device.h head/sys/ofed/include/linux/dma-mapping.h head/sys/ofed/include/linux/gfp.h head/sys/ofed/include/linux/idr.h
svn commit: r254963 - head/sys/net
Author: alfred Date: Tue Aug 27 16:45:00 2013 New Revision: 254963 URL: http://svnweb.freebsd.org/changeset/base/254963 Log: Remove include opt_ofed.h since OFED is unifdef'd. Pointed out by: glebius Modified: head/sys/net/if_llatbl.h Modified: head/sys/net/if_llatbl.h == --- head/sys/net/if_llatbl.hTue Aug 27 16:30:50 2013(r254962) +++ head/sys/net/if_llatbl.hTue Aug 27 16:45:00 2013(r254963) @@ -30,8 +30,6 @@ __FBSDID($FreeBSD$); #ifndef_NET_IF_LLATBL_H_ #define_NET_IF_LLATBL_H_ -#include opt_ofed.h - #include sys/_rwlock.h #include netinet/in.h ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r254823 - head/sys/net
Thanks Gleb. Will do. -Alfred On 8/26/13 4:52 AM, Gleb Smirnoff wrote: On Sun, Aug 25, 2013 at 01:55:15AM +, Alfred Perlstein wrote: A Author: alfred A Date: Sun Aug 25 01:55:14 2013 A New Revision: 254823 A URL: http://svnweb.freebsd.org/changeset/base/254823 A A Log: A Remove the #ifdef OFED from the 20 byte mac in struct llentry. A A With this change it is now possible to build the entire infiniband A stack as modules and load it dynamically including IP over IB. A A Modified: A head/sys/net/if_llatbl.h A A Modified: head/sys/net/if_llatbl.h A == A --- head/sys/net/if_llatbl.h Sun Aug 25 00:34:44 2013(r254822) A +++ head/sys/net/if_llatbl.h Sun Aug 25 01:55:14 2013(r254823) A @@ -75,9 +75,7 @@ struct llentry { A union { A uint64_tmac_aligned; A uint16_tmac16[3]; A -#ifdef OFED A uint8_t mac8[20]; /* IB needs 20 bytes. */ A -#endif A } ll_addr; A A /* XXX af-private? */ #include opt_ofed.h should be removed from the file as well. ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r254823 - head/sys/net
Author: alfred Date: Sun Aug 25 01:55:14 2013 New Revision: 254823 URL: http://svnweb.freebsd.org/changeset/base/254823 Log: Remove the #ifdef OFED from the 20 byte mac in struct llentry. With this change it is now possible to build the entire infiniband stack as modules and load it dynamically including IP over IB. Modified: head/sys/net/if_llatbl.h Modified: head/sys/net/if_llatbl.h == --- head/sys/net/if_llatbl.hSun Aug 25 00:34:44 2013(r254822) +++ head/sys/net/if_llatbl.hSun Aug 25 01:55:14 2013(r254823) @@ -75,9 +75,7 @@ struct llentry { union { uint64_tmac_aligned; uint16_tmac16[3]; -#ifdef OFED uint8_t mac8[20]; /* IB needs 20 bytes. */ -#endif } ll_addr; /* XXX af-private? */ ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r254756 - head/sys/sys
Author: alfred Date: Sat Aug 24 00:30:32 2013 New Revision: 254756 URL: http://svnweb.freebsd.org/changeset/base/254756 Log: Grow some spares in struct vfsops. This should hopefully prevent ABI breakage on adding new vfsops in 10.x. Modified: head/sys/sys/mount.h Modified: head/sys/sys/mount.h == --- head/sys/sys/mount.hSat Aug 24 00:29:34 2013(r254755) +++ head/sys/sys/mount.hSat Aug 24 00:30:32 2013(r254756) @@ -628,6 +628,7 @@ struct vfsops { vfs_susp_clean_t*vfs_susp_clean; vfs_notify_lowervp_t*vfs_reclaim_lowervp; vfs_notify_lowervp_t*vfs_unlink_lowervp; + vfs_mount_t *vfs_spare[6]; /* spares for ABI compat */ }; vfs_statfs_t __vfs_statfs; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r254173 - head/usr.sbin/watchdogd
Author: alfred Date: Sat Aug 10 01:48:15 2013 New Revision: 254173 URL: http://svnweb.freebsd.org/changeset/base/254173 Log: Fix bug in r253719: fix command line watchdog disable. r253719 disallowed watchdog(8) from disabling the watchdog by breaking the ability to pass 0 as a timeout arg. Fix this. Modified: head/usr.sbin/watchdogd/watchdogd.c Modified: head/usr.sbin/watchdogd/watchdogd.c == --- head/usr.sbin/watchdogd/watchdogd.c Sat Aug 10 00:53:22 2013 (r254172) +++ head/usr.sbin/watchdogd/watchdogd.c Sat Aug 10 01:48:15 2013 (r254173) @@ -60,7 +60,8 @@ __FBSDID($FreeBSD$); #include getopt.h -static longfetchtimeout(int opt, const char *longopt, const char *myoptarg); +static longfetchtimeout(int opt, +const char *longopt, const char *myoptarg, int zero_ok); static voidparseargs(int, char *[]); static int seconds_to_pow2ns(int); static voidsighandler(int); @@ -219,7 +220,7 @@ parse_timeout_to_pow2ns(char opt, const if (!longopt) shortopt[1] = opt; - a = fetchtimeout(opt, longopt, myoptarg); + a = fetchtimeout(opt, longopt, myoptarg, 1); if (a == 0) rv = WD_TO_NEVER; @@ -487,7 +488,7 @@ usage(void) } static long -fetchtimeout(int opt, const char *longopt, const char *myoptarg) +fetchtimeout(int opt, const char *longopt, const char *myoptarg, int zero_ok) { const char *errstr; char *p; @@ -499,7 +500,7 @@ fetchtimeout(int opt, const char *longop rv = strtol(myoptarg, p, 0); if ((p != NULL *p != '\0') || errno != 0) errstr = is not a number; - if (rv = 0) + if (rv 0 || (!zero_ok rv == 0)) errstr = must be greater than zero; if (errstr) { if (longopt) @@ -721,7 +722,7 @@ parseargs(int argc, char *argv[]) break; #endif case 's': - nap = fetchtimeout(c, NULL, optarg); + nap = fetchtimeout(c, NULL, optarg, 0); break; case 'S': do_syslog = 0; @@ -734,7 +735,8 @@ parseargs(int argc, char *argv[]) timeout); break; case 'T': - carp_thresh_seconds = fetchtimeout(c, NULL, optarg); + carp_thresh_seconds = + fetchtimeout(c, NULL, optarg, 0); break; case 'w': do_timedog = 1; @@ -742,7 +744,7 @@ parseargs(int argc, char *argv[]) case 0: lopt = longopts[longindex].name; if (!strcmp(lopt, pretimeout)) { - pretimeout = fetchtimeout(0, lopt, optarg); + pretimeout = fetchtimeout(0, lopt, optarg, 0); } else if (!strcmp(lopt, pretimeout-action)) { pretimeout_act = timeout_act_str2int(lopt, optarg); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r253719 - in head: sys/conf sys/dev/watchdog sys/libkern sys/sys usr.sbin/watchdogd
On 7/30/13 4:24 AM, Ulrich Spörlein wrote: On Sat, 2013-07-27 at 20:47:02 +, Alfred Perlstein wrote: Author: alfred Date: Sat Jul 27 20:47:01 2013 New Revision: 253719 URL: http://svnweb.freebsd.org/changeset/base/253719 Log: Fix watchdog pretimeout. Alfred, this broken the build and hasn't been fixed for almost three days now. What's up with that? How was this change tested before commit? === usr.sbin/watchdogd (all) cc -O2 -pipe -std=gnu99 -Qunused-arguments -fstack-protector -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 -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wold-style-definition -Wmissing-variable-declarations -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -c /data/src/freebsd-head/usr.sbin/watchdogd/watchdogd.c /data/src/freebsd-head/usr.sbin/watchdogd/watchdogd.c:777:18: error: comparison of integers of different signs: 'u_int' (aka 'unsigned int') and 'time_t' (aka 'int') [-Werror,-Wsign-compare] if (pretimeout = ts.tv_sec) { ~~ ^ ~ 1 error generated. *** Error code 1 Yikes! What? I did test this a ton of times. My apologies to all. Let me see what I can do. -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r253719 - in head: sys/conf sys/dev/watchdog sys/libkern sys/sys usr.sbin/watchdogd
On 7/30/13 4:22 AM, Glen Barber wrote: On Sat, Jul 27, 2013 at 08:47:02PM +, Alfred Perlstein wrote: Author: alfred Date: Sat Jul 27 20:47:01 2013 New Revision: 253719 URL: http://svnweb.freebsd.org/changeset/base/253719 Log: Fix watchdog pretimeout. The original API calls for pow2ns, however the new APIs from Linux call for seconds. We need to be able to convert to/from 2^Nns to seconds in both userland and kernel to fix this and properly compare units. Added: head/sys/libkern/flsll.c (contents, props changed) Modified: head/sys/conf/files head/sys/dev/watchdog/watchdog.c head/sys/sys/libkern.h head/usr.sbin/watchdogd/watchdogd.c Modified: head/sys/conf/files == --- head/sys/conf/files Sat Jul 27 20:15:18 2013(r253718) +++ head/sys/conf/files Sat Jul 27 20:47:01 2013(r253719) @@ -2976,6 +2976,7 @@ libkern/arc4random.c standard libkern/bcd.c standard libkern/bsearch.c standard libkern/crc32.c standard +libkern/flsll.c standard libkern/fnmatch.c standard libkern/iconv.c optional libiconv libkern/iconv_converter_if.m optional libiconv Modified: head/sys/dev/watchdog/watchdog.c == --- head/sys/dev/watchdog/watchdog.cSat Jul 27 20:15:18 2013 (r253718) +++ head/sys/dev/watchdog/watchdog.cSat Jul 27 20:47:01 2013 (r253719) @@ -39,6 +39,7 @@ __FBSDID($FreeBSD$); #include sys/kernel.h #include sys/malloc.h #include sys/module.h +#include sys/sysctl.h #include sys/syslog.h #include sys/watchdog.h #include sys/bus.h @@ -60,10 +61,56 @@ static int wd_softtimeout_act = WD_SOFT_ static struct cdev *wd_dev; static volatile u_int wd_last_u;/* last timeout value set by kern_do_pat */ +static u_int wd_last_u_sysctl;/* last timeout value set by kern_do_pat */ +static u_int wd_last_u_sysctl_secs;/* wd_last_u in seconds */ + +SYSCTL_NODE(_hw, OID_AUTO, watchdog, CTLFLAG_RD, 0, Main watchdog device); +SYSCTL_UINT(_hw_watchdog, OID_AUTO, wd_last_u, CTLFLAG_RD, +wd_last_u_sysctl, 0, Watchdog last update time); +SYSCTL_UINT(_hw_watchdog, OID_AUTO, wd_last_u_secs, CTLFLAG_RD, +wd_last_u_sysctl_secs, 0, Watchdog last update time); static int wd_lastpat_valid = 0; static time_t wd_lastpat = 0; /* when the watchdog was last patted */ +static void +pow2ns_to_ts(int pow2ns, struct timespec *ts) +{ + uint64_t ns; + + ns = 1ULL pow2ns; + ts-tv_sec = ns / 10ULL; + ts-tv_nsec = ns % 10ULL; +} + +static int +pow2ns_to_ticks(int pow2ns) +{ + struct timeval tv; + struct timespec ts; + + pow2ns_to_ts(pow2ns, ts); + TIMESPEC_TO_TIMEVAL(tv, ts); + return (tvtohz(tv)); +} + +static int +seconds_to_pow2ns(int seconds) +{ + uint64_t power; + uint64_t ns; + uint64_t shifted; + + ns = ((uint64_t)seconds) * 10ULL; + power = flsll(ns); + shifted = 1ULL power; + if (shifted = ns) { + power++; + } + return (power); +} + + int wdog_kern_pat(u_int utim) { @@ -86,6 +133,8 @@ wdog_kern_pat(u_int utim) * This can be zero (to disable the watchdog) */ wd_last_u = (utim WD_INTERVAL); + wd_last_u_sysctl = wd_last_u; + wd_last_u_sysctl_secs = pow2ns_to_ticks(wd_last_u) / hz; } if ((utim WD_INTERVAL) == WD_TO_NEVER) { utim = 0; @@ -101,7 +150,7 @@ wdog_kern_pat(u_int utim) callout_stop(wd_softtimeo_handle); } else { (void) callout_reset(wd_softtimeo_handle, - hz*utim, wd_timeout_cb, soft); + pow2ns_to_ticks(utim), wd_timeout_cb, soft); } error = 0; } else { @@ -201,10 +250,13 @@ static int wd_set_pretimeout(int newtimeout, int disableiftoolong) { u_int utime; + struct timespec utime_ts; + int timeout_ticks; utime = wdog_kern_last_timeout(); + pow2ns_to_ts(utime, utime_ts); /* do not permit a pre-timeout = than the timeout. */ - if (newtimeout = utime) { + if (newtimeout = utime_ts.tv_sec) { /* * If 'disableiftoolong' then just fall through * so as to disable the pre-watchdog @@ -222,8 +274,22 @@ wd_set_pretimeout(int newtimeout, int di return 0; } + timeout_ticks = pow2ns_to_ticks(utime) - (hz*newtimeout); +#if 0 + printf(wd_set_pretimeout: + newtimeout: %d, + utime: %d - utime_ticks: %d, + hz*newtimeout: %d, + timeout_ticks: %d - sec: %d\n
svn commit: r253719 - in head: sys/conf sys/dev/watchdog sys/libkern sys/sys usr.sbin/watchdogd
Author: alfred Date: Sat Jul 27 20:47:01 2013 New Revision: 253719 URL: http://svnweb.freebsd.org/changeset/base/253719 Log: Fix watchdog pretimeout. The original API calls for pow2ns, however the new APIs from Linux call for seconds. We need to be able to convert to/from 2^Nns to seconds in both userland and kernel to fix this and properly compare units. Added: head/sys/libkern/flsll.c (contents, props changed) Modified: head/sys/conf/files head/sys/dev/watchdog/watchdog.c head/sys/sys/libkern.h head/usr.sbin/watchdogd/watchdogd.c Modified: head/sys/conf/files == --- head/sys/conf/files Sat Jul 27 20:15:18 2013(r253718) +++ head/sys/conf/files Sat Jul 27 20:47:01 2013(r253719) @@ -2976,6 +2976,7 @@ libkern/arc4random.c standard libkern/bcd.c standard libkern/bsearch.c standard libkern/crc32.cstandard +libkern/flsll.c standard libkern/fnmatch.c standard libkern/iconv.coptional libiconv libkern/iconv_converter_if.m optional libiconv Modified: head/sys/dev/watchdog/watchdog.c == --- head/sys/dev/watchdog/watchdog.cSat Jul 27 20:15:18 2013 (r253718) +++ head/sys/dev/watchdog/watchdog.cSat Jul 27 20:47:01 2013 (r253719) @@ -39,6 +39,7 @@ __FBSDID($FreeBSD$); #include sys/kernel.h #include sys/malloc.h #include sys/module.h +#include sys/sysctl.h #include sys/syslog.h #include sys/watchdog.h #include sys/bus.h @@ -60,10 +61,56 @@ static int wd_softtimeout_act = WD_SOFT_ static struct cdev *wd_dev; static volatile u_int wd_last_u;/* last timeout value set by kern_do_pat */ +static u_int wd_last_u_sysctl;/* last timeout value set by kern_do_pat */ +static u_int wd_last_u_sysctl_secs;/* wd_last_u in seconds */ + +SYSCTL_NODE(_hw, OID_AUTO, watchdog, CTLFLAG_RD, 0, Main watchdog device); +SYSCTL_UINT(_hw_watchdog, OID_AUTO, wd_last_u, CTLFLAG_RD, +wd_last_u_sysctl, 0, Watchdog last update time); +SYSCTL_UINT(_hw_watchdog, OID_AUTO, wd_last_u_secs, CTLFLAG_RD, +wd_last_u_sysctl_secs, 0, Watchdog last update time); static int wd_lastpat_valid = 0; static time_t wd_lastpat = 0; /* when the watchdog was last patted */ +static void +pow2ns_to_ts(int pow2ns, struct timespec *ts) +{ + uint64_t ns; + + ns = 1ULL pow2ns; + ts-tv_sec = ns / 10ULL; + ts-tv_nsec = ns % 10ULL; +} + +static int +pow2ns_to_ticks(int pow2ns) +{ + struct timeval tv; + struct timespec ts; + + pow2ns_to_ts(pow2ns, ts); + TIMESPEC_TO_TIMEVAL(tv, ts); + return (tvtohz(tv)); +} + +static int +seconds_to_pow2ns(int seconds) +{ + uint64_t power; + uint64_t ns; + uint64_t shifted; + + ns = ((uint64_t)seconds) * 10ULL; + power = flsll(ns); + shifted = 1ULL power; + if (shifted = ns) { + power++; + } + return (power); +} + + int wdog_kern_pat(u_int utim) { @@ -86,6 +133,8 @@ wdog_kern_pat(u_int utim) * This can be zero (to disable the watchdog) */ wd_last_u = (utim WD_INTERVAL); + wd_last_u_sysctl = wd_last_u; + wd_last_u_sysctl_secs = pow2ns_to_ticks(wd_last_u) / hz; } if ((utim WD_INTERVAL) == WD_TO_NEVER) { utim = 0; @@ -101,7 +150,7 @@ wdog_kern_pat(u_int utim) callout_stop(wd_softtimeo_handle); } else { (void) callout_reset(wd_softtimeo_handle, - hz*utim, wd_timeout_cb, soft); + pow2ns_to_ticks(utim), wd_timeout_cb, soft); } error = 0; } else { @@ -201,10 +250,13 @@ static int wd_set_pretimeout(int newtimeout, int disableiftoolong) { u_int utime; + struct timespec utime_ts; + int timeout_ticks; utime = wdog_kern_last_timeout(); + pow2ns_to_ts(utime, utime_ts); /* do not permit a pre-timeout = than the timeout. */ - if (newtimeout = utime) { + if (newtimeout = utime_ts.tv_sec) { /* * If 'disableiftoolong' then just fall through * so as to disable the pre-watchdog @@ -222,8 +274,22 @@ wd_set_pretimeout(int newtimeout, int di return 0; } + timeout_ticks = pow2ns_to_ticks(utime) - (hz*newtimeout); +#if 0 + printf(wd_set_pretimeout: + newtimeout: %d, + utime: %d - utime_ticks: %d, + hz*newtimeout: %d, + timeout_ticks: %d - sec: %d\n, + newtimeout, + utime, pow2ns_to_ticks(utime), + hz*newtimeout, + timeout_ticks, timeout_ticks / hz);
svn commit: r253723 - head/usr.sbin/watchdogd
Author: alfred Date: Sat Jul 27 22:23:32 2013 New Revision: 253723 URL: http://svnweb.freebsd.org/changeset/base/253723 Log: Provide some examples for watchdogd usage. Modified: head/usr.sbin/watchdogd/watchdogd.8 Modified: head/usr.sbin/watchdogd/watchdogd.8 == --- head/usr.sbin/watchdogd/watchdogd.8 Sat Jul 27 22:21:10 2013 (r253722) +++ head/usr.sbin/watchdogd/watchdogd.8 Sat Jul 27 22:23:32 2013 (r253723) @@ -27,7 +27,7 @@ .\ .\ $FreeBSD$ .\ -.Dd March 5, 2013 +.Dd July 27, 2013 .Dt WATCHDOGD 8 .Os .Sh NAME @@ -204,6 +204,81 @@ and the kernel .Xr log 4 device for .Xr syslog 8 . +.Sh EXAMPLES +.Ss Debugging watchdogd and/or your watchdog script. +.Pp +This is a useful recipe for debugging watchdogd and your watchdog +script. +.Pp +(Note that ^C works oddly because watchdogd calls system(3) so the +first ^C will terminate the sleep command.) +.Pp +.Pp +Explanation of options used: +.Bl -enum -offset indent -compact +.It +Set Debug on (--debug) +.It +Set the watchdog to trip at 30 seconds. (-t 30) +.It +Use of a softtimeout: +.Bl -enum -offset indent -compact -nested +.It +Use a softtimeout (don't arm the hardware watchdog) (--softtimeout) +.It +Set the softtimeout action to do both kernel printf(9) and log(9) when it trips. (--softtimeout-action log,printf) +.El +.It +Use of a pre-timeout: +.Bl -enum -offset indent -compact -nested +.It +Set a pre-timeout of 15 seconds (this will later trigger a panic/dump) (--pretimeout 15) +.It +Set the action to also kernel printf(9) and log(9) when it trips. (--pretimeout-action log,printf) +.El +.It +Use of a script: +.Bl -enum -offset indent -compact -nested +.It +Run sleep 60 as a shell command that acts as the watchdog (-e 'sleep 60') +.It +Warn us when the script takes longer than 1 second to run (-w) +.El +.El +.Bd -literal +watchdogd --debug -t 30 \\ + --softtimeout --softtimeout-action log,printf \\ + --pretimeout 15 --pretimeout-action log,printf \\ + -e 'sleep 60' -w +.Ed +.Ss Production use of example +.Bl -enum -offset indent -compact +.It +Set hard timeout to 120 seconds (-t 120) +.It +Set a panic to happen at 60 seconds (to trigger a +.Xr crash 8 +for dump analysis): +.Bl -enum -offset indent -compact -nested +.It +Use of pre-timeout (--pretimeout 60) +.It +Specify pre-timeout action (--pretimeout-action log,printf,panic ) +.El +.It +Use of a script: +.Bl -enum -offset indent -compact -nested +.It +Run your script (-e '/path/to/your/script 60') +.It +Log if your script takes a longer than 15 seconds to run time. (-w -T 15) +.El +.El +.Bd -literal +watchdogd -t 120 \\ + --pretimeout 60 --pretimeout-action log,printf,panic \\ + -e '/path/to/your/script 60' -w -T 15 +.Ed .Sh FILES .Bl -tag -width .Pa /var/run/watchdogd.pid -compact .It Pa /var/run/watchdogd.pid ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r253184 - stable/9/sys/kern
Author: alfred Date: Thu Jul 11 04:57:08 2013 New Revision: 253184 URL: http://svnweb.freebsd.org/changeset/base/253184 Log: Fix for lost software interrupts/cam lockup. MFC: 252683 Modified: stable/9/sys/kern/kern_intr.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_intr.c == --- stable/9/sys/kern/kern_intr.c Thu Jul 11 04:47:44 2013 (r253183) +++ stable/9/sys/kern/kern_intr.c Thu Jul 11 04:57:08 2013 (r253184) @@ -841,7 +841,7 @@ ok: * again and remove this handler if it has already passed * it on the list. */ - ie-ie_thread-it_need = 1; + atomic_store_rel_int(ie-ie_thread-it_need, 1); } else TAILQ_REMOVE(ie-ie_handlers, handler, ih_next); thread_unlock(ie-ie_thread-it_thread); @@ -912,7 +912,7 @@ intr_event_schedule_thread(struct intr_e * running. Then, lock the thread and see if we actually need to * put it on the runqueue. */ - it-it_need = 1; + atomic_store_rel_int(it-it_need, 1); thread_lock(td); if (TD_AWAITING_INTR(td)) { CTR3(KTR_INTR, %s: schedule pid %d (%s), __func__, p-p_pid, @@ -990,7 +990,7 @@ ok: * again and remove this handler if it has already passed * it on the list. */ - it-it_need = 1; + atomic_store_rel_int(it-it_need, 1); } else TAILQ_REMOVE(ie-ie_handlers, handler, ih_next); thread_unlock(it-it_thread); @@ -1066,7 +1066,7 @@ intr_event_schedule_thread(struct intr_e * running. Then, lock the thread and see if we actually need to * put it on the runqueue. */ - it-it_need = 1; + atomic_store_rel_int(it-it_need, 1); thread_lock(td); if (TD_AWAITING_INTR(td)) { CTR3(KTR_INTR, %s: schedule pid %d (%s), __func__, p-p_pid, @@ -1256,7 +1256,7 @@ intr_event_execute_handlers(struct proc * interrupt threads always invoke all of their handlers. */ if (ie-ie_flags IE_SOFT) { - if (!ih-ih_need) + if (atomic_load_acq_int(ih-ih_need) == 0) continue; else atomic_store_rel_int(ih-ih_need, 0); @@ -1358,7 +1358,7 @@ ithread_loop(void *arg) * we are running, it will set it_need to note that we * should make another pass. */ - while (ithd-it_need) { + while (atomic_load_acq_int(ithd-it_need) != 0) { /* * This might need a full read and write barrier * to make sure that this write posts before any @@ -1377,7 +1377,8 @@ ithread_loop(void *arg) * set again, so we have to check it again. */ thread_lock(td); - if (!ithd-it_need !(ithd-it_flags (IT_DEAD | IT_WAIT))) { + if ((atomic_load_acq_int(ithd-it_need) == 0) + !(ithd-it_flags (IT_DEAD | IT_WAIT))) { TD_SET_IWAIT(td); ie-ie_count = 0; mi_switch(SW_VOL | SWT_IWAIT, NULL); @@ -1538,7 +1539,7 @@ ithread_loop(void *arg) * we are running, it will set it_need to note that we * should make another pass. */ - while (ithd-it_need) { + while (atomic_load_acq_int(ithd-it_need) != 0) { /* * This might need a full read and write barrier * to make sure that this write posts before any @@ -1560,7 +1561,8 @@ ithread_loop(void *arg) * set again, so we have to check it again. */ thread_lock(td); - if (!ithd-it_need !(ithd-it_flags (IT_DEAD | IT_WAIT))) { + if ((atomic_load_acq_int(ithd-it_need) == 0) + !(ithd-it_flags (IT_DEAD | IT_WAIT))) { TD_SET_IWAIT(td); ie-ie_count = 0; mi_switch(SW_VOL | SWT_IWAIT, NULL); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r253002 - head
On 7/8/13 4:24 PM, Garrett Cooper wrote: On Mon, Jul 8, 2013 at 2:13 PM, John Baldwin j...@freebsd.org wrote: On Monday, July 08, 2013 2:23:31 am Garrett Cooper wrote: On Sun, Jul 7, 2013 at 7:25 PM, Garrett Cooper yaneurab...@gmail.com wrote: On Jul 7, 2013, at 2:15 PM, Alfred Perlstein alf...@freebsd.org wrote: On 7/7/13 2:01 PM, Garrett Cooper wrote: Why the magic number 12? Numbers higher seem to result in worse performance as reported by some members of my team. The suggestion is good in spirit, but this doesn't justify the reasoning for this recommendation for all cases. Please revert this change and add a doc page or notes to the dev handbook discussing what the empirical process and results were for determining this value so people can come up with their own values that work best with their hardware and software config. This recommendation is prone to bitrot like some of the recommendations in tuning(7). Misinformation is sometimes more harmful than no information. I spoke with Alfred over the phone and did some more careful thought about this and I'm rescinding this request. Alfred did a good job at documenting how JFLAG works (it was previously undocumented). My concern over -j12 was performance related, and after giving things more careful thought it actually makes sense why -j12 was chosen because Westmere and newer processors have issues with NUMA and cache locality between multiple processor packages as we've seen non-empirically and empirically at Isilon with FreeBSD 7 and 10 (it's a known issue that jeffr@ and jhb@ are aware of). I'll come up with a concise patch that does what Alfred was trying to achieve and have Alfred review it. Thanks (and thank you Alfred for the contribution!!!)! Westmere is fine, it's post-Westmere that is more troublesome. Even the 6-core Westmeres (I'm being completely dumb here as you and Jeff know a lot more about the NUMA issue than I do as I just caught the tail end of the conversation at BSDCan)? I'm asking because they (iX) are using build.ix as the primary build machine and it has 2 Westmere dies with (IIRC -- please correct me if I'm wrong Alfred/Xin/etc) 6 cores each and are SMT enabled. It also has a boatload of RAM and disks hooked up to an mfi(4) controller (which could be a contributing factor in the performance degradation issue). I think the comment is not super useful, but don't object enough to want it to be removed. I always use 'make tinderbox' instead of 'make universe' though as I want build failures to be obvious. For the described use case of checking if kernels build, 'tinderbox' certainly seems to be the more appropriate target. Changing it from universe to tinderbox seems like a better idea -- I'll put a short note in my proposed patch for that. Thanks! -Garrett Just to clarify, the passing of jflag in the comments was there because it seems like most of the targets default to -j1 which out of the box is somewhat ludicrous these days. It was only a guide such that someone who knows what -j does would be like oh that's absurd, I know a better value rather than just being oblivious to it (like me) or stupidly assume that some level of auto-tuning was done (also like me) and wind up wondering why make universe is taking as long as an actual real live universe to build. ;) -Alfred ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r253002 - head
Author: alfred Date: Sun Jul 7 20:39:11 2013 New Revision: 253002 URL: http://svnweb.freebsd.org/changeset/base/253002 Log: Document tip on how to build all kernels quickly. Modified: head/Makefile Modified: head/Makefile == --- head/Makefile Sun Jul 7 19:58:14 2013(r253001) +++ head/Makefile Sun Jul 7 20:39:11 2013(r253002) @@ -32,6 +32,12 @@ # targets - Print a list of supported TARGET/TARGET_ARCH pairs # for world and kernel targets. # toolchains - Build a toolchain for all world and kernel targets. +# +# quick way to test all kernel builds: +# _jflag=`sysctl -n hw.ncpu` +# _jflag=$(($_jflag * 2)) +# [ $_jflag -gt 12 ] _jflag=12 +# make universe -DMAKE_JUST_KERNELS JFLAG=${jflag} # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r253003 - head
Author: alfred Date: Sun Jul 7 20:44:04 2013 New Revision: 253003 URL: http://svnweb.freebsd.org/changeset/base/253003 Log: Correct typo specifying jflags. Modified: head/Makefile Modified: head/Makefile == --- head/Makefile Sun Jul 7 20:39:11 2013(r253002) +++ head/Makefile Sun Jul 7 20:44:04 2013(r253003) @@ -37,7 +37,7 @@ # _jflag=`sysctl -n hw.ncpu` # _jflag=$(($_jflag * 2)) # [ $_jflag -gt 12 ] _jflag=12 -# make universe -DMAKE_JUST_KERNELS JFLAG=${jflag} +# make universe -DMAKE_JUST_KERNELS JFLAG=-j${_jflag} # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r253002 - head
On 7/7/13 2:01 PM, Garrett Cooper wrote: Why the magic number 12? Numbers higher seem to result in worse performance as reported by some members of my team. -Alfred Sent from my iPhone On Jul 7, 2013, at 1:39 PM, Alfred Perlstein alf...@freebsd.org wrote: Author: alfred Date: Sun Jul 7 20:39:11 2013 New Revision: 253002 URL: http://svnweb.freebsd.org/changeset/base/253002 Log: Document tip on how to build all kernels quickly. Modified: head/Makefile Modified: head/Makefile == --- head/MakefileSun Jul 7 19:58:14 2013(r253001) +++ head/MakefileSun Jul 7 20:39:11 2013(r253002) @@ -32,6 +32,12 @@ # targets - Print a list of supported TARGET/TARGET_ARCH pairs # for world and kernel targets. # toolchains - Build a toolchain for all world and kernel targets. +# +# quick way to test all kernel builds: +#_jflag=`sysctl -n hw.ncpu` +#_jflag=$(($_jflag * 2)) +#[ $_jflag -gt 12 ] _jflag=12 +#make universe -DMAKE_JUST_KERNELS JFLAG=${jflag} # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the ___ svn-src-h...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r253007 - in head/sys: kern net80211 sys
Author: alfred Date: Sun Jul 7 21:39:37 2013 New Revision: 253007 URL: http://svnweb.freebsd.org/changeset/base/253007 Log: Make kassert_printf use __printflike. Fix associated errors/warnings while I'm here. Requested by: avg Modified: head/sys/kern/subr_witness.c head/sys/kern/vfs_bio.c head/sys/net80211/ieee80211_output.c head/sys/sys/systm.h Modified: head/sys/kern/subr_witness.c == --- head/sys/kern/subr_witness.cSun Jul 7 21:23:58 2013 (r253006) +++ head/sys/kern/subr_witness.cSun Jul 7 21:39:37 2013 (r253007) @@ -1138,12 +1138,16 @@ witness_checkorder(struct lock_object *l iclass = LOCK_CLASS(interlock); lock1 = find_instance(lock_list, interlock); if (lock1 == NULL) - kassert_panic(interlock (%s) %s not locked @ %s:%d, + kassert_panic( + interlock (%s) %s not locked while locking +%s @ %s:%d, iclass-lc_name, interlock-lo_name, flags LOP_EXCLUSIVE ? exclusive : shared, fixup_filename(file), line); else if ((lock1-li_flags LI_RECURSEMASK) != 0) - kassert_panic(interlock (%s) %s recursed @ %s:%d, + kassert_panic( + interlock (%s) %s recursed while locking %s +@ %s:%d, iclass-lc_name, interlock-lo_name, flags LOP_EXCLUSIVE ? exclusive : shared, fixup_filename(file), line); Modified: head/sys/kern/vfs_bio.c == --- head/sys/kern/vfs_bio.c Sun Jul 7 21:23:58 2013(r253006) +++ head/sys/kern/vfs_bio.c Sun Jul 7 21:39:37 2013(r253007) @@ -4485,8 +4485,8 @@ bdata2bio(struct buf *bp, struct bio *bi bip-bio_flags |= BIO_UNMAPPED; KASSERT(round_page(bip-bio_ma_offset + bip-bio_length) / PAGE_SIZE == bp-b_npages, - (Buffer %p too short: %d %d %d, bp, bip-bio_ma_offset, - bip-bio_length, bip-bio_ma_n)); + (Buffer %p too short: %d %lld %d, bp, bip-bio_ma_offset, + (long long)bip-bio_length, bip-bio_ma_n)); } else { bip-bio_data = bp-b_data; bip-bio_ma = NULL; Modified: head/sys/net80211/ieee80211_output.c == --- head/sys/net80211/ieee80211_output.cSun Jul 7 21:23:58 2013 (r253006) +++ head/sys/net80211/ieee80211_output.cSun Jul 7 21:39:37 2013 (r253007) @@ -1022,7 +1022,7 @@ ieee80211_mbuf_adjust(struct ieee80211va return NULL; } KASSERT(needed_space = MHLEN, - (not enough room, need %u got %zu\n, needed_space, MHLEN)); + (not enough room, need %u got %d\n, needed_space, MHLEN)); /* * Setup new mbuf to have leading space to prepend the * 802.11 header and any crypto header bits that are Modified: head/sys/sys/systm.h == --- head/sys/sys/systm.hSun Jul 7 21:23:58 2013(r253006) +++ head/sys/sys/systm.hSun Jul 7 21:39:37 2013(r253007) @@ -74,7 +74,7 @@ extern int vm_guest; /* Running as virt enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN }; #if defined(WITNESS) || defined(INVARIANTS) -void kassert_panic(const char *fmt, ...); +void kassert_panic(const char *fmt, ...) __printflike(1, 2); #endif #ifdef INVARIANTS /* The option is always available */ ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org