PERFORCE change 59468 for review
Robert Watson
rwatson at FreeBSD.org
Wed Aug 11 20:43:46 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=59468
Change 59468 by rwatson at rwatson_paprika on 2004/08/12 03:43:11
Integrate netperf_socket from CVS:
if_axe added to NOTES
pcic disappears
ngatm updates
acpi pci interrupt routing magic
g_mirror, g_stripe enhancements, etc.
elf64 per-thread core dumping
route allocation now uses a UMA zone
in_localip() now centralized
ip fast forwarding speaks altq
0/NULL cleanup in TCP/IP
if_vr locking fixes
if_fwe now IFF_NEEDSGIANT merged from rwatson_netperf
lockless check of entropy harvest fifo overflow merged from
rwatson_netperf
USB ethernet IFF_NEEDSGIANT merged from rwatson_netperf
in_pcbconnect() and in_pcbconnect_setup() inpcb locking assertions
merged from rwatson_netperf
udp_usrreq free of control mbuf on udp_send() fix merged from
rwatson_netperf
Affected files ...
.. //depot/projects/netperf_socket/sys/alpha/alpha/elf_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/elf_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/vm_machdep.c#10 integrate
.. //depot/projects/netperf_socket/sys/arm/arm/elf_machdep.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/ia32/ia32_sysvec.c#5 integrate
.. //depot/projects/netperf_socket/sys/conf/NOTES#33 integrate
.. //depot/projects/netperf_socket/sys/conf/files#44 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/FREEBSD-Xlist#1 branch
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_conn.c#2 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_dump.c#2 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_user.c#2 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/msg/uni_ie.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/msg/unistruct.h#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_call.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_coord.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_party.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_print.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_reset.c#3 integrate
.. //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_uni.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pci_link.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcib.c#10 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcib_acpi.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcib_pci.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcibvar.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/firewire/if_fwe.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/fxp/if_fxp.c#12 integrate
.. //depot/projects/netperf_socket/sys/dev/pcf/envctrl.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/pcf/pcf_ebus.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/pcf/pcf_isa.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/pcf/pcfvar.h#3 integrate
.. //depot/projects/netperf_socket/sys/dev/pcic/i82365.c#3 delete
.. //depot/projects/netperf_socket/sys/dev/pcic/i82365_isa.c#3 delete
.. //depot/projects/netperf_socket/sys/dev/pcic/i82365reg.h#2 delete
.. //depot/projects/netperf_socket/sys/dev/pcic/i82365var.h#2 delete
.. //depot/projects/netperf_socket/sys/dev/random/randomdev_soft.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_aue.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_axe.c#9 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_cue.c#7 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_kue.c#6 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_rue.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_udav.c#7 integrate
.. //depot/projects/netperf_socket/sys/dev/vx/if_vx_eisa.c#3 integrate
.. //depot/projects/netperf_socket/sys/geom/geom_io.c#6 integrate
.. //depot/projects/netperf_socket/sys/geom/mirror/g_mirror.c#5 integrate
.. //depot/projects/netperf_socket/sys/geom/mirror/g_mirror.h#5 integrate
.. //depot/projects/netperf_socket/sys/geom/stripe/g_stripe.c#8 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/elf_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/ia64/ia64/elf_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/ia64/ia64/machdep.c#9 integrate
.. //depot/projects/netperf_socket/sys/ia64/include/md_var.h#4 integrate
.. //depot/projects/netperf_socket/sys/kern/imgact_elf.c#11 integrate
.. //depot/projects/netperf_socket/sys/kern/sched_4bsd.c#12 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_socket.c#36 integrate
.. //depot/projects/netperf_socket/sys/net/route.c#11 integrate
.. //depot/projects/netperf_socket/sys/netinet/in.c#4 integrate
.. //depot/projects/netperf_socket/sys/netinet/in.h#5 integrate
.. //depot/projects/netperf_socket/sys/netinet/in_pcb.c#14 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_divert.c#12 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_fastfwd.c#8 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_fw2.c#13 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_input.c#18 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_output.c#15 integrate
.. //depot/projects/netperf_socket/sys/netinet/raw_ip.c#11 integrate
.. //depot/projects/netperf_socket/sys/netinet/tcp_hostcache.c#3 integrate
.. //depot/projects/netperf_socket/sys/netinet/tcp_subr.c#16 integrate
.. //depot/projects/netperf_socket/sys/netinet/tcp_syncache.c#11 integrate
.. //depot/projects/netperf_socket/sys/netinet/udp_usrreq.c#11 integrate
.. //depot/projects/netperf_socket/sys/pci/if_vr.c#13 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powermac/grackle.c#6 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powermac/hrowpic.c#5 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powermac/macio.c#4 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powermac/openpic_macio.c#6 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powermac/uninorth.c#4 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/elf_machdep.c#5 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/openpic.c#3 integrate
.. //depot/projects/netperf_socket/sys/powerpc/psim/iobus.c#4 integrate
.. //depot/projects/netperf_socket/sys/powerpc/psim/openpic_iobus.c#5 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/elf_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/sys/imgact_elf.h#2 integrate
.. //depot/projects/netperf_socket/sys/sys/socket.h#9 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/alpha/alpha/elf_machdep.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/elf_machdep.c,v 1.18 2004/05/16 20:00:27 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/elf_machdep.c,v 1.19 2004/08/11 02:35:04 marcel Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -106,6 +106,13 @@
&freebsd_brand_oinfo);
+void
+elf64_dump_thread(struct thread *td __unused, void *dst __unused,
+ size_t *off __unused)
+{
+}
+
+
/* Process one elf relocation with addend. */
static int
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
==== //depot/projects/netperf_socket/sys/amd64/amd64/elf_machdep.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.21 2004/05/17 21:16:49 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.22 2004/08/11 02:35:04 marcel Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -102,6 +102,14 @@
(sysinit_cfunc_t) elf64_insert_brand_entry,
&freebsd_brand_oinfo);
+
+void
+elf64_dump_thread(struct thread *td __unused, void *dst __unused,
+ size_t *off __unused)
+{
+}
+
+
/* Process one elf relocation with addend. */
static int
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
==== //depot/projects/netperf_socket/sys/amd64/amd64/vm_machdep.c#10 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.235 2004/05/26 12:09:36 tmm Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.236 2004/08/11 23:23:05 davidxu Exp $");
#include "opt_isa.h"
#include "opt_cpu.h"
@@ -317,6 +317,7 @@
td->td_frame->tf_rsp =
((register_t)ku->ku_stack.ss_sp + ku->ku_stack.ss_size) & ~0x0f;
td->td_frame->tf_rsp -= 8;
+ td->td_frame->tf_rbp = 0;
td->td_frame->tf_rip = (register_t)ku->ku_func;
/*
==== //depot/projects/netperf_socket/sys/arm/arm/elf_machdep.c#2 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_machdep.c,v 1.2 2004/05/16 20:00:27 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_machdep.c,v 1.3 2004/08/11 02:35:04 marcel Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -102,6 +102,14 @@
(sysinit_cfunc_t) elf32_insert_brand_entry,
&freebsd_brand_oinfo);
+
+void
+elf32_dump_thread(struct thread *td __unused, void *dst __unused,
+ size_t *off __unused)
+{
+}
+
+
/* Process one elf relocation with addend. */
static int
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
==== //depot/projects/netperf_socket/sys/compat/ia32/ia32_sysvec.c#5 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.18 2004/07/16 20:53:00 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.19 2004/08/11 02:35:05 marcel Exp $");
#include "opt_compat.h"
@@ -157,6 +157,14 @@
(sysinit_cfunc_t) elf32_insert_brand_entry,
&ia32_brand_oinfo);
+
+void
+elf32_dump_thread(struct thread *td __unused, void *dst __unused,
+ size_t *off __unused)
+{
+}
+
+
/* XXX may be freebsd32 MI */
static register_t *
ia32_copyout_strings(struct image_params *imgp)
==== //depot/projects/netperf_socket/sys/conf/NOTES#33 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1254 2004/08/03 19:24:53 markm Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1256 2004/08/11 17:22:37 imp Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -2066,9 +2066,6 @@
device cbb
device pccard
device cardbus
-#device pcic ISA attachment currently busted
-#hint.pcic.0.at="isa"
-#hint.pcic.1.at="isa"
#
# SMB bus
@@ -2274,6 +2271,12 @@
# and the SMC 2202USB. Also works with the ADMtek AN986 Pegasus
# eval board.
device aue
+
+# ASIX Electronics AX88172 USB 2.0 ethernet driver. Used in the
+# LinkSys USB200M and various other adapters.
+
+device axe
+
#
# CATC USB-EL1201A USB ethernet. Supports the CATC Netmate
# and Netmate II, and the Belkin F5U111.
==== //depot/projects/netperf_socket/sys/conf/files#44 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.936 2004/08/03 19:24:53 markm Exp $
+# $FreeBSD: src/sys/conf/files,v 1.937 2004/08/11 17:23:32 imp Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -608,8 +608,6 @@
dev/pci/pci_pci.c optional pci
dev/pci/pci_user.c optional pci
dev/pci/pcib_if.m standard
-dev/pcic/i82365.c optional pcic pccard
-dev/pcic/i82365_isa.c optional pcic pccard isa
dev/pdq/if_fea.c optional fea eisa
dev/pdq/if_fpa.c optional fpa pci
dev/pdq/pdq.c optional fea eisa nowerror
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_conn.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Begemot: libunimsg/netnatm/api/cc_conn.c,v 1.1 2004/07/08 08:21:49 brandt Exp $
+ * $Begemot: libunimsg/netnatm/api/cc_conn.c,v 1.2 2004/07/16 18:45:11 brandt Exp $
*
* ATM API as defined per af-saa-0108
*
@@ -139,7 +139,7 @@
if (r == NULL) {
if (msg != NULL)
uni_msg_destroy(msg);
- cc_conn_log(conn, "no memory for cookie");
+ cc_conn_log(conn, "no memory for cookie op=%u", op);
return;
}
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_dump.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Begemot: libunimsg/netnatm/api/cc_dump.c,v 1.1 2004/07/08 08:21:51 brandt Exp $
+ * $Begemot: libunimsg/netnatm/api/cc_dump.c,v 1.3 2004/08/05 07:10:56 brandt Exp $
*
* ATM API as defined per af-saa-0108
*/
@@ -43,7 +43,7 @@
#ifdef _KERNEL
#ifdef __FreeBSD__
-#include <sys/stdarg.h>
+#include <machine/stdarg.h>
#endif
#else /* !_KERNEL */
#include <stdarg.h>
@@ -84,7 +84,7 @@
va_end(ap);
if (n < 0) {
- d->ret = errno;
+ d->ret = CCGETERRNO();
return;
}
if ((size_t)n < d->maxsiz - d->len) {
@@ -105,7 +105,7 @@
va_end(ap);
if (n < 0) {
- d->ret = errno;
+ d->ret = CCGETERRNO();
return;
}
if ((size_t)n >= d->maxsiz) {
@@ -123,18 +123,18 @@
cc_dump_sap(struct dump *d, const struct uni_sap *sap)
{
static const char *const tagtab[] = {
- [UNISVE_ABSENT] "absent",
- [UNISVE_ANY] "any",
- [UNISVE_PRESENT]"present"
+ [UNISVE_ABSENT] = "absent",
+ [UNISVE_ANY] = "any",
+ [UNISVE_PRESENT] = "present"
};
static const char *const plantab[] = {
- [UNI_ADDR_E164] "E164",
- [UNI_ADDR_ATME] "ATME",
+ [UNI_ADDR_E164] = "E164",
+ [UNI_ADDR_ATME] = "ATME",
};
static const char *const hlitab[] = {
- [UNI_BHLI_ISO] "ISO",
- [UNI_BHLI_VENDOR] "VENDOR",
- [UNI_BHLI_USER] "USER"
+ [UNI_BHLI_ISO] = "ISO",
+ [UNI_BHLI_VENDOR] = "VENDOR",
+ [UNI_BHLI_USER] = "USER"
};
u_int i;
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/api/cc_user.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Begemot: libunimsg/netnatm/api/cc_user.c,v 1.2 2004/07/08 09:17:18 brandt Exp $
+ * $Begemot: libunimsg/netnatm/api/cc_user.c,v 1.3 2004/07/16 18:46:55 brandt Exp $
*
* ATM API as defined per af-saa-0108
*
@@ -1297,6 +1297,7 @@
/* connection has disappeared. Send an ok
* to the user and lock whether there is another
* connection at this endpoint */
+ uni_msg_destroy(msg);
cc_user_ok(user, ATMRESP_NONE, NULL, 0);
set_state(user, USER_IN_WAITING);
@@ -1359,6 +1360,7 @@
/* connection has disappeared. Send an error
* to the user and lock whether there is another
* connection at this endpoint */
+ uni_msg_destroy(msg);
cc_user_err(user, ATMERR_PREVIOUSLY_ABORTED);
set_state(user, USER_IN_WAITING);
@@ -1370,15 +1372,14 @@
LIST_FOREACH(newep, &user->cc->user_list, node_link)
if (strcmp(acc->newep, newep->name) == 0)
break;
+ uni_msg_destroy(msg);
if (newep == NULL) {
- uni_msg_destroy(msg);
cc_user_err(user, ATMERR_BAD_ENDPOINT);
return;
}
if (newep->state != USER_NULL || newep->accepted != NULL) {
- uni_msg_destroy(msg);
cc_user_err(user, ATMERR_BAD_STATE);
return;
}
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/msg/uni_ie.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*
* Author: Hartmut Brandt <harti at freebsd.org>
*
- * $Begemot: libunimsg/netnatm/msg/uni_ie.c,v 1.14 2004/07/08 08:22:06 brandt Exp $
+ * $Begemot: libunimsg/netnatm/msg/uni_ie.c,v 1.15 2004/08/05 07:10:59 brandt Exp $
*
* Private definitions for the IE code file.
*
@@ -792,11 +792,11 @@
};
static const char *errtab[] = {
- [UNI_IERR_UNK] "unk", /* unknown IE */
- [UNI_IERR_LEN] "len", /* length error */
- [UNI_IERR_BAD] "bad", /* content error */
- [UNI_IERR_ACC] "acc", /* access element discarded */
- [UNI_IERR_MIS] "mis", /* missing IE */
+ [UNI_IERR_UNK] = "unk", /* unknown IE */
+ [UNI_IERR_LEN] = "len", /* length error */
+ [UNI_IERR_BAD] = "bad", /* content error */
+ [UNI_IERR_ACC] = "acc", /* access element discarded */
+ [UNI_IERR_MIS] = "mis", /* missing IE */
};
u_int i;
@@ -844,7 +844,7 @@
enum uni_diag diag;
} itu_causes[128] = {
-#define D(NAME,VAL,DIAG,STD,STR) [UNI_CAUSE_##NAME] { STR, UNI_DIAG_##DIAG },
+#define D(NAME,VAL,DIAG,STD,STR) [UNI_CAUSE_##NAME] = { STR, UNI_DIAG_##DIAG },
#define N(NAME,VAL,DIAG,STD,STR)
UNI_DECLARE_CAUSE_VALUES
@@ -855,7 +855,7 @@
}, net_causes[128] = {
#define D(NAME,VAL,DIAG,STD,STR)
-#define N(NAME,VAL,DIAG,STD,STR) [UNI_CAUSE_##NAME] { STR, UNI_DIAG_##DIAG },
+#define N(NAME,VAL,DIAG,STD,STR) [UNI_CAUSE_##NAME] = { STR, UNI_DIAG_##DIAG },
UNI_DECLARE_CAUSE_VALUES
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/msg/unistruct.h#3 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Begemot: libunimsg/netnatm/msg/unistruct.h,v 1.6 2004/07/08 08:22:08 brandt Exp $
+ * $Begemot: libunimsg/netnatm/msg/unistruct.h,v 1.7 2004/07/16 18:42:22 brandt Exp $
*
* This file defines all structures that are used by
* API users.
@@ -206,10 +206,11 @@
UNI_ADDR_SCREEN_NET = 0x3,
};
+/* don't use bitfields to get a defined structure layout */
struct uni_addr {
- enum uni_addr_type type;
- enum uni_addr_plan plan;
- u_int len;
+ uint8_t type;
+ uint8_t plan;
+ uint8_t len;
u_char addr[UNI_ADDR_MAXLEN];
};
struct uni_subaddr {
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_call.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*
* Author: Hartmut Brandt <harti at freebsd.org>
*
- * $Begemot: libunimsg/netnatm/sig/sig_call.c,v 1.64 2004/07/08 08:22:19 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_call.c,v 1.65 2004/08/05 07:11:00 brandt Exp $
*
* Call instance handling
*
@@ -51,7 +51,7 @@
static void respond_drop_party_ack(struct call *, struct uni_ie_epref *, u_int);
-#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] "SIG"#NAME,
+#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] = "SIG"#NAME,
static const char *const call_sigs[] = {
DEF_CALL_SIGS
};
@@ -65,27 +65,27 @@
TIMER_FUNC_CALL(t322, t322_func)
const struct callstates callstates[] = {
- [CALLST_NULL] { "NU0", UNI_CALLSTATE_U0 },
- [CALLST_U1] { "U1", UNI_CALLSTATE_U1 },
- [CALLST_U3] { "U3", UNI_CALLSTATE_U3 },
- [CALLST_U4] { "U4", UNI_CALLSTATE_U4 },
- [CALLST_U6] { "U6", UNI_CALLSTATE_U6 },
- [CALLST_U7] { "U7", UNI_CALLSTATE_U7 },
- [CALLST_U8] { "U8", UNI_CALLSTATE_U8 },
- [CALLST_U9] { "U9", UNI_CALLSTATE_U9 },
- [CALLST_U10] { "U10", UNI_CALLSTATE_U10 },
- [CALLST_U11] { "U11", UNI_CALLSTATE_U11 },
- [CALLST_U12] { "U12", UNI_CALLSTATE_U12 },
- [CALLST_N1] { "N1", UNI_CALLSTATE_N1 },
- [CALLST_N3] { "N3", UNI_CALLSTATE_N3 },
- [CALLST_N4] { "N4", UNI_CALLSTATE_N4 },
- [CALLST_N6] { "N6", UNI_CALLSTATE_N6 },
- [CALLST_N7] { "N7", UNI_CALLSTATE_N7 },
- [CALLST_N8] { "N8", UNI_CALLSTATE_N8 },
- [CALLST_N9] { "N9", UNI_CALLSTATE_N9 },
- [CALLST_N10] { "N10", UNI_CALLSTATE_N10 },
- [CALLST_N11] { "N11", UNI_CALLSTATE_N11 },
- [CALLST_N12] { "N12", UNI_CALLSTATE_N12 },
+ [CALLST_NULL] = { "NU0", UNI_CALLSTATE_U0 },
+ [CALLST_U1] = { "U1", UNI_CALLSTATE_U1 },
+ [CALLST_U3] = { "U3", UNI_CALLSTATE_U3 },
+ [CALLST_U4] = { "U4", UNI_CALLSTATE_U4 },
+ [CALLST_U6] = { "U6", UNI_CALLSTATE_U6 },
+ [CALLST_U7] = { "U7", UNI_CALLSTATE_U7 },
+ [CALLST_U8] = { "U8", UNI_CALLSTATE_U8 },
+ [CALLST_U9] = { "U9", UNI_CALLSTATE_U9 },
+ [CALLST_U10] = { "U10", UNI_CALLSTATE_U10 },
+ [CALLST_U11] = { "U11", UNI_CALLSTATE_U11 },
+ [CALLST_U12] = { "U12", UNI_CALLSTATE_U12 },
+ [CALLST_N1] = { "N1", UNI_CALLSTATE_N1 },
+ [CALLST_N3] = { "N3", UNI_CALLSTATE_N3 },
+ [CALLST_N4] = { "N4", UNI_CALLSTATE_N4 },
+ [CALLST_N6] = { "N6", UNI_CALLSTATE_N6 },
+ [CALLST_N7] = { "N7", UNI_CALLSTATE_N7 },
+ [CALLST_N8] = { "N8", UNI_CALLSTATE_N8 },
+ [CALLST_N9] = { "N9", UNI_CALLSTATE_N9 },
+ [CALLST_N10] = { "N10", UNI_CALLSTATE_N10 },
+ [CALLST_N11] = { "N11", UNI_CALLSTATE_N11 },
+ [CALLST_N12] = { "N12", UNI_CALLSTATE_N12 },
};
static void unx_send_add_party_rej(struct call *c, struct uni_all *u);
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_coord.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*
* Author: Hartmut Brandt <harti at freebsd.org>
*
- * $Begemot: libunimsg/netnatm/sig/sig_coord.c,v 1.11 2004/07/08 08:22:20 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_coord.c,v 1.12 2004/08/05 07:11:01 brandt Exp $
*
* Coordinator
*/
@@ -40,7 +40,7 @@
#include <netnatm/sig/unipriv.h>
#include <netnatm/sig/unimkmsg.h>
-#define STR(S) [S] #S
+#define STR(S) [S] = #S
static const char *const cunames[] = {
STR(CU_STAT0),
STR(CU_STAT1),
@@ -48,7 +48,7 @@
STR(CU_STAT3),
};
-#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] "SIG"#NAME,
+#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] = "SIG"#NAME,
static const char *const coord_sigs[] = {
DEF_COORD_SIGS
};
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_party.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*
* Author: Hartmut Brandt <harti at freebsd.org>
*
- * $Begemot: libunimsg/netnatm/sig/sig_party.c,v 1.17 2004/07/08 08:22:21 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_party.c,v 1.18 2004/08/05 07:11:01 brandt Exp $
*
* Party instance handling
*/
@@ -44,7 +44,7 @@
static void drop_partyE(struct party *p);
static int epstate_compat(struct party *, enum uni_epstate);
-#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] "SIG"#NAME,
+#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] = "SIG"#NAME,
static const char *const party_sigs[] = {
DEF_PARTY_SIGS
};
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_print.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
* Author: Hartmut Brandt <harti at freebsd.org>
* Kendy Kutzner <kutzner at fokus.fraunhofer.de>
*
- * $Begemot: libunimsg/netnatm/sig/sig_print.c,v 1.5 2004/07/08 08:22:22 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_print.c,v 1.6 2004/08/05 07:11:02 brandt Exp $
*/
#include <sys/types.h>
@@ -56,7 +56,7 @@
uni_strerr(u_int err)
{
static const char *const errstr[] = {
-#define DEF(NAME, VAL, STR) [UNIAPI_##NAME] STR,
+#define DEF(NAME, VAL, STR) [UNIAPI_##NAME] = STR,
UNIAPI_DEF_ERRORS(DEF)
#undef DEF
};
@@ -69,7 +69,7 @@
return (errstr[err]);
}
-#define D(M) [M] #M
+#define D(M) [M] = #M
static const char *const msgs[] = {
D(UNIAPI_ERROR),
D(UNIAPI_CALL_CREATED),
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_reset.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Begemot: libunimsg/netnatm/sig/sig_reset.c,v 1.10 2004/07/08 08:22:22 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_reset.c,v 1.11 2004/08/05 07:11:03 brandt Exp $
*
* Reset-start and reset-respond
*/
@@ -60,13 +60,13 @@
static int restart_forward(struct uni *, const struct uni_all *);
-#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] "SIG"#NAME,
+#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] = "SIG"#NAME,
static const char *const start_sigs[] = {
DEF_START_SIGS
};
#undef DEF_PRIV_SIG
-#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] "SIG"#NAME,
+#define DEF_PRIV_SIG(NAME, FROM) [SIG##NAME] = "SIG"#NAME,
static const char *const respond_sigs[] = {
DEF_RESPOND_SIGS
};
==== //depot/projects/netperf_socket/sys/contrib/ngatm/netnatm/sig/sig_uni.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*
* Author: Hartmut Brandt <harti at freebsd.org>
*
- * $Begemot: libunimsg/netnatm/sig/sig_uni.c,v 1.10 2004/07/08 08:22:23 brandt Exp $
+ * $Begemot: libunimsg/netnatm/sig/sig_uni.c,v 1.11 2004/08/05 07:11:03 brandt Exp $
*
* Instance handling
*/
@@ -45,7 +45,7 @@
UNICORE
#endif
-#define STR(S) [S] #S
+#define STR(S) [S] = #S
static const char *custat_names[] = {
STR(CU_STAT0),
STR(CU_STAT1),
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi_pci_link.c#8 (text+ko) ====
@@ -24,11 +24,8 @@
* SUCH DAMAGE.
*/
-/* XXX Uncomment this if you have new PCI IRQ problems starting 2004/8/5. */
-/* #define ACPI_OLD_PCI_LINK 1 */
-
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci_link.c,v 1.18 2004/08/06 04:50:56 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci_link.c,v 1.21 2004/08/12 02:06:19 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -39,43 +36,27 @@
#include <dev/acpica/acpivar.h>
#include <dev/acpica/acpi_pcibvar.h>
+#include <dev/pci/pcivar.h>
+#include "pcib_if.h"
+
/* Hooks for the ACPI CA debugging infrastructure. */
#define _COMPONENT ACPI_BUS
ACPI_MODULE_NAME("PCI_LINK")
-#define MAX_POSSIBLE_INTERRUPTS 16
-#define MAX_ISA_INTERRUPTS 16
-#define MAX_ACPI_INTERRUPTS 255
-
-struct acpi_pci_link_entry {
- TAILQ_ENTRY(acpi_pci_link_entry) links;
- ACPI_HANDLE handle;
- UINT8 current_irq;
- UINT8 initial_irq;
- ACPI_RESOURCE possible_resources;
- UINT8 number_of_interrupts;
- UINT8 interrupts[MAX_POSSIBLE_INTERRUPTS];
- UINT8 sorted_irq[MAX_POSSIBLE_INTERRUPTS];
- int references;
- int priority;
-};
-
TAILQ_HEAD(acpi_pci_link_entries, acpi_pci_link_entry);
static struct acpi_pci_link_entries acpi_pci_link_entries;
-struct acpi_prt_entry {
- TAILQ_ENTRY(acpi_prt_entry) links;
- device_t pcidev;
- int busno;
- ACPI_PCI_ROUTING_TABLE prt;
- struct acpi_pci_link_entry *pci_link;
-};
-
TAILQ_HEAD(acpi_prt_entries, acpi_prt_entry);
static struct acpi_prt_entries acpi_prt_entries;
static int irq_penalty[MAX_ACPI_INTERRUPTS];
+static int acpi_pci_link_is_valid_irq(struct acpi_pci_link_entry *link,
+ UINT8 irq);
+static void acpi_pci_link_update_irq_penalty(device_t dev, int busno);
+static void acpi_pci_link_set_bootdisabled_priority(void);
+static void acpi_pci_link_fixup_bootdisabled_link(void);
+
/*
* PCI link object management
*/
@@ -137,27 +118,31 @@
UINT8 i;
ACPI_RESOURCE_IRQ *Irq;
ACPI_RESOURCE_EXT_IRQ *ExtIrq;
+ struct acpi_pci_link_entry *link;
if (entry == NULL || entry->pci_link == NULL)
return;
+ link = entry->pci_link;
- printf("%s irq %3d: ", acpi_name(entry->pci_link->handle),
- entry->pci_link->current_irq);
+ printf("%s irq%c%2d: ", acpi_name(link->handle),
+ (link->flags & ACPI_LINK_ROUTED) ? '*' : ' ', link->current_irq);
printf("[");
- for (i = 0; i < entry->pci_link->number_of_interrupts; i++)
- printf("%3d", entry->pci_link->interrupts[i]);
- printf("] ");
+ if (link->number_of_interrupts)
+ printf("%2d", link->interrupts[0]);
+ for (i = 1; i < link->number_of_interrupts; i++)
+ printf("%3d", link->interrupts[i]);
+ printf("] %2d+ ", link->initial_irq);
- switch (entry->pci_link->possible_resources.Id) {
+ switch (link->possible_resources.Id) {
case ACPI_RSTYPE_IRQ:
- Irq = &entry->pci_link->possible_resources.Data.Irq;
+ Irq = &link->possible_resources.Data.Irq;
acpi_pci_link_dump_polarity(Irq->ActiveHighLow);
acpi_pci_link_dump_trigger(Irq->EdgeLevel);
acpi_pci_link_dump_sharemode(Irq->SharedExclusive);
break;
case ACPI_RSTYPE_EXT_IRQ:
- ExtIrq = &entry->pci_link->possible_resources.Data.ExtendedIrq;
+ ExtIrq = &link->possible_resources.Data.ExtendedIrq;
acpi_pci_link_dump_polarity(ExtIrq->ActiveHighLow);
acpi_pci_link_dump_trigger(ExtIrq->EdgeLevel);
acpi_pci_link_dump_sharemode(ExtIrq->SharedExclusive);
@@ -370,17 +355,33 @@
buf.Length = ACPI_ALLOCATE_BUFFER;
bzero(link, sizeof(struct acpi_pci_link_entry));
-
link->handle = handle;
+ /*
+ * Get the IRQ configured at boot-time. If successful, set this
+ * as the initial IRQ.
+ */
error = acpi_pci_link_get_current_irq(link, &link->current_irq);
- if (ACPI_FAILURE(error)) {
+ if (ACPI_SUCCESS(error)) {
+ link->initial_irq = link->current_irq;
+ } else {
ACPI_DEBUG_PRINT((ACPI_DB_WARN,
"couldn't get current IRQ from interrupt link %s - %s\n",
acpi_name(handle), AcpiFormatException(error)));
+ link->initial_irq = 0;
}
- link->initial_irq = link->current_irq;
+ /*
+ * Try to disable this link. If successful, set the current IRQ to
+ * zero and flags to indicate this link is not routed. If we can't
+ * run _DIS (i.e., the method doesn't exist), assume the initial
+ * IRQ was routed by the BIOS.
+ */
+ if (ACPI_SUCCESS(AcpiEvaluateObject(handle, "_DIS", NULL, NULL))) {
+ link->current_irq = 0;
+ link->flags = ACPI_LINK_NONE;
+ } else
+ link->flags = ACPI_LINK_ROUTED;
error = AcpiGetPossibleResources(handle, &buf);
if (ACPI_FAILURE(error)) {
@@ -396,6 +397,7 @@
goto out;
}
+ /* XXX This only handles one resource, ignoring SourceIndex. */
resources = (ACPI_RESOURCE *) buf.Pointer;
bcopy(resources, &link->possible_resources,
sizeof(link->possible_resources));
@@ -417,6 +419,19 @@
goto out;
}
+ /*
+ * If the initial IRQ is invalid (not in _PRS), set it to 0 and
+ * mark this link as not routed. We won't use it as the preferred
+ * interrupt later when we route.
+ */
+ if (!acpi_pci_link_is_valid_irq(link, link->initial_irq) &&
+ link->initial_irq != 0) {
+ printf("ACPI link %s has invalid initial irq %d, ignoring\n",
+ acpi_name(handle), link->initial_irq);
+ link->initial_irq = 0;
+ link->flags = ACPI_LINK_NONE;
+ }
+
link->references++;
TAILQ_INSERT_TAIL(&acpi_pci_link_entries, link, links);
@@ -442,73 +457,75 @@
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- if (prt == NULL || prt->Source == NULL || prt->Source[0] == '\0') {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "couldn't handle this routing table - hardwired\n"));
+ if (prt == NULL) {
+ device_printf(pcidev, "NULL PRT entry\n");
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- error = AcpiGetHandle(acpi_get_handle(pcidev), prt->Source, &handle);
- if (ACPI_FAILURE(error)) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "couldn't get handle - %s\n",
- AcpiFormatException(error)));
- return_ACPI_STATUS (error);
- }
-
- error = acpi_pci_link_get_object_status(handle, &sta);
- if (ACPI_FAILURE(error)) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "couldn't get object status %s - %s\n",
- acpi_name(handle), AcpiFormatException(error)));
- return_ACPI_STATUS (error);
- }
-
- /*
- * PCI link status (_STA) is unreliable. Many systems return
- * erroneous values so we ignore it.
- */
- if ((sta & (ACPI_STA_PRESENT | ACPI_STA_FUNCTIONAL)) == 0) {
-#ifndef ACPI_OLD_PCI_LINK
- device_printf(pcidev, "acpi PRT ignoring status for %s\n",
- acpi_name(handle));
-#else
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "interrupt link is not functional - %s\n",
- acpi_name(handle)));
- return_ACPI_STATUS (AE_ERROR);
-#endif /* !ACPI_OLD_PCI_LINK */
- }
-
+ /* Bail out if attempting to add a duplicate PRT entry. */
TAILQ_FOREACH(entry, &acpi_prt_entries, links) {
if (entry->busno == busno &&
entry->prt.Address == prt->Address &&
entry->prt.Pin == prt->Pin) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "interrupt link entry already exists - %s\n",
- acpi_name(handle)));
+ "PRT entry already exists\n"));
return_ACPI_STATUS (AE_ALREADY_EXISTS);
}
}
+ /* Allocate and initialize our new PRT entry. */
entry = AcpiOsAllocate(sizeof(struct acpi_prt_entry));
if (entry == NULL) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "couldn't allocate memory - %s\n", acpi_name(handle)));
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "can't allocate memory\n"));
return_ACPI_STATUS (AE_NO_MEMORY);
}
bzero(entry, sizeof(struct acpi_prt_entry));
+ /*
+ * If the source link is NULL, then this IRQ is hardwired so skip
+ * initializing the link but still add it to the list.
+ */
+ if (prt->Source[0] != '\0') {
+ /* Get a handle for the link source. */
+ error = AcpiGetHandle(acpi_get_handle(pcidev), prt->Source,
+ &handle);
+ if (ACPI_FAILURE(error)) {
+ device_printf(pcidev, "get handle for %s - %s\n",
+ prt->Source, AcpiFormatException(error));
+ goto out;
+ }
+
+ error = acpi_pci_link_get_object_status(handle, &sta);
+ if (ACPI_FAILURE(error)) {
+ device_printf(pcidev, "can't get status for %s - %s\n",
+ acpi_name(handle), AcpiFormatException(error));
+ goto out;
+ }
+
+ /* Probe/initialize the link. */
+ error = acpi_pci_link_add_link(handle, entry);
+ if (ACPI_FAILURE(error)) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+ "couldn't add _PRT entry to link %s - %s\n",
+ acpi_name(handle), AcpiFormatException(error)));
+ goto out;
+ }
+ }
+
entry->pcidev = pcidev;
entry->busno = busno;
bcopy(prt, &entry->prt, sizeof(entry->prt));
- error = acpi_pci_link_add_link(handle, entry);
- if (ACPI_FAILURE(error)) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
- "couldn't add _PRT entry to link %s - %s\n",
- acpi_name(handle), AcpiFormatException(error)));
- goto out;
- }
+ /*
+ * Make sure the Source value is null-terminated. It is really a
+ * variable-length string (with a fixed size in the struct) so when
+ * we copy the entire struct, we truncate the string. Instead of
+ * trying to make a variable-sized PRT object to handle the string,
+ * we store its handle in prt_source. Callers should use that to
+ * look up the link object.
+ */
+ entry->prt.Source[sizeof(prt->Source) - 1] = '\0';
+ entry->prt_source = handle;
TAILQ_INSERT_TAIL(&acpi_prt_entries, entry, links);
error = AE_OK;
@@ -520,6 +537,12 @@
return_ACPI_STATUS (error);
}
+/*
+ * Look up the given interrupt in the list of possible settings for
+ * this link. We don't special-case the initial link setting. Some
+ * systems return current settings that are outside the list of valid
+ * settings so only allow choices explicitly specified in _PRS.
+ */
static int
acpi_pci_link_is_valid_irq(struct acpi_pci_link_entry *link, UINT8 irq)
{
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list