Jody McIntyre 2005-12-12 23:58:44 -05:00
commit 25d3f1622f
212 changed files with 4146 additions and 3677 deletions

View file

@ -16,5 +16,7 @@ empeg
- Empeg documentation - Empeg documentation
mem_alignment mem_alignment
- alignment abort handler documentation - alignment abort handler documentation
memory.txt
- description of the virtual memory layout
nwfpe nwfpe
- NWFPE floating point emulator documentation - NWFPE floating point emulator documentation

View file

@ -57,19 +57,19 @@ oldalloc This disables the Orlov block allocator and enables the
we'd like to get some feedback if it's the contrary for we'd like to get some feedback if it's the contrary for
you. you.
user_xattr (*) Enables POSIX Extended Attributes. It's enabled by user_xattr Enables Extended User Attributes. Additionally, you need
default, however you need to confifure its support to have extended attribute support enabled in the kernel
(CONFIG_EXT3_FS_XATTR). This is neccesary if you want configuration (CONFIG_EXT3_FS_XATTR). See the attr(5)
to use POSIX Acces Control Lists support. You can visit manual page and http://acl.bestbits.at to learn more
http://acl.bestbits.at to know more about POSIX Extended about extended attributes.
attributes.
nouser_xattr Disables POSIX Extended Attributes. nouser_xattr Disables Extended User Attributes.
acl (*) Enables POSIX Access Control Lists support. This is acl Enables POSIX Access Control Lists support. Additionally,
enabled by default, however you need to configure you need to have ACL support enabled in the kernel
its support (CONFIG_EXT3_FS_POSIX_ACL). If you want configuration (CONFIG_EXT3_FS_POSIX_ACL). See the acl(5)
to know more about ACLs visit http://acl.bestbits.at manual page and http://acl.bestbits.at for more
information.
noacl This option disables POSIX Access Control List support. noacl This option disables POSIX Access Control List support.

View file

@ -408,7 +408,7 @@ outputmakefile:
# of make so .config is not included in this case either (for *config). # of make so .config is not included in this case either (for *config).
no-dot-config-targets := clean mrproper distclean \ no-dot-config-targets := clean mrproper distclean \
cscope TAGS tags help %docs check% kernelrelease cscope TAGS tags help %docs check%
config-targets := 0 config-targets := 0
mixed-targets := 0 mixed-targets := 0

View file

