PERFORCE change 50008 for review
Robert Watson
rwatson at FreeBSD.org
Tue Mar 30 14:09:21 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=50008
Change 50008 by rwatson at rwatson_tislabs on 2004/03/30 14:08:50
Integrate netperf_socket:
- twa driver for new 3Ware array cards (and now with.. SCSI!)
- pf synchronization.
- UDF bugfix.
- if_ste uses m_defrag().
- Even more fixes relating to kstack pages.
Affected files ...
.. //depot/projects/netperf_socket/sys/conf/NOTES#10 integrate
.. //depot/projects/netperf_socket/sys/conf/files.i386#11 integrate
.. //depot/projects/netperf_socket/sys/conf/options#6 integrate
.. //depot/projects/netperf_socket/sys/contrib/pf/net/pf.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#9 integrate
.. //depot/projects/netperf_socket/sys/dev/nge/if_nge.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/twa/twa.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_cam.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_externs.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_freebsd.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_fwimg.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_globals.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_includes.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_ioctl.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/twa/twa_reg.h#1 branch
.. //depot/projects/netperf_socket/sys/fs/udf/udf_vfsops.c#2 integrate
.. //depot/projects/netperf_socket/sys/fs/udf/udf_vnops.c#3 integrate
.. //depot/projects/netperf_socket/sys/i386/conf/GENERIC#4 integrate
.. //depot/projects/netperf_socket/sys/kern/subr_param.c#4 integrate
.. //depot/projects/netperf_socket/sys/modules/twa/Makefile#1 branch
.. //depot/projects/netperf_socket/sys/pci/if_ste.c#6 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/vm_machdep.c#5 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/conf/NOTES#10 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1208 2004/03/29 22:41:20 peter Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1209 2004/03/30 07:01:56 bde Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -685,23 +685,24 @@
# One of these is mandatory:
options FFS #Fast filesystem
-options NFSCLIENT #Network File System
+options NFSCLIENT #Network File System client
# The rest are optional:
options CD9660 #ISO 9660 filesystem
options FDESCFS #File descriptor filesystem
options HPFS #OS/2 File system
options MSDOSFS #MS DOS File System (FAT, FAT32)
-options NFSSERVER #Network File System
+options NFSSERVER #Network File System server
options NTFS #NT File System
options NULLFS #NULL filesystem
+# Broken (depends on NCP):
#options NWFS #NetWare filesystem
options PORTALFS #Portal filesystem
options PROCFS #Process filesystem (requires PSEUDOFS)
options PSEUDOFS #Pseudo-filesystem framework
options SMBFS #SMB/CIFS filesystem
options UDF #Universal Disk Format
-#umapfs is seriously (functionally) broken at this point.
+# Broken (seriously (functionally) broken):
#options UMAPFS #UID map filesystem
options UNIONFS #Union filesystem
# The xFS_ROOT options REQUIRE the associated ``options xFS''
==== //depot/projects/netperf_socket/sys/conf/files.i386#11 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.i386,v 1.481 2004/03/22 18:00:39 wpaul Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.482 2004/03/30 03:45:59 vkashyap Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -170,6 +170,11 @@
dev/syscons/scvtb.c optional sc
dev/syscons/syscons.c optional sc
dev/syscons/sysmouse.c optional sc
+dev/twa/twa.c optional twa
+dev/twa/twa_cam.c optional twa
+dev/twa/twa_freebsd.c optional twa
+dev/twa/twa_fwimg.c optional twa
+dev/twa/twa_globals.c optional twa
dev/uart/uart_cpu_i386.c optional uart
geom/geom_bsd.c standard
geom/geom_bsd_enc.c standard
==== //depot/projects/netperf_socket/sys/conf/options#6 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.435 2004/03/16 12:23:38 scottl Exp $
+# $FreeBSD: src/sys/conf/options,v 1.436 2004/03/30 18:53:18 vkashyap Exp $
#
# On the handling of kernel options
#
@@ -71,6 +71,10 @@
ADW_ALLOW_MEMIO opt_adw.h # Allow PCI devices to use memory
# mapped I/O
+# 3ware 9000 series RAID controller driver options
+TWA_DEBUG opt_twa.h # 0-10; 10 prints the most messages.
+TWA_FLASH_FIRMWARE opt_twa.h # firmware image bundled when defined.
+
# Miscellaneous options.
ADAPTIVE_MUTEXES
ALQ
==== //depot/projects/netperf_socket/sys/contrib/pf/net/pf.c#5 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.5 2004/03/28 20:04:12 mlaier Exp $ */
+/* $FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.6 2004/03/30 18:28:30 mlaier Exp $ */
/* $OpenBSD: pf.c,v 1.389.2.2 2004/03/14 00:13:42 brad Exp $ */
/*
@@ -1142,7 +1142,7 @@
/* Change inner protocol port, fix inner protocol checksum. */
if (ip != NULL) {
u_int16_t oip = *ip;
- u_int32_t opc;
+ u_int32_t opc = 0; /* make the compiler happy */
if (pc != NULL)
opc = *pc;
@@ -1222,14 +1222,14 @@
{
struct mbuf *m;
struct m_tag *mtag;
- int len, tlen;
+ int len = 0, tlen; /* make the compiler happy */
#ifdef INET
- struct ip *h;
+ struct ip *h = NULL; /* make the compiler happy */
#endif /* INET */
#ifdef INET6
- struct ip6_hdr *h6;
+ struct ip6_hdr *h6 = NULL; /* make the compiler happy */
#endif /* INET6 */
- struct tcphdr *th;
+ struct tcphdr *th = NULL; /* make the compiler happy */
#ifdef __FreeBSD__
struct ip *ip;
#if (__FreeBSD_version < 501114)
@@ -2343,7 +2343,7 @@
struct route_in6 ro6;
#endif /* INET6 */
struct rtentry *rt = NULL;
- int hlen;
+ int hlen = 0; /* make the compiler happy */
u_int16_t mss = tcp_mssdflt;
switch (af) {
@@ -3014,9 +3014,10 @@
struct pf_rule *r, *a = NULL;
struct pf_ruleset *ruleset = NULL;
u_short reason;
- u_int16_t icmpid;
+ u_int16_t icmpid = 0; /* make the compiler happy */
sa_family_t af = pd->af;
- u_int8_t icmptype, icmpcode;
+ u_int8_t icmptype = 0; /* make the compiler happy */
+ u_int8_t icmpcode = 0; /* make the compiler happy */
int state_icmp = 0;
struct pf_tag *pftag = NULL;
int tag = -1;
@@ -4094,8 +4095,9 @@
struct mbuf *m, int ipoff, int off, void *h, struct pf_pdesc *pd)
{
struct pf_addr *saddr = pd->src, *daddr = pd->dst;
- u_int16_t icmpid, *icmpsum;
- u_int8_t icmptype;
+ u_int16_t icmpid = 0; /* make the compiler happy */
+ u_int16_t *icmpsum = NULL; /* make the compiler happy */
+ u_int8_t icmptype = 0; /* make the compiler happy */
int state_icmp = 0, dirndx;
switch (pd->proto) {
@@ -4216,8 +4218,8 @@
struct ip6_hdr h2_6;
int terminal = 0;
#endif /* INET6 */
- int ipoff2;
- int off2;
+ int ipoff2 = 0; /* make the compiler happy */
+ int off2 = 0; /* make the compiler happy */
pd2.af = pd->af;
switch (pd->af) {
@@ -4961,7 +4963,7 @@
{
struct mbuf *m0, *m1;
struct route iproute;
- struct route *ro;
+ struct route *ro = NULL; /* XXX: was uninitialized */
struct sockaddr_in *dst;
struct ip *ip;
struct ifnet *ifp = NULL;
@@ -5589,7 +5591,7 @@
{
u_short action, reason = 0, log = 0;
struct mbuf *m = *m0;
- struct ip *h;
+ struct ip *h = NULL; /* XXX: was uninitialized */
struct pf_rule *a = NULL, *r = &pf_default_rule, *tr;
struct pf_state *s = NULL;
struct pf_ruleset *ruleset = NULL;
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#9 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.129 2004/03/27 16:26:00 takawata Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.130 2004/03/30 07:35:18 njl Exp $
*/
#include "opt_acpi.h"
@@ -235,14 +235,23 @@
/*
* Allow override of whether methods execute in parallel or not.
- * Default to serial behavior as this fixes some AE_ALREADY_EXISTS errors
- * and matches the MS interpreter.
+ * Enable this for serial behavior, which fixes "AE_ALREADY_EXISTS"
+ * errors for AML that really can't handle parallel method execution.
+ * It is off by default since this breaks recursive methods and
+ * some IBMs use such code.
*/
-static int acpi_serialize_methods = 1;
+static int acpi_serialize_methods;
TUNABLE_INT("hw.acpi.serialize_methods", &acpi_serialize_methods);
-/* Allow override of whether to support the _OSI method. */
-static int acpi_osi_method;
+/*
+ * Allow override of whether to support the _OSI method. This allows us
+ * to claim compatibility with various MS OSs without changing the value
+ * we report for _OS. This is enabled by default since it fixes some
+ * problems with interrupt routing although it can be disabled if it
+ * causes problems. See the definition of "AcpiGbl_ValidOsiStrings" for
+ * a list of systems we claim.
+ */
+static int acpi_osi_method = 1;
TUNABLE_INT("hw.acpi.osi_method", &acpi_osi_method);
/*
==== //depot/projects/netperf_socket/sys/dev/nge/if_nge.c#4 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.54 2004/03/17 17:50:38 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.55 2004/03/30 10:24:52 ru Exp $");
/*
* National Semiconductor DP83820/DP83821 gigabit ethernet driver
@@ -1392,7 +1392,7 @@
*/
if (extsts & NGE_RXEXTSTS_VLANPKT) {
VLAN_INPUT_TAG(ifp, m,
- extsts & NGE_RXEXTSTS_VTCI, continue);
+ ntohs(extsts & NGE_RXEXTSTS_VTCI), continue);
}
(*ifp->if_input)(ifp, m);
@@ -1715,7 +1715,7 @@
mtag = VLAN_OUTPUT_TAG(&sc->arpcom.ac_if, m);
if (mtag != NULL) {
sc->nge_ldata->nge_tx_list[cur].nge_extsts |=
- (NGE_TXEXTSTS_VLANPKT|VLAN_TAG_VALUE(mtag));
+ (NGE_TXEXTSTS_VLANPKT|htons(VLAN_TAG_VALUE(mtag)));
}
sc->nge_ldata->nge_tx_list[cur].nge_mbuf = m_head;
==== //depot/projects/netperf_socket/sys/fs/udf/udf_vfsops.c#2 (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/fs/udf/udf_vfsops.c,v 1.16 2003/11/05 06:56:08 scottl Exp $
+ * $FreeBSD: src/sys/fs/udf/udf_vfsops.c,v 1.17 2004/03/30 05:01:48 scottl Exp $
*/
/* udf_vfsops.c */
@@ -778,6 +778,8 @@
*/
if ((error = udf_readlblks(udfmp, pms->st_loc[0], pms->st_size,
&bp)) != 0) {
+ if (bp != NULL)
+ brelse(bp);
printf("Failed to read Sparing Table at sector %d\n",
pms->st_loc[0]);
return (error);
==== //depot/projects/netperf_socket/sys/fs/udf/udf_vnops.c#3 (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/fs/udf/udf_vnops.c,v 1.34 2004/03/03 07:43:34 scottl Exp $
+ * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.35 2004/03/30 05:01:48 scottl Exp $
*/
/* udf_vnops.c */
@@ -416,9 +416,8 @@
offset = uio->uio_offset;
size = uio->uio_resid;
error = udf_readatoffset(node, &size, offset, &bp, &data);
- if (error)
- return (error);
- error = uiomove(data, size, uio);
+ if (error == 0)
+ error = uiomove(data, size, uio);
if (bp != NULL)
brelse(bp);
if (error)
@@ -579,6 +578,8 @@
&ds->bp, &ds->data);
if (error) {
ds->error = error;
+ if (ds->bp != NULL)
+ brelse(ds->bp);
return (NULL);
}
}
@@ -1051,8 +1052,9 @@
* offset passed in. Only read in at most 'size' bytes, and then set 'size'
* to the number of bytes pointed to. If 'size' is zero, try to read in a
* whole extent.
- * XXX 'size' is limited to the logical block size for now due to problems
- * with udf_read()
+ *
+ * Note that *bp may be assigned error or not.
+ *
*/
static int
udf_readatoffset(struct udf_node *node, int *size, int offset, struct buf **bp, uint8_t **data)
@@ -1066,6 +1068,7 @@
udfmp = node->udfmp;
+ *bp = NULL;
error = udf_bmap_internal(node, offset, §or, &max_size);
if (error == UDF_INVALID_BMAP) {
/*
@@ -1075,7 +1078,6 @@
fentry = node->fentry;
*data = &fentry->data[fentry->l_ea];
*size = fentry->l_ad;
- *bp = NULL;
return (0);
} else if (error != 0) {
return (error);
@@ -1088,6 +1090,7 @@
if ((error = udf_readlblks(udfmp, sector, *size, bp))) {
printf("warning: udf_readlblks returned error %d\n", error);
+ /* note: *bp may be non-NULL */
return (error);
}
==== //depot/projects/netperf_socket/sys/i386/conf/GENERIC#4 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.398 2004/03/15 00:49:40 obrien Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.399 2004/03/30 03:46:00 vkashyap Exp $
machine i386
cpu I486_CPU
@@ -124,6 +124,7 @@
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
+device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
==== //depot/projects/netperf_socket/sys/kern/subr_param.c#4 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_param.c,v 1.62 2004/03/27 19:50:22 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_param.c,v 1.63 2004/03/30 08:00:11 alc Exp $");
#include "opt_param.h"
#include "opt_maxusers.h"
@@ -181,15 +181,13 @@
void
init_param3(long kmempages)
{
+
/*
- * Limit pageable pipe memory usage to 5% of the kernel map
- * (via pipe_map). Ensure that all have reasonable floors.
- * (See sys_pipe.c for more info.)
+ * The default for maxpipekva is max(5% of the kernel map, 512KB).
+ * See sys_pipe.c for more details.
*/
maxpipekva = (kmempages / 20) * PAGE_SIZE;
-
if (maxpipekva < 512 * 1024)
maxpipekva = 512 * 1024;
-
TUNABLE_INT_FETCH("kern.ipc.maxpipekva", &maxpipekva);
}
==== //depot/projects/netperf_socket/sys/pci/if_ste.c#6 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_ste.c,v 1.63 2004/03/24 17:43:45 ru Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_ste.c,v 1.64 2004/03/30 19:23:38 ru Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1493,25 +1493,13 @@
/*
* We ran out of segments. We have to recopy this
* mbuf chain first. Bail out if we can't get the
- * new buffers. Code borrowed from if_fxp.c
+ * new buffers.
*/
- MGETHDR(mn, M_DONTWAIT, MT_DATA);
+ mn = m_defrag(m_head, M_DONTWAIT);
if (mn == NULL) {
m_freem(m_head);
return ENOMEM;
}
- if (m_head->m_pkthdr.len > MHLEN) {
- MCLGET(mn, M_DONTWAIT);
- if ((mn->m_flags & M_EXT) == 0) {
- m_freem(mn);
- m_freem(m_head);
- return ENOMEM;
- }
- }
- m_copydata(m_head, 0, m_head->m_pkthdr.len,
- mtod(mn, caddr_t));
- mn->m_pkthdr.len = mn->m_len = m_head->m_pkthdr.len;
- m_freem(m_head);
m_head = mn;
goto encap_retry;
}
==== //depot/projects/netperf_socket/sys/powerpc/powerpc/vm_machdep.c#5 (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/powerpc/powerpc/vm_machdep.c,v 1.99 2004/03/29 19:38:05 peter Exp $
+ * $FreeBSD: src/sys/powerpc/powerpc/vm_machdep.c,v 1.100 2004/03/30 13:57:34 benno Exp $
*/
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -355,7 +355,7 @@
{
struct pcb *pcb;
- pcb = (struct pcb *)((td->td_kstack + td2->td_kstack_pages * PAGE_SIZE -
+ pcb = (struct pcb *)((td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
sizeof(struct pcb)) & ~0x2fU);
td->td_pcb = pcb;
td->td_frame = (struct trapframe *)pcb - 1;
More information about the p4-projects
mailing list