PERFORCE change 70540 for review

John Baldwin jhb at FreeBSD.org
Mon Feb 7 11:51:37 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=70540

Change 70540 by jhb at jhb_slimer on 2005/02/07 19:51:24

	IFC @70538.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#77 integrate
.. //depot/projects/smpng/sys/alpha/include/cpuconf.h#4 integrate
.. //depot/projects/smpng/sys/alpha/isa/isa_dma.c#8 integrate
.. //depot/projects/smpng/sys/alpha/pci/lca.c#7 integrate
.. //depot/projects/smpng/sys/alpha/pci/lcareg.h#3 integrate
.. //depot/projects/smpng/sys/amd64/amd64/legacy.c#6 integrate
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#35 integrate
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#41 integrate
.. //depot/projects/smpng/sys/amd64/conf/NOTES#11 integrate
.. //depot/projects/smpng/sys/amd64/isa/isa_dma.c#8 integrate
.. //depot/projects/smpng/sys/arm/arm/machdep.c#9 integrate
.. //depot/projects/smpng/sys/arm/include/cpu.h#4 integrate
.. //depot/projects/smpng/sys/bsm/audit_kevents.h#1 branch
.. //depot/projects/smpng/sys/coda/coda_vnops.c#21 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ipc.c#19 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_misc.c#53 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_stats.c#22 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_util.c#13 integrate
.. //depot/projects/smpng/sys/conf/Makefile.powerpc#26 integrate
.. //depot/projects/smpng/sys/conf/NOTES#92 integrate
.. //depot/projects/smpng/sys/conf/files#135 integrate
.. //depot/projects/smpng/sys/conf/files.i386#75 integrate
.. //depot/projects/smpng/sys/conf/files.pc98#70 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#42 integrate
.. //depot/projects/smpng/sys/conf/options#93 integrate
.. //depot/projects/smpng/sys/conf/options.pc98#44 integrate
.. //depot/projects/smpng/sys/contrib/dev/oltr/if_oltr.c#12 integrate
.. //depot/projects/smpng/sys/contrib/dev/oltr/if_oltr_isa.c#1 branch
.. //depot/projects/smpng/sys/contrib/dev/oltr/if_oltr_pci.c#1 branch
.. //depot/projects/smpng/sys/contrib/dev/oltr/if_oltrvar.h#1 branch
.. //depot/projects/smpng/sys/dev/acpica/acpi.c#78 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#30 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_package.c#4 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_perf.c#1 branch
.. //depot/projects/smpng/sys/dev/acpica/acpi_throttle.c#1 branch
.. //depot/projects/smpng/sys/dev/acpica/acpivar.h#51 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.c#66 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbus.c#23 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbus_cis.c#23 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbus_cis.h#8 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbusvar.h#9 integrate
.. //depot/projects/smpng/sys/dev/cpufreq/ichss.c#1 branch
.. //depot/projects/smpng/sys/dev/em/if_em.c#44 integrate
.. //depot/projects/smpng/sys/dev/fe/mb86960.h#1 branch
.. //depot/projects/smpng/sys/dev/hme/if_hme.c#21 integrate
.. //depot/projects/smpng/sys/dev/ic/i8237.h#2 integrate
.. //depot/projects/smpng/sys/dev/ieee488/ibfoo_int.h#1 branch
.. //depot/projects/smpng/sys/dev/ieee488/pcii.c#1 branch
.. //depot/projects/smpng/sys/dev/ieee488/ugpib.h#1 branch
.. //depot/projects/smpng/sys/dev/ieee488/upd7210.c#1 branch
.. //depot/projects/smpng/sys/dev/ieee488/upd7210.h#1 branch
.. //depot/projects/smpng/sys/dev/ncv/ncr53c500_pccard.c#16 integrate
.. //depot/projects/smpng/sys/dev/nsp/nsp_pccard.c#13 integrate
.. //depot/projects/smpng/sys/dev/owi/if_owi_pccard.c#4 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccarddevs#42 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#51 integrate
.. //depot/projects/smpng/sys/dev/random/probe.c#2 integrate
.. //depot/projects/smpng/sys/dev/ray/if_ray.c#18 integrate
.. //depot/projects/smpng/sys/dev/sio/sio.c#52 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/cmi.c#24 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/maestro.c#14 integrate
.. //depot/projects/smpng/sys/dev/streams/streams.c#22 integrate
.. //depot/projects/smpng/sys/dev/usb/hid.c#9 integrate
.. //depot/projects/smpng/sys/dev/vx/if_vx.c#18 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#32 integrate
.. //depot/projects/smpng/sys/fs/nullfs/null_vnops.c#20 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_subr.c#24 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_vnops.c#24 integrate
.. //depot/projects/smpng/sys/geom/gate/g_gate.c#9 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#95 integrate
.. //depot/projects/smpng/sys/i386/conf/PAE#11 integrate
.. //depot/projects/smpng/sys/i386/i386/legacy.c#9 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#88 integrate
.. //depot/projects/smpng/sys/i386/i386/p4tcc.c#5 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#81 integrate
.. //depot/projects/smpng/sys/i386/isa/clock.c#37 integrate
.. //depot/projects/smpng/sys/i386/isa/isa_dma.c#10 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_machdep.c#29 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_sysvec.c#43 integrate
.. //depot/projects/smpng/sys/ia64/conf/NOTES#5 integrate
.. //depot/projects/smpng/sys/ia64/ia64/machdep.c#90 integrate
.. //depot/projects/smpng/sys/ia64/isa/isa_dma.c#7 integrate
.. //depot/projects/smpng/sys/isa/isavar.h#8 integrate
.. //depot/projects/smpng/sys/kern/cpufreq_if.m#1 branch
.. //depot/projects/smpng/sys/kern/kern_cpu.c#1 branch
.. //depot/projects/smpng/sys/kern/kern_descrip.c#77 integrate
.. //depot/projects/smpng/sys/kern/kern_idle.c#24 integrate
.. //depot/projects/smpng/sys/kern/kern_mbuf.c#4 integrate
.. //depot/projects/smpng/sys/kern/kern_sysctl.c#45 integrate
.. //depot/projects/smpng/sys/kern/kern_time.c#32 integrate
.. //depot/projects/smpng/sys/kern/kern_timeout.c#23 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#51 integrate
.. //depot/projects/smpng/sys/kern/sysv_msg.c#27 integrate
.. //depot/projects/smpng/sys/kern/vfs_bio.c#74 integrate
.. //depot/projects/smpng/sys/kern/vfs_default.c#36 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#24 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#45 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#96 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#83 integrate
.. //depot/projects/smpng/sys/kern/vnode_if.src#23 integrate
.. //depot/projects/smpng/sys/libkern/gets.c#1 branch
.. //depot/projects/smpng/sys/libkern/strlcat.c#4 integrate
.. //depot/projects/smpng/sys/libkern/strlcpy.c#4 integrate
.. //depot/projects/smpng/sys/modules/Makefile#90 integrate
.. //depot/projects/smpng/sys/modules/acpi/Makefile#25 integrate
.. //depot/projects/smpng/sys/modules/acpi/acpi_perf/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/cpufreq/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/netgraph/Makefile#19 integrate
.. //depot/projects/smpng/sys/modules/netgraph/ipfw/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/oltr/Makefile#5 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_output.c#11 integrate
.. //depot/projects/smpng/sys/netgraph/atm/ng_atm.c#11 integrate
.. //depot/projects/smpng/sys/netgraph/netflow/netflow.c#5 integrate
.. //depot/projects/smpng/sys/netgraph/ng_device.c#14 integrate
.. //depot/projects/smpng/sys/netgraph/ng_eiface.c#16 integrate
.. //depot/projects/smpng/sys/netgraph/ng_eiface.h#6 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ether.c#22 integrate
.. //depot/projects/smpng/sys/netgraph/ng_fec.c#12 integrate
.. //depot/projects/smpng/sys/netgraph/ng_gif.c#12 integrate
.. //depot/projects/smpng/sys/netgraph/ng_iface.c#19 integrate
.. //depot/projects/smpng/sys/netgraph/ng_iface.h#6 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ipfw.c#1 branch
.. //depot/projects/smpng/sys/netgraph/ng_ipfw.h#1 branch
.. //depot/projects/smpng/sys/netgraph/ng_message.h#11 integrate
.. //depot/projects/smpng/sys/netgraph/ng_sample.c#11 integrate
.. //depot/projects/smpng/sys/netgraph/ng_socket.c#28 integrate
.. //depot/projects/smpng/sys/netgraph/ng_sppp.c#6 integrate
.. //depot/projects/smpng/sys/netgraph/ng_sppp.h#3 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw.h#27 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#49 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw_pfil.c#11 integrate
.. //depot/projects/smpng/sys/netinet/tcp_subr.c#64 integrate
.. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#37 integrate
.. //depot/projects/smpng/sys/netinet/tcp_var.h#33 integrate
.. //depot/projects/smpng/sys/netinet6/raw_ip6.c#32 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_nfsiod.c#16 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#76 integrate
.. //depot/projects/smpng/sys/pc98/pc98/isa_dma.c#8 integrate
.. //depot/projects/smpng/sys/pc98/pc98/sio.c#50 integrate
.. //depot/projects/smpng/sys/powerpc/include/atomic.h#5 integrate
.. //depot/projects/smpng/sys/powerpc/include/bus.h#15 integrate
.. //depot/projects/smpng/sys/powerpc/include/hid.h#3 integrate
.. //depot/projects/smpng/sys/powerpc/include/spr.h#6 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/clock.c#15 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/cpu.c#5 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#58 integrate
.. //depot/projects/smpng/sys/sparc64/isa/isa_dma.c#2 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#72 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/pmap.c#57 integrate
.. //depot/projects/smpng/sys/sys/callout.h#9 integrate
.. //depot/projects/smpng/sys/sys/cpu.h#1 branch
.. //depot/projects/smpng/sys/sys/file.h#22 integrate
.. //depot/projects/smpng/sys/sys/kernel.h#30 integrate
.. //depot/projects/smpng/sys/sys/libkern.h#16 integrate
.. //depot/projects/smpng/sys/sys/param.h#77 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#16 integrate
.. //depot/projects/smpng/sys/sys/sysctl.h#33 integrate
.. //depot/projects/smpng/sys/sys/systm.h#61 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#57 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_softdep.c#40 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#47 integrate
.. //depot/projects/smpng/sys/vm/vm_zeroidle.c#25 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#77 (text+ko) ====