@ -242,6 +242,15 @@ get_branch_address(struct task_struct *child, unsigned long pc, unsigned long in
*/ */
long aluop1, aluop2, ccbit; long aluop1, aluop2, ccbit;
if ((insn & 0x0fffffd0) == 0x012fff10) {
/*
* bx or blx
*/
alt = get_user_reg(child, insn & 15);
break;
}
if ((insn & 0xf000) != 0xf000) if ((insn & 0xf000) != 0xf000)
break; break;

View file

@ -191,7 +191,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
*/ */
save_previous_kprobe(kcb); save_previous_kprobe(kcb);
set_current_kprobe(p, regs, kcb); set_current_kprobe(p, regs, kcb);
p->nmissed++; kprobes_inc_nmissed_count(p);
prepare_singlestep(p, regs); prepare_singlestep(p, regs);
kcb->kprobe_status = KPROBE_REENTER; kcb->kprobe_status = KPROBE_REENTER;
return 1; return 1;

View file

@ -650,13 +650,6 @@ fastcall void do_nmi(struct pt_regs * regs, long error_code)
cpu = smp_processor_id(); cpu = smp_processor_id();
#ifdef CONFIG_HOTPLUG_CPU
if (!cpu_online(cpu)) {
nmi_exit();
return;
}
#endif
++nmi_count(cpu); ++nmi_count(cpu);
if (!rcu_dereference(nmi_callback)(regs, cpu)) if (!rcu_dereference(nmi_callback)(regs, cpu))

View file

@ -58,7 +58,7 @@ config IA64_UNCACHED_ALLOCATOR
bool bool
select GENERIC_ALLOCATOR select GENERIC_ALLOCATOR
config ZONE_DMA_IS_DMA32 config DMA_IS_DMA32
bool bool
default y default y

View file

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc6 # Linux kernel version: 2.6.15-rc4
# Tue Aug 16 14:40:41 2005 # Fri Dec 2 10:33:48 2005
# #
# #
@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
# General setup # General setup
# #
CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE=y
@ -26,6 +27,7 @@ CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_CPUSETS=y CONFIG_CPUSETS=y
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_EMBEDDED is not set # CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
@ -55,12 +57,30 @@ CONFIG_OBSOLETE_MODPARM=y
CONFIG_KMOD=y CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y CONFIG_STOP_MACHINE=y
#
# Block layer
#
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
# #
# Processor type and features # Processor type and features
# #
CONFIG_IA64=y CONFIG_IA64=y
CONFIG_64BIT=y CONFIG_64BIT=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_SWIOTLB=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_TIME_INTERPOLATION=y CONFIG_TIME_INTERPOLATION=y
@ -68,6 +88,7 @@ CONFIG_EFI=y
CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IOMAP=y
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
CONFIG_IA64_UNCACHED_ALLOCATOR=y CONFIG_IA64_UNCACHED_ALLOCATOR=y
CONFIG_ZONE_DMA_IS_DMA32=y
# CONFIG_IA64_GENERIC is not set # CONFIG_IA64_GENERIC is not set
# CONFIG_IA64_DIG is not set # CONFIG_IA64_DIG is not set
# CONFIG_IA64_HP_ZX1 is not set # CONFIG_IA64_HP_ZX1 is not set
@ -87,14 +108,10 @@ CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set # CONFIG_HZ_1000 is not set
CONFIG_HZ=250 CONFIG_HZ=250
CONFIG_IA64_L1_CACHE_SHIFT=7 CONFIG_IA64_L1_CACHE_SHIFT=7
CONFIG_NUMA=y
CONFIG_VIRTUAL_MEM_MAP=y
CONFIG_HOLES_IN_ZONE=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
# CONFIG_IA64_CYCLONE is not set # CONFIG_IA64_CYCLONE is not set
CONFIG_IOSAPIC=y CONFIG_IOSAPIC=y
CONFIG_IA64_SGI_SN_XP=m CONFIG_IA64_SGI_SN_XP=m
CONFIG_FORCE_MAX_ZONEORDER=18 CONFIG_FORCE_MAX_ZONEORDER=17
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_NR_CPUS=512 CONFIG_NR_CPUS=512
# CONFIG_HOTPLUG_CPU is not set # CONFIG_HOTPLUG_CPU is not set
@ -107,7 +124,17 @@ CONFIG_DISCONTIGMEM_MANUAL=y
CONFIG_DISCONTIGMEM=y CONFIG_DISCONTIGMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_NEED_MULTIPLE_NODES=y CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_HAVE_DEC_LOCK=y # CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
CONFIG_NUMA=y
CONFIG_VIRTUAL_MEM_MAP=y
CONFIG_HOLES_IN_ZONE=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
CONFIG_IA32_SUPPORT=y CONFIG_IA32_SUPPORT=y
CONFIG_COMPAT=y CONFIG_COMPAT=y
CONFIG_IA64_MCA_RECOVERY=y CONFIG_IA64_MCA_RECOVERY=y
@ -126,20 +153,28 @@ CONFIG_BINFMT_ELF=y
# Power management and ACPI # Power management and ACPI
# #
CONFIG_PM=y CONFIG_PM=y
CONFIG_ACPI=y # CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
# #
# ACPI (Advanced Configuration and Power Interface) Support # ACPI (Advanced Configuration and Power Interface) Support
# #
CONFIG_ACPI=y
# CONFIG_ACPI_BUTTON is not set # CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_FAN is not set # CONFIG_ACPI_FAN is not set
# CONFIG_ACPI_PROCESSOR is not set # CONFIG_ACPI_PROCESSOR is not set
CONFIG_ACPI_NUMA=y CONFIG_ACPI_NUMA=y
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_POWER=y CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y CONFIG_ACPI_SYSTEM=y
# CONFIG_ACPI_CONTAINER is not set # CONFIG_ACPI_CONTAINER is not set
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
# #
# Bus options (PCI, PCMCIA) # Bus options (PCI, PCMCIA)
# #
@ -147,7 +182,6 @@ CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_MSI is not set # CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY_PROC=y CONFIG_PCI_LEGACY_PROC=y
CONFIG_PCI_NAMES=y
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
# #
@ -191,8 +225,8 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_ESP is not set # CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set # CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set # CONFIG_INET_TUNNEL is not set
CONFIG_IP_TCPDIAG=y CONFIG_INET_DIAG=m
# CONFIG_IP_TCPDIAG_IPV6 is not set CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set # CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y CONFIG_TCP_CONG_BIC=y
CONFIG_IPV6=m CONFIG_IPV6=m
@ -204,6 +238,11 @@ CONFIG_IPV6=m
# CONFIG_IPV6_TUNNEL is not set # CONFIG_IPV6_TUNNEL is not set
# CONFIG_NETFILTER is not set # CONFIG_NETFILTER is not set
#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set
# #
# SCTP Configuration (EXPERIMENTAL) # SCTP Configuration (EXPERIMENTAL)
# #
@ -220,8 +259,11 @@ CONFIG_IPV6=m
# CONFIG_NET_DIVERT is not set # CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
# #
# Network testing # Network testing
@ -230,6 +272,7 @@ CONFIG_IPV6=m
# CONFIG_HAMRADIO is not set # CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set # CONFIG_IRDA is not set
# CONFIG_BT is not set # CONFIG_BT is not set
# CONFIG_IEEE80211 is not set
# #
# Device Drivers # Device Drivers
@ -243,6 +286,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
# CONFIG_CONNECTOR is not set
# #
# Memory Technology Devices (MTD) # Memory Technology Devices (MTD)
# #
@ -275,16 +323,7 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CDROM_PKTCDVD is not set # CONFIG_CDROM_PKTCDVD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_ATA_OVER_ETH=m CONFIG_ATA_OVER_ETH=m
# #
@ -349,6 +388,7 @@ CONFIG_IDEDMA_AUTO=y
# #
# SCSI device support # SCSI device support
# #
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y CONFIG_SCSI=y
CONFIG_SCSI_PROC_FS=y CONFIG_SCSI_PROC_FS=y
@ -375,11 +415,13 @@ CONFIG_SCSI_CONSTANTS=y
# #
CONFIG_SCSI_SPI_ATTRS=y CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y CONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=y
# #
# SCSI low-level drivers # SCSI low-level drivers
# #
CONFIG_ISCSI_TCP=m
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_ACARD is not set
@ -389,15 +431,19 @@ CONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC79XX is not set
# CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
CONFIG_SCSI_SATA=y CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_AHCI is not set # CONFIG_SCSI_SATA_AHCI is not set
# CONFIG_SCSI_SATA_SVW is not set # CONFIG_SCSI_SATA_SVW is not set
# CONFIG_SCSI_ATA_PIIX is not set # CONFIG_SCSI_ATA_PIIX is not set
# CONFIG_SCSI_SATA_MV is not set
# CONFIG_SCSI_SATA_NV is not set # CONFIG_SCSI_SATA_NV is not set
# CONFIG_SCSI_SATA_PROMISE is not set # CONFIG_SCSI_PDC_ADMA is not set
# CONFIG_SCSI_SATA_QSTOR is not set # CONFIG_SCSI_SATA_QSTOR is not set
# CONFIG_SCSI_SATA_PROMISE is not set
# CONFIG_SCSI_SATA_SX4 is not set # CONFIG_SCSI_SATA_SX4 is not set
# CONFIG_SCSI_SATA_SIL is not set # CONFIG_SCSI_SATA_SIL is not set
# CONFIG_SCSI_SATA_SIL24 is not set
# CONFIG_SCSI_SATA_SIS is not set # CONFIG_SCSI_SATA_SIS is not set
# CONFIG_SCSI_SATA_ULI is not set # CONFIG_SCSI_SATA_ULI is not set
# CONFIG_SCSI_SATA_VIA is not set # CONFIG_SCSI_SATA_VIA is not set
@ -411,7 +457,6 @@ CONFIG_SCSI_SATA_VITESSE=y
# CONFIG_SCSI_IPR is not set # CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_FC is not set # CONFIG_SCSI_QLOGIC_FC is not set
CONFIG_SCSI_QLOGIC_1280=y CONFIG_SCSI_QLOGIC_1280=y
# CONFIG_SCSI_QLOGIC_1280_1040 is not set
CONFIG_SCSI_QLA2XXX=y CONFIG_SCSI_QLA2XXX=y
# CONFIG_SCSI_QLA21XX is not set # CONFIG_SCSI_QLA21XX is not set
CONFIG_SCSI_QLA22XX=y CONFIG_SCSI_QLA22XX=y
@ -451,6 +496,7 @@ CONFIG_DM_MULTIPATH_EMC=m
CONFIG_FUSION=y CONFIG_FUSION=y
CONFIG_FUSION_SPI=y CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y CONFIG_FUSION_FC=y
CONFIG_FUSION_SAS=y
CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=m CONFIG_FUSION_CTL=m
@ -478,6 +524,10 @@ CONFIG_NETDEVICES=y
# #
# CONFIG_ARCNET is not set # CONFIG_ARCNET is not set
#
# PHY device support
#
# #
# Ethernet (10 or 100Mbit) # Ethernet (10 or 100Mbit)
# #
@ -493,6 +543,7 @@ CONFIG_NETDEVICES=y
# CONFIG_HAMACHI is not set # CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set # CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set # CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set # CONFIG_SKGE is not set
# CONFIG_SK98LIN is not set # CONFIG_SK98LIN is not set
CONFIG_TIGON3=y CONFIG_TIGON3=y
@ -501,10 +552,10 @@ CONFIG_TIGON3=y
# #
# Ethernet (10000 Mbit) # Ethernet (10000 Mbit)
# #
CONFIG_CHELSIO_T1=m
# CONFIG_IXGB is not set # CONFIG_IXGB is not set
CONFIG_S2IO=m CONFIG_S2IO=m
# CONFIG_S2IO_NAPI is not set # CONFIG_S2IO_NAPI is not set
# CONFIG_2BUFF_MODE is not set
# #
# Token Ring devices # Token Ring devices
@ -583,6 +634,7 @@ CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_NONSTANDARD=y CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_ROCKETPORT is not set # CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set # CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_SMARTIO is not set # CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set # CONFIG_ISI is not set
# CONFIG_SYNCLINKMP is not set # CONFIG_SYNCLINKMP is not set
@ -629,7 +681,8 @@ CONFIG_EFI_RTC=y
# #
# Ftape, the floppy tape device driver # Ftape, the floppy tape device driver
# #
# CONFIG_AGP is not set CONFIG_AGP=y
CONFIG_AGP_SGI_TIOCA=y
# CONFIG_DRM is not set # CONFIG_DRM is not set
CONFIG_RAW_DRIVER=m CONFIG_RAW_DRIVER=m
# CONFIG_HPET is not set # CONFIG_HPET is not set
@ -641,12 +694,12 @@ CONFIG_MMTIMER=y
# TPM devices # TPM devices
# #
# CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
# #
# I2C support # I2C support
# #
# CONFIG_I2C is not set # CONFIG_I2C is not set
# CONFIG_I2C_SENSOR is not set
# #
# Dallas's 1-wire bus # Dallas's 1-wire bus
@ -657,11 +710,16 @@ CONFIG_MMTIMER=y
# Hardware Monitoring support # Hardware Monitoring support
# #
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
# #
# Misc devices # Misc devices
# #
#
# Multimedia Capabilities Port drivers
#
# #
# Multimedia devices # Multimedia devices
# #
@ -721,12 +779,15 @@ CONFIG_USB_UHCI_HCD=m
# #
# USB Device Class drivers # USB Device Class drivers
# #
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_ACM is not set # CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set # CONFIG_USB_PRINTER is not set
# #
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# may also be needed; see USB_STORAGE Help for more information
# #
# CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE is not set
@ -751,9 +812,11 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_MTOUCH is not set # CONFIG_USB_MTOUCH is not set
# CONFIG_USB_ITMTOUCH is not set # CONFIG_USB_ITMTOUCH is not set
# CONFIG_USB_EGALAX is not set # CONFIG_USB_EGALAX is not set
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set # CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set # CONFIG_USB_ATI_REMOTE is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
# #
# USB Imaging devices # USB Imaging devices
@ -824,11 +887,13 @@ CONFIG_USB_MON=y
# InfiniBand support # InfiniBand support
# #
CONFIG_INFINIBAND=m CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_VERBS=m # CONFIG_INFINIBAND_USER_MAD is not set
CONFIG_INFINIBAND_USER_ACCESS=m
CONFIG_INFINIBAND_MTHCA=m CONFIG_INFINIBAND_MTHCA=m
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
CONFIG_INFINIBAND_IPOIB=m CONFIG_INFINIBAND_IPOIB=m
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set # CONFIG_INFINIBAND_IPOIB_DEBUG is not set
CONFIG_INFINIBAND_SRP=m
# #
# SN Devices # SN Devices
@ -858,16 +923,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set # CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y
#
# XFS support
#
CONFIG_XFS_FS=y CONFIG_XFS_FS=y
CONFIG_XFS_EXPORT=y CONFIG_XFS_EXPORT=y
CONFIG_XFS_RT=y
CONFIG_XFS_QUOTA=y CONFIG_XFS_QUOTA=y
# CONFIG_XFS_SECURITY is not set # CONFIG_XFS_SECURITY is not set
CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y
CONFIG_XFS_RT=y
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y CONFIG_INOTIFY=y
@ -878,6 +939,7 @@ CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=m CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m
# #
# CD-ROM/DVD Filesystems # CD-ROM/DVD Filesystems
@ -904,13 +966,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y CONFIG_SYSFS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y CONFIG_TMPFS=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS_SECURITY=y
CONFIG_HUGETLBFS=y CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y CONFIG_RAMFS=y
CONFIG_RELAYFS_FS=m
# #
# Miscellaneous filesystems # Miscellaneous filesystems
@ -959,6 +1019,7 @@ CONFIG_CIFS=m
# CONFIG_NCP_FS is not set # CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set
# #
# Partition Types # Partition Types
@ -1028,18 +1089,21 @@ CONFIG_NLS_UTF8=y
# Library routines # Library routines
# #
# CONFIG_CRC_CCITT is not set # CONFIG_CRC_CCITT is not set
CONFIG_CRC16=m
CONFIG_CRC32=y CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m CONFIG_ZLIB_DEFLATE=m
CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
# #
# Profiling support # Instrumentation Support
# #
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# #
# Kernel hacking # Kernel hacking
@ -1048,6 +1112,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_LOG_BUF_SHIFT=20 CONFIG_LOG_BUF_SHIFT=20
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set # CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y CONFIG_DEBUG_PREEMPT=y
@ -1056,7 +1121,8 @@ CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set # CONFIG_DEBUG_FS is not set
# CONFIG_KPROBES is not set # CONFIG_DEBUG_VM is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_IA64_GRANULE_16MB=y CONFIG_IA64_GRANULE_16MB=y
# CONFIG_IA64_GRANULE_64MB is not set # CONFIG_IA64_GRANULE_64MB is not set
# CONFIG_IA64_PRINT_HAZARDS is not set # CONFIG_IA64_PRINT_HAZARDS is not set
@ -1097,7 +1163,7 @@ CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_ANUBIS is not set # CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_MICHAEL_MIC is not set # CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_TEST is not set # CONFIG_CRYPTO_TEST is not set
# #

View file

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.14-rc1 # Linux kernel version: 2.6.15-rc4
# Wed Sep 14 15:17:57 2005 # Fri Dec 2 16:06:32 2005
# #
# #
@ -58,18 +58,37 @@ CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_KMOD=y CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y CONFIG_STOP_MACHINE=y
#
# Block layer
#
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
# #
# Processor type and features # Processor type and features
# #
CONFIG_IA64=y CONFIG_IA64=y
CONFIG_64BIT=y CONFIG_64BIT=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_SWIOTLB=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_TIME_INTERPOLATION=y CONFIG_TIME_INTERPOLATION=y
CONFIG_EFI=y CONFIG_EFI=y
CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IOMAP=y
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
CONFIG_ZONE_DMA_IS_DMA32=y
# CONFIG_IA64_GENERIC is not set # CONFIG_IA64_GENERIC is not set
CONFIG_IA64_DIG=y CONFIG_IA64_DIG=y
# CONFIG_IA64_HP_ZX1 is not set # CONFIG_IA64_HP_ZX1 is not set
@ -82,18 +101,16 @@ CONFIG_MCKINLEY=y
# CONFIG_IA64_PAGE_SIZE_8KB is not set # CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set # CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_PGTABLE_3=y
# CONFIG_PGTABLE_4 is not set
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
CONFIG_HZ_250=y CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set # CONFIG_HZ_1000 is not set
CONFIG_HZ=250 CONFIG_HZ=250
CONFIG_IA64_L1_CACHE_SHIFT=7 CONFIG_IA64_L1_CACHE_SHIFT=7
# CONFIG_NUMA is not set
CONFIG_VIRTUAL_MEM_MAP=y
CONFIG_HOLES_IN_ZONE=y
CONFIG_IA64_CYCLONE=y CONFIG_IA64_CYCLONE=y
CONFIG_IOSAPIC=y CONFIG_IOSAPIC=y
# CONFIG_IA64_SGI_SN_XP is not set CONFIG_FORCE_MAX_ZONEORDER=17
CONFIG_FORCE_MAX_ZONEORDER=18
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_NR_CPUS=4 CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y CONFIG_HOTPLUG_CPU=y
@ -106,7 +123,13 @@ CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set # CONFIG_SPARSEMEM_STATIC is not set
CONFIG_HAVE_DEC_LOCK=y CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_VIRTUAL_MEM_MAP=y
CONFIG_HOLES_IN_ZONE=y
CONFIG_IA32_SUPPORT=y CONFIG_IA32_SUPPORT=y
CONFIG_COMPAT=y CONFIG_COMPAT=y
CONFIG_IA64_MCA_RECOVERY=y CONFIG_IA64_MCA_RECOVERY=y
@ -118,7 +141,6 @@ CONFIG_IA64_PALINFO=y
# #
CONFIG_EFI_VARS=y CONFIG_EFI_VARS=y
CONFIG_EFI_PCDP=y CONFIG_EFI_PCDP=y
# CONFIG_DELL_RBU is not set
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
@ -126,6 +148,7 @@ CONFIG_BINFMT_MISC=m
# Power management and ACPI # Power management and ACPI
# #
CONFIG_PM=y CONFIG_PM=y
CONFIG_PM_LEGACY=y
# CONFIG_PM_DEBUG is not set # CONFIG_PM_DEBUG is not set
# #
@ -226,14 +249,16 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_NET_DIVERT is not set # CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
# #
# Network testing # Network testing
# #
# CONFIG_NET_PKTGEN is not set # CONFIG_NET_PKTGEN is not set
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_HAMRADIO is not set # CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set # CONFIG_IRDA is not set
# CONFIG_BT is not set # CONFIG_BT is not set
@ -295,14 +320,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set # CONFIG_CDROM_PKTCDVD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set # CONFIG_ATA_OVER_ETH is not set
# #
@ -400,6 +417,7 @@ CONFIG_SCSI_FC_ATTRS=y
# #
# SCSI low-level drivers # SCSI low-level drivers
# #
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_ACARD is not set
@ -409,6 +427,7 @@ CONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC79XX is not set
# CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_SATA is not set # CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set
@ -424,7 +443,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_QLOGIC_FC=y CONFIG_SCSI_QLOGIC_FC=y
# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
CONFIG_SCSI_QLOGIC_1280=y CONFIG_SCSI_QLOGIC_1280=y
# CONFIG_SCSI_QLOGIC_1280_1040 is not set
CONFIG_SCSI_QLA2XXX=y CONFIG_SCSI_QLA2XXX=y
CONFIG_SCSI_QLA21XX=m CONFIG_SCSI_QLA21XX=m
CONFIG_SCSI_QLA22XX=m CONFIG_SCSI_QLA22XX=m
@ -463,6 +481,7 @@ CONFIG_DM_ZERO=m
CONFIG_FUSION=y CONFIG_FUSION=y
CONFIG_FUSION_SPI=y CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y CONFIG_FUSION_FC=y
# CONFIG_FUSION_SAS is not set
CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=y CONFIG_FUSION_CTL=y
@ -503,6 +522,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set # CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set # CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# #
@ -727,6 +747,7 @@ CONFIG_MAX_RAW_DEVS=256
# TPM devices # TPM devices
# #
# CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
# #
# I2C support # I2C support
@ -812,12 +833,15 @@ CONFIG_USB_UHCI_HCD=y
# #
# USB Device Class drivers # USB Device Class drivers
# #
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_ACM is not set # CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set # CONFIG_USB_PRINTER is not set
# #
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# may also be needed; see USB_STORAGE Help for more information
# #
CONFIG_USB_STORAGE=m CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DEBUG is not set
@ -1123,9 +1147,10 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_PENDING_IRQ=y
# #
# Profiling support # Instrumentation Support
# #
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# #
# Kernel hacking # Kernel hacking
@ -1142,7 +1167,8 @@ CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set # CONFIG_DEBUG_FS is not set
# CONFIG_KPROBES is not set # CONFIG_DEBUG_VM is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_IA64_GRANULE_16MB=y CONFIG_IA64_GRANULE_16MB=y
# CONFIG_IA64_GRANULE_64MB is not set # CONFIG_IA64_GRANULE_64MB is not set
# CONFIG_IA64_PRINT_HAZARDS is not set # CONFIG_IA64_PRINT_HAZARDS is not set

View file

@ -261,8 +261,6 @@ elf32_set_personality (void)
{ {
set_personality(PER_LINUX32); set_personality(PER_LINUX32);
current->thread.map_base = IA32_PAGE_OFFSET/3; current->thread.map_base = IA32_PAGE_OFFSET/3;
current->thread.task_size = IA32_PAGE_OFFSET; /* use what Linux/x86 uses... */
set_fs(USER_DS); /* set addr limit for new TASK_SIZE */
} }
static unsigned long static unsigned long

View file

@ -305,7 +305,6 @@ struct old_linux32_dirent {
#define ELF_DATA ELFDATA2LSB #define ELF_DATA ELFDATA2LSB
#define ELF_ARCH EM_386 #define ELF_ARCH EM_386
#define IA32_PAGE_OFFSET 0xc0000000
#define IA32_STACK_TOP IA32_PAGE_OFFSET #define IA32_STACK_TOP IA32_PAGE_OFFSET
#define IA32_GATE_OFFSET IA32_PAGE_OFFSET #define IA32_GATE_OFFSET IA32_PAGE_OFFSET
#define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE #define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE

View file

@ -630,7 +630,7 @@ static int __kprobes pre_kprobes_handler(struct die_args *args)
*/ */
save_previous_kprobe(kcb); save_previous_kprobe(kcb);
set_current_kprobe(p, kcb); set_current_kprobe(p, kcb);
p->nmissed++; kprobes_inc_nmissed_count(p);
prepare_ss(p, regs); prepare_ss(p, regs);
kcb->kprobe_status = KPROBE_REENTER; kcb->kprobe_status = KPROBE_REENTER;
return 1; return 1;

View file

@ -721,8 +721,11 @@ flush_thread (void)
/* drop floating-point and debug-register state if it exists: */ /* drop floating-point and debug-register state if it exists: */
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID); current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
ia64_drop_fpu(current); ia64_drop_fpu(current);
if (IS_IA32_PROCESS(ia64_task_regs(current))) if (IS_IA32_PROCESS(ia64_task_regs(current))) {
ia32_drop_partial_page_list(current); ia32_drop_partial_page_list(current);
current->thread.task_size = IA32_PAGE_OFFSET;
set_fs(USER_DS);
}
} }
/* /*

View file

@ -293,7 +293,7 @@ retry:
if (file->f_flags & O_NONBLOCK) if (file->f_flags & O_NONBLOCK)
return -EAGAIN; return -EAGAIN;
if (down_interruptible(&data->sem)) if (down_interruptible(&data->sem))
return -ERESTARTSYS; return -EINTR;
} }
n = data->cpu_check; n = data->cpu_check;

View file

@ -50,8 +50,10 @@ static nodemask_t memory_less_mask __initdata;
* To prevent cache aliasing effects, align per-node structures so that they * To prevent cache aliasing effects, align per-node structures so that they
* start at addresses that are strided by node number. * start at addresses that are strided by node number.
*/ */
#define MAX_NODE_ALIGN_OFFSET (32 * 1024 * 1024)
#define NODEDATA_ALIGN(addr, node) \ #define NODEDATA_ALIGN(addr, node) \
((((addr) + 1024*1024-1) & ~(1024*1024-1)) + (node)*PERCPU_PAGE_SIZE) ((((addr) + 1024*1024-1) & ~(1024*1024-1)) + \
(((node)*PERCPU_PAGE_SIZE) & (MAX_NODE_ALIGN_OFFSET - 1)))
/** /**
* build_node_maps - callback to setup bootmem structs for each node * build_node_maps - callback to setup bootmem structs for each node

View file

@ -3,7 +3,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
*/ */
#include <linux/bootmem.h> #include <linux/bootmem.h>
@ -146,6 +146,24 @@ sal_get_pcidev_info(u64 segment, u64 bus_number, u64 devfn, u64 pci_dev,
return ret_stuff.v0; return ret_stuff.v0;
} }
/*
* sn_pcidev_info_get() - Retrieve the pcidev_info struct for the specified
* device.
*/
inline struct pcidev_info *
sn_pcidev_info_get(struct pci_dev *dev)
{
struct pcidev_info *pcidev;
list_for_each_entry(pcidev,
&(SN_PCI_CONTROLLER(dev)->pcidev_info), pdi_list) {
if (pcidev->pdi_linux_pcidev == dev) {
return pcidev;
}
}
return NULL;
}
/* /*
* sn_fixup_ionodes() - This routine initializes the HUB data strcuture for * sn_fixup_ionodes() - This routine initializes the HUB data strcuture for
* each node in the system. * each node in the system.
@ -229,6 +247,50 @@ static void sn_fixup_ionodes(void)
} }
/*
* sn_pci_window_fixup() - Create a pci_window for each device resource.
* Until ACPI support is added, we need this code
* to setup pci_windows for use by
* pcibios_bus_to_resource(),
* pcibios_resource_to_bus(), etc.
*/
static void
sn_pci_window_fixup(struct pci_dev *dev, unsigned int count,
int64_t * pci_addrs)
{
struct pci_controller *controller = PCI_CONTROLLER(dev->bus);
unsigned int i;
unsigned int idx;
unsigned int new_count;
struct pci_window *new_window;
if (count == 0)
return;
idx = controller->windows;
new_count = controller->windows + count;
new_window = kcalloc(new_count, sizeof(struct pci_window), GFP_KERNEL);
if (new_window == NULL)
BUG();
if (controller->window) {
memcpy(new_window, controller->window,
sizeof(struct pci_window) * controller->windows);
kfree(controller->window);
}
/* Setup a pci_window for each device resource. */
for (i = 0; i <= PCI_ROM_RESOURCE; i++) {
if (pci_addrs[i] == -1)
continue;
new_window[idx].offset = dev->resource[i].start - pci_addrs[i];
new_window[idx].resource = dev->resource[i];
idx++;
}
controller->windows = new_count;
controller->window = new_window;
}
void sn_pci_unfixup_slot(struct pci_dev *dev) void sn_pci_unfixup_slot(struct pci_dev *dev)
{ {
struct pci_dev *host_pci_dev = SN_PCIDEV_INFO(dev)->host_pci_dev; struct pci_dev *host_pci_dev = SN_PCIDEV_INFO(dev)->host_pci_dev;
@ -246,21 +308,23 @@ void sn_pci_unfixup_slot(struct pci_dev *dev)
*/ */
void sn_pci_fixup_slot(struct pci_dev *dev) void sn_pci_fixup_slot(struct pci_dev *dev)
{ {
unsigned int count = 0;
int idx; int idx;
int segment = pci_domain_nr(dev->bus); int segment = pci_domain_nr(dev->bus);
int status = 0; int status = 0;
struct pcibus_bussoft *bs; struct pcibus_bussoft *bs;
struct pci_bus *host_pci_bus; struct pci_bus *host_pci_bus;
struct pci_dev *host_pci_dev; struct pci_dev *host_pci_dev;
struct pcidev_info *pcidev_info;
int64_t pci_addrs[PCI_ROM_RESOURCE + 1];
struct sn_irq_info *sn_irq_info; struct sn_irq_info *sn_irq_info;
unsigned long size; unsigned long size;
unsigned int bus_no, devfn; unsigned int bus_no, devfn;
pci_dev_get(dev); /* for the sysdata pointer */ pci_dev_get(dev); /* for the sysdata pointer */
dev->sysdata = kmalloc(sizeof(struct pcidev_info), GFP_KERNEL); pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
if (SN_PCIDEV_INFO(dev) <= 0) if (pcidev_info <= 0)
BUG(); /* Cannot afford to run out of memory */ BUG(); /* Cannot afford to run out of memory */
memset(SN_PCIDEV_INFO(dev), 0, sizeof(struct pcidev_info));
sn_irq_info = kmalloc(sizeof(struct sn_irq_info), GFP_KERNEL); sn_irq_info = kmalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
if (sn_irq_info <= 0) if (sn_irq_info <= 0)
@ -270,22 +334,34 @@ void sn_pci_fixup_slot(struct pci_dev *dev)
/* Call to retrieve pci device information needed by kernel. */ /* Call to retrieve pci device information needed by kernel. */
status = sal_get_pcidev_info((u64) segment, (u64) dev->bus->number, status = sal_get_pcidev_info((u64) segment, (u64) dev->bus->number,
dev->devfn, dev->devfn,
(u64) __pa(SN_PCIDEV_INFO(dev)), (u64) __pa(pcidev_info),
(u64) __pa(sn_irq_info)); (u64) __pa(sn_irq_info));
if (status) if (status)
BUG(); /* Cannot get platform pci device information */ BUG(); /* Cannot get platform pci device information */
/* Add pcidev_info to list in sn_pci_controller struct */
list_add_tail(&pcidev_info->pdi_list,
&(SN_PCI_CONTROLLER(dev->bus)->pcidev_info));
/* Copy over PIO Mapped Addresses */ /* Copy over PIO Mapped Addresses */
for (idx = 0; idx <= PCI_ROM_RESOURCE; idx++) { for (idx = 0; idx <= PCI_ROM_RESOURCE; idx++) {
unsigned long start, end, addr; unsigned long start, end, addr;
if (!SN_PCIDEV_INFO(dev)->pdi_pio_mapped_addr[idx]) if (!pcidev_info->pdi_pio_mapped_addr[idx]) {
pci_addrs[idx] = -1;
continue; continue;
}
start = dev->resource[idx].start; start = dev->resource[idx].start;
end = dev->resource[idx].end; end = dev->resource[idx].end;
size = end - start; size = end - start;
addr = SN_PCIDEV_INFO(dev)->pdi_pio_mapped_addr[idx]; if (size == 0) {
pci_addrs[idx] = -1;
continue;
}
pci_addrs[idx] = start;
count++;
addr = pcidev_info->pdi_pio_mapped_addr[idx];
addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET; addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET;
dev->resource[idx].start = addr; dev->resource[idx].start = addr;
dev->resource[idx].end = addr + size; dev->resource[idx].end = addr + size;
@ -294,23 +370,27 @@ void sn_pci_fixup_slot(struct pci_dev *dev)
else else
dev->resource[idx].parent = &iomem_resource; dev->resource[idx].parent = &iomem_resource;
} }
/* Create a pci_window in the pci_controller struct for
* each device resource.
*/
if (count > 0)
sn_pci_window_fixup(dev, count, pci_addrs);
/* /*
* Using the PROMs values for the PCI host bus, get the Linux * Using the PROMs values for the PCI host bus, get the Linux
* PCI host_pci_dev struct and set up host bus linkages * PCI host_pci_dev struct and set up host bus linkages
*/ */
bus_no = (SN_PCIDEV_INFO(dev)->pdi_slot_host_handle >> 32) & 0xff; bus_no = (pcidev_info->pdi_slot_host_handle >> 32) & 0xff;
devfn = SN_PCIDEV_INFO(dev)->pdi_slot_host_handle & 0xffffffff; devfn = pcidev_info->pdi_slot_host_handle & 0xffffffff;
host_pci_bus = pci_find_bus(segment, bus_no); host_pci_bus = pci_find_bus(segment, bus_no);
host_pci_dev = pci_get_slot(host_pci_bus, devfn); host_pci_dev = pci_get_slot(host_pci_bus, devfn);
SN_PCIDEV_INFO(dev)->host_pci_dev = host_pci_dev; pcidev_info->host_pci_dev = host_pci_dev;
SN_PCIDEV_INFO(dev)->pdi_host_pcidev_info = pcidev_info->pdi_linux_pcidev = dev;
SN_PCIDEV_INFO(host_pci_dev); pcidev_info->pdi_host_pcidev_info = SN_PCIDEV_INFO(host_pci_dev);
SN_PCIDEV_INFO(dev)->pdi_linux_pcidev = dev;
bs = SN_PCIBUS_BUSSOFT(dev->bus); bs = SN_PCIBUS_BUSSOFT(dev->bus);
SN_PCIDEV_INFO(dev)->pdi_pcibus_info = bs; pcidev_info->pdi_pcibus_info = bs;
if (bs && bs->bs_asic_type < PCIIO_ASIC_MAX_TYPES) { if (bs && bs->bs_asic_type < PCIIO_ASIC_MAX_TYPES) {
SN_PCIDEV_BUSPROVIDER(dev) = sn_pci_provider[bs->bs_asic_type]; SN_PCIDEV_BUSPROVIDER(dev) = sn_pci_provider[bs->bs_asic_type];
@ -320,11 +400,11 @@ void sn_pci_fixup_slot(struct pci_dev *dev)
/* Only set up IRQ stuff if this device has a host bus context */ /* Only set up IRQ stuff if this device has a host bus context */
if (bs && sn_irq_info->irq_irq) { if (bs && sn_irq_info->irq_irq) {
SN_PCIDEV_INFO(dev)->pdi_sn_irq_info = sn_irq_info; pcidev_info->pdi_sn_irq_info = sn_irq_info;
dev->irq = SN_PCIDEV_INFO(dev)->pdi_sn_irq_info->irq_irq; dev->irq = pcidev_info->pdi_sn_irq_info->irq_irq;
sn_irq_fixup(dev, sn_irq_info); sn_irq_fixup(dev, sn_irq_info);
} else { } else {
SN_PCIDEV_INFO(dev)->pdi_sn_irq_info = NULL; pcidev_info->pdi_sn_irq_info = NULL;
kfree(sn_irq_info); kfree(sn_irq_info);
} }
} }
@ -338,6 +418,7 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
int status = 0; int status = 0;
int nasid, cnode; int nasid, cnode;
struct pci_controller *controller; struct pci_controller *controller;
struct sn_pci_controller *sn_controller;
struct pcibus_bussoft *prom_bussoft_ptr; struct pcibus_bussoft *prom_bussoft_ptr;
struct hubdev_info *hubdev_info; struct hubdev_info *hubdev_info;
void *provider_soft = NULL; void *provider_soft = NULL;
@ -349,10 +430,15 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
return; /*bus # does not exist */ return; /*bus # does not exist */
prom_bussoft_ptr = __va(prom_bussoft_ptr); prom_bussoft_ptr = __va(prom_bussoft_ptr);
controller = kzalloc(sizeof(struct pci_controller), GFP_KERNEL); /* Allocate a sn_pci_controller, which has a pci_controller struct
controller->segment = segment; * as the first member.
if (!controller) */
sn_controller = kzalloc(sizeof(struct sn_pci_controller), GFP_KERNEL);
if (!sn_controller)
BUG(); BUG();
INIT_LIST_HEAD(&sn_controller->pcidev_info);
controller = &sn_controller->pci_controller;
controller->segment = segment;
if (bus == NULL) { if (bus == NULL) {
bus = pci_scan_bus(busnum, &pci_root_ops, controller); bus = pci_scan_bus(busnum, &pci_root_ops, controller);
@ -389,6 +475,29 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
goto error_return; goto error_return;
} }
/*
* Setup pci_windows for legacy IO and MEM space.
* (Temporary until ACPI support is in place.)
*/
controller->window = kcalloc(2, sizeof(struct pci_window), GFP_KERNEL);
if (controller->window == NULL)
BUG();
controller->window[0].offset = prom_bussoft_ptr->bs_legacy_io;
controller->window[0].resource.name = "legacy_io";
controller->window[0].resource.flags = IORESOURCE_IO;
controller->window[0].resource.start = prom_bussoft_ptr->bs_legacy_io;
controller->window[0].resource.end =
controller->window[0].resource.start + 0xffff;
controller->window[0].resource.parent = &ioport_resource;
controller->window[1].offset = prom_bussoft_ptr->bs_legacy_mem;
controller->window[1].resource.name = "legacy_mem";
controller->window[1].resource.flags = IORESOURCE_MEM;
controller->window[1].resource.start = prom_bussoft_ptr->bs_legacy_mem;
controller->window[1].resource.end =
controller->window[1].resource.start + (1024 * 1024) - 1;
controller->window[1].resource.parent = &iomem_resource;
controller->windows = 2;
/* /*
* Generic bus fixup goes here. Don't reference prom_bussoft_ptr * Generic bus fixup goes here. Don't reference prom_bussoft_ptr
* after this point. * after this point.
@ -421,7 +530,7 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
error_return: error_return:
kfree(controller); kfree(sn_controller);
return; return;
} }
@ -434,7 +543,7 @@ void sn_bus_store_sysdata(struct pci_dev *dev)
dev_dbg(dev, "%s: out of memory!\n", __FUNCTION__); dev_dbg(dev, "%s: out of memory!\n", __FUNCTION__);
return; return;
} }
element->sysdata = dev->sysdata; element->sysdata = SN_PCIDEV_INFO(dev);
list_add(&element->entry, &sn_sysdata_list); list_add(&element->entry, &sn_sysdata_list);
} }

View file

@ -39,9 +39,13 @@ sn2_ptc_deadlock_recovery_core:
mov r8=r0 mov r8=r0
1: 1:
cmp.ne p8,p9=r0,ptc1 // Test for shub type (ptc1 non-null on shub1)
// p8 = 1 if shub1, p9 = 1 if shub2
add scr2=ALIAS_OFFSET,piowc // Address of WRITE_STATUS alias register add scr2=ALIAS_OFFSET,piowc // Address of WRITE_STATUS alias register
;; mov scr1=7;; // Clear DEADLOCK, WRITE_ERROR, MULTI_WRITE_ERROR
ld8.acq scr1=[scr2];; (p8) st8.rel [scr2]=scr1;;
(p9) ld8.acq scr1=[scr2];;
5: ld8.acq scr1=[piowc];; // Wait for PIOs to complete. 5: ld8.acq scr1=[piowc];; // Wait for PIOs to complete.
hint @pause hint @pause

View file

@ -67,8 +67,8 @@ unsigned long setup_zero_pages(void)
page = virt_to_page(empty_zero_page); page = virt_to_page(empty_zero_page);
while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) { while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) {
set_bit(PG_reserved, &page->flags); SetPageReserved(page);
reset_page_mapcount(page); set_page_count(page, 1);
page++; page++;
} }

View file

@ -227,7 +227,7 @@ config SMP
If you don't know what to do here, say N. If you don't know what to do here, say N.
config NR_CPUS config NR_CPUS
int "Maximum number of CPUs (2-32)" int "Maximum number of CPUs (2-128)"
range 2 128 range 2 128
depends on SMP depends on SMP
default "32" if PPC64 default "32" if PPC64

View file

@ -177,7 +177,7 @@ static inline int kprobe_handler(struct pt_regs *regs)
save_previous_kprobe(kcb); save_previous_kprobe(kcb);
set_current_kprobe(p, regs, kcb); set_current_kprobe(p, regs, kcb);
kcb->kprobe_saved_msr = regs->msr; kcb->kprobe_saved_msr = regs->msr;
p->nmissed++; kprobes_inc_nmissed_count(p);
prepare_singlestep(p, regs); prepare_singlestep(p, regs);
kcb->kprobe_status = KPROBE_REENTER; kcb->kprobe_status = KPROBE_REENTER;
return 1; return 1;

View file

@ -102,7 +102,15 @@ int boot_cpuid_phys = 0;
dev_t boot_dev; dev_t boot_dev;
u64 ppc64_pft_size; u64 ppc64_pft_size;
struct ppc64_caches ppc64_caches; /* Pick defaults since we might want to patch instructions
* before we've read this from the device tree.
*/
struct ppc64_caches ppc64_caches = {
.dline_size = 0x80,
.log_dline_size = 7,
.iline_size = 0x80,
.log_iline_size = 7
};
EXPORT_SYMBOL_GPL(ppc64_caches); EXPORT_SYMBOL_GPL(ppc64_caches);
/* /*

View file

@ -601,7 +601,7 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
/* Handle hugepage regions */ /* Handle hugepage regions */
if (unlikely(in_hugepage_area(mm->context, ea))) { if (unlikely(in_hugepage_area(mm->context, ea))) {
DBG_LOW(" -> huge page !\n"); DBG_LOW(" -> huge page !\n");
return hash_huge_page(mm, access, ea, vsid, local); return hash_huge_page(mm, access, ea, vsid, local, trap);
} }
/* Get PTE and page size from page tables */ /* Get PTE and page size from page tables */

View file

@ -148,43 +148,63 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
return 0; return 0;
} }
struct slb_flush_info {
struct mm_struct *mm;
u16 newareas;
};
static void flush_low_segments(void *parm) static void flush_low_segments(void *parm)
{ {
u16 areas = (unsigned long) parm; struct slb_flush_info *fi = parm;
unsigned long i; unsigned long i;
BUILD_BUG_ON((sizeof(fi->newareas)*8) != NUM_LOW_AREAS);
if (current->active_mm != fi->mm)
return;
/* Only need to do anything if this CPU is working in the same
* mm as the one which has changed */
/* update the paca copy of the context struct */
get_paca()->context = current->active_mm->context;
asm volatile("isync" : : : "memory"); asm volatile("isync" : : : "memory");
BUILD_BUG_ON((sizeof(areas)*8) != NUM_LOW_AREAS);
for (i = 0; i < NUM_LOW_AREAS; i++) { for (i = 0; i < NUM_LOW_AREAS; i++) {
if (! (areas & (1U << i))) if (! (fi->newareas & (1U << i)))
continue; continue;
asm volatile("slbie %0" asm volatile("slbie %0"
: : "r" ((i << SID_SHIFT) | SLBIE_C)); : : "r" ((i << SID_SHIFT) | SLBIE_C));
} }
asm volatile("isync" : : : "memory"); asm volatile("isync" : : : "memory");
} }
static void flush_high_segments(void *parm) static void flush_high_segments(void *parm)
{ {
u16 areas = (unsigned long) parm; struct slb_flush_info *fi = parm;
unsigned long i, j; unsigned long i, j;
BUILD_BUG_ON((sizeof(fi->newareas)*8) != NUM_HIGH_AREAS);
if (current->active_mm != fi->mm)
return;
/* Only need to do anything if this CPU is working in the same
* mm as the one which has changed */
/* update the paca copy of the context struct */
get_paca()->context = current->active_mm->context;
asm volatile("isync" : : : "memory"); asm volatile("isync" : : : "memory");
BUILD_BUG_ON((sizeof(areas)*8) != NUM_HIGH_AREAS);
for (i = 0; i < NUM_HIGH_AREAS; i++) { for (i = 0; i < NUM_HIGH_AREAS; i++) {
if (! (areas & (1U << i))) if (! (fi->newareas & (1U << i)))
continue; continue;
for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++) for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++)
asm volatile("slbie %0" asm volatile("slbie %0"
:: "r" (((i << HTLB_AREA_SHIFT) :: "r" (((i << HTLB_AREA_SHIFT)
+ (j << SID_SHIFT)) | SLBIE_C)); + (j << SID_SHIFT)) | SLBIE_C));
} }
asm volatile("isync" : : : "memory"); asm volatile("isync" : : : "memory");
} }
@ -229,6 +249,7 @@ static int prepare_high_area_for_htlb(struct mm_struct *mm, unsigned long area)
static int open_low_hpage_areas(struct mm_struct *mm, u16 newareas) static int open_low_hpage_areas(struct mm_struct *mm, u16 newareas)
{ {
unsigned long i; unsigned long i;
struct slb_flush_info fi;
BUILD_BUG_ON((sizeof(newareas)*8) != NUM_LOW_AREAS); BUILD_BUG_ON((sizeof(newareas)*8) != NUM_LOW_AREAS);
BUILD_BUG_ON((sizeof(mm->context.low_htlb_areas)*8) != NUM_LOW_AREAS); BUILD_BUG_ON((sizeof(mm->context.low_htlb_areas)*8) != NUM_LOW_AREAS);
@ -244,19 +265,20 @@ static int open_low_hpage_areas(struct mm_struct *mm, u16 newareas)
mm->context.low_htlb_areas |= newareas; mm->context.low_htlb_areas |= newareas;
/* update the paca copy of the context struct */
get_paca()->context = mm->context;
/* the context change must make it to memory before the flush, /* the context change must make it to memory before the flush,
* so that further SLB misses do the right thing. */ * so that further SLB misses do the right thing. */
mb(); mb();
on_each_cpu(flush_low_segments, (void *)(unsigned long)newareas, 0, 1);
fi.mm = mm;
fi.newareas = newareas;
on_each_cpu(flush_low_segments, &fi, 0, 1);
return 0; return 0;
} }
static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas) static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas)
{ {
struct slb_flush_info fi;
unsigned long i; unsigned long i;
BUILD_BUG_ON((sizeof(newareas)*8) != NUM_HIGH_AREAS); BUILD_BUG_ON((sizeof(newareas)*8) != NUM_HIGH_AREAS);
@ -280,7 +302,10 @@ static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas)
/* the context change must make it to memory before the flush, /* the context change must make it to memory before the flush,
* so that further SLB misses do the right thing. */ * so that further SLB misses do the right thing. */
mb(); mb();
on_each_cpu(flush_high_segments, (void *)(unsigned long)newareas, 0, 1);
fi.mm = mm;
fi.newareas = newareas;
on_each_cpu(flush_high_segments, &fi, 0, 1);
return 0; return 0;
} }
@ -639,8 +664,36 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
return -ENOMEM; return -ENOMEM;
} }
/*
* Called by asm hashtable.S for doing lazy icache flush
*/
static unsigned int hash_huge_page_do_lazy_icache(unsigned long rflags,
pte_t pte, int trap)
{
struct page *page;
int i;
if (!pfn_valid(pte_pfn(pte)))
return rflags;
page = pte_page(pte);
/* page is dirty */
if (!test_bit(PG_arch_1, &page->flags) && !PageReserved(page)) {
if (trap == 0x400) {
for (i = 0; i < (HPAGE_SIZE / PAGE_SIZE); i++)
__flush_dcache_icache(page_address(page+i));
set_bit(PG_arch_1, &page->flags);
} else {
rflags |= HPTE_R_N;
}
}
return rflags;
}
int hash_huge_page(struct mm_struct *mm, unsigned long access, int hash_huge_page(struct mm_struct *mm, unsigned long access,
unsigned long ea, unsigned long vsid, int local) unsigned long ea, unsigned long vsid, int local,
unsigned long trap)
{ {
pte_t *ptep; pte_t *ptep;
unsigned long old_pte, new_pte; unsigned long old_pte, new_pte;
@ -691,6 +744,11 @@ int hash_huge_page(struct mm_struct *mm, unsigned long access,
rflags = 0x2 | (!(new_pte & _PAGE_RW)); rflags = 0x2 | (!(new_pte & _PAGE_RW));
/* _PAGE_EXEC -> HW_NO_EXEC since it's inverted */ /* _PAGE_EXEC -> HW_NO_EXEC since it's inverted */
rflags |= ((new_pte & _PAGE_EXEC) ? 0 : HPTE_R_N); rflags |= ((new_pte & _PAGE_EXEC) ? 0 : HPTE_R_N);
if (!cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
/* No CPU has hugepages but lacks no execute, so we
* don't need to worry about that case */
rflags = hash_huge_page_do_lazy_icache(rflags, __pte(old_pte),
trap);
/* Check if pte already has an hpte (case 2) */ /* Check if pte already has an hpte (case 2) */
if (unlikely(old_pte & _PAGE_HASHPTE)) { if (unlikely(old_pte & _PAGE_HASHPTE)) {
@ -703,7 +761,8 @@ int hash_huge_page(struct mm_struct *mm, unsigned long access,
slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; slot = (hash & htab_hash_mask) * HPTES_PER_GROUP;
slot += (old_pte & _PAGE_F_GIX) >> 12; slot += (old_pte & _PAGE_F_GIX) >> 12;
if (ppc_md.hpte_updatepp(slot, rflags, va, 1, local) == -1) if (ppc_md.hpte_updatepp(slot, rflags, va, mmu_huge_psize,
local) == -1)
old_pte &= ~_PAGE_HPTEFLAGS; old_pte &= ~_PAGE_HPTEFLAGS;
} }

View file

@ -125,7 +125,7 @@ void __init get_region(unsigned int nid, unsigned long *start_pfn,
/* We didnt find a matching region, return start/end as 0 */ /* We didnt find a matching region, return start/end as 0 */
if (*start_pfn == -1UL) if (*start_pfn == -1UL)
start_pfn = 0; *start_pfn = 0;
} }
static inline void map_cpu_to_node(int cpu, int node) static inline void map_cpu_to_node(int cpu, int node)

View file

@ -288,11 +288,6 @@ void stab_initialize(unsigned long stab)
return; return;
} }
#endif /* CONFIG_PPC_ISERIES */ #endif /* CONFIG_PPC_ISERIES */
#ifdef CONFIG_PPC_PSERIES
if (platform_is_lpar()) {
plpar_hcall_norets(H_SET_ASR, stabreal);
return;
}
#endif
mtspr(SPRN_ASR, stabreal); mtspr(SPRN_ASR, stabreal);
} }

