Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Aug 2009 10:42:46 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 167827 for review
Message-ID:  <200908261042.n7QAgkg3025342@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=167827

Change 167827 by hselasky@hselasky_laptop001 on 2009/08/26 10:42:42

	
	IFC @ 167825

Affected files ...

.. //depot/projects/usb/src/sys/amd64/amd64/elf_machdep.c#7 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/trap.c#16 integrate
.. //depot/projects/usb/src/sys/amd64/linux32/linux32_sysvec.c#22 integrate
.. //depot/projects/usb/src/sys/arm/arm/undefined.c#5 integrate
.. //depot/projects/usb/src/sys/arm/conf/SHEEVAPLUG#1 branch
.. //depot/projects/usb/src/sys/arm/mv/common.c#6 integrate
.. //depot/projects/usb/src/sys/arm/mv/discovery/db78xxx.c#5 integrate
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/db88f6xxx.c#5 integrate
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/files.db88f6xxx#2 integrate
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/files.kirkwood#1 branch
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/files.sheevaplug#1 branch
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/sheevaplug.c#1 branch
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/std.db88f6xxx#2 integrate
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/std.kirkwood#1 branch
.. //depot/projects/usb/src/sys/arm/mv/kirkwood/std.sheevaplug#1 branch
.. //depot/projects/usb/src/sys/arm/mv/mv_machdep.c#7 integrate
.. //depot/projects/usb/src/sys/arm/mv/mvreg.h#7 integrate
.. //depot/projects/usb/src/sys/arm/mv/mvvar.h#4 integrate
.. //depot/projects/usb/src/sys/arm/mv/orion/db88f5xxx.c#5 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/mutex.h#4 integrate
.. //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/proc.h#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#4 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#8 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/sys/callb.h#3 integrate
.. //depot/projects/usb/src/sys/compat/ia32/ia32_sysvec.c#11 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_ioctl.c#17 integrate
.. //depot/projects/usb/src/sys/conf/files#77 integrate
.. //depot/projects/usb/src/sys/conf/newvers.sh#11 integrate
.. //depot/projects/usb/src/sys/conf/options#39 integrate
.. //depot/projects/usb/src/sys/conf/options.arm#11 integrate
.. //depot/projects/usb/src/sys/contrib/altq/altq/altq_subr.c#14 integrate
.. //depot/projects/usb/src/sys/contrib/pf/net/pf_if.c#13 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi.c#21 integrate
.. //depot/projects/usb/src/sys/dev/alc/if_alc.c#4 integrate
.. //depot/projects/usb/src/sys/dev/asmc/asmc.c#7 integrate
.. //depot/projects/usb/src/sys/dev/drm/drmP.h#14 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_bufs.c#8 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_drv.c#15 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_fops.c#4 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_sysctl.c#6 integrate
.. //depot/projects/usb/src/sys/dev/drm/r600_blit.c#1 branch
.. //depot/projects/usb/src/sys/dev/drm/r600_cp.c#6 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_cp.c#11 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_cs.c#1 branch
.. //depot/projects/usb/src/sys/dev/drm/radeon_drm.h#5 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_drv.h#9 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_state.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ixgbe/ixgbe.c#11 integrate
.. //depot/projects/usb/src/sys/dev/mge/if_mge.c#7 integrate
.. //depot/projects/usb/src/sys/dev/pty/pty.c#1 branch
.. //depot/projects/usb/src/sys/dev/re/if_re.c#22 integrate
.. //depot/projects/usb/src/sys/dev/snp/snp.c#13 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#57 integrate
.. //depot/projects/usb/src/sys/dev/syscons/scvgarndr.c#3 integrate
.. //depot/projects/usb/src/sys/dev/syscons/scvidctl.c#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/usb_controller.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#32 integrate
.. //depot/projects/usb/src/sys/dev/usb/misc/ufm.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_aue.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cdce.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/usb_ethernet.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb/serial/uipaq.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uvisor.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#29 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/urio.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb.h#45 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_busdma.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.c#37 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.c#51 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.h#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_handle_request.c#22 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hub.c#32 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_process.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_process.h#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#164 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#75 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_upgt.c#16 integrate
.. //depot/projects/usb/src/sys/dev/xen/console/console.c#9 integrate
.. //depot/projects/usb/src/sys/fs/fifofs/fifo_vnops.c#13 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clvnops.c#11 integrate
.. //depot/projects/usb/src/sys/i386/i386/elf_machdep.c#8 integrate
.. //depot/projects/usb/src/sys/i386/i386/trap.c#14 integrate
.. //depot/projects/usb/src/sys/i386/isa/vesa.c#4 integrate
.. //depot/projects/usb/src/sys/i386/linux/linux_sysvec.c#16 integrate
.. //depot/projects/usb/src/sys/isa/isahint.c#4 integrate
.. //depot/projects/usb/src/sys/kern/imgact_elf.c#13 integrate
.. //depot/projects/usb/src/sys/kern/kern_cons.c#3 integrate
.. //depot/projects/usb/src/sys/kern/kern_jail.c#30 integrate
.. //depot/projects/usb/src/sys/kern/kern_subr.c#7 integrate
.. //depot/projects/usb/src/sys/kern/kern_uuid.c#13 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#28 integrate
.. //depot/projects/usb/src/sys/kern/sys_generic.c#17 integrate
.. //depot/projects/usb/src/sys/kern/tty_pts.c#17 integrate
.. //depot/projects/usb/src/sys/kern/tty_pty.c#11 delete
.. //depot/projects/usb/src/sys/kern/tty_ttydisc.c#7 integrate
.. //depot/projects/usb/src/sys/kern/uipc_domain.c#14 integrate
.. //depot/projects/usb/src/sys/kern/uipc_socket.c#27 integrate
.. //depot/projects/usb/src/sys/modules/drm/radeon/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/pty/Makefile#1 branch
.. //depot/projects/usb/src/sys/net/bridgestp.c#18 integrate
.. //depot/projects/usb/src/sys/net/if.c#39 integrate
.. //depot/projects/usb/src/sys/net/if_bridge.c#19 integrate
.. //depot/projects/usb/src/sys/net/if_ef.c#12 integrate
.. //depot/projects/usb/src/sys/net/if_llatbl.c#6 integrate
.. //depot/projects/usb/src/sys/net/if_llatbl.h#4 integrate
.. //depot/projects/usb/src/sys/net/if_var.h#28 integrate
.. //depot/projects/usb/src/sys/net/if_vlan.c#18 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_gif.c#10 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#34 integrate
.. //depot/projects/usb/src/sys/netinet/ip_divert.c#24 integrate
.. //depot/projects/usb/src/sys/netinet/ip_divert.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw2.c#11 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_indata.c#22 integrate
.. //depot/projects/usb/src/sys/netinet6/icmp6.c#26 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.c#32 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_ifattach.c#29 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6.c#25 integrate
.. //depot/projects/usb/src/sys/netipsec/xform_ipip.c#17 integrate
.. //depot/projects/usb/src/sys/nfsclient/bootp_subr.c#19 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#30 integrate
.. //depot/projects/usb/src/sys/pci/if_rlreg.h#17 integrate
.. //depot/projects/usb/src/sys/rpc/clnt_dg.c#7 integrate
.. //depot/projects/usb/src/sys/rpc/clnt_rc.c#9 integrate
.. //depot/projects/usb/src/sys/rpc/clnt_vc.c#8 integrate
.. //depot/projects/usb/src/sys/rpc/rpc_generic.c#3 integrate
.. //depot/projects/usb/src/sys/rpc/svc_dg.c#4 integrate
.. //depot/projects/usb/src/sys/rpc/svc_generic.c#4 integrate
.. //depot/projects/usb/src/sys/rpc/svc_vc.c#7 integrate
.. //depot/projects/usb/src/sys/sys/cons.h#5 integrate
.. //depot/projects/usb/src/sys/sys/imgact_elf.h#6 integrate
.. //depot/projects/usb/src/sys/sys/param.h#44 integrate
.. //depot/projects/usb/src/sys/sys/ttydisc.h#3 integrate

