PERFORCE change 96084 for review
John Baldwin
jhb at FreeBSD.org
Tue Apr 25 19:00:42 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=96084
Change 96084 by jhb at jhb_slimer on 2006/04/25 18:59:59
IFC @96080.
Affected files ...
.. //depot/projects/smpng/sys/alpha/conf/GENERIC#55 integrate
.. //depot/projects/smpng/sys/alpha/isa/isa.c#16 integrate
.. //depot/projects/smpng/sys/alpha/pci/apecs_pci.c#5 integrate
.. //depot/projects/smpng/sys/alpha/pci/lca_pci.c#7 integrate
.. //depot/projects/smpng/sys/alpha/pci/pcibus.c#9 integrate
.. //depot/projects/smpng/sys/amd64/amd64/dump_machdep.c#4 integrate
.. //depot/projects/smpng/sys/amd64/amd64/fpu.c#9 integrate
.. //depot/projects/smpng/sys/amd64/amd64/identcpu.c#18 integrate
.. //depot/projects/smpng/sys/amd64/amd64/minidump_machdep.c#1 branch
.. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#36 integrate
.. //depot/projects/smpng/sys/amd64/amd64/nexus.c#18 integrate
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#55 integrate
.. //depot/projects/smpng/sys/amd64/amd64/uma_machdep.c#2 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#43 integrate
.. //depot/projects/smpng/sys/amd64/include/md_var.h#12 integrate
.. //depot/projects/smpng/sys/amd64/include/minidump.h#1 branch
.. //depot/projects/smpng/sys/arm/arm/nexus.c#7 integrate
.. //depot/projects/smpng/sys/arm/arm/pmap.c#27 integrate
.. //depot/projects/smpng/sys/arm/at91/at91.c#4 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0.c#6 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_pci.c#8 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#9 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/obio.c#4 integrate
.. //depot/projects/smpng/sys/boot/arm/at91/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/Makefile.inc#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/Makefile#2 integrate
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/at91rm9200_lowlevel.c#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/at91rm9200_lowlevel.h#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/lib.c#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/lib.h#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/main.c#2 integrate
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/xmodem.c#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0/xmodem.h#2 delete
.. //depot/projects/smpng/sys/boot/arm/at91/boot0iic/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0iic/doit.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0iic/main.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0spi/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0spi/doit.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/boot0spi/main.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootiic/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootiic/README#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootiic/arm_init.S#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootiic/main.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootspi/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootspi/README#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootspi/arm_init.s#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/bootspi/main.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/inc/AT91RM9200.h#3 delete
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/at91rm9200.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/at91rm9200_lowlevel.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/at91rm9200_lowlevel.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/eeprom.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/eeprom.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/emac.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/emac.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/env_vars.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/env_vars.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/getc.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/lib.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/loader_prompt.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/loader_prompt.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/p_string.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/p_string.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/printf.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/putchar.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/tag_list.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/tag_list.h#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/libat91/xmodem.c#1 branch
.. //depot/projects/smpng/sys/boot/arm/at91/linker.cfg#1 branch
.. //depot/projects/smpng/sys/cam/cam.c#7 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_da.c#67 integrate
.. //depot/projects/smpng/sys/conf/NOTES#117 integrate
.. //depot/projects/smpng/sys/conf/files#173 integrate
.. //depot/projects/smpng/sys/conf/files.alpha#39 integrate
.. //depot/projects/smpng/sys/conf/files.amd64#41 integrate
.. //depot/projects/smpng/sys/conf/files.i386#95 integrate
.. //depot/projects/smpng/sys/conf/files.ia64#54 integrate
.. //depot/projects/smpng/sys/conf/files.pc98#81 integrate
.. //depot/projects/smpng/sys/conf/files.powerpc#28 integrate
.. //depot/projects/smpng/sys/conf/options#118 integrate
.. //depot/projects/smpng/sys/conf/options.alpha#14 integrate
.. //depot/projects/smpng/sys/conf/options.amd64#18 integrate
.. //depot/projects/smpng/sys/conf/options.i386#56 integrate
.. //depot/projects/smpng/sys/conf/options.ia64#20 integrate
.. //depot/projects/smpng/sys/conf/options.pc98#55 integrate
.. //depot/projects/smpng/sys/crypto/via/padlock.c#3 integrate
.. //depot/projects/smpng/sys/ddb/db_command.c#28 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi.c#92 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_powerres.c#22 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bge.c#74 integrate
.. //depot/projects/smpng/sys/dev/ciss/ciss.c#45 integrate
.. //depot/projects/smpng/sys/dev/isp/isp.c#39 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_freebsd.c#39 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_freebsd.h#29 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_ioctl.h#15 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_library.c#2 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_pci.c#34 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_sbus.c#13 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_target.c#17 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_target.h#12 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_tpublic.h#8 integrate
.. //depot/projects/smpng/sys/dev/isp/ispmbox.h#20 integrate
.. //depot/projects/smpng/sys/dev/ispfw/asm_2300.h#9 integrate
.. //depot/projects/smpng/sys/dev/mpt/mpt.c#15 integrate
.. //depot/projects/smpng/sys/dev/mpt/mpt_cam.c#8 integrate
.. //depot/projects/smpng/sys/dev/pci/pci_pci.c#28 integrate
.. //depot/projects/smpng/sys/dev/ppc/ppc.c#12 integrate
.. //depot/projects/smpng/sys/dev/ppc/ppc_acpi.c#1 branch
.. //depot/projects/smpng/sys/dev/ppc/ppc_isa.c#1 branch
.. //depot/projects/smpng/sys/dev/ppc/ppc_pci.c#1 branch
.. //depot/projects/smpng/sys/dev/ppc/ppc_puc.c#3 integrate
.. //depot/projects/smpng/sys/dev/ppc/ppcreg.h#2 integrate
.. //depot/projects/smpng/sys/dev/ppc/ppcvar.h#4 integrate
.. //depot/projects/smpng/sys/dev/sab/sab.c#29 delete
.. //depot/projects/smpng/sys/dev/sab/sab82532reg.h#3 delete
.. //depot/projects/smpng/sys/dev/sound/pci/via8233.c#20 integrate
.. //depot/projects/smpng/sys/dev/uart/uart_dev_ns8250.c#12 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli.c#11 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli_crypto.c#3 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#73 integrate
.. //depot/projects/smpng/sys/i386/i386/dump_machdep.c#8 integrate
.. //depot/projects/smpng/sys/i386/i386/identcpu.c#44 integrate
.. //depot/projects/smpng/sys/i386/i386/minidump_machdep.c#1 branch
.. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#100 integrate
.. //depot/projects/smpng/sys/i386/i386/nexus.c#19 integrate
.. //depot/projects/smpng/sys/i386/include/md_var.h#31 integrate
.. //depot/projects/smpng/sys/i386/include/minidump.h#1 branch
.. //depot/projects/smpng/sys/i386/isa/npx.c#57 integrate
.. //depot/projects/smpng/sys/ia64/ia64/nexus.c#12 integrate
.. //depot/projects/smpng/sys/kern/kern_mbuf.c#18 integrate
.. //depot/projects/smpng/sys/kern/kern_rwlock.c#6 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#124 integrate
.. //depot/projects/smpng/sys/kern/serdev_if.m#2 integrate
.. //depot/projects/smpng/sys/kern/subr_bus.c#59 integrate
.. //depot/projects/smpng/sys/kern/subr_rman.c#26 integrate
.. //depot/projects/smpng/sys/kern/subr_sleepqueue.c#27 integrate
.. //depot/projects/smpng/sys/kern/subr_turnstile.c#27 integrate
.. //depot/projects/smpng/sys/kern/uipc_domain.c#16 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket.c#83 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket2.c#51 integrate
.. //depot/projects/smpng/sys/kern/uipc_syscalls.c#75 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#57 integrate
.. //depot/projects/smpng/sys/netinet/in_pcb.c#61 integrate
.. //depot/projects/smpng/sys/netinet/in_pcb.h#41 integrate
.. //depot/projects/smpng/sys/netinet/ip_divert.c#47 integrate
.. //depot/projects/smpng/sys/netinet/ip_input.c#77 integrate
.. //depot/projects/smpng/sys/netinet/raw_ip.c#56 integrate
.. //depot/projects/smpng/sys/netinet/tcp_input.c#85 integrate
.. //depot/projects/smpng/sys/netinet/tcp_subr.c#78 integrate
.. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#48 integrate
.. //depot/projects/smpng/sys/netinet/udp_usrreq.c#66 integrate
.. //depot/projects/smpng/sys/netinet6/frag6.c#10 integrate
.. //depot/projects/smpng/sys/netinet6/in6_ifattach.c#17 integrate
.. //depot/projects/smpng/sys/netinet6/in6_pcb.c#42 integrate
.. //depot/projects/smpng/sys/netinet6/in6_pcb.h#13 integrate
.. //depot/projects/smpng/sys/netinet6/in6_src.c#24 integrate
.. //depot/projects/smpng/sys/netnatm/natm.c#27 integrate
.. //depot/projects/smpng/sys/netnatm/natm_pcb.c#8 integrate
.. //depot/projects/smpng/sys/nfsserver/nfsrvcache.h#5 integrate
.. //depot/projects/smpng/sys/pc98/cbus/ppc.c#4 delete
.. //depot/projects/smpng/sys/pc98/cbus/ppcreg.h#2 delete
.. //depot/projects/smpng/sys/pc98/include/minidump.h#1 branch
.. //depot/projects/smpng/sys/pc98/pc98/machdep.c#12 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/grackle.c#8 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/hrowpic.c#9 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/macio.c#12 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/uninorth.c#11 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/openpic.c#9 integrate
.. //depot/projects/smpng/sys/powerpc/psim/iobus.c#8 integrate
.. //depot/projects/smpng/sys/security/mac_bsdextended/mac_bsdextended.c#19 integrate
.. //depot/projects/smpng/sys/security/mac_bsdextended/mac_bsdextended.h#5 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#66 integrate
.. //depot/projects/smpng/sys/sparc64/conf/NOTES#21 integrate
.. //depot/projects/smpng/sys/sparc64/ebus/ebus.c#23 integrate
.. //depot/projects/smpng/sys/sparc64/pci/psycho.c#38 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#24 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/nexus.c#15 integrate
.. //depot/projects/smpng/sys/sys/bus.h#26 integrate
.. //depot/projects/smpng/sys/sys/eventhandler.h#22 integrate
.. //depot/projects/smpng/sys/sys/param.h#99 integrate
.. //depot/projects/smpng/sys/sys/rwlock.h#3 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#84 integrate
.. //depot/projects/smpng/sys/vm/vm_mmap.c#58 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#74 integrate
.. //depot/projects/smpng/sys/vm/vm_pageq.c#18 integrate
Differences ...
==== //depot/projects/smpng/sys/alpha/conf/GENERIC#55 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.192 2006/01/10 09:19:07 phk Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.193 2006/04/24 08:44:33 delphij Exp $
cpu EV4
cpu EV5
@@ -70,8 +70,6 @@
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
# Debugging for use in -current
@@ -106,6 +104,8 @@
# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device isp # Qlogic family
device ispfw # Firmware module for Qlogic host adapters
device mpt # LSI-Logic MPT-Fusion
==== //depot/projects/smpng/sys/alpha/isa/isa.c#16 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/isa/isa.c,v 1.38 2005/10/25 19:48:45 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/isa/isa.c,v 1.39 2006/04/20 04:16:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -231,6 +231,7 @@
res = rman_reserve_resource(&isa_drq_rman, start, start, 1,
0, child);
+ rman_set_rid(res, *rid);
if (res && !passthrough) {
rle = resource_list_find(rl, type, *rid);
rle->start = rman_get_start(res);
==== //depot/projects/smpng/sys/alpha/pci/apecs_pci.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs_pci.c,v 1.15 2003/08/22 07:20:27 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs_pci.c,v 1.16 2006/04/20 04:16:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -79,12 +79,17 @@
apecs_pcib_alloc_resource(device_t bus, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)
{
+ struct resource *rv = NULL;
+
if ((hwrpb->rpb_type == ST_DEC_2100_A50) &&
(type == SYS_RES_IRQ))
- return isa_alloc_intr(bus, child, start);
+ rv = isa_alloc_intr(bus, child, start);
else
- return alpha_pci_alloc_resource(bus, child, type, rid,
- start, end, count, flags);
+ rv = alpha_pci_alloc_resource(bus, child, type, rid,
+ start, end, count, flags);
+ if (rv != NULL)
+ rman_set_rid(rv, *rid);
+ return (rv);
}
static int
==== //depot/projects/smpng/sys/alpha/pci/lca_pci.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/lca_pci.c,v 1.17 2003/08/22 07:20:27 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/lca_pci.c,v 1.18 2006/04/20 04:16:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -78,11 +78,16 @@
lca_pcib_alloc_resource(device_t bus, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)
{
+ struct resource *rv = NULL;
+
if (type == SYS_RES_IRQ)
- return isa_alloc_intr(bus, child, start);
+ rv = isa_alloc_intr(bus, child, start);
else
- return alpha_pci_alloc_resource(bus, child, type, rid,
- start, end, count, flags);
+ rv = alpha_pci_alloc_resource(bus, child, type, rid,
+ start, end, count, flags);
+ if (rv != NULL)
+ rman_set_rid(rv, *rid);
+ return (rv);
}
static int
==== //depot/projects/smpng/sys/alpha/pci/pcibus.c#9 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/pcibus.c,v 1.37 2005/09/25 20:12:29 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/pcibus.c,v 1.39 2006/04/22 19:04:21 marcel Exp $");
#include "opt_isa.h"
@@ -96,7 +96,7 @@
alpha_platform_alloc_ide_intr(int chan)
{
int irqs[2] = { 14, 15 };
- return isa_alloc_intr(0, 0, irqs[chan]);
+ return (isa_alloc_intr(0, 0, irqs[chan]));
}
int
@@ -230,9 +230,11 @@
#ifdef DEV_ISA
if((start >= ISA_IRQ_OFFSET) &&
(end < ISA_IRQ_OFFSET + ISA_IRQ_LEN)) {
- return isa_alloc_intrs(bus, child,
- start - ISA_IRQ_OFFSET,
- end - ISA_IRQ_OFFSET);
+ rv = isa_alloc_intrs(bus, child,
+ start - ISA_IRQ_OFFSET, end - ISA_IRQ_OFFSET);
+ if (rv != NULL)
+ rman_set_rid(rv, *rid);
+ return (rv);
}
else
#endif
@@ -252,6 +254,7 @@
if (rv == 0)
return 0;
+ rman_set_rid(rv, *rid);
rstart = rman_get_start(rv);
rman_set_bustag(rv, ALPHAPCI_GET_BUSTAG(bus, type));
rman_set_bushandle(rv, rstart);
==== //depot/projects/smpng/sys/amd64/amd64/dump_machdep.c#4 (text+ko) ====
@@ -25,12 +25,13 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/dump_machdep.c,v 1.11 2005/07/02 19:57:30 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/dump_machdep.c,v 1.12 2006/04/21 04:24:50 peter Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/cons.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <vm/vm.h>
@@ -40,6 +41,11 @@
CTASSERT(sizeof(struct kerneldumpheader) == 512);
+int do_minidump = 1;
+TUNABLE_INT("debug.minidump", &do_minidump);
+SYSCTL_INT(_debug, OID_AUTO, minidump, CTLFLAG_RW, &do_minidump, 0,
+ "Enable mini crash dumps");
+
/*
* Don't touch the first SIZEOF_METADATA bytes on the dump device. This
* is to protect us from metadata and to protect metadata from us.
@@ -272,6 +278,10 @@
size_t hdrsz;
int error;
+ if (do_minidump) {
+ minidumpsys(di);
+ return;
+ }
bzero(&ehdr, sizeof(ehdr));
ehdr.e_ident[EI_MAG0] = ELFMAG0;
ehdr.e_ident[EI_MAG1] = ELFMAG1;
==== //depot/projects/smpng/sys/amd64/amd64/fpu.c#9 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.157 2005/03/11 22:16:09 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.158 2006/04/19 07:00:19 cperciva Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -96,6 +96,8 @@
typedef u_char bool_t;
+static void fpu_clean_state(void);
+
int hw_float = 1;
SYSCTL_INT(_hw,HW_FLOATINGPT, floatingpoint,
CTLFLAG_RD, &hw_float, 0,
@@ -407,6 +409,8 @@
PCPU_SET(fpcurthread, curthread);
pcb = PCPU_GET(curpcb);
+ fpu_clean_state();
+
if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) {
/*
* This is the first time this thread has used the FPU,
@@ -474,6 +478,7 @@
s = intr_disable();
if (td == PCPU_GET(fpcurthread)) {
+ fpu_clean_state();
fxrstor(addr);
intr_restore(s);
} else {
@@ -484,6 +489,37 @@
}
/*
+ * On AuthenticAMD processors, the fxrstor instruction does not restore
+ * the x87's stored last instruction pointer, last data pointer, and last
+ * opcode values, except in the rare case in which the exception summary
+ * (ES) bit in the x87 status word is set to 1.
+ *
+ * In order to avoid leaking this information across processes, we clean
+ * these values by performing a dummy load before executing fxrstor().
+ */
+static double dummy_variable = 0.0;
+static void
+fpu_clean_state(void)
+{
+ u_short status;
+
+ /*
+ * Clear the ES bit in the x87 status word if it is currently
+ * set, in order to avoid causing a fault in the upcoming load.
+ */
+ fnstsw(&status);
+ if (status & 0x80)
+ fnclex();
+
+ /*
+ * Load the dummy variable into the x87 stack. This mangles
+ * the x87 stack, but we don't care since we're about to call
+ * fxrstor() anyway.
+ */
+ __asm __volatile("ffree %%st(7); fld %0" : : "m" (dummy_variable));
+}
+
+/*
* This really sucks. We want the acpi version only, but it requires
* the isa_if.h file in order to get the definitions.
*/
==== //depot/projects/smpng/sys/amd64/amd64/identcpu.c#18 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.144 2006/02/15 14:48:59 dwmalone Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.146 2006/04/24 22:56:57 jkim Exp $");
#include "opt_cpu.h"
@@ -233,7 +233,7 @@
"\014<b11>"
"\015<b12>"
"\016CX16" /* CMPXCHG16B Instruction */
- "\017<b14>"
+ "\017XTPR" /* Send Task Priority Messages*/
"\020<b15>"
"\021<b16>"
"\022<b17>"
@@ -360,7 +360,8 @@
else if (strcmp(cpu_vendor, "GenuineIntel") == 0 &&
(cpu_high >= 4)) {
cpuid_count(4, 0, regs);
- cmp = ((regs[0] & 0xfc000000) >> 26) + 1;
+ if ((regs[0] & 0x1f) != 0)
+ cmp = ((regs[0] >> 26) & 0x3f) + 1;
}
if (cmp > 1)
printf("\n Cores per package: %d", cmp);
==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#36 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.271 2006/03/18 19:32:46 ups Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.273 2006/04/25 00:06:37 jkim Exp $");
#include "opt_cpu.h"
#include "opt_kstack_pages.h"
@@ -183,6 +183,7 @@
mp_topology(void)
{
struct cpu_group *group;
+ u_int regs[4];
int logical_cpus;
int apic_id;
int groups;
@@ -195,6 +196,13 @@
logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16;
if (logical_cpus <= 1)
return;
+ /* Nothing to do if reported cores are physical cores. */
+ if (strcmp(cpu_vendor, "GenuineIntel") == 0 && cpu_high >= 4) {
+ cpuid_count(4, 0, regs);
+ if ((regs[0] & 0x1f) != 0 &&
+ logical_cpus <= ((regs[0] >> 26) & 0x3f) + 1)
+ return;
+ }
group = &mp_groups[0];
groups = 1;
for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) {
@@ -385,8 +393,8 @@
* are available, use them.
*/
if (cpu_high >= 4) {
- /* Ask the processor about up to 32 caches. */
- for (i = 0; i < 32; i++) {
+ /* Ask the processor about the L1 cache. */
+ for (i = 0; i < 1; i++) {
cpuid_count(4, i, p);
threads_per_cache = ((p[0] & 0x3ffc000) >> 14) + 1;
if (hyperthreading_cpus < threads_per_cache)
==== //depot/projects/smpng/sys/amd64/amd64/nexus.c#18 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.67 2005/09/25 20:03:41 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.68 2006/04/20 04:16:34 imp Exp $");
/*
* This code implements a `root nexus' for Intel Architecture
@@ -340,7 +340,7 @@
rv = rman_reserve_resource(rm, start, end, count, flags, child);
if (rv == 0)
return 0;
-
+ rman_set_rid(rv, *rid);
if (type == SYS_RES_MEMORY) {
rman_set_bustag(rv, AMD64_BUS_SPACE_MEM);
} else if (type == SYS_RES_IOPORT) {
==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#55 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.545 2006/04/13 03:31:48 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.549 2006/04/21 04:50:18 peter Exp $");
/*
* Manages physical address maps.
@@ -181,7 +181,7 @@
static u_int64_t KPTphys; /* phys addr of kernel level 1 */
static u_int64_t KPDphys; /* phys addr of kernel level 2 */
-static u_int64_t KPDPphys; /* phys addr of kernel level 3 */
+u_int64_t KPDPphys; /* phys addr of kernel level 3 */
u_int64_t KPML4phys; /* phys addr of kernel level 4 */
static u_int64_t DMPDphys; /* phys addr of direct mapped level 2 */
@@ -1547,7 +1547,7 @@
PV_STAT(pv_entry_frees++);
PV_STAT(pv_entry_spare++);
- PV_STAT(pv_entry_count--);
+ pv_entry_count--;
pc = pv_to_chunk(pv);
idx = pv - &pc->pc_pventry[0];
field = idx / 64;
@@ -1565,6 +1565,7 @@
/* entire chunk is free, return it */
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
+ dump_drop_page(m->phys_addr);
vm_page_lock_queues();
vm_page_free(m);
vm_page_unlock_queues();
@@ -1588,7 +1589,7 @@
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
PV_STAT(pv_entry_allocs++);
- PV_STAT(pv_entry_count++);
+ pv_entry_count++;
if (pv_entry_count > pv_entry_high_water)
pagedaemon_wakeup();
pc = TAILQ_FIRST(&pmap->pm_pvchunk);
@@ -1616,6 +1617,7 @@
m = vm_page_alloc(NULL, colour, VM_ALLOC_SYSTEM | VM_ALLOC_NOOBJ);
if (m == NULL) {
if (try) {
+ pv_entry_count--;
PV_STAT(pc_chunk_tryfail++);
return (NULL);
}
@@ -1644,6 +1646,7 @@
PV_STAT(pc_chunk_count++);
PV_STAT(pc_chunk_allocs++);
colour++;
+ dump_add_page(m->phys_addr);
pc = (void *)PHYS_TO_DMAP(m->phys_addr);
pc->pc_pmap = pmap;
pc->pc_map[0] = PC_FREE0 & ~1ul; /* preallocated bit 0 */
@@ -2777,7 +2780,7 @@
/* Mark free */
PV_STAT(pv_entry_frees++);
PV_STAT(pv_entry_spare++);
- PV_STAT(pv_entry_count--);
+ pv_entry_count--;
pc->pc_map[field] |= bitmask;
m->md.pv_list_count--;
TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
@@ -2793,6 +2796,7 @@
PV_STAT(pc_chunk_frees++);
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
+ dump_drop_page(m->phys_addr);
vm_page_lock_queues();
vm_page_free(m);
vm_page_unlock_queues();
==== //depot/projects/smpng/sys/amd64/amd64/uma_machdep.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/uma_machdep.c,v 1.1 2003/10/14 05:51:31 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/uma_machdep.c,v 1.2 2006/04/21 04:24:50 peter Exp $");
#include <sys/param.h>
#include <sys/lock.h>
@@ -44,6 +44,7 @@
{
static vm_pindex_t colour;
vm_page_t m;
+ vm_paddr_t pa;
void *va;
int pflags;
@@ -64,7 +65,9 @@
} else
break;
}
- va = (void *)PHYS_TO_DMAP(m->phys_addr);
+ pa = m->phys_addr;
+ dump_add_page(pa);
+ va = (void *)PHYS_TO_DMAP(pa);
if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0)
pagezero(va);
return (va);
@@ -74,8 +77,11 @@
uma_small_free(void *mem, int size, u_int8_t flags)
{
vm_page_t m;
+ vm_paddr_t pa;
- m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)mem));
+ pa = DMAP_TO_PHYS((vm_offset_t)mem);
+ dump_drop_page(pa);
+ m = PHYS_TO_VM_PAGE(pa);
vm_page_lock_queues();
vm_page_free(m);
vm_page_unlock_queues();
==== //depot/projects/smpng/sys/amd64/conf/GENERIC#43 (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/amd64/conf/GENERIC,v 1.452 2006/04/10 20:04:22 ps Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.453 2006/04/24 08:44:33 delphij Exp $
cpu HAMMER
ident GENERIC
@@ -57,10 +57,6 @@
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
@@ -98,7 +94,11 @@
# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
+options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
==== //depot/projects/smpng/sys/amd64/include/md_var.h#12 (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/amd64/include/md_var.h,v 1.76 2005/10/14 22:52:00 jkim Exp $
+ * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.77 2006/04/21 04:24:50 peter Exp $
*/
#ifndef _MACHINE_MD_VAR_H_
@@ -53,6 +53,8 @@
extern char kstack[];
extern char sigcode[];
extern int szsigcode;
+extern uint64_t *vm_page_dump;
+extern int vm_page_dump_size;
extern struct pcpu __pcpu[];
@@ -61,11 +63,14 @@
struct reg;
struct fpreg;
struct dbreg;
+struct dumperinfo;
void busdma_swi(void);
void cpu_setregs(void);
void doreti_iret(void) __asm(__STRING(doreti_iret));
void doreti_iret_fault(void) __asm(__STRING(doreti_iret_fault));
+void dump_add_page(vm_paddr_t);
+void dump_drop_page(vm_paddr_t);
void initializecpu(void);
void fillw(int /*u_short*/ pat, void *base, size_t cnt);
void fpstate_drop(struct thread *td);
@@ -75,5 +80,6 @@
void pagezero(void *addr);
void setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int ist);
int user_dbreg_trap(void);
+void minidumpsys(struct dumperinfo *);
#endif /* !_MACHINE_MD_VAR_H_ */
==== //depot/projects/smpng/sys/arm/arm/nexus.c#7 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.6 2005/09/25 21:06:49 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.7 2006/04/20 04:12:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -214,6 +214,7 @@
if (rv == 0)
return 0;
+ rman_set_rid(rv, *rid);
rman_set_bustag(rv, (void*)ARM_BUS_SPACE_MEM);
rman_set_bushandle(rv, rman_get_start(rv));
==== //depot/projects/smpng/sys/arm/arm/pmap.c#27 (text+ko) ====
@@ -147,7 +147,7 @@
#include "opt_vm.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.46 2006/04/03 21:16:07 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.47 2006/04/22 22:51:32 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -1204,18 +1204,6 @@
}
/*
- * this routine defines the region(s) of memory that should
- * not be tested for the modified bit.
- */
-static PMAP_INLINE int
-pmap_track_modified(vm_offset_t va)
-{
- if ((va < kmi.clean_sva) || (va >= kmi.clean_eva))
- return 1;
- else
- return 0;
-}
-/*
* PTE_SYNC_CURRENT:
*
* Make sure the pte is written out to RAM.
@@ -1559,8 +1547,7 @@
ptep = &l2b->l2b_kva[l2pte_index(va)];
npte = opte = *ptep;
- if (maskbits & (PVF_WRITE|PVF_MOD) &&
- !pmap_track_modified(pv->pv_va)) {
+ if (maskbits & (PVF_WRITE|PVF_MOD)) {
if ((pv->pv_flags & PVF_NC)) {
/*
* Entry is not cacheable:
@@ -1618,7 +1605,7 @@
}
}
- if (maskbits & PVF_REF && !pmap_track_modified(pv->pv_va)) {
+ if (maskbits & PVF_REF) {
if ((pv->pv_flags & PVF_NC) == 0 &&
(maskbits & (PVF_WRITE|PVF_MOD)) == 0) {
/*
@@ -2056,10 +2043,8 @@
goto out;
}
- if (pmap_track_modified(pv->pv_va)) {
- pg->md.pvh_attrs |= PVF_REF | PVF_MOD;
- vm_page_dirty(pg);
- }
+ pg->md.pvh_attrs |= PVF_REF | PVF_MOD;
+ vm_page_dirty(pg);
pv->pv_flags |= PVF_REF | PVF_MOD;
/*
@@ -3267,8 +3252,7 @@
f = pmap_modify_pv(pg, pm, sva,
PVF_WRITE, 0);
pmap_vac_me_harder(pg, pm, sva);
- if (pmap_track_modified(sva))
- vm_page_dirty(pg);
+ vm_page_dirty(pg);
} else
f = PVF_REF | PVF_EXEC;
@@ -3391,8 +3375,7 @@
* writable from the outset.
*/
nflags |= PVF_MOD;
- if (!(m->md.pvh_attrs & PVF_MOD) &&
- pmap_track_modified(va))
+ if (!(m->md.pvh_attrs & PVF_MOD))
vm_page_dirty(m);
}
if (m && opte)
@@ -3477,8 +3460,11 @@
if ((pve = pmap_get_pv_entry()) == NULL) {
panic("pmap_enter: no pv entries");
}
- if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS)))
+ if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) {
+ KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva,
+ ("pmap_enter: managed mapping within the clean submap"));
pmap_enter_pv(m, pve, pmap, va, nflags);
+ }
}
/*
* Make sure userland mappings get the right permissions
==== //depot/projects/smpng/sys/arm/at91/at91.c#4 (text) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.4 2006/04/06 04:32:29 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.5 2006/04/20 04:12:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -497,6 +497,7 @@
rle->start = rman_get_start(rle->res);
rle->end = rman_get_end(rle->res);
rle->count = count;
+ rman_set_rid(rle->res, *rid);
}
return (rle->res);
}
==== //depot/projects/smpng/sys/arm/sa11x0/sa11x0.c#6 (text+ko) ====
@@ -57,7 +57,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0.c,v 1.5 2005/09/25 21:06:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0.c,v 1.6 2006/04/20 04:12:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -127,6 +127,8 @@
res = rman_reserve_resource(&sa11x0_softc->sa11x0_rman, *rid, *rid,
count, flags, child);
+ if (res != NULL)
+ rman_set_rid(res, *rid);
return (res);
}
==== //depot/projects/smpng/sys/arm/xscale/i80321/i80321_pci.c#8 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_pci.c,v 1.7 2006/04/13 15:07:59 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_pci.c,v 1.8 2006/04/20 04:12:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -380,6 +380,7 @@
rv = rman_reserve_resource(rm, start, end, count, flags, child);
if (rv == NULL)
return (NULL);
+ rman_set_rid(rv, *rid);
if (type != SYS_RES_IRQ) {
if (type == SYS_RES_MEMORY)
bh += (rman_get_start(rv));
==== //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#9 (text+ko) ====
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq80321.c,v 1.10 2005/10/03 14:19:55 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq80321.c,v 1.11 2006/04/20 04:12:02 imp Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -300,10 +300,14 @@
u_long start, u_long end, u_long count, u_int flags)
{
struct i80321_softc *sc = device_get_softc(dev);
-
- if (type == SYS_RES_IRQ)
- return (rman_reserve_resource(&sc->sc_irq_rman,
- start, end, count, flags, child));
+ struct resource *rv;
+
+ if (type == SYS_RES_IRQ) {
+ rv = rman_reserve_resource(&sc->sc_irq_rman,
+ start, end, count, flags, child);
+ if (rv != NULL)
+ rman_set_rid(rv, *rid);
+ }
return (NULL);
}
==== //depot/projects/smpng/sys/arm/xscale/i80321/obio.c#4 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/obio.c,v 1.3 2005/09/25 21:06:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/obio.c,v 1.4 2006/04/20 04:12:02 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -124,6 +124,7 @@
return (NULL);
if (type == SYS_RES_IRQ)
return (rv);
+ rman_set_rid(rv, *rid);
rman_set_bustag(rv, bt);
rman_set_bushandle(rv, bh);
==== //depot/projects/smpng/sys/boot/arm/at91/boot0/Makefile#2 (text) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list