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