Differences ...

==== //depot/projects/usb/src/sys/amd64/amd64/elf_machdep.c#7 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.30 2009/04/05 09:27:19 dchagin Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.31 2009/08/24 16:19:47 bz Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -35,6 +35,7 @@
 #include <sys/sysent.h>
 #include <sys/imgact_elf.h>
 #include <sys/syscall.h>
+#include <sys/sysent.h>
 #include <sys/signalvar.h>
 #include <sys/vnode.h>
 
@@ -108,6 +109,22 @@
 	(sysinit_cfunc_t) elf64_insert_brand_entry,
 	&freebsd_brand_oinfo);
 
+static Elf64_Brandinfo kfreebsd_brand_info = {
+	.brand		= ELFOSABI_FREEBSD,
+	.machine	= EM_X86_64,
+	.compat_3_brand	= "FreeBSD",
+	.emul_path	= NULL,
+	.interp_path	= "/lib/ld-kfreebsd-x86-64.so.1",
+	.sysvec		= &elf64_freebsd_sysvec,
+	.interp_newpath	= NULL,
+	.brand_note	= &elf64_kfreebsd_brandnote,
+	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE
+};
+
+SYSINIT(kelf64, SI_SUB_EXEC, SI_ORDER_ANY,
+	(sysinit_cfunc_t) elf64_insert_brand_entry,
+	&kfreebsd_brand_info);
+
 
 void
 elf64_dump_thread(struct thread *td __unused, void *dst __unused,

==== //depot/projects/usb/src/sys/amd64/amd64/trap.c#16 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.333 2009/08/13 17:09:45 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.334 2009/08/24 16:19:47 bz Exp $");
 
 /*
  * AMD64 Trap and System call handling
@@ -409,7 +409,9 @@
 					 * This check also covers the images
 					 * without the ABI-tag ELF note.
 					 */
-					if (p->p_osrel >= 700004) {
+					if (SV_CURPROC_ABI() ==
+					    SV_ABI_FREEBSD &&
+					    p->p_osrel >= 700004) {
 						i = SIGSEGV;
 						ucode = SEGV_ACCERR;
 					} else {

==== //depot/projects/usb/src/sys/amd64/linux32/linux32_sysvec.c#22 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.52 2009/07/09 09:34:11 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.53 2009/08/24 16:19:47 bz Exp $");
 #include "opt_compat.h"
 
 #ifndef COMPAT_IA32
@@ -127,6 +127,7 @@
 static void	exec_linux_setregs(struct thread *td, u_long entry,
 				   u_long stack, u_long ps_strings);
 static void	linux32_fixlimit(struct rlimit *rl, int which);
+static boolean_t linux32_trans_osrel(const Elf_Note *note, int32_t *osrel);
 
 static eventhandler_tag linux_exit_tag;
 static eventhandler_tag linux_schedtail_tag;
@@ -1066,14 +1067,38 @@
 	.sv_flags	= SV_ABI_LINUX | SV_ILP32 | SV_IA32
 };
 
-static char GNULINUX_ABI_VENDOR[] = "GNU";
+static char GNU_ABI_VENDOR[] = "GNU";
+static int GNULINUX_ABI_DESC = 0;
+
+static boolean_t
+linux32_trans_osrel(const Elf_Note *note, int32_t *osrel)
+{
+	const Elf32_Word *desc;
+	uintptr_t p;
+
+	p = (uintptr_t)(note + 1);
+	p += roundup2(note->n_namesz, sizeof(Elf32_Addr));
+
+	desc = (const Elf32_Word *)p;
+	if (desc[0] != GNULINUX_ABI_DESC)
+		return (FALSE);
+
+	/*
+	 * For linux we encode osrel as follows (see linux_mib.c):
+	 * VVVMMMIII (version, major, minor), see linux_mib.c.
+	 */
+	*osrel = desc[1] * 1000000 + desc[2] * 1000 + desc[3];
+
+	return (TRUE);
+}
 
 static Elf_Brandnote linux32_brandnote = {
-	.hdr.n_namesz	= sizeof(GNULINUX_ABI_VENDOR),
-	.hdr.n_descsz	= 16,
+	.hdr.n_namesz	= sizeof(GNU_ABI_VENDOR),
+	.hdr.n_descsz	= 16,	/* XXX at least 16 */
 	.hdr.n_type	= 1,
-	.vendor		= GNULINUX_ABI_VENDOR,
-	.flags		= 0
+	.vendor		= GNU_ABI_VENDOR,
+	.flags		= BN_TRANSLATE_OSREL,
+	.trans_osrel	= linux32_trans_osrel
 };
 
 static Elf32_Brandinfo linux_brand = {

==== //depot/projects/usb/src/sys/arm/arm/undefined.c#5 (text+ko) ====

@@ -48,7 +48,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.16 2008/10/23 15:53:51 des Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.17 2009/08/23 23:37:53 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -82,11 +82,10 @@
 
 #ifdef DDB
 #include <ddb/db_output.h>
-#include <machine/db_machdep.h>
 #endif
 
-#ifdef acorn26
-#include <machine/machdep.h>
+#ifdef KDB
+#include <machine/db_machdep.h>
 #endif
 
 static int gdb_trapper(u_int, u_int, struct trapframe *, int);

==== //depot/projects/usb/src/sys/arm/mv/common.c#6 (text+ko) ====

@@ -30,10 +30,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/mv/common.c,v 1.7 2009/06/12 20:00:38 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/mv/common.c,v 1.8 2009/08/25 09:35:50 raj Exp $");
 
+#include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
+#include <sys/kernel.h>
 
 #include <machine/bus.h>
 
@@ -62,6 +64,76 @@
 
 static uint32_t used_cpu_wins;
 
+static __inline int
+pm_is_disabled(uint32_t mask)
+{
+
+	return (soc_power_ctrl_get(mask) == mask ? 0 : 1);
+}
+
+static __inline uint32_t
+obio_get_pm_mask(uint32_t base)
+{
+	struct obio_device *od;
+
+	for (od = obio_devices; od->od_name != NULL; od++)
+		if (od->od_base == base)
+			return (od->od_pwr_mask);
+
+	return (CPU_PM_CTRL_NONE);
+}
+
+/*
+ * Disable device using power management register.
+ * 1 - Device Power On
+ * 0 - Device Power Off
+ * Mask can be set in loader.
+ * EXAMPLE:
+ * loader> set hw.pm-disable-mask=0x2
+ *
+ * Common mask:
+ * |-------------------------------|
+ * | Device | Kirkwood | Discovery |
+ * |-------------------------------|
+ * | USB0   | 0x00008  | 0x020000  |
+ * |-------------------------------|
+ * | USB1   |     -    | 0x040000  |
+ * |-------------------------------|
+ * | USB2   |     -    | 0x080000  |
+ * |-------------------------------|
+ * | GE0    | 0x00001  | 0x000002  |
+ * |-------------------------------|
+ * | GE1    |     -    | 0x000004  |
+ * |-------------------------------|
+ * | IDMA   |     -    | 0x100000  |
+ * |-------------------------------|
+ * | XOR    | 0x10000  | 0x200000  |
+ * |-------------------------------|
+ * | CESA   | 0x20000  | 0x400000  |
+ * |-------------------------------|
+ * | SATA   | 0x04000  | 0x004000  |
+ * --------------------------------|
+ * This feature can be used only on Kirkwood and Discovery
+ * machines.
+ */
+static __inline void
+pm_disable_device(int mask)
+{
+#ifdef DIAGNOSTIC
+	uint32_t reg;
+
+	reg = soc_power_ctrl_get(CPU_PM_CTRL_ALL);
+	printf("Power Management Register: 0%x\n", reg);
+
+	reg &= ~mask;
+	soc_power_ctrl_set(reg);
+	printf("Device %x is disabled\n", mask);
+
+	reg = soc_power_ctrl_get(CPU_PM_CTRL_ALL);
+	printf("Power Management Register: 0%x\n", reg);
+#endif
+}
+
 uint32_t
 read_cpu_ctrl(uint32_t reg)
 {
@@ -103,14 +175,36 @@
 	return (ef);
 }
 
+/*
+ * Get the power status of device. This feature is only supported on
+ * Kirkwood and Discovery SoCs.
+ */
 uint32_t
 soc_power_ctrl_get(uint32_t mask)
 {
 
+#ifndef SOC_MV_ORION
 	if (mask != CPU_PM_CTRL_NONE)
 		mask &= read_cpu_ctrl(CPU_PM_CTRL);
 
 	return (mask);
+#else
+	return (mask);
+#endif
+}
+
+/*
+ * Set the power status of device. This feature is only supported on
+ * Kirkwood and Discovery SoCs.
+ */
+void
+soc_power_ctrl_set(uint32_t mask)
+{
+
+#ifndef SOC_MV_ORION
+	if (mask != CPU_PM_CTRL_NONE)
+		write_cpu_ctrl(CPU_PM_CTRL, mask);
+#endif
 }
 
 void
@@ -191,7 +285,14 @@
 soc_decode_win(void)
 {
 	uint32_t dev, rev;
+	int mask;
 
+	mask = 0;
+	TUNABLE_INT_FETCH("hw.pm-disable-mask", &mask);
+
+	if (mask != 0)
+		pm_disable_device(mask);
+
 	/* Retrieve our ID: some windows facilities vary between SoC models */
 	soc_id(&dev, &rev);
 
@@ -623,8 +724,12 @@
 
 	/* Disable and clear all USB windows for all ports */
 	m = usb_max_ports();
+
 	for (p = 0; p < m; p++) {
 
+		if (pm_is_disabled(CPU_PM_CTRL_USB(p)))
+			continue;
+
 		for (i = 0; i < MV_WIN_USB_MAX; i++) {
 			win_usb_cr_write(i, p, 0);
 			win_usb_br_write(i, p, 0);
@@ -710,6 +815,9 @@
 	uint32_t br, sz;
 	int i, j;
 
+	if (pm_is_disabled(obio_get_pm_mask(base)))
+		return;
+
 	/* Disable, clear and revoke protection for all ETH windows */
 	for (i = 0; i < MV_WIN_ETH_MAX; i++) {
 
@@ -880,6 +988,8 @@
 	uint32_t br, sz;
 	int i, j;
 
+	if (pm_is_disabled(CPU_PM_CTRL_IDMA))
+		return;
 	/*
 	 * Disable and clear all IDMA windows, revoke protection for all channels
 	 */
@@ -1172,6 +1282,9 @@
 	uint32_t br, sz;
 	int i, j, z, e = 1, m, window;
 
+	if (pm_is_disabled(CPU_PM_CTRL_XOR))
+		return;
+
 	/*
 	 * Disable and clear all XOR windows, revoke protection for all
 	 * channels
@@ -1364,6 +1477,9 @@
 	uint32_t br, cr;
 	int i, j;
 
+	if (pm_is_disabled(CPU_PM_CTRL_CRYPTO))
+		return;
+
 	/* Disable and clear all CESA windows */
 	for (i = 0; i < MV_WIN_CESA_MAX; i++) {
 		win_cesa_cr_write(i, 0);
@@ -1432,6 +1548,9 @@
 	uint32_t cr, br;
 	int i, j;
 
+	if (pm_is_disabled(CPU_PM_CTRL_SATA))
+		return;
+
 	for (i = 0; i < MV_WIN_SATA_MAX; i++) {
 		win_sata_cr_write(i, 0);
 		win_sata_br_write(i, 0);

==== //depot/projects/usb/src/sys/arm/mv/discovery/db78xxx.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/mv/discovery/db78xxx.c,v 1.4 2009/06/12 20:00:38 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/mv/discovery/db78xxx.c,v 1.5 2009/08/25 09:30:03 raj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -68,11 +68,8 @@
  * 0xffff_2000 - 0xffff_ffff	: unused (~55KB)
  */
 
-const struct pmap_devmap *pmap_devmap_bootstrap_table;
-vm_offset_t pmap_bootstrap_lastaddr;
-
 /* Static device mappings. */
-static const struct pmap_devmap pmap_devmap[] = {
+const struct pmap_devmap pmap_devmap[] = {
 	/*
 	 * Map the on-board devices VA == PA so that we can access them
 	 * with the MMU on or off.
@@ -105,16 +102,6 @@
 	{ -1, -1, -1 }
 };
 
-int
-platform_pmap_init(void)
-{
-
-	pmap_bootstrap_lastaddr = MV_BASE - ARM_NOCACHE_KVA_SIZE;
-	pmap_devmap_bootstrap_table = &pmap_devmap[0];
-
-	return (0);
-}
-
 void
 platform_mpp_init(void)
 {

==== //depot/projects/usb/src/sys/arm/mv/kirkwood/db88f6xxx.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/mv/kirkwood/db88f6xxx.c,v 1.4 2009/06/12 20:00:38 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/mv/kirkwood/db88f6xxx.c,v 1.5 2009/08/25 09:30:03 raj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -68,11 +68,8 @@
  * 0xffff_2000 - 0xffff_ffff	: unused (~55KB)
  */
 
-const struct pmap_devmap *pmap_devmap_bootstrap_table;
-vm_offset_t pmap_bootstrap_lastaddr;
-
 /* Static device mappings. */
-static const struct pmap_devmap pmap_devmap[] = {
+const struct pmap_devmap pmap_devmap[] = {
 	/*
 	 * Map the on-board devices VA == PA so that we can access them
 	 * with the MMU on or off.
@@ -105,16 +102,6 @@
 	{ -1, -1, -1 }
 };
 
-int
-platform_pmap_init(void)
-{
-
-	pmap_bootstrap_lastaddr = MV_BASE - ARM_NOCACHE_KVA_SIZE;
-	pmap_devmap_bootstrap_table = &pmap_devmap[0];
-
-	return (0);
-}
-
 void
 platform_mpp_init(void)
 {

==== //depot/projects/usb/src/sys/arm/mv/kirkwood/files.db88f6xxx#2 (text+ko) ====

@@ -1,5 +1,4 @@
-# $FreeBSD: src/sys/arm/mv/kirkwood/files.db88f6xxx,v 1.1 2008/10/13 20:07:13 raj Exp $
+# $FreeBSD: src/sys/arm/mv/kirkwood/files.db88f6xxx,v 1.2 2009/08/25 09:39:11 raj Exp $
 
-arm/mv/rtc.c			standard
-arm/mv/kirkwood/kirkwood.c	standard
+include "arm/mv/kirkwood/files.kirkwood"
 arm/mv/kirkwood/db88f6xxx.c	standard

==== //depot/projects/usb/src/sys/arm/mv/kirkwood/std.db88f6xxx#2 (text+ko) ====

@@ -1,13 +1,8 @@
-# $FreeBSD: src/sys/arm/mv/kirkwood/std.db88f6xxx,v 1.1 2008/10/13 20:07:13 raj Exp $
+# $FreeBSD: src/sys/arm/mv/kirkwood/std.db88f6xxx,v 1.2 2009/08/25 09:39:11 raj Exp $
 
 include	"../mv/std.mv"
+include "../mv/kirkwood/std.kirkwood"
 files	"../mv/kirkwood/files.db88f6xxx"
 
-makeoptions	KERNPHYSADDR=0x00900000
-makeoptions	KERNVIRTADDR=0xc0900000
 
-options		KERNPHYSADDR=0x00900000
-options		KERNVIRTADDR=0xc0900000
-options		PHYSADDR=0x00000000
 options		PHYSMEM_SIZE=0x20000000
-options		STARTUP_PAGETABLE_ADDR=0x00100000

==== //depot/projects/usb/src/sys/arm/mv/mv_machdep.c#7 (text+ko) ====

@@ -39,7 +39,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/mv/mv_machdep.c,v 1.6 2009/07/01 20:07:44 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/mv/mv_machdep.c,v 1.7 2009/08/25 09:30:03 raj Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -86,6 +86,7 @@
 #include <machine/bootinfo.h>
 
 #include <arm/mv/mvvar.h>	/* XXX eventually this should be eliminated */
+#include <arm/mv/mvwin.h>
 
 #ifdef  DEBUG
 #define debugf(fmt, args...) printf(fmt, ##args)
@@ -133,7 +134,9 @@
 vm_paddr_t phys_avail[10];
 vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
+vm_offset_t pmap_bootstrap_lastaddr;
 
+const struct pmap_devmap *pmap_devmap_bootstrap_table;
 struct pv_addr systempage;
 struct pv_addr msgbufpv;
 struct pv_addr irqstack;
@@ -423,8 +426,8 @@
 		while (1);
 
 	/* Platform-specific initialisation */
-	if (platform_pmap_init() != 0)
-		return (NULL);
+	pmap_bootstrap_lastaddr = MV_BASE - ARM_NOCACHE_KVA_SIZE;
+	pmap_devmap_bootstrap_table = &pmap_devmap[0];
 
 	pcpu_init(pcpup, 0, sizeof(struct pcpu));
 	PCPU_SET(curthread, &thread0);

==== //depot/projects/usb/src/sys/arm/mv/mvreg.h#7 (text+ko) ====

@@ -28,7 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/mv/mvreg.h,v 1.7 2009/06/24 15:41:18 raj Exp $
+ * $FreeBSD: src/sys/arm/mv/mvreg.h,v 1.8 2009/08/25 09:35:50 raj Exp $
  */
 
 #ifndef _MVREG_H_
@@ -218,6 +218,7 @@
  */
 #define CPU_PM_CTRL		0x1C
 #define CPU_PM_CTRL_NONE	0
+#define CPU_PM_CTRL_ALL		~0x0
 
 #if defined(SOC_MV_KIRKWOOD)
 #define CPU_PM_CTRL_GE0		(1 << 0)
@@ -234,8 +235,11 @@
 #define CPU_PM_CTRL_SATA1	(1 << 15)
 #define CPU_PM_CTRL_XOR1	(1 << 16)
 #define CPU_PM_CTRL_CRYPTO	(1 << 17)
-#define CPU_PM_CTRL_GE1		(1 << 18)
-#define CPU_PM_CTRL_TDM		(1 << 19)
+#define CPU_PM_CTRL_GE1		(1 << 19)
+#define CPU_PM_CTRL_TDM		(1 << 20)
+#define CPU_PM_CTRL_XOR		(CPU_PM_CTRL_XOR0 | CPU_PM_CTRL_XOR1)
+#define CPU_PM_CTRL_USB(u)	(CPU_PM_CTRL_USB0)
+#define CPU_PM_CTRL_SATA	(CPU_PM_CTRL_SATA0 | CPU_PM_CTRL_SATA1)
 #elif defined(SOC_MV_DISCOVERY)
 #define CPU_PM_CTRL_GE0		(1 << 1)
 #define CPU_PM_CTRL_GE1		(1 << 2)
@@ -258,6 +262,14 @@
 #define CPU_PM_CTRL_XOR		(1 << 21)
 #define CPU_PM_CTRL_CRYPTO	(1 << 22)
 #define CPU_PM_CTRL_DEVICE	(1 << 23)
+#define CPU_PM_CTRL_USB(u)	(1 << (17 + (u)))
+#define CPU_PM_CTRL_SATA	(CPU_PM_CTRL_SATA0 | CPU_PM_CTRL_SATA1)
+#else
+#define CPU_PM_CTRL_CRYPTO	(CPU_PM_CTRL_NONE)
+#define CPU_PM_CTRL_IDMA	(CPU_PM_CTRL_NONE)
+#define CPU_PM_CTRL_XOR		(CPU_PM_CTRL_NONE)
+#define CPU_PM_CTRL_SATA	(CPU_PM_CTRL_NONE)
+#define CPU_PM_CTRL_USB(u)	(CPU_PM_CTRL_NONE)
 #endif
 
 /*

==== //depot/projects/usb/src/sys/arm/mv/mvvar.h#4 (text+ko) ====

@@ -34,13 +34,17 @@
  *
  * from: FreeBSD: //depot/projects/arm/src/sys/arm/xscale/pxa2x0/pxa2x0var.h, rev 1
  *
- * $FreeBSD: src/sys/arm/mv/mvvar.h,v 1.5 2009/01/09 10:20:51 raj Exp $
+ * $FreeBSD: src/sys/arm/mv/mvvar.h,v 1.7 2009/08/25 09:35:50 raj Exp $
  */
 
 #ifndef _MVVAR_H_
 #define _MVVAR_H_
 
 #include <sys/rman.h>
+#include <vm/vm.h>
+#include <vm/pmap.h>
+#include <machine/pmap.h>
+#include <machine/vm.h>
 
 #define	MV_TYPE_PCI		0
 #define	MV_TYPE_PCIE		1
@@ -104,6 +108,7 @@
 	int		remap;
 };
 
+extern const struct pmap_devmap pmap_devmap[];
 extern const struct obio_pci mv_pci_info[];
 extern const struct gpio_config mv_gpio_config[];
 extern bus_space_tag_t obio_tag;
@@ -124,13 +129,13 @@
 void mv_gpio_out(uint32_t pin, uint8_t val, uint8_t enable);
 uint8_t mv_gpio_in(uint32_t pin);
 
-int platform_pmap_init(void);
 void platform_mpp_init(void);
 int soc_decode_win(void);
 void soc_id(uint32_t *dev, uint32_t *rev);
 void soc_identify(void);
 void soc_dump_decode_win(void);
 uint32_t soc_power_ctrl_get(uint32_t mask);
+void soc_power_ctrl_set(uint32_t mask);
 
 int decode_win_cpu_set(int target, int attr, vm_paddr_t base, uint32_t size,
     int remap);

==== //depot/projects/usb/src/sys/arm/mv/orion/db88f5xxx.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/mv/orion/db88f5xxx.c,v 1.5 2009/06/12 20:00:38 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/mv/orion/db88f5xxx.c,v 1.6 2009/08/25 09:30:03 raj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -70,12 +70,10 @@
  * 0xffff_2000 - 0xffff_ffff	: unused (~55KB)
  */
 
-const struct pmap_devmap *pmap_devmap_bootstrap_table;
-vm_offset_t pmap_bootstrap_lastaddr;
 int platform_pci_get_irq(u_int bus, u_int slot, u_int func, u_int pin);
 
 /* Static device mappings. */
-static const struct pmap_devmap pmap_devmap[] = {
+const struct pmap_devmap pmap_devmap[] = {
 	/*
 	 * Map the on-board devices VA == PA so that we can access them
 	 * with the MMU on or off.
@@ -184,16 +182,6 @@
 };
 #endif
 
-int
-platform_pmap_init(void)
-{
-
-	pmap_bootstrap_lastaddr = MV_BASE - ARM_NOCACHE_KVA_SIZE;
-	pmap_devmap_bootstrap_table = &pmap_devmap[0];
-
-	return (0);
-}
-
 void
 platform_mpp_init(void)
 {

==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixdp425_pci.c,v 1.2 2008/03/20 15:54:19 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixdp425_pci.c,v 1.3 2009/08/23 19:54:36 cognet Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -62,12 +62,12 @@
 	/* PCI Reset Assert */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPOUTR);
 	reg &= ~(1U << GPIO_PCI_RESET);
-	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg & ~(1U << GPIO_PCI_RESET));
+	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg);
 
 	/* PCI Clock Disable */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPCLKR);
 	reg &= ~GPCLKR_MUX14;
-	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg & ~GPCLKR_MUX14);
+	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg);
 
 	/*
 	 * set GPIO Direction

==== //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/mutex.h#4 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/mutex.h,v 1.7 2009/05/29 01:49:27 attilio Exp $
+ * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/mutex.h,v 1.8 2009/08/23 11:22:46 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_MUTEX_H_
@@ -32,9 +32,9 @@
 #ifdef _KERNEL
 
 #include <sys/param.h>
-#include <sys/proc.h>
 #include <sys/lock.h>
 #include_next <sys/mutex.h>
+#include <sys/proc.h>
 #include <sys/sx.h>
 
 typedef enum {

==== //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/proc.h#3 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/proc.h,v 1.6 2008/11/17 20:49:29 pjd Exp $
+ * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/proc.h,v 1.8 2009/08/23 11:33:46 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_PROC_H_
@@ -34,13 +34,16 @@
 #include_next <sys/proc.h>
 #include <sys/stdint.h>
 #include <sys/smp.h>
+#include <sys/sched.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
 #include <sys/debug.h>
 
 #ifdef _KERNEL
 
 #define	CPU		curcpu
-#define	minclsyspri	0
-#define	maxclsyspri	0
+#define	minclsyspri	PRIBIO
+#define	maxclsyspri	PVM
 #define	max_ncpus	mp_ncpus
 #define	boot_max_ncpus	mp_ncpus
 
@@ -54,11 +57,13 @@
 typedef struct thread	*kthread_id_t;
 typedef struct proc	proc_t;
 
+extern struct proc *zfsproc;
+
 static __inline kthread_t *
 thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg,
     size_t len, proc_t *pp, int state, pri_t pri)
 {
-	proc_t *p;
+	kthread_t *td = NULL;
 	int error;
 
 	/*
@@ -67,13 +72,19 @@
 	ASSERT(stk == NULL);
 	ASSERT(len == 0);
 	ASSERT(state == TS_RUN);
+	ASSERT(pp == &p0);
 
-	error = kproc_create(proc, arg, &p, 0, stksize / PAGE_SIZE,
-	    "solthread %p", proc);
-	return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL);
+	error = kproc_kthread_add(proc, arg, &zfsproc, &td, 0,
+	    stksize / PAGE_SIZE, "zfskern", "solthread %p", proc);
+	if (error == 0) {
+		thread_lock(td);
+		sched_prio(td, pri);
+		thread_unlock(td);
+	}
+	return (td);
 }
 
-#define	thread_exit()	kproc_exit(0)
+#define	thread_exit()	kthread_exit()
 
 #endif	/* _KERNEL */
 

==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#4 (text+ko) ====

@@ -194,6 +194,10 @@
 	zio_t *zio;
 	struct bio *bp;
 
+	thread_lock(curthread);
+	sched_prio(curthread, PRIBIO);
+	thread_unlock(curthread);
+
 	ctx = arg;
 	for (;;) {
 		mtx_lock(&ctx->gc_queue_mtx);
@@ -203,7 +207,7 @@
 				ctx->gc_state = 2;
 				wakeup_one(&ctx->gc_state);
 				mtx_unlock(&ctx->gc_queue_mtx);
-				kproc_exit(0);
+				kthread_exit();
 			}
 			msleep(&ctx->gc_queue, &ctx->gc_queue_mtx,
 			    PRIBIO | PDROP, "vgeom:io", 0);
@@ -530,8 +534,8 @@
 	vd->vdev_tsd = ctx;
 	pp = cp->provider;
 
-	kproc_create(vdev_geom_worker, ctx, NULL, 0, 0, "vdev:worker %s",
-	    pp->name);
+	kproc_kthread_add(vdev_geom_worker, ctx, &zfsproc, NULL, 0, 0,
+	    "zfskern", "vdev %s", pp->name);
 
 	/*
 	 * Determine the actual size of the device.

==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#8 (text+ko) ====

@@ -3057,6 +3057,7 @@
 }
 
 static struct root_hold_token *zfs_root_token;
+struct proc *zfsproc;
 
 uint_t zfs_fsyncer_key;
 extern uint_t rrw_tsd_key;

==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#3 (text+ko) ====

@@ -402,6 +402,10 @@
 	zvol_state_t *zv;
 	struct bio *bp;
 
+	thread_lock(curthread);
+	sched_prio(curthread, PRIBIO);
+	thread_unlock(curthread);
+
 	zv = arg;
 	for (;;) {
 		mtx_lock(&zv->zv_queue_mtx);
@@ -411,7 +415,7 @@
 				zv->zv_state = 2;
 				wakeup(&zv->zv_state);
 				mtx_unlock(&zv->zv_queue_mtx);
-				kproc_exit(0);
+				kthread_exit();
 			}
 			msleep(&zv->zv_queue, &zv->zv_queue_mtx, PRIBIO | PDROP,
 			    "zvol:io", 0);
@@ -824,7 +828,8 @@
 	bioq_init(&zv->zv_queue);
 	mtx_init(&zv->zv_queue_mtx, "zvol", NULL, MTX_DEF);
 	zv->zv_state = 0;
-	kproc_create(zvol_worker, zv, NULL, 0, 0, "zvol:worker %s", pp->name);
+	kproc_kthread_add(zvol_worker, zv, &zfsproc, NULL, 0, 0, "zfskern",
+	    "zvol %s", pp->name + strlen(ZVOL_DEV_DIR) + 1);
 
 	zvol_minors++;
 end:

==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/sys/callb.h#3 (text+ko) ====


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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908261042.n7QAgkg3025342>