Commit f0681259 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://lia64.bkbits.net/to-linus-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 6571a999 56263875
...@@ -544,6 +544,8 @@ source "drivers/pnp/Kconfig" ...@@ -544,6 +544,8 @@ source "drivers/pnp/Kconfig"
source "drivers/block/Kconfig" source "drivers/block/Kconfig"
source "drivers/ide/Kconfig"
source "drivers/ieee1394/Kconfig" source "drivers/ieee1394/Kconfig"
source "drivers/message/i2o/Kconfig" source "drivers/message/i2o/Kconfig"
...@@ -787,6 +789,10 @@ config IA64_EARLY_PRINTK_VGA ...@@ -787,6 +789,10 @@ config IA64_EARLY_PRINTK_VGA
bool "Early printk on VGA" bool "Early printk on VGA"
depends on IA64_EARLY_PRINTK depends on IA64_EARLY_PRINTK
config IA64_EARLY_PRINTK_SGI_SN
bool "Early printk on SGI SN serial console"
depends on IA64_EARLY_PRINTK && (IA64_GENERIC || IA64_SGI_SN2)
config DEBUG_SLAB config DEBUG_SLAB
bool "Debug memory allocations" bool "Debug memory allocations"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -27,7 +27,7 @@ GCC_MINOR_VERSION=$(shell $(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | ...@@ -27,7 +27,7 @@ GCC_MINOR_VERSION=$(shell $(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' |
GAS_STATUS=$(shell arch/ia64/scripts/check-gas $(CC) $(OBJDUMP)) GAS_STATUS=$(shell arch/ia64/scripts/check-gas $(CC) $(OBJDUMP))
arch-cppflags := $(shell arch/ia64/scripts/toolchain-flags $(CC) $(LD) $(OBJDUMP)) arch-cppflags := $(shell arch/ia64/scripts/toolchain-flags $(CC) $(OBJDUMP))
cflags-y += $(arch-cppflags) cflags-y += $(arch-cppflags)
AFLAGS += $(arch-cppflags) AFLAGS += $(arch-cppflags)
...@@ -66,7 +66,8 @@ core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ ...@@ -66,7 +66,8 @@ core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/
drivers-$(CONFIG_PCI) += arch/ia64/pci/ drivers-$(CONFIG_PCI) += arch/ia64/pci/
drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/
drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/
drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ \
arch/ia64/sn/
boot := arch/ia64/boot boot := arch/ia64/boot
......
...@@ -10,30 +10,38 @@ CONFIG_EXPERIMENTAL=y ...@@ -10,30 +10,38 @@ CONFIG_EXPERIMENTAL=y
# #
# General setup # General setup
# #
CONFIG_NET=y CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=16
# CONFIG_EMBEDDED is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
# #
# Loadable module support # Loadable module support
# #
CONFIG_MODULES=y CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
CONFIG_MODVERSIONS=y CONFIG_MODVERSIONS=y
# CONFIG_KMOD is not set CONFIG_KMOD=y
# #
# Processor type and features # Processor type and features
# #
CONFIG_IA64=y CONFIG_IA64=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_MMU=y
CONFIG_ITANIUM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_MCKINLEY is not set CONFIG_TIME_INTERPOLATION=y
# CONFIG_ITANIUM is not set
CONFIG_MCKINLEY=y
# CONFIG_IA64_GENERIC is not set # CONFIG_IA64_GENERIC is not set
CONFIG_IA64_DIG=y # CONFIG_IA64_DIG is not set
# CONFIG_IA64_HP_SIM is not set # CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_HP_ZX1 is not set CONFIG_IA64_HP_ZX1=y
# CONFIG_IA64_SGI_SN1 is not set
# CONFIG_IA64_SGI_SN2 is not set # CONFIG_IA64_SGI_SN2 is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set # CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set # CONFIG_IA64_PAGE_SIZE_8KB is not set
...@@ -43,54 +51,82 @@ CONFIG_ACPI=y ...@@ -43,54 +51,82 @@ CONFIG_ACPI=y
CONFIG_ACPI_EFI=y CONFIG_ACPI_EFI=y
CONFIG_ACPI_INTERPRETER=y CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_KERNEL_CONFIG=y CONFIG_ACPI_KERNEL_CONFIG=y
CONFIG_IA64_BRL_EMU=y CONFIG_IA64_L1_CACHE_SHIFT=7
# CONFIG_ITANIUM_BSTEP_SPECIFIC is not set # CONFIG_MCKINLEY_ASTEP_SPECIFIC is not set
CONFIG_IA64_L1_CACHE_SHIFT=6
# CONFIG_NUMA is not set # CONFIG_NUMA is not set
CONFIG_VIRTUAL_MEM_MAP=y
CONFIG_IA64_MCA=y CONFIG_IA64_MCA=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_IOSAPIC=y CONFIG_IOSAPIC=y
CONFIG_KCORE_ELF=y CONFIG_KCORE_ELF=y
CONFIG_FORCE_MAX_ZONEORDER=18 CONFIG_FORCE_MAX_ZONEORDER=18
# CONFIG_HUGETLB_PAGE is not set CONFIG_HUGETLB_PAGE=y
# CONFIG_HUGETLB_PAGE_SIZE_4GB is not set
# CONFIG_HUGETLB_PAGE_SIZE_1GB is not set
# CONFIG_HUGETLB_PAGE_SIZE_256MB is not set
CONFIG_HUGETLB_PAGE_SIZE_64MB=y
# CONFIG_HUGETLB_PAGE_SIZE_16MB is not set
# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
# CONFIG_HUGETLB_PAGE_SIZE_256KB is not set
CONFIG_IA64_PAL_IDLE=y
CONFIG_SMP=y CONFIG_SMP=y
# CONFIG_PREEMPT is not set
CONFIG_IA32_SUPPORT=y CONFIG_IA32_SUPPORT=y
CONFIG_COMPAT=y
CONFIG_PERFMON=y CONFIG_PERFMON=y
CONFIG_IA64_PALINFO=y CONFIG_IA64_PALINFO=y
CONFIG_EFI_VARS=y CONFIG_EFI_VARS=y
CONFIG_NR_CPUS=16 CONFIG_NR_CPUS=16
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set CONFIG_BINFMT_MISC=y
# #
# ACPI Support # ACPI Support
# #
CONFIG_ACPI_BOOT=y CONFIG_ACPI_BOOT=y
CONFIG_ACPI_BUTTON=y CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=m CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=m CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y CONFIG_ACPI_BUS=y
CONFIG_ACPI_POWER=y CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y CONFIG_ACPI_SYSTEM=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_LEGACY_PROC=y
CONFIG_PCI_NAMES=y CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set CONFIG_HOTPLUG=y
#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set
#
# PCMCIA/CardBus support
#
# CONFIG_PCMCIA is not set
# #
# Parallel port support # Parallel port support
# #
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
#
# Generic Driver Options
#
# CONFIG_FW_LOADER is not set
# #
# Memory Technology Devices (MTD) # Memory Technology Devices (MTD)
# #
# CONFIG_MTD is not set # CONFIG_MTD is not set
# #
# Plug and Play configuration # Plug and Play support
# #
# CONFIG_PNP is not set # CONFIG_PNP is not set
...@@ -104,7 +140,9 @@ CONFIG_PCI_NAMES=y ...@@ -104,7 +140,9 @@ CONFIG_PCI_NAMES=y
# CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
# #
# IEEE 1394 (FireWire) support (EXPERIMENTAL) # IEEE 1394 (FireWire) support (EXPERIMENTAL)
...@@ -124,64 +162,11 @@ CONFIG_BLK_DEV_LOOP=y ...@@ -124,64 +162,11 @@ CONFIG_BLK_DEV_LOOP=y
# #
# Fusion MPT device support # Fusion MPT device support
# #
# CONFIG_FUSION is not set CONFIG_FUSION=y
CONFIG_FUSION_BOOT=y
# CONFIG_FUSION_MAX_SGE=40
# ATA/ATAPI/MFM/RLL support # CONFIG_FUSION_ISENSE is not set
# # CONFIG_FUSION_CTL is not set
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_IDEDISK_STROKE is not set
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDEFLOPPY=y
CONFIG_BLK_DEV_IDESCSI=y
# CONFIG_IDE_TASK_IOCTL is not set
#
# IDE chipset support/bugfixes
#
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_BLK_DEV_GENERIC is not set
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDE_TCQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_PCI_AUTO is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_PCI_WIP is not set
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_NFORCE is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDEDMA_IVB is not set
# #
# SCSI support # SCSI support
...@@ -192,16 +177,17 @@ CONFIG_SCSI=y ...@@ -192,16 +177,17 @@ CONFIG_SCSI=y
# SCSI support type (disk, tape, CD-ROM) # SCSI support type (disk, tape, CD-ROM)
# #
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set CONFIG_CHR_DEV_ST=y
# CONFIG_CHR_DEV_OSST is not set CONFIG_CHR_DEV_OSST=y
# CONFIG_BLK_DEV_SR is not set CONFIG_BLK_DEV_SR=y
# CONFIG_CHR_DEV_SG is not set CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
# #
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
# #
# CONFIG_SCSI_MULTI_LUN is not set CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_REPORT_LUNS is not set CONFIG_SCSI_REPORT_LUNS=y
CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y CONFIG_SCSI_LOGGING=y
...@@ -212,57 +198,76 @@ CONFIG_SCSI_LOGGING=y ...@@ -212,57 +198,76 @@ CONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set # CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set CONFIG_SCSI_AIC7XXX_OLD=y
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set CONFIG_SCSI_MEGARAID=y
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
# CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set # CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_DMA is not set
# CONFIG_SCSI_EATA_PIO is not set # CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C7xx is not set CONFIG_SCSI_SYM53C8XX_2=y
# CONFIG_SCSI_SYM53C8XX_2 is not set CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
# CONFIG_SCSI_NCR53C8XX is not set CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
# CONFIG_SCSI_SYM53C8XX is not set CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
# CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set # CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_QLOGIC_ISP is not set # CONFIG_SCSI_QLOGIC_ISP 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_DC395x is not set
# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DEBUG is not set
#
# Networking support
#
CONFIG_NET=y
# #
# Networking options # Networking options
# #
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y # CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set # CONFIG_NETLINK_DEV is not set
# CONFIG_NETFILTER is not set CONFIG_NETFILTER=y
CONFIG_FILTER=y # CONFIG_NETFILTER_DEBUG is not set
CONFIG_UNIX=y CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set # CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set # CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set # CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set # CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set # CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set # CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_CONNTRACK is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
CONFIG_IP_NF_ARPTABLES=y
# CONFIG_IP_NF_ARPFILTER is not set
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_XFRM_USER is not set
# #
# SCTP Configuration (EXPERIMENTAL) # SCTP Configuration (EXPERIMENTAL)
...@@ -288,8 +293,9 @@ CONFIG_IPV6_SCTP__=y ...@@ -288,8 +293,9 @@ CONFIG_IPV6_SCTP__=y
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# #
# Network device support # Network testing
# #
# CONFIG_NET_PKTGEN is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
# #
...@@ -297,7 +303,7 @@ CONFIG_NETDEVICES=y ...@@ -297,7 +303,7 @@ CONFIG_NETDEVICES=y
# #
# CONFIG_ARCNET is not set # CONFIG_ARCNET is not set
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set CONFIG_BONDING=y
# CONFIG_EQUALIZER is not set # CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set # CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set # CONFIG_ETHERTAP is not set
...@@ -306,11 +312,10 @@ CONFIG_DUMMY=y ...@@ -306,11 +312,10 @@ CONFIG_DUMMY=y
# Ethernet (10 or 100Mbit) # Ethernet (10 or 100Mbit)
# #
CONFIG_NET_ETHERNET=y CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set # CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set # CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# #
# Tulip family network device support # Tulip family network device support
...@@ -319,9 +324,12 @@ CONFIG_NET_ETHERNET=y ...@@ -319,9 +324,12 @@ CONFIG_NET_ETHERNET=y
# CONFIG_HP100 is not set # CONFIG_HP100 is not set
CONFIG_NET_PCI=y CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set # CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_DGRS is not set # CONFIG_DGRS is not set
CONFIG_EEPRO100=y CONFIG_EEPRO100=y
# CONFIG_EEPRO100_PIO is not set
# CONFIG_E100 is not set # CONFIG_E100 is not set
# CONFIG_FEALNX is not set # CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set # CONFIG_NATSEMI is not set
...@@ -333,19 +341,25 @@ CONFIG_EEPRO100=y ...@@ -333,19 +341,25 @@ CONFIG_EEPRO100=y
# CONFIG_SUNDANCE is not set # CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set # CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set # CONFIG_VIA_RHINE is not set
# CONFIG_NET_POCKET is not set
# #
# Ethernet (1000 Mbit) # Ethernet (1000 Mbit)
# #
# CONFIG_ACENIC is not set # CONFIG_ACENIC is not set
# CONFIG_DL2K is not set # CONFIG_DL2K is not set
# CONFIG_E1000 is not set CONFIG_E1000=y
# CONFIG_E1000_NAPI is not set
# CONFIG_NS83820 is not set # CONFIG_NS83820 is not set
# 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_SK98LIN is not set # CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set CONFIG_TIGON3=m
#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set # CONFIG_FDDI is not set
# CONFIG_HIPPI is not set # CONFIG_HIPPI is not set
# CONFIG_PPP is not set # CONFIG_PPP is not set
...@@ -357,9 +371,8 @@ CONFIG_EEPRO100=y ...@@ -357,9 +371,8 @@ CONFIG_EEPRO100=y
# CONFIG_NET_RADIO is not set # CONFIG_NET_RADIO is not set
# #
# Token Ring devices # Token Ring devices (depends on LLC=y)
# #
# CONFIG_TR is not set
# CONFIG_NET_FC is not set # CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set # CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
...@@ -393,10 +406,10 @@ CONFIG_INPUT=y ...@@ -393,10 +406,10 @@ CONFIG_INPUT=y
# Userland interfaces # Userland interfaces
# #
CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set CONFIG_INPUT_JOYDEV=y
# CONFIG_INPUT_TSDEV is not set # CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set # CONFIG_INPUT_EVBUG is not set
...@@ -407,26 +420,19 @@ CONFIG_INPUT_EVDEV=y ...@@ -407,26 +420,19 @@ CONFIG_INPUT_EVDEV=y
# CONFIG_GAMEPORT is not set # CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y CONFIG_SERIO=y
CONFIG_SERIO_I8042=y # CONFIG_SERIO_I8042 is not set
CONFIG_SERIO_SERPORT=y # CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
# #
# Input Device Drivers # Input Device Drivers
# #
CONFIG_INPUT_KEYBOARD=y # CONFIG_INPUT_KEYBOARD is not set
CONFIG_KEYBOARD_ATKBD=y # CONFIG_INPUT_MOUSE is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y # CONFIG_INPUT_MISC is not set
# CONFIG_INPUT_PCSPKR is not set
# CONFIG_INPUT_UINPUT is not set
# #
# Character devices # Character devices
...@@ -441,12 +447,9 @@ CONFIG_HW_CONSOLE=y ...@@ -441,12 +447,9 @@ CONFIG_HW_CONSOLE=y
# #
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_ACPI=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set CONFIG_SERIAL_8250_HCDP=y
CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_MULTIPORT is not set
# CONFIG_SERIAL_8250_RSA is not set
# #
# Non-8250 serial port support # Non-8250 serial port support
...@@ -459,14 +462,16 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -459,14 +462,16 @@ CONFIG_UNIX98_PTY_COUNT=256
# #
# I2C support # I2C support
# #
CONFIG_I2C=y # CONFIG_I2C is not set
CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_ELV is not set #
# CONFIG_I2C_VELLEMAN is not set # I2C Hardware Sensors Mainboard support
# CONFIG_SCx200_ACB is not set #
# CONFIG_I2C_ALGOPCF is not set
CONFIG_I2C_CHARDEV=y #
CONFIG_I2C_PROC=y # I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
# #
# Mice # Mice
...@@ -474,13 +479,17 @@ CONFIG_I2C_PROC=y ...@@ -474,13 +479,17 @@ CONFIG_I2C_PROC=y
# CONFIG_BUSMOUSE is not set # CONFIG_BUSMOUSE is not set
# CONFIG_QIC02_TAPE is not set # CONFIG_QIC02_TAPE is not set
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
# #
# Watchdog Cards # Watchdog Cards
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set # CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set # CONFIG_GEN_RTC is not set
CONFIG_EFI_RTC=y CONFIG_EFI_RTC=y
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
...@@ -491,77 +500,97 @@ CONFIG_EFI_RTC=y ...@@ -491,77 +500,97 @@ CONFIG_EFI_RTC=y
# Ftape, the floppy tape device driver # Ftape, the floppy tape device driver
# #
# CONFIG_FTAPE is not set # CONFIG_FTAPE is not set
CONFIG_AGP=y CONFIG_AGP=m
CONFIG_AGP_INTEL=y CONFIG_AGP_I460=m
CONFIG_AGP_I810=y CONFIG_AGP_HP_ZX1=m
CONFIG_AGP_VIA=y
CONFIG_AGP_AMD=y
CONFIG_AGP_SIS=y
CONFIG_AGP_ALI=y
CONFIG_AGP_SWORKS=y
# CONFIG_AGP_AMD_8151 is not set
CONFIG_AGP_I460=y
CONFIG_AGP_HP_ZX1=y
CONFIG_DRM=y CONFIG_DRM=y
CONFIG_DRM_TDFX=y # CONFIG_DRM_TDFX is not set
CONFIG_DRM_R128=y # CONFIG_DRM_GAMMA is not set
CONFIG_DRM_RADEON=y # CONFIG_DRM_R128 is not set
CONFIG_DRM_I810=y CONFIG_DRM_RADEON=m
CONFIG_DRM_I830=y # CONFIG_DRM_MGA is not set
CONFIG_DRM_MGA=y
# CONFIG_RAW_DRIVER is not set # CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
# #
# Multimedia devices # Multimedia devices
# #
# CONFIG_VIDEO_DEV is not set # CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
# #
# File systems # File systems
# #
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
# CONFIG_EXT2_FS_POSIX_ACL is not set
# CONFIG_EXT2_FS_SECURITY is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=y CONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
CONFIG_UDF_FS=y
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
CONFIG_HUGETLBFS=y
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set # CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set # CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set # CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set # CONFIG_BFS_FS is not set
CONFIG_EXT3_FS=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_EFS_FS is not set # CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set # CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set # CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set # CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
# CONFIG_XFS_FS is not set
# #
# Network File Systems # Network File Systems
# #
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y CONFIG_NFS_FS=y
CONFIG_NFS_V3=y CONFIG_NFS_V3=y
CONFIG_NFS_V4=y CONFIG_NFS_V4=y
...@@ -569,13 +598,16 @@ CONFIG_NFSD=y ...@@ -569,13 +598,16 @@ CONFIG_NFSD=y
CONFIG_NFSD_V3=y CONFIG_NFSD_V3=y
# CONFIG_NFSD_V4 is not set # CONFIG_NFSD_V4 is not set
# CONFIG_NFSD_TCP is not set # CONFIG_NFSD_TCP is not set
CONFIG_SUNRPC=y
CONFIG_LOCKD=y CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y CONFIG_EXPORTFS=y
# CONFIG_CIFS is not set CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
# CONFIG_SMB_FS is not set # CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set # CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set
# #
...@@ -593,6 +625,7 @@ CONFIG_MSDOS_PARTITION=y ...@@ -593,6 +625,7 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set # CONFIG_LDM_PARTITION is not set
# CONFIG_NEC98_PARTITION is not set
# CONFIG_SGI_PARTITION is not set # CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set # CONFIG_SUN_PARTITION is not set
...@@ -603,53 +636,84 @@ CONFIG_NLS=y ...@@ -603,53 +636,84 @@ CONFIG_NLS=y
# Native Language Support # Native Language Support
# #
CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set CONFIG_NLS_CODEPAGE_737=y
# CONFIG_NLS_CODEPAGE_775 is not set CONFIG_NLS_CODEPAGE_775=y
# CONFIG_NLS_CODEPAGE_850 is not set CONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set CONFIG_NLS_CODEPAGE_852=y
# CONFIG_NLS_CODEPAGE_855 is not set CONFIG_NLS_CODEPAGE_855=y
# CONFIG_NLS_CODEPAGE_857 is not set CONFIG_NLS_CODEPAGE_857=y
# CONFIG_NLS_CODEPAGE_860 is not set CONFIG_NLS_CODEPAGE_860=y
# CONFIG_NLS_CODEPAGE_861 is not set CONFIG_NLS_CODEPAGE_861=y
# CONFIG_NLS_CODEPAGE_862 is not set CONFIG_NLS_CODEPAGE_862=y
# CONFIG_NLS_CODEPAGE_863 is not set CONFIG_NLS_CODEPAGE_863=y
# CONFIG_NLS_CODEPAGE_864 is not set CONFIG_NLS_CODEPAGE_864=y
# CONFIG_NLS_CODEPAGE_865 is not set CONFIG_NLS_CODEPAGE_865=y
# CONFIG_NLS_CODEPAGE_866 is not set CONFIG_NLS_CODEPAGE_866=y
# CONFIG_NLS_CODEPAGE_869 is not set CONFIG_NLS_CODEPAGE_869=y
# CONFIG_NLS_CODEPAGE_936 is not set CONFIG_NLS_CODEPAGE_936=y
# CONFIG_NLS_CODEPAGE_950 is not set CONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not set CONFIG_NLS_CODEPAGE_932=y
# CONFIG_NLS_CODEPAGE_949 is not set CONFIG_NLS_CODEPAGE_949=y
# CONFIG_NLS_CODEPAGE_874 is not set CONFIG_NLS_CODEPAGE_874=y
# CONFIG_NLS_ISO8859_8 is not set CONFIG_NLS_ISO8859_8=y
# CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_CODEPAGE_1251=y
# CONFIG_NLS_ISO8859_1 is not set CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set CONFIG_NLS_ISO8859_2=y
# CONFIG_NLS_ISO8859_3 is not set CONFIG_NLS_ISO8859_3=y
# CONFIG_NLS_ISO8859_4 is not set CONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not set CONFIG_NLS_ISO8859_5=y
# CONFIG_NLS_ISO8859_6 is not set CONFIG_NLS_ISO8859_6=y
# CONFIG_NLS_ISO8859_7 is not set CONFIG_NLS_ISO8859_7=y
# CONFIG_NLS_ISO8859_9 is not set CONFIG_NLS_ISO8859_9=y
# CONFIG_NLS_ISO8859_13 is not set CONFIG_NLS_ISO8859_13=y
# CONFIG_NLS_ISO8859_14 is not set CONFIG_NLS_ISO8859_14=y
# CONFIG_NLS_ISO8859_15 is not set CONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_R is not set CONFIG_NLS_KOI8_R=y
# CONFIG_NLS_KOI8_U is not set CONFIG_NLS_KOI8_U=y
# CONFIG_NLS_UTF8 is not set CONFIG_NLS_UTF8=y
# #
# Console drivers # Graphics support
#
CONFIG_FB=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_RIVA=m
# CONFIG_FB_MATROX is not set
CONFIG_FB_RADEON=y
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
# #
CONFIG_VGA_CONSOLE=y CONFIG_VGA_CONSOLE=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_PCI_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# #
# Frame-buffer support # Logo configuration
# #
# CONFIG_FB is not set CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
# #
# Sound # Sound
...@@ -659,31 +723,62 @@ CONFIG_SOUND=y ...@@ -659,31 +723,62 @@ CONFIG_SOUND=y
# #
# Advanced Linux Sound Architecture # Advanced Linux Sound Architecture
# #
# CONFIG_SND is not set CONFIG_SND=m
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
# CONFIG_SND_OSSEMUL is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
#
# Generic devices
#
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
#
# PCI devices
#
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_MAESTRO3 is not set
CONFIG_SND_FM801=m
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VX222 is not set
#
# ALSA USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# #
# Open Sound System # Open Sound System
# #
CONFIG_SOUND_PRIME=y # CONFIG_SOUND_PRIME is not set
# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
CONFIG_SOUND_CS4281=y
# CONFIG_SOUND_ES1370 is not set
# CONFIG_SOUND_ES1371 is not set
# CONFIG_SOUND_ESSSOLO1 is not set
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
# #
# USB support # USB support
...@@ -694,17 +789,16 @@ CONFIG_USB=y ...@@ -694,17 +789,16 @@ CONFIG_USB=y
# #
# Miscellaneous USB options # Miscellaneous USB options
# #
CONFIG_USB_DEVICEFS=y # CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_LONG_TIMEOUT is not set CONFIG_USB_BANDWIDTH=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_DYNAMIC_MINORS is not set
# #
# USB Host Controller Drivers # USB Host Controller Drivers
# #
# CONFIG_USB_EHCI_HCD is not set CONFIG_USB_EHCI_HCD=m
# CONFIG_USB_OHCI_HCD is not set CONFIG_USB_OHCI_HCD=y
CONFIG_USB_UHCI_HCD_ALT=y CONFIG_USB_UHCI_HCD=m
# #
# USB Device Class drivers # USB Device Class drivers
...@@ -725,6 +819,7 @@ CONFIG_USB_HIDINPUT=y ...@@ -725,6 +819,7 @@ CONFIG_USB_HIDINPUT=y
CONFIG_USB_HIDDEV=y CONFIG_USB_HIDDEV=y
# CONFIG_USB_AIPTEK is not set # CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set # CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set # CONFIG_USB_POWERMATE is not set
# CONFIG_USB_XPAD is not set # CONFIG_USB_XPAD is not set
...@@ -748,8 +843,8 @@ CONFIG_USB_HIDDEV=y ...@@ -748,8 +843,8 @@ CONFIG_USB_HIDDEV=y
# #
# USB Network adaptors # USB Network adaptors
# #
# CONFIG_USB_AX8817X is not set
# CONFIG_USB_CATC is not set # CONFIG_USB_CATC is not set
# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_KAWETH is not set # CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set # CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set # CONFIG_USB_RTL8150 is not set
...@@ -772,17 +867,17 @@ CONFIG_USB_HIDDEV=y ...@@ -772,17 +867,17 @@ CONFIG_USB_HIDDEV=y
# CONFIG_USB_RIO500 is not set # CONFIG_USB_RIO500 is not set
# CONFIG_USB_BRLVGER is not set # CONFIG_USB_BRLVGER is not set
# CONFIG_USB_LCD is not set # CONFIG_USB_LCD is not set
# CONFIG_USB_TEST is not set # CONFIG_USB_GADGET is not set
# #
# Library routines # Bluetooth support
# #
# CONFIG_CRC32 is not set # CONFIG_BT is not set
# #
# Bluetooth support # Library routines
# #
# CONFIG_BT is not set CONFIG_CRC32=y
# #
# Kernel hacking # Kernel hacking
...@@ -794,18 +889,17 @@ CONFIG_KALLSYMS=y ...@@ -794,18 +889,17 @@ CONFIG_KALLSYMS=y
CONFIG_IA64_PRINT_HAZARDS=y CONFIG_IA64_PRINT_HAZARDS=y
# CONFIG_DISABLE_VHPT is not set # CONFIG_DISABLE_VHPT is not set
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_IA64_EARLY_PRINTK=y # CONFIG_IA64_EARLY_PRINTK is not set
# CONFIG_IA64_EARLY_PRINTK_UART is not set
CONFIG_IA64_EARLY_PRINTK_VGA=y
# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set # CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set # CONFIG_IA64_DEBUG_IRQ is not set
# #
# Security options # Security options
# #
CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY is not set
# #
# Cryptographic options # Cryptographic options
......
...@@ -575,59 +575,6 @@ acpi_find_rsdp (void) ...@@ -575,59 +575,6 @@ acpi_find_rsdp (void)
} }
#ifdef CONFIG_SERIAL_8250_ACPI
#include <linux/acpi_serial.h>
static int __init
acpi_parse_spcr (unsigned long phys_addr, unsigned long size)
{
acpi_ser_t *spcr;
unsigned int gsi;
if (!phys_addr || !size)
return -EINVAL;
if (!iosapic_register_intr)
return -ENODEV;
/*
* ACPI is able to describe serial ports that live at non-standard
* memory addresses and use non-standard interrupts, either via
* direct SAPIC mappings or via PCI interrupts. We handle interrupt
* routing for SAPIC-based (non-PCI) devices here. Interrupt routing
* for PCI devices will be handled when processing the PCI Interrupt
* Routing Table (PRT).
*/
spcr = (acpi_ser_t *) __va(phys_addr);
setup_serial_acpi(spcr);
if (spcr->length < sizeof(acpi_ser_t))
/* Table not long enough for full info, thus no interrupt */
return -ENODEV;
if ((spcr->base_addr.space_id != ACPI_SERIAL_PCICONF_SPACE) &&
(spcr->int_type == ACPI_SERIAL_INT_SAPIC))
{
int vector;
/* We have a UART in memory space with an SAPIC interrupt */
gsi = ( (spcr->global_int[3] << 24) |
(spcr->global_int[2] << 16) |
(spcr->global_int[1] << 8) |
(spcr->global_int[0]) );
vector = iosapic_register_intr(gsi, IOSAPIC_POL_HIGH, IOSAPIC_EDGE);
}
return 0;
}
#endif /* CONFIG_SERIAL_8250_ACPI */
int __init int __init
acpi_boot_init (void) acpi_boot_init (void)
{ {
...@@ -682,16 +629,6 @@ acpi_boot_init (void) ...@@ -682,16 +629,6 @@ acpi_boot_init (void)
if (acpi_table_parse(ACPI_FADT, acpi_parse_fadt) < 1) if (acpi_table_parse(ACPI_FADT, acpi_parse_fadt) < 1)
printk(KERN_ERR PREFIX "Can't find FADT\n"); printk(KERN_ERR PREFIX "Can't find FADT\n");
#ifdef CONFIG_SERIAL_8250_ACPI
/*
* TBD: Need phased approach to table parsing (only do those absolutely
* required during boot-up). Recommend expanding concept of fix-
* feature devices (LDM) to include table-based devices such as
* serial ports, EC, SMBus, etc.
*/
acpi_table_parse(ACPI_SPCR, acpi_parse_spcr);
#endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
smp_boot_data.cpu_count = available_cpus; smp_boot_data.cpu_count = available_cpus;
if (available_cpus == 0) { if (available_cpus == 0) {
......
...@@ -46,7 +46,7 @@ static efi_runtime_services_t *runtime; ...@@ -46,7 +46,7 @@ static efi_runtime_services_t *runtime;
* prior to creating their own entries under /proc/efi. * prior to creating their own entries under /proc/efi.
*/ */
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
struct proc_dir_entry *efi_dir = NULL; struct proc_dir_entry *efi_dir;
#endif #endif
static unsigned long mem_limit = ~0UL; static unsigned long mem_limit = ~0UL;
......
...@@ -119,7 +119,7 @@ typedef struct _efivar_entry_t { ...@@ -119,7 +119,7 @@ typedef struct _efivar_entry_t {
*/ */
static spinlock_t efivars_lock = SPIN_LOCK_UNLOCKED; static spinlock_t efivars_lock = SPIN_LOCK_UNLOCKED;
static LIST_HEAD(efivar_list); static LIST_HEAD(efivar_list);
static struct proc_dir_entry *efi_vars_dir = NULL; static struct proc_dir_entry *efi_vars_dir;
#define efivar_entry(n) list_entry(n, efivar_entry_t, list) #define efivar_entry(n) list_entry(n, efivar_entry_t, list)
......
...@@ -199,7 +199,7 @@ GLOBAL_ENTRY(__kernel_sigtramp) ...@@ -199,7 +199,7 @@ GLOBAL_ENTRY(__kernel_sigtramp)
cmp.ne p8,p0=r15,r0 // do we need to switch the rbs? cmp.ne p8,p0=r15,r0 // do we need to switch the rbs?
mov.m r9=ar.bsp // fetch ar.bsp mov.m r9=ar.bsp // fetch ar.bsp
.spillsp.p p8, ar.rnat, RNAT_OFF+SIGCONTEXT_OFF .spillsp.p p8, ar.rnat, RNAT_OFF+SIGCONTEXT_OFF
(p8) br.cond.spnt setup_rbs // yup -> (clobbers r14, r15, and r16) (p8) br.cond.spnt setup_rbs // yup -> (clobbers p8, r14-r16, and r18-r20)
back_from_setup_rbs: back_from_setup_rbs:
alloc r8=ar.pfs,0,0,3,0 alloc r8=ar.pfs,0,0,3,0
ld8 out0=[base0],16 // load arg0 (signum) ld8 out0=[base0],16 // load arg0 (signum)
...@@ -268,26 +268,30 @@ back_from_restore_rbs: ...@@ -268,26 +268,30 @@ back_from_restore_rbs:
setup_rbs: setup_rbs:
mov ar.rsc=0 // put RSE into enforced lazy mode mov ar.rsc=0 // put RSE into enforced lazy mode
;; ;;
.save ar.rnat, r16 .save ar.rnat, r19
mov r16=ar.rnat // save RNaT before switching backing store area mov r19=ar.rnat // save RNaT before switching backing store area
adds r14=(RNAT_OFF+SIGCONTEXT_OFF),sp adds r14=(RNAT_OFF+SIGCONTEXT_OFF),sp
mov r18=ar.bspstore
mov ar.bspstore=r15 // switch over to new register backing store area mov ar.bspstore=r15 // switch over to new register backing store area
;; ;;
.spillsp ar.rnat, RNAT_OFF+SIGCONTEXT_OFF .spillsp ar.rnat, RNAT_OFF+SIGCONTEXT_OFF
st8 [r14]=r16 // save sc_ar_rnat st8 [r14]=r19 // save sc_ar_rnat
.body .body
adds r14=(LOADRS_OFF+SIGCONTEXT_OFF),sp
mov.m r16=ar.bsp // sc_loadrs <- (new bsp - new bspstore) << 16 mov.m r16=ar.bsp // sc_loadrs <- (new bsp - new bspstore) << 16
adds r14=(LOADRS_OFF+SIGCONTEXT_OFF),sp
;; ;;
invala invala
sub r15=r16,r15 sub r15=r16,r15
extr.u r20=r18,3,6
;; ;;
mov ar.rsc=0xf // set RSE into eager mode, pl 3
cmp.eq p8,p0=63,r20
shl r15=r15,16 shl r15=r15,16
;; ;;
st8 [r14]=r15 // save sc_loadrs st8 [r14]=r15 // save sc_loadrs
mov ar.rsc=0xf // set RSE into eager mode, pl 3 (p8) st8 [r18]=r19 // if bspstore points at RNaT slot, store RNaT there now
.restore sp // pop .prologue .restore sp // pop .prologue
br.cond.sptk back_from_setup_rbs br.cond.sptk back_from_setup_rbs
......
...@@ -144,13 +144,13 @@ start_ap: ...@@ -144,13 +144,13 @@ start_ap:
movl r3=task_for_booting_cpu movl r3=task_for_booting_cpu
;; ;;
ld8 r3=[r3] ld8 r3=[r3]
movl r2=init_thread_union movl r2=init_task
;; ;;
cmp.eq isBP,isAP=r3,r0 cmp.eq isBP,isAP=r3,r0
;; ;;
(isAP) mov r2=r3 (isAP) mov r2=r3
#else #else
movl r2=init_thread_union movl r2=init_task
cmp.eq isBP,isAP=r0,r0 cmp.eq isBP,isAP=r0,r0
#endif #endif
;; ;;
......
...@@ -26,17 +26,17 @@ struct mm_struct init_mm = INIT_MM(init_mm); ...@@ -26,17 +26,17 @@ struct mm_struct init_mm = INIT_MM(init_mm);
* We need to make sure that this is properly aligned due to the way process stacks are * We need to make sure that this is properly aligned due to the way process stacks are
* handled. This is done by having a special ".data.init_task" section... * handled. This is done by having a special ".data.init_task" section...
*/ */
#define init_thread_info init_thread_union.s.thread_info #define init_thread_info init_task_mem.s.thread_info
union init_thread { static union {
struct { struct {
struct task_struct task; struct task_struct task;
struct thread_info thread_info; struct thread_info thread_info;
} s; } s;
unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)]; unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)];
} init_thread_union __attribute__((section(".data.init_task"))) = {{ } init_task_mem __attribute__((section(".data.init_task"))) = {{
.task = INIT_TASK(init_thread_union.s.task), .task = INIT_TASK(init_task_mem.s.task),
.thread_info = INIT_THREAD_INFO(init_thread_union.s.task) .thread_info = INIT_THREAD_INFO(init_task_mem.s.task)
}}; }};
asm (".global init_task; init_task = init_thread_union"); asm (".global init_task; init_task = init_task_mem");
...@@ -382,7 +382,7 @@ iosapic_startup_edge_irq (unsigned int irq) ...@@ -382,7 +382,7 @@ iosapic_startup_edge_irq (unsigned int irq)
static void static void
iosapic_ack_edge_irq (unsigned int irq) iosapic_ack_edge_irq (unsigned int irq)
{ {
irq_desc_t *idesc = irq_desc(irq); irq_desc_t *idesc = irq_descp(irq);
/* /*
* Once we have recorded IRQ_PENDING already, we can mask the * Once we have recorded IRQ_PENDING already, we can mask the
* interrupt for real. This prevents IRQ storms from unhandled * interrupt for real. This prevents IRQ storms from unhandled
...@@ -478,7 +478,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, ...@@ -478,7 +478,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery,
else else
irq_type = &irq_type_iosapic_level; irq_type = &irq_type_iosapic_level;
idesc = irq_desc(vector); idesc = irq_descp(vector);
if (idesc->handler != irq_type) { if (idesc->handler != irq_type) {
if (idesc->handler != &no_irq_type) if (idesc->handler != &no_irq_type)
printk(KERN_WARNING "%s: changing vector %d from %s to %s\n", printk(KERN_WARNING "%s: changing vector %d from %s to %s\n",
...@@ -724,7 +724,7 @@ iosapic_parse_prt (void) ...@@ -724,7 +724,7 @@ iosapic_parse_prt (void)
* If vector was previously initialized to a different * If vector was previously initialized to a different
* handler, re-initialize. * handler, re-initialize.
*/ */
idesc = irq_desc(vector); idesc = irq_descp(vector);
if (idesc->handler != irq_type) if (idesc->handler != irq_type)
register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, IOSAPIC_POL_LOW, register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, IOSAPIC_POL_LOW,
IOSAPIC_LEVEL); IOSAPIC_LEVEL);
......
...@@ -74,7 +74,7 @@ irq_desc_t _irq_desc[NR_IRQS] __cacheline_aligned = { ...@@ -74,7 +74,7 @@ irq_desc_t _irq_desc[NR_IRQS] __cacheline_aligned = {
}; };
#ifdef CONFIG_IA64_GENERIC #ifdef CONFIG_IA64_GENERIC
struct irq_desc * __ia64_irq_desc (unsigned int irq) irq_desc_t * __ia64_irq_desc (unsigned int irq)
{ {
return _irq_desc + irq; return _irq_desc + irq;
} }
...@@ -171,7 +171,7 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -171,7 +171,7 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n'); seq_putc(p, '\n');
for (i = 0 ; i < NR_IRQS ; i++) { for (i = 0 ; i < NR_IRQS ; i++) {
idesc = irq_desc(i); idesc = irq_descp(i);
spin_lock_irqsave(&idesc->lock, flags); spin_lock_irqsave(&idesc->lock, flags);
action = idesc->action; action = idesc->action;
if (!action) if (!action)
...@@ -218,7 +218,7 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -218,7 +218,7 @@ int show_interrupts(struct seq_file *p, void *v)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
inline void synchronize_irq(unsigned int irq) inline void synchronize_irq(unsigned int irq)
{ {
while (irq_desc(irq)->status & IRQ_INPROGRESS) while (irq_descp(irq)->status & IRQ_INPROGRESS)
cpu_relax(); cpu_relax();
} }
#endif #endif
...@@ -352,7 +352,7 @@ static void note_interrupt(int irq, irq_desc_t *desc, irqreturn_t action_ret) ...@@ -352,7 +352,7 @@ static void note_interrupt(int irq, irq_desc_t *desc, irqreturn_t action_ret)
inline void disable_irq_nosync(unsigned int irq) inline void disable_irq_nosync(unsigned int irq)
{ {
irq_desc_t *desc = irq_desc(irq); irq_desc_t *desc = irq_descp(irq);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
...@@ -395,7 +395,7 @@ void disable_irq(unsigned int irq) ...@@ -395,7 +395,7 @@ void disable_irq(unsigned int irq)
void enable_irq(unsigned int irq) void enable_irq(unsigned int irq)
{ {
irq_desc_t *desc = irq_desc(irq); irq_desc_t *desc = irq_descp(irq);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&desc->lock, flags); spin_lock_irqsave(&desc->lock, flags);
...@@ -437,7 +437,7 @@ unsigned int do_IRQ(unsigned long irq, struct pt_regs *regs) ...@@ -437,7 +437,7 @@ unsigned int do_IRQ(unsigned long irq, struct pt_regs *regs)
* 0 return value means that this irq is already being * 0 return value means that this irq is already being
* handled by some other CPU. (or is disabled) * handled by some other CPU. (or is disabled)
*/ */
irq_desc_t *desc = irq_desc(irq); irq_desc_t *desc = irq_descp(irq);
struct irqaction * action; struct irqaction * action;
irqreturn_t action_ret; irqreturn_t action_ret;
unsigned int status; unsigned int status;
...@@ -620,7 +620,7 @@ void free_irq(unsigned int irq, void *dev_id) ...@@ -620,7 +620,7 @@ void free_irq(unsigned int irq, void *dev_id)
if (irq >= NR_IRQS) if (irq >= NR_IRQS)
return; return;
desc = irq_desc(irq); desc = irq_descp(irq);
spin_lock_irqsave(&desc->lock,flags); spin_lock_irqsave(&desc->lock,flags);
p = &desc->action; p = &desc->action;
for (;;) { for (;;) {
...@@ -682,7 +682,7 @@ unsigned long probe_irq_on(void) ...@@ -682,7 +682,7 @@ unsigned long probe_irq_on(void)
* flush such a longstanding irq before considering it as spurious. * flush such a longstanding irq before considering it as spurious.
*/ */
for (i = NR_IRQS-1; i > 0; i--) { for (i = NR_IRQS-1; i > 0; i--) {
desc = irq_desc(i); desc = irq_descp(i);
spin_lock_irq(&desc->lock); spin_lock_irq(&desc->lock);
if (!desc->action) if (!desc->action)
...@@ -700,7 +700,7 @@ unsigned long probe_irq_on(void) ...@@ -700,7 +700,7 @@ unsigned long probe_irq_on(void)
* happened in the previous stage, it may have masked itself) * happened in the previous stage, it may have masked itself)
*/ */
for (i = NR_IRQS-1; i > 0; i--) { for (i = NR_IRQS-1; i > 0; i--) {
desc = irq_desc(i); desc = irq_descp(i);
spin_lock_irq(&desc->lock); spin_lock_irq(&desc->lock);
if (!desc->action) { if (!desc->action) {
...@@ -722,7 +722,7 @@ unsigned long probe_irq_on(void) ...@@ -722,7 +722,7 @@ unsigned long probe_irq_on(void)
*/ */
val = 0; val = 0;
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
irq_desc_t *desc = irq_desc(i); irq_desc_t *desc = irq_descp(i);
unsigned int status; unsigned int status;
spin_lock_irq(&desc->lock); spin_lock_irq(&desc->lock);
...@@ -762,7 +762,7 @@ unsigned int probe_irq_mask(unsigned long val) ...@@ -762,7 +762,7 @@ unsigned int probe_irq_mask(unsigned long val)
mask = 0; mask = 0;
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
irq_desc_t *desc = irq_desc(i); irq_desc_t *desc = irq_descp(i);
unsigned int status; unsigned int status;
spin_lock_irq(&desc->lock); spin_lock_irq(&desc->lock);
...@@ -807,7 +807,7 @@ int probe_irq_off(unsigned long val) ...@@ -807,7 +807,7 @@ int probe_irq_off(unsigned long val)
nr_irqs = 0; nr_irqs = 0;
irq_found = 0; irq_found = 0;
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
irq_desc_t *desc = irq_desc(i); irq_desc_t *desc = irq_descp(i);
unsigned int status; unsigned int status;
spin_lock_irq(&desc->lock); spin_lock_irq(&desc->lock);
...@@ -836,7 +836,7 @@ int setup_irq(unsigned int irq, struct irqaction * new) ...@@ -836,7 +836,7 @@ int setup_irq(unsigned int irq, struct irqaction * new)
int shared = 0; int shared = 0;
unsigned long flags; unsigned long flags;
struct irqaction *old, **p; struct irqaction *old, **p;
irq_desc_t *desc = irq_desc(irq); irq_desc_t *desc = irq_descp(irq);
if (desc->handler == &no_irq_type) if (desc->handler == &no_irq_type)
return -ENOSYS; return -ENOSYS;
...@@ -963,15 +963,16 @@ static int irq_affinity_read_proc (char *page, char **start, off_t off, ...@@ -963,15 +963,16 @@ static int irq_affinity_read_proc (char *page, char **start, off_t off,
} }
static int irq_affinity_write_proc (struct file *file, const char *buffer, static int irq_affinity_write_proc (struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
unsigned int irq = (unsigned long) data; unsigned int irq = (unsigned long) data;
int full_count = count, err; int full_count = count, err;
unsigned long new_value; unsigned long new_value;
const char *buf = buffer; const char *buf = buffer;
irq_desc_t *desc = irq_descp(irq);
int redir; int redir;
if (!irq_desc(irq)->handler->set_affinity) if (!desc->handler->set_affinity)
return -EIO; return -EIO;
if (buf[0] == 'r' || buf[0] == 'R') { if (buf[0] == 'r' || buf[0] == 'R') {
...@@ -993,8 +994,7 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer, ...@@ -993,8 +994,7 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer,
if (!(new_value & cpu_online_map)) if (!(new_value & cpu_online_map))
return -EINVAL; return -EINVAL;
irq_desc(irq)->handler->set_affinity(irq | (redir? IA64_IRQ_REDIRECTED : 0), new_value); desc->handler->set_affinity(irq | (redir? IA64_IRQ_REDIRECTED : 0), new_value);
return full_count; return full_count;
} }
...@@ -1030,7 +1030,7 @@ static void register_irq_proc (unsigned int irq) ...@@ -1030,7 +1030,7 @@ static void register_irq_proc (unsigned int irq)
{ {
char name [MAX_NAMELEN]; char name [MAX_NAMELEN];
if (!root_irq_dir || (irq_desc(irq)->handler == &no_irq_type) || irq_dir[irq]) if (!root_irq_dir || (irq_descp(irq)->handler == &no_irq_type) || irq_dir[irq])
return; return;
memset(name, 0, MAX_NAMELEN); memset(name, 0, MAX_NAMELEN);
...@@ -1083,7 +1083,7 @@ void init_irq_proc (void) ...@@ -1083,7 +1083,7 @@ void init_irq_proc (void)
* Create entries for all existing IRQs. * Create entries for all existing IRQs.
*/ */
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
if (irq_desc(i)->handler == &no_irq_type) if (irq_descp(i)->handler == &no_irq_type)
continue; continue;
register_irq_proc(i); register_irq_proc(i);
} }
......
...@@ -162,7 +162,7 @@ register_percpu_irq (ia64_vector vec, struct irqaction *action) ...@@ -162,7 +162,7 @@ register_percpu_irq (ia64_vector vec, struct irqaction *action)
for (irq = 0; irq < NR_IRQS; ++irq) for (irq = 0; irq < NR_IRQS; ++irq)
if (irq_to_vector(irq) == vec) { if (irq_to_vector(irq) == vec) {
desc = irq_desc(irq); desc = irq_descp(irq);
desc->status |= IRQ_PER_CPU; desc->status |= IRQ_PER_CPU;
desc->handler = &irq_type_ia64_lsapic; desc->handler = &irq_type_ia64_lsapic;
if (action) if (action)
......
...@@ -734,7 +734,7 @@ ia64_mca_init(void) ...@@ -734,7 +734,7 @@ ia64_mca_init(void)
if (cpev >= 0) { if (cpev >= 0) {
for (irq = 0; irq < NR_IRQS; ++irq) for (irq = 0; irq < NR_IRQS; ++irq)
if (irq_to_vector(irq) == cpev) { if (irq_to_vector(irq) == cpev) {
desc = irq_desc(irq); desc = irq_descp(irq);
desc->status |= IRQ_PER_CPU; desc->status |= IRQ_PER_CPU;
desc->handler = &irq_type_iosapic_level; desc->handler = &irq_type_iosapic_level;
setup_irq(irq, &mca_cpe_irqaction); setup_irq(irq, &mca_cpe_irqaction);
......
...@@ -115,6 +115,8 @@ ...@@ -115,6 +115,8 @@
#define PMD_IS_COUNTING(i) ((pmu_conf.pmd_desc[i].type & PFM_REG_COUNTING) == PFM_REG_COUNTING) #define PMD_IS_COUNTING(i) ((pmu_conf.pmd_desc[i].type & PFM_REG_COUNTING) == PFM_REG_COUNTING)
#define PMC_IS_COUNTING(i) ((pmu_conf.pmc_desc[i].type & PFM_REG_COUNTING) == PFM_REG_COUNTING) #define PMC_IS_COUNTING(i) ((pmu_conf.pmc_desc[i].type & PFM_REG_COUNTING) == PFM_REG_COUNTING)
#define PMC_IS_MONITOR(i) ((pmu_conf.pmc_desc[i].type & PFM_REG_MONITOR) == PFM_REG_MONITOR) #define PMC_IS_MONITOR(i) ((pmu_conf.pmc_desc[i].type & PFM_REG_MONITOR) == PFM_REG_MONITOR)
#define PMC_IS_CONTROL(i) ((pmu_conf.pmc_desc[i].type & PFM_REG_CONTROL) == PFM_REG_CONTROL)
#define PMC_DFL_VAL(i) pmu_conf.pmc_desc[i].default_value #define PMC_DFL_VAL(i) pmu_conf.pmc_desc[i].default_value
#define PMC_RSVD_MASK(i) pmu_conf.pmc_desc[i].reserved_mask #define PMC_RSVD_MASK(i) pmu_conf.pmc_desc[i].reserved_mask
#define PMD_PMD_DEP(i) pmu_conf.pmd_desc[i].dep_pmd[0] #define PMD_PMD_DEP(i) pmu_conf.pmd_desc[i].dep_pmd[0]
...@@ -232,6 +234,8 @@ ...@@ -232,6 +234,8 @@
*/ */
#define PMC0_HAS_OVFL(cmp0) (cmp0 & ~0x1UL) #define PMC0_HAS_OVFL(cmp0) (cmp0 & ~0x1UL)
#define PFMFS_MAGIC 0xa0b4d889
/* /*
* debugging * debugging
*/ */
...@@ -328,7 +332,7 @@ typedef struct pfm_context { ...@@ -328,7 +332,7 @@ typedef struct pfm_context {
pfm_counter_t ctx_pmds[IA64_NUM_PMD_REGS]; /* software state for PMDS */ pfm_counter_t ctx_pmds[IA64_NUM_PMD_REGS]; /* software state for PMDS */
u64 ctx_saved_psr; /* copy of psr used for ctxsw */ u64 ctx_saved_psr_up; /* only contains psr.up value */
unsigned long ctx_last_activation; /* context last activation number for last_cpu */ unsigned long ctx_last_activation; /* context last activation number for last_cpu */
unsigned int ctx_last_cpu; /* CPU id of current or last CPU used (SMP only) */ unsigned int ctx_last_cpu; /* CPU id of current or last CPU used (SMP only) */
...@@ -560,100 +564,6 @@ static struct vm_operations_struct pfm_vm_ops={ ...@@ -560,100 +564,6 @@ static struct vm_operations_struct pfm_vm_ops={
close: pfm_vm_close close: pfm_vm_close
}; };
/*
* Linux 2.5 vs. 2.4 helper macros and definitions
*
* if not at least 2.5.69, then assume 2.4.x.
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,69)
#define PFM_COMPILED_FOR_2_4 1
#include <linux/wrapper.h>
#define pfm_get_cpu_var(v) local_cpu_data->v
#define pfm_get_cpu_data(a,b) cpu_data((b))->a
typedef void pfm_irq_handler_t;
#define PFM_IRQ_HANDLER_RET(v)
#define DEFINE_PER_CPU(a,b)
static inline int
pfm_wait_task_inactive(struct task_struct *task)
{
#ifdef CONFIG_SMP
/* Make sure the child gets off its CPU.. */
for (;;) {
task_lock(task);
if (!task_has_cpu(task)) break;
task_unlock(task);
do {
if (task->state != TASK_STOPPED)
return -ESRCH;
barrier();
cpu_relax();
} while (task_has_cpu(task));
}
task_unlock(task);
#endif
return 0;
}
static inline void
pfm_put_task(struct task_struct *task)
{
if (task != current) free_task_struct(task);
}
static inline void
pfm_set_task_notify(struct task_struct *task)
{
}
static inline void
pfm_clear_task_notify(void)
{
}
static inline void
pfm_reserve_page(unsigned long a)
{
unsigned long page;
page = ia64_tpa(a);
mem_map_reserve(virt_to_page(__va(page)));
}
static inline void
pfm_unreserve_page(unsigned long a)
{
unsigned long page;
page = ia64_tpa(a);
mem_map_unreserve(virt_to_page(__va(page)));
}
static inline int
pfm_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot)
{
return remap_page_range(from, phys_addr, size, prot);
}
static inline unsigned long
pfm_protect_ctx_ctxsw(pfm_context_t *x)
{
unsigned long f;
spin_lock(&(x)->ctx_lock);
return f;
}
static inline unsigned long
pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f)
{
spin_unlock(&(x)->ctx_lock);
}
#else /* 2.5.69 or higher */
#define pfm_wait_task_inactive(t) wait_task_inactive(t) #define pfm_wait_task_inactive(t) wait_task_inactive(t)
#define pfm_get_cpu_var(v) __get_cpu_var(v) #define pfm_get_cpu_var(v) __get_cpu_var(v)
...@@ -705,7 +615,7 @@ pfm_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned lo ...@@ -705,7 +615,7 @@ pfm_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned lo
static inline unsigned long static inline unsigned long
pfm_protect_ctx_ctxsw(pfm_context_t *x) pfm_protect_ctx_ctxsw(pfm_context_t *x)
{ {
spin_lock_irq(&(x)->ctx_lock); spin_lock(&(x)->ctx_lock);
return 0UL; return 0UL;
} }
...@@ -715,7 +625,30 @@ pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f) ...@@ -715,7 +625,30 @@ pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f)
spin_unlock(&(x)->ctx_lock); spin_unlock(&(x)->ctx_lock);
} }
#endif /* 2.5 vs. 2.4 */ static inline unsigned int
pfm_do_munmap(struct mm_struct *mm, unsigned long addr, size_t len, int acct)
{
return do_munmap(mm, addr, len);
}
static inline unsigned long
pfm_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags, unsigned long exec)
{
return get_unmapped_area(file, addr, len, pgoff, flags);
}
static struct super_block *
pfmfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data)
{
return get_sb_pseudo(fs_type, "pfm:", NULL, PFMFS_MAGIC);
}
static struct file_system_type pfm_fs_type = {
.name = "pfmfs",
.get_sb = pfmfs_get_sb,
.kill_sb = kill_anon_super,
};
DEFINE_PER_CPU(unsigned long, pfm_syst_info); DEFINE_PER_CPU(unsigned long, pfm_syst_info);
DEFINE_PER_CPU(struct task_struct *, pmu_owner); DEFINE_PER_CPU(struct task_struct *, pmu_owner);
...@@ -758,13 +691,13 @@ pfm_set_psr_pp(void) ...@@ -758,13 +691,13 @@ pfm_set_psr_pp(void)
static inline void static inline void
pfm_clear_psr_up(void) pfm_clear_psr_up(void)
{ {
__asm__ __volatile__ ("rum psr.up;; srlz.i;;"::: "memory"); __asm__ __volatile__ ("rsm psr.up;; srlz.i;;"::: "memory");
} }
static inline void static inline void
pfm_set_psr_up(void) pfm_set_psr_up(void)
{ {
__asm__ __volatile__ ("sum psr.up;; srlz.i;;"::: "memory"); __asm__ __volatile__ ("ssm psr.up;; srlz.i;;"::: "memory");
} }
static inline unsigned long static inline unsigned long
...@@ -1502,7 +1435,7 @@ pfm_remove_smpl_mapping(struct task_struct *task, void *vaddr, unsigned long siz ...@@ -1502,7 +1435,7 @@ pfm_remove_smpl_mapping(struct task_struct *task, void *vaddr, unsigned long siz
DPRINT(("down_write done smpl_vaddr=%p size=%lu\n", vaddr, size)); DPRINT(("down_write done smpl_vaddr=%p size=%lu\n", vaddr, size));
r = do_munmap(task->mm, (unsigned long)vaddr, size); r = pfm_do_munmap(task->mm, (unsigned long)vaddr, size, 0);
up_write(&task->mm->mmap_sem); up_write(&task->mm->mmap_sem);
if (r !=0) { if (r !=0) {
...@@ -1569,68 +1502,6 @@ pfm_exit_smpl_buffer(pfm_buffer_fmt_t *fmt) ...@@ -1569,68 +1502,6 @@ pfm_exit_smpl_buffer(pfm_buffer_fmt_t *fmt)
* d_name - pfm: will go nicely and kill the special-casing in procfs. * d_name - pfm: will go nicely and kill the special-casing in procfs.
*/ */
static struct vfsmount *pfmfs_mnt; static struct vfsmount *pfmfs_mnt;
#define PFMFS_MAGIC 0xa0b4d889
#ifdef PFM_COMPILED_FOR_2_4
static int
pfmfs_statfs(struct super_block *sb, struct statfs *buf)
{
buf->f_type = PFMFS_MAGIC;
buf->f_bsize = 1024;
buf->f_namelen = 255;
return 0;
}
static struct super_operations pfmfs_ops = {
statfs: pfmfs_statfs,
};
static struct super_block *
pfmfs_read_super(struct super_block *sb, void *data, int silent)
{
struct inode *root = new_inode(sb);
if (!root)
return NULL;
root->i_mode = S_IFDIR | S_IRUSR | S_IWUSR;
root->i_uid = root->i_gid = 0;
root->i_atime = root->i_mtime = root->i_ctime = CURRENT_TIME;
sb->s_blocksize = 1024;
sb->s_blocksize_bits = 10;
sb->s_magic = PFMFS_MAGIC;
sb->s_op = &pfmfs_ops;
sb->s_root = d_alloc(NULL, &(const struct qstr) { "pfm:", 4, 0 });
if (!sb->s_root) {
iput(root);
return NULL;
}
sb->s_root->d_sb = sb;
sb->s_root->d_parent = sb->s_root;
d_instantiate(sb->s_root, root);
return sb;
}
//static DECLARE_FSTYPE(pfm_fs_type, "pfmfs", pfmfs_read_super, FS_NOMOUNT);
static struct file_system_type pfm_fs_type = {
name: "pfmfs",
read_super: pfmfs_read_super,
fs_flags: FS_NOMOUNT,
};
#else /* ! COMPILED_FOR_2_4 */
static struct super_block *
pfmfs_get_sb(struct file_system_type *fs_type, int flags, char *dev_name, void *data)
{
return get_sb_pseudo(fs_type, "pfm:", NULL, PFMFS_MAGIC);
}
static struct file_system_type pfm_fs_type = {
.name = "pfmfs",
.get_sb = pfmfs_get_sb,
.kill_sb = kill_anon_super,
};
#endif /* COMPILED_FOR_2_4 */
static int __init static int __init
init_pfm_fs(void) init_pfm_fs(void)
...@@ -2453,7 +2324,7 @@ pfm_smpl_buffer_alloc(struct task_struct *task, pfm_context_t *ctx, unsigned lon ...@@ -2453,7 +2324,7 @@ pfm_smpl_buffer_alloc(struct task_struct *task, pfm_context_t *ctx, unsigned lon
down_write(&task->mm->mmap_sem); down_write(&task->mm->mmap_sem);
/* find some free area in address space, must have mmap sem held */ /* find some free area in address space, must have mmap sem held */
vma->vm_start = get_unmapped_area(NULL, 0, size, 0, MAP_PRIVATE|MAP_ANONYMOUS); vma->vm_start = pfm_get_unmapped_area(NULL, 0, size, 0, MAP_PRIVATE|MAP_ANONYMOUS, 0);
if (vma->vm_start == 0UL) { if (vma->vm_start == 0UL) {
DPRINT(("Cannot find unmapped area for size %ld\n", size)); DPRINT(("Cannot find unmapped area for size %ld\n", size));
up_write(&task->mm->mmap_sem); up_write(&task->mm->mmap_sem);
...@@ -3020,7 +2891,7 @@ pfm_write_pmcs(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) ...@@ -3020,7 +2891,7 @@ pfm_write_pmcs(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
* as attempts to modify PMC[0-3] which are used * as attempts to modify PMC[0-3] which are used
* as status registers by the PMU * as status registers by the PMU
*/ */
if (!PMC_IS_IMPL(cnum) || cnum < 4) { if (PMC_IS_IMPL(cnum) == 0 || PMC_IS_CONTROL(cnum)) {
DPRINT(("pmc%u is unimplemented or invalid\n", cnum)); DPRINT(("pmc%u is unimplemented or invalid\n", cnum));
goto error; goto error;
} }
...@@ -4124,7 +3995,7 @@ pfm_stop(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) ...@@ -4124,7 +3995,7 @@ pfm_stop(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
/* /*
* monitoring disabled in kernel at next reschedule * monitoring disabled in kernel at next reschedule
*/ */
ctx->ctx_saved_psr &= ~IA64_PSR_UP; ctx->ctx_saved_psr_up = 0;
printk("pfm_stop: current [%d] task=[%d]\n", current->pid, ctx->ctx_task->pid); printk("pfm_stop: current [%d] task=[%d]\n", current->pid, ctx->ctx_task->pid);
} }
return 0; return 0;
...@@ -4198,7 +4069,7 @@ pfm_start(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) ...@@ -4198,7 +4069,7 @@ pfm_start(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
* start monitoring at the kernel level the next * start monitoring at the kernel level the next
* time the task is scheduled * time the task is scheduled
*/ */
ctx->ctx_saved_psr |= IA64_PSR_UP; ctx->ctx_saved_psr_up = IA64_PSR_UP;
/* /*
* activate monitoring at user level * activate monitoring at user level
...@@ -4429,7 +4300,7 @@ pfm_context_load(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) ...@@ -4429,7 +4300,7 @@ pfm_context_load(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
SET_LAST_CPU(ctx, -1); SET_LAST_CPU(ctx, -1);
/* initial saved psr (stopped) */ /* initial saved psr (stopped) */
ctx->ctx_saved_psr = pfm_get_psr() & ~(IA64_PSR_PP|IA64_PSR_UP); ctx->ctx_saved_psr_up = 0UL;
ia64_psr(regs)->up = ia64_psr(regs)->pp = 0; ia64_psr(regs)->up = ia64_psr(regs)->pp = 0;
if (ctx->ctx_fl_unsecure) { if (ctx->ctx_fl_unsecure) {
...@@ -5640,6 +5511,7 @@ pfm_save_regs(struct task_struct *task) ...@@ -5640,6 +5511,7 @@ pfm_save_regs(struct task_struct *task)
unsigned long flags; unsigned long flags;
u64 psr; u64 psr;
ctx = PFM_GET_CTX(task); ctx = PFM_GET_CTX(task);
if (ctx == NULL) goto save_error; if (ctx == NULL) goto save_error;
t = &task->thread; t = &task->thread;
...@@ -5672,9 +5544,9 @@ pfm_save_regs(struct task_struct *task) ...@@ -5672,9 +5544,9 @@ pfm_save_regs(struct task_struct *task)
* sanity check * sanity check
*/ */
if (ctx->ctx_last_activation != GET_ACTIVATION()) { if (ctx->ctx_last_activation != GET_ACTIVATION()) {
DPRINT(("ctx_activation=%lu activation=%lu state=%d: no save\n", printk("ctx_activation=%lu activation=%lu state=%d: no save\n",
ctx->ctx_last_activation, ctx->ctx_last_activation,
GET_ACTIVATION(), ctx->ctx_state)); GET_ACTIVATION(), ctx->ctx_state);
pfm_unprotect_ctx_ctxsw(ctx, flags); pfm_unprotect_ctx_ctxsw(ctx, flags);
...@@ -5684,8 +5556,11 @@ pfm_save_regs(struct task_struct *task) ...@@ -5684,8 +5556,11 @@ pfm_save_regs(struct task_struct *task)
/* /*
* save current PSR: needed because we modify it * save current PSR: needed because we modify it
*/ */
ia64_srlz_d();
psr = pfm_get_psr(); psr = pfm_get_psr();
BUG_ON(psr & (IA64_PSR_I));
/* /*
* stop monitoring: * stop monitoring:
* This is the last instruction which may generate an overflow * This is the last instruction which may generate an overflow
...@@ -5696,9 +5571,13 @@ pfm_save_regs(struct task_struct *task) ...@@ -5696,9 +5571,13 @@ pfm_save_regs(struct task_struct *task)
pfm_clear_psr_up(); pfm_clear_psr_up();
/* /*
* keep a copy of the saved psr (for reload) * keep a copy of psr.up (for reload)
*/ */
ctx->ctx_saved_psr = psr; ctx->ctx_saved_psr_up = psr & IA64_PSR_UP;
{ u64 foo = pfm_get_psr();
BUG_ON(foo & ((IA64_PSR_UP|IA64_PSR_PP)));
}
/* /*
* release ownership of this PMU. * release ownership of this PMU.
...@@ -5772,18 +5651,16 @@ pfm_save_regs(struct task_struct *task) ...@@ -5772,18 +5651,16 @@ pfm_save_regs(struct task_struct *task)
pfm_clear_psr_up(); pfm_clear_psr_up();
/* /*
* keep a copy of the saved psr (for reload) * keep a copy of psr.up (for reload)
*/ */
ctx->ctx_saved_psr = psr; ctx->ctx_saved_psr_up = psr & IA64_PSR_UP;
psr = pfm_get_psr(); #if 1
if (psr & IA64_PSR_UP) { { u64 foo = pfm_get_psr();
printk(KERN_ERR " perfmon: pfm_save_regs: psr.up set current [%d] owner [%d] psr=0x%lx\n", current->pid, GET_PMU_OWNER()->pid, psr); BUG_ON(foo & (IA64_PSR_I));
} BUG_ON(foo & ((IA64_PSR_UP|IA64_PSR_PP)));
if (psr & IA64_PSR_I) {
printk(KERN_ERR " perfmon: pfm_save_regs: psr.i set current [%d] owner [%d] psr=0x%lx\n", current->pid, GET_PMU_OWNER()->pid, psr);
} }
#endif
return; return;
save_error: save_error:
printk(KERN_ERR "perfmon: pfm_save_regs CPU%d [%d] NULL context PM_VALID=%ld\n", printk(KERN_ERR "perfmon: pfm_save_regs CPU%d [%d] NULL context PM_VALID=%ld\n",
...@@ -5797,13 +5674,10 @@ pfm_lazy_save_regs (struct task_struct *task) ...@@ -5797,13 +5674,10 @@ pfm_lazy_save_regs (struct task_struct *task)
pfm_context_t *ctx; pfm_context_t *ctx;
struct thread_struct *t; struct thread_struct *t;
unsigned long flags; unsigned long flags;
unsigned long psr;
#if 1 #if 1
psr = pfm_get_psr(); { u64 foo = pfm_get_psr();
if (psr & IA64_PSR_UP) { BUG_ON(foo & IA64_PSR_UP);
printk(KERN_ERR " perfmon: pfm_lazy_save_regs: psr.up set current [%d] owner [%d] psr=0x%lx\n", current->pid, task->pid, psr);
pfm_clear_psr_up();
} }
#endif #endif
...@@ -5864,10 +5738,9 @@ pfm_load_regs (struct task_struct *task) ...@@ -5864,10 +5738,9 @@ pfm_load_regs (struct task_struct *task)
{ {
pfm_context_t *ctx; pfm_context_t *ctx;
struct thread_struct *t; struct thread_struct *t;
struct task_struct *owner;
unsigned long pmc_mask = 0UL, pmd_mask = 0UL; unsigned long pmc_mask = 0UL, pmd_mask = 0UL;
unsigned long flags; unsigned long flags;
u64 psr; u64 psr, psr_up;
ctx = PFM_GET_CTX(task); ctx = PFM_GET_CTX(task);
if (unlikely(ctx == NULL)) { if (unlikely(ctx == NULL)) {
...@@ -5875,22 +5748,21 @@ pfm_load_regs (struct task_struct *task) ...@@ -5875,22 +5748,21 @@ pfm_load_regs (struct task_struct *task)
return; return;
} }
owner = GET_PMU_OWNER(); BUG_ON(GET_PMU_OWNER());
t = &task->thread; t = &task->thread;
psr = pfm_get_psr();
#if 1 #if 1
psr = pfm_get_psr(); BUG_ON(psr & (IA64_PSR_UP|IA64_PSR_PP));
BUG_ON(psr & IA64_PSR_UP);
psr = pfm_get_psr();
BUG_ON(psr & IA64_PSR_I); BUG_ON(psr & IA64_PSR_I);
#endif #endif
/* /*
* possible on unload * possible on unload
*/ */
if (unlikely((t->flags & IA64_THREAD_PM_VALID) == 0)) { if (unlikely((t->flags & IA64_THREAD_PM_VALID) == 0)) {
DPRINT(("[%d] PM_VALID=0, nothing to do\n", task->pid)); printk("[%d] PM_VALID=0, nothing to do\n", task->pid);
return; return;
} }
...@@ -5923,19 +5795,15 @@ pfm_load_regs (struct task_struct *task) ...@@ -5923,19 +5795,15 @@ pfm_load_regs (struct task_struct *task)
/* /*
* we restore ALL the debug registers to avoid picking up * we restore ALL the debug registers to avoid picking up
* stale state. * stale state.
*
* This must be done even when the task is still the owner
* as the registers may have been modified via ptrace()
* (not perfmon) by the previous task.
*/ */
if (ctx->ctx_fl_using_dbreg) { if (ctx->ctx_fl_using_dbreg) {
pfm_restore_ibrs(ctx->ctx_ibrs, pmu_conf.num_ibrs); pfm_restore_ibrs(ctx->ctx_ibrs, pmu_conf.num_ibrs);
pfm_restore_dbrs(ctx->ctx_dbrs, pmu_conf.num_dbrs); pfm_restore_dbrs(ctx->ctx_dbrs, pmu_conf.num_dbrs);
} }
/* /*
* retrieve saved psr * retrieve saved psr.up
*/ */
psr = ctx->ctx_saved_psr; psr_up = ctx->ctx_saved_psr_up;
/* /*
* if we were the last user of the PMU on that CPU, * if we were the last user of the PMU on that CPU,
...@@ -5968,8 +5836,8 @@ pfm_load_regs (struct task_struct *task) ...@@ -5968,8 +5836,8 @@ pfm_load_regs (struct task_struct *task)
*/ */
pmc_mask = ctx->ctx_all_pmcs[0]; pmc_mask = ctx->ctx_all_pmcs[0];
DPRINT(("full reload for [%d] owner=%d activation=%lu last_activation=%lu last_cpu=%d pmd_mask=0x%lx pmc_mask=0x%lx\n", DPRINT(("full reload for [%d] activation=%lu last_activation=%lu last_cpu=%d pmd_mask=0x%lx pmc_mask=0x%lx\n",
task->pid, owner ? owner->pid : -1, task->pid,
GET_ACTIVATION(), ctx->ctx_last_activation, GET_ACTIVATION(), ctx->ctx_last_activation,
GET_LAST_CPU(ctx), pmd_mask, pmc_mask)); GET_LAST_CPU(ctx), pmd_mask, pmc_mask));
...@@ -6026,9 +5894,9 @@ pfm_load_regs (struct task_struct *task) ...@@ -6026,9 +5894,9 @@ pfm_load_regs (struct task_struct *task)
SET_PMU_OWNER(task, ctx); SET_PMU_OWNER(task, ctx);
/* /*
* restore the psr we changed * restore the psr.up bit
*/ */
pfm_set_psr_l(psr); if (likely(psr_up)) pfm_set_psr_up();
/* /*
* allow concurrent access to context * allow concurrent access to context
...@@ -6047,21 +5915,16 @@ pfm_load_regs (struct task_struct *task) ...@@ -6047,21 +5915,16 @@ pfm_load_regs (struct task_struct *task)
pfm_context_t *ctx; pfm_context_t *ctx;
struct task_struct *owner; struct task_struct *owner;
unsigned long pmd_mask, pmc_mask; unsigned long pmd_mask, pmc_mask;
u64 psr; u64 psr, psr_up;
owner = GET_PMU_OWNER(); owner = GET_PMU_OWNER();
ctx = PFM_GET_CTX(task); ctx = PFM_GET_CTX(task);
t = &task->thread; t = &task->thread;
psr = pfm_get_psr();
#if 1 #if 1
psr = pfm_get_psr(); BUG_ON(psr & (IA64_PSR_UP|IA64_PSR_PP));
if (psr & IA64_PSR_UP) { BUG_ON(psr & IA64_PSR_I);
printk(KERN_ERR " perfmon: pfm_load_regs: psr.up set current [%d] owner [%d] psr=0x%lx\n", current->pid, owner->pid, psr);
}
psr = pfm_get_psr();
if (psr & IA64_PSR_I) {
printk(KERN_ERR " perfmon: pfm_load_regs: psr.i set current [%d] owner [%d] psr=0x%lx\n", current->pid, owner->pid, psr);
}
#endif #endif
/* /*
...@@ -6078,9 +5941,9 @@ pfm_load_regs (struct task_struct *task) ...@@ -6078,9 +5941,9 @@ pfm_load_regs (struct task_struct *task)
} }
/* /*
* retrieved save psr * retrieved saved psr.up
*/ */
psr = ctx->ctx_saved_psr; psr_up = ctx->ctx_saved_psr_up;
/* /*
* short path, our state is still there, just * short path, our state is still there, just
...@@ -6091,7 +5954,7 @@ pfm_load_regs (struct task_struct *task) ...@@ -6091,7 +5954,7 @@ pfm_load_regs (struct task_struct *task)
* concurrency even without interrupt masking. * concurrency even without interrupt masking.
*/ */
if (likely(owner == task)) { if (likely(owner == task)) {
pfm_set_psr_l(psr); if (likely(psr_up)) pfm_set_psr_up();
return; return;
} }
...@@ -6163,8 +6026,7 @@ pfm_load_regs (struct task_struct *task) ...@@ -6163,8 +6026,7 @@ pfm_load_regs (struct task_struct *task)
* restore the psr. This is the point at which * restore the psr. This is the point at which
* new overflow interrupts can be generated again. * new overflow interrupts can be generated again.
*/ */
pfm_set_psr_l(psr); if (likely(psr_up)) pfm_set_psr_up();
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
...@@ -6469,13 +6331,13 @@ dump_pmu_state(void) ...@@ -6469,13 +6331,13 @@ dump_pmu_state(void)
printk("pmd[%d]=0x%lx tpmd=0x%lx\n", i, ia64_get_pmd(i), t->pmds[i]); printk("pmd[%d]=0x%lx tpmd=0x%lx\n", i, ia64_get_pmd(i), t->pmds[i]);
} }
if (ctx) { if (ctx) {
printk("ctx_state=%d vaddr=%p addr=%p fd=%d ctx_task=[%d] saved_psr=0x%lx\n", printk("ctx_state=%d vaddr=%p addr=%p fd=%d ctx_task=[%d] saved_psr_up=0x%lx\n",
ctx->ctx_state, ctx->ctx_state,
ctx->ctx_smpl_vaddr, ctx->ctx_smpl_vaddr,
ctx->ctx_smpl_hdr, ctx->ctx_smpl_hdr,
ctx->ctx_msgq_head, ctx->ctx_msgq_head,
ctx->ctx_msgq_tail, ctx->ctx_msgq_tail,
ctx->ctx_saved_psr); ctx->ctx_saved_psr_up);
} }
} }
......
...@@ -452,7 +452,7 @@ smp_build_cpu_map (void) ...@@ -452,7 +452,7 @@ smp_build_cpu_map (void)
sapicid = smp_boot_data.cpu_phys_id[i]; sapicid = smp_boot_data.cpu_phys_id[i];
if (sapicid == boot_cpu_id) if (sapicid == boot_cpu_id)
continue; continue;
phys_cpu_present_map |= (1 << cpu); phys_cpu_present_map |= (1UL << cpu);
ia64_cpu_to_sapicid[cpu] = sapicid; ia64_cpu_to_sapicid[cpu] = sapicid;
cpu++; cpu++;
} }
......
...@@ -12,12 +12,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \ ...@@ -12,12 +12,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \
lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
lib-$(CONFIG_PERFMON) += carta_random.o lib-$(CONFIG_PERFMON) += carta_random.o
lib-$(CONFIG_MD_RAID5) += xor.o
ifeq ($(CONFIG_MD_RAID5),m)
lib-y += xor.o
else
lib-$(CONFIG_MD_RAID5) += xor.o
endif
IGNORE_FLAGS_OBJS = __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \ IGNORE_FLAGS_OBJS = __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \
__divdi3.o __udivdi3.o __moddi3.o __umoddi3.o __divdi3.o __udivdi3.o __moddi3.o __umoddi3.o
......
...@@ -364,8 +364,6 @@ pcibios_fixup_bus (struct pci_bus *b) ...@@ -364,8 +364,6 @@ pcibios_fixup_bus (struct pci_bus *b)
return; return;
} }
#warning pcibios_update_resource() is now a generic implementation - please check
void __devinit void __devinit
pcibios_update_irq (struct pci_dev *dev, int irq) pcibios_update_irq (struct pci_dev *dev, int irq)
{ {
......
...@@ -3,15 +3,13 @@ ...@@ -3,15 +3,13 @@
# Check whether linker can handle cross-segment @segrel(): # Check whether linker can handle cross-segment @segrel():
# #
CC=$1 CC=$1
LD=$2 OBJDUMP=$2
OBJDUMP=$3
dir=$(dirname $0) dir=$(dirname $0)
tmp=${TMPDIR:-/tmp} tmp=${TMPDIR:-/tmp}
out=$tmp/out$$ out=$tmp/out$$
$CC -c $dir/check-segrel.S -o $out.o $CC -nostdlib -static -Wl,-T$dir/check-segrel.lds $dir/check-segrel.S -o $out
$LD -static -T$dir/check-segrel.lds $out.o -o $out
res=$($OBJDUMP --full --section .rodata $out | fgrep 000 | cut -f3 -d' ') res=$($OBJDUMP --full --section .rodata $out | fgrep 000 | cut -f3 -d' ')
rm -f $out $out.o rm -f $out
if [ $res != 00000a00 ]; then if [ $res != 00000a00 ]; then
echo " -DHAVE_BUGGY_SEGREL" echo " -DHAVE_BUGGY_SEGREL"
cat >&2 <<EOF cat >&2 <<EOF
......
...@@ -9,4 +9,4 @@ ...@@ -9,4 +9,4 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN EXTRA_CFLAGS := -DLITTLE_ENDIAN
obj-y += ioconfig_bus.o ifconfig_net.o obj-y += ioconfig_bus.o
/* $Id: ifconfig_net.c,v 1.1 2002/02/28 17:31:25 marcelo Exp $
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* ifconfig_net - SGI's Persistent Network Device names.
*
* Copyright (C) 1992-1997, 2000-2003 Silicon Graphics, Inc. All rights reserved.
*/
#include <linux/types.h>
#include <linux/config.h>
#include <linux/slab.h>
#include <linux/ctype.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <asm/sn/sgi.h>
#include <linux/devfs_fs.h>
#include <linux/devfs_fs_kernel.h>
#include <asm/io.h>
#include <asm/sn/iograph.h>
#include <asm/sn/invent.h>
#include <asm/sn/hcl.h>
#include <asm/sn/labelcl.h>
#include <asm/sn/ifconfig_net.h>
#define SGI_IFCONFIG_NET "SGI-PERSISTENT NETWORK DEVICE NAME DRIVER"
#define SGI_IFCONFIG_NET_VERSION "1.0"
/*
* Some Global definitions.
*/
static devfs_handle_t ifconfig_net_handle;
static unsigned long ifconfig_net_debug;
/*
* ifconfig_net_open - Opens the special device node "/devhw/.ifconfig_net".
*/
static int ifconfig_net_open(struct inode * inode, struct file * filp)
{
if (ifconfig_net_debug) {
printk("ifconfig_net_open called.\n");
}
return(0);
}
/*
* ifconfig_net_close - Closes the special device node "/devhw/.ifconfig_net".
*/
static int ifconfig_net_close(struct inode * inode, struct file * filp)
{
if (ifconfig_net_debug) {
printk("ifconfig_net_close called.\n");
}
return(0);
}
/*
* assign_ifname - Assign the next available interface name from the persistent list.
*/
void
assign_ifname(struct net_device *dev,
struct ifname_num *ifname_num)
{
/*
* Handle eth devices.
*/
if ( (memcmp(dev->name, "eth", 3) == 0) ) {
if (ifname_num->next_eth != -1) {
/*
* Assign it the next available eth interface number.
*/
memset(dev->name, 0, strlen(dev->name));
sprintf(dev->name, "eth%d", (int)ifname_num->next_eth);
ifname_num->next_eth++;
}
return;
}
/*
* Handle fddi devices.
*/
if ( (memcmp(dev->name, "fddi", 4) == 0) ) {
if (ifname_num->next_fddi != -1) {
/*
* Assign it the next available fddi interface number.
*/
memset(dev->name, 0, strlen(dev->name));
sprintf(dev->name, "fddi%d", (int)ifname_num->next_fddi);
ifname_num->next_fddi++;
}
return;
}
/*
* Handle hip devices.
*/
if ( (memcmp(dev->name, "hip", 3) == 0) ) {
if (ifname_num->next_hip != -1) {
/*
* Assign it the next available hip interface number.
*/
memset(dev->name, 0, strlen(dev->name));
sprintf(dev->name, "hip%d", (int)ifname_num->next_hip);
ifname_num->next_hip++;
}
return;
}
/*
* Handle tr devices.
*/
if ( (memcmp(dev->name, "tr", 2) == 0) ) {
if (ifname_num->next_tr != -1) {
/*
* Assign it the next available tr interface number.
*/
memset(dev->name, 0, strlen(dev->name));
sprintf(dev->name, "tr%d", (int)ifname_num->next_tr);
ifname_num->next_tr++;
}
return;
}
/*
* Handle fc devices.
*/
if ( (memcmp(dev->name, "fc", 2) == 0) ) {
if (ifname_num->next_fc != -1) {
/*
* Assign it the next available fc interface number.
*/
memset(dev->name, 0, strlen(dev->name));
sprintf(dev->name, "fc%d", (int)ifname_num->next_fc);
ifname_num->next_fc++;
}
return;
}
}
/*
* find_persistent_ifname: Returns the entry that was seen in previous boot.
*/
struct ifname_MAC *
find_persistent_ifname(struct net_device *dev,
struct ifname_MAC *ifname_MAC)
{
while (ifname_MAC->addr_len) {
if (memcmp(dev->dev_addr, ifname_MAC->dev_addr, dev->addr_len) == 0)
return(ifname_MAC);
ifname_MAC++;
}
return(NULL);
}
/*
* ifconfig_net_ioctl: ifconfig_net driver ioctl interface.
*/
static int ifconfig_net_ioctl(struct inode * inode, struct file * file,
unsigned int cmd, unsigned long arg)
{
extern struct net_device *__dev_get_by_name(const char *);
#ifdef CONFIG_NET
struct net_device *dev;
struct ifname_MAC *found;
char temp[64];
#endif
struct ifname_MAC *ifname_MAC;
struct ifname_MAC *new_devices, *temp_new_devices;
struct ifname_num *ifname_num;
unsigned long size;
if (ifconfig_net_debug) {
printk("HCL: hcl_ioctl called.\n");
}
/*
* Read in the header and see how big of a buffer we really need to
* allocate.
*/
ifname_num = (struct ifname_num *) kmalloc(sizeof(struct ifname_num),
GFP_KERNEL);
copy_from_user( ifname_num, (char *) arg, sizeof(struct ifname_num));
size = ifname_num->size;
kfree(ifname_num);
ifname_num = (struct ifname_num *) kmalloc(size, GFP_KERNEL);
ifname_MAC = (struct ifname_MAC *) ((char *)ifname_num + (sizeof(struct ifname_num)) );
copy_from_user( ifname_num, (char *) arg, size);
new_devices = kmalloc(size - sizeof(struct ifname_num), GFP_KERNEL);
temp_new_devices = new_devices;
memset(new_devices, 0, size - sizeof(struct ifname_num));
#ifdef CONFIG_NET
/*
* Go through the net device entries and make them persistent!
*/
for (dev = dev_base; dev != NULL; dev = dev->next) {
/*
* Skip NULL entries or "lo"
*/
if ( (dev->addr_len == 0) || ( !strncmp(dev->name, "lo", strlen(dev->name))) ){
continue;
}
/*
* See if we have a persistent interface name for this device.
*/
found = NULL;
found = find_persistent_ifname(dev, ifname_MAC);
if (found) {
strcpy(dev->name, found->name);
} else {
/* Never seen this before .. */
assign_ifname(dev, ifname_num);
/*
* Save the information for the next boot.
*/
sprintf(temp,"%s %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name,
dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
strcpy(temp_new_devices->name, dev->name);
temp_new_devices->addr_len = dev->addr_len;
memcpy(temp_new_devices->dev_addr, dev->dev_addr, dev->addr_len);
temp_new_devices++;
}
}
#endif
/*
* Copy back to the User Buffer area any new devices encountered.
*/
copy_to_user((char *)arg + (sizeof(struct ifname_num)), new_devices,
size - sizeof(struct ifname_num));
return(0);
}
struct file_operations ifconfig_net_fops = {
ioctl:ifconfig_net_ioctl, /* ioctl */
open:ifconfig_net_open, /* open */
release:ifconfig_net_close /* release */
};
/*
* init_ifconfig_net() - Boot time initialization. Ensure that it is called
* after devfs has been initialized.
*
*/
#ifdef MODULE
int init_module (void)
#else
int __init init_ifconfig_net(void)
#endif
{
ifconfig_net_handle = NULL;
ifconfig_net_handle = hwgraph_register(hwgraph_root, ".ifconfig_net",
0, 0,
0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
&ifconfig_net_fops, NULL);
if (ifconfig_net_handle == NULL) {
panic("Unable to create SGI PERSISTENT NETWORK DEVICE Name Driver.\n");
}
return(0);
}
...@@ -113,22 +113,10 @@ static int hcl_ioctl(struct inode * inode, struct file * file, ...@@ -113,22 +113,10 @@ static int hcl_ioctl(struct inode * inode, struct file * file,
} }
struct file_operations hcl_fops = { struct file_operations hcl_fops = {
(struct module *)0, .owner = (struct module *)0,
NULL, /* lseek - default */ .ioctl = hcl_ioctl,
NULL, /* read - general block-dev read */ .open = hcl_open,
NULL, /* write - general block-dev write */ .release = hcl_close,
NULL, /* readdir - bad */
NULL, /* poll */
hcl_ioctl, /* ioctl */
NULL, /* mmap */
hcl_open, /* open */
NULL, /* flush */
hcl_close, /* release */
NULL, /* fsync */
NULL, /* fasync */
NULL, /* lock */
NULL, /* readv */
NULL, /* writev */
}; };
...@@ -140,7 +128,6 @@ int __init init_hcl(void) ...@@ -140,7 +128,6 @@ int __init init_hcl(void)
{ {
extern void string_table_init(struct string_table *); extern void string_table_init(struct string_table *);
extern struct string_table label_string_table; extern struct string_table label_string_table;
extern int init_ifconfig_net(void);
extern int init_ioconfig_bus(void); extern int init_ioconfig_bus(void);
extern int init_hwgfs_fs(void); extern int init_hwgfs_fs(void);
int rv = 0; int rv = 0;
...@@ -195,7 +182,6 @@ int __init init_hcl(void) ...@@ -195,7 +182,6 @@ int __init init_hcl(void)
* Initialize the ifconfgi_net driver that does network devices * Initialize the ifconfgi_net driver that does network devices
* Persistent Naming. * Persistent Naming.
*/ */
init_ifconfig_net();
init_ioconfig_bus(); init_ioconfig_bus();
return(0); return(0);
...@@ -258,6 +244,7 @@ hwgraph_fastinfo_get(vertex_hdl_t de) ...@@ -258,6 +244,7 @@ hwgraph_fastinfo_get(vertex_hdl_t de)
if (!de) { if (!de) {
printk(KERN_WARNING "HCL: hwgraph_fastinfo_get handle given is NULL.\n"); printk(KERN_WARNING "HCL: hwgraph_fastinfo_get handle given is NULL.\n");
dump_stack();
return(-1); return(-1);
} }
...@@ -568,7 +555,7 @@ hwgraph_edge_add(vertex_hdl_t from, vertex_hdl_t to, char *name) ...@@ -568,7 +555,7 @@ hwgraph_edge_add(vertex_hdl_t from, vertex_hdl_t to, char *name)
* In this case the vertex was previous created with a REAL pathname. * In this case the vertex was previous created with a REAL pathname.
*/ */
rv = hwgfs_mk_symlink (from, (const char *)name, rv = hwgfs_mk_symlink (from, (const char *)name,
DEVFS_FL_DEFAULT, link, 0, link,
&handle, NULL); &handle, NULL);
kfree(path); kfree(path);
kfree(link); kfree(link);
......
...@@ -49,6 +49,8 @@ int sn_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size, ...@@ -49,6 +49,8 @@ int sn_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size,
vertex_hdl_t device_vertex; vertex_hdl_t device_vertex;
device_vertex = devfn_to_vertex(bus->number, devfn); device_vertex = devfn_to_vertex(bus->number, devfn);
if (!device_vertex)
return PCIBIOS_DEVICE_NOT_FOUND;
res = pciio_config_get(device_vertex, (unsigned) where, size); res = pciio_config_get(device_vertex, (unsigned) where, size);
*val = (unsigned int) res; *val = (unsigned int) res;
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -59,6 +61,8 @@ int sn_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size ...@@ -59,6 +61,8 @@ int sn_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size
vertex_hdl_t device_vertex; vertex_hdl_t device_vertex;
device_vertex = devfn_to_vertex(bus->number, devfn); device_vertex = devfn_to_vertex(bus->number, devfn);
if (!device_vertex)
return PCIBIOS_DEVICE_NOT_FOUND;
pciio_config_set( device_vertex, (unsigned)where, size, (uint64_t) val); pciio_config_set( device_vertex, (unsigned)where, size, (uint64_t) val);
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
} }
......
...@@ -280,7 +280,7 @@ sn_pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int dire ...@@ -280,7 +280,7 @@ sn_pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int dire
*/ */
for (i = 0; i < nents; i++, sg++) { for (i = 0; i < nents; i++, sg++) {
phys_addr = __pa(sg->dma_address ? sg->dma_address : phys_addr = __pa(sg->dma_address ? sg->dma_address :
page_address(sg->page) + sg->offset); (unsigned long)page_address(sg->page) + sg->offset);
/* /*
* Handle the most common case: 64 bit cards. This * Handle the most common case: 64 bit cards. This
...@@ -578,7 +578,7 @@ sn_dma_supported(struct device *dev, u64 mask) ...@@ -578,7 +578,7 @@ sn_dma_supported(struct device *dev, u64 mask)
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
return pci_dma_supported(to_pci_dev(dev), mask); return sn_pci_dma_supported(to_pci_dev(dev), mask);
} }
EXPORT_SYMBOL(sn_dma_supported); EXPORT_SYMBOL(sn_dma_supported);
...@@ -587,7 +587,11 @@ sn_dma_set_mask(struct device *dev, u64 dma_mask) ...@@ -587,7 +587,11 @@ sn_dma_set_mask(struct device *dev, u64 dma_mask)
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
return pci_set_dma_mask(to_pci_dev(dev), dma_mask); if (!sn_dma_supported(dev, dma_mask))
return 0;
dev->dma_mask = dma_mask;
return 1;
} }
EXPORT_SYMBOL(sn_dma_set_mask); EXPORT_SYMBOL(sn_dma_set_mask);
...@@ -597,7 +601,7 @@ sn_dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, ...@@ -597,7 +601,7 @@ sn_dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
return pci_alloc_consistent(to_pci_dev(dev), size, dma_handle); return sn_pci_alloc_consistent(to_pci_dev(dev), size, dma_handle);
} }
EXPORT_SYMBOL(sn_dma_alloc_coherent); EXPORT_SYMBOL(sn_dma_alloc_coherent);
...@@ -607,7 +611,7 @@ sn_dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, ...@@ -607,7 +611,7 @@ sn_dma_free_coherent(struct device *dev, size_t size, void *cpu_addr,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
pci_free_consistent(to_pci_dev(dev), size, cpu_addr, dma_handle); sn_pci_free_consistent(to_pci_dev(dev), size, cpu_addr, dma_handle);
} }
EXPORT_SYMBOL(sn_dma_free_coherent); EXPORT_SYMBOL(sn_dma_free_coherent);
...@@ -617,7 +621,7 @@ sn_dma_map_single(struct device *dev, void *cpu_addr, size_t size, ...@@ -617,7 +621,7 @@ sn_dma_map_single(struct device *dev, void *cpu_addr, size_t size,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
return pci_map_single(to_pci_dev(dev), cpu_addr, size, (int)direction); return sn_pci_map_single(to_pci_dev(dev), cpu_addr, size, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_map_single); EXPORT_SYMBOL(sn_dma_map_single);
...@@ -627,7 +631,7 @@ sn_dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, ...@@ -627,7 +631,7 @@ sn_dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
pci_unmap_single(to_pci_dev(dev), dma_addr, size, (int)direction); sn_pci_unmap_single(to_pci_dev(dev), dma_addr, size, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_unmap_single); EXPORT_SYMBOL(sn_dma_unmap_single);
...@@ -658,7 +662,7 @@ sn_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, ...@@ -658,7 +662,7 @@ sn_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
return pci_map_sg(to_pci_dev(dev), sg, nents, (int)direction); return sn_pci_map_sg(to_pci_dev(dev), sg, nents, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_map_sg); EXPORT_SYMBOL(sn_dma_map_sg);
...@@ -668,7 +672,7 @@ sn_dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, ...@@ -668,7 +672,7 @@ sn_dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
pci_unmap_sg(to_pci_dev(dev), sg, nhwentries, (int)direction); sn_pci_unmap_sg(to_pci_dev(dev), sg, nhwentries, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_unmap_sg); EXPORT_SYMBOL(sn_dma_unmap_sg);
...@@ -678,7 +682,7 @@ sn_dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size, ...@@ -678,7 +682,7 @@ sn_dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
pci_dma_sync_single(to_pci_dev(dev), dma_handle, size, (int)direction); sn_pci_dma_sync_single(to_pci_dev(dev), dma_handle, size, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_sync_single); EXPORT_SYMBOL(sn_dma_sync_single);
...@@ -688,7 +692,7 @@ sn_dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems, ...@@ -688,7 +692,7 @@ sn_dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems,
{ {
BUG_ON(dev->bus != &pci_bus_type); BUG_ON(dev->bus != &pci_bus_type);
pci_dma_sync_sg(to_pci_dev(dev), sg, nelems, (int)direction); sn_pci_dma_sync_sg(to_pci_dev(dev), sg, nelems, (int)direction);
} }
EXPORT_SYMBOL(sn_dma_sync_sg); EXPORT_SYMBOL(sn_dma_sync_sg);
......
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN EXTRA_CFLAGS := -DLITTLE_ENDIAN
obj-y := probe.o setup.o sv.o bte.o irq.o mca.o sn2/ obj-y := probe.o setup.o sv.o bte.o irq.o mca.o \
idle.o sn2/
obj-$(CONFIG_IA64_GENERIC) += machvec.o obj-$(CONFIG_IA64_GENERIC) += machvec.o
obj-$(CONFIG_MODULES) += sn_ksyms.o obj-$(CONFIG_MODULES) += sn_ksyms.o
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
void snidle(int state) { void snidle(int state) {
if (state) { if (state) {
if (pda.idle_flag == 0) { if (pda->idle_flag == 0) {
/* /*
* Turn the activity LED off. * Turn the activity LED off.
*/ */
...@@ -24,13 +24,13 @@ void snidle(int state) { ...@@ -24,13 +24,13 @@ void snidle(int state) {
SIMULATOR_SLEEP(); SIMULATOR_SLEEP();
#endif #endif
pda.idle_flag = 1; pda->idle_flag = 1;
} else { } else {
/* /*
* Turn the activity LED on. * Turn the activity LED on.
*/ */
set_led_bits(LED_CPU_ACTIVITY, LED_CPU_ACTIVITY); set_led_bits(LED_CPU_ACTIVITY, LED_CPU_ACTIVITY);
pda.idle_flag = 0; pda->idle_flag = 0;
} }
} }
...@@ -31,4 +31,5 @@ ...@@ -31,4 +31,5 @@
*/ */
#define MACHVEC_PLATFORM_NAME sn2 #define MACHVEC_PLATFORM_NAME sn2
#define MACHVEC_PLATFORM_HEADER <asm/machvec_sn2.h>
#include <asm/machvec_init.h> #include <asm/machvec_init.h>
...@@ -75,11 +75,13 @@ DEFINE_PER_CPU(struct pda_s, pda_percpu); ...@@ -75,11 +75,13 @@ DEFINE_PER_CPU(struct pda_s, pda_percpu);
#define pxm_to_nasid(pxm) ((pxm)<<1) #define pxm_to_nasid(pxm) ((pxm)<<1)
#define MAX_PHYS_MEMORY (1UL << 49) /* 1 TB */
extern void bte_init_node (nodepda_t *, cnodeid_t); extern void bte_init_node (nodepda_t *, cnodeid_t);
extern void bte_init_cpu (void); extern void bte_init_cpu (void);
extern void sn_timer_init (void); extern void sn_timer_init(void);
extern void (*ia64_mark_idle)(int); extern void (*ia64_mark_idle)(int);
void snidle(int); extern void snidle(int);
unsigned long sn_rtc_cycles_per_second; unsigned long sn_rtc_cycles_per_second;
...@@ -296,21 +298,20 @@ sn_setup(char **cmdline_p) ...@@ -296,21 +298,20 @@ sn_setup(char **cmdline_p)
*/ */
sn_check_for_wars(); sn_check_for_wars();
ia64_mark_idle = &snidle;
/* /*
* For the bootcpu, we do this here. All other cpus will make the * For the bootcpu, we do this here. All other cpus will make the
* call as part of cpu_init in slave cpu initialization. * call as part of cpu_init in slave cpu initialization.
*/ */
sn_cpu_init(); sn_cpu_init();
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
init_smp_config(); init_smp_config();
#endif #endif
screen_info = sn_screen_info; screen_info = sn_screen_info;
sn_timer_init(); sn_timer_init();
ia64_mark_idle = &snidle;
} }
/** /**
...@@ -438,19 +439,3 @@ sn_cpu_init(void) ...@@ -438,19 +439,3 @@ sn_cpu_init(void)
bte_init_cpu(); bte_init_cpu();
} }
void snidle(int idleness)
{
if (!idleness) {
if (pda->idle_flag == 0) {
set_led_bits(0, LED_CPU_ACTIVITY);
}
pda->idle_flag = 1;
}
else {
set_led_bits(LED_CPU_ACTIVITY, LED_CPU_ACTIVITY);
pda->idle_flag = 0;
}
}
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/* /*
* IA-64 specific AGP definitions. * IA-64 specific AGP definitions.
* *
* Copyright (C) 2002 Hewlett-Packard Co * Copyright (C) 2002-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com> * David Mosberger-Tang <davidm@hpl.hp.com>
*/ */
...@@ -18,7 +18,4 @@ ...@@ -18,7 +18,4 @@
#define flush_agp_mappings() /* nothing */ #define flush_agp_mappings() /* nothing */
#define flush_agp_cache() mb() #define flush_agp_cache() mb()
/* Page-protection value to be used for AGP memory mapped into kernel space. */
#define PAGE_AGP PAGE_KERNEL
#endif /* _ASM_IA64_AGP_H */ #endif /* _ASM_IA64_AGP_H */
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define _ASM_IA64_HW_IRQ_H #define _ASM_IA64_HW_IRQ_H
/* /*
* Copyright (C) 2001-2002 Hewlett-Packard Co * Copyright (C) 2001-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com> * David Mosberger-Tang <davidm@hpl.hp.com>
*/ */
...@@ -91,10 +91,10 @@ hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector) ...@@ -91,10 +91,10 @@ hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector)
* Default implementations for the irq-descriptor API: * Default implementations for the irq-descriptor API:
*/ */
extern struct irq_desc _irq_desc[NR_IRQS]; extern irq_desc_t _irq_desc[NR_IRQS];
#ifndef CONFIG_IA64_GENERIC #ifndef CONFIG_IA64_GENERIC
static inline struct irq_desc * static inline irq_desc_t *
__ia64_irq_desc (unsigned int irq) __ia64_irq_desc (unsigned int irq)
{ {
return _irq_desc + irq; return _irq_desc + irq;
...@@ -124,8 +124,8 @@ __ia64_local_vector_to_irq (ia64_vector vec) ...@@ -124,8 +124,8 @@ __ia64_local_vector_to_irq (ia64_vector vec)
*/ */
/* Return a pointer to the irq descriptor for IRQ. */ /* Return a pointer to the irq descriptor for IRQ. */
static inline struct irq_desc * static inline irq_desc_t *
irq_desc (int irq) irq_descp (int irq)
{ {
return platform_irq_desc(irq); return platform_irq_desc(irq);
} }
......
...@@ -37,7 +37,6 @@ struct thread_info { ...@@ -37,7 +37,6 @@ struct thread_info {
struct restart_block restart_block; struct restart_block restart_block;
}; };
#define INIT_THREAD_SIZE /* tell sched.h not to declare the thread_union */
#define THREAD_SIZE KERNEL_STACK_SIZE #define THREAD_SIZE KERNEL_STACK_SIZE
#define INIT_THREAD_INFO(tsk) \ #define INIT_THREAD_INFO(tsk) \
......
...@@ -15,8 +15,15 @@ ...@@ -15,8 +15,15 @@
typedef unsigned long cycles_t; typedef unsigned long cycles_t;
/* /*
* Something low processor frequency like 100Mhz but * For performance reasons, we don't want to define CLOCK_TICK_TRATE as
* yet multiple of HZ to avoid truncation in some formulas. * local_cpu_data->itc_rate. Fortunately, we don't have to, either: according to George
* Anzinger, 1/CLOCK_TICK_RATE is taken as the resolution of the timer clock. The time
* calculation assumes that you will use enough of these so that your tick size <= 1/HZ.
* If the calculation shows that your CLOCK_TICK_RATE can not supply exactly 1/HZ ticks,
* the actual value is calculated and used to update the wall clock each jiffie. Setting
* the CLOCK_TICK_RATE to x*HZ insures that the calculation will find no errors. Hence we
* pick a multiple of HZ which gives us a (totally virtual) CLOCK_TICK_RATE of about
* 100MHz.
*/ */
#define CLOCK_TICK_RATE (HZ * 100000UL) #define CLOCK_TICK_RATE (HZ * 100000UL)
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/swap.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
......
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
*/ */
#define node_to_cpumask(node) (node_to_cpu_mask[node]) #define node_to_cpumask(node) (node_to_cpu_mask[node])
#else
#define cpu_to_node(cpu) (0)
#define node_to_cpumask(node) (phys_cpu_present_map)
#endif
/* /*
* Returns the number of the node containing MemBlk 'memblk' * Returns the number of the node containing MemBlk 'memblk'
*/ */
...@@ -65,4 +60,8 @@ ...@@ -65,4 +60,8 @@
void build_cpu_to_node_map(void); void build_cpu_to_node_map(void);
#endif /* CONFIG_NUMA */
#include <asm-generic/topology.h>
#endif /* _ASM_IA64_TOPOLOGY_H */ #endif /* _ASM_IA64_TOPOLOGY_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment