From 861a924b1ae3c45dcc41e685a833c61c43d0f7b0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Nov 25 2012 19:43:10 +0000 Subject: Update ARM kernel config and patches to fix F-17 build --- diff --git a/arm-alignment-faults.patch b/arm-alignment-faults.patch new file mode 100644 index 0000000..d386a5c --- /dev/null +++ b/arm-alignment-faults.patch @@ -0,0 +1,127 @@ + arch/arm/kernel/traps.c | 34 +++++++--------------------------- + arch/arm/mm/alignment.c | 11 ++++------- + 2 files changed, 11 insertions(+), 34 deletions(-) + +diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c +index b0179b8..62f429e 100644 +--- a/arch/arm/kernel/traps.c ++++ b/arch/arm/kernel/traps.c +@@ -89,17 +89,8 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom, + unsigned long top) + { + unsigned long first; +- mm_segment_t fs; + int i; + +- /* +- * We need to switch to kernel mode so that we can use __get_user +- * to safely read from kernel space. Note that we now dump the +- * code first, just in case the backtrace kills us. +- */ +- fs = get_fs(); +- set_fs(KERNEL_DS); +- + printk("%s%s(0x%08lx to 0x%08lx)\n", lvl, str, bottom, top); + + for (first = bottom & ~31; first < top; first += 32) { +@@ -112,7 +103,7 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom, + for (p = first, i = 0; i < 8 && p < top; i++, p += 4) { + if (p >= bottom && p < top) { + unsigned long val; +- if (__get_user(val, (unsigned long *)p) == 0) ++ if (probe_kernel_address(p, val) == 0) + sprintf(str + i * 9, " %08lx", val); + else + sprintf(str + i * 9, " ????????"); +@@ -120,8 +111,6 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom, + } + printk("%s%04lx:%s\n", lvl, first & 0xffff, str); + } +- +- set_fs(fs); + } + + static void dump_instr(const char *lvl, struct pt_regs *regs) +@@ -129,25 +118,18 @@ static void dump_instr(const char *lvl, struct pt_regs *regs) + unsigned long addr = instruction_pointer(regs); + const int thumb = thumb_mode(regs); + const int width = thumb ? 4 : 8; +- mm_segment_t fs; + char str[sizeof("00000000 ") * 5 + 2 + 1], *p = str; + int i; + +- /* +- * We need to switch to kernel mode so that we can use __get_user +- * to safely read from kernel space. Note that we now dump the +- * code first, just in case the backtrace kills us. +- */ +- fs = get_fs(); +- set_fs(KERNEL_DS); +- + for (i = -4; i < 1 + !!thumb; i++) { + unsigned int val, bad; + +- if (thumb) +- bad = __get_user(val, &((u16 *)addr)[i]); +- else +- bad = __get_user(val, &((u32 *)addr)[i]); ++ if (thumb) { ++ u16 instr; ++ bad = probe_kernel_address(addr, instr); ++ val = instr; ++ } else ++ bad = probe_kernel_address(addr, val); + + if (!bad) + p += sprintf(p, i == 0 ? "(%0*x) " : "%0*x ", +@@ -158,8 +140,6 @@ static void dump_instr(const char *lvl, struct pt_regs *regs) + } + } + printk("%sCode: %s\n", lvl, str); +- +- set_fs(fs); + } + + #ifdef CONFIG_ARM_UNWIND +diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c +index b9f60eb..f8f14fc 100644 +--- a/arch/arm/mm/alignment.c ++++ b/arch/arm/mm/alignment.c +@@ -749,7 +749,6 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) + unsigned long instr = 0, instrptr; + int (*handler)(unsigned long addr, unsigned long instr, struct pt_regs *regs); + unsigned int type; +- mm_segment_t fs; + unsigned int fault; + u16 tinstr = 0; + int isize = 4; +@@ -760,16 +759,15 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) + + instrptr = instruction_pointer(regs); + +- fs = get_fs(); +- set_fs(KERNEL_DS); + if (thumb_mode(regs)) { +- fault = __get_user(tinstr, (u16 *)(instrptr & ~1)); ++ unsigned long ptr = instrptr; ++ fault = probe_kernel_address(ptr, tinstr); + if (!fault) { + if (cpu_architecture() >= CPU_ARCH_ARMv7 && + IS_T32(tinstr)) { + /* Thumb-2 32-bit */ + u16 tinst2 = 0; +- fault = __get_user(tinst2, (u16 *)(instrptr+2)); ++ fault = probe_kernel_address(ptr + 2, tinst2); + instr = (tinstr << 16) | tinst2; + thumb2_32b = 1; + } else { +@@ -778,8 +776,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) + } + } + } else +- fault = __get_user(instr, (u32 *)instrptr); +- set_fs(fs); ++ fault = probe_kernel_address(instrptr, instr); + + if (fault) { + type = TYPE_FAULT; diff --git a/arm-fix-omapdrm.patch b/arm-fix-omapdrm.patch new file mode 100644 index 0000000..f70b861 --- /dev/null +++ b/arm-fix-omapdrm.patch @@ -0,0 +1,10 @@ +--- linux-3.6.0-0.rc3.git2.1.fc18.x86_64/drivers/staging/omapdrm/omap_drv.c.orig 2012-08-28 22:52:35.950826671 +0100 ++++ linux-3.6.0-0.rc3.git2.1.fc18.x86_64/drivers/staging/omapdrm/omap_drv.c 2012-08-28 22:52:49.393910353 +0100 +@@ -761,7 +761,6 @@ + .irq_postinstall = dev_irq_postinstall, + .irq_uninstall = dev_irq_uninstall, + .irq_handler = dev_irq_handler, +- .reclaim_buffers = drm_core_reclaim_buffers, + #ifdef CONFIG_DEBUG_FS + .debugfs_init = omap_debugfs_init, + .debugfs_cleanup = omap_debugfs_cleanup, diff --git a/arm-fix_radio_shark.patch b/arm-fix_radio_shark.patch new file mode 100644 index 0000000..63296a9 --- /dev/null +++ b/arm-fix_radio_shark.patch @@ -0,0 +1,15 @@ +diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig +index ff3af6e..f99fa25 100644 +--- a/sound/pci/Kconfig ++++ b/sound/pci/Kconfig +@@ -2,8 +2,8 @@ + + config SND_TEA575X + tristate +- depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2 || RADIO_MAXIRADIO +- default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2 || RADIO_MAXIRADIO ++ depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2 || RADIO_MAXIRADIO || RADIO_SHARK ++ default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2 || RADIO_MAXIRADIO || RADIO_SHARK + + menuconfig SND_PCI + bool "PCI sound devices" diff --git a/arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch b/arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch deleted file mode 100644 index 1558066..0000000 --- a/arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch +++ /dev/null @@ -1,83 +0,0 @@ -commit dd945918f747f61eff384f5cb8889e524f60615a -Author: Jon Masters -Date: Fri Oct 5 22:32:29 2012 -0400 - - Revert "ARM: 7528/1: uaccess: annotate [__]{get,put}_user functions with might_fault()" - - This reverts commit ad72907acd2943304c292ae36960bb66e6dc23c9. - - Technically, the original commit is totally correct, however it exposes - a deep-rooted problem with missaligned accesses in e.g. the networking - stack and we need to revert this (sweep under rug) until we can get - a good solution in place upstream. The problem is that the compiler - believes the structs concerned are aligned (they are in the code), - however at runtime the IP structs are actually not aligned within - received network packets, and the fault handler is not guaranteed - to be entirely atomic and free of calls to the scheduler. - - Signed-off-by: Jon Masters - -diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index 77bd79f..6f83ad6 100644 ---- a/arch/arm/include/asm/uaccess.h -+++ b/arch/arm/include/asm/uaccess.h -@@ -118,7 +118,7 @@ extern int __get_user_4(void *); - : "0" (__p), "r" (__l) \ - : __GUP_CLOBBER_##__s) - --#define __get_user_check(x,p) \ -+#define get_user(x,p) \ - ({ \ - unsigned long __limit = current_thread_info()->addr_limit - 1; \ - register const typeof(*(p)) __user *__p asm("r0") = (p);\ -@@ -141,12 +141,6 @@ extern int __get_user_4(void *); - __e; \ - }) - --#define get_user(x,p) \ -- ({ \ -- might_fault(); \ -- __get_user_check(x,p); \ -- }) -- - extern int __put_user_1(void *, unsigned int); - extern int __put_user_2(void *, unsigned int); - extern int __put_user_4(void *, unsigned int); -@@ -161,7 +155,7 @@ extern int __put_user_8(void *, unsigned long long); - : "0" (__p), "r" (__r2), "r" (__l) \ - : "ip", "lr", "cc") - --#define __put_user_check(x,p) \ -+#define put_user(x,p) \ - ({ \ - unsigned long __limit = current_thread_info()->addr_limit - 1; \ - register const typeof(*(p)) __r2 asm("r2") = (x); \ -@@ -186,12 +180,6 @@ extern int __put_user_8(void *, unsigned long long); - __e; \ - }) - --#define put_user(x,p) \ -- ({ \ -- might_fault(); \ -- __put_user_check(x,p); \ -- }) -- - #else /* CONFIG_MMU */ - - /* -@@ -245,7 +233,6 @@ do { \ - unsigned long __gu_addr = (unsigned long)(ptr); \ - unsigned long __gu_val; \ - __chk_user_ptr(ptr); \ -- might_fault(); \ - switch (sizeof(*(ptr))) { \ - case 1: __get_user_asm_byte(__gu_val,__gu_addr,err); break; \ - case 2: __get_user_asm_half(__gu_val,__gu_addr,err); break; \ -@@ -327,7 +314,6 @@ do { \ - unsigned long __pu_addr = (unsigned long)(ptr); \ - __typeof__(*(ptr)) __pu_val = (x); \ - __chk_user_ptr(ptr); \ -- might_fault(); \ - switch (sizeof(*(ptr))) { \ - case 1: __put_user_asm_byte(__pu_val,__pu_addr,err); break; \ - case 2: __put_user_asm_half(__pu_val,__pu_addr,err); break; \ diff --git a/arm-origen-regulator-fix.patch b/arm-origen-regulator-fix.patch deleted file mode 100644 index c91bfb8..0000000 --- a/arm-origen-regulator-fix.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c -index 4e574c2..5028fee 100644 ---- a/arch/arm/mach-exynos/mach-origen.c -+++ b/arch/arm/mach-exynos/mach-origen.c -@@ -121,6 +121,7 @@ static struct regulator_consumer_supply __initdata ldo14_consumer[] = { - }; - static struct regulator_consumer_supply __initdata ldo17_consumer[] = { - REGULATOR_SUPPLY("vdd33", "swb-a31"), /* AR6003 WLAN & CSR 8810 BT */ -+ REGULATOR_SUPPLY("vmmc", NULL), - }; - static struct regulator_consumer_supply __initdata buck1_consumer[] = { - REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */ diff --git a/arm-read_current_timer.patch b/arm-read_current_timer.patch new file mode 100644 index 0000000..dc6a444 --- /dev/null +++ b/arm-read_current_timer.patch @@ -0,0 +1,39 @@ +read_current_timer is used in the get_cycles() function when +ARM_ARCH_TIMER is set, and that function can be inlined into +driver modules, so we should export the function to avoid +errors like + +ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! +ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! + +Signed-off-by: Arnd Bergmann +Cc: Shinya Kuribayashi +Cc: Stephen Boyd +Cc: Will Deacon +Cc: Russell King +--- + arch/arm/kernel/arch_timer.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/kernel/arch_timer.c b/arch/arm/kernel/arch_timer.c +index cf25880..6327d1f 100644 +--- a/arch/arm/kernel/arch_timer.c ++++ b/arch/arm/kernel/arch_timer.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -232,6 +233,7 @@ int read_current_timer(unsigned long *timer_val) + *timer_val = arch_counter_get_cntpct(); + return 0; + } ++EXPORT_SYMBOL_GPL(read_current_timer); + + static struct clocksource clocksource_counter = { + .name = "arch_sys_counter", +-- +1.7.10 diff --git a/arm-smdk310-regulator-fix.patch b/arm-smdk310-regulator-fix.patch deleted file mode 100644 index 0e0be1e..0000000 --- a/arm-smdk310-regulator-fix.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- linus.orig/arch/arm/mach-exynos/mach-smdkv310.c -+++ linus/arch/arm/mach-exynos/mach-smdkv310.c -@@ -14,6 +14,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -380,6 +382,14 @@ static void __init smdkv310_reserve(void - s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20); - } - -+static struct regulator_consumer_supply vddmmc_consumers[] __devinitdata = { -+ REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"), -+ REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"), -+ REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"), -+ REGULATOR_SUPPLY("vdd33a", "smsc911x"), -+ REGULATOR_SUPPLY("vddvario", "smsc911x"), -+}; -+ - static void __init smdkv310_machine_init(void) - { - s3c_i2c1_set_platdata(NULL); -@@ -387,6 +397,9 @@ static void __init smdkv310_machine_init - - smdkv310_smsc911x_init(); - -+ regulator_register_always_on(0, "fixed-3.3V", vddmmc_consumers, -+ ARRAY_SIZE(vddmmc_consumers), 3300000); -+ - s3c_sdhci0_set_platdata(&smdkv310_hsmmc0_pdata); - s3c_sdhci1_set_platdata(&smdkv310_hsmmc1_pdata); - s3c_sdhci2_set_platdata(&smdkv310_hsmmc2_pdata); diff --git a/arm-tegra-sdhci-module-fix.patch b/arm-tegra-sdhci-module-fix.patch new file mode 100644 index 0000000..24ba278 --- /dev/null +++ b/arm-tegra-sdhci-module-fix.patch @@ -0,0 +1,11 @@ +--- linux-3.5.0-0.rc0.git3.1.fc18.armv7hl/drivers/mmc/host/sdhci-tegra.c.orig 2012-05-23 06:59:19.797302757 -0500 ++++ linux-3.5.0-0.rc0.git3.1.fc18.armv7hl/drivers/mmc/host/sdhci-tegra.c 2012-05-22 15:26:07.154823359 -0500 +@@ -190,7 +190,7 @@ + #endif + {} + }; +-MODULE_DEVICE_TABLE(of, sdhci_dt_ids); ++MODULE_DEVICE_TABLE(of, sdhci_tegra_dt_match); + + static struct tegra_sdhci_platform_data * __devinit sdhci_tegra_dt_parse_pdata( + struct platform_device *pdev) diff --git a/config-arm-generic b/config-arm-generic index 213ef78..107268e 100644 --- a/config-arm-generic +++ b/config-arm-generic @@ -37,7 +37,6 @@ CONFIG_ARM_ERRATA_754327=y CONFIG_ARM_ERRATA_764369=y CONFIG_ARM_ERRATA_775420=y - # Generic ARM config options CONFIG_ZBOOT_ROM_TEXT=0 CONFIG_ZBOOT_ROM_BSS=0 @@ -64,6 +63,9 @@ CONFIG_CPU_IDLE=y # CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_LSM_MMAP_MIN_ADDR=32768 + CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y @@ -89,9 +91,6 @@ CONFIG_STRICT_DEVMEM=y CONFIG_SPARSE_IRQ=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -CONFIG_LSM_MMAP_MIN_ADDR=32768 - # Generic HW for all ARM platforms CONFIG_LEDS=y CONFIG_LEDS_CPU=y @@ -356,4 +355,3 @@ CONFIG_EXTCON_GPIO=m # CONFIG_NET_VENDOR_CIRRUS is not set # CONFIG_CS89x0 is not set -# CONFIG_VIDEO_DM6446_CCDC is not set diff --git a/config-arm-omap b/config-arm-omap index 76fd19c..5fb1bd6 100644 --- a/config-arm-omap +++ b/config-arm-omap @@ -210,26 +210,28 @@ CONFIG_DRM_OMAP_NUM_CRTCS=2 # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set # CONFIG_FB_OMAP_LCD_VGA is not set CONFIG_OMAP2_VRAM=y +CONFIG_OMAP2_VRAM_SIZE=0 CONFIG_OMAP2_VRFB=y -CONFIG_OMAP2_DSS=y -CONFIG_OMAP2_VRAM_SIZE=12 +# CONFIG_FB_OMAP2 is not set + +CONFIG_OMAP2_DSS=m CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y # CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set CONFIG_OMAP2_DSS_DPI=y -# CONFIG_OMAP2_DSS_RFBI is not set +CONFIG_OMAP2_DSS_RFBI=y CONFIG_OMAP2_DSS_VENC=y CONFIG_OMAP4_DSS_HDMI=y -# CONFIG_OMAP2_DSS_SDI is not set -# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_DSI=y # CONFIG_OMAP2_DSS_FAKE_VSYNC is not set -CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1 +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET=y CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y -# CONFIG_FB_OMAP2 is not set CONFIG_VIDEO_DM6446_CCDC=m CONFIG_PANEL_TFP410=m CONFIG_PANEL_PICODLP=m +CONFIG_PANEL_TAAL=m CONFIG_BACKLIGHT_PANDORA=m # diff --git a/kernel.spec b/kernel.spec index e0a59ec..57e4b27 100644 --- a/kernel.spec +++ b/kernel.spec @@ -713,22 +713,20 @@ Patch19000: ips-noirq.patch Patch19001: i82975x-edac-fix.patch # ARM -# Flattened devicetree support -Patch21003: arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch +Patch21000: arm-read_current_timer.patch +Patch21001: arm-fix-omapdrm.patch +Patch21002: arm-fix_radio_shark.patch +Patch21003: arm-alignment-faults.patch +# OMAP # ARM tegra Patch21004: arm-tegra-nvec-kconfig.patch Patch21005: arm-tegra-usb-no-reset-linux33.patch -#atch21006: arm-beagle-usb-init.patch +Patch21006: arm-tegra-sdhci-module-fix.patch # ARM highbank patches -# Highbank clock functions need to be EXPORT for module builds Patch21010: arm-highbank-sata-fix.patch -# ARM exynos4 -Patch21020: arm-smdk310-regulator-fix.patch -Patch21021: arm-origen-regulator-fix.patch - #rhbz 754518 Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch @@ -744,8 +742,6 @@ Patch22014: efifb-skip-DMI-checks-if-bootloader-knows.patch #rhbz 857324 Patch22070: net-tcp-bz857324.patch -Patch22072: linux-3.6-arm-build-fixup.patch - #rhbz 867344 Patch22077: dont-call-cifs_lookup-on-hashed-negative-dentry.patch @@ -1354,14 +1350,14 @@ ApplyPatch vmbugon-warnon.patch # # ARM # -ApplyPatch linux-3.6-arm-build-fixup.patch +ApplyPatch arm-read_current_timer.patch +ApplyPatch arm-fix-omapdrm.patch +ApplyPatch arm-fix_radio_shark.patch ApplyPatch arm-tegra-nvec-kconfig.patch ApplyPatch arm-tegra-usb-no-reset-linux33.patch +ApplyPatch arm-tegra-sdhci-module-fix.patch ApplyPatch arm-highbank-sata-fix.patch -ApplyPatch arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch - -ApplyPatch arm-smdk310-regulator-fix.patch -ApplyPatch arm-origen-regulator-fix.patch +ApplyPatch arm-alignment-faults.patch # # bugfixes to drivers and filesystems @@ -2392,6 +2388,9 @@ fi # '-' | | # '-' %changelog +* Sun Nov 25 2012 Peter Robinson +- Update ARM kernel config and patches to fix F-17 build + * Tue Nov 20 2012 Josh Boyer - CVE-2012-4461: kvm: invalid opcode oops on SET_SREGS with OSXSAVE bit set (rhbz 878518 862900) - Add support for BCM20702A0 (rhbz 874791) diff --git a/linux-3.6-arm-build-fixup.patch b/linux-3.6-arm-build-fixup.patch deleted file mode 100644 index c9ee5ab..0000000 --- a/linux-3.6-arm-build-fixup.patch +++ /dev/null @@ -1,103 +0,0 @@ -From: Mauro Carvalho Chehab -Date: Fri, 12 Oct 2012 16:26:43 -0400 -Subject: [PATCH] snd-tea575x: Fix radio-shark build, when PCI is not compiled - -On ARM devices, those vars get undefined: - -ERROR: "snd_tea575x_init" [drivers/media/radio/radio-shark.ko] undefined! -ERROR: "snd_tea575x_exit" [drivers/media/radio/radio-shark.ko] undefined! - -Signed-off-by: Mauro Carvalho Chehab - -diff --git a/sound/Kconfig b/sound/Kconfig -index 261a03c..fef150c 100644 ---- a/sound/Kconfig -+++ b/sound/Kconfig -@@ -77,6 +77,12 @@ source "sound/drivers/Kconfig" - - source "sound/isa/Kconfig" - -+# I2C device, used by sound/pci and by some drivers/media USB devices -+config SND_TEA575X -+ tristate -+ depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2 || RADIO_MAXIRADIO || RADIO_SHARK -+ default y -+ - source "sound/pci/Kconfig" - - source "sound/ppc/Kconfig" -diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig -index ff3af6e..f93fda7 100644 ---- a/sound/pci/Kconfig -+++ b/sound/pci/Kconfig -@@ -1,10 +1,5 @@ - # ALSA PCI drivers - --config SND_TEA575X -- tristate -- depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2 || RADIO_MAXIRADIO -- default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2 || RADIO_MAXIRADIO -- - menuconfig SND_PCI - bool "PCI sound devices" - depends on PCI - -From: Arnd Bergmann -Subject: [PATCH] ARM: export read_current_timer - https://patchwork.kernel.org/patch/1361481/ - - read_current_timer is used in the get_cycles() function when - ARM_ARCH_TIMER is set, and that function can be inlined into - driver modules, so we should export the function to avoid - errors like - - ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! - ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! - - Signed-off-by: Arnd Bergmann - Cc: Shinya Kuribayashi - Cc: Stephen Boyd - Cc: Will Deacon - Cc: Russell King - -diff --git a/arch/arm/kernel/arch_timer.c b/arch/arm/kernel/arch_timer.c -index cf25880..6327d1f 100644 ---- a/arch/arm/kernel/arch_timer.c -+++ b/arch/arm/kernel/arch_timer.c -@@ -14,6 +14,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -232,6 +233,7 @@ int read_current_timer(unsigned long *timer_val) - *timer_val = arch_counter_get_cntpct(); - return 0; - } -+EXPORT_SYMBOL_GPL(read_current_timer); - - static struct clocksource clocksource_counter = { - .name = "arch_sys_counter", - -From: David Cullen -Subject: [PATCH] Fix error: unknown field reclaim_buffers specified in initializer - - The reclaim_buffers field has been removed from struct drm_driver. - - Signed-off-by: David Cullen -diff --git a/drivers/staging/omapdrm/omap_drv.c -b/drivers/staging/omapdrm/omap_drv.c -index 4beab94..44149ee 100644 ---- a/drivers/staging/omapdrm/omap_drv.c -+++ b/drivers/staging/omapdrm/omap_drv.c -@@ -761,7 +761,6 @@ static struct drm_driver omap_drm_driver = { - .irq_postinstall = dev_irq_postinstall, - .irq_uninstall = dev_irq_uninstall, - .irq_handler = dev_irq_handler, -- .reclaim_buffers = drm_core_reclaim_buffers, - #ifdef CONFIG_DEBUG_FS - .debugfs_init = omap_debugfs_init, - .debugfs_cleanup = omap_debugfs_cleanup, -