@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.228 2005/01/05 20:05:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.232 2005/02/06 01:55:06 njl Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -97,60 +97,63 @@
 #include "opt_maxmem.h"
 
 #include <sys/param.h>
+#include <sys/proc.h>
 #include <sys/systm.h>
+#include <sys/bio.h>
+#include <sys/buf.h>
+#include <sys/bus.h>
+#include <sys/cons.h>
+#include <sys/cpu.h>
 #include <sys/eventhandler.h>
+#include <sys/exec.h>
 #include <sys/imgact.h>
 #include <sys/kdb.h>
-#include <sys/sysproto.h>
+#include <sys/kernel.h>
 #include <sys/ktr.h>
-#include <sys/signalvar.h>
-#include <sys/kernel.h>
-#include <sys/proc.h>
+#include <sys/linker.h>
 #include <sys/lock.h>
+#include <sys/malloc.h>
+#include <sys/mbuf.h>
+#include <sys/msgbuf.h>
 #include <sys/mutex.h>
 #include <sys/pcpu.h>
-#include <sys/malloc.h>
+#include <sys/ptrace.h>
 #include <sys/reboot.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
-#include <sys/bus.h>
-#include <sys/cons.h>
-#include <sys/mbuf.h>
-#include <sys/vmmeter.h>
-#include <sys/msgbuf.h>
-#include <sys/exec.h>
+#include <sys/signalvar.h>
 #include <sys/smp.h>
 #include <sys/sysctl.h>