View file

@ -1650,12 +1650,20 @@ void pmac_tweak_clock_spreading(int enable)
*/ */
if (macio->type == macio_intrepid) { if (macio->type == macio_intrepid) {
struct device_node *clock =
of_find_node_by_path("/uni-n@f8000000/hw-clock");
if (clock && get_property(clock, "platform-do-clockspreading",
NULL)) {
printk(KERN_INFO "%sabling clock spreading on Intrepid"
" ASIC\n", enable ? "En" : "Dis");
if (enable) if (enable)
UN_OUT(UNI_N_CLOCK_SPREADING, 2); UN_OUT(UNI_N_CLOCK_SPREADING, 2);
else else
UN_OUT(UNI_N_CLOCK_SPREADING, 0); UN_OUT(UNI_N_CLOCK_SPREADING, 0);
mdelay(40); mdelay(40);
} }
of_node_put(clock);
}
while (machine_is_compatible("PowerBook5,2") || while (machine_is_compatible("PowerBook5,2") ||
machine_is_compatible("PowerBook5,3") || machine_is_compatible("PowerBook5,3") ||
@ -1724,6 +1732,9 @@ void pmac_tweak_clock_spreading(int enable)
pmac_low_i2c_close(ui2c); pmac_low_i2c_close(ui2c);
break; break;
} }
printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n",
enable ? "En" : "Dis");
pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
DBG("write result: %d,", rc); DBG("write result: %d,", rc);

