aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
Commit message (Collapse)AuthorAgeFilesLines
* Fix Machine Check Exception on Page Size Change.Gordon Tetlow2019-11-121-0/+7
| | | | | | | | | Approved by: so Security: FreeBSD-SA-19:25.mcepsc Security: CVE-2018-12207 Notes: svn path=/releng/12.0/; revision=354653
* Fix kernel memory disclosure from /dev/midistat.Gordon Tetlow2019-08-201-72/+58
| | | | | | | | | Approved by: so Security: FreeBSD-SA-19:23.midi Security: CVE-2019-5612 Notes: svn path=/releng/12.0/; revision=351260
* Mitigations for Microarchitectural Data Sampling.Gordon Tetlow2019-05-141-0/+1
| | | | | | | | | | | | Approved by: so Security: FreeBSD-SA-19:07.mds Security: CVE-2018-12126 Security: CVE-2018-12127 Security: CVE-2018-12130 Security: CVE-2019-11091 Notes: svn path=/releng/12.0/; revision=347594
* MFC: r340495, MF12: r340739Marius Strobl2018-11-211-8/+14
| | | | | | | | | | | | | | | | - Restore setting the clock for devices which support the default/legacy transfer mode only (lost with r321385). [1] - Similarly, don't try to set the power class on MMC devices that comply to version 4.0 of the system specification but are operated in default/ legacy transfer or 1-bit bus mode as no power class is specified for these cases. Trying to set a power class nevertheless resulted in an - albeit harmless - error message. PR: 231713 [1] Approved by: re (gjb) Notes: svn path=/releng/12.0/; revision=340743
* MFC r340108 and r340149Mateusz Guzik2018-11-213-11/+195
| | | | | | | | | | hwpmc: limit wait for user callchain collection to 1 tick Add aditional counter descriptions to AMD 0x17 Approved by: re (rgrimes) Notes: svn path=/releng/12.0/; revision=340719
* MFS r340643:Brooks Davis2018-11-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MFC r340489-r340490 r340489: Fix freebsd32 support for PCIOCGETCONF. This fixes regresssions in pciconf -l and some ports as reported on freebsd-current: https://lists.freebsd.org/pipermail/freebsd-current/2018-November/072144.html Reported by: jbeich Reviewed by: kib (also proposed an idential patch) Tested by: jbeich Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D18011 r340490: Fix stray tab. Reported by: jbeich MFC with: r340489 Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D18011 Approved by: re (gjb) Notes: svn path=/releng/12.0/; revision=340657
* MFC :r340436Vincenzo Maffione2018-11-153-241/+357
| | | | | | | | | | | | | | | | | | | | | | | | | | | | vtnet: fix netmap support netmap(4) support for vtnet(4) was incomplete and had multiple bugs. This commit fixes those bugs to bring netmap on vtnet in a functional state. Changelist: - handle errors returned by virtqueue_enqueue() properly (they were previously ignored) - make sure netmap XOR rest of the kernel access each virtqueue. - compute the number of netmap slots for TX and RX separately, according to whether indirect descriptors are used or not for a given virtqueue. - make sure sglist are freed according to their type (mbufs or netmap buffers) - add support for mulitiqueue and netmap host (aka sw) rings. - intercept VQ interrupts directly instead of intercepting them in txq_eof and rxq_eof. This simplifies the code and makes it easier to make sure taskqueues are not running for a VQ while it is in netmap mode. - implement vntet_netmap_config() to cope with changes in the number of queues. Sponsored by: Sunny Valley Networks Differential Revision: https://reviews.freebsd.org/D17916 Approved by: re (gjb) Notes: svn path=/stable/12/; revision=340461
* MFC r340426 (by cem)Eric van Gyzen2018-11-141-4/+13
| | | | | | | | | | | | | | | | | | | | amdtemp(4): Fix temperature reporting on AMD 2990WX Update the AMD family 17h temperature reporting based on AMD Tech Doc 56255 OSRR, section 4.2.1. For CPUS w/CUR_TEMP_RANGE_SEL set, scale the reported temperature into the range -49..206; i.e., subtract 49°C. Submitted by: gallatin@ Reported by: bcran@ Reviewed by: cem (long ago) Approved by: re (kib) Relnotes: yes Differential Revision: https://reviews.freebsd.org/D16855 Notes: svn path=/stable/12/; revision=340447
* MFC r340425 (by cem)Eric van Gyzen2018-11-142-8/+23
| | | | | | | | | | | | | | | | | | | amdsmn(4)/amdtemp(4): Attach to Ryzen 2 hostbridges As reported, tested, and patch supplied by Johannes. There may be future work to do to support multiple sensors, but for now, any sensor at all is a strict improvement for Ryzen 2 systems. PR: 228480 Submitted by: Johannes Lundberg <johalun0 AT gmail.com> (earlier version) Reported by: deischen@, Johannes, and numerous others Early MFC approved by: cem Approved by: re (kib) Relnotes: yes Notes: svn path=/stable/12/; revision=340446
* MFC r339927:Mark Johnston2018-11-132-41/+29
| | | | | | | | | Add malloc_domainset(9) and _domainset variants to other allocator KPIs. Approved by: re (gjb) Notes: svn path=/stable/12/; revision=340401
* MFC r340310:Stephen Hurd2018-11-122-0/+12
| | | | | | | | | | | | | | | | | | | Fix first-packet completion The first packet after the ring is initialized was never completed as isc_txd_credits_update() would not include it in the count of completed packets. This caused netmap to never complete a batch. See PR 233022 for more details. PR: 233022 Reported by: lev Reviewed by: lev Approved by: re (kib) Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D17931 Notes: svn path=/stable/12/; revision=340366
* MFC r340248:Hans Petter Selasky2018-11-111-1/+11
| | | | | | | | | | | Don't read the USB audio sync endpoint when we don't use it to save isochronous bandwidth. Approved by: re (kib) Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=340350
* MFC r340212:Hans Petter Selasky2018-11-101-0/+13
| | | | | | | | | | | | Sometimes the complete split packet may be queued too early and the transaction translator will return a NAK. Ignore this message and retry the complete split instead. Approved by: re (kib) Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=340315
* MFC r340256: ixl/iavf(4): Fix TSO offloads when TXCSUM is disabledEric Joyner2018-11-084-3/+5
| | | | | | | Approved by: re (gjb@) Notes: svn path=/stable/12/; revision=340263
* MFC r339591: ichwd: add support for TCO watchdog timer in Lewisburg PCH (C620)Andriy Gapon2018-11-062-16/+153
| | | | | | | | | | PR: 222079 Approved by: re (rgrimes) Relnotes: maybe Sponsored by: Panzura Notes: svn path=/stable/12/; revision=340190
* MFC r339585:Wei Hu2018-11-011-1/+2
| | | | | | | | | | | | | | Do not drop UDP traffic when TXCSUM_IPV6 flag is on. PR: 231797 Submitted by: whu Reviewed by: dexuan Obtained from: Kevin Morse Approved by: re (rgrimes) Sponsored by: Microsoft Notes: svn path=/stable/12/; revision=339984
* MFhead r339643:Gleb Smirnoff2018-10-311-1/+1
| | | | | | | | | | Fix ipw_start(), where logic was reverted in r287197. PR 232554 Approved by: re (kib) Notes: svn path=/stable/12/; revision=339975
* MFC r339639:Vincenzo Maffione2018-10-3010-2327/+2740
| | | | | | | | | | | | | | | | | | | | netmap: align codebase to the current upstream (sha 8374e1a7e6941) Changelist: - Move large parts of VALE code to a new file and header netmap_bdg.[ch]. This is useful to reuse the code within upcoming projects. - Improvements and bug fixes to pipes and monitors. - Introduce nm_os_onattach(), nm_os_onenter() and nm_os_onexit() to handle differences between FreeBSD and Linux. - Introduce some new helper functions to handle more host rings and fake rings (netmap_all_rings(), netmap_real_rings(), ...) - Added new sysctl to enable/disable hw checksum in emulated netmap mode. - nm_inject: add support for NS_MOREFRAG Approved by: re (gjb) Notes: svn path=/stable/12/; revision=339906
* MFC r339626:Navdeep Parhar2018-10-301-12/+33
| | | | | | | | | | | | | | | cxgbe(4): Use automatic cidx updates with ofld and ctrl queues. The bits that explicitly request cidx updates do not work reliably with all possible WRs that can be sent over the queue. The F_FW_WR_EQUIQ requests that still remain may also have to be replaced with explicit credit flush WRs in the future. Approved by: re@ (rgrimes@) Sponsored by: Chelsio Communications Notes: svn path=/stable/12/; revision=339905
* MFC r339587:Hans Petter Selasky2018-10-291-36/+182
| | | | | | | | | | | | | | | | Added support for formula-based arbitrary baud rates, in contrast to the current fixed values, which enables use of rates above 1 Mbps. Improved the detection of HXD chips, and the status flag handling as well. Submitted by: Gabor Simon <gabor.simon75@gmail.com> PR: 225932 Approved by: re (kib) Differential revision: https://reviews.freebsd.org/D16639 Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=339851
* MFC r339703:Brooks Davis2018-10-2518-0/+39
| | | | | | | | | | | | | | | | | | | Deprecate a number of less used 10 and 10/100 Ethernet devices. The current deprecated list is: ae, bm, cs, de, dme, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb, xe The list was defined as part of FCP-0101. Per the FCP, devices may be removed from the deprecation list if enough users are found or they are converted to iflib. FCP: https://github.com/freebsd/fcp/blob/master/fcp-0101.md Approved by: re (gjb) Reviewed by: rgrimes Differential Revision: https://reviews.freebsd.org/D17654 Notes: svn path=/stable/12/; revision=339735
* MFC r339582:Hans Petter Selasky2018-10-251-2/+15
| | | | | | | | | | | | Drop sequencer mutex around uiomove() and make sure we don't move more bytes than is available, else a panic might happen. Found by: Peter Holm <peter@holm.cc> Approved by: re (rgrimes) Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=339719
* MFC r339584:Slava Shwartsman2018-10-252-0/+7
| | | | | | | | | | | | | | mlx5: Notify user that the ConnectX-6 shutdown its port due to power limitation If power exceed the slot limit, or slot limit is unknown the ConnectX-6 firmware will shutdown its port. Inform the user via debug message. Approved by: re(rgrimes), hselasky (mentor), kib (mentor) Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=339711
* MFC r339581:Hans Petter Selasky2018-10-251-1/+1
| | | | | | | | | | | Fix off-by-one which can lead to panics. Found by: Peter Holm <peter@holm.cc> Approved by: re (kib) Sponsored by: Mellanox Technologies Notes: svn path=/stable/12/; revision=339708
* MFC 339475: improve drm messaging in driver and UPDATINGWarner Losh2018-10-231-2/+2
| | | | | | | Approved by: re@ (rgrimes) Notes: svn path=/stable/12/; revision=339633
* Add initial driver for ACPI NFIT-enumerated NVDIMMs.Konstantin Belousov2018-10-163-0/+1146
| | | | | | | | | | | | | | | | | | | Driver enumerates NVDIMMs. Besides, for each found System Physical Address (SPA) range, spaN geom provider is created, which allows formatting and mounting the region as the normal volume. Also, /dev/nvdimm_spaN node is created, which can be read/written/mapped by userspace, the mapping is zero-copy. No support for block access methods implemented, labels are not parsed. No management interfaces are provided. Tested by: Intel, NetApp Sponsored by: The FreeBSD Foundation Approved by: re (gjb) MFC after: 2 weeks Notes: svn path=/head/; revision=339391
* Fix for reception of large full speed isochronous frames via the transactionHans Petter Selasky2018-10-161-7/+22
| | | | | | | | | | | | | | | translator, when using the DWC OTG USB controller driver. Make sure to re-try getting the complete split packets until a DATA0 packet is received. Larger isochronous frames may be split into multiple MDATA packets terminated by a single DATA0 packet. PR: 230434 MFC after: 3 days Approved by: re (gjb) Sponsored by: Mellanox Technologies Notes: svn path=/head/; revision=339388
* Add support for Error RecoveryDavid C Somayajulu2018-10-153-35/+372
| | | | | | | | | Submitted by:Vaishali.Kulkarni@cavium.com Approved by:re(kib) MFC after:5 days Notes: svn path=/head/; revision=339366
* iavf(4): Finish rename/rebrand internallyEric Joyner2018-10-156-614/+614
| | | | | | | | | | | | | | | Rename functions and variables from ixlv to iavf to match the user-facing name change. There shouldn't be any functional changes with this change, but this may help with browsing the source code and reducing diffs in the future. Submitted by: kbowling@ Reviewed by: erj@, sbruno@ Approved by: re (gjb@) Differential Revision: https://reviews.freebsd.org/D17544 Notes: svn path=/head/; revision=339362
* em/igb/ix(4): Port two Tx/Rx fixes made to ixl in r339338Eric Joyner2018-10-143-49/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix assert/panic on receive when Jumbo Frames are enabled. From the commit I made to ixl: "It turns out that *_isc_rxd_available is supposed to return how many packets are available to be cleaned on the rx ring. This patch removes a section of code where if the budget argument is 1, the function would return one if there was a descriptor available, not necessarily a packet. This is okay in regular mtu 1500 traffic since the max frame size is less than the configured receive buffer size (2048), but this doesn't work when received packets can span more than one descriptor, as is the case when the mtu is 9000 and the receive buffer size is 4096." - Fix possible Tx hang because *_isc_txd_credits_update returns incorrect result From the commit by Krzysztof Galazka to ixl: "Function isc_txd_update_credits called with clear set to false should return 1 if there are TX descriptors already handled by HW. It was always returning 0 causing troubles with UDP TX traffic." PR: 231659 Reported by: lev@ Approved by: re (gjb@) Sponsored by: Intel Corporation Notes: svn path=/head/; revision=339354
* cxgbe(4): Fix a divide-by-zero that occurs when hw.cxgbe.toecaps_allowedNavdeep Parhar2018-10-131-9/+10
| | | | | | | | | | is set to 0 with a kernel that has both TCP_OFFLOAD and RATELIMIT. Approved by: re@ (gjb@) Sponsored by: Chelsio Communications Notes: svn path=/head/; revision=339342
* ixl/iavf(4): Change ixlv to iavf and update it to use iflib(9)Eric Joyner2018-10-1216-3458/+2029
| | | | | | | | | | | | | | | | | | | | | | | | | Finishes the conversion of the 40Gb Intel Ethernet drivers to iflib(9) for FreeBSD 12.0, and fixes numerous bugs in both ixl(4) and iavf(4). This commit also re-adds the VF driver to GENERIC since it now compiles and functions. The VF driver name was changed from ixlv(4) to iavf(4) because the VF driver is now intended to be used with future products, not just with Fortville/Fort Park VFs. A man page update that documents these drivers is forthcoming in a separate commit. Reviewed by: sbruno@, kbowling@ Tested by: jeffrey.e.pieper@intel.com Approved by: re (gjb@) Relnotes: yes Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D16429 Notes: svn path=/head/; revision=339338
* Add support for the UART device found in lowRISC system-on-a-chip.Ruslan Bukin2018-10-122-0/+459
| | | | | | | | | | | | The only source of documentation for this device is verilog, so driver is minimalistic. Reviewed by: Dr Jonathan Kimmitt <jrrk2@cam.ac.uk> Approved by: re (kib) Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=339330
* Fix PNP entries for if_ix and if_ixv properly using the IFLIB_PNP_INFO()Yuri Pankov2018-10-112-5/+2
| | | | | | | | | | | macro. Reviewed by: imp, sbruno Approved by: re (gjb), kib (mentor) Differential Revision: https://reviews.freebsd.org/D17473 Notes: svn path=/head/; revision=339319
* Update Armada 38x UART device tree bindingMarcin Wojtas2018-10-101-0/+1
| | | | | | | | | | | | | | Recent changes in Linux updated Marvell Armada 38x UART compatible string. As a result the FreeBSD driver (uart_dev_snps) does not probe. This commit fixes the situation, however not applying any functional modification to the driver methods. Approved by: re (kib) Obtained from: Semihalf Notes: svn path=/head/; revision=339280
* Use mbuf defines to construct csum offload masks rather than literalsStephen Hurd2018-10-091-2/+5
| | | | | | | | | | Reviewed by: erj Approved by: re (rgrimes) Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D17442 Notes: svn path=/head/; revision=339267
* Add missing steering rules for virtual function, VF, in mlx4en(4) driver.Hans Petter Selasky2018-10-081-27/+37
| | | | | | | | | | | | | When acting as a VF it is required to add steering rules for all unicast addresses. Even if promiscious mode is selected. Else incoming data packets will be dropped. MFC after: 3 days Approved by: re (gjb) Sponsored by: Mellanox Technologies Notes: svn path=/head/; revision=339235
* em/igb: Do not print link state messagesEric van Gyzen2018-10-081-2/+0
| | | | | | | | | | | | | These messages are totally redundant with the iflib messages. They're also not very useful, since they don't include the interface name. Discussed with: shurd Approved by: re (rgrimes) Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=339225
* Fix igb corrupting checksums with BPF and VLANStephen Hurd2018-10-051-9/+9
| | | | | | | | | | | | | | | | | | | | | | When using a vlan with igb and the vlanhwcsum option, any mbufs which already had the TCP, UDP, or SCTP checksum calculated and therefore don't have the CSUM_[IP|IP6]_[TCP|UDP|SCTP] bits set in the csum_flags field would have the L4 checksum corrupted by the hardware. This was caused by the driver setting E1000_TXD_POPTS_TXSM any time a checksum bit was set OR a vlan tag was present. The patched driver only sets E1000_TXD_POPTS_TXSM when an offload is requested. PR: 231416 Reported by: pi Approved by: re (gjb) Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D17404 Notes: svn path=/head/; revision=339207
* hwpmc: Refactor sample ring buffer handling to fix racesMatt Macy2018-10-052-127/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor sample ring buffer ring handling to make it more robust to long running callchain collection handling r338112 introduced a (now fixed) regression that exposed a number of race conditions within the management of the sample buffers. This simplifies the handling and moves the decision to overwrite a callchain sample that has taken too long out of the NMI in to the hardlock handler. With this change the problem no longer shows up as a ring corruption but as the code spending all of its time in callchain collection. - Makes the producer / consumer index incrementing monotonic, making it easier (for me at least) to reason about. - Moves the decision to overwrite a sample from NMI context to interrupt context where we can enforce serialization. - Puts a time limit on waiting to collect a user callchain - putting a bound on head-of-line blocking causing samples to be dropped - Removes the flush routine which was previously needed to purge dangling references to the pmc from the sample buffers but now is only a source of a race condition on unload. Previously one could lock up or crash HEAD by running: pmcstat -S inst_retired.any_p -T and then hitting ^C After this change it is no longer possible. PR: 231793 Reviewed by: markj@ Approved by: re (gjb@) Differential Revision: https://reviews.freebsd.org/D17011 Notes: svn path=/head/; revision=339188
* [ig4] style(9) clean-upOleksandr Tymoshenko2018-10-041-2/+2
| | | | | | | | Submitted by: Rajesh Kumar <rajfbsd@gmail.com> Approved by: re (gjb, kib) Notes: svn path=/head/; revision=339182
* Fix the MODULE_PNP_INFO() for iwm(4) where I got the bus and moduleBjoern A. Zeeb2018-10-011-1/+1
| | | | | | | | | | | | | arguments wrong in r339020. PR: 231625 Reported by: Yuri Pankov (yuripv yuripv.net) Reviewed by: cem, Yuri Pankov (yuripv yuripv.net) Approved by: re (kib) Pointyhat to: bz (a rather big one for this one) Notes: svn path=/head/; revision=339038
* Use PNP metadata to allow devmatch to autoload ure(4)Allan Jude2018-09-301-0/+1
| | | | | | | | | | Reviewed by: manu imp Approved by: re (kib) X-MFC-with: devmatch Sponsored by: Klara Systems Notes: svn path=/head/; revision=339026
* Provide MODULE_PNP_INFO() for iwm(4) so that devmatch(8) canBjoern A. Zeeb2018-09-291-0/+2
| | | | | | | | | | | do its job. PR: 231625 Submitted by: Yuri Pankov (yuripv yuripv.net) Approved by: re (kib) Notes: svn path=/head/; revision=339020
* [sdhci] Add ACPI identifier for AMD eMMC 5.0 controllerOleksandr Tymoshenko2018-09-291-0/+3
| | | | | | | | | Submitted by: Rajesh Kumar <rajfbsd@gmail.com> Approved by: re (rgrimes) Differential Revision: https://reviews.freebsd.org/D17189 Notes: svn path=/head/; revision=339007
* Centralize compat support for PCIOCGETCONF.Brooks Davis2018-09-271-18/+154
| | | | | | | | | | | | | | | | The pre-7.x compat for both native and 32-bit code was already in pci_user.c. Use this infrastructure to add implement 32-bit support. This is more correct as ioctl(2) commands only have meaning in the context of a file descriptor. Reviewed by: kib Approved by: re (gjb) Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential revision: https://reviews.freebsd.org/D17324 Notes: svn path=/head/; revision=338990
* cxgbe(4): Enable support for per-connection rate limiting in the defaultNavdeep Parhar2018-09-264-3/+11
| | | | | | | | | | firmware configuration files. Approved by: re@ (gjb@) Sponsored by: Chelsio Communications Notes: svn path=/head/; revision=338954
* Remove bogus spaces.Warner Losh2018-09-263-3/+3
| | | | | | | | | Spaces aren't allowed in these strings. Approved by: re@ (glen) Notes: svn path=/head/; revision=338951
* Add PNP info to PCI attachments of cbb, cxgb, ida, iwn, ixl, ixlv,Warner Losh2018-09-2615-40/+72
| | | | | | | | | | | | | mfi, mps, mpr, mvs, my, oce, pcn, ral, rl. This only labels existing pci device tables, and has no probe / attach code changes. Reviewed by: imp, chuck Submitted by: Lakhan Shiva Kamireddy <lakhanshiva@gmail.com> Sponsored by: Google, Inc. (GSoC 2018) Approved by: re (glen) Notes: svn path=/head/; revision=338949
* Reapply, with minor tweaks, r338025, from the original commit:Warner Losh2018-09-2642-45/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove unused and easy to misuse PNP macro parameter Inspired by r338025, just remove the element size parameter to the MODULE_PNP_INFO macro entirely. The 'table' parameter is now required to have correct pointer (or array) type. Since all invocations of the macro already had this property and the emitted PNP data continues to include the element size, there is no functional change. Mostly done with the coccinelle 'spatch' tool: $ cat modpnpsize0.cocci @normaltables@ identifier b,c; expression a,d,e; declarer MODULE_PNP_INFO; @@ MODULE_PNP_INFO(a,b,c,d, -sizeof(d[0]), e); @singletons@ identifier b,c,d; expression a; declarer MODULE_PNP_INFO; @@ MODULE_PNP_INFO(a,b,c,&d, -sizeof(d), 1); $ rg -l MODULE_PNP_INFO -- sys | \ xargs spatch --in-place --sp-file modpnpsize0.cocci (Note that coccinelle invokes diff(1) via a PATH search and expects diff to tolerate the -B flag, which BSD diff does not. So I had to link gdiff into PATH as diff to use spatch.) Tinderbox'd (-DMAKE_JUST_KERNELS). Approved by: re (glen) Notes: svn path=/head/; revision=338948