PERFORCE change 115215 for review
Jung-uk Kim
jkim at FreeBSD.org
Thu Mar 1 20:04:52 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=115215
Change 115215 by jkim at jkim_hammer on 2007/03/01 20:04:24
IFC
Affected files ...
.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#44 integrate
.. //depot/projects/linuxolator/src/sys/arm/arm/db_interface.c#3 integrate
.. //depot/projects/linuxolator/src/sys/arm/arm/locore.S#3 integrate
.. //depot/projects/linuxolator/src/sys/arm/arm/support.S#2 integrate
.. //depot/projects/linuxolator/src/sys/arm/arm/trap.c#4 integrate
.. //depot/projects/linuxolator/src/sys/arm/at91/at91.c#4 integrate
.. //depot/projects/linuxolator/src/sys/arm/at91/at91_rtc.c#3 integrate
.. //depot/projects/linuxolator/src/sys/arm/at91/at91_spi.c#5 integrate
.. //depot/projects/linuxolator/src/sys/arm/at91/ohci_atmelarm.c#2 integrate
.. //depot/projects/linuxolator/src/sys/arm/conf/AVILA#2 integrate
.. //depot/projects/linuxolator/src/sys/arm/sa11x0/sa11x0_ost.c#4 integrate
.. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/avila_ata.c#2 integrate
.. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425_qmgr.c#2 integrate
.. //depot/projects/linuxolator/src/sys/cam/scsi/scsi_target.c#3 integrate
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_futex.c#14 integrate
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_futex.h#3 integrate
.. //depot/projects/linuxolator/src/sys/conf/NOTES#19 integrate
.. //depot/projects/linuxolator/src/sys/conf/files#21 integrate
.. //depot/projects/linuxolator/src/sys/conf/options#18 integrate
.. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_ec.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/ata/atapi-cam.c#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/ath/if_ath.c#8 integrate
.. //depot/projects/linuxolator/src/sys/dev/ath/if_athvar.h#7 integrate
.. //depot/projects/linuxolator/src/sys/dev/em/if_em.c#13 integrate
.. //depot/projects/linuxolator/src/sys/dev/fdc/fdc.c#5 integrate
.. //depot/projects/linuxolator/src/sys/dev/firewire/fwohci.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/firewire/sbp.c#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/hptmv/entry.c#4 integrate
.. //depot/projects/linuxolator/src/sys/dev/hptmv/ioctl.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/hwpmc/hwpmc_mod.c#4 integrate
.. //depot/projects/linuxolator/src/sys/dev/ipmi/ipmi_ssif.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/mii/rlphy.c#6 integrate
.. //depot/projects/linuxolator/src/sys/dev/pccard/pccard_cis.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/pccbb/pccbb.c#4 integrate
.. //depot/projects/linuxolator/src/sys/dev/random/randomdev_soft.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/re/if_re.c#9 integrate
.. //depot/projects/linuxolator/src/sys/dev/scd/scd.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/midi.c#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/midi.h#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/midiq.h#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/mpu401.c#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/mpu401.h#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/mpu_if.m#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/mpufoi_if.m#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/sequencer.c#5 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/sequencer.h#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/midi/synth_if.m#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/sound/pci/hda/hdac.c#14 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/sl811hs.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/sl811hsvar.h#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/umass.c#5 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/usb_subr.c#5 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/usbdevs#10 integrate
.. //depot/projects/linuxolator/src/sys/dev/usb/uvscom.c#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/zs/z8530var.h#2 integrate
.. //depot/projects/linuxolator/src/sys/dev/zs/zs.c#3 integrate
.. //depot/projects/linuxolator/src/sys/dev/zs/zs_macio.c#2 integrate
.. //depot/projects/linuxolator/src/sys/fs/smbfs/smbfs_smb.c#3 integrate
.. //depot/projects/linuxolator/src/sys/geom/geom_dev.c#3 integrate
.. //depot/projects/linuxolator/src/sys/geom/geom_io.c#5 integrate
.. //depot/projects/linuxolator/src/sys/geom/multipath/g_multipath.c#1 branch
.. //depot/projects/linuxolator/src/sys/geom/multipath/g_multipath.h#1 branch
.. //depot/projects/linuxolator/src/sys/i386/ibcs2/ibcs2_xenix.c#3 integrate
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#35 integrate
.. //depot/projects/linuxolator/src/sys/isa/syscons_isa.c#2 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_fork.c#12 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_intr.c#7 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_linker.c#5 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_lock.c#5 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_mutex.c#5 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_resource.c#9 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_rwlock.c#4 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_sx.c#4 integrate
.. //depot/projects/linuxolator/src/sys/kern/kern_synch.c#8 integrate
.. //depot/projects/linuxolator/src/sys/kern/link_elf.c#3 integrate
.. //depot/projects/linuxolator/src/sys/kern/sched_4bsd.c#11 integrate
.. //depot/projects/linuxolator/src/sys/kern/sched_ule.c#9 integrate
.. //depot/projects/linuxolator/src/sys/kern/subr_bus.c#4 integrate
.. //depot/projects/linuxolator/src/sys/kern/subr_lock.c#5 integrate
.. //depot/projects/linuxolator/src/sys/kern/sys_generic.c#4 integrate
.. //depot/projects/linuxolator/src/sys/kern/uipc_socket.c#13 integrate
.. //depot/projects/linuxolator/src/sys/kern/uipc_usrreq.c#10 integrate
.. //depot/projects/linuxolator/src/sys/modules/geom/Makefile#5 integrate
.. //depot/projects/linuxolator/src/sys/modules/geom/geom_multipath/Makefile#1 branch
.. //depot/projects/linuxolator/src/sys/net/bpf.c#5 integrate
.. //depot/projects/linuxolator/src/sys/net/bpf.h#2 integrate
.. //depot/projects/linuxolator/src/sys/net/bpfdesc.h#3 integrate
.. //depot/projects/linuxolator/src/sys/net/if_vlan_var.h#3 integrate
.. //depot/projects/linuxolator/src/sys/netinet/in.h#4 integrate
.. //depot/projects/linuxolator/src/sys/netinet/ip_mroute.c#9 integrate
.. //depot/projects/linuxolator/src/sys/netinet/ip_output.c#8 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_input.c#9 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_output.c#6 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_subr.c#6 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_timer.c#2 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_timer.h#3 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_usrreq.c#7 integrate
.. //depot/projects/linuxolator/src/sys/netinet/tcp_var.h#4 integrate
.. //depot/projects/linuxolator/src/sys/netinet6/ip6_mroute.c#4 integrate
.. //depot/projects/linuxolator/src/sys/netinet6/ip6_mroute.h#4 integrate
.. //depot/projects/linuxolator/src/sys/netinet6/raw_ip6.c#3 integrate
.. //depot/projects/linuxolator/src/sys/netipx/ipx_ip.c#3 integrate
.. //depot/projects/linuxolator/src/sys/netipx/ipx_ip.h#3 integrate
.. //depot/projects/linuxolator/src/sys/netncp/ncp_sock.c#2 integrate
.. //depot/projects/linuxolator/src/sys/nfsclient/bootp_subr.c#4 integrate
.. //depot/projects/linuxolator/src/sys/pc98/cbus/clock.c#5 integrate
.. //depot/projects/linuxolator/src/sys/pc98/cbus/syscons_cbus.c#2 integrate
.. //depot/projects/linuxolator/src/sys/powerpc/powermac/pswitch.c#2 integrate
.. //depot/projects/linuxolator/src/sys/sparc64/sparc64/machdep.c#5 integrate
.. //depot/projects/linuxolator/src/sys/sys/extattr.h#2 integrate
.. //depot/projects/linuxolator/src/sys/sys/lock.h#5 integrate
.. //depot/projects/linuxolator/src/sys/sys/lock_profile.h#4 integrate
.. //depot/projects/linuxolator/src/sys/sys/mbuf.h#7 integrate
.. //depot/projects/linuxolator/src/sys/sys/mutex.h#5 integrate
.. //depot/projects/linuxolator/src/sys/sys/priv.h#5 integrate
.. //depot/projects/linuxolator/src/sys/sys/rwlock.h#3 integrate
.. //depot/projects/linuxolator/src/sys/sys/systm.h#9 integrate
.. //depot/projects/linuxolator/src/sys/sys/unpcb.h#3 integrate
.. //depot/projects/linuxolator/src/sys/tools/fw_stub.awk#3 integrate
.. //depot/projects/linuxolator/src/sys/vm/phys_pager.c#3 integrate
.. //depot/projects/linuxolator/src/sys/vm/swap_pager.c#7 integrate
.. //depot/projects/linuxolator/src/sys/vm/vm_kern.c#5 integrate
.. //depot/projects/linuxolator/src/sys/vm/vm_map.c#3 integrate
.. //depot/projects/linuxolator/src/sys/vm/vm_object.c#7 integrate
.. //depot/projects/linuxolator/src/sys/vm/vm_page.c#10 integrate
.. //depot/projects/linuxolator/src/sys/vm/vm_page.h#4 integrate
Differences ...
==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#44 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.34 2007/02/24 16:49:24 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.35 2007/02/27 02:08:00 jkim Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
==== //depot/projects/linuxolator/src/sys/arm/arm/db_interface.c#3 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.6 2007/02/14 01:25:41 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.7 2007/02/26 05:17:47 kevlo Exp $");
#include "opt_ddb.h"
#include <sys/param.h>
@@ -53,7 +53,6 @@
#include <vm/vm_extern.h>
#include <machine/db_machdep.h>
-#include <machine/katelib.h>
#include <machine/vmparam.h>
#include <machine/cpu.h>
==== //depot/projects/linuxolator/src/sys/arm/arm/locore.S#3 (text+ko) ====
@@ -37,7 +37,7 @@
#include <machine/asm.h>
#include <machine/armreg.h>
#include <machine/pte.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.15 2007/02/19 00:57:27 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.16 2007/02/26 02:03:48 cognet Exp $");
/* What size should this really be ? It is only used by initarm() */
#define INIT_ARM_STACK_SIZE 2048
@@ -95,11 +95,6 @@
sub r0, r0, r9
add r0, r0, r8
mov r4, r0
- /* Make sure _arm_memcpy is NULL */
- ldr r3, .L_arm_memcpy
- ldr r3, [r3]
- mov r5, #0
- str r5, [r3]
bl memcpy
ldr r0, Lram_offset
add pc, r4, r0
==== //depot/projects/linuxolator/src/sys/arm/arm/support.S#2 (text+ko) ====
@@ -26,7 +26,7 @@
#include <machine/asm.h>
#include <machine/asmacros.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/support.S,v 1.11 2005/10/23 23:09:14 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/support.S,v 1.12 2007/02/26 02:03:48 cognet Exp $");
#include "assym.s"
@@ -871,6 +871,18 @@
#if !defined(__XSCALE__)
ENTRY(memcpy)
/* save leaf functions having to store this away */
+ /* Do not check arm_memcpy if we're running from flash */
+#ifdef FLASHADDR
+#if FLASHADDR > PHYSADDR
+ ldr r3, =FLASHADDR
+ cmp r3, pc
+ bls .Lnormal
+#else
+ ldr r3, =FLASHADDR
+ cmp r3, pc
+ bhi .Lnormal
+#endif
+#endif
ldr r3, .L_arm_memcpy
ldr r3, [r3]
cmp r3, #0
@@ -1096,6 +1108,17 @@
pld [r1]
cmp r2, #0x0c
ble .Lmemcpy_short /* <= 12 bytes */
+#ifdef FLASHADDR
+#if FLASHADDR > PHYSADDR
+ ldr r3, =FLASHADDR
+ cmp r3, pc
+ bls .Lnormal
+#else
+ ldr r3, =FLASHADDR
+ cmp r3, pc
+ bhi .Lnormal
+#endif
+#endif
ldr r3, .L_arm_memcpy
ldr r3, [r3]
cmp r3, #0
==== //depot/projects/linuxolator/src/sys/arm/arm/trap.c#4 (text+ko) ====
@@ -82,7 +82,7 @@
#include "opt_ktrace.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.32 2006/10/26 21:42:16 jb Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.33 2007/02/26 05:17:47 kevlo Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -110,7 +110,6 @@
#include <machine/cpuconf.h>
#include <machine/vmparam.h>
#include <machine/frame.h>
-#include <machine/katelib.h>
#include <machine/cpu.h>
#include <machine/intr.h>
#include <machine/pcb.h>
==== //depot/projects/linuxolator/src/sys/arm/at91/at91.c#4 (text) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.11 2007/02/23 12:18:27 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.12 2007/02/25 14:34:59 piso Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -548,7 +548,7 @@
{
struct at91_softc *sc = device_get_softc(dev);
- if (rman_get_start(ires) == AT91RM92_IRQ_SYSTEM && !(flags & INTR_FAST))
+ if (rman_get_start(ires) == AT91RM92_IRQ_SYSTEM && filt == NULL)
panic("All system interrupt ISRs must be type INTR_FAST");
BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt, intr, arg,
cookiep);
==== //depot/projects/linuxolator/src/sys/arm/at91/at91_rtc.c#3 (text) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91_rtc.c,v 1.3 2007/02/23 12:18:27 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91_rtc.c,v 1.4 2007/02/27 13:39:34 piso Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -80,7 +80,7 @@
static int at91_rtc_probe(device_t dev);
static int at91_rtc_attach(device_t dev);
static int at91_rtc_detach(device_t dev);
-static void at91_rtc_intr(void *);
+static int at91_rtc_intr(void *);
/* helper routines */
static int at91_rtc_activate(device_t dev);
==== //depot/projects/linuxolator/src/sys/arm/at91/at91_spi.c#5 (text) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91_spi.c,v 1.5 2007/02/23 12:18:27 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91_spi.c,v 1.6 2007/02/27 17:15:39 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -248,7 +248,7 @@
rxdone = sc->rxdone;
do {
- err = msleep(&sc->rxdone, NULL, PCATCH | PZERO, "spi", hz);
+ err = tsleep(&sc->rxdone, PCATCH | PZERO, "spi", hz);
} while (rxdone == sc->rxdone && err != EINTR);
WR4(sc, PDC_PTCR, PDC_PTCR_TXTDIS | PDC_PTCR_RXTDIS);
if (err == 0) {
==== //depot/projects/linuxolator/src/sys/arm/at91/ohci_atmelarm.c#2 (text) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.1 2006/03/18 01:45:29 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.2 2007/03/01 09:10:55 piso Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -99,8 +99,8 @@
}
device_set_ivars(sc->sc_ohci.sc_bus.bdev, &sc->sc_ohci.sc_bus);
- err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, ohci_intr, sc,
- &sc->sc_ohci.ih);
+ err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, NULL,
+ ohci_intr, sc, &sc->sc_ohci.ih);
if (err) {
err = ENXIO;
goto error;
==== //depot/projects/linuxolator/src/sys/arm/conf/AVILA#2 (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/AVILA,v 1.2 2006/11/22 12:57:17 kevlo Exp $
+# $FreeBSD: src/sys/arm/conf/AVILA,v 1.3 2007/02/26 02:04:24 cognet Exp $
machine arm
ident AVILA
@@ -24,6 +24,8 @@
options PHYSADDR=0x10000000
options KERNPHYSADDR=0x10200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
+options FLASHADDR=0x50000000
+options LOADERRAMADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x10000000
include "../xscale/ixp425/std.avila"
==== //depot/projects/linuxolator/src/sys/arm/sa11x0/sa11x0_ost.c#4 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_ost.c,v 1.6 2007/02/23 12:18:28 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_ost.c,v 1.7 2007/02/26 05:17:47 kevlo Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -57,8 +57,6 @@
#include <machine/cpufunc.h>
#include <machine/frame.h>
-#include <machine/katelib.h>
-
#include <arm/sa11x0/sa11x0_reg.h>
#include <arm/sa11x0/sa11x0_var.h>
#include <arm/sa11x0/sa11x0_ostreg.h>
==== //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/avila_ata.c#2 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_ata.c,v 1.1 2006/11/19 23:55:23 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_ata.c,v 1.2 2007/02/25 22:17:54 cognet Exp $");
/*
* Compact Flash Support for the Avila Gateworks XScale boards.
@@ -160,7 +160,7 @@
panic("Unable to allocate irq %u.\n", AVILA_IDE_IRQ);
bus_setup_intr(dev, sc->sc_irq,
INTR_TYPE_BIO | INTR_MPSAFE | INTR_ENTROPY,
- ata_avila_intr, sc, &sc->sc_ih);
+ NULL, ata_avila_intr, sc, &sc->sc_ih);
/* attach channel on this controller */
device_add_child(dev, "ata", devclass_find_free_unit(ata_devclass, 0));
@@ -225,8 +225,8 @@
static int
ata_avila_setup_intr(device_t dev, device_t child, struct resource *irq,
- int flags, driver_intr_t *function, void *argument,
- void **cookiep)
+ int flags, driver_filter_t *filt,
+ driver_intr_t *function, void *argument, void **cookiep)
{
struct ata_avila_softc *sc = device_get_softc(dev);
int unit = ((struct ata_channel *)device_get_softc(child))->unit;
==== //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425_qmgr.c#2 (text+ko) ====
@@ -57,7 +57,7 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_qmgr.c,v 1.1 2006/11/19 23:55:23 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_qmgr.c,v 1.2 2007/02/25 22:17:54 cognet Exp $");
/*
* Intel XScale Queue Manager support.
@@ -225,7 +225,7 @@
panic("Unable to allocate the qmgr irqs.\n");
/* XXX could be a source of entropy */
bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_NET | INTR_MPSAFE,
- ixpqmgr_intr, NULL, &sc->sc_ih);
+ NULL, ixpqmgr_intr, NULL, &sc->sc_ih);
/* NB: softc is pre-zero'd */
for (i = 0; i < IX_QMGR_MAX_NUM_QUEUES; i++) {
==== //depot/projects/linuxolator/src/sys/cam/scsi/scsi_target.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.71 2006/12/05 07:45:28 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.72 2007/02/27 17:15:39 jhb Exp $");
#include <sys/param.h>
@@ -810,8 +810,8 @@
user_descr = TAILQ_FIRST(abort_queue);
while (ccb_h == NULL && user_descr == NULL) {
if ((ioflag & IO_NDELAY) == 0) {
- error = msleep(user_queue, NULL,
- PRIBIO | PCATCH, "targrd", 0);
+ error = tsleep(user_queue,
+ PRIBIO | PCATCH, "targrd", 0);
ccb_h = TAILQ_FIRST(user_queue);
user_descr = TAILQ_FIRST(abort_queue);
if (error != 0) {
@@ -1037,7 +1037,7 @@
/* If we aborted at least one pending CCB ok, wait for it. */
if (cab.ccb_h.status == CAM_REQ_CMP) {
- msleep(&softc->pending_ccb_queue, NULL,
+ tsleep(&softc->pending_ccb_queue,
PRIBIO | PCATCH, "tgabrt", 0);
}
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_futex.c#14 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_futex.c,v 1.6 2006/09/09 16:25:25 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_futex.c,v 1.8 2007/02/25 12:43:07 netchild Exp $");
#if 0
__KERNEL_RCSID(1, "$NetBSD: linux_futex.c,v 1.7 2006/07/24 19:01:49 manu Exp $");
#endif
@@ -283,7 +283,7 @@
op_ret = futex_atomic_op(td, args->val3, args->uaddr2);
if (op_ret < 0) {
- /* XXX: we don't handle the EFAULT yet */
+ /* XXX: We don't handle the EFAULT yet. */
if (op_ret != -EFAULT) {
futex_put(f);
futex_put(f2);
@@ -416,10 +416,7 @@
* all operations BUT requeue ones where its N+1
* mimic this.
*/
- if (newf)
- count = 0;
- else
- count = 1;
+ count = newf ? 0 : 1;
FUTEX_LOCK;
TAILQ_FOREACH(wp, &f->f_waiting_proc, wp_list) {
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_futex.h#3 (text+ko) ====
@@ -30,7 +30,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/linux/linux_futex.h,v 1.1 2006/08/15 12:20:59 netchild Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_futex.h,v 1.2 2007/02/25 12:40:35 netchild Exp $
*/
#ifndef _LINUX_FUTEX_H
==== //depot/projects/linuxolator/src/sys/conf/NOTES#19 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1410 2007/02/10 13:59:13 bms Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1411 2007/02/27 04:01:57 mjacob Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -147,6 +147,7 @@
options GEOM_LABEL # Providers labelization.
options GEOM_MBR # DOS/MBR partitioning
options GEOM_MIRROR # Disk mirroring.
+options GEOM_MULTIPATH # Disk multipath
options GEOM_NOP # Test class.
options GEOM_PART_APM # Apple partitioning
options GEOM_PART_GPT # GPT partitioning
==== //depot/projects/linuxolator/src/sys/conf/files#21 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1178 2007/02/24 11:38:47 bms Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1180 2007/02/27 04:01:57 mjacob Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -1210,6 +1210,7 @@
geom/label/g_label_ufs.c optional geom_label
geom/mirror/g_mirror.c optional geom_mirror
geom/mirror/g_mirror_ctl.c optional geom_mirror
+geom/multipath/g_multipath.c optional geom_multipath
geom/nop/g_nop.c optional geom_nop
geom/part/g_part.c standard
geom/part/g_part_if.m standard
@@ -1846,7 +1847,7 @@
netipx/ipx.c optional ipx
netipx/ipx_cksum.c optional ipx
netipx/ipx_input.c optional ipx
-netipx/ipx_ip.c optional ipx
+netipx/ipx_ip.c optional ipx ipxip
netipx/ipx_outputfl.c optional ipx
netipx/ipx_pcb.c optional ipx
netipx/ipx_proto.c optional ipx
==== //depot/projects/linuxolator/src/sys/conf/options#18 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.576 2007/02/10 13:59:13 bms Exp $
+# $FreeBSD: src/sys/conf/options,v 1.578 2007/02/27 12:05:25 des Exp $
#
# On the handling of kernel options
#
@@ -85,6 +85,7 @@
GEOM_LABEL opt_geom.h
GEOM_MBR opt_geom.h
GEOM_MIRROR opt_geom.h
+GEOM_MULTIPATH opt_geom.h
GEOM_NOP opt_geom.h
GEOM_PART_APM opt_geom.h
GEOM_PART_GPT opt_geom.h
@@ -548,6 +549,7 @@
MUTEX_DEBUG opt_global.h
MUTEX_NOINLINE opt_global.h
LOCK_PROFILING opt_global.h
+LOCK_PROFILING_FAST opt_global.h
MSIZE opt_global.h
REGRESSION opt_global.h
RESTARTABLE_PANICS opt_global.h
==== //depot/projects/linuxolator/src/sys/dev/acpica/acpi_ec.c#2 (text+ko) ====
@@ -136,7 +136,7 @@
*****************************************************************************/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.68 2005/12/06 14:51:55 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.69 2007/02/27 00:14:20 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -187,15 +187,15 @@
* | | | +--------- Burst Mode Enabled?
* | | +----------- SCI Event?
* | +------------- SMI Event?
- * +--------------- <Reserved>
+ * +--------------- <reserved>
*
*/
typedef UINT8 EC_STATUS;
#define EC_FLAG_OUTPUT_BUFFER ((EC_STATUS) 0x01)
#define EC_FLAG_INPUT_BUFFER ((EC_STATUS) 0x02)
+#define EC_FLAG_DATA_IS_CMD ((EC_STATUS) 0x08)
#define EC_FLAG_BURST_MODE ((EC_STATUS) 0x10)
-#define EC_FLAG_SCI ((EC_STATUS) 0x20)
/*
* EC_EVENT:
@@ -207,6 +207,10 @@
#define EC_EVENT_OUTPUT_BUFFER_FULL ((EC_EVENT) 0x01)
#define EC_EVENT_INPUT_BUFFER_EMPTY ((EC_EVENT) 0x02)
#define EC_EVENT_SCI ((EC_EVENT) 0x20)
+#define EC_EVENT_SMI ((EC_EVENT) 0x40)
+
+/* Data byte returned after burst enable indicating it was successful. */
+#define EC_BURST_ACK 0x90
/*
* Register access primitives
@@ -265,8 +269,11 @@
bus_space_tag_t ec_csr_tag;
bus_space_handle_t ec_csr_handle;
+ struct mtx ec_mtx;
int ec_glk;
int ec_glkhandle;
+ int ec_burstactive;
+ int ec_sci_pend;
};
/*
@@ -276,11 +283,14 @@
*/
#define EC_LOCK_TIMEOUT 1000
-/* Default interval in microseconds for the status polling loop. */
+/* Default delay in microseconds between each run of the status polling loop. */
#define EC_POLL_DELAY 10
-/* Total time in ms spent in the poll loop waiting for a response. */
-#define EC_POLL_TIMEOUT 100
+/* Default time in microseconds spent polling before sleep waiting. */
+#define EC_POLL_TIME 500
+
+/* Total time in ms spent waiting for a response from EC. */
+#define EC_TIMEOUT 500
#define EVENT_READY(event, status) \
(((event) == EC_EVENT_OUTPUT_BUFFER_FULL && \
@@ -288,25 +298,47 @@
((event) == EC_EVENT_INPUT_BUFFER_EMPTY && \
((status) & EC_FLAG_INPUT_BUFFER) == 0))
-static int ec_poll_timeout = EC_POLL_TIMEOUT;
-TUNABLE_INT("hw.acpi.ec.poll_timeout", &ec_poll_timeout);
+ACPI_SERIAL_DECL(ec, "ACPI embedded controller");
+
+SYSCTL_DECL(_debug_acpi);
+SYSCTL_NODE(_debug_acpi, OID_AUTO, ec, CTLFLAG_RD, NULL, "EC debugging");
-ACPI_SERIAL_DECL(ec, "ACPI embedded controller");
+static int ec_burst_mode = TRUE;
+TUNABLE_INT("debug.acpi.ec.burst", &ec_burst_mode);
+SYSCTL_INT(_debug_acpi_ec, OID_AUTO, burst, CTLFLAG_RW, &ec_burst_mode, TRUE,
+ "Enable use of burst mode (faster for nearly all systems)");
+static int ec_poll_time = EC_POLL_TIME;
+TUNABLE_INT("debug.acpi.ec.poll_time", &ec_poll_time);
+SYSCTL_INT(_debug_acpi_ec, OID_AUTO, poll_time, CTLFLAG_RW, &ec_poll_time,
+ EC_POLL_TIME, "Time spent polling vs. sleeping (CPU intensive)");
+static int ec_timeout = EC_TIMEOUT;
+TUNABLE_INT("debug.acpi.ec.timeout", &ec_timeout);
+SYSCTL_INT(_debug_acpi_ec, OID_AUTO, timeout, CTLFLAG_RW, &ec_timeout,
+ EC_TIMEOUT, "Total time spent waiting for a response (poll+sleep)");
static __inline ACPI_STATUS
-EcLock(struct acpi_ec_softc *sc)
+EcLock(struct acpi_ec_softc *sc, int serialize)
{
ACPI_STATUS status;
- /* Always acquire the exclusive lock. */
+ /*
+ * If caller is executing a series of commands, acquire the exclusive lock
+ * to serialize with other users.
+ * To sync with bottom-half interrupt handler, always acquire the mutex.
+ */
status = AE_OK;
- ACPI_SERIAL_BEGIN(ec);
+ if (serialize)
+ ACPI_SERIAL_BEGIN(ec);
+ mtx_lock(&sc->ec_mtx);
/* If _GLK is non-zero, also acquire the global lock. */
if (sc->ec_glk) {
status = AcpiAcquireGlobalLock(EC_LOCK_TIMEOUT, &sc->ec_glkhandle);
- if (ACPI_FAILURE(status))
- ACPI_SERIAL_END(ec);
+ if (ACPI_FAILURE(status)) {
+ mtx_unlock(&sc->ec_mtx);
+ if (serialize)
+ ACPI_SERIAL_END(ec);
+ }
}
return (status);
@@ -317,7 +349,9 @@
{
if (sc->ec_glk)
AcpiReleaseGlobalLock(sc->ec_glkhandle);
- ACPI_SERIAL_END(ec);
+ mtx_unlock(&sc->ec_mtx);
+ if (sx_xlocked(&ec_sxlock))
+ ACPI_SERIAL_END(ec);
}
static uint32_t EcGpeHandler(void *Context);
@@ -558,6 +592,7 @@
params = acpi_get_private(dev);
sc->ec_dev = dev;
sc->ec_handle = acpi_get_handle(dev);
+ mtx_init(&sc->ec_mtx, "ACPI EC lock", NULL, MTX_DEF);
/* Retrieve previously probed values via device ivars. */
sc->ec_glk = params->glk;
@@ -640,6 +675,7 @@
if (sc->ec_data_res)
bus_release_resource(sc->ec_dev, SYS_RES_IOPORT, sc->ec_data_rid,
sc->ec_data_res);
+ mtx_destroy(&sc->ec_mtx);
return (ENXIO);
}
@@ -687,13 +723,13 @@
struct acpi_ec_softc *sc = (struct acpi_ec_softc *)Context;
UINT8 Data;
ACPI_STATUS Status;
- EC_STATUS EcStatus;
char qxx[5];
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
KASSERT(Context != NULL, ("EcGpeQueryHandler called with NULL"));
- Status = EcLock(sc);
+ /* Serialize user access with EcSpaceHandler(). */
+ Status = EcLock(sc, TRUE);
if (ACPI_FAILURE(Status)) {
ACPI_VPRINT(sc->ec_dev, acpi_device_get_parent_softc(sc->ec_dev),
"GpeQuery lock error: %s\n", AcpiFormatException(Status));
@@ -701,19 +737,6 @@
}
/*
- * If the EC_SCI bit of the status register is not set, then pass
- * it along to any potential waiters as it may be an IBE/OBF event.
- */
- EcStatus = EC_GET_CSR(sc);
- if ((EcStatus & EC_EVENT_SCI) == 0) {
- CTR1(KTR_ACPI, "ec event was not SCI, status %#x", EcStatus);
- sc->ec_csrvalue = EcStatus;
- wakeup(&sc->ec_csrvalue);
- EcUnlock(sc);
- goto re_enable;
- }
-
- /*
* Send a query command to the EC to find out which _Qxx call it
* wants to make. This command clears the SCI bit and also the
* interrupt source since we are edge-triggered.
@@ -726,6 +749,9 @@
goto re_enable;
}
Data = EC_GET_DATA(sc);
+ sc->ec_sci_pend = FALSE;
+
+ /* Drop locks before evaluating _Qxx method since it may trigger GPEs. */
EcUnlock(sc);
/* Ignore the value for "no outstanding event". (13.3.5) */
@@ -734,7 +760,7 @@
goto re_enable;
/* Evaluate _Qxx to respond to the controller. */
- sprintf(qxx, "_Q%02x", Data);
+ snprintf(qxx, sizeof(qxx), "_Q%02x", Data);
AcpiUtStrupr(qxx);
Status = AcpiEvaluateObject(sc->ec_handle, qxx, NULL, NULL);
if (ACPI_FAILURE(Status) && Status != AE_NOT_FOUND) {
@@ -745,7 +771,7 @@
re_enable:
/* Re-enable the GPE event so we'll get future requests. */
- Status = AcpiEnableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_NOT_ISR);
+ Status = AcpiEnableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_ISR);
if (ACPI_FAILURE(Status))
printf("EcGpeQueryHandler: AcpiEnableEvent failed\n");
}
@@ -760,27 +786,61 @@
{
struct acpi_ec_softc *sc = Context;
ACPI_STATUS Status;
+ EC_STATUS EcStatus;
KASSERT(Context != NULL, ("EcGpeHandler called with NULL"));
/*
* Disable further GPEs while we handle this one. Since we are directly
* called by ACPI-CA and it may have unknown locks held, we specify the
- * ACPI_ISR flag to keep it from acquiring any more mutexes (which could
- * potentially sleep.)
+ * ACPI_ISR flag to keep it from acquiring any more mutexes (although
+ * sleeping would be ok since we're in an ithread.)
*/
AcpiDisableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_ISR);
- /* Schedule the GPE query handler. */
- Status = AcpiOsQueueForExecution(OSD_PRIORITY_GPE, EcGpeQueryHandler,
- Context);
+ /* For interrupt (GPE) handler, don't acquire serialization lock. */
+ Status = EcLock(sc, FALSE);
if (ACPI_FAILURE(Status)) {
- printf("Queuing GPE query handler failed.\n");
- Status = AcpiEnableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_ISR);
- if (ACPI_FAILURE(Status))
- printf("EcGpeHandler: AcpiEnableEvent failed\n");
+ ACPI_VPRINT(sc->ec_dev, acpi_device_get_parent_softc(sc->ec_dev),
+ "GpeQuery lock error: %s\n", AcpiFormatException(Status));
+ return (-1);
+ }
+
+ /*
+ * If burst was active, but the status bit was cleared, the EC had to
+ * exit burst mode for some reason. Record this for later.
+ */
+ EcStatus = EC_GET_CSR(sc);
+ if (sc->ec_burstactive && (EcStatus & EC_FLAG_BURST_MODE) == 0) {
+ CTR0(KTR_ACPI, "ec burst disabled in query handler");
+ sc->ec_burstactive = FALSE;
+ }
+
+ /*
+ * If the EC_SCI bit of the status register is not set, then pass
+ * it along to any potential waiters as it may be an IBE/OBF event.
+ * If it is set, queue a query handler.
+ */
+ if ((EcStatus & EC_EVENT_SCI) == 0) {
+ CTR1(KTR_ACPI, "ec event was IBE/OBF, status %#x", EcStatus);
+ sc->ec_csrvalue = EcStatus;
+ wakeup(&sc->ec_csrvalue);
+ } else if (!sc->ec_sci_pend) {
+ /* SCI bit set and no pending query handler, so schedule one. */
+ CTR0(KTR_ACPI, "ec queueing gpe handler");
+ Status = AcpiOsQueueForExecution(OSD_PRIORITY_GPE, EcGpeQueryHandler,
+ Context);
+ if (ACPI_SUCCESS(Status)) {
+ sc->ec_sci_pend = TRUE;
+ } else {
+ printf("Queuing GPE query handler failed.\n");
+ Status = AcpiEnableGpe(sc->ec_gpehandle, sc->ec_gpebit, ACPI_ISR);
+ if (ACPI_FAILURE(Status))
+ printf("EcGpeHandler: AcpiEnableEvent failed\n");
+ }
}
+ EcUnlock(sc);
return (0);
}
@@ -824,7 +884,8 @@
EcAddr = Address;
Status = AE_ERROR;
- Status = EcLock(sc);
+ /* Grab serialization lock to hold across command sequence. */
+ Status = EcLock(sc, TRUE);
if (ACPI_FAILURE(Status))
return_ACPI_STATUS (Status);
@@ -859,87 +920,103 @@
{
EC_STATUS EcStatus;
ACPI_STATUS Status;
- int count, i, period, retval, slp_ival;
+ int count, i, retval, slp_ival;
ACPI_SERIAL_ASSERT(ec);
Status = AE_NO_HARDWARE_RESPONSE;
+ EcStatus = 0;
- /*
- * Wait for 1 us before checking the CSR. Testing shows about
- * 50% of requests complete in 1 us and 90% of them complete
- * in 5 us or less.
- */
- AcpiOsStall(1);
-
/*
- * Poll the EC status register for up to 1 ms in chunks of 10 us
- * to detect completion of the last command.
+ * Poll for up to ec_poll_time microseconds since many ECs complete
+ * the command quickly, especially if in burst mode.
*/
- for (i = 0; i < 1000 / EC_POLL_DELAY; i++) {
+#if 0 /* Enable this as a possible workaround if EC times out. */
+ AcpiOsStall(EC_POLL_DELAY);
+#endif
+ count = ec_poll_time / EC_POLL_DELAY;
+ if (count <= 0)
+ count = 1;
+ for (i = 0; i < count; i++) {
EcStatus = EC_GET_CSR(sc);
+ if (sc->ec_burstactive && (EcStatus & EC_FLAG_BURST_MODE) == 0) {
+ CTR0(KTR_ACPI, "ec burst disabled in waitevent (poll)");
+ sc->ec_burstactive = FALSE;
+ }
if (EVENT_READY(Event, EcStatus)) {
+ CTR1(KTR_ACPI, "ec poll wait ready, status %#x", EcStatus);
Status = AE_OK;
break;
}
AcpiOsStall(EC_POLL_DELAY);
}
- period = i * EC_POLL_DELAY;
/*
* If we still don't have a response and we're up and running, wait up
- * to ec_poll_timeout ms for completion, sleeping for chunks of 10 ms.
+ * to ec_timeout ms for completion, sleeping for chunks of 1 ms or the
+ * smallest resolution hz supports.
*/
slp_ival = 0;
if (Status != AE_OK) {
retval = ENXIO;
- count = ec_poll_timeout / 10;
- if (count == 0)
- count = 1;
- slp_ival = hz / 100;
- if (slp_ival == 0)
- slp_ival = 1;
+ if (!cold) {
+ slp_ival = hz / 1000;
+ if (slp_ival != 0) {
+ count = ec_timeout / slp_ival;
+ } else {
+ /* hz has less than 1000 Hz resolution so scale timeout. */
+ slp_ival = 1;
+ count = ec_timeout / (1000 / hz);
+ }
+ } else
+ count = ec_timeout;
for (i = 0; i < count; i++) {
if (retval != 0)
EcStatus = EC_GET_CSR(sc);
else
EcStatus = sc->ec_csrvalue;
+ if (sc->ec_burstactive && (EcStatus & EC_FLAG_BURST_MODE) == 0) {
+ CTR0(KTR_ACPI, "ec burst disabled in waitevent (slp)");
+ sc->ec_burstactive = FALSE;
+ }
if (EVENT_READY(Event, EcStatus)) {
+ CTR1(KTR_ACPI, "ec sleep wait ready, status %#x", EcStatus);
Status = AE_OK;
break;
}
- if (!cold)
- retval = tsleep(&sc->ec_csrvalue, PZERO, "ecpoll", slp_ival);
- else
- AcpiOsStall(10000);
+ if (!cold) {
+ retval = msleep(&sc->ec_csrvalue, &sc->ec_mtx, PZERO, "ecpoll",
+ slp_ival);
+ } else
+ AcpiOsStall(1000);
}
}
- /* Calculate new delay and log it. */
- if (slp_ival > 0)
- period += i * 10000;
- CTR2(KTR_ACPI, "ec got event %#x after %d us", EcStatus, period);
-
return (Status);
}
static ACPI_STATUS
EcCommand(struct acpi_ec_softc *sc, EC_COMMAND cmd)
{
- ACPI_STATUS Status;
- EC_EVENT Event;
+ ACPI_STATUS status;
+ EC_EVENT event;
+ EC_STATUS ec_status;
ACPI_SERIAL_ASSERT(ec);
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list