View file

@ -109,6 +109,9 @@ static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,
u64 rc; u64 rc;
union tce_entry tce; union tce_entry tce;
tcenum <<= TCE_PAGE_FACTOR;
npages <<= TCE_PAGE_FACTOR;
tce.te_word = 0; tce.te_word = 0;
tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT; tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
tce.te_rdwr = 1; tce.te_rdwr = 1;
@ -143,10 +146,7 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
union tce_entry tce, *tcep; union tce_entry tce, *tcep;
long l, limit; long l, limit;
tcenum <<= TCE_PAGE_FACTOR; if (TCE_PAGE_FACTOR == 0 && npages == 1)
npages <<= TCE_PAGE_FACTOR;
if (npages == 1)
return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
direction); direction);
@ -164,6 +164,9 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
__get_cpu_var(tce_page) = tcep; __get_cpu_var(tce_page) = tcep;
} }
tcenum <<= TCE_PAGE_FACTOR;
npages <<= TCE_PAGE_FACTOR;
tce.te_word = 0; tce.te_word = 0;
tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT; tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
tce.te_rdwr = 1; tce.te_rdwr = 1;

View file

@ -298,18 +298,6 @@ long pSeries_lpar_hpte_insert(unsigned long hpte_group,
if (!(vflags & HPTE_V_BOLTED)) if (!(vflags & HPTE_V_BOLTED))
DBG_LOW(" hpte_v=%016lx, hpte_r=%016lx\n", hpte_v, hpte_r); DBG_LOW(" hpte_v=%016lx, hpte_r=%016lx\n", hpte_v, hpte_r);
#if 1
{
int i;
for (i=0;i<8;i++) {
unsigned long w0, w1;
plpar_pte_read(0, hpte_group, &w0, &w1);
BUG_ON (HPTE_V_COMPARE(hpte_v, w0)
&& (w0 & HPTE_V_VALID));
}
}
#endif
/* Now fill in the actual HPTE */ /* Now fill in the actual HPTE */
/* Set CEC cookie to 0 */ /* Set CEC cookie to 0 */
/* Zero page = 0 */ /* Zero page = 0 */

View file

@ -767,14 +767,14 @@ config CPM2
on it (826x, 827x, 8560). on it (826x, 827x, 8560).
config PPC_CHRP config PPC_CHRP
bool " Common Hardware Reference Platform (CHRP) based machines" bool
depends on PPC_MULTIPLATFORM depends on PPC_MULTIPLATFORM
select PPC_I8259 select PPC_I8259
select PPC_INDIRECT_PCI select PPC_INDIRECT_PCI
default y default y
config PPC_PMAC config PPC_PMAC
bool " Apple PowerMac based machines" bool
depends on PPC_MULTIPLATFORM depends on PPC_MULTIPLATFORM
select PPC_INDIRECT_PCI select PPC_INDIRECT_PCI
default y default y
@ -785,7 +785,7 @@ config PPC_PMAC64
default y default y
config PPC_PREP config PPC_PREP
bool " PowerPC Reference Platform (PReP) based machines" bool
depends on PPC_MULTIPLATFORM depends on PPC_MULTIPLATFORM
select PPC_I8259 select PPC_I8259
select PPC_INDIRECT_PCI select PPC_INDIRECT_PCI

View file

@ -301,6 +301,10 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
/* Probe platform for CPUs: always linear. */ /* Probe platform for CPUs: always linear. */
num_cpus = smp_ops->probe(); num_cpus = smp_ops->probe();
if (num_cpus < 2)
smp_tb_synchronized = 1;
for (i = 0; i < num_cpus; ++i) for (i = 0; i < num_cpus; ++i)
cpu_set(i, cpu_possible_map); cpu_set(i, cpu_possible_map);

View file

@ -1606,12 +1606,20 @@ void pmac_tweak_clock_spreading(int enable)
*/ */
if (macio->type == macio_intrepid) { if (macio->type == macio_intrepid) {
struct device_node *clock =
of_find_node_by_path("/uni-n@f8000000/hw-clock");
if (clock && get_property(clock, "platform-do-clockspreading",
NULL)) {
printk(KERN_INFO "%sabling clock spreading on Intrepid"
" ASIC\n", enable ? "En" : "Dis");
if (enable) if (enable)
UN_OUT(UNI_N_CLOCK_SPREADING, 2); UN_OUT(UNI_N_CLOCK_SPREADING, 2);
else else
UN_OUT(UNI_N_CLOCK_SPREADING, 0); UN_OUT(UNI_N_CLOCK_SPREADING, 0);
mdelay(40); mdelay(40);
} }
of_node_put(clock);
}
while (machine_is_compatible("PowerBook5,2") || while (machine_is_compatible("PowerBook5,2") ||
machine_is_compatible("PowerBook5,3") || machine_is_compatible("PowerBook5,3") ||
@ -1680,6 +1688,8 @@ void pmac_tweak_clock_spreading(int enable)
pmac_low_i2c_close(ui2c); pmac_low_i2c_close(ui2c);
break; break;
} }
printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n",
enable ? "En" : "Dis");
pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
DBG("write result: %d,", rc); DBG("write result: %d,", rc);