+#include <sys/sysproto.h>
+#include <sys/ucontext.h>
 #include <sys/uio.h>
-#include <sys/linker.h>
-#include <sys/cons.h>
+#include <sys/vmmeter.h>
+#include <sys/vnode.h>
+
 #include <net/netisr.h>
+
 #include <vm/vm.h>
+#include <vm/vm_extern.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_page.h>
 #include <vm/vm_map.h>
-#include <vm/vm_extern.h>
 #include <vm/vm_object.h>
 #include <vm/vm_pager.h>
-#include <sys/ptrace.h>
-#include <sys/ucontext.h>
+
+#include <machine/bootinfo.h>
+#include <machine/chipset.h>
 #include <machine/clock.h>
+#include <machine/cpuconf.h>
+#include <machine/elf.h>
+#include <machine/fpu.h>
 #include <machine/md_var.h>
-#include <machine/fpu.h>
 #include <machine/pal.h>
-#include <machine/cpuconf.h>
-#include <machine/bootinfo.h>
 #include <machine/pcb.h>
+#include <machine/prom.h>
 #include <machine/rpb.h>
-#include <machine/prom.h>
-#include <machine/chipset.h>
+#include <machine/sigframe.h>
 #include <machine/vmparam.h>
-#include <machine/elf.h>
+
 #include <alpha/alpha/db_instruction.h>
-#include <sys/vnode.h>
-#include <machine/sigframe.h>
 
-
 u_int64_t cycles_per_usec;
 u_int32_t cycles_per_sec;
 int cold = 1;
@@ -1718,6 +1721,14 @@
 {
 }
 
+/* Get current clock frequency for the given cpu id. */
+int
+cpu_est_clockrate(int cpu_id, uint64_t *rate)
+{
+
+	return (ENXIO);
+}
+
 /*
  * Shutdown the CPU as much as possible
  */
@@ -1727,10 +1738,18 @@
 	prom_halt(1);
 }
 
