PERFORCE change 167999 for review
Marko Zec
zec at FreeBSD.org
Mon Aug 31 09:34:12 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=167999
Change 167999 by zec at zec_tpx32 on 2009/08/31 09:34:08
IFC @ 167987
Affected files ...
.. //depot/projects/vimage/src/share/man/man4/ahci.4#3 integrate
.. //depot/projects/vimage/src/share/man/man4/ip6.4#2 integrate
.. //depot/projects/vimage/src/share/man/man5/rc.conf.5#9 integrate
.. //depot/projects/vimage/src/share/man/man5/tmpfs.5#2 integrate
.. //depot/projects/vimage/src/sys/amd64/amd64/elf_machdep.c#7 integrate
.. //depot/projects/vimage/src/sys/amd64/amd64/pmap.c#34 integrate
.. //depot/projects/vimage/src/sys/amd64/amd64/trap.c#16 integrate
.. //depot/projects/vimage/src/sys/amd64/linux32/linux32_sysvec.c#20 integrate
.. //depot/projects/vimage/src/sys/arm/arm/vm_machdep.c#12 integrate
.. //depot/projects/vimage/src/sys/arm/conf/CAMBRIA#8 integrate
.. //depot/projects/vimage/src/sys/arm/conf/SHEEVAPLUG#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/common.c#6 integrate
.. //depot/projects/vimage/src/sys/arm/mv/discovery/db78xxx.c#5 integrate
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/db88f6xxx.c#5 integrate
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/files.db88f6xxx#2 integrate
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/files.kirkwood#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/files.sheevaplug#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/sheevaplug.c#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/std.db88f6xxx#2 integrate
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/std.kirkwood#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/kirkwood/std.sheevaplug#1 branch
.. //depot/projects/vimage/src/sys/arm/mv/mv_machdep.c#7 integrate
.. //depot/projects/vimage/src/sys/arm/mv/mvreg.h#7 integrate
.. //depot/projects/vimage/src/sys/arm/mv/mvvar.h#4 integrate
.. //depot/projects/vimage/src/sys/arm/mv/orion/db88f5xxx.c#5 integrate
.. //depot/projects/vimage/src/sys/cam/ata/ata_all.c#2 integrate
.. //depot/projects/vimage/src/sys/cam/ata/ata_all.h#2 integrate
.. //depot/projects/vimage/src/sys/cam/ata/ata_da.c#3 integrate
.. //depot/projects/vimage/src/sys/cam/ata/ata_xpt.c#3 integrate
.. //depot/projects/vimage/src/sys/cam/scsi/scsi_da.c#18 integrate
.. //depot/projects/vimage/src/sys/compat/ia32/ia32_sysvec.c#11 integrate
.. //depot/projects/vimage/src/sys/compat/linprocfs/linprocfs.c#41 integrate
.. //depot/projects/vimage/src/sys/compat/linux/linux_ioctl.c#28 integrate
.. //depot/projects/vimage/src/sys/conf/NOTES#61 integrate
.. //depot/projects/vimage/src/sys/conf/options.arm#11 integrate
.. //depot/projects/vimage/src/sys/contrib/pf/net/pf_if.c#21 integrate
.. //depot/projects/vimage/src/sys/dev/acpica/acpi.c#24 integrate
.. //depot/projects/vimage/src/sys/dev/ahci/ahci.c#2 integrate
.. //depot/projects/vimage/src/sys/dev/ahci/ahci.h#2 integrate
.. //depot/projects/vimage/src/sys/dev/alc/if_alc.c#4 integrate
.. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ah_regdomain.c#5 integrate
.. //depot/projects/vimage/src/sys/dev/ixgbe/ixgbe.c#10 integrate
.. //depot/projects/vimage/src/sys/dev/mge/if_mge.c#7 integrate
.. //depot/projects/vimage/src/sys/dev/re/if_re.c#29 integrate
.. //depot/projects/vimage/src/sys/dev/siis/siis.c#2 integrate
.. //depot/projects/vimage/src/sys/dev/syscons/scvgarndr.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/syscons/scvidctl.c#4 integrate
.. //depot/projects/vimage/src/sys/dev/usb/usb_process.c#9 integrate
.. //depot/projects/vimage/src/sys/fs/fifofs/fifo_vnops.c#15 integrate
.. //depot/projects/vimage/src/sys/geom/multipath/g_multipath.c#3 integrate
.. //depot/projects/vimage/src/sys/i386/i386/elf_machdep.c#8 integrate
.. //depot/projects/vimage/src/sys/i386/i386/pmap.c#31 integrate
.. //depot/projects/vimage/src/sys/i386/i386/trap.c#17 integrate
.. //depot/projects/vimage/src/sys/i386/isa/vesa.c#4 integrate
.. //depot/projects/vimage/src/sys/i386/linux/linux_sysvec.c#15 integrate
.. //depot/projects/vimage/src/sys/isa/isahint.c#3 integrate
.. //depot/projects/vimage/src/sys/kern/imgact_elf.c#15 integrate
.. //depot/projects/vimage/src/sys/kern/kern_conf.c#22 integrate
.. //depot/projects/vimage/src/sys/kern/kern_exit.c#36 integrate
.. //depot/projects/vimage/src/sys/kern/kern_fork.c#32 integrate
.. //depot/projects/vimage/src/sys/kern/kern_jail.c#36 integrate
.. //depot/projects/vimage/src/sys/kern/kern_kthread.c#7 integrate
.. //depot/projects/vimage/src/sys/kern/kern_proc.c#28 integrate
.. //depot/projects/vimage/src/sys/kern/kern_thr.c#17 integrate
.. //depot/projects/vimage/src/sys/kern/kern_thread.c#23 integrate
.. //depot/projects/vimage/src/sys/kern/subr_bus.c#22 integrate
.. //depot/projects/vimage/src/sys/kern/uipc_socket.c#43 integrate
.. //depot/projects/vimage/src/sys/kern/vfs_syscalls.c#32 integrate
.. //depot/projects/vimage/src/sys/modules/Makefile#54 integrate
.. //depot/projects/vimage/src/sys/net/flowtable.c#9 integrate
.. //depot/projects/vimage/src/sys/net/if.c#93 integrate
.. //depot/projects/vimage/src/sys/net/if_bridge.c#34 integrate
.. //depot/projects/vimage/src/sys/net/if_llatbl.c#9 integrate
.. //depot/projects/vimage/src/sys/net/if_llatbl.h#5 integrate
.. //depot/projects/vimage/src/sys/net/if_var.h#47 integrate
.. //depot/projects/vimage/src/sys/net/rtsock.c#44 integrate
.. //depot/projects/vimage/src/sys/net/vnet.c#4 integrate
.. //depot/projects/vimage/src/sys/netinet/in.c#42 integrate
.. //depot/projects/vimage/src/sys/netinet/ip_output.c#45 integrate
.. //depot/projects/vimage/src/sys/netinet/sctp_bsd_addr.c#19 integrate
.. //depot/projects/vimage/src/sys/netinet6/in6.c#44 integrate
.. //depot/projects/vimage/src/sys/netinet6/ip6_input.c#62 integrate
.. //depot/projects/vimage/src/sys/netinet6/nd6_rtr.c#40 integrate
.. //depot/projects/vimage/src/sys/pci/if_rlreg.h#22 integrate
.. //depot/projects/vimage/src/sys/sys/conf.h#19 integrate
.. //depot/projects/vimage/src/sys/sys/imgact_elf.h#5 integrate
.. //depot/projects/vimage/src/sys/sys/proc.h#37 integrate
.. //depot/projects/vimage/src/sys/sys/types.h#8 integrate
.. //depot/projects/vimage/src/sys/vm/device_pager.c#10 integrate
.. //depot/projects/vimage/src/sys/vm/sg_pager.c#2 integrate
.. //depot/projects/vimage/src/sys/vm/vm.h#6 integrate
.. //depot/projects/vimage/src/sys/vm/vm_extern.h#8 integrate
.. //depot/projects/vimage/src/sys/vm/vm_glue.c#11 integrate
Differences ...
==== //depot/projects/vimage/src/share/man/man4/ahci.4#3 (text+ko) ====
@@ -23,9 +23,9 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/ahci.4,v 1.2 2009/07/25 18:19:31 mav Exp $
+.\" $FreeBSD: src/share/man/man4/ahci.4,v 1.3 2009/08/30 15:20:13 mav Exp $
.\"
-.Dd June 26, 2009
+.Dd August 24, 2009
.Dt AHCI 4
.Os
.Sh NAME
@@ -60,6 +60,13 @@
.It 2
multiple MSI vectors used, if supported;
.El
+.It Va hint.ahci.X.ccc
+controls Command Completion Coalescing (CCC) usage by the specified controller.
+Non-zero value enables CCC and defines maximum time (in ms), request can wait
+for interrupt, if there are some more requests present on controller queue.
+CCC reduces number of context switches on systems with many parallel requests,
+but it can decrease disk performance on some workloads due to additional
+command latency.
.It Va hint.ahcich.X.pm_level
controls SATA interface Power Management for specified channel,
allowing some power to be saved at the cost of additional command
@@ -74,7 +81,15 @@
host initiates PARTIAL PM state transition every time port becomes idle;
.It 3
host initiates SLUMBER PM state transition every time port becomes idle.
+.It 4
+driver initiates PARTIAL PM state transition 1ms after port becomes idle;
+.It 5
+driver initiates SLUMBER PM state transition 125ms after port becomes idle.
.El
+Some controllers, such as ICH8, do not implement modes 2 and 3 with NCQ used.
+Because of artificial entering latency, performance degradation in modes
+4 and 5 is much smaller then in modes 2 and 3.
+.Pp
Note that interface Power Management is not compatible with
device presence detection.
You will have to reset bus manually on device hot-plug.
==== //depot/projects/vimage/src/share/man/man4/ip6.4#2 (text+ko) ====
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/ip6.4,v 1.23 2008/02/22 21:02:36 bms Exp $
+.\" $FreeBSD: src/share/man/man4/ip6.4,v 1.24 2009/08/30 14:45:09 motoyuki Exp $
.\"
.Dd February 21, 2008
.Dt IP6 4
@@ -692,7 +692,7 @@
Most of the socket options are defined in RFC 2292 or RFC 2553.
The
.Dv IPV6_V6ONLY
-socket option is defined in RFC 3542.
+socket option is defined in RFC 3493 Section 5.3.
The
.Dv IPV6_PORTRANGE
socket option and the conflict resolution rule are not defined in the
==== //depot/projects/vimage/src/share/man/man5/rc.conf.5#9 (text+ko) ====
@@ -22,9 +22,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.360 2009/05/16 20:55:28 dougb Exp $
+.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.361 2009/08/25 19:07:26 delphij Exp $
.\"
-.Dd April 10, 2009
+.Dd August 25, 2009
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -2227,6 +2227,22 @@
.Pq Vt str
The IPv6 equivalent of
.Va defaultrouter .
+.It Va static_arp_pairs
+.Pq Vt str
+Set to the list of static ARP pairs that are to be added at system
+boot time.
+For each whitespace separated
+.Ar element
+in the value, a
+.Va static_arp_ Ns Aq Ar element
+variable is assumed to exist whose contents will later be passed to a
+.Dq Nm arp Cm -S
+operation.
+For example
+.Bd -literal
+static_arp_pairs="gw"
+static_arp_gw="192.168.1.1 00:01:02:03:04:05"
+.Ed
.It Va static_routes
.Pq Vt str
Set to the list of static routes that are to be added at system
==== //depot/projects/vimage/src/share/man/man5/tmpfs.5#2 (text+ko) ====
@@ -24,7 +24,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man5/tmpfs.5,v 1.4 2008/06/12 18:49:24 remko Exp $
+.\" $FreeBSD: src/share/man/man5/tmpfs.5,v 1.5 2009/08/25 01:04:15 delphij Exp $
.\"
.Dd June 12, 2008
.Dt TMPFS 5
@@ -70,6 +70,7 @@
maximum number of inodes.
.It Cm size
maximum size (in bytes) for the file system.
+.El
.Sh EXAMPLES
To mount a
.Nm
==== //depot/projects/vimage/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.32 2009/08/30 14:38:17 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_MANDATORY
+};
+
+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/vimage/src/sys/amd64/amd64/pmap.c#34 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.668 2009/08/17 13:27:55 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.669 2009/08/29 16:01:21 rnoland Exp $");
/*
* Manages physical address maps.
@@ -943,8 +943,8 @@
* coherence domain.
*/
mfence();
- for (; eva < sva; eva += cpu_clflush_line_size)
- clflush(eva);
+ for (; sva < eva; sva += cpu_clflush_line_size)
+ clflush(sva);
mfence();
} else {
==== //depot/projects/vimage/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/vimage/src/sys/amd64/linux32/linux32_sysvec.c#20 (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/vimage/src/sys/arm/arm/vm_machdep.c#12 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.40 2009/07/20 07:53:07 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.42 2009/08/29 21:53:08 kib Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/vimage/src/sys/arm/conf/CAMBRIA#8 (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/arm/conf/CAMBRIA,v 1.12 2009/07/17 18:35:45 rpaulo Exp $
+# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.14 2009/08/27 17:55:44 sam Exp $
ident CAMBRIA
==== //depot/projects/vimage/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/vimage/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/vimage/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/vimage/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/vimage/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/vimage/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/vimage/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/vimage/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/vimage/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/vimage/src/sys/cam/ata/ata_all.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.1 2009/07/10 08:18:08 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.2 2009/08/30 16:31:25 mav Exp $");
#include <sys/param.h>
@@ -91,7 +91,7 @@
}
void
-ata_36bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
+ata_28bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
uint32_t lba, uint8_t sector_count)
{
bzero(&ataio->cmd, sizeof(ataio->cmd));
==== //depot/projects/vimage/src/sys/cam/ata/ata_all.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/cam/ata/ata_all.h,v 1.1 2009/07/10 08:18:08 scottl Exp $
+ * $FreeBSD: src/sys/cam/ata/ata_all.h,v 1.2 2009/08/30 16:31:25 mav Exp $
*/
#ifndef CAM_ATA_ALL_H
@@ -83,7 +83,7 @@
int ata_version(int ver);
void ata_print_ident(struct ata_params *ident_data);
-void ata_36bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
+void ata_28bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
uint32_t lba, uint8_t sector_count);
void ata_48bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint16_t features,
uint64_t lba, uint16_t sector_count);
==== //depot/projects/vimage/src/sys/cam/ata/ata_da.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.2 2009/07/17 21:48:08 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.4 2009/08/30 16:31:25 mav Exp $");
#include <sys/param.h>
@@ -287,7 +287,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0);
cam_periph_runccb(ccb, /*error_routine*/NULL, /*cam_flags*/0,
/*sense_flags*/SF_RETRY_UA,
softc->disk->d_devstat);
@@ -411,7 +411,7 @@
ata_48bit_cmd(&ccb.ataio, ATA_WRITE_DMA48,
0, lba, count);
} else {
- ata_36bit_cmd(&ccb.ataio, ATA_WRITE_DMA,
+ ata_28bit_cmd(&ccb.ataio, ATA_WRITE_DMA,
0, lba, count);
}
xpt_polled_action(&ccb);
@@ -441,7 +441,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
xpt_polled_action(&ccb);
if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP)
@@ -856,10 +856,10 @@
}
} else {
if (bp->bio_cmd == BIO_READ) {
- ata_36bit_cmd(ataio, ATA_READ_DMA,
+ ata_28bit_cmd(ataio, ATA_READ_DMA,
0, lba, count);
} else {
- ata_36bit_cmd(ataio, ATA_WRITE_DMA,
+ ata_28bit_cmd(ataio, ATA_WRITE_DMA,
0, lba, count);
}
}
@@ -878,7 +878,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list