diff options
| author | Dave Kleikamp <shaggy@austin.ibm.com> | 2005-06-20 09:44:00 -0400 |
|---|---|---|
| committer | Dave Kleikamp <shaggy@austin.ibm.com> | 2005-06-20 09:44:00 -0400 |
| commit | d039ba24f135147f60a13bcaa768189a5b773b6e (patch) | |
| tree | 444b7596ab8312b5954d15c3135052a7c09c6fbe /arch | |
| parent | 72e3148a6e987974e3e949c5668e5ca812d7c818 (diff) | |
| parent | 8b22c249e7de453961e4d253b19fc2a0bdd65d53 (diff) | |
Merge with /home/shaggy/git/linus-clean/
Diffstat (limited to 'arch')
113 files changed, 1983 insertions, 1150 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index bf397a9f8ac2..475950c8a831 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -497,7 +497,7 @@ source "drivers/cpufreq/Kconfig" | |||
| 497 | 497 | ||
| 498 | config CPU_FREQ_SA1100 | 498 | config CPU_FREQ_SA1100 |
| 499 | bool | 499 | bool |
| 500 | depends on CPU_FREQ && (SA1100_LART || SA1100_PLEB) | 500 | depends on CPU_FREQ && (SA1100_H3100 || SA1100_H3600 || SA1100_H3800 || SA1100_LART || SA1100_PLEB || SA1100_BADGE4 || SA1100_HACKKIT) |
| 501 | default y | 501 | default y |
| 502 | 502 | ||
| 503 | config CPU_FREQ_SA1110 | 503 | config CPU_FREQ_SA1110 |
| @@ -689,7 +689,9 @@ source "drivers/block/Kconfig" | |||
| 689 | 689 | ||
| 690 | source "drivers/acorn/block/Kconfig" | 690 | source "drivers/acorn/block/Kconfig" |
| 691 | 691 | ||
| 692 | if ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE | 692 | if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \ |
| 693 | || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \ | ||
| 694 | || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE | ||
| 693 | source "drivers/ide/Kconfig" | 695 | source "drivers/ide/Kconfig" |
| 694 | endif | 696 | endif |
| 695 | 697 | ||
diff --git a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S index 665bd2c20743..d3fe2533907e 100644 --- a/arch/arm/boot/compressed/head-xscale.S +++ b/arch/arm/boot/compressed/head-xscale.S | |||
| @@ -47,3 +47,10 @@ __XScale_start: | |||
| 47 | orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) | 47 | orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) |
| 48 | #endif | 48 | #endif |
| 49 | 49 | ||
| 50 | #ifdef CONFIG_ARCH_IXP2000 | ||
| 51 | mov r1, #-1 | ||
| 52 | mov r0, #0xd6000000 | ||
| 53 | str r1, [r0, #0x14] | ||
| 54 | str r1, [r0, #0x18] | ||
| 55 | #endif | ||
| 56 | |||
diff --git a/arch/arm/configs/badge4_defconfig b/arch/arm/configs/badge4_defconfig index 2b4059d2f8e4..5d92af975d87 100644 --- a/arch/arm/configs/badge4_defconfig +++ b/arch/arm/configs/badge4_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc1-bk2 | 3 | # Linux kernel version: 2.6.12-rc6-git3 |
| 4 | # Sat Mar 26 21:32:26 2005 | 4 | # Thu Jun 9 19:00:50 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -16,6 +16,7 @@ CONFIG_GENERIC_IOMAP=y | |||
| 16 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
| 17 | CONFIG_CLEAN_COMPILE=y | 17 | CONFIG_CLEAN_COMPILE=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 19 | 20 | ||
| 20 | # | 21 | # |
| 21 | # General setup | 22 | # General setup |
| @@ -34,6 +35,8 @@ CONFIG_EMBEDDED=y | |||
| 34 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 35 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 36 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 37 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 38 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 39 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -109,7 +112,6 @@ CONFIG_CPU_ABRT_EV4=y | |||
| 109 | CONFIG_CPU_CACHE_V4WB=y | 112 | CONFIG_CPU_CACHE_V4WB=y |
| 110 | CONFIG_CPU_CACHE_VIVT=y | 113 | CONFIG_CPU_CACHE_VIVT=y |
| 111 | CONFIG_CPU_TLB_V4WB=y | 114 | CONFIG_CPU_TLB_V4WB=y |
| 112 | CONFIG_CPU_MINICACHE=y | ||
| 113 | 115 | ||
| 114 | # | 116 | # |
| 115 | # Processor Features | 117 | # Processor Features |
| @@ -122,6 +124,7 @@ CONFIG_FORCE_MAX_ZONEORDER=9 | |||
| 122 | # Bus support | 124 | # Bus support |
| 123 | # | 125 | # |
| 124 | CONFIG_ISA=y | 126 | CONFIG_ISA=y |
| 127 | CONFIG_ISA_DMA_API=y | ||
| 125 | 128 | ||
| 126 | # | 129 | # |
| 127 | # PCCARD (PCMCIA/CardBus) support | 130 | # PCCARD (PCMCIA/CardBus) support |
| @@ -131,6 +134,7 @@ CONFIG_ISA=y | |||
| 131 | # | 134 | # |
| 132 | # Kernel Features | 135 | # Kernel Features |
| 133 | # | 136 | # |
| 137 | # CONFIG_SMP is not set | ||
| 134 | # CONFIG_PREEMPT is not set | 138 | # CONFIG_PREEMPT is not set |
| 135 | CONFIG_DISCONTIGMEM=y | 139 | CONFIG_DISCONTIGMEM=y |
| 136 | # CONFIG_LEDS is not set | 140 | # CONFIG_LEDS is not set |
| @@ -152,12 +156,14 @@ CONFIG_CPU_FREQ_TABLE=y | |||
| 152 | # CONFIG_CPU_FREQ_DEBUG is not set | 156 | # CONFIG_CPU_FREQ_DEBUG is not set |
| 153 | CONFIG_CPU_FREQ_STAT=y | 157 | CONFIG_CPU_FREQ_STAT=y |
| 154 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 158 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
| 155 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 159 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
| 156 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 160 | CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y |
| 157 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 161 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y |
| 158 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 162 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
| 159 | # CONFIG_CPU_FREQ_GOV_USERSPACE is not set | 163 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
| 160 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | 164 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set |
| 165 | # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||
| 166 | CONFIG_CPU_FREQ_SA1100=y | ||
| 161 | 167 | ||
| 162 | # | 168 | # |
| 163 | # Floating point emulation | 169 | # Floating point emulation |
| @@ -294,7 +300,6 @@ CONFIG_PARPORT_NOT_PC=y | |||
| 294 | # | 300 | # |
| 295 | # Block devices | 301 | # Block devices |
| 296 | # | 302 | # |
| 297 | # CONFIG_BLK_DEV_FD is not set | ||
| 298 | # CONFIG_BLK_DEV_XD is not set | 303 | # CONFIG_BLK_DEV_XD is not set |
| 299 | # CONFIG_PARIDE is not set | 304 | # CONFIG_PARIDE is not set |
| 300 | # CONFIG_BLK_DEV_COW_COMMON is not set | 305 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| @@ -428,7 +433,6 @@ CONFIG_NET=y | |||
| 428 | # | 433 | # |
| 429 | CONFIG_PACKET=y | 434 | CONFIG_PACKET=y |
| 430 | # CONFIG_PACKET_MMAP is not set | 435 | # CONFIG_PACKET_MMAP is not set |
| 431 | # CONFIG_NETLINK_DEV is not set | ||
| 432 | CONFIG_UNIX=y | 436 | CONFIG_UNIX=y |
| 433 | # CONFIG_NET_KEY is not set | 437 | # CONFIG_NET_KEY is not set |
| 434 | CONFIG_INET=y | 438 | CONFIG_INET=y |
| @@ -526,6 +530,7 @@ CONFIG_IRDA_ULTRA=y | |||
| 526 | # CONFIG_SMC_IRCC_FIR is not set | 530 | # CONFIG_SMC_IRCC_FIR is not set |
| 527 | # CONFIG_ALI_FIR is not set | 531 | # CONFIG_ALI_FIR is not set |
| 528 | CONFIG_SA1100_FIR=y | 532 | CONFIG_SA1100_FIR=y |
| 533 | # CONFIG_VIA_FIR is not set | ||
| 529 | CONFIG_BT=m | 534 | CONFIG_BT=m |
| 530 | CONFIG_BT_L2CAP=m | 535 | CONFIG_BT_L2CAP=m |
| 531 | # CONFIG_BT_SCO is not set | 536 | # CONFIG_BT_SCO is not set |
| @@ -618,7 +623,6 @@ CONFIG_NET_WIRELESS=y | |||
| 618 | # | 623 | # |
| 619 | # CONFIG_SERIO is not set | 624 | # CONFIG_SERIO is not set |
| 620 | # CONFIG_GAMEPORT is not set | 625 | # CONFIG_GAMEPORT is not set |
| 621 | CONFIG_SOUND_GAMEPORT=y | ||
| 622 | 626 | ||
| 623 | # | 627 | # |
| 624 | # Character devices | 628 | # Character devices |
| @@ -687,7 +691,6 @@ CONFIG_RTC=m | |||
| 687 | # | 691 | # |
| 688 | # TPM devices | 692 | # TPM devices |
| 689 | # | 693 | # |
| 690 | # CONFIG_TCG_TPM is not set | ||
| 691 | 694 | ||
| 692 | # | 695 | # |
| 693 | # I2C support | 696 | # I2C support |
| @@ -736,6 +739,7 @@ CONFIG_I2C_ELEKTOR=m | |||
| 736 | # CONFIG_SENSORS_LM85 is not set | 739 | # CONFIG_SENSORS_LM85 is not set |
| 737 | # CONFIG_SENSORS_LM87 is not set | 740 | # CONFIG_SENSORS_LM87 is not set |
| 738 | # CONFIG_SENSORS_LM90 is not set | 741 | # CONFIG_SENSORS_LM90 is not set |
| 742 | # CONFIG_SENSORS_LM92 is not set | ||
| 739 | # CONFIG_SENSORS_MAX1619 is not set | 743 | # CONFIG_SENSORS_MAX1619 is not set |
| 740 | # CONFIG_SENSORS_PC87360 is not set | 744 | # CONFIG_SENSORS_PC87360 is not set |
| 741 | # CONFIG_SENSORS_SMSC47B397 is not set | 745 | # CONFIG_SENSORS_SMSC47B397 is not set |
| @@ -747,6 +751,7 @@ CONFIG_I2C_ELEKTOR=m | |||
| 747 | # | 751 | # |
| 748 | # Other I2C Chip support | 752 | # Other I2C Chip support |
| 749 | # | 753 | # |
| 754 | # CONFIG_SENSORS_DS1337 is not set | ||
| 750 | # CONFIG_SENSORS_EEPROM is not set | 755 | # CONFIG_SENSORS_EEPROM is not set |
| 751 | # CONFIG_SENSORS_PCF8574 is not set | 756 | # CONFIG_SENSORS_PCF8574 is not set |
| 752 | # CONFIG_SENSORS_PCF8591 is not set | 757 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -871,7 +876,6 @@ CONFIG_USB_PRINTER=m | |||
| 871 | # | 876 | # |
| 872 | CONFIG_USB_STORAGE=y | 877 | CONFIG_USB_STORAGE=y |
| 873 | CONFIG_USB_STORAGE_DEBUG=y | 878 | CONFIG_USB_STORAGE_DEBUG=y |
| 874 | # CONFIG_USB_STORAGE_RW_DETECT is not set | ||
| 875 | # CONFIG_USB_STORAGE_DATAFAB is not set | 879 | # CONFIG_USB_STORAGE_DATAFAB is not set |
| 876 | # CONFIG_USB_STORAGE_FREECOM is not set | 880 | # CONFIG_USB_STORAGE_FREECOM is not set |
| 877 | # CONFIG_USB_STORAGE_ISD200 is not set | 881 | # CONFIG_USB_STORAGE_ISD200 is not set |
| @@ -954,9 +958,11 @@ CONFIG_USB_USS720=m | |||
| 954 | # | 958 | # |
| 955 | CONFIG_USB_SERIAL=m | 959 | CONFIG_USB_SERIAL=m |
| 956 | CONFIG_USB_SERIAL_GENERIC=y | 960 | CONFIG_USB_SERIAL_GENERIC=y |
| 961 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 957 | CONFIG_USB_SERIAL_BELKIN=m | 962 | CONFIG_USB_SERIAL_BELKIN=m |
| 958 | CONFIG_USB_SERIAL_WHITEHEAT=m | 963 | CONFIG_USB_SERIAL_WHITEHEAT=m |
| 959 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | 964 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m |
| 965 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 960 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set | 966 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set |
| 961 | CONFIG_USB_SERIAL_EMPEG=m | 967 | CONFIG_USB_SERIAL_EMPEG=m |
| 962 | CONFIG_USB_SERIAL_FTDI_SIO=m | 968 | CONFIG_USB_SERIAL_FTDI_SIO=m |
| @@ -985,6 +991,7 @@ CONFIG_USB_SERIAL_KEYSPAN=m | |||
| 985 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | 991 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set |
| 986 | CONFIG_USB_SERIAL_MCT_U232=m | 992 | CONFIG_USB_SERIAL_MCT_U232=m |
| 987 | CONFIG_USB_SERIAL_PL2303=m | 993 | CONFIG_USB_SERIAL_PL2303=m |
| 994 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 988 | # CONFIG_USB_SERIAL_SAFE is not set | 995 | # CONFIG_USB_SERIAL_SAFE is not set |
| 989 | # CONFIG_USB_SERIAL_TI is not set | 996 | # CONFIG_USB_SERIAL_TI is not set |
| 990 | CONFIG_USB_SERIAL_CYBERJACK=m | 997 | CONFIG_USB_SERIAL_CYBERJACK=m |
diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig index b4e297dd54b2..b9de07de80fe 100644 --- a/arch/arm/configs/h3600_defconfig +++ b/arch/arm/configs/h3600_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc1-bk2 | 3 | # Linux kernel version: 2.6.12-rc4 |
| 4 | # Mon Mar 28 00:02:26 2005 | 4 | # Thu Jun 9 01:59:03 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -16,6 +16,7 @@ CONFIG_GENERIC_IOMAP=y | |||
| 16 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
| 17 | CONFIG_CLEAN_COMPILE=y | 17 | CONFIG_CLEAN_COMPILE=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 19 | 20 | ||
| 20 | # | 21 | # |
| 21 | # General setup | 22 | # General setup |
| @@ -33,6 +34,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 33 | # CONFIG_EMBEDDED is not set | 34 | # CONFIG_EMBEDDED is not set |
| 34 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 36 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 37 | CONFIG_PRINTK=y | ||
| 38 | CONFIG_BUG=y | ||
| 36 | CONFIG_BASE_FULL=y | 39 | CONFIG_BASE_FULL=y |
| 37 | CONFIG_FUTEX=y | 40 | CONFIG_FUTEX=y |
| 38 | CONFIG_EPOLL=y | 41 | CONFIG_EPOLL=y |
| @@ -120,6 +123,7 @@ CONFIG_CPU_MINICACHE=y | |||
| 120 | # Bus support | 123 | # Bus support |
| 121 | # | 124 | # |
| 122 | CONFIG_ISA=y | 125 | CONFIG_ISA=y |
| 126 | CONFIG_ISA_DMA_API=y | ||
| 123 | 127 | ||
| 124 | # | 128 | # |
| 125 | # PCCARD (PCMCIA/CardBus) support | 129 | # PCCARD (PCMCIA/CardBus) support |
| @@ -138,6 +142,7 @@ CONFIG_PCMCIA_SA1100=y | |||
| 138 | # | 142 | # |
| 139 | # Kernel Features | 143 | # Kernel Features |
| 140 | # | 144 | # |
| 145 | # CONFIG_SMP is not set | ||
| 141 | # CONFIG_PREEMPT is not set | 146 | # CONFIG_PREEMPT is not set |
| 142 | CONFIG_DISCONTIGMEM=y | 147 | CONFIG_DISCONTIGMEM=y |
| 143 | # CONFIG_LEDS is not set | 148 | # CONFIG_LEDS is not set |
| @@ -159,12 +164,13 @@ CONFIG_CPU_FREQ_TABLE=y | |||
| 159 | # CONFIG_CPU_FREQ_DEBUG is not set | 164 | # CONFIG_CPU_FREQ_DEBUG is not set |
| 160 | CONFIG_CPU_FREQ_STAT=y | 165 | CONFIG_CPU_FREQ_STAT=y |
| 161 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 166 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
| 162 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 167 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
| 163 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 168 | CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y |
| 164 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 169 | # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set |
| 165 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 170 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
| 166 | # CONFIG_CPU_FREQ_GOV_USERSPACE is not set | 171 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
| 167 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | 172 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set |
| 173 | CONFIG_CPU_FREQ_SA1100=y | ||
| 168 | 174 | ||
| 169 | # | 175 | # |
| 170 | # Floating point emulation | 176 | # Floating point emulation |
| @@ -298,7 +304,6 @@ CONFIG_MTD_SA1100=y | |||
| 298 | # | 304 | # |
| 299 | # Block devices | 305 | # Block devices |
| 300 | # | 306 | # |
| 301 | # CONFIG_BLK_DEV_FD is not set | ||
| 302 | # CONFIG_BLK_DEV_XD is not set | 307 | # CONFIG_BLK_DEV_XD is not set |
| 303 | # CONFIG_BLK_DEV_COW_COMMON is not set | 308 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 304 | CONFIG_BLK_DEV_LOOP=m | 309 | CONFIG_BLK_DEV_LOOP=m |
| @@ -379,7 +384,6 @@ CONFIG_NET=y | |||
| 379 | # Networking options | 384 | # Networking options |
| 380 | # | 385 | # |
| 381 | # CONFIG_PACKET is not set | 386 | # CONFIG_PACKET is not set |
| 382 | # CONFIG_NETLINK_DEV is not set | ||
| 383 | CONFIG_UNIX=y | 387 | CONFIG_UNIX=y |
| 384 | # CONFIG_NET_KEY is not set | 388 | # CONFIG_NET_KEY is not set |
| 385 | CONFIG_INET=y | 389 | CONFIG_INET=y |
| @@ -476,6 +480,7 @@ CONFIG_IRCOMM=m | |||
| 476 | # CONFIG_SMC_IRCC_FIR is not set | 480 | # CONFIG_SMC_IRCC_FIR is not set |
| 477 | # CONFIG_ALI_FIR is not set | 481 | # CONFIG_ALI_FIR is not set |
| 478 | CONFIG_SA1100_FIR=m | 482 | CONFIG_SA1100_FIR=m |
| 483 | # CONFIG_VIA_FIR is not set | ||
| 479 | # CONFIG_BT is not set | 484 | # CONFIG_BT is not set |
| 480 | CONFIG_NETDEVICES=y | 485 | CONFIG_NETDEVICES=y |
| 481 | # CONFIG_DUMMY is not set | 486 | # CONFIG_DUMMY is not set |
| @@ -647,7 +652,6 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 647 | # | 652 | # |
| 648 | # TPM devices | 653 | # TPM devices |
| 649 | # | 654 | # |
| 650 | # CONFIG_TCG_TPM is not set | ||
| 651 | 655 | ||
| 652 | # | 656 | # |
| 653 | # I2C support | 657 | # I2C support |
| @@ -676,9 +680,11 @@ CONFIG_FB_CFB_FILLRECT=y | |||
| 676 | CONFIG_FB_CFB_COPYAREA=y | 680 | CONFIG_FB_CFB_COPYAREA=y |
| 677 | CONFIG_FB_CFB_IMAGEBLIT=y | 681 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 678 | CONFIG_FB_SOFT_CURSOR=y | 682 | CONFIG_FB_SOFT_CURSOR=y |
| 683 | # CONFIG_FB_MACMODES is not set | ||
| 679 | # CONFIG_FB_MODE_HELPERS is not set | 684 | # CONFIG_FB_MODE_HELPERS is not set |
| 680 | # CONFIG_FB_TILEBLITTING is not set | 685 | # CONFIG_FB_TILEBLITTING is not set |
| 681 | CONFIG_FB_SA1100=y | 686 | CONFIG_FB_SA1100=y |
| 687 | # CONFIG_FB_S1D13XXX is not set | ||
| 682 | # CONFIG_FB_VIRTUAL is not set | 688 | # CONFIG_FB_VIRTUAL is not set |
| 683 | 689 | ||
| 684 | # | 690 | # |
diff --git a/arch/arm/configs/hackkit_defconfig b/arch/arm/configs/hackkit_defconfig index 6987c8c5ddb4..fb41a36a5a68 100644 --- a/arch/arm/configs/hackkit_defconfig +++ b/arch/arm/configs/hackkit_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc1-bk2 | 3 | # Linux kernel version: 2.6.12-rc6-git3 |
| 4 | # Mon Mar 28 00:22:34 2005 | 4 | # Thu Jun 9 20:58:58 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -16,6 +16,7 @@ CONFIG_GENERIC_IOMAP=y | |||
| 16 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
| 17 | CONFIG_CLEAN_COMPILE=y | 17 | CONFIG_CLEAN_COMPILE=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 19 | 20 | ||
| 20 | # | 21 | # |
| 21 | # General setup | 22 | # General setup |
| @@ -34,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 34 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 35 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 36 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 37 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 38 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 39 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -109,7 +112,6 @@ CONFIG_CPU_ABRT_EV4=y | |||
| 109 | CONFIG_CPU_CACHE_V4WB=y | 112 | CONFIG_CPU_CACHE_V4WB=y |
| 110 | CONFIG_CPU_CACHE_VIVT=y | 113 | CONFIG_CPU_CACHE_VIVT=y |
| 111 | CONFIG_CPU_TLB_V4WB=y | 114 | CONFIG_CPU_TLB_V4WB=y |
| 112 | CONFIG_CPU_MINICACHE=y | ||
| 113 | 115 | ||
| 114 | # | 116 | # |
| 115 | # Processor Features | 117 | # Processor Features |
| @@ -119,6 +121,7 @@ CONFIG_CPU_MINICACHE=y | |||
| 119 | # Bus support | 121 | # Bus support |
| 120 | # | 122 | # |
| 121 | CONFIG_ISA=y | 123 | CONFIG_ISA=y |
| 124 | CONFIG_ISA_DMA_API=y | ||
| 122 | 125 | ||
| 123 | # | 126 | # |
| 124 | # PCCARD (PCMCIA/CardBus) support | 127 | # PCCARD (PCMCIA/CardBus) support |
| @@ -128,6 +131,7 @@ CONFIG_ISA=y | |||
| 128 | # | 131 | # |
| 129 | # Kernel Features | 132 | # Kernel Features |
| 130 | # | 133 | # |
| 134 | # CONFIG_SMP is not set | ||
| 131 | # CONFIG_PREEMPT is not set | 135 | # CONFIG_PREEMPT is not set |
| 132 | CONFIG_DISCONTIGMEM=y | 136 | CONFIG_DISCONTIGMEM=y |
| 133 | CONFIG_LEDS=y | 137 | CONFIG_LEDS=y |
| @@ -151,12 +155,14 @@ CONFIG_CPU_FREQ_TABLE=y | |||
| 151 | # CONFIG_CPU_FREQ_DEBUG is not set | 155 | # CONFIG_CPU_FREQ_DEBUG is not set |
| 152 | CONFIG_CPU_FREQ_STAT=y | 156 | CONFIG_CPU_FREQ_STAT=y |
| 153 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 157 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
| 154 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 158 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
| 155 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 159 | CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y |
| 156 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 160 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y |
| 157 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 161 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
| 158 | # CONFIG_CPU_FREQ_GOV_USERSPACE is not set | 162 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
| 159 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | 163 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set |
| 164 | # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||
| 165 | CONFIG_CPU_FREQ_SA1100=y | ||
| 160 | 166 | ||
| 161 | # | 167 | # |
| 162 | # Floating point emulation | 168 | # Floating point emulation |
| @@ -280,7 +286,6 @@ CONFIG_MTD_CFI_UTIL=y | |||
| 280 | # | 286 | # |
| 281 | # Block devices | 287 | # Block devices |
| 282 | # | 288 | # |
| 283 | # CONFIG_BLK_DEV_FD is not set | ||
| 284 | # CONFIG_BLK_DEV_XD is not set | 289 | # CONFIG_BLK_DEV_XD is not set |
| 285 | # CONFIG_BLK_DEV_COW_COMMON is not set | 290 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 286 | # CONFIG_BLK_DEV_LOOP is not set | 291 | # CONFIG_BLK_DEV_LOOP is not set |
| @@ -338,7 +343,6 @@ CONFIG_NET=y | |||
| 338 | # | 343 | # |
| 339 | CONFIG_PACKET=y | 344 | CONFIG_PACKET=y |
| 340 | # CONFIG_PACKET_MMAP is not set | 345 | # CONFIG_PACKET_MMAP is not set |
| 341 | # CONFIG_NETLINK_DEV is not set | ||
| 342 | CONFIG_UNIX=y | 346 | CONFIG_UNIX=y |
| 343 | # CONFIG_NET_KEY is not set | 347 | # CONFIG_NET_KEY is not set |
| 344 | CONFIG_INET=y | 348 | CONFIG_INET=y |
| @@ -484,7 +488,6 @@ CONFIG_SERIO=y | |||
| 484 | CONFIG_SERIO_SERPORT=y | 488 | CONFIG_SERIO_SERPORT=y |
| 485 | # CONFIG_SERIO_RAW is not set | 489 | # CONFIG_SERIO_RAW is not set |
| 486 | # CONFIG_GAMEPORT is not set | 490 | # CONFIG_GAMEPORT is not set |
| 487 | CONFIG_SOUND_GAMEPORT=y | ||
| 488 | 491 | ||
| 489 | # | 492 | # |
| 490 | # Character devices | 493 | # Character devices |
| @@ -533,7 +536,6 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 533 | # | 536 | # |
| 534 | # TPM devices | 537 | # TPM devices |
| 535 | # | 538 | # |
| 536 | # CONFIG_TCG_TPM is not set | ||
| 537 | 539 | ||
| 538 | # | 540 | # |
| 539 | # I2C support | 541 | # I2C support |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 4eb36155dc93..39a6c1b0b9a3 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
| @@ -24,48 +24,91 @@ | |||
| 24 | #include "entry-header.S" | 24 | #include "entry-header.S" |
| 25 | 25 | ||
| 26 | /* | 26 | /* |
| 27 | * Interrupt handling. Preserves r7, r8, r9 | ||
| 28 | */ | ||
| 29 | .macro irq_handler | ||
| 30 | 1: get_irqnr_and_base r0, r6, r5, lr | ||
| 31 | movne r1, sp | ||
| 32 | @ | ||
| 33 | @ routine called with r0 = irq number, r1 = struct pt_regs * | ||
| 34 | @ | ||
| 35 | adrne lr, 1b | ||
| 36 | bne asm_do_IRQ | ||
| 37 | |||
| 38 | #ifdef CONFIG_SMP | ||
| 39 | /* | ||
| 40 | * XXX | ||
| 41 | * | ||
| 42 | * this macro assumes that irqstat (r6) and base (r5) are | ||
| 43 | * preserved from get_irqnr_and_base above | ||
| 44 | */ | ||
| 45 | test_for_ipi r0, r6, r5, lr | ||
| 46 | movne r0, sp | ||
| 47 | adrne lr, 1b | ||
| 48 | bne do_IPI | ||
| 49 | #endif | ||
| 50 | |||
| 51 | .endm | ||
| 52 | |||
| 53 | /* | ||
| 27 | * Invalid mode handlers | 54 | * Invalid mode handlers |
| 28 | */ | 55 | */ |
| 29 | .macro inv_entry, sym, reason | 56 | .macro inv_entry, reason |
| 30 | sub sp, sp, #S_FRAME_SIZE @ Allocate frame size in one go | 57 | sub sp, sp, #S_FRAME_SIZE |
| 31 | stmia sp, {r0 - lr} @ Save XXX r0 - lr | 58 | stmib sp, {r1 - lr} |
| 32 | ldr r4, .LC\sym | ||
| 33 | mov r1, #\reason | 59 | mov r1, #\reason |
| 34 | .endm | 60 | .endm |
| 35 | 61 | ||
| 36 | __pabt_invalid: | 62 | __pabt_invalid: |
| 37 | inv_entry abt, BAD_PREFETCH | 63 | inv_entry BAD_PREFETCH |
| 38 | b 1f | 64 | b common_invalid |
| 39 | 65 | ||
| 40 | __dabt_invalid: | 66 | __dabt_invalid: |
| 41 | inv_entry abt, BAD_DATA | 67 | inv_entry BAD_DATA |
| 42 | b 1f | 68 | b common_invalid |
| 43 | 69 | ||
| 44 | __irq_invalid: | 70 | __irq_invalid: |
| 45 | inv_entry irq, BAD_IRQ | 71 | inv_entry BAD_IRQ |
| 46 | b 1f | 72 | b common_invalid |
| 47 | 73 | ||
| 48 | __und_invalid: | 74 | __und_invalid: |
| 49 | inv_entry und, BAD_UNDEFINSTR | 75 | inv_entry BAD_UNDEFINSTR |
| 76 | |||
| 77 | @ | ||
| 78 | @ XXX fall through to common_invalid | ||
| 79 | @ | ||
| 80 | |||
| 81 | @ | ||
| 82 | @ common_invalid - generic code for failed exception (re-entrant version of handlers) | ||
| 83 | @ | ||
| 84 | common_invalid: | ||
| 85 | zero_fp | ||
| 86 | |||
| 87 | ldmia r0, {r4 - r6} | ||
| 88 | add r0, sp, #S_PC @ here for interlock avoidance | ||
| 89 | mov r7, #-1 @ "" "" "" "" | ||
| 90 | str r4, [sp] @ save preserved r0 | ||
| 91 | stmia r0, {r5 - r7} @ lr_<exception>, | ||
| 92 | @ cpsr_<exception>, "old_r0" | ||
| 50 | 93 | ||
| 51 | 1: zero_fp | ||
| 52 | ldmia r4, {r5 - r7} @ Get XXX pc, cpsr, old_r0 | ||
| 53 | add r4, sp, #S_PC | ||
| 54 | stmia r4, {r5 - r7} @ Save XXX pc, cpsr, old_r0 | ||
| 55 | mov r0, sp | 94 | mov r0, sp |
| 56 | and r2, r6, #31 @ int mode | 95 | and r2, r6, #0x1f |
| 57 | b bad_mode | 96 | b bad_mode |
| 58 | 97 | ||
| 59 | /* | 98 | /* |
| 60 | * SVC mode handlers | 99 | * SVC mode handlers |
| 61 | */ | 100 | */ |
| 62 | .macro svc_entry, sym | 101 | .macro svc_entry |
| 63 | sub sp, sp, #S_FRAME_SIZE | 102 | sub sp, sp, #S_FRAME_SIZE |
| 64 | stmia sp, {r0 - r12} @ save r0 - r12 | 103 | stmib sp, {r1 - r12} |
| 65 | ldr r2, .LC\sym | 104 | |
| 66 | add r0, sp, #S_FRAME_SIZE | 105 | ldmia r0, {r1 - r3} |
| 67 | ldmia r2, {r2 - r4} @ get pc, cpsr | 106 | add r5, sp, #S_SP @ here for interlock avoidance |
| 68 | add r5, sp, #S_SP | 107 | mov r4, #-1 @ "" "" "" "" |
| 108 | add r0, sp, #S_FRAME_SIZE @ "" "" "" "" | ||
| 109 | str r1, [sp] @ save the "real" r0 copied | ||
| 110 | @ from the exception stack | ||
| 111 | |||
| 69 | mov r1, lr | 112 | mov r1, lr |
| 70 | 113 | ||
| 71 | @ | 114 | @ |
| @@ -82,7 +125,7 @@ __und_invalid: | |||
| 82 | 125 | ||
| 83 | .align 5 | 126 | .align 5 |
| 84 | __dabt_svc: | 127 | __dabt_svc: |
| 85 | svc_entry abt | 128 | svc_entry |
| 86 | 129 | ||
| 87 | @ | 130 | @ |
| 88 | @ get ready to re-enable interrupts if appropriate | 131 | @ get ready to re-enable interrupts if appropriate |
| @@ -129,28 +172,24 @@ __dabt_svc: | |||
| 129 | 172 | ||
| 130 | .align 5 | 173 | .align 5 |
| 131 | __irq_svc: | 174 | __irq_svc: |
| 132 | svc_entry irq | 175 | svc_entry |
| 176 | |||
| 133 | #ifdef CONFIG_PREEMPT | 177 | #ifdef CONFIG_PREEMPT |
| 134 | get_thread_info r8 | 178 | get_thread_info tsk |
| 135 | ldr r9, [r8, #TI_PREEMPT] @ get preempt count | 179 | ldr r8, [tsk, #TI_PREEMPT] @ get preempt count |
| 136 | add r7, r9, #1 @ increment it | 180 | add r7, r8, #1 @ increment it |
| 137 | str r7, [r8, #TI_PREEMPT] | 181 | str r7, [tsk, #TI_PREEMPT] |
| 138 | #endif | 182 | #endif |
| 139 | 1: get_irqnr_and_base r0, r6, r5, lr | 183 | |
| 140 | movne r1, sp | 184 | irq_handler |
| 141 | @ | ||
| 142 | @ routine called with r0 = irq number, r1 = struct pt_regs * | ||
| 143 | @ | ||
| 144 | adrne lr, 1b | ||
| 145 | bne asm_do_IRQ | ||
| 146 | #ifdef CONFIG_PREEMPT | 185 | #ifdef CONFIG_PREEMPT |
| 147 | ldr r0, [r8, #TI_FLAGS] @ get flags | 186 | ldr r0, [tsk, #TI_FLAGS] @ get flags |
| 148 | tst r0, #_TIF_NEED_RESCHED | 187 | tst r0, #_TIF_NEED_RESCHED |
| 149 | blne svc_preempt | 188 | blne svc_preempt |
| 150 | preempt_return: | 189 | preempt_return: |
| 151 | ldr r0, [r8, #TI_PREEMPT] @ read preempt value | 190 | ldr r0, [tsk, #TI_PREEMPT] @ read preempt value |
| 191 | str r8, [tsk, #TI_PREEMPT] @ restore preempt count | ||
| 152 | teq r0, r7 | 192 | teq r0, r7 |
| 153 | str r9, [r8, #TI_PREEMPT] @ restore preempt count | ||
| 154 | strne r0, [r0, -r0] @ bug() | 193 | strne r0, [r0, -r0] @ bug() |
| 155 | #endif | 194 | #endif |
| 156 | ldr r0, [sp, #S_PSR] @ irqs are already disabled | 195 | ldr r0, [sp, #S_PSR] @ irqs are already disabled |
| @@ -161,7 +200,7 @@ preempt_return: | |||
| 161 | 200 | ||
| 162 | #ifdef CONFIG_PREEMPT | 201 | #ifdef CONFIG_PREEMPT |
| 163 | svc_preempt: | 202 | svc_preempt: |
| 164 | teq r9, #0 @ was preempt count = 0 | 203 | teq r8, #0 @ was preempt count = 0 |
| 165 | ldreq r6, .LCirq_stat | 204 | ldreq r6, .LCirq_stat |
| 166 | movne pc, lr @ no | 205 | movne pc, lr @ no |
| 167 | ldr r0, [r6, #4] @ local_irq_count | 206 | ldr r0, [r6, #4] @ local_irq_count |
| @@ -169,9 +208,9 @@ svc_preempt: | |||
| 169 | adds r0, r0, r1 | 208 | adds r0, r0, r1 |
| 170 | movne pc, lr | 209 | movne pc, lr |
| 171 | mov r7, #0 @ preempt_schedule_irq | 210 | mov r7, #0 @ preempt_schedule_irq |
| 172 | str r7, [r8, #TI_PREEMPT] @ expects preempt_count == 0 | 211 | str r7, [tsk, #TI_PREEMPT] @ expects preempt_count == 0 |
| 173 | 1: bl preempt_schedule_irq @ irq en/disable is done inside | 212 | 1: bl preempt_schedule_irq @ irq en/disable is done inside |
| 174 | ldr r0, [r8, #TI_FLAGS] @ get new tasks TI_FLAGS | 213 | ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS |
| 175 | tst r0, #_TIF_NEED_RESCHED | 214 | tst r0, #_TIF_NEED_RESCHED |
| 176 | beq preempt_return @ go again | 215 | beq preempt_return @ go again |
| 177 | b 1b | 216 | b 1b |
| @@ -179,7 +218,7 @@ svc_preempt: | |||
| 179 | 218 | ||
| 180 | .align 5 | 219 | .align 5 |
| 181 | __und_svc: | 220 | __und_svc: |
| 182 | svc_entry und | 221 | svc_entry |
| 183 | 222 | ||
| 184 | @ | 223 | @ |
| 185 | @ call emulation code, which returns using r9 if it has emulated | 224 | @ call emulation code, which returns using r9 if it has emulated |
| @@ -209,7 +248,7 @@ __und_svc: | |||
| 209 | 248 | ||
| 210 | .align 5 | 249 | .align 5 |
| 211 | __pabt_svc: | 250 | __pabt_svc: |
| 212 | svc_entry abt | 251 | svc_entry |
| 213 | 252 | ||
| 214 | @ | 253 | @ |
| 215 | @ re-enable interrupts if appropriate | 254 | @ re-enable interrupts if appropriate |
| @@ -242,12 +281,8 @@ __pabt_svc: | |||
| 242 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr | 281 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr |
| 243 | 282 | ||
| 244 | .align 5 | 283 | .align 5 |
| 245 | .LCirq: | 284 | .LCcralign: |
| 246 | .word __temp_irq | 285 | .word cr_alignment |
| 247 | .LCund: | ||
| 248 | .word __temp_und | ||
| 249 | .LCabt: | ||
| 250 | .word __temp_abt | ||
| 251 | #ifdef MULTI_ABORT | 286 | #ifdef MULTI_ABORT |
| 252 | .LCprocfns: | 287 | .LCprocfns: |
| 253 | .word processor | 288 | .word processor |
| @@ -262,14 +297,18 @@ __pabt_svc: | |||
| 262 | /* | 297 | /* |
| 263 | * User mode handlers | 298 | * User mode handlers |
| 264 | */ | 299 | */ |
| 265 | .macro usr_entry, sym | 300 | .macro usr_entry |
| 266 | sub sp, sp, #S_FRAME_SIZE @ Allocate frame size in one go | 301 | sub sp, sp, #S_FRAME_SIZE |
| 267 | stmia sp, {r0 - r12} @ save r0 - r12 | 302 | stmib sp, {r1 - r12} |
| 268 | ldr r7, .LC\sym | 303 | |
| 269 | add r5, sp, #S_PC | 304 | ldmia r0, {r1 - r3} |
| 270 | ldmia r7, {r2 - r4} @ Get USR pc, cpsr | 305 | add r0, sp, #S_PC @ here for interlock avoidance |
| 271 | 306 | mov r4, #-1 @ "" "" "" "" | |
| 272 | #if __LINUX_ARM_ARCH__ < 6 | 307 | |
| 308 | str r1, [sp] @ save the "real" r0 copied | ||
| 309 | @ from the exception stack | ||
| 310 | |||
| 311 | #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) | ||
| 273 | @ make sure our user space atomic helper is aborted | 312 | @ make sure our user space atomic helper is aborted |
| 274 | cmp r2, #VIRT_OFFSET | 313 | cmp r2, #VIRT_OFFSET |
| 275 | bichs r3, r3, #PSR_Z_BIT | 314 | bichs r3, r3, #PSR_Z_BIT |
| @@ -284,13 +323,13 @@ __pabt_svc: | |||
| 284 | @ | 323 | @ |
| 285 | @ Also, separately save sp_usr and lr_usr | 324 | @ Also, separately save sp_usr and lr_usr |
| 286 | @ | 325 | @ |
| 287 | stmia r5, {r2 - r4} | 326 | stmia r0, {r2 - r4} |
| 288 | stmdb r5, {sp, lr}^ | 327 | stmdb r0, {sp, lr}^ |
| 289 | 328 | ||
| 290 | @ | 329 | @ |
| 291 | @ Enable the alignment trap while in kernel mode | 330 | @ Enable the alignment trap while in kernel mode |
| 292 | @ | 331 | @ |
| 293 | alignment_trap r7, r0, __temp_\sym | 332 | alignment_trap r0 |
| 294 | 333 | ||
| 295 | @ | 334 | @ |
| 296 | @ Clear FP to mark the first stack frame | 335 | @ Clear FP to mark the first stack frame |
| @@ -300,7 +339,7 @@ __pabt_svc: | |||
| 300 | 339 | ||
| 301 | .align 5 | 340 | .align 5 |
| 302 | __dabt_usr: | 341 | __dabt_usr: |
| 303 | usr_entry abt | 342 | usr_entry |
| 304 | 343 | ||
| 305 | @ | 344 | @ |
| 306 | @ Call the processor-specific abort handler: | 345 | @ Call the processor-specific abort handler: |
| @@ -329,30 +368,23 @@ __dabt_usr: | |||
| 329 | 368 | ||
| 330 | .align 5 | 369 | .align 5 |
| 331 | __irq_usr: | 370 | __irq_usr: |
| 332 | usr_entry irq | 371 | usr_entry |
| 333 | 372 | ||
| 373 | get_thread_info tsk | ||
| 334 | #ifdef CONFIG_PREEMPT | 374 | #ifdef CONFIG_PREEMPT |
| 335 | get_thread_info r8 | 375 | ldr r8, [tsk, #TI_PREEMPT] @ get preempt count |
| 336 | ldr r9, [r8, #TI_PREEMPT] @ get preempt count | 376 | add r7, r8, #1 @ increment it |
| 337 | add r7, r9, #1 @ increment it | 377 | str r7, [tsk, #TI_PREEMPT] |
| 338 | str r7, [r8, #TI_PREEMPT] | ||
| 339 | #endif | 378 | #endif |
| 340 | 1: get_irqnr_and_base r0, r6, r5, lr | 379 | |
| 341 | movne r1, sp | 380 | irq_handler |
| 342 | adrne lr, 1b | ||
| 343 | @ | ||
| 344 | @ routine called with r0 = irq number, r1 = struct pt_regs * | ||
| 345 | @ | ||
| 346 | bne asm_do_IRQ | ||
| 347 | #ifdef CONFIG_PREEMPT | 381 | #ifdef CONFIG_PREEMPT |
| 348 | ldr r0, [r8, #TI_PREEMPT] | 382 | ldr r0, [tsk, #TI_PREEMPT] |
| 383 | str r8, [tsk, #TI_PREEMPT] | ||
| 349 | teq r0, r7 | 384 | teq r0, r7 |
| 350 | str r9, [r8, #TI_PREEMPT] | ||
| 351 | strne r0, [r0, -r0] | 385 | strne r0, [r0, -r0] |
| 352 | mov tsk, r8 | ||
| 353 | #else | ||
| 354 | get_thread_info tsk | ||
| 355 | #endif | 386 | #endif |
| 387 | |||
| 356 | mov why, #0 | 388 | mov why, #0 |
| 357 | b ret_to_user | 389 | b ret_to_user |
| 358 | 390 | ||
| @@ -360,7 +392,7 @@ __irq_usr: | |||
| 360 | 392 | ||
| 361 | .align 5 | 393 | .align 5 |
| 362 | __und_usr: | 394 | __und_usr: |
| 363 | usr_entry und | 395 | usr_entry |
| 364 | 396 | ||
| 365 | tst r3, #PSR_T_BIT @ Thumb mode? | 397 | tst r3, #PSR_T_BIT @ Thumb mode? |
| 366 | bne fpundefinstr @ ignore FP | 398 | bne fpundefinstr @ ignore FP |
| @@ -476,7 +508,7 @@ fpundefinstr: | |||
| 476 | 508 | ||
| 477 | .align 5 | 509 | .align 5 |
| 478 | __pabt_usr: | 510 | __pabt_usr: |
| 479 | usr_entry abt | 511 | usr_entry |
| 480 | 512 | ||
| 481 | enable_irq @ Enable interrupts | 513 | enable_irq @ Enable interrupts |
| 482 | mov r0, r2 @ address (pc) | 514 | mov r0, r2 @ address (pc) |
| @@ -616,11 +648,17 @@ __kuser_helper_start: | |||
| 616 | 648 | ||
| 617 | __kuser_cmpxchg: @ 0xffff0fc0 | 649 | __kuser_cmpxchg: @ 0xffff0fc0 |
| 618 | 650 | ||
| 619 | #if __LINUX_ARM_ARCH__ < 6 | 651 | #if defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) |
| 620 | 652 | ||
| 621 | #ifdef CONFIG_SMP /* sanity check */ | 653 | /* |
| 622 | #error "CONFIG_SMP on a machine supporting pre-ARMv6 processors?" | 654 | * Poor you. No fast solution possible... |
| 623 | #endif | 655 | * The kernel itself must perform the operation. |
| 656 | * A special ghost syscall is used for that (see traps.c). | ||
| 657 | */ | ||
| 658 | swi #0x9ffff0 | ||
| 659 | mov pc, lr | ||
| 660 | |||
| 661 | #elif __LINUX_ARM_ARCH__ < 6 | ||
| 624 | 662 | ||
| 625 | /* | 663 | /* |
| 626 | * Theory of operation: | 664 | * Theory of operation: |
| @@ -735,29 +773,41 @@ __kuser_helper_end: | |||
| 735 | * | 773 | * |
| 736 | * Common stub entry macro: | 774 | * Common stub entry macro: |
| 737 | * Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC | 775 | * Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC |
| 776 | * | ||
| 777 | * SP points to a minimal amount of processor-private memory, the address | ||
| 778 | * of which is copied into r0 for the mode specific abort handler. | ||
| 738 | */ | 779 | */ |
| 739 | .macro vector_stub, name, sym, correction=0 | 780 | .macro vector_stub, name, correction=0 |
| 740 | .align 5 | 781 | .align 5 |
| 741 | 782 | ||
| 742 | vector_\name: | 783 | vector_\name: |
| 743 | ldr r13, .LCs\sym | ||
| 744 | .if \correction | 784 | .if \correction |
| 745 | sub lr, lr, #\correction | 785 | sub lr, lr, #\correction |
| 746 | .endif | 786 | .endif |
| 747 | str lr, [r13] @ save lr_IRQ | 787 | |
| 788 | @ | ||
| 789 | @ Save r0, lr_<exception> (parent PC) and spsr_<exception> | ||
| 790 | @ (parent CPSR) | ||
| 791 | @ | ||
| 792 | stmia sp, {r0, lr} @ save r0, lr | ||
| 748 | mrs lr, spsr | 793 | mrs lr, spsr |
| 749 | str lr, [r13, #4] @ save spsr_IRQ | 794 | str lr, [sp, #8] @ save spsr |
| 795 | |||
| 750 | @ | 796 | @ |
| 751 | @ now branch to the relevant MODE handling routine | 797 | @ Prepare for SVC32 mode. IRQs remain disabled. |
| 752 | @ | 798 | @ |
| 753 | mrs r13, cpsr | 799 | mrs r0, cpsr |
| 754 | bic r13, r13, #MODE_MASK | 800 | bic r0, r0, #MODE_MASK |
| 755 | orr r13, r13, #SVC_MODE | 801 | orr r0, r0, #SVC_MODE |
| 756 | msr spsr_cxsf, r13 @ switch to SVC_32 mode | 802 | msr spsr_cxsf, r0 |
| 757 | 803 | ||
| 758 | and lr, lr, #15 | 804 | @ |
| 805 | @ the branch table must immediately follow this code | ||
| 806 | @ | ||
| 807 | mov r0, sp | ||
| 808 | and lr, lr, #0x0f | ||
| 759 | ldr lr, [pc, lr, lsl #2] | 809 | ldr lr, [pc, lr, lsl #2] |
| 760 | movs pc, lr @ Changes mode and branches | 810 | movs pc, lr @ branch to handler in SVC mode |
| 761 | .endm | 811 | .endm |
| 762 | 812 | ||
| 763 | .globl __stubs_start | 813 | .globl __stubs_start |
| @@ -765,7 +815,7 @@ __stubs_start: | |||
| 765 | /* | 815 | /* |
| 766 | * Interrupt dispatcher | 816 | * Interrupt dispatcher |
| 767 | */ | 817 | */ |
| 768 | vector_stub irq, irq, 4 | 818 | vector_stub irq, 4 |
| 769 | 819 | ||
| 770 | .long __irq_usr @ 0 (USR_26 / USR_32) | 820 | .long __irq_usr @ 0 (USR_26 / USR_32) |
| 771 | .long __irq_invalid @ 1 (FIQ_26 / FIQ_32) | 821 | .long __irq_invalid @ 1 (FIQ_26 / FIQ_32) |
| @@ -788,7 +838,7 @@ __stubs_start: | |||
| 788 | * Data abort dispatcher | 838 | * Data abort dispatcher |
| 789 | * Enter in ABT mode, spsr = USR CPSR, lr = USR PC | 839 | * Enter in ABT mode, spsr = USR CPSR, lr = USR PC |
| 790 | */ | 840 | */ |
| 791 | vector_stub dabt, abt, 8 | 841 | vector_stub dabt, 8 |
| 792 | 842 | ||
| 793 | .long __dabt_usr @ 0 (USR_26 / USR_32) | 843 | .long __dabt_usr @ 0 (USR_26 / USR_32) |
| 794 | .long __dabt_invalid @ 1 (FIQ_26 / FIQ_32) | 844 | .long __dabt_invalid @ 1 (FIQ_26 / FIQ_32) |
| @@ -811,7 +861,7 @@ __stubs_start: | |||
| 811 | * Prefetch abort dispatcher | 861 | * Prefetch abort dispatcher |
| 812 | * Enter in ABT mode, spsr = USR CPSR, lr = USR PC | 862 | * Enter in ABT mode, spsr = USR CPSR, lr = USR PC |
| 813 | */ | 863 | */ |
| 814 | vector_stub pabt, abt, 4 | 864 | vector_stub pabt, 4 |
| 815 | 865 | ||
| 816 | .long __pabt_usr @ 0 (USR_26 / USR_32) | 866 | .long __pabt_usr @ 0 (USR_26 / USR_32) |
| 817 | .long __pabt_invalid @ 1 (FIQ_26 / FIQ_32) | 867 | .long __pabt_invalid @ 1 (FIQ_26 / FIQ_32) |
| @@ -834,7 +884,7 @@ __stubs_start: | |||
| 834 | * Undef instr entry dispatcher | 884 | * Undef instr entry dispatcher |
| 835 | * Enter in UND mode, spsr = SVC/USR CPSR, lr = SVC/USR PC | 885 | * Enter in UND mode, spsr = SVC/USR CPSR, lr = SVC/USR PC |
| 836 | */ | 886 | */ |
| 837 | vector_stub und, und | 887 | vector_stub und |
| 838 | 888 | ||
| 839 | .long __und_usr @ 0 (USR_26 / USR_32) | 889 | .long __und_usr @ 0 (USR_26 / USR_32) |
| 840 | .long __und_invalid @ 1 (FIQ_26 / FIQ_32) | 890 | .long __und_invalid @ 1 (FIQ_26 / FIQ_32) |
| @@ -888,13 +938,6 @@ vector_addrexcptn: | |||
| 888 | .LCvswi: | 938 | .LCvswi: |
| 889 | .word vector_swi | 939 | .word vector_swi |
| 890 | 940 | ||
| 891 | .LCsirq: | ||
| 892 | .word __temp_irq | ||
| 893 | .LCsund: | ||
| 894 | .word __temp_und | ||
| 895 | .LCsabt: | ||
| 896 | .word __temp_abt | ||
| 897 | |||
| 898 | .globl __stubs_end | 941 | .globl __stubs_end |
| 899 | __stubs_end: | 942 | __stubs_end: |
| 900 | 943 | ||
| @@ -916,23 +959,6 @@ __vectors_end: | |||
| 916 | 959 | ||
| 917 | .data | 960 | .data |
| 918 | 961 | ||
| 919 | /* | ||
| 920 | * Do not reorder these, and do not insert extra data between... | ||
| 921 | */ | ||
| 922 | |||
| 923 | __temp_irq: | ||
| 924 | .word 0 @ saved lr_irq | ||
| 925 | .word 0 @ saved spsr_irq | ||
| 926 | .word -1 @ old_r0 | ||
| 927 | __temp_und: | ||
| 928 | .word 0 @ Saved lr_und | ||
| 929 | .word 0 @ Saved spsr_und | ||
| 930 | .word -1 @ old_r0 | ||
| 931 | __temp_abt: | ||
| 932 | .word 0 @ Saved lr_abt | ||
| 933 | .word 0 @ Saved spsr_abt | ||
| 934 | .word -1 @ old_r0 | ||
| 935 | |||
| 936 | .globl cr_alignment | 962 | .globl cr_alignment |
| 937 | .globl cr_no_alignment | 963 | .globl cr_no_alignment |
| 938 | cr_alignment: | 964 | cr_alignment: |
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index a3d40a0e2b04..afef21273963 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S | |||
| @@ -59,11 +59,10 @@ | |||
| 59 | mov \rd, \rd, lsl #13 | 59 | mov \rd, \rd, lsl #13 |
| 60 | .endm | 60 | .endm |
| 61 | 61 | ||
| 62 | .macro alignment_trap, rbase, rtemp, sym | 62 | .macro alignment_trap, rtemp |
| 63 | #ifdef CONFIG_ALIGNMENT_TRAP | 63 | #ifdef CONFIG_ALIGNMENT_TRAP |
| 64 | #define OFF_CR_ALIGNMENT(x) cr_alignment - x | 64 | ldr \rtemp, .LCcralign |
| 65 | 65 | ldr \rtemp, [\rtemp] | |
| 66 | ldr \rtemp, [\rbase, #OFF_CR_ALIGNMENT(\sym)] | ||
| 67 | mcr p15, 0, \rtemp, c1, c0 | 66 | mcr p15, 0, \rtemp, c1, c0 |
| 68 | #endif | 67 | #endif |
| 69 | .endm | 68 | .endm |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 4733877296d4..bd4823c74645 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | * linux/arch/arm/kernel/head.S | 2 | * linux/arch/arm/kernel/head.S |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 1994-2002 Russell King | 4 | * Copyright (C) 1994-2002 Russell King |
| 5 | * Copyright (c) 2003 ARM Limited | ||
| 6 | * All Rights Reserved | ||
| 5 | * | 7 | * |
| 6 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
| @@ -165,6 +167,48 @@ __mmap_switched: | |||
| 165 | stmia r6, {r0, r4} @ Save control register values | 167 | stmia r6, {r0, r4} @ Save control register values |
| 166 | b start_kernel | 168 | b start_kernel |
| 167 | 169 | ||
| 170 | #if defined(CONFIG_SMP) | ||
| 171 | .type secondary_startup, #function | ||
| 172 | ENTRY(secondary_startup) | ||
| 173 | /* | ||
| 174 | * Common entry point for secondary CPUs. | ||
| 175 | * | ||
| 176 | * Ensure that we're in SVC mode, and IRQs are disabled. Lookup | ||
| 177 | * the processor type - there is no need to check the machine type | ||
| 178 | * as it has already been validated by the primary processor. | ||
| 179 | */ | ||
| 180 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC | ||
| 181 | bl __lookup_processor_type | ||
| 182 | movs r10, r5 @ invalid processor? | ||
| 183 | moveq r0, #'p' @ yes, error 'p' | ||
| 184 | beq __error | ||
| 185 | |||
| 186 | /* | ||
| 187 | * Use the page tables supplied from __cpu_up. | ||
| 188 | */ | ||
| 189 | adr r4, __secondary_data | ||
| 190 | ldmia r4, {r5, r6, r13} @ address to jump to after | ||
| 191 | sub r4, r4, r5 @ mmu has been enabled | ||
| 192 | ldr r4, [r6, r4] @ get secondary_data.pgdir | ||
| 193 | adr lr, __enable_mmu @ return address | ||
| 194 | add pc, r10, #12 @ initialise processor | ||
| 195 | @ (return control reg) | ||
| 196 | |||
| 197 | /* | ||
| 198 | * r6 = &secondary_data | ||
| 199 | */ | ||
| 200 | ENTRY(__secondary_switched) | ||
| 201 | ldr sp, [r6, #4] @ get secondary_data.stack | ||
| 202 | mov fp, #0 | ||
| 203 | b secondary_start_kernel | ||
| 204 | |||
| 205 | .type __secondary_data, %object | ||
| 206 | __secondary_data: | ||
| 207 | .long . | ||
| 208 | .long secondary_data | ||
| 209 | .long __secondary_switched | ||
| 210 | #endif /* defined(CONFIG_SMP) */ | ||
| 211 | |||
| 168 | 212 | ||
| 169 | 213 | ||
| 170 | /* | 214 | /* |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index c2a7da3ac0f1..9fed5fa194d9 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -92,6 +92,14 @@ struct cpu_user_fns cpu_user; | |||
| 92 | struct cpu_cache_fns cpu_cache; | 92 | struct cpu_cache_fns cpu_cache; |
| 93 | #endif | 93 | #endif |
| 94 | 94 | ||
| 95 | struct stack { | ||
| 96 | u32 irq[3]; | ||
| 97 | u32 abt[3]; | ||
| 98 | u32 und[3]; | ||
| 99 | } ____cacheline_aligned; | ||
| 100 | |||
| 101 | static struct stack stacks[NR_CPUS]; | ||
| 102 | |||
| 95 | char elf_platform[ELF_PLATFORM_SIZE]; | 103 | char elf_platform[ELF_PLATFORM_SIZE]; |
| 96 | EXPORT_SYMBOL(elf_platform); | 104 | EXPORT_SYMBOL(elf_platform); |
| 97 | 105 | ||
| @@ -307,8 +315,6 @@ static void __init setup_processor(void) | |||
| 307 | cpu_name, processor_id, (int)processor_id & 15, | 315 | cpu_name, processor_id, (int)processor_id & 15, |
| 308 | proc_arch[cpu_architecture()]); | 316 | proc_arch[cpu_architecture()]); |
| 309 | 317 | ||
| 310 | dump_cpu_info(smp_processor_id()); | ||
| 311 | |||
| 312 | sprintf(system_utsname.machine, "%s%c", list->arch_name, ENDIANNESS); | 318 | sprintf(system_utsname.machine, "%s%c", list->arch_name, ENDIANNESS); |
| 313 | sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS); | 319 | sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS); |
| 314 | elf_hwcap = list->elf_hwcap; | 320 | elf_hwcap = list->elf_hwcap; |
| @@ -316,6 +322,46 @@ static void __init setup_processor(void) | |||
| 316 | cpu_proc_init(); | 322 | cpu_proc_init(); |
| 317 | } | 323 | } |
| 318 | 324 | ||
| 325 | /* | ||
| 326 | * cpu_init - initialise one CPU. | ||
| 327 | * | ||
| 328 | * cpu_init dumps the cache information, initialises SMP specific | ||
| 329 | * information, and sets up the per-CPU stacks. | ||
| 330 | */ | ||
| 331 | void cpu_init(void) | ||
| 332 | { | ||
| 333 | unsigned int cpu = smp_processor_id(); | ||
| 334 | struct stack *stk = &stacks[cpu]; | ||
| 335 | |||
| 336 | if (cpu >= NR_CPUS) { | ||
| 337 | printk(KERN_CRIT "CPU%u: bad primary CPU number\n", cpu); | ||
| 338 | BUG(); | ||
| 339 | } | ||
| 340 | |||
| 341 | dump_cpu_info(cpu); | ||
| 342 | |||
| 343 | /* | ||
| 344 | * setup stacks for re-entrant exception handlers | ||
| 345 | */ | ||
| 346 | __asm__ ( | ||
| 347 | "msr cpsr_c, %1\n\t" | ||
| 348 | "add sp, %0, %2\n\t" | ||
| 349 | "msr cpsr_c, %3\n\t" | ||
| 350 | "add sp, %0, %4\n\t" | ||
| 351 | "msr cpsr_c, %5\n\t" | ||
| 352 | "add sp, %0, %6\n\t" | ||
| 353 | "msr cpsr_c, %7" | ||
| 354 | : | ||
| 355 | : "r" (stk), | ||
| 356 | "I" (PSR_F_BIT | PSR_I_BIT | IRQ_MODE), | ||
| 357 | "I" (offsetof(struct stack, irq[0])), | ||
| 358 | "I" (PSR_F_BIT | PSR_I_BIT | ABT_MODE), | ||
| 359 | "I" (offsetof(struct stack, abt[0])), | ||
| 360 | "I" (PSR_F_BIT | PSR_I_BIT | UND_MODE), | ||
| 361 | "I" (offsetof(struct stack, und[0])), | ||
| 362 | "I" (PSR_F_BIT | PSR_I_BIT | SVC_MODE)); | ||
| 363 | } | ||
| 364 | |||
| 319 | static struct machine_desc * __init setup_machine(unsigned int nr) | 365 | static struct machine_desc * __init setup_machine(unsigned int nr) |
| 320 | { | 366 | { |
| 321 | struct machine_desc *list; | 367 | struct machine_desc *list; |
| @@ -715,6 +761,8 @@ void __init setup_arch(char **cmdline_p) | |||
| 715 | paging_init(&meminfo, mdesc); | 761 | paging_init(&meminfo, mdesc); |
| 716 | request_standard_resources(&meminfo, mdesc); | 762 | request_standard_resources(&meminfo, mdesc); |
| 717 | 763 | ||
| 764 | cpu_init(); | ||
| 765 | |||
| 718 | /* | 766 | /* |
| 719 | * Set up various architecture-specific pointers | 767 | * Set up various architecture-specific pointers |
| 720 | */ | 768 | */ |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index ecc8c3332408..45ed036336e0 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
| @@ -24,6 +24,9 @@ | |||
| 24 | #include <asm/atomic.h> | 24 | #include <asm/atomic.h> |
| 25 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
| 26 | #include <asm/cpu.h> | 26 | #include <asm/cpu.h> |
| 27 | #include <asm/mmu_context.h> | ||
| 28 | #include <asm/pgtable.h> | ||
| 29 | #include <asm/pgalloc.h> | ||
| 27 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
| 28 | #include <asm/tlbflush.h> | 31 | #include <asm/tlbflush.h> |
| 29 | #include <asm/ptrace.h> | 32 | #include <asm/ptrace.h> |
| @@ -37,6 +40,13 @@ cpumask_t cpu_present_mask; | |||
| 37 | cpumask_t cpu_online_map; | 40 | cpumask_t cpu_online_map; |
| 38 | 41 | ||
| 39 | /* | 42 | /* |
| 43 | * as from 2.5, kernels no longer have an init_tasks structure | ||
| 44 | * so we need some other way of telling a new secondary core | ||
| 45 | * where to place its SVC stack | ||
| 46 | */ | ||
| 47 | struct secondary_data secondary_data; | ||
| 48 | |||
| 49 | /* | ||
| 40 | * structures for inter-processor calls | 50 | * structures for inter-processor calls |
| 41 | * - A collection of single bit ipi messages. | 51 | * - A collection of single bit ipi messages. |
| 42 | */ | 52 | */ |
| @@ -71,6 +81,8 @@ static DEFINE_SPINLOCK(smp_call_function_lock); | |||
| 71 | int __init __cpu_up(unsigned int cpu) | 81 | int __init __cpu_up(unsigned int cpu) |
| 72 | { | 82 | { |
| 73 | struct task_struct *idle; | 83 | struct task_struct *idle; |
| 84 | pgd_t *pgd; | ||
| 85 | pmd_t *pmd; | ||
| 74 | int ret; | 86 | int ret; |
| 75 | 87 | ||
| 76 | /* | 88 | /* |
| @@ -84,9 +96,54 @@ int __init __cpu_up(unsigned int cpu) | |||
| 84 | } | 96 | } |
| 85 | 97 | ||
| 86 | /* | 98 | /* |
| 99 | * Allocate initial page tables to allow the new CPU to | ||
| 100 | * enable the MMU safely. This essentially means a set | ||
| 101 | * of our "standard" page tables, with the addition of | ||
| 102 | * a 1:1 mapping for the physical address of the kernel. | ||
| 103 | */ | ||
| 104 | pgd = pgd_alloc(&init_mm); | ||
| 105 | pmd = pmd_offset(pgd, PHYS_OFFSET); | ||
| 106 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | | ||
| 107 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); | ||
| 108 | |||
| 109 | /* | ||
| 110 | * We need to tell the secondary core where to find | ||
| 111 | * its stack and the page tables. | ||
| 112 | */ | ||
| 113 | secondary_data.stack = (void *)idle->thread_info + THREAD_SIZE - 8; | ||
| 114 | secondary_data.pgdir = virt_to_phys(pgd); | ||
| 115 | wmb(); | ||
| 116 | |||
| 117 | /* | ||
| 87 | * Now bring the CPU into our world. | 118 | * Now bring the CPU into our world. |
| 88 | */ | 119 | */ |
| 89 | ret = boot_secondary(cpu, idle); | 120 | ret = boot_secondary(cpu, idle); |
| 121 | if (ret == 0) { | ||
| 122 | unsigned long timeout; | ||
| 123 | |||
| 124 | /* | ||
| 125 | * CPU was successfully started, wait for it | ||
| 126 | * to come online or time out. | ||
| 127 | */ | ||
| 128 | timeout = jiffies + HZ; | ||
| 129 | while (time_before(jiffies, timeout)) { | ||
| 130 | if (cpu_online(cpu)) | ||
| 131 | break; | ||
| 132 | |||
| 133 | udelay(10); | ||
| 134 | barrier(); | ||
| 135 | } | ||
| 136 | |||
| 137 | if (!cpu_online(cpu)) | ||
| 138 | ret = -EIO; | ||
| 139 | } | ||
| 140 | |||
| 141 | secondary_data.stack = 0; | ||
| 142 | secondary_data.pgdir = 0; | ||
| 143 | |||
| 144 | *pmd_offset(pgd, PHYS_OFFSET) = __pmd(0); | ||
| 145 | pgd_free(pgd); | ||
| 146 | |||
| 90 | if (ret) { | 147 | if (ret) { |
| 91 | printk(KERN_CRIT "cpu_up: processor %d failed to boot\n", cpu); | 148 | printk(KERN_CRIT "cpu_up: processor %d failed to boot\n", cpu); |
| 92 | /* | 149 | /* |
| @@ -98,6 +155,56 @@ int __init __cpu_up(unsigned int cpu) | |||
| 98 | } | 155 | } |
| 99 | 156 | ||
| 100 | /* | 157 | /* |
| 158 | * This is the secondary CPU boot entry. We're using this CPUs | ||
| 159 | * idle thread stack, but a set of temporary page tables. | ||
| 160 | */ | ||
| 161 | asmlinkage void __init secondary_start_kernel(void) | ||
| 162 | { | ||
| 163 | struct mm_struct *mm = &init_mm; | ||
| 164 | unsigned int cpu = smp_processor_id(); | ||
| 165 | |||
| 166 | printk("CPU%u: Booted secondary processor\n", cpu); | ||
| 167 | |||
| 168 | /* | ||
| 169 | * All kernel threads share the same mm context; grab a | ||
| 170 | * reference and switch to it. | ||
| 171 | */ | ||
| 172 | atomic_inc(&mm->mm_users); | ||
| 173 | atomic_inc(&mm->mm_count); | ||
| 174 | current->active_mm = mm; | ||
| 175 | cpu_set(cpu, mm->cpu_vm_mask); | ||
| 176 | cpu_switch_mm(mm->pgd, mm); | ||
| 177 | enter_lazy_tlb(mm, current); | ||
| 178 | |||
| 179 | cpu_init(); | ||
| 180 | |||
| 181 | /* | ||
| 182 | * Give the platform a chance to do its own initialisation. | ||
| 183 | */ | ||
| 184 | platform_secondary_init(cpu); | ||
| 185 | |||
| 186 | /* | ||
| 187 | * Enable local interrupts. | ||
| 188 | */ | ||
| 189 | local_irq_enable(); | ||
| 190 | local_fiq_enable(); | ||
| 191 | |||
| 192 | calibrate_delay(); | ||
| 193 | |||
| 194 | smp_store_cpu_info(cpu); | ||
| 195 | |||
| 196 | /* | ||
| 197 | * OK, now it's safe to let the boot CPU continue | ||
| 198 | */ | ||
| 199 | cpu_set(cpu, cpu_online_map); | ||
| 200 | |||
| 201 | /* | ||
| 202 | * OK, it's off to the idle thread for us | ||
| 203 | */ | ||
| 204 | cpu_idle(); | ||
| 205 | } | ||
| 206 | |||
| 207 | /* | ||
| 101 | * Called by both boot and secondaries to move global data into | 208 | * Called by both boot and secondaries to move global data into |
| 102 | * per-processor storage. | 209 | * per-processor storage. |
| 103 | */ | 210 | */ |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 14df16b983f4..45d2a032d890 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
| @@ -464,6 +464,55 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 464 | #endif | 464 | #endif |
| 465 | return 0; | 465 | return 0; |
| 466 | 466 | ||
| 467 | #ifdef CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG | ||
| 468 | /* | ||
| 469 | * Atomically store r1 in *r2 if *r2 is equal to r0 for user space. | ||
| 470 | * Return zero in r0 if *MEM was changed or non-zero if no exchange | ||
| 471 | * happened. Also set the user C flag accordingly. | ||
| 472 | * If access permissions have to be fixed up then non-zero is | ||
| 473 | * returned and the operation has to be re-attempted. | ||
| 474 | * | ||
| 475 | * *NOTE*: This is a ghost syscall private to the kernel. Only the | ||
| 476 | * __kuser_cmpxchg code in entry-armv.S should be aware of its | ||
| 477 | * existence. Don't ever use this from user code. | ||
| 478 | */ | ||
| 479 | case 0xfff0: | ||
| 480 | { | ||
| 481 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, | ||
| 482 | struct pt_regs *regs); | ||
| 483 | unsigned long val; | ||
| 484 | unsigned long addr = regs->ARM_r2; | ||
| 485 | struct mm_struct *mm = current->mm; | ||
| 486 | pgd_t *pgd; pmd_t *pmd; pte_t *pte; | ||
| 487 | |||
| 488 | regs->ARM_cpsr &= ~PSR_C_BIT; | ||
| 489 | spin_lock(&mm->page_table_lock); | ||
| 490 | pgd = pgd_offset(mm, addr); | ||
| 491 | if (!pgd_present(*pgd)) | ||
| 492 | goto bad_access; | ||
| 493 | pmd = pmd_offset(pgd, addr); | ||
| 494 | if (!pmd_present(*pmd)) | ||
| 495 | goto bad_access; | ||
| 496 | pte = pte_offset_map(pmd, addr); | ||
| 497 | if (!pte_present(*pte) || !pte_write(*pte)) | ||
| 498 | goto bad_access; | ||
| 499 | val = *(unsigned long *)addr; | ||
| 500 | val -= regs->ARM_r0; | ||
| 501 | if (val == 0) { | ||
| 502 | *(unsigned long *)addr = regs->ARM_r1; | ||
| 503 | regs->ARM_cpsr |= PSR_C_BIT; | ||
| 504 | } | ||
| 505 | spin_unlock(&mm->page_table_lock); | ||
| 506 | return val; | ||
| 507 | |||
| 508 | bad_access: | ||
| 509 | spin_unlock(&mm->page_table_lock); | ||
| 510 | /* simulate a read access fault */ | ||
| 511 | do_DataAbort(addr, 15 + (1 << 11), regs); | ||
| 512 | return -1; | ||
| 513 | } | ||
| 514 | #endif | ||
| 515 | |||
| 467 | default: | 516 | default: |
| 468 | /* Calls 9f00xx..9f07ff are defined to return -ENOSYS | 517 | /* Calls 9f00xx..9f07ff are defined to return -ENOSYS |
| 469 | if not implemented, rather than raising SIGILL. This | 518 | if not implemented, rather than raising SIGILL. This |
diff --git a/arch/arm/lib/io-writesw-armv4.S b/arch/arm/lib/io-writesw-armv4.S index 6d1d7c27806e..5e240e452af6 100644 --- a/arch/arm/lib/io-writesw-armv4.S +++ b/arch/arm/lib/io-writesw-armv4.S | |||
| @@ -87,9 +87,9 @@ ENTRY(__raw_writesw) | |||
| 87 | subs r2, r2, #2 | 87 | subs r2, r2, #2 |
| 88 | orr ip, ip, r3, push_hbyte1 | 88 | orr ip, ip, r3, push_hbyte1 |
| 89 | strh ip, [r0] | 89 | strh ip, [r0] |
| 90 | bpl 2b | 90 | bpl 1b |
| 91 | 91 | ||
| 92 | 3: tst r2, #1 | 92 | tst r2, #1 |
| 93 | 2: movne ip, r3, lsr #8 | 93 | 3: movne ip, r3, lsr #8 |
| 94 | strneh ip, [r0] | 94 | strneh ip, [r0] |
| 95 | mov pc, lr | 95 | mov pc, lr |
diff --git a/arch/arm/mach-integrator/Makefile b/arch/arm/mach-integrator/Makefile index 158daaf9e3b0..ebb255bdce8a 100644 --- a/arch/arm/mach-integrator/Makefile +++ b/arch/arm/mach-integrator/Makefile | |||
| @@ -12,3 +12,4 @@ obj-$(CONFIG_LEDS) += leds.o | |||
| 12 | obj-$(CONFIG_PCI) += pci_v3.o pci.o | 12 | obj-$(CONFIG_PCI) += pci_v3.o pci.o |
| 13 | obj-$(CONFIG_CPU_FREQ_INTEGRATOR) += cpu.o | 13 | obj-$(CONFIG_CPU_FREQ_INTEGRATOR) += cpu.o |
| 14 | obj-$(CONFIG_INTEGRATOR_IMPD1) += impd1.o | 14 | obj-$(CONFIG_INTEGRATOR_IMPD1) += impd1.o |
| 15 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | ||
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index bd17b5154311..d302f0405fd2 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
| 15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
| 16 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
| 17 | #include <linux/smp.h> | ||
| 17 | 18 | ||
| 18 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
| 19 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
| @@ -221,7 +222,24 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 221 | */ | 222 | */ |
| 222 | timer1->TimerClear = 1; | 223 | timer1->TimerClear = 1; |
| 223 | 224 | ||
| 224 | timer_tick(regs); | 225 | /* |
| 226 | * the clock tick routines are only processed on the | ||
| 227 | * primary CPU | ||
| 228 | */ | ||
| 229 | if (hard_smp_processor_id() == 0) { | ||
| 230 | nmi_tick(); | ||
| 231 | timer_tick(regs); | ||
| 232 | #ifdef CONFIG_SMP | ||
| 233 | smp_send_timer(); | ||
| 234 | #endif | ||
| 235 | } | ||
| 236 | |||
| 237 | #ifdef CONFIG_SMP | ||
| 238 | /* | ||
| 239 | * this is the ARM equivalent of the APIC timer interrupt | ||
| 240 | */ | ||
| 241 | update_process_times(user_mode(regs)); | ||
| 242 | #endif /* CONFIG_SMP */ | ||
| 225 | 243 | ||
| 226 | write_sequnlock(&xtime_lock); | 244 | write_sequnlock(&xtime_lock); |
| 227 | 245 | ||
diff --git a/arch/arm/mach-integrator/headsmp.S b/arch/arm/mach-integrator/headsmp.S new file mode 100644 index 000000000000..ceaa88e30d70 --- /dev/null +++ b/arch/arm/mach-integrator/headsmp.S | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-integrator/headsmp.S | ||
| 3 | * | ||
| 4 | * Copyright (c) 2003 ARM Limited | ||
| 5 | * All Rights Reserved | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | #include <linux/linkage.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | |||
| 14 | __INIT | ||
| 15 | |||
| 16 | /* | ||
| 17 | * Integrator specific entry point for secondary CPUs. This provides | ||
| 18 | * a "holding pen" into which all secondary cores are held until we're | ||
| 19 | * ready for them to initialise. | ||
| 20 | */ | ||
| 21 | ENTRY(integrator_secondary_startup) | ||
| 22 | adr r4, 1f | ||
| 23 | ldmia r4, {r5, r6} | ||
| 24 | sub r4, r4, r5 | ||
| 25 | ldr r6, [r6, r4] | ||
| 26 | pen: ldr r7, [r6] | ||
| 27 | cmp r7, r0 | ||
| 28 | bne pen | ||
| 29 | |||
| 30 | /* | ||
| 31 | * we've been released from the holding pen: secondary_stack | ||
| 32 | * should now contain the SVC stack for this core | ||
| 33 | */ | ||
| 34 | b secondary_startup | ||
| 35 | |||
| 36 | 1: .long . | ||
| 37 | .long phys_pen_release | ||
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 3b948e8c2751..e0a01eef0993 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
| @@ -83,7 +83,6 @@ static struct map_desc intcp_io_desc[] __initdata = { | |||
| 83 | { IO_ADDRESS(INTEGRATOR_UART1_BASE), INTEGRATOR_UART1_BASE, SZ_4K, MT_DEVICE }, | 83 | { IO_ADDRESS(INTEGRATOR_UART1_BASE), INTEGRATOR_UART1_BASE, SZ_4K, MT_DEVICE }, |
| 84 | { IO_ADDRESS(INTEGRATOR_DBG_BASE), INTEGRATOR_DBG_BASE, SZ_4K, MT_DEVICE }, | 84 | { IO_ADDRESS(INTEGRATOR_DBG_BASE), INTEGRATOR_DBG_BASE, SZ_4K, MT_DEVICE }, |
| 85 | { IO_ADDRESS(INTEGRATOR_GPIO_BASE), INTEGRATOR_GPIO_BASE, SZ_4K, MT_DEVICE }, | 85 | { IO_ADDRESS(INTEGRATOR_GPIO_BASE), INTEGRATOR_GPIO_BASE, SZ_4K, MT_DEVICE }, |
| 86 | { 0xfc900000, 0xc9000000, SZ_4K, MT_DEVICE }, | ||
| 87 | { 0xfca00000, 0xca000000, SZ_4K, MT_DEVICE }, | 86 | { 0xfca00000, 0xca000000, SZ_4K, MT_DEVICE }, |
| 88 | { 0xfcb00000, 0xcb000000, SZ_4K, MT_DEVICE }, | 87 | { 0xfcb00000, 0xcb000000, SZ_4K, MT_DEVICE }, |
| 89 | }; | 88 | }; |
diff --git a/arch/arm/mach-integrator/leds.c b/arch/arm/mach-integrator/leds.c index d2c0ab21150c..f1436e683b49 100644 --- a/arch/arm/mach-integrator/leds.c +++ b/arch/arm/mach-integrator/leds.c | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | */ | 22 | */ |
| 23 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
| 24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
| 25 | #include <linux/smp.h> | ||
| 26 | #include <linux/spinlock.h> | ||
| 25 | 27 | ||
| 26 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
| 27 | #include <asm/io.h> | 29 | #include <asm/io.h> |
| @@ -85,4 +87,4 @@ static int __init leds_init(void) | |||
| 85 | return 0; | 87 | return 0; |
| 86 | } | 88 | } |
| 87 | 89 | ||
| 88 | __initcall(leds_init); | 90 | core_initcall(leds_init); |
diff --git a/arch/arm/mach-integrator/platsmp.c b/arch/arm/mach-integrator/platsmp.c new file mode 100644 index 000000000000..ead15dfcb53d --- /dev/null +++ b/arch/arm/mach-integrator/platsmp.c | |||
| @@ -0,0 +1,192 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-cintegrator/platsmp.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2002 ARM Ltd. | ||
| 5 | * All Rights Reserved | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | #include <linux/init.h> | ||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/sched.h> | ||
| 14 | #include <linux/errno.h> | ||
| 15 | #include <linux/mm.h> | ||
| 16 | |||
| 17 | #include <asm/atomic.h> | ||
| 18 | #include <asm/delay.h> | ||
| 19 | #include <asm/mmu_context.h> | ||
| 20 | #include <asm/procinfo.h> | ||
| 21 | #include <asm/ptrace.h> | ||
| 22 | #include <asm/smp.h> | ||
| 23 | |||
| 24 | extern void integrator_secondary_startup(void); | ||
| 25 | |||
| 26 | /* | ||
| 27 | * control for which core is the next to come out of the secondary | ||
| 28 | * boot "holding pen" | ||
| 29 | */ | ||
| 30 | volatile int __initdata pen_release = -1; | ||
| 31 | unsigned long __initdata phys_pen_release = 0; | ||
| 32 | |||
| 33 | static DEFINE_SPINLOCK(boot_lock); | ||
| 34 | |||
| 35 | void __init platform_secondary_init(unsigned int cpu) | ||
| 36 | { | ||
| 37 | /* | ||
| 38 | * the primary core may have used a "cross call" soft interrupt | ||
| 39 | * to get this processor out of WFI in the BootMonitor - make | ||
| 40 | * sure that we are no longer being sent this soft interrupt | ||
| 41 | */ | ||
| 42 | smp_cross_call_done(cpumask_of_cpu(cpu)); | ||
| 43 | |||
| 44 | /* | ||
| 45 | * if any interrupts are already enabled for the primary | ||
| 46 | * core (e.g. timer irq), then they will not have been enabled | ||
| 47 | * for us: do so | ||
| 48 | */ | ||
| 49 | secondary_scan_irqs(); | ||
| 50 | |||
| 51 | /* | ||
| 52 | * let the primary processor know we're out of the | ||
| 53 | * pen, then head off into the C entry point | ||
| 54 | */ | ||
| 55 | pen_release = -1; | ||
| 56 | |||
| 57 | /* | ||
| 58 | * Synchronise with the boot thread. | ||
| 59 | */ | ||
| 60 | spin_lock(&boot_lock); | ||
| 61 | spin_unlock(&boot_lock); | ||
| 62 | } | ||
| 63 | |||
| 64 | int __init boot_secondary(unsigned int cpu, struct task_struct *idle) | ||
| 65 | { | ||
| 66 | unsigned long timeout; | ||
| 67 | |||
| 68 | /* | ||
| 69 | * set synchronisation state between this boot processor | ||
| 70 | * and the secondary one | ||
| 71 | */ | ||
| 72 | spin_lock(&boot_lock); | ||
| 73 | |||
| 74 | /* | ||
| 75 | * The secondary processor is waiting to be released from | ||
| 76 | * the holding pen - release it, then wait for it to flag | ||
| 77 | * that it has been released by resetting pen_release. | ||
| 78 | * | ||
| 79 | * Note that "pen_release" is the hardware CPU ID, whereas | ||
| 80 | * "cpu" is Linux's internal ID. | ||
| 81 | */ | ||
| 82 | pen_release = cpu; | ||
| 83 | |||
| 84 | /* | ||
| 85 | * XXX | ||
| 86 | * | ||
| 87 | * This is a later addition to the booting protocol: the | ||
| 88 | * bootMonitor now puts secondary cores into WFI, so | ||
| 89 | * poke_milo() no longer gets the cores moving; we need | ||
| 90 | * to send a soft interrupt to wake the secondary core. | ||
| 91 | * Use smp_cross_call() for this, since there's little | ||
| 92 | * point duplicating the code here | ||
| 93 | */ | ||
| 94 | smp_cross_call(cpumask_of_cpu(cpu)); | ||
| 95 | |||
| 96 | timeout = jiffies + (1 * HZ); | ||
| 97 | while (time_before(jiffies, timeout)) { | ||
| 98 | if (pen_release == -1) | ||
| 99 | break; | ||
| 100 | |||
| 101 | udelay(10); | ||
| 102 | } | ||
| 103 | |||
| 104 | /* | ||
| 105 | * now the secondary core is starting up let it run its | ||
| 106 | * calibrations, then wait for it to finish | ||
| 107 | */ | ||
| 108 | spin_unlock(&boot_lock); | ||
| 109 | |||
| 110 | return pen_release != -1 ? -ENOSYS : 0; | ||
| 111 | } | ||
| 112 | |||
| 113 | static void __init poke_milo(void) | ||
| 114 | { | ||
| 115 | extern void secondary_startup(void); | ||
| 116 | |||
| 117 | /* nobody is to be released from the pen yet */ | ||
| 118 | pen_release = -1; | ||
| 119 | |||
| 120 | phys_pen_release = virt_to_phys(&pen_release); | ||
| 121 | |||
| 122 | /* | ||
| 123 | * write the address of secondary startup into the system-wide | ||
| 124 | * flags register, then clear the bottom two bits, which is what | ||
| 125 | * BootMonitor is waiting for | ||
| 126 | */ | ||
| 127 | #if 1 | ||
| 128 | #define CINTEGRATOR_HDR_FLAGSS_OFFSET 0x30 | ||
| 129 | __raw_writel(virt_to_phys(integrator_secondary_startup), | ||
| 130 | (IO_ADDRESS(INTEGRATOR_HDR_BASE) + | ||
| 131 | CINTEGRATOR_HDR_FLAGSS_OFFSET)); | ||
| 132 | #define CINTEGRATOR_HDR_FLAGSC_OFFSET 0x34 | ||
| 133 | __raw_writel(3, | ||
| 134 | (IO_ADDRESS(INTEGRATOR_HDR_BASE) + | ||
| 135 | CINTEGRATOR_HDR_FLAGSC_OFFSET)); | ||
| 136 | #endif | ||
| 137 | |||
| 138 | mb(); | ||
| 139 | } | ||
| 140 | |||
| 141 | void __init smp_prepare_cpus(unsigned int max_cpus) | ||
| 142 | { | ||
| 143 | unsigned int ncores = get_core_count(); | ||
| 144 | unsigned int cpu = smp_processor_id(); | ||
| 145 | int i; | ||
| 146 | |||
| 147 | /* sanity check */ | ||
| 148 | if (ncores == 0) { | ||
| 149 | printk(KERN_ERR | ||
| 150 | "Integrator/CP: strange CM count of 0? Default to 1\n"); | ||
| 151 | |||
| 152 | ncores = 1; | ||
| 153 | } | ||
| 154 | |||
| 155 | if (ncores > NR_CPUS) { | ||
| 156 | printk(KERN_WARNING | ||
| 157 | "Integrator/CP: no. of cores (%d) greater than configured " | ||
| 158 | "maximum of %d - clipping\n", | ||
| 159 | ncores, NR_CPUS); | ||
| 160 | ncores = NR_CPUS; | ||
| 161 | } | ||
| 162 | |||
| 163 | /* | ||
| 164 | * start with some more config for the Boot CPU, now that | ||
| 165 | * the world is a bit more alive (which was not the case | ||
| 166 | * when smp_prepare_boot_cpu() was called) | ||
| 167 | */ | ||
| 168 | smp_store_cpu_info(cpu); | ||
| 169 | |||
| 170 | /* | ||
| 171 | * are we trying to boot more cores than exist? | ||
| 172 | */ | ||
| 173 | if (max_cpus > ncores) | ||
| 174 | max_cpus = ncores; | ||
| 175 | |||
| 176 | /* | ||
| 177 | * Initialise the present mask - this tells us which CPUs should | ||
| 178 | * be present. | ||
| 179 | */ | ||
| 180 | for (i = 0; i < max_cpus; i++) { | ||
| 181 | cpu_set(i, cpu_present_mask); | ||
| 182 | } | ||
| 183 | |||
| 184 | /* | ||
| 185 | * Do we need any more CPUs? If so, then let them know where | ||
| 186 | * to start. Note that, on modern versions of MILO, the "poke" | ||
| 187 | * doesn't actually do anything until each individual core is | ||
| 188 | * sent a soft interrupt to get it out of WFI | ||
| 189 | */ | ||
| 190 | if (max_cpus > 1) | ||
| 191 | poke_milo(); | ||
| 192 | } | ||
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index dd012d6e2f5c..f2c9e0d2b24b 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/device.h> |
| 18 | #include <linux/sysdev.h> | ||
| 18 | #include <linux/major.h> | 19 | #include <linux/major.h> |
| 19 | #include <linux/fb.h> | 20 | #include <linux/fb.h> |
| 20 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
| @@ -106,6 +107,35 @@ static void __init lubbock_init_irq(void) | |||
| 106 | set_irq_type(IRQ_GPIO(0), IRQT_FALLING); | 107 | set_irq_type(IRQ_GPIO(0), IRQT_FALLING); |
| 107 | } | 108 | } |
| 108 | 109 | ||
| 110 | #ifdef CONFIG_PM | ||
| 111 | |||
| 112 | static int lubbock_irq_resume(struct sys_device *dev) | ||
| 113 | { | ||
| 114 | LUB_IRQ_MASK_EN = lubbock_irq_enabled; | ||
| 115 | return 0; | ||
| 116 | } | ||
| 117 | |||
| 118 | static struct sysdev_class lubbock_irq_sysclass = { | ||
| 119 | set_kset_name("cpld_irq"), | ||
| 120 | .resume = lubbock_irq_resume, | ||
| 121 | }; | ||
| 122 | |||
| 123 | static struct sys_device lubbock_irq_device = { | ||
| 124 | .cls = &lubbock_irq_sysclass, | ||
| 125 | }; | ||
| 126 | |||
| 127 | static int __init lubbock_irq_device_init(void) | ||
| 128 | { | ||
| 129 | int ret = sysdev_class_register(&lubbock_irq_sysclass); | ||
| 130 | if (ret == 0) | ||
| 131 | ret = sysdev_register(&lubbock_irq_device); | ||
| 132 | return ret; | ||
| 133 | } | ||
| 134 | |||
| 135 | device_initcall(lubbock_irq_device_init); | ||
| 136 | |||
| 137 | #endif | ||
| 138 | |||
| 109 | static int lubbock_udc_is_connected(void) | 139 | static int lubbock_udc_is_connected(void) |
| 110 | { | 140 | { |
| 111 | return (LUB_MISC_RD & (1 << 9)) == 0; | 141 | return (LUB_MISC_RD & (1 << 9)) == 0; |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 3f952237ae3d..9896afca751f 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/device.h> |
| 18 | #include <linux/sysdev.h> | ||
| 18 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
| 19 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
| 20 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
| @@ -62,7 +63,6 @@ static struct irqchip mainstone_irq_chip = { | |||
| 62 | .unmask = mainstone_unmask_irq, | 63 | .unmask = mainstone_unmask_irq, |
| 63 | }; | 64 | }; |
| 64 | 65 | ||
| 65 | |||
| 66 | static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc, | 66 | static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc, |
| 67 | struct pt_regs *regs) | 67 | struct pt_regs *regs) |
| 68 | { | 68 | { |
| @@ -100,6 +100,35 @@ static void __init mainstone_init_irq(void) | |||
| 100 | set_irq_type(IRQ_GPIO(0), IRQT_FALLING); | 100 | set_irq_type(IRQ_GPIO(0), IRQT_FALLING); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | #ifdef CONFIG_PM | ||
| 104 | |||
| 105 | static int mainstone_irq_resume(struct sys_device *dev) | ||
| 106 | { | ||
| 107 | MST_INTMSKENA = mainstone_irq_enabled; | ||
| 108 | return 0; | ||
| 109 | } | ||
| 110 | |||
| 111 | static struct sysdev_class mainstone_irq_sysclass = { | ||
| 112 | set_kset_name("cpld_irq"), | ||
| 113 | .resume = mainstone_irq_resume, | ||
| 114 | }; | ||
| 115 | |||
| 116 | static struct sys_device mainstone_irq_device = { | ||
| 117 | .cls = &mainstone_irq_sysclass, | ||
| 118 | }; | ||
| 119 | |||
| 120 | static int __init mainstone_irq_device_init(void) | ||
| 121 | { | ||
| 122 | int ret = sysdev_class_register(&mainstone_irq_sysclass); | ||
| 123 | if (ret == 0) | ||
| 124 | ret = sysdev_register(&mainstone_irq_device); | ||
| 125 | return ret; | ||
| 126 | } | ||
| 127 | |||
| 128 | device_initcall(mainstone_irq_device_init); | ||
| 129 | |||
| 130 | #endif | ||
| 131 | |||
| 103 | 132 | ||
| 104 | static struct resource smc91x_resources[] = { | 133 | static struct resource smc91x_resources[] = { |
| 105 | [0] = { | 134 | [0] = { |
| @@ -304,6 +333,15 @@ static void __init mainstone_map_io(void) | |||
| 304 | PWER = 0xC0000002; | 333 | PWER = 0xC0000002; |
| 305 | PRER = 0x00000002; | 334 | PRER = 0x00000002; |
| 306 | PFER = 0x00000002; | 335 | PFER = 0x00000002; |
| 336 | /* for use I SRAM as framebuffer. */ | ||
| 337 | PSLR |= 0xF04; | ||
| 338 | PCFR = 0x66; | ||
| 339 | /* For Keypad wakeup. */ | ||
| 340 | KPC &=~KPC_ASACT; | ||
| 341 | KPC |=KPC_AS; | ||
| 342 | PKWR = 0x000FD000; | ||
| 343 | /* Need read PKWR back after set it. */ | ||
| 344 | PKWR; | ||
| 307 | } | 345 | } |
| 308 | 346 | ||
| 309 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | 347 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") |
diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c index 82a4bf34c251..ac4dd4336160 100644 --- a/arch/arm/mach-pxa/pm.c +++ b/arch/arm/mach-pxa/pm.c | |||
| @@ -29,9 +29,6 @@ | |||
| 29 | */ | 29 | */ |
| 30 | #undef DEBUG | 30 | #undef DEBUG |
| 31 | 31 | ||
| 32 | extern void pxa_cpu_suspend(void); | ||
| 33 | extern void pxa_cpu_resume(void); | ||
| 34 | |||
| 35 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x | 32 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x |
| 36 | #define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] | 33 | #define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] |
| 37 | 34 | ||
| @@ -63,6 +60,12 @@ enum { SLEEP_SAVE_START = 0, | |||
| 63 | SLEEP_SAVE_ICMR, | 60 | SLEEP_SAVE_ICMR, |
| 64 | SLEEP_SAVE_CKEN, | 61 | SLEEP_SAVE_CKEN, |
| 65 | 62 | ||
| 63 | #ifdef CONFIG_PXA27x | ||
| 64 | SLEEP_SAVE_MDREFR, | ||
| 65 | SLEEP_SAVE_PWER, SLEEP_SAVE_PCFR, SLEEP_SAVE_PRER, | ||
| 66 | SLEEP_SAVE_PFER, SLEEP_SAVE_PKWR, | ||
| 67 | #endif | ||
| 68 | |||
| 66 | SLEEP_SAVE_CKSUM, | 69 | SLEEP_SAVE_CKSUM, |
| 67 | 70 | ||
| 68 | SLEEP_SAVE_SIZE | 71 | SLEEP_SAVE_SIZE |
| @@ -75,9 +78,7 @@ static int pxa_pm_enter(suspend_state_t state) | |||
| 75 | unsigned long checksum = 0; | 78 | unsigned long checksum = 0; |
| 76 | struct timespec delta, rtc; | 79 | struct timespec delta, rtc; |
| 77 | int i; | 80 | int i; |
| 78 | 81 | extern void pxa_cpu_pm_enter(suspend_state_t state); | |
| 79 | if (state != PM_SUSPEND_MEM) | ||
| 80 | return -EINVAL; | ||
| 81 | 82 | ||
| 82 | #ifdef CONFIG_IWMMXT | 83 | #ifdef CONFIG_IWMMXT |
| 83 | /* force any iWMMXt context to ram **/ | 84 | /* force any iWMMXt context to ram **/ |
| @@ -100,16 +101,17 @@ static int pxa_pm_enter(suspend_state_t state) | |||
| 100 | SAVE(GAFR2_L); SAVE(GAFR2_U); | 101 | SAVE(GAFR2_L); SAVE(GAFR2_U); |
| 101 | 102 | ||
| 102 | #ifdef CONFIG_PXA27x | 103 | #ifdef CONFIG_PXA27x |
| 104 | SAVE(MDREFR); | ||
| 103 | SAVE(GPLR3); SAVE(GPDR3); SAVE(GRER3); SAVE(GFER3); SAVE(PGSR3); | 105 | SAVE(GPLR3); SAVE(GPDR3); SAVE(GRER3); SAVE(GFER3); SAVE(PGSR3); |
| 104 | SAVE(GAFR3_L); SAVE(GAFR3_U); | 106 | SAVE(GAFR3_L); SAVE(GAFR3_U); |
| 107 | SAVE(PWER); SAVE(PCFR); SAVE(PRER); | ||
| 108 | SAVE(PFER); SAVE(PKWR); | ||
| 105 | #endif | 109 | #endif |
| 106 | 110 | ||
| 107 | SAVE(ICMR); | 111 | SAVE(ICMR); |
| 108 | ICMR = 0; | 112 | ICMR = 0; |
| 109 | 113 | ||
| 110 | SAVE(CKEN); | 114 | SAVE(CKEN); |
| 111 | CKEN = 0; | ||
| 112 | |||
| 113 | SAVE(PSTR); | 115 | SAVE(PSTR); |
| 114 | 116 | ||
| 115 | /* Note: wake up source are set up in each machine specific files */ | 117 | /* Note: wake up source are set up in each machine specific files */ |
| @@ -123,16 +125,15 @@ static int pxa_pm_enter(suspend_state_t state) | |||
| 123 | /* Clear sleep reset status */ | 125 | /* Clear sleep reset status */ |
| 124 | RCSR = RCSR_SMR; | 126 | RCSR = RCSR_SMR; |
| 125 | 127 | ||
| 126 | /* set resume return address */ | ||
| 127 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
| 128 | |||
| 129 | /* before sleeping, calculate and save a checksum */ | 128 | /* before sleeping, calculate and save a checksum */ |
| 130 | for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++) | 129 | for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++) |
| 131 | checksum += sleep_save[i]; | 130 | checksum += sleep_save[i]; |
| 132 | sleep_save[SLEEP_SAVE_CKSUM] = checksum; | 131 | sleep_save[SLEEP_SAVE_CKSUM] = checksum; |
| 133 | 132 | ||
| 134 | /* *** go zzz *** */ | 133 | /* *** go zzz *** */ |
| 135 | pxa_cpu_suspend(); | 134 | pxa_cpu_pm_enter(state); |
| 135 | |||
| 136 | cpu_init(); | ||
| 136 | 137 | ||
| 137 | /* after sleeping, validate the checksum */ | 138 | /* after sleeping, validate the checksum */ |
| 138 | checksum = 0; | 139 | checksum = 0; |
| @@ -145,7 +146,7 @@ static int pxa_pm_enter(suspend_state_t state) | |||
| 145 | LUB_HEXLED = 0xbadbadc5; | 146 | LUB_HEXLED = 0xbadbadc5; |
| 146 | #endif | 147 | #endif |
| 147 | while (1) | 148 | while (1) |
| 148 | pxa_cpu_suspend(); | 149 | pxa_cpu_pm_enter(state); |
| 149 | } | 150 | } |
| 150 | 151 | ||
| 151 | /* ensure not to come back here if it wasn't intended */ | 152 | /* ensure not to come back here if it wasn't intended */ |
| @@ -162,8 +163,11 @@ static int pxa_pm_enter(suspend_state_t state) | |||
| 162 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); | 163 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); |
| 163 | 164 | ||
| 164 | #ifdef CONFIG_PXA27x | 165 | #ifdef CONFIG_PXA27x |
| 166 | RESTORE(MDREFR); | ||
| 165 | RESTORE(GAFR3_L); RESTORE(GAFR3_U); RESTORE_GPLEVEL(3); | 167 | RESTORE(GAFR3_L); RESTORE(GAFR3_U); RESTORE_GPLEVEL(3); |
| 166 | RESTORE(GPDR3); RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3); | 168 | RESTORE(GPDR3); RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3); |
| 169 | RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER); | ||
| 170 | RESTORE(PFER); RESTORE(PKWR); | ||
| 167 | #endif | 171 | #endif |
| 168 | 172 | ||
| 169 | PSSR = PSSR_RDH | PSSR_PH; | 173 | PSSR = PSSR_RDH | PSSR_PH; |
| @@ -197,7 +201,9 @@ unsigned long sleep_phys_sp(void *sp) | |||
| 197 | */ | 201 | */ |
| 198 | static int pxa_pm_prepare(suspend_state_t state) | 202 | static int pxa_pm_prepare(suspend_state_t state) |
| 199 | { | 203 | { |
| 200 | return 0; | 204 | extern int pxa_cpu_pm_prepare(suspend_state_t state); |
| 205 | |||
| 206 | return pxa_cpu_pm_prepare(state); | ||
| 201 | } | 207 | } |
| 202 | 208 | ||
| 203 | /* | 209 | /* |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index e887b7175ef3..7869c3b4e62f 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | * initialization stuff for PXA machines which can be overridden later if | 16 | * initialization stuff for PXA machines which can be overridden later if |
| 17 | * need be. | 17 | * need be. |
| 18 | */ | 18 | */ |
| 19 | #include <linux/config.h> | ||
| 19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| 20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
| @@ -102,3 +103,35 @@ unsigned int get_lcdclk_frequency_10khz(void) | |||
| 102 | } | 103 | } |
| 103 | 104 | ||
| 104 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); | 105 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); |
| 106 | |||
| 107 | #ifdef CONFIG_PM | ||
| 108 | |||
| 109 | int pxa_cpu_pm_prepare(suspend_state_t state) | ||
| 110 | { | ||
| 111 | switch (state) { | ||
| 112 | case PM_SUSPEND_MEM: | ||
| 113 | break; | ||
| 114 | default: | ||
| 115 | return -EINVAL; | ||
| 116 | } | ||
| 117 | |||
| 118 | return 0; | ||
| 119 | } | ||
| 120 | |||
| 121 | void pxa_cpu_pm_enter(suspend_state_t state) | ||
| 122 | { | ||
| 123 | extern void pxa_cpu_suspend(unsigned int); | ||
| 124 | extern void pxa_cpu_resume(void); | ||
| 125 | |||
| 126 | CKEN = 0; | ||
| 127 | |||
| 128 | switch (state) { | ||
| 129 | case PM_SUSPEND_MEM: | ||
| 130 | /* set resume return address */ | ||
| 131 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
| 132 | pxa_cpu_suspend(3); | ||
| 133 | break; | ||
| 134 | } | ||
| 135 | } | ||
| 136 | |||
| 137 | #endif | ||
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 7e863afefb53..893964fb9659 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
| @@ -120,6 +120,42 @@ EXPORT_SYMBOL(get_clk_frequency_khz); | |||
| 120 | EXPORT_SYMBOL(get_memclk_frequency_10khz); | 120 | EXPORT_SYMBOL(get_memclk_frequency_10khz); |
| 121 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); | 121 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); |
| 122 | 122 | ||
| 123 | #ifdef CONFIG_PM | ||
| 124 | |||
| 125 | int pxa_cpu_pm_prepare(suspend_state_t state) | ||
| 126 | { | ||
| 127 | switch (state) { | ||
| 128 | case PM_SUSPEND_MEM: | ||
| 129 | return 0; | ||
| 130 | default: | ||
| 131 | return -EINVAL; | ||
| 132 | } | ||
| 133 | } | ||
| 134 | |||
| 135 | void pxa_cpu_pm_enter(suspend_state_t state) | ||
| 136 | { | ||
| 137 | extern void pxa_cpu_standby(void); | ||
| 138 | extern void pxa_cpu_suspend(unsigned int); | ||
| 139 | extern void pxa_cpu_resume(void); | ||
| 140 | |||
| 141 | CKEN = CKEN22_MEMC | CKEN9_OSTIMER; | ||
| 142 | |||
| 143 | /* ensure voltage-change sequencer not initiated, which hangs */ | ||
| 144 | PCFR &= ~PCFR_FVC; | ||
| 145 | |||
| 146 | /* Clear edge-detect status register. */ | ||
| 147 | PEDR = 0xDF12FE1B; | ||
| 148 | |||
| 149 | switch (state) { | ||
| 150 | case PM_SUSPEND_MEM: | ||
| 151 | /* set resume return address */ | ||
| 152 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
| 153 | pxa_cpu_suspend(3); | ||
| 154 | break; | ||
| 155 | } | ||
| 156 | } | ||
| 157 | |||
| 158 | #endif | ||
| 123 | 159 | ||
| 124 | /* | 160 | /* |
| 125 | * device registration specific to PXA27x. | 161 | * device registration specific to PXA27x. |
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index bc229fab86d4..c7c28890d406 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
| @@ -785,6 +785,10 @@ int s3c2410_dma_free(dmach_t channel, s3c2410_dma_client_t *client) | |||
| 785 | chan->client = NULL; | 785 | chan->client = NULL; |
| 786 | chan->in_use = 0; | 786 | chan->in_use = 0; |
| 787 | 787 | ||
| 788 | if (chan->irq_claimed) | ||
| 789 | free_irq(chan->irq, (void *)chan); | ||
| 790 | chan->irq_claimed = 0; | ||
| 791 | |||
| 788 | local_irq_restore(flags); | 792 | local_irq_restore(flags); |
| 789 | 793 | ||
| 790 | return 0; | 794 | return 0; |
diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig index 50cde576dadf..6923316b3d0d 100644 --- a/arch/arm/mach-sa1100/Kconfig +++ b/arch/arm/mach-sa1100/Kconfig | |||
| @@ -150,7 +150,7 @@ config SA1100_SSP | |||
| 150 | 150 | ||
| 151 | config H3600_SLEEVE | 151 | config H3600_SLEEVE |
| 152 | tristate "Compaq iPAQ Handheld sleeve support" | 152 | tristate "Compaq iPAQ Handheld sleeve support" |
| 153 | depends on SA1100_H3600 | 153 | depends on SA1100_H3100 || SA1100_H3600 |
| 154 | help | 154 | help |
| 155 | Choose this option to enable support for extension packs (sleeves) | 155 | Choose this option to enable support for extension packs (sleeves) |
| 156 | for the Compaq iPAQ H3XXX series of handheld computers. This option | 156 | for the Compaq iPAQ H3XXX series of handheld computers. This option |
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c index 379ea5e3950f..59c7964cfe11 100644 --- a/arch/arm/mach-sa1100/pm.c +++ b/arch/arm/mach-sa1100/pm.c | |||
| @@ -88,6 +88,8 @@ static int sa11x0_pm_enter(suspend_state_t state) | |||
| 88 | /* go zzz */ | 88 | /* go zzz */ |
| 89 | sa1100_cpu_suspend(); | 89 | sa1100_cpu_suspend(); |
| 90 | 90 | ||
| 91 | cpu_init(); | ||
| 92 | |||
| 91 | /* | 93 | /* |
| 92 | * Ensure not to come back here if it wasn't intended | 94 | * Ensure not to come back here if it wasn't intended |
| 93 | */ | 95 | */ |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 554e1bd30d6e..302c2a7b9b63 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
| @@ -543,7 +543,7 @@ static void versatile_clcd_enable(struct clcd_fb *fb) | |||
| 543 | val |= SYS_CLCD_MODE_5551; | 543 | val |= SYS_CLCD_MODE_5551; |
| 544 | break; | 544 | break; |
| 545 | case 6: | 545 | case 6: |
| 546 | val |= SYS_CLCD_MODE_565_BLSB; | 546 | val |= SYS_CLCD_MODE_565_RLSB; |
| 547 | break; | 547 | break; |
| 548 | case 8: | 548 | case 8: |
| 549 | val |= SYS_CLCD_MODE_888; | 549 | val |= SYS_CLCD_MODE_888; |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 48bac7da8c70..3fefb43c67f7 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -228,7 +228,6 @@ config CPU_SA1100 | |||
| 228 | select CPU_CACHE_V4WB | 228 | select CPU_CACHE_V4WB |
| 229 | select CPU_CACHE_VIVT | 229 | select CPU_CACHE_VIVT |
| 230 | select CPU_TLB_V4WB | 230 | select CPU_TLB_V4WB |
| 231 | select CPU_MINICACHE | ||
| 232 | 231 | ||
| 233 | # XScale | 232 | # XScale |
| 234 | config CPU_XSCALE | 233 | config CPU_XSCALE |
| @@ -239,7 +238,6 @@ config CPU_XSCALE | |||
| 239 | select CPU_ABRT_EV5T | 238 | select CPU_ABRT_EV5T |
| 240 | select CPU_CACHE_VIVT | 239 | select CPU_CACHE_VIVT |
| 241 | select CPU_TLB_V4WBI | 240 | select CPU_TLB_V4WBI |
| 242 | select CPU_MINICACHE | ||
| 243 | 241 | ||
| 244 | # ARMv6 | 242 | # ARMv6 |
| 245 | config CPU_V6 | 243 | config CPU_V6 |
| @@ -345,11 +343,6 @@ config CPU_TLB_V4WBI | |||
| 345 | config CPU_TLB_V6 | 343 | config CPU_TLB_V6 |
| 346 | bool | 344 | bool |
| 347 | 345 | ||
| 348 | config CPU_MINICACHE | ||
| 349 | bool | ||
| 350 | help | ||
| 351 | Processor has a minicache. | ||
| 352 | |||
| 353 | comment "Processor Features" | 346 | comment "Processor Features" |
| 354 | 347 | ||
| 355 | config ARM_THUMB | 348 | config ARM_THUMB |
| @@ -429,3 +422,11 @@ config HAS_TLS_REG | |||
| 429 | assume directly accessing that register and always obtain the | 422 | assume directly accessing that register and always obtain the |
| 430 | expected value only on ARMv7 and above. | 423 | expected value only on ARMv7 and above. |
| 431 | 424 | ||
| 425 | config NEEDS_SYSCALL_FOR_CMPXCHG | ||
| 426 | bool | ||
| 427 | default y if SMP && (CPU_32v5 || CPU_32v4 || CPU_32v3) | ||
| 428 | help | ||
| 429 | SMP on a pre-ARMv6 processor? Well OK then. | ||
| 430 | Forget about fast user space cmpxchg support. | ||
| 431 | It is just not possible. | ||
| 432 | |||
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index ccf316c11e02..59f47d4c2dfe 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile | |||
| @@ -31,8 +31,6 @@ obj-$(CONFIG_CPU_COPY_V6) += copypage-v6.o mmu.o | |||
| 31 | obj-$(CONFIG_CPU_SA1100) += copypage-v4mc.o | 31 | obj-$(CONFIG_CPU_SA1100) += copypage-v4mc.o |
| 32 | obj-$(CONFIG_CPU_XSCALE) += copypage-xscale.o | 32 | obj-$(CONFIG_CPU_XSCALE) += copypage-xscale.o |
| 33 | 33 | ||
| 34 | obj-$(CONFIG_CPU_MINICACHE) += minicache.o | ||
| 35 | |||
| 36 | obj-$(CONFIG_CPU_TLB_V3) += tlb-v3.o | 34 | obj-$(CONFIG_CPU_TLB_V3) += tlb-v3.o |
| 37 | obj-$(CONFIG_CPU_TLB_V4WT) += tlb-v4.o | 35 | obj-$(CONFIG_CPU_TLB_V4WT) += tlb-v4.o |
| 38 | obj-$(CONFIG_CPU_TLB_V4WB) += tlb-v4wb.o | 36 | obj-$(CONFIG_CPU_TLB_V4WB) += tlb-v4wb.o |
diff --git a/arch/arm/mm/copypage-xscale.S b/arch/arm/mm/copypage-xscale.S deleted file mode 100644 index bb277316ef52..000000000000 --- a/arch/arm/mm/copypage-xscale.S +++ /dev/null | |||
| @@ -1,113 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/copypage-xscale.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 2001 Russell King | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | #include <linux/linkage.h> | ||
| 11 | #include <linux/init.h> | ||
| 12 | #include <asm/constants.h> | ||
| 13 | |||
| 14 | /* | ||
| 15 | * General note: | ||
| 16 | * We don't really want write-allocate cache behaviour for these functions | ||
| 17 | * since that will just eat through 8K of the cache. | ||
| 18 | */ | ||
| 19 | |||
| 20 | .text | ||
| 21 | .align 5 | ||
| 22 | /* | ||
| 23 | * XScale optimised copy_user_page | ||
| 24 | * r0 = destination | ||
| 25 | * r1 = source | ||
| 26 | * r2 = virtual user address of ultimate destination page | ||
| 27 | * | ||
| 28 | * The source page may have some clean entries in the cache already, but we | ||
| 29 | * can safely ignore them - break_cow() will flush them out of the cache | ||
| 30 | * if we eventually end up using our copied page. | ||
| 31 | * | ||
| 32 | * What we could do is use the mini-cache to buffer reads from the source | ||
| 33 | * page. We rely on the mini-cache being smaller than one page, so we'll | ||
| 34 | * cycle through the complete cache anyway. | ||
| 35 | */ | ||
| 36 | ENTRY(xscale_mc_copy_user_page) | ||
| 37 | stmfd sp!, {r4, r5, lr} | ||
| 38 | mov r5, r0 | ||
| 39 | mov r0, r1 | ||
| 40 | bl map_page_minicache | ||
| 41 | mov r1, r5 | ||
| 42 | mov lr, #PAGE_SZ/64-1 | ||
| 43 | |||
| 44 | /* | ||
| 45 | * Strangely enough, best performance is achieved | ||
| 46 | * when prefetching destination as well. (NP) | ||
| 47 | */ | ||
| 48 | pld [r0, #0] | ||
| 49 | pld [r0, #32] | ||
| 50 | pld [r1, #0] | ||
| 51 | pld [r1, #32] | ||
| 52 | |||
| 53 | 1: pld [r0, #64] | ||
| 54 | pld [r0, #96] | ||
| 55 | pld [r1, #64] | ||
| 56 | pld [r1, #96] | ||
| 57 | |||
| 58 | 2: ldrd r2, [r0], #8 | ||
| 59 | ldrd r4, [r0], #8 | ||
| 60 | mov ip, r1 | ||
| 61 | strd r2, [r1], #8 | ||
| 62 | ldrd r2, [r0], #8 | ||
| 63 | strd r4, [r1], #8 | ||
| 64 | ldrd r4, [r0], #8 | ||
| 65 | strd r2, [r1], #8 | ||
| 66 | strd r4, [r1], #8 | ||
| 67 | mcr p15, 0, ip, c7, c10, 1 @ clean D line | ||
| 68 | ldrd r2, [r0], #8 | ||
| 69 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line | ||
| 70 | ldrd r4, [r0], #8 | ||
| 71 | mov ip, r1 | ||
| 72 | strd r2, [r1], #8 | ||
| 73 | ldrd r2, [r0], #8 | ||
| 74 | strd r4, [r1], #8 | ||
| 75 | ldrd r4, [r0], #8 | ||
| 76 | strd r2, [r1], #8 | ||
| 77 | strd r4, [r1], #8 | ||
| 78 | mcr p15, 0, ip, c7, c10, 1 @ clean D line | ||
| 79 | subs lr, lr, #1 | ||
| 80 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line | ||
| 81 | bgt 1b | ||
| 82 | beq 2b | ||
| 83 | |||
| 84 | ldmfd sp!, {r4, r5, pc} | ||
| 85 | |||
| 86 | .align 5 | ||
| 87 | /* | ||
| 88 | * XScale optimised clear_user_page | ||
| 89 | * r0 = destination | ||
| 90 | * r1 = virtual user address of ultimate destination page | ||
| 91 | */ | ||
| 92 | ENTRY(xscale_mc_clear_user_page) | ||
| 93 | mov r1, #PAGE_SZ/32 | ||
| 94 | mov r2, #0 | ||
| 95 | mov r3, #0 | ||
| 96 | 1: mov ip, r0 | ||
| 97 | strd r2, [r0], #8 | ||
| 98 | strd r2, [r0], #8 | ||
| 99 | strd r2, [r0], #8 | ||
| 100 | strd r2, [r0], #8 | ||
| 101 | mcr p15, 0, ip, c7, c10, 1 @ clean D line | ||
| 102 | subs r1, r1, #1 | ||
| 103 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line | ||
| 104 | bne 1b | ||
| 105 | mov pc, lr | ||
| 106 | |||
| 107 | __INITDATA | ||
| 108 | |||
| 109 | .type xscale_mc_user_fns, #object | ||
| 110 | ENTRY(xscale_mc_user_fns) | ||
| 111 | .long xscale_mc_clear_user_page | ||
| 112 | .long xscale_mc_copy_user_page | ||
| 113 | .size xscale_mc_user_fns, . - xscale_mc_user_fns | ||
diff --git a/arch/arm/mm/copypage-xscale.c b/arch/arm/mm/copypage-xscale.c new file mode 100644 index 000000000000..42a6ee255ce0 --- /dev/null +++ b/arch/arm/mm/copypage-xscale.c | |||
| @@ -0,0 +1,131 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/copypage-xscale.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 1995-2005 Russell King | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This handles the mini data cache, as found on SA11x0 and XScale | ||
| 11 | * processors. When we copy a user page page, we map it in such a way | ||
| 12 | * that accesses to this page will not touch the main data cache, but | ||
| 13 | * will be cached in the mini data cache. This prevents us thrashing | ||
| 14 | * the main data cache on page faults. | ||
| 15 | */ | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/mm.h> | ||
| 18 | |||
| 19 | #include <asm/page.h> | ||
| 20 | #include <asm/pgtable.h> | ||
| 21 | #include <asm/tlbflush.h> | ||
| 22 | |||
| 23 | /* | ||
| 24 | * 0xffff8000 to 0xffffffff is reserved for any ARM architecture | ||
| 25 | * specific hacks for copying pages efficiently. | ||
| 26 | */ | ||
| 27 | #define COPYPAGE_MINICACHE 0xffff8000 | ||
| 28 | |||
| 29 | #define minicache_pgprot __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | \ | ||
| 30 | L_PTE_CACHEABLE) | ||
| 31 | |||
| 32 | #define TOP_PTE(x) pte_offset_kernel(top_pmd, x) | ||
| 33 | |||
| 34 | static DEFINE_SPINLOCK(minicache_lock); | ||
| 35 | |||
| 36 | /* | ||
| 37 | * XScale mini-dcache optimised copy_user_page | ||
| 38 | * | ||
| 39 | * We flush the destination cache lines just before we write the data into the | ||
| 40 | * corresponding address. Since the Dcache is read-allocate, this removes the | ||
| 41 | * Dcache aliasing issue. The writes will be forwarded to the write buffer, | ||
| 42 | * and merged as appropriate. | ||
| 43 | */ | ||
| 44 | static void __attribute__((naked)) | ||
| 45 | mc_copy_user_page(void *from, void *to) | ||
| 46 | { | ||
| 47 | /* | ||
| 48 | * Strangely enough, best performance is achieved | ||
| 49 | * when prefetching destination as well. (NP) | ||
| 50 | */ | ||
| 51 | asm volatile( | ||
| 52 | "stmfd sp!, {r4, r5, lr} \n\ | ||
| 53 | mov lr, %2 \n\ | ||
| 54 | pld [r0, #0] \n\ | ||
| 55 | pld [r0, #32] \n\ | ||
| 56 | pld [r1, #0] \n\ | ||
| 57 | pld [r1, #32] \n\ | ||
| 58 | 1: pld [r0, #64] \n\ | ||
| 59 | pld [r0, #96] \n\ | ||
| 60 | pld [r1, #64] \n\ | ||
| 61 | pld [r1, #96] \n\ | ||
| 62 | 2: ldrd r2, [r0], #8 \n\ | ||
| 63 | ldrd r4, [r0], #8 \n\ | ||
| 64 | mov ip, r1 \n\ | ||
| 65 | strd r2, [r1], #8 \n\ | ||
| 66 | ldrd r2, [r0], #8 \n\ | ||
| 67 | strd r4, [r1], #8 \n\ | ||
| 68 | ldrd r4, [r0], #8 \n\ | ||
| 69 | strd r2, [r1], #8 \n\ | ||
| 70 | strd r4, [r1], #8 \n\ | ||
| 71 | mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\ | ||
| 72 | ldrd r2, [r0], #8 \n\ | ||
| 73 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\ | ||
| 74 | ldrd r4, [r0], #8 \n\ | ||
| 75 | mov ip, r1 \n\ | ||
| 76 | strd r2, [r1], #8 \n\ | ||
| 77 | ldrd r2, [r0], #8 \n\ | ||
| 78 | strd r4, [r1], #8 \n\ | ||
| 79 | ldrd r4, [r0], #8 \n\ | ||
| 80 | strd r2, [r1], #8 \n\ | ||
| 81 | strd r4, [r1], #8 \n\ | ||
| 82 | mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\ | ||
| 83 | subs lr, lr, #1 \n\ | ||
| 84 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\ | ||
| 85 | bgt 1b \n\ | ||
| 86 | beq 2b \n\ | ||
| 87 | ldmfd sp!, {r4, r5, pc} " | ||
| 88 | : | ||
| 89 | : "r" (from), "r" (to), "I" (PAGE_SIZE / 64 - 1)); | ||
| 90 | } | ||
| 91 | |||
| 92 | void xscale_mc_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr) | ||
| 93 | { | ||
| 94 | spin_lock(&minicache_lock); | ||
| 95 | |||
| 96 | set_pte(TOP_PTE(COPYPAGE_MINICACHE), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot)); | ||
| 97 | flush_tlb_kernel_page(COPYPAGE_MINICACHE); | ||
| 98 | |||
| 99 | mc_copy_user_page((void *)COPYPAGE_MINICACHE, kto); | ||
| 100 | |||
| 101 | spin_unlock(&minicache_lock); | ||
| 102 | } | ||
| 103 | |||
| 104 | /* | ||
| 105 | * XScale optimised clear_user_page | ||
| 106 | */ | ||
| 107 | void __attribute__((naked)) | ||
| 108 | xscale_mc_clear_user_page(void *kaddr, unsigned long vaddr) | ||
| 109 | { | ||
| 110 | asm volatile( | ||
| 111 | "mov r1, %0 \n\ | ||
| 112 | mov r2, #0 \n\ | ||
| 113 | mov r3, #0 \n\ | ||
| 114 | 1: mov ip, r0 \n\ | ||
| 115 | strd r2, [r0], #8 \n\ | ||
| 116 | strd r2, [r0], #8 \n\ | ||
| 117 | strd r2, [r0], #8 \n\ | ||
| 118 | strd r2, [r0], #8 \n\ | ||
| 119 | mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\ | ||
| 120 | subs r1, r1, #1 \n\ | ||
| 121 | mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\ | ||
| 122 | bne 1b \n\ | ||
| 123 | mov pc, lr" | ||
| 124 | : | ||
| 125 | : "I" (PAGE_SIZE / 32)); | ||
| 126 | } | ||
| 127 | |||
| 128 | struct cpu_user_fns xscale_mc_user_fns __initdata = { | ||
| 129 | .cpu_clear_user_page = xscale_mc_clear_user_page, | ||
| 130 | .cpu_copy_user_page = xscale_mc_copy_user_page, | ||
| 131 | }; | ||
diff --git a/arch/arm/mm/minicache.c b/arch/arm/mm/minicache.c deleted file mode 100644 index dedf2ab01b2a..000000000000 --- a/arch/arm/mm/minicache.c +++ /dev/null | |||
| @@ -1,73 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mm/minicache.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2001 Russell King | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This handles the mini data cache, as found on SA11x0 and XScale | ||
| 11 | * processors. When we copy a user page page, we map it in such a way | ||
| 12 | * that accesses to this page will not touch the main data cache, but | ||
| 13 | * will be cached in the mini data cache. This prevents us thrashing | ||
| 14 | * the main data cache on page faults. | ||
| 15 | */ | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/mm.h> | ||
| 18 | |||
| 19 | #include <asm/page.h> | ||
| 20 | #include <asm/pgtable.h> | ||
| 21 | #include <asm/tlbflush.h> | ||
| 22 | |||
| 23 | /* | ||
| 24 | * 0xffff8000 to 0xffffffff is reserved for any ARM architecture | ||
| 25 | * specific hacks for copying pages efficiently. | ||
| 26 | */ | ||
| 27 | #define minicache_address (0xffff8000) | ||
| 28 | #define minicache_pgprot __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | \ | ||
| 29 | L_PTE_CACHEABLE) | ||
| 30 | |||
| 31 | static pte_t *minicache_pte; | ||
| 32 | |||
| 33 | /* | ||
| 34 | * Note that this is intended to be called only from the copy_user_page | ||
| 35 | * asm code; anything else will require special locking to prevent the | ||
| 36 | * mini-cache space being re-used. (Note: probably preempt unsafe). | ||
| 37 | * | ||
| 38 | * We rely on the fact that the minicache is 2K, and we'll be pushing | ||
| 39 | * 4K of data through it, so we don't actually have to specifically | ||
| 40 | * flush the minicache when we change the mapping. | ||
| 41 | * | ||
| 42 | * Note also: assert(PAGE_OFFSET <= virt < high_memory). | ||
| 43 | * Unsafe: preempt, kmap. | ||
| 44 | */ | ||
| 45 | unsigned long map_page_minicache(unsigned long virt) | ||
| 46 | { | ||
| 47 | set_pte(minicache_pte, pfn_pte(__pa(virt) >> PAGE_SHIFT, minicache_pgprot)); | ||
| 48 | flush_tlb_kernel_page(minicache_address); | ||
| 49 | |||
| 50 | return minicache_address; | ||
| 51 | } | ||
| 52 | |||
| 53 | static int __init minicache_init(void) | ||
| 54 | { | ||
| 55 | pgd_t *pgd; | ||
| 56 | pmd_t *pmd; | ||
| 57 | |||
| 58 | spin_lock(&init_mm.page_table_lock); | ||
| 59 | |||
| 60 | pgd = pgd_offset_k(minicache_address); | ||
| 61 | pmd = pmd_alloc(&init_mm, pgd, minicache_address); | ||
| 62 | if (!pmd) | ||
| 63 | BUG(); | ||
| 64 | minicache_pte = pte_alloc_kernel(&init_mm, pmd, minicache_address); | ||
| 65 | if (!minicache_pte) | ||
| 66 | BUG(); | ||
| 67 | |||
| 68 | spin_unlock(&init_mm.page_table_lock); | ||
| 69 | |||
| 70 | return 0; | ||
| 71 | } | ||
| 72 | |||
| 73 | core_initcall(minicache_init); | ||
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index 0fbcfe00dd8d..51ecd512603d 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
| @@ -43,7 +43,7 @@ obj-$(CONFIG_SCx200) += scx200.o | |||
| 43 | # Note: kbuild does not track this dependency due to usage of .incbin | 43 | # Note: kbuild does not track this dependency due to usage of .incbin |
| 44 | $(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so | 44 | $(obj)/vsyscall.o: $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so |
| 45 | targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) | 45 | targets += $(foreach F,int80 sysenter,vsyscall-$F.o vsyscall-$F.so) |
| 46 | targets += vsyscall.lds | 46 | targets += vsyscall-note.o vsyscall.lds |
| 47 | 47 | ||
| 48 | # The DSO images are built using a special linker script. | 48 | # The DSO images are built using a special linker script. |
| 49 | quiet_cmd_syscall = SYSCALL $@ | 49 | quiet_cmd_syscall = SYSCALL $@ |
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 45641a872550..0ff65abcd56c 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c | |||
| @@ -1222,6 +1222,7 @@ static int suspend(int vetoable) | |||
| 1222 | 1222 | ||
| 1223 | save_processor_state(); | 1223 | save_processor_state(); |
| 1224 | err = set_system_power_state(APM_STATE_SUSPEND); | 1224 | err = set_system_power_state(APM_STATE_SUSPEND); |
| 1225 | ignore_normal_resume = 1; | ||
| 1225 | restore_processor_state(); | 1226 | restore_processor_state(); |
| 1226 | 1227 | ||
| 1227 | local_irq_disable(); | 1228 | local_irq_disable(); |
| @@ -1229,7 +1230,6 @@ static int suspend(int vetoable) | |||
| 1229 | spin_lock(&i8253_lock); | 1230 | spin_lock(&i8253_lock); |
| 1230 | reinit_timer(); | 1231 | reinit_timer(); |
| 1231 | set_time(); | 1232 | set_time(); |
| 1232 | ignore_normal_resume = 1; | ||
| 1233 | 1233 | ||
| 1234 | spin_unlock(&i8253_lock); | 1234 | spin_unlock(&i8253_lock); |
| 1235 | write_sequnlock(&xtime_lock); | 1235 | write_sequnlock(&xtime_lock); |
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S index 4f3cdef75797..962b6c4e32b5 100644 --- a/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S | |||
| @@ -460,9 +460,9 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set | |||
| 460 | ;; | 460 | ;; |
| 461 | 461 | ||
| 462 | st8 [r2]=r14 // update current->blocked with new mask | 462 | st8 [r2]=r14 // update current->blocked with new mask |
| 463 | cmpxchg4.acq r14=[r9],r18,ar.ccv // current->thread_info->flags <- r18 | 463 | cmpxchg4.acq r8=[r9],r18,ar.ccv // current->thread_info->flags <- r18 |
| 464 | ;; | 464 | ;; |
| 465 | cmp.ne p6,p0=r17,r14 // update failed? | 465 | cmp.ne p6,p0=r17,r8 // update failed? |
| 466 | (p6) br.cond.spnt.few 1b // yes -> retry | 466 | (p6) br.cond.spnt.few 1b // yes -> retry |
| 467 | 467 | ||
| 468 | #ifdef CONFIG_SMP | 468 | #ifdef CONFIG_SMP |
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c index febc091c2f02..f1aca7cffd12 100644 --- a/arch/ia64/kernel/module.c +++ b/arch/ia64/kernel/module.c | |||
| @@ -825,14 +825,16 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind | |||
| 825 | * XXX Should have an arch-hook for running this after final section | 825 | * XXX Should have an arch-hook for running this after final section |
| 826 | * addresses have been selected... | 826 | * addresses have been selected... |
| 827 | */ | 827 | */ |
| 828 | /* See if gp can cover the entire core module: */ | 828 | uint64_t gp; |
| 829 | uint64_t gp = (uint64_t) mod->module_core + MAX_LTOFF / 2; | 829 | if (mod->core_size > MAX_LTOFF) |
| 830 | if (mod->core_size >= MAX_LTOFF) | ||
| 831 | /* | 830 | /* |
| 832 | * This takes advantage of fact that SHF_ARCH_SMALL gets allocated | 831 | * This takes advantage of fact that SHF_ARCH_SMALL gets allocated |
| 833 | * at the end of the module. | 832 | * at the end of the module. |
| 834 | */ | 833 | */ |
| 835 | gp = (uint64_t) mod->module_core + mod->core_size - MAX_LTOFF / 2; | 834 | gp = mod->core_size - MAX_LTOFF / 2; |
| 835 | else | ||
| 836 | gp = mod->core_size / 2; | ||
| 837 | gp = (uint64_t) mod->module_core + ((gp + 7) & -8); | ||
| 836 | mod->arch.gp = gp; | 838 | mod->arch.gp = gp; |
| 837 | DEBUGP("%s: placing gp at 0x%lx\n", __FUNCTION__, gp); | 839 | DEBUGP("%s: placing gp at 0x%lx\n", __FUNCTION__, gp); |
| 838 | } | 840 | } |
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 08c8a5eb25ab..575a8f657b31 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
| @@ -635,11 +635,17 @@ ia64_flush_fph (struct task_struct *task) | |||
| 635 | { | 635 | { |
| 636 | struct ia64_psr *psr = ia64_psr(ia64_task_regs(task)); | 636 | struct ia64_psr *psr = ia64_psr(ia64_task_regs(task)); |
| 637 | 637 | ||
| 638 | /* | ||
| 639 | * Prevent migrating this task while | ||
| 640 | * we're fiddling with the FPU state | ||
| 641 | */ | ||
| 642 | preempt_disable(); | ||
| 638 | if (ia64_is_local_fpu_owner(task) && psr->mfh) { | 643 | if (ia64_is_local_fpu_owner(task) && psr->mfh) { |
| 639 | psr->mfh = 0; | 644 | psr->mfh = 0; |
| 640 | task->thread.flags |= IA64_THREAD_FPH_VALID; | 645 | task->thread.flags |= IA64_THREAD_FPH_VALID; |
| 641 | ia64_save_fpu(&task->thread.fph[0]); | 646 | ia64_save_fpu(&task->thread.fph[0]); |
| 642 | } | 647 | } |
| 648 | preempt_enable(); | ||
| 643 | } | 649 | } |
| 644 | 650 | ||
| 645 | /* | 651 | /* |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index b7e6b4cb374b..d14692e0920a 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
| @@ -720,7 +720,8 @@ cpu_init (void) | |||
| 720 | ia64_set_kr(IA64_KR_PT_BASE, __pa(ia64_imva(empty_zero_page))); | 720 | ia64_set_kr(IA64_KR_PT_BASE, __pa(ia64_imva(empty_zero_page))); |
| 721 | 721 | ||
| 722 | /* | 722 | /* |
| 723 | * Initialize default control register to defer all speculative faults. The | 723 | * Initialize default control register to defer speculative faults except |
| 724 | * for those arising from TLB misses, which are not deferred. The | ||
| 724 | * kernel MUST NOT depend on a particular setting of these bits (in other words, | 725 | * kernel MUST NOT depend on a particular setting of these bits (in other words, |
| 725 | * the kernel must have recovery code for all speculative accesses). Turn on | 726 | * the kernel must have recovery code for all speculative accesses). Turn on |
| 726 | * dcr.lc as per recommendation by the architecture team. Most IA-32 apps | 727 | * dcr.lc as per recommendation by the architecture team. Most IA-32 apps |
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index e82ad78081b3..1861173bd4f6 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
| @@ -111,6 +111,24 @@ ia64_bad_break (unsigned long break_num, struct pt_regs *regs) | |||
| 111 | siginfo_t siginfo; | 111 | siginfo_t siginfo; |
| 112 | int sig, code; | 112 | int sig, code; |
| 113 | 113 | ||
| 114 | /* break.b always sets cr.iim to 0, which causes problems for | ||
| 115 | * debuggers. Get the real break number from the original instruction, | ||
| 116 | * but only for kernel code. User space break.b is left alone, to | ||
| 117 | * preserve the existing behaviour. All break codings have the same | ||
| 118 | * format, so there is no need to check the slot type. | ||
| 119 | */ | ||
| 120 | if (break_num == 0 && !user_mode(regs)) { | ||
| 121 | struct ia64_psr *ipsr = ia64_psr(regs); | ||
| 122 | unsigned long *bundle = (unsigned long *)regs->cr_iip; | ||
| 123 | unsigned long slot; | ||
| 124 | switch (ipsr->ri) { | ||
| 125 | case 0: slot = (bundle[0] >> 5); break; | ||
| 126 | case 1: slot = (bundle[0] >> 46) | (bundle[1] << 18); break; | ||
| 127 | default: slot = (bundle[1] >> 23); break; | ||
| 128 | } | ||
| 129 | break_num = ((slot >> 36 & 1) << 20) | (slot >> 6 & 0xfffff); | ||
| 130 | } | ||
| 131 | |||
| 114 | /* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */ | 132 | /* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */ |
| 115 | siginfo.si_addr = (void __user *) (regs->cr_iip + ia64_psr(regs)->ri); | 133 | siginfo.si_addr = (void __user *) (regs->cr_iip + ia64_psr(regs)->ri); |
| 116 | siginfo.si_imm = break_num; | 134 | siginfo.si_imm = break_num; |
| @@ -202,13 +220,21 @@ disabled_fph_fault (struct pt_regs *regs) | |||
| 202 | 220 | ||
| 203 | /* first, grant user-level access to fph partition: */ | 221 | /* first, grant user-level access to fph partition: */ |
| 204 | psr->dfh = 0; | 222 | psr->dfh = 0; |
| 223 | |||
| 224 | /* | ||
| 225 | * Make sure that no other task gets in on this processor | ||
| 226 | * while we're claiming the FPU | ||
| 227 | */ | ||
| 228 | preempt_disable(); | ||
| 205 | #ifndef CONFIG_SMP | 229 | #ifndef CONFIG_SMP |
| 206 | { | 230 | { |
| 207 | struct task_struct *fpu_owner | 231 | struct task_struct *fpu_owner |
| 208 | = (struct task_struct *)ia64_get_kr(IA64_KR_FPU_OWNER); | 232 | = (struct task_struct *)ia64_get_kr(IA64_KR_FPU_OWNER); |
| 209 | 233 | ||
| 210 | if (ia64_is_local_fpu_owner(current)) | 234 | if (ia64_is_local_fpu_owner(current)) { |
| 235 | preempt_enable_no_resched(); | ||
| 211 | return; | 236 | return; |
| 237 | } | ||
| 212 | 238 | ||
| 213 | if (fpu_owner) | 239 | if (fpu_owner) |
| 214 | ia64_flush_fph(fpu_owner); | 240 | ia64_flush_fph(fpu_owner); |
| @@ -226,6 +252,7 @@ disabled_fph_fault (struct pt_regs *regs) | |||
| 226 | */ | 252 | */ |
| 227 | psr->mfh = 1; | 253 | psr->mfh = 1; |
| 228 | } | 254 | } |
| 255 | preempt_enable_no_resched(); | ||
| 229 | } | 256 | } |
| 230 | 257 | ||
| 231 | static inline int | 258 | static inline int |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 547785e3cba2..4eb2f52b87a1 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
| @@ -305,8 +305,9 @@ setup_gate (void) | |||
| 305 | struct page *page; | 305 | struct page *page; |
| 306 | 306 | ||
| 307 | /* | 307 | /* |
| 308 | * Map the gate page twice: once read-only to export the ELF headers etc. and once | 308 | * Map the gate page twice: once read-only to export the ELF |
| 309 | * execute-only page to enable privilege-promotion via "epc": | 309 | * headers etc. and once execute-only page to enable |
| 310 | * privilege-promotion via "epc": | ||
| 310 | */ | 311 | */ |
| 311 | page = virt_to_page(ia64_imva(__start_gate_section)); | 312 | page = virt_to_page(ia64_imva(__start_gate_section)); |
| 312 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); | 313 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); |
| @@ -315,6 +316,20 @@ setup_gate (void) | |||
| 315 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); | 316 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); |
| 316 | #else | 317 | #else |
| 317 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); | 318 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); |
| 319 | /* Fill in the holes (if any) with read-only zero pages: */ | ||
| 320 | { | ||
| 321 | unsigned long addr; | ||
| 322 | |||
| 323 | for (addr = GATE_ADDR + PAGE_SIZE; | ||
| 324 | addr < GATE_ADDR + PERCPU_PAGE_SIZE; | ||
| 325 | addr += PAGE_SIZE) | ||
| 326 | { | ||
| 327 | put_kernel_page(ZERO_PAGE(0), addr, | ||
| 328 | PAGE_READONLY); | ||
| 329 | put_kernel_page(ZERO_PAGE(0), addr + PERCPU_PAGE_SIZE, | ||
| 330 | PAGE_READONLY); | ||
| 331 | } | ||
| 332 | } | ||
| 318 | #endif | 333 | #endif |
| 319 | ia64_patch_gate(); | 334 | ia64_patch_gate(); |
| 320 | } | 335 | } |
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index e64cb8175f7a..44bfc7f318cb 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
| @@ -222,7 +222,7 @@ void __init early_sn_setup(void) | |||
| 222 | 222 | ||
| 223 | extern int platform_intr_list[]; | 223 | extern int platform_intr_list[]; |
| 224 | extern nasid_t master_nasid; | 224 | extern nasid_t master_nasid; |
| 225 | static int shub_1_1_found __initdata; | 225 | static int __initdata shub_1_1_found = 0; |
| 226 | 226 | ||
| 227 | /* | 227 | /* |
| 228 | * sn_check_for_wars | 228 | * sn_check_for_wars |
| @@ -251,7 +251,7 @@ static void __init sn_check_for_wars(void) | |||
| 251 | } else { | 251 | } else { |
| 252 | for_each_online_node(cnode) { | 252 | for_each_online_node(cnode) { |
| 253 | if (is_shub_1_1(cnodeid_to_nasid(cnode))) | 253 | if (is_shub_1_1(cnodeid_to_nasid(cnode))) |
| 254 | sn_hub_info->shub_1_1_found = 1; | 254 | shub_1_1_found = 1; |
| 255 | } | 255 | } |
| 256 | } | 256 | } |
| 257 | } | 257 | } |
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig index 7dbf997ff205..5649fbae430e 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:05:59 2005 | 4 | # Tue Jun 7 20:34:23 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -135,7 +137,6 @@ CONFIG_PARPORT_1284=y | |||
| 135 | # | 137 | # |
| 136 | CONFIG_AMIGA_FLOPPY=y | 138 | CONFIG_AMIGA_FLOPPY=y |
| 137 | CONFIG_AMIGA_Z2RAM=y | 139 | CONFIG_AMIGA_Z2RAM=y |
| 138 | # CONFIG_BLK_DEV_XD is not set | ||
| 139 | # CONFIG_PARIDE is not set | 140 | # CONFIG_PARIDE is not set |
| 140 | # CONFIG_BLK_DEV_COW_COMMON is not set | 141 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 141 | CONFIG_BLK_DEV_LOOP=y | 142 | CONFIG_BLK_DEV_LOOP=y |
| @@ -223,17 +224,12 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 223 | # | 224 | # |
| 224 | # SCSI low-level drivers | 225 | # SCSI low-level drivers |
| 225 | # | 226 | # |
| 226 | # CONFIG_SCSI_7000FASST is not set | ||
| 227 | # CONFIG_SCSI_AHA152X is not set | 227 | # CONFIG_SCSI_AHA152X is not set |
| 228 | # CONFIG_SCSI_AHA1542 is not set | ||
| 229 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 228 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 230 | # CONFIG_SCSI_IN2000 is not set | 229 | # CONFIG_SCSI_IN2000 is not set |
| 231 | # CONFIG_SCSI_SATA is not set | 230 | # CONFIG_SCSI_SATA is not set |
| 232 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 233 | # CONFIG_SCSI_DTC3280 is not set | 231 | # CONFIG_SCSI_DTC3280 is not set |
| 234 | # CONFIG_SCSI_EATA is not set | ||
| 235 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 232 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 236 | # CONFIG_SCSI_GDTH is not set | ||
| 237 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | 233 | # CONFIG_SCSI_GENERIC_NCR5380 is not set |
| 238 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | 234 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set |
| 239 | # CONFIG_SCSI_PPA is not set | 235 | # CONFIG_SCSI_PPA is not set |
| @@ -244,7 +240,6 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 244 | # CONFIG_SCSI_QLOGIC_FAS is not set | 240 | # CONFIG_SCSI_QLOGIC_FAS is not set |
| 245 | # CONFIG_SCSI_SYM53C416 is not set | 241 | # CONFIG_SCSI_SYM53C416 is not set |
| 246 | # CONFIG_SCSI_T128 is not set | 242 | # CONFIG_SCSI_T128 is not set |
| 247 | # CONFIG_SCSI_U14_34F is not set | ||
| 248 | # CONFIG_SCSI_DEBUG is not set | 243 | # CONFIG_SCSI_DEBUG is not set |
| 249 | CONFIG_A3000_SCSI=y | 244 | CONFIG_A3000_SCSI=y |
| 250 | CONFIG_A2091_SCSI=y | 245 | CONFIG_A2091_SCSI=y |
| @@ -492,7 +487,6 @@ CONFIG_HYDRA=m | |||
| 492 | CONFIG_ZORRO8390=m | 487 | CONFIG_ZORRO8390=m |
| 493 | CONFIG_APNE=m | 488 | CONFIG_APNE=m |
| 494 | # CONFIG_NET_VENDOR_3COM is not set | 489 | # CONFIG_NET_VENDOR_3COM is not set |
| 495 | # CONFIG_LANCE is not set | ||
| 496 | # CONFIG_NET_VENDOR_SMC is not set | 490 | # CONFIG_NET_VENDOR_SMC is not set |
| 497 | # CONFIG_NET_VENDOR_RACAL is not set | 491 | # CONFIG_NET_VENDOR_RACAL is not set |
| 498 | # CONFIG_AT1700 is not set | 492 | # CONFIG_AT1700 is not set |
| @@ -620,7 +614,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 620 | # CONFIG_SERIO_PARKBD is not set | 614 | # CONFIG_SERIO_PARKBD is not set |
| 621 | # CONFIG_SERIO_RAW is not set | 615 | # CONFIG_SERIO_RAW is not set |
| 622 | # CONFIG_GAMEPORT is not set | 616 | # CONFIG_GAMEPORT is not set |
| 623 | CONFIG_SOUND_GAMEPORT=y | ||
| 624 | 617 | ||
| 625 | # | 618 | # |
| 626 | # Character devices | 619 | # Character devices |
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig index 505a2968e604..63024b0b7ac3 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:00 2005 | 4 | # Tue Jun 7 20:34:27 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 497 | CONFIG_SERIO_LIBPS2=m | 499 | CONFIG_SERIO_LIBPS2=m |
| 498 | # CONFIG_SERIO_RAW is not set | 500 | # CONFIG_SERIO_RAW is not set |
| 499 | # CONFIG_GAMEPORT is not set | 501 | # CONFIG_GAMEPORT is not set |
| 500 | CONFIG_SOUND_GAMEPORT=y | ||
| 501 | 502 | ||
| 502 | # | 503 | # |
| 503 | # Character devices | 504 | # Character devices |
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig index 617aa73c3250..6433da2d2ce2 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:18 2005 | 4 | # Tue Jun 7 20:34:32 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -531,7 +533,6 @@ CONFIG_SERIO_SERPORT=y | |||
| 531 | CONFIG_SERIO_LIBPS2=y | 533 | CONFIG_SERIO_LIBPS2=y |
| 532 | # CONFIG_SERIO_RAW is not set | 534 | # CONFIG_SERIO_RAW is not set |
| 533 | # CONFIG_GAMEPORT is not set | 535 | # CONFIG_GAMEPORT is not set |
| 534 | CONFIG_SOUND_GAMEPORT=y | ||
| 535 | 536 | ||
| 536 | # | 537 | # |
| 537 | # Character devices | 538 | # Character devices |
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig index b501db51d9ec..da2a23a21463 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:19 2005 | 4 | # Tue Jun 7 20:34:37 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -496,7 +498,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 496 | CONFIG_SERIO_LIBPS2=m | 498 | CONFIG_SERIO_LIBPS2=m |
| 497 | # CONFIG_SERIO_RAW is not set | 499 | # CONFIG_SERIO_RAW is not set |
| 498 | # CONFIG_GAMEPORT is not set | 500 | # CONFIG_GAMEPORT is not set |
| 499 | CONFIG_SOUND_GAMEPORT=y | ||
| 500 | 501 | ||
| 501 | # | 502 | # |
| 502 | # Character devices | 503 | # Character devices |
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig index 2bf6cef4f2b2..51251883adf8 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:21 2005 | 4 | # Tue Jun 7 20:34:41 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -498,7 +500,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 498 | CONFIG_SERIO_LIBPS2=m | 500 | CONFIG_SERIO_LIBPS2=m |
| 499 | # CONFIG_SERIO_RAW is not set | 501 | # CONFIG_SERIO_RAW is not set |
| 500 | # CONFIG_GAMEPORT is not set | 502 | # CONFIG_GAMEPORT is not set |
| 501 | CONFIG_SOUND_GAMEPORT=y | ||
| 502 | 503 | ||
| 503 | # | 504 | # |
| 504 | # Character devices | 505 | # Character devices |
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig index 7074f856820c..15b80abfe94a 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:24 2005 | 4 | # Tue Jun 7 20:34:45 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -540,7 +542,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 540 | CONFIG_SERIO_LIBPS2=m | 542 | CONFIG_SERIO_LIBPS2=m |
| 541 | # CONFIG_SERIO_RAW is not set | 543 | # CONFIG_SERIO_RAW is not set |
| 542 | # CONFIG_GAMEPORT is not set | 544 | # CONFIG_GAMEPORT is not set |
| 543 | CONFIG_SOUND_GAMEPORT=y | ||
| 544 | 545 | ||
| 545 | # | 546 | # |
| 546 | # Character devices | 547 | # Character devices |
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig index 61f09bc4846a..f0d5534f6830 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:28 2005 | 4 | # Tue Jun 7 20:34:50 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -498,7 +500,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 498 | CONFIG_SERIO_LIBPS2=m | 500 | CONFIG_SERIO_LIBPS2=m |
| 499 | # CONFIG_SERIO_RAW is not set | 501 | # CONFIG_SERIO_RAW is not set |
| 500 | # CONFIG_GAMEPORT is not set | 502 | # CONFIG_GAMEPORT is not set |
| 501 | CONFIG_SOUND_GAMEPORT=y | ||
| 502 | 503 | ||
| 503 | # | 504 | # |
| 504 | # Character devices | 505 | # Character devices |
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig index 69c01004ec41..1d5c46ff3c81 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:31 2005 | 4 | # Tue Jun 7 20:34:53 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 497 | CONFIG_SERIO_LIBPS2=m | 499 | CONFIG_SERIO_LIBPS2=m |
| 498 | # CONFIG_SERIO_RAW is not set | 500 | # CONFIG_SERIO_RAW is not set |
| 499 | # CONFIG_GAMEPORT is not set | 501 | # CONFIG_GAMEPORT is not set |
| 500 | CONFIG_SOUND_GAMEPORT=y | ||
| 501 | 502 | ||
| 502 | # | 503 | # |
| 503 | # Character devices | 504 | # Character devices |
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig index 550ec26006c1..856238634d42 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:34 2005 | 4 | # Tue Jun 7 20:34:58 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -125,7 +127,6 @@ CONFIG_FW_LOADER=m | |||
| 125 | # Block devices | 127 | # Block devices |
| 126 | # | 128 | # |
| 127 | # CONFIG_BLK_DEV_FD is not set | 129 | # CONFIG_BLK_DEV_FD is not set |
| 128 | # CONFIG_BLK_DEV_XD is not set | ||
| 129 | # CONFIG_BLK_DEV_COW_COMMON is not set | 130 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 130 | CONFIG_BLK_DEV_LOOP=y | 131 | CONFIG_BLK_DEV_LOOP=y |
| 131 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 132 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
| @@ -210,17 +211,12 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 210 | # | 211 | # |
| 211 | # SCSI low-level drivers | 212 | # SCSI low-level drivers |
| 212 | # | 213 | # |
| 213 | # CONFIG_SCSI_7000FASST is not set | ||
| 214 | # CONFIG_SCSI_AHA152X is not set | 214 | # CONFIG_SCSI_AHA152X is not set |
| 215 | # CONFIG_SCSI_AHA1542 is not set | ||
| 216 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 215 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 217 | # CONFIG_SCSI_IN2000 is not set | 216 | # CONFIG_SCSI_IN2000 is not set |
| 218 | # CONFIG_SCSI_SATA is not set | 217 | # CONFIG_SCSI_SATA is not set |
| 219 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 220 | # CONFIG_SCSI_DTC3280 is not set | 218 | # CONFIG_SCSI_DTC3280 is not set |
| 221 | # CONFIG_SCSI_EATA is not set | ||
| 222 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 219 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 223 | # CONFIG_SCSI_GDTH is not set | ||
| 224 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | 220 | # CONFIG_SCSI_GENERIC_NCR5380 is not set |
| 225 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | 221 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set |
| 226 | # CONFIG_SCSI_NCR53C406A is not set | 222 | # CONFIG_SCSI_NCR53C406A is not set |
| @@ -229,7 +225,6 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 229 | # CONFIG_SCSI_QLOGIC_FAS is not set | 225 | # CONFIG_SCSI_QLOGIC_FAS is not set |
| 230 | # CONFIG_SCSI_SYM53C416 is not set | 226 | # CONFIG_SCSI_SYM53C416 is not set |
| 231 | # CONFIG_SCSI_T128 is not set | 227 | # CONFIG_SCSI_T128 is not set |
| 232 | # CONFIG_SCSI_U14_34F is not set | ||
| 233 | # CONFIG_SCSI_DEBUG is not set | 228 | # CONFIG_SCSI_DEBUG is not set |
| 234 | 229 | ||
| 235 | # | 230 | # |
| @@ -466,7 +461,6 @@ CONFIG_EQUALIZER=m | |||
| 466 | CONFIG_NET_ETHERNET=y | 461 | CONFIG_NET_ETHERNET=y |
| 467 | CONFIG_MII=m | 462 | CONFIG_MII=m |
| 468 | # CONFIG_NET_VENDOR_3COM is not set | 463 | # CONFIG_NET_VENDOR_3COM is not set |
| 469 | # CONFIG_LANCE is not set | ||
| 470 | # CONFIG_NET_VENDOR_SMC is not set | 464 | # CONFIG_NET_VENDOR_SMC is not set |
| 471 | # CONFIG_NET_VENDOR_RACAL is not set | 465 | # CONFIG_NET_VENDOR_RACAL is not set |
| 472 | # CONFIG_AT1700 is not set | 466 | # CONFIG_AT1700 is not set |
| @@ -570,7 +564,6 @@ CONFIG_SERIO_Q40KBD=m | |||
| 570 | CONFIG_SERIO_LIBPS2=m | 564 | CONFIG_SERIO_LIBPS2=m |
| 571 | # CONFIG_SERIO_RAW is not set | 565 | # CONFIG_SERIO_RAW is not set |
| 572 | # CONFIG_GAMEPORT is not set | 566 | # CONFIG_GAMEPORT is not set |
| 573 | CONFIG_SOUND_GAMEPORT=y | ||
| 574 | 567 | ||
| 575 | # | 568 | # |
| 576 | # Character devices | 569 | # Character devices |
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig index 5b5a619645aa..af903b5c5708 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:37 2005 | 4 | # Tue Jun 7 20:35:02 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -171,7 +173,6 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 171 | # | 173 | # |
| 172 | # CONFIG_SCSI_SATA is not set | 174 | # CONFIG_SCSI_SATA is not set |
| 173 | # CONFIG_SCSI_DEBUG is not set | 175 | # CONFIG_SCSI_DEBUG is not set |
| 174 | CONFIG_SUN3_SCSI=y | ||
| 175 | 176 | ||
| 176 | # | 177 | # |
| 177 | # Multi-device support (RAID and LVM) | 178 | # Multi-device support (RAID and LVM) |
| @@ -487,7 +488,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 487 | CONFIG_SERIO_LIBPS2=m | 488 | CONFIG_SERIO_LIBPS2=m |
| 488 | # CONFIG_SERIO_RAW is not set | 489 | # CONFIG_SERIO_RAW is not set |
| 489 | # CONFIG_GAMEPORT is not set | 490 | # CONFIG_GAMEPORT is not set |
| 490 | CONFIG_SOUND_GAMEPORT=y | ||
| 491 | 491 | ||
| 492 | # | 492 | # |
| 493 | # Character devices | 493 | # Character devices |
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig index 704e42344cba..997143b7928a 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:06:40 2005 | 4 | # Tue Jun 7 20:35:06 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 35 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 36 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 38 | CONFIG_PRINTK=y | ||
| 39 | CONFIG_BUG=y | ||
| 38 | CONFIG_BASE_FULL=y | 40 | CONFIG_BASE_FULL=y |
| 39 | CONFIG_FUTEX=y | 41 | CONFIG_FUTEX=y |
| 40 | CONFIG_EPOLL=y | 42 | CONFIG_EPOLL=y |
| @@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m | |||
| 497 | CONFIG_SERIO_LIBPS2=m | 499 | CONFIG_SERIO_LIBPS2=m |
| 498 | # CONFIG_SERIO_RAW is not set | 500 | # CONFIG_SERIO_RAW is not set |
| 499 | # CONFIG_GAMEPORT is not set | 501 | # CONFIG_GAMEPORT is not set |
| 500 | CONFIG_SOUND_GAMEPORT=y | ||
| 501 | 502 | ||
| 502 | # | 503 | # |
| 503 | # Character devices | 504 | # Character devices |
diff --git a/arch/m68k/defconfig b/arch/m68k/defconfig index 5b2296ecba82..7d935e48a9a8 100644 --- a/arch/m68k/defconfig +++ b/arch/m68k/defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.12-rc2-m68k | 3 | # Linux kernel version: 2.6.12-rc6-m68k |
| 4 | # Tue Apr 5 14:05:31 2005 | 4 | # Tue Jun 7 20:34:17 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -33,6 +33,8 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 33 | # CONFIG_EMBEDDED is not set | 33 | # CONFIG_EMBEDDED is not set |
| 34 | CONFIG_KALLSYMS=y | 34 | CONFIG_KALLSYMS=y |
| 35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 36 | CONFIG_PRINTK=y | ||
| 37 | CONFIG_BUG=y | ||
| 36 | CONFIG_BASE_FULL=y | 38 | CONFIG_BASE_FULL=y |
| 37 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
| 38 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
| @@ -355,7 +357,6 @@ CONFIG_SERIO_SERPORT=y | |||
| 355 | CONFIG_SERIO_LIBPS2=y | 357 | CONFIG_SERIO_LIBPS2=y |
| 356 | # CONFIG_SERIO_RAW is not set | 358 | # CONFIG_SERIO_RAW is not set |
| 357 | # CONFIG_GAMEPORT is not set | 359 | # CONFIG_GAMEPORT is not set |
| 358 | CONFIG_SOUND_GAMEPORT=y | ||
| 359 | 360 | ||
| 360 | # | 361 | # |
| 361 | # Character devices | 362 | # Character devices |
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c index 2b6c9d32b7a6..c4a33f265dc0 100644 --- a/arch/m68knommu/kernel/process.c +++ b/arch/m68knommu/kernel/process.c | |||
| @@ -45,11 +45,13 @@ asmlinkage void ret_from_fork(void); | |||
| 45 | */ | 45 | */ |
| 46 | void default_idle(void) | 46 | void default_idle(void) |
| 47 | { | 47 | { |
| 48 | while(1) { | 48 | local_irq_disable(); |
| 49 | if (need_resched()) | 49 | while (!need_resched()) { |
| 50 | __asm__("stop #0x2000" : : : "cc"); | 50 | /* This stop will re-enable interrupts */ |
| 51 | schedule(); | 51 | __asm__("stop #0x2000" : : : "cc"); |
| 52 | local_irq_disable(); | ||
| 52 | } | 53 | } |
| 54 | local_irq_enable(); | ||
| 53 | } | 55 | } |
| 54 | 56 | ||
| 55 | void (*idle)(void) = default_idle; | 57 | void (*idle)(void) = default_idle; |
| @@ -63,7 +65,12 @@ void (*idle)(void) = default_idle; | |||
| 63 | void cpu_idle(void) | 65 | void cpu_idle(void) |
| 64 | { | 66 | { |
| 65 | /* endless idle loop with no priority at all */ | 67 | /* endless idle loop with no priority at all */ |
| 66 | idle(); | 68 | while (1) { |
| 69 | idle(); | ||
| 70 | preempt_enable_no_resched(); | ||
| 71 | schedule(); | ||
| 72 | preempt_disable(); | ||
| 73 | } | ||
| 67 | } | 74 | } |
| 68 | 75 | ||
| 69 | void machine_restart(char * __unused) | 76 | void machine_restart(char * __unused) |
diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index 6e6377a69d5b..54ce6da22644 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig | |||
| @@ -1083,6 +1083,23 @@ source "drivers/zorro/Kconfig" | |||
| 1083 | 1083 | ||
| 1084 | source kernel/power/Kconfig | 1084 | source kernel/power/Kconfig |
| 1085 | 1085 | ||
| 1086 | config SECCOMP | ||
| 1087 | bool "Enable seccomp to safely compute untrusted bytecode" | ||
| 1088 | depends on PROC_FS | ||
| 1089 | default y | ||
| 1090 | help | ||
| 1091 | This kernel feature is useful for number crunching applications | ||
| 1092 | that may need to compute untrusted bytecode during their | ||
| 1093 | execution. By using pipes or other transports made available to | ||
| 1094 | the process as file descriptors supporting the read/write | ||
| 1095 | syscalls, it's possible to isolate those applications in | ||
| 1096 | their own address space using seccomp. Once seccomp is | ||
| 1097 | enabled via /proc/<pid>/seccomp, it cannot be disabled | ||
| 1098 | and the task is only allowed to execute a few safe syscalls | ||
| 1099 | defined by each seccomp mode. | ||
| 1100 | |||
| 1101 | If unsure, say Y. Only embedded should say N here. | ||
| 1102 | |||
| 1086 | endmenu | 1103 | endmenu |
| 1087 | 1104 | ||
| 1088 | config ISA_DMA_API | 1105 | config ISA_DMA_API |
diff --git a/arch/ppc/kernel/cputable.c b/arch/ppc/kernel/cputable.c index 8aa5e8c69009..d44b7dc5390a 100644 --- a/arch/ppc/kernel/cputable.c +++ b/arch/ppc/kernel/cputable.c | |||
| @@ -838,6 +838,17 @@ struct cpu_spec cpu_specs[] = { | |||
| 838 | .icache_bsize = 32, | 838 | .icache_bsize = 32, |
| 839 | .dcache_bsize = 32, | 839 | .dcache_bsize = 32, |
| 840 | }, | 840 | }, |
| 841 | { /* 405EP */ | ||
| 842 | .pvr_mask = 0xffff0000, | ||
| 843 | .pvr_value = 0x51210000, | ||
| 844 | .cpu_name = "405EP", | ||
| 845 | .cpu_features = CPU_FTR_SPLIT_ID_CACHE | | ||
| 846 | CPU_FTR_USE_TB, | ||
| 847 | .cpu_user_features = PPC_FEATURE_32 | | ||
| 848 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, | ||
| 849 | .icache_bsize = 32, | ||
| 850 | .dcache_bsize = 32, | ||
| 851 | }, | ||
| 841 | 852 | ||
| 842 | #endif /* CONFIG_40x */ | 853 | #endif /* CONFIG_40x */ |
| 843 | #ifdef CONFIG_44x | 854 | #ifdef CONFIG_44x |
diff --git a/arch/ppc/kernel/entry.S b/arch/ppc/kernel/entry.S index 5f075dbc4ee7..661523707e8c 100644 --- a/arch/ppc/kernel/entry.S +++ b/arch/ppc/kernel/entry.S | |||
| @@ -202,7 +202,7 @@ _GLOBAL(DoSyscall) | |||
| 202 | rlwinm r11,r11,0,~_TIFL_FORCE_NOERROR | 202 | rlwinm r11,r11,0,~_TIFL_FORCE_NOERROR |
| 203 | stw r11,TI_LOCAL_FLAGS(r10) | 203 | stw r11,TI_LOCAL_FLAGS(r10) |
| 204 | lwz r11,TI_FLAGS(r10) | 204 | lwz r11,TI_FLAGS(r10) |
| 205 | andi. r11,r11,_TIF_SYSCALL_TRACE | 205 | andi. r11,r11,_TIF_SYSCALL_T_OR_A |
| 206 | bne- syscall_dotrace | 206 | bne- syscall_dotrace |
| 207 | syscall_dotrace_cont: | 207 | syscall_dotrace_cont: |
| 208 | cmplwi 0,r0,NR_syscalls | 208 | cmplwi 0,r0,NR_syscalls |
| @@ -237,7 +237,7 @@ ret_from_syscall: | |||
| 237 | SYNC | 237 | SYNC |
| 238 | MTMSRD(r10) | 238 | MTMSRD(r10) |
| 239 | lwz r9,TI_FLAGS(r12) | 239 | lwz r9,TI_FLAGS(r12) |
| 240 | andi. r0,r9,(_TIF_SYSCALL_TRACE|_TIF_SIGPENDING|_TIF_NEED_RESCHED) | 240 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SIGPENDING|_TIF_NEED_RESCHED) |
| 241 | bne- syscall_exit_work | 241 | bne- syscall_exit_work |
| 242 | syscall_exit_cont: | 242 | syscall_exit_cont: |
| 243 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) | 243 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) |
| @@ -277,7 +277,8 @@ syscall_dotrace: | |||
| 277 | SAVE_NVGPRS(r1) | 277 | SAVE_NVGPRS(r1) |
| 278 | li r0,0xc00 | 278 | li r0,0xc00 |
| 279 | stw r0,TRAP(r1) | 279 | stw r0,TRAP(r1) |
| 280 | bl do_syscall_trace | 280 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 281 | bl do_syscall_trace_enter | ||
| 281 | lwz r0,GPR0(r1) /* Restore original registers */ | 282 | lwz r0,GPR0(r1) /* Restore original registers */ |
| 282 | lwz r3,GPR3(r1) | 283 | lwz r3,GPR3(r1) |
| 283 | lwz r4,GPR4(r1) | 284 | lwz r4,GPR4(r1) |
| @@ -291,7 +292,7 @@ syscall_dotrace: | |||
| 291 | syscall_exit_work: | 292 | syscall_exit_work: |
| 292 | stw r6,RESULT(r1) /* Save result */ | 293 | stw r6,RESULT(r1) /* Save result */ |
| 293 | stw r3,GPR3(r1) /* Update return value */ | 294 | stw r3,GPR3(r1) /* Update return value */ |
| 294 | andi. r0,r9,_TIF_SYSCALL_TRACE | 295 | andi. r0,r9,_TIF_SYSCALL_T_OR_A |
| 295 | beq 5f | 296 | beq 5f |
| 296 | ori r10,r10,MSR_EE | 297 | ori r10,r10,MSR_EE |
| 297 | SYNC | 298 | SYNC |
| @@ -303,7 +304,8 @@ syscall_exit_work: | |||
| 303 | li r4,0xc00 | 304 | li r4,0xc00 |
| 304 | stw r4,TRAP(r1) | 305 | stw r4,TRAP(r1) |
| 305 | 4: | 306 | 4: |
| 306 | bl do_syscall_trace | 307 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 308 | bl do_syscall_trace_leave | ||
| 307 | REST_NVGPRS(r1) | 309 | REST_NVGPRS(r1) |
| 308 | 2: | 310 | 2: |
| 309 | lwz r3,GPR3(r1) | 311 | lwz r3,GPR3(r1) |
| @@ -627,8 +629,8 @@ sigreturn_exit: | |||
| 627 | subi r1,r3,STACK_FRAME_OVERHEAD | 629 | subi r1,r3,STACK_FRAME_OVERHEAD |
| 628 | rlwinm r12,r1,0,0,18 /* current_thread_info() */ | 630 | rlwinm r12,r1,0,0,18 /* current_thread_info() */ |
| 629 | lwz r9,TI_FLAGS(r12) | 631 | lwz r9,TI_FLAGS(r12) |
| 630 | andi. r0,r9,_TIF_SYSCALL_TRACE | 632 | andi. r0,r9,_TIF_SYSCALL_T_OR_A |
| 631 | bnel- do_syscall_trace | 633 | bnel- do_syscall_trace_leave |
| 632 | /* fall through */ | 634 | /* fall through */ |
| 633 | 635 | ||
| 634 | .globl ret_from_except_full | 636 | .globl ret_from_except_full |
diff --git a/arch/ppc/kernel/misc.S b/arch/ppc/kernel/misc.S index e4f1615ec13f..7329ef177a18 100644 --- a/arch/ppc/kernel/misc.S +++ b/arch/ppc/kernel/misc.S | |||
| @@ -619,7 +619,7 @@ _GLOBAL(flush_instruction_cache) | |||
| 619 | _GLOBAL(flush_icache_range) | 619 | _GLOBAL(flush_icache_range) |
| 620 | BEGIN_FTR_SECTION | 620 | BEGIN_FTR_SECTION |
| 621 | blr /* for 601, do nothing */ | 621 | blr /* for 601, do nothing */ |
| 622 | END_FTR_SECTION_IFSET(PPC_FEATURE_UNIFIED_CACHE) | 622 | END_FTR_SECTION_IFCLR(CPU_FTR_SPLIT_ID_CACHE) |
| 623 | li r5,L1_CACHE_LINE_SIZE-1 | 623 | li r5,L1_CACHE_LINE_SIZE-1 |
| 624 | andc r3,r3,r5 | 624 | andc r3,r3,r5 |
| 625 | subf r4,r3,r4 | 625 | subf r4,r3,r4 |
| @@ -736,7 +736,7 @@ _GLOBAL(flush_dcache_all) | |||
| 736 | _GLOBAL(__flush_dcache_icache) | 736 | _GLOBAL(__flush_dcache_icache) |
| 737 | BEGIN_FTR_SECTION | 737 | BEGIN_FTR_SECTION |
| 738 | blr /* for 601, do nothing */ | 738 | blr /* for 601, do nothing */ |
| 739 | END_FTR_SECTION_IFSET(PPC_FEATURE_UNIFIED_CACHE) | 739 | END_FTR_SECTION_IFCLR(CPU_FTR_SPLIT_ID_CACHE) |
| 740 | rlwinm r3,r3,0,0,19 /* Get page base address */ | 740 | rlwinm r3,r3,0,0,19 /* Get page base address */ |
| 741 | li r4,4096/L1_CACHE_LINE_SIZE /* Number of lines in a page */ | 741 | li r4,4096/L1_CACHE_LINE_SIZE /* Number of lines in a page */ |
| 742 | mtctr r4 | 742 | mtctr r4 |
| @@ -764,7 +764,7 @@ END_FTR_SECTION_IFSET(PPC_FEATURE_UNIFIED_CACHE) | |||
| 764 | _GLOBAL(__flush_dcache_icache_phys) | 764 | _GLOBAL(__flush_dcache_icache_phys) |
| 765 | BEGIN_FTR_SECTION | 765 | BEGIN_FTR_SECTION |
| 766 | blr /* for 601, do nothing */ | 766 | blr /* for 601, do nothing */ |
| 767 | END_FTR_SECTION_IFSET(PPC_FEATURE_UNIFIED_CACHE) | 767 | END_FTR_SECTION_IFCLR(CPU_FTR_SPLIT_ID_CACHE) |
| 768 | mfmsr r10 | 768 | mfmsr r10 |
| 769 | rlwinm r0,r10,0,28,26 /* clear DR */ | 769 | rlwinm r0,r10,0,28,26 /* clear DR */ |
| 770 | mtmsr r0 | 770 | mtmsr r0 |
diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c index 2ccb58fe4fc3..d59ad07de8e7 100644 --- a/arch/ppc/kernel/ppc_ksyms.c +++ b/arch/ppc/kernel/ppc_ksyms.c | |||
| @@ -55,7 +55,6 @@ | |||
| 55 | #define EXPORT_SYMTAB_STROPS | 55 | #define EXPORT_SYMTAB_STROPS |
| 56 | 56 | ||
| 57 | extern void transfer_to_handler(void); | 57 | extern void transfer_to_handler(void); |
| 58 | extern void do_syscall_trace(void); | ||
| 59 | extern void do_IRQ(struct pt_regs *regs); | 58 | extern void do_IRQ(struct pt_regs *regs); |
| 60 | extern void MachineCheckException(struct pt_regs *regs); | 59 | extern void MachineCheckException(struct pt_regs *regs); |
| 61 | extern void AlignmentException(struct pt_regs *regs); | 60 | extern void AlignmentException(struct pt_regs *regs); |
| @@ -74,7 +73,6 @@ extern unsigned long mm_ptov (unsigned long paddr); | |||
| 74 | EXPORT_SYMBOL(clear_pages); | 73 | EXPORT_SYMBOL(clear_pages); |
| 75 | EXPORT_SYMBOL(clear_user_page); | 74 | EXPORT_SYMBOL(clear_user_page); |
| 76 | EXPORT_SYMBOL(do_signal); | 75 | EXPORT_SYMBOL(do_signal); |
| 77 | EXPORT_SYMBOL(do_syscall_trace); | ||
| 78 | EXPORT_SYMBOL(transfer_to_handler); | 76 | EXPORT_SYMBOL(transfer_to_handler); |
| 79 | EXPORT_SYMBOL(do_IRQ); | 77 | EXPORT_SYMBOL(do_IRQ); |
| 80 | EXPORT_SYMBOL(MachineCheckException); | 78 | EXPORT_SYMBOL(MachineCheckException); |
diff --git a/arch/ppc/kernel/ptrace.c b/arch/ppc/kernel/ptrace.c index 59d59a8dc249..e7aee4108dea 100644 --- a/arch/ppc/kernel/ptrace.c +++ b/arch/ppc/kernel/ptrace.c | |||
| @@ -27,6 +27,9 @@ | |||
| 27 | #include <linux/user.h> | 27 | #include <linux/user.h> |
| 28 | #include <linux/security.h> | 28 | #include <linux/security.h> |
| 29 | #include <linux/signal.h> | 29 | #include <linux/signal.h> |
| 30 | #include <linux/seccomp.h> | ||
| 31 | #include <linux/audit.h> | ||
| 32 | #include <linux/module.h> | ||
| 30 | 33 | ||
| 31 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
| 32 | #include <asm/page.h> | 35 | #include <asm/page.h> |
| @@ -455,11 +458,10 @@ out: | |||
| 455 | return ret; | 458 | return ret; |
| 456 | } | 459 | } |
| 457 | 460 | ||
| 458 | void do_syscall_trace(void) | 461 | static void do_syscall_trace(void) |
| 459 | { | 462 | { |
| 460 | if (!test_thread_flag(TIF_SYSCALL_TRACE) | 463 | /* the 0x80 provides a way for the tracing parent to distinguish |
| 461 | || !(current->ptrace & PT_PTRACED)) | 464 | between a syscall stop and SIGTRAP delivery */ |
| 462 | return; | ||
| 463 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) | 465 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) |
| 464 | ? 0x80 : 0)); | 466 | ? 0x80 : 0)); |
| 465 | 467 | ||
| @@ -473,3 +475,33 @@ void do_syscall_trace(void) | |||
| 473 | current->exit_code = 0; | 475 | current->exit_code = 0; |
| 474 | } | 476 | } |
| 475 | } | 477 | } |
| 478 | |||
| 479 | void do_syscall_trace_enter(struct pt_regs *regs) | ||
| 480 | { | ||
| 481 | if (test_thread_flag(TIF_SYSCALL_TRACE) | ||
| 482 | && (current->ptrace & PT_PTRACED)) | ||
| 483 | do_syscall_trace(); | ||
| 484 | |||
| 485 | if (unlikely(current->audit_context)) | ||
| 486 | audit_syscall_entry(current, AUDIT_ARCH_PPC, | ||
| 487 | regs->gpr[0], | ||
| 488 | regs->gpr[3], regs->gpr[4], | ||
| 489 | regs->gpr[5], regs->gpr[6]); | ||
| 490 | } | ||
| 491 | |||
| 492 | void do_syscall_trace_leave(struct pt_regs *regs) | ||
| 493 | { | ||
| 494 | secure_computing(regs->gpr[0]); | ||
| 495 | |||
| 496 | if (unlikely(current->audit_context)) | ||
| 497 | audit_syscall_exit(current, | ||
| 498 | (regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS, | ||
| 499 | regs->result); | ||
| 500 | |||
| 501 | if ((test_thread_flag(TIF_SYSCALL_TRACE)) | ||
| 502 | && (current->ptrace & PT_PTRACED)) | ||
| 503 | do_syscall_trace(); | ||
| 504 | } | ||
| 505 | |||
| 506 | EXPORT_SYMBOL(do_syscall_trace_enter); | ||
| 507 | EXPORT_SYMBOL(do_syscall_trace_leave); | ||
diff --git a/arch/ppc/platforms/pmac_cpufreq.c b/arch/ppc/platforms/pmac_cpufreq.c index 937f46df711e..5fdd4f607a40 100644 --- a/arch/ppc/platforms/pmac_cpufreq.c +++ b/arch/ppc/platforms/pmac_cpufreq.c | |||
| @@ -83,7 +83,7 @@ static u32 frequency_gpio; | |||
| 83 | static u32 slew_done_gpio; | 83 | static u32 slew_done_gpio; |
| 84 | static int no_schedule; | 84 | static int no_schedule; |
| 85 | static int has_cpu_l2lve; | 85 | static int has_cpu_l2lve; |
| 86 | 86 | static int is_pmu_based; | |
| 87 | 87 | ||
| 88 | /* There are only two frequency states for each processor. Values | 88 | /* There are only two frequency states for each processor. Values |
| 89 | * are in kHz for the time being. | 89 | * are in kHz for the time being. |
| @@ -463,7 +463,7 @@ static int __pmac pmac_cpufreq_suspend(struct cpufreq_policy *policy, u32 state) | |||
| 463 | */ | 463 | */ |
| 464 | no_schedule = 1; | 464 | no_schedule = 1; |
| 465 | sleep_freq = cur_freq; | 465 | sleep_freq = cur_freq; |
| 466 | if (cur_freq == low_freq) | 466 | if (cur_freq == low_freq && !is_pmu_based) |
| 467 | do_set_cpu_speed(CPUFREQ_HIGH, 0); | 467 | do_set_cpu_speed(CPUFREQ_HIGH, 0); |
| 468 | return 0; | 468 | return 0; |
| 469 | } | 469 | } |
| @@ -588,6 +588,7 @@ static int __pmac pmac_cpufreq_init_MacRISC3(struct device_node *cpunode) | |||
| 588 | return 1; | 588 | return 1; |
| 589 | hi_freq = (*value) / 1000; | 589 | hi_freq = (*value) / 1000; |
| 590 | set_speed_proc = pmu_set_cpu_speed; | 590 | set_speed_proc = pmu_set_cpu_speed; |
| 591 | is_pmu_based = 1; | ||
| 591 | 592 | ||
| 592 | return 0; | 593 | return 0; |
| 593 | } | 594 | } |
| @@ -692,6 +693,7 @@ static int __init pmac_cpufreq_setup(void) | |||
| 692 | hi_freq = cur_freq; | 693 | hi_freq = cur_freq; |
| 693 | low_freq = 400000; | 694 | low_freq = 400000; |
| 694 | set_speed_proc = pmu_set_cpu_speed; | 695 | set_speed_proc = pmu_set_cpu_speed; |
| 696 | is_pmu_based = 1; | ||
| 695 | } | 697 | } |
| 696 | /* Else check for TiPb 400 & 500 */ | 698 | /* Else check for TiPb 400 & 500 */ |
| 697 | else if (machine_is_compatible("PowerBook3,2")) { | 699 | else if (machine_is_compatible("PowerBook3,2")) { |
| @@ -703,6 +705,7 @@ static int __init pmac_cpufreq_setup(void) | |||
| 703 | hi_freq = cur_freq; | 705 | hi_freq = cur_freq; |
| 704 | low_freq = 300000; | 706 | low_freq = 300000; |
| 705 | set_speed_proc = pmu_set_cpu_speed; | 707 | set_speed_proc = pmu_set_cpu_speed; |
| 708 | is_pmu_based = 1; | ||
| 706 | } | 709 | } |
| 707 | /* Else check for 750FX */ | 710 | /* Else check for 750FX */ |
| 708 | else if (PVR_VER(mfspr(SPRN_PVR)) == 0x7000) | 711 | else if (PVR_VER(mfspr(SPRN_PVR)) == 0x7000) |
diff --git a/arch/ppc64/boot/prom.c b/arch/ppc64/boot/prom.c index 7b607d1862cb..d5218b15824e 100644 --- a/arch/ppc64/boot/prom.c +++ b/arch/ppc64/boot/prom.c | |||
| @@ -11,6 +11,23 @@ | |||
| 11 | #include <linux/string.h> | 11 | #include <linux/string.h> |
| 12 | #include <linux/ctype.h> | 12 | #include <linux/ctype.h> |
| 13 | 13 | ||
| 14 | extern __u32 __div64_32(unsigned long long *dividend, __u32 divisor); | ||
| 15 | |||
| 16 | /* The unnecessary pointer compare is there | ||
| 17 | * to check for type safety (n must be 64bit) | ||
| 18 | */ | ||
| 19 | # define do_div(n,base) ({ \ | ||
| 20 | __u32 __base = (base); \ | ||
| 21 | __u32 __rem; \ | ||
| 22 | (void)(((typeof((n)) *)0) == ((unsigned long long *)0)); \ | ||
| 23 | if (((n) >> 32) == 0) { \ | ||
| 24 | __rem = (__u32)(n) % __base; \ | ||
| 25 | (n) = (__u32)(n) / __base; \ | ||
| 26 | } else \ | ||
| 27 | __rem = __div64_32(&(n), __base); \ | ||
| 28 | __rem; \ | ||
| 29 | }) | ||
| 30 | |||
| 14 | int (*prom)(void *); | 31 | int (*prom)(void *); |
| 15 | 32 | ||
| 16 | void *chosen_handle; | 33 | void *chosen_handle; |
| @@ -352,7 +369,7 @@ static int skip_atoi(const char **s) | |||
| 352 | #define SPECIAL 32 /* 0x */ | 369 | #define SPECIAL 32 /* 0x */ |
| 353 | #define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */ | 370 | #define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */ |
| 354 | 371 | ||
| 355 | static char * number(char * str, long num, int base, int size, int precision, int type) | 372 | static char * number(char * str, unsigned long long num, int base, int size, int precision, int type) |
| 356 | { | 373 | { |
| 357 | char c,sign,tmp[66]; | 374 | char c,sign,tmp[66]; |
| 358 | const char *digits="0123456789abcdefghijklmnopqrstuvwxyz"; | 375 | const char *digits="0123456789abcdefghijklmnopqrstuvwxyz"; |
| @@ -367,9 +384,9 @@ static char * number(char * str, long num, int base, int size, int precision, in | |||
| 367 | c = (type & ZEROPAD) ? '0' : ' '; | 384 | c = (type & ZEROPAD) ? '0' : ' '; |
| 368 | sign = 0; | 385 | sign = 0; |
| 369 | if (type & SIGN) { | 386 | if (type & SIGN) { |
| 370 | if (num < 0) { | 387 | if ((signed long long)num < 0) { |
| 371 | sign = '-'; | 388 | sign = '-'; |
| 372 | num = -num; | 389 | num = - (signed long long)num; |
| 373 | size--; | 390 | size--; |
| 374 | } else if (type & PLUS) { | 391 | } else if (type & PLUS) { |
| 375 | sign = '+'; | 392 | sign = '+'; |
| @@ -389,8 +406,7 @@ static char * number(char * str, long num, int base, int size, int precision, in | |||
| 389 | if (num == 0) | 406 | if (num == 0) |
| 390 | tmp[i++]='0'; | 407 | tmp[i++]='0'; |
| 391 | else while (num != 0) { | 408 | else while (num != 0) { |
| 392 | tmp[i++] = digits[num % base]; | 409 | tmp[i++] = digits[do_div(num, base)]; |
| 393 | num /= base; | ||
| 394 | } | 410 | } |
| 395 | if (i > precision) | 411 | if (i > precision) |
| 396 | precision = i; | 412 | precision = i; |
| @@ -426,7 +442,7 @@ int sprintf(char * buf, const char *fmt, ...); | |||
| 426 | int vsprintf(char *buf, const char *fmt, va_list args) | 442 | int vsprintf(char *buf, const char *fmt, va_list args) |
| 427 | { | 443 | { |
| 428 | int len; | 444 | int len; |
| 429 | unsigned long num; | 445 | unsigned long long num; |
| 430 | int i, base; | 446 | int i, base; |
| 431 | char * str; | 447 | char * str; |
| 432 | const char *s; | 448 | const char *s; |
diff --git a/arch/ppc64/configs/g5_defconfig b/arch/ppc64/configs/g5_defconfig index 0f90df0b3f9c..1eb33398648e 100644 --- a/arch/ppc64/configs/g5_defconfig +++ b/arch/ppc64/configs/g5_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.11 | 3 | # Linux kernel version: 2.6.12-rc6 |
| 4 | # Thu Mar 10 16:47:04 2005 | 4 | # Tue Jun 14 16:59:20 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
| 11 | CONFIG_HAVE_DEC_LOCK=y | 11 | CONFIG_HAVE_DEC_LOCK=y |
| 12 | CONFIG_EARLY_PRINTK=y | 12 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 13 | CONFIG_COMPAT=y |
| 14 | CONFIG_FRAME_POINTER=y | 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13 | |||
| 20 | CONFIG_EXPERIMENTAL=y | 20 | CONFIG_EXPERIMENTAL=y |
| 21 | CONFIG_CLEAN_COMPILE=y | 21 | CONFIG_CLEAN_COMPILE=y |
| 22 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 23 | 24 | ||
| 24 | # | 25 | # |
| 25 | # General setup | 26 | # General setup |
| @@ -31,19 +32,20 @@ CONFIG_POSIX_MQUEUE=y | |||
| 31 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 32 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
| 33 | # CONFIG_AUDIT is not set | 34 | # CONFIG_AUDIT is not set |
| 34 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 35 | CONFIG_HOTPLUG=y | 35 | CONFIG_HOTPLUG=y |
| 36 | CONFIG_KOBJECT_UEVENT=y | 36 | CONFIG_KOBJECT_UEVENT=y |
| 37 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
| 38 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
| 39 | # CONFIG_CPUSETS is not set | ||
| 39 | # CONFIG_EMBEDDED is not set | 40 | # CONFIG_EMBEDDED is not set |
| 40 | CONFIG_KALLSYMS=y | 41 | CONFIG_KALLSYMS=y |
| 41 | # CONFIG_KALLSYMS_ALL is not set | 42 | # CONFIG_KALLSYMS_ALL is not set |
| 42 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 44 | CONFIG_PRINTK=y | ||
| 45 | CONFIG_BUG=y | ||
| 43 | CONFIG_BASE_FULL=y | 46 | CONFIG_BASE_FULL=y |
| 44 | CONFIG_FUTEX=y | 47 | CONFIG_FUTEX=y |
| 45 | CONFIG_EPOLL=y | 48 | CONFIG_EPOLL=y |
| 46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 47 | CONFIG_SHMEM=y | 49 | CONFIG_SHMEM=y |
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 50 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 49 | CONFIG_CC_ALIGN_LABELS=0 | 51 | CONFIG_CC_ALIGN_LABELS=0 |
| @@ -87,6 +89,8 @@ CONFIG_NR_CPUS=2 | |||
| 87 | # CONFIG_SCHED_SMT is not set | 89 | # CONFIG_SCHED_SMT is not set |
| 88 | # CONFIG_PREEMPT is not set | 90 | # CONFIG_PREEMPT is not set |
| 89 | CONFIG_GENERIC_HARDIRQS=y | 91 | CONFIG_GENERIC_HARDIRQS=y |
| 92 | CONFIG_SECCOMP=y | ||
| 93 | CONFIG_ISA_DMA_API=y | ||
| 90 | 94 | ||
| 91 | # | 95 | # |
| 92 | # General setup | 96 | # General setup |
| @@ -97,6 +101,7 @@ CONFIG_BINFMT_ELF=y | |||
| 97 | # CONFIG_BINFMT_MISC is not set | 101 | # CONFIG_BINFMT_MISC is not set |
| 98 | CONFIG_PCI_LEGACY_PROC=y | 102 | CONFIG_PCI_LEGACY_PROC=y |
| 99 | CONFIG_PCI_NAMES=y | 103 | CONFIG_PCI_NAMES=y |
| 104 | # CONFIG_PCI_DEBUG is not set | ||
| 100 | # CONFIG_HOTPLUG_CPU is not set | 105 | # CONFIG_HOTPLUG_CPU is not set |
| 101 | 106 | ||
| 102 | # | 107 | # |
| @@ -105,10 +110,6 @@ CONFIG_PCI_NAMES=y | |||
| 105 | # CONFIG_PCCARD is not set | 110 | # CONFIG_PCCARD is not set |
| 106 | 111 | ||
| 107 | # | 112 | # |
| 108 | # PC-card bridges | ||
| 109 | # | ||
| 110 | |||
| 111 | # | ||
| 112 | # PCI Hotplug Support | 113 | # PCI Hotplug Support |
| 113 | # | 114 | # |
| 114 | # CONFIG_HOTPLUG_PCI is not set | 115 | # CONFIG_HOTPLUG_PCI is not set |
| @@ -293,7 +294,6 @@ CONFIG_SCSI_SATA_SVW=y | |||
| 293 | # CONFIG_SCSI_BUSLOGIC is not set | 294 | # CONFIG_SCSI_BUSLOGIC is not set |
| 294 | # CONFIG_SCSI_DMX3191D is not set | 295 | # CONFIG_SCSI_DMX3191D is not set |
| 295 | # CONFIG_SCSI_EATA is not set | 296 | # CONFIG_SCSI_EATA is not set |
| 296 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 297 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 297 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 298 | # CONFIG_SCSI_GDTH is not set | 298 | # CONFIG_SCSI_GDTH is not set |
| 299 | # CONFIG_SCSI_IPS is not set | 299 | # CONFIG_SCSI_IPS is not set |
| @@ -301,7 +301,6 @@ CONFIG_SCSI_SATA_SVW=y | |||
| 301 | # CONFIG_SCSI_INIA100 is not set | 301 | # CONFIG_SCSI_INIA100 is not set |
| 302 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 302 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
| 303 | # CONFIG_SCSI_IPR is not set | 303 | # CONFIG_SCSI_IPR is not set |
| 304 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 305 | # CONFIG_SCSI_QLOGIC_FC is not set | 304 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 306 | # CONFIG_SCSI_QLOGIC_1280 is not set | 305 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 307 | CONFIG_SCSI_QLA2XXX=y | 306 | CONFIG_SCSI_QLA2XXX=y |
| @@ -310,6 +309,7 @@ CONFIG_SCSI_QLA2XXX=y | |||
| 310 | # CONFIG_SCSI_QLA2300 is not set | 309 | # CONFIG_SCSI_QLA2300 is not set |
| 311 | # CONFIG_SCSI_QLA2322 is not set | 310 | # CONFIG_SCSI_QLA2322 is not set |
| 312 | # CONFIG_SCSI_QLA6312 is not set | 311 | # CONFIG_SCSI_QLA6312 is not set |
| 312 | # CONFIG_SCSI_LPFC is not set | ||
| 313 | # CONFIG_SCSI_DC395x is not set | 313 | # CONFIG_SCSI_DC395x is not set |
| 314 | # CONFIG_SCSI_DC390T is not set | 314 | # CONFIG_SCSI_DC390T is not set |
| 315 | # CONFIG_SCSI_DEBUG is not set | 315 | # CONFIG_SCSI_DEBUG is not set |
| @@ -332,6 +332,7 @@ CONFIG_DM_CRYPT=m | |||
| 332 | CONFIG_DM_SNAPSHOT=m | 332 | CONFIG_DM_SNAPSHOT=m |
| 333 | CONFIG_DM_MIRROR=m | 333 | CONFIG_DM_MIRROR=m |
| 334 | CONFIG_DM_ZERO=m | 334 | CONFIG_DM_ZERO=m |
| 335 | # CONFIG_DM_MULTIPATH is not set | ||
| 335 | 336 | ||
| 336 | # | 337 | # |
| 337 | # Fusion MPT device support | 338 | # Fusion MPT device support |
| @@ -394,7 +395,6 @@ CONFIG_NET=y | |||
| 394 | # | 395 | # |
| 395 | CONFIG_PACKET=y | 396 | CONFIG_PACKET=y |
| 396 | # CONFIG_PACKET_MMAP is not set | 397 | # CONFIG_PACKET_MMAP is not set |
| 397 | # CONFIG_NETLINK_DEV is not set | ||
| 398 | CONFIG_UNIX=y | 398 | CONFIG_UNIX=y |
| 399 | CONFIG_NET_KEY=m | 399 | CONFIG_NET_KEY=m |
| 400 | CONFIG_INET=y | 400 | CONFIG_INET=y |
| @@ -564,6 +564,8 @@ CONFIG_E1000=y | |||
| 564 | # CONFIG_R8169 is not set | 564 | # CONFIG_R8169 is not set |
| 565 | # CONFIG_SK98LIN is not set | 565 | # CONFIG_SK98LIN is not set |
| 566 | CONFIG_TIGON3=m | 566 | CONFIG_TIGON3=m |
| 567 | # CONFIG_BNX2 is not set | ||
| 568 | # CONFIG_MV643XX_ETH is not set | ||
| 567 | 569 | ||
| 568 | # | 570 | # |
| 569 | # Ethernet (10000 Mbit) | 571 | # Ethernet (10000 Mbit) |
| @@ -631,18 +633,6 @@ CONFIG_INPUT_EVDEV=y | |||
| 631 | # CONFIG_INPUT_EVBUG is not set | 633 | # CONFIG_INPUT_EVBUG is not set |
| 632 | 634 | ||
| 633 | # | 635 | # |
| 634 | # Input I/O drivers | ||
| 635 | # | ||
| 636 | # CONFIG_GAMEPORT is not set | ||
| 637 | CONFIG_SOUND_GAMEPORT=y | ||
| 638 | CONFIG_SERIO=y | ||
| 639 | # CONFIG_SERIO_I8042 is not set | ||
| 640 | # CONFIG_SERIO_SERPORT is not set | ||
| 641 | # CONFIG_SERIO_CT82C710 is not set | ||
| 642 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 643 | # CONFIG_SERIO_RAW is not set | ||
| 644 | |||
| 645 | # | ||
| 646 | # Input Device Drivers | 636 | # Input Device Drivers |
| 647 | # | 637 | # |
| 648 | CONFIG_INPUT_KEYBOARD=y | 638 | CONFIG_INPUT_KEYBOARD=y |
| @@ -660,6 +650,16 @@ CONFIG_INPUT_MOUSE=y | |||
| 660 | # CONFIG_INPUT_MISC is not set | 650 | # CONFIG_INPUT_MISC is not set |
| 661 | 651 | ||
| 662 | # | 652 | # |
| 653 | # Hardware I/O ports | ||
| 654 | # | ||
| 655 | CONFIG_SERIO=y | ||
| 656 | # CONFIG_SERIO_I8042 is not set | ||
| 657 | # CONFIG_SERIO_SERPORT is not set | ||
| 658 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 659 | # CONFIG_SERIO_RAW is not set | ||
| 660 | # CONFIG_GAMEPORT is not set | ||
| 661 | |||
| 662 | # | ||
| 663 | # Character devices | 663 | # Character devices |
| 664 | # | 664 | # |
| 665 | CONFIG_VT=y | 665 | CONFIG_VT=y |
| @@ -676,6 +676,7 @@ CONFIG_HW_CONSOLE=y | |||
| 676 | # Non-8250 serial port support | 676 | # Non-8250 serial port support |
| 677 | # | 677 | # |
| 678 | # CONFIG_SERIAL_PMACZILOG is not set | 678 | # CONFIG_SERIAL_PMACZILOG is not set |
| 679 | # CONFIG_SERIAL_JSM is not set | ||
| 679 | CONFIG_UNIX98_PTYS=y | 680 | CONFIG_UNIX98_PTYS=y |
| 680 | CONFIG_LEGACY_PTYS=y | 681 | CONFIG_LEGACY_PTYS=y |
| 681 | CONFIG_LEGACY_PTY_COUNT=256 | 682 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -698,9 +699,12 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 698 | # | 699 | # |
| 699 | # Ftape, the floppy tape device driver | 700 | # Ftape, the floppy tape device driver |
| 700 | # | 701 | # |
| 702 | CONFIG_AGP=m | ||
| 703 | CONFIG_AGP_UNINORTH=m | ||
| 701 | # CONFIG_DRM is not set | 704 | # CONFIG_DRM is not set |
| 702 | CONFIG_RAW_DRIVER=y | 705 | CONFIG_RAW_DRIVER=y |
| 703 | CONFIG_MAX_RAW_DEVS=256 | 706 | CONFIG_MAX_RAW_DEVS=256 |
| 707 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 704 | 708 | ||
| 705 | # | 709 | # |
| 706 | # TPM devices | 710 | # TPM devices |
| @@ -730,12 +734,11 @@ CONFIG_I2C_ALGOBIT=y | |||
| 730 | # CONFIG_I2C_AMD8111 is not set | 734 | # CONFIG_I2C_AMD8111 is not set |
| 731 | # CONFIG_I2C_I801 is not set | 735 | # CONFIG_I2C_I801 is not set |
| 732 | # CONFIG_I2C_I810 is not set | 736 | # CONFIG_I2C_I810 is not set |
| 737 | # CONFIG_I2C_PIIX4 is not set | ||
| 733 | # CONFIG_I2C_ISA is not set | 738 | # CONFIG_I2C_ISA is not set |
| 734 | CONFIG_I2C_KEYWEST=y | 739 | CONFIG_I2C_KEYWEST=y |
| 735 | # CONFIG_I2C_MPC is not set | ||
| 736 | # CONFIG_I2C_NFORCE2 is not set | 740 | # CONFIG_I2C_NFORCE2 is not set |
| 737 | # CONFIG_I2C_PARPORT_LIGHT is not set | 741 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 738 | # CONFIG_I2C_PIIX4 is not set | ||
| 739 | # CONFIG_I2C_PROSAVAGE is not set | 742 | # CONFIG_I2C_PROSAVAGE is not set |
| 740 | # CONFIG_I2C_SAVAGE4 is not set | 743 | # CONFIG_I2C_SAVAGE4 is not set |
| 741 | # CONFIG_SCx200_ACB is not set | 744 | # CONFIG_SCx200_ACB is not set |
| @@ -772,6 +775,7 @@ CONFIG_I2C_KEYWEST=y | |||
| 772 | # CONFIG_SENSORS_LM85 is not set | 775 | # CONFIG_SENSORS_LM85 is not set |
| 773 | # CONFIG_SENSORS_LM87 is not set | 776 | # CONFIG_SENSORS_LM87 is not set |
| 774 | # CONFIG_SENSORS_LM90 is not set | 777 | # CONFIG_SENSORS_LM90 is not set |
| 778 | # CONFIG_SENSORS_LM92 is not set | ||
| 775 | # CONFIG_SENSORS_MAX1619 is not set | 779 | # CONFIG_SENSORS_MAX1619 is not set |
| 776 | # CONFIG_SENSORS_PC87360 is not set | 780 | # CONFIG_SENSORS_PC87360 is not set |
| 777 | # CONFIG_SENSORS_SMSC47B397 is not set | 781 | # CONFIG_SENSORS_SMSC47B397 is not set |
| @@ -785,6 +789,7 @@ CONFIG_I2C_KEYWEST=y | |||
| 785 | # | 789 | # |
| 786 | # Other I2C Chip support | 790 | # Other I2C Chip support |
| 787 | # | 791 | # |
| 792 | # CONFIG_SENSORS_DS1337 is not set | ||
| 788 | # CONFIG_SENSORS_EEPROM is not set | 793 | # CONFIG_SENSORS_EEPROM is not set |
| 789 | # CONFIG_SENSORS_PCF8574 is not set | 794 | # CONFIG_SENSORS_PCF8574 is not set |
| 790 | # CONFIG_SENSORS_PCF8591 is not set | 795 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -817,6 +822,11 @@ CONFIG_I2C_KEYWEST=y | |||
| 817 | # Graphics support | 822 | # Graphics support |
| 818 | # | 823 | # |
| 819 | CONFIG_FB=y | 824 | CONFIG_FB=y |
| 825 | CONFIG_FB_CFB_FILLRECT=y | ||
| 826 | CONFIG_FB_CFB_COPYAREA=y | ||
| 827 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 828 | CONFIG_FB_SOFT_CURSOR=y | ||
| 829 | CONFIG_FB_MACMODES=y | ||
| 820 | CONFIG_FB_MODE_HELPERS=y | 830 | CONFIG_FB_MODE_HELPERS=y |
| 821 | CONFIG_FB_TILEBLITTING=y | 831 | CONFIG_FB_TILEBLITTING=y |
| 822 | # CONFIG_FB_CIRRUS is not set | 832 | # CONFIG_FB_CIRRUS is not set |
| @@ -830,6 +840,7 @@ CONFIG_FB_OF=y | |||
| 830 | # CONFIG_FB_ASILIANT is not set | 840 | # CONFIG_FB_ASILIANT is not set |
| 831 | # CONFIG_FB_IMSTT is not set | 841 | # CONFIG_FB_IMSTT is not set |
| 832 | # CONFIG_FB_VGA16 is not set | 842 | # CONFIG_FB_VGA16 is not set |
| 843 | # CONFIG_FB_NVIDIA is not set | ||
| 833 | CONFIG_FB_RIVA=y | 844 | CONFIG_FB_RIVA=y |
| 834 | # CONFIG_FB_RIVA_I2C is not set | 845 | # CONFIG_FB_RIVA_I2C is not set |
| 835 | # CONFIG_FB_RIVA_DEBUG is not set | 846 | # CONFIG_FB_RIVA_DEBUG is not set |
| @@ -847,6 +858,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 847 | # CONFIG_FB_3DFX is not set | 858 | # CONFIG_FB_3DFX is not set |
| 848 | # CONFIG_FB_VOODOO1 is not set | 859 | # CONFIG_FB_VOODOO1 is not set |
| 849 | # CONFIG_FB_TRIDENT is not set | 860 | # CONFIG_FB_TRIDENT is not set |
| 861 | # CONFIG_FB_S1D13XXX is not set | ||
| 850 | # CONFIG_FB_VIRTUAL is not set | 862 | # CONFIG_FB_VIRTUAL is not set |
| 851 | 863 | ||
| 852 | # | 864 | # |
| @@ -880,6 +892,8 @@ CONFIG_LCD_DEVICE=y | |||
| 880 | # | 892 | # |
| 881 | # USB support | 893 | # USB support |
| 882 | # | 894 | # |
| 895 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 896 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 883 | CONFIG_USB=y | 897 | CONFIG_USB=y |
| 884 | # CONFIG_USB_DEBUG is not set | 898 | # CONFIG_USB_DEBUG is not set |
| 885 | 899 | ||
| @@ -890,8 +904,6 @@ CONFIG_USB_DEVICEFS=y | |||
| 890 | # CONFIG_USB_BANDWIDTH is not set | 904 | # CONFIG_USB_BANDWIDTH is not set |
| 891 | # CONFIG_USB_DYNAMIC_MINORS is not set | 905 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 892 | # CONFIG_USB_OTG is not set | 906 | # CONFIG_USB_OTG is not set |
| 893 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 894 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 895 | 907 | ||
| 896 | # | 908 | # |
| 897 | # USB Host Controller Drivers | 909 | # USB Host Controller Drivers |
| @@ -917,7 +929,6 @@ CONFIG_USB_PRINTER=y | |||
| 917 | # | 929 | # |
| 918 | CONFIG_USB_STORAGE=y | 930 | CONFIG_USB_STORAGE=y |
| 919 | # CONFIG_USB_STORAGE_DEBUG is not set | 931 | # CONFIG_USB_STORAGE_DEBUG is not set |
| 920 | CONFIG_USB_STORAGE_RW_DETECT=y | ||
| 921 | CONFIG_USB_STORAGE_DATAFAB=y | 932 | CONFIG_USB_STORAGE_DATAFAB=y |
| 922 | CONFIG_USB_STORAGE_FREECOM=y | 933 | CONFIG_USB_STORAGE_FREECOM=y |
| 923 | CONFIG_USB_STORAGE_ISD200=y | 934 | CONFIG_USB_STORAGE_ISD200=y |
| @@ -1004,8 +1015,10 @@ CONFIG_USB_MON=y | |||
| 1004 | # | 1015 | # |
| 1005 | CONFIG_USB_SERIAL=m | 1016 | CONFIG_USB_SERIAL=m |
| 1006 | CONFIG_USB_SERIAL_GENERIC=y | 1017 | CONFIG_USB_SERIAL_GENERIC=y |
| 1018 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 1007 | CONFIG_USB_SERIAL_BELKIN=m | 1019 | CONFIG_USB_SERIAL_BELKIN=m |
| 1008 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | 1020 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m |
| 1021 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 1009 | CONFIG_USB_SERIAL_CYPRESS_M8=m | 1022 | CONFIG_USB_SERIAL_CYPRESS_M8=m |
| 1010 | CONFIG_USB_SERIAL_EMPEG=m | 1023 | CONFIG_USB_SERIAL_EMPEG=m |
| 1011 | CONFIG_USB_SERIAL_FTDI_SIO=m | 1024 | CONFIG_USB_SERIAL_FTDI_SIO=m |
| @@ -1034,6 +1047,7 @@ CONFIG_USB_SERIAL_KLSI=m | |||
| 1034 | CONFIG_USB_SERIAL_KOBIL_SCT=m | 1047 | CONFIG_USB_SERIAL_KOBIL_SCT=m |
| 1035 | CONFIG_USB_SERIAL_MCT_U232=m | 1048 | CONFIG_USB_SERIAL_MCT_U232=m |
| 1036 | CONFIG_USB_SERIAL_PL2303=m | 1049 | CONFIG_USB_SERIAL_PL2303=m |
| 1050 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 1037 | CONFIG_USB_SERIAL_SAFE=m | 1051 | CONFIG_USB_SERIAL_SAFE=m |
| 1038 | CONFIG_USB_SERIAL_SAFE_PADDED=y | 1052 | CONFIG_USB_SERIAL_SAFE_PADDED=y |
| 1039 | CONFIG_USB_SERIAL_TI=m | 1053 | CONFIG_USB_SERIAL_TI=m |
| @@ -1270,11 +1284,13 @@ CONFIG_OPROFILE=y | |||
| 1270 | # | 1284 | # |
| 1271 | # Kernel hacking | 1285 | # Kernel hacking |
| 1272 | # | 1286 | # |
| 1287 | # CONFIG_PRINTK_TIME is not set | ||
| 1273 | CONFIG_DEBUG_KERNEL=y | 1288 | CONFIG_DEBUG_KERNEL=y |
| 1274 | CONFIG_MAGIC_SYSRQ=y | 1289 | CONFIG_MAGIC_SYSRQ=y |
| 1275 | # CONFIG_PRINTK_TIME is not set | 1290 | CONFIG_LOG_BUF_SHIFT=17 |
| 1276 | # CONFIG_SCHEDSTATS is not set | 1291 | # CONFIG_SCHEDSTATS is not set |
| 1277 | # CONFIG_DEBUG_SLAB is not set | 1292 | # CONFIG_DEBUG_SLAB is not set |
| 1293 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1278 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1294 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1279 | # CONFIG_DEBUG_KOBJECT is not set | 1295 | # CONFIG_DEBUG_KOBJECT is not set |
| 1280 | # CONFIG_DEBUG_INFO is not set | 1296 | # CONFIG_DEBUG_INFO is not set |
diff --git a/arch/ppc64/configs/iSeries_defconfig b/arch/ppc64/configs/iSeries_defconfig index a39e9d2e25da..f6a2b99afd63 100644 --- a/arch/ppc64/configs/iSeries_defconfig +++ b/arch/ppc64/configs/iSeries_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.11-rc3-bk6 | 3 | # Linux kernel version: 2.6.12-rc6 |
| 4 | # Wed Feb 9 23:34:52 2005 | 4 | # Tue Jun 14 17:01:28 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
| 11 | CONFIG_HAVE_DEC_LOCK=y | 11 | CONFIG_HAVE_DEC_LOCK=y |
| 12 | CONFIG_EARLY_PRINTK=y | 12 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 13 | CONFIG_COMPAT=y |
| 14 | CONFIG_FRAME_POINTER=y | 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13 | |||
| 20 | CONFIG_EXPERIMENTAL=y | 20 | CONFIG_EXPERIMENTAL=y |
| 21 | CONFIG_CLEAN_COMPILE=y | 21 | CONFIG_CLEAN_COMPILE=y |
| 22 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 23 | 24 | ||
| 24 | # | 25 | # |
| 25 | # General setup | 26 | # General setup |
| @@ -30,24 +31,29 @@ CONFIG_SYSVIPC=y | |||
| 30 | CONFIG_POSIX_MQUEUE=y | 31 | CONFIG_POSIX_MQUEUE=y |
| 31 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 32 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
| 33 | CONFIG_LOG_BUF_SHIFT=17 | 34 | CONFIG_AUDIT=y |
| 35 | CONFIG_AUDITSYSCALL=y | ||
| 34 | CONFIG_HOTPLUG=y | 36 | CONFIG_HOTPLUG=y |
| 35 | CONFIG_KOBJECT_UEVENT=y | 37 | CONFIG_KOBJECT_UEVENT=y |
| 36 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 37 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 40 | # CONFIG_CPUSETS is not set | ||
| 38 | # CONFIG_EMBEDDED is not set | 41 | # CONFIG_EMBEDDED is not set |
| 39 | CONFIG_KALLSYMS=y | 42 | CONFIG_KALLSYMS=y |
| 40 | # CONFIG_KALLSYMS_ALL is not set | 43 | # CONFIG_KALLSYMS_ALL is not set |
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 45 | CONFIG_PRINTK=y | ||
| 46 | CONFIG_BUG=y | ||
| 47 | CONFIG_BASE_FULL=y | ||
| 42 | CONFIG_FUTEX=y | 48 | CONFIG_FUTEX=y |
| 43 | CONFIG_EPOLL=y | 49 | CONFIG_EPOLL=y |
| 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 45 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
| 46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 47 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_CC_ALIGN_LABELS=0 |
| 48 | CONFIG_CC_ALIGN_LOOPS=0 | 53 | CONFIG_CC_ALIGN_LOOPS=0 |
| 49 | CONFIG_CC_ALIGN_JUMPS=0 | 54 | CONFIG_CC_ALIGN_JUMPS=0 |
| 50 | # CONFIG_TINY_SHMEM is not set | 55 | # CONFIG_TINY_SHMEM is not set |
| 56 | CONFIG_BASE_SMALL=0 | ||
| 51 | 57 | ||
| 52 | # | 58 | # |
| 53 | # Loadable module support | 59 | # Loadable module support |
| @@ -79,6 +85,8 @@ CONFIG_NR_CPUS=32 | |||
| 79 | CONFIG_GENERIC_HARDIRQS=y | 85 | CONFIG_GENERIC_HARDIRQS=y |
| 80 | CONFIG_MSCHUNKS=y | 86 | CONFIG_MSCHUNKS=y |
| 81 | CONFIG_LPARCFG=y | 87 | CONFIG_LPARCFG=y |
| 88 | CONFIG_SECCOMP=y | ||
| 89 | CONFIG_ISA_DMA_API=y | ||
| 82 | 90 | ||
| 83 | # | 91 | # |
| 84 | # General setup | 92 | # General setup |
| @@ -89,6 +97,7 @@ CONFIG_BINFMT_ELF=y | |||
| 89 | # CONFIG_BINFMT_MISC is not set | 97 | # CONFIG_BINFMT_MISC is not set |
| 90 | CONFIG_PCI_LEGACY_PROC=y | 98 | CONFIG_PCI_LEGACY_PROC=y |
| 91 | CONFIG_PCI_NAMES=y | 99 | CONFIG_PCI_NAMES=y |
| 100 | # CONFIG_PCI_DEBUG is not set | ||
| 92 | 101 | ||
| 93 | # | 102 | # |
| 94 | # PCCARD (PCMCIA/CardBus) support | 103 | # PCCARD (PCMCIA/CardBus) support |
| @@ -96,10 +105,6 @@ CONFIG_PCI_NAMES=y | |||
| 96 | # CONFIG_PCCARD is not set | 105 | # CONFIG_PCCARD is not set |
| 97 | 106 | ||
| 98 | # | 107 | # |
| 99 | # PC-card bridges | ||
| 100 | # | ||
| 101 | |||
| 102 | # | ||
| 103 | # PCI Hotplug Support | 108 | # PCI Hotplug Support |
| 104 | # | 109 | # |
| 105 | # CONFIG_HOTPLUG_PCI is not set | 110 | # CONFIG_HOTPLUG_PCI is not set |
| @@ -210,7 +215,6 @@ CONFIG_SCSI_FC_ATTRS=y | |||
| 210 | # CONFIG_SCSI_BUSLOGIC is not set | 215 | # CONFIG_SCSI_BUSLOGIC is not set |
| 211 | # CONFIG_SCSI_DMX3191D is not set | 216 | # CONFIG_SCSI_DMX3191D is not set |
| 212 | # CONFIG_SCSI_EATA is not set | 217 | # CONFIG_SCSI_EATA is not set |
| 213 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 214 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 218 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 215 | # CONFIG_SCSI_GDTH is not set | 219 | # CONFIG_SCSI_GDTH is not set |
| 216 | # CONFIG_SCSI_IPS is not set | 220 | # CONFIG_SCSI_IPS is not set |
| @@ -219,7 +223,6 @@ CONFIG_SCSI_IBMVSCSI=m | |||
| 219 | # CONFIG_SCSI_INIA100 is not set | 223 | # CONFIG_SCSI_INIA100 is not set |
| 220 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 224 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
| 221 | # CONFIG_SCSI_IPR is not set | 225 | # CONFIG_SCSI_IPR is not set |
| 222 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 223 | # CONFIG_SCSI_QLOGIC_FC is not set | 226 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 224 | # CONFIG_SCSI_QLOGIC_1280 is not set | 227 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 225 | CONFIG_SCSI_QLA2XXX=y | 228 | CONFIG_SCSI_QLA2XXX=y |
| @@ -228,6 +231,7 @@ CONFIG_SCSI_QLA2XXX=y | |||
| 228 | # CONFIG_SCSI_QLA2300 is not set | 231 | # CONFIG_SCSI_QLA2300 is not set |
| 229 | # CONFIG_SCSI_QLA2322 is not set | 232 | # CONFIG_SCSI_QLA2322 is not set |
| 230 | # CONFIG_SCSI_QLA6312 is not set | 233 | # CONFIG_SCSI_QLA6312 is not set |
| 234 | # CONFIG_SCSI_LPFC is not set | ||
| 231 | # CONFIG_SCSI_DC395x is not set | 235 | # CONFIG_SCSI_DC395x is not set |
| 232 | # CONFIG_SCSI_DC390T is not set | 236 | # CONFIG_SCSI_DC390T is not set |
| 233 | # CONFIG_SCSI_DEBUG is not set | 237 | # CONFIG_SCSI_DEBUG is not set |
| @@ -250,6 +254,7 @@ CONFIG_DM_CRYPT=m | |||
| 250 | CONFIG_DM_SNAPSHOT=m | 254 | CONFIG_DM_SNAPSHOT=m |
| 251 | CONFIG_DM_MIRROR=m | 255 | CONFIG_DM_MIRROR=m |
| 252 | CONFIG_DM_ZERO=m | 256 | CONFIG_DM_ZERO=m |
| 257 | # CONFIG_DM_MULTIPATH is not set | ||
| 253 | 258 | ||
| 254 | # | 259 | # |
| 255 | # Fusion MPT device support | 260 | # Fusion MPT device support |
| @@ -280,7 +285,6 @@ CONFIG_NET=y | |||
| 280 | # | 285 | # |
| 281 | CONFIG_PACKET=y | 286 | CONFIG_PACKET=y |
| 282 | # CONFIG_PACKET_MMAP is not set | 287 | # CONFIG_PACKET_MMAP is not set |
| 283 | # CONFIG_NETLINK_DEV is not set | ||
| 284 | CONFIG_UNIX=y | 288 | CONFIG_UNIX=y |
| 285 | CONFIG_NET_KEY=m | 289 | CONFIG_NET_KEY=m |
| 286 | CONFIG_INET=y | 290 | CONFIG_INET=y |
| @@ -445,7 +449,6 @@ CONFIG_PCNET32=y | |||
| 445 | # CONFIG_DGRS is not set | 449 | # CONFIG_DGRS is not set |
| 446 | # CONFIG_EEPRO100 is not set | 450 | # CONFIG_EEPRO100 is not set |
| 447 | CONFIG_E100=y | 451 | CONFIG_E100=y |
| 448 | # CONFIG_E100_NAPI is not set | ||
| 449 | # CONFIG_FEALNX is not set | 452 | # CONFIG_FEALNX is not set |
| 450 | # CONFIG_NATSEMI is not set | 453 | # CONFIG_NATSEMI is not set |
| 451 | # CONFIG_NE2K_PCI is not set | 454 | # CONFIG_NE2K_PCI is not set |
| @@ -471,6 +474,7 @@ CONFIG_E1000=m | |||
| 471 | # CONFIG_SK98LIN is not set | 474 | # CONFIG_SK98LIN is not set |
| 472 | # CONFIG_VIA_VELOCITY is not set | 475 | # CONFIG_VIA_VELOCITY is not set |
| 473 | # CONFIG_TIGON3 is not set | 476 | # CONFIG_TIGON3 is not set |
| 477 | # CONFIG_BNX2 is not set | ||
| 474 | 478 | ||
| 475 | # | 479 | # |
| 476 | # Ethernet (10000 Mbit) | 480 | # Ethernet (10000 Mbit) |
| @@ -539,14 +543,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
| 539 | # CONFIG_INPUT_EVBUG is not set | 543 | # CONFIG_INPUT_EVBUG is not set |
| 540 | 544 | ||
| 541 | # | 545 | # |
| 542 | # Input I/O drivers | ||
| 543 | # | ||
| 544 | # CONFIG_GAMEPORT is not set | ||
| 545 | CONFIG_SOUND_GAMEPORT=y | ||
| 546 | # CONFIG_SERIO is not set | ||
| 547 | # CONFIG_SERIO_I8042 is not set | ||
| 548 | |||
| 549 | # | ||
| 550 | # Input Device Drivers | 546 | # Input Device Drivers |
| 551 | # | 547 | # |
| 552 | # CONFIG_INPUT_KEYBOARD is not set | 548 | # CONFIG_INPUT_KEYBOARD is not set |
| @@ -556,6 +552,12 @@ CONFIG_SOUND_GAMEPORT=y | |||
| 556 | # CONFIG_INPUT_MISC is not set | 552 | # CONFIG_INPUT_MISC is not set |
| 557 | 553 | ||
| 558 | # | 554 | # |
| 555 | # Hardware I/O ports | ||
| 556 | # | ||
| 557 | # CONFIG_SERIO is not set | ||
| 558 | # CONFIG_GAMEPORT is not set | ||
| 559 | |||
| 560 | # | ||
| 559 | # Character devices | 561 | # Character devices |
| 560 | # | 562 | # |
| 561 | # CONFIG_SERIAL_NONSTANDARD is not set | 563 | # CONFIG_SERIAL_NONSTANDARD is not set |
| @@ -570,6 +572,7 @@ CONFIG_SOUND_GAMEPORT=y | |||
| 570 | # | 572 | # |
| 571 | CONFIG_SERIAL_CORE=m | 573 | CONFIG_SERIAL_CORE=m |
| 572 | CONFIG_SERIAL_ICOM=m | 574 | CONFIG_SERIAL_ICOM=m |
| 575 | # CONFIG_SERIAL_JSM is not set | ||
| 573 | CONFIG_UNIX98_PTYS=y | 576 | CONFIG_UNIX98_PTYS=y |
| 574 | CONFIG_LEGACY_PTYS=y | 577 | CONFIG_LEGACY_PTYS=y |
| 575 | CONFIG_LEGACY_PTY_COUNT=256 | 578 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -592,9 +595,16 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 592 | # | 595 | # |
| 593 | # Ftape, the floppy tape device driver | 596 | # Ftape, the floppy tape device driver |
| 594 | # | 597 | # |
| 598 | # CONFIG_AGP is not set | ||
| 595 | # CONFIG_DRM is not set | 599 | # CONFIG_DRM is not set |
| 596 | CONFIG_RAW_DRIVER=y | 600 | CONFIG_RAW_DRIVER=y |
| 597 | CONFIG_MAX_RAW_DEVS=256 | 601 | CONFIG_MAX_RAW_DEVS=256 |
| 602 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 603 | |||
| 604 | # | ||
| 605 | # TPM devices | ||
| 606 | # | ||
| 607 | # CONFIG_TCG_TPM is not set | ||
| 598 | 608 | ||
| 599 | # | 609 | # |
| 600 | # I2C support | 610 | # I2C support |
| @@ -633,13 +643,9 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 633 | # | 643 | # |
| 634 | # USB support | 644 | # USB support |
| 635 | # | 645 | # |
| 636 | # CONFIG_USB is not set | ||
| 637 | CONFIG_USB_ARCH_HAS_HCD=y | 646 | CONFIG_USB_ARCH_HAS_HCD=y |
| 638 | CONFIG_USB_ARCH_HAS_OHCI=y | 647 | CONFIG_USB_ARCH_HAS_OHCI=y |
| 639 | 648 | # CONFIG_USB is not set | |
| 640 | # | ||
| 641 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 642 | # | ||
| 643 | 649 | ||
| 644 | # | 650 | # |
| 645 | # USB Gadget Support | 651 | # USB Gadget Support |
| @@ -848,10 +854,13 @@ CONFIG_OPROFILE=y | |||
| 848 | # | 854 | # |
| 849 | # Kernel hacking | 855 | # Kernel hacking |
| 850 | # | 856 | # |
| 857 | # CONFIG_PRINTK_TIME is not set | ||
| 851 | CONFIG_DEBUG_KERNEL=y | 858 | CONFIG_DEBUG_KERNEL=y |
| 852 | CONFIG_MAGIC_SYSRQ=y | 859 | CONFIG_MAGIC_SYSRQ=y |
| 860 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 853 | # CONFIG_SCHEDSTATS is not set | 861 | # CONFIG_SCHEDSTATS is not set |
| 854 | # CONFIG_DEBUG_SLAB is not set | 862 | # CONFIG_DEBUG_SLAB is not set |
| 863 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 855 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 864 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 856 | # CONFIG_DEBUG_KOBJECT is not set | 865 | # CONFIG_DEBUG_KOBJECT is not set |
| 857 | # CONFIG_DEBUG_INFO is not set | 866 | # CONFIG_DEBUG_INFO is not set |
| @@ -881,6 +890,7 @@ CONFIG_CRYPTO_SHA1=m | |||
| 881 | CONFIG_CRYPTO_SHA256=m | 890 | CONFIG_CRYPTO_SHA256=m |
| 882 | CONFIG_CRYPTO_SHA512=m | 891 | CONFIG_CRYPTO_SHA512=m |
| 883 | CONFIG_CRYPTO_WP512=m | 892 | CONFIG_CRYPTO_WP512=m |
| 893 | CONFIG_CRYPTO_TGR192=m | ||
| 884 | CONFIG_CRYPTO_DES=y | 894 | CONFIG_CRYPTO_DES=y |
| 885 | CONFIG_CRYPTO_BLOWFISH=m | 895 | CONFIG_CRYPTO_BLOWFISH=m |
| 886 | CONFIG_CRYPTO_TWOFISH=m | 896 | CONFIG_CRYPTO_TWOFISH=m |
diff --git a/arch/ppc64/configs/maple_defconfig b/arch/ppc64/configs/maple_defconfig index cf527501915c..8051b0f47b6f 100644 --- a/arch/ppc64/configs/maple_defconfig +++ b/arch/ppc64/configs/maple_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.11-rc3-bk6 | 3 | # Linux kernel version: 2.6.12-rc6 |
| 4 | # Wed Feb 9 23:34:53 2005 | 4 | # Tue Jun 14 17:12:48 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
| 11 | CONFIG_HAVE_DEC_LOCK=y | 11 | CONFIG_HAVE_DEC_LOCK=y |
| 12 | CONFIG_EARLY_PRINTK=y | 12 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 13 | CONFIG_COMPAT=y |
| 14 | CONFIG_FRAME_POINTER=y | 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13 | |||
| 20 | CONFIG_EXPERIMENTAL=y | 20 | CONFIG_EXPERIMENTAL=y |
| 21 | CONFIG_CLEAN_COMPILE=y | 21 | CONFIG_CLEAN_COMPILE=y |
| 22 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 23 | 24 | ||
| 24 | # | 25 | # |
| 25 | # General setup | 26 | # General setup |
| @@ -30,24 +31,28 @@ CONFIG_SYSVIPC=y | |||
| 30 | CONFIG_POSIX_MQUEUE=y | 31 | CONFIG_POSIX_MQUEUE=y |
| 31 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 32 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
| 33 | CONFIG_LOG_BUF_SHIFT=17 | 34 | # CONFIG_AUDIT is not set |
| 34 | # CONFIG_HOTPLUG is not set | 35 | # CONFIG_HOTPLUG is not set |
| 35 | CONFIG_KOBJECT_UEVENT=y | 36 | CONFIG_KOBJECT_UEVENT=y |
| 36 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
| 37 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
| 39 | # CONFIG_CPUSETS is not set | ||
| 38 | # CONFIG_EMBEDDED is not set | 40 | # CONFIG_EMBEDDED is not set |
| 39 | CONFIG_KALLSYMS=y | 41 | CONFIG_KALLSYMS=y |
| 40 | CONFIG_KALLSYMS_ALL=y | 42 | CONFIG_KALLSYMS_ALL=y |
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 44 | CONFIG_PRINTK=y | ||
| 45 | CONFIG_BUG=y | ||
| 46 | CONFIG_BASE_FULL=y | ||
| 42 | CONFIG_FUTEX=y | 47 | CONFIG_FUTEX=y |
| 43 | CONFIG_EPOLL=y | 48 | CONFIG_EPOLL=y |
| 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 45 | CONFIG_SHMEM=y | 49 | CONFIG_SHMEM=y |
| 46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 50 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 47 | CONFIG_CC_ALIGN_LABELS=0 | 51 | CONFIG_CC_ALIGN_LABELS=0 |
| 48 | CONFIG_CC_ALIGN_LOOPS=0 | 52 | CONFIG_CC_ALIGN_LOOPS=0 |
| 49 | CONFIG_CC_ALIGN_JUMPS=0 | 53 | CONFIG_CC_ALIGN_JUMPS=0 |
| 50 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
| 55 | CONFIG_BASE_SMALL=0 | ||
| 51 | 56 | ||
| 52 | # | 57 | # |
| 53 | # Loadable module support | 58 | # Loadable module support |
| @@ -84,6 +89,8 @@ CONFIG_NR_CPUS=2 | |||
| 84 | # CONFIG_SCHED_SMT is not set | 89 | # CONFIG_SCHED_SMT is not set |
| 85 | # CONFIG_PREEMPT is not set | 90 | # CONFIG_PREEMPT is not set |
| 86 | CONFIG_GENERIC_HARDIRQS=y | 91 | CONFIG_GENERIC_HARDIRQS=y |
| 92 | CONFIG_SECCOMP=y | ||
| 93 | CONFIG_ISA_DMA_API=y | ||
| 87 | 94 | ||
| 88 | # | 95 | # |
| 89 | # General setup | 96 | # General setup |
| @@ -94,6 +101,7 @@ CONFIG_BINFMT_ELF=y | |||
| 94 | # CONFIG_BINFMT_MISC is not set | 101 | # CONFIG_BINFMT_MISC is not set |
| 95 | CONFIG_PCI_LEGACY_PROC=y | 102 | CONFIG_PCI_LEGACY_PROC=y |
| 96 | CONFIG_PCI_NAMES=y | 103 | CONFIG_PCI_NAMES=y |
| 104 | # CONFIG_PCI_DEBUG is not set | ||
| 97 | 105 | ||
| 98 | # | 106 | # |
| 99 | # PCCARD (PCMCIA/CardBus) support | 107 | # PCCARD (PCMCIA/CardBus) support |
| @@ -101,10 +109,6 @@ CONFIG_PCI_NAMES=y | |||
| 101 | # CONFIG_PCCARD is not set | 109 | # CONFIG_PCCARD is not set |
| 102 | 110 | ||
| 103 | # | 111 | # |
| 104 | # PC-card bridges | ||
| 105 | # | ||
| 106 | |||
| 107 | # | ||
| 108 | # PCI Hotplug Support | 112 | # PCI Hotplug Support |
| 109 | # | 113 | # |
| 110 | # CONFIG_HOTPLUG_PCI is not set | 114 | # CONFIG_HOTPLUG_PCI is not set |
| @@ -261,7 +265,6 @@ CONFIG_NET=y | |||
| 261 | # | 265 | # |
| 262 | CONFIG_PACKET=y | 266 | CONFIG_PACKET=y |
| 263 | CONFIG_PACKET_MMAP=y | 267 | CONFIG_PACKET_MMAP=y |
| 264 | # CONFIG_NETLINK_DEV is not set | ||
| 265 | CONFIG_UNIX=y | 268 | CONFIG_UNIX=y |
| 266 | # CONFIG_NET_KEY is not set | 269 | # CONFIG_NET_KEY is not set |
| 267 | CONFIG_INET=y | 270 | CONFIG_INET=y |
| @@ -376,6 +379,8 @@ CONFIG_E1000=y | |||
| 376 | # CONFIG_SK98LIN is not set | 379 | # CONFIG_SK98LIN is not set |
| 377 | # CONFIG_VIA_VELOCITY is not set | 380 | # CONFIG_VIA_VELOCITY is not set |
| 378 | # CONFIG_TIGON3 is not set | 381 | # CONFIG_TIGON3 is not set |
| 382 | # CONFIG_BNX2 is not set | ||
| 383 | # CONFIG_MV643XX_ETH is not set | ||
| 379 | 384 | ||
| 380 | # | 385 | # |
| 381 | # Ethernet (10000 Mbit) | 386 | # Ethernet (10000 Mbit) |
| @@ -432,14 +437,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200 | |||
| 432 | # CONFIG_INPUT_EVBUG is not set | 437 | # CONFIG_INPUT_EVBUG is not set |
| 433 | 438 | ||
| 434 | # | 439 | # |
| 435 | # Input I/O drivers | ||
| 436 | # | ||
| 437 | # CONFIG_GAMEPORT is not set | ||
| 438 | CONFIG_SOUND_GAMEPORT=y | ||
| 439 | # CONFIG_SERIO is not set | ||
| 440 | # CONFIG_SERIO_I8042 is not set | ||
| 441 | |||
| 442 | # | ||
| 443 | # Input Device Drivers | 440 | # Input Device Drivers |
| 444 | # | 441 | # |
| 445 | # CONFIG_INPUT_KEYBOARD is not set | 442 | # CONFIG_INPUT_KEYBOARD is not set |
| @@ -449,6 +446,12 @@ CONFIG_SOUND_GAMEPORT=y | |||
| 449 | # CONFIG_INPUT_MISC is not set | 446 | # CONFIG_INPUT_MISC is not set |
| 450 | 447 | ||
| 451 | # | 448 | # |
| 449 | # Hardware I/O ports | ||
| 450 | # | ||
| 451 | # CONFIG_SERIO is not set | ||
| 452 | # CONFIG_GAMEPORT is not set | ||
| 453 | |||
| 454 | # | ||
| 452 | # Character devices | 455 | # Character devices |
| 453 | # | 456 | # |
| 454 | CONFIG_VT=y | 457 | CONFIG_VT=y |
| @@ -469,7 +472,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4 | |||
| 469 | # | 472 | # |
| 470 | CONFIG_SERIAL_CORE=y | 473 | CONFIG_SERIAL_CORE=y |
| 471 | CONFIG_SERIAL_CORE_CONSOLE=y | 474 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 472 | # CONFIG_SERIAL_PMACZILOG is not set | 475 | # CONFIG_SERIAL_JSM is not set |
| 473 | CONFIG_UNIX98_PTYS=y | 476 | CONFIG_UNIX98_PTYS=y |
| 474 | CONFIG_LEGACY_PTYS=y | 477 | CONFIG_LEGACY_PTYS=y |
| 475 | CONFIG_LEGACY_PTY_COUNT=256 | 478 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -492,8 +495,15 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 492 | # | 495 | # |
| 493 | # Ftape, the floppy tape device driver | 496 | # Ftape, the floppy tape device driver |
| 494 | # | 497 | # |
| 498 | # CONFIG_AGP is not set | ||
| 495 | # CONFIG_DRM is not set | 499 | # CONFIG_DRM is not set |
| 496 | # CONFIG_RAW_DRIVER is not set | 500 | # CONFIG_RAW_DRIVER is not set |
| 501 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 502 | |||
| 503 | # | ||
| 504 | # TPM devices | ||
| 505 | # | ||
| 506 | # CONFIG_TCG_TPM is not set | ||
| 497 | 507 | ||
| 498 | # | 508 | # |
| 499 | # I2C support | 509 | # I2C support |
| @@ -518,8 +528,8 @@ CONFIG_I2C_ALGOBIT=y | |||
| 518 | CONFIG_I2C_AMD8111=y | 528 | CONFIG_I2C_AMD8111=y |
| 519 | # CONFIG_I2C_I801 is not set | 529 | # CONFIG_I2C_I801 is not set |
| 520 | # CONFIG_I2C_I810 is not set | 530 | # CONFIG_I2C_I810 is not set |
| 531 | # CONFIG_I2C_PIIX4 is not set | ||
| 521 | # CONFIG_I2C_ISA is not set | 532 | # CONFIG_I2C_ISA is not set |
| 522 | # CONFIG_I2C_MPC is not set | ||
| 523 | # CONFIG_I2C_NFORCE2 is not set | 533 | # CONFIG_I2C_NFORCE2 is not set |
| 524 | # CONFIG_I2C_PARPORT_LIGHT is not set | 534 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 525 | # CONFIG_I2C_PROSAVAGE is not set | 535 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -545,7 +555,9 @@ CONFIG_I2C_AMD8111=y | |||
| 545 | # CONFIG_SENSORS_ASB100 is not set | 555 | # CONFIG_SENSORS_ASB100 is not set |
| 546 | # CONFIG_SENSORS_DS1621 is not set | 556 | # CONFIG_SENSORS_DS1621 is not set |
| 547 | # CONFIG_SENSORS_FSCHER is not set | 557 | # CONFIG_SENSORS_FSCHER is not set |
| 558 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 548 | # CONFIG_SENSORS_GL518SM is not set | 559 | # CONFIG_SENSORS_GL518SM is not set |
| 560 | # CONFIG_SENSORS_GL520SM is not set | ||
| 549 | # CONFIG_SENSORS_IT87 is not set | 561 | # CONFIG_SENSORS_IT87 is not set |
| 550 | # CONFIG_SENSORS_LM63 is not set | 562 | # CONFIG_SENSORS_LM63 is not set |
| 551 | # CONFIG_SENSORS_LM75 is not set | 563 | # CONFIG_SENSORS_LM75 is not set |
| @@ -556,9 +568,11 @@ CONFIG_I2C_AMD8111=y | |||
| 556 | # CONFIG_SENSORS_LM85 is not set | 568 | # CONFIG_SENSORS_LM85 is not set |
| 557 | # CONFIG_SENSORS_LM87 is not set | 569 | # CONFIG_SENSORS_LM87 is not set |
| 558 | # CONFIG_SENSORS_LM90 is not set | 570 | # CONFIG_SENSORS_LM90 is not set |
| 571 | # CONFIG_SENSORS_LM92 is not set | ||
| 559 | # CONFIG_SENSORS_MAX1619 is not set | 572 | # CONFIG_SENSORS_MAX1619 is not set |
| 560 | # CONFIG_SENSORS_PC87360 is not set | 573 | # CONFIG_SENSORS_PC87360 is not set |
| 561 | # CONFIG_SENSORS_SMSC47B397 is not set | 574 | # CONFIG_SENSORS_SMSC47B397 is not set |
| 575 | # CONFIG_SENSORS_SIS5595 is not set | ||
| 562 | # CONFIG_SENSORS_SMSC47M1 is not set | 576 | # CONFIG_SENSORS_SMSC47M1 is not set |
| 563 | # CONFIG_SENSORS_VIA686A is not set | 577 | # CONFIG_SENSORS_VIA686A is not set |
| 564 | # CONFIG_SENSORS_W83781D is not set | 578 | # CONFIG_SENSORS_W83781D is not set |
| @@ -568,6 +582,7 @@ CONFIG_I2C_AMD8111=y | |||
| 568 | # | 582 | # |
| 569 | # Other I2C Chip support | 583 | # Other I2C Chip support |
| 570 | # | 584 | # |
| 585 | # CONFIG_SENSORS_DS1337 is not set | ||
| 571 | # CONFIG_SENSORS_EEPROM is not set | 586 | # CONFIG_SENSORS_EEPROM is not set |
| 572 | # CONFIG_SENSORS_PCF8574 is not set | 587 | # CONFIG_SENSORS_PCF8574 is not set |
| 573 | # CONFIG_SENSORS_PCF8591 is not set | 588 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -615,6 +630,8 @@ CONFIG_DUMMY_CONSOLE=y | |||
| 615 | # | 630 | # |
| 616 | # USB support | 631 | # USB support |
| 617 | # | 632 | # |
| 633 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 634 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 618 | CONFIG_USB=y | 635 | CONFIG_USB=y |
| 619 | # CONFIG_USB_DEBUG is not set | 636 | # CONFIG_USB_DEBUG is not set |
| 620 | 637 | ||
| @@ -625,8 +642,6 @@ CONFIG_USB_DEVICEFS=y | |||
| 625 | # CONFIG_USB_BANDWIDTH is not set | 642 | # CONFIG_USB_BANDWIDTH is not set |
| 626 | # CONFIG_USB_DYNAMIC_MINORS is not set | 643 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 627 | # CONFIG_USB_OTG is not set | 644 | # CONFIG_USB_OTG is not set |
| 628 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 629 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 630 | 645 | ||
| 631 | # | 646 | # |
| 632 | # USB Host Controller Drivers | 647 | # USB Host Controller Drivers |
| @@ -635,6 +650,8 @@ CONFIG_USB_EHCI_HCD=y | |||
| 635 | CONFIG_USB_EHCI_SPLIT_ISO=y | 650 | CONFIG_USB_EHCI_SPLIT_ISO=y |
| 636 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 651 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
| 637 | CONFIG_USB_OHCI_HCD=y | 652 | CONFIG_USB_OHCI_HCD=y |
| 653 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 654 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 638 | CONFIG_USB_UHCI_HCD=y | 655 | CONFIG_USB_UHCI_HCD=y |
| 639 | # CONFIG_USB_SL811_HCD is not set | 656 | # CONFIG_USB_SL811_HCD is not set |
| 640 | 657 | ||
| @@ -688,6 +705,7 @@ CONFIG_USB_HIDINPUT=y | |||
| 688 | CONFIG_USB_PEGASUS=y | 705 | CONFIG_USB_PEGASUS=y |
| 689 | # CONFIG_USB_RTL8150 is not set | 706 | # CONFIG_USB_RTL8150 is not set |
| 690 | # CONFIG_USB_USBNET is not set | 707 | # CONFIG_USB_USBNET is not set |
| 708 | CONFIG_USB_MON=y | ||
| 691 | 709 | ||
| 692 | # | 710 | # |
| 693 | # USB port drivers | 711 | # USB port drivers |
| @@ -699,8 +717,10 @@ CONFIG_USB_PEGASUS=y | |||
| 699 | CONFIG_USB_SERIAL=y | 717 | CONFIG_USB_SERIAL=y |
| 700 | # CONFIG_USB_SERIAL_CONSOLE is not set | 718 | # CONFIG_USB_SERIAL_CONSOLE is not set |
| 701 | CONFIG_USB_SERIAL_GENERIC=y | 719 | CONFIG_USB_SERIAL_GENERIC=y |
| 720 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 702 | # CONFIG_USB_SERIAL_BELKIN is not set | 721 | # CONFIG_USB_SERIAL_BELKIN is not set |
| 703 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | 722 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set |
| 723 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 704 | CONFIG_USB_SERIAL_CYPRESS_M8=m | 724 | CONFIG_USB_SERIAL_CYPRESS_M8=m |
| 705 | # CONFIG_USB_SERIAL_EMPEG is not set | 725 | # CONFIG_USB_SERIAL_EMPEG is not set |
| 706 | # CONFIG_USB_SERIAL_FTDI_SIO is not set | 726 | # CONFIG_USB_SERIAL_FTDI_SIO is not set |
| @@ -729,6 +749,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | |||
| 729 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | 749 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set |
| 730 | # CONFIG_USB_SERIAL_MCT_U232 is not set | 750 | # CONFIG_USB_SERIAL_MCT_U232 is not set |
| 731 | # CONFIG_USB_SERIAL_PL2303 is not set | 751 | # CONFIG_USB_SERIAL_PL2303 is not set |
| 752 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 732 | # CONFIG_USB_SERIAL_SAFE is not set | 753 | # CONFIG_USB_SERIAL_SAFE is not set |
| 733 | CONFIG_USB_SERIAL_TI=m | 754 | CONFIG_USB_SERIAL_TI=m |
| 734 | # CONFIG_USB_SERIAL_CYBERJACK is not set | 755 | # CONFIG_USB_SERIAL_CYBERJACK is not set |
| @@ -750,6 +771,7 @@ CONFIG_USB_EZUSB=y | |||
| 750 | # CONFIG_USB_PHIDGETKIT is not set | 771 | # CONFIG_USB_PHIDGETKIT is not set |
| 751 | # CONFIG_USB_PHIDGETSERVO is not set | 772 | # CONFIG_USB_PHIDGETSERVO is not set |
| 752 | # CONFIG_USB_IDMOUSE is not set | 773 | # CONFIG_USB_IDMOUSE is not set |
| 774 | # CONFIG_USB_SISUSBVGA is not set | ||
| 753 | # CONFIG_USB_TEST is not set | 775 | # CONFIG_USB_TEST is not set |
| 754 | 776 | ||
| 755 | # | 777 | # |
| @@ -936,10 +958,13 @@ CONFIG_NLS_UTF8=y | |||
| 936 | # | 958 | # |
| 937 | # Kernel hacking | 959 | # Kernel hacking |
| 938 | # | 960 | # |
| 961 | # CONFIG_PRINTK_TIME is not set | ||
| 939 | CONFIG_DEBUG_KERNEL=y | 962 | CONFIG_DEBUG_KERNEL=y |
| 940 | CONFIG_MAGIC_SYSRQ=y | 963 | CONFIG_MAGIC_SYSRQ=y |
| 964 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 941 | # CONFIG_SCHEDSTATS is not set | 965 | # CONFIG_SCHEDSTATS is not set |
| 942 | CONFIG_DEBUG_SLAB=y | 966 | CONFIG_DEBUG_SLAB=y |
| 967 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 943 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 968 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
| 944 | # CONFIG_DEBUG_KOBJECT is not set | 969 | # CONFIG_DEBUG_KOBJECT is not set |
| 945 | # CONFIG_DEBUG_INFO is not set | 970 | # CONFIG_DEBUG_INFO is not set |
| @@ -971,6 +996,7 @@ CONFIG_CRYPTO_MD5=y | |||
| 971 | # CONFIG_CRYPTO_SHA256 is not set | 996 | # CONFIG_CRYPTO_SHA256 is not set |
| 972 | # CONFIG_CRYPTO_SHA512 is not set | 997 | # CONFIG_CRYPTO_SHA512 is not set |
| 973 | # CONFIG_CRYPTO_WP512 is not set | 998 | # CONFIG_CRYPTO_WP512 is not set |
| 999 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 974 | CONFIG_CRYPTO_DES=y | 1000 | CONFIG_CRYPTO_DES=y |
| 975 | # CONFIG_CRYPTO_BLOWFISH is not set | 1001 | # CONFIG_CRYPTO_BLOWFISH is not set |
| 976 | # CONFIG_CRYPTO_TWOFISH is not set | 1002 | # CONFIG_CRYPTO_TWOFISH is not set |
diff --git a/arch/ppc64/configs/pSeries_defconfig b/arch/ppc64/configs/pSeries_defconfig index 4fecf237d5c9..3eb5ef25d3a3 100644 --- a/arch/ppc64/configs/pSeries_defconfig +++ b/arch/ppc64/configs/pSeries_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.11-rc3-bk6 | 3 | # Linux kernel version: 2.6.12-rc6 |
| 4 | # Wed Feb 9 23:34:54 2005 | 4 | # Tue Jun 14 17:13:47 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
| 11 | CONFIG_HAVE_DEC_LOCK=y | 11 | CONFIG_HAVE_DEC_LOCK=y |
| 12 | CONFIG_EARLY_PRINTK=y | 12 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 13 | CONFIG_COMPAT=y |
| 14 | CONFIG_FRAME_POINTER=y | 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13 | |||
| 20 | CONFIG_EXPERIMENTAL=y | 20 | CONFIG_EXPERIMENTAL=y |
| 21 | CONFIG_CLEAN_COMPILE=y | 21 | CONFIG_CLEAN_COMPILE=y |
| 22 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 23 | 24 | ||
| 24 | # | 25 | # |
| 25 | # General setup | 26 | # General setup |
| @@ -30,24 +31,29 @@ CONFIG_SYSVIPC=y | |||
| 30 | CONFIG_POSIX_MQUEUE=y | 31 | CONFIG_POSIX_MQUEUE=y |
| 31 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 32 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
| 33 | CONFIG_LOG_BUF_SHIFT=17 | 34 | CONFIG_AUDIT=y |
| 35 | CONFIG_AUDITSYSCALL=y | ||
| 34 | CONFIG_HOTPLUG=y | 36 | CONFIG_HOTPLUG=y |
| 35 | CONFIG_KOBJECT_UEVENT=y | 37 | CONFIG_KOBJECT_UEVENT=y |
| 36 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 37 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 40 | CONFIG_CPUSETS=y | ||
| 38 | # CONFIG_EMBEDDED is not set | 41 | # CONFIG_EMBEDDED is not set |
| 39 | CONFIG_KALLSYMS=y | 42 | CONFIG_KALLSYMS=y |
| 40 | CONFIG_KALLSYMS_ALL=y | 43 | CONFIG_KALLSYMS_ALL=y |
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 45 | CONFIG_PRINTK=y | ||
| 46 | CONFIG_BUG=y | ||
| 47 | CONFIG_BASE_FULL=y | ||
| 42 | CONFIG_FUTEX=y | 48 | CONFIG_FUTEX=y |
| 43 | CONFIG_EPOLL=y | 49 | CONFIG_EPOLL=y |
| 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 45 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
| 46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 47 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_CC_ALIGN_LABELS=0 |
| 48 | CONFIG_CC_ALIGN_LOOPS=0 | 53 | CONFIG_CC_ALIGN_LOOPS=0 |
| 49 | CONFIG_CC_ALIGN_JUMPS=0 | 54 | CONFIG_CC_ALIGN_JUMPS=0 |
| 50 | # CONFIG_TINY_SHMEM is not set | 55 | # CONFIG_TINY_SHMEM is not set |
| 56 | CONFIG_BASE_SMALL=0 | ||
| 51 | 57 | ||
| 52 | # | 58 | # |
| 53 | # Loadable module support | 59 | # Loadable module support |
| @@ -89,9 +95,12 @@ CONFIG_SCHED_SMT=y | |||
| 89 | CONFIG_EEH=y | 95 | CONFIG_EEH=y |
| 90 | CONFIG_GENERIC_HARDIRQS=y | 96 | CONFIG_GENERIC_HARDIRQS=y |
| 91 | CONFIG_PPC_RTAS=y | 97 | CONFIG_PPC_RTAS=y |
| 98 | CONFIG_RTAS_PROC=y | ||
| 92 | CONFIG_RTAS_FLASH=m | 99 | CONFIG_RTAS_FLASH=m |
| 93 | CONFIG_SCANLOG=m | 100 | CONFIG_SCANLOG=m |
| 94 | CONFIG_LPARCFG=y | 101 | CONFIG_LPARCFG=y |
| 102 | CONFIG_SECCOMP=y | ||
| 103 | CONFIG_ISA_DMA_API=y | ||
| 95 | 104 | ||
| 96 | # | 105 | # |
| 97 | # General setup | 106 | # General setup |
| @@ -102,6 +111,7 @@ CONFIG_BINFMT_ELF=y | |||
| 102 | # CONFIG_BINFMT_MISC is not set | 111 | # CONFIG_BINFMT_MISC is not set |
| 103 | CONFIG_PCI_LEGACY_PROC=y | 112 | CONFIG_PCI_LEGACY_PROC=y |
| 104 | CONFIG_PCI_NAMES=y | 113 | CONFIG_PCI_NAMES=y |
| 114 | # CONFIG_PCI_DEBUG is not set | ||
| 105 | CONFIG_HOTPLUG_CPU=y | 115 | CONFIG_HOTPLUG_CPU=y |
| 106 | 116 | ||
| 107 | # | 117 | # |
| @@ -110,10 +120,6 @@ CONFIG_HOTPLUG_CPU=y | |||
| 110 | # CONFIG_PCCARD is not set | 120 | # CONFIG_PCCARD is not set |
| 111 | 121 | ||
| 112 | # | 122 | # |
| 113 | # PC-card bridges | ||
| 114 | # | ||
| 115 | |||
| 116 | # | ||
| 117 | # PCI Hotplug Support | 123 | # PCI Hotplug Support |
| 118 | # | 124 | # |
| 119 | CONFIG_HOTPLUG_PCI=m | 125 | CONFIG_HOTPLUG_PCI=m |
| @@ -147,11 +153,10 @@ CONFIG_FW_LOADER=y | |||
| 147 | # | 153 | # |
| 148 | CONFIG_PARPORT=m | 154 | CONFIG_PARPORT=m |
| 149 | CONFIG_PARPORT_PC=m | 155 | CONFIG_PARPORT_PC=m |
| 150 | CONFIG_PARPORT_PC_CML1=m | ||
| 151 | # CONFIG_PARPORT_SERIAL is not set | 156 | # CONFIG_PARPORT_SERIAL is not set |
| 152 | # CONFIG_PARPORT_PC_FIFO is not set | 157 | # CONFIG_PARPORT_PC_FIFO is not set |
| 153 | # CONFIG_PARPORT_PC_SUPERIO is not set | 158 | # CONFIG_PARPORT_PC_SUPERIO is not set |
| 154 | # CONFIG_PARPORT_OTHER is not set | 159 | # CONFIG_PARPORT_GSC is not set |
| 155 | # CONFIG_PARPORT_1284 is not set | 160 | # CONFIG_PARPORT_1284 is not set |
| 156 | 161 | ||
| 157 | # | 162 | # |
| @@ -293,7 +298,6 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
| 293 | # CONFIG_SCSI_BUSLOGIC is not set | 298 | # CONFIG_SCSI_BUSLOGIC is not set |
| 294 | # CONFIG_SCSI_DMX3191D is not set | 299 | # CONFIG_SCSI_DMX3191D is not set |
| 295 | # CONFIG_SCSI_EATA is not set | 300 | # CONFIG_SCSI_EATA is not set |
| 296 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 297 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 301 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 298 | # CONFIG_SCSI_GDTH is not set | 302 | # CONFIG_SCSI_GDTH is not set |
| 299 | # CONFIG_SCSI_IPS is not set | 303 | # CONFIG_SCSI_IPS is not set |
| @@ -310,7 +314,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | |||
| 310 | CONFIG_SCSI_IPR=y | 314 | CONFIG_SCSI_IPR=y |
| 311 | CONFIG_SCSI_IPR_TRACE=y | 315 | CONFIG_SCSI_IPR_TRACE=y |
| 312 | CONFIG_SCSI_IPR_DUMP=y | 316 | CONFIG_SCSI_IPR_DUMP=y |
| 313 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 314 | # CONFIG_SCSI_QLOGIC_FC is not set | 317 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 315 | # CONFIG_SCSI_QLOGIC_1280 is not set | 318 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 316 | CONFIG_SCSI_QLA2XXX=y | 319 | CONFIG_SCSI_QLA2XXX=y |
| @@ -319,6 +322,7 @@ CONFIG_SCSI_QLA22XX=m | |||
| 319 | CONFIG_SCSI_QLA2300=m | 322 | CONFIG_SCSI_QLA2300=m |
| 320 | CONFIG_SCSI_QLA2322=m | 323 | CONFIG_SCSI_QLA2322=m |
| 321 | CONFIG_SCSI_QLA6312=m | 324 | CONFIG_SCSI_QLA6312=m |
| 325 | CONFIG_SCSI_LPFC=m | ||
| 322 | # CONFIG_SCSI_DC395x is not set | 326 | # CONFIG_SCSI_DC395x is not set |
| 323 | # CONFIG_SCSI_DC390T is not set | 327 | # CONFIG_SCSI_DC390T is not set |
| 324 | # CONFIG_SCSI_DEBUG is not set | 328 | # CONFIG_SCSI_DEBUG is not set |
| @@ -341,6 +345,8 @@ CONFIG_DM_CRYPT=m | |||
| 341 | CONFIG_DM_SNAPSHOT=m | 345 | CONFIG_DM_SNAPSHOT=m |
| 342 | CONFIG_DM_MIRROR=m | 346 | CONFIG_DM_MIRROR=m |
| 343 | CONFIG_DM_ZERO=m | 347 | CONFIG_DM_ZERO=m |
| 348 | CONFIG_DM_MULTIPATH=m | ||
| 349 | CONFIG_DM_MULTIPATH_EMC=m | ||
| 344 | 350 | ||
| 345 | # | 351 | # |
| 346 | # Fusion MPT device support | 352 | # Fusion MPT device support |
| @@ -371,7 +377,6 @@ CONFIG_NET=y | |||
| 371 | # | 377 | # |
| 372 | CONFIG_PACKET=y | 378 | CONFIG_PACKET=y |
| 373 | # CONFIG_PACKET_MMAP is not set | 379 | # CONFIG_PACKET_MMAP is not set |
| 374 | # CONFIG_NETLINK_DEV is not set | ||
| 375 | CONFIG_UNIX=y | 380 | CONFIG_UNIX=y |
| 376 | CONFIG_NET_KEY=m | 381 | CONFIG_NET_KEY=m |
| 377 | CONFIG_INET=y | 382 | CONFIG_INET=y |
| @@ -539,7 +544,6 @@ CONFIG_PCNET32=y | |||
| 539 | # CONFIG_DGRS is not set | 544 | # CONFIG_DGRS is not set |
| 540 | # CONFIG_EEPRO100 is not set | 545 | # CONFIG_EEPRO100 is not set |
| 541 | CONFIG_E100=y | 546 | CONFIG_E100=y |
| 542 | # CONFIG_E100_NAPI is not set | ||
| 543 | # CONFIG_FEALNX is not set | 547 | # CONFIG_FEALNX is not set |
| 544 | # CONFIG_NATSEMI is not set | 548 | # CONFIG_NATSEMI is not set |
| 545 | # CONFIG_NE2K_PCI is not set | 549 | # CONFIG_NE2K_PCI is not set |
| @@ -565,6 +569,8 @@ CONFIG_E1000=y | |||
| 565 | # CONFIG_SK98LIN is not set | 569 | # CONFIG_SK98LIN is not set |
| 566 | # CONFIG_VIA_VELOCITY is not set | 570 | # CONFIG_VIA_VELOCITY is not set |
| 567 | CONFIG_TIGON3=y | 571 | CONFIG_TIGON3=y |
| 572 | # CONFIG_BNX2 is not set | ||
| 573 | # CONFIG_MV643XX_ETH is not set | ||
| 568 | 574 | ||
| 569 | # | 575 | # |
| 570 | # Ethernet (10000 Mbit) | 576 | # Ethernet (10000 Mbit) |
| @@ -636,20 +642,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
| 636 | # CONFIG_INPUT_EVBUG is not set | 642 | # CONFIG_INPUT_EVBUG is not set |
| 637 | 643 | ||
| 638 | # | 644 | # |
| 639 | # Input I/O drivers | ||
| 640 | # | ||
| 641 | # CONFIG_GAMEPORT is not set | ||
| 642 | CONFIG_SOUND_GAMEPORT=y | ||
| 643 | CONFIG_SERIO=y | ||
| 644 | CONFIG_SERIO_I8042=y | ||
| 645 | # CONFIG_SERIO_SERPORT is not set | ||
| 646 | # CONFIG_SERIO_CT82C710 is not set | ||
| 647 | # CONFIG_SERIO_PARKBD is not set | ||
| 648 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 649 | CONFIG_SERIO_LIBPS2=y | ||
| 650 | # CONFIG_SERIO_RAW is not set | ||
| 651 | |||
| 652 | # | ||
| 653 | # Input Device Drivers | 645 | # Input Device Drivers |
| 654 | # | 646 | # |
| 655 | CONFIG_INPUT_KEYBOARD=y | 647 | CONFIG_INPUT_KEYBOARD=y |
| @@ -669,6 +661,18 @@ CONFIG_INPUT_PCSPKR=m | |||
| 669 | # CONFIG_INPUT_UINPUT is not set | 661 | # CONFIG_INPUT_UINPUT is not set |
| 670 | 662 | ||
| 671 | # | 663 | # |
| 664 | # Hardware I/O ports | ||
| 665 | # | ||
| 666 | CONFIG_SERIO=y | ||
| 667 | CONFIG_SERIO_I8042=y | ||
| 668 | # CONFIG_SERIO_SERPORT is not set | ||
| 669 | # CONFIG_SERIO_PARKBD is not set | ||
| 670 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 671 | CONFIG_SERIO_LIBPS2=y | ||
| 672 | # CONFIG_SERIO_RAW is not set | ||
| 673 | # CONFIG_GAMEPORT is not set | ||
| 674 | |||
| 675 | # | ||
| 672 | # Character devices | 676 | # Character devices |
| 673 | # | 677 | # |
| 674 | CONFIG_VT=y | 678 | CONFIG_VT=y |
| @@ -689,8 +693,8 @@ CONFIG_SERIAL_8250_NR_UARTS=4 | |||
| 689 | # | 693 | # |
| 690 | CONFIG_SERIAL_CORE=y | 694 | CONFIG_SERIAL_CORE=y |
| 691 | CONFIG_SERIAL_CORE_CONSOLE=y | 695 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 692 | # CONFIG_SERIAL_PMACZILOG is not set | ||
| 693 | CONFIG_SERIAL_ICOM=m | 696 | CONFIG_SERIAL_ICOM=m |
| 697 | # CONFIG_SERIAL_JSM is not set | ||
| 694 | CONFIG_UNIX98_PTYS=y | 698 | CONFIG_UNIX98_PTYS=y |
| 695 | CONFIG_LEGACY_PTYS=y | 699 | CONFIG_LEGACY_PTYS=y |
| 696 | CONFIG_LEGACY_PTY_COUNT=256 | 700 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -718,9 +722,16 @@ CONFIG_HVCS=m | |||
| 718 | # | 722 | # |
| 719 | # Ftape, the floppy tape device driver | 723 | # Ftape, the floppy tape device driver |
| 720 | # | 724 | # |
| 725 | # CONFIG_AGP is not set | ||
| 721 | # CONFIG_DRM is not set | 726 | # CONFIG_DRM is not set |
| 722 | CONFIG_RAW_DRIVER=y | 727 | CONFIG_RAW_DRIVER=y |
| 723 | CONFIG_MAX_RAW_DEVS=1024 | 728 | CONFIG_MAX_RAW_DEVS=1024 |
| 729 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 730 | |||
| 731 | # | ||
| 732 | # TPM devices | ||
| 733 | # | ||
| 734 | # CONFIG_TCG_TPM is not set | ||
| 724 | 735 | ||
| 725 | # | 736 | # |
| 726 | # I2C support | 737 | # I2C support |
| @@ -745,8 +756,8 @@ CONFIG_I2C_ALGOBIT=y | |||
| 745 | # CONFIG_I2C_AMD8111 is not set | 756 | # CONFIG_I2C_AMD8111 is not set |
| 746 | # CONFIG_I2C_I801 is not set | 757 | # CONFIG_I2C_I801 is not set |
| 747 | # CONFIG_I2C_I810 is not set | 758 | # CONFIG_I2C_I810 is not set |
| 759 | # CONFIG_I2C_PIIX4 is not set | ||
| 748 | # CONFIG_I2C_ISA is not set | 760 | # CONFIG_I2C_ISA is not set |
| 749 | # CONFIG_I2C_MPC is not set | ||
| 750 | # CONFIG_I2C_NFORCE2 is not set | 761 | # CONFIG_I2C_NFORCE2 is not set |
| 751 | # CONFIG_I2C_PARPORT is not set | 762 | # CONFIG_I2C_PARPORT is not set |
| 752 | # CONFIG_I2C_PARPORT_LIGHT is not set | 763 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| @@ -773,7 +784,9 @@ CONFIG_I2C_ALGOBIT=y | |||
| 773 | # CONFIG_SENSORS_ASB100 is not set | 784 | # CONFIG_SENSORS_ASB100 is not set |
| 774 | # CONFIG_SENSORS_DS1621 is not set | 785 | # CONFIG_SENSORS_DS1621 is not set |
| 775 | # CONFIG_SENSORS_FSCHER is not set | 786 | # CONFIG_SENSORS_FSCHER is not set |
| 787 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 776 | # CONFIG_SENSORS_GL518SM is not set | 788 | # CONFIG_SENSORS_GL518SM is not set |
| 789 | # CONFIG_SENSORS_GL520SM is not set | ||
| 777 | # CONFIG_SENSORS_IT87 is not set | 790 | # CONFIG_SENSORS_IT87 is not set |
| 778 | # CONFIG_SENSORS_LM63 is not set | 791 | # CONFIG_SENSORS_LM63 is not set |
| 779 | # CONFIG_SENSORS_LM75 is not set | 792 | # CONFIG_SENSORS_LM75 is not set |
| @@ -784,9 +797,11 @@ CONFIG_I2C_ALGOBIT=y | |||
| 784 | # CONFIG_SENSORS_LM85 is not set | 797 | # CONFIG_SENSORS_LM85 is not set |
| 785 | # CONFIG_SENSORS_LM87 is not set | 798 | # CONFIG_SENSORS_LM87 is not set |
| 786 | # CONFIG_SENSORS_LM90 is not set | 799 | # CONFIG_SENSORS_LM90 is not set |
| 800 | # CONFIG_SENSORS_LM92 is not set | ||
| 787 | # CONFIG_SENSORS_MAX1619 is not set | 801 | # CONFIG_SENSORS_MAX1619 is not set |
| 788 | # CONFIG_SENSORS_PC87360 is not set | 802 | # CONFIG_SENSORS_PC87360 is not set |
| 789 | # CONFIG_SENSORS_SMSC47B397 is not set | 803 | # CONFIG_SENSORS_SMSC47B397 is not set |
| 804 | # CONFIG_SENSORS_SIS5595 is not set | ||
| 790 | # CONFIG_SENSORS_SMSC47M1 is not set | 805 | # CONFIG_SENSORS_SMSC47M1 is not set |
| 791 | # CONFIG_SENSORS_VIA686A is not set | 806 | # CONFIG_SENSORS_VIA686A is not set |
| 792 | # CONFIG_SENSORS_W83781D is not set | 807 | # CONFIG_SENSORS_W83781D is not set |
| @@ -796,6 +811,7 @@ CONFIG_I2C_ALGOBIT=y | |||
| 796 | # | 811 | # |
| 797 | # Other I2C Chip support | 812 | # Other I2C Chip support |
| 798 | # | 813 | # |
| 814 | # CONFIG_SENSORS_DS1337 is not set | ||
| 799 | # CONFIG_SENSORS_EEPROM is not set | 815 | # CONFIG_SENSORS_EEPROM is not set |
| 800 | # CONFIG_SENSORS_PCF8574 is not set | 816 | # CONFIG_SENSORS_PCF8574 is not set |
| 801 | # CONFIG_SENSORS_PCF8591 is not set | 817 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -828,8 +844,13 @@ CONFIG_I2C_ALGOBIT=y | |||
| 828 | # Graphics support | 844 | # Graphics support |
| 829 | # | 845 | # |
| 830 | CONFIG_FB=y | 846 | CONFIG_FB=y |
| 847 | CONFIG_FB_CFB_FILLRECT=y | ||
| 848 | CONFIG_FB_CFB_COPYAREA=y | ||
| 849 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 850 | CONFIG_FB_SOFT_CURSOR=y | ||
| 851 | CONFIG_FB_MACMODES=y | ||
| 831 | CONFIG_FB_MODE_HELPERS=y | 852 | CONFIG_FB_MODE_HELPERS=y |
| 832 | # CONFIG_FB_TILEBLITTING is not set | 853 | CONFIG_FB_TILEBLITTING=y |
| 833 | # CONFIG_FB_CIRRUS is not set | 854 | # CONFIG_FB_CIRRUS is not set |
| 834 | # CONFIG_FB_PM2 is not set | 855 | # CONFIG_FB_PM2 is not set |
| 835 | # CONFIG_FB_CYBER2000 is not set | 856 | # CONFIG_FB_CYBER2000 is not set |
| @@ -838,6 +859,7 @@ CONFIG_FB_OF=y | |||
| 838 | # CONFIG_FB_ASILIANT is not set | 859 | # CONFIG_FB_ASILIANT is not set |
| 839 | # CONFIG_FB_IMSTT is not set | 860 | # CONFIG_FB_IMSTT is not set |
| 840 | # CONFIG_FB_VGA16 is not set | 861 | # CONFIG_FB_VGA16 is not set |
| 862 | # CONFIG_FB_NVIDIA is not set | ||
| 841 | # CONFIG_FB_RIVA is not set | 863 | # CONFIG_FB_RIVA is not set |
| 842 | CONFIG_FB_MATROX=y | 864 | CONFIG_FB_MATROX=y |
| 843 | CONFIG_FB_MATROX_MILLENIUM=y | 865 | CONFIG_FB_MATROX_MILLENIUM=y |
| @@ -858,6 +880,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 858 | # CONFIG_FB_3DFX is not set | 880 | # CONFIG_FB_3DFX is not set |
| 859 | # CONFIG_FB_VOODOO1 is not set | 881 | # CONFIG_FB_VOODOO1 is not set |
| 860 | # CONFIG_FB_TRIDENT is not set | 882 | # CONFIG_FB_TRIDENT is not set |
| 883 | # CONFIG_FB_S1D13XXX is not set | ||
| 861 | # CONFIG_FB_VIRTUAL is not set | 884 | # CONFIG_FB_VIRTUAL is not set |
| 862 | 885 | ||
| 863 | # | 886 | # |
| @@ -891,6 +914,8 @@ CONFIG_LCD_DEVICE=y | |||
| 891 | # | 914 | # |
| 892 | # USB support | 915 | # USB support |
| 893 | # | 916 | # |
| 917 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 918 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 894 | CONFIG_USB=y | 919 | CONFIG_USB=y |
| 895 | # CONFIG_USB_DEBUG is not set | 920 | # CONFIG_USB_DEBUG is not set |
| 896 | 921 | ||
| @@ -901,8 +926,6 @@ CONFIG_USB_DEVICEFS=y | |||
| 901 | # CONFIG_USB_BANDWIDTH is not set | 926 | # CONFIG_USB_BANDWIDTH is not set |
| 902 | # CONFIG_USB_DYNAMIC_MINORS is not set | 927 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 903 | # CONFIG_USB_OTG is not set | 928 | # CONFIG_USB_OTG is not set |
| 904 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 905 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 906 | 929 | ||
| 907 | # | 930 | # |
| 908 | # USB Host Controller Drivers | 931 | # USB Host Controller Drivers |
| @@ -911,6 +934,8 @@ CONFIG_USB_EHCI_HCD=y | |||
| 911 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 934 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
| 912 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 935 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
| 913 | CONFIG_USB_OHCI_HCD=y | 936 | CONFIG_USB_OHCI_HCD=y |
| 937 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 938 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 914 | # CONFIG_USB_UHCI_HCD is not set | 939 | # CONFIG_USB_UHCI_HCD is not set |
| 915 | # CONFIG_USB_SL811_HCD is not set | 940 | # CONFIG_USB_SL811_HCD is not set |
| 916 | 941 | ||
| @@ -926,12 +951,11 @@ CONFIG_USB_OHCI_HCD=y | |||
| 926 | # | 951 | # |
| 927 | CONFIG_USB_STORAGE=y | 952 | CONFIG_USB_STORAGE=y |
| 928 | # CONFIG_USB_STORAGE_DEBUG is not set | 953 | # CONFIG_USB_STORAGE_DEBUG is not set |
| 929 | # CONFIG_USB_STORAGE_RW_DETECT is not set | ||
| 930 | # CONFIG_USB_STORAGE_DATAFAB is not set | 954 | # CONFIG_USB_STORAGE_DATAFAB is not set |
| 931 | # CONFIG_USB_STORAGE_FREECOM is not set | 955 | # CONFIG_USB_STORAGE_FREECOM is not set |
| 932 | # CONFIG_USB_STORAGE_ISD200 is not set | 956 | # CONFIG_USB_STORAGE_ISD200 is not set |
| 933 | # CONFIG_USB_STORAGE_DPCM is not set | 957 | # CONFIG_USB_STORAGE_DPCM is not set |
| 934 | # CONFIG_USB_STORAGE_HP8200e is not set | 958 | # CONFIG_USB_STORAGE_USBAT is not set |
| 935 | # CONFIG_USB_STORAGE_SDDR09 is not set | 959 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 936 | # CONFIG_USB_STORAGE_SDDR55 is not set | 960 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 937 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 961 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| @@ -975,6 +999,7 @@ CONFIG_USB_HIDDEV=y | |||
| 975 | # CONFIG_USB_PEGASUS is not set | 999 | # CONFIG_USB_PEGASUS is not set |
| 976 | # CONFIG_USB_RTL8150 is not set | 1000 | # CONFIG_USB_RTL8150 is not set |
| 977 | # CONFIG_USB_USBNET is not set | 1001 | # CONFIG_USB_USBNET is not set |
| 1002 | CONFIG_USB_MON=y | ||
| 978 | 1003 | ||
| 979 | # | 1004 | # |
| 980 | # USB port drivers | 1005 | # USB port drivers |
| @@ -1000,6 +1025,7 @@ CONFIG_USB_HIDDEV=y | |||
| 1000 | # CONFIG_USB_PHIDGETKIT is not set | 1025 | # CONFIG_USB_PHIDGETKIT is not set |
| 1001 | # CONFIG_USB_PHIDGETSERVO is not set | 1026 | # CONFIG_USB_PHIDGETSERVO is not set |
| 1002 | # CONFIG_USB_IDMOUSE is not set | 1027 | # CONFIG_USB_IDMOUSE is not set |
| 1028 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1003 | # CONFIG_USB_TEST is not set | 1029 | # CONFIG_USB_TEST is not set |
| 1004 | 1030 | ||
| 1005 | # | 1031 | # |
| @@ -1208,10 +1234,13 @@ CONFIG_OPROFILE=y | |||
| 1208 | # | 1234 | # |
| 1209 | # Kernel hacking | 1235 | # Kernel hacking |
| 1210 | # | 1236 | # |
| 1237 | # CONFIG_PRINTK_TIME is not set | ||
| 1211 | CONFIG_DEBUG_KERNEL=y | 1238 | CONFIG_DEBUG_KERNEL=y |
| 1212 | CONFIG_MAGIC_SYSRQ=y | 1239 | CONFIG_MAGIC_SYSRQ=y |
| 1240 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 1213 | # CONFIG_SCHEDSTATS is not set | 1241 | # CONFIG_SCHEDSTATS is not set |
| 1214 | # CONFIG_DEBUG_SLAB is not set | 1242 | # CONFIG_DEBUG_SLAB is not set |
| 1243 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1215 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1244 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1216 | # CONFIG_DEBUG_KOBJECT is not set | 1245 | # CONFIG_DEBUG_KOBJECT is not set |
| 1217 | # CONFIG_DEBUG_INFO is not set | 1246 | # CONFIG_DEBUG_INFO is not set |
| @@ -1243,6 +1272,7 @@ CONFIG_CRYPTO_SHA1=m | |||
| 1243 | CONFIG_CRYPTO_SHA256=m | 1272 | CONFIG_CRYPTO_SHA256=m |
| 1244 | CONFIG_CRYPTO_SHA512=m | 1273 | CONFIG_CRYPTO_SHA512=m |
| 1245 | CONFIG_CRYPTO_WP512=m | 1274 | CONFIG_CRYPTO_WP512=m |
| 1275 | CONFIG_CRYPTO_TGR192=m | ||
| 1246 | CONFIG_CRYPTO_DES=y | 1276 | CONFIG_CRYPTO_DES=y |
| 1247 | CONFIG_CRYPTO_BLOWFISH=m | 1277 | CONFIG_CRYPTO_BLOWFISH=m |
| 1248 | CONFIG_CRYPTO_TWOFISH=m | 1278 | CONFIG_CRYPTO_TWOFISH=m |
diff --git a/arch/ppc64/defconfig b/arch/ppc64/defconfig index 537b1cc82eab..2f31bf3046f9 100644 --- a/arch/ppc64/defconfig +++ b/arch/ppc64/defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.11-rc3-bk6 | 3 | # Linux kernel version: 2.6.12-rc5-git9 |
| 4 | # Wed Feb 9 23:34:51 2005 | 4 | # Sun Jun 5 09:26:47 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
| 11 | CONFIG_HAVE_DEC_LOCK=y | 11 | CONFIG_HAVE_DEC_LOCK=y |
| 12 | CONFIG_EARLY_PRINTK=y | 12 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 13 | CONFIG_COMPAT=y |
| 14 | CONFIG_FRAME_POINTER=y | 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13 | |||
| 20 | CONFIG_EXPERIMENTAL=y | 20 | CONFIG_EXPERIMENTAL=y |
| 21 | CONFIG_CLEAN_COMPILE=y | 21 | CONFIG_CLEAN_COMPILE=y |
| 22 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 23 | 24 | ||
| 24 | # | 25 | # |
| 25 | # General setup | 26 | # General setup |
| @@ -30,24 +31,28 @@ CONFIG_SYSVIPC=y | |||
| 30 | CONFIG_POSIX_MQUEUE=y | 31 | CONFIG_POSIX_MQUEUE=y |
| 31 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 32 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
| 33 | CONFIG_LOG_BUF_SHIFT=17 | 34 | # CONFIG_AUDIT is not set |
| 34 | CONFIG_HOTPLUG=y | 35 | CONFIG_HOTPLUG=y |
| 35 | CONFIG_KOBJECT_UEVENT=y | 36 | CONFIG_KOBJECT_UEVENT=y |
| 36 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
| 37 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
| 39 | CONFIG_CPUSETS=y | ||
| 38 | # CONFIG_EMBEDDED is not set | 40 | # CONFIG_EMBEDDED is not set |
| 39 | CONFIG_KALLSYMS=y | 41 | CONFIG_KALLSYMS=y |
| 40 | # CONFIG_KALLSYMS_ALL is not set | 42 | # CONFIG_KALLSYMS_ALL is not set |
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 44 | CONFIG_PRINTK=y | ||
| 45 | CONFIG_BUG=y | ||
| 46 | CONFIG_BASE_FULL=y | ||
| 42 | CONFIG_FUTEX=y | 47 | CONFIG_FUTEX=y |
| 43 | CONFIG_EPOLL=y | 48 | CONFIG_EPOLL=y |
| 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 45 | CONFIG_SHMEM=y | 49 | CONFIG_SHMEM=y |
| 46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 50 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 47 | CONFIG_CC_ALIGN_LABELS=0 | 51 | CONFIG_CC_ALIGN_LABELS=0 |
| 48 | CONFIG_CC_ALIGN_LOOPS=0 | 52 | CONFIG_CC_ALIGN_LOOPS=0 |
| 49 | CONFIG_CC_ALIGN_JUMPS=0 | 53 | CONFIG_CC_ALIGN_JUMPS=0 |
| 50 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
| 55 | CONFIG_BASE_SMALL=0 | ||
| 51 | 56 | ||
| 52 | # | 57 | # |
| 53 | # Loadable module support | 58 | # Loadable module support |
| @@ -91,9 +96,12 @@ CONFIG_DISCONTIGMEM=y | |||
| 91 | CONFIG_EEH=y | 96 | CONFIG_EEH=y |
| 92 | CONFIG_GENERIC_HARDIRQS=y | 97 | CONFIG_GENERIC_HARDIRQS=y |
| 93 | CONFIG_PPC_RTAS=y | 98 | CONFIG_PPC_RTAS=y |
| 99 | CONFIG_RTAS_PROC=y | ||
| 94 | CONFIG_RTAS_FLASH=m | 100 | CONFIG_RTAS_FLASH=m |
| 95 | CONFIG_SCANLOG=m | 101 | CONFIG_SCANLOG=m |
| 96 | CONFIG_LPARCFG=y | 102 | CONFIG_LPARCFG=y |
| 103 | CONFIG_SECCOMP=y | ||
| 104 | CONFIG_ISA_DMA_API=y | ||
| 97 | 105 | ||
| 98 | # | 106 | # |
| 99 | # General setup | 107 | # General setup |
| @@ -104,6 +112,7 @@ CONFIG_BINFMT_ELF=y | |||
| 104 | CONFIG_BINFMT_MISC=m | 112 | CONFIG_BINFMT_MISC=m |
| 105 | # CONFIG_PCI_LEGACY_PROC is not set | 113 | # CONFIG_PCI_LEGACY_PROC is not set |
| 106 | # CONFIG_PCI_NAMES is not set | 114 | # CONFIG_PCI_NAMES is not set |
| 115 | # CONFIG_PCI_DEBUG is not set | ||
| 107 | CONFIG_HOTPLUG_CPU=y | 116 | CONFIG_HOTPLUG_CPU=y |
| 108 | 117 | ||
| 109 | # | 118 | # |
| @@ -112,10 +121,6 @@ CONFIG_HOTPLUG_CPU=y | |||
| 112 | # CONFIG_PCCARD is not set | 121 | # CONFIG_PCCARD is not set |
| 113 | 122 | ||
| 114 | # | 123 | # |
| 115 | # PC-card bridges | ||
| 116 | # | ||
| 117 | |||
| 118 | # | ||
| 119 | # PCI Hotplug Support | 124 | # PCI Hotplug Support |
| 120 | # | 125 | # |
| 121 | CONFIG_HOTPLUG_PCI=m | 126 | CONFIG_HOTPLUG_PCI=m |
| @@ -149,11 +154,10 @@ CONFIG_FW_LOADER=y | |||
| 149 | # | 154 | # |
| 150 | CONFIG_PARPORT=m | 155 | CONFIG_PARPORT=m |
| 151 | CONFIG_PARPORT_PC=m | 156 | CONFIG_PARPORT_PC=m |
| 152 | CONFIG_PARPORT_PC_CML1=m | ||
| 153 | # CONFIG_PARPORT_SERIAL is not set | 157 | # CONFIG_PARPORT_SERIAL is not set |
| 154 | # CONFIG_PARPORT_PC_FIFO is not set | 158 | # CONFIG_PARPORT_PC_FIFO is not set |
| 155 | # CONFIG_PARPORT_PC_SUPERIO is not set | 159 | # CONFIG_PARPORT_PC_SUPERIO is not set |
| 156 | # CONFIG_PARPORT_OTHER is not set | 160 | # CONFIG_PARPORT_GSC is not set |
| 157 | # CONFIG_PARPORT_1284 is not set | 161 | # CONFIG_PARPORT_1284 is not set |
| 158 | 162 | ||
| 159 | # | 163 | # |
| @@ -301,6 +305,7 @@ CONFIG_SCSI_SATA_SVW=y | |||
| 301 | # CONFIG_SCSI_ATA_PIIX is not set | 305 | # CONFIG_SCSI_ATA_PIIX is not set |
| 302 | # CONFIG_SCSI_SATA_NV is not set | 306 | # CONFIG_SCSI_SATA_NV is not set |
| 303 | # CONFIG_SCSI_SATA_PROMISE is not set | 307 | # CONFIG_SCSI_SATA_PROMISE is not set |
| 308 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
| 304 | # CONFIG_SCSI_SATA_SX4 is not set | 309 | # CONFIG_SCSI_SATA_SX4 is not set |
| 305 | # CONFIG_SCSI_SATA_SIL is not set | 310 | # CONFIG_SCSI_SATA_SIL is not set |
| 306 | # CONFIG_SCSI_SATA_SIS is not set | 311 | # CONFIG_SCSI_SATA_SIS is not set |
| @@ -310,7 +315,6 @@ CONFIG_SCSI_SATA_SVW=y | |||
| 310 | # CONFIG_SCSI_BUSLOGIC is not set | 315 | # CONFIG_SCSI_BUSLOGIC is not set |
| 311 | # CONFIG_SCSI_DMX3191D is not set | 316 | # CONFIG_SCSI_DMX3191D is not set |
| 312 | # CONFIG_SCSI_EATA is not set | 317 | # CONFIG_SCSI_EATA is not set |
| 313 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 314 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 318 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 315 | # CONFIG_SCSI_GDTH is not set | 319 | # CONFIG_SCSI_GDTH is not set |
| 316 | # CONFIG_SCSI_IPS is not set | 320 | # CONFIG_SCSI_IPS is not set |
| @@ -327,7 +331,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | |||
| 327 | CONFIG_SCSI_IPR=y | 331 | CONFIG_SCSI_IPR=y |
| 328 | CONFIG_SCSI_IPR_TRACE=y | 332 | CONFIG_SCSI_IPR_TRACE=y |
| 329 | CONFIG_SCSI_IPR_DUMP=y | 333 | CONFIG_SCSI_IPR_DUMP=y |
| 330 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 331 | # CONFIG_SCSI_QLOGIC_FC is not set | 334 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 332 | # CONFIG_SCSI_QLOGIC_1280 is not set | 335 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 333 | CONFIG_SCSI_QLA2XXX=y | 336 | CONFIG_SCSI_QLA2XXX=y |
| @@ -336,6 +339,7 @@ CONFIG_SCSI_QLA22XX=m | |||
| 336 | CONFIG_SCSI_QLA2300=m | 339 | CONFIG_SCSI_QLA2300=m |
| 337 | CONFIG_SCSI_QLA2322=m | 340 | CONFIG_SCSI_QLA2322=m |
| 338 | CONFIG_SCSI_QLA6312=m | 341 | CONFIG_SCSI_QLA6312=m |
| 342 | CONFIG_SCSI_LPFC=m | ||
| 339 | # CONFIG_SCSI_DC395x is not set | 343 | # CONFIG_SCSI_DC395x is not set |
| 340 | # CONFIG_SCSI_DC390T is not set | 344 | # CONFIG_SCSI_DC390T is not set |
| 341 | CONFIG_SCSI_DEBUG=m | 345 | CONFIG_SCSI_DEBUG=m |
| @@ -358,6 +362,8 @@ CONFIG_DM_CRYPT=m | |||
| 358 | CONFIG_DM_SNAPSHOT=m | 362 | CONFIG_DM_SNAPSHOT=m |
| 359 | CONFIG_DM_MIRROR=m | 363 | CONFIG_DM_MIRROR=m |
| 360 | CONFIG_DM_ZERO=m | 364 | CONFIG_DM_ZERO=m |
| 365 | CONFIG_DM_MULTIPATH=m | ||
| 366 | CONFIG_DM_MULTIPATH_EMC=m | ||
| 361 | 367 | ||
| 362 | # | 368 | # |
| 363 | # Fusion MPT device support | 369 | # Fusion MPT device support |
| @@ -405,6 +411,7 @@ CONFIG_IEEE1394_AMDTP=m | |||
| 405 | # | 411 | # |
| 406 | CONFIG_ADB=y | 412 | CONFIG_ADB=y |
| 407 | CONFIG_ADB_PMU=y | 413 | CONFIG_ADB_PMU=y |
| 414 | CONFIG_PMAC_SMU=y | ||
| 408 | # CONFIG_PMAC_PBOOK is not set | 415 | # CONFIG_PMAC_PBOOK is not set |
| 409 | # CONFIG_PMAC_BACKLIGHT is not set | 416 | # CONFIG_PMAC_BACKLIGHT is not set |
| 410 | # CONFIG_INPUT_ADBHID is not set | 417 | # CONFIG_INPUT_ADBHID is not set |
| @@ -420,7 +427,6 @@ CONFIG_NET=y | |||
| 420 | # | 427 | # |
| 421 | CONFIG_PACKET=y | 428 | CONFIG_PACKET=y |
| 422 | # CONFIG_PACKET_MMAP is not set | 429 | # CONFIG_PACKET_MMAP is not set |
| 423 | # CONFIG_NETLINK_DEV is not set | ||
| 424 | CONFIG_UNIX=y | 430 | CONFIG_UNIX=y |
| 425 | CONFIG_NET_KEY=m | 431 | CONFIG_NET_KEY=m |
| 426 | CONFIG_INET=y | 432 | CONFIG_INET=y |
| @@ -588,7 +594,6 @@ CONFIG_PCNET32=y | |||
| 588 | # CONFIG_DGRS is not set | 594 | # CONFIG_DGRS is not set |
| 589 | # CONFIG_EEPRO100 is not set | 595 | # CONFIG_EEPRO100 is not set |
| 590 | CONFIG_E100=y | 596 | CONFIG_E100=y |
| 591 | # CONFIG_E100_NAPI is not set | ||
| 592 | # CONFIG_FEALNX is not set | 597 | # CONFIG_FEALNX is not set |
| 593 | # CONFIG_NATSEMI is not set | 598 | # CONFIG_NATSEMI is not set |
| 594 | # CONFIG_NE2K_PCI is not set | 599 | # CONFIG_NE2K_PCI is not set |
| @@ -614,6 +619,8 @@ CONFIG_E1000=y | |||
| 614 | # CONFIG_SK98LIN is not set | 619 | # CONFIG_SK98LIN is not set |
| 615 | # CONFIG_VIA_VELOCITY is not set | 620 | # CONFIG_VIA_VELOCITY is not set |
| 616 | CONFIG_TIGON3=y | 621 | CONFIG_TIGON3=y |
| 622 | # CONFIG_BNX2 is not set | ||
| 623 | # CONFIG_MV643XX_ETH is not set | ||
| 617 | 624 | ||
| 618 | # | 625 | # |
| 619 | # Ethernet (10000 Mbit) | 626 | # Ethernet (10000 Mbit) |
| @@ -683,20 +690,6 @@ CONFIG_INPUT_EVDEV=m | |||
| 683 | # CONFIG_INPUT_EVBUG is not set | 690 | # CONFIG_INPUT_EVBUG is not set |
| 684 | 691 | ||
| 685 | # | 692 | # |
| 686 | # Input I/O drivers | ||
| 687 | # | ||
| 688 | # CONFIG_GAMEPORT is not set | ||
| 689 | CONFIG_SOUND_GAMEPORT=y | ||
| 690 | CONFIG_SERIO=y | ||
| 691 | CONFIG_SERIO_I8042=y | ||
| 692 | # CONFIG_SERIO_SERPORT is not set | ||
| 693 | # CONFIG_SERIO_CT82C710 is not set | ||
| 694 | # CONFIG_SERIO_PARKBD is not set | ||
| 695 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 696 | CONFIG_SERIO_LIBPS2=y | ||
| 697 | # CONFIG_SERIO_RAW is not set | ||
| 698 | |||
| 699 | # | ||
| 700 | # Input Device Drivers | 693 | # Input Device Drivers |
| 701 | # | 694 | # |
| 702 | CONFIG_INPUT_KEYBOARD=y | 695 | CONFIG_INPUT_KEYBOARD=y |
| @@ -716,6 +709,18 @@ CONFIG_INPUT_PCSPKR=m | |||
| 716 | # CONFIG_INPUT_UINPUT is not set | 709 | # CONFIG_INPUT_UINPUT is not set |
| 717 | 710 | ||
| 718 | # | 711 | # |
| 712 | # Hardware I/O ports | ||
| 713 | # | ||
| 714 | CONFIG_SERIO=y | ||
| 715 | CONFIG_SERIO_I8042=y | ||
| 716 | # CONFIG_SERIO_SERPORT is not set | ||
| 717 | # CONFIG_SERIO_PARKBD is not set | ||
| 718 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 719 | CONFIG_SERIO_LIBPS2=y | ||
| 720 | # CONFIG_SERIO_RAW is not set | ||
| 721 | # CONFIG_GAMEPORT is not set | ||
| 722 | |||
| 723 | # | ||
| 719 | # Character devices | 724 | # Character devices |
| 720 | # | 725 | # |
| 721 | CONFIG_VT=y | 726 | CONFIG_VT=y |
| @@ -738,6 +743,7 @@ CONFIG_SERIAL_CORE=y | |||
| 738 | CONFIG_SERIAL_CORE_CONSOLE=y | 743 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 739 | # CONFIG_SERIAL_PMACZILOG is not set | 744 | # CONFIG_SERIAL_PMACZILOG is not set |
| 740 | CONFIG_SERIAL_ICOM=m | 745 | CONFIG_SERIAL_ICOM=m |
| 746 | CONFIG_SERIAL_JSM=m | ||
| 741 | CONFIG_UNIX98_PTYS=y | 747 | CONFIG_UNIX98_PTYS=y |
| 742 | CONFIG_LEGACY_PTYS=y | 748 | CONFIG_LEGACY_PTYS=y |
| 743 | CONFIG_LEGACY_PTY_COUNT=256 | 749 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -766,9 +772,16 @@ CONFIG_HVCS=m | |||
| 766 | # | 772 | # |
| 767 | # Ftape, the floppy tape device driver | 773 | # Ftape, the floppy tape device driver |
| 768 | # | 774 | # |
| 775 | # CONFIG_AGP is not set | ||
| 769 | # CONFIG_DRM is not set | 776 | # CONFIG_DRM is not set |
| 770 | CONFIG_RAW_DRIVER=y | 777 | CONFIG_RAW_DRIVER=y |
| 771 | CONFIG_MAX_RAW_DEVS=256 | 778 | CONFIG_MAX_RAW_DEVS=256 |
| 779 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 780 | |||
| 781 | # | ||
| 782 | # TPM devices | ||
| 783 | # | ||
| 784 | # CONFIG_TCG_TPM is not set | ||
| 772 | 785 | ||
| 773 | # | 786 | # |
| 774 | # I2C support | 787 | # I2C support |
| @@ -793,9 +806,9 @@ CONFIG_I2C_ALGOBIT=y | |||
| 793 | CONFIG_I2C_AMD8111=y | 806 | CONFIG_I2C_AMD8111=y |
| 794 | # CONFIG_I2C_I801 is not set | 807 | # CONFIG_I2C_I801 is not set |
| 795 | # CONFIG_I2C_I810 is not set | 808 | # CONFIG_I2C_I810 is not set |
| 809 | # CONFIG_I2C_PIIX4 is not set | ||
| 796 | # CONFIG_I2C_ISA is not set | 810 | # CONFIG_I2C_ISA is not set |
| 797 | CONFIG_I2C_KEYWEST=y | 811 | CONFIG_I2C_KEYWEST=y |
| 798 | # CONFIG_I2C_MPC is not set | ||
| 799 | # CONFIG_I2C_NFORCE2 is not set | 812 | # CONFIG_I2C_NFORCE2 is not set |
| 800 | # CONFIG_I2C_PARPORT is not set | 813 | # CONFIG_I2C_PARPORT is not set |
| 801 | # CONFIG_I2C_PARPORT_LIGHT is not set | 814 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| @@ -822,7 +835,9 @@ CONFIG_I2C_KEYWEST=y | |||
| 822 | # CONFIG_SENSORS_ASB100 is not set | 835 | # CONFIG_SENSORS_ASB100 is not set |
| 823 | # CONFIG_SENSORS_DS1621 is not set | 836 | # CONFIG_SENSORS_DS1621 is not set |
| 824 | # CONFIG_SENSORS_FSCHER is not set | 837 | # CONFIG_SENSORS_FSCHER is not set |
| 838 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 825 | # CONFIG_SENSORS_GL518SM is not set | 839 | # CONFIG_SENSORS_GL518SM is not set |
| 840 | # CONFIG_SENSORS_GL520SM is not set | ||
| 826 | # CONFIG_SENSORS_IT87 is not set | 841 | # CONFIG_SENSORS_IT87 is not set |
| 827 | # CONFIG_SENSORS_LM63 is not set | 842 | # CONFIG_SENSORS_LM63 is not set |
| 828 | # CONFIG_SENSORS_LM75 is not set | 843 | # CONFIG_SENSORS_LM75 is not set |
| @@ -833,9 +848,11 @@ CONFIG_I2C_KEYWEST=y | |||
| 833 | # CONFIG_SENSORS_LM85 is not set | 848 | # CONFIG_SENSORS_LM85 is not set |
| 834 | # CONFIG_SENSORS_LM87 is not set | 849 | # CONFIG_SENSORS_LM87 is not set |
| 835 | # CONFIG_SENSORS_LM90 is not set | 850 | # CONFIG_SENSORS_LM90 is not set |
| 851 | # CONFIG_SENSORS_LM92 is not set | ||
| 836 | # CONFIG_SENSORS_MAX1619 is not set | 852 | # CONFIG_SENSORS_MAX1619 is not set |
| 837 | # CONFIG_SENSORS_PC87360 is not set | 853 | # CONFIG_SENSORS_PC87360 is not set |
| 838 | # CONFIG_SENSORS_SMSC47B397 is not set | 854 | # CONFIG_SENSORS_SMSC47B397 is not set |
| 855 | # CONFIG_SENSORS_SIS5595 is not set | ||
| 839 | # CONFIG_SENSORS_SMSC47M1 is not set | 856 | # CONFIG_SENSORS_SMSC47M1 is not set |
| 840 | # CONFIG_SENSORS_VIA686A is not set | 857 | # CONFIG_SENSORS_VIA686A is not set |
| 841 | # CONFIG_SENSORS_W83781D is not set | 858 | # CONFIG_SENSORS_W83781D is not set |
| @@ -845,6 +862,7 @@ CONFIG_I2C_KEYWEST=y | |||
| 845 | # | 862 | # |
| 846 | # Other I2C Chip support | 863 | # Other I2C Chip support |
| 847 | # | 864 | # |
| 865 | # CONFIG_SENSORS_DS1337 is not set | ||
| 848 | # CONFIG_SENSORS_EEPROM is not set | 866 | # CONFIG_SENSORS_EEPROM is not set |
| 849 | # CONFIG_SENSORS_PCF8574 is not set | 867 | # CONFIG_SENSORS_PCF8574 is not set |
| 850 | # CONFIG_SENSORS_PCF8591 is not set | 868 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -877,6 +895,11 @@ CONFIG_I2C_KEYWEST=y | |||
| 877 | # Graphics support | 895 | # Graphics support |
| 878 | # | 896 | # |
| 879 | CONFIG_FB=y | 897 | CONFIG_FB=y |
| 898 | CONFIG_FB_CFB_FILLRECT=y | ||
| 899 | CONFIG_FB_CFB_COPYAREA=y | ||
| 900 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 901 | CONFIG_FB_SOFT_CURSOR=y | ||
| 902 | CONFIG_FB_MACMODES=y | ||
| 880 | CONFIG_FB_MODE_HELPERS=y | 903 | CONFIG_FB_MODE_HELPERS=y |
| 881 | CONFIG_FB_TILEBLITTING=y | 904 | CONFIG_FB_TILEBLITTING=y |
| 882 | # CONFIG_FB_CIRRUS is not set | 905 | # CONFIG_FB_CIRRUS is not set |
| @@ -890,9 +913,8 @@ CONFIG_FB_OF=y | |||
| 890 | # CONFIG_FB_ASILIANT is not set | 913 | # CONFIG_FB_ASILIANT is not set |
| 891 | # CONFIG_FB_IMSTT is not set | 914 | # CONFIG_FB_IMSTT is not set |
| 892 | # CONFIG_FB_VGA16 is not set | 915 | # CONFIG_FB_VGA16 is not set |
| 893 | CONFIG_FB_RIVA=y | 916 | # CONFIG_FB_NVIDIA is not set |
| 894 | CONFIG_FB_RIVA_I2C=y | 917 | # CONFIG_FB_RIVA is not set |
| 895 | # CONFIG_FB_RIVA_DEBUG is not set | ||
| 896 | CONFIG_FB_MATROX=y | 918 | CONFIG_FB_MATROX=y |
| 897 | CONFIG_FB_MATROX_MILLENIUM=y | 919 | CONFIG_FB_MATROX_MILLENIUM=y |
| 898 | CONFIG_FB_MATROX_MYSTIQUE=y | 920 | CONFIG_FB_MATROX_MYSTIQUE=y |
| @@ -913,6 +935,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 913 | # CONFIG_FB_3DFX is not set | 935 | # CONFIG_FB_3DFX is not set |
| 914 | # CONFIG_FB_VOODOO1 is not set | 936 | # CONFIG_FB_VOODOO1 is not set |
| 915 | # CONFIG_FB_TRIDENT is not set | 937 | # CONFIG_FB_TRIDENT is not set |
| 938 | # CONFIG_FB_S1D13XXX is not set | ||
| 916 | # CONFIG_FB_VIRTUAL is not set | 939 | # CONFIG_FB_VIRTUAL is not set |
| 917 | 940 | ||
| 918 | # | 941 | # |
| @@ -946,6 +969,8 @@ CONFIG_LCD_DEVICE=y | |||
| 946 | # | 969 | # |
| 947 | # USB support | 970 | # USB support |
| 948 | # | 971 | # |
| 972 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 973 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 949 | CONFIG_USB=y | 974 | CONFIG_USB=y |
| 950 | # CONFIG_USB_DEBUG is not set | 975 | # CONFIG_USB_DEBUG is not set |
| 951 | 976 | ||
| @@ -956,8 +981,6 @@ CONFIG_USB_DEVICEFS=y | |||
| 956 | # CONFIG_USB_BANDWIDTH is not set | 981 | # CONFIG_USB_BANDWIDTH is not set |
| 957 | # CONFIG_USB_DYNAMIC_MINORS is not set | 982 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 958 | # CONFIG_USB_OTG is not set | 983 | # CONFIG_USB_OTG is not set |
| 959 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 960 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 961 | 984 | ||
| 962 | # | 985 | # |
| 963 | # USB Host Controller Drivers | 986 | # USB Host Controller Drivers |
| @@ -966,6 +989,8 @@ CONFIG_USB_EHCI_HCD=y | |||
| 966 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 989 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
| 967 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 990 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
| 968 | CONFIG_USB_OHCI_HCD=y | 991 | CONFIG_USB_OHCI_HCD=y |
| 992 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 993 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 969 | # CONFIG_USB_UHCI_HCD is not set | 994 | # CONFIG_USB_UHCI_HCD is not set |
| 970 | # CONFIG_USB_SL811_HCD is not set | 995 | # CONFIG_USB_SL811_HCD is not set |
| 971 | 996 | ||
| @@ -981,12 +1006,11 @@ CONFIG_USB_OHCI_HCD=y | |||
| 981 | # | 1006 | # |
| 982 | CONFIG_USB_STORAGE=m | 1007 | CONFIG_USB_STORAGE=m |
| 983 | # CONFIG_USB_STORAGE_DEBUG is not set | 1008 | # CONFIG_USB_STORAGE_DEBUG is not set |
| 984 | CONFIG_USB_STORAGE_RW_DETECT=y | ||
| 985 | # CONFIG_USB_STORAGE_DATAFAB is not set | 1009 | # CONFIG_USB_STORAGE_DATAFAB is not set |
| 986 | # CONFIG_USB_STORAGE_FREECOM is not set | 1010 | # CONFIG_USB_STORAGE_FREECOM is not set |
| 987 | # CONFIG_USB_STORAGE_ISD200 is not set | 1011 | # CONFIG_USB_STORAGE_ISD200 is not set |
| 988 | # CONFIG_USB_STORAGE_DPCM is not set | 1012 | # CONFIG_USB_STORAGE_DPCM is not set |
| 989 | # CONFIG_USB_STORAGE_HP8200e is not set | 1013 | # CONFIG_USB_STORAGE_USBAT is not set |
| 990 | # CONFIG_USB_STORAGE_SDDR09 is not set | 1014 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 991 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1015 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 992 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1016 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| @@ -1030,6 +1054,7 @@ CONFIG_USB_HIDDEV=y | |||
| 1030 | CONFIG_USB_PEGASUS=y | 1054 | CONFIG_USB_PEGASUS=y |
| 1031 | # CONFIG_USB_RTL8150 is not set | 1055 | # CONFIG_USB_RTL8150 is not set |
| 1032 | # CONFIG_USB_USBNET is not set | 1056 | # CONFIG_USB_USBNET is not set |
| 1057 | # CONFIG_USB_MON is not set | ||
| 1033 | 1058 | ||
| 1034 | # | 1059 | # |
| 1035 | # USB port drivers | 1060 | # USB port drivers |
| @@ -1055,6 +1080,7 @@ CONFIG_USB_PEGASUS=y | |||
| 1055 | # CONFIG_USB_PHIDGETKIT is not set | 1080 | # CONFIG_USB_PHIDGETKIT is not set |
| 1056 | # CONFIG_USB_PHIDGETSERVO is not set | 1081 | # CONFIG_USB_PHIDGETSERVO is not set |
| 1057 | # CONFIG_USB_IDMOUSE is not set | 1082 | # CONFIG_USB_IDMOUSE is not set |
| 1083 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1058 | # CONFIG_USB_TEST is not set | 1084 | # CONFIG_USB_TEST is not set |
| 1059 | 1085 | ||
| 1060 | # | 1086 | # |
| @@ -1276,10 +1302,13 @@ CONFIG_OPROFILE=y | |||
| 1276 | # | 1302 | # |
| 1277 | # Kernel hacking | 1303 | # Kernel hacking |
| 1278 | # | 1304 | # |
| 1305 | # CONFIG_PRINTK_TIME is not set | ||
| 1279 | CONFIG_DEBUG_KERNEL=y | 1306 | CONFIG_DEBUG_KERNEL=y |
| 1280 | CONFIG_MAGIC_SYSRQ=y | 1307 | CONFIG_MAGIC_SYSRQ=y |
| 1308 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 1281 | # CONFIG_SCHEDSTATS is not set | 1309 | # CONFIG_SCHEDSTATS is not set |
| 1282 | # CONFIG_DEBUG_SLAB is not set | 1310 | # CONFIG_DEBUG_SLAB is not set |
| 1311 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1283 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1312 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1284 | # CONFIG_DEBUG_KOBJECT is not set | 1313 | # CONFIG_DEBUG_KOBJECT is not set |
| 1285 | # CONFIG_DEBUG_INFO is not set | 1314 | # CONFIG_DEBUG_INFO is not set |
| @@ -1311,6 +1340,7 @@ CONFIG_CRYPTO_SHA1=m | |||
| 1311 | CONFIG_CRYPTO_SHA256=m | 1340 | CONFIG_CRYPTO_SHA256=m |
| 1312 | CONFIG_CRYPTO_SHA512=m | 1341 | CONFIG_CRYPTO_SHA512=m |
| 1313 | CONFIG_CRYPTO_WP512=m | 1342 | CONFIG_CRYPTO_WP512=m |
| 1343 | CONFIG_CRYPTO_TGR192=m | ||
| 1314 | CONFIG_CRYPTO_DES=y | 1344 | CONFIG_CRYPTO_DES=y |
| 1315 | CONFIG_CRYPTO_BLOWFISH=m | 1345 | CONFIG_CRYPTO_BLOWFISH=m |
| 1316 | CONFIG_CRYPTO_TWOFISH=m | 1346 | CONFIG_CRYPTO_TWOFISH=m |
diff --git a/arch/ppc64/kernel/entry.S b/arch/ppc64/kernel/entry.S index d3604056e1a9..b61572eb2a71 100644 --- a/arch/ppc64/kernel/entry.S +++ b/arch/ppc64/kernel/entry.S | |||
| @@ -436,15 +436,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
| 436 | REST_8GPRS(14, r1) | 436 | REST_8GPRS(14, r1) |
| 437 | REST_10GPRS(22, r1) | 437 | REST_10GPRS(22, r1) |
| 438 | 438 | ||
| 439 | #ifdef CONFIG_PPC_ISERIES | ||
| 440 | clrrdi r7,r1,THREAD_SHIFT /* get current_thread_info() */ | ||
| 441 | ld r7,TI_FLAGS(r7) /* Get run light flag */ | ||
| 442 | mfspr r9,CTRLF | ||
| 443 | srdi r7,r7,TIF_RUN_LIGHT | ||
| 444 | insrdi r9,r7,1,63 /* Insert run light into CTRL */ | ||
| 445 | mtspr CTRLT,r9 | ||
| 446 | #endif | ||
| 447 | |||
| 448 | /* convert old thread to its task_struct for return value */ | 439 | /* convert old thread to its task_struct for return value */ |
| 449 | addi r3,r3,-THREAD | 440 | addi r3,r3,-THREAD |
| 450 | ld r7,_NIP(r1) /* Return to _switch caller in new task */ | 441 | ld r7,_NIP(r1) /* Return to _switch caller in new task */ |
diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S index 92a744c31ab1..346dbf606b5d 100644 --- a/arch/ppc64/kernel/head.S +++ b/arch/ppc64/kernel/head.S | |||
| @@ -626,10 +626,10 @@ system_reset_iSeries: | |||
| 626 | lhz r24,PACAPACAINDEX(r13) /* Get processor # */ | 626 | lhz r24,PACAPACAINDEX(r13) /* Get processor # */ |
| 627 | cmpwi 0,r24,0 /* Are we processor 0? */ | 627 | cmpwi 0,r24,0 /* Are we processor 0? */ |
| 628 | beq .__start_initialization_iSeries /* Start up the first processor */ | 628 | beq .__start_initialization_iSeries /* Start up the first processor */ |
| 629 | mfspr r4,CTRLF | 629 | mfspr r4,SPRN_CTRLF |
| 630 | li r5,RUNLATCH /* Turn off the run light */ | 630 | li r5,CTRL_RUNLATCH /* Turn off the run light */ |
| 631 | andc r4,r4,r5 | 631 | andc r4,r4,r5 |
| 632 | mtspr CTRLT,r4 | 632 | mtspr SPRN_CTRLT,r4 |
| 633 | 633 | ||
| 634 | 1: | 634 | 1: |
| 635 | HMT_LOW | 635 | HMT_LOW |
| @@ -2082,9 +2082,9 @@ _GLOBAL(hmt_start_secondary) | |||
| 2082 | mfspr r4, HID0 | 2082 | mfspr r4, HID0 |
| 2083 | ori r4, r4, 0x1 | 2083 | ori r4, r4, 0x1 |
| 2084 | mtspr HID0, r4 | 2084 | mtspr HID0, r4 |
| 2085 | mfspr r4, CTRLF | 2085 | mfspr r4, SPRN_CTRLF |
| 2086 | oris r4, r4, 0x40 | 2086 | oris r4, r4, 0x40 |
| 2087 | mtspr CTRLT, r4 | 2087 | mtspr SPRN_CTRLT, r4 |
| 2088 | blr | 2088 | blr |
| 2089 | #endif | 2089 | #endif |
| 2090 | 2090 | ||
diff --git a/arch/ppc64/kernel/iSeries_setup.c b/arch/ppc64/kernel/iSeries_setup.c index da20120f2261..6d06eb550a3f 100644 --- a/arch/ppc64/kernel/iSeries_setup.c +++ b/arch/ppc64/kernel/iSeries_setup.c | |||
| @@ -852,6 +852,28 @@ static int __init iSeries_src_init(void) | |||
| 852 | 852 | ||
| 853 | late_initcall(iSeries_src_init); | 853 | late_initcall(iSeries_src_init); |
| 854 | 854 | ||
| 855 | static int set_spread_lpevents(char *str) | ||
| 856 | { | ||
| 857 | unsigned long i; | ||
| 858 | unsigned long val = simple_strtoul(str, NULL, 0); | ||
| 859 | |||
| 860 | /* | ||
| 861 | * The parameter is the number of processors to share in processing | ||
| 862 | * lp events. | ||
| 863 | */ | ||
| 864 | if (( val > 0) && (val <= NR_CPUS)) { | ||
| 865 | for (i = 1; i < val; ++i) | ||
| 866 | paca[i].lpqueue_ptr = paca[0].lpqueue_ptr; | ||
| 867 | |||
| 868 | printk("lpevent processing spread over %ld processors\n", val); | ||
| 869 | } else { | ||
| 870 | printk("invalid spread_lpevents %ld\n", val); | ||
| 871 | } | ||
| 872 | |||
| 873 | return 1; | ||
| 874 | } | ||
| 875 | __setup("spread_lpevents=", set_spread_lpevents); | ||
| 876 | |||
| 855 | void __init iSeries_early_setup(void) | 877 | void __init iSeries_early_setup(void) |
| 856 | { | 878 | { |
| 857 | iSeries_fixup_klimit(); | 879 | iSeries_fixup_klimit(); |
diff --git a/arch/ppc64/kernel/idle.c b/arch/ppc64/kernel/idle.c index 6abc621d3ba0..f24ce2b87200 100644 --- a/arch/ppc64/kernel/idle.c +++ b/arch/ppc64/kernel/idle.c | |||
| @@ -75,13 +75,9 @@ static int iSeries_idle(void) | |||
| 75 | { | 75 | { |
| 76 | struct paca_struct *lpaca; | 76 | struct paca_struct *lpaca; |
| 77 | long oldval; | 77 | long oldval; |
| 78 | unsigned long CTRL; | ||
| 79 | 78 | ||
| 80 | /* ensure iSeries run light will be out when idle */ | 79 | /* ensure iSeries run light will be out when idle */ |
| 81 | clear_thread_flag(TIF_RUN_LIGHT); | 80 | ppc64_runlatch_off(); |
| 82 | CTRL = mfspr(CTRLF); | ||
| 83 | CTRL &= ~RUNLATCH; | ||
| 84 | mtspr(CTRLT, CTRL); | ||
| 85 | 81 | ||
| 86 | lpaca = get_paca(); | 82 | lpaca = get_paca(); |
| 87 | 83 | ||
| @@ -111,7 +107,9 @@ static int iSeries_idle(void) | |||
| 111 | } | 107 | } |
| 112 | } | 108 | } |
| 113 | 109 | ||
| 110 | ppc64_runlatch_on(); | ||
| 114 | schedule(); | 111 | schedule(); |
| 112 | ppc64_runlatch_off(); | ||
| 115 | } | 113 | } |
| 116 | 114 | ||
| 117 | return 0; | 115 | return 0; |
diff --git a/arch/ppc64/kernel/kprobes.c b/arch/ppc64/kernel/kprobes.c index 103daaf73573..e950a2058a19 100644 --- a/arch/ppc64/kernel/kprobes.c +++ b/arch/ppc64/kernel/kprobes.c | |||
| @@ -45,12 +45,17 @@ static struct pt_regs jprobe_saved_regs; | |||
| 45 | 45 | ||
| 46 | int arch_prepare_kprobe(struct kprobe *p) | 46 | int arch_prepare_kprobe(struct kprobe *p) |
| 47 | { | 47 | { |
| 48 | int ret = 0; | ||
| 48 | kprobe_opcode_t insn = *p->addr; | 49 | kprobe_opcode_t insn = *p->addr; |
| 49 | 50 | ||
| 50 | if (IS_MTMSRD(insn) || IS_RFID(insn)) | 51 | if ((unsigned long)p->addr & 0x03) { |
| 51 | /* cannot put bp on RFID/MTMSRD */ | 52 | printk("Attempt to register kprobe at an unaligned address\n"); |
| 52 | return 1; | 53 | ret = -EINVAL; |
| 53 | return 0; | 54 | } else if (IS_MTMSRD(insn) || IS_RFID(insn)) { |
| 55 | printk("Cannot register a kprobe on rfid or mtmsrd\n"); | ||
| 56 | ret = -EINVAL; | ||
| 57 | } | ||
| 58 | return ret; | ||
| 54 | } | 59 | } |
| 55 | 60 | ||
| 56 | void arch_copy_kprobe(struct kprobe *p) | 61 | void arch_copy_kprobe(struct kprobe *p) |
| @@ -172,8 +177,6 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs) | |||
| 172 | ret = emulate_step(regs, p->ainsn.insn[0]); | 177 | ret = emulate_step(regs, p->ainsn.insn[0]); |
| 173 | if (ret == 0) | 178 | if (ret == 0) |
| 174 | regs->nip = (unsigned long)p->addr + 4; | 179 | regs->nip = (unsigned long)p->addr + 4; |
| 175 | |||
| 176 | regs->msr &= ~MSR_SE; | ||
| 177 | } | 180 | } |
| 178 | 181 | ||
| 179 | static inline int post_kprobe_handler(struct pt_regs *regs) | 182 | static inline int post_kprobe_handler(struct pt_regs *regs) |
| @@ -210,6 +213,7 @@ static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr) | |||
| 210 | 213 | ||
| 211 | if (kprobe_status & KPROBE_HIT_SS) { | 214 | if (kprobe_status & KPROBE_HIT_SS) { |
| 212 | resume_execution(current_kprobe, regs); | 215 | resume_execution(current_kprobe, regs); |
| 216 | regs->msr &= ~MSR_SE; | ||
| 213 | regs->msr |= kprobe_saved_msr; | 217 | regs->msr |= kprobe_saved_msr; |
| 214 | 218 | ||
| 215 | unlock_kprobes(); | 219 | unlock_kprobes(); |
| @@ -233,8 +237,6 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, | |||
| 233 | */ | 237 | */ |
| 234 | preempt_disable(); | 238 | preempt_disable(); |
| 235 | switch (val) { | 239 | switch (val) { |
| 236 | case DIE_IABR_MATCH: | ||
| 237 | case DIE_DABR_MATCH: | ||
| 238 | case DIE_BPT: | 240 | case DIE_BPT: |
| 239 | if (kprobe_handler(args->regs)) | 241 | if (kprobe_handler(args->regs)) |
| 240 | ret = NOTIFY_STOP; | 242 | ret = NOTIFY_STOP; |
diff --git a/arch/ppc64/kernel/misc.S b/arch/ppc64/kernel/misc.S index b944717c1dbd..e3c73b3425dc 100644 --- a/arch/ppc64/kernel/misc.S +++ b/arch/ppc64/kernel/misc.S | |||
| @@ -792,7 +792,7 @@ _GLOBAL(sys_call_table32) | |||
| 792 | .llong .compat_sys_newstat | 792 | .llong .compat_sys_newstat |
| 793 | .llong .compat_sys_newlstat | 793 | .llong .compat_sys_newlstat |
| 794 | .llong .compat_sys_newfstat | 794 | .llong .compat_sys_newfstat |
| 795 | .llong .sys_uname | 795 | .llong .sys32_uname |
| 796 | .llong .sys_ni_syscall /* 110 old iopl syscall */ | 796 | .llong .sys_ni_syscall /* 110 old iopl syscall */ |
| 797 | .llong .sys_vhangup | 797 | .llong .sys_vhangup |
| 798 | .llong .sys_ni_syscall /* old idle syscall */ | 798 | .llong .sys_ni_syscall /* old idle syscall */ |
diff --git a/arch/ppc64/kernel/process.c b/arch/ppc64/kernel/process.c index 8b0686122738..cdfecbeb331f 100644 --- a/arch/ppc64/kernel/process.c +++ b/arch/ppc64/kernel/process.c | |||
| @@ -378,9 +378,6 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | |||
| 378 | childregs->gpr[1] = sp + sizeof(struct pt_regs); | 378 | childregs->gpr[1] = sp + sizeof(struct pt_regs); |
| 379 | p->thread.regs = NULL; /* no user register state */ | 379 | p->thread.regs = NULL; /* no user register state */ |
| 380 | clear_ti_thread_flag(p->thread_info, TIF_32BIT); | 380 | clear_ti_thread_flag(p->thread_info, TIF_32BIT); |
| 381 | #ifdef CONFIG_PPC_ISERIES | ||
| 382 | set_ti_thread_flag(p->thread_info, TIF_RUN_LIGHT); | ||
| 383 | #endif | ||
| 384 | } else { | 381 | } else { |
| 385 | childregs->gpr[1] = usp; | 382 | childregs->gpr[1] = usp; |
| 386 | p->thread.regs = childregs; | 383 | p->thread.regs = childregs; |
diff --git a/arch/ppc64/kernel/prom_init.c b/arch/ppc64/kernel/prom_init.c index 1ac531ba7056..b7683abfbe6a 100644 --- a/arch/ppc64/kernel/prom_init.c +++ b/arch/ppc64/kernel/prom_init.c | |||
| @@ -1370,7 +1370,7 @@ static int __init prom_find_machine_type(void) | |||
| 1370 | } | 1370 | } |
| 1371 | /* Default to pSeries. We need to know if we are running LPAR */ | 1371 | /* Default to pSeries. We need to know if we are running LPAR */ |
| 1372 | rtas = call_prom("finddevice", 1, 1, ADDR("/rtas")); | 1372 | rtas = call_prom("finddevice", 1, 1, ADDR("/rtas")); |
| 1373 | if (!PHANDLE_VALID(rtas)) { | 1373 | if (PHANDLE_VALID(rtas)) { |
| 1374 | int x = prom_getproplen(rtas, "ibm,hypertas-functions"); | 1374 | int x = prom_getproplen(rtas, "ibm,hypertas-functions"); |
| 1375 | if (x != PROM_ERROR) { | 1375 | if (x != PROM_ERROR) { |
| 1376 | prom_printf("Hypertas detected, assuming LPAR !\n"); | 1376 | prom_printf("Hypertas detected, assuming LPAR !\n"); |
diff --git a/arch/ppc64/kernel/setup.c b/arch/ppc64/kernel/setup.c index 21c57f539c29..dce198d39328 100644 --- a/arch/ppc64/kernel/setup.c +++ b/arch/ppc64/kernel/setup.c | |||
| @@ -103,11 +103,6 @@ extern void unflatten_device_tree(void); | |||
| 103 | 103 | ||
| 104 | extern void smp_release_cpus(void); | 104 | extern void smp_release_cpus(void); |
| 105 | 105 | ||
| 106 | unsigned long decr_overclock = 1; | ||
| 107 | unsigned long decr_overclock_proc0 = 1; | ||
| 108 | unsigned long decr_overclock_set = 0; | ||
| 109 | unsigned long decr_overclock_proc0_set = 0; | ||
| 110 | |||
| 111 | int have_of = 1; | 106 | int have_of = 1; |
| 112 | int boot_cpuid = 0; | 107 | int boot_cpuid = 0; |
| 113 | int boot_cpuid_phys = 0; | 108 | int boot_cpuid_phys = 0; |
| @@ -1120,64 +1115,15 @@ void ppc64_dump_msg(unsigned int src, const char *msg) | |||
| 1120 | printk("[dump]%04x %s\n", src, msg); | 1115 | printk("[dump]%04x %s\n", src, msg); |
| 1121 | } | 1116 | } |
| 1122 | 1117 | ||
| 1123 | int set_spread_lpevents( char * str ) | ||
| 1124 | { | ||
| 1125 | /* The parameter is the number of processors to share in processing lp events */ | ||
| 1126 | unsigned long i; | ||
| 1127 | unsigned long val = simple_strtoul( str, NULL, 0 ); | ||
| 1128 | if ( ( val > 0 ) && ( val <= NR_CPUS ) ) { | ||
| 1129 | for ( i=1; i<val; ++i ) | ||
| 1130 | paca[i].lpqueue_ptr = paca[0].lpqueue_ptr; | ||
| 1131 | printk("lpevent processing spread over %ld processors\n", val); | ||
| 1132 | } | ||
| 1133 | else | ||
| 1134 | printk("invalid spreaqd_lpevents %ld\n", val); | ||
| 1135 | return 1; | ||
| 1136 | } | ||
| 1137 | |||
| 1138 | /* This should only be called on processor 0 during calibrate decr */ | 1118 | /* This should only be called on processor 0 during calibrate decr */ |
| 1139 | void setup_default_decr(void) | 1119 | void setup_default_decr(void) |
| 1140 | { | 1120 | { |
| 1141 | struct paca_struct *lpaca = get_paca(); | 1121 | struct paca_struct *lpaca = get_paca(); |
| 1142 | 1122 | ||
| 1143 | if ( decr_overclock_set && !decr_overclock_proc0_set ) | 1123 | lpaca->default_decr = tb_ticks_per_jiffy; |
| 1144 | decr_overclock_proc0 = decr_overclock; | ||
| 1145 | |||
| 1146 | lpaca->default_decr = tb_ticks_per_jiffy / decr_overclock_proc0; | ||
| 1147 | lpaca->next_jiffy_update_tb = get_tb() + tb_ticks_per_jiffy; | 1124 | lpaca->next_jiffy_update_tb = get_tb() + tb_ticks_per_jiffy; |
| 1148 | } | 1125 | } |
| 1149 | 1126 | ||
| 1150 | int set_decr_overclock_proc0( char * str ) | ||
| 1151 | { | ||
| 1152 | unsigned long val = simple_strtoul( str, NULL, 0 ); | ||
| 1153 | if ( ( val >= 1 ) && ( val <= 48 ) ) { | ||
| 1154 | decr_overclock_proc0_set = 1; | ||
| 1155 | decr_overclock_proc0 = val; | ||
| 1156 | printk("proc 0 decrementer overclock factor of %ld\n", val); | ||
| 1157 | } | ||
| 1158 | else | ||
| 1159 | printk("invalid proc 0 decrementer overclock factor of %ld\n", val); | ||
| 1160 | return 1; | ||
| 1161 | } | ||
| 1162 | |||
| 1163 | int set_decr_overclock( char * str ) | ||
| 1164 | { | ||
| 1165 | unsigned long val = simple_strtoul( str, NULL, 0 ); | ||
| 1166 | if ( ( val >= 1 ) && ( val <= 48 ) ) { | ||
| 1167 | decr_overclock_set = 1; | ||
| 1168 | decr_overclock = val; | ||
| 1169 | printk("decrementer overclock factor of %ld\n", val); | ||
| 1170 | } | ||
| 1171 | else | ||
| 1172 | printk("invalid decrementer overclock factor of %ld\n", val); | ||
| 1173 | return 1; | ||
| 1174 | |||
| 1175 | } | ||
| 1176 | |||
| 1177 | __setup("spread_lpevents=", set_spread_lpevents ); | ||
| 1178 | __setup("decr_overclock_proc0=", set_decr_overclock_proc0 ); | ||
| 1179 | __setup("decr_overclock=", set_decr_overclock ); | ||
| 1180 | |||
| 1181 | #ifndef CONFIG_PPC_ISERIES | 1127 | #ifndef CONFIG_PPC_ISERIES |
| 1182 | /* | 1128 | /* |
| 1183 | * This function can be used by platforms to "find" legacy serial ports. | 1129 | * This function can be used by platforms to "find" legacy serial ports. |
diff --git a/arch/ppc64/kernel/smp.c b/arch/ppc64/kernel/smp.c index 3b906cd94037..9ef5d36d6b25 100644 --- a/arch/ppc64/kernel/smp.c +++ b/arch/ppc64/kernel/smp.c | |||
| @@ -334,7 +334,6 @@ void smp_call_function_interrupt(void) | |||
| 334 | } | 334 | } |
| 335 | } | 335 | } |
| 336 | 336 | ||
| 337 | extern unsigned long decr_overclock; | ||
| 338 | extern struct gettimeofday_struct do_gtod; | 337 | extern struct gettimeofday_struct do_gtod; |
| 339 | 338 | ||
| 340 | struct thread_info *current_set[NR_CPUS]; | 339 | struct thread_info *current_set[NR_CPUS]; |
| @@ -491,7 +490,7 @@ int __devinit __cpu_up(unsigned int cpu) | |||
| 491 | if (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)) | 490 | if (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)) |
| 492 | return -EINVAL; | 491 | return -EINVAL; |
| 493 | 492 | ||
| 494 | paca[cpu].default_decr = tb_ticks_per_jiffy / decr_overclock; | 493 | paca[cpu].default_decr = tb_ticks_per_jiffy; |
| 495 | 494 | ||
| 496 | if (!cpu_has_feature(CPU_FTR_SLB)) { | 495 | if (!cpu_has_feature(CPU_FTR_SLB)) { |
| 497 | void *tmp; | 496 | void *tmp; |
diff --git a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c index 7cf7a9600025..9c8e317c598d 100644 --- a/arch/ppc64/kernel/sys_ppc32.c +++ b/arch/ppc64/kernel/sys_ppc32.c | |||
| @@ -791,31 +791,6 @@ asmlinkage int sys32_pciconfig_iobase(u32 which, u32 in_bus, u32 in_devfn) | |||
| 791 | } | 791 | } |
| 792 | 792 | ||
| 793 | 793 | ||
| 794 | asmlinkage int ppc64_newuname(struct new_utsname __user * name) | ||
| 795 | { | ||
| 796 | int errno = sys_newuname(name); | ||
| 797 | |||
| 798 | if (current->personality == PER_LINUX32 && !errno) { | ||
| 799 | if(copy_to_user(name->machine, "ppc\0\0", 8)) { | ||
| 800 | errno = -EFAULT; | ||
| 801 | } | ||
| 802 | } | ||
| 803 | return errno; | ||
| 804 | } | ||
| 805 | |||
| 806 | asmlinkage int ppc64_personality(unsigned long personality) | ||
| 807 | { | ||
| 808 | int ret; | ||
| 809 | if (current->personality == PER_LINUX32 && personality == PER_LINUX) | ||
| 810 | personality = PER_LINUX32; | ||
| 811 | ret = sys_personality(personality); | ||
| 812 | if (ret == PER_LINUX32) | ||
| 813 | ret = PER_LINUX; | ||
| 814 | return ret; | ||
| 815 | } | ||
| 816 | |||
| 817 | |||
| 818 | |||
| 819 | /* Note: it is necessary to treat mode as an unsigned int, | 794 | /* Note: it is necessary to treat mode as an unsigned int, |
| 820 | * with the corresponding cast to a signed int to insure that the | 795 | * with the corresponding cast to a signed int to insure that the |
| 821 | * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode) | 796 | * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode) |
| @@ -1158,26 +1133,47 @@ asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args) | |||
| 1158 | } | 1133 | } |
| 1159 | #endif | 1134 | #endif |
| 1160 | 1135 | ||
| 1136 | asmlinkage int sys32_uname(struct old_utsname __user * name) | ||
| 1137 | { | ||
| 1138 | int err = 0; | ||
| 1139 | |||
| 1140 | down_read(&uts_sem); | ||
| 1141 | if (copy_to_user(name, &system_utsname, sizeof(*name))) | ||
| 1142 | err = -EFAULT; | ||
| 1143 | up_read(&uts_sem); | ||
| 1144 | if (!err && personality(current->personality) == PER_LINUX32) { | ||
| 1145 | /* change "ppc64" to "ppc" */ | ||
| 1146 | if (__put_user(0, name->machine + 3) | ||
| 1147 | || __put_user(0, name->machine + 4)) | ||
| 1148 | err = -EFAULT; | ||
| 1149 | } | ||
| 1150 | return err; | ||
| 1151 | } | ||
| 1152 | |||
| 1161 | asmlinkage int sys32_olduname(struct oldold_utsname __user * name) | 1153 | asmlinkage int sys32_olduname(struct oldold_utsname __user * name) |
| 1162 | { | 1154 | { |
| 1163 | int error; | 1155 | int error; |
| 1164 | 1156 | ||
| 1165 | if (!name) | ||
| 1166 | return -EFAULT; | ||
| 1167 | if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname))) | 1157 | if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname))) |
| 1168 | return -EFAULT; | 1158 | return -EFAULT; |
| 1169 | 1159 | ||
| 1170 | down_read(&uts_sem); | 1160 | down_read(&uts_sem); |
| 1171 | error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); | 1161 | error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN); |
| 1172 | error -= __put_user(0,name->sysname+__OLD_UTS_LEN); | 1162 | error |= __put_user(0,name->sysname+__OLD_UTS_LEN); |
| 1173 | error -= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); | 1163 | error |= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN); |
| 1174 | error -= __put_user(0,name->nodename+__OLD_UTS_LEN); | 1164 | error |= __put_user(0,name->nodename+__OLD_UTS_LEN); |
| 1175 | error -= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); | 1165 | error |= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN); |
| 1176 | error -= __put_user(0,name->release+__OLD_UTS_LEN); | 1166 | error |= __put_user(0,name->release+__OLD_UTS_LEN); |
| 1177 | error -= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); | 1167 | error |= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); |
| 1178 | error -= __put_user(0,name->version+__OLD_UTS_LEN); | 1168 | error |= __put_user(0,name->version+__OLD_UTS_LEN); |
| 1179 | error -= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); | 1169 | error |= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN); |
| 1180 | error = __put_user(0,name->machine+__OLD_UTS_LEN); | 1170 | error |= __put_user(0,name->machine+__OLD_UTS_LEN); |
| 1171 | if (personality(current->personality) == PER_LINUX32) { | ||
| 1172 | /* change "ppc64" to "ppc" */ | ||
| 1173 | error |= __put_user(0, name->machine + 3); | ||
| 1174 | error |= __put_user(0, name->machine + 4); | ||
| 1175 | } | ||
| 1176 | |||
| 1181 | up_read(&uts_sem); | 1177 | up_read(&uts_sem); |
| 1182 | 1178 | ||
| 1183 | error = error ? -EFAULT : 0; | 1179 | error = error ? -EFAULT : 0; |
diff --git a/arch/ppc64/kernel/syscalls.c b/arch/ppc64/kernel/syscalls.c index f2865ff8d2f9..a8cbb202b8cd 100644 --- a/arch/ppc64/kernel/syscalls.c +++ b/arch/ppc64/kernel/syscalls.c | |||
| @@ -199,24 +199,33 @@ out: | |||
| 199 | return ret; | 199 | return ret; |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | static int __init set_fakeppc(char *str) | 202 | long ppc64_personality(unsigned long personality) |
| 203 | { | 203 | { |
| 204 | if (*str) | 204 | long ret; |
| 205 | return 0; | 205 | |
| 206 | init_task.personality = PER_LINUX32; | 206 | if (personality(current->personality) == PER_LINUX32 |
| 207 | return 1; | 207 | && personality == PER_LINUX) |
| 208 | personality = PER_LINUX32; | ||
| 209 | ret = sys_personality(personality); | ||
| 210 | if (ret == PER_LINUX32) | ||
| 211 | ret = PER_LINUX; | ||
| 212 | return ret; | ||
| 208 | } | 213 | } |
| 209 | __setup("fakeppc", set_fakeppc); | ||
| 210 | 214 | ||
| 211 | asmlinkage int sys_uname(struct old_utsname __user * name) | 215 | long ppc64_newuname(struct new_utsname __user * name) |
| 212 | { | 216 | { |
| 213 | int err = -EFAULT; | 217 | int err = 0; |
| 214 | 218 | ||
| 215 | down_read(&uts_sem); | 219 | down_read(&uts_sem); |
| 216 | if (name && !copy_to_user(name, &system_utsname, sizeof (*name))) | 220 | if (copy_to_user(name, &system_utsname, sizeof(*name))) |
| 217 | err = 0; | 221 | err = -EFAULT; |
| 218 | up_read(&uts_sem); | 222 | up_read(&uts_sem); |
| 219 | 223 | if (!err && personality(current->personality) == PER_LINUX32) { | |
| 224 | /* change ppc64 to ppc */ | ||
| 225 | if (__put_user(0, name->machine + 3) | ||
| 226 | || __put_user(0, name->machine + 4)) | ||
| 227 | err = -EFAULT; | ||
| 228 | } | ||
| 220 | return err; | 229 | return err; |
| 221 | } | 230 | } |
| 222 | 231 | ||
diff --git a/arch/ppc64/kernel/sysfs.c b/arch/ppc64/kernel/sysfs.c index 0925694c3ce5..c8fa6569b2fd 100644 --- a/arch/ppc64/kernel/sysfs.c +++ b/arch/ppc64/kernel/sysfs.c | |||
| @@ -113,7 +113,6 @@ void ppc64_enable_pmcs(void) | |||
| 113 | #ifdef CONFIG_PPC_PSERIES | 113 | #ifdef CONFIG_PPC_PSERIES |
| 114 | unsigned long set, reset; | 114 | unsigned long set, reset; |
| 115 | int ret; | 115 | int ret; |
| 116 | unsigned int ctrl; | ||
| 117 | #endif /* CONFIG_PPC_PSERIES */ | 116 | #endif /* CONFIG_PPC_PSERIES */ |
| 118 | 117 | ||
| 119 | /* Only need to enable them once */ | 118 | /* Only need to enable them once */ |
| @@ -167,11 +166,8 @@ void ppc64_enable_pmcs(void) | |||
| 167 | * On SMT machines we have to set the run latch in the ctrl register | 166 | * On SMT machines we have to set the run latch in the ctrl register |
| 168 | * in order to make PMC6 spin. | 167 | * in order to make PMC6 spin. |
| 169 | */ | 168 | */ |
| 170 | if (cpu_has_feature(CPU_FTR_SMT)) { | 169 | if (cpu_has_feature(CPU_FTR_SMT)) |
| 171 | ctrl = mfspr(CTRLF); | 170 | ppc64_runlatch_on(); |
| 172 | ctrl |= RUNLATCH; | ||
| 173 | mtspr(CTRLT, ctrl); | ||
| 174 | } | ||
| 175 | #endif /* CONFIG_PPC_PSERIES */ | 171 | #endif /* CONFIG_PPC_PSERIES */ |
| 176 | } | 172 | } |
| 177 | 173 | ||
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index 01ae1964c938..c067435bae45 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | //#include <linux/kernel_stat.h> | 28 | //#include <linux/kernel_stat.h> |
| 29 | #include <linux/notifier.h> | 29 | #include <linux/notifier.h> |
| 30 | #include <linux/cpu.h> | 30 | #include <linux/cpu.h> |
| 31 | #include <linux/workqueue.h> | ||
| 31 | 32 | ||
| 32 | #include "appldata.h" | 33 | #include "appldata.h" |
| 33 | 34 | ||
| @@ -133,9 +134,12 @@ static int appldata_interval = APPLDATA_CPU_INTERVAL; | |||
| 133 | static int appldata_timer_active; | 134 | static int appldata_timer_active; |
| 134 | 135 | ||
| 135 | /* | 136 | /* |
| 136 | * Tasklet | 137 | * Work queue |
| 137 | */ | 138 | */ |
| 138 | static struct tasklet_struct appldata_tasklet_struct; | 139 | static struct workqueue_struct *appldata_wq; |
| 140 | static void appldata_work_fn(void *data); | ||
| 141 | static DECLARE_WORK(appldata_work, appldata_work_fn, NULL); | ||
| 142 | |||
| 139 | 143 | ||
| 140 | /* | 144 | /* |
| 141 | * Ops list | 145 | * Ops list |
| @@ -144,11 +148,11 @@ static DEFINE_SPINLOCK(appldata_ops_lock); | |||
| 144 | static LIST_HEAD(appldata_ops_list); | 148 | static LIST_HEAD(appldata_ops_list); |
| 145 | 149 | ||
| 146 | 150 | ||
| 147 | /************************* timer, tasklet, DIAG ******************************/ | 151 | /*************************** timer, work, DIAG *******************************/ |
| 148 | /* | 152 | /* |
| 149 | * appldata_timer_function() | 153 | * appldata_timer_function() |
| 150 | * | 154 | * |
| 151 | * schedule tasklet and reschedule timer | 155 | * schedule work and reschedule timer |
| 152 | */ | 156 | */ |
| 153 | static void appldata_timer_function(unsigned long data, struct pt_regs *regs) | 157 | static void appldata_timer_function(unsigned long data, struct pt_regs *regs) |
| 154 | { | 158 | { |
| @@ -157,22 +161,22 @@ static void appldata_timer_function(unsigned long data, struct pt_regs *regs) | |||
| 157 | atomic_read(&appldata_expire_count)); | 161 | atomic_read(&appldata_expire_count)); |
| 158 | if (atomic_dec_and_test(&appldata_expire_count)) { | 162 | if (atomic_dec_and_test(&appldata_expire_count)) { |
| 159 | atomic_set(&appldata_expire_count, num_online_cpus()); | 163 | atomic_set(&appldata_expire_count, num_online_cpus()); |
| 160 | tasklet_schedule((struct tasklet_struct *) data); | 164 | queue_work(appldata_wq, (struct work_struct *) data); |
| 161 | } | 165 | } |
| 162 | } | 166 | } |
| 163 | 167 | ||
| 164 | /* | 168 | /* |
| 165 | * appldata_tasklet_function() | 169 | * appldata_work_fn() |
| 166 | * | 170 | * |
| 167 | * call data gathering function for each (active) module | 171 | * call data gathering function for each (active) module |
| 168 | */ | 172 | */ |
| 169 | static void appldata_tasklet_function(unsigned long data) | 173 | static void appldata_work_fn(void *data) |
| 170 | { | 174 | { |
| 171 | struct list_head *lh; | 175 | struct list_head *lh; |
| 172 | struct appldata_ops *ops; | 176 | struct appldata_ops *ops; |
| 173 | int i; | 177 | int i; |
| 174 | 178 | ||
| 175 | P_DEBUG(" -= Tasklet =-\n"); | 179 | P_DEBUG(" -= Work Queue =-\n"); |
| 176 | i = 0; | 180 | i = 0; |
| 177 | spin_lock(&appldata_ops_lock); | 181 | spin_lock(&appldata_ops_lock); |
| 178 | list_for_each(lh, &appldata_ops_list) { | 182 | list_for_each(lh, &appldata_ops_list) { |
| @@ -231,7 +235,7 @@ static int appldata_diag(char record_nr, u16 function, unsigned long buffer, | |||
| 231 | : "=d" (ry) : "d" (&(appldata_parameter_list)) : "cc"); | 235 | : "=d" (ry) : "d" (&(appldata_parameter_list)) : "cc"); |
| 232 | return (int) ry; | 236 | return (int) ry; |
| 233 | } | 237 | } |
| 234 | /********************** timer, tasklet, DIAG <END> ***************************/ | 238 | /************************ timer, work, DIAG <END> ****************************/ |
| 235 | 239 | ||
| 236 | 240 | ||
| 237 | /****************************** /proc stuff **********************************/ | 241 | /****************************** /proc stuff **********************************/ |
| @@ -411,7 +415,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, | |||
| 411 | struct list_head *lh; | 415 | struct list_head *lh; |
| 412 | 416 | ||
| 413 | found = 0; | 417 | found = 0; |
| 414 | spin_lock_bh(&appldata_ops_lock); | 418 | spin_lock(&appldata_ops_lock); |
| 415 | list_for_each(lh, &appldata_ops_list) { | 419 | list_for_each(lh, &appldata_ops_list) { |
| 416 | tmp_ops = list_entry(lh, struct appldata_ops, list); | 420 | tmp_ops = list_entry(lh, struct appldata_ops, list); |
| 417 | if (&tmp_ops->ctl_table[2] == ctl) { | 421 | if (&tmp_ops->ctl_table[2] == ctl) { |
| @@ -419,15 +423,15 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, | |||
| 419 | } | 423 | } |
| 420 | } | 424 | } |
| 421 | if (!found) { | 425 | if (!found) { |
| 422 | spin_unlock_bh(&appldata_ops_lock); | 426 | spin_unlock(&appldata_ops_lock); |
| 423 | return -ENODEV; | 427 | return -ENODEV; |
| 424 | } | 428 | } |
| 425 | ops = ctl->data; | 429 | ops = ctl->data; |
| 426 | if (!try_module_get(ops->owner)) { // protect this function | 430 | if (!try_module_get(ops->owner)) { // protect this function |
| 427 | spin_unlock_bh(&appldata_ops_lock); | 431 | spin_unlock(&appldata_ops_lock); |
| 428 | return -ENODEV; | 432 | return -ENODEV; |
| 429 | } | 433 | } |
| 430 | spin_unlock_bh(&appldata_ops_lock); | 434 | spin_unlock(&appldata_ops_lock); |
| 431 | 435 | ||
| 432 | if (!*lenp || *ppos) { | 436 | if (!*lenp || *ppos) { |
| 433 | *lenp = 0; | 437 | *lenp = 0; |
| @@ -451,10 +455,11 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, | |||
| 451 | return -EFAULT; | 455 | return -EFAULT; |
| 452 | } | 456 | } |
| 453 | 457 | ||
| 454 | spin_lock_bh(&appldata_ops_lock); | 458 | spin_lock(&appldata_ops_lock); |
| 455 | if ((buf[0] == '1') && (ops->active == 0)) { | 459 | if ((buf[0] == '1') && (ops->active == 0)) { |
| 456 | if (!try_module_get(ops->owner)) { // protect tasklet | 460 | // protect work queue callback |
| 457 | spin_unlock_bh(&appldata_ops_lock); | 461 | if (!try_module_get(ops->owner)) { |
| 462 | spin_unlock(&appldata_ops_lock); | ||
| 458 | module_put(ops->owner); | 463 | module_put(ops->owner); |
| 459 | return -ENODEV; | 464 | return -ENODEV; |
| 460 | } | 465 | } |
| @@ -485,7 +490,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, | |||
| 485 | } | 490 | } |
| 486 | module_put(ops->owner); | 491 | module_put(ops->owner); |
| 487 | } | 492 | } |
| 488 | spin_unlock_bh(&appldata_ops_lock); | 493 | spin_unlock(&appldata_ops_lock); |
| 489 | out: | 494 | out: |
| 490 | *lenp = len; | 495 | *lenp = len; |
| 491 | *ppos += len; | 496 | *ppos += len; |
| @@ -529,7 +534,7 @@ int appldata_register_ops(struct appldata_ops *ops) | |||
| 529 | } | 534 | } |
| 530 | memset(ops->ctl_table, 0, 4*sizeof(struct ctl_table)); | 535 | memset(ops->ctl_table, 0, 4*sizeof(struct ctl_table)); |
| 531 | 536 | ||
| 532 | spin_lock_bh(&appldata_ops_lock); | 537 | spin_lock(&appldata_ops_lock); |
| 533 | list_for_each(lh, &appldata_ops_list) { | 538 | list_for_each(lh, &appldata_ops_list) { |
| 534 | tmp_ops = list_entry(lh, struct appldata_ops, list); | 539 | tmp_ops = list_entry(lh, struct appldata_ops, list); |
| 535 | P_DEBUG("register_ops loop: %i) name = %s, ctl = %i\n", | 540 | P_DEBUG("register_ops loop: %i) name = %s, ctl = %i\n", |
| @@ -541,18 +546,18 @@ int appldata_register_ops(struct appldata_ops *ops) | |||
| 541 | APPLDATA_PROC_NAME_LENGTH) == 0) { | 546 | APPLDATA_PROC_NAME_LENGTH) == 0) { |
| 542 | P_ERROR("Name \"%s\" already registered!\n", ops->name); | 547 | P_ERROR("Name \"%s\" already registered!\n", ops->name); |
| 543 | kfree(ops->ctl_table); | 548 | kfree(ops->ctl_table); |
| 544 | spin_unlock_bh(&appldata_ops_lock); | 549 | spin_unlock(&appldata_ops_lock); |
| 545 | return -EBUSY; | 550 | return -EBUSY; |
| 546 | } | 551 | } |
| 547 | if (tmp_ops->ctl_nr == ops->ctl_nr) { | 552 | if (tmp_ops->ctl_nr == ops->ctl_nr) { |
| 548 | P_ERROR("ctl_nr %i already registered!\n", ops->ctl_nr); | 553 | P_ERROR("ctl_nr %i already registered!\n", ops->ctl_nr); |
| 549 | kfree(ops->ctl_table); | 554 | kfree(ops->ctl_table); |
| 550 | spin_unlock_bh(&appldata_ops_lock); | 555 | spin_unlock(&appldata_ops_lock); |
| 551 | return -EBUSY; | 556 | return -EBUSY; |
| 552 | } | 557 | } |
| 553 | } | 558 | } |
| 554 | list_add(&ops->list, &appldata_ops_list); | 559 | list_add(&ops->list, &appldata_ops_list); |
| 555 | spin_unlock_bh(&appldata_ops_lock); | 560 | spin_unlock(&appldata_ops_lock); |
| 556 | 561 | ||
| 557 | ops->ctl_table[0].ctl_name = CTL_APPLDATA; | 562 | ops->ctl_table[0].ctl_name = CTL_APPLDATA; |
| 558 | ops->ctl_table[0].procname = appldata_proc_name; | 563 | ops->ctl_table[0].procname = appldata_proc_name; |
| @@ -583,12 +588,12 @@ int appldata_register_ops(struct appldata_ops *ops) | |||
| 583 | */ | 588 | */ |
| 584 | void appldata_unregister_ops(struct appldata_ops *ops) | 589 | void appldata_unregister_ops(struct appldata_ops *ops) |
| 585 | { | 590 | { |
| 586 | spin_lock_bh(&appldata_ops_lock); | 591 | spin_lock(&appldata_ops_lock); |
| 587 | unregister_sysctl_table(ops->sysctl_header); | 592 | unregister_sysctl_table(ops->sysctl_header); |
| 588 | list_del(&ops->list); | 593 | list_del(&ops->list); |
| 589 | kfree(ops->ctl_table); | 594 | kfree(ops->ctl_table); |
| 590 | ops->ctl_table = NULL; | 595 | ops->ctl_table = NULL; |
| 591 | spin_unlock_bh(&appldata_ops_lock); | 596 | spin_unlock(&appldata_ops_lock); |
| 592 | P_INFO("%s-ops unregistered!\n", ops->name); | 597 | P_INFO("%s-ops unregistered!\n", ops->name); |
| 593 | } | 598 | } |
| 594 | /********************** module-ops management <END> **************************/ | 599 | /********************** module-ops management <END> **************************/ |
| @@ -602,7 +607,7 @@ appldata_online_cpu(int cpu) | |||
| 602 | init_virt_timer(&per_cpu(appldata_timer, cpu)); | 607 | init_virt_timer(&per_cpu(appldata_timer, cpu)); |
| 603 | per_cpu(appldata_timer, cpu).function = appldata_timer_function; | 608 | per_cpu(appldata_timer, cpu).function = appldata_timer_function; |
| 604 | per_cpu(appldata_timer, cpu).data = (unsigned long) | 609 | per_cpu(appldata_timer, cpu).data = (unsigned long) |
| 605 | &appldata_tasklet_struct; | 610 | &appldata_work; |
| 606 | atomic_inc(&appldata_expire_count); | 611 | atomic_inc(&appldata_expire_count); |
| 607 | spin_lock(&appldata_timer_lock); | 612 | spin_lock(&appldata_timer_lock); |
| 608 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); | 613 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); |
| @@ -615,7 +620,7 @@ appldata_offline_cpu(int cpu) | |||
| 615 | del_virt_timer(&per_cpu(appldata_timer, cpu)); | 620 | del_virt_timer(&per_cpu(appldata_timer, cpu)); |
| 616 | if (atomic_dec_and_test(&appldata_expire_count)) { | 621 | if (atomic_dec_and_test(&appldata_expire_count)) { |
| 617 | atomic_set(&appldata_expire_count, num_online_cpus()); | 622 | atomic_set(&appldata_expire_count, num_online_cpus()); |
| 618 | tasklet_schedule(&appldata_tasklet_struct); | 623 | queue_work(appldata_wq, &appldata_work); |
| 619 | } | 624 | } |
| 620 | spin_lock(&appldata_timer_lock); | 625 | spin_lock(&appldata_timer_lock); |
| 621 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); | 626 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); |
| @@ -648,7 +653,7 @@ static struct notifier_block __devinitdata appldata_nb = { | |||
| 648 | /* | 653 | /* |
| 649 | * appldata_init() | 654 | * appldata_init() |
| 650 | * | 655 | * |
| 651 | * init timer and tasklet, register /proc entries | 656 | * init timer, register /proc entries |
| 652 | */ | 657 | */ |
| 653 | static int __init appldata_init(void) | 658 | static int __init appldata_init(void) |
| 654 | { | 659 | { |
| @@ -657,6 +662,12 @@ static int __init appldata_init(void) | |||
| 657 | P_DEBUG("sizeof(parameter_list) = %lu\n", | 662 | P_DEBUG("sizeof(parameter_list) = %lu\n", |
| 658 | sizeof(struct appldata_parameter_list)); | 663 | sizeof(struct appldata_parameter_list)); |
| 659 | 664 | ||
| 665 | appldata_wq = create_singlethread_workqueue("appldata"); | ||
| 666 | if (!appldata_wq) { | ||
| 667 | P_ERROR("Could not create work queue\n"); | ||
| 668 | return -ENOMEM; | ||
| 669 | } | ||
| 670 | |||
| 660 | for_each_online_cpu(i) | 671 | for_each_online_cpu(i) |
| 661 | appldata_online_cpu(i); | 672 | appldata_online_cpu(i); |
| 662 | 673 | ||
| @@ -670,7 +681,6 @@ static int __init appldata_init(void) | |||
| 670 | appldata_table[1].de->owner = THIS_MODULE; | 681 | appldata_table[1].de->owner = THIS_MODULE; |
| 671 | #endif | 682 | #endif |
| 672 | 683 | ||
| 673 | tasklet_init(&appldata_tasklet_struct, appldata_tasklet_function, 0); | ||
| 674 | P_DEBUG("Base interface initialized.\n"); | 684 | P_DEBUG("Base interface initialized.\n"); |
| 675 | return 0; | 685 | return 0; |
| 676 | } | 686 | } |
| @@ -678,7 +688,7 @@ static int __init appldata_init(void) | |||
| 678 | /* | 688 | /* |
| 679 | * appldata_exit() | 689 | * appldata_exit() |
| 680 | * | 690 | * |
| 681 | * stop timer and tasklet, unregister /proc entries | 691 | * stop timer, unregister /proc entries |
| 682 | */ | 692 | */ |
| 683 | static void __exit appldata_exit(void) | 693 | static void __exit appldata_exit(void) |
| 684 | { | 694 | { |
| @@ -690,7 +700,7 @@ static void __exit appldata_exit(void) | |||
| 690 | /* | 700 | /* |
| 691 | * ops list should be empty, but just in case something went wrong... | 701 | * ops list should be empty, but just in case something went wrong... |
| 692 | */ | 702 | */ |
| 693 | spin_lock_bh(&appldata_ops_lock); | 703 | spin_lock(&appldata_ops_lock); |
| 694 | list_for_each(lh, &appldata_ops_list) { | 704 | list_for_each(lh, &appldata_ops_list) { |
| 695 | ops = list_entry(lh, struct appldata_ops, list); | 705 | ops = list_entry(lh, struct appldata_ops, list); |
| 696 | rc = appldata_diag(ops->record_nr, APPLDATA_STOP_REC, | 706 | rc = appldata_diag(ops->record_nr, APPLDATA_STOP_REC, |
| @@ -700,7 +710,7 @@ static void __exit appldata_exit(void) | |||
| 700 | "return code: %d\n", ops->name, rc); | 710 | "return code: %d\n", ops->name, rc); |
| 701 | } | 711 | } |
| 702 | } | 712 | } |
| 703 | spin_unlock_bh(&appldata_ops_lock); | 713 | spin_unlock(&appldata_ops_lock); |
| 704 | 714 | ||
| 705 | for_each_online_cpu(i) | 715 | for_each_online_cpu(i) |
| 706 | appldata_offline_cpu(i); | 716 | appldata_offline_cpu(i); |
| @@ -709,7 +719,7 @@ static void __exit appldata_exit(void) | |||
| 709 | 719 | ||
| 710 | unregister_sysctl_table(appldata_sysctl_header); | 720 | unregister_sysctl_table(appldata_sysctl_header); |
| 711 | 721 | ||
| 712 | tasklet_kill(&appldata_tasklet_struct); | 722 | destroy_workqueue(appldata_wq); |
| 713 | P_DEBUG("... module unloaded!\n"); | 723 | P_DEBUG("... module unloaded!\n"); |
| 714 | } | 724 | } |
| 715 | /**************************** init / exit <END> ******************************/ | 725 | /**************************** init / exit <END> ******************************/ |
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c index 462ee9a84e76..f0e2fbed3d4c 100644 --- a/arch/s390/appldata/appldata_mem.c +++ b/arch/s390/appldata/appldata_mem.c | |||
| @@ -68,7 +68,7 @@ struct appldata_mem_data { | |||
| 68 | u64 pgmajfault; /* page faults (major only) */ | 68 | u64 pgmajfault; /* page faults (major only) */ |
| 69 | // <-- New in 2.6 | 69 | // <-- New in 2.6 |
| 70 | 70 | ||
| 71 | } appldata_mem_data; | 71 | } __attribute__((packed)) appldata_mem_data; |
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | static inline void appldata_debug_print(struct appldata_mem_data *mem_data) | 74 | static inline void appldata_debug_print(struct appldata_mem_data *mem_data) |
diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c index dd61638d3027..2a4c7432db4a 100644 --- a/arch/s390/appldata/appldata_net_sum.c +++ b/arch/s390/appldata/appldata_net_sum.c | |||
| @@ -57,7 +57,7 @@ struct appldata_net_sum_data { | |||
| 57 | u64 rx_dropped; /* no space in linux buffers */ | 57 | u64 rx_dropped; /* no space in linux buffers */ |
| 58 | u64 tx_dropped; /* no space available in linux */ | 58 | u64 tx_dropped; /* no space available in linux */ |
| 59 | u64 collisions; /* collisions while transmitting */ | 59 | u64 collisions; /* collisions while transmitting */ |
| 60 | } appldata_net_sum_data; | 60 | } __attribute__((packed)) appldata_net_sum_data; |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | static inline void appldata_print_debug(struct appldata_net_sum_data *net_data) | 63 | static inline void appldata_print_debug(struct appldata_net_sum_data *net_data) |
diff --git a/arch/s390/appldata/appldata_os.c b/arch/s390/appldata/appldata_os.c index b83f07484551..e0a476bf4fd6 100644 --- a/arch/s390/appldata/appldata_os.c +++ b/arch/s390/appldata/appldata_os.c | |||
| @@ -49,7 +49,7 @@ struct appldata_os_per_cpu { | |||
| 49 | u32 per_cpu_softirq; /* ... spent in softirqs */ | 49 | u32 per_cpu_softirq; /* ... spent in softirqs */ |
| 50 | u32 per_cpu_iowait; /* ... spent while waiting for I/O */ | 50 | u32 per_cpu_iowait; /* ... spent while waiting for I/O */ |
| 51 | // <-- New in 2.6 | 51 | // <-- New in 2.6 |
| 52 | }; | 52 | } __attribute__((packed)); |
| 53 | 53 | ||
| 54 | struct appldata_os_data { | 54 | struct appldata_os_data { |
| 55 | u64 timestamp; | 55 | u64 timestamp; |
| @@ -75,7 +75,7 @@ struct appldata_os_data { | |||
| 75 | 75 | ||
| 76 | /* per cpu data */ | 76 | /* per cpu data */ |
| 77 | struct appldata_os_per_cpu os_cpu[0]; | 77 | struct appldata_os_per_cpu os_cpu[0]; |
| 78 | }; | 78 | } __attribute__((packed)); |
| 79 | 79 | ||
| 80 | static struct appldata_os_data *appldata_os_data; | 80 | static struct appldata_os_data *appldata_os_data; |
| 81 | 81 | ||
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 26889366929a..06afa3103ace 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
| @@ -40,6 +40,7 @@ | |||
| 40 | #include <asm/pgalloc.h> | 40 | #include <asm/pgalloc.h> |
| 41 | #include <asm/system.h> | 41 | #include <asm/system.h> |
| 42 | #include <asm/uaccess.h> | 42 | #include <asm/uaccess.h> |
| 43 | #include <asm/unistd.h> | ||
| 43 | 44 | ||
| 44 | #ifdef CONFIG_S390_SUPPORT | 45 | #ifdef CONFIG_S390_SUPPORT |
| 45 | #include "compat_ptrace.h" | 46 | #include "compat_ptrace.h" |
| @@ -130,13 +131,19 @@ static int | |||
| 130 | peek_user(struct task_struct *child, addr_t addr, addr_t data) | 131 | peek_user(struct task_struct *child, addr_t addr, addr_t data) |
| 131 | { | 132 | { |
| 132 | struct user *dummy = NULL; | 133 | struct user *dummy = NULL; |
| 133 | addr_t offset, tmp; | 134 | addr_t offset, tmp, mask; |
| 134 | 135 | ||
| 135 | /* | 136 | /* |
| 136 | * Stupid gdb peeks/pokes the access registers in 64 bit with | 137 | * Stupid gdb peeks/pokes the access registers in 64 bit with |
| 137 | * an alignment of 4. Programmers from hell... | 138 | * an alignment of 4. Programmers from hell... |
| 138 | */ | 139 | */ |
| 139 | if ((addr & 3) || addr > sizeof(struct user) - __ADDR_MASK) | 140 | mask = __ADDR_MASK; |
| 141 | #ifdef CONFIG_ARCH_S390X | ||
| 142 | if (addr >= (addr_t) &dummy->regs.acrs && | ||
| 143 | addr < (addr_t) &dummy->regs.orig_gpr2) | ||
| 144 | mask = 3; | ||
| 145 | #endif | ||
| 146 | if ((addr & mask) || addr > sizeof(struct user) - __ADDR_MASK) | ||
| 140 | return -EIO; | 147 | return -EIO; |
| 141 | 148 | ||
| 142 | if (addr < (addr_t) &dummy->regs.acrs) { | 149 | if (addr < (addr_t) &dummy->regs.acrs) { |
| @@ -153,6 +160,16 @@ peek_user(struct task_struct *child, addr_t addr, addr_t data) | |||
| 153 | * access registers are stored in the thread structure | 160 | * access registers are stored in the thread structure |
| 154 | */ | 161 | */ |
| 155 | offset = addr - (addr_t) &dummy->regs.acrs; | 162 | offset = addr - (addr_t) &dummy->regs.acrs; |
| 163 | #ifdef CONFIG_ARCH_S390X | ||
| 164 | /* | ||
| 165 | * Very special case: old & broken 64 bit gdb reading | ||
| 166 | * from acrs[15]. Result is a 64 bit value. Read the | ||
| 167 | * 32 bit acrs[15] value and shift it by 32. Sick... | ||
| 168 | */ | ||
| 169 | if (addr == (addr_t) &dummy->regs.acrs[15]) | ||
| 170 | tmp = ((unsigned long) child->thread.acrs[15]) << 32; | ||
| 171 | else | ||
| 172 | #endif | ||
| 156 | tmp = *(addr_t *)((addr_t) &child->thread.acrs + offset); | 173 | tmp = *(addr_t *)((addr_t) &child->thread.acrs + offset); |
| 157 | 174 | ||
| 158 | } else if (addr == (addr_t) &dummy->regs.orig_gpr2) { | 175 | } else if (addr == (addr_t) &dummy->regs.orig_gpr2) { |
| @@ -167,6 +184,9 @@ peek_user(struct task_struct *child, addr_t addr, addr_t data) | |||
| 167 | */ | 184 | */ |
| 168 | offset = addr - (addr_t) &dummy->regs.fp_regs; | 185 | offset = addr - (addr_t) &dummy->regs.fp_regs; |
| 169 | tmp = *(addr_t *)((addr_t) &child->thread.fp_regs + offset); | 186 | tmp = *(addr_t *)((addr_t) &child->thread.fp_regs + offset); |
| 187 | if (addr == (addr_t) &dummy->regs.fp_regs.fpc) | ||
| 188 | tmp &= (unsigned long) FPC_VALID_MASK | ||
| 189 | << (BITS_PER_LONG - 32); | ||
| 170 | 190 | ||
| 171 | } else if (addr < (addr_t) (&dummy->regs.per_info + 1)) { | 191 | } else if (addr < (addr_t) (&dummy->regs.per_info + 1)) { |
| 172 | /* | 192 | /* |
| @@ -191,13 +211,19 @@ static int | |||
| 191 | poke_user(struct task_struct *child, addr_t addr, addr_t data) | 211 | poke_user(struct task_struct *child, addr_t addr, addr_t data) |
| 192 | { | 212 | { |
| 193 | struct user *dummy = NULL; | 213 | struct user *dummy = NULL; |
| 194 | addr_t offset; | 214 | addr_t offset, mask; |
| 195 | 215 | ||
| 196 | /* | 216 | /* |
| 197 | * Stupid gdb peeks/pokes the access registers in 64 bit with | 217 | * Stupid gdb peeks/pokes the access registers in 64 bit with |
| 198 | * an alignment of 4. Programmers from hell indeed... | 218 | * an alignment of 4. Programmers from hell indeed... |
| 199 | */ | 219 | */ |
| 200 | if ((addr & 3) || addr > sizeof(struct user) - __ADDR_MASK) | 220 | mask = __ADDR_MASK; |
| 221 | #ifdef CONFIG_ARCH_S390X | ||
| 222 | if (addr >= (addr_t) &dummy->regs.acrs && | ||
| 223 | addr < (addr_t) &dummy->regs.orig_gpr2) | ||
| 224 | mask = 3; | ||
| 225 | #endif | ||
| 226 | if ((addr & mask) || addr > sizeof(struct user) - __ADDR_MASK) | ||
| 201 | return -EIO; | 227 | return -EIO; |
| 202 | 228 | ||
| 203 | if (addr < (addr_t) &dummy->regs.acrs) { | 229 | if (addr < (addr_t) &dummy->regs.acrs) { |
| @@ -224,6 +250,17 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data) | |||
| 224 | * access registers are stored in the thread structure | 250 | * access registers are stored in the thread structure |
| 225 | */ | 251 | */ |
| 226 | offset = addr - (addr_t) &dummy->regs.acrs; | 252 | offset = addr - (addr_t) &dummy->regs.acrs; |
| 253 | #ifdef CONFIG_ARCH_S390X | ||
| 254 | /* | ||
| 255 | * Very special case: old & broken 64 bit gdb writing | ||
| 256 | * to acrs[15] with a 64 bit value. Ignore the lower | ||
| 257 | * half of the value and write the upper 32 bit to | ||
| 258 | * acrs[15]. Sick... | ||
| 259 | */ | ||
| 260 | if (addr == (addr_t) &dummy->regs.acrs[15]) | ||
| 261 | child->thread.acrs[15] = (unsigned int) (data >> 32); | ||
| 262 | else | ||
| 263 | #endif | ||
| 227 | *(addr_t *)((addr_t) &child->thread.acrs + offset) = data; | 264 | *(addr_t *)((addr_t) &child->thread.acrs + offset) = data; |
| 228 | 265 | ||
| 229 | } else if (addr == (addr_t) &dummy->regs.orig_gpr2) { | 266 | } else if (addr == (addr_t) &dummy->regs.orig_gpr2) { |
| @@ -237,7 +274,8 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data) | |||
| 237 | * floating point regs. are stored in the thread structure | 274 | * floating point regs. are stored in the thread structure |
| 238 | */ | 275 | */ |
| 239 | if (addr == (addr_t) &dummy->regs.fp_regs.fpc && | 276 | if (addr == (addr_t) &dummy->regs.fp_regs.fpc && |
| 240 | (data & ~FPC_VALID_MASK) != 0) | 277 | (data & ~((unsigned long) FPC_VALID_MASK |
| 278 | << (BITS_PER_LONG - 32))) != 0) | ||
| 241 | return -EINVAL; | 279 | return -EINVAL; |
| 242 | offset = addr - (addr_t) &dummy->regs.fp_regs; | 280 | offset = addr - (addr_t) &dummy->regs.fp_regs; |
| 243 | *(addr_t *)((addr_t) &child->thread.fp_regs + offset) = data; | 281 | *(addr_t *)((addr_t) &child->thread.fp_regs + offset) = data; |
| @@ -723,6 +761,13 @@ syscall_trace(struct pt_regs *regs, int entryexit) | |||
| 723 | ? 0x80 : 0)); | 761 | ? 0x80 : 0)); |
| 724 | 762 | ||
| 725 | /* | 763 | /* |
| 764 | * If the debuffer has set an invalid system call number, | ||
| 765 | * we prepare to skip the system call restart handling. | ||
| 766 | */ | ||
| 767 | if (!entryexit && regs->gprs[2] >= NR_syscalls) | ||
| 768 | regs->trap = -1; | ||
| 769 | |||
| 770 | /* | ||
| 726 | * this isn't the same as continuing with a signal, but it will do | 771 | * this isn't the same as continuing with a signal, but it will do |
| 727 | * for normal use. strace only continues with a signal if the | 772 | * for normal use. strace only continues with a signal if the |
| 728 | * stopping signal is not SIGTRAP. -brl | 773 | * stopping signal is not SIGTRAP. -brl |
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 80306bc8c799..75fde949d125 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
| @@ -207,7 +207,7 @@ do_exception(struct pt_regs *regs, unsigned long error_code, int is_protection) | |||
| 207 | * we are not in an interrupt and that there is a | 207 | * we are not in an interrupt and that there is a |
| 208 | * user context. | 208 | * user context. |
| 209 | */ | 209 | */ |
| 210 | if (user_address == 0 || in_interrupt() || !mm) | 210 | if (user_address == 0 || in_atomic() || !mm) |
| 211 | goto no_context; | 211 | goto no_context; |
| 212 | 212 | ||
| 213 | /* | 213 | /* |
diff --git a/arch/um/Kconfig_char b/arch/um/Kconfig_char index 3e50fdb67626..62d87b71179b 100644 --- a/arch/um/Kconfig_char +++ b/arch/um/Kconfig_char | |||
| @@ -204,5 +204,11 @@ config UML_RANDOM | |||
| 204 | http://sourceforge.net/projects/gkernel/). rngd periodically reads | 204 | http://sourceforge.net/projects/gkernel/). rngd periodically reads |
| 205 | /dev/hwrng and injects the entropy into /dev/random. | 205 | /dev/hwrng and injects the entropy into /dev/random. |
| 206 | 206 | ||
| 207 | config MMAPPER | ||
| 208 | tristate "iomem emulation driver" | ||
| 209 | help | ||
| 210 | This driver allows a host file to be used as emulated IO memory inside | ||
| 211 | UML. | ||
| 212 | |||
| 207 | endmenu | 213 | endmenu |
| 208 | 214 | ||
diff --git a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile index 323f72c64cd2..b2de9916c32c 100644 --- a/arch/um/drivers/Makefile +++ b/arch/um/drivers/Makefile | |||
| @@ -22,8 +22,8 @@ obj-y := stdio_console.o fd.o chan_kern.o chan_user.o line.o | |||
| 22 | obj-$(CONFIG_SSL) += ssl.o | 22 | obj-$(CONFIG_SSL) += ssl.o |
| 23 | obj-$(CONFIG_STDERR_CONSOLE) += stderr_console.o | 23 | obj-$(CONFIG_STDERR_CONSOLE) += stderr_console.o |
| 24 | 24 | ||
| 25 | obj-$(CONFIG_UML_NET_SLIP) += slip.o | 25 | obj-$(CONFIG_UML_NET_SLIP) += slip.o slip_common.o |
| 26 | obj-$(CONFIG_UML_NET_SLIRP) += slirp.o | 26 | obj-$(CONFIG_UML_NET_SLIRP) += slirp.o slip_common.o |
| 27 | obj-$(CONFIG_UML_NET_DAEMON) += daemon.o | 27 | obj-$(CONFIG_UML_NET_DAEMON) += daemon.o |
| 28 | obj-$(CONFIG_UML_NET_MCAST) += mcast.o | 28 | obj-$(CONFIG_UML_NET_MCAST) += mcast.o |
| 29 | #obj-$(CONFIG_UML_NET_PCAP) += pcap.o $(PCAP) | 29 | #obj-$(CONFIG_UML_NET_PCAP) += pcap.o $(PCAP) |
| @@ -41,6 +41,6 @@ obj-$(CONFIG_UML_WATCHDOG) += harddog.o | |||
| 41 | obj-$(CONFIG_BLK_DEV_COW_COMMON) += cow_user.o | 41 | obj-$(CONFIG_BLK_DEV_COW_COMMON) += cow_user.o |
| 42 | obj-$(CONFIG_UML_RANDOM) += random.o | 42 | obj-$(CONFIG_UML_RANDOM) += random.o |
| 43 | 43 | ||
| 44 | USER_OBJS := fd.o null.o pty.o tty.o xterm.o | 44 | USER_OBJS := fd.o null.o pty.o tty.o xterm.o slip_common.o |
| 45 | 45 | ||
| 46 | include arch/um/scripts/Makefile.rules | 46 | include arch/um/scripts/Makefile.rules |
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c index 583b8e137c33..5d3768156c92 100644 --- a/arch/um/drivers/chan_user.c +++ b/arch/um/drivers/chan_user.c | |||
| @@ -143,22 +143,22 @@ static int winch_tramp(int fd, struct tty_struct *tty, int *fd_out) | |||
| 143 | { | 143 | { |
| 144 | struct winch_data data; | 144 | struct winch_data data; |
| 145 | unsigned long stack; | 145 | unsigned long stack; |
| 146 | int fds[2], pid, n, err; | 146 | int fds[2], n, err; |
| 147 | char c; | 147 | char c; |
| 148 | 148 | ||
| 149 | err = os_pipe(fds, 1, 1); | 149 | err = os_pipe(fds, 1, 1); |
| 150 | if(err < 0){ | 150 | if(err < 0){ |
| 151 | printk("winch_tramp : os_pipe failed, err = %d\n", -err); | 151 | printk("winch_tramp : os_pipe failed, err = %d\n", -err); |
| 152 | return(err); | 152 | goto out; |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | data = ((struct winch_data) { .pty_fd = fd, | 155 | data = ((struct winch_data) { .pty_fd = fd, |
| 156 | .pipe_fd = fds[1], | 156 | .pipe_fd = fds[1], |
| 157 | .close_me = fds[0] } ); | 157 | .close_me = fds[0] } ); |
| 158 | pid = run_helper_thread(winch_thread, &data, 0, &stack, 0); | 158 | err = run_helper_thread(winch_thread, &data, 0, &stack, 0); |
| 159 | if(pid < 0){ | 159 | if(err < 0){ |
| 160 | printk("fork of winch_thread failed - errno = %d\n", errno); | 160 | printk("fork of winch_thread failed - errno = %d\n", errno); |
| 161 | return(pid); | 161 | goto out_close; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | os_close_file(fds[1]); | 164 | os_close_file(fds[1]); |
| @@ -168,14 +168,22 @@ static int winch_tramp(int fd, struct tty_struct *tty, int *fd_out) | |||
| 168 | printk("winch_tramp : failed to read synchronization byte\n"); | 168 | printk("winch_tramp : failed to read synchronization byte\n"); |
| 169 | printk("read failed, err = %d\n", -n); | 169 | printk("read failed, err = %d\n", -n); |
| 170 | printk("fd %d will not support SIGWINCH\n", fd); | 170 | printk("fd %d will not support SIGWINCH\n", fd); |
| 171 | *fd_out = -1; | 171 | err = -EINVAL; |
| 172 | goto out_close1; | ||
| 172 | } | 173 | } |
| 173 | return(pid); | 174 | return err ; |
| 175 | |||
| 176 | out_close: | ||
| 177 | os_close_file(fds[1]); | ||
| 178 | out_close1: | ||
| 179 | os_close_file(fds[0]); | ||
| 180 | out: | ||
| 181 | return err; | ||
| 174 | } | 182 | } |
| 175 | 183 | ||
| 176 | void register_winch(int fd, struct tty_struct *tty) | 184 | void register_winch(int fd, struct tty_struct *tty) |
| 177 | { | 185 | { |
| 178 | int pid, thread, thread_fd; | 186 | int pid, thread, thread_fd = -1; |
| 179 | int count; | 187 | int count; |
| 180 | char c = 1; | 188 | char c = 1; |
| 181 | 189 | ||
| @@ -186,7 +194,7 @@ void register_winch(int fd, struct tty_struct *tty) | |||
| 186 | if(!CHOOSE_MODE_PROC(is_tracer_winch, is_skas_winch, pid, fd, | 194 | if(!CHOOSE_MODE_PROC(is_tracer_winch, is_skas_winch, pid, fd, |
| 187 | tty) && (pid == -1)){ | 195 | tty) && (pid == -1)){ |
| 188 | thread = winch_tramp(fd, tty, &thread_fd); | 196 | thread = winch_tramp(fd, tty, &thread_fd); |
| 189 | if(fd != -1){ | 197 | if(thread > 0){ |
| 190 | register_winch_irq(thread_fd, fd, thread, tty); | 198 | register_winch_irq(thread_fd, fd, thread, tty); |
| 191 | 199 | ||
| 192 | count = os_write_file(thread_fd, &c, sizeof(c)); | 200 | count = os_write_file(thread_fd, &c, sizeof(c)); |
diff --git a/arch/um/drivers/mmapper_kern.c b/arch/um/drivers/mmapper_kern.c index a63231dffe05..a37a5ac13c22 100644 --- a/arch/um/drivers/mmapper_kern.c +++ b/arch/um/drivers/mmapper_kern.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
| 19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
| 20 | #include <linux/smp_lock.h> | 20 | #include <linux/smp_lock.h> |
| 21 | #include <linux/miscdevice.h> | ||
| 21 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
| 22 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
| 23 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
| @@ -117,24 +118,39 @@ static struct file_operations mmapper_fops = { | |||
| 117 | .release = mmapper_release, | 118 | .release = mmapper_release, |
| 118 | }; | 119 | }; |
| 119 | 120 | ||
| 121 | static struct miscdevice mmapper_dev = { | ||
| 122 | .minor = MISC_DYNAMIC_MINOR, | ||
| 123 | .name = "mmapper", | ||
| 124 | .fops = &mmapper_fops | ||
| 125 | }; | ||
| 126 | |||
| 120 | static int __init mmapper_init(void) | 127 | static int __init mmapper_init(void) |
| 121 | { | 128 | { |
| 129 | int err; | ||
| 130 | |||
| 122 | printk(KERN_INFO "Mapper v0.1\n"); | 131 | printk(KERN_INFO "Mapper v0.1\n"); |
| 123 | 132 | ||
| 124 | v_buf = (char *) find_iomem("mmapper", &mmapper_size); | 133 | v_buf = (char *) find_iomem("mmapper", &mmapper_size); |
| 125 | if(mmapper_size == 0){ | 134 | if(mmapper_size == 0){ |
| 126 | printk(KERN_ERR "mmapper_init - find_iomem failed\n"); | 135 | printk(KERN_ERR "mmapper_init - find_iomem failed\n"); |
| 127 | return(0); | 136 | goto out; |
| 128 | } | 137 | } |
| 129 | 138 | ||
| 130 | p_buf = __pa(v_buf); | 139 | err = misc_register(&mmapper_dev); |
| 140 | if(err){ | ||
| 141 | printk(KERN_ERR "mmapper - misc_register failed, err = %d\n", | ||
| 142 | err); | ||
| 143 | goto out; | ||
| 144 | } | ||
| 131 | 145 | ||
| 132 | devfs_mk_cdev(MKDEV(30, 0), S_IFCHR|S_IRUGO|S_IWUGO, "mmapper"); | 146 | p_buf = __pa(v_buf); |
| 133 | return(0); | 147 | out: |
| 148 | return 0; | ||
| 134 | } | 149 | } |
| 135 | 150 | ||
| 136 | static void mmapper_exit(void) | 151 | static void mmapper_exit(void) |
| 137 | { | 152 | { |
| 153 | misc_deregister(&mmapper_dev); | ||
| 138 | } | 154 | } |
| 139 | 155 | ||
| 140 | module_init(mmapper_init); | 156 | module_init(mmapper_init); |
diff --git a/arch/um/drivers/net_user.c b/arch/um/drivers/net_user.c index 47229fe4a813..3730d4f12713 100644 --- a/arch/um/drivers/net_user.c +++ b/arch/um/drivers/net_user.c | |||
| @@ -32,7 +32,7 @@ int tap_open_common(void *dev, char *gate_addr) | |||
| 32 | return(0); | 32 | return(0); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | void tap_check_ips(char *gate_addr, char *eth_addr) | 35 | void tap_check_ips(char *gate_addr, unsigned char *eth_addr) |
| 36 | { | 36 | { |
| 37 | int tap_addr[4]; | 37 | int tap_addr[4]; |
| 38 | 38 | ||
diff --git a/arch/um/drivers/slip.h b/arch/um/drivers/slip.h index 495f2f1b1420..bb0dab41c2e4 100644 --- a/arch/um/drivers/slip.h +++ b/arch/um/drivers/slip.h | |||
| @@ -1,10 +1,7 @@ | |||
| 1 | #ifndef __UM_SLIP_H | 1 | #ifndef __UM_SLIP_H |
| 2 | #define __UM_SLIP_H | 2 | #define __UM_SLIP_H |
| 3 | 3 | ||
| 4 | #define BUF_SIZE 1500 | 4 | #include "slip_common.h" |
| 5 | /* two bytes each for a (pathological) max packet of escaped chars + * | ||
| 6 | * terminating END char + initial END char */ | ||
| 7 | #define ENC_BUF_SIZE (2 * BUF_SIZE + 2) | ||
| 8 | 5 | ||
| 9 | struct slip_data { | 6 | struct slip_data { |
| 10 | void *dev; | 7 | void *dev; |
| @@ -12,28 +9,12 @@ struct slip_data { | |||
| 12 | char *addr; | 9 | char *addr; |
| 13 | char *gate_addr; | 10 | char *gate_addr; |
| 14 | int slave; | 11 | int slave; |
| 15 | char ibuf[ENC_BUF_SIZE]; | 12 | struct slip_proto slip; |
| 16 | char obuf[ENC_BUF_SIZE]; | ||
| 17 | int more; /* more data: do not read fd until ibuf has been drained */ | ||
| 18 | int pos; | ||
| 19 | int esc; | ||
| 20 | }; | 13 | }; |
| 21 | 14 | ||
| 22 | extern struct net_user_info slip_user_info; | 15 | extern struct net_user_info slip_user_info; |
| 23 | 16 | ||
| 24 | extern int set_umn_addr(int fd, char *addr, char *ptp_addr); | ||
| 25 | extern int slip_user_read(int fd, void *buf, int len, struct slip_data *pri); | 17 | extern int slip_user_read(int fd, void *buf, int len, struct slip_data *pri); |
| 26 | extern int slip_user_write(int fd, void *buf, int len, struct slip_data *pri); | 18 | extern int slip_user_write(int fd, void *buf, int len, struct slip_data *pri); |
| 27 | 19 | ||
| 28 | #endif | 20 | #endif |
| 29 | |||
| 30 | /* | ||
| 31 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 32 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 33 | * adjust the settings for this buffer only. This must remain at the end | ||
| 34 | * of the file. | ||
| 35 | * --------------------------------------------------------------------------- | ||
| 36 | * Local variables: | ||
| 37 | * c-file-style: "linux" | ||
| 38 | * End: | ||
| 39 | */ | ||
diff --git a/arch/um/drivers/slip_common.c b/arch/um/drivers/slip_common.c new file mode 100644 index 000000000000..e89cfc68fc3e --- /dev/null +++ b/arch/um/drivers/slip_common.c | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | #include <string.h> | ||
| 2 | #include "slip_common.h" | ||
| 3 | #include "net_user.h" | ||
| 4 | |||
| 5 | int slip_proto_read(int fd, void *buf, int len, struct slip_proto *slip) | ||
| 6 | { | ||
| 7 | int i, n, size, start; | ||
| 8 | |||
| 9 | if(slip->more > 0){ | ||
| 10 | i = 0; | ||
| 11 | while(i < slip->more){ | ||
| 12 | size = slip_unesc(slip->ibuf[i++], slip->ibuf, | ||
| 13 | &slip->pos, &slip->esc); | ||
| 14 | if(size){ | ||
| 15 | memcpy(buf, slip->ibuf, size); | ||
| 16 | memmove(slip->ibuf, &slip->ibuf[i], | ||
| 17 | slip->more - i); | ||
| 18 | slip->more = slip->more - i; | ||
| 19 | return size; | ||
| 20 | } | ||
| 21 | } | ||
| 22 | slip->more = 0; | ||
| 23 | } | ||
| 24 | |||
| 25 | n = net_read(fd, &slip->ibuf[slip->pos], | ||
| 26 | sizeof(slip->ibuf) - slip->pos); | ||
| 27 | if(n <= 0) | ||
| 28 | return n; | ||
| 29 | |||
| 30 | start = slip->pos; | ||
| 31 | for(i = 0; i < n; i++){ | ||
| 32 | size = slip_unesc(slip->ibuf[start + i], slip->ibuf,&slip->pos, | ||
| 33 | &slip->esc); | ||
| 34 | if(size){ | ||
| 35 | memcpy(buf, slip->ibuf, size); | ||
| 36 | memmove(slip->ibuf, &slip->ibuf[start+i+1], | ||
| 37 | n - (i + 1)); | ||
| 38 | slip->more = n - (i + 1); | ||
| 39 | return size; | ||
| 40 | } | ||
| 41 | } | ||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | |||
| 45 | int slip_proto_write(int fd, void *buf, int len, struct slip_proto *slip) | ||
| 46 | { | ||
| 47 | int actual, n; | ||
| 48 | |||
| 49 | actual = slip_esc(buf, slip->obuf, len); | ||
| 50 | n = net_write(fd, slip->obuf, actual); | ||
| 51 | if(n < 0) | ||
| 52 | return n; | ||
| 53 | else return len; | ||
| 54 | } | ||
diff --git a/arch/um/drivers/slip_proto.h b/arch/um/drivers/slip_common.h index 7206361ace45..2ae76d8f1be1 100644 --- a/arch/um/drivers/slip_proto.h +++ b/arch/um/drivers/slip_common.h | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | /* | 1 | #ifndef __UM_SLIP_COMMON_H |
| 2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | 2 | #define __UM_SLIP_COMMON_H |
| 3 | * Licensed under the GPL | ||
| 4 | */ | ||
| 5 | 3 | ||
| 6 | #ifndef __UM_SLIP_PROTO_H__ | 4 | #define BUF_SIZE 1500 |
| 7 | #define __UM_SLIP_PROTO_H__ | 5 | /* two bytes each for a (pathological) max packet of escaped chars + * |
| 6 | * terminating END char + initial END char */ | ||
| 7 | #define ENC_BUF_SIZE (2 * BUF_SIZE + 2) | ||
| 8 | 8 | ||
| 9 | /* SLIP protocol characters. */ | 9 | /* SLIP protocol characters. */ |
| 10 | #define SLIP_END 0300 /* indicates end of frame */ | 10 | #define SLIP_END 0300 /* indicates end of frame */ |
| @@ -12,7 +12,8 @@ | |||
| 12 | #define SLIP_ESC_END 0334 /* ESC ESC_END means END 'data' */ | 12 | #define SLIP_ESC_END 0334 /* ESC ESC_END means END 'data' */ |
| 13 | #define SLIP_ESC_ESC 0335 /* ESC ESC_ESC means ESC 'data' */ | 13 | #define SLIP_ESC_ESC 0335 /* ESC ESC_ESC means ESC 'data' */ |
| 14 | 14 | ||
| 15 | static inline int slip_unesc(unsigned char c,char *buf,int *pos, int *esc) | 15 | static inline int slip_unesc(unsigned char c, unsigned char *buf, int *pos, |
| 16 | int *esc) | ||
| 16 | { | 17 | { |
| 17 | int ret; | 18 | int ret; |
| 18 | 19 | ||
| @@ -79,15 +80,25 @@ static inline int slip_esc(unsigned char *s, unsigned char *d, int len) | |||
| 79 | return (ptr - d); | 80 | return (ptr - d); |
| 80 | } | 81 | } |
| 81 | 82 | ||
| 82 | #endif | 83 | struct slip_proto { |
| 84 | unsigned char ibuf[ENC_BUF_SIZE]; | ||
| 85 | unsigned char obuf[ENC_BUF_SIZE]; | ||
| 86 | int more; /* more data: do not read fd until ibuf has been drained */ | ||
| 87 | int pos; | ||
| 88 | int esc; | ||
| 89 | }; | ||
| 90 | |||
| 91 | #define SLIP_PROTO_INIT { \ | ||
| 92 | .ibuf = { '\0' }, \ | ||
| 93 | .obuf = { '\0' }, \ | ||
| 94 | .more = 0, \ | ||
| 95 | .pos = 0, \ | ||
| 96 | .esc = 0 \ | ||
| 97 | } | ||
| 83 | 98 | ||
| 84 | /* | 99 | extern int slip_proto_read(int fd, void *buf, int len, |
| 85 | * Overrides for Emacs so that we follow Linus's tabbing style. | 100 | struct slip_proto *slip); |
| 86 | * Emacs will notice this stuff at the end of the file and automatically | 101 | extern int slip_proto_write(int fd, void *buf, int len, |
| 87 | * adjust the settings for this buffer only. This must remain at the end | 102 | struct slip_proto *slip); |
| 88 | * of the file. | 103 | |
| 89 | * --------------------------------------------------------------------------- | 104 | #endif |
| 90 | * Local variables: | ||
| 91 | * c-file-style: "linux" | ||
| 92 | * End: | ||
| 93 | */ | ||
diff --git a/arch/um/drivers/slip_kern.c b/arch/um/drivers/slip_kern.c index 0886eedba213..9a6f5c85f902 100644 --- a/arch/um/drivers/slip_kern.c +++ b/arch/um/drivers/slip_kern.c | |||
| @@ -26,16 +26,16 @@ void slip_init(struct net_device *dev, void *data) | |||
| 26 | .addr = NULL, | 26 | .addr = NULL, |
| 27 | .gate_addr = init->gate_addr, | 27 | .gate_addr = init->gate_addr, |
| 28 | .slave = -1, | 28 | .slave = -1, |
| 29 | .ibuf = { '\0' }, | 29 | .slip = SLIP_PROTO_INIT, |
| 30 | .obuf = { '\0' }, | ||
| 31 | .pos = 0, | ||
| 32 | .esc = 0, | ||
| 33 | .dev = dev }); | 30 | .dev = dev }); |
| 34 | 31 | ||
| 35 | dev->init = NULL; | 32 | dev->init = NULL; |
| 33 | dev->header_cache_update = NULL; | ||
| 34 | dev->hard_header_cache = NULL; | ||
| 35 | dev->hard_header = NULL; | ||
| 36 | dev->hard_header_len = 0; | 36 | dev->hard_header_len = 0; |
| 37 | dev->addr_len = 4; | 37 | dev->addr_len = 0; |
| 38 | dev->type = ARPHRD_ETHER; | 38 | dev->type = ARPHRD_SLIP; |
| 39 | dev->tx_queue_len = 256; | 39 | dev->tx_queue_len = 256; |
| 40 | dev->flags = IFF_NOARP; | 40 | dev->flags = IFF_NOARP; |
| 41 | printk("SLIP backend - SLIP IP = %s\n", spri->gate_addr); | 41 | printk("SLIP backend - SLIP IP = %s\n", spri->gate_addr); |
diff --git a/arch/um/drivers/slip_user.c b/arch/um/drivers/slip_user.c index d94846b1b4cf..71af444e591f 100644 --- a/arch/um/drivers/slip_user.c +++ b/arch/um/drivers/slip_user.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include "user.h" | 13 | #include "user.h" |
| 14 | #include "net_user.h" | 14 | #include "net_user.h" |
| 15 | #include "slip.h" | 15 | #include "slip.h" |
| 16 | #include "slip_proto.h" | 16 | #include "slip_common.h" |
| 17 | #include "helper.h" | 17 | #include "helper.h" |
| 18 | #include "os.h" | 18 | #include "os.h" |
| 19 | 19 | ||
| @@ -77,41 +77,51 @@ static int slip_tramp(char **argv, int fd) | |||
| 77 | err = os_pipe(fds, 1, 0); | 77 | err = os_pipe(fds, 1, 0); |
| 78 | if(err < 0){ | 78 | if(err < 0){ |
| 79 | printk("slip_tramp : pipe failed, err = %d\n", -err); | 79 | printk("slip_tramp : pipe failed, err = %d\n", -err); |
| 80 | return(err); | 80 | goto out; |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | err = 0; | 83 | err = 0; |
| 84 | pe_data.stdin = fd; | 84 | pe_data.stdin = fd; |
| 85 | pe_data.stdout = fds[1]; | 85 | pe_data.stdout = fds[1]; |
| 86 | pe_data.close_me = fds[0]; | 86 | pe_data.close_me = fds[0]; |
| 87 | pid = run_helper(slip_pre_exec, &pe_data, argv, NULL); | 87 | err = run_helper(slip_pre_exec, &pe_data, argv, NULL); |
| 88 | if(err < 0) | ||
| 89 | goto out_close; | ||
| 90 | pid = err; | ||
| 91 | |||
| 92 | output_len = page_size(); | ||
| 93 | output = um_kmalloc(output_len); | ||
| 94 | if(output == NULL){ | ||
| 95 | printk("slip_tramp : failed to allocate output buffer\n"); | ||
| 96 | os_kill_process(pid, 1); | ||
| 97 | err = -ENOMEM; | ||
| 98 | goto out_free; | ||
| 99 | } | ||
| 88 | 100 | ||
| 89 | if(pid < 0) err = pid; | 101 | os_close_file(fds[1]); |
| 90 | else { | 102 | read_output(fds[0], output, output_len); |
| 91 | output_len = page_size(); | 103 | printk("%s", output); |
| 92 | output = um_kmalloc(output_len); | 104 | |
| 93 | if(output == NULL) | 105 | CATCH_EINTR(err = waitpid(pid, &status, 0)); |
| 94 | printk("slip_tramp : failed to allocate output " | 106 | if(err < 0) |
| 95 | "buffer\n"); | 107 | err = errno; |
| 96 | 108 | else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){ | |
| 97 | os_close_file(fds[1]); | 109 | printk("'%s' didn't exit with status 0\n", argv[0]); |
| 98 | read_output(fds[0], output, output_len); | 110 | err = -EINVAL; |
| 99 | if(output != NULL){ | ||
| 100 | printk("%s", output); | ||
| 101 | kfree(output); | ||
| 102 | } | ||
| 103 | CATCH_EINTR(err = waitpid(pid, &status, 0)); | ||
| 104 | if(err < 0) | ||
| 105 | err = errno; | ||
| 106 | else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){ | ||
| 107 | printk("'%s' didn't exit with status 0\n", argv[0]); | ||
| 108 | err = -EINVAL; | ||
| 109 | } | ||
| 110 | } | 111 | } |
| 112 | else err = 0; | ||
| 111 | 113 | ||
| 112 | os_close_file(fds[0]); | 114 | os_close_file(fds[0]); |
| 113 | 115 | ||
| 114 | return(err); | 116 | out_free: |
| 117 | kfree(output); | ||
| 118 | return err; | ||
| 119 | |||
| 120 | out_close: | ||
| 121 | os_close_file(fds[0]); | ||
| 122 | os_close_file(fds[1]); | ||
| 123 | out: | ||
| 124 | return err; | ||
| 115 | } | 125 | } |
| 116 | 126 | ||
| 117 | static int slip_open(void *data) | 127 | static int slip_open(void *data) |
| @@ -123,21 +133,26 @@ static int slip_open(void *data) | |||
| 123 | NULL }; | 133 | NULL }; |
| 124 | int sfd, mfd, err; | 134 | int sfd, mfd, err; |
| 125 | 135 | ||
| 126 | mfd = get_pty(); | 136 | err = get_pty(); |
| 127 | if(mfd < 0){ | 137 | if(err < 0){ |
| 128 | printk("umn : Failed to open pty, err = %d\n", -mfd); | 138 | printk("slip-open : Failed to open pty, err = %d\n", -err); |
| 129 | return(mfd); | 139 | goto out; |
| 130 | } | 140 | } |
| 131 | sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0); | 141 | mfd = err; |
| 132 | if(sfd < 0){ | 142 | |
| 133 | printk("Couldn't open tty for slip line, err = %d\n", -sfd); | 143 | err = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0); |
| 134 | os_close_file(mfd); | 144 | if(err < 0){ |
| 135 | return(sfd); | 145 | printk("Couldn't open tty for slip line, err = %d\n", -err); |
| 146 | goto out_close; | ||
| 136 | } | 147 | } |
| 137 | if(set_up_tty(sfd)) return(-1); | 148 | sfd = err; |
| 149 | |||
| 150 | if(set_up_tty(sfd)) | ||
| 151 | goto out_close2; | ||
| 152 | |||
| 138 | pri->slave = sfd; | 153 | pri->slave = sfd; |
| 139 | pri->pos = 0; | 154 | pri->slip.pos = 0; |
| 140 | pri->esc = 0; | 155 | pri->slip.esc = 0; |
| 141 | if(pri->gate_addr != NULL){ | 156 | if(pri->gate_addr != NULL){ |
| 142 | sprintf(version_buf, "%d", UML_NET_VERSION); | 157 | sprintf(version_buf, "%d", UML_NET_VERSION); |
| 143 | strcpy(gate_buf, pri->gate_addr); | 158 | strcpy(gate_buf, pri->gate_addr); |
| @@ -146,12 +161,12 @@ static int slip_open(void *data) | |||
| 146 | 161 | ||
| 147 | if(err < 0){ | 162 | if(err < 0){ |
| 148 | printk("slip_tramp failed - err = %d\n", -err); | 163 | printk("slip_tramp failed - err = %d\n", -err); |
| 149 | return(err); | 164 | goto out_close2; |
| 150 | } | 165 | } |
| 151 | err = os_get_ifname(pri->slave, pri->name); | 166 | err = os_get_ifname(pri->slave, pri->name); |
| 152 | if(err < 0){ | 167 | if(err < 0){ |
| 153 | printk("get_ifname failed, err = %d\n", -err); | 168 | printk("get_ifname failed, err = %d\n", -err); |
| 154 | return(err); | 169 | goto out_close2; |
| 155 | } | 170 | } |
| 156 | iter_addresses(pri->dev, open_addr, pri->name); | 171 | iter_addresses(pri->dev, open_addr, pri->name); |
| 157 | } | 172 | } |
| @@ -160,10 +175,16 @@ static int slip_open(void *data) | |||
| 160 | if(err < 0){ | 175 | if(err < 0){ |
| 161 | printk("Failed to set slip discipline encapsulation - " | 176 | printk("Failed to set slip discipline encapsulation - " |
| 162 | "err = %d\n", -err); | 177 | "err = %d\n", -err); |
| 163 | return(err); | 178 | goto out_close2; |
| 164 | } | 179 | } |
| 165 | } | 180 | } |
| 166 | return(mfd); | 181 | return(mfd); |
| 182 | out_close2: | ||
| 183 | os_close_file(sfd); | ||
| 184 | out_close: | ||
| 185 | os_close_file(mfd); | ||
| 186 | out: | ||
| 187 | return err; | ||
| 167 | } | 188 | } |
| 168 | 189 | ||
| 169 | static void slip_close(int fd, void *data) | 190 | static void slip_close(int fd, void *data) |
| @@ -190,48 +211,12 @@ static void slip_close(int fd, void *data) | |||
| 190 | 211 | ||
| 191 | int slip_user_read(int fd, void *buf, int len, struct slip_data *pri) | 212 | int slip_user_read(int fd, void *buf, int len, struct slip_data *pri) |
| 192 | { | 213 | { |
| 193 | int i, n, size, start; | 214 | return slip_proto_read(fd, buf, len, &pri->slip); |
| 194 | |||
| 195 | if(pri->more>0) { | ||
| 196 | i = 0; | ||
| 197 | while(i < pri->more) { | ||
| 198 | size = slip_unesc(pri->ibuf[i++], | ||
| 199 | pri->ibuf, &pri->pos, &pri->esc); | ||
| 200 | if(size){ | ||
| 201 | memcpy(buf, pri->ibuf, size); | ||
| 202 | memmove(pri->ibuf, &pri->ibuf[i], pri->more-i); | ||
| 203 | pri->more=pri->more-i; | ||
| 204 | return(size); | ||
| 205 | } | ||
| 206 | } | ||
| 207 | pri->more=0; | ||
| 208 | } | ||
| 209 | |||
| 210 | n = net_read(fd, &pri->ibuf[pri->pos], sizeof(pri->ibuf) - pri->pos); | ||
| 211 | if(n <= 0) return(n); | ||
| 212 | |||
| 213 | start = pri->pos; | ||
| 214 | for(i = 0; i < n; i++){ | ||
| 215 | size = slip_unesc(pri->ibuf[start + i], | ||
| 216 | pri->ibuf, &pri->pos, &pri->esc); | ||
| 217 | if(size){ | ||
| 218 | memcpy(buf, pri->ibuf, size); | ||
| 219 | memmove(pri->ibuf, &pri->ibuf[start+i+1], n-(i+1)); | ||
| 220 | pri->more=n-(i+1); | ||
| 221 | return(size); | ||
| 222 | } | ||
| 223 | } | ||
| 224 | return(0); | ||
| 225 | } | 215 | } |
| 226 | 216 | ||
| 227 | int slip_user_write(int fd, void *buf, int len, struct slip_data *pri) | 217 | int slip_user_write(int fd, void *buf, int len, struct slip_data *pri) |
| 228 | { | 218 | { |
| 229 | int actual, n; | 219 | return slip_proto_write(fd, buf, len, &pri->slip); |
| 230 | |||
| 231 | actual = slip_esc(buf, pri->obuf, len); | ||
| 232 | n = net_write(fd, pri->obuf, actual); | ||
| 233 | if(n < 0) return(n); | ||
| 234 | else return(len); | ||
| 235 | } | 220 | } |
| 236 | 221 | ||
| 237 | static int slip_set_mtu(int mtu, void *data) | 222 | static int slip_set_mtu(int mtu, void *data) |
| @@ -267,14 +252,3 @@ struct net_user_info slip_user_info = { | |||
| 267 | .delete_address = slip_del_addr, | 252 | .delete_address = slip_del_addr, |
| 268 | .max_packet = BUF_SIZE | 253 | .max_packet = BUF_SIZE |
| 269 | }; | 254 | }; |
| 270 | |||
| 271 | /* | ||
| 272 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 273 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 274 | * adjust the settings for this buffer only. This must remain at the end | ||
| 275 | * of the file. | ||
| 276 | * --------------------------------------------------------------------------- | ||
| 277 | * Local variables: | ||
| 278 | * c-file-style: "linux" | ||
| 279 | * End: | ||
| 280 | */ | ||
diff --git a/arch/um/drivers/slirp.h b/arch/um/drivers/slirp.h index 04e407d1e44a..6cf88ab580c9 100644 --- a/arch/um/drivers/slirp.h +++ b/arch/um/drivers/slirp.h | |||
| @@ -1,10 +1,7 @@ | |||
| 1 | #ifndef __UM_SLIRP_H | 1 | #ifndef __UM_SLIRP_H |
| 2 | #define __UM_SLIRP_H | 2 | #define __UM_SLIRP_H |
| 3 | 3 | ||
| 4 | #define BUF_SIZE 1500 | 4 | #include "slip_common.h" |
| 5 | /* two bytes each for a (pathological) max packet of escaped chars + * | ||
| 6 | * terminating END char + initial END char */ | ||
| 7 | #define ENC_BUF_SIZE (2 * BUF_SIZE + 2) | ||
| 8 | 5 | ||
| 9 | #define SLIRP_MAX_ARGS 100 | 6 | #define SLIRP_MAX_ARGS 100 |
| 10 | /* | 7 | /* |
| @@ -24,28 +21,13 @@ struct slirp_data { | |||
| 24 | struct arg_list_dummy_wrapper argw; | 21 | struct arg_list_dummy_wrapper argw; |
| 25 | int pid; | 22 | int pid; |
| 26 | int slave; | 23 | int slave; |
| 27 | char ibuf[ENC_BUF_SIZE]; | 24 | struct slip_proto slip; |
| 28 | char obuf[ENC_BUF_SIZE]; | ||
| 29 | int more; /* more data: do not read fd until ibuf has been drained */ | ||
| 30 | int pos; | ||
| 31 | int esc; | ||
| 32 | }; | 25 | }; |
| 33 | 26 | ||
| 34 | extern struct net_user_info slirp_user_info; | 27 | extern struct net_user_info slirp_user_info; |
| 35 | 28 | ||
| 36 | extern int set_umn_addr(int fd, char *addr, char *ptp_addr); | ||
| 37 | extern int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri); | 29 | extern int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri); |
| 38 | extern int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri); | 30 | extern int slirp_user_write(int fd, void *buf, int len, |
| 31 | struct slirp_data *pri); | ||
| 39 | 32 | ||
| 40 | #endif | 33 | #endif |
| 41 | |||
| 42 | /* | ||
| 43 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 44 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 45 | * adjust the settings for this buffer only. This must remain at the end | ||
| 46 | * of the file. | ||
| 47 | * --------------------------------------------------------------------------- | ||
| 48 | * Local variables: | ||
| 49 | * c-file-style: "linux" | ||
| 50 | * End: | ||
| 51 | */ | ||
diff --git a/arch/um/drivers/slirp_kern.c b/arch/um/drivers/slirp_kern.c index c9d6b52a831d..9864d27afdbe 100644 --- a/arch/um/drivers/slirp_kern.c +++ b/arch/um/drivers/slirp_kern.c | |||
| @@ -25,10 +25,7 @@ void slirp_init(struct net_device *dev, void *data) | |||
| 25 | { .argw = init->argw, | 25 | { .argw = init->argw, |
| 26 | .pid = -1, | 26 | .pid = -1, |
| 27 | .slave = -1, | 27 | .slave = -1, |
| 28 | .ibuf = { '\0' }, | 28 | .slip = SLIP_PROTO_INIT, |
| 29 | .obuf = { '\0' }, | ||
| 30 | .pos = 0, | ||
| 31 | .esc = 0, | ||
| 32 | .dev = dev }); | 29 | .dev = dev }); |
| 33 | 30 | ||
| 34 | dev->init = NULL; | 31 | dev->init = NULL; |
diff --git a/arch/um/drivers/slirp_user.c b/arch/um/drivers/slirp_user.c index c322515c71cc..8d91f663d82c 100644 --- a/arch/um/drivers/slirp_user.c +++ b/arch/um/drivers/slirp_user.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include "user.h" | 12 | #include "user.h" |
| 13 | #include "net_user.h" | 13 | #include "net_user.h" |
| 14 | #include "slirp.h" | 14 | #include "slirp.h" |
| 15 | #include "slip_proto.h" | 15 | #include "slip_common.h" |
| 16 | #include "helper.h" | 16 | #include "helper.h" |
| 17 | #include "os.h" | 17 | #include "os.h" |
| 18 | 18 | ||
| @@ -48,47 +48,32 @@ static int slirp_tramp(char **argv, int fd) | |||
| 48 | return(pid); | 48 | return(pid); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | /* XXX This is just a trivial wrapper around os_pipe */ | ||
| 52 | static int slirp_datachan(int *mfd, int *sfd) | ||
| 53 | { | ||
| 54 | int fds[2], err; | ||
| 55 | |||
| 56 | err = os_pipe(fds, 1, 1); | ||
| 57 | if(err < 0){ | ||
| 58 | printk("slirp_datachan: Failed to open pipe, err = %d\n", -err); | ||
| 59 | return(err); | ||
| 60 | } | ||
| 61 | |||
| 62 | *mfd = fds[0]; | ||
| 63 | *sfd = fds[1]; | ||
| 64 | return(0); | ||
| 65 | } | ||
| 66 | |||
| 67 | static int slirp_open(void *data) | 51 | static int slirp_open(void *data) |
| 68 | { | 52 | { |
| 69 | struct slirp_data *pri = data; | 53 | struct slirp_data *pri = data; |
| 70 | int sfd, mfd, pid, err; | 54 | int fds[2], pid, err; |
| 71 | 55 | ||
| 72 | err = slirp_datachan(&mfd, &sfd); | 56 | err = os_pipe(fds, 1, 1); |
| 73 | if(err) | 57 | if(err) |
| 74 | return(err); | 58 | return(err); |
| 75 | 59 | ||
| 76 | pid = slirp_tramp(pri->argw.argv, sfd); | 60 | err = slirp_tramp(pri->argw.argv, fds[1]); |
| 77 | 61 | if(err < 0){ | |
| 78 | if(pid < 0){ | 62 | printk("slirp_tramp failed - errno = %d\n", -err); |
| 79 | printk("slirp_tramp failed - errno = %d\n", -pid); | 63 | goto out; |
| 80 | os_close_file(sfd); | ||
| 81 | os_close_file(mfd); | ||
| 82 | return(pid); | ||
| 83 | } | 64 | } |
| 84 | 65 | pid = err; | |
| 85 | pri->slave = sfd; | 66 | |
| 86 | pri->pos = 0; | 67 | pri->slave = fds[1]; |
| 87 | pri->esc = 0; | 68 | pri->slip.pos = 0; |
| 88 | 69 | pri->slip.esc = 0; | |
| 89 | pri->pid = pid; | 70 | pri->pid = err; |
| 90 | 71 | ||
| 91 | return(mfd); | 72 | return(fds[0]); |
| 73 | out: | ||
| 74 | os_close_file(fds[0]); | ||
| 75 | os_close_file(fds[1]); | ||
| 76 | return err; | ||
| 92 | } | 77 | } |
| 93 | 78 | ||
| 94 | static void slirp_close(int fd, void *data) | 79 | static void slirp_close(int fd, void *data) |
| @@ -129,48 +114,12 @@ static void slirp_close(int fd, void *data) | |||
| 129 | 114 | ||
| 130 | int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri) | 115 | int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri) |
| 131 | { | 116 | { |
| 132 | int i, n, size, start; | 117 | return slip_proto_read(fd, buf, len, &pri->slip); |
| 133 | |||
| 134 | if(pri->more>0) { | ||
| 135 | i = 0; | ||
| 136 | while(i < pri->more) { | ||
| 137 | size = slip_unesc(pri->ibuf[i++], | ||
| 138 | pri->ibuf,&pri->pos,&pri->esc); | ||
| 139 | if(size){ | ||
| 140 | memcpy(buf, pri->ibuf, size); | ||
| 141 | memmove(pri->ibuf, &pri->ibuf[i], pri->more-i); | ||
| 142 | pri->more=pri->more-i; | ||
| 143 | return(size); | ||
| 144 | } | ||
| 145 | } | ||
| 146 | pri->more=0; | ||
| 147 | } | ||
| 148 | |||
| 149 | n = net_read(fd, &pri->ibuf[pri->pos], sizeof(pri->ibuf) - pri->pos); | ||
| 150 | if(n <= 0) return(n); | ||
| 151 | |||
| 152 | start = pri->pos; | ||
| 153 | for(i = 0; i < n; i++){ | ||
| 154 | size = slip_unesc(pri->ibuf[start + i], | ||
| 155 | pri->ibuf,&pri->pos,&pri->esc); | ||
| 156 | if(size){ | ||
| 157 | memcpy(buf, pri->ibuf, size); | ||
| 158 | memmove(pri->ibuf, &pri->ibuf[start+i+1], n-(i+1)); | ||
| 159 | pri->more=n-(i+1); | ||
| 160 | return(size); | ||
| 161 | } | ||
| 162 | } | ||
| 163 | return(0); | ||
| 164 | } | 118 | } |
| 165 | 119 | ||
| 166 | int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri) | 120 | int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri) |
| 167 | { | 121 | { |
| 168 | int actual, n; | 122 | return slip_proto_write(fd, buf, len, &pri->slip); |
| 169 | |||
| 170 | actual = slip_esc(buf, pri->obuf, len); | ||
| 171 | n = net_write(fd, pri->obuf, actual); | ||
| 172 | if(n < 0) return(n); | ||
| 173 | else return(len); | ||
| 174 | } | 123 | } |
| 175 | 124 | ||
| 176 | static int slirp_set_mtu(int mtu, void *data) | 125 | static int slirp_set_mtu(int mtu, void *data) |
| @@ -188,14 +137,3 @@ struct net_user_info slirp_user_info = { | |||
| 188 | .delete_address = NULL, | 137 | .delete_address = NULL, |
| 189 | .max_packet = BUF_SIZE | 138 | .max_packet = BUF_SIZE |
| 190 | }; | 139 | }; |
| 191 | |||
| 192 | /* | ||
| 193 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 194 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 195 | * adjust the settings for this buffer only. This must remain at the end | ||
| 196 | * of the file. | ||
| 197 | * --------------------------------------------------------------------------- | ||
| 198 | * Local variables: | ||
| 199 | * c-file-style: "linux" | ||
| 200 | * End: | ||
| 201 | */ | ||
diff --git a/arch/um/drivers/stderr_console.c b/arch/um/drivers/stderr_console.c index 98565b53d170..429ae8e6c7e5 100644 --- a/arch/um/drivers/stderr_console.c +++ b/arch/um/drivers/stderr_console.c | |||
| @@ -22,9 +22,9 @@ static void stderr_console_write(struct console *console, const char *string, | |||
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | static struct console stderr_console = { | 24 | static struct console stderr_console = { |
| 25 | .name "stderr", | 25 | .name = "stderr", |
| 26 | .write stderr_console_write, | 26 | .write = stderr_console_write, |
| 27 | .flags CON_PRINTBUFFER, | 27 | .flags = CON_PRINTBUFFER, |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | static int __init stderr_console_init(void) | 30 | static int __init stderr_console_init(void) |
diff --git a/arch/um/include/mconsole.h b/arch/um/include/mconsole.h index 9fbe3083fdd8..cfa368e045a5 100644 --- a/arch/um/include/mconsole.h +++ b/arch/um/include/mconsole.h | |||
| @@ -56,7 +56,7 @@ struct mc_request | |||
| 56 | int as_interrupt; | 56 | int as_interrupt; |
| 57 | 57 | ||
| 58 | int originating_fd; | 58 | int originating_fd; |
| 59 | int originlen; | 59 | unsigned int originlen; |
| 60 | unsigned char origin[128]; /* sockaddr_un */ | 60 | unsigned char origin[128]; /* sockaddr_un */ |
| 61 | 61 | ||
| 62 | struct mconsole_request request; | 62 | struct mconsole_request request; |
diff --git a/arch/um/include/net_user.h b/arch/um/include/net_user.h index 36807b796e9f..89885a77a771 100644 --- a/arch/um/include/net_user.h +++ b/arch/um/include/net_user.h | |||
| @@ -35,7 +35,7 @@ extern void *get_output_buffer(int *len_out); | |||
| 35 | extern void free_output_buffer(void *buffer); | 35 | extern void free_output_buffer(void *buffer); |
| 36 | 36 | ||
| 37 | extern int tap_open_common(void *dev, char *gate_addr); | 37 | extern int tap_open_common(void *dev, char *gate_addr); |
| 38 | extern void tap_check_ips(char *gate_addr, char *eth_addr); | 38 | extern void tap_check_ips(char *gate_addr, unsigned char *eth_addr); |
| 39 | 39 | ||
| 40 | extern void read_output(int fd, char *output_out, int len); | 40 | extern void read_output(int fd, char *output_out, int len); |
| 41 | 41 | ||
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index d246d5a24609..881d2988d2d8 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
| @@ -136,7 +136,7 @@ extern int os_seek_file(int fd, __u64 offset); | |||
| 136 | extern int os_open_file(char *file, struct openflags flags, int mode); | 136 | extern int os_open_file(char *file, struct openflags flags, int mode); |
| 137 | extern int os_read_file(int fd, void *buf, int len); | 137 | extern int os_read_file(int fd, void *buf, int len); |
| 138 | extern int os_write_file(int fd, const void *buf, int count); | 138 | extern int os_write_file(int fd, const void *buf, int count); |
| 139 | extern int os_file_size(char *file, long long *size_out); | 139 | extern int os_file_size(char *file, unsigned long long *size_out); |
| 140 | extern int os_file_modtime(char *file, unsigned long *modtime); | 140 | extern int os_file_modtime(char *file, unsigned long *modtime); |
| 141 | extern int os_pipe(int *fd, int stream, int close_on_exec); | 141 | extern int os_pipe(int *fd, int stream, int close_on_exec); |
| 142 | extern int os_set_fd_async(int fd, int owner); | 142 | extern int os_set_fd_async(int fd, int owner); |
diff --git a/arch/um/include/sysdep-i386/ptrace.h b/arch/um/include/sysdep-i386/ptrace.h index 6eaeb9919983..c8ee9559f3ab 100644 --- a/arch/um/include/sysdep-i386/ptrace.h +++ b/arch/um/include/sysdep-i386/ptrace.h | |||
| @@ -8,6 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | #include "uml-config.h" | 9 | #include "uml-config.h" |
| 10 | #include "user_constants.h" | 10 | #include "user_constants.h" |
| 11 | #include "sysdep/faultinfo.h" | ||
| 12 | #include "choose-mode.h" | ||
| 11 | 13 | ||
| 12 | #define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long)) | 14 | #define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long)) |
| 13 | #define MAX_REG_OFFSET (UM_FRAME_SIZE) | 15 | #define MAX_REG_OFFSET (UM_FRAME_SIZE) |
| @@ -58,9 +60,6 @@ extern int sysemu_supported; | |||
| 58 | #define PTRACE_SYSEMU_SINGLESTEP 32 | 60 | #define PTRACE_SYSEMU_SINGLESTEP 32 |
| 59 | #endif | 61 | #endif |
| 60 | 62 | ||
| 61 | #include "sysdep/faultinfo.h" | ||
| 62 | #include "choose-mode.h" | ||
| 63 | |||
| 64 | union uml_pt_regs { | 63 | union uml_pt_regs { |
| 65 | #ifdef UML_CONFIG_MODE_TT | 64 | #ifdef UML_CONFIG_MODE_TT |
| 66 | struct tt_regs { | 65 | struct tt_regs { |
diff --git a/arch/um/include/user_util.h b/arch/um/include/user_util.h index b8c5b8a95250..7b6a24dfd302 100644 --- a/arch/um/include/user_util.h +++ b/arch/um/include/user_util.h | |||
| @@ -41,9 +41,6 @@ extern unsigned long highmem; | |||
| 41 | extern char host_info[]; | 41 | extern char host_info[]; |
| 42 | 42 | ||
| 43 | extern char saved_command_line[]; | 43 | extern char saved_command_line[]; |
| 44 | extern char command_line[]; | ||
| 45 | |||
| 46 | extern char *tempdir; | ||
| 47 | 44 | ||
| 48 | extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; | 45 | extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; |
| 49 | extern unsigned long _unprotected_end; | 46 | extern unsigned long _unprotected_end; |
diff --git a/arch/um/kernel/main.c b/arch/um/kernel/main.c index e42e6364ca13..e59f58152678 100644 --- a/arch/um/kernel/main.c +++ b/arch/um/kernel/main.c | |||
| @@ -24,8 +24,6 @@ | |||
| 24 | #include "mode.h" | 24 | #include "mode.h" |
| 25 | #include "choose-mode.h" | 25 | #include "choose-mode.h" |
| 26 | #include "uml-config.h" | 26 | #include "uml-config.h" |
| 27 | #include "irq_user.h" | ||
| 28 | #include "time_user.h" | ||
| 29 | #include "os.h" | 27 | #include "os.h" |
| 30 | 28 | ||
| 31 | /* Set in set_stklim, which is called from main and __wrap_malloc. | 29 | /* Set in set_stklim, which is called from main and __wrap_malloc. |
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 51f8e5a8ac6a..1b5ef3e96c71 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c | |||
| @@ -30,7 +30,6 @@ | |||
| 30 | #include "init.h" | 30 | #include "init.h" |
| 31 | #include "os.h" | 31 | #include "os.h" |
| 32 | #include "uml-config.h" | 32 | #include "uml-config.h" |
| 33 | #include "ptrace_user.h" | ||
| 34 | #include "choose-mode.h" | 33 | #include "choose-mode.h" |
| 35 | #include "mode.h" | 34 | #include "mode.h" |
| 36 | #ifdef UML_CONFIG_MODE_SKAS | 35 | #ifdef UML_CONFIG_MODE_SKAS |
| @@ -131,7 +130,7 @@ int start_fork_tramp(void *thread_arg, unsigned long temp_stack, | |||
| 131 | return(arg.pid); | 130 | return(arg.pid); |
| 132 | } | 131 | } |
| 133 | 132 | ||
| 134 | static int ptrace_child(void *arg) | 133 | static int ptrace_child(void) |
| 135 | { | 134 | { |
| 136 | int ret; | 135 | int ret; |
| 137 | int pid = os_getpid(), ppid = getppid(); | 136 | int pid = os_getpid(), ppid = getppid(); |
| @@ -160,20 +159,16 @@ static int ptrace_child(void *arg) | |||
| 160 | _exit(ret); | 159 | _exit(ret); |
| 161 | } | 160 | } |
| 162 | 161 | ||
| 163 | static int start_ptraced_child(void **stack_out) | 162 | static int start_ptraced_child(void) |
| 164 | { | 163 | { |
| 165 | void *stack; | ||
| 166 | unsigned long sp; | ||
| 167 | int pid, n, status; | 164 | int pid, n, status; |
| 168 | 165 | ||
| 169 | stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, | 166 | pid = fork(); |
| 170 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | 167 | if(pid == 0) |
| 171 | if(stack == MAP_FAILED) | 168 | ptrace_child(); |
| 172 | panic("check_ptrace : mmap failed, errno = %d", errno); | 169 | |
| 173 | sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); | ||
| 174 | pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); | ||
| 175 | if(pid < 0) | 170 | if(pid < 0) |
| 176 | panic("check_ptrace : clone failed, errno = %d", errno); | 171 | panic("check_ptrace : fork failed, errno = %d", errno); |
| 177 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); | 172 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); |
| 178 | if(n < 0) | 173 | if(n < 0) |
| 179 | panic("check_ptrace : wait failed, errno = %d", errno); | 174 | panic("check_ptrace : wait failed, errno = %d", errno); |
| @@ -181,7 +176,6 @@ static int start_ptraced_child(void **stack_out) | |||
| 181 | panic("check_ptrace : expected SIGSTOP, got status = %d", | 176 | panic("check_ptrace : expected SIGSTOP, got status = %d", |
| 182 | status); | 177 | status); |
| 183 | 178 | ||
| 184 | *stack_out = stack; | ||
| 185 | return(pid); | 179 | return(pid); |
| 186 | } | 180 | } |
| 187 | 181 | ||
| @@ -189,12 +183,12 @@ static int start_ptraced_child(void **stack_out) | |||
| 189 | * just avoid using sysemu, not panic, but only if SYSEMU features are broken. | 183 | * just avoid using sysemu, not panic, but only if SYSEMU features are broken. |
| 190 | * So only for SYSEMU features we test mustpanic, while normal host features | 184 | * So only for SYSEMU features we test mustpanic, while normal host features |
| 191 | * must work anyway!*/ | 185 | * must work anyway!*/ |
| 192 | static int stop_ptraced_child(int pid, void *stack, int exitcode, int mustpanic) | 186 | static int stop_ptraced_child(int pid, int exitcode, int mustexit) |
| 193 | { | 187 | { |
| 194 | int status, n, ret = 0; | 188 | int status, n, ret = 0; |
| 195 | 189 | ||
| 196 | if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) | 190 | if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) |
| 197 | panic("check_ptrace : ptrace failed, errno = %d", errno); | 191 | panic("stop_ptraced_child : ptrace failed, errno = %d", errno); |
| 198 | CATCH_EINTR(n = waitpid(pid, &status, 0)); | 192 | CATCH_EINTR(n = waitpid(pid, &status, 0)); |
| 199 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { | 193 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { |
| 200 | int exit_with = WEXITSTATUS(status); | 194 | int exit_with = WEXITSTATUS(status); |
| @@ -205,15 +199,13 @@ static int stop_ptraced_child(int pid, void *stack, int exitcode, int mustpanic) | |||
| 205 | printk("check_ptrace : child exited with exitcode %d, while " | 199 | printk("check_ptrace : child exited with exitcode %d, while " |
| 206 | "expecting %d; status 0x%x", exit_with, | 200 | "expecting %d; status 0x%x", exit_with, |
| 207 | exitcode, status); | 201 | exitcode, status); |
| 208 | if (mustpanic) | 202 | if (mustexit) |
| 209 | panic("\n"); | 203 | panic("\n"); |
| 210 | else | 204 | else |
| 211 | printk("\n"); | 205 | printk("\n"); |
| 212 | ret = -1; | 206 | ret = -1; |
| 213 | } | 207 | } |
| 214 | 208 | ||
| 215 | if(munmap(stack, PAGE_SIZE) < 0) | ||
| 216 | panic("check_ptrace : munmap failed, errno = %d", errno); | ||
| 217 | return ret; | 209 | return ret; |
| 218 | } | 210 | } |
| 219 | 211 | ||
| @@ -235,12 +227,11 @@ __uml_setup("nosysemu", nosysemu_cmd_param, | |||
| 235 | 227 | ||
| 236 | static void __init check_sysemu(void) | 228 | static void __init check_sysemu(void) |
| 237 | { | 229 | { |
| 238 | void *stack; | ||
| 239 | int pid, syscall, n, status, count=0; | 230 | int pid, syscall, n, status, count=0; |
| 240 | 231 | ||
| 241 | printk("Checking syscall emulation patch for ptrace..."); | 232 | printk("Checking syscall emulation patch for ptrace..."); |
| 242 | sysemu_supported = 0; | 233 | sysemu_supported = 0; |
| 243 | pid = start_ptraced_child(&stack); | 234 | pid = start_ptraced_child(); |
| 244 | 235 | ||
| 245 | if(ptrace(PTRACE_SYSEMU, pid, 0, 0) < 0) | 236 | if(ptrace(PTRACE_SYSEMU, pid, 0, 0) < 0) |
| 246 | goto fail; | 237 | goto fail; |
| @@ -258,7 +249,7 @@ static void __init check_sysemu(void) | |||
| 258 | panic("check_sysemu : failed to modify system " | 249 | panic("check_sysemu : failed to modify system " |
| 259 | "call return, errno = %d", errno); | 250 | "call return, errno = %d", errno); |
| 260 | 251 | ||
| 261 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) | 252 | if (stop_ptraced_child(pid, 0, 0) < 0) |
| 262 | goto fail_stopped; | 253 | goto fail_stopped; |
| 263 | 254 | ||
| 264 | sysemu_supported = 1; | 255 | sysemu_supported = 1; |
| @@ -266,7 +257,7 @@ static void __init check_sysemu(void) | |||
| 266 | set_using_sysemu(!force_sysemu_disabled); | 257 | set_using_sysemu(!force_sysemu_disabled); |
| 267 | 258 | ||
| 268 | printk("Checking advanced syscall emulation patch for ptrace..."); | 259 | printk("Checking advanced syscall emulation patch for ptrace..."); |
| 269 | pid = start_ptraced_child(&stack); | 260 | pid = start_ptraced_child(); |
| 270 | while(1){ | 261 | while(1){ |
| 271 | count++; | 262 | count++; |
| 272 | if(ptrace(PTRACE_SYSEMU_SINGLESTEP, pid, 0, 0) < 0) | 263 | if(ptrace(PTRACE_SYSEMU_SINGLESTEP, pid, 0, 0) < 0) |
| @@ -291,7 +282,7 @@ static void __init check_sysemu(void) | |||
| 291 | break; | 282 | break; |
| 292 | } | 283 | } |
| 293 | } | 284 | } |
| 294 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) | 285 | if (stop_ptraced_child(pid, 0, 0) < 0) |
| 295 | goto fail_stopped; | 286 | goto fail_stopped; |
| 296 | 287 | ||
| 297 | sysemu_supported = 2; | 288 | sysemu_supported = 2; |
| @@ -302,18 +293,17 @@ static void __init check_sysemu(void) | |||
| 302 | return; | 293 | return; |
| 303 | 294 | ||
| 304 | fail: | 295 | fail: |
| 305 | stop_ptraced_child(pid, stack, 1, 0); | 296 | stop_ptraced_child(pid, 1, 0); |
| 306 | fail_stopped: | 297 | fail_stopped: |
| 307 | printk("missing\n"); | 298 | printk("missing\n"); |
| 308 | } | 299 | } |
| 309 | 300 | ||
| 310 | void __init check_ptrace(void) | 301 | void __init check_ptrace(void) |
| 311 | { | 302 | { |
| 312 | void *stack; | ||
| 313 | int pid, syscall, n, status; | 303 | int pid, syscall, n, status; |
| 314 | 304 | ||
| 315 | printk("Checking that ptrace can change system call numbers..."); | 305 | printk("Checking that ptrace can change system call numbers..."); |
| 316 | pid = start_ptraced_child(&stack); | 306 | pid = start_ptraced_child(); |
| 317 | 307 | ||
| 318 | if (ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) | 308 | if (ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) |
| 319 | panic("check_ptrace: PTRACE_SETOPTIONS failed, errno = %d", errno); | 309 | panic("check_ptrace: PTRACE_SETOPTIONS failed, errno = %d", errno); |
| @@ -340,7 +330,7 @@ void __init check_ptrace(void) | |||
| 340 | break; | 330 | break; |
| 341 | } | 331 | } |
| 342 | } | 332 | } |
| 343 | stop_ptraced_child(pid, stack, 0, 1); | 333 | stop_ptraced_child(pid, 0, 1); |
| 344 | printk("OK\n"); | 334 | printk("OK\n"); |
| 345 | check_sysemu(); | 335 | check_sysemu(); |
| 346 | } | 336 | } |
| @@ -372,11 +362,10 @@ void forward_pending_sigio(int target) | |||
| 372 | static inline int check_skas3_ptrace_support(void) | 362 | static inline int check_skas3_ptrace_support(void) |
| 373 | { | 363 | { |
| 374 | struct ptrace_faultinfo fi; | 364 | struct ptrace_faultinfo fi; |
| 375 | void *stack; | ||
| 376 | int pid, n, ret = 1; | 365 | int pid, n, ret = 1; |
| 377 | 366 | ||
| 378 | printf("Checking for the skas3 patch in the host..."); | 367 | printf("Checking for the skas3 patch in the host..."); |
| 379 | pid = start_ptraced_child(&stack); | 368 | pid = start_ptraced_child(); |
| 380 | 369 | ||
| 381 | n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi); | 370 | n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi); |
| 382 | if (n < 0) { | 371 | if (n < 0) { |
| @@ -391,7 +380,7 @@ static inline int check_skas3_ptrace_support(void) | |||
| 391 | } | 380 | } |
| 392 | 381 | ||
| 393 | init_registers(pid); | 382 | init_registers(pid); |
| 394 | stop_ptraced_child(pid, stack, 1, 1); | 383 | stop_ptraced_child(pid, 1, 1); |
| 395 | 384 | ||
| 396 | return(ret); | 385 | return(ret); |
| 397 | } | 386 | } |
diff --git a/arch/um/kernel/skas/process_kern.c b/arch/um/kernel/skas/process_kern.c index ab5d3271da0b..fc71ef295782 100644 --- a/arch/um/kernel/skas/process_kern.c +++ b/arch/um/kernel/skas/process_kern.c | |||
| @@ -68,8 +68,11 @@ void new_thread_handler(int sig) | |||
| 68 | * 0 if it just exits | 68 | * 0 if it just exits |
| 69 | */ | 69 | */ |
| 70 | n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); | 70 | n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); |
| 71 | if(n == 1) | 71 | if(n == 1){ |
| 72 | /* Handle any immediate reschedules or signals */ | ||
| 73 | interrupt_end(); | ||
| 72 | userspace(¤t->thread.regs.regs); | 74 | userspace(¤t->thread.regs.regs); |
| 75 | } | ||
| 73 | else do_exit(0); | 76 | else do_exit(0); |
| 74 | } | 77 | } |
| 75 | 78 | ||
| @@ -96,6 +99,8 @@ void fork_handler(int sig) | |||
| 96 | schedule_tail(current->thread.prev_sched); | 99 | schedule_tail(current->thread.prev_sched); |
| 97 | current->thread.prev_sched = NULL; | 100 | current->thread.prev_sched = NULL; |
| 98 | 101 | ||
| 102 | /* Handle any immediate reschedules or signals */ | ||
| 103 | interrupt_end(); | ||
| 99 | userspace(¤t->thread.regs.regs); | 104 | userspace(¤t->thread.regs.regs); |
| 100 | } | 105 | } |
| 101 | 106 | ||
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index 418427107b29..8736d098f0ee 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c | |||
| @@ -26,7 +26,6 @@ | |||
| 26 | #include "asm/setup.h" | 26 | #include "asm/setup.h" |
| 27 | #include "ubd_user.h" | 27 | #include "ubd_user.h" |
| 28 | #include "asm/current.h" | 28 | #include "asm/current.h" |
| 29 | #include "asm/setup.h" | ||
| 30 | #include "user_util.h" | 29 | #include "user_util.h" |
| 31 | #include "kern_util.h" | 30 | #include "kern_util.h" |
| 32 | #include "kern.h" | 31 | #include "kern.h" |
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c index 9aee0b62ebca..f0d6060e3e57 100644 --- a/arch/um/os-Linux/elf_aux.c +++ b/arch/um/os-Linux/elf_aux.c | |||
| @@ -45,7 +45,11 @@ __init void scan_elf_aux( char **envp) | |||
| 45 | elf_aux_hwcap = auxv->a_un.a_val; | 45 | elf_aux_hwcap = auxv->a_un.a_val; |
| 46 | break; | 46 | break; |
| 47 | case AT_PLATFORM: | 47 | case AT_PLATFORM: |
| 48 | elf_aux_platform = auxv->a_un.a_ptr; | 48 | /* elf.h removed the pointer elements from |
| 49 | * a_un, so we have to use a_val, which is | ||
| 50 | * all that's left. | ||
| 51 | */ | ||
| 52 | elf_aux_platform = (char *) auxv->a_un.a_val; | ||
| 49 | break; | 53 | break; |
| 50 | case AT_PAGESZ: | 54 | case AT_PAGESZ: |
| 51 | page_size = auxv->a_un.a_val; | 55 | page_size = auxv->a_un.a_val; |
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index 77d4066d1af8..fd45bb260907 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c | |||
| @@ -363,7 +363,7 @@ int os_write_file(int fd, const void *buf, int len) | |||
| 363 | (int (*)(int, void *, int)) write, copy_to_user_proc)); | 363 | (int (*)(int, void *, int)) write, copy_to_user_proc)); |
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | int os_file_size(char *file, long long *size_out) | 366 | int os_file_size(char *file, unsigned long long *size_out) |
| 367 | { | 367 | { |
| 368 | struct uml_stat buf; | 368 | struct uml_stat buf; |
| 369 | int err; | 369 | int err; |
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index 0b2491883d9c..98346c711493 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
| @@ -14,7 +14,7 @@ quiet_cmd_make_link = SYMLINK $@ | |||
| 14 | cmd_make_link = ln -sf $(srctree)/arch/$(SUBARCH)/$($(notdir $@)-dir)/$(notdir $@) $@ | 14 | cmd_make_link = ln -sf $(srctree)/arch/$(SUBARCH)/$($(notdir $@)-dir)/$(notdir $@) $@ |
| 15 | 15 | ||
| 16 | # this needs to be before the foreach, because targets does not accept | 16 | # this needs to be before the foreach, because targets does not accept |
| 17 | # complete paths like $(obj)/$(f). To make sure this works, use a := assignment, | 17 | # complete paths like $(obj)/$(f). To make sure this works, use a := assignment |
| 18 | # or we will get $(obj)/$(f) in the "targets" value. | 18 | # or we will get $(obj)/$(f) in the "targets" value. |
| 19 | # Also, this forces you to use the := syntax when assigning to targets. | 19 | # Also, this forces you to use the := syntax when assigning to targets. |
| 20 | # Otherwise the line below will cause an infinite loop (if you don't know why, | 20 | # Otherwise the line below will cause an infinite loop (if you don't know why, |
diff --git a/arch/x86_64/kernel/aperture.c b/arch/x86_64/kernel/aperture.c index a491f72cc966..504e63474993 100644 --- a/arch/x86_64/kernel/aperture.c +++ b/arch/x86_64/kernel/aperture.c | |||
| @@ -33,12 +33,10 @@ int fallback_aper_force __initdata = 0; | |||
| 33 | 33 | ||
| 34 | int fix_aperture __initdata = 1; | 34 | int fix_aperture __initdata = 1; |
| 35 | 35 | ||
| 36 | #define NB_ID_3 (PCI_VENDOR_ID_AMD | (0x1103<<16)) | 36 | /* This code runs before the PCI subsystem is initialized, so just |
| 37 | access the northbridge directly. */ | ||
| 37 | 38 | ||
| 38 | static struct resource aper_res = { | 39 | #define NB_ID_3 (PCI_VENDOR_ID_AMD | (0x1103<<16)) |
| 39 | .name = "Aperture", | ||
| 40 | .flags = IORESOURCE_MEM, | ||
| 41 | }; | ||
| 42 | 40 | ||
| 43 | static u32 __init allocate_aperture(void) | 41 | static u32 __init allocate_aperture(void) |
| 44 | { | 42 | { |
| @@ -55,24 +53,11 @@ static u32 __init allocate_aperture(void) | |||
| 55 | aper_size = (32 * 1024 * 1024) << fallback_aper_order; | 53 | aper_size = (32 * 1024 * 1024) << fallback_aper_order; |
| 56 | 54 | ||
| 57 | /* | 55 | /* |
| 58 | * Aperture has to be naturally aligned. This means an 2GB | 56 | * Aperture has to be naturally aligned. This means an 2GB aperture won't |
| 59 | * aperture won't have much chances to find a place in the | 57 | * have much chances to find a place in the lower 4GB of memory. |
| 60 | * lower 4GB of memory. Unfortunately we cannot move it up | 58 | * Unfortunately we cannot move it up because that would make the |
| 61 | * because that would make the IOMMU useless. | 59 | * IOMMU useless. |
| 62 | */ | 60 | */ |
| 63 | |||
| 64 | /* First try to find some free unused space */ | ||
| 65 | if (!allocate_resource(&iomem_resource, &aper_res, | ||
| 66 | aper_size, | ||
| 67 | 0, 0xffffffff, | ||
| 68 | aper_size, | ||
| 69 | NULL, NULL)) { | ||
| 70 | printk(KERN_INFO "Putting aperture at %lx-%lx\n", | ||
| 71 | aper_res.start, aper_res.end); | ||
| 72 | return aper_res.start; | ||
| 73 | } | ||
| 74 | |||
| 75 | /* No free space found. Go on to waste some memory... */ | ||
| 76 | p = __alloc_bootmem_node(nd0, aper_size, aper_size, 0); | 61 | p = __alloc_bootmem_node(nd0, aper_size, aper_size, 0); |
| 77 | if (!p || __pa(p)+aper_size > 0xffffffff) { | 62 | if (!p || __pa(p)+aper_size > 0xffffffff) { |
| 78 | printk("Cannot allocate aperture memory hole (%p,%uK)\n", | 63 | printk("Cannot allocate aperture memory hole (%p,%uK)\n", |
| @@ -81,7 +66,7 @@ static u32 __init allocate_aperture(void) | |||
| 81 | free_bootmem_node(nd0, (unsigned long)p, aper_size); | 66 | free_bootmem_node(nd0, (unsigned long)p, aper_size); |
| 82 | return 0; | 67 | return 0; |
| 83 | } | 68 | } |
| 84 | printk("Mapping aperture over %d KB of precious RAM @ %lx\n", | 69 | printk("Mapping aperture over %d KB of RAM @ %lx\n", |
| 85 | aper_size >> 10, __pa(p)); | 70 | aper_size >> 10, __pa(p)); |
| 86 | return (u32)__pa(p); | 71 | return (u32)__pa(p); |
| 87 | } | 72 | } |
| @@ -102,16 +87,10 @@ static int __init aperture_valid(char *name, u64 aper_base, u32 aper_size) | |||
| 102 | printk("Aperture from %s pointing to e820 RAM. Ignoring.\n",name); | 87 | printk("Aperture from %s pointing to e820 RAM. Ignoring.\n",name); |
| 103 | return 0; | 88 | return 0; |
| 104 | } | 89 | } |
| 105 | /* Don't check the resource here because the aperture is usually | ||
| 106 | in an e820 reserved area, and we allocated these earlier. */ | ||
| 107 | return 1; | 90 | return 1; |
| 108 | } | 91 | } |
| 109 | 92 | ||
| 110 | /* | 93 | /* Find a PCI capability */ |
| 111 | * Find a PCI capability. | ||
| 112 | * This code runs before the PCI subsystem is initialized, so just | ||
| 113 | * access the northbridge directly. | ||
| 114 | */ | ||
| 115 | static __u32 __init find_cap(int num, int slot, int func, int cap) | 94 | static __u32 __init find_cap(int num, int slot, int func, int cap) |
| 116 | { | 95 | { |
| 117 | u8 pos; | 96 | u8 pos; |
| @@ -276,6 +255,8 @@ void __init iommu_hole_init(void) | |||
| 276 | fallback_aper_force) { | 255 | fallback_aper_force) { |
| 277 | printk("Your BIOS doesn't leave a aperture memory hole\n"); | 256 | printk("Your BIOS doesn't leave a aperture memory hole\n"); |
| 278 | printk("Please enable the IOMMU option in the BIOS setup\n"); | 257 | printk("Please enable the IOMMU option in the BIOS setup\n"); |
| 258 | printk("This costs you %d MB of RAM\n", | ||
| 259 | 32 << fallback_aper_order); | ||
| 279 | 260 | ||
| 280 | aper_order = fallback_aper_order; | 261 | aper_order = fallback_aper_order; |
| 281 | aper_alloc = allocate_aperture(); | 262 | aper_alloc = allocate_aperture(); |