+static int	cpu_idle_hlt = 1;
+SYSCTL_INT(_machdep, OID_AUTO, cpu_idle_hlt, CTLFLAG_RW,
+    &cpu_idle_hlt, 0, "Idle loop HLT enable");
+
+/*
+ * call platform specific code to halt (until next interrupt) for the idle loop
+ */
 void
 cpu_idle(void)
 {
-	/* Insert code to halt (until next interrupt) for the idle loop */
+	if (cpu_idle_hlt && platform.cpu_idle != NULL)
+		platform.cpu_idle();
 }
 
 /*

==== //depot/projects/smpng/sys/alpha/include/cpuconf.h#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/include/cpuconf.h,v 1.13 2005/01/05 20:05:50 imp Exp $ */
+/* $FreeBSD: src/sys/alpha/include/cpuconf.h,v 1.14 2005/01/31 23:07:42 ticso Exp $ */
 /*	$NetBSD: cpuconf.h,v 1.7 1997/11/06 00:42:03 thorpej Exp $	*/
 #ifndef	_ALPHA_CPUCONF_H
 #define	_ALPHA_CPUCONF_H
@@ -71,6 +71,7 @@
 	void	(*clockintr)(void *);
 	void	(*mcheck_handler)(unsigned long, struct trapframe *,
 		unsigned long, unsigned long);
+	void	(*cpu_idle)(void);
 	void	(*pci_intr_init)(void);
 	void	(*pci_intr_map)(void *);
 	int	(*pci_intr_route)(struct device *, struct device *, int);

==== //depot/projects/smpng/sys/alpha/isa/isa_dma.c#8 (text+ko) ====

@@ -44,7 +44,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.12 2004/09/15 12:09:49 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.13 2005/02/06 13:46:38 phk Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -60,24 +60,6 @@
 #include <dev/ic/i8237.h>
 #include <machine/bus.h>
 
-/*
-**  Register definitions for DMA controller 1 (channels 0..3):
-*/
-#define	DMA1_CHN(c)	(IO_DMA1 + 1*(2*(c)))	/* addr reg for channel c */
-#define	DMA1_SMSK	(IO_DMA1 + 1*10)	/* single mask register */
-#define	DMA1_MODE	(IO_DMA1 + 1*11)	/* mode register */
-#define	DMA1_FFC	(IO_DMA1 + 1*12)	/* clear first/last FF */
-#define	DMA1_RESET	(IO_DMA1 + 1*13)	/* reset */
-
-/*
-**  Register definitions for DMA controller 2 (channels 4..7):
-*/
-#define	DMA2_CHN(c)	(IO_DMA2 + 2*(2*(c)))	/* addr reg for channel c */
-#define	DMA2_SMSK	(IO_DMA2 + 2*10)	/* single mask register */
-#define	DMA2_MODE	(IO_DMA2 + 2*11)	/* mode register */
-#define	DMA2_FFC	(IO_DMA2 + 2*12)	/* clear first/last FF */
-#define	DMA2_RESET	(IO_DMA2 + 2*13)	/* reset */
-
 static bus_dma_tag_t dma_tag[8];
 static bus_dmamap_t dma_map[8];
 static u_int8_t	dma_busy = 0;		/* Used in isa_dmastart() */
@@ -487,6 +469,19 @@
 }
 
 /*
+ * Reached terminal count yet ?
+ */
+int
+isa_dmatc(int chan)
+{
+
+	if (chan < 4)
+		return(inb(DMA1_STATUS) & (1 << chan));
+	else
+		return(inb(DMA2_STATUS) & (1 << (chan & 3)));
+}
+
+/*
  * Stop a DMA transfer currently in progress.
  */
 int

==== //depot/projects/smpng/sys/alpha/pci/lca.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/lca.c,v 1.20 2003/08/17 06:42:08 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/lca.c,v 1.21 2005/01/31 23:07:42 ticso Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -35,6 +35,8 @@
 #include <sys/bus.h>
 #include <machine/bus.h>
 #include <sys/rman.h>
+#include <sys/proc.h>
+#include <sys/sched.h>
 
 #include <alpha/pci/lcareg.h>
 #include <alpha/pci/lcavar.h>
@@ -222,6 +224,8 @@
 lca_machine_check(unsigned long mces, struct trapframe *framep,
     unsigned long vector, unsigned long param);
 
+static void lca_cpu_idle (void);
+
 static int
 lca_probe(device_t dev)
 {
@@ -234,6 +238,7 @@
 	lca_init_sgmap();
 
 	platform.mcheck_handler = lca_machine_check;
+	platform.cpu_idle = lca_cpu_idle;
 
 	device_add_child(dev, "pcib", 0);
 
@@ -270,5 +275,29 @@
 	REGVAL64(LCA_IOC_STAT0) = stat0;
 }
 
