initial srpm import
This commit is contained in:
parent
64ba2e5ffd
commit
7a32965a10
3
.gitignore
vendored
3
.gitignore
vendored
@ -0,0 +1,3 @@
|
||||
linux-2.6.34.tar.bz2
|
||||
patch-2.6.35-rc6-git1.bz2
|
||||
patch-2.6.35-rc6.bz2
|
105
Makefile.config
Normal file
105
Makefile.config
Normal file
@ -0,0 +1,105 @@
|
||||
# Make rules for configuration files.
|
||||
#
|
||||
# $Id$
|
||||
|
||||
CFG = kernel-$(VERSION)
|
||||
|
||||
CONFIGFILES = \
|
||||
$(CFG)-i686.config $(CFG)-i686-debug.config \
|
||||
$(CFG)-i686-PAE.config $(CFG)-i686-PAEdebug.config \
|
||||
$(CFG)-x86_64.config $(CFG)-x86_64-debug.config \
|
||||
$(CFG)-s390x.config $(CFG)-arm.config \
|
||||
$(CFG)-ppc.config $(CFG)-ppc-smp.config \
|
||||
$(CFG)-sparc64.config \
|
||||
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config \
|
||||
$(CFG)-ia64.config
|
||||
|
||||
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64
|
||||
TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
|
||||
|
||||
configs: $(CONFIGFILES)
|
||||
@rm -f kernel-*-config
|
||||
@rm -f $(TEMPFILES)
|
||||
@rm -f temp-generic temp-*-generic temp-*-generic-tmp
|
||||
|
||||
# Augment the clean target to clean up our own cruft
|
||||
clean ::
|
||||
@rm -fv $(CONFIGFILES) $(TEMPFILES) temp-generic kernel-$(VERSION)*config
|
||||
|
||||
temp-generic: config-generic
|
||||
cat config-generic config-nodebug > temp-generic
|
||||
|
||||
temp-debug-generic: config-generic
|
||||
cat config-generic config-debug > temp-debug-generic
|
||||
|
||||
temp-x86-generic: config-x86-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-debug-generic: config-x86-generic temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-generic: config-x86_64-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-debug-generic: config-x86_64-generic temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-sparc64-generic: config-sparc64-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-powerpc-generic: config-powerpc-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-powerpc-debug-generic: config-powerpc-generic temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-powerpc32-generic: config-powerpc32-generic temp-powerpc-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-s390-generic: config-s390x temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-ia64-generic: config-ia64-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
kernel-$(VERSION)-i686-PAE.config: config-i686-PAE temp-x86-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686-PAEdebug.config: config-i686-PAE temp-x86-debug-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686.config: /dev/null temp-x86-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686-debug.config: /dev/null temp-x86-debug-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-x86_64.config: /dev/null temp-x86_64-generic
|
||||
perl merge.pl $^ x86_64 > $@
|
||||
|
||||
kernel-$(VERSION)-x86_64-debug.config: /dev/null temp-x86_64-debug-generic
|
||||
perl merge.pl $^ x86_64 > $@
|
||||
|
||||
kernel-$(VERSION)-sparc64.config: /dev/null temp-sparc64-generic
|
||||
perl merge.pl $^ sparc64 > $@
|
||||
|
||||
kernel-$(VERSION)-ppc64.config: config-powerpc64 temp-powerpc-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
kernel-$(VERSION)-ppc64-debug.config: config-powerpc64 temp-powerpc-debug-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
kernel-$(VERSION)-s390x.config: config-s390x temp-s390-generic
|
||||
perl merge.pl $^ s390 > $@
|
||||
|
||||
kernel-$(VERSION)-arm.config: config-arm temp-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
kernel-$(VERSION)-ppc-smp.config: config-powerpc32-smp temp-powerpc32-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
kernel-$(VERSION)-ia64.config: /dev/null temp-ia64-generic
|
||||
perl merge.pl $^ ia64 > $@
|
52
acpi-ec-add-delay-before-write.patch
Normal file
52
acpi-ec-add-delay-before-write.patch
Normal file
@ -0,0 +1,52 @@
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=14733#c41
|
||||
|
||||
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
|
||||
index 27e0b92..09fbb69 100644
|
||||
--- a/drivers/acpi/ec.c
|
||||
+++ b/drivers/acpi/ec.c
|
||||
@@ -226,6 +226,7 @@ static int ec_poll(struct acpi_ec *ec)
|
||||
if (ec_transaction_done(ec))
|
||||
return 0;
|
||||
} else {
|
||||
+ msleep(1);
|
||||
if (wait_event_timeout(ec->wait,
|
||||
ec_transaction_done(ec),
|
||||
msecs_to_jiffies(1)))
|
||||
@@ -233,8 +234,8 @@ static int ec_poll(struct acpi_ec *ec)
|
||||
}
|
||||
advance_transaction(ec, acpi_ec_read_status(ec));
|
||||
} while (time_before(jiffies, delay));
|
||||
- if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
|
||||
- break;
|
||||
+// if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
|
||||
+// break;
|
||||
pr_debug(PREFIX "controller reset, restart transaction\n");
|
||||
spin_lock_irqsave(&ec->curr_lock, flags);
|
||||
start_transaction(ec);
|
||||
@@ -271,15 +272,25 @@ static int ec_check_ibf0(struct acpi_ec *ec)
|
||||
return (status & ACPI_EC_FLAG_IBF) == 0;
|
||||
}
|
||||
|
||||
+/* try to clean input buffer with burst_disable transaction */
|
||||
+static int acpi_ec_clean_buffer(struct acpi_ec *ec)
|
||||
+{
|
||||
+ struct transaction t = {.command = ACPI_EC_BURST_DISABLE,
|
||||
+ .wdata = NULL, .rdata = NULL,
|
||||
+ .wlen = 0, .rlen = 0};
|
||||
+ return acpi_ec_transaction_unlocked(ec, &t);
|
||||
+}
|
||||
+
|
||||
static int ec_wait_ibf0(struct acpi_ec *ec)
|
||||
{
|
||||
+
|
||||
unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY);
|
||||
/* interrupt wait manually if GPE mode is not active */
|
||||
while (time_before(jiffies, delay))
|
||||
if (wait_event_timeout(ec->wait, ec_check_ibf0(ec),
|
||||
msecs_to_jiffies(1)))
|
||||
return 0;
|
||||
- return -ETIME;
|
||||
+ return acpi_ec_clean_buffer(ec);
|
||||
}
|
||||
|
||||
static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
|
115
config-arm
Normal file
115
config-arm
Normal file
@ -0,0 +1,115 @@
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
# CONFIG_SMP is not set
|
||||
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
||||
CONFIG_ARCH_VERSATILE=y
|
||||
CONFIG_ARCH_VERSATILE_PB=y
|
||||
CONFIG_MACH_VERSATILE_AB=y
|
||||
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
|
||||
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
CONFIG_ATAGS_PROC=y
|
||||
|
||||
# CONFIG_FPE_NWFPE is not set
|
||||
CONFIG_FPE_FASTFPE=y
|
||||
CONFIG_VFP=y
|
||||
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_TRACE is not set
|
||||
CONFIG_SUSPEND=y
|
||||
# CONFIG_PM_TEST_SUSPEND is not set
|
||||
CONFIG_APM_EMULATION=y
|
||||
|
||||
CONFIG_ARM_THUMB=y
|
||||
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_OABI_COMPAT=y
|
||||
|
||||
# CONFIG_UACCESS_WITH_MEMCPY is not set
|
||||
|
||||
CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
|
||||
CONFIG_LEDS=y
|
||||
CONFIG_LEDS_CPU=y
|
||||
|
||||
CONFIG_MTD_AFS_PARTS=y
|
||||
CONFIG_MTD_ARM_INTEGRATOR=y
|
||||
CONFIG_MTD_IMPA7=y
|
||||
|
||||
CONFIG_AX88796=m
|
||||
CONFIG_AX88796_93CX6=y
|
||||
CONFIG_SMC91X=m
|
||||
CONFIG_DM9000=m
|
||||
CONFIG_DM9000_DEBUGLEVEL=4
|
||||
# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
|
||||
CONFIG_SMC911X=m
|
||||
CONFIG_SMSC911X=m
|
||||
|
||||
CONFIG_SERIO_AMBAKMI=m
|
||||
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
|
||||
CONFIG_I2C_VERSATILE=y
|
||||
|
||||
CONFIG_THERMAL=y
|
||||
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
|
||||
CONFIG_FB_ARMCLCD=m
|
||||
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
|
||||
CONFIG_USB_MUSB_HDRC=m
|
||||
# CONFIG_MUSB_PIO_ONLY is not set
|
||||
CONFIG_USB_TUSB6010=y
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
|
||||
CONFIG_MMC_ARMMMCI=m
|
||||
|
||||
CONFIG_RTC_DRV_PL030=m
|
||||
CONFIG_RTC_DRV_PL031=m
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
CONFIG_ARM_UNWIND=y
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
# CONFIG_USB_ULPI is not set
|
||||
# CONFIG_OC_ETM is not set
|
||||
|
||||
# CONFIG_MTD_PISMO is not set
|
||||
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
|
||||
# CONFIG_MG_DISK is not set
|
||||
# CONFIG_GPIO_PL061 is not set
|
91
config-debug
Normal file
91
config-debug
Normal file
@ -0,0 +1,91 @@
|
||||
CONFIG_SND_VERBOSE_PRINTK=y
|
||||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
CONFIG_DEBUG_VM=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_PROVE_RCU=y
|
||||
# CONFIG_PROVE_RCU_REPEATEDLY is not set
|
||||
CONFIG_DEBUG_PER_CPU_MAPS=y
|
||||
CONFIG_CPUMASK_OFFSTACK=y
|
||||
|
||||
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
|
||||
|
||||
CONFIG_FAULT_INJECTION=y
|
||||
CONFIG_FAILSLAB=y
|
||||
CONFIG_FAIL_PAGE_ALLOC=y
|
||||
CONFIG_FAIL_MAKE_REQUEST=y
|
||||
CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||
CONFIG_FAIL_IO_TIMEOUT=y
|
||||
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
|
||||
CONFIG_LOCK_STAT=y
|
||||
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
||||
CONFIG_ACPI_DEBUG=y
|
||||
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
|
||||
|
||||
CONFIG_DEBUG_SG=y
|
||||
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
||||
CONFIG_DEBUG_WRITECOUNT=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
CONFIG_X86_PTDUMP=y
|
||||
|
||||
CONFIG_CAN_DEBUG_DEVICES=y
|
||||
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
||||
CONFIG_DEBUG_NOTIFIERS=y
|
||||
|
||||
CONFIG_DMA_API_DEBUG=y
|
||||
|
||||
CONFIG_MMIOTRACE=y
|
||||
|
||||
CONFIG_DEBUG_CREDENTIALS=y
|
||||
|
||||
CONFIG_EXT4_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
||||
|
||||
# off in both production debug and nodebug builds,
|
||||
# on in rawhide nodebug builds
|
||||
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
|
||||
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_CFQ_IOSCHED=y
|
||||
|
||||
CONFIG_DRBD_FAULT_INJECTION=y
|
||||
|
||||
CONFIG_ATH_DEBUG=y
|
||||
CONFIG_IWLWIFI_DEVICE_TRACING=y
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_WORK=y
|
||||
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
|
||||
|
||||
CONFIG_DMADEVICES_DEBUG=y
|
||||
CONFIG_DMADEVICES_VDEBUG=y
|
||||
|
||||
CONFIG_PM_ADVANCED_DEBUG=y
|
||||
|
||||
CONFIG_CEPH_FS_PRETTYDEBUG=y
|
||||
CONFIG_QUOTA_DEBUG=y
|
||||
|
||||
CONFIG_KGDB_KDB=y
|
||||
CONFIG_KDB_KEYBOARD=y
|
4293
config-generic
Normal file
4293
config-generic
Normal file
File diff suppressed because it is too large
Load Diff
5
config-i686-PAE
Normal file
5
config-i686-PAE
Normal file
@ -0,0 +1,5 @@
|
||||
# CONFIG_HIGHMEM4G is not set
|
||||
CONFIG_HIGHMEM64G=y
|
||||
|
||||
CONFIG_XEN_DEV_EVTCHN=m
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
206
config-ia64-generic
Normal file
206
config-ia64-generic
Normal file
@ -0,0 +1,206 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
#
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
CONFIG_IA64=y
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_XEN is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_EFI=y
|
||||
# CONFIG_ITANIUM is not set
|
||||
CONFIG_MCKINLEY=y
|
||||
CONFIG_IA64_GENERIC=y
|
||||
# CONFIG_IA64_DIG is not set
|
||||
# CONFIG_IA64_HP_ZX1 is not set
|
||||
# CONFIG_IA64_SGI_SN2 is not set
|
||||
CONFIG_IA64_ESI=y
|
||||
CONFIG_IA64_HP_AML_NFW=y
|
||||
CONFIG_MSPEC=y
|
||||
# CONFIG_IA64_HP_SIM is not set
|
||||
# CONFIG_IA64_PAGE_SIZE_4KB is not set
|
||||
# CONFIG_IA64_PAGE_SIZE_8KB is not set
|
||||
CONFIG_IA64_PAGE_SIZE_16KB=y
|
||||
# CONFIG_IA64_PAGE_SIZE_64KB is not set
|
||||
CONFIG_IA64_L1_CACHE_SHIFT=7
|
||||
CONFIG_NUMA=y
|
||||
# CONFIG_VIRTUAL_MEM_MAP is not set
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_IA64_MCA_RECOVERY=m
|
||||
CONFIG_IA64_CYCLONE=y
|
||||
CONFIG_MMTIMER=y
|
||||
CONFIG_IOSAPIC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=18
|
||||
CONFIG_NR_CPUS=1024
|
||||
# CONFIG_IA32_SUPPORT is not set
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_PERFMON=y
|
||||
CONFIG_IA64_PALINFO=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=16
|
||||
CONFIG_EFI_PCDP=y
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
CONFIG_BLK_DEV_SGIIOC4=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_TCG_INFINEON=m
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
CONFIG_EFI_RTC=y
|
||||
CONFIG_RTC_DRV_EFI=y
|
||||
|
||||
|
||||
#
|
||||
# AGP
|
||||
#
|
||||
CONFIG_AGP_I460=y
|
||||
CONFIG_AGP_HP_ZX1=y
|
||||
CONFIG_AGP_SGI_TIOCA=y
|
||||
|
||||
#
|
||||
# HP Simulator drivers
|
||||
#
|
||||
# CONFIG_HP_SIMETH is not set
|
||||
# CONFIG_HP_SIMSERIAL is not set
|
||||
# CONFIG_HP_SIMSCSI is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_IA64_PRINT_HAZARDS is not set
|
||||
# CONFIG_DISABLE_VHPT is not set
|
||||
# CONFIG_IA64_DEBUG_CMPXCHG is not set
|
||||
# CONFIG_IA64_DEBUG_IRQ is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# SGI
|
||||
#
|
||||
CONFIG_SGI_SNSC=y
|
||||
CONFIG_SGI_TIOCX=y
|
||||
CONFIG_SGI_MBCS=m
|
||||
CONFIG_SGI_IOC3=m
|
||||
CONFIG_SGI_IOC4=y
|
||||
CONFIG_SGI_XP=m
|
||||
CONFIG_SGI_GRU=m
|
||||
# CONFIG_SGI_GRU_DEBUG is not set
|
||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_IOC3=m
|
||||
CONFIG_SERIAL_SGI_IOC4=m
|
||||
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
|
||||
#
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
# CONFIG_ACPI_BATTERY is not set
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_MEMORY=y
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
# CONFIG_ACPI_TOSHIBA is not set
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_ACPI_HED=m
|
||||
|
||||
CONFIG_PM=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HPET is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
CONFIG_HOTPLUG_PCI_SGI=m
|
||||
CONFIG_PNPACPI=y
|
||||
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_IA64_ACPI_CPUFREQ=m
|
||||
|
||||
# CONFIG_PERMIT_BSP_REMOVE is not set
|
||||
# CONFIG_FORCE_CPEI_RETARGET is not set
|
||||
|
||||
CONFIG_NODES_SHIFT=10
|
||||
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_PROC_VMCORE=y
|
||||
|
||||
# drivers/media/video/usbvision/usbvision-i2c.c:64:39: error: macro "outb" passed 4 arguments, but takes just 2
|
||||
# CONFIG_VIDEO_USBVISION is not set
|
||||
|
||||
# CONFIG_IA64_MC_ERR_INJECT is not set
|
||||
|
||||
CONFIG_DMIID=y
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_I2C_SCMI=m
|
91
config-nodebug
Normal file
91
config-nodebug
Normal file
@ -0,0 +1,91 @@
|
||||
CONFIG_SND_VERBOSE_PRINTK=y
|
||||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
CONFIG_DEBUG_VM=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_PROVE_RCU=y
|
||||
# CONFIG_PROVE_RCU_REPEATEDLY is not set
|
||||
CONFIG_DEBUG_PER_CPU_MAPS=y
|
||||
CONFIG_CPUMASK_OFFSTACK=y
|
||||
|
||||
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
|
||||
|
||||
CONFIG_FAULT_INJECTION=y
|
||||
CONFIG_FAILSLAB=y
|
||||
CONFIG_FAIL_PAGE_ALLOC=y
|
||||
CONFIG_FAIL_MAKE_REQUEST=y
|
||||
CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||
CONFIG_FAIL_IO_TIMEOUT=y
|
||||
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
|
||||
CONFIG_LOCK_STAT=y
|
||||
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
||||
CONFIG_ACPI_DEBUG=y
|
||||
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
|
||||
|
||||
CONFIG_DEBUG_SG=y
|
||||
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
||||
CONFIG_DEBUG_WRITECOUNT=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
CONFIG_X86_PTDUMP=y
|
||||
|
||||
CONFIG_CAN_DEBUG_DEVICES=y
|
||||
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
||||
CONFIG_DEBUG_NOTIFIERS=y
|
||||
|
||||
CONFIG_DMA_API_DEBUG=y
|
||||
|
||||
CONFIG_MMIOTRACE=y
|
||||
|
||||
CONFIG_DEBUG_CREDENTIALS=y
|
||||
|
||||
# off in both production debug and nodebug builds,
|
||||
# on in rawhide nodebug builds
|
||||
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
|
||||
|
||||
CONFIG_EXT4_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
||||
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_CFQ_IOSCHED=y
|
||||
|
||||
CONFIG_DRBD_FAULT_INJECTION=y
|
||||
|
||||
CONFIG_ATH_DEBUG=y
|
||||
CONFIG_IWLWIFI_DEVICE_TRACING=y
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_WORK=y
|
||||
CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y
|
||||
|
||||
CONFIG_DMADEVICES_DEBUG=y
|
||||
CONFIG_DMADEVICES_VDEBUG=y
|
||||
|
||||
CONFIG_PM_ADVANCED_DEBUG=y
|
||||
|
||||
CONFIG_CEPH_FS_PRETTYDEBUG=y
|
||||
CONFIG_QUOTA_DEBUG=y
|
||||
|
||||
CONFIG_KGDB_KDB=y
|
||||
CONFIG_KDB_KEYBOARD=y
|
334
config-powerpc-generic
Normal file
334
config-powerpc-generic
Normal file
@ -0,0 +1,334 @@
|
||||
# Most PowerPC kernels we build are SMP
|
||||
CONFIG_SMP=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_WATCHDOG_RTAS=m
|
||||
CONFIG_DEBUGGER=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_ALTIVEC=y
|
||||
|
||||
CONFIG_TAU=y
|
||||
# CONFIG_TAU_INT is not set
|
||||
CONFIG_TAU_AVERAGE=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_HIBERNATION=y
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
CONFIG_RTC_DRV_GENERIC=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
CONFIG_ADB=y
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_WINDFARM=y
|
||||
CONFIG_WINDFARM_PM112=y
|
||||
CONFIG_I2C_POWERMAC=y
|
||||
CONFIG_APPLE_AIRPORT=m
|
||||
CONFIG_SERIAL_PMACZILOG=m
|
||||
# CONFIG_SERIAL_PMACZILOG_TTYS is not set
|
||||
CONFIG_AGP_UNINORTH=y
|
||||
CONFIG_FB_OF=y
|
||||
# CONFIG_FB_CONTROL is not set
|
||||
CONFIG_FB_IBM_GXT4500=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_FB_MATROX=y
|
||||
CONFIG_FB_NVIDIA=m
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
CONFIG_FB_ATY128_BACKLIGHT=y
|
||||
CONFIG_FB_ATY_BACKLIGHT=y
|
||||
CONFIG_FB_RADEON_BACKLIGHT=y
|
||||
CONFIG_FB_RIVA_BACKLIGHT=y
|
||||
CONFIG_FB_NVIDIA_BACKLIGHT=y
|
||||
|
||||
CONFIG_SND_POWERMAC=m
|
||||
CONFIG_SND_POWERMAC_AUTO_DRC=y
|
||||
CONFIG_SND_AOA=m
|
||||
CONFIG_SND_AOA_SOUNDBUS=m
|
||||
CONFIG_SND_AOA_FABRIC_LAYOUT=m
|
||||
CONFIG_SND_AOA_ONYX=m
|
||||
CONFIG_SND_AOA_TAS=m
|
||||
CONFIG_SND_AOA_TOONIE=m
|
||||
CONFIG_SND_AOA_SOUNDBUS_I2S=m
|
||||
|
||||
CONFIG_XMON=y
|
||||
# CONFIG_XMON_DEFAULT is not set
|
||||
CONFIG_XMON_DISASSEMBLY=y
|
||||
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
CONFIG_MAC_EMUMOUSEBTN=y
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
||||
CONFIG_NVRAM=y
|
||||
|
||||
# CONFIG_PCMCIA_M8XX is not set
|
||||
# CONFIG_SCSI_AHA1542 is not set
|
||||
# CONFIG_SCSI_IN2000 is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
# CONFIG_NI52 is not set
|
||||
# CONFIG_NI65 is not set
|
||||
# CONFIG_LANCE is not set
|
||||
# CONFIG_3C515 is not set
|
||||
# CONFIG_ELPLUS is not set
|
||||
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
|
||||
# Stuff which wants bus_to_virt() or virt_to_bus()
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
# CONFIG_VIDEO_STRADIS is not set
|
||||
# CONFIG_VIDEO_ZORAN is not set
|
||||
# CONFIG_ATM_HORIZON is not set
|
||||
# CONFIG_ATM_FIRESTREAM is not set
|
||||
# CONFIG_ATM_AMBASSADOR is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
|
||||
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
||||
# CONFIG_PMAC_BACKLIGHT_LEGACY is not set
|
||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||
CONFIG_LEDS_TRIGGER_GPIO=m
|
||||
|
||||
# FIXME: Should depend on IA64/x86
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
CONFIG_PPC_EFIKA=y
|
||||
CONFIG_PPC_MEDIA5200=y
|
||||
|
||||
# CONFIG_PPC_LITE5200 is not set
|
||||
CONFIG_PPC_BESTCOMM=y
|
||||
CONFIG_PMAC_RACKMETER=m
|
||||
CONFIG_USB_OHCI_HCD_PPC_SOC=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
|
||||
|
||||
CONFIG_SERIAL_UARTLITE=m
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
|
||||
CONFIG_SENSORS_AMS=m
|
||||
CONFIG_SENSORS_AMS_PMU=y
|
||||
CONFIG_SENSORS_AMS_I2C=y
|
||||
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDE=y
|
||||
|
||||
#
|
||||
# Please see Documentation/ide.txt for help/info on IDE drives
|
||||
#
|
||||
# CONFIG_BLK_DEV_IDE_SATA is not set
|
||||
# CONFIG_BLK_DEV_IDECS is not set
|
||||
CONFIG_BLK_DEV_IDECD=m
|
||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||
CONFIG_IDE_TASK_IOCTL=y
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
# CONFIG_IDE_GENERIC is not set
|
||||
# CONFIG_BLK_DEV_IDEPNP is not set
|
||||
# CONFIG_BLK_DEV_IDEPCI is not set
|
||||
# CONFIG_BLK_DEV_AEC62XX is not set
|
||||
# CONFIG_BLK_DEV_ALI15X3 is not set
|
||||
# CONFIG_BLK_DEV_AMD74XX is not set
|
||||
# CONFIG_BLK_DEV_CMD64X is not set
|
||||
# CONFIG_BLK_DEV_TRIFLEX is not set
|
||||
# CONFIG_BLK_DEV_CY82C693 is not set
|
||||
# CONFIG_BLK_DEV_CS5520 is not set
|
||||
# CONFIG_BLK_DEV_CS5530 is not set
|
||||
# CONFIG_BLK_DEV_HPT366 is not set
|
||||
# CONFIG_BLK_DEV_JMICRON is not set
|
||||
# CONFIG_BLK_DEV_SC1200 is not set
|
||||
# CONFIG_BLK_DEV_PIIX is not set
|
||||
# CONFIG_BLK_DEV_IT821X is not set
|
||||
# CONFIG_BLK_DEV_NS87415 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
||||
# CONFIG_BLK_DEV_SVWKS is not set
|
||||
# CONFIG_BLK_DEV_SIIMAGE is not set
|
||||
# CONFIG_BLK_DEV_SL82C105 is not set
|
||||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
CONFIG_BLK_DEV_IDE_PMAC=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
CONFIG_IDE_PROC_FS=y
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
|
||||
CONFIG_PPC_PASEMI_MDIO=m
|
||||
CONFIG_SPU_FS_64K_LS=y
|
||||
CONFIG_PPC_PASEMI_CPUFREQ=y
|
||||
CONFIG_PMAC_APM_EMU=m
|
||||
CONFIG_HW_RANDOM_PASEMI=m
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_PASEMI=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
|
||||
CONFIG_AXON_RAM=m
|
||||
CONFIG_OPROFILE_CELL=y
|
||||
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_IDEPCI_PCIBUS_ORDER is not set
|
||||
CONFIG_PATA_PLATFORM=m
|
||||
CONFIG_PATA_OF_PLATFORM=m
|
||||
CONFIG_USB_EHCI_HCD_PPC_OF=y
|
||||
|
||||
# CONFIG_MPC5121_ADS is not set
|
||||
# CONFIG_MPC5121_GENERIC is not set
|
||||
CONFIG_MTD_OF_PARTS=m
|
||||
# CONFIG_MTD_NAND_FSL_ELBC is not set
|
||||
CONFIG_THERMAL=y
|
||||
|
||||
# CONFIG_MEMORY_HOTREMOVE is not set
|
||||
|
||||
CONFIG_DMADEVICES=y
|
||||
# CONFIG_FSL_DMA is not set
|
||||
|
||||
CONFIG_SND_PPC=y
|
||||
|
||||
CONFIG_PPC_82xx=y
|
||||
CONFIG_PPC_83xx=y
|
||||
CONFIG_PPC_86xx=y
|
||||
CONFIG_EXTRA_TARGETS=""
|
||||
# CONFIG_CODE_PATCHING_SELFTEST is not set
|
||||
# CONFIG_FTR_FIXUP_SELFTEST is not set
|
||||
|
||||
# CONFIG_MATH_EMULATION is not set
|
||||
# CONFIG_RAPIDIO is not set
|
||||
# CONFIG_FS_ENET is not set
|
||||
# CONFIG_UCC_GETH is not set
|
||||
# CONFIG_KEYBOARD_MATRIX is not set
|
||||
# CONFIG_SERIAL_CPM is not set
|
||||
# CONFIG_SERIAL_QE is not set
|
||||
# CONFIG_I2C_CPM is not set
|
||||
|
||||
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
|
||||
# CONFIG_PPC_SMLPAR is not set
|
||||
|
||||
CONFIG_MGCOGE=y
|
||||
CONFIG_GEF_SBC610=y
|
||||
CONFIG_GEF_PPC9A=y
|
||||
CONFIG_GEF_SBC310=y
|
||||
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_MPC8xxx_GPIO=y
|
||||
|
||||
CONFIG_IDE_GD=y
|
||||
CONFIG_IDE_GD_ATA=y
|
||||
CONFIG_IDE_GD_ATAPI=y
|
||||
|
||||
CONFIG_MCU_MPC8349EMITX=m
|
||||
|
||||
CONFIG_GPIO_XILINX=y
|
||||
|
||||
CONFIG_PMIC_DA903X=y
|
||||
CONFIG_BACKLIGHT_DA903X=m
|
||||
CONFIG_LEDS_DA903X=m
|
||||
|
||||
CONFIG_MSI_BITMAP_SELFTEST=y
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
|
||||
CONFIG_BATTERY_DA9030=m
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
|
||||
CONFIG_BLK_DEV_IT8172=m
|
||||
CONFIG_TOUCHSCREEN_DA9034=m
|
||||
|
||||
CONFIG_SIMPLE_GPIO=y
|
||||
|
||||
CONFIG_FSL_PQ_MDIO=m
|
||||
|
||||
CONFIG_PS3_VRAM=m
|
||||
CONFIG_MDIO_GPIO=m
|
||||
CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL=m
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_PCA953X=m
|
||||
CONFIG_GPIO_PCF857X=m
|
||||
|
||||
# CONFIG_USB_FHCI_HCD is not set
|
||||
# CONFIG_FHCI_DEBUG is not set
|
||||
|
||||
# CONFIG_DRM_RADEON_KMS is not set
|
||||
|
||||
# CONFIG_AMIGAONE is not set
|
||||
|
||||
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
|
||||
|
||||
CONFIG_DTL=y
|
||||
|
||||
CONFIG_MMC_SDHCI_OF=m
|
||||
|
||||
# CONFIG_CONSISTENT_SIZE_BOOL is not set
|
||||
|
||||
CONFIG_CAN_SJA1000_OF_PLATFORM=m
|
||||
|
||||
CONFIG_PPC_EMULATED_STATS=y
|
||||
|
||||
CONFIG_SWIOTLB=y
|
||||
|
||||
# CONFIG_RDS is not set
|
||||
|
||||
CONFIG_PPC_DISABLE_WERROR=y
|
||||
|
||||
CONFIG_XILINX_LL_TEMAC=m
|
||||
CONFIG_XILINX_EMACLITE=m
|
||||
|
||||
CONFIG_GPIO_WM831X=m
|
||||
# CONFIG_GPIO_LANGWELL is not set
|
||||
# CONFIG_GPIO_UCB1400 is not set
|
||||
CONFIG_EDAC_MPC85XX=m
|
||||
|
||||
CONFIG_NR_IRQS=512
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
CONFIG_PPC_MPC5200_LPBFIFO=m
|
||||
CONFIG_CAN_MSCAN=m
|
||||
CONFIG_CAN_MPC5XXX=m
|
||||
CONFIG_PATA_MACIO=m
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_MFD_88PM8607 is not set
|
||||
# CONFIG_XPS_USB_HCD_XILINX is not set
|
||||
# CONFIG_MMC_SDHCI_OF_ESDHC is not set
|
||||
# CONFIG_MMC_SDHCI_OF_HLWD is not set
|
||||
|
||||
# CONFIG_MFD_TC35892 is not set
|
||||
|
||||
# CONFIG_GPIO_SCH is not set
|
183
config-powerpc32-generic
Normal file
183
config-powerpc32-generic
Normal file
@ -0,0 +1,183 @@
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PPC32=y
|
||||
# CONFIG_PPC64 is not set
|
||||
# CONFIG_RTAS_PROC is not set
|
||||
# CONFIG_PCMCIA_M8XX is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_CPU_FREQ_PMAC=y
|
||||
CONFIG_PPC_CHRP=y
|
||||
CONFIG_PPC_PMAC=y
|
||||
CONFIG_PPC_MPC52xx=y
|
||||
CONFIG_PPC_PREP=y
|
||||
|
||||
# CONFIG_PPC_MPC5200_SIMPLE is not set
|
||||
CONFIG_SATA_FSL=m
|
||||
# CONFIG_SATA_NV is not set
|
||||
|
||||
# busted in .28git1
|
||||
# ERROR: "cacheable_memzero" [drivers/net/gianfar_driver.ko] undefined!
|
||||
# CONFIG_GIANFAR is not set
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
|
||||
CONFIG_PMAC_APM_EMU=y
|
||||
CONFIG_PMAC_BACKLIGHT=y
|
||||
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHMEM_START_BOOL is not set
|
||||
# CONFIG_LOWMEM_SIZE_BOOL is not set
|
||||
# CONFIG_TASK_SIZE_BOOL is not set
|
||||
# CONFIG_KERNEL_START_BOOL is not set
|
||||
# CONFIG_PPC601_SYNC_FIX is not set
|
||||
CONFIG_ADVANCED_OPTIONS=y
|
||||
CONFIG_SCSI_MESH=m
|
||||
CONFIG_SCSI_MESH_SYNC_RATE=5
|
||||
CONFIG_SCSI_MESH_RESET_DELAY_MS=4000
|
||||
|
||||
CONFIG_SCSI_MAC53C94=m
|
||||
CONFIG_ADB_CUDA=y
|
||||
CONFIG_ADB_MACIO=y
|
||||
CONFIG_INPUT_ADBHID=y
|
||||
CONFIG_ADB_PMU_LED=y
|
||||
CONFIG_ADB_PMU_LED_IDE=y
|
||||
|
||||
CONFIG_PMAC_MEDIABAY=y
|
||||
CONFIG_BMAC=m
|
||||
CONFIG_MACE=m
|
||||
# CONFIG_MACE_AAUI_PORT is not set
|
||||
CONFIG_MV643XX_ETH=m
|
||||
CONFIG_I2C_HYDRA=m
|
||||
CONFIG_I2C_MPC=m
|
||||
CONFIG_THERM_WINDTUNNEL=m
|
||||
CONFIG_THERM_ADT746X=m
|
||||
# CONFIG_ANSLCD is not set
|
||||
|
||||
CONFIG_FB_PLATINUM=y
|
||||
CONFIG_FB_VALKYRIE=y
|
||||
CONFIG_FB_CT65550=y
|
||||
# CONFIG_BDI_SWITCH is not set
|
||||
|
||||
CONFIG_MAC_FLOPPY=m
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
|
||||
CONFIG_FB_ATY128=y
|
||||
CONFIG_FB_ATY=y
|
||||
CONFIG_FB_MATROX=y
|
||||
# CONFIG_KEXEC is not set
|
||||
|
||||
# CONFIG_HVC_RTAS is not set
|
||||
|
||||
# CONFIG_UDBG_RTAS_CONSOLE is not set
|
||||
CONFIG_BRIQ_PANEL=m
|
||||
|
||||
# CONFIG_ATA_PIIX is not set
|
||||
# CONFIG_PATA_AMD is not set
|
||||
# CONFIG_PATA_ATIIXP is not set
|
||||
CONFIG_PATA_MPC52xx=m
|
||||
# CONFIG_PATA_MPIIX is not set
|
||||
# CONFIG_PATA_OLDPIIX is not set
|
||||
# CONFIG_PATA_OPTI is not set
|
||||
# CONFIG_PATA_SERVERWORKS is not set
|
||||
|
||||
CONFIG_SERIAL_MPC52xx=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
# CONFIG_MPC5200_WDT is not set
|
||||
CONFIG_8xxx_WDT=m
|
||||
CONFIG_GEF_WDT=m
|
||||
|
||||
CONFIG_PPC_MPC5200_BUGFIX=y
|
||||
CONFIG_FEC_MPC52xx=m
|
||||
#CHECK: This may later become a tristate.
|
||||
CONFIG_FEC_MPC52xx_MDIO=y
|
||||
CONFIG_PPC_MPC5200_GPIO=y
|
||||
CONFIG_MDIO_GPIO=m
|
||||
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
# CONFIG_BLK_DEV_4DRIVES is not set
|
||||
# CONFIG_BLK_DEV_ALI14XX is not set
|
||||
# CONFIG_BLK_DEV_DTC2278 is not set
|
||||
# CONFIG_BLK_DEV_HT6560B is not set
|
||||
# CONFIG_BLK_DEV_QD65XX is not set
|
||||
# CONFIG_BLK_DEV_UMC8672 is not set
|
||||
|
||||
# CONFIG_VIRQ_DEBUG is not set
|
||||
|
||||
CONFIG_PPC_BESTCOMM_ATA=m
|
||||
CONFIG_PPC_BESTCOMM_FEC=m
|
||||
CONFIG_PPC_BESTCOMM_GEN_BD=m
|
||||
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
# CONFIG_PAGE_OFFSET_BOOL is not set
|
||||
# CONFIG_FB_FSL_DIU is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
# CONFIG_GPIO_PCA953X is not set
|
||||
# CONFIG_GPIO_PCF857X is not set
|
||||
# CONFIG_HTC_EGPIO is not set
|
||||
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_CISS_SCSI_TAPE is not set
|
||||
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
|
||||
# CONFIG_SND_INTEL8X0 is not set
|
||||
# CONFIG_SND_INTEL8X0M is not set
|
||||
|
||||
# CONFIG_MEMSTICK is not set
|
||||
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
# PPC gets sad with debug alloc (bz 448598)
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
||||
CONFIG_SND_ISA=y
|
||||
CONFIG_CRYPTO_DEV_TALITOS=m
|
||||
|
||||
CONFIG_FSL_EMB_PERFMON=y
|
||||
CONFIG_MPC8272_ADS=y
|
||||
CONFIG_PQ2FADS=y
|
||||
CONFIG_EP8248E=y
|
||||
CONFIG_MPC831x_RDB=y
|
||||
CONFIG_MPC832x_MDS=y
|
||||
CONFIG_MPC832x_RDB=y
|
||||
CONFIG_MPC834x_MDS=y
|
||||
CONFIG_MPC834x_ITX=y
|
||||
CONFIG_MPC836x_MDS=y
|
||||
CONFIG_MPC836x_RDK=y
|
||||
CONFIG_MPC837x_MDS=y
|
||||
CONFIG_MPC837x_RDB=y
|
||||
CONFIG_SBC834x=y
|
||||
CONFIG_ASP834x=y
|
||||
CONFIG_KMETER1=y
|
||||
CONFIG_MPC8641_HPCN=y
|
||||
CONFIG_SBC8641D=y
|
||||
CONFIG_MPC8610_HPCD=y
|
||||
|
||||
# CONFIG_USB_MUSB_HDRC is not set
|
||||
|
||||
# busted in 2.6.27
|
||||
# drivers/mtd/maps/sbc8240.c: In function 'init_sbc8240_mtd':
|
||||
# drivers/mtd/maps/sbc8240.c:172: warning: passing argument 1 of 'simple_map_init' from incompatible pointer type
|
||||
# drivers/mtd/maps/sbc8240.c:177: error: 'struct mtd_info' has no member named 'module'
|
||||
|
||||
CONFIG_MTD_NAND_FSL_UPM=m
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_KVM_BOOK3S_32=m
|
4
config-powerpc32-smp
Normal file
4
config-powerpc32-smp
Normal file
@ -0,0 +1,4 @@
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_NR_CPUS=4
|
||||
# CONFIG_BATTERY_PMU is not set
|
184
config-powerpc64
Normal file
184
config-powerpc64
Normal file
@ -0,0 +1,184 @@
|
||||
CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_PPC_PMAC64=y
|
||||
CONFIG_PPC_MAPLE=y
|
||||
CONFIG_PPC_CELL=y
|
||||
CONFIG_PPC_IBM_CELL_BLADE=y
|
||||
CONFIG_PPC_ISERIES=y
|
||||
CONFIG_PPC_PSERIES=y
|
||||
CONFIG_PPC_PMAC=y
|
||||
CONFIG_PPC_PASEMI=y
|
||||
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
|
||||
CONFIG_PPC_PS3=y
|
||||
CONFIG_PPC_CELLEB=y
|
||||
CONFIG_PPC_CELL_QPACE=y
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_ADVANCED=y
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
CONFIG_PS3_STORAGE=m
|
||||
CONFIG_PS3_DISK=m
|
||||
CONFIG_PS3_ROM=m
|
||||
CONFIG_PS3_FLASH=m
|
||||
CONFIG_PS3_LPM=y
|
||||
CONFIG_SND_PS3=m
|
||||
CONFIG_SND_PS3_DEFAULT_START_DELAY=1000
|
||||
CONFIG_GELIC_NET=m
|
||||
CONFIG_GELIC_WIRELESS=y
|
||||
CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=y
|
||||
CONFIG_CBE_THERM=m
|
||||
CONFIG_CBE_CPUFREQ=m
|
||||
CONFIG_CBE_CPUFREQ_PMI=m
|
||||
CONFIG_CBE_CPUFREQ_PMI_ENABLE=y
|
||||
CONFIG_PMAC_RACKMETER=m
|
||||
CONFIG_IBMEBUS=y
|
||||
CONFIG_SPU_FS=m
|
||||
CONFIG_RTAS_FLASH=y
|
||||
CONFIG_PPC_SPLPAR=y
|
||||
CONFIG_SCANLOG=y
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SERIAL_ICOM=m
|
||||
CONFIG_HVCS=m
|
||||
CONFIG_HVC_CONSOLE=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_IBMVETH=m
|
||||
CONFIG_SCSI_IBMVSCSI=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
CONFIG_HOTPLUG_PCI_RPA=m
|
||||
CONFIG_HOTPLUG_PCI_RPA_DLPAR=y
|
||||
CONFIG_ADB_PMU_LED=y
|
||||
CONFIG_ADB_PMU_LED_IDE=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
CONFIG_CPU_FREQ_PMAC64=y
|
||||
CONFIG_SCSI_IPR=m
|
||||
CONFIG_SCSI_IPR_TRACE=y
|
||||
CONFIG_SCSI_IPR_DUMP=y
|
||||
CONFIG_SPIDER_NET=m
|
||||
CONFIG_HVC_RTAS=y
|
||||
CONFIG_HVC_ISERIES=y
|
||||
CONFIG_CBE_RAS=y
|
||||
|
||||
# iSeries device drivers
|
||||
#
|
||||
CONFIG_ISERIES_VETH=m
|
||||
CONFIG_VIODASD=m
|
||||
CONFIG_VIOCD=m
|
||||
CONFIG_VIOTAPE=m
|
||||
|
||||
CONFIG_PASEMI_MAC=m
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
|
||||
CONFIG_PPC_PASEMI_IOMMU=y
|
||||
CONFIG_SERIAL_TXX9=y
|
||||
CONFIG_SERIAL_TXX9_NR_UARTS=6
|
||||
CONFIG_SERIAL_TXX9_CONSOLE=y
|
||||
|
||||
CONFIG_HVC_BEAT=y
|
||||
|
||||
CONFIG_FB_PS3=y
|
||||
CONFIG_FB_PS3_DEFAULT_SIZE_M=18
|
||||
|
||||
CONFIG_PPC_PMI=m
|
||||
CONFIG_PS3_SYS_MANAGER=y
|
||||
# CONFIG_BLK_DEV_CELLEB is not set
|
||||
|
||||
CONFIG_PATA_SCC=m
|
||||
|
||||
CONFIG_APM_EMULATION=m
|
||||
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
CONFIG_NR_CPUS=128
|
||||
# CONFIG_FB_PLATINUM is not set
|
||||
# CONFIG_FB_VALKYRIE is not set
|
||||
# CONFIG_FB_CT65550 is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
# CONFIG_FB_ATY128 is not set
|
||||
# CONFIG_FB_ATY is not set
|
||||
|
||||
# CONFIG_POWER4_ONLY is not set
|
||||
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_NUMA=y
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_INPUT_PCSPKR is not set
|
||||
|
||||
CONFIG_EHEA=m
|
||||
CONFIG_INFINIBAND_EHCA=m
|
||||
|
||||
CONFIG_HCALL_STATS=y
|
||||
|
||||
CONFIG_XMON_DISASSEMBLY=y
|
||||
|
||||
CONFIG_SCSI_IBMVSCSIS=m
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_TUNE_CELL=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
CONFIG_IBM_NEW_EMAC=m
|
||||
CONFIG_IBM_NEW_EMAC_RXB=128
|
||||
CONFIG_IBM_NEW_EMAC_TXB=64
|
||||
CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
|
||||
CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
|
||||
CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
|
||||
# CONFIG_IBM_NEW_EMAC_DEBUG is not set
|
||||
|
||||
# CONFIG_VIRQ_DEBUG is not set
|
||||
CONFIG_ELECTRA_CF=m
|
||||
|
||||
CONFIG_MTD_NAND_PASEMI=m
|
||||
CONFIG_EDAC_CELL=m
|
||||
CONFIG_EDAC_CPC925=m
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_PHYP_DUMP=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
|
||||
CONFIG_VSX=y
|
||||
|
||||
CONFIG_SCSI_IBMVFC=m
|
||||
# CONFIG_SCSI_IBMVFC_TRACE is not set
|
||||
CONFIG_IBM_BSR=m
|
||||
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
|
||||
CONFIG_PPC_IBM_CELL_RESETBUTTON=y
|
||||
CONFIG_PPC_IBM_CELL_POWERBUTTON=m
|
||||
CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m
|
||||
|
||||
CONFIG_RTC_DRV_PS3=y
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
|
||||
#-- bz#607175
|
||||
#-- active memory sharing
|
||||
CONFIG_PPC_SMLPAR=y
|
||||
CONFIG_CMM=y
|
||||
#-- DLPAR memory remove
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
205
config-rhel-generic
Normal file
205
config-rhel-generic
Normal file
@ -0,0 +1,205 @@
|
||||
# CONFIG_ISA is not set
|
||||
# CONFIG_ISAPNP is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
# CONFIG_SCSI_AHA1542 is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_IN2000 is not set
|
||||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_DEV_APPLETALK is not set
|
||||
# CONFIG_LTPC is not set
|
||||
# CONFIG_COPS is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_IPDDP is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_PLIP is not set
|
||||
|
||||
# CONFIG_PCMCIA_AHA152X is not set
|
||||
# CONFIG_PCMCIA_NINJA_SCSI is not set
|
||||
# CONFIG_PCMCIA_QLOGIC is not set
|
||||
# CONFIG_PCMCIA_SYM53C500 is not set
|
||||
|
||||
# CONFIG_EL2 is not set
|
||||
# CONFIG_ELPLUS is not set
|
||||
# CONFIG_WD80x3 is not set
|
||||
# CONFIG_I82092 is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
# CONFIG_ULTRA is not set
|
||||
# CONFIG_SKFP is not set
|
||||
# CONFIG_DE600 is not set
|
||||
# CONFIG_DE620 is not set
|
||||
# CONFIG_CS89x0 is not set
|
||||
# CONFIG_AC3200 is not set
|
||||
# CONFIG_NI52 is not set
|
||||
# CONFIG_NI65 is not set
|
||||
# CONFIG_LANCE is not set
|
||||
# CONFIG_EL16 is not set
|
||||
# CONFIG_EL3 is not set
|
||||
# CONFIG_3C515 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_NET_SB1000 is not set
|
||||
# CONFIG_DEPCA is not set
|
||||
# CONFIG_ATP is not set
|
||||
|
||||
# CONFIG_TR is not set
|
||||
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
# CONFIG_SND_AD1816A is not set
|
||||
# CONFIG_SND_AD1848 is not set
|
||||
# CONFIG_SND_CS4231 is not set
|
||||
# CONFIG_SND_CS4236 is not set
|
||||
# CONFIG_SND_ES968 is not set
|
||||
# CONFIG_SND_ES1688 is not set
|
||||
# CONFIG_SND_ES18XX is not set
|
||||
# CONFIG_SND_GUSCLASSIC is not set
|
||||
# CONFIG_SND_GUSEXTREME is not set
|
||||
# CONFIG_SND_GUSMAX is not set
|
||||
# CONFIG_SND_INTERWAVE is not set
|
||||
# CONFIG_SND_INTERWAVE_STB is not set
|
||||
# CONFIG_SND_OPTI92X_AD1848 is not set
|
||||
# CONFIG_SND_OPTI92X_CS4231 is not set
|
||||
# CONFIG_SND_OPTI93X is not set
|
||||
# CONFIG_SND_MIRO is not set
|
||||
# CONFIG_SND_SB8 is not set
|
||||
# CONFIG_SND_SB16 is not set
|
||||
# CONFIG_SND_SBAWE is not set
|
||||
# CONFIG_SND_SB16_CSP is not set
|
||||
# CONFIG_SND_WAVEFRONT is not set
|
||||
# CONFIG_SND_ALS100 is not set
|
||||
# CONFIG_SND_AZT2320 is not set
|
||||
# CONFIG_SND_CMI8330 is not set
|
||||
# CONFIG_SND_DT019X is not set
|
||||
# CONFIG_SND_OPL3SA2 is not set
|
||||
# CONFIG_SND_SGALAXY is not set
|
||||
# CONFIG_SND_SSCAPE is not set
|
||||
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
|
||||
# CONFIG_DRM_TDFX is not set
|
||||
# CONFIG_DRM_SIS is not set
|
||||
|
||||
# CONFIG_BLK_DEV_UMEM is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
|
||||
# CONFIG_PARIDE is not set
|
||||
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
# CONFIG_MWAVE is not set
|
||||
|
||||
# CONFIG_ROCKETPORT is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
# CONFIG_JOYSTICK_ANALOG is not set
|
||||
# CONFIG_JOYSTICK_A3D is not set
|
||||
# CONFIG_JOYSTICK_ADI is not set
|
||||
# CONFIG_JOYSTICK_COBRA is not set
|
||||
# CONFIG_JOYSTICK_GF2K is not set
|
||||
# CONFIG_JOYSTICK_GRIP is not set
|
||||
# CONFIG_JOYSTICK_GRIP_MP is not set
|
||||
# CONFIG_JOYSTICK_GUILLEMOT is not set
|
||||
# CONFIG_JOYSTICK_INTERACT is not set
|
||||
# CONFIG_JOYSTICK_SIDEWINDER is not set
|
||||
# CONFIG_JOYSTICK_TMDC is not set
|
||||
# CONFIG_JOYSTICK_IFORCE is not set
|
||||
# CONFIG_JOYSTICK_WARRIOR is not set
|
||||
# CONFIG_JOYSTICK_MAGELLAN is not set
|
||||
# CONFIG_JOYSTICK_SPACEORB is not set
|
||||
# CONFIG_JOYSTICK_SPACEBALL is not set
|
||||
# CONFIG_JOYSTICK_STINGER is not set
|
||||
# CONFIG_JOYSTICK_DB9 is not set
|
||||
# CONFIG_JOYSTICK_GAMECON is not set
|
||||
# CONFIG_JOYSTICK_TURBOGRAFX is not set
|
||||
|
||||
# CONFIG_RADIO_CADET is not set
|
||||
# CONFIG_RADIO_RTRACK is not set
|
||||
# CONFIG_RADIO_RTRACK2 is not set
|
||||
# CONFIG_RADIO_AZTECH is not set
|
||||
# CONFIG_RADIO_GEMTEK is not set
|
||||
# CONFIG_RADIO_GEMTEK_PCI is not set
|
||||
# CONFIG_RADIO_MAXIRADIO is not set
|
||||
# CONFIG_RADIO_MAESTRO is not set
|
||||
# CONFIG_RADIO_MIROPCM20 is not set
|
||||
# CONFIG_RADIO_SF16FMI is not set
|
||||
# CONFIG_RADIO_SF16FMR2 is not set
|
||||
# CONFIG_RADIO_TERRATEC is not set
|
||||
# CONFIG_RADIO_TRUST is not set
|
||||
# CONFIG_RADIO_TYPHOON is not set
|
||||
# CONFIG_RADIO_ZOLTRIX is not set
|
||||
|
||||
|
||||
# CONFIG_VIDEO_PMS is not set
|
||||
# CONFIG_VIDEO_BWQCAM is not set
|
||||
# CONFIG_VIDEO_CQCAM is not set
|
||||
# CONFIG_VIDEO_W9966 is not set
|
||||
# CONFIG_VIDEO_CPIA is not set
|
||||
# CONFIG_VIDEO_CPIA_PP is not set
|
||||
# CONFIG_VIDEO_CPIA_USB is not set
|
||||
# CONFIG_VIDEO_SAA5249 is not set
|
||||
# CONFIG_VIDEO_STRADIS is not set
|
||||
# CONFIG_VIDEO_ZORAN is not set
|
||||
# CONFIG_VIDEO_ZORAN_BUZ is not set
|
||||
# CONFIG_VIDEO_ZORAN_DC10 is not set
|
||||
# CONFIG_VIDEO_ZORAN_DC30 is not set
|
||||
# CONFIG_VIDEO_ZORAN_LML33 is not set
|
||||
# CONFIG_VIDEO_ZORAN_LML33R10 is not set
|
||||
# CONFIG_VIDEO_MEYE is not set
|
||||
# CONFIG_VIDEO_SAA7134 is not set
|
||||
# CONFIG_VIDEO_MXB is not set
|
||||
# CONFIG_VIDEO_HEXIUM_ORION is not set
|
||||
# CONFIG_VIDEO_HEXIUM_GEMINI is not set
|
||||
# CONFIG_VIDEO_CX88 is not set
|
||||
# CONFIG_VIDEO_SAA5246A is not set
|
||||
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
# CONFIG_MTD_PMC551 is not set
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
|
||||
# CONFIG_FB_MATROX is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_HGA is not set
|
||||
# CONFIG_FB_ATY is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_ATY128 is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
# CONFIG_FB_NEOMAGIC is not set
|
||||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_HGA_ACCEL is not set
|
||||
# CONFIG_FB_3DFX_ACCEL is not set
|
||||
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
|
228
config-s390x
Normal file
228
config-s390x
Normal file
@ -0,0 +1,228 @@
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_MARCH_G5 is not set
|
||||
# CONFIG_MARCH_Z900 is not set
|
||||
CONFIG_MARCH_Z9_109=y
|
||||
# CONFIG_MARCH_Z990 is not set
|
||||
|
||||
CONFIG_NR_CPUS=64
|
||||
CONFIG_COMPAT=y
|
||||
|
||||
# See bug 496596
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# See bug 496605
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
||||
CONFIG_MMU=y
|
||||
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_NO_IDLE_HZ=y
|
||||
|
||||
CONFIG_SMP=y
|
||||
|
||||
#
|
||||
# I/O subsystem configuration
|
||||
#
|
||||
CONFIG_QDIO=m
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
CONFIG_IPL=y
|
||||
# CONFIG_IPL_TAPE is not set
|
||||
CONFIG_IPL_VM=y
|
||||
# CONFIG_PROCESS_DEBUG is not set
|
||||
CONFIG_PFAULT=y
|
||||
CONFIG_SHARED_KERNEL=y
|
||||
CONFIG_CMM=m
|
||||
CONFIG_CMM_PROC=y
|
||||
# CONFIG_NETIUCV is not set
|
||||
CONFIG_SMSGIUCV=m
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
CONFIG_ZFCP=m
|
||||
CONFIG_ZFCPDUMP=y
|
||||
CONFIG_CCW=y
|
||||
|
||||
#
|
||||
# S/390 block device drivers
|
||||
#
|
||||
CONFIG_DCSSBLK=m
|
||||
CONFIG_BLK_DEV_XPRAM=m
|
||||
CONFIG_DASD=m
|
||||
CONFIG_DASD_PROFILE=y
|
||||
CONFIG_DASD_ECKD=m
|
||||
CONFIG_DASD_FBA=m
|
||||
CONFIG_DASD_DIAG=m
|
||||
CONFIG_DASD_EER=y
|
||||
|
||||
#
|
||||
# S/390 character device drivers
|
||||
#
|
||||
CONFIG_TN3270=y
|
||||
CONFIG_TN3270_CONSOLE=y
|
||||
CONFIG_TN3215=y
|
||||
CONFIG_TN3215_CONSOLE=y
|
||||
CONFIG_CCW_CONSOLE=y
|
||||
CONFIG_SCLP_TTY=y
|
||||
CONFIG_SCLP_CONSOLE=y
|
||||
CONFIG_SCLP_VT220_TTY=y
|
||||
CONFIG_SCLP_VT220_CONSOLE=y
|
||||
CONFIG_SCLP_CPI=m
|
||||
CONFIG_SCLP_ASYNC=m
|
||||
CONFIG_S390_TAPE=m
|
||||
CONFIG_S390_TAPE_3590=m
|
||||
|
||||
CONFIG_APPLDATA_BASE=y
|
||||
CONFIG_APPLDATA_MEM=m
|
||||
CONFIG_APPLDATA_OS=m
|
||||
CONFIG_APPLDATA_NET_SUM=m
|
||||
CONFIG_TN3270_TTY=y
|
||||
CONFIG_TN3270_FS=m
|
||||
|
||||
|
||||
#
|
||||
# S/390 tape interface support
|
||||
#
|
||||
CONFIG_S390_TAPE_BLOCK=y
|
||||
|
||||
#
|
||||
# S/390 tape hardware support
|
||||
#
|
||||
CONFIG_S390_TAPE_34XX=m
|
||||
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
CONFIG_TR=y
|
||||
CONFIG_NETCONSOLE=m
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
|
||||
#
|
||||
# S/390 network device drivers
|
||||
#
|
||||
CONFIG_LCS=m
|
||||
CONFIG_CTC=m
|
||||
CONFIG_IUCV=m
|
||||
CONFIG_QETH=m
|
||||
CONFIG_QETH_IPV6=y
|
||||
CONFIG_CCWGROUP=m
|
||||
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_B44 is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_OSF_PARTITION is not set
|
||||
CONFIG_IBM_PARTITION=y
|
||||
# CONFIG_MAC_PARTITION is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
# CONFIG_SGI_PARTITION is not set
|
||||
# CONFIG_SUN_PARTITION is not set
|
||||
|
||||
|
||||
#
|
||||
# S390 crypto hw
|
||||
#
|
||||
CONFIG_CRYPTO_SHA1_S390=m
|
||||
CONFIG_CRYPTO_SHA256_S390=m
|
||||
CONFIG_CRYPTO_DES_S390=m
|
||||
CONFIG_CRYPTO_AES_S390=m
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
|
||||
#
|
||||
# S390 specific stack options; needs gcc 3.5 so off for now
|
||||
#
|
||||
CONFIG_PACK_STACK=y
|
||||
CONFIG_CHECK_STACK=y
|
||||
# CONFIG_WARN_STACK is not set
|
||||
# CONFIG_SMALL_STACK is not set
|
||||
|
||||
CONFIG_ZVM_WATCHDOG=m
|
||||
CONFIG_VMLOGRDR=m
|
||||
CONFIG_MONREADER=m
|
||||
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
|
||||
# CONFIG_CLAW is not set
|
||||
|
||||
# CONFIG_ATMEL is not set
|
||||
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_MII is not set
|
||||
|
||||
|
||||
CONFIG_STACK_GUARD=256
|
||||
CONFIG_CMM_IUCV=y
|
||||
|
||||
# CONFIG_DETECT_SOFTLOCKUP is not set
|
||||
|
||||
CONFIG_S390_HYPFS_FS=y
|
||||
|
||||
CONFIG_MONWRITER=m
|
||||
CONFIG_ZCRYPT=m
|
||||
CONFIG_ZCRYPT_MONOLITHIC=y
|
||||
|
||||
CONFIG_S390_EXEC_PROTECT=y
|
||||
CONFIG_AFIUCV=m
|
||||
CONFIG_S390_PRNG=m
|
||||
|
||||
CONFIG_S390_VMUR=m
|
||||
|
||||
# CONFIG_THERMAL is not set
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CTCM=m
|
||||
CONFIG_QETH_L2=m
|
||||
CONFIG_QETH_L3=m
|
||||
CONFIG_CRYPTO_SHA512_S390=m
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_S390_GUEST=y
|
||||
|
||||
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_CHSC_SCH=m
|
||||
|
||||
# drivers/isdn/hardware/mISDN/hfcmulti.c:5255:2: error: #error "not running on big endian machines now"
|
||||
# CONFIG_MISDN_HFCMULTI is not set
|
||||
|
||||
CONFIG_HVC_IUCV=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_PM=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION="/dev/jokes"
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_SMSGIUCV_EVENT=m
|
||||
|
||||
# CONFIG_PREEMPT_TRACER is not set
|
||||
|
||||
CONFIG_VMCP=y
|
203
config-sparc64-generic
Normal file
203
config-sparc64-generic
Normal file
@ -0,0 +1,203 @@
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SPARC=y
|
||||
CONFIG_SPARC64=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=100
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_TABLE=m
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_STAT is not set
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_US3_FREQ=m
|
||||
CONFIG_US2E_FREQ=m
|
||||
|
||||
CONFIG_SUN_LDOMS=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_BBC_I2C is not set
|
||||
CONFIG_HUGETLB_PAGE_SIZE_4MB=y
|
||||
# CONFIG_HUGETLB_PAGE_SIZE_512K is not set
|
||||
# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_US3_FREQ=m
|
||||
CONFIG_US2E_FREQ=m
|
||||
CONFIG_SUN_OPENPROMFS=m
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_BINFMT_ELF32=y
|
||||
CONFIG_ENVCTRL=m
|
||||
CONFIG_DISPLAY7SEG=m
|
||||
CONFIG_WATCHDOG_CP1XXX=m
|
||||
CONFIG_WATCHDOG_RIO=m
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_LIRC_PARALLEL is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_SIMTEC is not set
|
||||
CONFIG_I2C_ALI1535=m
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_BW2 is not set
|
||||
CONFIG_FB_CG3=y
|
||||
CONFIG_FB_CG6=y
|
||||
# CONFIG_FB_RIVA is not set
|
||||
# CONFIG_FB_MATROX is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
CONFIG_FB_ATY=y
|
||||
# CONFIG_FB_S3 is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
# CONFIG_FB_SIS is not set
|
||||
# CONFIG_FB_NEOMAGIC is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
CONFIG_FB_SBUS=y
|
||||
CONFIG_FB_FFB=y
|
||||
# CONFIG_FB_TCX is not set
|
||||
# CONFIG_FB_CG14 is not set
|
||||
CONFIG_FB_PM2=y
|
||||
CONFIG_FB_P9100=y
|
||||
# CONFIG_FB_LEO is not set
|
||||
CONFIG_FB_XVR500=y
|
||||
CONFIG_FB_XVR2500=y
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
# CONFIG_FB_ATY128 is not set
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM_NOUVEAU is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONT_8x8 is not set
|
||||
# CONFIG_FONT_8x16 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
CONFIG_FONT_SUN8x16=y
|
||||
CONFIG_FONT_SUN12x22=y
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
CONFIG_SERIAL_SUNZILOG=y
|
||||
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNSU=y
|
||||
CONFIG_SERIAL_SUNSU_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNSAB=y
|
||||
CONFIG_SERIAL_SUNSAB_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNHV=y
|
||||
CONFIG_SUN_OPENPROMIO=y
|
||||
CONFIG_OBP_FLASH=m
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_BLK_DEV_FD=y
|
||||
CONFIG_SUNVDC=m
|
||||
CONFIG_SUNVNET=m
|
||||
# CONFIG_BLK_DEV_AEC62XX is not set
|
||||
# CONFIG_BLK_DEV_HPT366 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
||||
# CONFIG_BLK_DEV_SIIMAGE is not set
|
||||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_AIC7XXX is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
CONFIG_SCSI_QLOGICPTI=m
|
||||
CONFIG_SCSI_SUNESP=m
|
||||
CONFIG_SUNLANCE=m
|
||||
CONFIG_SUNBMAC=m
|
||||
CONFIG_SUNQE=m
|
||||
# CONFIG_DM9102 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_R8169 is not set
|
||||
CONFIG_ATM_FORE200E_USE_TASKLET=y
|
||||
CONFIG_ATM_FORE200E_DEBUG=0
|
||||
CONFIG_ATM_FORE200E_TX_RETRY=16
|
||||
# CONFIG_DRM_TDFX is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
CONFIG_KEYBOARD_SUNKBD=y
|
||||
# CONFIG_INPUT_PCSPKR is not set
|
||||
CONFIG_INPUT_SPARCSPKR=m
|
||||
# CONFIG_SOUND_PRIME is not set
|
||||
# CONFIG_SND_SUN_AMD7930 is not set
|
||||
CONFIG_SND_SUN_CS4231=m
|
||||
# CONFIG_SND_SUN_DBRI is not set
|
||||
CONFIG_PARPORT_SUNBPP=m
|
||||
CONFIG_LOGO_SUN_CLUT224=y
|
||||
CONFIG_MTD_SUN_UFLASH=m
|
||||
CONFIG_MYRI_SBUS=m
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_VIDEO_ZORAN is not set
|
||||
# CONFIG_VIDEO_STRADIS is not set
|
||||
# CONFIG_IEEE1394_SBP2 is not set
|
||||
# CONFIG_USB_NET2280 is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_DCFLUSH is not set
|
||||
# CONFIG_DEBUG_BOOTMEM is not set
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
# CONFIG_LOCKDEP is not set
|
||||
# CONFIG_STACK_DEBUG is not set
|
||||
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
# CONFIG_THERMAL is not set
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_NUMA=y
|
||||
|
||||
CONFIG_SND_SPARC=y
|
||||
|
||||
CONFIG_HW_RANDOM_N2RNG=m
|
||||
|
||||
# drivers/isdn/hardware/mISDN/hfcmulti.c:5255:2: error: #error "not running on big endian machines now"
|
||||
# CONFIG_MISDN_HFCMULTI is not set
|
||||
|
||||
CONFIG_US3_MC=y
|
||||
CONFIG_SENSORS_ULTRA45=m
|
||||
CONFIG_LEDS_SUNFIRE=m
|
||||
CONFIG_TADPOLE_TS102_UCTRL=m
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_LIRC_ENE0100=m
|
||||
# CONFIG_BATTERY_DS2782 is not set
|
||||
CONFIG_USB_GSPCA_SN9C20X=m
|
||||
CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=65536
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_EARLYFB=y
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
|
||||
CONFIG_GRETH=m
|
||||
CONFIG_FB_XVR1000=y
|
||||
|
||||
CONFIG_CRYPTO_DEV_NIAGARA2=y
|
484
config-x86-generic
Normal file
484
config-x86-generic
Normal file
@ -0,0 +1,484 @@
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_64BIT is not set
|
||||
# CONFIG_KERNEL_LZMA is not set
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
#
|
||||
# Enable summit and co via the generic arch
|
||||
#
|
||||
CONFIG_X86_EXTENDED_PLATFORM=y
|
||||
CONFIG_X86_32_NON_STANDARD=y
|
||||
|
||||
# CONFIG_X86_ELAN is not set
|
||||
# CONFIG_X86_NUMAQ is not set
|
||||
# CONFIG_X86_SUMMIT is not set
|
||||
CONFIG_X86_BIGSMP=y
|
||||
# CONFIG_X86_VISWS is not set
|
||||
# CONFIG_X86_RDC321X is not set
|
||||
# CONFIG_X86_ES7000 is not set
|
||||
# CONFIG_M386 is not set
|
||||
# CONFIG_M486 is not set
|
||||
# CONFIG_M586 is not set
|
||||
# CONFIG_M586TSC is not set
|
||||
# CONFIG_M586MMX is not set
|
||||
CONFIG_M686=y
|
||||
# CONFIG_MPENTIUMII is not set
|
||||
# CONFIG_MPENTIUMIII is not set
|
||||
# CONFIG_MPENTIUMM is not set
|
||||
# CONFIG_MPENTIUM4 is not set
|
||||
# CONFIG_MK6 is not set
|
||||
# CONFIG_MK7 is not set
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MCRUSOE is not set
|
||||
# CONFIG_MWINCHIPC6 is not set
|
||||
# CONFIG_MWINCHIP3D is not set
|
||||
# CONFIG_MCYRIXIII is not set
|
||||
# CONFIG_MVIAC3_2 is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_X86_GENERIC=y
|
||||
# CONFIG_X86_PPRO_FENCE is not set
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_TIMER=y
|
||||
# CONFIG_HPET_MMAP is not set
|
||||
CONFIG_X86_MCE=y
|
||||
CONFIG_TOSHIBA=m
|
||||
CONFIG_I8K=m
|
||||
CONFIG_SONYPI=m
|
||||
CONFIG_SONYPI_COMPAT=y
|
||||
CONFIG_MICROCODE=m
|
||||
CONFIG_X86_MSR=y
|
||||
CONFIG_X86_CPUID=y
|
||||
CONFIG_EDD=m
|
||||
# CONFIG_EDD_OFF is not set
|
||||
# CONFIG_NUMA is not set
|
||||
|
||||
# CONFIG_NOHIGHMEM is not set
|
||||
CONFIG_HIGHMEM4G=y
|
||||
# CONFIG_HIGHMEM64G is not set
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGHPTE=y
|
||||
|
||||
# CONFIG_MATH_EMULATION is not set
|
||||
CONFIG_MTRR=y
|
||||
CONFIG_X86_PAT=y
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
# CONFIG_FB_N411 is not set
|
||||
|
||||
CONFIG_DMAR=y
|
||||
CONFIG_DMAR_BROKEN_GFX_WA=y
|
||||
CONFIG_DMAR_FLOPPY_WA=y
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
|
||||
CONFIG_FB_GEODE=y
|
||||
CONFIG_FB_GEODE_LX=y
|
||||
CONFIG_FB_GEODE_GX=y
|
||||
# CONFIG_FB_GEODE_GX1 is not set
|
||||
|
||||
# CONFIG_PCI_GOBIOS is not set
|
||||
# CONFIG_PCI_GODIRECT is not set
|
||||
# CONFIG_PCI_GOMMCONFIG is not set
|
||||
CONFIG_PCI_GOANY=y
|
||||
|
||||
#
|
||||
# x86 specific drivers
|
||||
#
|
||||
CONFIG_PCMCIA_FDOMAIN=m
|
||||
CONFIG_SCSI_FUTURE_DOMAIN=m
|
||||
CONFIG_SCSI_ADVANSYS=m
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
||||
#
|
||||
# APM (Advanced Power Management) BIOS Support
|
||||
#
|
||||
CONFIG_APM=y
|
||||
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
|
||||
# CONFIG_APM_DO_ENABLE is not set
|
||||
CONFIG_APM_CPU_IDLE=y
|
||||
# CONFIG_APM_DISPLAY_BLANK is not set
|
||||
# CONFIG_APM_ALLOW_INTS is not set
|
||||
|
||||
#
|
||||
# Kernel debugging
|
||||
#
|
||||
CONFIG_X86_MPPARSE=y
|
||||
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=1999
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SBS=m
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_PNPACPI=y
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
CONFIG_ACPI_HED=m
|
||||
CONFIG_ACPI_APEI=y
|
||||
CONFIG_ACPI_APEI_GHES=m
|
||||
# CONFIG_ACPI_APEI_EINJ is not set
|
||||
|
||||
#
|
||||
# CPUFreq processor drivers
|
||||
#
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
CONFIG_X86_PCC_CPUFREQ=m
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
CONFIG_X86_POWERNOW_K7=y
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
# CONFIG_X86_GX_SUSPMOD is not set
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
CONFIG_X86_SPEEDSTEP_ICH=y
|
||||
CONFIG_X86_SPEEDSTEP_SMI=y
|
||||
CONFIG_X86_SPEEDSTEP_LIB=y
|
||||
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
|
||||
CONFIG_X86_P4_CLOCKMOD=m
|
||||
CONFIG_X86_LONGRUN=y
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
|
||||
# e_powersaver is dangerous
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
|
||||
CONFIG_X86_HT=y
|
||||
CONFIG_X86_TRAMPOLINE=y
|
||||
|
||||
#
|
||||
# various x86 specific drivers
|
||||
#
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_IBM_ASM=m
|
||||
CONFIG_CRYPTO_AES_586=m
|
||||
CONFIG_CRYPTO_TWOFISH_586=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
|
||||
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_4KSTACKS is not set
|
||||
CONFIG_DEBUG_NMI_TIMEOUT=5
|
||||
|
||||
CONFIG_PCI_DIRECT=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_PCI_BIOS=y
|
||||
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_COMPAQ=m
|
||||
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
|
||||
CONFIG_HOTPLUG_PCI_IBM=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_IPW2100=m
|
||||
CONFIG_IPW2100_MONITOR=y
|
||||
CONFIG_IPW2200=m
|
||||
CONFIG_IPW2200_MONITOR=y
|
||||
CONFIG_IPW2200_RADIOTAP=y
|
||||
CONFIG_IPW2200_PROMISCUOUS=y
|
||||
CONFIG_IPW2200_QOS=y
|
||||
|
||||
CONFIG_BLK_DEV_AMD74XX=y
|
||||
|
||||
CONFIG_I2C_ALI1535=m
|
||||
CONFIG_I2C_ALI15X3=m
|
||||
CONFIG_I2C_ALI1563=m
|
||||
CONFIG_I2C_AMD756=m
|
||||
CONFIG_I2C_AMD756_S4882=m
|
||||
CONFIG_I2C_AMD8111=m
|
||||
CONFIG_I2C_I801=m
|
||||
CONFIG_I2C_ISCH=m
|
||||
CONFIG_I2C_NFORCE2=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
CONFIG_I2C_SIS5595=m
|
||||
CONFIG_I2C_SIS630=m
|
||||
CONFIG_I2C_SIS96X=m
|
||||
|
||||
CONFIG_I2C_VIA=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
|
||||
CONFIG_SCx200_ACB=m
|
||||
|
||||
# CONFIG_X86_REBOOTFIXUPS is not set
|
||||
|
||||
CONFIG_DELL_RBU=m
|
||||
CONFIG_DCDBAS=m
|
||||
|
||||
CONFIG_GPIO_SCH=m
|
||||
CONFIG_PC8736x_GPIO=m
|
||||
# CONFIG_NSC_GPIO is not set
|
||||
CONFIG_CS5535_GPIO=m
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_AMD76X=m
|
||||
CONFIG_EDAC_E7XXX=m
|
||||
CONFIG_EDAC_E752X=m
|
||||
CONFIG_EDAC_I82860=m
|
||||
CONFIG_EDAC_I82875P=m
|
||||
CONFIG_EDAC_I82975X=m
|
||||
CONFIG_EDAC_I3000=m
|
||||
CONFIG_EDAC_I5000=m
|
||||
CONFIG_EDAC_I5100=m
|
||||
CONFIG_EDAC_I5400=m
|
||||
CONFIG_EDAC_R82600=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_I7CORE=m
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
|
||||
CONFIG_SND_ISA=y
|
||||
CONFIG_SND_ES18XX=m
|
||||
|
||||
CONFIG_TCG_INFINEON=m
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
CONFIG_HW_RANDOM_GEODE=m
|
||||
CONFIG_HW_RANDOM_VIA=m
|
||||
|
||||
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
|
||||
CONFIG_MSI_LAPTOP=m
|
||||
CONFIG_SONY_LAPTOP=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_ACERHDF=m
|
||||
CONFIG_TC1100_WMI=m
|
||||
CONFIG_HP_WMI=m
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
CONFIG_DELL_WMI=m
|
||||
|
||||
# CONFIG_TOUCHSCREEN_INTEL_MID is not set
|
||||
|
||||
# CONFIG_SMSC37B787_WDT is not set
|
||||
CONFIG_W83697HF_WDT=m
|
||||
CONFIG_IB700_WDT=m
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_PHYSICAL_ALIGN=0x400000
|
||||
CONFIG_PHYSICAL_START=0x400000
|
||||
CONFIG_CRASH_DUMP=y
|
||||
# CONFIG_KEXEC_JUMP is not set
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_CRASH=m
|
||||
|
||||
CONFIG_CRYPTO_DEV_GEODE=m
|
||||
|
||||
CONFIG_VIDEO_CAFE_CCIC=m
|
||||
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
CONFIG_KVM_AMD=m
|
||||
CONFIG_LGUEST=m
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
|
||||
# PARAVIRT_SPINLOCKS has a 5% perf hit
|
||||
# CONFIG_PARAVIRT_SPINLOCKS is not set
|
||||
CONFIG_KVM_CLOCK=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_LGUEST_GUEST=y
|
||||
CONFIG_VMI=y
|
||||
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_SCRUB_PAGES=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_KBDDEV_FRONTEND=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_FRONTEND=m
|
||||
CONFIG_XENFS=m
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
|
||||
CONFIG_MTD_ESB2ROM=m
|
||||
CONFIG_MTD_CK804XROM=m
|
||||
CONFIG_MTD_NAND_CAFE=m
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
|
||||
CONFIG_THINKPAD_ACPI=m
|
||||
# CONFIG_THINKPAD_ACPI_DEBUG is not set
|
||||
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
|
||||
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
|
||||
CONFIG_THINKPAD_ACPI_VIDEO=y
|
||||
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
||||
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
|
||||
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_ISCSI_IBFT_FIND=y
|
||||
CONFIG_ISCSI_IBFT=m
|
||||
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_INTEL_IOATDMA=m
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
|
||||
# CONFIG_CPA_DEBUG is not set
|
||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
|
||||
|
||||
CONFIG_HP_WATCHDOG=m
|
||||
|
||||
CONFIG_OLPC=y
|
||||
CONFIG_BATTERY_OLPC=y
|
||||
CONFIG_MOUSE_PS2_OLPC=y
|
||||
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
# CONFIG_NO_BOOTMEM is not set
|
||||
|
||||
# CONFIG_MEMTEST is not set
|
||||
# CONFIG_MAXSMP is not set
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_SYSPROF_TRACER=y
|
||||
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
# CONFIG_MMIOTRACE_TEST is not set
|
||||
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
||||
CONFIG_BACKLIGHT_MBP_NVIDIA=m
|
||||
|
||||
CONFIG_OPROFILE_IBS=y
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
|
||||
CONFIG_X86_RESERVE_LOW_64K=y
|
||||
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
CONFIG_PANASONIC_LAPTOP=m
|
||||
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_X86_PTRACE_BTS=y
|
||||
|
||||
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||
|
||||
CONFIG_POWER_TRACER=y
|
||||
CONFIG_HW_BRANCH_TRACER=y
|
||||
|
||||
# CONFIG_SPARSE_IRQ is not set
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
# CONFIG_IOMMU_STRESS is not set
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
# CONFIG_X86_ANCIENT_MCE is not set
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
|
||||
# CONFIG_X86_MRST is not set
|
||||
CONFIG_SFI=y
|
||||
|
||||
CONFIG_INPUT_WINBOND_CIR=m
|
||||
CONFIG_I2C_SCMI=m
|
||||
CONFIG_SBC_FITPC2_WATCHDOG=m
|
||||
CONFIG_EDAC_I3200=m
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
|
||||
CONFIG_GPIO_LANGWELL=y
|
||||
|
||||
# CONFIG_INTEL_TXT is not set
|
||||
|
||||
CONFIG_CS5535_MFGPT=m
|
||||
CONFIG_GEODE_WDT=m
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=m
|
||||
|
||||
CONFIG_LEDS_INTEL_SS4200=m
|
||||
|
||||
CONFIG_X86_DECODER_SELFTEST=y
|
||||
|
||||
CONFIG_ACPI_CMPC=m
|
||||
CONFIG_MSI_WMI=m
|
||||
CONFIG_TOSHIBA_BT_RFKILL=m
|
||||
# CONFIG_SAMSUNG_LAPTOP is not set
|
||||
|
||||
CONFIG_VGA_SWITCHEROO=y
|
||||
CONFIG_LPC_SCH=m
|
||||
|
||||
CONFIG_INTEL_IDLE=m
|
||||
|
||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
409
config-x86_64-generic
Normal file
409
config-x86_64-generic
Normal file
@ -0,0 +1,409 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_KERNEL_LZMA is not set
|
||||
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MPSC is not set
|
||||
CONFIG_GENERIC_CPU=y
|
||||
CONFIG_X86_EXTENDED_PLATFORM=y
|
||||
# CONFIG_X86_VSMP is not set
|
||||
# CONFIG_X86_UV is not set
|
||||
CONFIG_X86_MSR=y
|
||||
CONFIG_X86_CPUID=y
|
||||
CONFIG_MTRR=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_K8_NUMA=y
|
||||
CONFIG_X86_64_ACPI_NUMA=y
|
||||
# CONFIG_NUMA_EMU is not set
|
||||
CONFIG_NR_CPUS=512
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
CONFIG_X86_P4_CLOCKMOD=m
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
# CONFIG_IOMMU_DEBUG is not set
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_MICROCODE=m
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_CALGARY_IOMMU=y
|
||||
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
CONFIG_EDD=m
|
||||
# CONFIG_EDD_OFF is not set
|
||||
CONFIG_PCI_BIOS=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_DMAR=y
|
||||
CONFIG_DMAR_BROKEN_GFX_WA=y
|
||||
CONFIG_DMAR_FLOPPY_WA=y
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
|
||||
CONFIG_KEXEC_JUMP=y
|
||||
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
CONFIG_X86_PCC_CPUFREQ=m
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_MEMORY=m
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SBS=m
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
CONFIG_ACPI_HED=m
|
||||
CONFIG_ACPI_APEI=y
|
||||
CONFIG_ACPI_APEI_GHES=m
|
||||
# CONFIG_ACPI_APEI_EINJ is not set
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
|
||||
CONFIG_MSI_LAPTOP=m
|
||||
CONFIG_SONY_LAPTOP=m
|
||||
CONFIG_SONYPI_COMPAT=y
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_ACERHDF=m
|
||||
CONFIG_HP_WMI=m
|
||||
CONFIG_DELL_WMI=m
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
|
||||
# CONFIG_TOUCHSCREEN_INTEL_MID is not set
|
||||
|
||||
CONFIG_THINKPAD_ACPI=m
|
||||
# CONFIG_THINKPAD_ACPI_DEBUG is not set
|
||||
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
|
||||
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
|
||||
CONFIG_THINKPAD_ACPI_VIDEO=y
|
||||
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
||||
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
|
||||
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_COMPAQ=m
|
||||
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
|
||||
CONFIG_HOTPLUG_PCI_IBM=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
|
||||
CONFIG_HPET=y
|
||||
# CONFIG_HPET_MMAP is not set
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_IPW2100=m
|
||||
CONFIG_IPW2100_MONITOR=y
|
||||
CONFIG_IPW2200=m
|
||||
CONFIG_IPW2200_MONITOR=y
|
||||
CONFIG_IPW2200_RADIOTAP=y
|
||||
CONFIG_IPW2200_PROMISCUOUS=y
|
||||
CONFIG_IPW2200_QOS=y
|
||||
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
|
||||
CONFIG_BLK_DEV_AMD74XX=y
|
||||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
CONFIG_CRYPTO_AES_X86_64=m
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
CONFIG_CRYPTO_TWOFISH_X86_64=m
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
CONFIG_CRYPTO_SALSA20_X86_64=m
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=m
|
||||
|
||||
CONFIG_X86_MCE=y
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
|
||||
# CONFIG_I2C_ALI1535 is not set
|
||||
# CONFIG_I2C_ALI1563 is not set
|
||||
# CONFIG_I2C_ALI15X3 is not set
|
||||
CONFIG_I2C_AMD756=m
|
||||
CONFIG_I2C_AMD756_S4882=m
|
||||
CONFIG_I2C_AMD8111=m
|
||||
CONFIG_I2C_I801=m
|
||||
CONFIG_I2C_ISCH=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
# CONFIG_I2C_SIS5595 is not set
|
||||
# CONFIG_I2C_SIS630 is not set
|
||||
|
||||
CONFIG_I2C_SIS96X=m
|
||||
CONFIG_I2C_VIA=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
|
||||
CONFIG_DELL_RBU=m
|
||||
CONFIG_DCDBAS=m
|
||||
|
||||
CONFIG_NVRAM=y
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_AMD76X=m
|
||||
CONFIG_EDAC_E7XXX=m
|
||||
CONFIG_EDAC_E752X=m
|
||||
CONFIG_EDAC_I5000=m
|
||||
CONFIG_EDAC_I5100=m
|
||||
CONFIG_EDAC_I5400=m
|
||||
CONFIG_EDAC_I82875P=m
|
||||
CONFIG_EDAC_I82860=m
|
||||
CONFIG_EDAC_I82975X=m
|
||||
CONFIG_EDAC_R82600=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_AMD64=m
|
||||
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
CONFIG_EDAC_I7CORE=m
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
|
||||
CONFIG_TCG_INFINEON=m
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
CONFIG_HW_RANDOM_VIA=m
|
||||
|
||||
# CONFIG_HW_RANDOM_GEODE is not set
|
||||
|
||||
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_NMI_TIMEOUT=5
|
||||
|
||||
CONFIG_GPIO_SCH=m
|
||||
# CONFIG_PC8736x_GPIO is not set
|
||||
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_HAVE_MEMORY_PRESENT=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
|
||||
# CONFIG_BLK_DEV_CMD640 is not set
|
||||
# CONFIG_BLK_DEV_RZ1000 is not set
|
||||
# CONFIG_BLK_DEV_TRIFLEX is not set
|
||||
# CONFIG_BLK_DEV_CS5520 is not set
|
||||
# CONFIG_BLK_DEV_CS5530 is not set
|
||||
# CONFIG_BLK_DEV_CS5535 is not set
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_SGI_IOC4=m
|
||||
CONFIG_SGI_XP=m
|
||||
CONFIG_SGI_GRU=m
|
||||
# CONFIG_SGI_GRU_DEBUG is not set
|
||||
|
||||
# CONFIG_SMSC37B787_WDT is not set
|
||||
CONFIG_W83697HF_WDT=m
|
||||
|
||||
# CONFIG_VIDEO_CAFE_CCIC is not set
|
||||
|
||||
CONFIG_MTD_ESB2ROM=m
|
||||
CONFIG_MTD_CK804XROM=m
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_CRASH=m
|
||||
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_ISCSI_IBFT_FIND=y
|
||||
CONFIG_ISCSI_IBFT=m
|
||||
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
CONFIG_KVM_AMD=m
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
# PARAVIRT_SPINLOCKS has a 5% perf hit
|
||||
# CONFIG_PARAVIRT_SPINLOCKS is not set
|
||||
CONFIG_KVM_CLOCK=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=32
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_SCRUB_PAGES=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_KBDDEV_FRONTEND=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_FRONTEND=m
|
||||
CONFIG_XENFS=m
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
CONFIG_XEN_DEV_EVTCHN=m
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_INTEL_IOATDMA=m
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
# CONFIG_CPA_DEBUG is not set
|
||||
|
||||
CONFIG_HP_WATCHDOG=m
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_NODES_SHIFT=9
|
||||
CONFIG_X86_PAT=y
|
||||
# FIXME: These should be 32bit only
|
||||
# CONFIG_FB_N411 is not set
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
CONFIG_DIRECT_GBPAGES=y
|
||||
|
||||
# CONFIG_NO_BOOTMEM is not set
|
||||
|
||||
# CONFIG_MEMTEST is not set
|
||||
CONFIG_AMD_IOMMU=y
|
||||
CONFIG_AMD_IOMMU_STATS=y
|
||||
# CONFIG_MAXSMP is not set
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_SYSPROF_TRACER=y
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
# CONFIG_MMIOTRACE_TEST is not set
|
||||
|
||||
CONFIG_X86_MPPARSE=y
|
||||
|
||||
CONFIG_BACKLIGHT_MBP_NVIDIA=m
|
||||
|
||||
CONFIG_OPROFILE_IBS=y
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
|
||||
CONFIG_X86_RESERVE_LOW_64K=y
|
||||
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
CONFIG_PANASONIC_LAPTOP=m
|
||||
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_X86_PTRACE_BTS=y
|
||||
|
||||
CONFIG_I7300_IDLE=m
|
||||
CONFIG_INTR_REMAP=y
|
||||
|
||||
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||
|
||||
CONFIG_POWER_TRACER=y
|
||||
CONFIG_HW_BRANCH_TRACER=y
|
||||
|
||||
CONFIG_X86_X2APIC=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
# CONFIG_IOMMU_STRESS is not set
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
|
||||
CONFIG_SFI=y
|
||||
CONFIG_INPUT_WINBOND_CIR=m
|
||||
CONFIG_I2C_SCMI=m
|
||||
CONFIG_SBC_FITPC2_WATCHDOG=m
|
||||
CONFIG_EDAC_I3200=m
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
CONFIG_INTEL_TXT=y
|
||||
CONFIG_GPIO_LANGWELL=y
|
||||
|
||||
CONFIG_FUNCTION_GRAPH_TRACER=y
|
||||
|
||||
CONFIG_ACPI_CMPC=m
|
||||
CONFIG_MSI_WMI=m
|
||||
CONFIG_TOSHIBA_BT_RFKILL=m
|
||||
# CONFIG_SAMSUNG_LAPTOP is not set
|
||||
|
||||
CONFIG_CS5535_MFGPT=m
|
||||
CONFIG_GEODE_WDT=m
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=m
|
||||
|
||||
CONFIG_X86_DECODER_SELFTEST=y
|
||||
|
||||
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
|
||||
|
||||
CONFIG_VGA_SWITCHEROO=y
|
||||
CONFIG_LPC_SCH=m
|
||||
|
||||
CONFIG_INTEL_IDLE=m
|
||||
CONFIG_I7300_IDLE=m
|
||||
|
||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
30
die-floppy-die.patch
Normal file
30
die-floppy-die.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 4ff58b642f80dedb20533978123d89b5ac9b1ed5 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Tue, 30 Mar 2010 00:04:29 -0400
|
||||
Subject: die-floppy-die
|
||||
|
||||
Kill the floppy.ko pnp modalias. We were surviving just fine without
|
||||
autoloading floppy drivers, tyvm.
|
||||
|
||||
Please feel free to register all complaints in the wastepaper bin.
|
||||
---
|
||||
drivers/block/floppy.c | 3 +--
|
||||
1 files changed, 1 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
|
||||
index 90c4038..f4a0b90 100644
|
||||
--- a/drivers/block/floppy.c
|
||||
+++ b/drivers/block/floppy.c
|
||||
@@ -4619,8 +4619,7 @@ static const struct pnp_device_id floppy_pnpids[] = {
|
||||
{"PNP0700", 0},
|
||||
{}
|
||||
};
|
||||
-
|
||||
-MODULE_DEVICE_TABLE(pnp, floppy_pnpids);
|
||||
+/* MODULE_DEVICE_TABLE(pnp, floppy_pnpids); */
|
||||
|
||||
#else
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
59
disable-i8042-check-on-apple-mac.patch
Normal file
59
disable-i8042-check-on-apple-mac.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 2a79554c864ac58fa2ad982f0fcee2cc2aa33eb5 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Thu, 20 May 2010 10:30:31 -0400
|
||||
Subject: Disable i8042 checks on Intel Apple Macs
|
||||
|
||||
As those computers never had any i8042 controllers, and the
|
||||
current lookup code could potentially lock up/hang/wait for
|
||||
timeout for long periods of time.
|
||||
|
||||
Fixes intermittent hangs on boot on a MacbookAir1,1
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
---
|
||||
drivers/input/serio/i8042.c | 22 ++++++++++++++++++++++
|
||||
1 files changed, 22 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
|
||||
index 6440a8f..4d7cf98 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -1451,6 +1451,22 @@ static struct platform_driver i8042_driver = {
|
||||
.shutdown = i8042_shutdown,
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_DMI
|
||||
+static struct dmi_system_id __initdata dmi_system_table[] = {
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BIOS_VENDOR, "Apple Computer, Inc.")
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BIOS_VENDOR, "Apple Inc.")
|
||||
+ },
|
||||
+ },
|
||||
+ {}
|
||||
+};
|
||||
+#endif /*CONFIG_DMI*/
|
||||
+
|
||||
static int __init i8042_init(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
@@ -1458,6 +1474,12 @@ static int __init i8042_init(void)
|
||||
|
||||
dbg_init();
|
||||
|
||||
+#ifdef CONFIG_DMI
|
||||
+ /* Intel Apple Macs never have an i8042 controller */
|
||||
+ if (dmi_check_system(dmi_system_table) > 0)
|
||||
+ return -ENODEV;
|
||||
+#endif /*CONFIG_DMI*/
|
||||
+
|
||||
err = i8042_platform_init();
|
||||
if (err)
|
||||
return err;
|
||||
--
|
||||
1.7.0.1
|
||||
|
16
drm-intel-big-hammer.patch
Normal file
16
drm-intel-big-hammer.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 37427e4..08af9db 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2553,6 +2553,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
|
||||
+ /* We don't get the flushing right for these chipsets, use the
|
||||
+ * big hamer for now to avoid random crashiness. */
|
||||
+ if (IS_I85X(dev) || IS_I865G(dev))
|
||||
+ wbinvd();
|
||||
+
|
||||
i915_verify_inactive(dev, __FILE__, __LINE__);
|
||||
|
||||
if (dev_priv->mm.wedged) {
|
19
drm-intel-make-lvds-work.patch
Normal file
19
drm-intel-make-lvds-work.patch
Normal file
@ -0,0 +1,19 @@
|
||||
diff -up linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c.orig linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c.orig 2010-03-31 16:59:39.901995671 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c 2010-03-31 17:01:05.416996744 -0400
|
||||
@@ -3757,7 +3757,6 @@ struct drm_crtc *intel_get_load_detect_p
|
||||
void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, int dpms_mode)
|
||||
{
|
||||
struct drm_encoder *encoder = &intel_encoder->enc;
|
||||
- struct drm_device *dev = encoder->dev;
|
||||
struct drm_crtc *crtc = encoder->crtc;
|
||||
struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
|
||||
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
|
||||
@@ -3767,7 +3766,6 @@ void intel_release_load_detect_pipe(stru
|
||||
intel_encoder->base.encoder = NULL;
|
||||
intel_encoder->load_detect_temp = false;
|
||||
crtc->enabled = drm_helper_crtc_in_use(crtc);
|
||||
- drm_helper_disable_unused_functions(dev);
|
||||
}
|
||||
|
||||
/* Switch crtc and output back off if necessary */
|
1
drm-intel-next.patch
Normal file
1
drm-intel-next.patch
Normal file
@ -0,0 +1 @@
|
||||
empty
|
6997
drm-nouveau-updates.patch
Normal file
6997
drm-nouveau-updates.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,958 @@
|
||||
From 5b904034b0ab5195d971b139d0c0b67ab21b063c Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@dreadnought.i.jkkm.org>
|
||||
Date: Mon, 21 Jun 2010 20:33:16 +0100
|
||||
Subject: Revert "drm/fbdev: rework output polling to be back in the core. (v4)"
|
||||
|
||||
This reverts commit eb1f8e4f3be898df808e2dfc131099f5831d491d.
|
||||
|
||||
Conflicts:
|
||||
|
||||
drivers/gpu/drm/drm_crtc_helper.c
|
||||
drivers/gpu/drm/i915/i915_dma.c
|
||||
drivers/gpu/drm/i915/intel_fb.c
|
||||
drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
||||
drivers/gpu/drm/radeon/radeon_fb.c
|
||||
include/drm/drm_crtc_helper.h
|
||||
---
|
||||
drivers/gpu/drm/Kconfig | 2 +-
|
||||
drivers/gpu/drm/drm_crtc_helper.c | 111 ------------------------
|
||||
drivers/gpu/drm/drm_fb_helper.c | 123 +++++++++++++++++++++++----
|
||||
drivers/gpu/drm/i915/i915_dma.c | 1 -
|
||||
drivers/gpu/drm/i915/i915_irq.c | 3 +-
|
||||
drivers/gpu/drm/i915/intel_crt.c | 5 -
|
||||
drivers/gpu/drm/i915/intel_display.c | 2 -
|
||||
drivers/gpu/drm/i915/intel_dp.c | 2 -
|
||||
drivers/gpu/drm/i915/intel_drv.h | 2 +-
|
||||
drivers/gpu/drm/i915/intel_fb.c | 14 ++--
|
||||
drivers/gpu/drm/i915/intel_hdmi.c | 1 -
|
||||
drivers/gpu/drm/i915/intel_sdvo.c | 2 -
|
||||
drivers/gpu/drm/nouveau/nouveau_connector.c | 12 ---
|
||||
drivers/gpu/drm/nouveau/nouveau_display.c | 1 -
|
||||
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 13 ++-
|
||||
drivers/gpu/drm/nouveau/nouveau_fbcon.h | 2 +-
|
||||
drivers/gpu/drm/nouveau/nouveau_state.c | 5 +-
|
||||
drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
|
||||
drivers/gpu/drm/radeon/radeon_connectors.c | 13 ---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 10 --
|
||||
drivers/gpu/drm/radeon/radeon_fb.c | 15 +++-
|
||||
drivers/gpu/drm/radeon/radeon_irq_kms.c | 5 +-
|
||||
drivers/gpu/drm/radeon/radeon_mode.h | 3 +-
|
||||
include/drm/drm_crtc.h | 17 ----
|
||||
include/drm/drm_crtc_helper.h | 6 --
|
||||
include/drm/drm_fb_helper.h | 13 +++-
|
||||
26 files changed, 155 insertions(+), 230 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
|
||||
index c2711c6..a51a1e4 100644
|
||||
--- a/drivers/gpu/drm/Kconfig
|
||||
+++ b/drivers/gpu/drm/Kconfig
|
||||
@@ -9,7 +9,6 @@ menuconfig DRM
|
||||
depends on (AGP || AGP=n) && PCI && !EMULATED_CMPXCHG && MMU
|
||||
select I2C
|
||||
select I2C_ALGOBIT
|
||||
- select SLOW_WORK
|
||||
help
|
||||
Kernel-level support for the Direct Rendering Infrastructure (DRI)
|
||||
introduced in XFree86 4.0. If you say Y here, you need to select
|
||||
@@ -24,6 +23,7 @@ config DRM_KMS_HELPER
|
||||
depends on DRM
|
||||
select FB
|
||||
select FRAMEBUFFER_CONSOLE if !EMBEDDED
|
||||
+ select SLOW_WORK
|
||||
help
|
||||
FB and CRTC helpers for KMS drivers.
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
|
||||
index 9b2a541..b142ac2 100644
|
||||
--- a/drivers/gpu/drm/drm_crtc_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_crtc_helper.c
|
||||
@@ -807,114 +807,3 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_helper_resume_force_mode);
|
||||
-
|
||||
-static struct slow_work_ops output_poll_ops;
|
||||
-
|
||||
-#define DRM_OUTPUT_POLL_PERIOD (10*HZ)
|
||||
-static void output_poll_execute(struct slow_work *work)
|
||||
-{
|
||||
- struct delayed_slow_work *delayed_work = container_of(work, struct delayed_slow_work, work);
|
||||
- struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.output_poll_slow_work);
|
||||
- struct drm_connector *connector;
|
||||
- enum drm_connector_status old_status, status;
|
||||
- bool repoll = false, changed = false;
|
||||
- int ret;
|
||||
-
|
||||
- mutex_lock(&dev->mode_config.mutex);
|
||||
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
|
||||
-
|
||||
- /* if this is HPD or polled don't check it -
|
||||
- TV out for instance */
|
||||
- if (!connector->polled)
|
||||
- continue;
|
||||
-
|
||||
- else if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT))
|
||||
- repoll = true;
|
||||
-
|
||||
- old_status = connector->status;
|
||||
- /* if we are connected and don't want to poll for disconnect
|
||||
- skip it */
|
||||
- if (old_status == connector_status_connected &&
|
||||
- !(connector->polled & DRM_CONNECTOR_POLL_DISCONNECT) &&
|
||||
- !(connector->polled & DRM_CONNECTOR_POLL_HPD))
|
||||
- continue;
|
||||
-
|
||||
- status = connector->funcs->detect(connector);
|
||||
- if (old_status != status)
|
||||
- changed = true;
|
||||
- }
|
||||
-
|
||||
- mutex_unlock(&dev->mode_config.mutex);
|
||||
-
|
||||
- if (changed) {
|
||||
- /* send a uevent + call fbdev */
|
||||
- drm_sysfs_hotplug_event(dev);
|
||||
- if (dev->mode_config.funcs->output_poll_changed)
|
||||
- dev->mode_config.funcs->output_poll_changed(dev);
|
||||
- }
|
||||
-
|
||||
- if (repoll) {
|
||||
- ret = delayed_slow_work_enqueue(delayed_work, DRM_OUTPUT_POLL_PERIOD);
|
||||
- if (ret)
|
||||
- DRM_ERROR("delayed enqueue failed %d\n", ret);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-void drm_kms_helper_poll_disable(struct drm_device *dev)
|
||||
-{
|
||||
- if (!dev->mode_config.poll_enabled)
|
||||
- return;
|
||||
- delayed_slow_work_cancel(&dev->mode_config.output_poll_slow_work);
|
||||
-}
|
||||
-EXPORT_SYMBOL(drm_kms_helper_poll_disable);
|
||||
-
|
||||
-void drm_kms_helper_poll_enable(struct drm_device *dev)
|
||||
-{
|
||||
- bool poll = false;
|
||||
- struct drm_connector *connector;
|
||||
- int ret;
|
||||
-
|
||||
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
|
||||
- if (connector->polled)
|
||||
- poll = true;
|
||||
- }
|
||||
-
|
||||
- if (poll) {
|
||||
- ret = delayed_slow_work_enqueue(&dev->mode_config.output_poll_slow_work, DRM_OUTPUT_POLL_PERIOD);
|
||||
- if (ret)
|
||||
- DRM_ERROR("delayed enqueue failed %d\n", ret);
|
||||
- }
|
||||
-}
|
||||
-EXPORT_SYMBOL(drm_kms_helper_poll_enable);
|
||||
-
|
||||
-void drm_kms_helper_poll_init(struct drm_device *dev)
|
||||
-{
|
||||
- slow_work_register_user(THIS_MODULE);
|
||||
- delayed_slow_work_init(&dev->mode_config.output_poll_slow_work,
|
||||
- &output_poll_ops);
|
||||
- dev->mode_config.poll_enabled = true;
|
||||
-
|
||||
- drm_kms_helper_poll_enable(dev);
|
||||
-}
|
||||
-EXPORT_SYMBOL(drm_kms_helper_poll_init);
|
||||
-
|
||||
-void drm_kms_helper_poll_fini(struct drm_device *dev)
|
||||
-{
|
||||
- drm_kms_helper_poll_disable(dev);
|
||||
- slow_work_unregister_user(THIS_MODULE);
|
||||
-}
|
||||
-EXPORT_SYMBOL(drm_kms_helper_poll_fini);
|
||||
-
|
||||
-void drm_helper_hpd_irq_event(struct drm_device *dev)
|
||||
-{
|
||||
- if (!dev->mode_config.poll_enabled)
|
||||
- return;
|
||||
- delayed_slow_work_cancel(&dev->mode_config.output_poll_slow_work);
|
||||
- /* schedule a slow work asap */
|
||||
- delayed_slow_work_enqueue(&dev->mode_config.output_poll_slow_work, 0);
|
||||
-}
|
||||
-EXPORT_SYMBOL(drm_helper_hpd_irq_event);
|
||||
-
|
||||
-static struct slow_work_ops output_poll_ops = {
|
||||
- .execute = output_poll_execute,
|
||||
-};
|
||||
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
|
||||
index 08c4c92..dcc6601 100644
|
||||
--- a/drivers/gpu/drm/drm_fb_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_fb_helper.c
|
||||
@@ -42,6 +42,8 @@ MODULE_LICENSE("GPL and additional rights");
|
||||
|
||||
static LIST_HEAD(kernel_fb_helper_list);
|
||||
|
||||
+static struct slow_work_ops output_status_change_ops;
|
||||
+
|
||||
/* simple single crtc case helper function */
|
||||
int drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper)
|
||||
{
|
||||
@@ -423,13 +425,19 @@ static void drm_fb_helper_crtc_free(struct drm_fb_helper *helper)
|
||||
|
||||
int drm_fb_helper_init(struct drm_device *dev,
|
||||
struct drm_fb_helper *fb_helper,
|
||||
- int crtc_count, int max_conn_count)
|
||||
+ int crtc_count, int max_conn_count,
|
||||
+ bool polled)
|
||||
{
|
||||
struct drm_crtc *crtc;
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
fb_helper->dev = dev;
|
||||
+ fb_helper->poll_enabled = polled;
|
||||
+
|
||||
+ slow_work_register_user(THIS_MODULE);
|
||||
+ delayed_slow_work_init(&fb_helper->output_status_change_slow_work,
|
||||
+ &output_status_change_ops);
|
||||
|
||||
INIT_LIST_HEAD(&fb_helper->kernel_fb_list);
|
||||
|
||||
@@ -486,6 +494,8 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper)
|
||||
|
||||
drm_fb_helper_crtc_free(fb_helper);
|
||||
|
||||
+ delayed_slow_work_cancel(&fb_helper->output_status_change_slow_work);
|
||||
+ slow_work_unregister_user(THIS_MODULE);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_fini);
|
||||
|
||||
@@ -703,7 +713,7 @@ int drm_fb_helper_set_par(struct fb_info *info)
|
||||
|
||||
if (fb_helper->delayed_hotplug) {
|
||||
fb_helper->delayed_hotplug = false;
|
||||
- drm_fb_helper_hotplug_event(fb_helper);
|
||||
+ delayed_slow_work_enqueue(&fb_helper->output_status_change_slow_work, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -816,7 +826,7 @@ int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
|
||||
if (crtc_count == 0 || sizes.fb_width == -1 || sizes.fb_height == -1) {
|
||||
/* hmm everyone went away - assume VGA cable just fell out
|
||||
and will come back later. */
|
||||
- DRM_INFO("Cannot find any crtc or sizes - going 1024x768\n");
|
||||
+ DRM_ERROR("Cannot find any crtc or sizes - going 1024x768\n");
|
||||
sizes.fb_width = sizes.surface_width = 1024;
|
||||
sizes.fb_height = sizes.surface_height = 768;
|
||||
}
|
||||
@@ -1362,7 +1372,12 @@ bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel)
|
||||
* we shouldn't end up with no modes here.
|
||||
*/
|
||||
if (count == 0) {
|
||||
- printk(KERN_INFO "No connectors reported connected with modes\n");
|
||||
+ if (fb_helper->poll_enabled) {
|
||||
+ delayed_slow_work_enqueue(&fb_helper->output_status_change_slow_work,
|
||||
+ 5*HZ);
|
||||
+ printk(KERN_INFO "No connectors reported connected with modes - started polling\n");
|
||||
+ } else
|
||||
+ printk(KERN_INFO "No connectors reported connected with modes\n");
|
||||
}
|
||||
drm_setup_crtcs(fb_helper);
|
||||
|
||||
@@ -1370,16 +1385,71 @@ bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_initial_config);
|
||||
|
||||
-bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)
|
||||
+/* we got a hotplug irq - need to update fbcon */
|
||||
+void drm_helper_fb_hpd_irq_event(struct drm_fb_helper *fb_helper)
|
||||
+{
|
||||
+ /* if we don't have the fbdev registered yet do nothing */
|
||||
+ if (!fb_helper->fbdev)
|
||||
+ return;
|
||||
+
|
||||
+ /* schedule a slow work asap */
|
||||
+ delayed_slow_work_enqueue(&fb_helper->output_status_change_slow_work, 0);
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_helper_fb_hpd_irq_event);
|
||||
+
|
||||
+bool drm_helper_fb_hotplug_event(struct drm_fb_helper *fb_helper, bool polled)
|
||||
{
|
||||
int count = 0;
|
||||
+ int ret;
|
||||
u32 max_width, max_height, bpp_sel;
|
||||
- bool bound = false, crtcs_bound = false;
|
||||
- struct drm_crtc *crtc;
|
||||
|
||||
if (!fb_helper->fb)
|
||||
return false;
|
||||
+ DRM_DEBUG_KMS("\n");
|
||||
+
|
||||
+ max_width = fb_helper->fb->width;
|
||||
+ max_height = fb_helper->fb->height;
|
||||
+ bpp_sel = fb_helper->fb->bits_per_pixel;
|
||||
+
|
||||
+ count = drm_fb_helper_probe_connector_modes(fb_helper, max_width,
|
||||
+ max_height);
|
||||
+ if (fb_helper->poll_enabled && !polled) {
|
||||
+ if (count) {
|
||||
+ delayed_slow_work_cancel(&fb_helper->output_status_change_slow_work);
|
||||
+ } else {
|
||||
+ ret = delayed_slow_work_enqueue(&fb_helper->output_status_change_slow_work, 5*HZ);
|
||||
+ }
|
||||
+ }
|
||||
+ drm_setup_crtcs(fb_helper);
|
||||
+
|
||||
+ return drm_fb_helper_single_fb_probe(fb_helper, bpp_sel);
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_helper_fb_hotplug_event);
|
||||
+
|
||||
+/*
|
||||
+ * delayed work queue execution function
|
||||
+ * - check if fbdev is actually in use on the gpu
|
||||
+ * - if not set delayed flag and repoll if necessary
|
||||
+ * - check for connector status change
|
||||
+ * - repoll if 0 modes found
|
||||
+ *- call driver output status changed notifier
|
||||
+ */
|
||||
+static void output_status_change_execute(struct slow_work *work)
|
||||
+{
|
||||
+ struct delayed_slow_work *delayed_work = container_of(work, struct delayed_slow_work, work);
|
||||
+ struct drm_fb_helper *fb_helper = container_of(delayed_work, struct drm_fb_helper, output_status_change_slow_work);
|
||||
+ struct drm_connector *connector;
|
||||
+ enum drm_connector_status old_status, status;
|
||||
+ bool repoll, changed = false;
|
||||
+ int ret;
|
||||
+ int i;
|
||||
+ bool bound = false, crtcs_bound = false;
|
||||
+ struct drm_crtc *crtc;
|
||||
|
||||
+ repoll = fb_helper->poll_enabled;
|
||||
+
|
||||
+ /* first of all check the fbcon framebuffer is actually bound to any crtc */
|
||||
+ /* take into account that no crtc at all maybe bound */
|
||||
list_for_each_entry(crtc, &fb_helper->dev->mode_config.crtc_list, head) {
|
||||
if (crtc->fb)
|
||||
crtcs_bound = true;
|
||||
@@ -1387,21 +1457,38 @@ bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)
|
||||
bound = true;
|
||||
}
|
||||
|
||||
- if (!bound && crtcs_bound) {
|
||||
+ if (bound == false && crtcs_bound) {
|
||||
fb_helper->delayed_hotplug = true;
|
||||
- return false;
|
||||
+ goto requeue;
|
||||
}
|
||||
- DRM_DEBUG_KMS("\n");
|
||||
|
||||
- max_width = fb_helper->fb->width;
|
||||
- max_height = fb_helper->fb->height;
|
||||
- bpp_sel = fb_helper->fb->bits_per_pixel;
|
||||
+ for (i = 0; i < fb_helper->connector_count; i++) {
|
||||
+ connector = fb_helper->connector_info[i]->connector;
|
||||
+ old_status = connector->status;
|
||||
+ status = connector->funcs->detect(connector);
|
||||
+ if (old_status != status) {
|
||||
+ changed = true;
|
||||
+ }
|
||||
+ if (status == connector_status_connected && repoll) {
|
||||
+ DRM_DEBUG("%s is connected - stop polling\n", drm_get_connector_name(connector));
|
||||
+ repoll = false;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- count = drm_fb_helper_probe_connector_modes(fb_helper, max_width,
|
||||
- max_height);
|
||||
- drm_setup_crtcs(fb_helper);
|
||||
+ if (changed) {
|
||||
+ if (fb_helper->funcs->fb_output_status_changed)
|
||||
+ fb_helper->funcs->fb_output_status_changed(fb_helper);
|
||||
+ }
|
||||
|
||||
- return drm_fb_helper_single_fb_probe(fb_helper, bpp_sel);
|
||||
+requeue:
|
||||
+ if (repoll) {
|
||||
+ ret = delayed_slow_work_enqueue(delayed_work, 5*HZ);
|
||||
+ if (ret)
|
||||
+ DRM_ERROR("delayed enqueue failed %d\n", ret);
|
||||
+ }
|
||||
}
|
||||
-EXPORT_SYMBOL(drm_fb_helper_hotplug_event);
|
||||
+
|
||||
+static struct slow_work_ops output_status_change_ops = {
|
||||
+ .execute = output_status_change_execute,
|
||||
+};
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
|
||||
index 59a2bf8..76ace2d 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_dma.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_dma.c
|
||||
@@ -1430,7 +1430,6 @@ static int i915_load_modeset_init(struct drm_device *dev,
|
||||
if (ret)
|
||||
goto cleanup_irq;
|
||||
|
||||
- drm_kms_helper_poll_init(dev);
|
||||
return 0;
|
||||
|
||||
cleanup_irq:
|
||||
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
|
||||
index 2479be0..6350bd3 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_irq.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_irq.c
|
||||
@@ -271,7 +271,8 @@ static void i915_hotplug_work_func(struct work_struct *work)
|
||||
}
|
||||
}
|
||||
/* Just fire off a uevent and let userspace tell us what to do */
|
||||
- drm_helper_hpd_irq_event(dev);
|
||||
+ intelfb_hotplug(dev, false);
|
||||
+ drm_sysfs_hotplug_event(dev);
|
||||
}
|
||||
|
||||
static void i915_handle_rps_change(struct drm_device *dev)
|
||||
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
|
||||
index 22ff384..125eded 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_crt.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_crt.c
|
||||
@@ -584,10 +584,5 @@ void intel_crt_init(struct drm_device *dev)
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
|
||||
- if (I915_HAS_HOTPLUG(dev))
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
- else
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
-
|
||||
dev_priv->hotplug_supported_mask |= CRT_HOTPLUG_INT_STATUS;
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index d753257..70537cf 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -5036,7 +5036,6 @@ intel_user_framebuffer_create(struct drm_device *dev,
|
||||
|
||||
static const struct drm_mode_config_funcs intel_mode_funcs = {
|
||||
.fb_create = intel_user_framebuffer_create,
|
||||
- .output_poll_changed = intel_fb_output_poll_changed,
|
||||
};
|
||||
|
||||
static struct drm_gem_object *
|
||||
@@ -5538,7 +5537,6 @@ void intel_modeset_cleanup(struct drm_device *dev)
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
|
||||
- drm_kms_helper_poll_fini(dev);
|
||||
intel_fbdev_fini(dev);
|
||||
|
||||
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
||||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 49b54f0..1815df5 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -1393,8 +1393,6 @@ intel_dp_init(struct drm_device *dev, int output_reg)
|
||||
DRM_MODE_CONNECTOR_DisplayPort);
|
||||
drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs);
|
||||
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
-
|
||||
if (output_reg == DP_A)
|
||||
intel_encoder->type = INTEL_OUTPUT_EDP;
|
||||
else
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index df931f7..3230e8d 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -235,5 +235,5 @@ extern int intel_overlay_put_image(struct drm_device *dev, void *data,
|
||||
extern int intel_overlay_attrs(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
-extern void intel_fb_output_poll_changed(struct drm_device *dev);
|
||||
+void intelfb_hotplug(struct drm_device *dev, bool polled);
|
||||
#endif /* __INTEL_DRV_H__ */
|
||||
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
|
||||
index c3c5052..79098b3 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_fb.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_fb.c
|
||||
@@ -211,6 +211,12 @@ static int intel_fb_find_or_create_single(struct drm_fb_helper *helper,
|
||||
return new_fb;
|
||||
}
|
||||
|
||||
+void intelfb_hotplug(struct drm_device *dev, bool polled)
|
||||
+{
|
||||
+ drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
+ drm_helper_fb_hpd_irq_event(&dev_priv->fbdev->helper);
|
||||
+}
|
||||
+
|
||||
static struct drm_fb_helper_funcs intel_fb_helper_funcs = {
|
||||
.gamma_set = intel_crtc_fb_gamma_set,
|
||||
.gamma_get = intel_crtc_fb_gamma_get,
|
||||
@@ -256,7 +262,7 @@ int intel_fbdev_init(struct drm_device *dev)
|
||||
|
||||
ret = drm_fb_helper_init(dev, &ifbdev->helper,
|
||||
dev_priv->num_pipe,
|
||||
- INTELFB_CONN_LIMIT);
|
||||
+ INTELFB_CONN_LIMIT, false);
|
||||
if (ret) {
|
||||
kfree(ifbdev);
|
||||
return ret;
|
||||
@@ -278,9 +284,3 @@ void intel_fbdev_fini(struct drm_device *dev)
|
||||
dev_priv->fbdev = NULL;
|
||||
}
|
||||
MODULE_LICENSE("GPL and additional rights");
|
||||
-
|
||||
-void intel_fb_output_poll_changed(struct drm_device *dev)
|
||||
-{
|
||||
- drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
- drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
|
||||
-}
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index 83bd764..acaca07 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -240,7 +240,6 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
|
||||
|
||||
intel_encoder->type = INTEL_OUTPUT_HDMI;
|
||||
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
connector->interlace_allowed = 0;
|
||||
connector->doublescan_allowed = 0;
|
||||
intel_encoder->crtc_mask = (1 << 0) | (1 << 1);
|
||||
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
index 76993ac..1c716b5 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
@@ -2218,7 +2218,6 @@ intel_sdvo_dvi_init(struct intel_encoder *intel_encoder, int device)
|
||||
}
|
||||
|
||||
connector = &intel_connector->base;
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
|
||||
encoder->encoder_type = DRM_MODE_ENCODER_TMDS;
|
||||
connector->connector_type = DRM_MODE_CONNECTOR_DVID;
|
||||
|
||||
@@ -2285,7 +2284,6 @@ intel_sdvo_analog_init(struct intel_encoder *intel_encoder, int device)
|
||||
return false;
|
||||
|
||||
connector = &intel_connector->base;
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
encoder->encoder_type = DRM_MODE_ENCODER_DAC;
|
||||
connector->connector_type = DRM_MODE_CONNECTOR_VGA;
|
||||
sdvo_connector = intel_connector->dev_priv;
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
index 149ed22..9a61f3c 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
@@ -846,7 +846,6 @@ nouveau_connector_create(struct drm_device *dev,
|
||||
|
||||
switch (dcb->type) {
|
||||
case DCB_CONNECTOR_VGA:
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
if (dev_priv->card_type >= NV_50) {
|
||||
drm_connector_attach_property(connector,
|
||||
dev->mode_config.scaling_mode_property,
|
||||
@@ -858,17 +857,6 @@ nouveau_connector_create(struct drm_device *dev,
|
||||
case DCB_CONNECTOR_TV_3:
|
||||
nv_connector->scaling_mode = DRM_MODE_SCALE_NONE;
|
||||
break;
|
||||
- case DCB_CONNECTOR_DP:
|
||||
- case DCB_CONNECTOR_eDP:
|
||||
- case DCB_CONNECTOR_HDMI_0:
|
||||
- case DCB_CONNECTOR_HDMI_1:
|
||||
- case DCB_CONNECTOR_DVI_I:
|
||||
- case DCB_CONNECTOR_DVI_D:
|
||||
- if (dev_priv->card_type >= NV_50)
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
- else
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
- /* fall-through */
|
||||
default:
|
||||
nv_connector->scaling_mode = DRM_MODE_SCALE_FULLSCREEN;
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
|
||||
index 74e6b4e..9d7928f 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
|
||||
@@ -101,6 +101,5 @@ nouveau_user_framebuffer_create(struct drm_device *dev,
|
||||
|
||||
const struct drm_mode_config_funcs nouveau_mode_config_funcs = {
|
||||
.fb_create = nouveau_user_framebuffer_create,
|
||||
- .output_poll_changed = nouveau_fbcon_output_poll_changed,
|
||||
};
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
||||
index c9a4a0d..0a59f96 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
||||
@@ -326,11 +326,15 @@ nouveau_fbcon_find_or_create_single(struct drm_fb_helper *helper,
|
||||
return new_fb;
|
||||
}
|
||||
|
||||
-void
|
||||
-nouveau_fbcon_output_poll_changed(struct drm_device *dev)
|
||||
+void nouveau_fbcon_hotplug(struct drm_device *dev)
|
||||
{
|
||||
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||
- drm_fb_helper_hotplug_event(&dev_priv->nfbdev->helper);
|
||||
+ drm_helper_fb_hpd_irq_event(&dev_priv->nfbdev->helper);
|
||||
+}
|
||||
+
|
||||
+static void nouveau_fbcon_output_status_changed(struct drm_fb_helper *fb_helper)
|
||||
+{
|
||||
+ drm_helper_fb_hotplug_event(fb_helper, true);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -370,6 +374,7 @@ static struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = {
|
||||
.gamma_set = nouveau_fbcon_gamma_set,
|
||||
.gamma_get = nouveau_fbcon_gamma_get,
|
||||
.fb_probe = nouveau_fbcon_find_or_create_single,
|
||||
+ .fb_output_status_changed = nouveau_fbcon_output_status_changed,
|
||||
};
|
||||
|
||||
|
||||
@@ -387,7 +392,7 @@ int nouveau_fbcon_init(struct drm_device *dev)
|
||||
dev_priv->nfbdev = nfbdev;
|
||||
nfbdev->helper.funcs = &nouveau_fbcon_helper_funcs;
|
||||
|
||||
- ret = drm_fb_helper_init(dev, &nfbdev->helper, 2, 4);
|
||||
+ ret = drm_fb_helper_init(dev, &nfbdev->helper, 2, 4, true);
|
||||
if (ret) {
|
||||
kfree(nfbdev);
|
||||
return ret;
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.h b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
|
||||
index e7e1268..bf8e00d 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.h
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
|
||||
@@ -58,6 +58,6 @@ void nouveau_fbcon_zfill_all(struct drm_device *dev);
|
||||
void nouveau_fbcon_save_disable_accel(struct drm_device *dev);
|
||||
void nouveau_fbcon_restore_accel(struct drm_device *dev);
|
||||
|
||||
-void nouveau_fbcon_output_poll_changed(struct drm_device *dev);
|
||||
+void nouveau_fbcon_hotplug(struct drm_device *dev);
|
||||
#endif /* __NV50_FBCON_H__ */
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
index b02a231..4dcb976 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
@@ -519,10 +519,8 @@ nouveau_card_init(struct drm_device *dev)
|
||||
|
||||
dev_priv->init_state = NOUVEAU_CARD_INIT_DONE;
|
||||
|
||||
- if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
||||
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
nouveau_fbcon_init(dev);
|
||||
- drm_kms_helper_poll_init(dev);
|
||||
- }
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -844,7 +842,6 @@ int nouveau_unload(struct drm_device *dev)
|
||||
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||
|
||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
||||
- drm_kms_helper_poll_fini(dev);
|
||||
nouveau_fbcon_fini(dev);
|
||||
if (dev_priv->card_type >= NV_50)
|
||||
nv50_display_destroy(dev);
|
||||
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
|
||||
index 580a5d1..e6a44af 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nv50_display.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
|
||||
@@ -980,7 +980,7 @@ nv50_display_irq_hotplug_bh(struct work_struct *work)
|
||||
if (dev_priv->chipset >= 0x90)
|
||||
nv_wr32(dev, 0xe074, nv_rd32(dev, 0xe074));
|
||||
|
||||
- drm_helper_hpd_irq_event(dev);
|
||||
+ nouveau_fbcon_hotplug(dev);
|
||||
}
|
||||
|
||||
void
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
|
||||
index 0c7ccc6..40a24c9 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
|
||||
@@ -1085,7 +1085,6 @@ radeon_add_atom_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.load_detect_property,
|
||||
1);
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVIA:
|
||||
drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
|
||||
@@ -1212,12 +1211,6 @@ radeon_add_atom_connector(struct drm_device *dev,
|
||||
break;
|
||||
}
|
||||
|
||||
- if (hpd->hpd == RADEON_HPD_NONE) {
|
||||
- if (i2c_bus->valid)
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
- } else
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
-
|
||||
connector->display_info.subpixel_order = subpixel_order;
|
||||
drm_sysfs_connector_add(connector);
|
||||
return;
|
||||
@@ -1279,7 +1272,6 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.load_detect_property,
|
||||
1);
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVIA:
|
||||
drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
|
||||
@@ -1348,11 +1340,6 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
||||
break;
|
||||
}
|
||||
|
||||
- if (hpd->hpd == RADEON_HPD_NONE) {
|
||||
- if (i2c_bus->valid)
|
||||
- connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
- } else
|
||||
- connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
connector->display_info.subpixel_order = subpixel_order;
|
||||
drm_sysfs_connector_add(connector);
|
||||
return;
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index c73444a..ed756be 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -887,15 +887,8 @@ radeon_user_framebuffer_create(struct drm_device *dev,
|
||||
return &radeon_fb->base;
|
||||
}
|
||||
|
||||
-static void radeon_output_poll_changed(struct drm_device *dev)
|
||||
-{
|
||||
- struct radeon_device *rdev = dev->dev_private;
|
||||
- radeon_fb_output_poll_changed(rdev);
|
||||
-}
|
||||
-
|
||||
static const struct drm_mode_config_funcs radeon_mode_funcs = {
|
||||
.fb_create = radeon_user_framebuffer_create,
|
||||
- .output_poll_changed = radeon_output_poll_changed
|
||||
};
|
||||
|
||||
struct drm_prop_enum_list {
|
||||
@@ -1044,8 +1037,6 @@ int radeon_modeset_init(struct radeon_device *rdev)
|
||||
radeon_pm_init(rdev);
|
||||
|
||||
radeon_fbdev_init(rdev);
|
||||
- drm_kms_helper_poll_init(rdev->ddev);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1058,7 +1049,6 @@ void radeon_modeset_fini(struct radeon_device *rdev)
|
||||
radeon_pm_fini(rdev);
|
||||
|
||||
if (rdev->mode_info.mode_config_initialized) {
|
||||
- drm_kms_helper_poll_fini(rdev->ddev);
|
||||
radeon_hpd_fini(rdev);
|
||||
drm_mode_config_cleanup(rdev->ddev);
|
||||
rdev->mode_info.mode_config_initialized = false;
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
|
||||
index dc1634b..7dc38f6 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_fb.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_fb.c
|
||||
@@ -316,9 +316,16 @@ int radeon_parse_options(char *options)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-void radeon_fb_output_poll_changed(struct radeon_device *rdev)
|
||||
+void radeonfb_hotplug(struct drm_device *dev, bool polled)
|
||||
{
|
||||
- drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper);
|
||||
+ struct radeon_device *rdev = dev->dev_private;
|
||||
+
|
||||
+ drm_helper_fb_hpd_irq_event(&rdev->mode_info.rfbdev->helper);
|
||||
+}
|
||||
+
|
||||
+static void radeon_fb_output_status_changed(struct drm_fb_helper *fb_helper)
|
||||
+{
|
||||
+ drm_helper_fb_hotplug_event(fb_helper, true);
|
||||
}
|
||||
|
||||
static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfbdev)
|
||||
@@ -357,6 +364,7 @@ static struct drm_fb_helper_funcs radeon_fb_helper_funcs = {
|
||||
.gamma_set = radeon_crtc_fb_gamma_set,
|
||||
.gamma_get = radeon_crtc_fb_gamma_get,
|
||||
.fb_probe = radeon_fb_find_or_create_single,
|
||||
+ .fb_output_status_changed = radeon_fb_output_status_changed,
|
||||
};
|
||||
|
||||
int radeon_fbdev_init(struct radeon_device *rdev)
|
||||
@@ -379,7 +387,7 @@ int radeon_fbdev_init(struct radeon_device *rdev)
|
||||
|
||||
ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper,
|
||||
rdev->num_crtc,
|
||||
- RADEONFB_CONN_LIMIT);
|
||||
+ RADEONFB_CONN_LIMIT, true);
|
||||
if (ret) {
|
||||
kfree(rfbdev);
|
||||
return ret;
|
||||
@@ -388,6 +396,7 @@ int radeon_fbdev_init(struct radeon_device *rdev)
|
||||
drm_fb_helper_single_add_all_connectors(&rfbdev->helper);
|
||||
drm_fb_helper_initial_config(&rfbdev->helper, bpp_sel);
|
||||
return 0;
|
||||
+
|
||||
}
|
||||
|
||||
void radeon_fbdev_fini(struct radeon_device *rdev)
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
|
||||
index 059bfa4..b0178de 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
|
||||
@@ -26,7 +26,6 @@
|
||||
* Jerome Glisse
|
||||
*/
|
||||
#include "drmP.h"
|
||||
-#include "drm_crtc_helper.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_reg.h"
|
||||
#include "radeon.h"
|
||||
@@ -56,7 +55,9 @@ static void radeon_hotplug_work_func(struct work_struct *work)
|
||||
radeon_connector_hotplug(connector);
|
||||
}
|
||||
/* Just fire off a uevent and let userspace tell us what to do */
|
||||
- drm_helper_hpd_irq_event(dev);
|
||||
+ radeonfb_hotplug(dev, false);
|
||||
+
|
||||
+ drm_sysfs_hotplug_event(dev);
|
||||
}
|
||||
|
||||
void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
|
||||
index 67358ba..fdd1611 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_mode.h
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
|
||||
@@ -588,6 +588,5 @@ void radeon_fbdev_fini(struct radeon_device *rdev);
|
||||
void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state);
|
||||
int radeon_fbdev_total_size(struct radeon_device *rdev);
|
||||
bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj);
|
||||
-
|
||||
-void radeon_fb_output_poll_changed(struct radeon_device *rdev);
|
||||
+void radeonfb_hotplug(struct drm_device *dev, bool polled);
|
||||
#endif
|
||||
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
|
||||
index 93a1a31..a7148d2 100644
|
||||
--- a/include/drm/drm_crtc.h
|
||||
+++ b/include/drm/drm_crtc.h
|
||||
@@ -31,7 +31,6 @@
|
||||
#include <linux/idr.h>
|
||||
|
||||
#include <linux/fb.h>
|
||||
-#include <linux/slow-work.h>
|
||||
|
||||
struct drm_device;
|
||||
struct drm_mode_set;
|
||||
@@ -461,15 +460,6 @@ enum drm_connector_force {
|
||||
DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
|
||||
};
|
||||
|
||||
-/* should we poll this connector for connects and disconnects */
|
||||
-/* hot plug detectable */
|
||||
-#define DRM_CONNECTOR_POLL_HPD (1 << 0)
|
||||
-/* poll for connections */
|
||||
-#define DRM_CONNECTOR_POLL_CONNECT (1 << 1)
|
||||
-/* can cleanly poll for disconnections without flickering the screen */
|
||||
-/* DACs should rarely do this without a lot of testing */
|
||||
-#define DRM_CONNECTOR_POLL_DISCONNECT (1 << 2)
|
||||
-
|
||||
/**
|
||||
* drm_connector - central DRM connector control structure
|
||||
* @crtc: CRTC this connector is currently connected to, NULL if none
|
||||
@@ -514,8 +504,6 @@ struct drm_connector {
|
||||
u32 property_ids[DRM_CONNECTOR_MAX_PROPERTY];
|
||||
uint64_t property_values[DRM_CONNECTOR_MAX_PROPERTY];
|
||||
|
||||
- uint8_t polled; /* DRM_CONNECTOR_POLL_* */
|
||||
-
|
||||
/* requested DPMS state */
|
||||
int dpms;
|
||||
|
||||
@@ -555,7 +543,6 @@ struct drm_mode_set {
|
||||
*/
|
||||
struct drm_mode_config_funcs {
|
||||
struct drm_framebuffer *(*fb_create)(struct drm_device *dev, struct drm_file *file_priv, struct drm_mode_fb_cmd *mode_cmd);
|
||||
- void (*output_poll_changed)(struct drm_device *dev);
|
||||
};
|
||||
|
||||
struct drm_mode_group {
|
||||
@@ -593,10 +580,6 @@ struct drm_mode_config {
|
||||
struct drm_mode_config_funcs *funcs;
|
||||
resource_size_t fb_base;
|
||||
|
||||
- /* output poll support */
|
||||
- bool poll_enabled;
|
||||
- struct delayed_slow_work output_poll_slow_work;
|
||||
-
|
||||
/* pointers to standard properties */
|
||||
struct list_head property_blob_list;
|
||||
struct drm_property *edid_property;
|
||||
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
|
||||
index 1121f77..b1fa0f8 100644
|
||||
--- a/include/drm/drm_crtc_helper.h
|
||||
+++ b/include/drm/drm_crtc_helper.h
|
||||
@@ -127,10 +127,4 @@ static inline void drm_connector_helper_add(struct drm_connector *connector,
|
||||
}
|
||||
|
||||
extern int drm_helper_resume_force_mode(struct drm_device *dev);
|
||||
-extern void drm_kms_helper_poll_init(struct drm_device *dev);
|
||||
-extern void drm_kms_helper_poll_fini(struct drm_device *dev);
|
||||
-extern void drm_helper_hpd_irq_event(struct drm_device *dev);
|
||||
-
|
||||
-extern void drm_kms_helper_poll_disable(struct drm_device *dev);
|
||||
-extern void drm_kms_helper_poll_enable(struct drm_device *dev);
|
||||
#endif
|
||||
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
|
||||
index f0a6afc..9b55a94 100644
|
||||
--- a/include/drm/drm_fb_helper.h
|
||||
+++ b/include/drm/drm_fb_helper.h
|
||||
@@ -30,6 +30,8 @@
|
||||
#ifndef DRM_FB_HELPER_H
|
||||
#define DRM_FB_HELPER_H
|
||||
|
||||
+#include <linux/slow-work.h>
|
||||
+
|
||||
struct drm_fb_helper;
|
||||
|
||||
struct drm_fb_helper_crtc {
|
||||
@@ -69,6 +71,9 @@ struct drm_fb_helper_funcs {
|
||||
|
||||
int (*fb_probe)(struct drm_fb_helper *helper,
|
||||
struct drm_fb_helper_surface_size *sizes);
|
||||
+
|
||||
+ void (*fb_output_status_changed)(struct drm_fb_helper *helper);
|
||||
+
|
||||
};
|
||||
|
||||
struct drm_fb_helper_connector {
|
||||
@@ -90,6 +95,8 @@ struct drm_fb_helper {
|
||||
u32 pseudo_palette[17];
|
||||
struct list_head kernel_fb_list;
|
||||
|
||||
+ struct delayed_slow_work output_status_change_slow_work;
|
||||
+ bool poll_enabled;
|
||||
/* we got a hotplug but fbdev wasn't running the console
|
||||
delay until next set_par */
|
||||
bool delayed_hotplug;
|
||||
@@ -100,7 +107,7 @@ int drm_fb_helper_single_fb_probe(struct drm_fb_helper *helper,
|
||||
|
||||
int drm_fb_helper_init(struct drm_device *dev,
|
||||
struct drm_fb_helper *helper, int crtc_count,
|
||||
- int max_conn);
|
||||
+ int max_conn, bool polled);
|
||||
void drm_fb_helper_fini(struct drm_fb_helper *helper);
|
||||
int drm_fb_helper_blank(int blank, struct fb_info *info);
|
||||
int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,
|
||||
@@ -123,8 +130,10 @@ void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch,
|
||||
|
||||
int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info);
|
||||
|
||||
-bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper);
|
||||
+bool drm_helper_fb_hotplug_event(struct drm_fb_helper *fb_helper,
|
||||
+ bool polled);
|
||||
bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel);
|
||||
int drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper);
|
||||
|
||||
+void drm_helper_fb_hpd_irq_event(struct drm_fb_helper *fb_helper);
|
||||
#endif
|
||||
--
|
||||
1.7.0.1
|
||||
|
44
find-provides
Executable file
44
find-provides
Executable file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# find-provides: munge the provides dependencies from the kabideps file
|
||||
#
|
||||
# This software may be freely redistributed under the terms of the GNU
|
||||
# General Public License (GPL).
|
||||
#
|
||||
# Takes a directory prefix, then outputs the kabideps file contents.
|
||||
|
||||
__author__ = "Jon Masters <jcm@redhat.com>"
|
||||
__version__ = "1.0"
|
||||
__date__ = "Tue 25 Jul 2006 04:00 GMT"
|
||||
__copyright__ = "Copyright (C) 2006 Red Hat, Inc"
|
||||
__license__ = "GPL"
|
||||
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
import sys
|
||||
|
||||
false = 0
|
||||
true = 1
|
||||
|
||||
kabideps=""
|
||||
|
||||
p = re.compile('^(.*)/symvers-(.*).gz$')
|
||||
while true:
|
||||
foo = sys.stdin.readline()
|
||||
if foo == "":
|
||||
break
|
||||
string.split(foo)
|
||||
m = p.match(foo)
|
||||
if m:
|
||||
kabideps=sys.argv[1] + "/kernel-" + m.group(2) + "-kabideps"
|
||||
|
||||
if kabideps == "":
|
||||
sys.exit(0)
|
||||
|
||||
if not (os.path.isfile(kabideps)):
|
||||
sys.stderr.write(sys.argv[0] + ": cannot locate kabideps file: " + kabideps + "\n")
|
||||
sys.exit(1)
|
||||
|
||||
sys.stderr.write(sys.argv[0] + ": processing kABI: " + kabideps)
|
||||
os.system("cat " + kabideps)
|
34
fix_xen_guest_on_old_EC2.patch
Normal file
34
fix_xen_guest_on_old_EC2.patch
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
Legacy hypervisors (RHEL 5.0 and RHEL 5.1) do not handle guest writes to
|
||||
cr4 gracefully. If a guest attempts to write a bit of cr4 that is
|
||||
unsupported, then the HV is so offended it crashes the domain. While
|
||||
later guest kernels (such as RHEL6) don't assume the HV supports all
|
||||
features, they do expect nicer responses. That assumption introduced
|
||||
code that probes whether or not xsave is supported early in the boot. So
|
||||
now when attempting to boot a RHEL6 guest on RHEL5.0 or RHEL5.1 an early
|
||||
crash will occur.
|
||||
|
||||
This patch is quite obviously an undesirable hack. The real fix for this
|
||||
problem should be in the HV, and is, in later HVs. However, to support
|
||||
running on old HVs, RHEL6 can take this small change. No impact will
|
||||
occur for running on any RHEL HV (not even RHEL 5.5 supports xsave).
|
||||
There is only potential for guest performance loss on upstream Xen.
|
||||
|
||||
---
|
||||
arch/x86/xen/enlighten.c | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
|
||||
index 52f8e19..6db3d67 100644
|
||||
--- a/arch/x86/xen/enlighten.c
|
||||
+++ b/arch/x86/xen/enlighten.c
|
||||
@@ -802,6 +802,7 @@ static void xen_write_cr4(unsigned long cr4)
|
||||
{
|
||||
cr4 &= ~X86_CR4_PGE;
|
||||
cr4 &= ~X86_CR4_PSE;
|
||||
+ cr4 &= ~X86_CR4_OSXSAVE;
|
||||
|
||||
native_write_cr4(cr4);
|
||||
}
|
||||
--
|
||||
1.6.6.1
|
7
genkey
Normal file
7
genkey
Normal file
@ -0,0 +1,7 @@
|
||||
%pubring kernel.pub
|
||||
%secring kernel.sec
|
||||
Key-Type: DSA
|
||||
Key-Length: 512
|
||||
Name-Real: Red Hat, Inc.
|
||||
Name-Comment: Kernel Module GPG key
|
||||
%commit
|
0
git-linus.diff
Normal file
0
git-linus.diff
Normal file
6326
git-utrace.patch
Normal file
6326
git-utrace.patch
Normal file
File diff suppressed because it is too large
Load Diff
47
hda_intel-prealloc-4mb-dmabuffer.patch
Normal file
47
hda_intel-prealloc-4mb-dmabuffer.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From c69fcbd1f60b0842f7c1ad2c95692ffd19c4932b Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:56:08 -0400
|
||||
Subject: hda_intel-prealloc-4mb-dmabuffer
|
||||
|
||||
---
|
||||
sound/pci/hda/hda_intel.c | 14 +++++++++++++-
|
||||
1 files changed, 13 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
|
||||
index 4bb9067..37db515 100644
|
||||
--- a/sound/pci/hda/hda_intel.c
|
||||
+++ b/sound/pci/hda/hda_intel.c
|
||||
@@ -1986,6 +1986,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
|
||||
struct azx_pcm *apcm;
|
||||
int pcm_dev = cpcm->device;
|
||||
int s, err;
|
||||
+ size_t prealloc_min = 64*1024; /* 64KB */
|
||||
|
||||
if (pcm_dev >= HDA_MAX_PCMS) {
|
||||
snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n",
|
||||
@@ -2019,10 +2020,21 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
|
||||
if (cpcm->stream[s].substreams)
|
||||
snd_pcm_set_ops(pcm, s, &azx_pcm_ops);
|
||||
}
|
||||
+
|
||||
/* buffer pre-allocation */
|
||||
+
|
||||
+ /* subtle, don't allocate a big buffer for modems...
|
||||
+ * also, don't just test 32BIT_MASK, since azx supports
|
||||
+ * 64-bit DMA in some cases.
|
||||
+ */
|
||||
+ /* lennart wants a 2.2MB buffer for 2sec of 48khz */
|
||||
+ if (pcm->dev_class == SNDRV_PCM_CLASS_GENERIC &&
|
||||
+ chip->pci->dma_mask >= DMA_32BIT_MASK)
|
||||
+ prealloc_min = 4 * 1024 * 1024; /* 4MB */
|
||||
+
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
|
||||
snd_dma_pci_data(chip->pci),
|
||||
- 1024 * 64, 32 * 1024 * 1024);
|
||||
+ prealloc_min, 32 * 1024 * 1024);
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
220
hdpvr-ir-enable.patch
Normal file
220
hdpvr-ir-enable.patch
Normal file
@ -0,0 +1,220 @@
|
||||
diff --git a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
|
||||
index e0230fc..3baa9f6 100644
|
||||
--- a/drivers/media/video/hdpvr/Makefile
|
||||
+++ b/drivers/media/video/hdpvr/Makefile
|
||||
@@ -1,6 +1,4 @@
|
||||
-hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o
|
||||
-
|
||||
-hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o
|
||||
+hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o hdpvr-i2c.o
|
||||
|
||||
obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
|
||||
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
index 830d47b..70cfdc8 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
@@ -364,14 +364,13 @@ static int hdpvr_probe(struct usb_interface *interface,
|
||||
goto error;
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_I2C
|
||||
- /* until i2c is working properly */
|
||||
- retval = 0; /* hdpvr_register_i2c_adapter(dev); */
|
||||
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
|
||||
+ retval = hdpvr_register_i2c_adapter(dev);
|
||||
if (retval < 0) {
|
||||
v4l2_err(&dev->v4l2_dev, "registering i2c adapter failed\n");
|
||||
goto error;
|
||||
}
|
||||
-#endif /* CONFIG_I2C */
|
||||
+#endif
|
||||
|
||||
/* let the user know what node this device is now attached to */
|
||||
v4l2_info(&dev->v4l2_dev, "device now attached to %s\n",
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
index 463b81b..60cdc06 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
@@ -10,6 +10,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
|
||||
+
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
@@ -22,8 +24,11 @@
|
||||
#define REQTYPE_I2C_WRITE 0xb0
|
||||
#define REQTYPE_I2C_WRITE_STATT 0xd0
|
||||
|
||||
-static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+#define HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR 0x70
|
||||
+#define HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR 0x71
|
||||
+
|
||||
+static int hdpvr_i2c_read(struct hdpvr_device *dev, int bus,
|
||||
+ unsigned char addr, char *data, int len)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -33,7 +38,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
ret = usb_control_msg(dev->udev,
|
||||
usb_rcvctrlpipe(dev->udev, 0),
|
||||
REQTYPE_I2C_READ, CTRL_READ_REQUEST,
|
||||
- 0x100|addr, 0, buf, len, 1000);
|
||||
+ (bus << 8) | addr, 0, buf, len, 1000);
|
||||
|
||||
if (ret == len) {
|
||||
memcpy(data, buf, len);
|
||||
@@ -46,8 +51,8 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+static int hdpvr_i2c_write(struct hdpvr_device *dev, int bus,
|
||||
+ unsigned char addr, char *data, int len)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -58,7 +63,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
ret = usb_control_msg(dev->udev,
|
||||
usb_sndctrlpipe(dev->udev, 0),
|
||||
REQTYPE_I2C_WRITE, CTRL_WRITE_REQUEST,
|
||||
- 0x100|addr, 0, buf, len, 1000);
|
||||
+ (bus << 8) | addr, 0, buf, len, 1000);
|
||||
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
@@ -68,7 +73,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
|
||||
0, 0, buf, 2, 1000);
|
||||
|
||||
- if (ret == 2)
|
||||
+ if ((ret == 2) && (buf[1] == (len - 1)))
|
||||
ret = 0;
|
||||
else if (ret >= 0)
|
||||
ret = -EIO;
|
||||
@@ -93,10 +98,10 @@ static int hdpvr_transfer(struct i2c_adapter *i2c_adapter, struct i2c_msg *msgs,
|
||||
addr = msgs[i].addr << 1;
|
||||
|
||||
if (msgs[i].flags & I2C_M_RD)
|
||||
- retval = hdpvr_i2c_read(dev, addr, msgs[i].buf,
|
||||
+ retval = hdpvr_i2c_read(dev, 1, addr, msgs[i].buf,
|
||||
msgs[i].len);
|
||||
else
|
||||
- retval = hdpvr_i2c_write(dev, addr, msgs[i].buf,
|
||||
+ retval = hdpvr_i2c_write(dev, 1, addr, msgs[i].buf,
|
||||
msgs[i].len);
|
||||
}
|
||||
|
||||
@@ -115,31 +120,59 @@ static struct i2c_algorithm hdpvr_algo = {
|
||||
.functionality = hdpvr_functionality,
|
||||
};
|
||||
|
||||
+static struct i2c_adapter hdpvr_i2c_adapter_template = {
|
||||
+ .name = "Hauppage HD PVR I2C",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .id = I2C_HW_B_HDPVR,
|
||||
+ .algo = &hdpvr_algo,
|
||||
+ .class = I2C_CLASS_TV_ANALOG,
|
||||
+};
|
||||
+
|
||||
+static struct i2c_board_info hdpvr_i2c_board_info = {
|
||||
+ I2C_BOARD_INFO("ir_tx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR),
|
||||
+ I2C_BOARD_INFO("ir_rx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR),
|
||||
+};
|
||||
+
|
||||
+static int hdpvr_activate_ir(struct hdpvr_device *dev)
|
||||
+{
|
||||
+ char buffer[8];
|
||||
+
|
||||
+ mutex_lock(&dev->i2c_mutex);
|
||||
+
|
||||
+ hdpvr_i2c_read(dev, 0, 0x54, buffer, 1);
|
||||
+
|
||||
+ buffer[0] = 0;
|
||||
+ buffer[1] = 0x8;
|
||||
+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2);
|
||||
+
|
||||
+ buffer[1] = 0x18;
|
||||
+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2);
|
||||
+
|
||||
+ mutex_unlock(&dev->i2c_mutex);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
|
||||
{
|
||||
- struct i2c_adapter *i2c_adap;
|
||||
int retval = -ENOMEM;
|
||||
|
||||
- i2c_adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
|
||||
- if (i2c_adap == NULL)
|
||||
- goto error;
|
||||
+ hdpvr_activate_ir(dev);
|
||||
|
||||
- strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
|
||||
- sizeof(i2c_adap->name));
|
||||
- i2c_adap->algo = &hdpvr_algo;
|
||||
- i2c_adap->class = I2C_CLASS_TV_ANALOG;
|
||||
- i2c_adap->owner = THIS_MODULE;
|
||||
- i2c_adap->dev.parent = &dev->udev->dev;
|
||||
+ memcpy(&dev->i2c_adapter, &hdpvr_i2c_adapter_template,
|
||||
+ sizeof(struct i2c_adapter));
|
||||
+ dev->i2c_adapter.dev.parent = &dev->udev->dev;
|
||||
|
||||
- i2c_set_adapdata(i2c_adap, dev);
|
||||
+ i2c_set_adapdata(&dev->i2c_adapter, dev);
|
||||
|
||||
- retval = i2c_add_adapter(i2c_adap);
|
||||
+ retval = i2c_add_adapter(&dev->i2c_adapter);
|
||||
+ if (retval)
|
||||
+ goto error;
|
||||
|
||||
- if (!retval)
|
||||
- dev->i2c_adapter = i2c_adap;
|
||||
- else
|
||||
- kfree(i2c_adap);
|
||||
+ i2c_new_device(&dev->i2c_adapter, &hdpvr_i2c_board_info);
|
||||
|
||||
error:
|
||||
return retval;
|
||||
}
|
||||
+
|
||||
+#endif
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
index c338f3f..26fd9bf 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
@@ -1221,12 +1221,9 @@ static void hdpvr_device_release(struct video_device *vdev)
|
||||
v4l2_device_unregister(&dev->v4l2_dev);
|
||||
|
||||
/* deregister I2C adapter */
|
||||
-#ifdef CONFIG_I2C
|
||||
+#if defined(CONFIG_I2C) || (CONFIG_I2C_MODULE)
|
||||
mutex_lock(&dev->i2c_mutex);
|
||||
- if (dev->i2c_adapter)
|
||||
- i2c_del_adapter(dev->i2c_adapter);
|
||||
- kfree(dev->i2c_adapter);
|
||||
- dev->i2c_adapter = NULL;
|
||||
+ i2c_del_adapter(&dev->i2c_adapter);
|
||||
mutex_unlock(&dev->i2c_mutex);
|
||||
#endif /* CONFIG_I2C */
|
||||
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
|
||||
index b0f046d..2107055 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr.h
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr.h
|
||||
@@ -102,7 +102,7 @@ struct hdpvr_device {
|
||||
struct work_struct worker;
|
||||
|
||||
/* I2C adapter */
|
||||
- struct i2c_adapter *i2c_adapter;
|
||||
+ struct i2c_adapter i2c_adapter;
|
||||
/* I2C lock */
|
||||
struct mutex i2c_mutex;
|
||||
|
2195
kernel.spec
Normal file
2195
kernel.spec
Normal file
File diff suppressed because it is too large
Load Diff
216
linux-2.6-32bit-mmap-exec-randomization.patch
Normal file
216
linux-2.6-32bit-mmap-exec-randomization.patch
Normal file
@ -0,0 +1,216 @@
|
||||
--- b/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -397,6 +397,10 @@
|
||||
extern unsigned long
|
||||
arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
+
|
||||
+extern unsigned long
|
||||
+arch_get_unmapped_exec_area(struct file *, unsigned long, unsigned long,
|
||||
+ unsigned long, unsigned long);
|
||||
extern unsigned long
|
||||
arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
|
||||
unsigned long len, unsigned long pgoff,
|
||||
--- b/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/rmap.h>
|
||||
#include <linux/mmu_notifier.h>
|
||||
#include <linux/perf_event.h>
|
||||
+#include <linux/random.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/cacheflush.h>
|
||||
@@ -1000,7 +1001,8 @@
|
||||
/* Obtain the address to map to. we verify (or select) it and ensure
|
||||
* that it represents a valid section of the address space.
|
||||
*/
|
||||
- addr = get_unmapped_area(file, addr, len, pgoff, flags);
|
||||
+ addr = get_unmapped_area_prot(file, addr, len, pgoff, flags,
|
||||
+ prot & PROT_EXEC);
|
||||
if (addr & ~PAGE_MASK)
|
||||
return addr;
|
||||
|
||||
@@ -1552,8 +1554,8 @@
|
||||
}
|
||||
|
||||
unsigned long
|
||||
-get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
|
||||
- unsigned long pgoff, unsigned long flags)
|
||||
+get_unmapped_area_prot(struct file *file, unsigned long addr, unsigned long len,
|
||||
+ unsigned long pgoff, unsigned long flags, int exec)
|
||||
{
|
||||
unsigned long (*get_area)(struct file *, unsigned long,
|
||||
unsigned long, unsigned long, unsigned long);
|
||||
@@ -1566,7 +1568,11 @@
|
||||
if (len > TASK_SIZE)
|
||||
return -ENOMEM;
|
||||
|
||||
- get_area = current->mm->get_unmapped_area;
|
||||
+ if (exec && current->mm->get_unmapped_exec_area)
|
||||
+ get_area = current->mm->get_unmapped_exec_area;
|
||||
+ else
|
||||
+ get_area = current->mm->get_unmapped_area;
|
||||
+
|
||||
if (file && file->f_op && file->f_op->get_unmapped_area)
|
||||
get_area = file->f_op->get_unmapped_area;
|
||||
addr = get_area(file, addr, len, pgoff, flags);
|
||||
@@ -1580,8 +1586,83 @@
|
||||
|
||||
return arch_rebalance_pgtables(addr, len);
|
||||
}
|
||||
+EXPORT_SYMBOL(get_unmapped_area_prot);
|
||||
+
|
||||
+static bool should_randomize(void)
|
||||
+{
|
||||
+ return (current->flags & PF_RANDOMIZE) &&
|
||||
+ !(current->personality & ADDR_NO_RANDOMIZE);
|
||||
+}
|
||||
+
|
||||
+#define SHLIB_BASE 0x00110000
|
||||
+
|
||||
+unsigned long
|
||||
+arch_get_unmapped_exec_area(struct file *filp, unsigned long addr0,
|
||||
+ unsigned long len0, unsigned long pgoff, unsigned long flags)
|
||||
+{
|
||||
+ unsigned long addr = addr0, len = len0;
|
||||
+ struct mm_struct *mm = current->mm;
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long tmp;
|
||||
+
|
||||
+ if (len > TASK_SIZE)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (flags & MAP_FIXED)
|
||||
+ return addr;
|
||||
+
|
||||
+ if (!addr)
|
||||
+ addr = !should_randomize() ? SHLIB_BASE :
|
||||
+ randomize_range(SHLIB_BASE, 0x01000000, len);
|
||||
+
|
||||
+ if (addr) {
|
||||
+ addr = PAGE_ALIGN(addr);
|
||||
+ vma = find_vma(mm, addr);
|
||||
+ if (TASK_SIZE - len >= addr &&
|
||||
+ (!vma || addr + len <= vma->vm_start))
|
||||
+ return addr;
|
||||
+ }
|
||||
+
|
||||
+ addr = SHLIB_BASE;
|
||||
+ for (vma = find_vma(mm, addr); ; vma = vma->vm_next) {
|
||||
+ /* At this point: (!vma || addr < vma->vm_end). */
|
||||
+ if (TASK_SIZE - len < addr)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (!vma || addr + len <= vma->vm_start) {
|
||||
+ /*
|
||||
+ * Must not let a PROT_EXEC mapping get into the
|
||||
+ * brk area:
|
||||
+ */
|
||||
+ if (addr + len > mm->brk)
|
||||
+ goto failed;
|
||||
+
|
||||
+ /*
|
||||
+ * Up until the brk area we randomize addresses
|
||||
+ * as much as possible:
|
||||
+ */
|
||||
+ if (addr >= 0x01000000 && should_randomize()) {
|
||||
+ tmp = randomize_range(0x01000000,
|
||||
+ PAGE_ALIGN(max(mm->start_brk,
|
||||
+ (unsigned long)0x08000000)), len);
|
||||
+ vma = find_vma(mm, tmp);
|
||||
+ if (TASK_SIZE - len >= tmp &&
|
||||
+ (!vma || tmp + len <= vma->vm_start))
|
||||
+ return tmp;
|
||||
+ }
|
||||
+ /*
|
||||
+ * Ok, randomization didnt work out - return
|
||||
+ * the result of the linear search:
|
||||
+ */
|
||||
+ return addr;
|
||||
+ }
|
||||
+ addr = vma->vm_end;
|
||||
+ }
|
||||
+
|
||||
+failed:
|
||||
+ return current->mm->get_unmapped_area(filp, addr0, len0, pgoff, flags);
|
||||
+}
|
||||
|
||||
-EXPORT_SYMBOL(get_unmapped_area);
|
||||
|
||||
/* Look up the first VMA which satisfies addr < vm_end, NULL if none. */
|
||||
struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
|
||||
--- a/arch/x86/mm/mmap.c
|
||||
+++ b/arch/x86/mm/mmap.c
|
||||
@@ -124,13 +124,16 @@ static unsigned long mmap_legacy_base(void)
|
||||
*/
|
||||
void arch_pick_mmap_layout(struct mm_struct *mm)
|
||||
{
|
||||
if (mmap_is_legacy()) {
|
||||
mm->mmap_base = mmap_legacy_base();
|
||||
mm->get_unmapped_area = arch_get_unmapped_area;
|
||||
mm->unmap_area = arch_unmap_area;
|
||||
} else {
|
||||
mm->mmap_base = mmap_base();
|
||||
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
|
||||
+ if (!(current->personality & READ_IMPLIES_EXEC)
|
||||
+ && mmap_is_ia32())
|
||||
+ mm->get_unmapped_exec_area = arch_get_unmapped_exec_area;
|
||||
mm->unmap_area = arch_unmap_area_topdown;
|
||||
}
|
||||
}
|
||||
--- a/arch/x86/vdso/vdso32-setup.c
|
||||
+++ b/arch/x86/vdso/vdso32-setup.c
|
||||
@@ -331,7 +331,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
|
||||
if (compat)
|
||||
addr = VDSO_HIGH_BASE;
|
||||
else {
|
||||
- addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0);
|
||||
+ addr = get_unmapped_area_prot(NULL, 0, PAGE_SIZE, 0, 0, 1);
|
||||
if (IS_ERR_VALUE(addr)) {
|
||||
ret = addr;
|
||||
goto up_fail;
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -1263,7 +1263,13 @@ extern int install_special_mapping(struct mm_struct *mm,
|
||||
unsigned long addr, unsigned long len,
|
||||
unsigned long flags, struct page **pages);
|
||||
|
||||
-extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||
+extern unsigned long get_unmapped_area_prot(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, int);
|
||||
+
|
||||
+static inline unsigned long get_unmapped_area(struct file *file, unsigned long addr,
|
||||
+ unsigned long len, unsigned long pgoff, unsigned long flags)
|
||||
+{
|
||||
+ return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);
|
||||
+}
|
||||
|
||||
extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long prot,
|
||||
--- a/include/linux/mm_types.h
|
||||
+++ b/include/linux/mm_types.h
|
||||
@@ -227,6 +227,9 @@ struct mm_struct {
|
||||
unsigned long (*get_unmapped_area) (struct file *filp,
|
||||
unsigned long addr, unsigned long len,
|
||||
unsigned long pgoff, unsigned long flags);
|
||||
+ unsigned long (*get_unmapped_exec_area) (struct file *filp,
|
||||
+ unsigned long addr, unsigned long len,
|
||||
+ unsigned long pgoff, unsigned long flags);
|
||||
void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
|
||||
#endif
|
||||
unsigned long mmap_base; /* base of mmap area */
|
||||
--- a/mm/mremap.c
|
||||
+++ b/mm/mremap.c
|
||||
@@ -487,10 +487,10 @@ unsigned long do_mremap(unsigned long addr,
|
||||
if (vma->vm_flags & VM_MAYSHARE)
|
||||
map_flags |= MAP_SHARED;
|
||||
|
||||
- new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
|
||||
+ new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
|
||||
vma->vm_pgoff +
|
||||
((addr - vma->vm_start) >> PAGE_SHIFT),
|
||||
- map_flags);
|
||||
+ map_flags, vma->vm_flags & VM_EXEC);
|
||||
if (new_addr & ~PAGE_MASK) {
|
||||
ret = new_addr;
|
||||
goto out;
|
24
linux-2.6-acpi-debug-infinite-loop.patch
Normal file
24
linux-2.6-acpi-debug-infinite-loop.patch
Normal file
@ -0,0 +1,24 @@
|
||||
--- linux-2.6.34.noarch/drivers/acpi/acpica/dsopcode.c~ 2010-07-01 14:40:44.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/dsopcode.c 2010-07-01 14:48:56.000000000 -0400
|
||||
@@ -1276,6 +1276,10 @@ acpi_ds_exec_end_control_op(struct acpi_
|
||||
* loop does not implement a timeout.
|
||||
*/
|
||||
control_state->control.loop_count++;
|
||||
+ if ((control_state->control.loop_count > 1) && (control_state->control.loop_count % 0xffff == 0))
|
||||
+ printk("ACPI: While loop taking a really long time. loop_count=0x%x\n",
|
||||
+ control_state->control.loop_count);
|
||||
+
|
||||
if (control_state->control.loop_count >
|
||||
ACPI_MAX_LOOP_ITERATIONS) {
|
||||
status = AE_AML_INFINITE_LOOP;
|
||||
--- linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
/* Maximum number of While() loop iterations before forced abort */
|
||||
|
||||
-#define ACPI_MAX_LOOP_ITERATIONS 0xFFFF
|
||||
+#define ACPI_MAX_LOOP_ITERATIONS 0xFFFFFF
|
||||
|
||||
/* Maximum sleep allowed via Sleep() operator */
|
||||
|
17
linux-2.6-acpi-video-dos.patch
Normal file
17
linux-2.6-acpi-video-dos.patch
Normal file
@ -0,0 +1,17 @@
|
||||
Disable firmware video brightness change on AC/Battery switch by default
|
||||
|
||||
-- mjg59
|
||||
|
||||
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
|
||||
index bac2901..93b1a9e 100644
|
||||
--- a/drivers/acpi/video.c
|
||||
+++ b/drivers/acpi/video.c
|
||||
@@ -1818,7 +1818,7 @@ static int acpi_video_bus_put_devices(struct acpi_video_bus *video)
|
||||
|
||||
static int acpi_video_bus_start_devices(struct acpi_video_bus *video)
|
||||
{
|
||||
- return acpi_video_bus_DOS(video, 0, 0);
|
||||
+ return acpi_video_bus_DOS(video, 0, 1);
|
||||
}
|
||||
|
||||
static int acpi_video_bus_stop_devices(struct acpi_video_bus *video)
|
128
linux-2.6-build-nonintconfig.patch
Normal file
128
linux-2.6-build-nonintconfig.patch
Normal file
@ -0,0 +1,128 @@
|
||||
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
|
||||
index 6d69c7c..ff84d12 100644
|
||||
--- a/scripts/kconfig/Makefile
|
||||
+++ b/scripts/kconfig/Makefile
|
||||
@@ -58,6 +58,11 @@ localyesconfig: $(obj)/streamline_config.pl $(obj)/conf
|
||||
fi
|
||||
$(Q)rm -f .tmp.config
|
||||
|
||||
+nonint_oldconfig: $(obj)/conf
|
||||
+ $< -b $(Kconfig)
|
||||
+loose_nonint_oldconfig: $(obj)/conf
|
||||
+ $< -B $(Kconfig)
|
||||
+
|
||||
# Create new linux.pot file
|
||||
# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
|
||||
# The symlink is used to repair a deficiency in arch/um
|
||||
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
|
||||
index 9960d1c..ac8d455 100644
|
||||
--- a/scripts/kconfig/conf.c
|
||||
+++ b/scripts/kconfig/conf.c
|
||||
@@ -23,6 +23,8 @@ enum {
|
||||
ask_all,
|
||||
ask_new,
|
||||
ask_silent,
|
||||
+ dont_ask,
|
||||
+ dont_ask_dont_tell,
|
||||
set_default,
|
||||
set_yes,
|
||||
set_mod,
|
||||
@@ -360,7 +362,10 @@ static void conf(struct menu *menu)
|
||||
|
||||
switch (prop->type) {
|
||||
case P_MENU:
|
||||
- if (input_mode == ask_silent && rootEntry != menu) {
|
||||
+ if ((input_mode == ask_silent ||
|
||||
+ input_mode == dont_ask ||
|
||||
+ input_mode == dont_ask_dont_tell) &&
|
||||
+ rootEntry != menu) {
|
||||
check_conf(menu);
|
||||
return;
|
||||
}
|
||||
@@ -406,6 +411,8 @@ conf_childs:
|
||||
indent -= 2;
|
||||
}
|
||||
|
||||
+static int return_value;
|
||||
+
|
||||
static void check_conf(struct menu *menu)
|
||||
{
|
||||
struct symbol *sym;
|
||||
@@ -418,12 +425,21 @@ static void check_conf(struct menu *menu)
|
||||
if (sym && !sym_has_value(sym)) {
|
||||
if (sym_is_changable(sym) ||
|
||||
(sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
|
||||
+ if (input_mode == dont_ask ||
|
||||
+ input_mode == dont_ask_dont_tell) {
|
||||
+ if (input_mode == dont_ask &&
|
||||
+ sym->name && !sym_is_choice_value(sym)) {
|
||||
+ fprintf(stderr,"CONFIG_%s\n",sym->name);
|
||||
+ ++return_value;
|
||||
+ }
|
||||
+ } else {
|
||||
if (!conf_cnt++)
|
||||
printf(_("*\n* Restart config...\n*\n"));
|
||||
rootEntry = menu_get_parent_menu(menu);
|
||||
conf(rootEntry);
|
||||
}
|
||||
}
|
||||
+ }
|
||||
|
||||
for (child = menu->list; child; child = child->next)
|
||||
check_conf(child);
|
||||
@@ -439,7 +455,7 @@ int main(int ac, char **av)
|
||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||
textdomain(PACKAGE);
|
||||
|
||||
- while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
|
||||
+ while ((opt = getopt(ac, av, "osbBdD:nmyrh")) != -1) {
|
||||
switch (opt) {
|
||||
case 'o':
|
||||
input_mode = ask_silent;
|
||||
@@ -448,6 +464,12 @@ int main(int ac, char **av)
|
||||
input_mode = ask_silent;
|
||||
sync_kconfig = 1;
|
||||
break;
|
||||
+ case 'b':
|
||||
+ input_mode = dont_ask;
|
||||
+ break;
|
||||
+ case 'B':
|
||||
+ input_mode = dont_ask_dont_tell;
|
||||
+ break;
|
||||
case 'd':
|
||||
input_mode = set_default;
|
||||
break;
|
||||
@@ -525,6 +547,8 @@ int main(int ac, char **av)
|
||||
case ask_silent:
|
||||
case ask_all:
|
||||
case ask_new:
|
||||
+ case dont_ask:
|
||||
+ case dont_ask_dont_tell:
|
||||
conf_read(NULL);
|
||||
break;
|
||||
case set_no:
|
||||
@@ -586,12 +610,16 @@ int main(int ac, char **av)
|
||||
conf(&rootmenu);
|
||||
input_mode = ask_silent;
|
||||
/* fall through */
|
||||
+ case dont_ask:
|
||||
+ case dont_ask_dont_tell:
|
||||
case ask_silent:
|
||||
/* Update until a loop caused no more changes */
|
||||
do {
|
||||
conf_cnt = 0;
|
||||
check_conf(&rootmenu);
|
||||
- } while (conf_cnt);
|
||||
+ } while (conf_cnt &&
|
||||
+ (input_mode != dont_ask &&
|
||||
+ input_mode != dont_ask_dont_tell));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -613,5 +641,5 @@ int main(int ac, char **av)
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
- return 0;
|
||||
+ return return_value;
|
||||
}
|
6
linux-2.6-compile-fixes.patch
Normal file
6
linux-2.6-compile-fixes.patch
Normal file
@ -0,0 +1,6 @@
|
||||
#
|
||||
# Small compile fixes (For more involved fixes, please use a separate patch).
|
||||
#
|
||||
# Please add the errors from gcc before the diffs to save others having
|
||||
# to do a compile to figure out what your diff is fixing. Thanks.
|
||||
#
|
385
linux-2.6-crash-driver.patch
Normal file
385
linux-2.6-crash-driver.patch
Normal file
@ -0,0 +1,385 @@
|
||||
From df42d15cd28f468ecd4c30465b98a53cce90617c Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Tue, 30 Mar 2010 00:16:25 -0400
|
||||
Subject: dev-crash-driver.patch
|
||||
|
||||
---
|
||||
arch/ia64/include/asm/crash.h | 90 +++++++++++++++++++++++++++++
|
||||
arch/ia64/kernel/ia64_ksyms.c | 3 +
|
||||
arch/x86/include/asm/crash.h | 75 ++++++++++++++++++++++++
|
||||
arch/x86/mm/ioremap.c | 2 +
|
||||
drivers/char/Kconfig | 2 +
|
||||
drivers/char/Makefile | 2 +
|
||||
drivers/char/crash.c | 128 +++++++++++++++++++++++++++++++++++++++++
|
||||
7 files changed, 302 insertions(+), 0 deletions(-)
|
||||
create mode 100644 arch/ia64/include/asm/crash.h
|
||||
create mode 100644 arch/x86/include/asm/crash.h
|
||||
create mode 100644 drivers/char/crash.c
|
||||
|
||||
diff --git a/arch/ia64/include/asm/crash.h b/arch/ia64/include/asm/crash.h
|
||||
new file mode 100644
|
||||
index 0000000..541af84
|
||||
--- /dev/null
|
||||
+++ b/arch/ia64/include/asm/crash.h
|
||||
@@ -0,0 +1,90 @@
|
||||
+#ifndef _ASM_IA64_CRASH_H
|
||||
+#define _ASM_IA64_CRASH_H
|
||||
+
|
||||
+/*
|
||||
+ * linux/include/asm-ia64/crash.h
|
||||
+ *
|
||||
+ * Copyright (c) 2004 Red Hat, Inc. All rights reserved.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifdef __KERNEL__
|
||||
+
|
||||
+#include <linux/efi.h>
|
||||
+#include <linux/mm.h>
|
||||
+#include <asm/mmzone.h>
|
||||
+
|
||||
+static inline void *
|
||||
+map_virtual(u64 offset, struct page **pp)
|
||||
+{
|
||||
+ struct page *page;
|
||||
+ unsigned long pfn;
|
||||
+ u32 type;
|
||||
+
|
||||
+ if (REGION_NUMBER(offset) == 5) {
|
||||
+ char byte;
|
||||
+
|
||||
+ if (__get_user(byte, (char *)offset) == 0)
|
||||
+ return (void *)offset;
|
||||
+ else
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ switch (type = efi_mem_type(offset))
|
||||
+ {
|
||||
+ case EFI_LOADER_CODE:
|
||||
+ case EFI_LOADER_DATA:
|
||||
+ case EFI_BOOT_SERVICES_CODE:
|
||||
+ case EFI_BOOT_SERVICES_DATA:
|
||||
+ case EFI_CONVENTIONAL_MEMORY:
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: invalid memory type for %lx: %d\n",
|
||||
+ offset, type);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ pfn = offset >> PAGE_SHIFT;
|
||||
+
|
||||
+ if (!pfn_valid(pfn)) {
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: invalid pfn: %lx )\n", pfn);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ page = pfn_to_page(pfn);
|
||||
+
|
||||
+ if (!page->virtual) {
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: offset: %lx page: %lx page->virtual: NULL\n",
|
||||
+ offset, (unsigned long)page);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return (page->virtual + (offset & (PAGE_SIZE-1)));
|
||||
+}
|
||||
+
|
||||
+static inline void unmap_virtual(struct page *page)
|
||||
+{
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+#endif /* __KERNEL__ */
|
||||
+
|
||||
+#endif /* _ASM_IA64_CRASH_H */
|
||||
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
|
||||
index 7f4a0ed..552fe24 100644
|
||||
--- a/arch/ia64/kernel/ia64_ksyms.c
|
||||
+++ b/arch/ia64/kernel/ia64_ksyms.c
|
||||
@@ -84,6 +84,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
|
||||
#include <asm/unwind.h>
|
||||
EXPORT_SYMBOL(unw_init_running);
|
||||
|
||||
+#include <linux/efi.h>
|
||||
+EXPORT_SYMBOL_GPL(efi_mem_type);
|
||||
+
|
||||
#if defined(CONFIG_IA64_ESI) || defined(CONFIG_IA64_ESI_MODULE)
|
||||
extern void esi_call_phys (void);
|
||||
EXPORT_SYMBOL_GPL(esi_call_phys);
|
||||
diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h
|
||||
new file mode 100644
|
||||
index 0000000..dfcc006
|
||||
--- /dev/null
|
||||
+++ b/arch/x86/include/asm/crash.h
|
||||
@@ -0,0 +1,75 @@
|
||||
+#ifndef _ASM_I386_CRASH_H
|
||||
+#define _ASM_I386_CRASH_H
|
||||
+
|
||||
+/*
|
||||
+ * linux/include/asm-i386/crash.h
|
||||
+ *
|
||||
+ * Copyright (c) 2004 Red Hat, Inc. All rights reserved.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifdef __KERNEL__
|
||||
+
|
||||
+#include <linux/mm.h>
|
||||
+#include <linux/highmem.h>
|
||||
+#include <asm/mmzone.h>
|
||||
+
|
||||
+extern int page_is_ram(unsigned long);
|
||||
+
|
||||
+static inline void *
|
||||
+map_virtual(u64 offset, struct page **pp)
|
||||
+{
|
||||
+ struct page *page;
|
||||
+ unsigned long pfn;
|
||||
+ void *vaddr;
|
||||
+
|
||||
+ pfn = (unsigned long)(offset >> PAGE_SHIFT);
|
||||
+
|
||||
+ if (!page_is_ram(pfn)) {
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: !page_is_ram(pfn: %lx)\n", pfn);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (!pfn_valid(pfn)) {
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: invalid pfn: %lx )\n", pfn);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ page = pfn_to_page(pfn);
|
||||
+
|
||||
+ vaddr = kmap(page);
|
||||
+ if (!vaddr) {
|
||||
+ printk(KERN_INFO
|
||||
+ "crash memory driver: pfn: %lx kmap(page: %lx) failed\n",
|
||||
+ pfn, (unsigned long)page);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ *pp = page;
|
||||
+ return (vaddr + (offset & (PAGE_SIZE-1)));
|
||||
+}
|
||||
+
|
||||
+static inline void unmap_virtual(struct page *page)
|
||||
+{
|
||||
+ kunmap(page);
|
||||
+}
|
||||
+
|
||||
+#endif /* __KERNEL__ */
|
||||
+
|
||||
+#endif /* _ASM_I386_CRASH_H */
|
||||
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
|
||||
index 5eb1ba7..3e525d2 100644
|
||||
--- a/arch/x86/mm/ioremap.c
|
||||
+++ b/arch/x86/mm/ioremap.c
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
#include "physaddr.h"
|
||||
|
||||
+EXPORT_SYMBOL_GPL(page_is_ram);
|
||||
+
|
||||
/*
|
||||
* Fix up the linear direct mapping of the kernel to avoid cache attribute
|
||||
* conflicts.
|
||||
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
|
||||
index 3141dd3..153658c 100644
|
||||
--- a/drivers/char/Kconfig
|
||||
+++ b/drivers/char/Kconfig
|
||||
@@ -471,6 +471,8 @@ config LEGACY_PTYS
|
||||
security. This option enables these legacy devices; on most
|
||||
systems, it is safe to say N.
|
||||
|
||||
+config CRASH
|
||||
+ tristate "Crash Utility memory driver"
|
||||
|
||||
config LEGACY_PTY_COUNT
|
||||
int "Maximum number of legacy PTY in use"
|
||||
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
|
||||
index f957edf..604c418 100644
|
||||
--- a/drivers/char/Makefile
|
||||
+++ b/drivers/char/Makefile
|
||||
@@ -111,6 +111,8 @@ obj-$(CONFIG_PS3_FLASH) += ps3flash.o
|
||||
obj-$(CONFIG_JS_RTC) += js-rtc.o
|
||||
js-rtc-y = rtc.o
|
||||
|
||||
+obj-$(CONFIG_CRASH) += crash.o
|
||||
+
|
||||
# Files generated that shall be removed upon make clean
|
||||
clean-files := consolemap_deftbl.c defkeymap.c
|
||||
|
||||
diff --git a/drivers/char/crash.c b/drivers/char/crash.c
|
||||
new file mode 100644
|
||||
index 0000000..e5437de
|
||||
--- /dev/null
|
||||
+++ b/drivers/char/crash.c
|
||||
@@ -0,0 +1,128 @@
|
||||
+/*
|
||||
+ * linux/drivers/char/crash.c
|
||||
+ *
|
||||
+ * Copyright (C) 2004 Dave Anderson <anderson@redhat.com>
|
||||
+ * Copyright (C) 2004 Red Hat, Inc.
|
||||
+ */
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/types.h>
|
||||
+#include <linux/miscdevice.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <asm/io.h>
|
||||
+#include <asm/uaccess.h>
|
||||
+#include <asm/types.h>
|
||||
+#include <asm/crash.h>
|
||||
+
|
||||
+#define CRASH_VERSION "1.0"
|
||||
+
|
||||
+/*
|
||||
+ * These are the file operation functions that allow crash utility
|
||||
+ * access to physical memory.
|
||||
+ */
|
||||
+
|
||||
+static loff_t
|
||||
+crash_llseek(struct file * file, loff_t offset, int orig)
|
||||
+{
|
||||
+ switch (orig) {
|
||||
+ case 0:
|
||||
+ file->f_pos = offset;
|
||||
+ return file->f_pos;
|
||||
+ case 1:
|
||||
+ file->f_pos += offset;
|
||||
+ return file->f_pos;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Determine the page address for an address offset value,
|
||||
+ * get a virtual address for it, and copy it out.
|
||||
+ * Accesses must fit within a page.
|
||||
+ */
|
||||
+static ssize_t
|
||||
+crash_read(struct file *file, char *buf, size_t count, loff_t *poff)
|
||||
+{
|
||||
+ void *vaddr;
|
||||
+ struct page *page;
|
||||
+ u64 offset;
|
||||
+ ssize_t read;
|
||||
+
|
||||
+ offset = *poff;
|
||||
+ if (offset >> PAGE_SHIFT != (offset+count-1) >> PAGE_SHIFT)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ vaddr = map_virtual(offset, &page);
|
||||
+ if (!vaddr)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ if (copy_to_user(buf, vaddr, count)) {
|
||||
+ unmap_virtual(page);
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+ unmap_virtual(page);
|
||||
+
|
||||
+ read = count;
|
||||
+ *poff += read;
|
||||
+ return read;
|
||||
+}
|
||||
+
|
||||
+static struct file_operations crash_fops = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .llseek = crash_llseek,
|
||||
+ .read = crash_read,
|
||||
+};
|
||||
+
|
||||
+static struct miscdevice crash_dev = {
|
||||
+ MISC_DYNAMIC_MINOR,
|
||||
+ "crash",
|
||||
+ &crash_fops
|
||||
+};
|
||||
+
|
||||
+static int __init
|
||||
+crash_init(void)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = misc_register(&crash_dev);
|
||||
+ if (ret) {
|
||||
+ printk(KERN_ERR
|
||||
+ "crash memory driver: cannot misc_register (MISC_DYNAMIC_MINOR)\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ ret = 0;
|
||||
+ printk(KERN_INFO "crash memory driver: version %s\n", CRASH_VERSION);
|
||||
+out:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void __exit
|
||||
+crash_cleanup_module(void)
|
||||
+{
|
||||
+ misc_deregister(&crash_dev);
|
||||
+}
|
||||
+
|
||||
+module_init(crash_init);
|
||||
+module_exit(crash_cleanup_module);
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
1.7.0.1
|
||||
|
25
linux-2.6-debug-always-inline-kzalloc.patch
Normal file
25
linux-2.6-debug-always-inline-kzalloc.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 76ec0e2e6d6edf81abc0331d5e7873ef7b2f6019 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Wed, 8 Jul 2009 13:06:01 -0400
|
||||
Subject: [PATCH 6/6] fedora: linux-2.6-debug-always-inline-kzalloc.patch
|
||||
|
||||
---
|
||||
include/linux/slab.h | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/include/linux/slab.h b/include/linux/slab.h
|
||||
index 2da8372..d4ef74f 100644
|
||||
--- a/include/linux/slab.h
|
||||
+++ b/include/linux/slab.h
|
||||
@@ -310,7 +310,7 @@ static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
|
||||
* @size: how many bytes of memory are required.
|
||||
* @flags: the type of memory to allocate (see kmalloc).
|
||||
*/
|
||||
-static inline void *kzalloc(size_t size, gfp_t flags)
|
||||
+static __always_inline void *kzalloc(size_t size, gfp_t flags)
|
||||
{
|
||||
return kmalloc(size, flags | __GFP_ZERO);
|
||||
}
|
||||
--
|
||||
1.6.2.5
|
||||
|
45
linux-2.6-debug-nmi-timeout.patch
Normal file
45
linux-2.6-debug-nmi-timeout.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From 542dee6f43067fa0101b53925aadf1d08c997cd4 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:40:27 -0400
|
||||
Subject: linux-2.6-debug-nmi-timeout
|
||||
|
||||
---
|
||||
arch/x86/kernel/apic/nmi.c | 2 +-
|
||||
lib/Kconfig.debug | 8 ++++++++
|
||||
2 files changed, 9 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/apic/nmi.c b/arch/x86/kernel/apic/nmi.c
|
||||
index 8aa65ad..ba7d55e 100644
|
||||
--- a/arch/x86/kernel/apic/nmi.c
|
||||
+++ b/arch/x86/kernel/apic/nmi.c
|
||||
@@ -439,7 +439,7 @@ nmi_watchdog_tick(struct pt_regs *regs, unsigned reason)
|
||||
* wait a few IRQs (5 seconds) before doing the oops ...
|
||||
*/
|
||||
__this_cpu_inc(alert_counter);
|
||||
- if (__this_cpu_read(alert_counter) == 5 * nmi_hz)
|
||||
+ if (__this_cpu_read(alert_counter) == CONFIG_DEBUG_NMI_TIMEOUT * nmi_hz)
|
||||
/*
|
||||
* die_nmi will return ONLY if NOTIFY_STOP happens..
|
||||
*/
|
||||
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
|
||||
index 1fafb4b..963e78b 100644
|
||||
--- a/lib/Kconfig.debug
|
||||
+++ b/lib/Kconfig.debug
|
||||
@@ -254,6 +254,14 @@ config SCHEDSTATS
|
||||
application, you can say N to avoid the very slight overhead
|
||||
this adds.
|
||||
|
||||
+config DEBUG_NMI_TIMEOUT
|
||||
+ int "Number of seconds before NMI timeout"
|
||||
+ depends on X86
|
||||
+ default 5
|
||||
+ help
|
||||
+ This value is the number of seconds the NMI watchdog will tick
|
||||
+ before it decides the machine has hung.
|
||||
+
|
||||
config TIMER_STATS
|
||||
bool "Collect kernel timers statistics"
|
||||
depends on DEBUG_KERNEL && PROC_FS
|
||||
--
|
||||
1.7.0.1
|
||||
|
31
linux-2.6-debug-sizeof-structs.patch
Normal file
31
linux-2.6-debug-sizeof-structs.patch
Normal file
@ -0,0 +1,31 @@
|
||||
diff --git a/init/main.c b/init/main.c
|
||||
index 7449819..98cfaae 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -369,6 +369,10 @@ static void __init setup_nr_cpu_ids(void)
|
||||
nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
|
||||
}
|
||||
|
||||
+#include <linux/ext3_fs_i.h>
|
||||
+#include <linux/skbuff.h>
|
||||
+#include <linux/sched.h>
|
||||
+
|
||||
/* Called by boot processor to activate the rest. */
|
||||
static void __init smp_init(void)
|
||||
{
|
||||
@@ -391,6 +395,15 @@ static void __init smp_init(void)
|
||||
/* Any cleanup work */
|
||||
printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
|
||||
smp_cpus_done(setup_max_cpus);
|
||||
+
|
||||
+ printk(KERN_DEBUG "sizeof(vma)=%u bytes\n", (unsigned int) sizeof(struct vm_area_struct));
|
||||
+ printk(KERN_DEBUG "sizeof(page)=%u bytes\n", (unsigned int) sizeof(struct page));
|
||||
+ printk(KERN_DEBUG "sizeof(inode)=%u bytes\n", (unsigned int) sizeof(struct inode));
|
||||
+ printk(KERN_DEBUG "sizeof(dentry)=%u bytes\n", (unsigned int) sizeof(struct dentry));
|
||||
+ printk(KERN_DEBUG "sizeof(ext3inode)=%u bytes\n", (unsigned int) sizeof(struct ext3_inode_info));
|
||||
+ printk(KERN_DEBUG "sizeof(buffer_head)=%u bytes\n", (unsigned int) sizeof(struct buffer_head));
|
||||
+ printk(KERN_DEBUG "sizeof(skbuff)=%u bytes\n", (unsigned int) sizeof(struct sk_buff));
|
||||
+ printk(KERN_DEBUG "sizeof(task_struct)=%u bytes\n", (unsigned int) sizeof(struct task_struct));
|
||||
}
|
||||
|
||||
#endif
|
65
linux-2.6-debug-taint-vm.patch
Normal file
65
linux-2.6-debug-taint-vm.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From b04c57d9dc889462951312be2ac81ff6c702e954 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Wed, 8 Jul 2009 13:05:09 -0400
|
||||
Subject: [PATCH 3/6] fedora: linux-2.6-debug-taint-vm.patch
|
||||
|
||||
---
|
||||
kernel/panic.c | 4 +++-
|
||||
mm/slab.c | 8 ++++----
|
||||
mm/slub.c | 2 +-
|
||||
4 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/kernel/panic.c b/kernel/panic.c
|
||||
index 984b3ec..6d1c3be 100644
|
||||
--- a/kernel/panic.c
|
||||
+++ b/kernel/panic.c
|
||||
@@ -199,6 +199,7 @@ const char *print_tainted(void)
|
||||
|
||||
return buf;
|
||||
}
|
||||
+EXPORT_SYMBOL(print_tainted);
|
||||
|
||||
int test_taint(unsigned flag)
|
||||
{
|
||||
diff --git a/mm/slab.c b/mm/slab.c
|
||||
index e74a16e..7bc287e 100644
|
||||
--- a/mm/slab.c
|
||||
+++ b/mm/slab.c
|
||||
@@ -1803,8 +1803,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
|
||||
/* Print header */
|
||||
if (lines == 0) {
|
||||
printk(KERN_ERR
|
||||
- "Slab corruption: %s start=%p, len=%d\n",
|
||||
- cachep->name, realobj, size);
|
||||
+ "Slab corruption (%s): %s start=%p, len=%d\n",
|
||||
+ print_tainted(), cachep->name, realobj, size);
|
||||
print_objinfo(cachep, objp, 0);
|
||||
}
|
||||
/* Hexdump the affected line */
|
||||
@@ -2902,8 +2902,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
|
||||
if (entries != cachep->num - slabp->inuse) {
|
||||
bad:
|
||||
printk(KERN_ERR "slab: Internal list corruption detected in "
|
||||
- "cache '%s'(%d), slabp %p(%d). Hexdump:\n",
|
||||
- cachep->name, cachep->num, slabp, slabp->inuse);
|
||||
+ "cache '%s'(%d), slabp %p(%d). Tainted(%s). Hexdump:\n",
|
||||
+ cachep->name, cachep->num, slabp, slabp->inuse, print_tainted());
|
||||
for (i = 0;
|
||||
i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t);
|
||||
i++) {
|
||||
diff --git a/mm/slub.c b/mm/slub.c
|
||||
index 819f056..8eff0f4 100644
|
||||
--- a/mm/slub.c
|
||||
+++ b/mm/slub.c
|
||||
@@ -433,7 +433,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
|
||||
va_end(args);
|
||||
printk(KERN_ERR "========================================"
|
||||
"=====================================\n");
|
||||
- printk(KERN_ERR "BUG %s: %s\n", s->name, buf);
|
||||
+ printk(KERN_ERR "BUG %s (%s): %s\n", s->name, print_tainted(), buf);
|
||||
printk(KERN_ERR "----------------------------------------"
|
||||
"-------------------------------------\n\n");
|
||||
}
|
||||
--
|
||||
1.6.2.5
|
||||
|
64
linux-2.6-debug-vm-would-have-oomkilled.patch
Normal file
64
linux-2.6-debug-vm-would-have-oomkilled.patch
Normal file
@ -0,0 +1,64 @@
|
||||
From 03657519851cd180983db4bd0c38eaeed4aa2962 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@treachery.i.jkkm.org>
|
||||
Date: Mon, 11 Jan 2010 08:25:12 -0500
|
||||
Subject: linux-2.6-debug-vm-would-have-oomkilled.patch
|
||||
|
||||
---
|
||||
kernel/sysctl.c | 8 ++++++++
|
||||
mm/oom_kill.c | 7 +++++++
|
||||
2 files changed, 15 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
|
||||
index 8a68b24..72a4ff1 100644
|
||||
--- a/kernel/sysctl.c
|
||||
+++ b/kernel/sysctl.c
|
||||
@@ -71,6 +71,7 @@ extern int sysctl_overcommit_ratio;
|
||||
extern int sysctl_panic_on_oom;
|
||||
extern int sysctl_oom_kill_allocating_task;
|
||||
extern int sysctl_oom_dump_tasks;
|
||||
+extern int sysctl_would_have_oomkilled;
|
||||
extern int max_threads;
|
||||
extern int core_uses_pid;
|
||||
extern int suid_dumpable;
|
||||
@@ -973,6 +974,13 @@ static struct ctl_table vm_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
+ .procname = "would_have_oomkilled",
|
||||
+ .data = &sysctl_would_have_oomkilled,
|
||||
+ .maxlen = sizeof(sysctl_would_have_oomkilled),
|
||||
+ .mode = 0644,
|
||||
+ .proc_handler = &proc_dointvec,
|
||||
+ },
|
||||
+ {
|
||||
.procname = "overcommit_ratio",
|
||||
.data = &sysctl_overcommit_ratio,
|
||||
.maxlen = sizeof(sysctl_overcommit_ratio),
|
||||
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
|
||||
index f52481b..a892f07 100644
|
||||
--- a/mm/oom_kill.c
|
||||
+++ b/mm/oom_kill.c
|
||||
@@ -31,6 +31,7 @@
|
||||
int sysctl_panic_on_oom;
|
||||
int sysctl_oom_kill_allocating_task;
|
||||
int sysctl_oom_dump_tasks;
|
||||
+int sysctl_would_have_oomkilled;
|
||||
static DEFINE_SPINLOCK(zone_scan_lock);
|
||||
/* #define DEBUG */
|
||||
|
||||
@@ -396,6 +397,12 @@ static void __oom_kill_task(struct task_struct *p, int verbose)
|
||||
return;
|
||||
}
|
||||
|
||||
+ if (sysctl_would_have_oomkilled == 1) {
|
||||
+ printk(KERN_ERR "Would have killed process %d (%s). But continuing instead.\n",
|
||||
+ task_pid_nr(p), p->comm);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (verbose)
|
||||
printk(KERN_ERR "Killed process %d (%s) "
|
||||
"vsz:%lukB, anon-rss:%lukB, file-rss:%lukB\n",
|
||||
--
|
||||
1.6.5.2
|
||||
|
13
linux-2.6-defaults-acpi-video.patch
Normal file
13
linux-2.6-defaults-acpi-video.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
|
||||
index d8d7596..a1b7117 100644
|
||||
--- a/drivers/acpi/video.c
|
||||
+++ b/drivers/acpi/video.c
|
||||
@@ -71,7 +71,7 @@ MODULE_AUTHOR("Bruno Ducrot");
|
||||
MODULE_DESCRIPTION("ACPI Video Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
-static int brightness_switch_enabled = 1;
|
||||
+static int brightness_switch_enabled = 0;
|
||||
module_param(brightness_switch_enabled, bool, 0644);
|
||||
|
||||
static int acpi_video_bus_add(struct acpi_device *device);
|
12
linux-2.6-defaults-aspm.patch
Normal file
12
linux-2.6-defaults-aspm.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -up linux-2.6.30.noarch/drivers/pci/pcie/aspm.c.mjg linux-2.6.30.noarch/drivers/pci/pcie/aspm.c
|
||||
--- linux-2.6.30.noarch/drivers/pci/pcie/aspm.c.mjg 2009-07-16 22:01:11.000000000 +0100
|
||||
+++ linux-2.6.30.noarch/drivers/pci/pcie/aspm.c 2009-07-16 22:01:30.000000000 +0100
|
||||
@@ -65,7 +65,7 @@ static LIST_HEAD(link_list);
|
||||
#define POLICY_DEFAULT 0 /* BIOS default setting */
|
||||
#define POLICY_PERFORMANCE 1 /* high performance */
|
||||
#define POLICY_POWERSAVE 2 /* high power saving */
|
||||
-static int aspm_policy;
|
||||
+static int aspm_policy = POLICY_POWERSAVE;
|
||||
static const char *policy_str[] = {
|
||||
[POLICY_DEFAULT] = "default",
|
||||
[POLICY_PERFORMANCE] = "performance",
|
110
linux-2.6-defaults-pci_no_msi.patch
Normal file
110
linux-2.6-defaults-pci_no_msi.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From 14bdd0d36f5284108468bb73afd50726b07c7a84 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:43:49 -0400
|
||||
Subject: linux-2.6-defaults-pci_no_msi
|
||||
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 3 +++
|
||||
drivers/pci/Kconfig | 12 ++++++++++++
|
||||
drivers/pci/msi.c | 9 +++++++++
|
||||
drivers/pci/pci.c | 2 ++
|
||||
drivers/pci/pci.h | 2 ++
|
||||
5 files changed, 28 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index e4cbca5..8154a0f 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -1911,6 +1911,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
check_enable_amd_mmconf [X86] check for and enable
|
||||
properly configured MMIO access to PCI
|
||||
config space on AMD family 10h CPU
|
||||
+ msi [MSI] If the PCI_MSI kernel config parameter is
|
||||
+ enabled, this kernel boot option can be used to
|
||||
+ enable the use of MSI interrupts system-wide.
|
||||
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||||
enabled, this kernel boot option can be used to
|
||||
disable the use of MSI interrupts system-wide.
|
||||
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
|
||||
index 7858a11..b12fcad 100644
|
||||
--- a/drivers/pci/Kconfig
|
||||
+++ b/drivers/pci/Kconfig
|
||||
@@ -21,6 +21,18 @@ config PCI_MSI
|
||||
|
||||
If you don't know what to do here, say Y.
|
||||
|
||||
+config PCI_MSI_DEFAULT_ON
|
||||
+ def_bool y
|
||||
+ prompt "Use Message Signaled Interrupts by default"
|
||||
+ depends on PCI_MSI
|
||||
+ help
|
||||
+ Selecting this option will enable use of PCI MSI where applicable
|
||||
+ by default. Support for MSI can be disabled through the use of the
|
||||
+ pci=nomsi boot flag. Conversely, if this option is not selected,
|
||||
+ support for PCI MSI can be enabled by passing the pci=msi flag.
|
||||
+
|
||||
+ If you don't know what to do here, say N.
|
||||
+
|
||||
config PCI_DEBUG
|
||||
bool "PCI Debugging"
|
||||
depends on PCI && DEBUG_KERNEL
|
||||
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
|
||||
index f9cf317..6b0539a 100644
|
||||
--- a/drivers/pci/msi.c
|
||||
+++ b/drivers/pci/msi.c
|
||||
@@ -22,7 +22,11 @@
|
||||
#include "pci.h"
|
||||
#include "msi.h"
|
||||
|
||||
+#ifdef CONFIG_PCI_MSI_DEFAULT_ON
|
||||
static int pci_msi_enable = 1;
|
||||
+#else
|
||||
+static int pci_msi_enable = 0;
|
||||
+#endif /*CONFIG_PCI_MSI_DEFAULT_ON*/
|
||||
|
||||
/* Arch hooks */
|
||||
|
||||
@@ -836,6 +840,11 @@ int pci_msi_enabled(void)
|
||||
}
|
||||
EXPORT_SYMBOL(pci_msi_enabled);
|
||||
|
||||
+void pci_yes_msi(void)
|
||||
+{
|
||||
+ pci_msi_enable = 1;
|
||||
+}
|
||||
+
|
||||
void pci_msi_init_pci_dev(struct pci_dev *dev)
|
||||
{
|
||||
INIT_LIST_HEAD(&dev->msi_list);
|
||||
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
|
||||
index 1531f3a..3cb332b 100644
|
||||
--- a/drivers/pci/pci.c
|
||||
+++ b/drivers/pci/pci.c
|
||||
@@ -2983,6 +2983,8 @@ static int __init pci_setup(char *str)
|
||||
if (*str && (str = pcibios_setup(str)) && *str) {
|
||||
if (!strcmp(str, "nomsi")) {
|
||||
pci_no_msi();
|
||||
+ } else if (!strcmp(str, "msi")) {
|
||||
+ pci_yes_msi();
|
||||
} else if (!strcmp(str, "noaer")) {
|
||||
pci_no_aer();
|
||||
} else if (!strcmp(str, "nodomains")) {
|
||||
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
|
||||
index 4eb10f4..caa051e 100644
|
||||
--- a/drivers/pci/pci.h
|
||||
+++ b/drivers/pci/pci.h
|
||||
@@ -122,9 +122,11 @@ extern unsigned int pci_pm_d3_delay;
|
||||
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
void pci_no_msi(void);
|
||||
+void pci_yes_msi(void);
|
||||
extern void pci_msi_init_pci_dev(struct pci_dev *dev);
|
||||
#else
|
||||
static inline void pci_no_msi(void) { }
|
||||
+static inline void pci_yes_msi(void) { }
|
||||
static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
|
||||
#endif
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
46
linux-2.6-ext4-fix-freeze-deadlock.patch
Normal file
46
linux-2.6-ext4-fix-freeze-deadlock.patch
Normal file
@ -0,0 +1,46 @@
|
||||
[PATCH] ext4: fix freeze deadlock under IO
|
||||
|
||||
Commit 6b0310fbf087ad6 caused a regression resulting in deadlocks
|
||||
when freezing a filesystem which had active IO; the vfs_check_frozen
|
||||
level (SB_FREEZE_WRITE) did not let the freeze-related IO syncing
|
||||
through. Duh.
|
||||
|
||||
Changing the test to FREEZE_TRANS should let the normal freeze
|
||||
syncing get through the fs, but still block any transactions from
|
||||
starting once the fs is completely frozen.
|
||||
|
||||
I tested this by running fsstress in the background while periodically
|
||||
snapshotting the fs and running fsck on the result. I ran into
|
||||
occasional deadlocks, but different ones. I think this is a
|
||||
fine fix for the problem at hand, and the other deadlocky things
|
||||
will need more investigation.
|
||||
|
||||
Reported-by: Phillip Susi <psusi@cfl.rr.com>
|
||||
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
|
||||
---
|
||||
|
||||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
|
||||
index 4e8983a..a45ced9 100644
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -241,7 +241,7 @@ handle_t *ext4_journal_start_sb(struct super_block *sb, int nblocks)
|
||||
if (sb->s_flags & MS_RDONLY)
|
||||
return ERR_PTR(-EROFS);
|
||||
|
||||
- vfs_check_frozen(sb, SB_FREEZE_WRITE);
|
||||
+ vfs_check_frozen(sb, SB_FREEZE_TRANS);
|
||||
/* Special case here: if the journal has aborted behind our
|
||||
* backs (eg. EIO in the commit thread), then we still need to
|
||||
* take the FS itself readonly cleanly. */
|
||||
@@ -3491,7 +3491,7 @@ int ext4_force_commit(struct super_block *sb)
|
||||
|
||||
journal = EXT4_SB(sb)->s_journal;
|
||||
if (journal) {
|
||||
- vfs_check_frozen(sb, SB_FREEZE_WRITE);
|
||||
+ vfs_check_frozen(sb, SB_FREEZE_TRANS);
|
||||
ret = ext4_journal_force_commit(journal);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
4
linux-2.6-firewire-git-pending.patch
Normal file
4
linux-2.6-firewire-git-pending.patch
Normal file
@ -0,0 +1,4 @@
|
||||
#
|
||||
# Patches under review and/or pending inclusion in the linux1394-git
|
||||
# tree (and/or in by the time your read this), which we want...
|
||||
#
|
3682
linux-2.6-firewire-git-update.patch
Normal file
3682
linux-2.6-firewire-git-update.patch
Normal file
File diff suppressed because it is too large
Load Diff
15
linux-2.6-hotfixes.patch
Normal file
15
linux-2.6-hotfixes.patch
Normal file
@ -0,0 +1,15 @@
|
||||
fixes:
|
||||
implicit declaration of function kzalloc
|
||||
|
||||
--- linux-2.6.34.noarch/drivers/usb/serial/qcserial.c~ 2010-06-08 15:19:41.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/usb/serial/qcserial.c 2010-06-08 15:19:47.000000000 -0400
|
||||
@@ -11,6 +11,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#include <linux/slab.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/tty_flip.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
|
628
linux-2.6-i386-nx-emulation.patch
Normal file
628
linux-2.6-i386-nx-emulation.patch
Normal file
@ -0,0 +1,628 @@
|
||||
--- a/arch/x86/include/asm/desc.h
|
||||
+++ b/arch/x86/include/asm/desc.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <asm/ldt.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <linux/smp.h>
|
||||
+#include <linux/mm_types.h>
|
||||
|
||||
static inline void fill_ldt(struct desc_struct *desc,
|
||||
const struct user_desc *info)
|
||||
@@ -93,6 +94,9 @@ static inline int desc_empty(const void *ptr)
|
||||
|
||||
#define load_TLS(t, cpu) native_load_tls(t, cpu)
|
||||
#define set_ldt native_set_ldt
|
||||
+#ifdef CONFIG_X86_32
|
||||
+#define load_user_cs_desc native_load_user_cs_desc
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
|
||||
#define write_ldt_entry(dt, entry, desc) \
|
||||
native_write_ldt_entry(dt, entry, desc)
|
||||
@@ -392,4 +396,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
|
||||
_set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline void set_user_cs(struct desc_struct *desc, unsigned long limit)
|
||||
+{
|
||||
+ limit = (limit - 1) / PAGE_SIZE;
|
||||
+ desc->a = limit & 0xffff;
|
||||
+ desc->b = (limit & 0xf0000) | 0x00c0fb00;
|
||||
+}
|
||||
+
|
||||
+static inline void native_load_user_cs_desc(int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs;
|
||||
+}
|
||||
+
|
||||
+#define arch_add_exec_range arch_add_exec_range
|
||||
+#define arch_remove_exec_range arch_remove_exec_range
|
||||
+#define arch_flush_exec_range arch_flush_exec_range
|
||||
+extern void arch_add_exec_range(struct mm_struct *mm, unsigned long limit);
|
||||
+extern void arch_remove_exec_range(struct mm_struct *mm, unsigned long limit);
|
||||
+extern void arch_flush_exec_range(struct mm_struct *mm);
|
||||
+#endif /* CONFIG_X86_32 */
|
||||
+
|
||||
#endif /* _ASM_X86_DESC_H */
|
||||
--- a/arch/x86/include/asm/mmu.h
|
||||
+++ b/arch/x86/include/asm/mmu.h
|
||||
@@ -7,12 +7,19 @@
|
||||
/*
|
||||
* The x86 doesn't have a mmu context, but
|
||||
* we put the segment information here.
|
||||
+ *
|
||||
+ * exec_limit is used to track the range PROT_EXEC
|
||||
+ * mappings span.
|
||||
*/
|
||||
typedef struct {
|
||||
void *ldt;
|
||||
int size;
|
||||
struct mutex lock;
|
||||
void *vdso;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ struct desc_struct user_cs;
|
||||
+ unsigned long exec_limit;
|
||||
+#endif
|
||||
} mm_context_t;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
--- a/arch/x86/include/asm/paravirt.h
|
||||
+++ b/arch/x86/include/asm/paravirt.h
|
||||
@@ -289,6 +289,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
|
||||
{
|
||||
PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
|
||||
}
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline void load_user_cs_desc(unsigned int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ PVOP_VCALL2(pv_cpu_ops.load_user_cs_desc, cpu, mm);
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
static inline void store_gdt(struct desc_ptr *dtr)
|
||||
{
|
||||
PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
|
||||
--- a/arch/x86/include/asm/paravirt_types.h
|
||||
+++ b/arch/x86/include/asm/paravirt_types.h
|
||||
@@ -118,6 +118,9 @@ struct pv_cpu_ops {
|
||||
void (*store_gdt)(struct desc_ptr *);
|
||||
void (*store_idt)(struct desc_ptr *);
|
||||
void (*set_ldt)(const void *desc, unsigned entries);
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
|
||||
+#endif
|
||||
unsigned long (*store_tr)(void);
|
||||
void (*load_tls)(struct thread_struct *t, unsigned int cpu);
|
||||
#ifdef CONFIG_X86_64
|
||||
--- a/arch/x86/kernel/cpu/common.c
|
||||
+++ b/arch/x86/kernel/cpu/common.c
|
||||
@@ -802,6 +802,22 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
/* Filter out anything that depends on CPUID levels we don't have */
|
||||
filter_cpuid_features(c, true);
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /*
|
||||
+ * emulation of NX with segment limits unfortunately means
|
||||
+ * we have to disable the fast system calls, due to the way that
|
||||
+ * sysexit clears the segment limits on return.
|
||||
+ * If we have either disabled exec-shield on the boot command line,
|
||||
+ * or we have NX, then we don't need to do this.
|
||||
+ */
|
||||
+ if (exec_shield != 0) {
|
||||
+#ifdef CONFIG_X86_PAE
|
||||
+ if (!test_cpu_cap(c, X86_FEATURE_NX))
|
||||
+#endif
|
||||
+ clear_cpu_cap(c, X86_FEATURE_SEP);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* If the model name is still unset, do table lookup. */
|
||||
if (!c->x86_model_id[0]) {
|
||||
const char *p;
|
||||
--- a/arch/x86/kernel/paravirt.c
|
||||
+++ b/arch/x86/kernel/paravirt.c
|
||||
@@ -345,6 +345,9 @@ struct pv_cpu_ops pv_cpu_ops = {
|
||||
.read_tscp = native_read_tscp,
|
||||
.load_tr_desc = native_load_tr_desc,
|
||||
.set_ldt = native_set_ldt,
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ .load_user_cs_desc = native_load_user_cs_desc,
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
.load_gdt = native_load_gdt,
|
||||
.load_idt = native_load_idt,
|
||||
.store_gdt = native_store_gdt,
|
||||
--- a/arch/x86/kernel/process_32.c
|
||||
+++ b/arch/x86/kernel/process_32.c
|
||||
@@ -243,7 +243,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
|
||||
void
|
||||
start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
{
|
||||
+ int cpu;
|
||||
+
|
||||
set_user_gs(regs, 0);
|
||||
+
|
||||
regs->fs = 0;
|
||||
set_fs(USER_DS);
|
||||
regs->ds = __USER_DS;
|
||||
@@ -252,6 +255,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
regs->cs = __USER_CS;
|
||||
regs->ip = new_ip;
|
||||
regs->sp = new_sp;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ load_user_cs_desc(cpu, current->mm);
|
||||
+ put_cpu();
|
||||
+
|
||||
/*
|
||||
* Free the old FP and other extended state
|
||||
*/
|
||||
@@ -311,6 +319,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
|
||||
if (preload_fpu)
|
||||
prefetch(next->fpu.state);
|
||||
|
||||
+ if (next_p->mm)
|
||||
+ load_user_cs_desc(cpu, next_p->mm);
|
||||
+
|
||||
/*
|
||||
* Reload esp0.
|
||||
*/
|
||||
@@ -404,3 +415,40 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void modify_cs(struct mm_struct *mm, unsigned long limit)
|
||||
+{
|
||||
+ mm->context.exec_limit = limit;
|
||||
+ set_user_cs(&mm->context.user_cs, limit);
|
||||
+ if (mm == current->mm) {
|
||||
+ int cpu;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ load_user_cs_desc(cpu, mm);
|
||||
+ put_cpu();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void arch_add_exec_range(struct mm_struct *mm, unsigned long limit)
|
||||
+{
|
||||
+ if (limit > mm->context.exec_limit)
|
||||
+ modify_cs(mm, limit);
|
||||
+}
|
||||
+
|
||||
+void arch_remove_exec_range(struct mm_struct *mm, unsigned long old_end)
|
||||
+{
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long limit = PAGE_SIZE;
|
||||
+
|
||||
+ if (old_end == mm->context.exec_limit) {
|
||||
+ for (vma = mm->mmap; vma; vma = vma->vm_next)
|
||||
+ if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ modify_cs(mm, limit);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void arch_flush_exec_range(struct mm_struct *mm)
|
||||
+{
|
||||
+ mm->context.exec_limit = 0;
|
||||
+ set_user_cs(&mm->context.user_cs, 0);
|
||||
+}
|
||||
--- a/arch/x86/kernel/traps.c
|
||||
+++ b/arch/x86/kernel/traps.c
|
||||
@@ -109,6 +109,78 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
|
||||
dec_preempt_count();
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline int
|
||||
+__compare_user_cs_desc(const struct desc_struct *desc1,
|
||||
+ const struct desc_struct *desc2)
|
||||
+{
|
||||
+ return ((desc1->limit0 != desc2->limit0) ||
|
||||
+ (desc1->limit != desc2->limit) ||
|
||||
+ (desc1->base0 != desc2->base0) ||
|
||||
+ (desc1->base1 != desc2->base1) ||
|
||||
+ (desc1->base2 != desc2->base2));
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * lazy-check for CS validity on exec-shield binaries:
|
||||
+ *
|
||||
+ * the original non-exec stack patch was written by
|
||||
+ * Solar Designer <solar at openwall.com>. Thanks!
|
||||
+ */
|
||||
+static int
|
||||
+check_lazy_exec_limit(int cpu, struct pt_regs *regs, long error_code)
|
||||
+{
|
||||
+ struct desc_struct *desc1, *desc2;
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long limit;
|
||||
+
|
||||
+ if (current->mm == NULL)
|
||||
+ return 0;
|
||||
+
|
||||
+ limit = -1UL;
|
||||
+ if (current->mm->context.exec_limit != -1UL) {
|
||||
+ limit = PAGE_SIZE;
|
||||
+ spin_lock(¤t->mm->page_table_lock);
|
||||
+ for (vma = current->mm->mmap; vma; vma = vma->vm_next)
|
||||
+ if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ vma = get_gate_vma(current);
|
||||
+ if (vma && (vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ spin_unlock(¤t->mm->page_table_lock);
|
||||
+ if (limit >= TASK_SIZE)
|
||||
+ limit = -1UL;
|
||||
+ current->mm->context.exec_limit = limit;
|
||||
+ }
|
||||
+ set_user_cs(¤t->mm->context.user_cs, limit);
|
||||
+
|
||||
+ desc1 = ¤t->mm->context.user_cs;
|
||||
+ desc2 = get_cpu_gdt_table(cpu) + GDT_ENTRY_DEFAULT_USER_CS;
|
||||
+
|
||||
+ if (__compare_user_cs_desc(desc1, desc2)) {
|
||||
+ /*
|
||||
+ * The CS was not in sync - reload it and retry the
|
||||
+ * instruction. If the instruction still faults then
|
||||
+ * we won't hit this branch next time around.
|
||||
+ */
|
||||
+ if (print_fatal_signals >= 2) {
|
||||
+ printk(KERN_ERR "#GPF fixup (%ld[seg:%lx]) at %08lx, CPU#%d.\n",
|
||||
+ error_code, error_code/8, regs->ip,
|
||||
+ smp_processor_id());
|
||||
+ printk(KERN_ERR "exec_limit: %08lx, user_cs: %08x/%08x, CPU_cs: %08x/%08x.\n",
|
||||
+ current->mm->context.exec_limit,
|
||||
+ desc1->a, desc1->b, desc2->a, desc2->b);
|
||||
+ }
|
||||
+
|
||||
+ load_user_cs_desc(cpu, current->mm);
|
||||
+
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static void __kprobes
|
||||
do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
|
||||
long error_code, siginfo_t *info)
|
||||
@@ -265,6 +337,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||
if (!user_mode(regs))
|
||||
goto gp_in_kernel;
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+{
|
||||
+ int cpu;
|
||||
+ int ok;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ ok = check_lazy_exec_limit(cpu, regs, error_code);
|
||||
+ put_cpu();
|
||||
+
|
||||
+ if (ok)
|
||||
+ return;
|
||||
+
|
||||
+ if (print_fatal_signals) {
|
||||
+ printk(KERN_ERR "#GPF(%ld[seg:%lx]) at %08lx, CPU#%d.\n",
|
||||
+ error_code, error_code/8, regs->ip, smp_processor_id());
|
||||
+ printk(KERN_ERR "exec_limit: %08lx, user_cs: %08x/%08x.\n",
|
||||
+ current->mm->context.exec_limit,
|
||||
+ current->mm->context.user_cs.a,
|
||||
+ current->mm->context.user_cs.b);
|
||||
+ }
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
+
|
||||
tsk->thread.error_code = error_code;
|
||||
tsk->thread.trap_no = 13;
|
||||
|
||||
@@ -792,19 +887,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
+/*
|
||||
+ * The fixup code for errors in iret jumps to here (iret_exc). It loses
|
||||
+ * the original trap number and erorr code. The bogus trap 32 and error
|
||||
+ * code 0 are what the vanilla kernel delivers via:
|
||||
+ * DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0, 1)
|
||||
+ *
|
||||
+ * NOTE: Because of the final "1" in the macro we need to enable interrupts.
|
||||
+ *
|
||||
+ * In case of a general protection fault in the iret instruction, we
|
||||
+ * need to check for a lazy CS update for exec-shield.
|
||||
+ */
|
||||
dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
|
||||
{
|
||||
- siginfo_t info;
|
||||
+ int ok;
|
||||
+ int cpu;
|
||||
+
|
||||
local_irq_enable();
|
||||
|
||||
- info.si_signo = SIGILL;
|
||||
- info.si_errno = 0;
|
||||
- info.si_code = ILL_BADSTK;
|
||||
- info.si_addr = NULL;
|
||||
- if (notify_die(DIE_TRAP, "iret exception",
|
||||
- regs, error_code, 32, SIGILL) == NOTIFY_STOP)
|
||||
- return;
|
||||
- do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
|
||||
+ cpu = get_cpu();
|
||||
+ ok = check_lazy_exec_limit(cpu, regs, error_code);
|
||||
+ put_cpu();
|
||||
+
|
||||
+ if (!ok && notify_die(DIE_TRAP, "iret exception", regs,
|
||||
+ error_code, 32, SIGSEGV) != NOTIFY_STOP) {
|
||||
+ siginfo_t info;
|
||||
+ info.si_signo = SIGSEGV;
|
||||
+ info.si_errno = 0;
|
||||
+ info.si_code = ILL_BADSTK;
|
||||
+ info.si_addr = 0;
|
||||
+ do_trap(32, SIGSEGV, "iret exception", regs, error_code, &info);
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
|
||||
--- a/arch/x86/mm/setup_nx.c
|
||||
+++ b/arch/x86/mm/setup_nx.c
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include <linux/sched.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
@@ -23,6 +24,7 @@ static int __init noexec_setup(char *str)
|
||||
disable_nx = 0;
|
||||
} else if (!strncmp(str, "off", 3)) {
|
||||
disable_nx = 1;
|
||||
+ exec_shield = 0;
|
||||
}
|
||||
x86_configure_nx();
|
||||
return 0;
|
||||
@@ -40,6 +42,10 @@ void __cpuinit x86_configure_nx(void)
|
||||
void __init x86_report_nx(void)
|
||||
{
|
||||
if (!cpu_has_nx) {
|
||||
+ if (exec_shield)
|
||||
+ printk(KERN_INFO "Using x86 segment limits to approximate NX protection\n");
|
||||
+ else
|
||||
+
|
||||
printk(KERN_NOTICE "Notice: NX (Execute Disable) protection "
|
||||
"missing in CPU or disabled in BIOS!\n");
|
||||
} else {
|
||||
--- a/arch/x86/mm/tlb.c
|
||||
+++ b/arch/x86/mm/tlb.c
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
+#include <asm/desc.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/cache.h>
|
||||
@@ -131,6 +132,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
union smp_flush_state *f;
|
||||
|
||||
cpu = smp_processor_id();
|
||||
+
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ if (current->active_mm)
|
||||
+ load_user_cs_desc(cpu, current->active_mm);
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* orig_rax contains the negated interrupt vector.
|
||||
* Use that to determine where the sender put the data.
|
||||
--- a/arch/x86/xen/enlighten.c
|
||||
+++ b/arch/x86/xen/enlighten.c
|
||||
@@ -335,6 +335,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
|
||||
xen_mc_issue(PARAVIRT_LAZY_CPU);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static void xen_load_user_cs_desc(int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ void *gdt;
|
||||
+ xmaddr_t mgdt;
|
||||
+ u64 descriptor;
|
||||
+ struct desc_struct user_cs;
|
||||
+
|
||||
+ gdt = &get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS];
|
||||
+ mgdt = virt_to_machine(gdt);
|
||||
+
|
||||
+ user_cs = mm->context.user_cs;
|
||||
+ descriptor = (u64) user_cs.a | ((u64) user_cs.b) << 32;
|
||||
+
|
||||
+ HYPERVISOR_update_descriptor(mgdt.maddr, descriptor);
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
+
|
||||
static void xen_load_gdt(const struct desc_ptr *dtr)
|
||||
{
|
||||
unsigned long va = dtr->address;
|
||||
@@ -961,6 +979,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
|
||||
|
||||
.load_tr_desc = paravirt_nop,
|
||||
.set_ldt = xen_set_ldt,
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ .load_user_cs_desc = xen_load_user_cs_desc,
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
.load_gdt = xen_load_gdt,
|
||||
.load_idt = xen_load_idt,
|
||||
.load_tls = xen_load_tls,
|
||||
--- a/fs/binfmt_elf.c
|
||||
+++ b/fs/binfmt_elf.c
|
||||
@@ -717,6 +722,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
if (retval)
|
||||
goto out_free_dentry;
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /*
|
||||
+ * Turn off the CS limit completely if exec-shield disabled or
|
||||
+ * NX active:
|
||||
+ */
|
||||
+ if (!exec_shield || executable_stack != EXSTACK_DISABLE_X || (__supported_pte_mask & _PAGE_NX))
|
||||
+ arch_add_exec_range(current->mm, -1);
|
||||
+#endif
|
||||
+
|
||||
/* OK, This is the point of no return */
|
||||
current->flags &= ~PF_FORKNOEXEC;
|
||||
current->mm->def_flags = def_flags;
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -101,6 +101,9 @@ struct bio_list;
|
||||
struct fs_struct;
|
||||
struct perf_event_context;
|
||||
|
||||
+extern int exec_shield;
|
||||
+extern int print_fatal_signals;
|
||||
+
|
||||
/*
|
||||
* List of flags we want to share for kernel threads,
|
||||
* if only because they are not used by them anyway.
|
||||
--- a/kernel/sysctl.c
|
||||
+++ b/kernel/sysctl.c
|
||||
@@ -101,6 +101,17 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
|
||||
#ifndef CONFIG_MMU
|
||||
extern int sysctl_nr_trim_pages;
|
||||
#endif
|
||||
+
|
||||
+int exec_shield = 1;
|
||||
+
|
||||
+static int __init setup_exec_shield(char *str)
|
||||
+{
|
||||
+ get_option(&str, &exec_shield);
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+__setup("exec-shield=", setup_exec_shield);
|
||||
+
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int blk_iopoll_enabled;
|
||||
#endif
|
||||
@@ -428,6 +448,16 @@ static struct ctl_table kern_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ {
|
||||
+ .procname = "exec-shield",
|
||||
+ .data = &exec_shield,
|
||||
+ .maxlen = sizeof(int),
|
||||
+ .mode = 0644,
|
||||
+ .proc_handler = &proc_dointvec,
|
||||
+ },
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_PROC_SYSCTL
|
||||
{
|
||||
.procname = "tainted",
|
||||
--- b/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -44,6 +45,18 @@
|
||||
#define arch_rebalance_pgtables(addr, len) (addr)
|
||||
#endif
|
||||
|
||||
+/* No sane architecture will #define these to anything else */
|
||||
+#ifndef arch_add_exec_range
|
||||
+#define arch_add_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+#ifndef arch_flush_exec_range
|
||||
+#define arch_flush_exec_range(mm) do { ; } while (0)
|
||||
+#endif
|
||||
+#ifndef arch_remove_exec_range
|
||||
+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
static void unmap_region(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *prev,
|
||||
unsigned long start, unsigned long end);
|
||||
@@ -388,6 +401,8 @@
|
||||
__vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev, struct rb_node *rb_parent)
|
||||
{
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, vma->vm_end);
|
||||
if (prev) {
|
||||
vma->vm_next = prev->vm_next;
|
||||
prev->vm_next = vma;
|
||||
@@ -489,6 +504,8 @@
|
||||
rb_erase(&vma->vm_rb, &mm->mm_rb);
|
||||
if (mm->mmap_cache == vma)
|
||||
mm->mmap_cache = prev;
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_remove_exec_range(mm, vma->vm_end);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -790,6 +807,8 @@
|
||||
} else /* cases 2, 5, 7 */
|
||||
err = vma_adjust(prev, prev->vm_start,
|
||||
end, prev->vm_pgoff, NULL);
|
||||
+ if (prev->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, prev->vm_end);
|
||||
if (err)
|
||||
return NULL;
|
||||
return prev;
|
||||
@@ -1966,10 +2075,14 @@
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
|
||||
- if (new_below)
|
||||
+ if (new_below) {
|
||||
+ unsigned long old_end = vma->vm_end;
|
||||
+
|
||||
err = vma_adjust(vma, addr, vma->vm_end, vma->vm_pgoff +
|
||||
((addr - new->vm_start) >> PAGE_SHIFT), new);
|
||||
- else
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_remove_exec_range(mm, old_end);
|
||||
+ } else
|
||||
err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
|
||||
|
||||
/* Success. */
|
||||
@@ -2254,6 +2367,7 @@
|
||||
|
||||
free_pgtables(tlb, vma, FIRST_USER_ADDRESS, 0);
|
||||
tlb_finish_mmu(tlb, 0, end);
|
||||
+ arch_flush_exec_range(mm);
|
||||
|
||||
/*
|
||||
* Walk the list again, actually closing and freeing it,
|
||||
--- a/mm/mprotect.c
|
||||
+++ b/mm/mprotect.c
|
||||
@@ -25,9 +25,14 @@
|
||||
#include <linux/perf_event.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgtable.h>
|
||||
+#include <asm/pgalloc.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
+#ifndef arch_remove_exec_range
|
||||
+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+
|
||||
#ifndef pgprot_modify
|
||||
static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
|
||||
{
|
||||
@@ -138,7 +143,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long oldflags = vma->vm_flags;
|
||||
long nrpages = (end - start) >> PAGE_SHIFT;
|
||||
- unsigned long charged = 0;
|
||||
+ unsigned long charged = 0, old_end = vma->vm_end;
|
||||
pgoff_t pgoff;
|
||||
int error;
|
||||
int dirty_accountable = 0;
|
||||
@@ -203,6 +208,9 @@ success:
|
||||
dirty_accountable = 1;
|
||||
}
|
||||
|
||||
+ if (oldflags & VM_EXEC)
|
||||
+ arch_remove_exec_range(current->mm, old_end);
|
||||
+
|
||||
mmu_notifier_invalidate_range_start(mm, start, end);
|
||||
if (is_vm_hugetlb_page(vma))
|
||||
hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
|
32
linux-2.6-input-kill-stupid-messages.patch
Normal file
32
linux-2.6-input-kill-stupid-messages.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From b2c6d55b2351152696aafb8c9bf3ec8968acf77c Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:59:58 -0400
|
||||
Subject: linux-2.6-input-kill-stupid-messages
|
||||
|
||||
---
|
||||
drivers/input/keyboard/atkbd.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
|
||||
index d358ef8..38db098 100644
|
||||
--- a/drivers/input/keyboard/atkbd.c
|
||||
+++ b/drivers/input/keyboard/atkbd.c
|
||||
@@ -425,11 +426,15 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
||||
goto out;
|
||||
case ATKBD_RET_ACK:
|
||||
case ATKBD_RET_NAK:
|
||||
+#if 0
|
||||
+ /* Quite a few key switchers and other tools trigger this
|
||||
+ * and it confuses people who can do nothing about it */
|
||||
if (printk_ratelimit())
|
||||
dev_warn(&serio->dev,
|
||||
"Spurious %s on %s. "
|
||||
"Some program might be trying access hardware directly.\n",
|
||||
data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys);
|
||||
+#endif
|
||||
goto out;
|
||||
case ATKBD_RET_ERR:
|
||||
atkbd->err_count++;
|
||||
--
|
||||
1.7.0.1
|
||||
|
78
linux-2.6-intel-iommu-igfx.patch
Normal file
78
linux-2.6-intel-iommu-igfx.patch
Normal file
@ -0,0 +1,78 @@
|
||||
Subject: [PATCH] [intel_iommu] Default to igfx_off
|
||||
From: drago01 <drago01@gmail.com>
|
||||
To: fedora-kernel-list <fedora-kernel-list@redhat.com>
|
||||
|
||||
This option seems to causes way to many issues, it is
|
||||
being investigated by Intel's chipset team for months now and
|
||||
we still don't have any outcome.
|
||||
|
||||
The results so far are "black screen when starting X",
|
||||
"system hangs when using GL", "system does not resume".
|
||||
|
||||
The patch adds an intel_iommu=igfx_on option, which makes it opt in,
|
||||
rather than opt out.
|
||||
|
||||
Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 11 +++++------
|
||||
drivers/pci/intel-iommu.c | 9 +++++----
|
||||
2 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index e7848a0..9914485 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -992,12 +992,11 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
Enable intel iommu driver.
|
||||
off
|
||||
Disable intel iommu driver.
|
||||
- igfx_off [Default Off]
|
||||
- By default, gfx is mapped as normal device. If a gfx
|
||||
- device has a dedicated DMAR unit, the DMAR unit is
|
||||
- bypassed by not enabling DMAR with this option. In
|
||||
- this case, gfx device will use physical address for
|
||||
- DMA.
|
||||
+ igfx_on [Default Off]
|
||||
+ By default, the gfx's DMAR unit is bypassed by not enabling
|
||||
+ DMAR with this option. So the gfx device will use physical
|
||||
+ address for DMA. When this option is enabled it the gfx is
|
||||
+ mapped as normal device.
|
||||
forcedac [x86_64]
|
||||
With this option iommu will not optimize to look
|
||||
for io virtual address below 32 bit forcing dual
|
||||
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
|
||||
index 4173125..8f36786 100644
|
||||
--- a/drivers/pci/intel-iommu.c
|
||||
+++ b/drivers/pci/intel-iommu.c
|
||||
@@ -340,7 +340,8 @@ int dmar_disabled = 0;
|
||||
int dmar_disabled = 1;
|
||||
#endif /*CONFIG_DMAR_DEFAULT_ON*/
|
||||
|
||||
-static int dmar_map_gfx = 1;
|
||||
+/* disabled by default; causes way too many issues */
|
||||
+static int dmar_map_gfx = 0;
|
||||
static int dmar_forcedac;
|
||||
static int intel_iommu_strict;
|
||||
|
||||
@@ -361,10 +362,10 @@ static int __init intel_iommu_setup(char *str)
|
||||
} else if (!strncmp(str, "off", 3)) {
|
||||
dmar_disabled = 1;
|
||||
printk(KERN_INFO "Intel-IOMMU: disabled\n");
|
||||
- } else if (!strncmp(str, "igfx_off", 8)) {
|
||||
- dmar_map_gfx = 0;
|
||||
+ } else if (!strncmp(str, "igfx_on", 7)) {
|
||||
+ dmar_map_gfx = 1;
|
||||
printk(KERN_INFO
|
||||
- "Intel-IOMMU: disable GFX device mapping\n");
|
||||
+ "Intel-IOMMU: enabled GFX device mapping\n");
|
||||
} else if (!strncmp(str, "forcedac", 8)) {
|
||||
printk(KERN_INFO
|
||||
"Intel-IOMMU: Forcing DAC for PCI devices\n");
|
||||
--
|
||||
1.6.6.1
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
||||
|
57
linux-2.6-makefile-after_link.patch
Normal file
57
linux-2.6-makefile-after_link.patch
Normal file
@ -0,0 +1,57 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index f908acc..960ff6f 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -746,6 +746,10 @@ quiet_cmd_vmlinux__ ?= LD $@
|
||||
--start-group $(vmlinux-main) --end-group \
|
||||
$(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)
|
||||
|
||||
+ifdef AFTER_LINK
|
||||
+cmd_vmlinux__ += ; $(AFTER_LINK)
|
||||
+endif
|
||||
+
|
||||
# Generate new vmlinux version
|
||||
quiet_cmd_vmlinux_version = GEN .version
|
||||
cmd_vmlinux_version = set -e; \
|
||||
diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
|
||||
index 51ead52..ad21273 100644
|
||||
--- a/arch/powerpc/kernel/vdso32/Makefile
|
||||
+++ b/arch/powerpc/kernel/vdso32/Makefile
|
||||
@@ -41,7 +41,8 @@ $(obj-vdso32): %.o: %.S
|
||||
|
||||
# actual build commands
|
||||
quiet_cmd_vdso32ld = VDSO32L $@
|
||||
- cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@
|
||||
+ cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@ \
|
||||
+ $(if $(AFTER_LINK),; $(AFTER_LINK))
|
||||
quiet_cmd_vdso32as = VDSO32A $@
|
||||
cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
|
||||
|
||||
diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile
|
||||
index 79da65d..f11c21b 100644
|
||||
--- a/arch/powerpc/kernel/vdso64/Makefile
|
||||
+++ b/arch/powerpc/kernel/vdso64/Makefile
|
||||
@@ -36,7 +36,8 @@ $(obj-vdso64): %.o: %.S
|
||||
|
||||
# actual build commands
|
||||
quiet_cmd_vdso64ld = VDSO64L $@
|
||||
- cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@
|
||||
+ cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@ \
|
||||
+ $(if $(AFTER_LINK),; $(AFTER_LINK))
|
||||
quiet_cmd_vdso64as = VDSO64A $@
|
||||
cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
|
||||
|
||||
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
|
||||
index 6b4ffed..cbc3d05 100644
|
||||
--- a/arch/x86/vdso/Makefile
|
||||
+++ b/arch/x86/vdso/Makefile
|
||||
@@ -120,7 +120,8 @@ $(obj)/vdso32-syms.lds: $(vdso32.so-y:%=$(obj)/vdso32-%-syms.lds) FORCE
|
||||
quiet_cmd_vdso = VDSO $@
|
||||
cmd_vdso = $(CC) -nostdlib -o $@ \
|
||||
$(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
|
||||
- -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^)
|
||||
+ -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) \
|
||||
+ $(if $(AFTER_LINK),; $(AFTER_LINK))
|
||||
|
||||
VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
|
||||
GCOV_PROFILE := n
|
124
linux-2.6-selinux-mprotect-checks.patch
Normal file
124
linux-2.6-selinux-mprotect-checks.patch
Normal file
@ -0,0 +1,124 @@
|
||||
This needs a fixed toolchain, and a userspace rebuild to work.
|
||||
For these reasons, it's had difficulty getting upstream.
|
||||
|
||||
ie, Fedora has a new enough toolchain, and has been rebuilt, so we don't need
|
||||
the ifdefs. Other distros don't/haven't, and this patch would break them
|
||||
if pushed upstream.
|
||||
|
||||
|
||||
Subject: [Fwd: Re: [PATCH] Disable execmem for sparc]
|
||||
From: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
To: Dave Jones <davej@redhat.com>
|
||||
Date: Wed, 28 Apr 2010 16:04:56 -0400
|
||||
Message-Id: <1272485096.6013.326.camel@moss-pluto.epoch.ncsc.mil>
|
||||
|
||||
-------- Forwarded Message --------
|
||||
From: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
To: David Miller <davem@davemloft.net>
|
||||
Cc: tcallawa@redhat.com, dennis@ausil.us, sparclinux@vger.kernel.org, dgilmore@redhat.com, jmorris@namei.org, eparis@parisplace.org
|
||||
Subject: Re: [PATCH] Disable execmem for sparc
|
||||
Date: Wed, 28 Apr 2010 15:57:57 -0400
|
||||
|
||||
On Tue, 2010-04-27 at 11:47 -0700, David Miller wrote:
|
||||
> From: "Tom \"spot\" Callaway" <tcallawa@redhat.com>
|
||||
> Date: Tue, 27 Apr 2010 14:20:21 -0400
|
||||
>
|
||||
> > [root@apollo ~]$ cat /proc/2174/maps
|
||||
> > 00010000-00014000 r-xp 00000000 fd:00 15466577
|
||||
> > /sbin/mingetty
|
||||
> > 00022000-00024000 rwxp 00002000 fd:00 15466577
|
||||
> > /sbin/mingetty
|
||||
> > 00024000-00046000 rwxp 00000000 00:00 0
|
||||
> > [heap]
|
||||
>
|
||||
> SELINUX probably barfs on the executable heap, the PLT is in the HEAP
|
||||
> just like powerpc32 and that's why VM_DATA_DEFAULT_FLAGS has to set
|
||||
> both executable and writable.
|
||||
>
|
||||
> You also can't remove the CONFIG_PPC32 ifdefs in selinux, since
|
||||
> because of the VM_DATA_DEFAULT_FLAGS setting used still in that arch,
|
||||
> the heap will always have executable permission, just like sparc does.
|
||||
> You have to support those binaries forever, whether you like it or not.
|
||||
>
|
||||
> Let's just replace the CONFIG_PPC32 ifdef in SELINUX with CONFIG_PPC32
|
||||
> || CONFIG_SPARC as in Tom's original patch and let's be done with
|
||||
> this.
|
||||
>
|
||||
> In fact I would go through all the arch/ header files and check the
|
||||
> VM_DATA_DEFAULT_FLAGS settings and add the necessary new ifdefs to the
|
||||
> SELINUX code so that other platforms don't have the pain of having to
|
||||
> go through this process too.
|
||||
|
||||
To avoid maintaining per-arch ifdefs, it seems that we could just
|
||||
directly use (VM_DATA_DEFAULT_FLAGS & VM_EXEC) as the basis for deciding
|
||||
whether to enable or disable these checks. VM_DATA_DEFAULT_FLAGS isn't
|
||||
constant on some architectures but instead depends on
|
||||
current->personality, but we want this applied uniformly. So we'll just
|
||||
use the initial task state to determine whether or not to enable these
|
||||
checks.
|
||||
|
||||
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
|
||||
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
|
||||
index ebee467..a03fd74 100644
|
||||
--- a/security/selinux/hooks.c
|
||||
+++ b/security/selinux/hooks.c
|
||||
@@ -2999,13 +2999,15 @@ static int selinux_file_ioctl(struct file *file, unsigned int cmd,
|
||||
return file_has_perm(cred, file, av);
|
||||
}
|
||||
|
||||
+static int default_noexec;
|
||||
+
|
||||
static int file_map_prot_check(struct file *file, unsigned long prot, int shared)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int rc = 0;
|
||||
|
||||
-#ifndef CONFIG_PPC32
|
||||
- if ((prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
+ if (default_noexec &&
|
||||
+ (prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
/*
|
||||
* We are making executable an anonymous mapping or a
|
||||
* private file mapping that will also be writable.
|
||||
@@ -3015,7 +3017,6 @@ static int file_map_prot_check(struct file *file, unsigned long prot, int shared
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
-#endif
|
||||
|
||||
if (file) {
|
||||
/* read access is always possible with a mapping */
|
||||
@@ -3076,8 +3077,8 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
|
||||
if (selinux_checkreqprot)
|
||||
prot = reqprot;
|
||||
|
||||
-#ifndef CONFIG_PPC32
|
||||
- if ((prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
+ if (default_noexec &&
|
||||
+ (prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
int rc = 0;
|
||||
if (vma->vm_start >= vma->vm_mm->start_brk &&
|
||||
vma->vm_end <= vma->vm_mm->brk) {
|
||||
@@ -3099,7 +3100,6 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
-#endif
|
||||
|
||||
return file_map_prot_check(vma->vm_file, prot, vma->vm_flags&VM_SHARED);
|
||||
}
|
||||
@@ -5662,6 +5662,8 @@ static __init int selinux_init(void)
|
||||
/* Set the security state for the initial task. */
|
||||
cred_init_security();
|
||||
|
||||
+ default_noexec = !(VM_DATA_DEFAULT_FLAGS & VM_EXEC);
|
||||
+
|
||||
sel_inode_cache = kmem_cache_create("selinux_inode_security",
|
||||
sizeof(struct inode_security_struct),
|
||||
0, SLAB_PANIC, NULL);
|
||||
|
||||
--
|
||||
Stephen Smalley
|
||||
National Security Agency
|
||||
|
70
linux-2.6-serial-460800.patch
Normal file
70
linux-2.6-serial-460800.patch
Normal file
@ -0,0 +1,70 @@
|
||||
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
|
||||
index 2209620..659c1bb 100644
|
||||
--- a/drivers/serial/8250.c
|
||||
+++ b/drivers/serial/8250.c
|
||||
@@ -7,6 +7,9 @@
|
||||
*
|
||||
* Copyright (C) 2001 Russell King.
|
||||
*
|
||||
+ * 2005/09/16: Enabled higher baud rates for 16C95x.
|
||||
+ * (Mathias Adam <a2@adamis.de>)
|
||||
+ *
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
@@ -2227,6 +2230,14 @@ static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int
|
||||
else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
|
||||
baud == (port->uartclk/8))
|
||||
quot = 0x8002;
|
||||
+ /*
|
||||
+ * For 16C950s UART_TCR is used in combination with divisor==1
|
||||
+ * to achieve baud rates up to baud_base*4.
|
||||
+ */
|
||||
+ else if ((port->type == PORT_16C950) &&
|
||||
+ baud > (port->uartclk/16))
|
||||
+ quot = 1;
|
||||
+
|
||||
else
|
||||
quot = uart_get_divisor(port, baud);
|
||||
|
||||
@@ -2240,7 +2251,7 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
struct uart_8250_port *up = (struct uart_8250_port *)port;
|
||||
unsigned char cval, fcr = 0;
|
||||
unsigned long flags;
|
||||
- unsigned int baud, quot;
|
||||
+ unsigned int baud, quot, max_baud;
|
||||
|
||||
switch (termios->c_cflag & CSIZE) {
|
||||
case CS5:
|
||||
@@ -2272,9 +2283,10 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
/*
|
||||
* Ask the core to calculate the divisor for us.
|
||||
*/
|
||||
+ max_baud = (up->port.type == PORT_16C950 ? port->uartclk/4 : port->uartclk/16);
|
||||
baud = uart_get_baud_rate(port, termios, old,
|
||||
port->uartclk / 16 / 0xffff,
|
||||
- port->uartclk / 16);
|
||||
+ max_baud);
|
||||
quot = serial8250_get_divisor(port, baud);
|
||||
|
||||
/*
|
||||
@@ -2311,6 +2323,19 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
spin_lock_irqsave(&up->port.lock, flags);
|
||||
|
||||
/*
|
||||
+ * 16C950 supports additional prescaler ratios between 1:16 and 1:4
|
||||
+ * thus increasing max baud rate to uartclk/4.
|
||||
+ */
|
||||
+ if (up->port.type == PORT_16C950) {
|
||||
+ if (baud == port->uartclk/4)
|
||||
+ serial_icr_write(up, UART_TCR, 0x4);
|
||||
+ else if (baud == port->uartclk/8)
|
||||
+ serial_icr_write(up, UART_TCR, 0x8);
|
||||
+ else
|
||||
+ serial_icr_write(up, UART_TCR, 0);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
* Update the per-port timeout.
|
||||
*/
|
||||
uart_update_timeout(port, termios->c_cflag, baud);
|
25
linux-2.6-silence-acpi-blacklist.patch
Normal file
25
linux-2.6-silence-acpi-blacklist.patch
Normal file
@ -0,0 +1,25 @@
|
||||
diff -up linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx linux-2.6.26.noarch/drivers/acpi/blacklist.c
|
||||
--- linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx 2008-07-13 17:51:29.000000000 -0400
|
||||
+++ linux-2.6.26.noarch/drivers/acpi/blacklist.c 2008-08-12 14:21:39.000000000 -0400
|
||||
@@ -81,18 +81,18 @@ static int __init blacklist_by_year(void
|
||||
|
||||
/* Doesn't exist? Likely an old system */
|
||||
if (!dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL)) {
|
||||
- printk(KERN_ERR PREFIX "no DMI BIOS year, "
|
||||
+ printk(KERN_INFO PREFIX "no DMI BIOS year, "
|
||||
"acpi=force is required to enable ACPI\n" );
|
||||
return 1;
|
||||
}
|
||||
/* 0? Likely a buggy new BIOS */
|
||||
if (year == 0) {
|
||||
- printk(KERN_ERR PREFIX "DMI BIOS year==0, "
|
||||
+ printk(KERN_INFO PREFIX "DMI BIOS year==0, "
|
||||
"assuming ACPI-capable machine\n" );
|
||||
return 0;
|
||||
}
|
||||
if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
|
||||
- printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "
|
||||
+ printk(KERN_INFO PREFIX "BIOS age (%d) fails cutoff (%d), "
|
||||
"acpi=force is required to enable ACPI\n",
|
||||
year, CONFIG_ACPI_BLACKLIST_YEAR);
|
||||
return 1;
|
42
linux-2.6-silence-fbcon-logo.patch
Normal file
42
linux-2.6-silence-fbcon-logo.patch
Normal file
@ -0,0 +1,42 @@
|
||||
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
|
||||
index 1657b96..4c5c2be 100644
|
||||
--- a/drivers/video/console/fbcon.c
|
||||
+++ b/drivers/video/console/fbcon.c
|
||||
@@ -631,13 +631,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
|
||||
kfree(save);
|
||||
}
|
||||
|
||||
- if (logo_lines > vc->vc_bottom) {
|
||||
- logo_shown = FBCON_LOGO_CANSHOW;
|
||||
- printk(KERN_INFO
|
||||
- "fbcon_init: disable boot-logo (boot-logo bigger than screen).\n");
|
||||
- } else if (logo_shown != FBCON_LOGO_DONTSHOW) {
|
||||
- logo_shown = FBCON_LOGO_DRAW;
|
||||
- vc->vc_top = logo_lines;
|
||||
+ if (logo_shown != FBCON_LOGO_DONTSHOW) {
|
||||
+ if (logo_lines > vc->vc_bottom) {
|
||||
+ logo_shown = FBCON_LOGO_CANSHOW;
|
||||
+ printk(KERN_INFO
|
||||
+ "fbcon_init: disable boot-logo (boot-logo bigger than screen).\n");
|
||||
+ } else {
|
||||
+ logo_shown = FBCON_LOGO_DRAW;
|
||||
+ vc->vc_top = logo_lines;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
#endif /* MODULE */
|
||||
@@ -3489,6 +3491,14 @@ static int __init fb_console_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int __init quiet_logo(char *str)
|
||||
+{
|
||||
+ logo_shown = FBCON_LOGO_DONTSHOW;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+early_param("quiet", quiet_logo);
|
||||
+
|
||||
module_init(fb_console_init);
|
||||
|
||||
#ifdef MODULE
|
89
linux-2.6-silence-noise.patch
Normal file
89
linux-2.6-silence-noise.patch
Normal file
@ -0,0 +1,89 @@
|
||||
--- linux-2.6.26.noarch/drivers/base/power/main.c~ 2008-08-22 20:57:57.000000000 -0400
|
||||
+++ linux-2.6.26.noarch/drivers/base/power/main.c 2008-08-22 20:58:05.000000000 -0400
|
||||
@@ -69,9 +69,6 @@ void device_pm_unlock(void)
|
||||
*/
|
||||
void device_pm_add(struct device *dev)
|
||||
{
|
||||
- pr_debug("PM: Adding info for %s:%s\n",
|
||||
- dev->bus ? dev->bus->name : "No Bus",
|
||||
- kobject_name(&dev->kobj));
|
||||
mutex_lock(&dpm_list_mtx);
|
||||
if (dev->parent) {
|
||||
if (dev->parent->power.status >= DPM_SUSPENDING)
|
||||
From b4e96f34c17e5a79cd28774cc722bb33e7e02c6e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 25 Sep 2008 16:23:33 -0400
|
||||
Subject: [PATCH] Don't print an error message just because there's no i8042 chip.
|
||||
|
||||
Some systems, such as EFI-based Apple systems, won't necessarily have an
|
||||
i8042 to initialize. We shouldn't be printing an error message in this
|
||||
case, since not detecting the chip is the correct behavior.
|
||||
---
|
||||
drivers/input/serio/i8042.c | 4 +---
|
||||
1 files changed, 1 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
|
||||
index 170f71e..4f3e632 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -701,10 +701,8 @@ static int __devinit i8042_check_aux(void)
|
||||
|
||||
static int i8042_controller_check(void)
|
||||
{
|
||||
- if (i8042_flush() == I8042_BUFFER_SIZE) {
|
||||
- printk(KERN_ERR "i8042.c: No controller found.\n");
|
||||
+ if (i8042_flush() == I8042_BUFFER_SIZE)
|
||||
return -ENODEV;
|
||||
- }
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
1.6.0.1
|
||||
|
||||
Socket fuzzers like sfuzz will trigger this printk a lot, even though it's
|
||||
ratelimited. It isn't particularly useful, so just remove it.
|
||||
|
||||
Signed-off-by: Dave Jones <davej@redhat.com>
|
||||
|
||||
--- linux-2.6.27.noarch/net/can/af_can.c~ 2008-12-11 16:53:48.000000000 -0500
|
||||
+++ linux-2.6.27.noarch/net/can/af_can.c 2008-12-11 16:54:42.000000000 -0500
|
||||
@@ -134,13 +134,9 @@ static int can_create(struct net *net, s
|
||||
err = request_module("can-proto-%d", protocol);
|
||||
|
||||
/*
|
||||
- * In case of error we only print a message but don't
|
||||
- * return the error code immediately. Below we will
|
||||
- * return -EPROTONOSUPPORT
|
||||
+ * In case of error we don't return the error code immediately.
|
||||
+ * Below we will return -EPROTONOSUPPORT
|
||||
*/
|
||||
- if (err && printk_ratelimit())
|
||||
- printk(KERN_ERR "can: request_module "
|
||||
- "(can-proto-%d) failed.\n", protocol);
|
||||
}
|
||||
#endif
|
||||
|
||||
Some devices (like the nuforce udac) spew this quite a lot.
|
||||
This patch kinda sucks, but it'll shut things up for now.
|
||||
|
||||
Probably not an upstream candidate. I suspect the answer would be
|
||||
"don't turn SND_DEBUG then"
|
||||
|
||||
--- linux-2.6.34.noarch/sound/usb/clock.c~ 2010-07-16 22:11:41.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/sound/usb/clock.c 2010-07-16 22:15:21.000000000 -0400
|
||||
@@ -212,8 +212,13 @@ static int set_sample_rate_v1(struct snd
|
||||
|
||||
/* if endpoint doesn't have sampling rate control, bail out */
|
||||
if (!(fmt->attributes & UAC_EP_CS_ATTR_SAMPLE_RATE)) {
|
||||
- snd_printk(KERN_WARNING "%d:%d:%d: endpoint lacks sample rate attribute bit, cannot set.\n",
|
||||
+ static int once;
|
||||
+
|
||||
+ if (!once) {
|
||||
+ snd_printk(KERN_WARNING "%d:%d:%d: endpoint lacks sample rate attribute bit, cannot set.\n",
|
||||
dev->devnum, iface, fmt->altsetting);
|
||||
+ once = 1;
|
||||
+ }
|
||||
return 0;
|
||||
}
|
||||
|
35
linux-2.6-sparc-selinux-mprotect-checks.patch
Normal file
35
linux-2.6-sparc-selinux-mprotect-checks.patch
Normal file
@ -0,0 +1,35 @@
|
||||
diff -up linux-2.6.24.sparc64/security/selinux/hooks.c.BAD linux-2.6.24.sparc64/security/selinux/hooks.c
|
||||
--- linux-2.6.24.sparc64/security/selinux/hooks.c.BAD 2008-03-21 14:28:06.000000000 -0400
|
||||
+++ linux-2.6.24.sparc64/security/selinux/hooks.c 2008-03-21 14:29:10.000000000 -0400
|
||||
@@ -3018,6 +3018,7 @@ static int file_map_prot_check(struct fi
|
||||
const struct cred *cred = current_cred();
|
||||
int rc = 0;
|
||||
|
||||
+#ifndef CONFIG_SPARC
|
||||
if ((prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
/*
|
||||
* We are making executable an anonymous mapping or a
|
||||
@@ -3028,6 +3029,7 @@ static int file_map_prot_check(struct fi
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (file) {
|
||||
/* read access is always possible with a mapping */
|
||||
@@ -3081,6 +3081,7 @@ static int selinux_file_mprotect(struct
|
||||
if (selinux_checkreqprot)
|
||||
prot = reqprot;
|
||||
|
||||
+#ifndef CONFIG_SPARC
|
||||
if ((prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
rc = 0;
|
||||
if (vma->vm_start >= vma->vm_mm->start_brk &&
|
||||
@@ -3103,6 +3103,7 @@ static int selinux_file_mprotect(struct
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
+#endif
|
||||
|
||||
return file_map_prot_check(vma->vm_file, prot, vma->vm_flags&VM_SHARED);
|
||||
}
|
1
linux-2.6-upstream-reverts.patch
Normal file
1
linux-2.6-upstream-reverts.patch
Normal file
@ -0,0 +1 @@
|
||||
nil
|
161
linux-2.6-v4l-dvb-add-kworld-a340-support.patch
Normal file
161
linux-2.6-v4l-dvb-add-kworld-a340-support.patch
Normal file
@ -0,0 +1,161 @@
|
||||
From c34c78838f02693a70808e38309629e85aa50266 Mon Sep 17 00:00:00 2001
|
||||
From: Jarod Wilson <jarod@redhat.com>
|
||||
Date: Thu, 20 May 2010 10:03:13 -0400
|
||||
Subject: [PATCH] dvb: add support for kworld 340u and ub435-q to em28xx-dvb
|
||||
|
||||
This adds support for the KWorld PlusTV 340U and KWorld UB345-Q ATSC
|
||||
sticks, which are really the same device. The sticks have an eMPIA
|
||||
em2870 usb bridge chipset, an LG Electronics LGDT3304 ATSC/QAM
|
||||
demodulator and an NXP TDA18271HD tuner -- early versions of the 340U
|
||||
have a a TDA18271HD/C1, later models and the UB435-Q have a C2.
|
||||
|
||||
The stick has been tested succesfully with both VSB_8 and QAM_256 signals.
|
||||
Its using lgdt3304 support added to the lgdt3305 driver by a prior patch,
|
||||
rather than the current lgdt3304 driver, as its severely lacking in
|
||||
functionality by comparison (see said patch for details).
|
||||
|
||||
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
||||
---
|
||||
drivers/media/video/em28xx/em28xx-cards.c | 28 ++++++++++++++++++++++++
|
||||
drivers/media/video/em28xx/em28xx-dvb.c | 33 +++++++++++++++++++++++++++++
|
||||
drivers/media/video/em28xx/em28xx.h | 1 +
|
||||
3 files changed, 62 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
|
||||
index b0fb083..6312e76 100644
|
||||
--- a/drivers/media/video/em28xx/em28xx-cards.c
|
||||
+++ b/drivers/media/video/em28xx/em28xx-cards.c
|
||||
@@ -158,6 +158,22 @@ static struct em28xx_reg_seq evga_indtube_digital[] = {
|
||||
{ -1, -1, -1, -1},
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * KWorld PlusTV 340U and UB435-Q (ATSC) GPIOs map:
|
||||
+ * EM_GPIO_0 - currently unknown
|
||||
+ * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on)
|
||||
+ * EM_GPIO_2 - currently unknown
|
||||
+ * EM_GPIO_3 - currently unknown
|
||||
+ * EM_GPIO_4 - TDA18271HD/C1 tuner (1 = active, 0 = in reset)
|
||||
+ * EM_GPIO_5 - LGDT3304 ATSC/QAM demod (1 = active, 0 = in reset)
|
||||
+ * EM_GPIO_6 - currently unknown
|
||||
+ * EM_GPIO_7 - currently unknown
|
||||
+ */
|
||||
+static struct em28xx_reg_seq kworld_a340_digital[] = {
|
||||
+ {EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10},
|
||||
+ { -1, -1, -1, -1},
|
||||
+};
|
||||
+
|
||||
/* Pinnacle Hybrid Pro eb1a:2881 */
|
||||
static struct em28xx_reg_seq pinnacle_hybrid_pro_analog[] = {
|
||||
{EM28XX_R08_GPIO, 0xfd, ~EM_GPIO_4, 10},
|
||||
@@ -1649,6 +1665,16 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.tuner_gpio = reddo_dvb_c_usb_box,
|
||||
.has_dvb = 1,
|
||||
},
|
||||
+ /* 1b80:a340 - Empia EM2870, NXP TDA18271HD and LG DT3304, sold
|
||||
+ * initially as the KWorld PlusTV 340U, then as the UB435-Q.
|
||||
+ * Early variants have a TDA18271HD/C1, later ones a TDA18271HD/C2 */
|
||||
+ [EM2870_BOARD_KWORLD_A340] = {
|
||||
+ .name = "KWorld PlusTV 340U or UB435-Q (ATSC)",
|
||||
+ .tuner_type = TUNER_ABSENT, /* Digital-only TDA18271HD */
|
||||
+ .has_dvb = 1,
|
||||
+ .dvb_gpio = kworld_a340_digital,
|
||||
+ .tuner_gpio = default_tuner_gpio,
|
||||
+ },
|
||||
};
|
||||
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
|
||||
|
||||
@@ -1768,6 +1794,8 @@ struct usb_device_id em28xx_id_table[] = {
|
||||
.driver_info = EM2820_BOARD_IODATA_GVMVP_SZ },
|
||||
{ USB_DEVICE(0xeb1a, 0x50a6),
|
||||
.driver_info = EM2860_BOARD_GADMEI_UTV330 },
|
||||
+ { USB_DEVICE(0x1b80, 0xa340),
|
||||
+ .driver_info = EM2870_BOARD_KWORLD_A340 },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
||||
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c
|
||||
index bcd3c37..ce8a9ee 100644
|
||||
--- a/drivers/media/video/em28xx/em28xx-dvb.c
|
||||
+++ b/drivers/media/video/em28xx/em28xx-dvb.c
|
||||
@@ -30,11 +30,13 @@
|
||||
#include "tuner-simple.h"
|
||||
|
||||
#include "lgdt330x.h"
|
||||
+#include "lgdt3305.h"
|
||||
#include "zl10353.h"
|
||||
#include "s5h1409.h"
|
||||
#include "mt352.h"
|
||||
#include "mt352_priv.h" /* FIXME */
|
||||
#include "tda1002x.h"
|
||||
+#include "tda18271.h"
|
||||
|
||||
MODULE_DESCRIPTION("driver for em28xx based DVB cards");
|
||||
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
|
||||
@@ -231,6 +233,18 @@ static struct lgdt330x_config em2880_lgdt3303_dev = {
|
||||
.demod_chip = LGDT3303,
|
||||
};
|
||||
|
||||
+static struct lgdt3305_config em2870_lgdt3304_dev = {
|
||||
+ .i2c_addr = 0x0e,
|
||||
+ .demod_chip = LGDT3304,
|
||||
+ .spectral_inversion = 1,
|
||||
+ .deny_i2c_rptr = 1,
|
||||
+ .mpeg_mode = LGDT3305_MPEG_PARALLEL,
|
||||
+ .tpclk_edge = LGDT3305_TPCLK_FALLING_EDGE,
|
||||
+ .tpvalid_polarity = LGDT3305_TP_VALID_HIGH,
|
||||
+ .vsb_if_khz = 3250,
|
||||
+ .qam_if_khz = 4000,
|
||||
+};
|
||||
+
|
||||
static struct zl10353_config em28xx_zl10353_with_xc3028 = {
|
||||
.demod_address = (0x1e >> 1),
|
||||
.no_tuner = 1,
|
||||
@@ -247,6 +261,17 @@ static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {
|
||||
.mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK
|
||||
};
|
||||
|
||||
+static struct tda18271_std_map kworld_a340_std_map = {
|
||||
+ .atsc_6 = { .if_freq = 3250, .agc_mode = 3, .std = 0,
|
||||
+ .if_lvl = 1, .rfagc_top = 0x37, },
|
||||
+ .qam_6 = { .if_freq = 4000, .agc_mode = 3, .std = 1,
|
||||
+ .if_lvl = 1, .rfagc_top = 0x37, },
|
||||
+};
|
||||
+
|
||||
+static struct tda18271_config kworld_a340_config = {
|
||||
+ .std_map = &kworld_a340_std_map,
|
||||
+};
|
||||
+
|
||||
static struct zl10353_config em28xx_zl10353_xc3028_no_i2c_gate = {
|
||||
.demod_address = (0x1e >> 1),
|
||||
.no_tuner = 1,
|
||||
@@ -570,6 +595,14 @@ static int dvb_init(struct em28xx *dev)
|
||||
}
|
||||
}
|
||||
break;
|
||||
+ case EM2870_BOARD_KWORLD_A340:
|
||||
+ dvb->frontend = dvb_attach(lgdt3305_attach,
|
||||
+ &em2870_lgdt3304_dev,
|
||||
+ &dev->i2c_adap);
|
||||
+ if (dvb->frontend != NULL)
|
||||
+ dvb_attach(tda18271_attach, dvb->frontend, 0x60,
|
||||
+ &dev->i2c_adap, &kworld_a340_config);
|
||||
+ break;
|
||||
default:
|
||||
em28xx_errdev("/2: The frontend of your DVB/ATSC card"
|
||||
" isn't supported yet\n");
|
||||
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
|
||||
index ba6fe5d..9f3fdad 100644
|
||||
--- a/drivers/media/video/em28xx/em28xx.h
|
||||
+++ b/drivers/media/video/em28xx/em28xx.h
|
||||
@@ -112,6 +112,7 @@
|
||||
#define EM2870_BOARD_REDDO_DVB_C_USB_BOX 73
|
||||
#define EM2800_BOARD_VC211A 74
|
||||
#define EM2882_BOARD_DIKOM_DK300 75
|
||||
+#define EM2870_BOARD_KWORLD_A340 76
|
||||
|
||||
/* Limits minimum and default number of buffers */
|
||||
#define EM28XX_MIN_BUF 4
|
||||
--
|
||||
1.7.0.1
|
||||
|
350
linux-2.6-v4l-dvb-add-lgdt3304-support.patch
Normal file
350
linux-2.6-v4l-dvb-add-lgdt3304-support.patch
Normal file
@ -0,0 +1,350 @@
|
||||
From b71e18093e2e7f240797875c50c49552722f8825 Mon Sep 17 00:00:00 2001
|
||||
From: Jarod Wilson <jarod@redhat.com>
|
||||
Date: Mon, 15 Feb 2010 17:13:25 -0500
|
||||
Subject: [PATCH 1/2] dvb: add lgdt3304 support to lgdt3305 driver
|
||||
|
||||
There's a currently-unused lgdt3304 demod driver, which leaves a lot to
|
||||
be desired as far as functionality. The 3304 is unsurprisingly quite
|
||||
similar to the 3305, and empirical testing yeilds far better results
|
||||
and more complete functionality by merging 3304 support into the 3305
|
||||
driver. (For example, the current lgdt3304 driver lacks support for
|
||||
signal strength, snr, ucblocks, etc., which we get w/the lgdt3305).
|
||||
|
||||
For the moment, not dropping the lgdt3304 driver, and its still up to
|
||||
a given device's config setup to choose which demod driver to use, but
|
||||
I'd suggest dropping the 3304 driver entirely.
|
||||
|
||||
As a follow-up to this patch, I've got another patch that adds support
|
||||
for the KWorld PlusTV 340U (ATSC) em2870-based tuner stick, driving
|
||||
its lgdt3304 demod via this lgdt3305 driver, which is what I used to
|
||||
successfully test this patch with both VSB_8 and QAM_256 signals.
|
||||
|
||||
A few pieces are still a touch crude, but I think its a solid start,
|
||||
as well as much cleaner and more feature-complete than the existing
|
||||
lgdt3304 driver.
|
||||
|
||||
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
||||
---
|
||||
drivers/media/dvb/frontends/lgdt3305.c | 206 ++++++++++++++++++++++++++++++--
|
||||
drivers/media/dvb/frontends/lgdt3305.h | 6 +
|
||||
2 files changed, 203 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/dvb/frontends/lgdt3305.c b/drivers/media/dvb/frontends/lgdt3305.c
|
||||
index fde8c59..40695e6 100644
|
||||
--- a/drivers/media/dvb/frontends/lgdt3305.c
|
||||
+++ b/drivers/media/dvb/frontends/lgdt3305.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Support for LGDT3305 - VSB/QAM
|
||||
+ * Support for LG Electronics LGDT3304 and LGDT3305 - VSB/QAM
|
||||
*
|
||||
* Copyright (C) 2008, 2009 Michael Krufky <mkrufky@linuxtv.org>
|
||||
*
|
||||
@@ -357,7 +357,10 @@ static int lgdt3305_rfagc_loop(struct lgdt3305_state *state,
|
||||
case QAM_256:
|
||||
agcdelay = 0x046b;
|
||||
rfbw = 0x8889;
|
||||
- ifbw = 0x8888;
|
||||
+ if (state->cfg->demod_chip == LGDT3305)
|
||||
+ ifbw = 0x8888;
|
||||
+ else
|
||||
+ ifbw = 0x6666;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -409,8 +412,18 @@ static int lgdt3305_agc_setup(struct lgdt3305_state *state,
|
||||
lg_dbg("lockdten = %d, acqen = %d\n", lockdten, acqen);
|
||||
|
||||
/* control agc function */
|
||||
- lgdt3305_write_reg(state, LGDT3305_AGC_CTRL_4, 0xe1 | lockdten << 1);
|
||||
- lgdt3305_set_reg_bit(state, LGDT3305_AGC_CTRL_1, 2, acqen);
|
||||
+ switch (state->cfg->demod_chip) {
|
||||
+ case LGDT3304:
|
||||
+ lgdt3305_write_reg(state, 0x0314, 0xe1 | lockdten << 1);
|
||||
+ lgdt3305_set_reg_bit(state, 0x030e, 2, acqen);
|
||||
+ break;
|
||||
+ case LGDT3305:
|
||||
+ lgdt3305_write_reg(state, LGDT3305_AGC_CTRL_4, 0xe1 | lockdten << 1);
|
||||
+ lgdt3305_set_reg_bit(state, LGDT3305_AGC_CTRL_1, 2, acqen);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
|
||||
return lgdt3305_rfagc_loop(state, param);
|
||||
}
|
||||
@@ -543,6 +556,11 @@ static int lgdt3305_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
enable ? 0 : 1);
|
||||
}
|
||||
|
||||
+static int lgdt3304_sleep(struct dvb_frontend *fe)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_sleep(struct dvb_frontend *fe)
|
||||
{
|
||||
struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
@@ -571,6 +589,55 @@ static int lgdt3305_sleep(struct dvb_frontend *fe)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int lgdt3304_init(struct dvb_frontend *fe)
|
||||
+{
|
||||
+ struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ static struct lgdt3305_reg lgdt3304_init_data[] = {
|
||||
+ { .reg = LGDT3305_GEN_CTRL_1, .val = 0x03, },
|
||||
+ { .reg = 0x000d, .val = 0x02, },
|
||||
+ { .reg = 0x000e, .val = 0x02, },
|
||||
+ { .reg = LGDT3305_DGTL_AGC_REF_1, .val = 0x32, },
|
||||
+ { .reg = LGDT3305_DGTL_AGC_REF_2, .val = 0xc4, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_1, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_2, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_3, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_4, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTRL_7, .val = 0xf9, },
|
||||
+ { .reg = 0x0112, .val = 0x17, },
|
||||
+ { .reg = 0x0113, .val = 0x15, },
|
||||
+ { .reg = 0x0114, .val = 0x18, },
|
||||
+ { .reg = 0x0115, .val = 0xff, },
|
||||
+ { .reg = 0x0116, .val = 0x3c, },
|
||||
+ { .reg = 0x0214, .val = 0x67, },
|
||||
+ { .reg = 0x0424, .val = 0x8d, },
|
||||
+ { .reg = 0x0427, .val = 0x12, },
|
||||
+ { .reg = 0x0428, .val = 0x4f, },
|
||||
+ { .reg = LGDT3305_IFBW_1, .val = 0x80, },
|
||||
+ { .reg = LGDT3305_IFBW_2, .val = 0x00, },
|
||||
+ { .reg = 0x030a, .val = 0x08, },
|
||||
+ { .reg = 0x030b, .val = 0x9b, },
|
||||
+ { .reg = 0x030d, .val = 0x00, },
|
||||
+ { .reg = 0x030e, .val = 0x1c, },
|
||||
+ { .reg = 0x0314, .val = 0xe1, },
|
||||
+ { .reg = 0x000d, .val = 0x82, },
|
||||
+ { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, },
|
||||
+ { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, },
|
||||
+ };
|
||||
+
|
||||
+ lg_dbg("\n");
|
||||
+
|
||||
+ ret = lgdt3305_write_regs(state, lgdt3304_init_data,
|
||||
+ ARRAY_SIZE(lgdt3304_init_data));
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_soft_reset(state);
|
||||
+fail:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_init(struct dvb_frontend *fe)
|
||||
{
|
||||
struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
@@ -639,6 +706,88 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int lgdt3304_set_parameters(struct dvb_frontend *fe,
|
||||
+ struct dvb_frontend_parameters *param)
|
||||
+{
|
||||
+ struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ lg_dbg("(%d, %d)\n", param->frequency, param->u.vsb.modulation);
|
||||
+
|
||||
+ if (fe->ops.tuner_ops.set_params) {
|
||||
+ ret = fe->ops.tuner_ops.set_params(fe, param);
|
||||
+ if (fe->ops.i2c_gate_ctrl)
|
||||
+ fe->ops.i2c_gate_ctrl(fe, 0);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+ state->current_frequency = param->frequency;
|
||||
+ }
|
||||
+
|
||||
+ ret = lgdt3305_set_modulation(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_passband_digital_agc(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_agc_setup(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ /* reg 0x030d is 3304-only... seen in vsb and qam usbsnoops... */
|
||||
+ switch (param->u.vsb.modulation) {
|
||||
+ case VSB_8:
|
||||
+ lgdt3305_write_reg(state, 0x030d, 0x00);
|
||||
+#if 1
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_1, 0x4f);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_2, 0x0c);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_3, 0xac);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_4, 0xba);
|
||||
+#endif
|
||||
+ break;
|
||||
+ case QAM_64:
|
||||
+ case QAM_256:
|
||||
+ lgdt3305_write_reg(state, 0x030d, 0x14);
|
||||
+#if 1
|
||||
+ ret = lgdt3305_set_if(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+#endif
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+#if 0
|
||||
+ /* the set_if vsb formula doesn't work for the 3304, we end up sending
|
||||
+ * 0x40851e07 instead of 0x4f0cacba (which works back to 94050, rather
|
||||
+ * than 3250, in the case of the kworld 340u) */
|
||||
+ ret = lgdt3305_set_if(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+#endif
|
||||
+
|
||||
+ ret = lgdt3305_spectral_inversion(state, param,
|
||||
+ state->cfg->spectral_inversion
|
||||
+ ? 1 : 0);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ state->current_modulation = param->u.vsb.modulation;
|
||||
+
|
||||
+ ret = lgdt3305_mpeg_mode(state, state->cfg->mpeg_mode);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ /* lgdt3305_mpeg_mode_polarity calls lgdt3305_soft_reset */
|
||||
+ ret = lgdt3305_mpeg_mode_polarity(state,
|
||||
+ state->cfg->tpclk_edge,
|
||||
+ state->cfg->tpvalid_polarity);
|
||||
+fail:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_set_parameters(struct dvb_frontend *fe,
|
||||
struct dvb_frontend_parameters *param)
|
||||
{
|
||||
@@ -847,6 +996,10 @@ static int lgdt3305_read_status(struct dvb_frontend *fe, fe_status_t *status)
|
||||
switch (state->current_modulation) {
|
||||
case QAM_256:
|
||||
case QAM_64:
|
||||
+#if 0 /* needed w/3304 to set FE_HAS_SIGNAL */
|
||||
+ if (cr_lock)
|
||||
+ *status |= FE_HAS_SIGNAL;
|
||||
+#endif
|
||||
ret = lgdt3305_read_fec_lock_status(state, &fec_lock);
|
||||
if (lg_fail(ret))
|
||||
goto fail;
|
||||
@@ -992,6 +1145,7 @@ static void lgdt3305_release(struct dvb_frontend *fe)
|
||||
kfree(state);
|
||||
}
|
||||
|
||||
+static struct dvb_frontend_ops lgdt3304_ops;
|
||||
static struct dvb_frontend_ops lgdt3305_ops;
|
||||
|
||||
struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
@@ -1012,11 +1166,21 @@ struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
state->cfg = config;
|
||||
state->i2c_adap = i2c_adap;
|
||||
|
||||
- memcpy(&state->frontend.ops, &lgdt3305_ops,
|
||||
- sizeof(struct dvb_frontend_ops));
|
||||
+ switch (config->demod_chip) {
|
||||
+ case LGDT3304:
|
||||
+ memcpy(&state->frontend.ops, &lgdt3304_ops,
|
||||
+ sizeof(struct dvb_frontend_ops));
|
||||
+ break;
|
||||
+ case LGDT3305:
|
||||
+ memcpy(&state->frontend.ops, &lgdt3305_ops,
|
||||
+ sizeof(struct dvb_frontend_ops));
|
||||
+ break;
|
||||
+ default:
|
||||
+ goto fail;
|
||||
+ }
|
||||
state->frontend.demodulator_priv = state;
|
||||
|
||||
- /* verify that we're talking to a lg dt3305 */
|
||||
+ /* verify that we're talking to a lg dt3304/5 */
|
||||
ret = lgdt3305_read_reg(state, LGDT3305_GEN_CTRL_2, &val);
|
||||
if ((lg_fail(ret)) | (val == 0))
|
||||
goto fail;
|
||||
@@ -1035,12 +1199,36 @@ struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
|
||||
return &state->frontend;
|
||||
fail:
|
||||
- lg_warn("unable to detect LGDT3305 hardware\n");
|
||||
+ lg_warn("unable to detect %s hardware\n",
|
||||
+ config->demod_chip ? "LGDT3304" : "LGDT3305");
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(lgdt3305_attach);
|
||||
|
||||
+static struct dvb_frontend_ops lgdt3304_ops = {
|
||||
+ .info = {
|
||||
+ .name = "LG Electronics LGDT3304 VSB/QAM Frontend",
|
||||
+ .type = FE_ATSC,
|
||||
+ .frequency_min = 54000000,
|
||||
+ .frequency_max = 858000000,
|
||||
+ .frequency_stepsize = 62500,
|
||||
+ .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
||||
+ },
|
||||
+ .i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl,
|
||||
+ .init = lgdt3304_init,
|
||||
+ .sleep = lgdt3304_sleep,
|
||||
+ .set_frontend = lgdt3304_set_parameters,
|
||||
+ .get_frontend = lgdt3305_get_frontend,
|
||||
+ .get_tune_settings = lgdt3305_get_tune_settings,
|
||||
+ .read_status = lgdt3305_read_status,
|
||||
+ .read_ber = lgdt3305_read_ber,
|
||||
+ .read_signal_strength = lgdt3305_read_signal_strength,
|
||||
+ .read_snr = lgdt3305_read_snr,
|
||||
+ .read_ucblocks = lgdt3305_read_ucblocks,
|
||||
+ .release = lgdt3305_release,
|
||||
+};
|
||||
+
|
||||
static struct dvb_frontend_ops lgdt3305_ops = {
|
||||
.info = {
|
||||
.name = "LG Electronics LGDT3305 VSB/QAM Frontend",
|
||||
@@ -1064,7 +1252,7 @@ static struct dvb_frontend_ops lgdt3305_ops = {
|
||||
.release = lgdt3305_release,
|
||||
};
|
||||
|
||||
-MODULE_DESCRIPTION("LG Electronics LGDT3305 ATSC/QAM-B Demodulator Driver");
|
||||
+MODULE_DESCRIPTION("LG Electronics LGDT3304/5 ATSC/QAM-B Demodulator Driver");
|
||||
MODULE_AUTHOR("Michael Krufky <mkrufky@linuxtv.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION("0.1");
|
||||
diff --git a/drivers/media/dvb/frontends/lgdt3305.h b/drivers/media/dvb/frontends/lgdt3305.h
|
||||
index 9cb11c9..a7f30c2 100644
|
||||
--- a/drivers/media/dvb/frontends/lgdt3305.h
|
||||
+++ b/drivers/media/dvb/frontends/lgdt3305.h
|
||||
@@ -41,6 +41,11 @@ enum lgdt3305_tp_valid_polarity {
|
||||
LGDT3305_TP_VALID_HIGH = 1,
|
||||
};
|
||||
|
||||
+enum lgdt_demod_chip_type {
|
||||
+ LGDT3305 = 0,
|
||||
+ LGDT3304 = 1,
|
||||
+};
|
||||
+
|
||||
struct lgdt3305_config {
|
||||
u8 i2c_addr;
|
||||
|
||||
@@ -65,6 +70,7 @@ struct lgdt3305_config {
|
||||
enum lgdt3305_mpeg_mode mpeg_mode;
|
||||
enum lgdt3305_tp_clock_edge tpclk_edge;
|
||||
enum lgdt3305_tp_valid_polarity tpvalid_polarity;
|
||||
+ enum lgdt_demod_chip_type demod_chip;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_DVB_LGDT3305) || (defined(CONFIG_DVB_LGDT3305_MODULE) && \
|
||||
--
|
||||
1.6.6
|
||||
|
0
linux-2.6-v4l-dvb-experimental.patch
Normal file
0
linux-2.6-v4l-dvb-experimental.patch
Normal file
0
linux-2.6-v4l-dvb-fixes.patch
Normal file
0
linux-2.6-v4l-dvb-fixes.patch
Normal file
6741
linux-2.6-v4l-dvb-ir-core-update.patch
Normal file
6741
linux-2.6-v4l-dvb-ir-core-update.patch
Normal file
File diff suppressed because it is too large
Load Diff
0
linux-2.6-v4l-dvb-update.patch
Normal file
0
linux-2.6-v4l-dvb-update.patch
Normal file
362
linux-2.6-v4l-dvb-uvcvideo-update.patch
Normal file
362
linux-2.6-v4l-dvb-uvcvideo-update.patch
Normal file
@ -0,0 +1,362 @@
|
||||
From: Martin Rubli <martin_rubli@logitech.com>
|
||||
Date: Wed, 19 May 2010 22:51:56 +0000 (+0200)
|
||||
Subject: uvcvideo: Add support for absolute pan/tilt controls
|
||||
X-Git-Url: http://git.linuxtv.org/pinchartl/uvcvideo.git?a=commitdiff_plain;h=d3c2f664ec76aff14c3841c99e84cd78d7227f79
|
||||
|
||||
uvcvideo: Add support for absolute pan/tilt controls
|
||||
|
||||
Signed-off-by: Martin Rubli <martin_rubli@logitech.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
index aa0720a..5ec2f4a 100644
|
||||
--- a/drivers/media/video/uvc/uvc_ctrl.c
|
||||
+++ b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
@@ -606,6 +606,26 @@ static struct uvc_control_mapping uvc_ctrl_mappings[] = {
|
||||
.set = uvc_ctrl_set_zoom,
|
||||
},
|
||||
{
|
||||
+ .id = V4L2_CID_PAN_ABSOLUTE,
|
||||
+ .name = "Pan (Absolute)",
|
||||
+ .entity = UVC_GUID_UVC_CAMERA,
|
||||
+ .selector = UVC_CT_PANTILT_ABSOLUTE_CONTROL,
|
||||
+ .size = 32,
|
||||
+ .offset = 0,
|
||||
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
|
||||
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
|
||||
+ },
|
||||
+ {
|
||||
+ .id = V4L2_CID_TILT_ABSOLUTE,
|
||||
+ .name = "Tilt (Absolute)",
|
||||
+ .entity = UVC_GUID_UVC_CAMERA,
|
||||
+ .selector = UVC_CT_PANTILT_ABSOLUTE_CONTROL,
|
||||
+ .size = 32,
|
||||
+ .offset = 32,
|
||||
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
|
||||
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
|
||||
+ },
|
||||
+ {
|
||||
.id = V4L2_CID_PRIVACY,
|
||||
.name = "Privacy",
|
||||
.entity = UVC_GUID_UVC_CAMERA,
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 19 May 2010 23:15:00 +0000 (+0200)
|
||||
Subject: uvcvideo: Make button controls work properly
|
||||
X-Git-Url: http://git.linuxtv.org/pinchartl/uvcvideo.git?a=commitdiff_plain;h=2bd47ad4894bfaf1a97660b821cbc46439a614d6
|
||||
|
||||
uvcvideo: Make button controls work properly
|
||||
|
||||
According to the v4l2 spec, writing any value to a button control should
|
||||
result in the action belonging to the button control being triggered.
|
||||
UVC cams however want to see a 1 written, this patch fixes this by
|
||||
overriding whatever value user space passed in with -1 (0xffffffff) when
|
||||
the control is a button control.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
index 5ec2f4a..8bb825d 100644
|
||||
--- a/drivers/media/video/uvc/uvc_ctrl.c
|
||||
+++ b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
@@ -698,6 +698,14 @@ static void uvc_set_le_value(struct uvc_control_mapping *mapping,
|
||||
int offset = mapping->offset;
|
||||
__u8 mask;
|
||||
|
||||
+ /* According to the v4l2 spec, writing any value to a button control
|
||||
+ * should result in the action belonging to the button control being
|
||||
+ * triggered. UVC devices however want to see a 1 written -> override
|
||||
+ * value.
|
||||
+ */
|
||||
+ if (mapping->v4l2_type == V4L2_CTRL_TYPE_BUTTON)
|
||||
+ value = -1;
|
||||
+
|
||||
data += offset / 8;
|
||||
offset &= 7;
|
||||
|
||||
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Date: Thu, 18 Feb 2010 19:38:52 +0000 (+0100)
|
||||
Subject: uvcvideo: Support menu controls in the control mapping API
|
||||
X-Git-Url: http://git.linuxtv.org/pinchartl/uvcvideo.git?a=commitdiff_plain;h=4930f2662e47d33e5baedac620da401a225bc3a8
|
||||
|
||||
uvcvideo: Support menu controls in the control mapping API
|
||||
|
||||
The UVCIOC_CTRL_MAP ioctl doesn't support menu entries for menu
|
||||
controls. As the uvc_xu_control_mapping structure has no reserved
|
||||
fields, this can't be fixed while keeping ABI compatibility.
|
||||
|
||||
Modify the UVCIOC_CTRL_MAP ioctl to add menu entries support, and define
|
||||
UVCIOC_CTRL_MAP_OLD that supports the old ABI without any ability to add
|
||||
menu controls.
|
||||
|
||||
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
index 8bb825d..c88d72e 100644
|
||||
--- a/drivers/media/video/uvc/uvc_ctrl.c
|
||||
+++ b/drivers/media/video/uvc/uvc_ctrl.c
|
||||
@@ -1606,6 +1606,28 @@ void uvc_ctrl_cleanup_device(struct uvc_device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
+void uvc_ctrl_cleanup(void)
|
||||
+{
|
||||
+ struct uvc_control_info *info;
|
||||
+ struct uvc_control_info *ni;
|
||||
+ struct uvc_control_mapping *mapping;
|
||||
+ struct uvc_control_mapping *nm;
|
||||
+
|
||||
+ list_for_each_entry_safe(info, ni, &uvc_driver.controls, list) {
|
||||
+ if (!(info->flags & UVC_CONTROL_EXTENSION))
|
||||
+ continue;
|
||||
+
|
||||
+ list_for_each_entry_safe(mapping, nm, &info->mappings, list) {
|
||||
+ list_del(&mapping->list);
|
||||
+ kfree(mapping->menu_info);
|
||||
+ kfree(mapping);
|
||||
+ }
|
||||
+
|
||||
+ list_del(&info->list);
|
||||
+ kfree(info);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void uvc_ctrl_init(void)
|
||||
{
|
||||
struct uvc_control_info *ctrl = uvc_ctrls;
|
||||
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
|
||||
index 838b56f..34818c1 100644
|
||||
--- a/drivers/media/video/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/video/uvc/uvc_driver.c
|
||||
@@ -2261,6 +2261,7 @@ static int __init uvc_init(void)
|
||||
static void __exit uvc_cleanup(void)
|
||||
{
|
||||
usb_deregister(&uvc_driver.driver);
|
||||
+ uvc_ctrl_cleanup();
|
||||
}
|
||||
|
||||
module_init(uvc_init);
|
||||
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
|
||||
index 7c9ab29..485a899 100644
|
||||
--- a/drivers/media/video/uvc/uvc_v4l2.c
|
||||
+++ b/drivers/media/video/uvc/uvc_v4l2.c
|
||||
@@ -29,6 +29,71 @@
|
||||
#include "uvcvideo.h"
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
+ * UVC ioctls
|
||||
+ */
|
||||
+static int uvc_ioctl_ctrl_map(struct uvc_xu_control_mapping *xmap, int old)
|
||||
+{
|
||||
+ struct uvc_control_mapping *map;
|
||||
+ unsigned int size;
|
||||
+ int ret;
|
||||
+
|
||||
+ map = kzalloc(sizeof *map, GFP_KERNEL);
|
||||
+ if (map == NULL)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ map->id = xmap->id;
|
||||
+ memcpy(map->name, xmap->name, sizeof map->name);
|
||||
+ memcpy(map->entity, xmap->entity, sizeof map->entity);
|
||||
+ map->selector = xmap->selector;
|
||||
+ map->size = xmap->size;
|
||||
+ map->offset = xmap->offset;
|
||||
+ map->v4l2_type = xmap->v4l2_type;
|
||||
+ map->data_type = xmap->data_type;
|
||||
+
|
||||
+ switch (xmap->v4l2_type) {
|
||||
+ case V4L2_CTRL_TYPE_INTEGER:
|
||||
+ case V4L2_CTRL_TYPE_BOOLEAN:
|
||||
+ case V4L2_CTRL_TYPE_BUTTON:
|
||||
+ break;
|
||||
+
|
||||
+ case V4L2_CTRL_TYPE_MENU:
|
||||
+ if (old) {
|
||||
+ ret = -EINVAL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ size = xmap->menu_count * sizeof(*map->menu_info);
|
||||
+ map->menu_info = kmalloc(size, GFP_KERNEL);
|
||||
+ if (map->menu_info == NULL) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ if (copy_from_user(map->menu_info, xmap->menu_info, size)) {
|
||||
+ ret = -EFAULT;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ map->menu_count = xmap->menu_count;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ ret = -EINVAL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ ret = uvc_ctrl_add_mapping(map);
|
||||
+
|
||||
+done:
|
||||
+ if (ret < 0) {
|
||||
+ kfree(map->menu_info);
|
||||
+ kfree(map);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+/* ------------------------------------------------------------------------
|
||||
* V4L2 interface
|
||||
*/
|
||||
|
||||
@@ -974,7 +1039,8 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||
info->flags = xinfo->flags;
|
||||
|
||||
info->flags |= UVC_CONTROL_GET_MIN | UVC_CONTROL_GET_MAX |
|
||||
- UVC_CONTROL_GET_RES | UVC_CONTROL_GET_DEF;
|
||||
+ UVC_CONTROL_GET_RES | UVC_CONTROL_GET_DEF |
|
||||
+ UVC_CONTROL_EXTENSION;
|
||||
|
||||
ret = uvc_ctrl_add_info(info);
|
||||
if (ret < 0)
|
||||
@@ -982,32 +1048,12 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||
break;
|
||||
}
|
||||
|
||||
+ case UVCIOC_CTRL_MAP_OLD:
|
||||
case UVCIOC_CTRL_MAP:
|
||||
- {
|
||||
- struct uvc_xu_control_mapping *xmap = arg;
|
||||
- struct uvc_control_mapping *map;
|
||||
-
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
- map = kzalloc(sizeof *map, GFP_KERNEL);
|
||||
- if (map == NULL)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- map->id = xmap->id;
|
||||
- memcpy(map->name, xmap->name, sizeof map->name);
|
||||
- memcpy(map->entity, xmap->entity, sizeof map->entity);
|
||||
- map->selector = xmap->selector;
|
||||
- map->size = xmap->size;
|
||||
- map->offset = xmap->offset;
|
||||
- map->v4l2_type = xmap->v4l2_type;
|
||||
- map->data_type = xmap->data_type;
|
||||
-
|
||||
- ret = uvc_ctrl_add_mapping(map);
|
||||
- if (ret < 0)
|
||||
- kfree(map);
|
||||
- break;
|
||||
- }
|
||||
+ return uvc_ioctl_ctrl_map(arg, cmd == UVCIOC_CTRL_MAP_OLD);
|
||||
|
||||
case UVCIOC_CTRL_GET:
|
||||
return uvc_xu_ctrl_query(chain, arg, 0);
|
||||
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
|
||||
index d1f8840..14f77e4 100644
|
||||
--- a/drivers/media/video/uvc/uvcvideo.h
|
||||
+++ b/drivers/media/video/uvc/uvcvideo.h
|
||||
@@ -27,6 +27,8 @@
|
||||
#define UVC_CONTROL_RESTORE (1 << 6)
|
||||
/* Control can be updated by the camera. */
|
||||
#define UVC_CONTROL_AUTO_UPDATE (1 << 7)
|
||||
+/* Control is an extension unit control. */
|
||||
+#define UVC_CONTROL_EXTENSION (1 << 8)
|
||||
|
||||
#define UVC_CONTROL_GET_RANGE (UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_MIN | \
|
||||
UVC_CONTROL_GET_MAX | UVC_CONTROL_GET_RES | \
|
||||
@@ -40,6 +42,15 @@ struct uvc_xu_control_info {
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
+struct uvc_menu_info {
|
||||
+ __u32 value;
|
||||
+ __u8 name[32];
|
||||
+};
|
||||
+
|
||||
+struct uvc_xu_control_mapping_old {
|
||||
+ __u8 reserved[64];
|
||||
+};
|
||||
+
|
||||
struct uvc_xu_control_mapping {
|
||||
__u32 id;
|
||||
__u8 name[32];
|
||||
@@ -50,6 +61,11 @@ struct uvc_xu_control_mapping {
|
||||
__u8 offset;
|
||||
enum v4l2_ctrl_type v4l2_type;
|
||||
__u32 data_type;
|
||||
+
|
||||
+ struct uvc_menu_info __user *menu_info;
|
||||
+ __u32 menu_count;
|
||||
+
|
||||
+ __u32 reserved[4];
|
||||
};
|
||||
|
||||
struct uvc_xu_control {
|
||||
@@ -60,6 +76,7 @@ struct uvc_xu_control {
|
||||
};
|
||||
|
||||
#define UVCIOC_CTRL_ADD _IOW('U', 1, struct uvc_xu_control_info)
|
||||
+#define UVCIOC_CTRL_MAP_OLD _IOWR('U', 2, struct uvc_xu_control_mapping_old)
|
||||
#define UVCIOC_CTRL_MAP _IOWR('U', 2, struct uvc_xu_control_mapping)
|
||||
#define UVCIOC_CTRL_GET _IOWR('U', 3, struct uvc_xu_control)
|
||||
#define UVCIOC_CTRL_SET _IOW('U', 4, struct uvc_xu_control)
|
||||
@@ -198,11 +215,6 @@ struct uvc_streaming_control {
|
||||
__u8 bMaxVersion;
|
||||
};
|
||||
|
||||
-struct uvc_menu_info {
|
||||
- __u32 value;
|
||||
- __u8 name[32];
|
||||
-};
|
||||
-
|
||||
struct uvc_control_info {
|
||||
struct list_head list;
|
||||
struct list_head mappings;
|
||||
@@ -625,6 +637,7 @@ extern int uvc_ctrl_init_device(struct uvc_device *dev);
|
||||
extern void uvc_ctrl_cleanup_device(struct uvc_device *dev);
|
||||
extern int uvc_ctrl_resume_device(struct uvc_device *dev);
|
||||
extern void uvc_ctrl_init(void);
|
||||
+extern void uvc_ctrl_cleanup(void);
|
||||
|
||||
extern int uvc_ctrl_begin(struct uvc_video_chain *chain);
|
||||
extern int __uvc_ctrl_commit(struct uvc_video_chain *chain, int rollback);
|
||||
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Date: Fri, 25 Jun 2010 07:58:43 +0000 (+0200)
|
||||
Subject: uvcvideo: Add support for Manta MM-353 Plako
|
||||
X-Git-Url: http://git.linuxtv.org/pinchartl/uvcvideo.git?a=commitdiff_plain;h=352e661e1f347390a86cf34bc5e41adbdd1caa41
|
||||
|
||||
uvcvideo: Add support for Manta MM-353 Plako
|
||||
|
||||
The camera requires the PROBE_MINMAX quirk. Add a corresponding entry
|
||||
in the device IDs list
|
||||
|
||||
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
|
||||
index 34818c1..1a89384 100644
|
||||
--- a/drivers/media/video/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/video/uvc/uvc_driver.c
|
||||
@@ -2174,6 +2174,15 @@ static struct usb_device_id uvc_ids[] = {
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_QUIRK_PROBE_EXTRAFIELDS },
|
||||
+ /* Manta MM-353 Plako */
|
||||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
|
||||
+ | USB_DEVICE_ID_MATCH_INT_INFO,
|
||||
+ .idVendor = 0x18ec,
|
||||
+ .idProduct = 0x3188,
|
||||
+ .bInterfaceClass = USB_CLASS_VIDEO,
|
||||
+ .bInterfaceSubClass = 1,
|
||||
+ .bInterfaceProtocol = 0,
|
||||
+ .driver_info = UVC_QUIRK_PROBE_MINMAX },
|
||||
/* FSC WebCam V30S */
|
||||
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
|
||||
| USB_DEVICE_ID_MATCH_INT_INFO,
|
21
linux-2.6.29-sparc-IOC_TYPECHECK.patch
Normal file
21
linux-2.6.29-sparc-IOC_TYPECHECK.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up vanilla-2.6.29-rc7-git2/arch/sparc/include/asm/ioctl.h.BAD vanilla-2.6.29-rc7-git2/arch/sparc/include/asm/ioctl.h
|
||||
--- vanilla-2.6.29-rc7-git2/arch/sparc/include/asm/ioctl.h.BAD 2009-03-09 17:01:32.000000000 -0400
|
||||
+++ vanilla-2.6.29-rc7-git2/arch/sparc/include/asm/ioctl.h 2009-03-09 16:52:27.000000000 -0400
|
||||
@@ -41,6 +41,17 @@
|
||||
((nr) << _IOC_NRSHIFT) | \
|
||||
((size) << _IOC_SIZESHIFT))
|
||||
|
||||
+#ifdef __KERNEL__
|
||||
+/* provoke compile error for invalid uses of size argument */
|
||||
+extern unsigned int __invalid_size_argument_for_IOC;
|
||||
+#define _IOC_TYPECHECK(t) \
|
||||
+ ((sizeof(t) == sizeof(t[1]) && \
|
||||
+ sizeof(t) < (1 << _IOC_SIZEBITS)) ? \
|
||||
+ sizeof(t) : __invalid_size_argument_for_IOC)
|
||||
+#else
|
||||
+#define _IOC_TYPECHECK(t) (sizeof(t))
|
||||
+#endif
|
||||
+
|
||||
#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
|
||||
#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
|
||||
#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
|
11
linux-2.6.30-no-pcspkr-modalias.patch
Normal file
11
linux-2.6.30-no-pcspkr-modalias.patch
Normal file
@ -0,0 +1,11 @@
|
||||
diff -up linux-2.6.30.noarch/drivers/input/misc/pcspkr.c.jx linux-2.6.30.noarch/drivers/input/misc/pcspkr.c
|
||||
--- linux-2.6.30.noarch/drivers/input/misc/pcspkr.c.jx 2009-07-28 16:54:44.000000000 -0400
|
||||
+++ linux-2.6.30.noarch/drivers/input/misc/pcspkr.c 2009-07-28 16:59:36.000000000 -0400
|
||||
@@ -23,7 +23,6 @@
|
||||
MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
|
||||
MODULE_DESCRIPTION("PC Speaker beeper driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
-MODULE_ALIAS("platform:pcspkr");
|
||||
|
||||
#if defined(CONFIG_MIPS) || defined(CONFIG_X86)
|
||||
/* Use the global PIT lock ! */
|
12190
lirc-staging-2.6.36.patch
Normal file
12190
lirc-staging-2.6.36.patch
Normal file
File diff suppressed because it is too large
Load Diff
66
merge.pl
Executable file
66
merge.pl
Executable file
@ -0,0 +1,66 @@
|
||||
#! /usr/bin/perl
|
||||
|
||||
my @args=@ARGV;
|
||||
my %configvalues;
|
||||
my @configoptions;
|
||||
my $configcounter = 0;
|
||||
|
||||
# optionally print out the architecture as the first line of our output
|
||||
my $arch = $args[2];
|
||||
if (defined $arch) {
|
||||
print "# $arch\n";
|
||||
}
|
||||
|
||||
# first, read the override file
|
||||
|
||||
open (FILE,"$args[0]") || die "Could not open $args[0]";
|
||||
while (<FILE>) {
|
||||
my $str = $_;
|
||||
my $configname;
|
||||
|
||||
if (/\# ([\w]+) is not set/) {
|
||||
$configname = $1;
|
||||
} elsif (/([\w]+)=/) {
|
||||
$configname = $1;
|
||||
}
|
||||
|
||||
if (defined($configname) && !exists($configvalues{$configname})) {
|
||||
$configvalues{$configname} = $str;
|
||||
$configoptions[$configcounter] = $configname;
|
||||
$configcounter ++;
|
||||
}
|
||||
};
|
||||
|
||||
# now, read and output the entire configfile, except for the overridden
|
||||
# parts... for those the new value is printed.
|
||||
|
||||
open (FILE2,"$args[1]") || die "Could not open $args[1]";
|
||||
while (<FILE2>) {
|
||||
my $configname;
|
||||
|
||||
if (/\# ([\w]+) is not set/) {
|
||||
$configname = $1;
|
||||
} elsif (/([\w]+)=/) {
|
||||
$configname = $1;
|
||||
}
|
||||
|
||||
if (defined($configname) && exists($configvalues{$configname})) {
|
||||
print "$configvalues{$configname}";
|
||||
delete($configvalues{$configname});
|
||||
} else {
|
||||
print "$_";
|
||||
}
|
||||
}
|
||||
|
||||
# now print the new values from the overridden configfile
|
||||
my $counter = 0;
|
||||
|
||||
while ($counter < $configcounter) {
|
||||
my $configname = $configoptions[$counter];
|
||||
if (exists($configvalues{$configname})) {
|
||||
print "$configvalues{$configname}";
|
||||
}
|
||||
$counter++;
|
||||
}
|
||||
|
||||
1;
|
24
neuter_intel_microcode_load.patch
Normal file
24
neuter_intel_microcode_load.patch
Normal file
@ -0,0 +1,24 @@
|
||||
diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
|
||||
index ebd193e..c57024a 100644
|
||||
--- a/arch/x86/kernel/microcode_intel.c
|
||||
+++ b/arch/x86/kernel/microcode_intel.c
|
||||
@@ -453,9 +453,18 @@ static void microcode_fini_cpu(int cpu)
|
||||
uci->mc = NULL;
|
||||
}
|
||||
|
||||
+/* we don't ship the broken out files...
|
||||
+ * instead, we'll just fail here, and load it with microcode_ctl
|
||||
+ */
|
||||
+static enum ucode_state noop_request_microcode_fw(int cpu,
|
||||
+ struct device *device)
|
||||
+{
|
||||
+ return UCODE_NFOUND;
|
||||
+}
|
||||
+
|
||||
static struct microcode_ops microcode_intel_ops = {
|
||||
.request_microcode_user = request_microcode_user,
|
||||
- .request_microcode_fw = request_microcode_fw,
|
||||
+ .request_microcode_fw = noop_request_microcode_fw,
|
||||
.collect_cpu_info = collect_cpu_info,
|
||||
.apply_microcode = apply_microcode,
|
||||
.microcode_fini_cpu = microcode_fini_cpu,
|
788
only-use-alpha2-regulatory-information-from-country-IE.patch
Normal file
788
only-use-alpha2-regulatory-information-from-country-IE.patch
Normal file
@ -0,0 +1,788 @@
|
||||
From linville@tuxdriver.com Thu Jul 15 15:40:22 2010
|
||||
From: "John W. Linville" <linville@tuxdriver.com>
|
||||
Subject: [RFC] wireless: only use alpha2 regulatory information from country IE
|
||||
Date: Thu, 15 Jul 2010 15:06:47 -0400
|
||||
|
||||
The meaning and/or usage of the country IE is somewhat poorly defined.
|
||||
In practice, this means that regulatory rulesets in a country IE are
|
||||
often incomplete and might be untrustworthy. This removes the code
|
||||
associated with interpreting those rulesets while preserving respect
|
||||
for country "alpha2" codes also contained in the country IE.
|
||||
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
This patch is compile-tested only! Please feel free to suggest that
|
||||
I have left something out or missed some nuance of our regulatory
|
||||
enforcement code...
|
||||
|
||||
include/net/regulatory.h | 1 -
|
||||
net/wireless/reg.c | 625 +---------------------------------------------
|
||||
2 files changed, 12 insertions(+), 614 deletions(-)
|
||||
|
||||
diff --git a/include/net/regulatory.h b/include/net/regulatory.h
|
||||
index f873ee3..9e103a4 100644
|
||||
--- a/include/net/regulatory.h
|
||||
+++ b/include/net/regulatory.h
|
||||
@@ -54,7 +54,6 @@ struct regulatory_request {
|
||||
enum nl80211_reg_initiator initiator;
|
||||
char alpha2[2];
|
||||
bool intersect;
|
||||
- u32 country_ie_checksum;
|
||||
enum environment_cap country_ie_env;
|
||||
struct list_head list;
|
||||
};
|
||||
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
|
||||
index 1ac2bdd..678d0bd 100644
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -67,17 +67,9 @@ static struct platform_device *reg_pdev;
|
||||
const struct ieee80211_regdomain *cfg80211_regdomain;
|
||||
|
||||
/*
|
||||
- * We use this as a place for the rd structure built from the
|
||||
- * last parsed country IE to rest until CRDA gets back to us with
|
||||
- * what it thinks should apply for the same country
|
||||
- */
|
||||
-static const struct ieee80211_regdomain *country_ie_regdomain;
|
||||
-
|
||||
-/*
|
||||
* Protects static reg.c components:
|
||||
* - cfg80211_world_regdom
|
||||
* - cfg80211_regdom
|
||||
- * - country_ie_regdomain
|
||||
* - last_request
|
||||
*/
|
||||
static DEFINE_MUTEX(reg_mutex);
|
||||
@@ -275,25 +267,6 @@ static bool is_user_regdom_saved(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
-/**
|
||||
- * country_ie_integrity_changes - tells us if the country IE has changed
|
||||
- * @checksum: checksum of country IE of fields we are interested in
|
||||
- *
|
||||
- * If the country IE has not changed you can ignore it safely. This is
|
||||
- * useful to determine if two devices are seeing two different country IEs
|
||||
- * even on the same alpha2. Note that this will return false if no IE has
|
||||
- * been set on the wireless core yet.
|
||||
- */
|
||||
-static bool country_ie_integrity_changes(u32 checksum)
|
||||
-{
|
||||
- /* If no IE has been set then the checksum doesn't change */
|
||||
- if (unlikely(!last_request->country_ie_checksum))
|
||||
- return false;
|
||||
- if (unlikely(last_request->country_ie_checksum != checksum))
|
||||
- return true;
|
||||
- return false;
|
||||
-}
|
||||
-
|
||||
static int reg_copy_regd(const struct ieee80211_regdomain **dst_regd,
|
||||
const struct ieee80211_regdomain *src_regd)
|
||||
{
|
||||
@@ -506,471 +479,6 @@ static bool freq_in_rule_band(const struct ieee80211_freq_range *freq_range,
|
||||
}
|
||||
|
||||
/*
|
||||
- * This is a work around for sanity checking ieee80211_channel_to_frequency()'s
|
||||
- * work. ieee80211_channel_to_frequency() can for example currently provide a
|
||||
- * 2 GHz channel when in fact a 5 GHz channel was desired. An example would be
|
||||
- * an AP providing channel 8 on a country IE triplet when it sent this on the
|
||||
- * 5 GHz band, that channel is designed to be channel 8 on 5 GHz, not a 2 GHz
|
||||
- * channel.
|
||||
- *
|
||||
- * This can be removed once ieee80211_channel_to_frequency() takes in a band.
|
||||
- */
|
||||
-static bool chan_in_band(int chan, enum ieee80211_band band)
|
||||
-{
|
||||
- int center_freq = ieee80211_channel_to_frequency(chan);
|
||||
-
|
||||
- switch (band) {
|
||||
- case IEEE80211_BAND_2GHZ:
|
||||
- if (center_freq <= 2484)
|
||||
- return true;
|
||||
- return false;
|
||||
- case IEEE80211_BAND_5GHZ:
|
||||
- if (center_freq >= 5005)
|
||||
- return true;
|
||||
- return false;
|
||||
- default:
|
||||
- return false;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- * Some APs may send a country IE triplet for each channel they
|
||||
- * support and while this is completely overkill and silly we still
|
||||
- * need to support it. We avoid making a single rule for each channel
|
||||
- * though and to help us with this we use this helper to find the
|
||||
- * actual subband end channel. These type of country IE triplet
|
||||
- * scenerios are handled then, all yielding two regulaotry rules from
|
||||
- * parsing a country IE:
|
||||
- *
|
||||
- * [1]
|
||||
- * [2]
|
||||
- * [36]
|
||||
- * [40]
|
||||
- *
|
||||
- * [1]
|
||||
- * [2-4]
|
||||
- * [5-12]
|
||||
- * [36]
|
||||
- * [40-44]
|
||||
- *
|
||||
- * [1-4]
|
||||
- * [5-7]
|
||||
- * [36-44]
|
||||
- * [48-64]
|
||||
- *
|
||||
- * [36-36]
|
||||
- * [40-40]
|
||||
- * [44-44]
|
||||
- * [48-48]
|
||||
- * [52-52]
|
||||
- * [56-56]
|
||||
- * [60-60]
|
||||
- * [64-64]
|
||||
- * [100-100]
|
||||
- * [104-104]
|
||||
- * [108-108]
|
||||
- * [112-112]
|
||||
- * [116-116]
|
||||
- * [120-120]
|
||||
- * [124-124]
|
||||
- * [128-128]
|
||||
- * [132-132]
|
||||
- * [136-136]
|
||||
- * [140-140]
|
||||
- *
|
||||
- * Returns 0 if the IE has been found to be invalid in the middle
|
||||
- * somewhere.
|
||||
- */
|
||||
-static int max_subband_chan(enum ieee80211_band band,
|
||||
- int orig_cur_chan,
|
||||
- int orig_end_channel,
|
||||
- s8 orig_max_power,
|
||||
- u8 **country_ie,
|
||||
- u8 *country_ie_len)
|
||||
-{
|
||||
- u8 *triplets_start = *country_ie;
|
||||
- u8 len_at_triplet = *country_ie_len;
|
||||
- int end_subband_chan = orig_end_channel;
|
||||
-
|
||||
- /*
|
||||
- * We'll deal with padding for the caller unless
|
||||
- * its not immediate and we don't process any channels
|
||||
- */
|
||||
- if (*country_ie_len == 1) {
|
||||
- *country_ie += 1;
|
||||
- *country_ie_len -= 1;
|
||||
- return orig_end_channel;
|
||||
- }
|
||||
-
|
||||
- /* Move to the next triplet and then start search */
|
||||
- *country_ie += 3;
|
||||
- *country_ie_len -= 3;
|
||||
-
|
||||
- if (!chan_in_band(orig_cur_chan, band))
|
||||
- return 0;
|
||||
-
|
||||
- while (*country_ie_len >= 3) {
|
||||
- int end_channel = 0;
|
||||
- struct ieee80211_country_ie_triplet *triplet =
|
||||
- (struct ieee80211_country_ie_triplet *) *country_ie;
|
||||
- int cur_channel = 0, next_expected_chan;
|
||||
-
|
||||
- /* means last triplet is completely unrelated to this one */
|
||||
- if (triplet->ext.reg_extension_id >=
|
||||
- IEEE80211_COUNTRY_EXTENSION_ID) {
|
||||
- *country_ie -= 3;
|
||||
- *country_ie_len += 3;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- if (triplet->chans.first_channel == 0) {
|
||||
- *country_ie += 1;
|
||||
- *country_ie_len -= 1;
|
||||
- if (*country_ie_len != 0)
|
||||
- return 0;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- if (triplet->chans.num_channels == 0)
|
||||
- return 0;
|
||||
-
|
||||
- /* Monitonically increasing channel order */
|
||||
- if (triplet->chans.first_channel <= end_subband_chan)
|
||||
- return 0;
|
||||
-
|
||||
- if (!chan_in_band(triplet->chans.first_channel, band))
|
||||
- return 0;
|
||||
-
|
||||
- /* 2 GHz */
|
||||
- if (triplet->chans.first_channel <= 14) {
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- triplet->chans.num_channels - 1;
|
||||
- }
|
||||
- else {
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- (4 * (triplet->chans.num_channels - 1));
|
||||
- }
|
||||
-
|
||||
- if (!chan_in_band(end_channel, band))
|
||||
- return 0;
|
||||
-
|
||||
- if (orig_max_power != triplet->chans.max_power) {
|
||||
- *country_ie -= 3;
|
||||
- *country_ie_len += 3;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- cur_channel = triplet->chans.first_channel;
|
||||
-
|
||||
- /* The key is finding the right next expected channel */
|
||||
- if (band == IEEE80211_BAND_2GHZ)
|
||||
- next_expected_chan = end_subband_chan + 1;
|
||||
- else
|
||||
- next_expected_chan = end_subband_chan + 4;
|
||||
-
|
||||
- if (cur_channel != next_expected_chan) {
|
||||
- *country_ie -= 3;
|
||||
- *country_ie_len += 3;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- end_subband_chan = end_channel;
|
||||
-
|
||||
- /* Move to the next one */
|
||||
- *country_ie += 3;
|
||||
- *country_ie_len -= 3;
|
||||
-
|
||||
- /*
|
||||
- * Padding needs to be dealt with if we processed
|
||||
- * some channels.
|
||||
- */
|
||||
- if (*country_ie_len == 1) {
|
||||
- *country_ie += 1;
|
||||
- *country_ie_len -= 1;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- /* If seen, the IE is invalid */
|
||||
- if (*country_ie_len == 2)
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- if (end_subband_chan == orig_end_channel) {
|
||||
- *country_ie = triplets_start;
|
||||
- *country_ie_len = len_at_triplet;
|
||||
- return orig_end_channel;
|
||||
- }
|
||||
-
|
||||
- return end_subband_chan;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- * Converts a country IE to a regulatory domain. A regulatory domain
|
||||
- * structure has a lot of information which the IE doesn't yet have,
|
||||
- * so for the other values we use upper max values as we will intersect
|
||||
- * with our userspace regulatory agent to get lower bounds.
|
||||
- */
|
||||
-static struct ieee80211_regdomain *country_ie_2_rd(
|
||||
- enum ieee80211_band band,
|
||||
- u8 *country_ie,
|
||||
- u8 country_ie_len,
|
||||
- u32 *checksum)
|
||||
-{
|
||||
- struct ieee80211_regdomain *rd = NULL;
|
||||
- unsigned int i = 0;
|
||||
- char alpha2[2];
|
||||
- u32 flags = 0;
|
||||
- u32 num_rules = 0, size_of_regd = 0;
|
||||
- u8 *triplets_start = NULL;
|
||||
- u8 len_at_triplet = 0;
|
||||
- /* the last channel we have registered in a subband (triplet) */
|
||||
- int last_sub_max_channel = 0;
|
||||
-
|
||||
- *checksum = 0xDEADBEEF;
|
||||
-
|
||||
- /* Country IE requirements */
|
||||
- BUG_ON(country_ie_len < IEEE80211_COUNTRY_IE_MIN_LEN ||
|
||||
- country_ie_len & 0x01);
|
||||
-
|
||||
- alpha2[0] = country_ie[0];
|
||||
- alpha2[1] = country_ie[1];
|
||||
-
|
||||
- /*
|
||||
- * Third octet can be:
|
||||
- * 'I' - Indoor
|
||||
- * 'O' - Outdoor
|
||||
- *
|
||||
- * anything else we assume is no restrictions
|
||||
- */
|
||||
- if (country_ie[2] == 'I')
|
||||
- flags = NL80211_RRF_NO_OUTDOOR;
|
||||
- else if (country_ie[2] == 'O')
|
||||
- flags = NL80211_RRF_NO_INDOOR;
|
||||
-
|
||||
- country_ie += 3;
|
||||
- country_ie_len -= 3;
|
||||
-
|
||||
- triplets_start = country_ie;
|
||||
- len_at_triplet = country_ie_len;
|
||||
-
|
||||
- *checksum ^= ((flags ^ alpha2[0] ^ alpha2[1]) << 8);
|
||||
-
|
||||
- /*
|
||||
- * We need to build a reg rule for each triplet, but first we must
|
||||
- * calculate the number of reg rules we will need. We will need one
|
||||
- * for each channel subband
|
||||
- */
|
||||
- while (country_ie_len >= 3) {
|
||||
- int end_channel = 0;
|
||||
- struct ieee80211_country_ie_triplet *triplet =
|
||||
- (struct ieee80211_country_ie_triplet *) country_ie;
|
||||
- int cur_sub_max_channel = 0, cur_channel = 0;
|
||||
-
|
||||
- if (triplet->ext.reg_extension_id >=
|
||||
- IEEE80211_COUNTRY_EXTENSION_ID) {
|
||||
- country_ie += 3;
|
||||
- country_ie_len -= 3;
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * APs can add padding to make length divisible
|
||||
- * by two, required by the spec.
|
||||
- */
|
||||
- if (triplet->chans.first_channel == 0) {
|
||||
- country_ie++;
|
||||
- country_ie_len--;
|
||||
- /* This is expected to be at the very end only */
|
||||
- if (country_ie_len != 0)
|
||||
- return NULL;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- if (triplet->chans.num_channels == 0)
|
||||
- return NULL;
|
||||
-
|
||||
- if (!chan_in_band(triplet->chans.first_channel, band))
|
||||
- return NULL;
|
||||
-
|
||||
- /* 2 GHz */
|
||||
- if (band == IEEE80211_BAND_2GHZ)
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- triplet->chans.num_channels - 1;
|
||||
- else
|
||||
- /*
|
||||
- * 5 GHz -- For example in country IEs if the first
|
||||
- * channel given is 36 and the number of channels is 4
|
||||
- * then the individual channel numbers defined for the
|
||||
- * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
|
||||
- * and not 36, 37, 38, 39.
|
||||
- *
|
||||
- * See: http://tinyurl.com/11d-clarification
|
||||
- */
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- (4 * (triplet->chans.num_channels - 1));
|
||||
-
|
||||
- cur_channel = triplet->chans.first_channel;
|
||||
-
|
||||
- /*
|
||||
- * Enhancement for APs that send a triplet for every channel
|
||||
- * or for whatever reason sends triplets with multiple channels
|
||||
- * separated when in fact they should be together.
|
||||
- */
|
||||
- end_channel = max_subband_chan(band,
|
||||
- cur_channel,
|
||||
- end_channel,
|
||||
- triplet->chans.max_power,
|
||||
- &country_ie,
|
||||
- &country_ie_len);
|
||||
- if (!end_channel)
|
||||
- return NULL;
|
||||
-
|
||||
- if (!chan_in_band(end_channel, band))
|
||||
- return NULL;
|
||||
-
|
||||
- cur_sub_max_channel = end_channel;
|
||||
-
|
||||
- /* Basic sanity check */
|
||||
- if (cur_sub_max_channel < cur_channel)
|
||||
- return NULL;
|
||||
-
|
||||
- /*
|
||||
- * Do not allow overlapping channels. Also channels
|
||||
- * passed in each subband must be monotonically
|
||||
- * increasing
|
||||
- */
|
||||
- if (last_sub_max_channel) {
|
||||
- if (cur_channel <= last_sub_max_channel)
|
||||
- return NULL;
|
||||
- if (cur_sub_max_channel <= last_sub_max_channel)
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * When dot11RegulatoryClassesRequired is supported
|
||||
- * we can throw ext triplets as part of this soup,
|
||||
- * for now we don't care when those change as we
|
||||
- * don't support them
|
||||
- */
|
||||
- *checksum ^= ((cur_channel ^ cur_sub_max_channel) << 8) |
|
||||
- ((cur_sub_max_channel ^ cur_sub_max_channel) << 16) |
|
||||
- ((triplet->chans.max_power ^ cur_sub_max_channel) << 24);
|
||||
-
|
||||
- last_sub_max_channel = cur_sub_max_channel;
|
||||
-
|
||||
- num_rules++;
|
||||
-
|
||||
- if (country_ie_len >= 3) {
|
||||
- country_ie += 3;
|
||||
- country_ie_len -= 3;
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * Note: this is not a IEEE requirement but
|
||||
- * simply a memory requirement
|
||||
- */
|
||||
- if (num_rules > NL80211_MAX_SUPP_REG_RULES)
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- country_ie = triplets_start;
|
||||
- country_ie_len = len_at_triplet;
|
||||
-
|
||||
- size_of_regd = sizeof(struct ieee80211_regdomain) +
|
||||
- (num_rules * sizeof(struct ieee80211_reg_rule));
|
||||
-
|
||||
- rd = kzalloc(size_of_regd, GFP_KERNEL);
|
||||
- if (!rd)
|
||||
- return NULL;
|
||||
-
|
||||
- rd->n_reg_rules = num_rules;
|
||||
- rd->alpha2[0] = alpha2[0];
|
||||
- rd->alpha2[1] = alpha2[1];
|
||||
-
|
||||
- /* This time around we fill in the rd */
|
||||
- while (country_ie_len >= 3) {
|
||||
- int end_channel = 0;
|
||||
- struct ieee80211_country_ie_triplet *triplet =
|
||||
- (struct ieee80211_country_ie_triplet *) country_ie;
|
||||
- struct ieee80211_reg_rule *reg_rule = NULL;
|
||||
- struct ieee80211_freq_range *freq_range = NULL;
|
||||
- struct ieee80211_power_rule *power_rule = NULL;
|
||||
-
|
||||
- /*
|
||||
- * Must parse if dot11RegulatoryClassesRequired is true,
|
||||
- * we don't support this yet
|
||||
- */
|
||||
- if (triplet->ext.reg_extension_id >=
|
||||
- IEEE80211_COUNTRY_EXTENSION_ID) {
|
||||
- country_ie += 3;
|
||||
- country_ie_len -= 3;
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (triplet->chans.first_channel == 0) {
|
||||
- country_ie++;
|
||||
- country_ie_len--;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- reg_rule = &rd->reg_rules[i];
|
||||
- freq_range = ®_rule->freq_range;
|
||||
- power_rule = ®_rule->power_rule;
|
||||
-
|
||||
- reg_rule->flags = flags;
|
||||
-
|
||||
- /* 2 GHz */
|
||||
- if (band == IEEE80211_BAND_2GHZ)
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- triplet->chans.num_channels -1;
|
||||
- else
|
||||
- end_channel = triplet->chans.first_channel +
|
||||
- (4 * (triplet->chans.num_channels - 1));
|
||||
-
|
||||
- end_channel = max_subband_chan(band,
|
||||
- triplet->chans.first_channel,
|
||||
- end_channel,
|
||||
- triplet->chans.max_power,
|
||||
- &country_ie,
|
||||
- &country_ie_len);
|
||||
-
|
||||
- /*
|
||||
- * The +10 is since the regulatory domain expects
|
||||
- * the actual band edge, not the center of freq for
|
||||
- * its start and end freqs, assuming 20 MHz bandwidth on
|
||||
- * the channels passed
|
||||
- */
|
||||
- freq_range->start_freq_khz =
|
||||
- MHZ_TO_KHZ(ieee80211_channel_to_frequency(
|
||||
- triplet->chans.first_channel) - 10);
|
||||
- freq_range->end_freq_khz =
|
||||
- MHZ_TO_KHZ(ieee80211_channel_to_frequency(
|
||||
- end_channel) + 10);
|
||||
-
|
||||
- /*
|
||||
- * These are large arbitrary values we use to intersect later.
|
||||
- * Increment this if we ever support >= 40 MHz channels
|
||||
- * in IEEE 802.11
|
||||
- */
|
||||
- freq_range->max_bandwidth_khz = MHZ_TO_KHZ(40);
|
||||
- power_rule->max_antenna_gain = DBI_TO_MBI(100);
|
||||
- power_rule->max_eirp = DBM_TO_MBM(triplet->chans.max_power);
|
||||
-
|
||||
- i++;
|
||||
-
|
||||
- if (country_ie_len >= 3) {
|
||||
- country_ie += 3;
|
||||
- country_ie_len -= 3;
|
||||
- }
|
||||
-
|
||||
- BUG_ON(i > NL80211_MAX_SUPP_REG_RULES);
|
||||
- }
|
||||
-
|
||||
- return rd;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-/*
|
||||
* Helper for regdom_intersect(), this does the real
|
||||
* mathematical intersection fun
|
||||
*/
|
||||
@@ -1191,7 +699,6 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
-EXPORT_SYMBOL(freq_reg_info);
|
||||
|
||||
int freq_reg_info(struct wiphy *wiphy,
|
||||
u32 center_freq,
|
||||
@@ -1205,6 +712,7 @@ int freq_reg_info(struct wiphy *wiphy,
|
||||
reg_rule,
|
||||
NULL);
|
||||
}
|
||||
+EXPORT_SYMBOL(freq_reg_info);
|
||||
|
||||
/*
|
||||
* Note that right now we assume the desired channel bandwidth
|
||||
@@ -1243,41 +751,8 @@ static void handle_channel(struct wiphy *wiphy, enum ieee80211_band band,
|
||||
desired_bw_khz,
|
||||
®_rule);
|
||||
|
||||
- if (r) {
|
||||
- /*
|
||||
- * This means no regulatory rule was found in the country IE
|
||||
- * with a frequency range on the center_freq's band, since
|
||||
- * IEEE-802.11 allows for a country IE to have a subset of the
|
||||
- * regulatory information provided in a country we ignore
|
||||
- * disabling the channel unless at least one reg rule was
|
||||
- * found on the center_freq's band. For details see this
|
||||
- * clarification:
|
||||
- *
|
||||
- * http://tinyurl.com/11d-clarification
|
||||
- */
|
||||
- if (r == -ERANGE &&
|
||||
- last_request->initiator ==
|
||||
- NL80211_REGDOM_SET_BY_COUNTRY_IE) {
|
||||
- REG_DBG_PRINT("cfg80211: Leaving channel %d MHz "
|
||||
- "intact on %s - no rule found in band on "
|
||||
- "Country IE\n",
|
||||
- chan->center_freq, wiphy_name(wiphy));
|
||||
- } else {
|
||||
- /*
|
||||
- * In this case we know the country IE has at least one reg rule
|
||||
- * for the band so we respect its band definitions
|
||||
- */
|
||||
- if (last_request->initiator ==
|
||||
- NL80211_REGDOM_SET_BY_COUNTRY_IE)
|
||||
- REG_DBG_PRINT("cfg80211: Disabling "
|
||||
- "channel %d MHz on %s due to "
|
||||
- "Country IE\n",
|
||||
- chan->center_freq, wiphy_name(wiphy));
|
||||
- flags |= IEEE80211_CHAN_DISABLED;
|
||||
- chan->flags = flags;
|
||||
- }
|
||||
+ if (r)
|
||||
return;
|
||||
- }
|
||||
|
||||
power_rule = ®_rule->power_rule;
|
||||
freq_range = ®_rule->freq_range;
|
||||
@@ -2010,7 +1485,7 @@ EXPORT_SYMBOL(regulatory_hint);
|
||||
|
||||
/* Caller must hold reg_mutex */
|
||||
static bool reg_same_country_ie_hint(struct wiphy *wiphy,
|
||||
- u32 country_ie_checksum)
|
||||
+ char *alpha2, enum environment_cap env)
|
||||
{
|
||||
struct wiphy *request_wiphy;
|
||||
|
||||
@@ -2026,13 +1501,17 @@ static bool reg_same_country_ie_hint(struct wiphy *wiphy,
|
||||
return false;
|
||||
|
||||
if (likely(request_wiphy != wiphy))
|
||||
- return !country_ie_integrity_changes(country_ie_checksum);
|
||||
+ return (last_request->alpha2[0] == alpha2[0] &&
|
||||
+ last_request->alpha2[1] == alpha2[1] &&
|
||||
+ last_request->country_ie_env == env);
|
||||
/*
|
||||
* We should not have let these through at this point, they
|
||||
* should have been picked up earlier by the first alpha2 check
|
||||
* on the device
|
||||
*/
|
||||
- if (WARN_ON(!country_ie_integrity_changes(country_ie_checksum)))
|
||||
+ if (WARN_ON((last_request->alpha2[0] == alpha2[0] &&
|
||||
+ last_request->alpha2[1] == alpha2[1] &&
|
||||
+ last_request->country_ie_env == env )))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -2048,7 +1527,6 @@ void regulatory_hint_11d(struct wiphy *wiphy,
|
||||
{
|
||||
struct ieee80211_regdomain *rd = NULL;
|
||||
char alpha2[2];
|
||||
- u32 checksum = 0;
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request;
|
||||
|
||||
@@ -2064,14 +1542,6 @@ void regulatory_hint_11d(struct wiphy *wiphy,
|
||||
if (country_ie_len < IEEE80211_COUNTRY_IE_MIN_LEN)
|
||||
goto out;
|
||||
|
||||
- /*
|
||||
- * Pending country IE processing, this can happen after we
|
||||
- * call CRDA and wait for a response if a beacon was received before
|
||||
- * we were able to process the last regulatory_hint_11d() call
|
||||
- */
|
||||
- if (country_ie_regdomain)
|
||||
- goto out;
|
||||
-
|
||||
alpha2[0] = country_ie[0];
|
||||
alpha2[1] = country_ie[1];
|
||||
|
||||
@@ -2090,12 +1560,6 @@ void regulatory_hint_11d(struct wiphy *wiphy,
|
||||
wiphy_idx_valid(last_request->wiphy_idx)))
|
||||
goto out;
|
||||
|
||||
- rd = country_ie_2_rd(band, country_ie, country_ie_len, &checksum);
|
||||
- if (!rd) {
|
||||
- REG_DBG_PRINT("cfg80211: Ignoring bogus country IE\n");
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
/*
|
||||
* This will not happen right now but we leave it here for the
|
||||
* the future when we want to add suspend/resume support and having
|
||||
@@ -2105,24 +1569,17 @@ void regulatory_hint_11d(struct wiphy *wiphy,
|
||||
* If we hit this before we add this support we want to be informed of
|
||||
* it as it would indicate a mistake in the current design
|
||||
*/
|
||||
- if (WARN_ON(reg_same_country_ie_hint(wiphy, checksum)))
|
||||
+ if (WARN_ON(reg_same_country_ie_hint(wiphy, alpha2, env)))
|
||||
goto free_rd_out;
|
||||
|
||||
request = kzalloc(sizeof(struct regulatory_request), GFP_KERNEL);
|
||||
if (!request)
|
||||
goto free_rd_out;
|
||||
|
||||
- /*
|
||||
- * We keep this around for when CRDA comes back with a response so
|
||||
- * we can intersect with that
|
||||
- */
|
||||
- country_ie_regdomain = rd;
|
||||
-
|
||||
request->wiphy_idx = get_wiphy_idx(wiphy);
|
||||
- request->alpha2[0] = rd->alpha2[0];
|
||||
- request->alpha2[1] = rd->alpha2[1];
|
||||
+ request->alpha2[0] = alpha2[0];
|
||||
+ request->alpha2[1] = alpha2[1];
|
||||
request->initiator = NL80211_REGDOM_SET_BY_COUNTRY_IE;
|
||||
- request->country_ie_checksum = checksum;
|
||||
request->country_ie_env = env;
|
||||
|
||||
mutex_unlock(®_mutex);
|
||||
@@ -2383,33 +1840,6 @@ static void print_regdomain_info(const struct ieee80211_regdomain *rd)
|
||||
print_rd_rules(rd);
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_CFG80211_REG_DEBUG
|
||||
-static void reg_country_ie_process_debug(
|
||||
- const struct ieee80211_regdomain *rd,
|
||||
- const struct ieee80211_regdomain *country_ie_regdomain,
|
||||
- const struct ieee80211_regdomain *intersected_rd)
|
||||
-{
|
||||
- printk(KERN_DEBUG "cfg80211: Received country IE:\n");
|
||||
- print_regdomain_info(country_ie_regdomain);
|
||||
- printk(KERN_DEBUG "cfg80211: CRDA thinks this should applied:\n");
|
||||
- print_regdomain_info(rd);
|
||||
- if (intersected_rd) {
|
||||
- printk(KERN_DEBUG "cfg80211: We intersect both of these "
|
||||
- "and get:\n");
|
||||
- print_regdomain_info(intersected_rd);
|
||||
- return;
|
||||
- }
|
||||
- printk(KERN_DEBUG "cfg80211: Intersection between both failed\n");
|
||||
-}
|
||||
-#else
|
||||
-static inline void reg_country_ie_process_debug(
|
||||
- const struct ieee80211_regdomain *rd,
|
||||
- const struct ieee80211_regdomain *country_ie_regdomain,
|
||||
- const struct ieee80211_regdomain *intersected_rd)
|
||||
-{
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/* Takes ownership of rd only if it doesn't fail */
|
||||
static int __set_regdom(const struct ieee80211_regdomain *rd)
|
||||
{
|
||||
@@ -2521,34 +1951,6 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Country IE requests are handled a bit differently, we intersect
|
||||
- * the country IE rd with what CRDA believes that country should have
|
||||
- */
|
||||
-
|
||||
- /*
|
||||
- * Userspace could have sent two replies with only
|
||||
- * one kernel request. By the second reply we would have
|
||||
- * already processed and consumed the country_ie_regdomain.
|
||||
- */
|
||||
- if (!country_ie_regdomain)
|
||||
- return -EALREADY;
|
||||
- BUG_ON(rd == country_ie_regdomain);
|
||||
-
|
||||
- /*
|
||||
- * Intersect what CRDA returned and our what we
|
||||
- * had built from the Country IE received
|
||||
- */
|
||||
-
|
||||
- intersected_rd = regdom_intersect(rd, country_ie_regdomain);
|
||||
-
|
||||
- reg_country_ie_process_debug(rd,
|
||||
- country_ie_regdomain,
|
||||
- intersected_rd);
|
||||
-
|
||||
- kfree(country_ie_regdomain);
|
||||
- country_ie_regdomain = NULL;
|
||||
-
|
||||
if (!intersected_rd)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -2688,9 +2090,6 @@ void /* __init_or_exit */ regulatory_exit(void)
|
||||
|
||||
reset_regdomains();
|
||||
|
||||
- kfree(country_ie_regdomain);
|
||||
- country_ie_regdomain = NULL;
|
||||
-
|
||||
kfree(last_request);
|
||||
|
||||
platform_device_unregister(reg_pdev);
|
||||
--
|
||||
1.7.1.1
|
||||
|
||||
|
53
pci-acpi-disable-aspm-if-no-osc.patch
Normal file
53
pci-acpi-disable-aspm-if-no-osc.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Subject: ACPI: Disable ASPM if the platform won't provide _OSC control for PCIe
|
||||
|
||||
ACPI: Disable ASPM if the platform won't provide _OSC control for PCIe
|
||||
|
||||
The PCI SIG documentation for the _OSC OS/firmware handshaking interface
|
||||
states:
|
||||
|
||||
"If the _OSC control method is absent from the scope of a host bridge
|
||||
device, then the operating system must not enable or attempt to use any
|
||||
features defined in this section for the hierarchy originated by the host
|
||||
bridge."
|
||||
|
||||
The obvious interpretation of this is that the OS should not attempt to use
|
||||
PCIe hotplug, PME or AER - however, the specification also notes that an
|
||||
_OSC method is *required* for PCIe hierarchies, and experimental validation
|
||||
with An Alternative OS indicates that it doesn't use any PCIe functionality
|
||||
if the _OSC method is missing. That arguably means we shouldn't be using
|
||||
MSI or extended config space, but right now our problems seem to be limited
|
||||
to vendors being surprised when ASPM gets enabled on machines when other
|
||||
OSs refuse to do so. So, for now, let's just disable ASPM if the _OSC
|
||||
method doesn't exist or refuses to hand over PCIe capability control.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
|
||||
index 4eac593..1f67057 100644
|
||||
--- a/drivers/acpi/pci_root.c
|
||||
+++ b/drivers/acpi/pci_root.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci-acpi.h>
|
||||
+#include <linux/pci-aspm.h>
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/slab.h>
|
||||
#include <acpi/acpi_bus.h>
|
||||
@@ -543,6 +544,14 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
|
||||
if (flags != base_flags)
|
||||
acpi_pci_osc_support(root, flags);
|
||||
|
||||
+ status = acpi_pci_osc_control_set(root->device->handle,
|
||||
+ 0);
|
||||
+
|
||||
+ if (status == AE_NOT_EXIST) {
|
||||
+ printk(KERN_INFO "Unable to assume PCIe control: Disabling ASPM\n");
|
||||
+ pcie_no_aspm();
|
||||
+ }
|
||||
+
|
||||
pci_acpi_add_bus_pm_notifier(device, root->bus);
|
||||
if (device->wakeup.flags.run_wake)
|
||||
device_set_run_wake(root->bus->bridge, true);
|
50
pci-aspm-dont-enable-too-early.patch
Normal file
50
pci-aspm-dont-enable-too-early.patch
Normal file
@ -0,0 +1,50 @@
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Wed, 9 Jun 2010 20:05:07 +0000 (-0400)
|
||||
Subject: PCI: Don't enable aspm before drivers have had a chance to veto it
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjbarnes%2Fpci-2.6.git;a=commitdiff_plain;h=8f0b08c29f1df91315e48adce04462eb23671099
|
||||
|
||||
PCI: Don't enable aspm before drivers have had a chance to veto it
|
||||
|
||||
The aspm code will currently set the configured aspm policy before drivers
|
||||
have had an opportunity to indicate that their hardware doesn't support it.
|
||||
Unfortunately, putting some hardware in L0 or L1 can result in the hardware
|
||||
no longer responding to any requests, even after aspm is disabled. It makes
|
||||
more sense to leave aspm policy at the BIOS defaults at initial setup time,
|
||||
reconfiguring it after pci_enable_device() is called. This allows the
|
||||
driver to blacklist individual devices beforehand.
|
||||
|
||||
Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
|
||||
index be53d98..7122281 100644
|
||||
--- a/drivers/pci/pcie/aspm.c
|
||||
+++ b/drivers/pci/pcie/aspm.c
|
||||
@@ -588,11 +588,23 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
|
||||
* update through pcie_aspm_cap_init().
|
||||
*/
|
||||
pcie_aspm_cap_init(link, blacklist);
|
||||
- pcie_config_aspm_path(link);
|
||||
|
||||
/* Setup initial Clock PM state */
|
||||
pcie_clkpm_cap_init(link, blacklist);
|
||||
- pcie_set_clkpm(link, policy_to_clkpm_state(link));
|
||||
+
|
||||
+ /*
|
||||
+ * At this stage drivers haven't had an opportunity to change the
|
||||
+ * link policy setting. Enabling ASPM on broken hardware can cripple
|
||||
+ * it even before the driver has had a chance to disable ASPM, so
|
||||
+ * default to a safe level right now. If we're enabling ASPM beyond
|
||||
+ * the BIOS's expectation, we'll do so once pci_enable_device() is
|
||||
+ * called.
|
||||
+ */
|
||||
+ if (aspm_policy != POLICY_POWERSAVE) {
|
||||
+ pcie_config_aspm_path(link);
|
||||
+ pcie_set_clkpm(link, policy_to_clkpm_state(link));
|
||||
+ }
|
||||
+
|
||||
unlock:
|
||||
mutex_unlock(&aspm_lock);
|
||||
out:
|
74
prevent-runtime-conntrack-changes.patch
Normal file
74
prevent-runtime-conntrack-changes.patch
Normal file
@ -0,0 +1,74 @@
|
||||
Jon Masters correctly points out that conntrack hash sizes
|
||||
(nf_conntrack_htable_size) are global (not per-netns) and
|
||||
modifiable at runtime via /sys/module/nf_conntrack/hashsize .
|
||||
|
||||
Steps to reproduce:
|
||||
clone(CLONE_NEWNET)
|
||||
[grow /sys/module/nf_conntrack/hashsize]
|
||||
exit()
|
||||
|
||||
At netns exit we are going to scan random memory for conntracks to be killed.
|
||||
|
||||
Apparently there is a code which deals with hashtable resize for
|
||||
init_net (and it was there befode netns conntrack code), so prohibit
|
||||
hashsize modification if there is more than one netns exists.
|
||||
|
||||
To change hashtable sizes, you need to reload module.
|
||||
|
||||
Expectation hashtable size was simply glued to a variable with no code
|
||||
to rehash expectations, so it was a bug to allow writing to it.
|
||||
Make "expect_hashsize" readonly.
|
||||
|
||||
This is temporarily until we figure out what to do.
|
||||
|
||||
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
|
||||
Cc: stable@kernel.org
|
||||
---
|
||||
|
||||
net/netfilter/nf_conntrack_core.c | 15 +++++++++++++++
|
||||
net/netfilter/nf_conntrack_expect.c | 2 +-
|
||||
2 files changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/random.h>
|
||||
+#include <linux/rtnetlink.h>
|
||||
#include <linux/jhash.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/percpu.h>
|
||||
@@ -1198,6 +1199,20 @@ int nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp)
|
||||
if (!nf_conntrack_htable_size)
|
||||
return param_set_uint(val, kp);
|
||||
|
||||
+ {
|
||||
+ struct net *net;
|
||||
+ unsigned int nr;
|
||||
+
|
||||
+ nr = 0;
|
||||
+ rtnl_lock();
|
||||
+ for_each_net(net)
|
||||
+ nr++;
|
||||
+ rtnl_unlock();
|
||||
+ /* init_net always exists */
|
||||
+ if (nr != 1)
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
hashsize = simple_strtoul(val, NULL, 0);
|
||||
if (!hashsize)
|
||||
return -EINVAL;
|
||||
--- a/net/netfilter/nf_conntrack_expect.c
|
||||
+++ b/net/netfilter/nf_conntrack_expect.c
|
||||
@@ -569,7 +569,7 @@ static void exp_proc_remove(struct net *net)
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
}
|
||||
|
||||
-module_param_named(expect_hashsize, nf_ct_expect_hsize, uint, 0600);
|
||||
+module_param_named(expect_hashsize, nf_ct_expect_hsize, uint, 0400);
|
||||
|
||||
int nf_conntrack_expect_init(struct net *net)
|
||||
{
|
||||
|
65
revert-drm-kms-toggle-poll-around-switcheroo.patch
Normal file
65
revert-drm-kms-toggle-poll-around-switcheroo.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From 69b711c0c5e3d9cb3a5b9f741fb4cdc96b5739cb Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@dreadnought.i.jkkm.org>
|
||||
Subject: Revert "drm/kms: disable/enable poll around switcheroo on/off"
|
||||
|
||||
This reverts commit fbf81762e385d3d45acad057b654d56972acf58c, mostly.
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_dma.c | 4 +---
|
||||
drivers/gpu/drm/nouveau/nouveau_state.c | 3 ---
|
||||
drivers/gpu/drm/radeon/radeon_device.c | 2 --
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
|
||||
index 59a2bf8..2df3286 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_dma.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_dma.c
|
||||
@@ -1320,14 +1320,12 @@ static void i915_switcheroo_set_state(struct pci_dev *pdev, enum vga_switcheroo_
|
||||
struct drm_device *dev = pci_get_drvdata(pdev);
|
||||
pm_message_t pmm = { .event = PM_EVENT_SUSPEND };
|
||||
if (state == VGA_SWITCHEROO_ON) {
|
||||
- printk(KERN_INFO "i915: switched on\n");
|
||||
+ printk(KERN_INFO "i915: switched off\n");
|
||||
/* i915 resume handler doesn't set to D0 */
|
||||
pci_set_power_state(dev->pdev, PCI_D0);
|
||||
i915_resume(dev);
|
||||
- drm_kms_helper_poll_enable(dev);
|
||||
} else {
|
||||
printk(KERN_ERR "i915: switched off\n");
|
||||
- drm_kms_helper_poll_disable(dev);
|
||||
i915_suspend(dev, pmm);
|
||||
}
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
index b02a231..0c28266 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
@@ -376,15 +376,12 @@ out_err:
|
||||
static void nouveau_switcheroo_set_state(struct pci_dev *pdev,
|
||||
enum vga_switcheroo_state state)
|
||||
{
|
||||
- struct drm_device *dev = pci_get_drvdata(pdev);
|
||||
pm_message_t pmm = { .event = PM_EVENT_SUSPEND };
|
||||
if (state == VGA_SWITCHEROO_ON) {
|
||||
printk(KERN_ERR "VGA switcheroo: switched nouveau on\n");
|
||||
nouveau_pci_resume(pdev);
|
||||
- drm_kms_helper_poll_enable(dev);
|
||||
} else {
|
||||
printk(KERN_ERR "VGA switcheroo: switched nouveau off\n");
|
||||
- drm_kms_helper_poll_disable(dev);
|
||||
nouveau_pci_suspend(pdev, pmm);
|
||||
}
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
|
||||
index f10faed..225a9f2 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_device.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_device.c
|
||||
@@ -546,10 +546,8 @@ static void radeon_switcheroo_set_state(struct pci_dev *pdev, enum vga_switchero
|
||||
/* don't suspend or resume card normally */
|
||||
rdev->powered_down = false;
|
||||
radeon_resume_kms(dev);
|
||||
- drm_kms_helper_poll_enable(dev);
|
||||
} else {
|
||||
printk(KERN_INFO "radeon: switched off\n");
|
||||
- drm_kms_helper_poll_disable(dev);
|
||||
radeon_suspend_kms(dev, pmm);
|
||||
/* don't suspend or resume card normally */
|
||||
rdev->powered_down = true;
|
3
sources
3
sources
@ -0,0 +1,3 @@
|
||||
10eebcb0178fb4540e2165bfd7efc7ad linux-2.6.34.tar.bz2
|
||||
ec36a4c6878e4638e2a78a317fef280d patch-2.6.35-rc6-git1.bz2
|
||||
1205481c8d1b5ccecad87840ddaeaf81 patch-2.6.35-rc6.bz2
|
155
ssb_check_for_sprom.patch
Normal file
155
ssb_check_for_sprom.patch
Normal file
@ -0,0 +1,155 @@
|
||||
From 4d9d1ff88f920e9fcdde155c0a1366b7e0462d14 Mon Sep 17 00:00:00 2001
|
||||
From: John W. Linville <linville@tuxdriver.com>
|
||||
Date: Fri, 19 Mar 2010 14:58:01 -0400
|
||||
Subject: [PATCH v4] ssb: do not read SPROM if it does not exist
|
||||
|
||||
Attempting to read registers that don't exist on the SSB bus can cause
|
||||
hangs on some boxes. At least some b43 devices are 'in the wild' that
|
||||
don't have SPROMs at all. When the SSB bus support loads, it attempts
|
||||
to read these (non-existant) SPROMs and causes hard hangs on the box --
|
||||
no console output, etc.
|
||||
|
||||
This patch adds some intelligence to determine whether or not the SPROM
|
||||
is present before attempting to read it. This avoids those hard hangs
|
||||
on those devices with no SPROM attached to their SSB bus. The
|
||||
SSB-attached devices (e.g. b43, et al.) won't work, but at least the box
|
||||
will survive to test further patches. :-)
|
||||
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
Cc: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: Michael Buesch <mb@bu3sch.de>
|
||||
Cc: stable@kernel.org
|
||||
---
|
||||
drivers/ssb/driver_chipcommon.c | 3 +++
|
||||
drivers/ssb/pci.c | 3 +++
|
||||
drivers/ssb/sprom.c | 26 ++++++++++++++++++++++++++
|
||||
include/linux/ssb/ssb.h | 3 +++
|
||||
include/linux/ssb/ssb_driver_chipcommon.h | 15 +++++++++++++++
|
||||
5 files changed, 50 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/ssb/driver_chipcommon.c b/drivers/ssb/driver_chipcommon.c
|
||||
index 9681536..6cf288d 100644
|
||||
--- a/drivers/ssb/driver_chipcommon.c
|
||||
+++ b/drivers/ssb/driver_chipcommon.c
|
||||
@@ -233,6 +233,9 @@ void ssb_chipcommon_init(struct ssb_chipcommon *cc)
|
||||
{
|
||||
if (!cc->dev)
|
||||
return; /* We don't have a ChipCommon */
|
||||
+ if (cc->dev->id.revision >= 11) {
|
||||
+ cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT);
|
||||
+ }
|
||||
ssb_pmu_init(cc);
|
||||
chipco_powercontrol_init(cc);
|
||||
ssb_chipco_set_clockmode(cc, SSB_CLKMODE_FAST);
|
||||
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
|
||||
index a8dbb06..89d7ab1 100644
|
||||
--- a/drivers/ssb/pci.c
|
||||
+++ b/drivers/ssb/pci.c
|
||||
@@ -621,6 +621,9 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
|
||||
int err = -ENOMEM;
|
||||
u16 *buf;
|
||||
|
||||
+ if (!ssb_is_sprom_available(bus))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
|
||||
if (!buf)
|
||||
goto out;
|
||||
diff --git a/drivers/ssb/sprom.c b/drivers/ssb/sprom.c
|
||||
index f2f920f..c690f58 100644
|
||||
--- a/drivers/ssb/sprom.c
|
||||
+++ b/drivers/ssb/sprom.c
|
||||
@@ -176,3 +176,29 @@ const struct ssb_sprom *ssb_get_fallback_sprom(void)
|
||||
{
|
||||
return fallback_sprom;
|
||||
}
|
||||
+
|
||||
+bool ssb_is_sprom_available(struct ssb_bus *bus)
|
||||
+{
|
||||
+ /* some older devices don't have chipcommon, but they have sprom */
|
||||
+ if (!bus->chipco.dev)
|
||||
+ return true;
|
||||
+
|
||||
+ /* status register only exists on chipcomon rev >= 11 */
|
||||
+ if (bus->chipco.dev->id.revision < 11)
|
||||
+ return true;
|
||||
+
|
||||
+ switch (bus->chip_id) {
|
||||
+ case 0x4312:
|
||||
+ return SSB_CHIPCO_CHST_4312_SPROM_PRESENT(bus->chipco.status);
|
||||
+ case 0x4322:
|
||||
+ return SSB_CHIPCO_CHST_4322_SPROM_PRESENT(bus->chipco.status);
|
||||
+ case 0x4325:
|
||||
+ return SSB_CHIPCO_CHST_4325_SPROM_PRESENT(bus->chipco.status);
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ if (bus->chipco.dev->id.revision >= 31)
|
||||
+ return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
|
||||
index 24f9885..3b4da23 100644
|
||||
--- a/include/linux/ssb/ssb.h
|
||||
+++ b/include/linux/ssb/ssb.h
|
||||
@@ -394,6 +394,9 @@ extern int ssb_bus_sdiobus_register(struct ssb_bus *bus,
|
||||
|
||||
extern void ssb_bus_unregister(struct ssb_bus *bus);
|
||||
|
||||
+/* Does the device have an SPROM? */
|
||||
+extern bool ssb_is_sprom_available(struct ssb_bus *bus);
|
||||
+
|
||||
/* Set a fallback SPROM.
|
||||
* See kdoc at the function definition for complete documentation. */
|
||||
extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
|
||||
diff --git a/include/linux/ssb/ssb_driver_chipcommon.h b/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
index 4e27acf..2cdf249 100644
|
||||
--- a/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
+++ b/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
@@ -53,6 +53,7 @@
|
||||
#define SSB_CHIPCO_CAP_64BIT 0x08000000 /* 64-bit Backplane */
|
||||
#define SSB_CHIPCO_CAP_PMU 0x10000000 /* PMU available (rev >= 20) */
|
||||
#define SSB_CHIPCO_CAP_ECI 0x20000000 /* ECI available (rev >= 20) */
|
||||
+#define SSB_CHIPCO_CAP_SPROM 0x40000000 /* SPROM present */
|
||||
#define SSB_CHIPCO_CORECTL 0x0008
|
||||
#define SSB_CHIPCO_CORECTL_UARTCLK0 0x00000001 /* Drive UART with internal clock */
|
||||
#define SSB_CHIPCO_CORECTL_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
|
||||
@@ -385,6 +386,7 @@
|
||||
|
||||
|
||||
/** Chip specific Chip-Status register contents. */
|
||||
+#define SSB_CHIPCO_CHST_4322_SPROM_EXISTS 0x00000040 /* SPROM present */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL 0x00000003
|
||||
#define SSB_CHIPCO_CHST_4325_DEFCIS_SEL 0 /* OTP is powered up, use def. CIS, no SPROM */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_SEL 1 /* OTP is powered up, SPROM is present */
|
||||
@@ -398,6 +400,18 @@
|
||||
#define SSB_CHIPCO_CHST_4325_RCAL_VALUE_SHIFT 4
|
||||
#define SSB_CHIPCO_CHST_4325_PMUTOP_2B 0x00000200 /* 1 for 2b, 0 for to 2a */
|
||||
|
||||
+/** Macros to determine SPROM presence based on Chip-Status register. */
|
||||
+#define SSB_CHIPCO_CHST_4312_SPROM_PRESENT(status) \
|
||||
+ ((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_OTP_SEL)
|
||||
+#define SSB_CHIPCO_CHST_4322_SPROM_PRESENT(status) \
|
||||
+ (status & SSB_CHIPCO_CHST_4322_SPROM_EXISTS)
|
||||
+#define SSB_CHIPCO_CHST_4325_SPROM_PRESENT(status) \
|
||||
+ (((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_DEFCIS_SEL) && \
|
||||
+ ((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_OTP_SEL))
|
||||
+
|
||||
|
||||
|
||||
/** Clockcontrol masks and values **/
|
||||
@@ -564,6 +578,7 @@ struct ssb_chipcommon_pmu {
|
||||
struct ssb_chipcommon {
|
||||
struct ssb_device *dev;
|
||||
u32 capabilities;
|
||||
+ u32 status;
|
||||
/* Fast Powerup Delay constant */
|
||||
u16 fast_pwrup_delay;
|
||||
struct ssb_chipcommon_pmu pmu;
|
||||
--
|
||||
1.7.0.1
|
||||
|
56
thinkpad-acpi-fix-backlight.patch
Normal file
56
thinkpad-acpi-fix-backlight.patch
Normal file
@ -0,0 +1,56 @@
|
||||
diff -up linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c.orig linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c
|
||||
--- linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c.orig 2010-05-17 16:28:13.254200070 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c 2010-05-17 16:29:56.471200083 -0400
|
||||
@@ -3397,7 +3397,7 @@ static int __init hotkey_init(struct ibm
|
||||
/* update bright_acpimode... */
|
||||
tpacpi_check_std_acpi_brightness_support();
|
||||
|
||||
- if (tp_features.bright_acpimode && acpi_video_backlight_support()) {
|
||||
+ if (acpi_video_backlight_support()) {
|
||||
printk(TPACPI_INFO
|
||||
"This ThinkPad has standard ACPI backlight "
|
||||
"brightness control, supported by the ACPI "
|
||||
@@ -6189,26 +6189,24 @@ static int __init brightness_init(struct
|
||||
* going to publish a backlight interface
|
||||
*/
|
||||
b = tpacpi_check_std_acpi_brightness_support();
|
||||
- if (b > 0) {
|
||||
|
||||
- if (acpi_video_backlight_support()) {
|
||||
- if (brightness_enable > 1) {
|
||||
- printk(TPACPI_NOTICE
|
||||
- "Standard ACPI backlight interface "
|
||||
- "available, not loading native one.\n");
|
||||
- return 1;
|
||||
- } else if (brightness_enable == 1) {
|
||||
- printk(TPACPI_NOTICE
|
||||
- "Backlight control force enabled, even if standard "
|
||||
- "ACPI backlight interface is available\n");
|
||||
- }
|
||||
- } else {
|
||||
- if (brightness_enable > 1) {
|
||||
- printk(TPACPI_NOTICE
|
||||
- "Standard ACPI backlight interface not "
|
||||
- "available, thinkpad_acpi native "
|
||||
- "brightness control enabled\n");
|
||||
- }
|
||||
+ if (acpi_video_backlight_support()) {
|
||||
+ if (brightness_enable > 1) {
|
||||
+ printk(TPACPI_NOTICE
|
||||
+ "Standard ACPI backlight interface "
|
||||
+ "available, not loading native one.\n");
|
||||
+ return 1;
|
||||
+ } else if (brightness_enable == 1) {
|
||||
+ printk(TPACPI_NOTICE
|
||||
+ "Backlight control force enabled, even if standard "
|
||||
+ "ACPI backlight interface is available\n");
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (brightness_enable > 1) {
|
||||
+ printk(TPACPI_NOTICE
|
||||
+ "Standard ACPI backlight interface not "
|
||||
+ "available, thinkpad_acpi native "
|
||||
+ "brightness control enabled\n");
|
||||
}
|
||||
}
|
||||
|
29
utrace-ptrace-fix-build.patch
Normal file
29
utrace-ptrace-fix-build.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 9b7ec0e07ce85c377b76626cef552d27d59cc405 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@dreadnought.i.jkkm.org>
|
||||
Date: Tue, 22 Jun 2010 13:57:47 +0100
|
||||
Subject: utrace-ptrace: removed defunct arch_ptrace_untrace call
|
||||
|
||||
commit faa4602e removed the unused BTS code which had added
|
||||
this hook.
|
||||
|
||||
Signed-off-by: Kyle McMartin <kyle@redhat.com>
|
||||
---
|
||||
kernel/ptrace-utrace.c | 2 --
|
||||
1 files changed, 0 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/ptrace-utrace.c b/kernel/ptrace-utrace.c
|
||||
index 86234ee..1a8ba5e 100644
|
||||
--- a/kernel/ptrace-utrace.c
|
||||
+++ b/kernel/ptrace-utrace.c
|
||||
@@ -50,8 +50,6 @@ void __ptrace_unlink(struct task_struct *child)
|
||||
child->ptrace = 0;
|
||||
child->parent = child->real_parent;
|
||||
list_del_init(&child->ptrace_entry);
|
||||
-
|
||||
- arch_ptrace_untrace(child);
|
||||
}
|
||||
|
||||
struct ptrace_context {
|
||||
--
|
||||
1.7.0.1
|
||||
|
32
utrace-remove-use-of-kref_set.patch
Normal file
32
utrace-remove-use-of-kref_set.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From ad778e66100e4b76bab6b939e3d0c781da82d980 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@dreadnought.i.jkkm.org>
|
||||
Date: Tue, 22 Jun 2010 14:09:30 +0100
|
||||
Subject: utrace: remove use of kref_set
|
||||
|
||||
Unfortunatey db1afffa which removed kref_set did not anticipate
|
||||
anyone would actually like to use a kref which starts with a refcnt
|
||||
above 1. Replace kref_set in utrace with a kref_init + kref_get to
|
||||
immediately bump the reference count.
|
||||
|
||||
Signed-off-by: Kyle McMartin <kyle@redhat.com>
|
||||
---
|
||||
kernel/utrace.c | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/kernel/utrace.c b/kernel/utrace.c
|
||||
index f5a9e2c..cc864d5 100644
|
||||
--- a/kernel/utrace.c
|
||||
+++ b/kernel/utrace.c
|
||||
@@ -304,7 +304,8 @@ struct utrace_engine *utrace_attach_task(
|
||||
* Initialize the new engine structure. It starts out with two
|
||||
* refs: one ref to return, and one ref for being attached.
|
||||
*/
|
||||
- kref_set(&engine->kref, 2);
|
||||
+ kref_init(&engine->kref);
|
||||
+ kref_get(&engine->kref);
|
||||
engine->flags = 0;
|
||||
engine->ops = ops;
|
||||
engine->data = data;
|
||||
--
|
||||
1.7.0.1
|
||||
|
Loading…
Reference in New Issue
Block a user