From owner-p4-projects@FreeBSD.ORG Fri Oct 14 14:24:27 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 44649106566C; Fri, 14 Oct 2011 14:24:27 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 06251106564A for ; Fri, 14 Oct 2011 14:24:27 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id E64B88FC0C for ; Fri, 14 Oct 2011 14:24:26 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p9EEOQHB063956 for ; Fri, 14 Oct 2011 14:24:26 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p9EEOQgj063953 for perforce@freebsd.org; Fri, 14 Oct 2011 14:24:26 GMT (envelope-from jhb@freebsd.org) Date: Fri, 14 Oct 2011 14:24:26 GMT Message-Id: <201110141424.p9EEOQgj063953@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 200198 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Oct 2011 14:24:27 -0000 http://p4web.freebsd.org/@@200198?ac=10 Change 200198 by jhb@jhb_jhbbsd on 2011/10/14 14:23:43 IFC @200197 Affected files ... .. //depot/projects/fadvise/sys/arm/xscale/ixp425/cambria_gpio.c#2 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_misc.c#4 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_proto.h#3 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_systrace_args.c#3 integrate .. //depot/projects/fadvise/sys/compat/freebsd32/syscalls.master#4 integrate .. //depot/projects/fadvise/sys/dev/aac/aac_cam.c#2 integrate .. //depot/projects/fadvise/sys/dev/asr/asr.c#2 integrate .. //depot/projects/fadvise/sys/dev/ath/if_ath_pci.c#2 integrate .. //depot/projects/fadvise/sys/dev/hptiop/hptiop.c#2 integrate .. //depot/projects/fadvise/sys/dev/iwn/if_iwn.c#2 integrate .. //depot/projects/fadvise/sys/dev/mfi/mfi_cam.c#2 integrate .. //depot/projects/fadvise/sys/kern/imgact_elf.c#2 integrate .. //depot/projects/fadvise/sys/kern/kern_malloc.c#2 integrate .. //depot/projects/fadvise/sys/netinet/in.c#2 integrate .. //depot/projects/fadvise/sys/netinet/tcp_timer.c#2 integrate .. //depot/projects/fadvise/sys/netinet6/in6.c#2 integrate .. //depot/projects/fadvise/sys/netinet6/nd6_nbr.c#2 integrate .. //depot/projects/fadvise/sys/teken/demo/Makefile#2 integrate .. //depot/projects/fadvise/sys/vm/memguard.c#2 integrate .. //depot/projects/fadvise/sys/vm/memguard.h#2 integrate .. //depot/projects/fadvise/sys/vm/uma.h#2 integrate .. //depot/projects/fadvise/sys/vm/uma_core.c#2 integrate .. //depot/projects/fadvise/sys/vm/vm_unix.c#2 integrate .. //depot/projects/fadvise/sys/vm/vnode_pager.c#3 integrate Differences ... ==== //depot/projects/fadvise/sys/arm/xscale/ixp425/cambria_gpio.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/cambria_gpio.c,v 1.2 2010/11/14 20:41:22 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/cambria_gpio.c,v 1.4 2011/10/12 20:58:54 thompsa Exp $"); #include #include @@ -84,6 +84,7 @@ struct mtx sc_mtx; struct gpio_pin sc_pins[GPIO_PINS]; uint8_t sc_latch; + uint8_t sc_val; }; struct cambria_gpio_pin { @@ -95,11 +96,11 @@ extern struct ixp425_softc *ixp425_softc; static struct cambria_gpio_pin cambria_gpio_pins[GPIO_PINS] = { - { "GPIO0", 0, GPIO_PIN_OUTPUT }, - { "GPIO1", 1, GPIO_PIN_OUTPUT }, - { "GPIO2", 2, GPIO_PIN_OUTPUT }, - { "GPIO3", 3, GPIO_PIN_OUTPUT }, - { "GPIO4", 4, GPIO_PIN_OUTPUT }, + { "PLD0", 0, GPIO_PIN_OUTPUT }, + { "PLD1", 1, GPIO_PIN_OUTPUT }, + { "PLD2", 2, GPIO_PIN_OUTPUT }, + { "PLD3", 3, GPIO_PIN_OUTPUT }, + { "PLD4", 4, GPIO_PIN_OUTPUT }, }; /* @@ -309,6 +310,9 @@ { struct cambria_gpio_softc *sc = device_get_softc(dev); int error; + uint8_t mask; + + mask = 1 << pin; if (pin >= GPIO_PINS) return (EINVAL); @@ -325,7 +329,16 @@ GPIO_LOCK(sc); sc->sc_pins[pin].gp_flags = flags; - sc->sc_latch |= (1 << pin); + /* + * Writing a logical one sets the signal high and writing a logical + * zero sets the signal low. To configure a digital I/O signal as an + * input, a logical one must first be written to the data bit to + * three-state the associated output. + */ + if (flags & GPIO_PIN_INPUT || sc->sc_val & mask) + sc->sc_latch |= mask; /* input or output & high */ + else + sc->sc_latch &= ~mask; error = cambria_gpio_write(sc); GPIO_UNLOCK(sc); @@ -337,15 +350,28 @@ { struct cambria_gpio_softc *sc = device_get_softc(dev); int error; + uint8_t mask; + + mask = 1 << pin; - if (pin >= GPIO_PINS || sc->sc_pins[pin].gp_flags != GPIO_PIN_OUTPUT) + if (pin >= GPIO_PINS) return (EINVAL); + GPIO_LOCK(sc); + if (value) + sc->sc_val |= mask; + else + sc->sc_val &= ~mask; - GPIO_LOCK(sc); + if (sc->sc_pins[pin].gp_flags != GPIO_PIN_OUTPUT) { + /* just save, altering the latch will disable input */ + GPIO_UNLOCK(sc); + return (0); + } + if (value) - sc->sc_latch |= (1 << pin); + sc->sc_latch |= mask; else - sc->sc_latch &= ~(1 << pin); + sc->sc_latch &= ~mask; error = cambria_gpio_write(sc); GPIO_UNLOCK(sc); @@ -375,14 +401,17 @@ cambria_gpio_pin_toggle(device_t dev, uint32_t pin) { struct cambria_gpio_softc *sc = device_get_softc(dev); - int error; + int error = 0; - if (pin >= GPIO_PINS || sc->sc_pins[pin].gp_flags != GPIO_PIN_OUTPUT) + if (pin >= GPIO_PINS) return (EINVAL); GPIO_LOCK(sc); - sc->sc_latch ^= (1 << pin); - error = cambria_gpio_write(sc); + sc->sc_val ^= (1 << pin); + if (sc->sc_pins[pin].gp_flags == GPIO_PIN_OUTPUT) { + sc->sc_latch ^= (1 << pin); + error = cambria_gpio_write(sc); + } GPIO_UNLOCK(sc); return (error); ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_misc.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.122 2011/09/16 13:58:51 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.126 2011/10/14 11:46:46 jhb Exp $"); #include "opt_compat.h" #include "opt_inet.h" @@ -437,6 +437,21 @@ #endif int +freebsd32_mprotect(struct thread *td, struct freebsd32_mprotect_args *uap) +{ + struct mprotect_args ap; + + ap.addr = PTRIN(uap->addr); + ap.len = uap->len; + ap.prot = uap->prot; +#if defined(__amd64__) || defined(__ia64__) + if (ap.prot & PROT_READ) + ap.prot |= PROT_EXEC; +#endif + return (sys_mprotect(td, &ap)); +} + +int freebsd32_mmap(struct thread *td, struct freebsd32_mmap_args *uap) { struct mmap_args ap; @@ -520,6 +535,11 @@ } #endif +#if defined(__amd64__) || defined(__ia64__) + if (prot & PROT_READ) + prot |= PROT_EXEC; +#endif + ap.addr = (void *) addr; ap.len = len; ap.prot = prot; ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.125 2011/09/16 14:04:14 kmacy Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 224066 2011-07-15 18:26:19Z jonathan + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.127 2011/10/14 11:47:14 jhb Exp $ + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -76,6 +76,11 @@ char argv_l_[PADL_(u_int32_t *)]; u_int32_t * argv; char argv_r_[PADR_(u_int32_t *)]; char envv_l_[PADL_(u_int32_t *)]; u_int32_t * envv; char envv_r_[PADR_(u_int32_t *)]; }; +struct freebsd32_mprotect_args { + char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)]; + char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)]; + char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)]; +}; struct freebsd32_setitimer_args { char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)]; char itv_l_[PADL_(struct itimerval32 *)]; struct itimerval32 * itv; char itv_r_[PADR_(struct itimerval32 *)]; @@ -593,6 +598,7 @@ int freebsd32_sigaltstack(struct thread *, struct freebsd32_sigaltstack_args *); int freebsd32_ioctl(struct thread *, struct freebsd32_ioctl_args *); int freebsd32_execve(struct thread *, struct freebsd32_execve_args *); +int freebsd32_mprotect(struct thread *, struct freebsd32_mprotect_args *); int freebsd32_setitimer(struct thread *, struct freebsd32_setitimer_args *); int freebsd32_getitimer(struct thread *, struct freebsd32_getitimer_args *); int freebsd32_select(struct thread *, struct freebsd32_select_args *); @@ -952,6 +958,7 @@ #define FREEBSD32_SYS_AUE_freebsd32_execve AUE_EXECVE #define FREEBSD32_SYS_AUE_ofreebsd32_fstat AUE_FSTAT #define FREEBSD32_SYS_AUE_ofreebsd32_getpagesize AUE_NULL +#define FREEBSD32_SYS_AUE_freebsd32_mprotect AUE_MPROTECT #define FREEBSD32_SYS_AUE_freebsd32_setitimer AUE_SETITIMER #define FREEBSD32_SYS_AUE_freebsd32_getitimer AUE_GETITIMER #define FREEBSD32_SYS_AUE_freebsd32_select AUE_SELECT ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.121 2011/09/16 14:04:14 kmacy Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 224066 2011-07-15 18:26:19Z jonathan + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.123 2011/10/14 11:47:14 jhb Exp $ + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb */ #define FREEBSD32_SYS_syscall 0 @@ -80,7 +80,7 @@ /* 71 is obsolete ommap */ #define FREEBSD32_SYS_vadvise 72 #define FREEBSD32_SYS_munmap 73 -#define FREEBSD32_SYS_mprotect 74 +#define FREEBSD32_SYS_freebsd32_mprotect 74 #define FREEBSD32_SYS_madvise 75 /* 76 is obsolete vhangup */ /* 77 is obsolete vlimit */ ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.112 2011/09/16 14:04:14 kmacy Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 224066 2011-07-15 18:26:19Z jonathan + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.114 2011/10/14 11:47:14 jhb Exp $ + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb */ const char *freebsd32_syscallnames[] = { @@ -84,7 +84,7 @@ "obs_ommap", /* 71 = obsolete ommap */ "vadvise", /* 72 = vadvise */ "munmap", /* 73 = munmap */ - "mprotect", /* 74 = mprotect */ + "freebsd32_mprotect", /* 74 = freebsd32_mprotect */ "madvise", /* 75 = madvise */ "obs_vhangup", /* 76 = obsolete vhangup */ "obs_vlimit", /* 77 = obsolete vlimit */ ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.123 2011/09/16 14:04:14 kmacy Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 224066 2011-07-15 18:26:19Z jonathan + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.125 2011/10/14 11:47:14 jhb Exp $ + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb */ #include "opt_compat.h" @@ -121,7 +121,7 @@ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 71 = obsolete ommap */ { AS(ovadvise_args), (sy_call_t *)sys_ovadvise, AUE_O_VADVISE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 72 = vadvise */ { AS(munmap_args), (sy_call_t *)sys_munmap, AUE_MUNMAP, NULL, 0, 0, 0, SY_THR_STATIC }, /* 73 = munmap */ - { AS(mprotect_args), (sy_call_t *)sys_mprotect, AUE_MPROTECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 74 = mprotect */ + { AS(freebsd32_mprotect_args), (sy_call_t *)freebsd32_mprotect, AUE_MPROTECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 74 = freebsd32_mprotect */ { AS(madvise_args), (sy_call_t *)sys_madvise, AUE_MADVISE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 75 = madvise */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 76 = obsolete vhangup */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 77 = obsolete vlimit */ ==== //depot/projects/fadvise/sys/compat/freebsd32/freebsd32_systrace_args.c#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call argument to DTrace register array converstion. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_systrace_args.c,v 1.5 2011/07/15 18:33:12 jonathan Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_systrace_args.c,v 1.7 2011/10/14 11:47:14 jhb Exp $ * This file is part of the DTrace syscall provider. */ @@ -464,9 +464,9 @@ *n_args = 2; break; } - /* mprotect */ + /* freebsd32_mprotect */ case 74: { - struct mprotect_args *p = params; + struct freebsd32_mprotect_args *p = params; uarg[0] = (intptr_t) p->addr; /* const void * */ uarg[1] = p->len; /* size_t */ iarg[2] = p->prot; /* int */ @@ -3749,7 +3749,7 @@ break; }; break; - /* mprotect */ + /* freebsd32_mprotect */ case 74: switch(ndx) { case 0: ==== //depot/projects/fadvise/sys/compat/freebsd32/syscalls.master#4 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.140 2011/07/15 18:26:19 jonathan Exp $ + $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.142 2011/10/14 11:46:46 jhb Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 ; from: src/sys/kern/syscalls.master 1.107 ; @@ -172,7 +172,7 @@ 72 AUE_O_VADVISE NOPROTO { int ovadvise(int anom); } vadvise \ ovadvise_args int 73 AUE_MUNMAP NOPROTO { int munmap(void *addr, size_t len); } -74 AUE_MPROTECT NOPROTO { int mprotect(const void *addr, \ +74 AUE_MPROTECT STD { int freebsd32_mprotect(const void *addr, \ size_t len, int prot); } 75 AUE_MADVISE NOPROTO { int madvise(void *addr, size_t len, \ int behav); } ==== //depot/projects/fadvise/sys/dev/aac/aac_cam.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/aac/aac_cam.c,v 1.40 2010/12/06 17:06:21 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aac/aac_cam.c,v 1.41 2011/10/13 20:06:19 marius Exp $"); /* * CAM front-end for communicating with non-DASD devices @@ -532,6 +532,7 @@ union ccb *ccb; struct aac_srb_response *srbr; struct aac_softc *sc; + int sense_returned; sc = cm->cm_sc; fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, ""); @@ -556,16 +557,17 @@ /* Take care of autosense */ if (srbr->sense_len) { - int sense_len, scsi_sense_len; - - scsi_sense_len = sizeof(struct scsi_sense_data); - bzero(&ccb->csio.sense_data, scsi_sense_len); - sense_len = (srbr->sense_len > - scsi_sense_len) ? scsi_sense_len : - srbr->sense_len; + sense_returned = srbr->sense_len; + if (sense_returned < ccb->csio.sense_len) + ccb->csio.sense_resid = + ccb->csio.sense_len - + sense_returned; + else + ccb->csio.sense_resid = 0; + bzero(&ccb->csio.sense_data, + sizeof(struct scsi_sense_data)); bcopy(&srbr->sense[0], &ccb->csio.sense_data, - srbr->sense_len); - ccb->csio.sense_len = sense_len; + min(ccb->csio.sense_len, sense_returned)); ccb->ccb_h.status |= CAM_AUTOSNS_VALID; // scsi_sense_print(&ccb->csio); } ==== //depot/projects/fadvise/sys/dev/asr/asr.c#2 (text+ko) ==== @@ -160,7 +160,7 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/asr/asr.c,v 1.89 2010/11/25 21:51:43 brian Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/asr/asr.c,v 1.90 2011/10/13 20:06:19 marius Exp $"); #define ASR_VERSION 1 #define ASR_REVISION '1' @@ -3071,6 +3071,14 @@ && (size > ccb->csio.sense_len)) { size = ccb->csio.sense_len; } + if (size < ccb->csio.sense_len) { + ccb->csio.sense_resid = + ccb->csio.sense_len - size; + } else { + ccb->csio.sense_resid = 0; + } + bzero(&(ccb->csio.sense_data), + sizeof(ccb->csio.sense_data)); bcopy(Reply->SenseData, &(ccb->csio.sense_data), size); } @@ -3566,6 +3574,12 @@ if (size > sizeof(ccb->csio.sense_data)) { size = sizeof(ccb->csio.sense_data); } + if (size < ccb->csio.sense_len) { + ccb->csio.sense_resid = ccb->csio.sense_len - size; + } else { + ccb->csio.sense_resid = 0; + } + bzero(&(ccb->csio.sense_data), sizeof(ccb->csio.sense_data)); bcopy(&(ccb->csio.sense_data), Reply_Ptr->SenseData, size); I2O_SCSI_ERROR_REPLY_MESSAGE_FRAME_setAutoSenseTransferCount( Reply_Ptr, size); ==== //depot/projects/fadvise/sys/dev/ath/if_ath_pci.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath_pci.c,v 1.26 2011/03/31 08:07:13 adrian Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath_pci.c,v 1.27 2011/10/14 03:24:35 adrian Exp $"); /* * PCI/Cardbus front-end for the Atheros Wireless LAN controller driver. @@ -74,6 +74,16 @@ #define BS_BAR 0x10 #define PCIR_RETRY_TIMEOUT 0x41 +static void +ath_pci_setup(device_t dev) +{ + /* + * Disable retry timeout to keep PCI Tx retries from + * interfering with C3 CPU state. + */ + pci_write_config(dev, PCIR_RETRY_TIMEOUT, 0, 1); +} + static int ath_pci_probe(device_t dev) { @@ -103,10 +113,9 @@ pci_enable_busmaster(dev); /* - * Disable retry timeout to keep PCI Tx retries from - * interfering with C3 CPU state. + * Setup other PCI bus configuration parameters. */ - pci_write_config(dev, PCIR_RETRY_TIMEOUT, 0, 1); + ath_pci_setup(dev); /* * Setup memory-mapping of PCI registers. @@ -228,6 +237,11 @@ { struct ath_pci_softc *psc = device_get_softc(dev); + /* + * Suspend/resume resets the PCI configuration space. + */ + ath_pci_setup(dev); + ath_resume(&psc->sc_sc); return (0); ==== //depot/projects/fadvise/sys/dev/hptiop/hptiop.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hptiop/hptiop.c,v 1.9 2011/08/01 21:12:41 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hptiop/hptiop.c,v 1.10 2011/10/13 20:06:19 marius Exp $"); #include #include @@ -424,6 +424,13 @@ ccb->ccb_h.status = CAM_BUSY; break; case IOP_RESULT_CHECK_CONDITION: + memset(&ccb->csio.sense_data, 0, + sizeof(ccb->csio.sense_data)); + if (dxfer < ccb->csio.sense_len) + ccb->csio.sense_resid = ccb->csio.sense_len - + dxfer; + else + ccb->csio.sense_resid = 0; if (srb->srb_flag & HPT_SRB_FLAG_HIGH_MEM_ACESS) {/*iop*/ bus_space_read_region_1(hba->bar0t, hba->bar0h, index + offsetof(struct hpt_iop_request_scsi_command, @@ -573,6 +580,13 @@ ccb->ccb_h.status = CAM_BUSY; break; case IOP_RESULT_CHECK_CONDITION: + memset(&ccb->csio.sense_data, 0, + sizeof(ccb->csio.sense_data)); + if (req->dataxfer_length < ccb->csio.sense_len) + ccb->csio.sense_resid = ccb->csio.sense_len - + req->dataxfer_length; + else + ccb->csio.sense_resid = 0; memcpy(&ccb->csio.sense_data, &req->sg_list, MIN(req->dataxfer_length, sizeof(ccb->csio.sense_data))); ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; ==== //depot/projects/fadvise/sys/dev/iwn/if_iwn.c#2 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/iwn/if_iwn.c,v 1.117 2011/10/09 21:36:14 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/iwn/if_iwn.c,v 1.118 2011/10/13 18:17:03 bschmidt Exp $"); #include #include @@ -2929,7 +2929,7 @@ * reinitialize the sensitivity state machine. */ if (vap->iv_state == IEEE80211_S_RUN && - (ic->ic_flags & IEEE80211_F_SCAN) != 0) { + (ic->ic_flags & IEEE80211_F_SCAN) == 0) { if (misses > 5) (void)iwn_init_sensitivity(sc); if (misses >= vap->iv_bmissthreshold) { ==== //depot/projects/fadvise/sys/dev/mfi/mfi_cam.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_cam.c,v 1.6 2011/06/28 08:36:48 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_cam.c,v 1.7 2011/10/13 20:06:19 marius Exp $"); #include "opt_mfi.h" @@ -354,7 +354,13 @@ ccbh->status = CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; csio->scsi_status = pt->header.scsi_status; - sense_len = min(pt->header.sense_len, sizeof(struct scsi_sense_data)); + if (pt->header.sense_len < csio->sense_len) + csio->sense_resid = csio->sense_len - + pt->header.sense_len; + else + csio->sense_resid = 0; + sense_len = min(pt->header.sense_len, + sizeof(struct scsi_sense_data)); bzero(&csio->sense_data, sizeof(struct scsi_sense_data)); bcopy(&cm->cm_sense->data[0], &csio->sense_data, sense_len); break; ==== //depot/projects/fadvise/sys/kern/imgact_elf.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.218 2011/07/06 20:06:44 trasz Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.219 2011/10/13 16:16:46 marcel Exp $"); #include "opt_capsicum.h" #include "opt_compat.h" @@ -1664,6 +1664,12 @@ prot |= VM_PROT_WRITE; if (flags & PF_R) prot |= VM_PROT_READ; +#if __ELF_WORD_SIZE == 32 +#if defined(__amd64__) || defined(__ia64__) + if (flags & PF_R) + prot |= VM_PROT_EXECUTE; +#endif +#endif return (prot); } ==== //depot/projects/fadvise/sys/kern/kern_malloc.c#2 (text+ko) ==== @@ -43,7 +43,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_malloc.c,v 1.185 2011/10/08 18:29:30 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_malloc.c,v 1.186 2011/10/12 18:08:28 glebius Exp $"); #include "opt_ddb.h" #include "opt_kdtrace.h" @@ -458,7 +458,7 @@ ("malloc(M_WAITOK) in interrupt context")); #ifdef DEBUG_MEMGUARD - if (memguard_cmp(mtp, size)) { + if (memguard_cmp_mtp(mtp, size)) { va = memguard_alloc(size, flags); if (va != NULL) return (va); ==== //depot/projects/fadvise/sys/netinet/in.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/in.c,v 1.179 2011/10/10 17:41:11 qingli Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/in.c,v 1.180 2011/10/13 13:30:41 glebius Exp $"); #include "opt_mpath.h" @@ -845,7 +845,7 @@ { register u_long i = ntohl(sin->sin_addr.s_addr); struct sockaddr_in oldaddr; - int s = splimp(), flags = RTF_UP, error = 0; + int flags = RTF_UP, error = 0; oldaddr = ia->ia_addr; if (oldaddr.sin_family == AF_INET) @@ -865,7 +865,6 @@ if (ifp->if_ioctl != NULL) { error = (*ifp->if_ioctl)(ifp, SIOCSIFADDR, (caddr_t)ia); if (error) { - splx(s); /* LIST_REMOVE(ia, ia_hash) is done in in_control */ ia->ia_addr = oldaddr; IN_IFADDR_WLOCK(); @@ -884,7 +883,6 @@ return (error); } } - splx(s); if (scrub) { ia->ia_ifa.ifa_addr = (struct sockaddr *)&oldaddr; in_ifscrub(ifp, ia, LLE_STATIC); ==== //depot/projects/fadvise/sys/netinet/tcp_timer.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/tcp_timer.c,v 1.121 2011/05/30 09:43:55 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/tcp_timer.c,v 1.122 2011/10/12 19:52:23 np Exp $"); #include "opt_inet6.h" #include "opt_tcpdebug.h" @@ -495,6 +495,13 @@ CURVNET_RESTORE(); return; } + if (inp->inp_flags & INP_DROPPED) { + INP_WUNLOCK(inp); + INP_INFO_WUNLOCK(&V_tcbinfo); + CURVNET_RESTORE(); + return; + } + tp = tcp_drop(tp, tp->t_softerror ? tp->t_softerror : ETIMEDOUT); headlocked = 1; ==== //depot/projects/fadvise/sys/netinet6/in6.c#2 (text+ko) ==== @@ -61,7 +61,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/in6.c,v 1.140 2011/10/05 16:27:11 qingli Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/in6.c,v 1.141 2011/10/13 13:05:36 glebius Exp $"); #include "opt_compat.h" #include "opt_inet.h" @@ -136,8 +136,90 @@ int (*faithprefix_p)(struct in6_addr *); +#define ifa2ia6(ifa) ((struct in6_ifaddr *)(ifa)) +#define ia62ifa(ia6) (&((ia6)->ia_ifa)) + +void +in6_ifaddloop(struct ifaddr *ifa) +{ + struct sockaddr_dl gateway; + struct sockaddr_in6 mask, addr; + struct rtentry rt; + struct in6_ifaddr *ia; + struct ifnet *ifp; + struct llentry *ln; + + ia = ifa2ia6(ifa); + ifp = ifa->ifa_ifp; + IF_AFDATA_LOCK(ifp); + ifa->ifa_rtrequest = NULL; + + /* XXX QL + * we need to report rt_newaddrmsg + */ + ln = lla_lookup(LLTABLE6(ifp), (LLE_CREATE | LLE_IFADDR | + LLE_EXCLUSIVE), (struct sockaddr *)&ia->ia_addr); + IF_AFDATA_UNLOCK(ifp); + if (ln != NULL) { + ln->la_expire = 0; /* for IPv6 this means permanent */ + ln->ln_state = ND6_LLINFO_REACHABLE; + /* + * initialize for rtmsg generation + */ + bzero(&gateway, sizeof(gateway)); + gateway.sdl_len = sizeof(gateway); + gateway.sdl_family = AF_LINK; + gateway.sdl_nlen = 0; + gateway.sdl_alen = 6; + memcpy(gateway.sdl_data, &ln->ll_addr.mac_aligned, + sizeof(ln->ll_addr)); + LLE_WUNLOCK(ln); + } + + bzero(&rt, sizeof(rt)); + rt.rt_gateway = (struct sockaddr *)&gateway; + memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask)); + memcpy(&addr, &ia->ia_addr, sizeof(ia->ia_addr)); + rt_mask(&rt) = (struct sockaddr *)&mask; + rt_key(&rt) = (struct sockaddr *)&addr; + rt.rt_flags = RTF_UP | RTF_HOST | RTF_STATIC; + rt_newaddrmsg(RTM_ADD, ifa, 0, &rt); +} +void +in6_ifremloop(struct ifaddr *ifa) +{ + struct sockaddr_dl gateway; + struct sockaddr_in6 mask, addr; + struct rtentry rt0; + struct in6_ifaddr *ia; + struct ifnet *ifp; + ia = ifa2ia6(ifa); + ifp = ifa->ifa_ifp; + IF_AFDATA_LOCK(ifp); + lla_lookup(LLTABLE6(ifp), (LLE_DELETE | LLE_IFADDR), + (struct sockaddr *)&ia->ia_addr); + IF_AFDATA_UNLOCK(ifp); + + /* + * initialize for rtmsg generation + */ + bzero(&gateway, sizeof(gateway)); + gateway.sdl_len = sizeof(gateway); + gateway.sdl_family = AF_LINK; + gateway.sdl_nlen = 0; + gateway.sdl_alen = ifp->if_addrlen; + bzero(&rt0, sizeof(rt0)); + rt0.rt_gateway = (struct sockaddr *)&gateway; + memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask)); + memcpy(&addr, &ia->ia_addr, sizeof(ia->ia_addr)); + rt_mask(&rt0) = (struct sockaddr *)&mask; + rt_key(&rt0) = (struct sockaddr *)&addr; + rt0.rt_flags = RTF_HOST | RTF_STATIC; + rt_newaddrmsg(RTM_DELETE, ifa, 0, &rt0); +} + int in6_mask2len(struct in6_addr *mask, u_char *lim0) { @@ -174,9 +256,6 @@ return x * 8 + y; } -#define ifa2ia6(ifa) ((struct in6_ifaddr *)(ifa)) -#define ia62ifa(ia6) (&((ia6)->ia_ifa)) - #ifdef COMPAT_FREEBSD32 struct in6_ndifreq32 { char ifname[IFNAMSIZ]; @@ -1218,9 +1297,6 @@ struct in6_ifaddr *ia = (struct in6_ifaddr *) ifa; struct in6_multi_mship *imm; struct sockaddr_in6 mltaddr, mltmask; - struct rtentry rt0; - struct sockaddr_dl gateway; - struct sockaddr_in6 mask, addr; int plen, error; struct rtentry *rt; struct ifaddr *ifa0, *nifa; @@ -1259,30 +1335,9 @@ /* stop DAD processing */ nd6_dad_stop(ifa); - IF_AFDATA_LOCK(ifp); - lla_lookup(LLTABLE6(ifp), (LLE_DELETE | LLE_IFADDR), - (struct sockaddr *)&ia->ia_addr); - IF_AFDATA_UNLOCK(ifp); + in6_ifremloop(ifa); /* - * initialize for rtmsg generation - */ - bzero(&gateway, sizeof(gateway)); - gateway.sdl_len = sizeof(gateway); - gateway.sdl_family = AF_LINK; - gateway.sdl_nlen = 0; - gateway.sdl_alen = ifp->if_addrlen; - /* */ - bzero(&rt0, sizeof(rt0)); - rt0.rt_gateway = (struct sockaddr *)&gateway; - memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask)); - memcpy(&addr, &ia->ia_addr, sizeof(ia->ia_addr)); - rt_mask(&rt0) = (struct sockaddr *)&mask; - rt_key(&rt0) = (struct sockaddr *)&addr; - rt0.rt_flags = RTF_HOST | RTF_STATIC; - rt_newaddrmsg(RTM_DELETE, ifa, 0, &rt0); - - /* * leave from multicast groups we have joined for the interface */ while ((imm = ia->ia6_memberships.lh_first) != NULL) { @@ -1820,46 +1875,8 @@ } /* Add ownaddr as loopback rtentry, if necessary (ex. on p2p link). */ - if (newhost) { - struct llentry *ln; - struct rtentry rt; - struct sockaddr_dl gateway; - struct sockaddr_in6 mask, addr; - - IF_AFDATA_LOCK(ifp); - ia->ia_ifa.ifa_rtrequest = NULL; - - /* XXX QL - * we need to report rt_newaddrmsg - */ - ln = lla_lookup(LLTABLE6(ifp), (LLE_CREATE | LLE_IFADDR | LLE_EXCLUSIVE), - (struct sockaddr *)&ia->ia_addr); - IF_AFDATA_UNLOCK(ifp); - if (ln != NULL) { - ln->la_expire = 0; /* for IPv6 this means permanent */ - ln->ln_state = ND6_LLINFO_REACHABLE; - /* - * initialize for rtmsg generation - */ - bzero(&gateway, sizeof(gateway)); - gateway.sdl_len = sizeof(gateway); - gateway.sdl_family = AF_LINK; - gateway.sdl_nlen = 0; - gateway.sdl_alen = 6; - memcpy(gateway.sdl_data, &ln->ll_addr.mac_aligned, sizeof(ln->ll_addr)); - /* */ - LLE_WUNLOCK(ln); - } - - bzero(&rt, sizeof(rt)); - rt.rt_gateway = (struct sockaddr *)&gateway; - memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask)); - memcpy(&addr, &ia->ia_addr, sizeof(ia->ia_addr)); - rt_mask(&rt) = (struct sockaddr *)&mask; - rt_key(&rt) = (struct sockaddr *)&addr; - rt.rt_flags = RTF_UP | RTF_HOST | RTF_STATIC; - rt_newaddrmsg(RTM_ADD, &ia->ia_ifa, 0, &rt); - } + if (newhost) + in6_ifaddloop(&(ia->ia_ifa)); return (error); } ==== //depot/projects/fadvise/sys/netinet6/nd6_nbr.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/nd6_nbr.c,v 1.82 2011/06/06 02:14:23 hrs Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/nd6_nbr.c,v 1.83 2011/10/13 13:33:23 glebius Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1167,11 +1167,11 @@ { struct dadq *dp; - for (dp = V_dadq.tqh_first; dp; dp = dp->dad_list.tqe_next) { + TAILQ_FOREACH(dp, &V_dadq, dad_list) if (dp->dad_ifa == ifa) - return dp; - } - return NULL; + return (dp); + + return (NULL); } static void ==== //depot/projects/fadvise/sys/teken/demo/Makefile#2 (text+ko) ==== @@ -1,7 +1,7 @@ -# $FreeBSD: src/sys/teken/demo/Makefile,v 1.1 2011/05/09 16:27:39 ed Exp $ +# $FreeBSD: src/sys/teken/demo/Makefile,v 1.2 2011/10/13 14:20:27 ed Exp $ PROG= teken_demo -LDADD= -lncurses -lteken -lutil +LDADD= -lncursesw -lteken -lutil MAN= WARNS?= 6 ==== //depot/projects/fadvise/sys/vm/memguard.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/vm/memguard.c,v 1.13 2010/12/14 05:47:35 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/memguard.c,v 1.14 2011/10/12 18:08:28 glebius Exp $"); /* * MemGuard is a simple replacement allocator for debugging only @@ -56,6 +56,7 @@ #include #include #include +#include #include SYSCTL_NODE(_vm, OID_AUTO, memguard, CTLFLAG_RW, NULL, "MemGuard data"); @@ -125,15 +126,17 @@ SYSCTL_ULONG(_vm_memguard, OID_AUTO, fail_pgs, CTLFLAG_RD, &memguard_fail_pgs, 0, "MemGuard failures due to lack of pages"); -#define MG_GUARD 0x001 -#define MG_ALLLARGE 0x002 -static int memguard_options = MG_GUARD; +#define MG_GUARD_AROUND 0x001 +#define MG_GUARD_ALLLARGE 0x002 +#define MG_GUARD_NOFREE 0x004 +static int memguard_options = MG_GUARD_AROUND; TUNABLE_INT("vm.memguard.options", &memguard_options); SYSCTL_INT(_vm_memguard, OID_AUTO, options, CTLFLAG_RW, &memguard_options, 0, "MemGuard options:\n" "\t0x001 - add guard pages around each allocation\n" - "\t0x002 - always use MemGuard for allocations over a page"); + "\t0x002 - always use MemGuard for allocations over a page\n" + "\t0x004 - guard uma(9) zones with UMA_ZONE_NOFREE flag"); static u_int memguard_minsize; static u_long memguard_minsize_reject; @@ -282,7 +285,7 @@ * value. */ size_v = size_p; - do_guard = (memguard_options & MG_GUARD) != 0; + do_guard = (memguard_options & MG_GUARD_AROUND) != 0; if (do_guard) size_v += 2 * PAGE_SIZE; @@ -429,21 +432,32 @@ return (newaddr); } >>> TRUNCATED FOR MAIL (1000 lines) <<<