+void
+lca_cpu_idle (void)
+{
+	/*
+	 * 0x0 =  1
+	 * 0x1 =  1.5
+	 * 0x2 =  2
+	 * 0x3 =  4
+	 * 0x4 =  8
+	 * 0x5 = 16
+	 */
+	long override = 0x0;
+	long primary = 0x5;
+	long dma_ovr = 1;
+	long intr_ovr = 1;
+
+	REGVAL64(LCA_PMR) =
+	    (dma_ovr << 7) | (intr_ovr << 6) | (override << 3) | primary;
+	if (sched_runnable()) {
+		REGVAL64(LCA_PMR) =
+		    (override << 3) | override;
+	}
+}
+
 DRIVER_MODULE(lca, root, lca_driver, lca_devclass, 0, 0);
 

==== //depot/projects/smpng/sys/alpha/pci/lcareg.h#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/pci/lcareg.h,v 1.3 2005/01/05 20:05:52 imp Exp $ */
+/* $FreeBSD: src/sys/alpha/pci/lcareg.h,v 1.4 2005/01/31 23:07:42 ticso Exp $ */
 /* $NetBSD: lcareg.h,v 1.8 1997/09/05 02:14:31 thorpej Exp $ */
 
 /*-
@@ -44,6 +44,8 @@
 #define LCA_PCI_SPARSE	0x200000000L		/* PCI Sparse Space */
 #define LCA_PCI_DENSE	0x300000000L		/* PCI Dense Space */
 
+#define LCA_PMR		0x120000098L		/* Power Management (21066A)*/
+
 #define LCA_IOC_HAE	LCA_IOC_BASE		/* Host Address Ext. (64) */
 #define	IOC_HAE_ADDREXT	0x00000000f8000000UL
 #define	IOC_HAE_RSVSD	0xffffffff07ffffffUL

==== //depot/projects/smpng/sys/amd64/amd64/legacy.c#6 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/legacy.c,v 1.56 2004/08/16 22:54:50 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/legacy.c,v 1.58 2005/02/06 07:36:08 njl Exp $");
 
 /*
  * This code implements a system driver for legacy systems that do not
@@ -38,6 +38,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
+#include <sys/cpu.h>
 #include <sys/kernel.h>
 #include <sys/malloc.h>
 #include <sys/module.h>
@@ -132,31 +133,24 @@
 {
 	device_t child;
 	int i;
-	struct pcpu *pc;
+
+	/* First, attach the CPU pseudo-driver. */
+	for (i = 0; i <= mp_maxid; i++)
+		if (!CPU_ABSENT(i)) {
+			child = BUS_ADD_CHILD(dev, 0, "cpu", i);
+			if (child == NULL)
+				panic("legacy_attach cpu");
+			device_probe_and_attach(child);
+		}
 
 	/*
-	 * First, let our child driver's identify any child devices that
+	 * Second, let our child driver's identify any child devices that
 	 * they can find.  Once that is done attach any devices that we
 	 * found.
 	 */
 	bus_generic_probe(dev);
 	bus_generic_attach(dev);
 
-	/* Attach CPU pseudo-driver. */
-	if (!devclass_get_device(devclass_find("cpu"), 0)) {
-		for (i = 0; i <= mp_maxid; i++)
-			if (!CPU_ABSENT(i)) {
-				pc = pcpu_find(i);
-				KASSERT(pc != NULL, ("pcpu_find failed"));
-				child = BUS_ADD_CHILD(dev, 0, "cpu", i);
-				if (child == NULL)
-					panic("legacy_attach cpu");
-				device_probe_and_attach(child);
-				pc->pc_device = child;
-				device_set_ivars(child, pc);
-			}
-	}
-
 	/*
 	 * If we didn't see ISA on a pci bridge, create some
 	 * connection points now so it shows up "on motherboard".
@@ -244,6 +238,14 @@
  */
 static int	cpu_read_ivar(device_t dev, device_t child, int index,
 		    uintptr_t *result);
