diff options
Diffstat (limited to 'arch')
47 files changed, 1136 insertions, 192 deletions
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 43af89c027d9..44cea2ddd22b 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_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.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Wed May 26 19:04:29 2010 | 4 | # Fri May 28 19:15:48 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | 7 | CONFIG_HAVE_PWM=y |
@@ -250,12 +250,15 @@ CONFIG_S3C_BOOT_UART_FORCE_FIFO=y | |||
250 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 | 250 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 |
251 | CONFIG_SAMSUNG_CLKSRC=y | 251 | CONFIG_SAMSUNG_CLKSRC=y |
252 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | 252 | CONFIG_S3C_GPIO_CFG_S3C24XX=y |
253 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | ||
253 | CONFIG_S3C_GPIO_PULL_UP=y | 254 | CONFIG_S3C_GPIO_PULL_UP=y |
254 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 255 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
255 | CONFIG_S3C_GPIO_SPACE=0 | 256 | CONFIG_S3C_GPIO_SPACE=0 |
256 | CONFIG_S3C_ADC=y | 257 | CONFIG_S3C_ADC=y |
257 | CONFIG_S3C_DEV_HSMMC=y | 258 | CONFIG_S3C_DEV_HSMMC=y |
259 | CONFIG_S3C_DEV_HSMMC1=y | ||
258 | CONFIG_S3C_DEV_HWMON=y | 260 | CONFIG_S3C_DEV_HWMON=y |
261 | CONFIG_S3C_DEV_FB=y | ||
259 | CONFIG_S3C_DEV_USB_HOST=y | 262 | CONFIG_S3C_DEV_USB_HOST=y |
260 | CONFIG_S3C_DEV_WDT=y | 263 | CONFIG_S3C_DEV_WDT=y |
261 | CONFIG_S3C_DEV_NAND=y | 264 | CONFIG_S3C_DEV_NAND=y |
@@ -322,11 +325,13 @@ CONFIG_MACH_SMDK2413=y | |||
322 | CONFIG_MACH_S3C2413=y | 325 | CONFIG_MACH_S3C2413=y |
323 | CONFIG_MACH_SMDK2412=y | 326 | CONFIG_MACH_SMDK2412=y |
324 | CONFIG_MACH_VSTMS=y | 327 | CONFIG_MACH_VSTMS=y |
328 | CONFIG_CPU_S3C2416=y | ||
329 | CONFIG_S3C2416_DMA=y | ||
325 | 330 | ||
326 | # | 331 | # |
327 | # S3C2416 Machines | 332 | # S3C2416 Machines |
328 | # | 333 | # |
329 | # CONFIG_MACH_SMDK2416 is not set | 334 | CONFIG_MACH_SMDK2416=y |
330 | CONFIG_CPU_S3C2440=y | 335 | CONFIG_CPU_S3C2440=y |
331 | CONFIG_CPU_S3C2442=y | 336 | CONFIG_CPU_S3C2442=y |
332 | CONFIG_CPU_S3C244X=y | 337 | CONFIG_CPU_S3C244X=y |
@@ -338,9 +343,9 @@ CONFIG_S3C2440_DMA=y | |||
338 | # S3C2440 and S3C2442 Machines | 343 | # S3C2440 and S3C2442 Machines |
339 | # | 344 | # |
340 | CONFIG_MACH_ANUBIS=y | 345 | CONFIG_MACH_ANUBIS=y |
341 | # CONFIG_MACH_NEO1973_GTA02 is not set | 346 | CONFIG_MACH_NEO1973_GTA02=y |
342 | CONFIG_MACH_OSIRIS=y | 347 | CONFIG_MACH_OSIRIS=y |
343 | # CONFIG_MACH_OSIRIS_DVS is not set | 348 | CONFIG_MACH_OSIRIS_DVS=m |
344 | CONFIG_MACH_RX3715=y | 349 | CONFIG_MACH_RX3715=y |
345 | CONFIG_ARCH_S3C2440=y | 350 | CONFIG_ARCH_S3C2440=y |
346 | CONFIG_MACH_NEXCODER_2440=y | 351 | CONFIG_MACH_NEXCODER_2440=y |
@@ -348,7 +353,7 @@ CONFIG_SMDK2440_CPU2440=y | |||
348 | CONFIG_SMDK2440_CPU2442=y | 353 | CONFIG_SMDK2440_CPU2442=y |
349 | CONFIG_MACH_AT2440EVB=y | 354 | CONFIG_MACH_AT2440EVB=y |
350 | CONFIG_MACH_MINI2440=y | 355 | CONFIG_MACH_MINI2440=y |
351 | # CONFIG_MACH_RX1950 is not set | 356 | CONFIG_MACH_RX1950=y |
352 | CONFIG_CPU_S3C2443=y | 357 | CONFIG_CPU_S3C2443=y |
353 | CONFIG_S3C2443_DMA=y | 358 | CONFIG_S3C2443_DMA=y |
354 | 359 | ||
@@ -1302,6 +1307,7 @@ CONFIG_INPUT_POWERMATE=m | |||
1302 | CONFIG_INPUT_YEALINK=m | 1307 | CONFIG_INPUT_YEALINK=m |
1303 | CONFIG_INPUT_CM109=m | 1308 | CONFIG_INPUT_CM109=m |
1304 | CONFIG_INPUT_UINPUT=m | 1309 | CONFIG_INPUT_UINPUT=m |
1310 | # CONFIG_INPUT_PCF50633_PMU is not set | ||
1305 | # CONFIG_INPUT_PCF8574 is not set | 1311 | # CONFIG_INPUT_PCF8574 is not set |
1306 | CONFIG_INPUT_GPIO_ROTARY_ENCODER=m | 1312 | CONFIG_INPUT_GPIO_ROTARY_ENCODER=m |
1307 | 1313 | ||
@@ -1490,7 +1496,16 @@ CONFIG_GPIOLIB=y | |||
1490 | # AC97 GPIO expanders: | 1496 | # AC97 GPIO expanders: |
1491 | # | 1497 | # |
1492 | # CONFIG_W1 is not set | 1498 | # CONFIG_W1 is not set |
1493 | # CONFIG_POWER_SUPPLY is not set | 1499 | CONFIG_POWER_SUPPLY=y |
1500 | # CONFIG_POWER_SUPPLY_DEBUG is not set | ||
1501 | # CONFIG_PDA_POWER is not set | ||
1502 | # CONFIG_APM_POWER is not set | ||
1503 | # CONFIG_TEST_POWER is not set | ||
1504 | # CONFIG_BATTERY_DS2760 is not set | ||
1505 | # CONFIG_BATTERY_DS2782 is not set | ||
1506 | # CONFIG_BATTERY_BQ27x00 is not set | ||
1507 | # CONFIG_BATTERY_MAX17040 is not set | ||
1508 | # CONFIG_CHARGER_PCF50633 is not set | ||
1494 | CONFIG_HWMON=y | 1509 | CONFIG_HWMON=y |
1495 | CONFIG_HWMON_VID=m | 1510 | CONFIG_HWMON_VID=m |
1496 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1511 | # CONFIG_HWMON_DEBUG_CHIP is not set |
@@ -1607,7 +1622,7 @@ CONFIG_MFD_SM501=y | |||
1607 | # CONFIG_HTC_PASIC3 is not set | 1622 | # CONFIG_HTC_PASIC3 is not set |
1608 | # CONFIG_HTC_I2CPLD is not set | 1623 | # CONFIG_HTC_I2CPLD is not set |
1609 | # CONFIG_UCB1400_CORE is not set | 1624 | # CONFIG_UCB1400_CORE is not set |
1610 | # CONFIG_TPS65010 is not set | 1625 | CONFIG_TPS65010=m |
1611 | # CONFIG_TWL4030_CORE is not set | 1626 | # CONFIG_TWL4030_CORE is not set |
1612 | # CONFIG_MFD_TMIO is not set | 1627 | # CONFIG_MFD_TMIO is not set |
1613 | # CONFIG_MFD_T7L66XB is not set | 1628 | # CONFIG_MFD_T7L66XB is not set |
@@ -1620,8 +1635,10 @@ CONFIG_MFD_SM501=y | |||
1620 | # CONFIG_MFD_WM831X is not set | 1635 | # CONFIG_MFD_WM831X is not set |
1621 | # CONFIG_MFD_WM8350_I2C is not set | 1636 | # CONFIG_MFD_WM8350_I2C is not set |
1622 | # CONFIG_MFD_WM8994 is not set | 1637 | # CONFIG_MFD_WM8994 is not set |
1623 | # CONFIG_MFD_PCF50633 is not set | 1638 | CONFIG_MFD_PCF50633=y |
1624 | # CONFIG_MFD_MC13783 is not set | 1639 | # CONFIG_MFD_MC13783 is not set |
1640 | # CONFIG_PCF50633_ADC is not set | ||
1641 | CONFIG_PCF50633_GPIO=y | ||
1625 | # CONFIG_AB3100_CORE is not set | 1642 | # CONFIG_AB3100_CORE is not set |
1626 | # CONFIG_EZX_PCAP is not set | 1643 | # CONFIG_EZX_PCAP is not set |
1627 | # CONFIG_AB4500_CORE is not set | 1644 | # CONFIG_AB4500_CORE is not set |
@@ -1737,6 +1754,7 @@ CONFIG_SND_S3C24XX_SOC_I2S=y | |||
1737 | CONFIG_SND_S3C_I2SV2_SOC=m | 1754 | CONFIG_SND_S3C_I2SV2_SOC=m |
1738 | CONFIG_SND_S3C2412_SOC_I2S=m | 1755 | CONFIG_SND_S3C2412_SOC_I2S=m |
1739 | CONFIG_SND_S3C_SOC_AC97=m | 1756 | CONFIG_SND_S3C_SOC_AC97=m |
1757 | # CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753 is not set | ||
1740 | CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m | 1758 | CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m |
1741 | CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m | 1759 | CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m |
1742 | CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m | 1760 | CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m |
@@ -2045,6 +2063,7 @@ CONFIG_RTC_INTF_DEV=y | |||
2045 | # CONFIG_RTC_DRV_BQ4802 is not set | 2063 | # CONFIG_RTC_DRV_BQ4802 is not set |
2046 | # CONFIG_RTC_DRV_RP5C01 is not set | 2064 | # CONFIG_RTC_DRV_RP5C01 is not set |
2047 | # CONFIG_RTC_DRV_V3020 is not set | 2065 | # CONFIG_RTC_DRV_V3020 is not set |
2066 | # CONFIG_RTC_DRV_PCF50633 is not set | ||
2048 | 2067 | ||
2049 | # | 2068 | # |
2050 | # on-CPU RTC drivers | 2069 | # on-CPU RTC drivers |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index 7d8b4cf3858c..2b642386f030 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -1,9 +1,10 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Wed May 26 19:04:30 2010 | 4 | # Fri May 28 19:05:39 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 9 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | 10 | CONFIG_GENERIC_TIME=y |
@@ -253,12 +254,15 @@ CONFIG_S3C_GPIO_TRACK=y | |||
253 | # CONFIG_S3C_ADC is not set | 254 | # CONFIG_S3C_ADC is not set |
254 | CONFIG_S3C_DEV_HSMMC=y | 255 | CONFIG_S3C_DEV_HSMMC=y |
255 | CONFIG_S3C_DEV_HSMMC1=y | 256 | CONFIG_S3C_DEV_HSMMC1=y |
257 | CONFIG_S3C_DEV_HSMMC2=y | ||
258 | CONFIG_S3C_DEV_HWMON=y | ||
256 | CONFIG_S3C_DEV_I2C1=y | 259 | CONFIG_S3C_DEV_I2C1=y |
257 | CONFIG_S3C_DEV_FB=y | 260 | CONFIG_S3C_DEV_FB=y |
258 | CONFIG_S3C_DEV_USB_HOST=y | 261 | CONFIG_S3C_DEV_USB_HOST=y |
259 | CONFIG_S3C_DEV_USB_HSOTG=y | 262 | CONFIG_S3C_DEV_USB_HSOTG=y |
260 | CONFIG_S3C_DEV_WDT=y | 263 | CONFIG_S3C_DEV_WDT=y |
261 | CONFIG_S3C_DEV_NAND=y | 264 | CONFIG_S3C_DEV_NAND=y |
265 | CONFIG_S3C_DEV_RTC=y | ||
262 | CONFIG_SAMSUNG_DEV_ADC=y | 266 | CONFIG_SAMSUNG_DEV_ADC=y |
263 | CONFIG_SAMSUNG_DEV_TS=y | 267 | CONFIG_SAMSUNG_DEV_TS=y |
264 | CONFIG_S3C_DMA=y | 268 | CONFIG_S3C_DMA=y |
@@ -271,6 +275,7 @@ CONFIG_S3C_DMA=y | |||
271 | # CONFIG_SAMSUNG_PM_CHECK is not set | 275 | # CONFIG_SAMSUNG_PM_CHECK is not set |
272 | CONFIG_SAMSUNG_WAKEMASK=y | 276 | CONFIG_SAMSUNG_WAKEMASK=y |
273 | CONFIG_PLAT_S3C64XX=y | 277 | CONFIG_PLAT_S3C64XX=y |
278 | CONFIG_CPU_S3C6400=y | ||
274 | CONFIG_CPU_S3C6410=y | 279 | CONFIG_CPU_S3C6410=y |
275 | CONFIG_S3C64XX_DMA=y | 280 | CONFIG_S3C64XX_DMA=y |
276 | CONFIG_S3C64XX_SETUP_SDHCI=y | 281 | CONFIG_S3C64XX_SETUP_SDHCI=y |
@@ -278,17 +283,18 @@ CONFIG_S3C64XX_SETUP_I2C0=y | |||
278 | CONFIG_S3C64XX_SETUP_I2C1=y | 283 | CONFIG_S3C64XX_SETUP_I2C1=y |
279 | CONFIG_S3C64XX_SETUP_FB_24BPP=y | 284 | CONFIG_S3C64XX_SETUP_FB_24BPP=y |
280 | CONFIG_S3C64XX_SETUP_SDHCI_GPIO=y | 285 | CONFIG_S3C64XX_SETUP_SDHCI_GPIO=y |
281 | # CONFIG_MACH_SMDK6400 is not set | 286 | CONFIG_MACH_SMDK6400=y |
282 | # CONFIG_MACH_ANW6410 is not set | 287 | CONFIG_MACH_ANW6410=y |
283 | CONFIG_MACH_SMDK6410=y | 288 | CONFIG_MACH_SMDK6410=y |
284 | CONFIG_SMDK6410_SD_CH0=y | 289 | CONFIG_SMDK6410_SD_CH0=y |
285 | # CONFIG_SMDK6410_SD_CH1 is not set | 290 | # CONFIG_SMDK6410_SD_CH1 is not set |
286 | # CONFIG_SMDK6410_WM1190_EV1 is not set | 291 | # CONFIG_SMDK6410_WM1190_EV1 is not set |
287 | # CONFIG_SMDK6410_WM1192_EV1 is not set | 292 | # CONFIG_SMDK6410_WM1192_EV1 is not set |
288 | # CONFIG_MACH_NCP is not set | 293 | CONFIG_MACH_NCP=y |
289 | # CONFIG_MACH_HMT is not set | 294 | CONFIG_MACH_HMT=y |
290 | # CONFIG_MACH_SMARTQ5 is not set | 295 | CONFIG_MACH_SMARTQ=y |
291 | # CONFIG_MACH_SMARTQ7 is not set | 296 | CONFIG_MACH_SMARTQ5=y |
297 | CONFIG_MACH_SMARTQ7=y | ||
292 | 298 | ||
293 | # | 299 | # |
294 | # Processor Type | 300 | # Processor Type |
@@ -475,6 +481,9 @@ CONFIG_MTD_CFI_I2=y | |||
475 | # | 481 | # |
476 | # Self-contained MTD device drivers | 482 | # Self-contained MTD device drivers |
477 | # | 483 | # |
484 | # CONFIG_MTD_DATAFLASH is not set | ||
485 | # CONFIG_MTD_M25P80 is not set | ||
486 | # CONFIG_MTD_SST25L is not set | ||
478 | # CONFIG_MTD_SLRAM is not set | 487 | # CONFIG_MTD_SLRAM is not set |
479 | # CONFIG_MTD_PHRAM is not set | 488 | # CONFIG_MTD_PHRAM is not set |
480 | # CONFIG_MTD_MTDRAM is not set | 489 | # CONFIG_MTD_MTDRAM is not set |
@@ -501,6 +510,7 @@ CONFIG_MTD_NAND_S3C2410=y | |||
501 | # CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set | 510 | # CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set |
502 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 511 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
503 | # CONFIG_MTD_NAND_PLATFORM is not set | 512 | # CONFIG_MTD_NAND_PLATFORM is not set |
513 | # CONFIG_MTD_ALAUDA is not set | ||
504 | # CONFIG_MTD_ONENAND is not set | 514 | # CONFIG_MTD_ONENAND is not set |
505 | 515 | ||
506 | # | 516 | # |
@@ -521,6 +531,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
521 | # | 531 | # |
522 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | 532 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected |
523 | # | 533 | # |
534 | # CONFIG_BLK_DEV_UB is not set | ||
524 | CONFIG_BLK_DEV_RAM=y | 535 | CONFIG_BLK_DEV_RAM=y |
525 | CONFIG_BLK_DEV_RAM_COUNT=16 | 536 | CONFIG_BLK_DEV_RAM_COUNT=16 |
526 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 537 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
@@ -534,12 +545,14 @@ CONFIG_MISC_DEVICES=y | |||
534 | # CONFIG_ISL29003 is not set | 545 | # CONFIG_ISL29003 is not set |
535 | # CONFIG_SENSORS_TSL2550 is not set | 546 | # CONFIG_SENSORS_TSL2550 is not set |
536 | # CONFIG_DS1682 is not set | 547 | # CONFIG_DS1682 is not set |
548 | # CONFIG_TI_DAC7512 is not set | ||
537 | # CONFIG_C2PORT is not set | 549 | # CONFIG_C2PORT is not set |
538 | 550 | ||
539 | # | 551 | # |
540 | # EEPROM support | 552 | # EEPROM support |
541 | # | 553 | # |
542 | CONFIG_EEPROM_AT24=y | 554 | CONFIG_EEPROM_AT24=y |
555 | # CONFIG_EEPROM_AT25 is not set | ||
543 | # CONFIG_EEPROM_LEGACY is not set | 556 | # CONFIG_EEPROM_LEGACY is not set |
544 | # CONFIG_EEPROM_MAX6875 is not set | 557 | # CONFIG_EEPROM_MAX6875 is not set |
545 | # CONFIG_EEPROM_93CX6 is not set | 558 | # CONFIG_EEPROM_93CX6 is not set |
@@ -654,6 +667,7 @@ CONFIG_SERIAL_SAMSUNG_UARTS=4 | |||
654 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set | 667 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set |
655 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y | 668 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y |
656 | CONFIG_SERIAL_S3C6400=y | 669 | CONFIG_SERIAL_S3C6400=y |
670 | # CONFIG_SERIAL_MAX3100 is not set | ||
657 | CONFIG_SERIAL_CORE=y | 671 | CONFIG_SERIAL_CORE=y |
658 | CONFIG_SERIAL_CORE_CONSOLE=y | 672 | CONFIG_SERIAL_CORE_CONSOLE=y |
659 | # CONFIG_SERIAL_TIMBERDALE is not set | 673 | # CONFIG_SERIAL_TIMBERDALE is not set |
@@ -694,6 +708,7 @@ CONFIG_I2C_S3C2410=y | |||
694 | # | 708 | # |
695 | # CONFIG_I2C_PARPORT_LIGHT is not set | 709 | # CONFIG_I2C_PARPORT_LIGHT is not set |
696 | # CONFIG_I2C_TAOS_EVM is not set | 710 | # CONFIG_I2C_TAOS_EVM is not set |
711 | # CONFIG_I2C_TINY_USB is not set | ||
697 | 712 | ||
698 | # | 713 | # |
699 | # Other I2C/SMBus bus drivers | 714 | # Other I2C/SMBus bus drivers |
@@ -703,7 +718,24 @@ CONFIG_I2C_S3C2410=y | |||
703 | # CONFIG_I2C_DEBUG_CORE is not set | 718 | # CONFIG_I2C_DEBUG_CORE is not set |
704 | # CONFIG_I2C_DEBUG_ALGO is not set | 719 | # CONFIG_I2C_DEBUG_ALGO is not set |
705 | # CONFIG_I2C_DEBUG_BUS is not set | 720 | # CONFIG_I2C_DEBUG_BUS is not set |
706 | # CONFIG_SPI is not set | 721 | CONFIG_SPI=y |
722 | # CONFIG_SPI_DEBUG is not set | ||
723 | CONFIG_SPI_MASTER=y | ||
724 | |||
725 | # | ||
726 | # SPI Master Controller Drivers | ||
727 | # | ||
728 | CONFIG_SPI_BITBANG=m | ||
729 | CONFIG_SPI_GPIO=m | ||
730 | CONFIG_SPI_S3C64XX=m | ||
731 | # CONFIG_SPI_XILINX is not set | ||
732 | # CONFIG_SPI_DESIGNWARE is not set | ||
733 | |||
734 | # | ||
735 | # SPI Protocol Masters | ||
736 | # | ||
737 | # CONFIG_SPI_SPIDEV is not set | ||
738 | # CONFIG_SPI_TLE62X0 is not set | ||
707 | 739 | ||
708 | # | 740 | # |
709 | # PPS support | 741 | # PPS support |
@@ -735,6 +767,9 @@ CONFIG_GPIOLIB=y | |||
735 | # | 767 | # |
736 | # SPI GPIO expanders: | 768 | # SPI GPIO expanders: |
737 | # | 769 | # |
770 | # CONFIG_GPIO_MAX7301 is not set | ||
771 | # CONFIG_GPIO_MCP23S08 is not set | ||
772 | # CONFIG_GPIO_MC33880 is not set | ||
738 | 773 | ||
739 | # | 774 | # |
740 | # AC97 GPIO expanders: | 775 | # AC97 GPIO expanders: |
@@ -750,6 +785,7 @@ CONFIG_HWMON=y | |||
750 | # | 785 | # |
751 | # CONFIG_SENSORS_AD7414 is not set | 786 | # CONFIG_SENSORS_AD7414 is not set |
752 | # CONFIG_SENSORS_AD7418 is not set | 787 | # CONFIG_SENSORS_AD7418 is not set |
788 | # CONFIG_SENSORS_ADCXX is not set | ||
753 | # CONFIG_SENSORS_ADM1021 is not set | 789 | # CONFIG_SENSORS_ADM1021 is not set |
754 | # CONFIG_SENSORS_ADM1025 is not set | 790 | # CONFIG_SENSORS_ADM1025 is not set |
755 | # CONFIG_SENSORS_ADM1026 is not set | 791 | # CONFIG_SENSORS_ADM1026 is not set |
@@ -771,6 +807,7 @@ CONFIG_HWMON=y | |||
771 | # CONFIG_SENSORS_GL520SM is not set | 807 | # CONFIG_SENSORS_GL520SM is not set |
772 | # CONFIG_SENSORS_IT87 is not set | 808 | # CONFIG_SENSORS_IT87 is not set |
773 | # CONFIG_SENSORS_LM63 is not set | 809 | # CONFIG_SENSORS_LM63 is not set |
810 | # CONFIG_SENSORS_LM70 is not set | ||
774 | # CONFIG_SENSORS_LM73 is not set | 811 | # CONFIG_SENSORS_LM73 is not set |
775 | # CONFIG_SENSORS_LM75 is not set | 812 | # CONFIG_SENSORS_LM75 is not set |
776 | # CONFIG_SENSORS_LM77 is not set | 813 | # CONFIG_SENSORS_LM77 is not set |
@@ -785,6 +822,7 @@ CONFIG_HWMON=y | |||
785 | # CONFIG_SENSORS_LTC4215 is not set | 822 | # CONFIG_SENSORS_LTC4215 is not set |
786 | # CONFIG_SENSORS_LTC4245 is not set | 823 | # CONFIG_SENSORS_LTC4245 is not set |
787 | # CONFIG_SENSORS_LM95241 is not set | 824 | # CONFIG_SENSORS_LM95241 is not set |
825 | # CONFIG_SENSORS_MAX1111 is not set | ||
788 | # CONFIG_SENSORS_MAX1619 is not set | 826 | # CONFIG_SENSORS_MAX1619 is not set |
789 | # CONFIG_SENSORS_MAX6650 is not set | 827 | # CONFIG_SENSORS_MAX6650 is not set |
790 | # CONFIG_SENSORS_PC87360 is not set | 828 | # CONFIG_SENSORS_PC87360 is not set |
@@ -796,6 +834,7 @@ CONFIG_HWMON=y | |||
796 | # CONFIG_SENSORS_SMSC47M192 is not set | 834 | # CONFIG_SENSORS_SMSC47M192 is not set |
797 | # CONFIG_SENSORS_SMSC47B397 is not set | 835 | # CONFIG_SENSORS_SMSC47B397 is not set |
798 | # CONFIG_SENSORS_ADS7828 is not set | 836 | # CONFIG_SENSORS_ADS7828 is not set |
837 | # CONFIG_SENSORS_ADS7871 is not set | ||
799 | # CONFIG_SENSORS_AMC6821 is not set | 838 | # CONFIG_SENSORS_AMC6821 is not set |
800 | # CONFIG_SENSORS_THMC50 is not set | 839 | # CONFIG_SENSORS_THMC50 is not set |
801 | # CONFIG_SENSORS_TMP401 is not set | 840 | # CONFIG_SENSORS_TMP401 is not set |
@@ -809,6 +848,7 @@ CONFIG_HWMON=y | |||
809 | # CONFIG_SENSORS_W83L786NG is not set | 848 | # CONFIG_SENSORS_W83L786NG is not set |
810 | # CONFIG_SENSORS_W83627HF is not set | 849 | # CONFIG_SENSORS_W83627HF is not set |
811 | # CONFIG_SENSORS_W83627EHF is not set | 850 | # CONFIG_SENSORS_W83627EHF is not set |
851 | # CONFIG_SENSORS_LIS3_SPI is not set | ||
812 | # CONFIG_SENSORS_LIS3_I2C is not set | 852 | # CONFIG_SENSORS_LIS3_I2C is not set |
813 | # CONFIG_THERMAL is not set | 853 | # CONFIG_THERMAL is not set |
814 | # CONFIG_WATCHDOG is not set | 854 | # CONFIG_WATCHDOG is not set |
@@ -845,7 +885,10 @@ CONFIG_SSB_POSSIBLE=y | |||
845 | # CONFIG_MFD_WM8350_I2C is not set | 885 | # CONFIG_MFD_WM8350_I2C is not set |
846 | # CONFIG_MFD_WM8994 is not set | 886 | # CONFIG_MFD_WM8994 is not set |
847 | # CONFIG_MFD_PCF50633 is not set | 887 | # CONFIG_MFD_PCF50633 is not set |
888 | # CONFIG_MFD_MC13783 is not set | ||
848 | # CONFIG_AB3100_CORE is not set | 889 | # CONFIG_AB3100_CORE is not set |
890 | # CONFIG_EZX_PCAP is not set | ||
891 | # CONFIG_AB4500_CORE is not set | ||
849 | # CONFIG_REGULATOR is not set | 892 | # CONFIG_REGULATOR is not set |
850 | # CONFIG_MEDIA_SUPPORT is not set | 893 | # CONFIG_MEDIA_SUPPORT is not set |
851 | 894 | ||
@@ -854,8 +897,47 @@ CONFIG_SSB_POSSIBLE=y | |||
854 | # | 897 | # |
855 | # CONFIG_VGASTATE is not set | 898 | # CONFIG_VGASTATE is not set |
856 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 899 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
857 | # CONFIG_FB is not set | 900 | CONFIG_FB=y |
858 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 901 | # CONFIG_FIRMWARE_EDID is not set |
902 | # CONFIG_FB_DDC is not set | ||
903 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
904 | CONFIG_FB_CFB_FILLRECT=y | ||
905 | CONFIG_FB_CFB_COPYAREA=y | ||
906 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
907 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
908 | # CONFIG_FB_SYS_FILLRECT is not set | ||
909 | # CONFIG_FB_SYS_COPYAREA is not set | ||
910 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
911 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
912 | # CONFIG_FB_SYS_FOPS is not set | ||
913 | # CONFIG_FB_SVGALIB is not set | ||
914 | # CONFIG_FB_MACMODES is not set | ||
915 | # CONFIG_FB_BACKLIGHT is not set | ||
916 | # CONFIG_FB_MODE_HELPERS is not set | ||
917 | # CONFIG_FB_TILEBLITTING is not set | ||
918 | |||
919 | # | ||
920 | # Frame buffer hardware drivers | ||
921 | # | ||
922 | # CONFIG_FB_S1D13XXX is not set | ||
923 | CONFIG_FB_S3C=y | ||
924 | # CONFIG_FB_S3C_DEBUG_REGWRITE is not set | ||
925 | # CONFIG_FB_VIRTUAL is not set | ||
926 | # CONFIG_FB_METRONOME is not set | ||
927 | # CONFIG_FB_MB862XX is not set | ||
928 | # CONFIG_FB_BROADSHEET is not set | ||
929 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
930 | CONFIG_LCD_CLASS_DEVICE=y | ||
931 | # CONFIG_LCD_L4F00242T03 is not set | ||
932 | # CONFIG_LCD_LMS283GF05 is not set | ||
933 | CONFIG_LCD_LTV350QV=y | ||
934 | # CONFIG_LCD_ILI9320 is not set | ||
935 | # CONFIG_LCD_TDO24M is not set | ||
936 | # CONFIG_LCD_VGG2432A4 is not set | ||
937 | # CONFIG_LCD_PLATFORM is not set | ||
938 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
939 | CONFIG_BACKLIGHT_GENERIC=y | ||
940 | CONFIG_BACKLIGHT_PWM=y | ||
859 | 941 | ||
860 | # | 942 | # |
861 | # Display device support | 943 | # Display device support |
@@ -867,6 +949,8 @@ CONFIG_SSB_POSSIBLE=y | |||
867 | # | 949 | # |
868 | # CONFIG_VGA_CONSOLE is not set | 950 | # CONFIG_VGA_CONSOLE is not set |
869 | CONFIG_DUMMY_CONSOLE=y | 951 | CONFIG_DUMMY_CONSOLE=y |
952 | # CONFIG_FRAMEBUFFER_CONSOLE is not set | ||
953 | # CONFIG_LOGO is not set | ||
870 | CONFIG_SOUND=y | 954 | CONFIG_SOUND=y |
871 | CONFIG_SOUND_OSS_CORE=y | 955 | CONFIG_SOUND_OSS_CORE=y |
872 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y | 956 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y |
@@ -895,6 +979,11 @@ CONFIG_SND_DRIVERS=y | |||
895 | # CONFIG_SND_SERIAL_U16550 is not set | 979 | # CONFIG_SND_SERIAL_U16550 is not set |
896 | # CONFIG_SND_MPU401 is not set | 980 | # CONFIG_SND_MPU401 is not set |
897 | CONFIG_SND_ARM=y | 981 | CONFIG_SND_ARM=y |
982 | CONFIG_SND_SPI=y | ||
983 | CONFIG_SND_USB=y | ||
984 | # CONFIG_SND_USB_AUDIO is not set | ||
985 | # CONFIG_SND_USB_UA101 is not set | ||
986 | # CONFIG_SND_USB_CAIAQ is not set | ||
898 | CONFIG_SND_SOC=m | 987 | CONFIG_SND_SOC=m |
899 | CONFIG_SND_SOC_AC97_BUS=y | 988 | CONFIG_SND_SOC_AC97_BUS=y |
900 | CONFIG_SND_S3C24XX_SOC=m | 989 | CONFIG_SND_S3C24XX_SOC=m |
@@ -909,29 +998,197 @@ CONFIG_AC97_BUS=m | |||
909 | CONFIG_HID_SUPPORT=y | 998 | CONFIG_HID_SUPPORT=y |
910 | CONFIG_HID=y | 999 | CONFIG_HID=y |
911 | # CONFIG_HIDRAW is not set | 1000 | # CONFIG_HIDRAW is not set |
1001 | |||
1002 | # | ||
1003 | # USB Input Devices | ||
1004 | # | ||
1005 | CONFIG_USB_HID=y | ||
912 | # CONFIG_HID_PID is not set | 1006 | # CONFIG_HID_PID is not set |
1007 | # CONFIG_USB_HIDDEV is not set | ||
913 | 1008 | ||
914 | # | 1009 | # |
915 | # Special HID drivers | 1010 | # Special HID drivers |
916 | # | 1011 | # |
1012 | # CONFIG_HID_3M_PCT is not set | ||
1013 | CONFIG_HID_A4TECH=y | ||
1014 | CONFIG_HID_APPLE=y | ||
1015 | CONFIG_HID_BELKIN=y | ||
1016 | # CONFIG_HID_CANDO is not set | ||
1017 | CONFIG_HID_CHERRY=y | ||
1018 | CONFIG_HID_CHICONY=y | ||
1019 | # CONFIG_HID_PRODIKEYS is not set | ||
1020 | CONFIG_HID_CYPRESS=y | ||
1021 | # CONFIG_HID_DRAGONRISE is not set | ||
1022 | # CONFIG_HID_EGALAX is not set | ||
1023 | CONFIG_HID_EZKEY=y | ||
1024 | CONFIG_HID_KYE=y | ||
1025 | # CONFIG_HID_GYRATION is not set | ||
1026 | # CONFIG_HID_TWINHAN is not set | ||
1027 | CONFIG_HID_KENSINGTON=y | ||
1028 | CONFIG_HID_LOGITECH=y | ||
1029 | # CONFIG_LOGITECH_FF is not set | ||
1030 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
1031 | # CONFIG_LOGIG940_FF is not set | ||
1032 | CONFIG_HID_MICROSOFT=y | ||
1033 | # CONFIG_HID_MOSART is not set | ||
1034 | CONFIG_HID_MONTEREY=y | ||
1035 | # CONFIG_HID_NTRIG is not set | ||
1036 | # CONFIG_HID_ORTEK is not set | ||
1037 | # CONFIG_HID_PANTHERLORD is not set | ||
1038 | # CONFIG_HID_PETALYNX is not set | ||
1039 | # CONFIG_HID_PICOLCD is not set | ||
1040 | # CONFIG_HID_QUANTA is not set | ||
1041 | # CONFIG_HID_ROCCAT_KONE is not set | ||
1042 | # CONFIG_HID_SAMSUNG is not set | ||
1043 | # CONFIG_HID_SONY is not set | ||
1044 | # CONFIG_HID_STANTUM is not set | ||
1045 | # CONFIG_HID_SUNPLUS is not set | ||
1046 | # CONFIG_HID_GREENASIA is not set | ||
1047 | # CONFIG_HID_SMARTJOYPLUS is not set | ||
1048 | # CONFIG_HID_TOPSEED is not set | ||
1049 | # CONFIG_HID_THRUSTMASTER is not set | ||
1050 | # CONFIG_HID_ZEROPLUS is not set | ||
1051 | # CONFIG_HID_ZYDACRON is not set | ||
917 | CONFIG_USB_SUPPORT=y | 1052 | CONFIG_USB_SUPPORT=y |
918 | CONFIG_USB_ARCH_HAS_HCD=y | 1053 | CONFIG_USB_ARCH_HAS_HCD=y |
919 | CONFIG_USB_ARCH_HAS_OHCI=y | 1054 | CONFIG_USB_ARCH_HAS_OHCI=y |
920 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 1055 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
921 | # CONFIG_USB is not set | 1056 | CONFIG_USB=y |
1057 | # CONFIG_USB_DEBUG is not set | ||
1058 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
922 | 1059 | ||
923 | # | 1060 | # |
924 | # Enable Host or Gadget support to see Inventra options | 1061 | # Miscellaneous USB options |
925 | # | 1062 | # |
1063 | CONFIG_USB_DEVICEFS=y | ||
1064 | CONFIG_USB_DEVICE_CLASS=y | ||
1065 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
1066 | # CONFIG_USB_MON is not set | ||
1067 | # CONFIG_USB_WUSB is not set | ||
1068 | # CONFIG_USB_WUSB_CBAF is not set | ||
1069 | |||
1070 | # | ||
1071 | # USB Host Controller Drivers | ||
1072 | # | ||
1073 | # CONFIG_USB_C67X00_HCD is not set | ||
1074 | # CONFIG_USB_OXU210HP_HCD is not set | ||
1075 | # CONFIG_USB_ISP116X_HCD is not set | ||
1076 | # CONFIG_USB_ISP1760_HCD is not set | ||
1077 | # CONFIG_USB_ISP1362_HCD is not set | ||
1078 | CONFIG_USB_OHCI_HCD=y | ||
1079 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | ||
1080 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1081 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
1082 | # CONFIG_USB_SL811_HCD is not set | ||
1083 | # CONFIG_USB_R8A66597_HCD is not set | ||
1084 | # CONFIG_USB_HWA_HCD is not set | ||
1085 | # CONFIG_USB_MUSB_HDRC is not set | ||
1086 | |||
1087 | # | ||
1088 | # USB Device Class drivers | ||
1089 | # | ||
1090 | CONFIG_USB_ACM=m | ||
1091 | CONFIG_USB_PRINTER=m | ||
1092 | # CONFIG_USB_WDM is not set | ||
1093 | # CONFIG_USB_TMC is not set | ||
926 | 1094 | ||
927 | # | 1095 | # |
928 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | 1096 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may |
929 | # | 1097 | # |
1098 | |||
1099 | # | ||
1100 | # also be needed; see USB_STORAGE Help for more info | ||
1101 | # | ||
1102 | # CONFIG_USB_LIBUSUAL is not set | ||
1103 | |||
1104 | # | ||
1105 | # USB Imaging devices | ||
1106 | # | ||
1107 | # CONFIG_USB_MDC800 is not set | ||
1108 | |||
1109 | # | ||
1110 | # USB port drivers | ||
1111 | # | ||
1112 | CONFIG_USB_SERIAL=m | ||
1113 | # CONFIG_USB_EZUSB is not set | ||
1114 | CONFIG_USB_SERIAL_GENERIC=y | ||
1115 | # CONFIG_USB_SERIAL_AIRCABLE is not set | ||
1116 | # CONFIG_USB_SERIAL_ARK3116 is not set | ||
1117 | # CONFIG_USB_SERIAL_BELKIN is not set | ||
1118 | # CONFIG_USB_SERIAL_CH341 is not set | ||
1119 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | ||
1120 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | ||
1121 | # CONFIG_USB_SERIAL_CP210X is not set | ||
1122 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set | ||
1123 | CONFIG_USB_SERIAL_EMPEG=m | ||
1124 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
1125 | # CONFIG_USB_SERIAL_FUNSOFT is not set | ||
1126 | # CONFIG_USB_SERIAL_VISOR is not set | ||
1127 | # CONFIG_USB_SERIAL_IPAQ is not set | ||
1128 | # CONFIG_USB_SERIAL_IR is not set | ||
1129 | # CONFIG_USB_SERIAL_EDGEPORT is not set | ||
1130 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set | ||
1131 | # CONFIG_USB_SERIAL_GARMIN is not set | ||
1132 | # CONFIG_USB_SERIAL_IPW is not set | ||
1133 | # CONFIG_USB_SERIAL_IUU is not set | ||
1134 | # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set | ||
1135 | # CONFIG_USB_SERIAL_KEYSPAN is not set | ||
1136 | # CONFIG_USB_SERIAL_KLSI is not set | ||
1137 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
1138 | # CONFIG_USB_SERIAL_MCT_U232 is not set | ||
1139 | # CONFIG_USB_SERIAL_MOS7720 is not set | ||
1140 | # CONFIG_USB_SERIAL_MOS7840 is not set | ||
1141 | # CONFIG_USB_SERIAL_MOTOROLA is not set | ||
1142 | # CONFIG_USB_SERIAL_NAVMAN is not set | ||
1143 | CONFIG_USB_SERIAL_PL2303=m | ||
1144 | # CONFIG_USB_SERIAL_OTI6858 is not set | ||
1145 | # CONFIG_USB_SERIAL_QCAUX is not set | ||
1146 | # CONFIG_USB_SERIAL_QUALCOMM is not set | ||
1147 | # CONFIG_USB_SERIAL_SPCP8X5 is not set | ||
1148 | # CONFIG_USB_SERIAL_HP4X is not set | ||
1149 | # CONFIG_USB_SERIAL_SAFE is not set | ||
1150 | # CONFIG_USB_SERIAL_SIEMENS_MPI is not set | ||
1151 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set | ||
1152 | # CONFIG_USB_SERIAL_SYMBOL is not set | ||
1153 | # CONFIG_USB_SERIAL_TI is not set | ||
1154 | # CONFIG_USB_SERIAL_CYBERJACK is not set | ||
1155 | # CONFIG_USB_SERIAL_XIRCOM is not set | ||
1156 | # CONFIG_USB_SERIAL_OPTION is not set | ||
1157 | # CONFIG_USB_SERIAL_OMNINET is not set | ||
1158 | # CONFIG_USB_SERIAL_OPTICON is not set | ||
1159 | # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set | ||
1160 | # CONFIG_USB_SERIAL_ZIO is not set | ||
1161 | # CONFIG_USB_SERIAL_DEBUG is not set | ||
1162 | |||
1163 | # | ||
1164 | # USB Miscellaneous drivers | ||
1165 | # | ||
1166 | # CONFIG_USB_EMI62 is not set | ||
1167 | # CONFIG_USB_EMI26 is not set | ||
1168 | # CONFIG_USB_ADUTUX is not set | ||
1169 | # CONFIG_USB_SEVSEG is not set | ||
1170 | # CONFIG_USB_RIO500 is not set | ||
1171 | # CONFIG_USB_LEGOTOWER is not set | ||
1172 | # CONFIG_USB_LCD is not set | ||
1173 | # CONFIG_USB_LED is not set | ||
1174 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1175 | # CONFIG_USB_CYTHERM is not set | ||
1176 | # CONFIG_USB_IDMOUSE is not set | ||
1177 | # CONFIG_USB_FTDI_ELAN is not set | ||
1178 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1179 | # CONFIG_USB_LD is not set | ||
1180 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1181 | # CONFIG_USB_IOWARRIOR is not set | ||
1182 | # CONFIG_USB_TEST is not set | ||
1183 | # CONFIG_USB_ISIGHTFW is not set | ||
930 | # CONFIG_USB_GADGET is not set | 1184 | # CONFIG_USB_GADGET is not set |
931 | 1185 | ||
932 | # | 1186 | # |
933 | # OTG and related infrastructure | 1187 | # OTG and related infrastructure |
934 | # | 1188 | # |
1189 | # CONFIG_USB_GPIO_VBUS is not set | ||
1190 | # CONFIG_USB_ULPI is not set | ||
1191 | # CONFIG_NOP_USB_XCEIV is not set | ||
935 | CONFIG_MMC=y | 1192 | CONFIG_MMC=y |
936 | CONFIG_MMC_DEBUG=y | 1193 | CONFIG_MMC_DEBUG=y |
937 | CONFIG_MMC_UNSAFE_RESUME=y | 1194 | CONFIG_MMC_UNSAFE_RESUME=y |
@@ -951,11 +1208,77 @@ CONFIG_MMC_SDHCI=y | |||
951 | # CONFIG_MMC_SDHCI_PLTFM is not set | 1208 | # CONFIG_MMC_SDHCI_PLTFM is not set |
952 | CONFIG_MMC_SDHCI_S3C=y | 1209 | CONFIG_MMC_SDHCI_S3C=y |
953 | # CONFIG_MMC_SDHCI_S3C_DMA is not set | 1210 | # CONFIG_MMC_SDHCI_S3C_DMA is not set |
1211 | # CONFIG_MMC_SPI is not set | ||
954 | # CONFIG_MEMSTICK is not set | 1212 | # CONFIG_MEMSTICK is not set |
955 | # CONFIG_NEW_LEDS is not set | 1213 | # CONFIG_NEW_LEDS is not set |
956 | # CONFIG_ACCESSIBILITY is not set | 1214 | # CONFIG_ACCESSIBILITY is not set |
957 | CONFIG_RTC_LIB=y | 1215 | CONFIG_RTC_LIB=y |
958 | # CONFIG_RTC_CLASS is not set | 1216 | CONFIG_RTC_CLASS=y |
1217 | CONFIG_RTC_HCTOSYS=y | ||
1218 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1219 | # CONFIG_RTC_DEBUG is not set | ||
1220 | |||
1221 | # | ||
1222 | # RTC interfaces | ||
1223 | # | ||
1224 | CONFIG_RTC_INTF_SYSFS=y | ||
1225 | CONFIG_RTC_INTF_PROC=y | ||
1226 | CONFIG_RTC_INTF_DEV=y | ||
1227 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
1228 | # CONFIG_RTC_DRV_TEST is not set | ||
1229 | |||
1230 | # | ||
1231 | # I2C RTC drivers | ||
1232 | # | ||
1233 | # CONFIG_RTC_DRV_DS1307 is not set | ||
1234 | # CONFIG_RTC_DRV_DS1374 is not set | ||
1235 | # CONFIG_RTC_DRV_DS1672 is not set | ||
1236 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
1237 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
1238 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
1239 | # CONFIG_RTC_DRV_X1205 is not set | ||
1240 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
1241 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
1242 | # CONFIG_RTC_DRV_M41T80 is not set | ||
1243 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1244 | # CONFIG_RTC_DRV_S35390A is not set | ||
1245 | # CONFIG_RTC_DRV_FM3130 is not set | ||
1246 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1247 | # CONFIG_RTC_DRV_RX8025 is not set | ||
1248 | |||
1249 | # | ||
1250 | # SPI RTC drivers | ||
1251 | # | ||
1252 | # CONFIG_RTC_DRV_M41T94 is not set | ||
1253 | # CONFIG_RTC_DRV_DS1305 is not set | ||
1254 | # CONFIG_RTC_DRV_DS1390 is not set | ||
1255 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
1256 | # CONFIG_RTC_DRV_R9701 is not set | ||
1257 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
1258 | # CONFIG_RTC_DRV_DS3234 is not set | ||
1259 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
1260 | |||
1261 | # | ||
1262 | # Platform RTC drivers | ||
1263 | # | ||
1264 | # CONFIG_RTC_DRV_CMOS is not set | ||
1265 | # CONFIG_RTC_DRV_DS1286 is not set | ||
1266 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1267 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1268 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1269 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1270 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1271 | # CONFIG_RTC_DRV_M48T35 is not set | ||
1272 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1273 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1274 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
1275 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1276 | # CONFIG_RTC_DRV_V3020 is not set | ||
1277 | |||
1278 | # | ||
1279 | # on-CPU RTC drivers | ||
1280 | # | ||
1281 | CONFIG_RTC_DRV_S3C=y | ||
959 | # CONFIG_DMADEVICES is not set | 1282 | # CONFIG_DMADEVICES is not set |
960 | # CONFIG_AUXDISPLAY is not set | 1283 | # CONFIG_AUXDISPLAY is not set |
961 | # CONFIG_UIO is not set | 1284 | # CONFIG_UIO is not set |
@@ -1052,7 +1375,46 @@ CONFIG_ROMFS_ON_BLOCK=y | |||
1052 | # | 1375 | # |
1053 | # CONFIG_PARTITION_ADVANCED is not set | 1376 | # CONFIG_PARTITION_ADVANCED is not set |
1054 | CONFIG_MSDOS_PARTITION=y | 1377 | CONFIG_MSDOS_PARTITION=y |
1055 | # CONFIG_NLS is not set | 1378 | CONFIG_NLS=y |
1379 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1380 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
1381 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1382 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1383 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1384 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1385 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1386 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1387 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1388 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1389 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1390 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1391 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1392 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1393 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1394 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1395 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1396 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1397 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1398 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1399 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1400 | # CONFIG_NLS_ISO8859_8 is not set | ||
1401 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1402 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1403 | # CONFIG_NLS_ASCII is not set | ||
1404 | # CONFIG_NLS_ISO8859_1 is not set | ||
1405 | # CONFIG_NLS_ISO8859_2 is not set | ||
1406 | # CONFIG_NLS_ISO8859_3 is not set | ||
1407 | # CONFIG_NLS_ISO8859_4 is not set | ||
1408 | # CONFIG_NLS_ISO8859_5 is not set | ||
1409 | # CONFIG_NLS_ISO8859_6 is not set | ||
1410 | # CONFIG_NLS_ISO8859_7 is not set | ||
1411 | # CONFIG_NLS_ISO8859_9 is not set | ||
1412 | # CONFIG_NLS_ISO8859_13 is not set | ||
1413 | # CONFIG_NLS_ISO8859_14 is not set | ||
1414 | # CONFIG_NLS_ISO8859_15 is not set | ||
1415 | # CONFIG_NLS_KOI8_R is not set | ||
1416 | # CONFIG_NLS_KOI8_U is not set | ||
1417 | # CONFIG_NLS_UTF8 is not set | ||
1056 | 1418 | ||
1057 | # | 1419 | # |
1058 | # Kernel hacking | 1420 | # Kernel hacking |
diff --git a/arch/arm/mach-s3c64xx/clock.c b/arch/arm/mach-s3c64xx/clock.c index 7a4138beb665..fbd85a9b7bbf 100644 --- a/arch/arm/mach-s3c64xx/clock.c +++ b/arch/arm/mach-s3c64xx/clock.c | |||
@@ -259,6 +259,12 @@ static struct clk init_clocks[] = { | |||
259 | .enable = s3c64xx_hclk_ctrl, | 259 | .enable = s3c64xx_hclk_ctrl, |
260 | .ctrlbit = S3C_CLKCON_HCLK_HSMMC2, | 260 | .ctrlbit = S3C_CLKCON_HCLK_HSMMC2, |
261 | }, { | 261 | }, { |
262 | .name = "otg", | ||
263 | .id = -1, | ||
264 | .parent = &clk_h, | ||
265 | .enable = s3c64xx_hclk_ctrl, | ||
266 | .ctrlbit = S3C_CLKCON_HCLK_USB, | ||
267 | }, { | ||
262 | .name = "timers", | 268 | .name = "timers", |
263 | .id = -1, | 269 | .id = -1, |
264 | .parent = &clk_p, | 270 | .parent = &clk_p, |
diff --git a/arch/arm/mach-ux500/clock.c b/arch/arm/mach-ux500/clock.c index 1b2c9890e8b4..6544855af2f1 100644 --- a/arch/arm/mach-ux500/clock.c +++ b/arch/arm/mach-ux500/clock.c | |||
@@ -411,7 +411,7 @@ static struct clk_lookup u8500_common_clks[] = { | |||
411 | CLK(apetraceclk, "apetrace", NULL), | 411 | CLK(apetraceclk, "apetrace", NULL), |
412 | CLK(mcdeclk, "mcde", NULL), | 412 | CLK(mcdeclk, "mcde", NULL), |
413 | CLK(ipi2clk, "ipi2", NULL), | 413 | CLK(ipi2clk, "ipi2", NULL), |
414 | CLK(dmaclk, "dma40", NULL), | 414 | CLK(dmaclk, "dma40.0", NULL), |
415 | CLK(b2r2clk, "b2r2", NULL), | 415 | CLK(b2r2clk, "b2r2", NULL), |
416 | CLK(tvclk, "tv", NULL), | 416 | CLK(tvclk, "tv", NULL), |
417 | }; | 417 | }; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index d04299f3b6b5..f21c444edd99 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -32,6 +32,7 @@ static struct platform_device *platform_devs[] __initdata = { | |||
32 | &u8500_gpio_devs[6], | 32 | &u8500_gpio_devs[6], |
33 | &u8500_gpio_devs[7], | 33 | &u8500_gpio_devs[7], |
34 | &u8500_gpio_devs[8], | 34 | &u8500_gpio_devs[8], |
35 | &u8500_dma40_device, | ||
35 | }; | 36 | }; |
36 | 37 | ||
37 | /* minimum static i/o mapping required to boot U8500 platforms */ | 38 | /* minimum static i/o mapping required to boot U8500 platforms */ |
@@ -71,6 +72,9 @@ void __init u8500_init_devices(void) | |||
71 | { | 72 | { |
72 | ux500_init_devices(); | 73 | ux500_init_devices(); |
73 | 74 | ||
75 | if (cpu_is_u8500ed()) | ||
76 | dma40_u8500ed_fixup(); | ||
77 | |||
74 | /* Register the platform devices */ | 78 | /* Register the platform devices */ |
75 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | 79 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); |
76 | 80 | ||
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index 20334236afce..822903421943 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -12,9 +12,13 @@ | |||
12 | #include <linux/gpio.h> | 12 | #include <linux/gpio.h> |
13 | #include <linux/amba/bus.h> | 13 | #include <linux/amba/bus.h> |
14 | 14 | ||
15 | #include <plat/ste_dma40.h> | ||
16 | |||
15 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
16 | #include <mach/setup.h> | 18 | #include <mach/setup.h> |
17 | 19 | ||
20 | #include "ste-dma40-db8500.h" | ||
21 | |||
18 | static struct nmk_gpio_platform_data u8500_gpio_data[] = { | 22 | static struct nmk_gpio_platform_data u8500_gpio_data[] = { |
19 | GPIO_DATA("GPIO-0-31", 0), | 23 | GPIO_DATA("GPIO-0-31", 0), |
20 | GPIO_DATA("GPIO-32-63", 32), /* 37..63 not routed to pin */ | 24 | GPIO_DATA("GPIO-32-63", 32), /* 37..63 not routed to pin */ |
@@ -105,3 +109,108 @@ struct platform_device u8500_i2c4_device = { | |||
105 | .resource = u8500_i2c4_resources, | 109 | .resource = u8500_i2c4_resources, |
106 | .num_resources = ARRAY_SIZE(u8500_i2c4_resources), | 110 | .num_resources = ARRAY_SIZE(u8500_i2c4_resources), |
107 | }; | 111 | }; |
112 | |||
113 | static struct resource dma40_resources[] = { | ||
114 | [0] = { | ||
115 | .start = U8500_DMA_BASE, | ||
116 | .end = U8500_DMA_BASE + SZ_4K - 1, | ||
117 | .flags = IORESOURCE_MEM, | ||
118 | .name = "base", | ||
119 | }, | ||
120 | [1] = { | ||
121 | .start = U8500_DMA_LCPA_BASE, | ||
122 | .end = U8500_DMA_LCPA_BASE + SZ_4K - 1, | ||
123 | .flags = IORESOURCE_MEM, | ||
124 | .name = "lcpa", | ||
125 | }, | ||
126 | [2] = { | ||
127 | .start = U8500_DMA_LCLA_BASE, | ||
128 | .end = U8500_DMA_LCLA_BASE + 16 * 1024 - 1, | ||
129 | .flags = IORESOURCE_MEM, | ||
130 | .name = "lcla", | ||
131 | }, | ||
132 | [3] = { | ||
133 | .start = IRQ_DMA, | ||
134 | .end = IRQ_DMA, | ||
135 | .flags = IORESOURCE_IRQ} | ||
136 | }; | ||
137 | |||
138 | /* Default configuration for physcial memcpy */ | ||
139 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | ||
140 | .channel_type = (STEDMA40_CHANNEL_IN_PHY_MODE | | ||
141 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
142 | STEDMA40_PCHAN_BASIC_MODE), | ||
143 | .dir = STEDMA40_MEM_TO_MEM, | ||
144 | |||
145 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
146 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
147 | .src_info.psize = STEDMA40_PSIZE_PHY_1, | ||
148 | |||
149 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
150 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
151 | .dst_info.psize = STEDMA40_PSIZE_PHY_1, | ||
152 | |||
153 | }; | ||
154 | /* Default configuration for logical memcpy */ | ||
155 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { | ||
156 | .channel_type = (STEDMA40_CHANNEL_IN_LOG_MODE | | ||
157 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
158 | STEDMA40_LCHAN_SRC_LOG_DST_LOG | | ||
159 | STEDMA40_NO_TIM_FOR_LINK), | ||
160 | .dir = STEDMA40_MEM_TO_MEM, | ||
161 | |||
162 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
163 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
164 | .src_info.psize = STEDMA40_PSIZE_LOG_1, | ||
165 | |||
166 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
167 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
168 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, | ||
169 | |||
170 | }; | ||
171 | |||
172 | /* | ||
173 | * Mapping between destination event lines and physical device address. | ||
174 | * The event line is tied to a device and therefor the address is constant. | ||
175 | */ | ||
176 | static const dma_addr_t dma40_tx_map[STEDMA40_NR_DEV]; | ||
177 | |||
178 | /* Mapping between source event lines and physical device address */ | ||
179 | static const dma_addr_t dma40_rx_map[STEDMA40_NR_DEV]; | ||
180 | |||
181 | /* Reserved event lines for memcpy only */ | ||
182 | static int dma40_memcpy_event[] = { | ||
183 | STEDMA40_MEMCPY_TX_1, | ||
184 | STEDMA40_MEMCPY_TX_2, | ||
185 | STEDMA40_MEMCPY_TX_3, | ||
186 | STEDMA40_MEMCPY_TX_4, | ||
187 | }; | ||
188 | |||
189 | static struct stedma40_platform_data dma40_plat_data = { | ||
190 | .dev_len = STEDMA40_NR_DEV, | ||
191 | .dev_rx = dma40_rx_map, | ||
192 | .dev_tx = dma40_tx_map, | ||
193 | .memcpy = dma40_memcpy_event, | ||
194 | .memcpy_len = ARRAY_SIZE(dma40_memcpy_event), | ||
195 | .memcpy_conf_phy = &dma40_memcpy_conf_phy, | ||
196 | .memcpy_conf_log = &dma40_memcpy_conf_log, | ||
197 | .llis_per_log = 8, | ||
198 | }; | ||
199 | |||
200 | struct platform_device u8500_dma40_device = { | ||
201 | .dev = { | ||
202 | .platform_data = &dma40_plat_data, | ||
203 | }, | ||
204 | .name = "dma40", | ||
205 | .id = 0, | ||
206 | .num_resources = ARRAY_SIZE(dma40_resources), | ||
207 | .resource = dma40_resources | ||
208 | }; | ||
209 | |||
210 | void dma40_u8500ed_fixup(void) | ||
211 | { | ||
212 | dma40_plat_data.memcpy = NULL; | ||
213 | dma40_plat_data.memcpy_len = 0; | ||
214 | dma40_resources[0].start = U8500_DMA_BASE_ED; | ||
215 | dma40_resources[0].end = U8500_DMA_BASE_ED + SZ_4K - 1; | ||
216 | } | ||
diff --git a/arch/arm/mach-ux500/include/mach/db8500-regs.h b/arch/arm/mach-ux500/include/mach/db8500-regs.h index 9169e1e382a3..85fc6a80b386 100644 --- a/arch/arm/mach-ux500/include/mach/db8500-regs.h +++ b/arch/arm/mach-ux500/include/mach/db8500-regs.h | |||
@@ -7,6 +7,18 @@ | |||
7 | #ifndef __MACH_DB8500_REGS_H | 7 | #ifndef __MACH_DB8500_REGS_H |
8 | #define __MACH_DB8500_REGS_H | 8 | #define __MACH_DB8500_REGS_H |
9 | 9 | ||
10 | /* Base address and bank offsets for ESRAM */ | ||
11 | #define U8500_ESRAM_BASE 0x40000000 | ||
12 | #define U8500_ESRAM_BANK_SIZE 0x00020000 | ||
13 | #define U8500_ESRAM_BANK0 U8500_ESRAM_BASE | ||
14 | #define U8500_ESRAM_BANK1 (U8500_ESRAM_BASE + U8500_ESRAM_BANK_SIZE) | ||
15 | #define U8500_ESRAM_BANK2 (U8500_ESRAM_BANK1 + U8500_ESRAM_BANK_SIZE) | ||
16 | #define U8500_ESRAM_BANK3 (U8500_ESRAM_BANK2 + U8500_ESRAM_BANK_SIZE) | ||
17 | #define U8500_ESRAM_BANK4 (U8500_ESRAM_BANK3 + U8500_ESRAM_BANK_SIZE) | ||
18 | /* Use bank 4 for DMA LCLA and LCPA */ | ||
19 | #define U8500_DMA_LCLA_BASE U8500_ESRAM_BANK4 | ||
20 | #define U8500_DMA_LCPA_BASE (U8500_ESRAM_BANK4 + 0x4000) | ||
21 | |||
10 | #define U8500_PER3_BASE 0x80000000 | 22 | #define U8500_PER3_BASE 0x80000000 |
11 | #define U8500_STM_BASE 0x80100000 | 23 | #define U8500_STM_BASE 0x80100000 |
12 | #define U8500_STM_REG_BASE (U8500_STM_BASE + 0xF000) | 24 | #define U8500_STM_REG_BASE (U8500_STM_BASE + 0xF000) |
diff --git a/arch/arm/mach-ux500/include/mach/devices.h b/arch/arm/mach-ux500/include/mach/devices.h index 0422af00a56e..c2b2f2574947 100644 --- a/arch/arm/mach-ux500/include/mach/devices.h +++ b/arch/arm/mach-ux500/include/mach/devices.h | |||
@@ -25,5 +25,8 @@ extern struct platform_device ux500_i2c3_device; | |||
25 | 25 | ||
26 | extern struct platform_device u8500_i2c0_device; | 26 | extern struct platform_device u8500_i2c0_device; |
27 | extern struct platform_device u8500_i2c4_device; | 27 | extern struct platform_device u8500_i2c4_device; |
28 | extern struct platform_device u8500_dma40_device; | ||
29 | |||
30 | void dma40_u8500ed_fixup(void); | ||
28 | 31 | ||
29 | #endif | 32 | #endif |
diff --git a/arch/arm/mach-ux500/ste-dma40-db8500.h b/arch/arm/mach-ux500/ste-dma40-db8500.h new file mode 100644 index 000000000000..e7016278dfa9 --- /dev/null +++ b/arch/arm/mach-ux500/ste-dma40-db8500.h | |||
@@ -0,0 +1,154 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ux500/ste_dma40_db8500.h | ||
3 | * DB8500-SoC-specific configuration for DMA40 | ||
4 | * | ||
5 | * Copyright (C) ST-Ericsson 2007-2010 | ||
6 | * License terms: GNU General Public License (GPL) version 2 | ||
7 | * Author: Per Friden <per.friden@stericsson.com> | ||
8 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> | ||
9 | */ | ||
10 | #ifndef STE_DMA40_DB8500_H | ||
11 | #define STE_DMA40_DB8500_H | ||
12 | |||
13 | #define STEDMA40_NR_DEV 64 | ||
14 | |||
15 | enum dma_src_dev_type { | ||
16 | STEDMA40_DEV_SPI0_RX = 0, | ||
17 | STEDMA40_DEV_SD_MMC0_RX = 1, | ||
18 | STEDMA40_DEV_SD_MMC1_RX = 2, | ||
19 | STEDMA40_DEV_SD_MMC2_RX = 3, | ||
20 | STEDMA40_DEV_I2C1_RX = 4, | ||
21 | STEDMA40_DEV_I2C3_RX = 5, | ||
22 | STEDMA40_DEV_I2C2_RX = 6, | ||
23 | STEDMA40_DEV_I2C4_RX = 7, /* Only on V1 */ | ||
24 | STEDMA40_DEV_SSP0_RX = 8, | ||
25 | STEDMA40_DEV_SSP1_RX = 9, | ||
26 | STEDMA40_DEV_MCDE_RX = 10, | ||
27 | STEDMA40_DEV_UART2_RX = 11, | ||
28 | STEDMA40_DEV_UART1_RX = 12, | ||
29 | STEDMA40_DEV_UART0_RX = 13, | ||
30 | STEDMA40_DEV_MSP2_RX = 14, | ||
31 | STEDMA40_DEV_I2C0_RX = 15, | ||
32 | STEDMA40_DEV_USB_OTG_IEP_8 = 16, | ||
33 | STEDMA40_DEV_USB_OTG_IEP_1_9 = 17, | ||
34 | STEDMA40_DEV_USB_OTG_IEP_2_10 = 18, | ||
35 | STEDMA40_DEV_USB_OTG_IEP_3_11 = 19, | ||
36 | STEDMA40_DEV_SLIM0_CH0_RX_HSI_RX_CH0 = 20, | ||
37 | STEDMA40_DEV_SLIM0_CH1_RX_HSI_RX_CH1 = 21, | ||
38 | STEDMA40_DEV_SLIM0_CH2_RX_HSI_RX_CH2 = 22, | ||
39 | STEDMA40_DEV_SLIM0_CH3_RX_HSI_RX_CH3 = 23, | ||
40 | STEDMA40_DEV_SRC_SXA0_RX_TX = 24, | ||
41 | STEDMA40_DEV_SRC_SXA1_RX_TX = 25, | ||
42 | STEDMA40_DEV_SRC_SXA2_RX_TX = 26, | ||
43 | STEDMA40_DEV_SRC_SXA3_RX_TX = 27, | ||
44 | STEDMA40_DEV_SD_MM2_RX = 28, | ||
45 | STEDMA40_DEV_SD_MM0_RX = 29, | ||
46 | STEDMA40_DEV_MSP1_RX = 30, | ||
47 | /* | ||
48 | * This channel is either SlimBus or MSP, | ||
49 | * never both at the same time. | ||
50 | */ | ||
51 | STEDMA40_SLIM0_CH0_RX = 31, | ||
52 | STEDMA40_DEV_MSP0_RX = 31, | ||
53 | STEDMA40_DEV_SD_MM1_RX = 32, | ||
54 | STEDMA40_DEV_SPI2_RX = 33, | ||
55 | STEDMA40_DEV_I2C3_RX2 = 34, | ||
56 | STEDMA40_DEV_SPI1_RX = 35, | ||
57 | STEDMA40_DEV_USB_OTG_IEP_4_12 = 36, | ||
58 | STEDMA40_DEV_USB_OTG_IEP_5_13 = 37, | ||
59 | STEDMA40_DEV_USB_OTG_IEP_6_14 = 38, | ||
60 | STEDMA40_DEV_USB_OTG_IEP_7_15 = 39, | ||
61 | STEDMA40_DEV_SPI3_RX = 40, | ||
62 | STEDMA40_DEV_SD_MM3_RX = 41, | ||
63 | STEDMA40_DEV_SD_MM4_RX = 42, | ||
64 | STEDMA40_DEV_SD_MM5_RX = 43, | ||
65 | STEDMA40_DEV_SRC_SXA4_RX_TX = 44, | ||
66 | STEDMA40_DEV_SRC_SXA5_RX_TX = 45, | ||
67 | STEDMA40_DEV_SRC_SXA6_RX_TX = 46, | ||
68 | STEDMA40_DEV_SRC_SXA7_RX_TX = 47, | ||
69 | STEDMA40_DEV_CAC1_RX = 48, | ||
70 | /* RX channels 49 and 50 are unused */ | ||
71 | STEDMA40_DEV_MSHC_RX = 51, | ||
72 | STEDMA40_DEV_SLIM1_CH0_RX_HSI_RX_CH4 = 52, | ||
73 | STEDMA40_DEV_SLIM1_CH1_RX_HSI_RX_CH5 = 53, | ||
74 | STEDMA40_DEV_SLIM1_CH2_RX_HSI_RX_CH6 = 54, | ||
75 | STEDMA40_DEV_SLIM1_CH3_RX_HSI_RX_CH7 = 55, | ||
76 | /* RX channels 56 thru 60 are unused */ | ||
77 | STEDMA40_DEV_CAC0_RX = 61, | ||
78 | /* RX channels 62 and 63 are unused */ | ||
79 | }; | ||
80 | |||
81 | enum dma_dest_dev_type { | ||
82 | STEDMA40_DEV_SPI0_TX = 0, | ||
83 | STEDMA40_DEV_SD_MMC0_TX = 1, | ||
84 | STEDMA40_DEV_SD_MMC1_TX = 2, | ||
85 | STEDMA40_DEV_SD_MMC2_TX = 3, | ||
86 | STEDMA40_DEV_I2C1_TX = 4, | ||
87 | STEDMA40_DEV_I2C3_TX = 5, | ||
88 | STEDMA40_DEV_I2C2_TX = 6, | ||
89 | STEDMA50_DEV_I2C4_TX = 7, /* Only on V1 */ | ||
90 | STEDMA40_DEV_SSP0_TX = 8, | ||
91 | STEDMA40_DEV_SSP1_TX = 9, | ||
92 | /* TX channel 10 is unused */ | ||
93 | STEDMA40_DEV_UART2_TX = 11, | ||
94 | STEDMA40_DEV_UART1_TX = 12, | ||
95 | STEDMA40_DEV_UART0_TX= 13, | ||
96 | STEDMA40_DEV_MSP2_TX = 14, | ||
97 | STEDMA40_DEV_I2C0_TX = 15, | ||
98 | STEDMA40_DEV_USB_OTG_OEP_8 = 16, | ||
99 | STEDMA40_DEV_USB_OTG_OEP_1_9 = 17, | ||
100 | STEDMA40_DEV_USB_OTG_OEP_2_10= 18, | ||
101 | STEDMA40_DEV_USB_OTG_OEP_3_11 = 19, | ||
102 | STEDMA40_DEV_SLIM0_CH0_TX_HSI_TX_CH0 = 20, | ||
103 | STEDMA40_DEV_SLIM0_CH1_TX_HSI_TX_CH1 = 21, | ||
104 | STEDMA40_DEV_SLIM0_CH2_TX_HSI_TX_CH2 = 22, | ||
105 | STEDMA40_DEV_SLIM0_CH3_TX_HSI_TX_CH3 = 23, | ||
106 | STEDMA40_DEV_DST_SXA0_RX_TX = 24, | ||
107 | STEDMA40_DEV_DST_SXA1_RX_TX = 25, | ||
108 | STEDMA40_DEV_DST_SXA2_RX_TX = 26, | ||
109 | STEDMA40_DEV_DST_SXA3_RX_TX = 27, | ||
110 | STEDMA40_DEV_SD_MM2_TX = 28, | ||
111 | STEDMA40_DEV_SD_MM0_TX = 29, | ||
112 | STEDMA40_DEV_MSP1_TX = 30, | ||
113 | /* | ||
114 | * This channel is either SlimBus or MSP, | ||
115 | * never both at the same time. | ||
116 | */ | ||
117 | STEDMA40_SLIM0_CH0_TX = 31, | ||
118 | STEDMA40_DEV_MSP0_TX = 31, | ||
119 | STEDMA40_DEV_SD_MM1_TX = 32, | ||
120 | STEDMA40_DEV_SPI2_TX = 33, | ||
121 | /* Secondary I2C3 channel */ | ||
122 | STEDMA40_DEV_I2C3_TX2 = 34, | ||
123 | STEDMA40_DEV_SPI1_TX = 35, | ||
124 | STEDMA40_DEV_USB_OTG_OEP_4_12 = 36, | ||
125 | STEDMA40_DEV_USB_OTG_OEP_5_13 = 37, | ||
126 | STEDMA40_DEV_USB_OTG_OEP_6_14 = 38, | ||
127 | STEDMA40_DEV_USB_OTG_OEP_7_15 = 39, | ||
128 | STEDMA40_DEV_SPI3_TX = 40, | ||
129 | STEDMA40_DEV_SD_MM3_TX = 41, | ||
130 | STEDMA40_DEV_SD_MM4_TX = 42, | ||
131 | STEDMA40_DEV_SD_MM5_TX = 43, | ||
132 | STEDMA40_DEV_DST_SXA4_RX_TX = 44, | ||
133 | STEDMA40_DEV_DST_SXA5_RX_TX = 45, | ||
134 | STEDMA40_DEV_DST_SXA6_RX_TX = 46, | ||
135 | STEDMA40_DEV_DST_SXA7_RX_TX = 47, | ||
136 | STEDMA40_DEV_CAC1_TX = 48, | ||
137 | STEDMA40_DEV_CAC1_TX_HAC1_TX = 49, | ||
138 | STEDMA40_DEV_HAC1_TX = 50, | ||
139 | STEDMA40_MEMXCPY_TX_0 = 51, | ||
140 | STEDMA40_DEV_SLIM1_CH0_TX_HSI_TX_CH4 = 52, | ||
141 | STEDMA40_DEV_SLIM1_CH1_TX_HSI_TX_CH5 = 53, | ||
142 | STEDMA40_DEV_SLIM1_CH2_TX_HSI_TX_CH6 = 54, | ||
143 | STEDMA40_DEV_SLIM1_CH3_TX_HSI_TX_CH7 = 55, | ||
144 | STEDMA40_MEMCPY_TX_1 = 56, | ||
145 | STEDMA40_MEMCPY_TX_2 = 57, | ||
146 | STEDMA40_MEMCPY_TX_3 = 58, | ||
147 | STEDMA40_MEMCPY_TX_4 = 59, | ||
148 | STEDMA40_MEMCPY_TX_5 = 60, | ||
149 | STEDMA40_DEV_CAC0_TX = 61, | ||
150 | STEDMA40_DEV_CAC0_TX_HAC0_TX = 62, | ||
151 | STEDMA40_DEV_HAC0_TX = 63, | ||
152 | }; | ||
153 | |||
154 | #endif | ||
diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-s5p/clock.c index 24a931fd8d3b..b5e255265f20 100644 --- a/arch/arm/plat-s5p/clock.c +++ b/arch/arm/plat-s5p/clock.c | |||
@@ -148,6 +148,7 @@ static struct clk *s5p_clks[] __initdata = { | |||
148 | &clk_fout_vpll, | 148 | &clk_fout_vpll, |
149 | &clk_arm, | 149 | &clk_arm, |
150 | &clk_vpll, | 150 | &clk_vpll, |
151 | &clk_xusbxti, | ||
151 | }; | 152 | }; |
152 | 153 | ||
153 | void __init s5p_register_clocks(unsigned long xtal_freq) | 154 | void __init s5p_register_clocks(unsigned long xtal_freq) |
diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg.h b/arch/arm/plat-samsung/include/plat/gpio-cfg.h index 34efdd2b032c..db4112c6f2be 100644 --- a/arch/arm/plat-samsung/include/plat/gpio-cfg.h +++ b/arch/arm/plat-samsung/include/plat/gpio-cfg.h | |||
@@ -43,6 +43,11 @@ struct s3c_gpio_chip; | |||
43 | * layouts. Provide an point to vector control routine and provide any | 43 | * layouts. Provide an point to vector control routine and provide any |
44 | * per-bank configuration information that other systems such as the | 44 | * per-bank configuration information that other systems such as the |
45 | * external interrupt code will need. | 45 | * external interrupt code will need. |
46 | * | ||
47 | * @sa s3c_gpio_cfgpin | ||
48 | * @sa s3c_gpio_getcfg | ||
49 | * @sa s3c_gpio_setpull | ||
50 | * @sa s3c_gpio_getpull | ||
46 | */ | 51 | */ |
47 | struct s3c_gpio_cfg { | 52 | struct s3c_gpio_cfg { |
48 | unsigned int cfg_eint; | 53 | unsigned int cfg_eint; |
@@ -70,11 +75,25 @@ struct s3c_gpio_cfg { | |||
70 | /** | 75 | /** |
71 | * s3c_gpio_cfgpin() - Change the GPIO function of a pin. | 76 | * s3c_gpio_cfgpin() - Change the GPIO function of a pin. |
72 | * @pin pin The pin number to configure. | 77 | * @pin pin The pin number to configure. |
73 | * @pin to The configuration for the pin's function. | 78 | * @to to The configuration for the pin's function. |
74 | * | 79 | * |
75 | * Configure which function is actually connected to the external | 80 | * Configure which function is actually connected to the external |
76 | * pin, such as an gpio input, output or some form of special function | 81 | * pin, such as an gpio input, output or some form of special function |
77 | * connected to an internal peripheral block. | 82 | * connected to an internal peripheral block. |
83 | * | ||
84 | * The @to parameter can be one of the generic S3C_GPIO_INPUT, S3C_GPIO_OUTPUT | ||
85 | * or S3C_GPIO_SFN() to indicate one of the possible values that the helper | ||
86 | * will then generate the correct bit mask and shift for the configuration. | ||
87 | * | ||
88 | * If a bank of GPIOs all needs to be set to special-function 2, then | ||
89 | * the following code will work: | ||
90 | * | ||
91 | * for (gpio = start; gpio < end; gpio++) | ||
92 | * s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); | ||
93 | * | ||
94 | * The @to parameter can also be a specific value already shifted to the | ||
95 | * correct position in the control register, although these are discouraged | ||
96 | * in newer kernels and are only being kept for compatibility. | ||
78 | */ | 97 | */ |
79 | extern int s3c_gpio_cfgpin(unsigned int pin, unsigned int to); | 98 | extern int s3c_gpio_cfgpin(unsigned int pin, unsigned int to); |
80 | 99 | ||
@@ -108,6 +127,8 @@ extern unsigned s3c_gpio_getcfg(unsigned int pin); | |||
108 | * This function sets the state of the pull-{up,down} resistor for the | 127 | * This function sets the state of the pull-{up,down} resistor for the |
109 | * specified pin. It will return 0 if successfull, or a negative error | 128 | * specified pin. It will return 0 if successfull, or a negative error |
110 | * code if the pin cannot support the requested pull setting. | 129 | * code if the pin cannot support the requested pull setting. |
130 | * | ||
131 | * @pull is one of S3C_GPIO_PULL_NONE, S3C_GPIO_PULL_DOWN or S3C_GPIO_PULL_UP. | ||
111 | */ | 132 | */ |
112 | extern int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull); | 133 | extern int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull); |
113 | 134 | ||
diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h index 7dc0f0f85b7c..2797163b8f4f 100644 --- a/arch/frv/include/asm/cache.h +++ b/arch/frv/include/asm/cache.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #define L1_CACHE_SHIFT (CONFIG_FRV_L1_CACHE_SHIFT) | 17 | #define L1_CACHE_SHIFT (CONFIG_FRV_L1_CACHE_SHIFT) |
18 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 18 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) |
19 | 19 | ||
20 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | ||
21 | |||
22 | #define __cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) | 20 | #define __cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) |
23 | #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) | 21 | #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) |
24 | 22 | ||
diff --git a/arch/frv/include/asm/mem-layout.h b/arch/frv/include/asm/mem-layout.h index 2947764fc0e0..ccae981876fa 100644 --- a/arch/frv/include/asm/mem-layout.h +++ b/arch/frv/include/asm/mem-layout.h | |||
@@ -35,8 +35,8 @@ | |||
35 | * the slab must be aligned such that load- and store-double instructions don't | 35 | * the slab must be aligned such that load- and store-double instructions don't |
36 | * fault if used | 36 | * fault if used |
37 | */ | 37 | */ |
38 | #define ARCH_KMALLOC_MINALIGN 8 | 38 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES |
39 | #define ARCH_SLAB_MINALIGN 8 | 39 | #define ARCH_SLAB_MINALIGN L1_CACHE_BYTES |
40 | 40 | ||
41 | /*****************************************************************************/ | 41 | /*****************************************************************************/ |
42 | /* | 42 | /* |
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index 21adbd7f90f8..837dc82a013e 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
@@ -94,7 +94,6 @@ ia64_acpi_release_global_lock (unsigned int *lock) | |||
94 | #define acpi_noirq 0 /* ACPI always enabled on IA64 */ | 94 | #define acpi_noirq 0 /* ACPI always enabled on IA64 */ |
95 | #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ | 95 | #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ |
96 | #define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ | 96 | #define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ |
97 | #define acpi_ht 0 /* no HT-only mode on IA64 */ | ||
98 | #endif | 97 | #endif |
99 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ | 98 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ |
100 | static inline void disable_acpi(void) { } | 99 | static inline void disable_acpi(void) { } |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 518e876a410d..6a1380e90f87 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -390,11 +390,13 @@ smp_callin (void) | |||
390 | 390 | ||
391 | fix_b0_for_bsp(); | 391 | fix_b0_for_bsp(); |
392 | 392 | ||
393 | #ifdef CONFIG_NUMA | ||
393 | /* | 394 | /* |
394 | * numa_node_id() works after this. | 395 | * numa_node_id() works after this. |
395 | */ | 396 | */ |
396 | set_numa_node(cpu_to_node_map[cpuid]); | 397 | set_numa_node(cpu_to_node_map[cpuid]); |
397 | set_numa_mem(local_memory_node(cpu_to_node_map[cpuid])); | 398 | set_numa_mem(local_memory_node(cpu_to_node_map[cpuid])); |
399 | #endif | ||
398 | 400 | ||
399 | ipi_call_lock_irq(); | 401 | ipi_call_lock_irq(); |
400 | spin_lock(&vector_lock); | 402 | spin_lock(&vector_lock); |
@@ -638,7 +640,9 @@ void __devinit smp_prepare_boot_cpu(void) | |||
638 | { | 640 | { |
639 | cpu_set(smp_processor_id(), cpu_online_map); | 641 | cpu_set(smp_processor_id(), cpu_online_map); |
640 | cpu_set(smp_processor_id(), cpu_callin_map); | 642 | cpu_set(smp_processor_id(), cpu_callin_map); |
643 | #ifdef CONFIG_NUMA | ||
641 | set_numa_node(cpu_to_node_map[smp_processor_id()]); | 644 | set_numa_node(cpu_to_node_map[smp_processor_id()]); |
645 | #endif | ||
642 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; | 646 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; |
643 | paravirt_post_smp_prepare_boot_cpu(); | 647 | paravirt_post_smp_prepare_boot_cpu(); |
644 | } | 648 | } |
diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c index 3efea7d0a351..2437718bd6b1 100644 --- a/arch/ia64/mm/numa.c +++ b/arch/ia64/mm/numa.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/bootmem.h> | 18 | #include <linux/bootmem.h> |
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/random.h> | ||
20 | #include <asm/mmzone.h> | 21 | #include <asm/mmzone.h> |
21 | #include <asm/numa.h> | 22 | #include <asm/numa.h> |
22 | 23 | ||
@@ -50,6 +51,22 @@ paddr_to_nid(unsigned long paddr) | |||
50 | return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0); | 51 | return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0); |
51 | } | 52 | } |
52 | 53 | ||
54 | /* | ||
55 | * Return the bit number of a random bit set in the nodemask. | ||
56 | * (returns -1 if nodemask is empty) | ||
57 | */ | ||
58 | int __node_random(const nodemask_t *maskp) | ||
59 | { | ||
60 | int w, bit = -1; | ||
61 | |||
62 | w = nodes_weight(*maskp); | ||
63 | if (w) | ||
64 | bit = bitmap_ord_to_pos(maskp->bits, | ||
65 | get_random_int() % w, MAX_NUMNODES); | ||
66 | return bit; | ||
67 | } | ||
68 | EXPORT_SYMBOL(__node_random); | ||
69 | |||
53 | #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA) | 70 | #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA) |
54 | /* | 71 | /* |
55 | * Because of holes evaluate on section limits. | 72 | * Because of holes evaluate on section limits. |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 64aff520b899..aa2533ae7e9e 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -335,8 +335,11 @@ pcibios_setup_root_windows(struct pci_bus *bus, struct pci_controller *ctrl) | |||
335 | } | 335 | } |
336 | 336 | ||
337 | struct pci_bus * __devinit | 337 | struct pci_bus * __devinit |
338 | pci_acpi_scan_root(struct acpi_device *device, int domain, int bus) | 338 | pci_acpi_scan_root(struct acpi_pci_root *root) |
339 | { | 339 | { |
340 | struct acpi_device *device = root->device; | ||
341 | int domain = root->segment; | ||
342 | int bus = root->secondary.start; | ||
340 | struct pci_controller *controller; | 343 | struct pci_controller *controller; |
341 | unsigned int windows = 0; | 344 | unsigned int windows = 0; |
342 | struct pci_bus *pbus; | 345 | struct pci_bus *pbus; |
diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h index 477277739da5..4556d820128a 100644 --- a/arch/parisc/include/asm/cacheflush.h +++ b/arch/parisc/include/asm/cacheflush.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _PARISC_CACHEFLUSH_H | 2 | #define _PARISC_CACHEFLUSH_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
5 | #include <linux/uaccess.h> | ||
5 | 6 | ||
6 | /* The usual comment is "Caches aren't brain-dead on the <architecture>". | 7 | /* The usual comment is "Caches aren't brain-dead on the <architecture>". |
7 | * Unfortunately, that doesn't apply to PA-RISC. */ | 8 | * Unfortunately, that doesn't apply to PA-RISC. */ |
@@ -125,11 +126,20 @@ static inline void *kmap(struct page *page) | |||
125 | 126 | ||
126 | #define kunmap(page) kunmap_parisc(page_address(page)) | 127 | #define kunmap(page) kunmap_parisc(page_address(page)) |
127 | 128 | ||
128 | #define kmap_atomic(page, idx) page_address(page) | 129 | static inline void *kmap_atomic(struct page *page, enum km_type idx) |
130 | { | ||
131 | pagefault_disable(); | ||
132 | return page_address(page); | ||
133 | } | ||
129 | 134 | ||
130 | #define kunmap_atomic(addr, idx) kunmap_parisc(addr) | 135 | static inline void kunmap_atomic(void *addr, enum km_type idx) |
136 | { | ||
137 | kunmap_parisc(addr); | ||
138 | pagefault_enable(); | ||
139 | } | ||
131 | 140 | ||
132 | #define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn)) | 141 | #define kmap_atomic_prot(page, idx, prot) kmap_atomic(page, idx) |
142 | #define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) | ||
133 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) | 143 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) |
134 | #endif | 144 | #endif |
135 | 145 | ||
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c index ec787b411e9a..dcd55103a4bb 100644 --- a/arch/parisc/kernel/asm-offsets.c +++ b/arch/parisc/kernel/asm-offsets.c | |||
@@ -45,8 +45,12 @@ | |||
45 | #else | 45 | #else |
46 | #define FRAME_SIZE 64 | 46 | #define FRAME_SIZE 64 |
47 | #endif | 47 | #endif |
48 | #define FRAME_ALIGN 64 | ||
48 | 49 | ||
49 | #define align(x,y) (((x)+FRAME_SIZE+(y)-1) - (((x)+(y)-1)%(y))) | 50 | /* Add FRAME_SIZE to the size x and align it to y. All definitions |
51 | * that use align_frame will include space for a frame. | ||
52 | */ | ||
53 | #define align_frame(x,y) (((x)+FRAME_SIZE+(y)-1) - (((x)+(y)-1)%(y))) | ||
50 | 54 | ||
51 | int main(void) | 55 | int main(void) |
52 | { | 56 | { |
@@ -146,7 +150,8 @@ int main(void) | |||
146 | DEFINE(TASK_PT_IOR, offsetof(struct task_struct, thread.regs.ior)); | 150 | DEFINE(TASK_PT_IOR, offsetof(struct task_struct, thread.regs.ior)); |
147 | BLANK(); | 151 | BLANK(); |
148 | DEFINE(TASK_SZ, sizeof(struct task_struct)); | 152 | DEFINE(TASK_SZ, sizeof(struct task_struct)); |
149 | DEFINE(TASK_SZ_ALGN, align(sizeof(struct task_struct), 64)); | 153 | /* TASK_SZ_ALGN includes space for a stack frame. */ |
154 | DEFINE(TASK_SZ_ALGN, align_frame(sizeof(struct task_struct), FRAME_ALIGN)); | ||
150 | BLANK(); | 155 | BLANK(); |
151 | DEFINE(PT_PSW, offsetof(struct pt_regs, gr[ 0])); | 156 | DEFINE(PT_PSW, offsetof(struct pt_regs, gr[ 0])); |
152 | DEFINE(PT_GR1, offsetof(struct pt_regs, gr[ 1])); | 157 | DEFINE(PT_GR1, offsetof(struct pt_regs, gr[ 1])); |
@@ -233,7 +238,8 @@ int main(void) | |||
233 | DEFINE(PT_ISR, offsetof(struct pt_regs, isr)); | 238 | DEFINE(PT_ISR, offsetof(struct pt_regs, isr)); |
234 | DEFINE(PT_IOR, offsetof(struct pt_regs, ior)); | 239 | DEFINE(PT_IOR, offsetof(struct pt_regs, ior)); |
235 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); | 240 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); |
236 | DEFINE(PT_SZ_ALGN, align(sizeof(struct pt_regs), 64)); | 241 | /* PT_SZ_ALGN includes space for a stack frame. */ |
242 | DEFINE(PT_SZ_ALGN, align_frame(sizeof(struct pt_regs), FRAME_ALIGN)); | ||
237 | BLANK(); | 243 | BLANK(); |
238 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); | 244 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); |
239 | DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); | 245 | DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); |
@@ -242,7 +248,8 @@ int main(void) | |||
242 | DEFINE(TI_SEGMENT, offsetof(struct thread_info, addr_limit)); | 248 | DEFINE(TI_SEGMENT, offsetof(struct thread_info, addr_limit)); |
243 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); | 249 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); |
244 | DEFINE(THREAD_SZ, sizeof(struct thread_info)); | 250 | DEFINE(THREAD_SZ, sizeof(struct thread_info)); |
245 | DEFINE(THREAD_SZ_ALGN, align(sizeof(struct thread_info), 64)); | 251 | /* THREAD_SZ_ALGN includes space for a stack frame. */ |
252 | DEFINE(THREAD_SZ_ALGN, align_frame(sizeof(struct thread_info), FRAME_ALIGN)); | ||
246 | BLANK(); | 253 | BLANK(); |
247 | DEFINE(ICACHE_BASE, offsetof(struct pdc_cache_info, ic_base)); | 254 | DEFINE(ICACHE_BASE, offsetof(struct pdc_cache_info, ic_base)); |
248 | DEFINE(ICACHE_STRIDE, offsetof(struct pdc_cache_info, ic_stride)); | 255 | DEFINE(ICACHE_STRIDE, offsetof(struct pdc_cache_info, ic_stride)); |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 3a44f7f704fa..6337adef30f6 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -364,32 +364,6 @@ | |||
364 | .align 32 | 364 | .align 32 |
365 | .endm | 365 | .endm |
366 | 366 | ||
367 | /* The following are simple 32 vs 64 bit instruction | ||
368 | * abstractions for the macros */ | ||
369 | .macro EXTR reg1,start,length,reg2 | ||
370 | #ifdef CONFIG_64BIT | ||
371 | extrd,u \reg1,32+(\start),\length,\reg2 | ||
372 | #else | ||
373 | extrw,u \reg1,\start,\length,\reg2 | ||
374 | #endif | ||
375 | .endm | ||
376 | |||
377 | .macro DEP reg1,start,length,reg2 | ||
378 | #ifdef CONFIG_64BIT | ||
379 | depd \reg1,32+(\start),\length,\reg2 | ||
380 | #else | ||
381 | depw \reg1,\start,\length,\reg2 | ||
382 | #endif | ||
383 | .endm | ||
384 | |||
385 | .macro DEPI val,start,length,reg | ||
386 | #ifdef CONFIG_64BIT | ||
387 | depdi \val,32+(\start),\length,\reg | ||
388 | #else | ||
389 | depwi \val,\start,\length,\reg | ||
390 | #endif | ||
391 | .endm | ||
392 | |||
393 | /* In LP64, the space contains part of the upper 32 bits of the | 367 | /* In LP64, the space contains part of the upper 32 bits of the |
394 | * fault. We have to extract this and place it in the va, | 368 | * fault. We have to extract this and place it in the va, |
395 | * zeroing the corresponding bits in the space register */ | 369 | * zeroing the corresponding bits in the space register */ |
@@ -442,19 +416,19 @@ | |||
442 | */ | 416 | */ |
443 | .macro L2_ptep pmd,pte,index,va,fault | 417 | .macro L2_ptep pmd,pte,index,va,fault |
444 | #if PT_NLEVELS == 3 | 418 | #if PT_NLEVELS == 3 |
445 | EXTR \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index | 419 | extru \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index |
446 | #else | 420 | #else |
447 | EXTR \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index | 421 | extru \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index |
448 | #endif | 422 | #endif |
449 | DEP %r0,31,PAGE_SHIFT,\pmd /* clear offset */ | 423 | dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ |
450 | copy %r0,\pte | 424 | copy %r0,\pte |
451 | ldw,s \index(\pmd),\pmd | 425 | ldw,s \index(\pmd),\pmd |
452 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault | 426 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault |
453 | DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ | 427 | dep %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ |
454 | copy \pmd,%r9 | 428 | copy \pmd,%r9 |
455 | SHLREG %r9,PxD_VALUE_SHIFT,\pmd | 429 | SHLREG %r9,PxD_VALUE_SHIFT,\pmd |
456 | EXTR \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index | 430 | extru \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index |
457 | DEP %r0,31,PAGE_SHIFT,\pmd /* clear offset */ | 431 | dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ |
458 | shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd | 432 | shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd |
459 | LDREG %r0(\pmd),\pte /* pmd is now pte */ | 433 | LDREG %r0(\pmd),\pte /* pmd is now pte */ |
460 | bb,>=,n \pte,_PAGE_PRESENT_BIT,\fault | 434 | bb,>=,n \pte,_PAGE_PRESENT_BIT,\fault |
@@ -605,7 +579,7 @@ | |||
605 | depdi 0,31,32,\tmp | 579 | depdi 0,31,32,\tmp |
606 | #endif | 580 | #endif |
607 | copy \va,\tmp1 | 581 | copy \va,\tmp1 |
608 | DEPI 0,31,23,\tmp1 | 582 | depi 0,31,23,\tmp1 |
609 | cmpb,COND(<>),n \tmp,\tmp1,\fault | 583 | cmpb,COND(<>),n \tmp,\tmp1,\fault |
610 | ldi (_PAGE_DIRTY|_PAGE_WRITE|_PAGE_READ),\prot | 584 | ldi (_PAGE_DIRTY|_PAGE_WRITE|_PAGE_READ),\prot |
611 | depd,z \prot,8,7,\prot | 585 | depd,z \prot,8,7,\prot |
@@ -997,13 +971,6 @@ intr_restore: | |||
997 | 971 | ||
998 | rfi | 972 | rfi |
999 | nop | 973 | nop |
1000 | nop | ||
1001 | nop | ||
1002 | nop | ||
1003 | nop | ||
1004 | nop | ||
1005 | nop | ||
1006 | nop | ||
1007 | 974 | ||
1008 | #ifndef CONFIG_PREEMPT | 975 | #ifndef CONFIG_PREEMPT |
1009 | # define intr_do_preempt intr_restore | 976 | # define intr_do_preempt intr_restore |
@@ -2076,9 +2043,10 @@ syscall_restore: | |||
2076 | LDREG TASK_PT_GR31(%r1),%r31 /* restore syscall rp */ | 2043 | LDREG TASK_PT_GR31(%r1),%r31 /* restore syscall rp */ |
2077 | 2044 | ||
2078 | /* NOTE: We use rsm/ssm pair to make this operation atomic */ | 2045 | /* NOTE: We use rsm/ssm pair to make this operation atomic */ |
2046 | LDREG TASK_PT_GR30(%r1),%r1 /* Get user sp */ | ||
2079 | rsm PSW_SM_I, %r0 | 2047 | rsm PSW_SM_I, %r0 |
2080 | LDREG TASK_PT_GR30(%r1),%r30 /* restore user sp */ | 2048 | copy %r1,%r30 /* Restore user sp */ |
2081 | mfsp %sr3,%r1 /* Get users space id */ | 2049 | mfsp %sr3,%r1 /* Get user space id */ |
2082 | mtsp %r1,%sr7 /* Restore sr7 */ | 2050 | mtsp %r1,%sr7 /* Restore sr7 */ |
2083 | ssm PSW_SM_I, %r0 | 2051 | ssm PSW_SM_I, %r0 |
2084 | 2052 | ||
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index f5f96021caa0..68e75ce838d6 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
@@ -47,18 +47,17 @@ ENTRY(linux_gateway_page) | |||
47 | KILL_INSN | 47 | KILL_INSN |
48 | .endr | 48 | .endr |
49 | 49 | ||
50 | /* ADDRESS 0xb0 to 0xb4, lws uses 1 insns for entry */ | 50 | /* ADDRESS 0xb0 to 0xb8, lws uses two insns for entry */ |
51 | /* Light-weight-syscall entry must always be located at 0xb0 */ | 51 | /* Light-weight-syscall entry must always be located at 0xb0 */ |
52 | /* WARNING: Keep this number updated with table size changes */ | 52 | /* WARNING: Keep this number updated with table size changes */ |
53 | #define __NR_lws_entries (2) | 53 | #define __NR_lws_entries (2) |
54 | 54 | ||
55 | lws_entry: | 55 | lws_entry: |
56 | /* Unconditional branch to lws_start, located on the | 56 | gate lws_start, %r0 /* increase privilege */ |
57 | same gateway page */ | 57 | depi 3, 31, 2, %r31 /* Ensure we return into user mode. */ |
58 | b,n lws_start | ||
59 | 58 | ||
60 | /* Fill from 0xb4 to 0xe0 */ | 59 | /* Fill from 0xb8 to 0xe0 */ |
61 | .rept 11 | 60 | .rept 10 |
62 | KILL_INSN | 61 | KILL_INSN |
63 | .endr | 62 | .endr |
64 | 63 | ||
@@ -423,9 +422,6 @@ tracesys_sigexit: | |||
423 | 422 | ||
424 | *********************************************************/ | 423 | *********************************************************/ |
425 | lws_start: | 424 | lws_start: |
426 | /* Gate and ensure we return to userspace */ | ||
427 | gate .+8, %r0 | ||
428 | depi 3, 31, 2, %r31 /* Ensure we return to userspace */ | ||
429 | 425 | ||
430 | #ifdef CONFIG_64BIT | 426 | #ifdef CONFIG_64BIT |
431 | /* FIXME: If we are a 64-bit kernel just | 427 | /* FIXME: If we are a 64-bit kernel just |
@@ -442,7 +438,7 @@ lws_start: | |||
442 | #endif | 438 | #endif |
443 | 439 | ||
444 | /* Is the lws entry number valid? */ | 440 | /* Is the lws entry number valid? */ |
445 | comiclr,>>= __NR_lws_entries, %r20, %r0 | 441 | comiclr,>> __NR_lws_entries, %r20, %r0 |
446 | b,n lws_exit_nosys | 442 | b,n lws_exit_nosys |
447 | 443 | ||
448 | /* WARNING: Trashing sr2 and sr3 */ | 444 | /* WARNING: Trashing sr2 and sr3 */ |
@@ -473,7 +469,7 @@ lws_exit: | |||
473 | /* now reset the lowest bit of sp if it was set */ | 469 | /* now reset the lowest bit of sp if it was set */ |
474 | xor %r30,%r1,%r30 | 470 | xor %r30,%r1,%r30 |
475 | #endif | 471 | #endif |
476 | be,n 0(%sr3, %r31) | 472 | be,n 0(%sr7, %r31) |
477 | 473 | ||
478 | 474 | ||
479 | 475 | ||
@@ -529,7 +525,6 @@ lws_compare_and_swap32: | |||
529 | #endif | 525 | #endif |
530 | 526 | ||
531 | lws_compare_and_swap: | 527 | lws_compare_and_swap: |
532 | #ifdef CONFIG_SMP | ||
533 | /* Load start of lock table */ | 528 | /* Load start of lock table */ |
534 | ldil L%lws_lock_start, %r20 | 529 | ldil L%lws_lock_start, %r20 |
535 | ldo R%lws_lock_start(%r20), %r28 | 530 | ldo R%lws_lock_start(%r20), %r28 |
@@ -572,8 +567,6 @@ cas_wouldblock: | |||
572 | ldo 2(%r0), %r28 /* 2nd case */ | 567 | ldo 2(%r0), %r28 /* 2nd case */ |
573 | b lws_exit /* Contended... */ | 568 | b lws_exit /* Contended... */ |
574 | ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ | 569 | ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ |
575 | #endif | ||
576 | /* CONFIG_SMP */ | ||
577 | 570 | ||
578 | /* | 571 | /* |
579 | prev = *addr; | 572 | prev = *addr; |
@@ -601,13 +594,11 @@ cas_action: | |||
601 | 1: ldw 0(%sr3,%r26), %r28 | 594 | 1: ldw 0(%sr3,%r26), %r28 |
602 | sub,<> %r28, %r25, %r0 | 595 | sub,<> %r28, %r25, %r0 |
603 | 2: stw %r24, 0(%sr3,%r26) | 596 | 2: stw %r24, 0(%sr3,%r26) |
604 | #ifdef CONFIG_SMP | ||
605 | /* Free lock */ | 597 | /* Free lock */ |
606 | stw %r20, 0(%sr2,%r20) | 598 | stw %r20, 0(%sr2,%r20) |
607 | # if ENABLE_LWS_DEBUG | 599 | #if ENABLE_LWS_DEBUG |
608 | /* Clear thread register indicator */ | 600 | /* Clear thread register indicator */ |
609 | stw %r0, 4(%sr2,%r20) | 601 | stw %r0, 4(%sr2,%r20) |
610 | # endif | ||
611 | #endif | 602 | #endif |
612 | /* Return to userspace, set no error */ | 603 | /* Return to userspace, set no error */ |
613 | b lws_exit | 604 | b lws_exit |
@@ -615,12 +606,10 @@ cas_action: | |||
615 | 606 | ||
616 | 3: | 607 | 3: |
617 | /* Error occured on load or store */ | 608 | /* Error occured on load or store */ |
618 | #ifdef CONFIG_SMP | ||
619 | /* Free lock */ | 609 | /* Free lock */ |
620 | stw %r20, 0(%sr2,%r20) | 610 | stw %r20, 0(%sr2,%r20) |
621 | # if ENABLE_LWS_DEBUG | 611 | #if ENABLE_LWS_DEBUG |
622 | stw %r0, 4(%sr2,%r20) | 612 | stw %r0, 4(%sr2,%r20) |
623 | # endif | ||
624 | #endif | 613 | #endif |
625 | b lws_exit | 614 | b lws_exit |
626 | ldo -EFAULT(%r0),%r21 /* set errno */ | 615 | ldo -EFAULT(%r0),%r21 /* set errno */ |
@@ -672,7 +661,6 @@ ENTRY(sys_call_table64) | |||
672 | END(sys_call_table64) | 661 | END(sys_call_table64) |
673 | #endif | 662 | #endif |
674 | 663 | ||
675 | #ifdef CONFIG_SMP | ||
676 | /* | 664 | /* |
677 | All light-weight-syscall atomic operations | 665 | All light-weight-syscall atomic operations |
678 | will use this set of locks | 666 | will use this set of locks |
@@ -694,8 +682,6 @@ ENTRY(lws_lock_start) | |||
694 | .endr | 682 | .endr |
695 | END(lws_lock_start) | 683 | END(lws_lock_start) |
696 | .previous | 684 | .previous |
697 | #endif | ||
698 | /* CONFIG_SMP for lws_lock_start */ | ||
699 | 685 | ||
700 | .end | 686 | .end |
701 | 687 | ||
diff --git a/arch/parisc/math-emu/decode_exc.c b/arch/parisc/math-emu/decode_exc.c index 3ca1c6149218..27a7492ddb0d 100644 --- a/arch/parisc/math-emu/decode_exc.c +++ b/arch/parisc/math-emu/decode_exc.c | |||
@@ -342,6 +342,7 @@ decode_fpu(unsigned int Fpu_register[], unsigned int trap_counts[]) | |||
342 | return SIGNALCODE(SIGFPE, FPE_FLTINV); | 342 | return SIGNALCODE(SIGFPE, FPE_FLTINV); |
343 | case DIVISIONBYZEROEXCEPTION: | 343 | case DIVISIONBYZEROEXCEPTION: |
344 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); | 344 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |
345 | Clear_excp_register(exception_index); | ||
345 | return SIGNALCODE(SIGFPE, FPE_FLTDIV); | 346 | return SIGNALCODE(SIGFPE, FPE_FLTDIV); |
346 | case INEXACTEXCEPTION: | 347 | case INEXACTEXCEPTION: |
347 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); | 348 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index c6afbfc95770..18162ce4261e 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c | |||
@@ -264,8 +264,7 @@ no_context: | |||
264 | 264 | ||
265 | out_of_memory: | 265 | out_of_memory: |
266 | up_read(&mm->mmap_sem); | 266 | up_read(&mm->mmap_sem); |
267 | printk(KERN_CRIT "VM: killing process %s\n", current->comm); | 267 | if (!user_mode(regs)) |
268 | if (user_mode(regs)) | 268 | goto no_context; |
269 | do_group_exit(SIGKILL); | 269 | pagefault_out_of_memory(); |
270 | goto no_context; | ||
271 | } | 270 | } |
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index 5c2808252516..1a40da92154c 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -1849,8 +1849,7 @@ out: | |||
1849 | return ret; | 1849 | return ret; |
1850 | } | 1850 | } |
1851 | 1851 | ||
1852 | static int spufs_mfc_fsync(struct file *file, struct dentry *dentry, | 1852 | static int spufs_mfc_fsync(struct file *file, int datasync) |
1853 | int datasync) | ||
1854 | { | 1853 | { |
1855 | return spufs_mfc_flush(file, NULL); | 1854 | return spufs_mfc_flush(file, NULL); |
1856 | } | 1855 | } |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index fc1b1c42b1dc..e5e5f823d687 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -251,7 +251,7 @@ const struct file_operations spufs_context_fops = { | |||
251 | .llseek = dcache_dir_lseek, | 251 | .llseek = dcache_dir_lseek, |
252 | .read = generic_read_dir, | 252 | .read = generic_read_dir, |
253 | .readdir = dcache_readdir, | 253 | .readdir = dcache_readdir, |
254 | .fsync = simple_sync_file, | 254 | .fsync = noop_fsync, |
255 | }; | 255 | }; |
256 | EXPORT_SYMBOL_GPL(spufs_context_fops); | 256 | EXPORT_SYMBOL_GPL(spufs_context_fops); |
257 | 257 | ||
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c index 1fefae76e295..e19ff021e711 100644 --- a/arch/powerpc/platforms/pseries/hvCall_inst.c +++ b/arch/powerpc/platforms/pseries/hvCall_inst.c | |||
@@ -102,7 +102,7 @@ static const struct file_operations hcall_inst_seq_fops = { | |||
102 | #define CPU_NAME_BUF_SIZE 32 | 102 | #define CPU_NAME_BUF_SIZE 32 |
103 | 103 | ||
104 | 104 | ||
105 | static void probe_hcall_entry(unsigned long opcode, unsigned long *args) | 105 | static void probe_hcall_entry(void *ignored, unsigned long opcode, unsigned long *args) |
106 | { | 106 | { |
107 | struct hcall_stats *h; | 107 | struct hcall_stats *h; |
108 | 108 | ||
@@ -114,7 +114,7 @@ static void probe_hcall_entry(unsigned long opcode, unsigned long *args) | |||
114 | h->purr_start = mfspr(SPRN_PURR); | 114 | h->purr_start = mfspr(SPRN_PURR); |
115 | } | 115 | } |
116 | 116 | ||
117 | static void probe_hcall_exit(unsigned long opcode, unsigned long retval, | 117 | static void probe_hcall_exit(void *ignored, unsigned long opcode, unsigned long retval, |
118 | unsigned long *retbuf) | 118 | unsigned long *retbuf) |
119 | { | 119 | { |
120 | struct hcall_stats *h; | 120 | struct hcall_stats *h; |
@@ -140,11 +140,11 @@ static int __init hcall_inst_init(void) | |||
140 | if (!firmware_has_feature(FW_FEATURE_LPAR)) | 140 | if (!firmware_has_feature(FW_FEATURE_LPAR)) |
141 | return 0; | 141 | return 0; |
142 | 142 | ||
143 | if (register_trace_hcall_entry(probe_hcall_entry)) | 143 | if (register_trace_hcall_entry(probe_hcall_entry, NULL)) |
144 | return -EINVAL; | 144 | return -EINVAL; |
145 | 145 | ||
146 | if (register_trace_hcall_exit(probe_hcall_exit)) { | 146 | if (register_trace_hcall_exit(probe_hcall_exit, NULL)) { |
147 | unregister_trace_hcall_entry(probe_hcall_entry); | 147 | unregister_trace_hcall_entry(probe_hcall_entry, NULL); |
148 | return -EINVAL; | 148 | return -EINVAL; |
149 | } | 149 | } |
150 | 150 | ||
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 56f462cf22d2..aa2c39d968fc 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h | |||
@@ -85,7 +85,6 @@ extern int acpi_ioapic; | |||
85 | extern int acpi_noirq; | 85 | extern int acpi_noirq; |
86 | extern int acpi_strict; | 86 | extern int acpi_strict; |
87 | extern int acpi_disabled; | 87 | extern int acpi_disabled; |
88 | extern int acpi_ht; | ||
89 | extern int acpi_pci_disabled; | 88 | extern int acpi_pci_disabled; |
90 | extern int acpi_skip_timer_override; | 89 | extern int acpi_skip_timer_override; |
91 | extern int acpi_use_timer_override; | 90 | extern int acpi_use_timer_override; |
@@ -97,7 +96,6 @@ void acpi_pic_sci_set_trigger(unsigned int, u16); | |||
97 | static inline void disable_acpi(void) | 96 | static inline void disable_acpi(void) |
98 | { | 97 | { |
99 | acpi_disabled = 1; | 98 | acpi_disabled = 1; |
100 | acpi_ht = 0; | ||
101 | acpi_pci_disabled = 1; | 99 | acpi_pci_disabled = 1; |
102 | acpi_noirq = 1; | 100 | acpi_noirq = 1; |
103 | } | 101 | } |
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index dca9c545f44e..468145914389 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h | |||
@@ -332,6 +332,7 @@ static __always_inline __pure bool __static_cpu_has(u8 bit) | |||
332 | #endif | 332 | #endif |
333 | } | 333 | } |
334 | 334 | ||
335 | #if __GNUC__ >= 4 | ||
335 | #define static_cpu_has(bit) \ | 336 | #define static_cpu_has(bit) \ |
336 | ( \ | 337 | ( \ |
337 | __builtin_constant_p(boot_cpu_has(bit)) ? \ | 338 | __builtin_constant_p(boot_cpu_has(bit)) ? \ |
@@ -340,6 +341,12 @@ static __always_inline __pure bool __static_cpu_has(u8 bit) | |||
340 | __static_cpu_has(bit) : \ | 341 | __static_cpu_has(bit) : \ |
341 | boot_cpu_has(bit) \ | 342 | boot_cpu_has(bit) \ |
342 | ) | 343 | ) |
344 | #else | ||
345 | /* | ||
346 | * gcc 3.x is too stupid to do the static test; fall back to dynamic. | ||
347 | */ | ||
348 | #define static_cpu_has(bit) boot_cpu_has(bit) | ||
349 | #endif | ||
343 | 350 | ||
344 | #endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */ | 351 | #endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */ |
345 | 352 | ||
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 6c3fdd631ed3..f32a4301c4d4 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -225,5 +225,13 @@ extern void mcheck_intel_therm_init(void); | |||
225 | static inline void mcheck_intel_therm_init(void) { } | 225 | static inline void mcheck_intel_therm_init(void) { } |
226 | #endif | 226 | #endif |
227 | 227 | ||
228 | /* | ||
229 | * Used by APEI to report memory error via /dev/mcelog | ||
230 | */ | ||
231 | |||
232 | struct cper_sec_mem_err; | ||
233 | extern void apei_mce_report_mem_error(int corrected, | ||
234 | struct cper_sec_mem_err *mem_err); | ||
235 | |||
228 | #endif /* __KERNEL__ */ | 236 | #endif /* __KERNEL__ */ |
229 | #endif /* _ASM_X86_MCE_H */ | 237 | #endif /* _ASM_X86_MCE_H */ |
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h index 62ba9400cc43..f0b6e5dbc5a0 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h | |||
@@ -239,8 +239,8 @@ static inline struct thread_info *current_thread_info(void) | |||
239 | #define TS_USEDFPU 0x0001 /* FPU was used by this task | 239 | #define TS_USEDFPU 0x0001 /* FPU was used by this task |
240 | this quantum (SMP) */ | 240 | this quantum (SMP) */ |
241 | #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/ | 241 | #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/ |
242 | #define TS_POLLING 0x0004 /* true if in idle loop | 242 | #define TS_POLLING 0x0004 /* idle task polling need_resched, |
243 | and not sleeping */ | 243 | skip sending interrupt */ |
244 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ | 244 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ |
245 | 245 | ||
246 | #define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING) | 246 | #define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING) |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 488be461a380..60cc4058ed5f 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -63,7 +63,6 @@ EXPORT_SYMBOL(acpi_disabled); | |||
63 | int acpi_noirq; /* skip ACPI IRQ initialization */ | 63 | int acpi_noirq; /* skip ACPI IRQ initialization */ |
64 | int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */ | 64 | int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */ |
65 | EXPORT_SYMBOL(acpi_pci_disabled); | 65 | EXPORT_SYMBOL(acpi_pci_disabled); |
66 | int acpi_ht __initdata = 1; /* enable HT */ | ||
67 | 66 | ||
68 | int acpi_lapic; | 67 | int acpi_lapic; |
69 | int acpi_ioapic; | 68 | int acpi_ioapic; |
@@ -1501,9 +1500,8 @@ void __init acpi_boot_table_init(void) | |||
1501 | 1500 | ||
1502 | /* | 1501 | /* |
1503 | * If acpi_disabled, bail out | 1502 | * If acpi_disabled, bail out |
1504 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1505 | */ | 1503 | */ |
1506 | if (acpi_disabled && !acpi_ht) | 1504 | if (acpi_disabled) |
1507 | return; | 1505 | return; |
1508 | 1506 | ||
1509 | /* | 1507 | /* |
@@ -1534,9 +1532,8 @@ int __init early_acpi_boot_init(void) | |||
1534 | { | 1532 | { |
1535 | /* | 1533 | /* |
1536 | * If acpi_disabled, bail out | 1534 | * If acpi_disabled, bail out |
1537 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1538 | */ | 1535 | */ |
1539 | if (acpi_disabled && !acpi_ht) | 1536 | if (acpi_disabled) |
1540 | return 1; | 1537 | return 1; |
1541 | 1538 | ||
1542 | /* | 1539 | /* |
@@ -1554,9 +1551,8 @@ int __init acpi_boot_init(void) | |||
1554 | 1551 | ||
1555 | /* | 1552 | /* |
1556 | * If acpi_disabled, bail out | 1553 | * If acpi_disabled, bail out |
1557 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1558 | */ | 1554 | */ |
1559 | if (acpi_disabled && !acpi_ht) | 1555 | if (acpi_disabled) |
1560 | return 1; | 1556 | return 1; |
1561 | 1557 | ||
1562 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); | 1558 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); |
@@ -1591,21 +1587,12 @@ static int __init parse_acpi(char *arg) | |||
1591 | /* acpi=force to over-ride black-list */ | 1587 | /* acpi=force to over-ride black-list */ |
1592 | else if (strcmp(arg, "force") == 0) { | 1588 | else if (strcmp(arg, "force") == 0) { |
1593 | acpi_force = 1; | 1589 | acpi_force = 1; |
1594 | acpi_ht = 1; | ||
1595 | acpi_disabled = 0; | 1590 | acpi_disabled = 0; |
1596 | } | 1591 | } |
1597 | /* acpi=strict disables out-of-spec workarounds */ | 1592 | /* acpi=strict disables out-of-spec workarounds */ |
1598 | else if (strcmp(arg, "strict") == 0) { | 1593 | else if (strcmp(arg, "strict") == 0) { |
1599 | acpi_strict = 1; | 1594 | acpi_strict = 1; |
1600 | } | 1595 | } |
1601 | /* Limit ACPI just to boot-time to enable HT */ | ||
1602 | else if (strcmp(arg, "ht") == 0) { | ||
1603 | if (!acpi_force) { | ||
1604 | printk(KERN_WARNING "acpi=ht will be removed in Linux-2.6.35\n"); | ||
1605 | disable_acpi(); | ||
1606 | } | ||
1607 | acpi_ht = 1; | ||
1608 | } | ||
1609 | /* acpi=rsdt use RSDT instead of XSDT */ | 1596 | /* acpi=rsdt use RSDT instead of XSDT */ |
1610 | else if (strcmp(arg, "rsdt") == 0) { | 1597 | else if (strcmp(arg, "rsdt") == 0) { |
1611 | acpi_rsdt_forced = 1; | 1598 | acpi_rsdt_forced = 1; |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index f9961034e557..82e508677b91 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
@@ -162,8 +162,6 @@ static int __init acpi_sleep_setup(char *str) | |||
162 | #endif | 162 | #endif |
163 | if (strncmp(str, "old_ordering", 12) == 0) | 163 | if (strncmp(str, "old_ordering", 12) == 0) |
164 | acpi_old_suspend_ordering(); | 164 | acpi_old_suspend_ordering(); |
165 | if (strncmp(str, "sci_force_enable", 16) == 0) | ||
166 | acpi_set_sci_en_on_resume(); | ||
167 | str = strchr(str, ','); | 165 | str = strchr(str, ','); |
168 | if (str != NULL) | 166 | if (str != NULL) |
169 | str += strspn(str, ", \t"); | 167 | str += strspn(str, ", \t"); |
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index e5a4a1e01618..c02cc692985c 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <asm/smp.h> | 51 | #include <asm/smp.h> |
52 | #include <asm/mce.h> | 52 | #include <asm/mce.h> |
53 | #include <asm/kvm_para.h> | 53 | #include <asm/kvm_para.h> |
54 | #include <asm/tsc.h> | ||
54 | 55 | ||
55 | unsigned int num_processors; | 56 | unsigned int num_processors; |
56 | 57 | ||
@@ -1151,8 +1152,13 @@ static void __cpuinit lapic_setup_esr(void) | |||
1151 | */ | 1152 | */ |
1152 | void __cpuinit setup_local_APIC(void) | 1153 | void __cpuinit setup_local_APIC(void) |
1153 | { | 1154 | { |
1154 | unsigned int value; | 1155 | unsigned int value, queued; |
1155 | int i, j; | 1156 | int i, j, acked = 0; |
1157 | unsigned long long tsc = 0, ntsc; | ||
1158 | long long max_loops = cpu_khz; | ||
1159 | |||
1160 | if (cpu_has_tsc) | ||
1161 | rdtscll(tsc); | ||
1156 | 1162 | ||
1157 | if (disable_apic) { | 1163 | if (disable_apic) { |
1158 | arch_disable_smp_support(); | 1164 | arch_disable_smp_support(); |
@@ -1204,13 +1210,32 @@ void __cpuinit setup_local_APIC(void) | |||
1204 | * the interrupt. Hence a vector might get locked. It was noticed | 1210 | * the interrupt. Hence a vector might get locked. It was noticed |
1205 | * for timer irq (vector 0x31). Issue an extra EOI to clear ISR. | 1211 | * for timer irq (vector 0x31). Issue an extra EOI to clear ISR. |
1206 | */ | 1212 | */ |
1207 | for (i = APIC_ISR_NR - 1; i >= 0; i--) { | 1213 | do { |
1208 | value = apic_read(APIC_ISR + i*0x10); | 1214 | queued = 0; |
1209 | for (j = 31; j >= 0; j--) { | 1215 | for (i = APIC_ISR_NR - 1; i >= 0; i--) |
1210 | if (value & (1<<j)) | 1216 | queued |= apic_read(APIC_IRR + i*0x10); |
1211 | ack_APIC_irq(); | 1217 | |
1218 | for (i = APIC_ISR_NR - 1; i >= 0; i--) { | ||
1219 | value = apic_read(APIC_ISR + i*0x10); | ||
1220 | for (j = 31; j >= 0; j--) { | ||
1221 | if (value & (1<<j)) { | ||
1222 | ack_APIC_irq(); | ||
1223 | acked++; | ||
1224 | } | ||
1225 | } | ||
1212 | } | 1226 | } |
1213 | } | 1227 | if (acked > 256) { |
1228 | printk(KERN_ERR "LAPIC pending interrupts after %d EOI\n", | ||
1229 | acked); | ||
1230 | break; | ||
1231 | } | ||
1232 | if (cpu_has_tsc) { | ||
1233 | rdtscll(ntsc); | ||
1234 | max_loops = (cpu_khz << 10) - (ntsc - tsc); | ||
1235 | } else | ||
1236 | max_loops--; | ||
1237 | } while (queued && max_loops > 0); | ||
1238 | WARN_ON(max_loops <= 0); | ||
1214 | 1239 | ||
1215 | /* | 1240 | /* |
1216 | * Now that we are all set up, enable the APIC | 1241 | * Now that we are all set up, enable the APIC |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 6f3dc8fbbfdc..7ec2123838e6 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
@@ -1497,8 +1497,8 @@ static struct cpufreq_driver cpufreq_amd64_driver = { | |||
1497 | * simply keep the boost-disable flag in sync with the current global | 1497 | * simply keep the boost-disable flag in sync with the current global |
1498 | * state. | 1498 | * state. |
1499 | */ | 1499 | */ |
1500 | static int __cpuinit cpb_notify(struct notifier_block *nb, unsigned long action, | 1500 | static int cpb_notify(struct notifier_block *nb, unsigned long action, |
1501 | void *hcpu) | 1501 | void *hcpu) |
1502 | { | 1502 | { |
1503 | unsigned cpu = (long)hcpu; | 1503 | unsigned cpu = (long)hcpu; |
1504 | u32 lo, hi; | 1504 | u32 lo, hi; |
@@ -1528,7 +1528,7 @@ static int __cpuinit cpb_notify(struct notifier_block *nb, unsigned long action, | |||
1528 | return NOTIFY_OK; | 1528 | return NOTIFY_OK; |
1529 | } | 1529 | } |
1530 | 1530 | ||
1531 | static struct notifier_block __cpuinitdata cpb_nb = { | 1531 | static struct notifier_block cpb_nb = { |
1532 | .notifier_call = cpb_notify, | 1532 | .notifier_call = cpb_notify, |
1533 | }; | 1533 | }; |
1534 | 1534 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/Makefile b/arch/x86/kernel/cpu/mcheck/Makefile index 4ac6d48fe11b..bb34b03af252 100644 --- a/arch/x86/kernel/cpu/mcheck/Makefile +++ b/arch/x86/kernel/cpu/mcheck/Makefile | |||
@@ -7,3 +7,5 @@ obj-$(CONFIG_X86_MCE_THRESHOLD) += threshold.o | |||
7 | obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o | 7 | obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o |
8 | 8 | ||
9 | obj-$(CONFIG_X86_THERMAL_VECTOR) += therm_throt.o | 9 | obj-$(CONFIG_X86_THERMAL_VECTOR) += therm_throt.o |
10 | |||
11 | obj-$(CONFIG_ACPI_APEI) += mce-apei.o | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce-apei.c b/arch/x86/kernel/cpu/mcheck/mce-apei.c new file mode 100644 index 000000000000..745b54f9be89 --- /dev/null +++ b/arch/x86/kernel/cpu/mcheck/mce-apei.c | |||
@@ -0,0 +1,138 @@ | |||
1 | /* | ||
2 | * Bridge between MCE and APEI | ||
3 | * | ||
4 | * On some machine, corrected memory errors are reported via APEI | ||
5 | * generic hardware error source (GHES) instead of corrected Machine | ||
6 | * Check. These corrected memory errors can be reported to user space | ||
7 | * through /dev/mcelog via faking a corrected Machine Check, so that | ||
8 | * the error memory page can be offlined by /sbin/mcelog if the error | ||
9 | * count for one page is beyond the threshold. | ||
10 | * | ||
11 | * For fatal MCE, save MCE record into persistent storage via ERST, so | ||
12 | * that the MCE record can be logged after reboot via ERST. | ||
13 | * | ||
14 | * Copyright 2010 Intel Corp. | ||
15 | * Author: Huang Ying <ying.huang@intel.com> | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or | ||
18 | * modify it under the terms of the GNU General Public License version | ||
19 | * 2 as published by the Free Software Foundation. | ||
20 | * | ||
21 | * This program is distributed in the hope that it will be useful, | ||
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | * GNU General Public License for more details. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License | ||
27 | * along with this program; if not, write to the Free Software | ||
28 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
29 | */ | ||
30 | |||
31 | #include <linux/kernel.h> | ||
32 | #include <linux/acpi.h> | ||
33 | #include <linux/cper.h> | ||
34 | #include <acpi/apei.h> | ||
35 | #include <asm/mce.h> | ||
36 | |||
37 | #include "mce-internal.h" | ||
38 | |||
39 | void apei_mce_report_mem_error(int corrected, struct cper_sec_mem_err *mem_err) | ||
40 | { | ||
41 | struct mce m; | ||
42 | |||
43 | /* Only corrected MC is reported */ | ||
44 | if (!corrected) | ||
45 | return; | ||
46 | |||
47 | mce_setup(&m); | ||
48 | m.bank = 1; | ||
49 | /* Fake a memory read corrected error with unknown channel */ | ||
50 | m.status = MCI_STATUS_VAL | MCI_STATUS_EN | MCI_STATUS_ADDRV | 0x9f; | ||
51 | m.addr = mem_err->physical_addr; | ||
52 | mce_log(&m); | ||
53 | mce_notify_irq(); | ||
54 | } | ||
55 | EXPORT_SYMBOL_GPL(apei_mce_report_mem_error); | ||
56 | |||
57 | #define CPER_CREATOR_MCE \ | ||
58 | UUID_LE(0x75a574e3, 0x5052, 0x4b29, 0x8a, 0x8e, 0xbe, 0x2c, \ | ||
59 | 0x64, 0x90, 0xb8, 0x9d) | ||
60 | #define CPER_SECTION_TYPE_MCE \ | ||
61 | UUID_LE(0xfe08ffbe, 0x95e4, 0x4be7, 0xbc, 0x73, 0x40, 0x96, \ | ||
62 | 0x04, 0x4a, 0x38, 0xfc) | ||
63 | |||
64 | /* | ||
65 | * CPER specification (in UEFI specification 2.3 appendix N) requires | ||
66 | * byte-packed. | ||
67 | */ | ||
68 | struct cper_mce_record { | ||
69 | struct cper_record_header hdr; | ||
70 | struct cper_section_descriptor sec_hdr; | ||
71 | struct mce mce; | ||
72 | } __packed; | ||
73 | |||
74 | int apei_write_mce(struct mce *m) | ||
75 | { | ||
76 | struct cper_mce_record rcd; | ||
77 | |||
78 | memset(&rcd, 0, sizeof(rcd)); | ||
79 | memcpy(rcd.hdr.signature, CPER_SIG_RECORD, CPER_SIG_SIZE); | ||
80 | rcd.hdr.revision = CPER_RECORD_REV; | ||
81 | rcd.hdr.signature_end = CPER_SIG_END; | ||
82 | rcd.hdr.section_count = 1; | ||
83 | rcd.hdr.error_severity = CPER_SER_FATAL; | ||
84 | /* timestamp, platform_id, partition_id are all invalid */ | ||
85 | rcd.hdr.validation_bits = 0; | ||
86 | rcd.hdr.record_length = sizeof(rcd); | ||
87 | rcd.hdr.creator_id = CPER_CREATOR_MCE; | ||
88 | rcd.hdr.notification_type = CPER_NOTIFY_MCE; | ||
89 | rcd.hdr.record_id = cper_next_record_id(); | ||
90 | rcd.hdr.flags = CPER_HW_ERROR_FLAGS_PREVERR; | ||
91 | |||
92 | rcd.sec_hdr.section_offset = (void *)&rcd.mce - (void *)&rcd; | ||
93 | rcd.sec_hdr.section_length = sizeof(rcd.mce); | ||
94 | rcd.sec_hdr.revision = CPER_SEC_REV; | ||
95 | /* fru_id and fru_text is invalid */ | ||
96 | rcd.sec_hdr.validation_bits = 0; | ||
97 | rcd.sec_hdr.flags = CPER_SEC_PRIMARY; | ||
98 | rcd.sec_hdr.section_type = CPER_SECTION_TYPE_MCE; | ||
99 | rcd.sec_hdr.section_severity = CPER_SER_FATAL; | ||
100 | |||
101 | memcpy(&rcd.mce, m, sizeof(*m)); | ||
102 | |||
103 | return erst_write(&rcd.hdr); | ||
104 | } | ||
105 | |||
106 | ssize_t apei_read_mce(struct mce *m, u64 *record_id) | ||
107 | { | ||
108 | struct cper_mce_record rcd; | ||
109 | ssize_t len; | ||
110 | |||
111 | len = erst_read_next(&rcd.hdr, sizeof(rcd)); | ||
112 | if (len <= 0) | ||
113 | return len; | ||
114 | /* Can not skip other records in storage via ERST unless clear them */ | ||
115 | else if (len != sizeof(rcd) || | ||
116 | uuid_le_cmp(rcd.hdr.creator_id, CPER_CREATOR_MCE)) { | ||
117 | if (printk_ratelimit()) | ||
118 | pr_warning( | ||
119 | "MCE-APEI: Can not skip the unknown record in ERST"); | ||
120 | return -EIO; | ||
121 | } | ||
122 | |||
123 | memcpy(m, &rcd.mce, sizeof(*m)); | ||
124 | *record_id = rcd.hdr.record_id; | ||
125 | |||
126 | return sizeof(*m); | ||
127 | } | ||
128 | |||
129 | /* Check whether there is record in ERST */ | ||
130 | int apei_check_mce(void) | ||
131 | { | ||
132 | return erst_get_record_count(); | ||
133 | } | ||
134 | |||
135 | int apei_clear_mce(u64 record_id) | ||
136 | { | ||
137 | return erst_clear(record_id); | ||
138 | } | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce-internal.h b/arch/x86/kernel/cpu/mcheck/mce-internal.h index 32996f9fab67..fefcc69ee8b5 100644 --- a/arch/x86/kernel/cpu/mcheck/mce-internal.h +++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h | |||
@@ -28,3 +28,26 @@ extern int mce_ser; | |||
28 | 28 | ||
29 | extern struct mce_bank *mce_banks; | 29 | extern struct mce_bank *mce_banks; |
30 | 30 | ||
31 | #ifdef CONFIG_ACPI_APEI | ||
32 | int apei_write_mce(struct mce *m); | ||
33 | ssize_t apei_read_mce(struct mce *m, u64 *record_id); | ||
34 | int apei_check_mce(void); | ||
35 | int apei_clear_mce(u64 record_id); | ||
36 | #else | ||
37 | static inline int apei_write_mce(struct mce *m) | ||
38 | { | ||
39 | return -EINVAL; | ||
40 | } | ||
41 | static inline ssize_t apei_read_mce(struct mce *m, u64 *record_id) | ||
42 | { | ||
43 | return 0; | ||
44 | } | ||
45 | static inline int apei_check_mce(void) | ||
46 | { | ||
47 | return 0; | ||
48 | } | ||
49 | static inline int apei_clear_mce(u64 record_id) | ||
50 | { | ||
51 | return -EINVAL; | ||
52 | } | ||
53 | #endif | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 7a355ddcc64b..707165dbc203 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -264,7 +264,7 @@ static void wait_for_panic(void) | |||
264 | 264 | ||
265 | static void mce_panic(char *msg, struct mce *final, char *exp) | 265 | static void mce_panic(char *msg, struct mce *final, char *exp) |
266 | { | 266 | { |
267 | int i; | 267 | int i, apei_err = 0; |
268 | 268 | ||
269 | if (!fake_panic) { | 269 | if (!fake_panic) { |
270 | /* | 270 | /* |
@@ -287,8 +287,11 @@ static void mce_panic(char *msg, struct mce *final, char *exp) | |||
287 | struct mce *m = &mcelog.entry[i]; | 287 | struct mce *m = &mcelog.entry[i]; |
288 | if (!(m->status & MCI_STATUS_VAL)) | 288 | if (!(m->status & MCI_STATUS_VAL)) |
289 | continue; | 289 | continue; |
290 | if (!(m->status & MCI_STATUS_UC)) | 290 | if (!(m->status & MCI_STATUS_UC)) { |
291 | print_mce(m); | 291 | print_mce(m); |
292 | if (!apei_err) | ||
293 | apei_err = apei_write_mce(m); | ||
294 | } | ||
292 | } | 295 | } |
293 | /* Now print uncorrected but with the final one last */ | 296 | /* Now print uncorrected but with the final one last */ |
294 | for (i = 0; i < MCE_LOG_LEN; i++) { | 297 | for (i = 0; i < MCE_LOG_LEN; i++) { |
@@ -297,11 +300,17 @@ static void mce_panic(char *msg, struct mce *final, char *exp) | |||
297 | continue; | 300 | continue; |
298 | if (!(m->status & MCI_STATUS_UC)) | 301 | if (!(m->status & MCI_STATUS_UC)) |
299 | continue; | 302 | continue; |
300 | if (!final || memcmp(m, final, sizeof(struct mce))) | 303 | if (!final || memcmp(m, final, sizeof(struct mce))) { |
301 | print_mce(m); | 304 | print_mce(m); |
305 | if (!apei_err) | ||
306 | apei_err = apei_write_mce(m); | ||
307 | } | ||
302 | } | 308 | } |
303 | if (final) | 309 | if (final) { |
304 | print_mce(final); | 310 | print_mce(final); |
311 | if (!apei_err) | ||
312 | apei_err = apei_write_mce(final); | ||
313 | } | ||
305 | if (cpu_missing) | 314 | if (cpu_missing) |
306 | printk(KERN_EMERG "Some CPUs didn't answer in synchronization\n"); | 315 | printk(KERN_EMERG "Some CPUs didn't answer in synchronization\n"); |
307 | print_mce_tail(); | 316 | print_mce_tail(); |
@@ -1493,6 +1502,43 @@ static void collect_tscs(void *data) | |||
1493 | rdtscll(cpu_tsc[smp_processor_id()]); | 1502 | rdtscll(cpu_tsc[smp_processor_id()]); |
1494 | } | 1503 | } |
1495 | 1504 | ||
1505 | static int mce_apei_read_done; | ||
1506 | |||
1507 | /* Collect MCE record of previous boot in persistent storage via APEI ERST. */ | ||
1508 | static int __mce_read_apei(char __user **ubuf, size_t usize) | ||
1509 | { | ||
1510 | int rc; | ||
1511 | u64 record_id; | ||
1512 | struct mce m; | ||
1513 | |||
1514 | if (usize < sizeof(struct mce)) | ||
1515 | return -EINVAL; | ||
1516 | |||
1517 | rc = apei_read_mce(&m, &record_id); | ||
1518 | /* Error or no more MCE record */ | ||
1519 | if (rc <= 0) { | ||
1520 | mce_apei_read_done = 1; | ||
1521 | return rc; | ||
1522 | } | ||
1523 | rc = -EFAULT; | ||
1524 | if (copy_to_user(*ubuf, &m, sizeof(struct mce))) | ||
1525 | return rc; | ||
1526 | /* | ||
1527 | * In fact, we should have cleared the record after that has | ||
1528 | * been flushed to the disk or sent to network in | ||
1529 | * /sbin/mcelog, but we have no interface to support that now, | ||
1530 | * so just clear it to avoid duplication. | ||
1531 | */ | ||
1532 | rc = apei_clear_mce(record_id); | ||
1533 | if (rc) { | ||
1534 | mce_apei_read_done = 1; | ||
1535 | return rc; | ||
1536 | } | ||
1537 | *ubuf += sizeof(struct mce); | ||
1538 | |||
1539 | return 0; | ||
1540 | } | ||
1541 | |||
1496 | static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | 1542 | static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, |
1497 | loff_t *off) | 1543 | loff_t *off) |
1498 | { | 1544 | { |
@@ -1506,15 +1552,19 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | |||
1506 | return -ENOMEM; | 1552 | return -ENOMEM; |
1507 | 1553 | ||
1508 | mutex_lock(&mce_read_mutex); | 1554 | mutex_lock(&mce_read_mutex); |
1555 | |||
1556 | if (!mce_apei_read_done) { | ||
1557 | err = __mce_read_apei(&buf, usize); | ||
1558 | if (err || buf != ubuf) | ||
1559 | goto out; | ||
1560 | } | ||
1561 | |||
1509 | next = rcu_dereference_check_mce(mcelog.next); | 1562 | next = rcu_dereference_check_mce(mcelog.next); |
1510 | 1563 | ||
1511 | /* Only supports full reads right now */ | 1564 | /* Only supports full reads right now */ |
1512 | if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) { | 1565 | err = -EINVAL; |
1513 | mutex_unlock(&mce_read_mutex); | 1566 | if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) |
1514 | kfree(cpu_tsc); | 1567 | goto out; |
1515 | |||
1516 | return -EINVAL; | ||
1517 | } | ||
1518 | 1568 | ||
1519 | err = 0; | 1569 | err = 0; |
1520 | prev = 0; | 1570 | prev = 0; |
@@ -1562,10 +1612,15 @@ timeout: | |||
1562 | memset(&mcelog.entry[i], 0, sizeof(struct mce)); | 1612 | memset(&mcelog.entry[i], 0, sizeof(struct mce)); |
1563 | } | 1613 | } |
1564 | } | 1614 | } |
1615 | |||
1616 | if (err) | ||
1617 | err = -EFAULT; | ||
1618 | |||
1619 | out: | ||
1565 | mutex_unlock(&mce_read_mutex); | 1620 | mutex_unlock(&mce_read_mutex); |
1566 | kfree(cpu_tsc); | 1621 | kfree(cpu_tsc); |
1567 | 1622 | ||
1568 | return err ? -EFAULT : buf - ubuf; | 1623 | return err ? err : buf - ubuf; |
1569 | } | 1624 | } |
1570 | 1625 | ||
1571 | static unsigned int mce_poll(struct file *file, poll_table *wait) | 1626 | static unsigned int mce_poll(struct file *file, poll_table *wait) |
@@ -1573,6 +1628,8 @@ static unsigned int mce_poll(struct file *file, poll_table *wait) | |||
1573 | poll_wait(file, &mce_wait, wait); | 1628 | poll_wait(file, &mce_wait, wait); |
1574 | if (rcu_dereference_check_mce(mcelog.next)) | 1629 | if (rcu_dereference_check_mce(mcelog.next)) |
1575 | return POLLIN | POLLRDNORM; | 1630 | return POLLIN | POLLRDNORM; |
1631 | if (!mce_apei_read_done && apei_check_mce()) | ||
1632 | return POLLIN | POLLRDNORM; | ||
1576 | return 0; | 1633 | return 0; |
1577 | } | 1634 | } |
1578 | 1635 | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index e8029896309a..b4ae4acbd031 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -676,6 +676,17 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = { | |||
676 | DMI_MATCH(DMI_BOARD_NAME, "DG45FC"), | 676 | DMI_MATCH(DMI_BOARD_NAME, "DG45FC"), |
677 | }, | 677 | }, |
678 | }, | 678 | }, |
679 | /* | ||
680 | * The Dell Inspiron Mini 1012 has DMI_BIOS_VENDOR = "Dell Inc.", so | ||
681 | * match on the product name. | ||
682 | */ | ||
683 | { | ||
684 | .callback = dmi_low_memory_corruption, | ||
685 | .ident = "Phoenix BIOS", | ||
686 | .matches = { | ||
687 | DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1012"), | ||
688 | }, | ||
689 | }, | ||
679 | #endif | 690 | #endif |
680 | {} | 691 | {} |
681 | }; | 692 | }; |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 763d815e27a0..37462f1ddba5 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -1215,9 +1215,17 @@ __init void prefill_possible_map(void) | |||
1215 | if (!num_processors) | 1215 | if (!num_processors) |
1216 | num_processors = 1; | 1216 | num_processors = 1; |
1217 | 1217 | ||
1218 | if (setup_possible_cpus == -1) | 1218 | i = setup_max_cpus ?: 1; |
1219 | possible = num_processors + disabled_cpus; | 1219 | if (setup_possible_cpus == -1) { |
1220 | else | 1220 | possible = num_processors; |
1221 | #ifdef CONFIG_HOTPLUG_CPU | ||
1222 | if (setup_max_cpus) | ||
1223 | possible += disabled_cpus; | ||
1224 | #else | ||
1225 | if (possible > i) | ||
1226 | possible = i; | ||
1227 | #endif | ||
1228 | } else | ||
1221 | possible = setup_possible_cpus; | 1229 | possible = setup_possible_cpus; |
1222 | 1230 | ||
1223 | total_cpus = max_t(int, possible, num_processors + disabled_cpus); | 1231 | total_cpus = max_t(int, possible, num_processors + disabled_cpus); |
@@ -1230,11 +1238,23 @@ __init void prefill_possible_map(void) | |||
1230 | possible = nr_cpu_ids; | 1238 | possible = nr_cpu_ids; |
1231 | } | 1239 | } |
1232 | 1240 | ||
1241 | #ifdef CONFIG_HOTPLUG_CPU | ||
1242 | if (!setup_max_cpus) | ||
1243 | #endif | ||
1244 | if (possible > i) { | ||
1245 | printk(KERN_WARNING | ||
1246 | "%d Processors exceeds max_cpus limit of %u\n", | ||
1247 | possible, setup_max_cpus); | ||
1248 | possible = i; | ||
1249 | } | ||
1250 | |||
1233 | printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", | 1251 | printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", |
1234 | possible, max_t(int, possible - num_processors, 0)); | 1252 | possible, max_t(int, possible - num_processors, 0)); |
1235 | 1253 | ||
1236 | for (i = 0; i < possible; i++) | 1254 | for (i = 0; i < possible; i++) |
1237 | set_cpu_possible(i, true); | 1255 | set_cpu_possible(i, true); |
1256 | for (; i < NR_CPUS; i++) | ||
1257 | set_cpu_possible(i, false); | ||
1238 | 1258 | ||
1239 | nr_cpu_ids = possible; | 1259 | nr_cpu_ids = possible; |
1240 | } | 1260 | } |
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 2bdf628066bd..9257510b4836 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -1390,7 +1390,6 @@ __init void lguest_init(void) | |||
1390 | #endif | 1390 | #endif |
1391 | #ifdef CONFIG_ACPI | 1391 | #ifdef CONFIG_ACPI |
1392 | acpi_disabled = 1; | 1392 | acpi_disabled = 1; |
1393 | acpi_ht = 0; | ||
1394 | #endif | 1393 | #endif |
1395 | 1394 | ||
1396 | /* | 1395 | /* |
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index 10c27bb1e95f..550df481accd 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c | |||
@@ -2,7 +2,6 @@ | |||
2 | #include <linux/topology.h> | 2 | #include <linux/topology.h> |
3 | #include <linux/module.h> | 3 | #include <linux/module.h> |
4 | #include <linux/bootmem.h> | 4 | #include <linux/bootmem.h> |
5 | #include <linux/random.h> | ||
6 | 5 | ||
7 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | 6 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS |
8 | # define DBG(x...) printk(KERN_DEBUG x) | 7 | # define DBG(x...) printk(KERN_DEBUG x) |
@@ -66,19 +65,3 @@ const struct cpumask *cpumask_of_node(int node) | |||
66 | } | 65 | } |
67 | EXPORT_SYMBOL(cpumask_of_node); | 66 | EXPORT_SYMBOL(cpumask_of_node); |
68 | #endif | 67 | #endif |
69 | |||
70 | /* | ||
71 | * Return the bit number of a random bit set in the nodemask. | ||
72 | * (returns -1 if nodemask is empty) | ||
73 | */ | ||
74 | int __node_random(const nodemask_t *maskp) | ||
75 | { | ||
76 | int w, bit = -1; | ||
77 | |||
78 | w = nodes_weight(*maskp); | ||
79 | if (w) | ||
80 | bit = bitmap_ord_to_pos(maskp->bits, | ||
81 | get_random_int() % w, MAX_NUMNODES); | ||
82 | return bit; | ||
83 | } | ||
84 | EXPORT_SYMBOL(__node_random); | ||
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index bbe5502ee1cb..acc15b23b743 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -336,6 +336,7 @@ int free_memtype(u64 start, u64 end) | |||
336 | { | 336 | { |
337 | int err = -EINVAL; | 337 | int err = -EINVAL; |
338 | int is_range_ram; | 338 | int is_range_ram; |
339 | struct memtype *entry; | ||
339 | 340 | ||
340 | if (!pat_enabled) | 341 | if (!pat_enabled) |
341 | return 0; | 342 | return 0; |
@@ -355,17 +356,20 @@ int free_memtype(u64 start, u64 end) | |||
355 | } | 356 | } |
356 | 357 | ||
357 | spin_lock(&memtype_lock); | 358 | spin_lock(&memtype_lock); |
358 | err = rbt_memtype_erase(start, end); | 359 | entry = rbt_memtype_erase(start, end); |
359 | spin_unlock(&memtype_lock); | 360 | spin_unlock(&memtype_lock); |
360 | 361 | ||
361 | if (err) { | 362 | if (!entry) { |
362 | printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", | 363 | printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", |
363 | current->comm, current->pid, start, end); | 364 | current->comm, current->pid, start, end); |
365 | return -EINVAL; | ||
364 | } | 366 | } |
365 | 367 | ||
368 | kfree(entry); | ||
369 | |||
366 | dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end); | 370 | dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end); |
367 | 371 | ||
368 | return err; | 372 | return 0; |
369 | } | 373 | } |
370 | 374 | ||
371 | 375 | ||
diff --git a/arch/x86/mm/pat_internal.h b/arch/x86/mm/pat_internal.h index 4f39eefa3e61..77e5ba153fac 100644 --- a/arch/x86/mm/pat_internal.h +++ b/arch/x86/mm/pat_internal.h | |||
@@ -28,15 +28,15 @@ static inline char *cattr_name(unsigned long flags) | |||
28 | #ifdef CONFIG_X86_PAT | 28 | #ifdef CONFIG_X86_PAT |
29 | extern int rbt_memtype_check_insert(struct memtype *new, | 29 | extern int rbt_memtype_check_insert(struct memtype *new, |
30 | unsigned long *new_type); | 30 | unsigned long *new_type); |
31 | extern int rbt_memtype_erase(u64 start, u64 end); | 31 | extern struct memtype *rbt_memtype_erase(u64 start, u64 end); |
32 | extern struct memtype *rbt_memtype_lookup(u64 addr); | 32 | extern struct memtype *rbt_memtype_lookup(u64 addr); |
33 | extern int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos); | 33 | extern int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos); |
34 | #else | 34 | #else |
35 | static inline int rbt_memtype_check_insert(struct memtype *new, | 35 | static inline int rbt_memtype_check_insert(struct memtype *new, |
36 | unsigned long *new_type) | 36 | unsigned long *new_type) |
37 | { return 0; } | 37 | { return 0; } |
38 | static inline int rbt_memtype_erase(u64 start, u64 end) | 38 | static inline struct memtype *rbt_memtype_erase(u64 start, u64 end) |
39 | { return 0; } | 39 | { return NULL; } |
40 | static inline struct memtype *rbt_memtype_lookup(u64 addr) | 40 | static inline struct memtype *rbt_memtype_lookup(u64 addr) |
41 | { return NULL; } | 41 | { return NULL; } |
42 | static inline int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos) | 42 | static inline int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos) |
diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c index 07de4cb8cc30..f537087bb740 100644 --- a/arch/x86/mm/pat_rbtree.c +++ b/arch/x86/mm/pat_rbtree.c | |||
@@ -231,16 +231,17 @@ int rbt_memtype_check_insert(struct memtype *new, unsigned long *ret_type) | |||
231 | return err; | 231 | return err; |
232 | } | 232 | } |
233 | 233 | ||
234 | int rbt_memtype_erase(u64 start, u64 end) | 234 | struct memtype *rbt_memtype_erase(u64 start, u64 end) |
235 | { | 235 | { |
236 | struct memtype *data; | 236 | struct memtype *data; |
237 | 237 | ||
238 | data = memtype_rb_exact_match(&memtype_rbroot, start, end); | 238 | data = memtype_rb_exact_match(&memtype_rbroot, start, end); |
239 | if (!data) | 239 | if (!data) |
240 | return -EINVAL; | 240 | goto out; |
241 | 241 | ||
242 | rb_erase(&data->rb, &memtype_rbroot); | 242 | rb_erase(&data->rb, &memtype_rbroot); |
243 | return 0; | 243 | out: |
244 | return data; | ||
244 | } | 245 | } |
245 | 246 | ||
246 | struct memtype *rbt_memtype_lookup(u64 addr) | 247 | struct memtype *rbt_memtype_lookup(u64 addr) |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 792854003ed3..cac718499256 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/pagemap.h> | 9 | #include <linux/pagemap.h> |
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/quicklist.h> | ||
13 | 12 | ||
14 | #include <asm/system.h> | 13 | #include <asm/system.h> |
15 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 31930fd30ea9..2ec04c424a62 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -207,10 +207,9 @@ get_current_resources(struct acpi_device *device, int busnum, | |||
207 | if (!info.res) | 207 | if (!info.res) |
208 | goto res_alloc_fail; | 208 | goto res_alloc_fail; |
209 | 209 | ||
210 | info.name = kmalloc(16, GFP_KERNEL); | 210 | info.name = kasprintf(GFP_KERNEL, "PCI Bus %04x:%02x", domain, busnum); |
211 | if (!info.name) | 211 | if (!info.name) |
212 | goto name_alloc_fail; | 212 | goto name_alloc_fail; |
213 | sprintf(info.name, "PCI Bus %04x:%02x", domain, busnum); | ||
214 | 213 | ||
215 | info.res_num = 0; | 214 | info.res_num = 0; |
216 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, setup_resource, | 215 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, setup_resource, |
@@ -224,8 +223,11 @@ res_alloc_fail: | |||
224 | return; | 223 | return; |
225 | } | 224 | } |
226 | 225 | ||
227 | struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int domain, int busnum) | 226 | struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root) |
228 | { | 227 | { |
228 | struct acpi_device *device = root->device; | ||
229 | int domain = root->segment; | ||
230 | int busnum = root->secondary.start; | ||
229 | struct pci_bus *bus; | 231 | struct pci_bus *bus; |
230 | struct pci_sysdata *sd; | 232 | struct pci_sysdata *sd; |
231 | int node; | 233 | int node; |