View file

@ -34,7 +34,7 @@ libs-y += arch/sparc/prom/ arch/sparc/lib/
# Renaming is done to avoid confusing pattern matching rules in 2.5.45 (multy-) # Renaming is done to avoid confusing pattern matching rules in 2.5.45 (multy-)
INIT_Y := $(patsubst %/, %/built-in.o, $(init-y)) INIT_Y := $(patsubst %/, %/built-in.o, $(init-y))
CORE_Y := $(core-y) CORE_Y := $(core-y)
CORE_Y += kernel/ mm/ fs/ ipc/ security/ crypto/ CORE_Y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
CORE_Y := $(patsubst %/, %/built-in.o, $(CORE_Y)) CORE_Y := $(patsubst %/, %/built-in.o, $(CORE_Y))
DRIVERS_Y := $(patsubst %/, %/built-in.o, $(drivers-y)) DRIVERS_Y := $(patsubst %/, %/built-in.o, $(drivers-y))
NET_Y := $(patsubst %/, %/built-in.o, $(net-y)) NET_Y := $(patsubst %/, %/built-in.o, $(net-y))

View file

@ -66,7 +66,6 @@ int atomic_add_unless(atomic_t *v, int a, int u)
return ret != u; return ret != u;
} }
static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
/* Atomic operations are already serializing */ /* Atomic operations are already serializing */
void atomic_set(atomic_t *v, int i) void atomic_set(atomic_t *v, int i)
{ {

View file

@ -138,7 +138,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
*/ */
save_previous_kprobe(kcb); save_previous_kprobe(kcb);
set_current_kprobe(p, regs, kcb); set_current_kprobe(p, regs, kcb);
p->nmissed++; kprobes_inc_nmissed_count(p);
kcb->kprobe_status = KPROBE_REENTER; kcb->kprobe_status = KPROBE_REENTER;
prepare_singlestep(p, regs, kcb); prepare_singlestep(p, regs, kcb);
return 1; return 1;

View file

@ -17,6 +17,8 @@
#include "uaccess-skas.h" #include "uaccess-skas.h"
#endif #endif
#include "asm/fixmap.h"
#define __under_task_size(addr, size) \ #define __under_task_size(addr, size) \
(((unsigned long) (addr) < TASK_SIZE) && \ (((unsigned long) (addr) < TASK_SIZE) && \
(((unsigned long) (addr) + (size)) < TASK_SIZE)) (((unsigned long) (addr) + (size)) < TASK_SIZE))

View file

@ -7,7 +7,6 @@
#define __SKAS_UACCESS_H #define __SKAS_UACCESS_H
#include "asm/errno.h" #include "asm/errno.h"
#include "asm/fixmap.h"
/* No SKAS-specific checking. */ /* No SKAS-specific checking. */
#define access_ok_skas(type, addr, size) 0 #define access_ok_skas(type, addr, size) 0

View file

@ -329,7 +329,7 @@ int __kprobes kprobe_handler(struct pt_regs *regs)
*/ */
save_previous_kprobe(kcb); save_previous_kprobe(kcb);
set_current_kprobe(p, regs, kcb); set_current_kprobe(p, regs, kcb);
p->nmissed++; kprobes_inc_nmissed_count(p);
prepare_singlestep(p, regs); prepare_singlestep(p, regs);
kcb->kprobe_status = KPROBE_REENTER; kcb->kprobe_status = KPROBE_REENTER;
return 1; return 1;

View file

@ -316,7 +316,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
if (!link || !irq) if (!link || !irq)
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
resource = kmalloc(sizeof(*resource) + 1, GFP_KERNEL); resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC);
if (!resource) if (!resource)
return_VALUE(-ENOMEM); return_VALUE(-ENOMEM);

View file

@ -1146,7 +1146,6 @@ static int revalidate_allvol(ctlr_info_t *host)
del_gendisk(disk); del_gendisk(disk);
if (q) if (q)
blk_cleanup_queue(q); blk_cleanup_queue(q);
put_disk(disk);
} }
} }
@ -1467,7 +1466,6 @@ static int deregister_disk(struct gendisk *disk, drive_info_struct *drv,
del_gendisk(disk); del_gendisk(disk);
if (q) if (q)
blk_cleanup_queue(q); blk_cleanup_queue(q);
put_disk(disk);
} }
} }
@ -3243,7 +3241,6 @@ static void __devexit cciss_remove_one (struct pci_dev *pdev)
del_gendisk(disk); del_gendisk(disk);
if (q) if (q)
blk_cleanup_queue(q); blk_cleanup_queue(q);
put_disk(disk);
} }
} }

View file

@ -943,6 +943,15 @@ config RAW_DRIVER
Applications should simply open the device (eg /dev/hda1) Applications should simply open the device (eg /dev/hda1)
with the O_DIRECT flag. with the O_DIRECT flag.
config MAX_RAW_DEVS
int "Maximum number of RAW devices to support (1-8192)"
depends on RAW_DRIVER
default "256"
help
The maximum number of RAW devices that are supported.
Default is 256. Increase this number in case you need lots of
raw devices.
config HPET config HPET
bool "HPET - High Precision Event Timer" if (X86 || IA64) bool "HPET - High Precision Event Timer" if (X86 || IA64)
default n default n
@ -974,15 +983,6 @@ config HPET_MMAP
exposed to the user. If this applies to your hardware, exposed to the user. If this applies to your hardware,
say N here. say N here.
config MAX_RAW_DEVS
int "Maximum number of RAW devices to support (1-8192)"
depends on RAW_DRIVER
default "256"
help
The maximum number of RAW devices that are supported.
Default is 256. Increase this number in case you need lots of
raw devices.
config HANGCHECK_TIMER config HANGCHECK_TIMER
tristate "Hangcheck timer" tristate "Hangcheck timer"
depends on X86 || IA64 || PPC64 || ARCH_S390 depends on X86 || IA64 || PPC64 || ARCH_S390

View file

@ -2986,7 +2986,7 @@ static void send_panic_events(char *str)
msg.cmd = 2; /* Platform event command. */ msg.cmd = 2; /* Platform event command. */
msg.data = data; msg.data = data;
msg.data_len = 8; msg.data_len = 8;
data[0] = 0x21; /* Kernel generator ID, IPMI table 5-4 */ data[0] = 0x41; /* Kernel generator ID, IPMI table 5-4 */
data[1] = 0x03; /* This is for IPMI 1.0. */ data[1] = 0x03; /* This is for IPMI 1.0. */
data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */ data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */
data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */ data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */

View file

@ -180,10 +180,6 @@ static ssize_t mpcore_wdt_write(struct file *file, const char *data, size_t len,
{ {
struct mpcore_wdt *wdt = file->private_data; struct mpcore_wdt *wdt = file->private_data;
/* Can't seek (pwrite) on this device */
if (ppos != &file->f_pos)
return -ESPIPE;
/* /*
* Refresh the timer. * Refresh the timer.
*/ */

View file

@ -56,6 +56,7 @@ void proc_fork_connector(struct task_struct *task)
msg = (struct cn_msg*)buffer; msg = (struct cn_msg*)buffer;
ev = (struct proc_event*)msg->data; ev = (struct proc_event*)msg->data;
get_seq(&msg->seq, &ev->cpu); get_seq(&msg->seq, &ev->cpu);
getnstimestamp(&ev->timestamp);
ev->what = PROC_EVENT_FORK; ev->what = PROC_EVENT_FORK;
ev->event_data.fork.parent_pid = task->real_parent->pid; ev->event_data.fork.parent_pid = task->real_parent->pid;
ev->event_data.fork.parent_tgid = task->real_parent->tgid; ev->event_data.fork.parent_tgid = task->real_parent->tgid;
@ -81,6 +82,7 @@ void proc_exec_connector(struct task_struct *task)
msg = (struct cn_msg*)buffer; msg = (struct cn_msg*)buffer;
ev = (struct proc_event*)msg->data; ev = (struct proc_event*)msg->data;
get_seq(&msg->seq, &ev->cpu); get_seq(&msg->seq, &ev->cpu);
getnstimestamp(&ev->timestamp);
ev->what = PROC_EVENT_EXEC; ev->what = PROC_EVENT_EXEC;
ev->event_data.exec.process_pid = task->pid; ev->event_data.exec.process_pid = task->pid;
ev->event_data.exec.process_tgid = task->tgid; ev->event_data.exec.process_tgid = task->tgid;
@ -114,6 +116,7 @@ void proc_id_connector(struct task_struct *task, int which_id)
} else } else
return; return;
get_seq(&msg->seq, &ev->cpu); get_seq(&msg->seq, &ev->cpu);
getnstimestamp(&ev->timestamp);
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id)); memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
msg->ack = 0; /* not used */ msg->ack = 0; /* not used */
@ -133,6 +136,7 @@ void proc_exit_connector(struct task_struct *task)
msg = (struct cn_msg*)buffer; msg = (struct cn_msg*)buffer;
ev = (struct proc_event*)msg->data; ev = (struct proc_event*)msg->data;
get_seq(&msg->seq, &ev->cpu); get_seq(&msg->seq, &ev->cpu);
getnstimestamp(&ev->timestamp);
ev->what = PROC_EVENT_EXIT; ev->what = PROC_EVENT_EXIT;
ev->event_data.exit.process_pid = task->pid; ev->event_data.exit.process_pid = task->pid;
ev->event_data.exit.process_tgid = task->tgid; ev->event_data.exit.process_tgid = task->tgid;
@ -165,6 +169,7 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack)
msg = (struct cn_msg*)buffer; msg = (struct cn_msg*)buffer;
ev = (struct proc_event*)msg->data; ev = (struct proc_event*)msg->data;
msg->seq = rcvd_seq; msg->seq = rcvd_seq;
getnstimestamp(&ev->timestamp);
ev->cpu = -1; ev->cpu = -1;
ev->what = PROC_EVENT_NONE; ev->what = PROC_EVENT_NONE;
ev->event_data.ack.err = err; ev->event_data.ack.err = err;

View file

