Date: Thu, 22 May 2003 22:36:51 -0700 (PDT) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 31682 for review Message-ID: <200305230536.h4N5apur014683@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=31682 Change 31682 by peter@peter_daintree on 2003/05/22 22:35:59 IFC @31681 Affected files ... .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#21 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/ia64/proc-ia64.sgml#4 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#26 integrate .. //depot/projects/hammer/share/man/man4/acpi.4#7 integrate .. //depot/projects/hammer/sys/amd64/amd64/genassym.c#19 integrate .. //depot/projects/hammer/sys/amd64/amd64/locore.S#5 integrate .. //depot/projects/hammer/sys/amd64/amd64/machdep.c#40 integrate .. //depot/projects/hammer/sys/amd64/amd64/mem.c#7 integrate .. //depot/projects/hammer/sys/amd64/amd64/nexus.c#8 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#15 integrate .. //depot/projects/hammer/sys/amd64/amd64/trap.c#19 integrate .. //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#9 integrate .. //depot/projects/hammer/sys/amd64/ia32/ia32_signal.c#5 integrate .. //depot/projects/hammer/sys/amd64/ia32/ia32_sysvec.c#10 integrate .. //depot/projects/hammer/sys/amd64/ia32/ia32_util.h#5 integrate .. //depot/projects/hammer/sys/amd64/include/bus_amd64.h#4 integrate .. //depot/projects/hammer/sys/amd64/include/param.h#5 integrate .. //depot/projects/hammer/sys/amd64/include/pmap.h#12 integrate .. //depot/projects/hammer/sys/amd64/include/vmparam.h#9 integrate .. //depot/projects/hammer/sys/conf/kern.mk#10 integrate .. //depot/projects/hammer/sys/dev/fb/vga.c#13 integrate .. //depot/projects/hammer/sys/dev/vinum/vinum.c#5 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumconfig.c#6 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumext.h#6 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumioctl.c#8 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumlock.c#4 integrate .. //depot/projects/hammer/sys/dev/vinum/vinummemory.c#4 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumobj.h#3 integrate .. //depot/projects/hammer/sys/dev/vinum/vinumvar.h#3 integrate Differences ... ==== //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#21 (text+ko) ==== @@ -31,7 +31,7 @@ <sect1 id="support"> <sect1info> - <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml,v 1.151 2003/05/22 17:25:24 bmah Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml,v 1.154 2003/05/22 23:22:59 bmah Exp $</pubdate> </sect1info> <title>Supported Devices</title> @@ -836,10 +836,10 @@ <para arch="i386">IBM / Adaptec ServeRAID series (ips driver)</para> - <para arch="i386,alpha,pc98,sparc64">LSI Logic Fusion/MP + <para arch="i386,alpha,pc98,sparc64,ia64">LSI Logic Fusion/MP architecture Fiber Channel controllers (mpt driver) <itemizedlist> - <listitem> + <listitem arch="i386,alpha,pc98,sparc64"> <para>LSI FC909, FC929</para> </listitem> <listitem> @@ -1874,7 +1874,7 @@ <listitem> <para>Intel Pro/100 S Desktop, Server and Dual-Port Server Adapters</para> </listitem> - <listitem> + <listitem arch="i386,ia64"> <para>On-board Ethernet NICs on many Intel motherboards.</para> </listitem> <listitem arch="pc98"> @@ -1977,16 +1977,16 @@ <listitem arch="i386,alpha"> <para>3C575TX/575B/XFE575BT/575C/656/656B/656C (Cardbus)</para> </listitem> - <listitem arch="i386,alpha"> + <listitem arch="i386"> <para>Dell Optiplex GX1 on-board 3C918</para> </listitem> - <listitem arch="i386,alpha"> + <listitem arch="i386"> <para>Dell On-board 3C920</para> </listitem> - <listitem arch="i386,alpha"> + <listitem arch="i386"> <para>Dell Precision on-board 3C905B</para> </listitem> - <listitem arch="i386,alpha"> + <listitem arch="i386"> <para>Dell Latitude laptop docking station embedded 3C905-TX</para> </listitem> </itemizedlist> @@ -2640,73 +2640,76 @@ </itemizedlist> </para> - <para arch="i386">PCI-Based multi-port serial boards (&man.puc.4; + <para arch="i386,ia64">PCI-Based multi-port serial boards (&man.puc.4; driver) <itemizedlist> - <listitem> + <listitem arch="i386"> <para>Actiontech 56K PCI</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Avlab Technology, PCI IO 2S and PCI IO 4S</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Comtrol RocketPort 550</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Decision Computers PCCOM 4-port serial and dual port RS232/422/485</para> </listitem> - <listitem> + <listitem arch="ia64"> + <para>Diva Serial (GSP) Multiport UART (development branch only)</para> + </listitem> + <listitem arch="i386"> <para>Dolphin Peripherals 4025/4035/4036</para> </listitem> - <listitem> + <listitem arch="i386"> <para>IC Book Labs Dreadnought 16x Lite and Pro</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Lava Computers 2SP-PCI/DSerial-PCI/Quattro-PCI/Octopus-550</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Middle Digital, Weasle serial port</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Moxa Industio CP-114, Smartio C104H-PCI and C168H/PCI</para> </listitem> - <listitem> + <listitem arch="i386"> <para>NEC PK-UG-X001 and PK-UG-X008</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Netmos NM9835 PCI-2S-550</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Oxford Semiconductor OX16PCI954 PCI UART</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Syba Tech SD-LAB PCI-4S2P-550-ECP</para> </listitem> - <listitem> + <listitem arch="i386"> <para>SIIG Cyber I/O PCI 16C550/16C650/16C850</para> </listitem> - <listitem> + <listitem arch="i386"> <para>SIIG Cyber 2P1S PCI 16C550/16C650/16C850</para> </listitem> - <listitem> + <listitem arch="i386"> <para>SIIG Cyber 2S1P PCI 16C550/16C650/16C850</para> </listitem> - <listitem> + <listitem arch="i386"> <para>SIIG Cyber 4S PCI 16C550/16C650/16C850</para> </listitem> - <listitem> + <listitem arch="i386"> <para>SIIG Cyber Serial (Single and Dual) PCI 16C550/16C650/16C850</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Syba Tech Ltd. PCI-4S2P-550-ECP</para> </listitem> - <listitem> + <listitem arch="i386"> <para>Titan PCI-200H and PCI-800H</para> </listitem> - <listitem> + <listitem arch="i386"> <para>US Robotics (3Com) 3CP5609 modem</para> </listitem> - <listitem> + <listitem arch="i386"> <para>VScom PCI-400 and PCI-800</para> </listitem> </itemizedlist> @@ -3012,7 +3015,7 @@ linkend="bluetooth">Bluetooth</link> section.</para> </note> - <para arch="i386,pc98,alpha">Host Controllers (&man.ohci.4; and &man.uhci.4; drivers) + <para arch="i386,pc98,alpha,ia64">Host Controllers (&man.ohci.4; and &man.uhci.4; drivers) <itemizedlist> <listitem arch="i386,alpha"> <para>ALi Aladdin-V</para> @@ -3053,7 +3056,7 @@ <listitem arch="i386,alpha"> <para>VIA 83C572 USB</para> </listitem> - <listitem arch="i386,alpha"> + <listitem arch="i386,alpha,ia64"> <para>UHCI or OHCI compliant motherboard chipsets (no exceptions known)</para> </listitem> ==== //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/ia64/proc-ia64.sgml#4 (text+ko) ==== @@ -1,5 +1,5 @@ <!-- - $FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/ia64/proc-ia64.sgml,v 1.6 2003/05/19 22:15:17 bmah Exp $ + $FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/ia64/proc-ia64.sgml,v 1.7 2003/05/22 23:14:52 bmah Exp $ --> <sect1 id="proc-ia64"> <title>Supported Processors and Motherboards</title> @@ -29,4 +29,55 @@ configurations are under active development. At this time, SMP-enabled systems are considered less stable. The current priorities are UP fixes to improve stability.</para> + + <sect2> + <title>Supported Devices Overview</title> + + <para>This section contains additional information about what + devices may or may not be supported by &os;/&arch;.</para> + + <para>Except for the PC chipset embedded &man.ata.4; controllers, + most should work out of the box. Eventually, all + &arch;-compatible ATA controllers are expected to be fully + supported. Refer to the following sections for various disk + controllers and their current status.</para> + + <para>In general, <quote>PC standard</quote> serial ports + supported by the &man.sio.4; driver are expected to work on + Intel legacy machines, but not PA legacy machines. The reason + is that all devices on HP machines are memory-mapped and there + is <emphasis>no</emphasis> ISA device support other than the PCI + dictated VGA legacy.</para> + + <para>In addition to &man.sio.4; devices, the following devices + fail on non-Intel legacy machines (but should work on boxes with + an Intel legacy) because their drivers make ISA-specific + assumptions that do not hold:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <tbody> + <row> + <entry>&man.sio.4;</entry> + <entry>No support for memory-mapped I/O</entry> + </row> + + <row> + <entry>&man.syscons.4;</entry> + <entry>Expect BIOS, VGA probes, etc.</entry> + </row> + + <row> + <entry>&man.pcm.4;</entry> + <entry>Probes MSS ISA ports <emphasis>ad nauseum</emphasis></entry> + </row> + + <row> + <entry>&man.atkbd.4;, &man.psm.4;</entry> + <entry>Fixed ISA port locations</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </sect2> </sect1> ==== //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#26 (text+ko) ==== @@ -3,7 +3,7 @@ <corpauthor>The FreeBSD Project</corpauthor> - <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.569 2003/05/20 04:03:29 bmah Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.570 2003/05/23 00:02:10 bmah Exp $</pubdate> <copyright> <year>2000</year> @@ -897,7 +897,19 @@ 3.41. &merged;</para> <para><application>GCC</application> has been updated to - 3.2.2 (release version).</para> + 3.2.2 (release version). + + <note arch="i386"> + <para><application>GCC</application> is known to produce + broken code with the <option>-march=pentium4</option> option + set. As a workaround to avoid this problem, setting the + <varname>CPUTYPE=p4</varname> Makefile variable (for example, in + &man.make.conf.5;) enables GCC's + <option>-march=pentium3</option> option instead. This + situation is expected to be resolved when GCC 3.3 is + imported.</para> + </note> + </para> <para>The <application>gdtoa</application> library, for conversions between strings and floating point, has been imported. These sources ==== //depot/projects/hammer/share/man/man4/acpi.4#7 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/acpi.4,v 1.9 2003/05/18 04:21:38 imp Exp $ +.\" $FreeBSD: src/share/man/man4/acpi.4,v 1.10 2003/05/22 23:58:50 imp Exp $ .\" .Dd July 2, 2001 .Dt ACPI 4 @@ -294,8 +294,32 @@ utilities from the .Pa devel/acpicatools port, and some ACPI knowledge. +.Sh TUNABLES +.Bl -tag -width children +.It Li acpi_dsdt_load +Enables loading of a custom acpi DSDT. +.It Li acpi_dsdt_name +Name of the DSTS table to load, if loading is enabled. +.It Li debug.acpi.disable +Selectively disables portions of ACPI for debugging purposes. +.It Li hint.acpi.0.disabled +Disables all of ACPI +.It Li hw.acpi.cpu.performance_speed +Sets the speed of the CPU, if it supports multiple speeds, while in +the performance power profile. +.It Li hw.acpi.cpu.economy_speed +Sets the speed of the CPU, if it supports multiple speeds, while in +the economy power profile. +.It Li hw.acpi.ec.event_driven +Enables or disables the event driven model for the embedded controller +driver. +.It Li hw.acpi.pci.link.%d.%d.%d.irq +Override the interrupt to use. +.It Li hw.acpi.verbose +Turn on verbose debugging information about what ACPI is doing. +.El .Sh COMPATIBILITY -ACPI is only found/supported on Intel platforms (i386/IA32 and IA64). +ACPI is only found/supported on i386/ia32, ia64 and amd64. .Sh SEE ALSO .Xr loader.conf 5 , .Xr acpiconf 8 , ==== //depot/projects/hammer/sys/amd64/amd64/genassym.c#19 (text+ko) ==== @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)genassym.c 5.11 (Berkeley) 5/10/91 - * $FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.146 2003/05/15 00:23:39 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.147 2003/05/23 05:04:53 peter Exp $ */ #include "opt_compat.h" ==== //depot/projects/hammer/sys/amd64/amd64/locore.S#5 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/locore.S,v 1.173 2003/05/15 00:20:17 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/locore.S,v 1.174 2003/05/23 05:04:53 peter Exp $ */ #include <machine/asmacros.h> ==== //depot/projects/hammer/sys/amd64/amd64/machdep.c#40 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.579 2003/05/17 02:05:10 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.580 2003/05/23 05:04:53 peter Exp $ */ #include "opt_atalk.h" ==== //depot/projects/hammer/sys/amd64/amd64/mem.c#7 (text+ko) ==== @@ -38,7 +38,7 @@ * * from: Utah $Hdr: mem.c 1.13 89/10/08$ * from: @(#)mem.c 7.2 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/amd64/mem.c,v 1.107 2003/05/01 01:05:21 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/mem.c,v 1.108 2003/05/23 05:04:53 peter Exp $ */ /* ==== //depot/projects/hammer/sys/amd64/amd64/nexus.c#8 (text+ko) ==== @@ -26,7 +26,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.51 2003/05/12 02:44:37 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.52 2003/05/23 05:04:53 peter Exp $ */ /* ==== //depot/projects/hammer/sys/amd64/amd64/pmap.c#15 (text+ko) ==== @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.407 2003/05/11 22:40:24 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.408 2003/05/23 05:04:53 peter Exp $ */ /*- * Copyright (c) 2003 Networks Associates Technology, Inc. ==== //depot/projects/hammer/sys/amd64/amd64/trap.c#19 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $FreeBSD: src/sys/amd64/amd64/trap.c,v 1.258 2003/05/22 20:09:50 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/trap.c,v 1.259 2003/05/23 05:04:53 peter Exp $ */ /* ==== //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#9 (text+ko) ==== @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.208 2003/05/14 04:10:48 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.209 2003/05/23 05:04:54 peter Exp $ */ #include "opt_isa.h" ==== //depot/projects/hammer/sys/amd64/ia32/ia32_signal.c#5 (text+ko) ==== @@ -34,7 +34,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.1 2003/05/14 04:10:48 peter Exp $ + * $FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.2 2003/05/23 05:07:33 peter Exp $ */ #include "opt_compat.h" ==== //depot/projects/hammer/sys/amd64/ia32/ia32_sysvec.c#10 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/ia32/ia32_sysvec.c,v 1.4 2003/05/15 00:23:39 peter Exp $ + * $FreeBSD: src/sys/amd64/ia32/ia32_sysvec.c,v 1.5 2003/05/23 05:07:33 peter Exp $ */ #include "opt_compat.h" ==== //depot/projects/hammer/sys/amd64/ia32/ia32_util.h#5 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/ia32/ia32_util.h,v 1.5 2003/05/14 04:10:49 peter Exp $ + * $FreeBSD: src/sys/amd64/ia32/ia32_util.h,v 1.6 2003/05/23 05:07:33 peter Exp $ */ #include <vm/vm.h> ==== //depot/projects/hammer/sys/amd64/include/bus_amd64.h#4 (text+ko) ==== @@ -67,7 +67,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* $FreeBSD: src/sys/amd64/include/bus_amd64.h,v 1.24 2003/05/12 02:44:37 peter Exp $ */ +/* $FreeBSD: src/sys/amd64/include/bus_amd64.h,v 1.25 2003/05/23 05:04:54 peter Exp $ */ #ifndef _AMD64_BUS_AMD64_H_ #define _AMD64_BUS_AMD64_H_ ==== //depot/projects/hammer/sys/amd64/include/param.h#5 (text+ko) ==== @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)param.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/amd64/include/param.h,v 1.4 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/amd64/include/param.h,v 1.5 2003/05/23 05:04:54 peter Exp $ */ /* ==== //depot/projects/hammer/sys/amd64/include/pmap.h#12 (text+ko) ==== @@ -42,7 +42,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.101 2003/05/15 00:20:17 peter Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.102 2003/05/23 05:04:54 peter Exp $ */ #ifndef _MACHINE_PMAP_H_ ==== //depot/projects/hammer/sys/amd64/include/vmparam.h#9 (text+ko) ==== @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.36 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.37 2003/05/23 05:04:54 peter Exp $ */ ==== //depot/projects/hammer/sys/conf/kern.mk#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/kern.mk,v 1.34 2003/05/03 18:05:56 obrien Exp $ +# $FreeBSD: src/sys/conf/kern.mk,v 1.35 2003/05/23 05:04:54 peter Exp $ # # Warning flags for compiling the kernel and components of the kernel. ==== //depot/projects/hammer/sys/dev/fb/vga.c#13 (text+ko) ==== @@ -26,7 +26,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/fb/vga.c,v 1.26 2003/05/02 01:36:27 marcel Exp $ + * $FreeBSD: src/sys/dev/fb/vga.c,v 1.27 2003/05/23 05:10:49 peter Exp $ */ #include "opt_vga.h" ==== //depot/projects/hammer/sys/dev/vinum/vinum.c#5 (text+ko) ==== @@ -35,17 +35,17 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinum.c,v 1.42 2003/05/04 05:25:14 grog Exp grog $ - * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.58 2003/05/05 05:28:15 grog Exp $ + * $Id: vinum.c,v 1.44 2003/05/23 00:50:55 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.59 2003/05/23 01:12:16 grog Exp $ */ -#define STATIC static /* nothing while we're testing XXX */ +#define STATIC static /* nothing while we're testing */ #include <dev/vinum/vinumhdr.h> #include <sys/sysproto.h> /* for sync(2) */ #ifdef VINUMDEBUG #include <sys/reboot.h> -int debug = 0; +int debug = 0; /* debug flags */ extern int total_malloced; extern int malloccount; extern struct mc malloced[]; @@ -78,6 +78,15 @@ static eventhandler_tag dev_clone_tag; /* + * Mutexes for plex synchronization. Ideally each plex + * should have its own mutex, but the fact that the plex + * struct can move makes that very complicated. Instead, + * have plexes use share these mutexes based on modulo plex + * number. + */ +struct mtx plexmutex[PLEXMUTEXES]; + +/* * Called by main() during pseudo-device attachment. All we need * to do is allocate enough space for devices to be configured later, and * add devsw entries. @@ -86,6 +95,12 @@ vinumattach(void *dummy) { char *envp; + int i; +#define MUTEXNAMELEN 16 + char mutexname[MUTEXNAMELEN]; +#if PLEXMUTEXES > 10000 +#error Increase size of MUTEXNAMELEN +#endif /* modload should prevent multiple loads, so this is worth a panic */ if ((vinum_conf.flags & VF_LOADED) != 0) panic("vinum: already loaded"); @@ -136,6 +151,11 @@ vinum_conf.plexes_allocated = INITIAL_PLEXES; /* number of plex slots allocated */ vinum_conf.plexes_used = 0; /* and number in use */ + for (i = 0; i < PLEXMUTEXES; i++) { + snprintf(mutexname, MUTEXNAMELEN, "vinumplex%d", i); + mtx_init(&plexmutex[i], mutexname, "plex", MTX_DEF); + } + /* and subdisks */ SD = (struct sd *) Malloc(sizeof(struct sd) * INITIAL_SUBDISKS); CHECKALLOC(SD, "vinum: no memory\n"); @@ -250,6 +270,7 @@ { struct sync_args dummyarg = {0}; + int i; switch (type) { case MOD_LOAD: @@ -291,6 +312,8 @@ #endif destroy_dev(vinum_daemon_dev); /* daemon device */ destroy_dev(vinum_super_dev); + for (i = 0; i < PLEXMUTEXES; i++) + mtx_destroy(&plexmutex[i]); log(LOG_INFO, "vinum: unloaded\n"); /* tell the world */ return 0; default: ==== //depot/projects/hammer/sys/dev/vinum/vinumconfig.c#6 (text+ko) ==== @@ -33,8 +33,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinumconfig.c,v 1.39 2003/05/04 05:22:46 grog Exp grog $ - * $FreeBSD: src/sys/dev/vinum/vinumconfig.c,v 1.57 2003/05/05 08:42:42 grog Exp $ + * $Id: vinumconfig.c,v 1.41 2003/05/23 00:57:34 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinumconfig.c,v 1.58 2003/05/23 01:13:10 grog Exp $ */ #define STATIC static @@ -106,7 +106,7 @@ } else { retval = kvprintf(msg, NULL, (void *) text, 10, ap); text[retval] = '\0'; /* delimit */ - strcpy(ioctl_reply->msg, text); + strlcpy(ioctl_reply->msg, text, sizeof(ioctl_reply->msg)); ioctl_reply->error = error; /* first byte is the error number */ Free(text); } @@ -477,7 +477,7 @@ } /* - * Find the named drive in vinum_conf.drive, return a pointer + * Find the named drive in vinum_conf.drive, * return the index in vinum_conf.drive. * Don't mark the drive as allocated (XXX SMP) * If create != 0, create an entry if it doesn't exist @@ -505,10 +505,9 @@ driveno = get_empty_drive(); drive = &DRIVE[driveno]; if (name != NULL) - bcopy(name, /* put in its name */ - drive->label.name, - min(sizeof(drive->label.name), - strlen(name))); + strlcpy(drive->label.name, /* put in its name */ + name, + sizeof(drive->label.name)); drive->state = drive_referenced; /* in use, nothing worthwhile there */ return driveno; /* return the index */ } @@ -819,8 +818,6 @@ Free(plex->sdnos); if (plex->lock) Free(plex->lock); - if (isstriped(plex)) - mtx_destroy(&plex->lockmtx); destroy_dev(plex->dev); bzero(plex, sizeof(struct plex)); /* and clear it out */ plex->state = plex_unallocated; @@ -1042,10 +1039,11 @@ } /* - * Handle a subdisk definition. We store the information in the global variable - * sd, so we don't need to allocate. + * Handle a subdisk definition. We store the + * information in the global variable sd, so we + * don't need to allocate. * - * If we find an error, print a message and return + * On error throw a message back to the caller. */ void config_subdisk(int update) @@ -1201,6 +1199,9 @@ if (sd->driveno < 0) /* no current drive? */ throw_rude_remark(EINVAL, "Subdisk %s is not associated with a drive", sd->name); } + if (DRIVE[sd->driveno].state != drive_up) + sd->state = sd_crashed; + /* * This is tacky. If something goes wrong * with the checks, we may end up losing drive @@ -1225,11 +1226,13 @@ /* Do we have a plex name? */ if (sdindex >= 0) /* we have a plex */ - strcpy(sd->name, PLEX[sd->plexno].name); /* take it from there */ + strlcpy(sd->name, /* take it from there */ + PLEX[sd->plexno].name, + sizeof(sd->name)); else /* no way */ throw_rude_remark(EINVAL, "Unnamed sd is not associated with a plex"); sprintf(sdsuffix, ".s%d", sdindex); /* form the suffix */ - strcat(sd->name, sdsuffix); /* and add it to the name */ + strlcat(sd->name, sdsuffix, sizeof(sd->name)); /* and add it to the name */ } /* do we have complete info for this subdisk? */ if (sd->sectors < 0) @@ -1434,19 +1437,20 @@ char plexsuffix[8]; /* form plex name suffix here */ /* Do we have a volume name? */ if (plex->volno >= 0) /* we have a volume */ - strcpy(plex->name, /* take it from there */ - VOL[plex->volno].name); + strlcpy(plex->name, /* take it from there */ + VOL[plex->volno].name, + sizeof(plex->name)); else /* no way */ throw_rude_remark(EINVAL, "Unnamed plex is not associated with a volume"); sprintf(plexsuffix, ".p%d", pindex); /* form the suffix */ - strcat(plex->name, plexsuffix); /* and add it to the name */ + strlcat(plex->name, plexsuffix, sizeof(plex->name)); /* and add it to the name */ } if (isstriped(plex)) { plex->lock = (struct rangelock *) Malloc(PLEX_LOCKS * sizeof(struct rangelock)); CHECKALLOC(plex->lock, "vinum: Can't allocate lock table\n"); bzero((char *) plex->lock, PLEX_LOCKS * sizeof(struct rangelock)); - mtx_init(&plex->lockmtx, plex->name, "plex", MTX_DEF); + plex->lockmtx = &plexmutex[plexno % PLEXMUTEXES]; /* use this mutex for locking */ } /* Note the last plex we configured */ current_plex = plexno; @@ -2025,7 +2029,7 @@ } void -update_volume_config(int volno, int diskconfig) +update_volume_config(int volno) { struct volume *vol = &VOL[volno]; struct plex *plex; @@ -2082,7 +2086,7 @@ if (VOL[volno].state > volume_uninit) { VOL[volno].flags &= ~VF_CONFIG_SETUPSTATE; /* no more setupstate */ update_volume_state(volno); - update_volume_config(volno, diskconfig); + update_volume_config(volno); } } save_config(); ==== //depot/projects/hammer/sys/dev/vinum/vinumext.h#6 (text+ko) ==== @@ -33,8 +33,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinumext.h,v 1.31 2003/04/25 08:01:37 grog Exp $ - * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.39 2003/05/05 07:50:15 grog Exp $ + * $Id: vinumext.h,v 1.33 2003/05/23 00:57:48 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.40 2003/05/23 01:13:43 grog Exp $ */ /* vinumext.h: external definitions */ @@ -42,6 +42,7 @@ /* *sigh* We still need this at the moment. */ #ifdef _KERNEL extern struct _vinum_conf vinum_conf; /* configuration information */ +extern struct mtx plexmutex[]; /* mutexes for plexes to use */ #else extern struct __vinum_conf vinum_conf; /* configuration information */ #endif @@ -102,7 +103,7 @@ void updateconfig(int); void update_sd_config(int sdno, int kernelstate); void update_plex_config(int plexno, int kernelstate); -void update_volume_config(int volno, int kernelstate); +void update_volume_config(int volno); void update_config(void); void drive_io_done(struct buf *); void save_config(void); @@ -159,7 +160,11 @@ char *basename(char *); #endif +#ifdef VINUMDEBUG +void expand_table(void **, int, int, char *, int); +#else void expand_table(void **, int, int); +#endif struct disklabel; struct request; ==== //depot/projects/hammer/sys/dev/vinum/vinumioctl.c#8 (text+ko) ==== @@ -41,8 +41,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinumioctl.c,v 1.22 2003/05/07 03:31:45 grog Exp grog $ - * $FreeBSD: src/sys/dev/vinum/vinumioctl.c,v 1.46 2003/05/08 00:36:20 grog Exp $ + * $Id: vinumioctl.c,v 1.23 2003/05/23 01:02:22 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinumioctl.c,v 1.47 2003/05/23 01:14:13 grog Exp $ */ #include <dev/vinum/vinumhdr.h> @@ -721,6 +721,8 @@ set_plex_state(plex->plexno, plex_down, setstate_force | setstate_configuring); + if (plex->volno >= 0) /* plex attached to volume, */ + update_volume_config(plex->volno); save_config(); reply->error = 0; } @@ -783,7 +785,7 @@ bcopy("ex-", plex->name, 3); plex->name[MAXPLEXNAME - 1] = '\0'; } - update_volume_config(volno, 0); + update_volume_config(volno); save_config(); reply->error = 0; } else { @@ -856,7 +858,7 @@ vol = validvol(msg->index, reply); if (vol) { bcopy(msg->newname, vol->name, MAXVOLNAME); - update_volume_config(msg->index, 0); + update_volume_config(msg->index); save_config(); reply->error = 0; } ==== //depot/projects/hammer/sys/dev/vinum/vinumlock.c#4 (text+ko) ==== @@ -37,8 +37,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinumlock.c,v 1.17 2003/02/02 05:07:51 grog Exp $ - * $FreeBSD: src/sys/dev/vinum/vinumlock.c,v 1.25 2003/05/05 05:35:52 grog Exp $ + * $Id: vinumlock.c,v 1.19 2003/05/23 01:07:18 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinumlock.c,v 1.26 2003/05/23 01:14:35 grog Exp $ */ #include <dev/vinum/vinumhdr.h> @@ -132,11 +132,11 @@ * increment all addresses by 1. */ stripe++; - mtx_lock(&plex->lockmtx); + mtx_lock(plex->lockmtx); /* Wait here if the table is full */ while (plex->usedlocks == PLEX_LOCKS) /* all in use */ - msleep(&plex->usedlocks, &plex->lockmtx, PRIBIO, "vlock", 0); + msleep(&plex->usedlocks, plex->lockmtx, PRIBIO, "vlock", 0); #ifdef DIAGNOSTIC if (plex->usedlocks >= PLEX_LOCKS) @@ -164,7 +164,7 @@ } #endif plex->lockwaits++; /* waited one more time */ - msleep(lock, &plex->lockmtx, PRIBIO, "vrlock", 0); + msleep(lock, plex->lockmtx, PRIBIO, "vrlock", 0); lock = &plex->lock[-1]; /* start again */ foundlocks = 0; pos = NULL; @@ -188,7 +188,7 @@ pos->stripe = stripe; pos->bp = bp; plex->usedlocks++; /* one more lock */ - mtx_unlock(&plex->lockmtx); + mtx_unlock(plex->lockmtx); #ifdef VINUMDEBUG if (debug & DEBUG_LOCKREQS) { struct rangelockinfo lockinfo; ==== //depot/projects/hammer/sys/dev/vinum/vinummemory.c#4 (text+ko) ==== @@ -33,8 +33,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinummemory.c,v 1.30 2003/04/28 02:54:43 grog Exp $ - * $FreeBSD: src/sys/dev/vinum/vinummemory.c,v 1.32 2003/05/01 01:32:08 grog Exp $ + * $Id: vinummemory.c,v 1.31 2003/05/23 01:08:36 grog Exp $ + * $FreeBSD: src/sys/dev/vinum/vinummemory.c,v 1.33 2003/05/23 01:15:01 grog Exp $ */ #include <dev/vinum/vinumhdr.h> @@ -104,27 +104,40 @@ return ++f; /* skip the / */ } +#ifdef VINUMDEBUG +void +expand_table(void **table, int oldsize, int newsize, char *file, int line) +#else void expand_table(void **table, int oldsize, int newsize) +#endif { if (newsize > oldsize) { int *temp; int s; s = splhigh(); +#ifdef VINUMDEBUG + temp = (int *) MMalloc(newsize, file, line); /* allocate a new table */ +#else temp = (int *) Malloc(newsize); /* allocate a new table */ +#endif CHECKALLOC(temp, "vinum: Can't expand table\n"); bzero((char *) temp, newsize); /* clean it all out */ if (*table != NULL) { /* already something there, */ bcopy((char *) *table, (char *) temp, oldsize); /* copy it to the old table */ +#ifdef VINUMDEBUG + FFree(*table, file, line); +#else Free(*table); +#endif } *table = temp; splx(s); } } -#ifdef VINUMDEBUG /* XXX debug */ +#ifdef VINUMDEBUG #define MALLOCENTRIES 16384 int malloccount = 0; int highwater = 0; /* highest index ever allocated */ @@ -172,8 +185,7 @@ malloced[i].size = size; malloced[i].line = line; malloced[i].address = result; - bcopy(f, malloced[i].file, min(strlen(f), MCFILENAMELEN - 1)); - malloced[i].file[MCFILENAMELEN - 1] = '\0'; + strlcpy(malloced[i].file, f, MCFILENAMELEN); } if (malloccount > highwater) highwater = malloccount; @@ -208,8 +220,7 @@ freeinfo[lastfree].size = malloced[i].size; freeinfo[lastfree].line = line; freeinfo[lastfree].address = mem; - bcopy(f, freeinfo[lastfree].file, min(strlen(f), MCFILENAMELEN - 1)); - freeinfo[lastfree].file[MCFILENAMELEN - 1] = '\0'; + bcopy(f, freeinfo[lastfree].file, MCFILENAMELEN); if (++lastfree == FREECOUNT) lastfree = 0; } @@ -251,7 +262,7 @@ m->size = malloced[ent].size; m->line = malloced[ent].line; m->seq = malloced[ent].seq; - bcopy(malloced[ent].file, m->file, MCFILENAMELEN); + strlcpy(m->file, malloced[ent].file, MCFILENAMELEN); return 0; } ==== //depot/projects/hammer/sys/dev/vinum/vinumobj.h#3 (text+ko) ==== @@ -37,8 +37,8 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305230536.h4N5apur014683>