PERFORCE change 200198 for review
John Baldwin
jhb at FreeBSD.org
Fri Oct 14 14:24:27 UTC 2011
http://p4web.freebsd.org/@@200198?ac=10
Change 200198 by jhb at 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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <dev/asr/sys_info.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/types.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/sockio.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <vm/vm_map.h>
#include <vm/vm_object.h>
#include <vm/vm_extern.h>
+#include <vm/uma_int.h>
#include <vm/memguard.h>
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) <<<
More information about the p4-projects
mailing list