+static device_t cpu_add_child(device_t bus, int order, const char *name,
+		    int unit);
+static struct resource_list *cpu_get_rlist(device_t dev, device_t child);
+
+struct cpu_device {
+	struct resource_list cd_rl;
+	struct pcpu *cd_pcpu;
+};
 
 static device_method_t cpu_methods[] = {
 	/* Device interface */
@@ -255,10 +257,15 @@
 	DEVMETHOD(device_resume,	bus_generic_resume),
 
 	/* Bus interface */
+	DEVMETHOD(bus_add_child,	cpu_add_child),
 	DEVMETHOD(bus_read_ivar,	cpu_read_ivar),
 	DEVMETHOD(bus_print_child,	bus_generic_print_child),
-	DEVMETHOD(bus_alloc_resource,	bus_generic_alloc_resource),
-	DEVMETHOD(bus_release_resource,	bus_generic_release_resource),
+	DEVMETHOD(bus_get_resource_list, cpu_get_rlist),
+	DEVMETHOD(bus_get_resource,	bus_generic_rl_get_resource),
+	DEVMETHOD(bus_set_resource,	bus_generic_rl_set_resource),
+	DEVMETHOD(bus_alloc_resource,	bus_generic_rl_alloc_resource),
+	DEVMETHOD(bus_release_resource,	bus_generic_rl_release_resource),
+	DEVMETHOD(bus_driver_added,	bus_generic_driver_added),
 	DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
 	DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
 	DEVMETHOD(bus_setup_intr,	bus_generic_setup_intr),
@@ -275,16 +282,47 @@
 static devclass_t cpu_devclass;
 DRIVER_MODULE(cpu, legacy, cpu_driver, cpu_devclass, 0, 0);
 
+static device_t
+cpu_add_child(device_t bus, int order, const char *name, int unit)
+{
+	struct cpu_device *cd;
+	device_t child;
+	struct pcpu *pc;
+
+	if ((cd = malloc(sizeof(*cd), M_DEVBUF, M_NOWAIT | M_ZERO)) == NULL)
+		return (NULL);
+
+	resource_list_init(&cd->cd_rl);
+	pc = pcpu_find(unit);
+	KASSERT(pc != NULL, ("pcpu_find failed"));
+	cd->cd_pcpu = pc;
+
+	child = device_add_child_ordered(bus, order, name, unit);
+	if (child != NULL) {
+		pc->pc_device = child;
+		device_set_ivars(child, cd);
+	} else
+		free(cd, M_DEVBUF);
+	return (child);
+}
+
+static struct resource_list *
+cpu_get_rlist(device_t dev, device_t child)
+{
+	struct cpu_device *cpdev;
+
+	cpdev = device_get_ivars(child);
+	return (&cpdev->cd_rl);
+}
+
 static int
 cpu_read_ivar(device_t dev, device_t child, int index, uintptr_t *result)
 {
-	struct pcpu *pc;
+	struct cpu_device *cpdev;
 
-	if (index != 0)
+	if (index != CPU_IVAR_PCPU)
 		return (ENOENT);
-	pc = device_get_ivars(child);
-	if (pc == NULL)
-		return (ENOENT);
-	*result = (uintptr_t)pc;
+	cpdev = device_get_ivars(dev);
+	*result = (uintptr_t)cpdev->cd_pcpu;
 	return (0);
 }

==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#35 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.626 2005/01/21 06:01:19 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.629 2005/02/06 01:55:06 njl Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -55,9 +55,16 @@
 #include "opt_perfmon.h"
 
 #include <sys/param.h>
+#include <sys/proc.h>
 #include <sys/systm.h>
-#include <sys/sysproto.h>
-#include <sys/signalvar.h>
+#include <sys/bio.h>
+#include <sys/buf.h>
+#include <sys/bus.h>
+#include <sys/callout.h>
+#include <sys/cons.h>
+#include <sys/cpu.h>
+#include <sys/eventhandler.h>
+#include <sys/exec.h>
 #include <sys/imgact.h>
 #include <sys/kdb.h>
 #include <sys/kernel.h>
@@ -66,35 +73,27 @@
 #include <sys/lock.h>
 #include <sys/malloc.h>
 #include <sys/memrange.h>
+#include <sys/msgbuf.h>
 #include <sys/mutex.h>
 #include <sys/pcpu.h>
-#include <sys/proc.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
+#include <sys/ptrace.h>
 #include <sys/reboot.h>
-#include <sys/callout.h>
-#include <sys/msgbuf.h>
 #include <sys/sched.h>
+#include <sys/signalvar.h>
+#include <sys/sysctl.h>
 #include <sys/sysent.h>
-#include <sys/sysctl.h>
+#include <sys/sysproto.h>
 #include <sys/ucontext.h>
 #include <sys/vmmeter.h>
-#include <sys/bus.h>
-#include <sys/eventhandler.h>
-
-#include <machine/pcb.h>
 
 #include <vm/vm.h>
-#include <vm/vm_param.h>
+#include <vm/vm_extern.h>
 #include <vm/vm_kern.h>
-#include <vm/vm_object.h>
 #include <vm/vm_page.h>
 #include <vm/vm_map.h>
+#include <vm/vm_object.h>
 #include <vm/vm_pager.h>
-#include <vm/vm_extern.h>
-
-#include <sys/exec.h>
-#include <sys/cons.h>
+#include <vm/vm_param.h>
 
 #ifdef DDB
 #ifndef KDB
@@ -105,16 +104,18 @@
 
 #include <net/netisr.h>
 
+#include <machine/clock.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
-#include <machine/reg.h>
-#include <machine/clock.h>
-#include <machine/specialreg.h>
 #include <machine/intr_machdep.h>
 #include <machine/md_var.h>
+#include <machine/metadata.h>
 #include <machine/pc/bios.h>
-#include <machine/metadata.h>
+#include <machine/pcb.h>
 #include <machine/proc.h>
+#include <machine/reg.h>
+#include <machine/sigframe.h>
+#include <machine/specialreg.h>
 #ifdef PERFMON
 #include <machine/perfmon.h>
 #endif
@@ -127,8 +128,6 @@
 
 #include <isa/isareg.h>
 #include <isa/rtc.h>
-#include <sys/ptrace.h>
-#include <machine/sigframe.h>
 
 /* Sanity check for __curthread() */
 CTASSERT(offsetof(struct pcpu, pc_curthread) == 0);
@@ -450,6 +449,52 @@
 {
 }
 
+/* Get current clock frequency for the given cpu id. */
+int
+cpu_est_clockrate(int cpu_id, uint64_t *rate)
+{
+	register_t reg;
+	uint64_t tsc1, tsc2;
+
+	if (pcpu_find(cpu_id) == NULL || rate == NULL)
+		return (EINVAL);
+
+	/* If we're booting, trust the rate calibrated moments ago. */
+	if (cold) {
+		*rate = tsc_freq;
+		return (0);
+	}
+
+#ifdef SMP
+	/* Schedule ourselves on the indicated cpu. */
+	mtx_lock_spin(&sched_lock);
+	sched_bind(curthread, cpu_id);
+	mtx_unlock_spin(&sched_lock);
+#endif
+
+	/* Calibrate by measuring a short delay. */
+	reg = intr_disable();
+	tsc1 = rdtsc();
+	DELAY(1000);
+	tsc2 = rdtsc();
+	intr_restore(reg);
+
+#ifdef SMP
+	mtx_lock_spin(&sched_lock);
+	sched_unbind(curthread);
+	mtx_unlock_spin(&sched_lock);
+#endif
+
+	/*
+	 * Calculate the difference in readings, convert to Mhz, and
+	 * subtract 0.5% of the total.  Empirical testing has shown that
+	 * overhead in DELAY() works out to approximately this value.
+	 */
+	tsc2 -= tsc1;
+	*rate = tsc2 * 1000 - tsc2 * 5;
+	return (0);
+}
+
 /*
  * Shutdown the CPU as much as possible
  */

==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#41 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.514 2004/12/23 20:16:09 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.515 2005/02/05 19:21:54 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1810,7 +1810,10 @@
 			if (pbits != obits) {
 				if (!atomic_cmpset_long(pte, obits, pbits))
 					goto retry;
-				anychanged = 1;
+				if (obits & PG_G)
+					pmap_invalidate_page(pmap, sva);
+				else
+					anychanged = 1;
 			}
 		}
 	}