@ -207,7 +207,7 @@ static struct wf_smu_sys_fans_param wf_smu_sys_all_params[] = {
}, },
/* Model ID 3 */ /* Model ID 3 */
{ {
.model_id = 2, .model_id = 3,
.itarget = 0x350000, .itarget = 0x350000,
.gd = 0x08e00000, .gd = 0x08e00000,
.gp = 0x00566666, .gp = 0x00566666,
@ -219,7 +219,7 @@ static struct wf_smu_sys_fans_param wf_smu_sys_all_params[] = {
}, },
/* Model ID 5 */ /* Model ID 5 */
{ {
.model_id = 2, .model_id = 5,
.itarget = 0x3a0000, .itarget = 0x3a0000,
.gd = 0x15400000, .gd = 0x15400000,
.gp = 0x00233333, .gp = 0x00233333,

View file

@ -320,7 +320,6 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
* this branch is our 'one mirror IO has finished' event handler: * this branch is our 'one mirror IO has finished' event handler:
*/ */
r1_bio->bios[mirror] = NULL; r1_bio->bios[mirror] = NULL;
bio_put(bio);
if (!uptodate) { if (!uptodate) {
md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); md_error(r1_bio->mddev, conf->mirrors[mirror].rdev);
/* an I/O failed, we can't clear the bitmap */ /* an I/O failed, we can't clear the bitmap */
@ -377,7 +376,6 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
} }
if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { if (test_bit(R1BIO_BehindIO, &r1_bio->state)) {
/* free extra copy of the data pages */ /* free extra copy of the data pages */
/* FIXME bio has been freed!!! */
int i = bio->bi_vcnt; int i = bio->bi_vcnt;
while (i--) while (i--)
__free_page(bio->bi_io_vec[i].bv_page); __free_page(bio->bi_io_vec[i].bv_page);
@ -391,6 +389,9 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
raid_end_bio_io(r1_bio); raid_end_bio_io(r1_bio);
} }
if (r1_bio->bios[mirror]==NULL)
bio_put(bio);
rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev);
return 0; return 0;
} }

View file

@ -98,7 +98,7 @@ static inline void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh)
list_add_tail(&sh->lru, &conf->inactive_list); list_add_tail(&sh->lru, &conf->inactive_list);
atomic_dec(&conf->active_stripes); atomic_dec(&conf->active_stripes);
if (!conf->inactive_blocked || if (!conf->inactive_blocked ||
atomic_read(&conf->active_stripes) < (NR_STRIPES*3/4)) atomic_read(&conf->active_stripes) < (conf->max_nr_stripes*3/4))
wake_up(&conf->wait_for_stripe); wake_up(&conf->wait_for_stripe);
} }
} }
@ -264,7 +264,8 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, sector_t sector
conf->inactive_blocked = 1; conf->inactive_blocked = 1;
wait_event_lock_irq(conf->wait_for_stripe, wait_event_lock_irq(conf->wait_for_stripe,
!list_empty(&conf->inactive_list) && !list_empty(&conf->inactive_list) &&
(atomic_read(&conf->active_stripes) < (NR_STRIPES *3/4) (atomic_read(&conf->active_stripes)
< (conf->max_nr_stripes *3/4)
|| !conf->inactive_blocked), || !conf->inactive_blocked),
conf->device_lock, conf->device_lock,
unplug_slaves(conf->mddev); unplug_slaves(conf->mddev);

View file

@ -313,6 +313,7 @@ void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
if (ir_codes) if (ir_codes)
memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes)); memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes));
dev->keycode = ir->ir_codes; dev->keycode = ir->ir_codes;
dev->keycodesize = sizeof(IR_KEYTAB_TYPE); dev->keycodesize = sizeof(IR_KEYTAB_TYPE);
dev->keycodemax = IR_KEYTAB_SIZE; dev->keycodemax = IR_KEYTAB_SIZE;

View file

@ -45,6 +45,7 @@
#include <media/tveeprom.h> #include <media/tveeprom.h>
#include <media/ir-common.h> #include <media/ir-common.h>
#include "bt848.h" #include "bt848.h"
#include "bttv.h" #include "bttv.h"
#include "btcx-risc.h" #include "btcx-risc.h"

View file

@ -616,6 +616,8 @@ static int blackbird_load_firmware(struct cx8802_dev *dev)
retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME, retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME,
&dev->pci->dev); &dev->pci->dev);
if (retval != 0) { if (retval != 0) {
dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n", dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n",
BLACKBIRD_FIRM_ENC_FILENAME); BLACKBIRD_FIRM_ENC_FILENAME);

View file

@ -453,7 +453,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
input_dev->id.product = pci->device; input_dev->id.product = pci->device;
} }
input_dev->cdev.dev = &pci->dev; input_dev->cdev.dev = &pci->dev;
/* record handles to ourself */ /* record handles to ourself */
ir->core = core; ir->core = core;
core->ir = ir; core->ir = ir;
@ -586,7 +585,6 @@ void cx88_ir_irq(struct cx88_core *core)
MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe"); MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe");
MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls"); MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
/* /*
* Local variables: * Local variables:
* c-basic-offset: 8 * c-basic-offset: 8

View file

@ -411,7 +411,6 @@ struct cx8802_dev {
struct videobuf_dvb dvb; struct videobuf_dvb dvb;
void* fe_handle; void* fe_handle;
int (*fe_release)(void *handle); int (*fe_release)(void *handle);
/* for switching modulation types */ /* for switching modulation types */
unsigned char ts_gen_cntrl; unsigned char ts_gen_cntrl;

View file

@ -116,47 +116,6 @@ void em28xx_print_ioctl(char *name, unsigned int cmd)
} }
} }
static void *rvmalloc(size_t size)
{
void *mem;
unsigned long adr;
size = PAGE_ALIGN(size);
mem = vmalloc_32((unsigned long)size);
if (!mem)
return NULL;
memset(mem, 0, size);
adr = (unsigned long)mem;
while (size > 0) {
SetPageReserved(vmalloc_to_page((void *)adr));
adr += PAGE_SIZE;
size -= PAGE_SIZE;
}
return mem;
}
static void rvfree(void *mem, size_t size)
{
unsigned long adr;
if (!mem)
return;
size = PAGE_ALIGN(size);
adr = (unsigned long)mem;
while (size > 0) {
ClearPageReserved(vmalloc_to_page((void *)adr));
adr += PAGE_SIZE;
size -= PAGE_SIZE;
}
vfree(mem);
}
/* /*
* em28xx_request_buffers() * em28xx_request_buffers()
@ -173,8 +132,10 @@ u32 em28xx_request_buffers(struct em28xx *dev, u32 count)
dev->num_frames = count; dev->num_frames = count;
while (dev->num_frames > 0) { while (dev->num_frames > 0) {
if ((buff = rvmalloc(dev->num_frames * imagesize))) if ((buff = vmalloc_32(dev->num_frames * imagesize))) {
memset(buff, 0, dev->num_frames * imagesize);
break; break;
}
dev->num_frames--; dev->num_frames--;
} }
@ -217,8 +178,7 @@ void em28xx_queue_unusedframes(struct em28xx *dev)
void em28xx_release_buffers(struct em28xx *dev) void em28xx_release_buffers(struct em28xx *dev)
{ {
if (dev->num_frames) { if (dev->num_frames) {
rvfree(dev->frame[0].bufmem, vfree(dev->frame[0].bufmem);
dev->num_frames * PAGE_ALIGN(dev->frame[0].buf.length));
dev->num_frames = 0; dev->num_frames = 0;
} }
} }

View file

@ -189,16 +189,6 @@ static DECLARE_RWSEM(em28xx_disconnect);
/********************* v4l2 interface ******************************************/ /********************* v4l2 interface ******************************************/
static inline unsigned long kvirt_to_pa(unsigned long adr)
{
unsigned long kva, ret;
kva = (unsigned long)page_address(vmalloc_to_page((void *)adr));
kva |= adr & (PAGE_SIZE - 1);
ret = __pa(kva);
return ret;
}
/* /*
* em28xx_config() * em28xx_config()
* inits registers with sane defaults * inits registers with sane defaults
@ -616,7 +606,8 @@ static struct vm_operations_struct em28xx_vm_ops = {
static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma) static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
{ {
unsigned long size = vma->vm_end - vma->vm_start, unsigned long size = vma->vm_end - vma->vm_start,
start = vma->vm_start, pos, page; start = vma->vm_start;
void *pos;
u32 i; u32 i;
struct em28xx *dev = filp->private_data; struct em28xx *dev = filp->private_data;
@ -657,12 +648,10 @@ static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
vma->vm_flags |= VM_IO; vma->vm_flags |= VM_IO;
vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */ vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */
pos = (unsigned long)dev->frame[i].bufmem; pos = dev->frame[i].bufmem;
while (size > 0) { /* size is page-aligned */ while (size > 0) { /* size is page-aligned */
page = vmalloc_to_pfn((void *)pos); if (vm_insert_page(vma, start, vmalloc_to_page(pos))) {
if (remap_pfn_range(vma, start, page, PAGE_SIZE, em28xx_videodbg("mmap: vm_insert_page failed\n");
vma->vm_page_prot)) {
em28xx_videodbg("mmap: rename page map failed\n");
up(&dev->fileop_lock); up(&dev->fileop_lock);
return -EAGAIN; return -EAGAIN;
} }

View file

@ -297,7 +297,6 @@ struct IR {
struct timer_list timer; struct timer_list timer;
/* RC5 gpio */ /* RC5 gpio */
u32 rc5_gpio; u32 rc5_gpio;
struct timer_list timer_end; /* timer_end for code completion */ struct timer_list timer_end; /* timer_end for code completion */
struct timer_list timer_keyup; /* timer_end for key release */ struct timer_list timer_keyup; /* timer_end for key release */
@ -726,6 +725,7 @@ static int ir_remove(struct device *dev)
del_timer(&ir->timer); del_timer(&ir->timer);
flush_scheduled_work(); flush_scheduled_work();
} }
if (ir->rc5_gpio) { if (ir->rc5_gpio) {
u32 gpio; u32 gpio;

View file

@ -40,6 +40,7 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <asm/semaphore.h> #include <asm/semaphore.h>
#include <media/ir-common.h> #include <media/ir-common.h>
#include <media/ir-kbd-i2c.h> #include <media/ir-kbd-i2c.h>
@ -278,7 +279,7 @@ static int ir_probe(struct i2c_adapter *adap);
static struct i2c_driver driver = { static struct i2c_driver driver = {
.name = "ir remote kbd driver", .name = "ir remote kbd driver",
.id = I2C_DRIVERID_I2C_IR, .id = I2C_DRIVERID_INFRARED,
.flags = I2C_DF_NOTIFY, .flags = I2C_DF_NOTIFY,
.attach_adapter = ir_probe, .attach_adapter = ir_probe,
.detach_client = ir_detach, .detach_client = ir_detach,

View file

@ -882,6 +882,7 @@ static void watch_stereo(struct i2c_client *client)
msp->watch_stereo = 0; msp->watch_stereo = 0;
} }
static int msp3400c_thread(void *data) static int msp3400c_thread(void *data)
{ {
struct i2c_client *client = data; struct i2c_client *client = data;
@ -889,6 +890,7 @@ static int msp3400c_thread(void *data)
struct CARRIER_DETECT *cd; struct CARRIER_DETECT *cd;
int count, max1,max2,val1,val2, val,this; int count, max1,max2,val1,val2, val,this;
msp3400_info("msp3400 daemon started\n"); msp3400_info("msp3400 daemon started\n");
for (;;) { for (;;) {
msp3400_dbg_mediumvol("msp3400 thread: sleep\n"); msp3400_dbg_mediumvol("msp3400 thread: sleep\n");
@ -1162,6 +1164,7 @@ static int msp3410d_thread(void *data)
int mode,val,i,std; int mode,val,i,std;
msp3400_info("msp3410 daemon started\n"); msp3400_info("msp3410 daemon started\n");
for (;;) { for (;;) {
msp3400_dbg_mediumvol("msp3410 thread: sleep\n"); msp3400_dbg_mediumvol("msp3410 thread: sleep\n");
msp34xx_sleep(msp,-1); msp34xx_sleep(msp,-1);
@ -1384,6 +1387,7 @@ static int msp34xxg_thread(void *data)
int val, std, i; int val, std, i;
msp3400_info("msp34xxg daemon started\n"); msp3400_info("msp34xxg daemon started\n");
msp->source = 1; /* default */ msp->source = 1; /* default */
for (;;) { for (;;) {
msp3400_dbg_mediumvol("msp34xxg thread: sleep\n"); msp3400_dbg_mediumvol("msp34xxg thread: sleep\n");

View file

@ -422,7 +422,6 @@ static int saa6588_attach(struct i2c_adapter *adap, int addr, int kind)
s->timer.function = saa6588_timer; s->timer.function = saa6588_timer;
s->timer.data = (unsigned long)s; s->timer.data = (unsigned long)s;
schedule_work(&s->work); schedule_work(&s->work);
return 0; return 0;
} }

View file

@ -524,6 +524,7 @@ static int saa6752hs_attach(struct i2c_adapter *adap, int addr, int kind)
i2c_set_clientdata(&h->client, h); i2c_set_clientdata(&h->client, h);
i2c_attach_client(&h->client); i2c_attach_client(&h->client);
return 0; return 0;
} }

View file

@ -51,6 +51,7 @@ MODULE_PARM_DESC(debug,"enable debug messages [alsa]");
#define MIXER_ADDR_LINE2 2 #define MIXER_ADDR_LINE2 2
#define MIXER_ADDR_LAST 2 #define MIXER_ADDR_LAST 2
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0};
@ -61,9 +62,12 @@ MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s).");
#define dprintk(fmt, arg...) if (debug) \ #define dprintk(fmt, arg...) if (debug) \
printk(KERN_DEBUG "%s/alsa: " fmt, dev->name, ## arg) printk(KERN_DEBUG "%s/alsa: " fmt, dev->name, ## arg)
/* /*
* Main chip structure * Main chip structure
*/ */
typedef struct snd_card_saa7134 { typedef struct snd_card_saa7134 {
snd_card_t *card; snd_card_t *card;
spinlock_t mixer_lock; spinlock_t mixer_lock;
@ -1004,6 +1008,7 @@ static int saa7134_alsa_init(void)
printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n"); printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n");
return 0; return 0;
} }
/* /*
@ -1027,3 +1032,6 @@ module_init(saa7134_alsa_init);
module_exit(saa7134_alsa_exit); module_exit(saa7134_alsa_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_AUTHOR("Ricardo Cerqueira"); MODULE_AUTHOR("Ricardo Cerqueira");

View file

@ -976,7 +976,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER, .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
.vmux = 3, .vmux = 3,

View file

@ -71,6 +71,7 @@ static unsigned int radio_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
module_param_array(video_nr, int, NULL, 0444); module_param_array(video_nr, int, NULL, 0444);
module_param_array(vbi_nr, int, NULL, 0444); module_param_array(vbi_nr, int, NULL, 0444);
module_param_array(radio_nr, int, NULL, 0444); module_param_array(radio_nr, int, NULL, 0444);

View file

@ -36,6 +36,7 @@ MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
module_param_array(empress_nr, int, NULL, 0444); module_param_array(empress_nr, int, NULL, 0444);
MODULE_PARM_DESC(empress_nr,"ts device number"); MODULE_PARM_DESC(empress_nr,"ts device number");

View file

@ -994,6 +994,7 @@ static void saa7134_oss_exit(void)
continue; continue;
oss_device_exit(dev); oss_device_exit(dev);
} }
printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n"); printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n");

View file

@ -12,6 +12,7 @@
#include <media/audiochip.h> #include <media/audiochip.h>
#include <media/tuner.h> #include <media/tuner.h>
/* Chips: /* Chips:
TDA9885 (PAL, NTSC) TDA9885 (PAL, NTSC)
TDA9886 (PAL, SECAM, NTSC) TDA9886 (PAL, SECAM, NTSC)

View file

@ -754,6 +754,7 @@ tveeprom_detect_client(struct i2c_adapter *adapter,
client->flags = I2C_CLIENT_ALLOW_USE; client->flags = I2C_CLIENT_ALLOW_USE;
snprintf(client->name, sizeof(client->name), "tveeprom"); snprintf(client->name, sizeof(client->name), "tveeprom");
i2c_attach_client(client); i2c_attach_client(client);
return 0; return 0;
} }

View file

@ -770,7 +770,6 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter,
if (debug > 1) if (debug > 1)
dump_reg(client); dump_reg(client);
return 0; return 0;
} }

View file

@ -13,6 +13,7 @@
* (at your option) any later version. * (at your option) any later version.
*/ */
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/device.h> #include <linux/device.h>
@ -247,3 +248,4 @@ EXPORT_SYMBOL(videobuf_dvb_unregister);
* compile-command: "make DVB=1" * compile-command: "make DVB=1"
* End: * End:
*/ */

View file

@ -59,16 +59,18 @@ static int adcsync;
static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y) static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y)
{ {
input_report_abs(ts->idev, ABS_X, x); struct input_dev *idev = ts->idev;
input_report_abs(ts->idev, ABS_Y, y); input_report_abs(idev, ABS_X, x);
input_report_abs(ts->idev, ABS_PRESSURE, pressure); input_report_abs(idev, ABS_Y, y);
input_sync(ts->idev); input_report_abs(idev, ABS_PRESSURE, pressure);
input_sync(idev);
} }
static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts) static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts)
{ {
input_report_abs(ts->idev, ABS_PRESSURE, 0); struct input_dev *idev = ts->idev;
input_sync(ts->idev); input_report_abs(idev, ABS_PRESSURE, 0);
input_sync(idev);
} }
/* /*
@ -297,7 +299,7 @@ static void ucb1x00_ts_irq(int idx, void *id)
static int ucb1x00_ts_open(struct input_dev *idev) static int ucb1x00_ts_open(struct input_dev *idev)
{ {
struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; struct ucb1x00_ts *ts = idev->private;
int ret = 0; int ret = 0;
BUG_ON(ts->rtask); BUG_ON(ts->rtask);
@ -334,7 +336,7 @@ static int ucb1x00_ts_open(struct input_dev *idev)
*/ */
static void ucb1x00_ts_close(struct input_dev *idev) static void ucb1x00_ts_close(struct input_dev *idev)
{ {
struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; struct ucb1x00_ts *ts = idev->private;
if (ts->rtask) if (ts->rtask)
kthread_stop(ts->rtask); kthread_stop(ts->rtask);
@ -386,6 +388,7 @@ static int ucb1x00_ts_add(struct ucb1x00_dev *dev)
ts->ucb = dev->ucb; ts->ucb = dev->ucb;
ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC; ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC;
ts->idev->private = ts;
ts->idev->name = "Touchscreen panel"; ts->idev->name = "Touchscreen panel";
ts->idev->id.product = ts->ucb->id; ts->idev->id.product = ts->ucb->id;
ts->idev->open = ucb1x00_ts_open; ts->idev->open = ucb1x00_ts_open;

View file

@ -932,8 +932,9 @@ static void mmc_read_scrs(struct mmc_host *host)
sg_init_one(&sg, (u8*)card->raw_scr, 8); sg_init_one(&sg, (u8*)card->raw_scr, 8);
err = mmc_wait_for_req(host, &mrq); mmc_wait_for_req(host, &mrq);
if (err != MMC_ERR_NONE) {
if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE) {
mmc_card_set_dead(card); mmc_card_set_dead(card);
continue; continue;
} }

View file

@ -113,7 +113,7 @@ static int bi_write_complete(struct bio *bio, unsigned int bytes_done, int error
ClearPageUptodate(page); ClearPageUptodate(page);
SetPageError(page); SetPageError(page);
} }
ClearPageDirty(page); clear_page_dirty(page);
unlock_page(page); unlock_page(page);
page_cache_release(page); page_cache_release(page);
} while (bvec >= bio->bi_io_vec); } while (bvec >= bio->bi_io_vec);
@ -289,7 +289,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
BUG(); BUG();
} }
memcpy(page_address(page)+offset, buf, start_len); memcpy(page_address(page)+offset, buf, start_len);
SetPageDirty(page); set_page_dirty(page);
SetPageUptodate(page); SetPageUptodate(page);
buf += start_len; buf += start_len;
thislen = start_len; thislen = start_len;
@ -336,7 +336,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
} }
pagenr++; pagenr++;
pagecnt--; pagecnt--;
SetPageDirty(page); set_page_dirty(page);
SetPageUptodate(page); SetPageUptodate(page);
pagesc--; pagesc--;
thislen += PAGE_SIZE; thislen += PAGE_SIZE;
@ -357,7 +357,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
BUG(); BUG();
} }
memcpy(page_address(page), buf, end_len); memcpy(page_address(page), buf, end_len);
SetPageDirty(page); set_page_dirty(page);
SetPageUptodate(page); SetPageUptodate(page);
DEBUG(3, "blkmtd: write: writing out partial end\n"); DEBUG(3, "blkmtd: write: writing out partial end\n");
thislen += end_len; thislen += end_len;

