svn commit: r209891 - in projects/ppc64: gnu/usr.bin/cc/cc_tools
lib/bind lib/libc/sys share/mk sys/amd64/amd64
sys/amd64/include sys/arm/conf sys/conf sys/dev/ata
sys/dev/ata/chipsets sys/dev/bwn ...
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Sat Jul 10 22:29:07 UTC 2010
Author: nwhitehorn
Date: Sat Jul 10 22:29:05 2010
New Revision: 209891
URL: http://svn.freebsd.org/changeset/base/209891
Log:
IFC @ 209890
The first transport is away! Import from HEAD after merging most of the
powerpc64 userland.
Modified:
projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile
projects/ppc64/lib/bind/config.mk
projects/ppc64/lib/libc/sys/ptrace.2
projects/ppc64/sys/amd64/amd64/pmap.c
projects/ppc64/sys/amd64/include/pmap.h
projects/ppc64/sys/conf/kmod.mk
projects/ppc64/sys/dev/ata/ata-all.c
projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c
projects/ppc64/sys/dev/ata/chipsets/ata-amd.c
projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c
projects/ppc64/sys/dev/ata/chipsets/ata-intel.c
projects/ppc64/sys/dev/ata/chipsets/ata-ite.c
projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c
projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c
projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c
projects/ppc64/sys/dev/ata/chipsets/ata-promise.c
projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c
projects/ppc64/sys/dev/ata/chipsets/ata-sis.c
projects/ppc64/sys/dev/ata/chipsets/ata-via.c
projects/ppc64/sys/dev/bwn/if_bwn.c
projects/ppc64/sys/dev/e1000/if_igb.c
projects/ppc64/sys/dev/sk/if_sk.c
projects/ppc64/sys/dev/twa/tw_cl.h
projects/ppc64/sys/dev/twa/tw_cl_share.h
projects/ppc64/sys/i386/i386/pmap.c
projects/ppc64/sys/i386/include/pmap.h
projects/ppc64/sys/kern/vfs_bio.c
projects/ppc64/sys/vm/vm_page.c
projects/ppc64/sys/vm/vm_page.h
projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c
Directory Properties:
projects/ppc64/ (props changed)
projects/ppc64/cddl/contrib/opensolaris/ (props changed)
projects/ppc64/contrib/ee/ (props changed)
projects/ppc64/contrib/expat/ (props changed)
projects/ppc64/contrib/file/ (props changed)
projects/ppc64/contrib/gdb/ (props changed)
projects/ppc64/contrib/gnu-sort/ (props changed)
projects/ppc64/contrib/groff/ (props changed)
projects/ppc64/contrib/less/ (props changed)
projects/ppc64/contrib/libpcap/ (props changed)
projects/ppc64/contrib/ncurses/ (props changed)
projects/ppc64/contrib/one-true-awk/ (props changed)
projects/ppc64/contrib/openbsm/ (props changed)
projects/ppc64/contrib/openpam/ (props changed)
projects/ppc64/contrib/pf/ (props changed)
projects/ppc64/contrib/tcpdump/ (props changed)
projects/ppc64/contrib/tcsh/ (props changed)
projects/ppc64/contrib/tzcode/stdtime/ (props changed)
projects/ppc64/contrib/tzcode/zic/ (props changed)
projects/ppc64/contrib/tzdata/ (props changed)
projects/ppc64/contrib/wpa/ (props changed)
projects/ppc64/lib/libutil/ (props changed)
projects/ppc64/lib/libz/ (props changed)
projects/ppc64/sbin/ (props changed)
projects/ppc64/sbin/ipfw/ (props changed)
projects/ppc64/share/mk/bsd.arch.inc.mk (props changed)
projects/ppc64/sys/ (props changed)
projects/ppc64/sys/amd64/include/xen/ (props changed)
projects/ppc64/sys/arm/conf/SHEEVAPLUG (props changed)
projects/ppc64/sys/cddl/contrib/opensolaris/ (props changed)
projects/ppc64/sys/contrib/dev/acpica/ (props changed)
projects/ppc64/sys/contrib/x86emu/ (props changed)
projects/ppc64/sys/dev/xen/xenpci/ (props changed)
projects/ppc64/usr.bin/csup/ (props changed)
projects/ppc64/usr.bin/procstat/ (props changed)
Modified: projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile Sat Jul 10 22:29:05 2010 (r209891)
@@ -307,7 +307,7 @@ GENSRCS+= gcov-iov.h
# Multilib config file
multilib.h:
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
+.if ${TARGET_ARCH} == "powerpc64"
echo 'static const char *const multilib_raw[] = { \
". !m64 !m32;", \
"64:../lib m64 !m32;", \
Modified: projects/ppc64/lib/bind/config.mk
==============================================================================
--- projects/ppc64/lib/bind/config.mk Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/lib/bind/config.mk Sat Jul 10 22:29:05 2010 (r209891)
@@ -45,7 +45,7 @@ CFLAGS+= -DOPENSSL
CFLAGS+= -DUSE_MD5
# Endianness
-.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" || ${MACHINE_ARCH} == "sparc64"
+.if ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_CPUARCH} == "sparc64"
CFLAGS+= -DWORDS_BIGENDIAN
.endif
@@ -66,10 +66,8 @@ CFLAGS+= -I${LIB_BIND_DIR}
# Use the right version of the atomic.h file from lib/isc
.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
ISC_ATOMIC_ARCH= x86_32
-.elif ${MACHINE_ARCH} == "powerpc64"
-ISC_ATOMIC_ARCH= powerpc
.else
-ISC_ATOMIC_ARCH= ${MACHINE_ARCH}
+ISC_ATOMIC_ARCH= ${MACHINE_CPUARCH}
.endif
# Optional features
Modified: projects/ppc64/lib/libc/sys/ptrace.2
==============================================================================
--- projects/ppc64/lib/libc/sys/ptrace.2 Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/lib/libc/sys/ptrace.2 Sat Jul 10 22:29:05 2010 (r209891)
@@ -2,7 +2,7 @@
.\" $NetBSD: ptrace.2,v 1.2 1995/02/27 12:35:37 cgd Exp $
.\"
.\" This file is in the public domain.
-.Dd May 24, 2010
+.Dd July 10, 2010
.Dt PTRACE 2
.Os
.Sh NAME
@@ -294,6 +294,7 @@ struct ptrace_lwpinfo {
int pl_flags;
sigset_t pl_sigmask;
sigset_t pl_siglist;
+ siginfo_t pl_siginfo;
};
.Ed
.Pp
@@ -338,13 +339,28 @@ program being executed by debuggee proce
execution of a system call from the
.Fn execve 2
family.
+.It PL_FLAG_SI
+Indicates that
+.Va pl_siginfo
+member of
+.Vt "struct ptrace_lwpinfo"
+contains valid information.
.El
.It pl_sigmask
The current signal mask of the LWP
.It pl_siglist
-The current pending set of signals for the LWP. Note that signals that
-are delivered to the process would not appear on an LWP siglist until
-the thread is selected for delivery.
+The current pending set of signals for the LWP.
+Note that signals that are delivered to the process would not appear
+on an LWP siglist until the thread is selected for delivery.
+.It pl_siginfo
+The siginfo that accompanies the signal pending.
+Only valid for
+.Dv PL_EVENT_SIGNAL
+kind of stop, when
+.Va pl_flags
+has
+.Dv PL_FLAG_SI
+set.
.El
.It PT_GETNUMLWPS
This request returns the number of kernel threads associated with the
Modified: projects/ppc64/sys/amd64/amd64/pmap.c
==============================================================================
--- projects/ppc64/sys/amd64/amd64/pmap.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/amd64/amd64/pmap.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -1331,19 +1331,22 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s
void
pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
{
- pt_entry_t *endpte, oldpte, *pte;
+ pt_entry_t *endpte, oldpte, pa, *pte;
+ vm_page_t m;
oldpte = 0;
pte = vtopte(sva);
endpte = pte + count;
while (pte < endpte) {
- oldpte |= *pte;
- pte_store(pte, VM_PAGE_TO_PHYS(*ma) | PG_G |
- pmap_cache_bits((*ma)->md.pat_mode, 0) | PG_RW | PG_V);
+ m = *ma++;
+ pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(m->md.pat_mode, 0);
+ if ((*pte & (PG_FRAME | PG_PTE_CACHE)) != pa) {
+ oldpte |= *pte;
+ pte_store(pte, pa | PG_G | PG_RW | PG_V);
+ }
pte++;
- ma++;
}
- if ((oldpte & PG_V) != 0)
+ if (__predict_false((oldpte & PG_V) != 0))
pmap_invalidate_range(kernel_pmap, sva, sva + count *
PAGE_SIZE);
}
@@ -4018,7 +4021,7 @@ pmap_remove_pages(pmap_t pmap)
uint64_t inuse, bitmask;
int allfree;
- if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) {
+ if (pmap != PCPU_GET(curpmap)) {
printf("warning: pmap_remove_pages called with non-current pmap\n");
return;
}
@@ -4998,11 +5001,9 @@ pmap_activate(struct thread *td)
pmap = vmspace_pmap(td->td_proc->p_vmspace);
oldpmap = PCPU_GET(curpmap);
#ifdef SMP
-if (oldpmap) /* XXX FIXME */
atomic_clear_int(&oldpmap->pm_active, PCPU_GET(cpumask));
atomic_set_int(&pmap->pm_active, PCPU_GET(cpumask));
#else
-if (oldpmap) /* XXX FIXME */
oldpmap->pm_active &= ~PCPU_GET(cpumask);
pmap->pm_active |= PCPU_GET(cpumask);
#endif
Modified: projects/ppc64/sys/amd64/include/pmap.h
==============================================================================
--- projects/ppc64/sys/amd64/include/pmap.h Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/amd64/include/pmap.h Sat Jul 10 22:29:05 2010 (r209891)
@@ -244,7 +244,7 @@ struct pmap {
struct mtx pm_mtx;
pml4_entry_t *pm_pml4; /* KVA of level 4 page table */
TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */
- u_int pm_active; /* active on cpus */
+ cpumask_t pm_active; /* active on cpus */
uint32_t pm_gen_count; /* generation count (pmap lock dropped) */
u_int pm_retries;
/* spare u_int here due to padding */
Modified: projects/ppc64/sys/conf/kmod.mk
==============================================================================
--- projects/ppc64/sys/conf/kmod.mk Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/conf/kmod.mk Sat Jul 10 22:29:05 2010 (r209891)
@@ -129,7 +129,7 @@ CFLAGS+= ${DEBUG_FLAGS}
CFLAGS+= -fno-omit-frame-pointer
.endif
-.if ${MACHINE_CPUARCH} == "powerpc"
+.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64"
CFLAGS+= -mlongcall -fno-omit-frame-pointer
.endif
Modified: projects/ppc64/sys/dev/ata/ata-all.c
==============================================================================
--- projects/ppc64/sys/dev/ata/ata-all.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/ata-all.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -105,7 +105,7 @@ SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma, C
"ATA disk DMA mode control");
TUNABLE_INT("hw.ata.ata_dma_check_80pin", &ata_dma_check_80pin);
SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma_check_80pin,
- CTLFLAG_RDTUN, &ata_dma_check_80pin, 1,
+ CTLFLAG_RW, &ata_dma_check_80pin, 1,
"Check for 80pin cable before setting ATA DMA mode");
TUNABLE_INT("hw.ata.atapi_dma", &atapi_dma);
SYSCTL_INT(_hw_ata, OID_AUTO, atapi_dma, CTLFLAG_RDTUN, &atapi_dma, 0,
@@ -185,27 +185,29 @@ ata_attach(device_t dev)
if (ch->dma.alloc)
ch->dma.alloc(dev);
+ mtx_lock(&ch->state_mtx);
/* setup interrupt delivery */
rid = ATA_IRQ_RID;
ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
RF_SHAREABLE | RF_ACTIVE);
if (!ch->r_irq) {
device_printf(dev, "unable to allocate interrupt\n");
+ mtx_unlock(&ch->state_mtx);
return ENXIO;
}
if ((error = bus_setup_intr(dev, ch->r_irq, ATA_INTR_FLAGS, NULL,
ata_interrupt, ch, &ch->ih))) {
device_printf(dev, "unable to setup interrupt\n");
- return error;
+ goto err1;
}
#ifndef ATA_CAM
+ mtx_unlock(&ch->state_mtx);
/* probe and attach devices on this channel unless we are in early boot */
if (!ata_delayed_attach)
ata_identify(dev);
return (0);
#else
- mtx_lock(&ch->state_mtx);
/* Create the device queue for our SIM. */
devq = cam_simq_alloc(1);
if (devq == NULL) {
@@ -239,11 +241,11 @@ err3:
xpt_bus_deregister(cam_sim_path(ch->sim));
err2:
cam_sim_free(ch->sim, /*free_devq*/TRUE);
+#endif
err1:
bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq);
mtx_unlock(&ch->state_mtx);
return (error);
-#endif
}
int
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -286,7 +286,7 @@ ata_ali_setmode(device_t dev, int target
mode = min(mode, ctlr->chip->max_dma);
if (ctlr->chip->cfg2 & ALI_NEW && ctlr->chip->chiprev < 0xc7) {
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
pci_read_config(parent, 0x4a, 1) & (1 << ch->unit)) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-amd.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-amd.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-amd.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -119,7 +119,7 @@ ata_amd_setmode(device_t dev, int target
mode = min(mode, ctlr->chip->max_dma);
if (ctlr->chip->cfg1 & AMD_CABLE) {
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
!(pci_read_config(parent, 0x42, 1) & (1 << devno))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -216,7 +216,7 @@ ata_highpoint_check_80pin(device_t dev,
res = pci_read_config(parent, 0x5a, 1) & (ch->unit ? 0x1:0x2);
pci_write_config(parent, reg, val, 1);
- if (mode > ATA_UDMA2 && res) {
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 && res) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-intel.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-intel.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-intel.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -336,7 +336,8 @@ ata_intel_new_setmode(device_t dev, int
u_int8_t utimings[] = { 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 };
mode = min(mode, ctlr->chip->max_dma);
- if (mode > ATA_UDMA2 && !(reg54 & (0x10 << devno))) {
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ !(reg54 & (0x10 << devno))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
@@ -553,8 +554,12 @@ ata_intel_31244_tf_write(struct ata_requ
static void
ata_intel_31244_reset(device_t dev)
{
+ struct ata_channel *ch = device_get_softc(dev);
+
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
}
ATA_DECLARE_DRIVER(ata_intel);
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-ite.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-ite.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-ite.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -139,7 +139,8 @@ ata_ite_821x_setmode(device_t dev, int t
mode = min(mode, ctlr->chip->max_dma);
/* check the CBLID bits for 80 conductor cable detection */
- if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x40, 2) &
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ (pci_read_config(parent, 0x40, 2) &
(ch->unit ? (1<<3) : (1<<2)))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
@@ -186,7 +187,8 @@ ata_ite_8213_setmode(device_t dev, int t
mode = min(mode, ctlr->chip->max_dma);
- if (mode > ATA_UDMA2 && !(reg54 & (0x10 << target))) {
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ !(reg54 & (0x10 << target))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -149,7 +149,8 @@ ata_jmicron_setmode(device_t dev, int ta
mode = min(mode, ctlr->chip->max_dma);
/* check for 80pin cable present */
- if (mode > ATA_UDMA2 && pci_read_config(dev, 0x40, 1) & 0x08) {
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ pci_read_config(dev, 0x40, 1) & 0x08) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -188,7 +188,8 @@ ata_marvell_setmode(device_t dev, int ta
mode = min(mode, ctlr->chip->max_dma);
/* Check for 80pin cable present. */
- if (mode > ATA_UDMA2 && ATA_IDX_INB(ch, ATA_BMDEVSPEC_0) & 0x01) {
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ ATA_IDX_INB(ch, ATA_BMDEVSPEC_0) & 0x01) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
@@ -578,6 +579,8 @@ ata_marvell_edma_reset(device_t dev)
/* enable channel and test for devices */
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
/* enable EDMA machinery */
ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001);
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -296,8 +296,12 @@ ata_nvidia_status(device_t dev)
static void
ata_nvidia_reset(device_t dev)
{
+ struct ata_channel *ch = device_get_softc(dev);
+
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
}
static int
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-promise.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-promise.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-promise.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -470,7 +470,8 @@ ata_promise_setmode(device_t dev, int ta
switch (ctlr->chip->cfg1) {
case PR_OLD:
case PR_NEW:
- if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x50, 2) &
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ (pci_read_config(parent, 0x50, 2) &
(ch->unit ? 1 << 11 : 1 << 10))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
@@ -479,7 +480,7 @@ ata_promise_setmode(device_t dev, int ta
case PR_TX:
ATA_IDX_OUTB(ch, ATA_BMDEVSPEC_0, 0x0b);
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
ATA_IDX_INB(ch, ATA_BMDEVSPEC_1) & 0x04) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
@@ -487,7 +488,7 @@ ata_promise_setmode(device_t dev, int ta
break;
case PR_MIO:
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
(ATA_INL(ctlr->r_res2,
(ctlr->chip->cfg2 & PR_SX4X ? 0x000c0260 : 0x0260) +
(ch->unit << 7)) & 0x01000000)) {
@@ -743,6 +744,8 @@ ata_promise_mio_reset(device_t dev)
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
/* reset and enable plug/unplug intr */
ATA_OUTL(ctlr->r_res2, 0x06c, (0x00000011 << ch->unit));
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -364,8 +364,12 @@ ata_sii_status(device_t dev)
static void
ata_sii_reset(device_t dev)
{
+ struct ata_channel *ch = device_get_softc(dev);
+
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
}
static int
@@ -389,7 +393,8 @@ ata_sii_setmode(device_t dev, int target
mode = min(mode, ctlr->chip->max_dma);
if (ctlr->chip->cfg2 & SII_SETCLK) {
- if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x79, 1) &
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
+ (pci_read_config(parent, 0x79, 1) &
(ch->unit ? 0x02 : 0x01))) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-sis.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-sis.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-sis.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -228,8 +228,12 @@ ata_sis_ch_attach(device_t dev)
static void
ata_sis_reset(device_t dev)
{
+ struct ata_channel *ch = device_get_softc(dev);
+
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
}
static int
@@ -243,13 +247,13 @@ ata_sis_setmode(device_t dev, int target
mode = min(mode, ctlr->chip->max_dma);
if (ctlr->chip->cfg1 == SIS_133NEW) {
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
pci_read_config(parent, ch->unit ? 0x52 : 0x50,2) & 0x8000) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
}
} else {
- if (mode > ATA_UDMA2 &&
+ if (ata_dma_check_80pin && mode > ATA_UDMA2 &&
pci_read_config(parent, 0x48, 1)&(ch->unit ? 0x20 : 0x10)) {
ata_print_cable(dev, "controller");
mode = ATA_UDMA2;
Modified: projects/ppc64/sys/dev/ata/chipsets/ata-via.c
==============================================================================
--- projects/ppc64/sys/dev/ata/chipsets/ata-via.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/ata/chipsets/ata-via.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -290,9 +290,12 @@ ata_via_reset(device_t dev)
if ((ctlr->chip->cfg2 & VIABAR) && (ch->unit > 1))
ata_generic_reset(dev);
- else
+ else {
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
+ }
}
static int
Modified: projects/ppc64/sys/dev/bwn/if_bwn.c
==============================================================================
--- projects/ppc64/sys/dev/bwn/if_bwn.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/bwn/if_bwn.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -9072,7 +9072,7 @@ bwn_pio_rxeof(struct bwn_pio_rxqueue *pr
struct mbuf *m;
uint32_t ctl32, macstat, v32;
unsigned int i, padding;
- uint16_t ctl16, len, v16;
+ uint16_t ctl16, len, totlen, v16;
unsigned char *mp;
char *data;
@@ -9131,7 +9131,8 @@ ready:
}
padding = (macstat & BWN_RX_MAC_PADDING) ? 2 : 0;
- KASSERT(len + padding <= MCLBYTES, ("too big..\n"));
+ totlen = len + padding;
+ KASSERT(totlen <= MCLBYTES, ("too big..\n"));
m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
if (m == NULL) {
device_printf(sc->sc_dev, "%s: out of memory", __func__);
@@ -9139,12 +9140,12 @@ ready:
}
mp = mtod(m, unsigned char *);
if (prq->prq_rev >= 8) {
- siba_read_multi_4(sc->sc_dev, mp + padding, (len & ~3),
+ siba_read_multi_4(sc->sc_dev, mp, (totlen & ~3),
prq->prq_base + BWN_PIO8_RXDATA);
- if (len & 3) {
+ if (totlen & 3) {
v32 = bwn_pio_rx_read_4(prq, BWN_PIO8_RXDATA);
- data = &(mp[len + padding - 1]);
- switch (len & 3) {
+ data = &(mp[totlen - 1]);
+ switch (totlen & 3) {
case 3:
*data = (v32 >> 16);
data--;
@@ -9156,16 +9157,16 @@ ready:
}
}
} else {
- siba_read_multi_2(sc->sc_dev, mp + padding, (len & ~1),
+ siba_read_multi_2(sc->sc_dev, mp, (totlen & ~1),
prq->prq_base + BWN_PIO_RXDATA);
- if (len & 1) {
+ if (totlen & 1) {
v16 = bwn_pio_rx_read_2(prq, BWN_PIO_RXDATA);
- mp[len + padding - 1] = v16;
+ mp[totlen - 1] = v16;
}
}
m->m_pkthdr.rcvif = ifp;
- m->m_len = m->m_pkthdr.len = len + padding;
+ m->m_len = m->m_pkthdr.len = totlen;
bwn_rxeof(prq->prq_mac, m, &rxhdr);
Modified: projects/ppc64/sys/dev/e1000/if_igb.c
==============================================================================
--- projects/ppc64/sys/dev/e1000/if_igb.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/e1000/if_igb.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -2679,7 +2679,7 @@ igb_setup_interface(device_t dev, struct
ifp->if_capabilities = ifp->if_capenable = 0;
- ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_MTU;
+ ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM;
ifp->if_capabilities |= IFCAP_TSO4;
ifp->if_capabilities |= IFCAP_JUMBO_MTU;
if (igb_header_split)
Modified: projects/ppc64/sys/dev/sk/if_sk.c
==============================================================================
--- projects/ppc64/sys/dev/sk/if_sk.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/sk/if_sk.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -1169,14 +1169,17 @@ sk_ioctl(ifp, command, data)
break;
}
mask = ifr->ifr_reqcap ^ ifp->if_capenable;
- if (mask & IFCAP_HWCSUM) {
- ifp->if_capenable ^= IFCAP_HWCSUM;
- if (IFCAP_HWCSUM & ifp->if_capenable &&
- IFCAP_HWCSUM & ifp->if_capabilities)
- ifp->if_hwassist = SK_CSUM_FEATURES;
+ if ((mask & IFCAP_TXCSUM) != 0 &&
+ (IFCAP_TXCSUM & ifp->if_capabilities) != 0) {
+ ifp->if_capenable ^= IFCAP_TXCSUM;
+ if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
+ ifp->if_hwassist |= SK_CSUM_FEATURES;
else
- ifp->if_hwassist = 0;
+ ifp->if_hwassist &= ~SK_CSUM_FEATURES;
}
+ if ((mask & IFCAP_RXCSUM) != 0 &&
+ (IFCAP_RXCSUM & ifp->if_capabilities) != 0)
+ ifp->if_capenable ^= IFCAP_RXCSUM;
SK_IF_UNLOCK(sc_if);
break;
default:
@@ -1363,13 +1366,23 @@ sk_attach(dev)
* SK_GENESIS has a bug in checksum offload - From linux.
*/
if (sc_if->sk_softc->sk_type != SK_GENESIS) {
- ifp->if_capabilities = IFCAP_HWCSUM;
- ifp->if_hwassist = SK_CSUM_FEATURES;
+ ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_RXCSUM;
+ ifp->if_hwassist = 0;
} else {
ifp->if_capabilities = 0;
ifp->if_hwassist = 0;
}
ifp->if_capenable = ifp->if_capabilities;
+ /*
+ * Some revision of Yukon controller generates corrupted
+ * frame when TX checksum offloading is enabled. The
+ * frame has a valid checksum value so payload might be
+ * modified during TX checksum calculation. Disable TX
+ * checksum offloading but give users chance to enable it
+ * when they know their controller works without problems
+ * with TX checksum offloading.
+ */
+ ifp->if_capenable &= ~IFCAP_TXCSUM;
ifp->if_ioctl = sk_ioctl;
ifp->if_start = sk_start;
ifp->if_init = sk_init;
Modified: projects/ppc64/sys/dev/twa/tw_cl.h
==============================================================================
--- projects/ppc64/sys/dev/twa/tw_cl.h Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/twa/tw_cl.h Sat Jul 10 22:29:05 2010 (r209891)
@@ -74,7 +74,6 @@
#define TW_CLI_PCI_CONFIG_STATUS_OFFSET 0x6 /* status register offset */
#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */
-#pragma pack(1)
#ifdef TW_OSL_DEBUG
struct tw_cli_q_stats {
@@ -206,7 +205,6 @@ struct tw_cli_ctlr_context {
#endif /* TW_OSL_DEBUG */
};
-#pragma pack()
/*
Modified: projects/ppc64/sys/dev/twa/tw_cl_share.h
==============================================================================
--- projects/ppc64/sys/dev/twa/tw_cl_share.h Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/dev/twa/tw_cl_share.h Sat Jul 10 22:29:05 2010 (r209891)
@@ -125,7 +125,6 @@
#define TW_CL_SEVERITY_DEBUG_STRING "DEBUG"
-#pragma pack(1)
/*
* Structure, a pointer to which is used as the controller handle in
@@ -190,6 +189,7 @@ struct tw_cl_req_packet {
};
+#pragma pack(1)
/*
* Packet that describes an AEN/error generated by the controller,
* Common Layer, or even the OS Layer.
@@ -206,6 +206,7 @@ struct tw_cl_event_packet {
TW_UINT32 event_src;
TW_UINT8 severity_str[20];
};
+#pragma pack()
/* Structure to link 2 adjacent elements in a list. */
@@ -215,6 +216,7 @@ struct tw_cl_link {
};
+#pragma pack(1)
/* Scatter/Gather list entry with 32 bit addresses. */
struct tw_cl_sg_desc32 {
TW_UINT32 address;
Modified: projects/ppc64/sys/i386/i386/pmap.c
==============================================================================
--- projects/ppc64/sys/i386/i386/pmap.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/i386/i386/pmap.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -1461,19 +1461,22 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s
void
pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
{
- pt_entry_t *endpte, oldpte, *pte;
+ pt_entry_t *endpte, oldpte, pa, *pte;
+ vm_page_t m;
oldpte = 0;
pte = vtopte(sva);
endpte = pte + count;
while (pte < endpte) {
- oldpte |= *pte;
- pte_store(pte, VM_PAGE_TO_PHYS(*ma) | pgeflag |
- pmap_cache_bits((*ma)->md.pat_mode, 0) | PG_RW | PG_V);
+ m = *ma++;
+ pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(m->md.pat_mode, 0);
+ if ((*pte & (PG_FRAME | PG_PTE_CACHE)) != pa) {
+ oldpte |= *pte;
+ pte_store(pte, pa | pgeflag | PG_RW | PG_V);
+ }
pte++;
- ma++;
}
- if ((oldpte & PG_V) != 0)
+ if (__predict_false((oldpte & PG_V) != 0))
pmap_invalidate_range(kernel_pmap, sva, sva + count *
PAGE_SIZE);
}
@@ -4180,7 +4183,7 @@ pmap_remove_pages(pmap_t pmap)
uint32_t inuse, bitmask;
int allfree;
- if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) {
+ if (pmap != PCPU_GET(curpmap)) {
printf("warning: pmap_remove_pages called with non-current pmap\n");
return;
}
Modified: projects/ppc64/sys/i386/include/pmap.h
==============================================================================
--- projects/ppc64/sys/i386/include/pmap.h Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/i386/include/pmap.h Sat Jul 10 22:29:05 2010 (r209891)
@@ -417,7 +417,7 @@ struct pmap {
struct mtx pm_mtx;
pd_entry_t *pm_pdir; /* KVA of page directory */
TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */
- u_int pm_active; /* active on cpus */
+ cpumask_t pm_active; /* active on cpus */
struct pmap_statistics pm_stats; /* pmap statistics */
LIST_ENTRY(pmap) pm_list; /* List of all pmaps */
uint32_t pm_gen_count; /* generation count (pmap lock dropped) */
Modified: projects/ppc64/sys/kern/vfs_bio.c
==============================================================================
--- projects/ppc64/sys/kern/vfs_bio.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/kern/vfs_bio.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -3752,10 +3752,9 @@ tryagain:
* process we are.
*/
p = vm_page_alloc(NULL, pg >> PAGE_SHIFT, VM_ALLOC_NOOBJ |
- VM_ALLOC_SYSTEM | VM_ALLOC_WIRED);
+ VM_ALLOC_SYSTEM | VM_ALLOC_WIRED |
+ VM_ALLOC_COUNT((to - pg) >> PAGE_SHIFT));
if (!p) {
- atomic_add_int(&vm_pageout_deficit,
- (to - pg) >> PAGE_SHIFT);
VM_WAIT;
goto tryagain;
}
Modified: projects/ppc64/sys/vm/vm_page.c
==============================================================================
--- projects/ppc64/sys/vm/vm_page.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/vm/vm_page.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -1264,7 +1264,8 @@ vm_page_alloc(vm_object_t object, vm_pin
* Not allocatable, give up.
*/
mtx_unlock(&vm_page_queue_free_mtx);
- atomic_add_int(&vm_pageout_deficit, 1);
+ atomic_add_int(&vm_pageout_deficit,
+ MAX((u_int)req >> VM_ALLOC_COUNT_SHIFT, 1));
pagedaemon_wakeup();
return (NULL);
}
@@ -2041,7 +2042,6 @@ vm_page_t
vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags)
{
vm_page_t m;
- u_int count;
VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
KASSERT((allocflags & VM_ALLOC_RETRY) != 0,
@@ -2071,12 +2071,9 @@ retrylookup:
}
}
m = vm_page_alloc(object, pindex, allocflags & ~(VM_ALLOC_RETRY |
- VM_ALLOC_IGN_SBUSY | VM_ALLOC_COUNT_MASK));
+ VM_ALLOC_IGN_SBUSY));
if (m == NULL) {
VM_OBJECT_UNLOCK(object);
- count = (u_int)allocflags >> VM_ALLOC_COUNT_SHIFT;
- if (count > 0)
- atomic_add_int(&vm_pageout_deficit, count);
VM_WAIT;
VM_OBJECT_LOCK(object);
goto retrylookup;
Modified: projects/ppc64/sys/vm/vm_page.h
==============================================================================
--- projects/ppc64/sys/vm/vm_page.h Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/sys/vm/vm_page.h Sat Jul 10 22:29:05 2010 (r209891)
@@ -321,7 +321,6 @@ extern struct vpglocks vm_page_queue_loc
#define VM_ALLOC_COUNT_SHIFT 16
#define VM_ALLOC_COUNT(count) ((count) << VM_ALLOC_COUNT_SHIFT)
-#define VM_ALLOC_COUNT_MASK VM_ALLOC_COUNT(0xffff)
void vm_page_flag_set(vm_page_t m, unsigned short bits);
void vm_page_flag_clear(vm_page_t m, unsigned short bits);
Modified: projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c
==============================================================================
--- projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c Sat Jul 10 22:07:48 2010 (r209890)
+++ projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c Sat Jul 10 22:29:05 2010 (r209891)
@@ -304,8 +304,10 @@ fifolog_reader_process(struct fifolog_re
if (i == Z_STREAM_END) {
i = inflateReset(zs);
}
- if (i != Z_OK)
+ if (i != Z_OK) {
fprintf(stderr, "inflate = %d\n", i);
+ exit (250);
+ }
assert(i == Z_OK);
if (zs->avail_out != fr->olen) {
q = fr->obuf + (fr->olen - zs->avail_out);
More information about the svn-src-projects
mailing list