==== //depot/projects/smpng/sys/amd64/conf/NOTES#11 (text+ko) ====

@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.20 2004/09/22 01:04:54 peter Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.21 2005/02/05 21:01:09 njl Exp $
 #
 
 #
@@ -205,6 +205,9 @@
 #!options 	ACPI_NO_SEMAPHORES
 #!options 	ACPICA_PEDANTIC
 
+# Support for ACPI CPU Performance states via cpufreq(4)
+device		acpi_perf
+
 # DRM options:
 # mgadrm:    AGP Matrox G200, G400, G450, G550
 # r128drm:   ATI Rage 128

==== //depot/projects/smpng/sys/amd64/isa/isa_dma.c#8 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/isa/isa_dma.c,v 1.20 2004/09/15 12:09:49 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/isa/isa_dma.c,v 1.21 2005/02/06 13:46:38 phk Exp $");
 
 /*
  * code to manage AT bus
@@ -61,22 +61,6 @@
 #include <dev/ic/i8237.h>
 #include <isa/isavar.h>
 
-/*
-**  Register definitions for DMA controller 1 (channels 0..3):
-*/
-#define	DMA1_CHN(c)	(IO_DMA1 + 1*(2*(c)))	/* addr reg for channel c */
-#define	DMA1_SMSK	(IO_DMA1 + 1*10)	/* single mask register */
-#define	DMA1_MODE	(IO_DMA1 + 1*11)	/* mode register */
-#define	DMA1_FFC	(IO_DMA1 + 1*12)	/* clear first/last FF */
-
-/*
-**  Register definitions for DMA controller 2 (channels 4..7):
-*/
-#define	DMA2_CHN(c)	(IO_DMA2 + 2*(2*(c)))	/* addr reg for channel c */
-#define	DMA2_SMSK	(IO_DMA2 + 2*10)	/* single mask register */
-#define	DMA2_MODE	(IO_DMA2 + 2*11)	/* mode register */
-#define	DMA2_FFC	(IO_DMA2 + 2*12)	/* clear first/last FF */
-
 #define ISARAM_END	0x1000000
 
 static int isa_dmarangecheck(caddr_t va, u_int length, int chan);