View file

@ -1251,12 +1251,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
if (memcmp(promaddr, dev->dev_addr, 6) if (memcmp(promaddr, dev->dev_addr, 6)
|| !is_valid_ether_addr(dev->dev_addr)) { || !is_valid_ether_addr(dev->dev_addr)) {
#ifndef __powerpc__
if (is_valid_ether_addr(promaddr)) { if (is_valid_ether_addr(promaddr)) {
#else
if (!is_valid_ether_addr(dev->dev_addr)
&& is_valid_ether_addr(promaddr)) {
#endif
if (pcnet32_debug & NETIF_MSG_PROBE) { if (pcnet32_debug & NETIF_MSG_PROBE) {
printk(" warning: CSR address invalid,\n"); printk(" warning: CSR address invalid,\n");
printk(KERN_INFO " using instead PROM address of"); printk(KERN_INFO " using instead PROM address of");

View file

@ -818,7 +818,7 @@ uintptr_t VNextDescr; /* the virtual bus address of the next descriptor */
/* set the pointers right */ /* set the pointers right */
pDescr->VNextRxd = VNextDescr & 0xffffffffULL; pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
pDescr->pNextRxd = pNextDescr; pDescr->pNextRxd = pNextDescr;
pDescr->TcpSumStarts = 0; if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN;
/* advance one step */ /* advance one step */
pPrevDescr = pDescr; pPrevDescr = pDescr;
@ -2169,7 +2169,7 @@ rx_start:
} /* frame > SK_COPY_TRESHOLD */ } /* frame > SK_COPY_TRESHOLD */
#ifdef USE_SK_RX_CHECKSUM #ifdef USE_SK_RX_CHECKSUM
pMsg->csum = pRxd->TcpSums; pMsg->csum = pRxd->TcpSums & 0xffff;
pMsg->ip_summed = CHECKSUM_HW; pMsg->ip_summed = CHECKSUM_HW;
#else #else
pMsg->ip_summed = CHECKSUM_NONE; pMsg->ip_summed = CHECKSUM_NONE;

View file

@ -68,8 +68,8 @@
#define DRV_MODULE_NAME "tg3" #define DRV_MODULE_NAME "tg3"
#define PFX DRV_MODULE_NAME ": " #define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "3.43" #define DRV_MODULE_VERSION "3.44"
#define DRV_MODULE_RELDATE "Oct 24, 2005" #define DRV_MODULE_RELDATE "Dec 6, 2005"
#define TG3_DEF_MAC_MODE 0 #define TG3_DEF_MAC_MODE 0
#define TG3_DEF_RX_MODE 0 #define TG3_DEF_RX_MODE 0
@ -3565,12 +3565,15 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (!spin_trylock(&tp->tx_lock)) if (!spin_trylock(&tp->tx_lock))
return NETDEV_TX_LOCKED; return NETDEV_TX_LOCKED;
/* This is a hard error, log it. */
if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) { if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) {
if (!netif_queue_stopped(dev)) {
netif_stop_queue(dev); netif_stop_queue(dev);
/* This is a hard error, log it. */
printk(KERN_ERR PFX "%s: BUG! Tx Ring full when "
"queue awake!\n", dev->name);
}
spin_unlock(&tp->tx_lock); spin_unlock(&tp->tx_lock);
printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
dev->name);
return NETDEV_TX_BUSY; return NETDEV_TX_BUSY;
} }

View file

@ -542,10 +542,17 @@ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
void scsi_next_command(struct scsi_cmnd *cmd) void scsi_next_command(struct scsi_cmnd *cmd)
{ {
struct request_queue *q = cmd->device->request_queue; struct scsi_device *sdev = cmd->device;
struct request_queue *q = sdev->request_queue;
/* need to hold a reference on the device before we let go of the cmd */
get_device(&sdev->sdev_gendev);
scsi_put_command(cmd); scsi_put_command(cmd);
scsi_run_queue(q); scsi_run_queue(q);
/* ok to remove device now */
put_device(&sdev->sdev_gendev);
} }
void scsi_run_host_queues(struct Scsi_Host *shost) void scsi_run_host_queues(struct Scsi_Host *shost)

View file

@ -266,8 +266,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
/* /*
* if LLDD reports slave not present, don't clutter * if LLDD reports slave not present, don't clutter
* console with alloc failure messages * console with alloc failure messages
*/ */
if (ret == -ENXIO) if (ret == -ENXIO)
display_failure_msg = 0; display_failure_msg = 0;
@ -279,7 +277,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
out_device_destroy: out_device_destroy:
transport_destroy_device(&sdev->sdev_gendev); transport_destroy_device(&sdev->sdev_gendev);
scsi_free_queue(sdev->request_queue);
put_device(&sdev->sdev_gendev); put_device(&sdev->sdev_gendev);
out: out:
if (display_failure_msg) if (display_failure_msg)

View file

@ -516,7 +516,7 @@ pci_timedia_setup(struct serial_private *priv, struct pciserial_board *board,
break; break;
case 3: case 3:
offset = board->uart_offset; offset = board->uart_offset;
bar = 1; /* FALLTHROUGH */
case 4: /* BAR 2 */ case 4: /* BAR 2 */
case 5: /* BAR 3 */ case 5: /* BAR 3 */
case 6: /* BAR 4 */ case 6: /* BAR 4 */

View file

@ -121,7 +121,6 @@ struct bw2_par {
unsigned long fbsize; unsigned long fbsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
/** /**

View file

@ -206,7 +206,6 @@ struct cg14_par {
int mode; int mode;
int ramsize; int ramsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
static void __cg14_reset(struct cg14_par *par) static void __cg14_reset(struct cg14_par *par)

View file

@ -124,7 +124,6 @@ struct cg3_par {
unsigned long fbsize; unsigned long fbsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
/** /**

View file

@ -265,7 +265,6 @@ struct cg6_par {
unsigned long fbsize; unsigned long fbsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
static int cg6_sync(struct fb_info *info) static int cg6_sync(struct fb_info *info)
@ -612,7 +611,7 @@ static void cg6_chip_init(struct fb_info *info)
struct cg6_par *par = (struct cg6_par *) info->par; struct cg6_par *par = (struct cg6_par *) info->par;
struct cg6_tec __iomem *tec = par->tec; struct cg6_tec __iomem *tec = par->tec;
struct cg6_fbc __iomem *fbc = par->fbc; struct cg6_fbc __iomem *fbc = par->fbc;
u32 rev, conf, mode, tmp; u32 rev, conf, mode;
int i; int i;
/* Turn off stuff in the Transform Engine. */ /* Turn off stuff in the Transform Engine. */

View file

@ -359,7 +359,6 @@ struct ffb_par {
int prom_parent_node; int prom_parent_node;
int dac_rev; int dac_rev;
int board_type; int board_type;
struct list_head list;
}; };
static void FFBFifo(struct ffb_par *par, int n) static void FFBFifo(struct ffb_par *par, int n)

View file

@ -197,7 +197,6 @@ struct leo_par {
unsigned long fbsize; unsigned long fbsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
static void leo_wait(struct leo_lx_krn __iomem *lx_krn) static void leo_wait(struct leo_lx_krn __iomem *lx_krn)

View file

@ -140,7 +140,6 @@ struct p9100_par {
unsigned long fbsize; unsigned long fbsize;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
/** /**

View file

@ -125,7 +125,6 @@ struct tcx_par {
int lowdepth; int lowdepth;
struct sbus_dev *sdev; struct sbus_dev *sdev;
struct list_head list;
}; };
/* Reset control plane so that WID is 8-bit plane. */ /* Reset control plane so that WID is 8-bit plane. */
@ -444,7 +443,7 @@ static void tcx_init_one(struct sbus_dev *sdev)
tcx_reset(&all->info); tcx_reset(&all->info);
tcx_blank(0, &all->info); tcx_blank(FB_BLANK_UNBLANK, &all->info);
if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { if (fb_alloc_cmap(&all->info.cmap, 256, 0)) {
printk(KERN_ERR "tcx: Could not allocate color map.\n"); printk(KERN_ERR "tcx: Could not allocate color map.\n");

View file

@ -364,11 +364,12 @@ static int inotify_dev_get_wd(struct inotify_device *dev,
/* /*
* find_inode - resolve a user-given path to a specific inode and return a nd * find_inode - resolve a user-given path to a specific inode and return a nd
*/ */
static int find_inode(const char __user *dirname, struct nameidata *nd) static int find_inode(const char __user *dirname, struct nameidata *nd,
unsigned flags)
{ {
int error; int error;
error = __user_walk(dirname, LOOKUP_FOLLOW, nd); error = __user_walk(dirname, flags, nd);
if (error) if (error)
return error; return error;
/* you can only watch an inode if you have read permissions on it */ /* you can only watch an inode if you have read permissions on it */
@ -933,6 +934,7 @@ asmlinkage long sys_inotify_add_watch(int fd, const char __user *path, u32 mask)
struct file *filp; struct file *filp;
int ret, fput_needed; int ret, fput_needed;
int mask_add = 0; int mask_add = 0;
unsigned flags = 0;
filp = fget_light(fd, &fput_needed); filp = fget_light(fd, &fput_needed);
if (unlikely(!filp)) if (unlikely(!filp))
@ -944,7 +946,12 @@ asmlinkage long sys_inotify_add_watch(int fd, const char __user *path, u32 mask)
goto fput_and_out; goto fput_and_out;
} }
ret = find_inode(path, &nd); if (!(mask & IN_DONT_FOLLOW))
flags |= LOOKUP_FOLLOW;
if (mask & IN_ONLYDIR)
flags |= LOOKUP_DIRECTORY;
ret = find_inode(path, &nd, flags);
if (unlikely(ret)) if (unlikely(ret))
goto fput_and_out; goto fput_and_out;

View file

@ -245,7 +245,7 @@ listxattr(struct dentry *d, char __user *list, size_t size)
error = d->d_inode->i_op->listxattr(d, klist, size); error = d->d_inode->i_op->listxattr(d, klist, size);
} else { } else {
error = security_inode_listsecurity(d->d_inode, klist, size); error = security_inode_listsecurity(d->d_inode, klist, size);
if (size && error >= size) if (size && error > size)
error = -ERANGE; error = -ERANGE;
} }
if (error > 0) { if (error > 0) {

View file

@ -12,8 +12,3 @@
#define fixup_irq(x) (x) #define fixup_irq(x) (x)
/*
* This prototype is required for cascading of multiplexed interrupts.
* Since it doesn't exist elsewhere, we'll put it here for now.
*/
extern void do_IRQ(int irq, struct pt_regs *regs);

View file

@ -42,9 +42,9 @@ extern void __raw_writesb(void __iomem *addr, const void *data, int bytelen);
extern void __raw_writesw(void __iomem *addr, const void *data, int wordlen); extern void __raw_writesw(void __iomem *addr, const void *data, int wordlen);
extern void __raw_writesl(void __iomem *addr, const void *data, int longlen); extern void __raw_writesl(void __iomem *addr, const void *data, int longlen);
extern void __raw_readsb(void __iomem *addr, void *data, int bytelen); extern void __raw_readsb(const void __iomem *addr, void *data, int bytelen);
extern void __raw_readsw(void __iomem *addr, void *data, int wordlen); extern void __raw_readsw(const void __iomem *addr, void *data, int wordlen);
extern void __raw_readsl(void __iomem *addr, void *data, int longlen); extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
#define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile unsigned char __force *)(a) = (v)) #define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile unsigned char __force *)(a) = (v))
#define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile unsigned short __force *)(a) = (v)) #define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile unsigned short __force *)(a) = (v))

View file

@ -122,6 +122,7 @@ static inline void *phys_to_virt(unsigned long x)
*/ */
#define __pa(x) __virt_to_phys((unsigned long)(x)) #define __pa(x) __virt_to_phys((unsigned long)(x))
#define __va(x) ((void *)__phys_to_virt((unsigned long)(x))) #define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
/* /*
* Virtual <-> DMA view memory address translations * Virtual <-> DMA view memory address translations

View file

@ -13,6 +13,8 @@
# ifdef CONFIG_IA32_SUPPORT # ifdef CONFIG_IA32_SUPPORT
#define IA32_PAGE_OFFSET 0xc0000000
extern void ia32_cpu_init (void); extern void ia32_cpu_init (void);
extern void ia32_mem_init (void); extern void ia32_mem_init (void);
extern void ia32_gdt_init (void); extern void ia32_gdt_init (void);

View file

@ -17,8 +17,8 @@ typedef struct {
#define local_set(l, i) atomic64_set(&(l)->val, i) #define local_set(l, i) atomic64_set(&(l)->val, i)
#define local_inc(l) atomic64_inc(&(l)->val) #define local_inc(l) atomic64_inc(&(l)->val)
#define local_dec(l) atomic64_dec(&(l)->val) #define local_dec(l) atomic64_dec(&(l)->val)
#define local_add(l) atomic64_add(&(l)->val) #define local_add(i, l) atomic64_add((i), &(l)->val)
#define local_sub(l) atomic64_sub(&(l)->val) #define local_sub(i, l) atomic64_sub((i), &(l)->val)
/* Non-atomic variants, i.e., preemption disabled and won't be touched in interrupt, etc. */ /* Non-atomic variants, i.e., preemption disabled and won't be touched in interrupt, etc. */

View file

@ -3,15 +3,27 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
*/ */
#ifndef _ASM_IA64_SN_PCI_PCIDEV_H #ifndef _ASM_IA64_SN_PCI_PCIDEV_H
#define _ASM_IA64_SN_PCI_PCIDEV_H #define _ASM_IA64_SN_PCI_PCIDEV_H
#include <linux/pci.h> #include <linux/pci.h>
#define SN_PCIDEV_INFO(pci_dev) \ /*
((struct pcidev_info *)(pci_dev)->sysdata) * In ia64, pci_dev->sysdata must be a *pci_controller. To provide access to
* the pcidev_info structs for all devices under a controller, we extend the
* definition of pci_controller, via sn_pci_controller, to include a list
* of pcidev_info.
*/
struct sn_pci_controller {
struct pci_controller pci_controller;
struct list_head pcidev_info;
};
#define SN_PCI_CONTROLLER(dev) ((struct sn_pci_controller *) dev->sysdata)
#define SN_PCIDEV_INFO(dev) sn_pcidev_info_get(dev)
#define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \
(struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) (struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
@ -53,11 +65,13 @@ struct pcidev_info {
struct sn_irq_info *pdi_sn_irq_info; struct sn_irq_info *pdi_sn_irq_info;
struct sn_pcibus_provider *pdi_provider; /* sn pci ops */ struct sn_pcibus_provider *pdi_provider; /* sn pci ops */
struct pci_dev *host_pci_dev; /* host bus link */ struct pci_dev *host_pci_dev; /* host bus link */
struct list_head pdi_list; /* List of pcidev_info */
}; };
extern void sn_irq_fixup(struct pci_dev *pci_dev, extern void sn_irq_fixup(struct pci_dev *pci_dev,
struct sn_irq_info *sn_irq_info); struct sn_irq_info *sn_irq_info);
extern void sn_irq_unfixup(struct pci_dev *pci_dev); extern void sn_irq_unfixup(struct pci_dev *pci_dev);
extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *);
extern void sn_pci_controller_fixup(int segment, int busnum, extern void sn_pci_controller_fixup(int segment, int busnum,
struct pci_bus *bus); struct pci_bus *bus);
extern void sn_bus_store_sysdata(struct pci_dev *dev); extern void sn_bus_store_sysdata(struct pci_dev *dev);

View file

@ -201,6 +201,16 @@ static inline void __raw_write_unlock(raw_rwlock_t *x)
#endif /* !ASM_SUPPORTED */ #endif /* !ASM_SUPPORTED */
#define __raw_read_trylock(lock) generic__raw_read_trylock(lock) static inline int __raw_read_trylock(raw_rwlock_t *x)
{
union {
raw_rwlock_t lock;
__u32 word;
} old, new;
old.lock = new.lock = *x;
old.lock.write_lock = new.lock.write_lock = 0;
++new.lock.read_counter;
return (u32)ia64_cmpxchg4_acq((__u32 *)(x), new.word, old.word) == old.word;
}
#endif /* _ASM_IA64_SPINLOCK_H */ #endif /* _ASM_IA64_SPINLOCK_H */

View file

@ -220,7 +220,8 @@ extern int __hash_page_64K(unsigned long ea, unsigned long access,
unsigned int local); unsigned int local);
struct mm_struct; struct mm_struct;
extern int hash_huge_page(struct mm_struct *mm, unsigned long access, extern int hash_huge_page(struct mm_struct *mm, unsigned long access,
unsigned long ea, unsigned long vsid, int local); unsigned long ea, unsigned long vsid, int local,
unsigned long trap);
extern void htab_finish_init(void); extern void htab_finish_init(void);
extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend, extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,

View file

@ -26,6 +26,7 @@
#define CN_PROC_H #define CN_PROC_H
#include <linux/types.h> #include <linux/types.h>
#include <linux/time.h>
#include <linux/connector.h> #include <linux/connector.h>
/* /*
@ -65,6 +66,7 @@ struct proc_event {
PROC_EVENT_EXIT = 0x80000000 PROC_EVENT_EXIT = 0x80000000
} what; } what;
__u32 cpu; __u32 cpu;
struct timespec timestamp;
union { /* must be last field of proc_event struct */ union { /* must be last field of proc_event struct */
struct { struct {
__u32 err; __u32 err;

View file

@ -108,7 +108,7 @@
#define I2C_DRIVERID_SAA7127 72 /* saa7124 video encoder */ #define I2C_DRIVERID_SAA7127 72 /* saa7124 video encoder */
#define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */ #define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */
#define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */ #define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */
#define I2C_DRIVERID_I2C_IR 75 /* I2C InfraRed on Video boards */ #define I2C_DRIVERID_INFRARED 75 /* I2C InfraRed on Video boards */
#define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */
#define I2C_DRIVERID_EXP1 0xF1 #define I2C_DRIVERID_EXP1 0xF1

View file

@ -47,6 +47,8 @@ struct inotify_event {
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ #define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
/* special flags */ /* special flags */
#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */
#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */
#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ #define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */
#define IN_ISDIR 0x40000000 /* event occurred against dir */ #define IN_ISDIR 0x40000000 /* event occurred against dir */
#define IN_ONESHOT 0x80000000 /* only send event once */ #define IN_ONESHOT 0x80000000 /* only send event once */

View file

@ -37,6 +37,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/rcupdate.h> #include <linux/rcupdate.h>
#ifdef CONFIG_KPROBES
#include <asm/kprobes.h> #include <asm/kprobes.h>
/* kprobe_status settings */ /* kprobe_status settings */
@ -147,7 +148,6 @@ struct kretprobe_instance {
struct task_struct *task; struct task_struct *task;
}; };
#ifdef CONFIG_KPROBES
extern spinlock_t kretprobe_lock; extern spinlock_t kretprobe_lock;
extern int arch_prepare_kprobe(struct kprobe *p); extern int arch_prepare_kprobe(struct kprobe *p);
extern void arch_copy_kprobe(struct kprobe *p); extern void arch_copy_kprobe(struct kprobe *p);
@ -158,6 +158,7 @@ extern int arch_init_kprobes(void);
extern void show_registers(struct pt_regs *regs); extern void show_registers(struct pt_regs *regs);
extern kprobe_opcode_t *get_insn_slot(void); extern kprobe_opcode_t *get_insn_slot(void);
extern void free_insn_slot(kprobe_opcode_t *slot); extern void free_insn_slot(kprobe_opcode_t *slot);
extern void kprobes_inc_nmissed_count(struct kprobe *p);
/* Get the kprobe at this addr (if any) - called with preemption disabled */ /* Get the kprobe at this addr (if any) - called with preemption disabled */
struct kprobe *get_kprobe(void *addr); struct kprobe *get_kprobe(void *addr);
@ -195,6 +196,11 @@ void add_rp_inst(struct kretprobe_instance *ri);
void kprobe_flush_task(struct task_struct *tk); void kprobe_flush_task(struct task_struct *tk);
void recycle_rp_inst(struct kretprobe_instance *ri); void recycle_rp_inst(struct kretprobe_instance *ri);
#else /* CONFIG_KPROBES */ #else /* CONFIG_KPROBES */
#define __kprobes /**/
struct jprobe;
struct kretprobe;
static inline struct kprobe *kprobe_running(void) static inline struct kprobe *kprobe_running(void)
{ {
return NULL; return NULL;

View file

@ -202,12 +202,15 @@ static inline void list_del_rcu(struct list_head *entry)
* *
* The old entry will be replaced with the new entry atomically. * The old entry will be replaced with the new entry atomically.
*/ */
static inline void list_replace_rcu(struct list_head *old, struct list_head *new){ static inline void list_replace_rcu(struct list_head *old,
struct list_head *new)
{
new->next = old->next; new->next = old->next;
new->prev = old->prev; new->prev = old->prev;
smp_wmb(); smp_wmb();
new->next->prev = new; new->next->prev = new;
new->prev->next = new; new->prev->next = new;
old->prev = LIST_POISON2;
} }
/** /**
@ -578,6 +581,27 @@ static inline void hlist_del_init(struct hlist_node *n)
} }
} }
/*
* hlist_replace_rcu - replace old entry by new one
* @old : the element to be replaced
* @new : the new element to insert
*
* The old entry will be replaced with the new entry atomically.
*/
static inline void hlist_replace_rcu(struct hlist_node *old,
struct hlist_node *new)
{
struct hlist_node *next = old->next;
new->next = next;
new->pprev = old->pprev;
smp_wmb();
if (next)
new->next->pprev = &new->next;
*new->pprev = new;
old->pprev = LIST_POISON2;
}
static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
{ {
struct hlist_node *first = h->first; struct hlist_node *first = h->first;

View file

@ -163,7 +163,6 @@ extern unsigned int kobjsize(const void *objp);
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
#define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */
#define VM_INCOMPLETE 0x02000000 /* Strange partial PFN mapping marker */
#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS

Some files were not shown because too many files have changed in this diff Show more