@@ -489,6 +473,19 @@
 }
 
 /*
+ * Reached terminal count yet ?
+ */
+int
+isa_dmatc(int chan)
+{
+
+	if (chan < 4)
+		return(inb(DMA1_STATUS) & (1 << chan));
+	else
+		return(inb(DMA2_STATUS) & (1 << (chan & 3)));
+}
+
+/*
  * Stop a DMA transfer currently in progress.
  */
 int

==== //depot/projects/smpng/sys/arm/arm/machdep.c#9 (text+ko) ====

@@ -44,12 +44,17 @@
 
 #include "opt_compat.h"
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.9 2005/01/10 22:43:16 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.12 2005/02/06 01:55:07 njl Exp $");
 
 #include <sys/param.h>
+#include <sys/proc.h>
 #include <sys/systm.h>
-#include <sys/sysproto.h>
-#include <sys/signalvar.h>
+#include <sys/bio.h>
+#include <sys/buf.h>
+#include <sys/bus.h>
+#include <sys/cons.h>
+#include <sys/cpu.h>
+#include <sys/exec.h>
 #include <sys/imgact.h>
 #include <sys/kernel.h>
 #include <sys/linker.h>
@@ -57,34 +62,31 @@
 #include <sys/malloc.h>
 #include <sys/mutex.h>
 #include <sys/pcpu.h>
-#include <sys/proc.h>
 #include <sys/ptrace.h>
-#include <sys/cons.h>
-#include <sys/bio.h>
-#include <sys/buf.h>
-#include <sys/exec.h>
+#include <sys/signalvar.h>
 #include <sys/sysent.h>
+#include <sys/sysproto.h>
 #include <sys/uio.h>
-#include <machine/reg.h>
-#include <machine/cpu.h>
-#include <machine/trap.h>
 
-#include <vm/vm.h>
 #include <vm/pmap.h>
 #include <vm/vm.h>
+#include <vm/vm_map.h>
 #include <vm/vm_object.h>
 #include <vm/vm_page.h>
 #include <vm/vm_pager.h>
-#include <vm/vm_map.h>
 #include <vm/vnode_pager.h>
+
+#include <machine/armreg.h>
+#include <machine/cpu.h>
+#include <machine/machdep.h>
+#include <machine/md_var.h>
+#include <machine/metadata.h>
+#include <machine/pcb.h>
 #include <machine/pmap.h>
+#include <machine/reg.h>
+#include <machine/trap.h>
+#include <machine/undefined.h>
 #include <machine/vmparam.h>
-#include <machine/pcb.h>
-#include <machine/undefined.h>
-#include <machine/machdep.h>
-#include <machine/metadata.h>
-#include <machine/armreg.h>
-#include <machine/md_var.h>
 
 #define MDROOT_ADDR 0xd0400000
 
@@ -236,6 +238,14 @@
 
 SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL)
 
+/* Get current clock frequency for the given cpu id. */
+int
+cpu_est_clockrate(int cpu_id, uint64_t *rate)
+{
+
+	return (ENXIO);
+}
+
 void
 cpu_idle(void)
 {

==== //depot/projects/smpng/sys/arm/include/cpu.h#4 (text+ko) ====

@@ -1,5 +1,5 @@
 /* $NetBSD: cpu.h,v 1.2 2001/02/23 21:23:52 reinoud Exp $ */
-/* $FreeBSD: src/sys/arm/include/cpu.h,v 1.3 2004/11/04 19:15:43 cognet Exp $ */
+/* $FreeBSD: src/sys/arm/include/cpu.h,v 1.4 2005/02/01 06:36:27 njl Exp $ */
 
 #ifndef MACHINE_CPU_H
 #define MACHINE_CPU_H
@@ -45,10 +45,10 @@
 
 extern vm_offset_t vector_page;
 
-void fork_trampoline(void);
-void *initarm(void *, void *);
-void arm_vector_init(vm_offset_t, int);
-void identify_arm_cpu(void);
+void	arm_vector_init(vm_offset_t, int);
+void	fork_trampoline(void);
+void	identify_arm_cpu(void);
+void	*initarm(void *, void *);
 
 extern char btext[];
 extern char etext[];

==== //depot/projects/smpng/sys/coda/coda_vnops.c#21 (text+ko) ====

@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.62 2005/01/28 14:42:15 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.63 2005/02/07 08:04:24 phk Exp $");
 

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list