Compare commits
30 commits
rawhide
...
f13-2.6.33
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42b62631f5 | ||
|
|
e158521737 | ||
|
|
b0632f00ee | ||
|
|
7139dd832a | ||
|
|
b5010d0d56 | ||
|
|
d47af17904 | ||
|
|
3a4b7f0c66 | ||
|
|
4f6241e91f | ||
|
|
f2d0da0d23 | ||
|
|
52c0e26861 | ||
|
|
f81c481b2b | ||
|
|
f690b02b0d | ||
|
|
bace4b33bc | ||
|
|
fdc8afc978 | ||
|
|
8b8c89b0d5 | ||
|
|
bb314e4958 | ||
|
|
4e7843a1f2 | ||
|
|
fd554cc70a | ||
|
|
ebfcf6e0d7 | ||
|
|
0bf6d25f41 | ||
|
|
76fc9b8a7b | ||
|
|
ee4b78d86a | ||
|
|
5ad0e98752 | ||
|
|
e573f4aa51 | ||
|
|
8e2ce3ce88 | ||
|
|
cec1fd6cfe | ||
|
|
78cf92dcac | ||
|
|
13cbc19d00 | ||
|
|
cf83d0d22d | ||
|
|
3494df0003 |
282 changed files with 135528 additions and 392714 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
|
@ -1,2 +1,5 @@
|
|||
*.xz
|
||||
*.bz2
|
||||
linux-*.tar.bz2
|
||||
patch-*.bz2
|
||||
clog
|
||||
*.rpm
|
||||
kernel-2.6.*/
|
||||
|
|
|
|||
297
Makefile
Normal file
297
Makefile
Normal file
|
|
@ -0,0 +1,297 @@
|
|||
# Makefile for source rpm: kernel
|
||||
SPECFILE := kernel.spec
|
||||
|
||||
# use noarch for make prep instead of the current CPU
|
||||
# noarch creates and checks all config files not just the current one,
|
||||
# in addition "i386" isn't a valid kernel target
|
||||
PREPARCH = noarch
|
||||
|
||||
# we only check the .sign signatures
|
||||
UPSTREAM_CHECKS = sign
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
%:
|
||||
@echo "Try fedpkg $@ or something like that"
|
||||
@exit 1
|
||||
|
||||
include Makefile.config
|
||||
|
||||
ifndef KVERSION
|
||||
KVERSION := $(shell awk '$$1 == "%define" && $$2 == "base_sublevel" { \
|
||||
print "2.6." $$3 \
|
||||
}' $(SPECFILE))
|
||||
endif
|
||||
|
||||
prep:
|
||||
fedpkg -v prep --arch=$(PREPARCH)
|
||||
|
||||
extremedebug:
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PAGEALLOC is not set/CONFIG_DEBUG_PAGEALLOC=y/' config-nodebug
|
||||
|
||||
debug:
|
||||
@perl -pi -e 's/# CONFIG_SLUB_DEBUG_ON is not set/CONFIG_SLUB_DEBUG_ON=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_LOCK_STAT is not set/CONFIG_LOCK_STAT=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_STACK_USAGE is not set/CONFIG_DEBUG_STACK_USAGE=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SLAB is not set/CONFIG_DEBUG_SLAB=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_MUTEXES is not set/CONFIG_DEBUG_MUTEXES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_RT_MUTEXES is not set/CONFIG_DEBUG_RT_MUTEXES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_RWSEMS is not set/CONFIG_DEBUG_RWSEMS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_LOCK_ALLOC is not set/CONFIG_DEBUG_LOCK_ALLOC=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PROVE_LOCKING is not set/CONFIG_PROVE_LOCKING=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PROVE_RCU is not set/CONFIG_PROVE_RCU=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SPINLOCK is not set/CONFIG_DEBUG_SPINLOCK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_VM is not set/CONFIG_DEBUG_VM=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SLEEP_IN_IRQ is not set/CONFIG_DEBUG_SLEEP_IN_IRQ=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAULT_INJECTION is not set/CONFIG_FAULT_INJECTION=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAILSLAB is not set/CONFIG_FAILSLAB=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAIL_PAGE_ALLOC is not set/CONFIG_FAIL_PAGE_ALLOC=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAIL_IO_TIMEOUT is not set/CONFIG_FAIL_IO_TIMEOUT=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAIL_MAKE_REQUEST is not set/CONFIG_FAIL_MAKE_REQUEST=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/CONFIG_FAULT_INJECTION_DEBUG_FS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SG is not set/CONFIG_DEBUG_SG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_WRITECOUNT is not set/CONFIG_DEBUG_WRITECOUNT=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS is not set/CONFIG_DEBUG_OBJECTS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_FREE is not set/CONFIG_DEBUG_OBJECTS_FREE=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_TIMERS is not set/CONFIG_DEBUG_OBJECTS_TIMERS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_X86_PTDUMP is not set/CONFIG_X86_PTDUMP=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CAN_DEBUG_DEVICES is not set/CONFIG_CAN_DEBUG_DEVICES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_MODULE_FORCE_UNLOAD is not set/CONFIG_MODULE_FORCE_UNLOAD=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_SYSCTL_SYSCALL_CHECK is not set/CONFIG_SYSCTL_SYSCALL_CHECK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_NOTIFIERS is not set/CONFIG_DEBUG_NOTIFIERS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DMA_API_DEBUG is not set/CONFIG_DMA_API_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PM_TEST_SUSPEND is not set/CONFIG_PM_TEST_SUSPEND=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_PM_ADVANCED_DEBUG is not set/CONFIG_PM_ADVANCED_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_BOOT_TRACER is not set/CONFIG_BOOT_TRACER=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_B43_DEBUG is not set/CONFIG_B43_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_B43LEGACY_DEBUG is not set/CONFIG_B43LEGACY_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_MMIOTRACE is not set/CONFIG_MMIOTRACE=y/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_STRIP_ASM_SYMS=y/# CONFIG_STRIP_ASM_SYMS is not set/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_CREDENTIALS is not set/CONFIG_DEBUG_CREDENTIALS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set/CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_ACPI_DEBUG is not set/CONFIG_ACPI_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_EXT4_DEBUG is not set/CONFIG_EXT4_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/CONFIG_DEBUG_PERF_USE_VMALLOC=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_JBD2_DEBUG is not set/CONFIG_JBD2_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_CFQ_IOSCHED is not set/CONFIG_DEBUG_CFQ_IOSCHED=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DRBD_FAULT_INJECTION is not set/CONFIG_DRBD_FAULT_INJECTION=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_ATH_DEBUG is not set/CONFIG_ATH_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/CONFIG_IWLWIFI_DEVICE_TRACING=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_WORK is not set/CONFIG_DEBUG_OBJECTS_WORK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DMADEVICES_DEBUG is not set/CONFIG_DMADEVICES_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DMADEVICES_VDEBUG is not set/CONFIG_DMADEVICES_VDEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CEPH_FS_PRETTYDEBUG is not set/CONFIG_CEPH_FS_PRETTYDEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_QUOTA_DEBUG is not set/CONFIG_QUOTA_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_KGDB_KDB is not set/CONFIG_KGDB_KDB=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_KDB_KEYBOARD is not set/CONFIG_KDB_KEYBOARD=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set/CONFIG_CPU_NOTIFIER_ERROR_INJECT=m/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PER_CPU_MAPS is not set/CONFIG_DEBUG_PER_CPU_MAPS=y/' config-nodebug
|
||||
|
||||
@# just in case we're going from extremedebug -> debug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
|
||||
|
||||
@perl -pi -e 's/CONFIG_NR_CPUS=256/CONFIG_NR_CPUS=512/' config-x86_64-generic
|
||||
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
|
||||
@perl -pi -e 's/^%define rawhide_skip_docs 0/%define rawhide_skip_docs 1/' kernel.spec
|
||||
|
||||
release:
|
||||
@perl -pi -e 's/CONFIG_SLUB_DEBUG_ON=y/# CONFIG_SLUB_DEBUG_ON is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_LOCK_STAT=y/# CONFIG_LOCK_STAT is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_STACK_USAGE=y/# CONFIG_DEBUG_STACK_USAGE is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SLAB=y/# CONFIG_DEBUG_SLAB is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_MUTEXES=y/# CONFIG_DEBUG_MUTEXES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_RT_MUTEXES=y/# CONFIG_DEBUG_RT_MUTEXES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_RWSEMS=y/# CONFIG_DEBUG_RWSEMS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_LOCK_ALLOC=y/# CONFIG_DEBUG_LOCK_ALLOC is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PROVE_LOCKING=y/# CONFIG_PROVE_LOCKING is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PROVE_RCU=y/# CONFIG_PROVE_RCU is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SPINLOCK=y/# CONFIG_DEBUG_SPINLOCK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_VM=y/# CONFIG_DEBUG_VM is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SLEEP_IN_IRQ=y/# CONFIG_DEBUG_SLEEP_IN_IRQ is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAULT_INJECTION=y/# CONFIG_FAULT_INJECTION is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAILSLAB=y/# CONFIG_FAILSLAB is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAIL_PAGE_ALLOC=y/# CONFIG_FAIL_PAGE_ALLOC is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAIL_IO_TIMEOUT=y/# CONFIG_FAIL_IO_TIMEOUT is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAIL_MAKE_REQUEST=y/# CONFIG_FAIL_MAKE_REQUEST is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAULT_INJECTION_DEBUG_FS=y/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SG=y/# CONFIG_DEBUG_SG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_WRITECOUNT=y/# CONFIG_DEBUG_WRITECOUNT is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS=y/# CONFIG_DEBUG_OBJECTS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_FREE=y/# CONFIG_DEBUG_OBJECTS_FREE is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_TIMERS=y/# CONFIG_DEBUG_OBJECTS_TIMERS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_X86_PTDUMP=y/# CONFIG_X86_PTDUMP is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CAN_DEBUG_DEVICES=y/# CONFIG_CAN_DEBUG_DEVICES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_MODULE_FORCE_UNLOAD=y/# CONFIG_MODULE_FORCE_UNLOAD is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_SYSCTL_SYSCALL_CHECK=y/# CONFIG_SYSCTL_SYSCALL_CHECK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_NOTIFIERS=y/# CONFIG_DEBUG_NOTIFIERS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMA_API_DEBUG=y/# CONFIG_DMA_API_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PM_TEST_SUSPEND=y/#\ CONFIG_PM_TEST_SUSPEND\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_PM_ADVANCED_DEBUG=y/#\ CONFIG_PM_ADVANCED_DEBUG\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_BOOT_TRACER=y/#\ CONFIG_BOOT_TRACER\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_B43_DEBUG=y/# CONFIG_B43_DEBUG is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_B43LEGACY_DEBUG=y/# CONFIG_B43LEGACY_DEBUG is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_MMIOTRACE=y/# CONFIG_MMIOTRACE is not set/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_STRIP_ASM_SYMS is not set/CONFIG_STRIP_ASM_SYMS=y/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_CREDENTIALS=y/# CONFIG_DEBUG_CREDENTIALS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y/# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_ACPI_DEBUG=y/# CONFIG_ACPI_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_EXT4_DEBUG=y/# CONFIG_EXT4_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PERF_USE_VMALLOC=y/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_JBD2_DEBUG=y/# CONFIG_JBD2_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_CFQ_IOSCHED=y/# CONFIG_DEBUG_CFQ_IOSCHED is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DRBD_FAULT_INJECTION=y/# CONFIG_DRBD_FAULT_INJECTION is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_ATH_DEBUG=y/# CONFIG_ATH_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_IWLWIFI_DEVICE_TRACING=y/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_WORK=y/# CONFIG_DEBUG_OBJECTS_WORK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMADEVICES_DEBUG=y/# CONFIG_DMADEVICES_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMADEVICES_VDEBUG=y/# CONFIG_DMADEVICES_VDEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CEPH_FS_PRETTYDEBUG=y/# CONFIG_CEPH_FS_PRETTYDEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_QUOTA_DEBUG=y/# CONFIG_QUOTA_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CPU_NOTIFIER_ERROR_INJECT=m/# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set/' config-nodebug
|
||||
#@perl -pi -e 's/CONFIG_KGDB_KDB=y/# CONFIG_KGDB_KDB is not set/' config-nodebug
|
||||
#@perl -pi -e 's/CONFIG_KDB_KEYBOARD=y/# CONFIG_KDB_KEYBOARD is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PER_CPU_MAPS=y/# CONFIG_DEBUG_PER_CPU_MAPS is not set/' config-nodebug
|
||||
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-debug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
|
||||
|
||||
@perl -pi -e 's/CONFIG_NR_CPUS=512/CONFIG_NR_CPUS=256/' config-x86_64-generic
|
||||
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 0/%define debugbuildsenabled 1/' kernel.spec
|
||||
@perl -pi -e 's/^%define rawhide_skip_docs 1/%define rawhide_skip_docs 0/' kernel.spec
|
||||
|
||||
reconfig:
|
||||
@rm -f kernel-*-config
|
||||
@VERSION=$(KVERSION) make -f Makefile.config configs
|
||||
@scripts/reconfig.sh
|
||||
|
||||
unused-kernel-patches:
|
||||
@for f in *.patch; do if [ -e $$f ]; then (egrep -q "^Patch[[:digit:]]+:[[:space:]]+$$f" $(SPECFILE) || echo "Unused: $$f") && egrep -q "^ApplyPatch[[:space:]]+$$f|^ApplyOptionalPatch[[:space:]]+$$f" $(SPECFILE) || echo "Unapplied: $$f"; fi; done
|
||||
|
||||
# since i386 isn't a target...
|
||||
compile compile-short: DIST_DEFINES += --target $(shell uname -m)
|
||||
|
||||
# 'make local' also needs to build the noarch firmware package
|
||||
local: noarch
|
||||
|
||||
#
|
||||
# Hacks for building vanilla (unpatched) kernel rpms.
|
||||
# Use "make vanilla-TARGET" like "make TARGET" (make vanilla-scratch-build).
|
||||
#
|
||||
vanilla-%: $(SPECFILE:.spec=-vanilla.spec)
|
||||
@$(MAKE) $* SPECFILE=$<
|
||||
|
||||
$(SPECFILE:.spec=-vanilla.spec): $(SPECFILE)
|
||||
@rm -f $@
|
||||
(echo %define nopatches 1; cat $<) > $@
|
||||
|
||||
#scratch-build: NAME = $(shell rpm $(RPM_DEFINES) $(DIST_DEFINES) -q --qf "%{NAME}\n" --specfile $(SPECFILE)| head -1)
|
||||
#scratch-build: test-srpm
|
||||
# $(BUILD_CLIENT) build $(BUILD_FLAGS) --scratch $(TARGET) \
|
||||
# $(SRCRPMDIR)/$(NAME)-$(VERSION)-$(RELEASE).src.rpm
|
||||
|
||||
# Dismal kludge for building via brew from cvs after "make vanilla-tag".
|
||||
ifdef BEEHIVE_SRPM_BUILD
|
||||
export CHECKOUT_TAG ?= $(shell sed s/^.// CVS/Tag)
|
||||
tag-pattern = $(TAG_NAME)-$(TAG_VERSION)-0_%_$(TAG_RELEASE)
|
||||
ifeq (,$(filter-out $(tag-pattern),$(CHECKOUT_TAG)))
|
||||
variant := $(patsubst $(tag-pattern),%,$(CHECKOUT_TAG))
|
||||
srpm: SPECFILE := $(wildcard $(SPECFILE:.spec=-$(variant).spec) \
|
||||
$(SPECFILE:.spec=.t.$(variant).spec))
|
||||
srpm beehive-sprm: RELEASE := 0.$(variant).$(RELEASE)
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Hacks for building kernel rpms from upstream code plus local GIT branches.
|
||||
# Use "make git/BRANCH/TARGET" like "make TARGET".
|
||||
# Use "make git/BRANCH-fedora/TARGET" to include Fedora patches on top.
|
||||
#
|
||||
ifndef GIT_SPEC
|
||||
git/%:
|
||||
@$(MAKE) GIT_SPEC=$(subst /,-,$(*D)) git-$(*F)
|
||||
else
|
||||
git-%: $(SPECFILE:.spec=.t.$(GIT_SPEC).spec)
|
||||
@$(MAKE) GIT_SPEC= $* SPECFILE=$<
|
||||
endif
|
||||
|
||||
#
|
||||
# Your git-branches.mk file can define GIT_DIR, e.g.:
|
||||
# GIT_DIR = ${HOME}/kernel/.git
|
||||
# Make sure GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL are also set
|
||||
# or your rpm changelogs will look like crap.
|
||||
#
|
||||
# For each branch it can define a variable branch-BRANCH or tag-BRANCH
|
||||
# giving the parent of BRANCH to diff against in a separate patch. If
|
||||
# the parent is unknown, it will use $(branch-upstream) defaulting to
|
||||
# "refs/remotes/upstream/master".
|
||||
#
|
||||
# Defining tag-BRANCH means the tag corresponds to an upstream patch in
|
||||
# the sources file, so that is used instead of generating a patch with
|
||||
# git. If there is no tag-upstream defined, it will figure out a vNNN
|
||||
# tag or vNNN-gitN pseudo-tag from the last patch in the sources file.
|
||||
# For example:
|
||||
# tag-some-hacks = v2.6.21-rc5
|
||||
# branch-more-hacks = some-hacks
|
||||
# Leads to patches:
|
||||
# git diff v2.6.21-rc5..more-hacks > linux-2.6.21-rc5-some-hacks.patch
|
||||
# git diff some-hacks..more-hacks > linux-2.6.21-rc5-more-hacks.patch
|
||||
# Whereas having no git-branches.mk at all but doing
|
||||
# "make GIT_DIR=... git/mybranch/test-srpm" does:
|
||||
# id=`cat patch-2.6.21-rc5-git4.id` # auto-fetched via upstream file
|
||||
# git diff $id..upstream > linux-2.6.21-rc5-git4-upstream.patch
|
||||
# git diff upstream..mybranch > linux-2.6.21-rc5-git4-mybranch.patch
|
||||
# If the upstream patch (or any branch patch) is empty it's left out.
|
||||
#
|
||||
git-branches.mk:;
|
||||
-include git-branches.mk
|
||||
|
||||
branch-upstream ?= refs/remotes/upstream/master
|
||||
|
||||
ifdef GIT_DIR
|
||||
export GIT_DIR
|
||||
export GIT_AUTHOR_NAME
|
||||
export GIT_AUTHOR_EMAIL
|
||||
gen-patches ?= gen-patches
|
||||
|
||||
ifndef havespec
|
||||
$(SPECFILE:.spec=.t.%-fedora.spec): $(SPECFILE) $(gen-patches) FORCE
|
||||
./$(gen-patches) --fedora < $< > $@ $(gen-patches-args)
|
||||
$(SPECFILE:.spec=.t.%.spec): $(SPECFILE) $(gen-patches) FORCE
|
||||
./$(gen-patches) < $< > $@ $(gen-patches-args)
|
||||
.PRECIOUS: $(SPECFILE:.spec=.t.%.spec) $(SPECFILE:.spec=.t.%-fedora.spec)
|
||||
endif
|
||||
|
||||
spec-%: $(SPECFILE:.spec=.t.%.spec) ;
|
||||
$(SPECFILE):;
|
||||
FORCE:;
|
||||
|
||||
branch-of-* = $(firstword $(head-$*) $*)
|
||||
gen-patches-args = --name $* v$(KVERSION) $(call heads,$(branch-of-*))
|
||||
define heads
|
||||
$(if $(tag-$1),$(filter-out v$(KVERSION),$(tag-$1)),\
|
||||
$(call heads,$(firstword $(branch-$1) $(branch-upstream)))) $1
|
||||
endef
|
||||
|
||||
files-%-fedora:
|
||||
@echo $(SPECFILE:.spec=.t.$*-fedora.spec)
|
||||
@$(call list-patches,$(branch-of-*))
|
||||
files-%:
|
||||
@echo $(SPECFILE:.spec=.t.$*.spec)
|
||||
@$(call list-patches,$(branch-of-*))
|
||||
define list-patches
|
||||
$(if $(tag-$1),version=$(patsubst v%,%,$(tag-$1)),\
|
||||
$(call list-patches,$(firstword $(branch-$1) $(branch-upstream)))); \
|
||||
echo linux-$${version}-$(patsubst refs/remotes/%/master,%,$1).patch
|
||||
endef
|
||||
|
||||
ifndef tag-$(branch-upstream)
|
||||
tag-$(branch-upstream) := $(shell \
|
||||
sed -n 's/^.* *//;s/\.bz2$$//;s/patch-/v/;/^v/h;$${g;p}' sources)
|
||||
endif
|
||||
endif
|
||||
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 > $@
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
RHEL_MAJOR = 10
|
||||
RHEL_MINOR = 99
|
||||
|
||||
#
|
||||
# RHEL_RELEASE
|
||||
# -------------
|
||||
#
|
||||
# Represents build number in 'release' part of RPM's name-version-release.
|
||||
# name is <package_name>, e.g. kernel
|
||||
# version is upstream kernel version this kernel is based on, e.g. 4.18.0
|
||||
# release is <RHEL_RELEASE>.<dist_tag>[<buildid>], e.g. 100.el8
|
||||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_RELEASE = 38
|
||||
|
||||
#
|
||||
# RHEL_REBASE_NUM
|
||||
# ----------------
|
||||
#
|
||||
# Used in RPM version string for Gemini kernels, which dont use upstream
|
||||
# VERSION/PATCHLEVEL/SUBLEVEL. The number represents rebase number for
|
||||
# current MAJOR release.
|
||||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_REBASE_NUM = 1
|
||||
|
||||
|
||||
#
|
||||
# ZSTREAM
|
||||
# -------
|
||||
#
|
||||
# This variable controls whether we use zstream numbering or not for the
|
||||
# package release. The zstream release keeps the build number of the last
|
||||
# build done for ystream for the Beta milestone, and increments a second
|
||||
# number for each build. The third number is used for branched builds
|
||||
# (eg.: for builds with security fixes or hot fixes done outside of the
|
||||
# batch release process).
|
||||
#
|
||||
# For example, with ZSTREAM unset or set to "no", all builds will contain
|
||||
# a release with only the build number, eg.: kernel-<kernel version>-X.el*,
|
||||
# where X is the build number. With ZSTREAM set to "yes", we will have
|
||||
# builds with kernel-<kernel version>-X.Y.Z.el*, where X is the last
|
||||
# RHEL_RELEASE number before ZSTREAM flag was set to yes, Y will now be the
|
||||
# build number and Z will always be 1 except if you're doing a branched build
|
||||
# (when you give RHDISTGIT_BRANCH on the command line, in which case the Z
|
||||
# number will be incremented instead of the Y).
|
||||
#
|
||||
ZSTREAM ?= no
|
||||
|
||||
#
|
||||
# Automotive
|
||||
# ----------
|
||||
#
|
||||
# Represents the major and minor release used by automotive.
|
||||
# Primarily this is used to to identify the build target when
|
||||
# building the automotive kernel package.
|
||||
AUTOMOTIVE_MAJOR = 2
|
||||
AUTOMOTIVE_MINOR = 99
|
||||
|
|
@ -1,474 +0,0 @@
|
|||
https://gitlab.com/cki-project/kernel-ark/-/commit/831ff9bcd8e9eab864062470a3250beb1e1ec924
|
||||
831ff9bcd8e9eab864062470a3250beb1e1ec924 rust: Add -fdiagnostics-show-context to bindgen_skip_c_flags
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/fe3e9e24af806d756edbda922103b1fa95d9b89b
|
||||
fe3e9e24af806d756edbda922103b1fa95d9b89b Revert "Removing Obsolete hba pci-ids from rhel8"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c4a0a995da9df8732f688d09db5252173277589d
|
||||
c4a0a995da9df8732f688d09db5252173277589d rh_messages.h: add missing lpfc devices
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0ad9a88c3263fa8fa39437f69472588917255c99
|
||||
0ad9a88c3263fa8fa39437f69472588917255c99 kernel: extend rh_waived to cope better with the CVE mitigations case
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/cf18c49636f2583c85831f909699034026325242
|
||||
cf18c49636f2583c85831f909699034026325242 rh_messages.h: add missing aacraid device
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/26ca931184edb2c3c7f7c1951f53fa3333d9c90e
|
||||
26ca931184edb2c3c7f7c1951f53fa3333d9c90e rh_messages.h: update unmaintained drivers
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c1c1a1b7059900f4b9b657f5189285a287160e11
|
||||
c1c1a1b7059900f4b9b657f5189285a287160e11 arm64: add early lockdown for secure boot
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a613ae52a8d9378e6fa70f697b3ce0acee220491
|
||||
a613ae52a8d9378e6fa70f697b3ce0acee220491 efi: pass secure boot mode to kernel proper
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f869258b6b654d316e84325e46e431da4dfd04e7
|
||||
f869258b6b654d316e84325e46e431da4dfd04e7 selftests/bpf: Remove ksyms_weak_lskel test
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8b69219fe6a11766cf1a2e07dc94e56448b47824
|
||||
8b69219fe6a11766cf1a2e07dc94e56448b47824 Simplify include Makefile.rhelver
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c2621ac616e25a9a04fbcb8af0c1f8b2bdd8c099
|
||||
c2621ac616e25a9a04fbcb8af0c1f8b2bdd8c099 redhat: make ENABLE_WERROR also enable OBJTOOL_WERROR
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d28cbdeb89fe565e10fb4be8d8378153e86611f6
|
||||
d28cbdeb89fe565e10fb4be8d8378153e86611f6 main.c: fix initcall blacklisted
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b71ab57c8db44881edc32a124ddc2ebe536b6a4c
|
||||
b71ab57c8db44881edc32a124ddc2ebe536b6a4c arch/x86/kernel/setup.c: fix rh_check_supported
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c4ea2384863e54e0c5582b3508518e659581ce69
|
||||
c4ea2384863e54e0c5582b3508518e659581ce69 efi,lockdown: fix kernel lockdown on Secure Boot
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/60b2ddeb0986e1c43a98b44a4ab414a7e2744701
|
||||
60b2ddeb0986e1c43a98b44a4ab414a7e2744701 Revert "nvme: Return BLK_STS_TARGET if the DNR bit is set"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/860632dd288c7aa7807959a79af9159482510cd1
|
||||
860632dd288c7aa7807959a79af9159482510cd1 Revert "nvme: allow local retry and proper failover for REQ_FAILFAST_TRANSPORT"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/aaef2c3ee081c8980bb60fd4b7a6ed9e187d9048
|
||||
aaef2c3ee081c8980bb60fd4b7a6ed9e187d9048 Revert "nvme: decouple basic ANA log page re-read support from native multipathing"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5cd4353dae0ee79d13f57b7ccee85cd0bcbe4b4f
|
||||
5cd4353dae0ee79d13f57b7ccee85cd0bcbe4b4f Revert "nvme: nvme_mpath_init remove multipath check"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/656a0565ffe54f99ac1390a68c5ee7050ab6fb25
|
||||
656a0565ffe54f99ac1390a68c5ee7050ab6fb25 redhat: automotive: define CONFIG_RH_AUTOMOTIVE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f1025d6236c72b4fbd03940b6fa2178f2a84f418
|
||||
f1025d6236c72b4fbd03940b6fa2178f2a84f418 redhat: fix modules.order target
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6e0fa997052c92d6085a50083e75dedc0160443f
|
||||
6e0fa997052c92d6085a50083e75dedc0160443f [redhat] rh_messages.h: driver and device updates
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d8822fd0573e9f254f097c1743078e4e74ac70f5
|
||||
d8822fd0573e9f254f097c1743078e4e74ac70f5 crypto: rng - Fix extrng EFAULT handling
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c224e4b6a61af08574bb0565755ed609bf08cacb
|
||||
c224e4b6a61af08574bb0565755ed609bf08cacb crypto: sig - Disable signing
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/39417e970be7f6bc63f34d5ed5511f7e629802c2
|
||||
39417e970be7f6bc63f34d5ed5511f7e629802c2 crypto: rng - Ensure stdrng is tested before user-space starts
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/52be246b6342ed5b1486729fd5c5893b10549a92
|
||||
52be246b6342ed5b1486729fd5c5893b10549a92 [redhat] rh_messages.h: Mark BlueField-4 as disabled
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/2c9e64af9fa1f8599ce05877441afcac8ac91b04
|
||||
2c9e64af9fa1f8599ce05877441afcac8ac91b04 Update the RHEL_DIFFERENCES help string
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/beef34cb1efc34b7fbee35535c66915995d12ed1
|
||||
beef34cb1efc34b7fbee35535c66915995d12ed1 redhat: include resolve_btfids in kernel-devel
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/1a1426b7a8df854c78385dd8ce8b74e9ee641477
|
||||
1a1426b7a8df854c78385dd8ce8b74e9ee641477 redhat: workaround CKI cross compilation for scripts
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/2c83d6cfffe1f891bf024df81be6cd41c2073ad9
|
||||
2c83d6cfffe1f891bf024df81be6cd41c2073ad9 crypto: akcipher - Disable signing and decryption
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/af93553b8d335ccf5dd4f90ab9419e497aa36a80
|
||||
af93553b8d335ccf5dd4f90ab9419e497aa36a80 crypto: dh - implement FIPS PCT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f0540d9d32978dff227cbb930193e8dc2557b23b
|
||||
f0540d9d32978dff227cbb930193e8dc2557b23b crypto: ecdh - disallow plain "ecdh" usage in FIPS mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/243ef89ad354eea332d7bfb23fd4cf259240de91
|
||||
243ef89ad354eea332d7bfb23fd4cf259240de91 crypto: seqiv - flag instantiations as FIPS compliant
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6a23cbc588e9b9f7b2bc7250c6c6903d4d904eb1
|
||||
6a23cbc588e9b9f7b2bc7250c6c6903d4d904eb1 [kernel] bpf: set default value for bpf_jit_harden
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/bb84b630a172d0204c8d243c57a6a1d2eae7843c
|
||||
bb84b630a172d0204c8d243c57a6a1d2eae7843c not upstream: Disable vdso getrandom when FIPS is enabled
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b643998c61552fb5615268e7e529999d64d54175
|
||||
b643998c61552fb5615268e7e529999d64d54175 Add support to rh_waived cmdline boot parameter
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a1e04b6f3580382a902256c7bf8b395b9a1be47f
|
||||
a1e04b6f3580382a902256c7bf8b395b9a1be47f rh_flags: fix failed when register_sysctl_sz rh_flags_table to kernel
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/03cf1862c6221ee2a6de9a5ab25adaec6460b62e
|
||||
03cf1862c6221ee2a6de9a5ab25adaec6460b62e [redhat] rh_flags: constify the ctl_table argument of proc_handler
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e2708e55f9151652da80e388b4bf88c649288c0f
|
||||
e2708e55f9151652da80e388b4bf88c649288c0f redhat: rh_flags: declare proper static methods when !CONFIG_RHEL_DIFFERENCES
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6f593811cc1e5664f45fe2d09916eada1187e992
|
||||
6f593811cc1e5664f45fe2d09916eada1187e992 redhat: make bnx2xx drivers unmaintained in rhel-10
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5db8220bd67c719a20c1269233585b40f48837da
|
||||
5db8220bd67c719a20c1269233585b40f48837da rh_flags: Rename rh_features to rh_flags
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/19ca502a0087eed65a014c6271f9bfc207d8d7eb
|
||||
19ca502a0087eed65a014c6271f9bfc207d8d7eb kernel: rh_features: fix reading empty feature list from /proc
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ba24639032f00b47748a6f39a4eb33950df015c2
|
||||
ba24639032f00b47748a6f39a4eb33950df015c2 rh_features: move rh_features entry to sys/kernel
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/883e43fe6a0da0d9ad90e7c997a95f11bab9b888
|
||||
883e43fe6a0da0d9ad90e7c997a95f11bab9b888 rh_features: convert to atomic allocation
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c8daa2e832df14ee9174435a357b2ae0994a3ef3
|
||||
c8daa2e832df14ee9174435a357b2ae0994a3ef3 add rh_features to /proc
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4f33dbbe3ec578d49e12c07421b913bf480fccef
|
||||
4f33dbbe3ec578d49e12c07421b913bf480fccef add support for rh_features
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/53a5900b05260b81f13eb3b9d6a9419429f310ab
|
||||
53a5900b05260b81f13eb3b9d6a9419429f310ab [redhat] PCI: Fix pci_rh_check_status() call semantics
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/aeb9a237a0ec39b7bde89d8bb040cd5b267f6802
|
||||
aeb9a237a0ec39b7bde89d8bb040cd5b267f6802 scsi: sd: condition probe_type under RHEL_DIFFERENCES
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/159e72af8b1631b720f4a7e0012fa624764cecde
|
||||
159e72af8b1631b720f4a7e0012fa624764cecde scsi: sd: remove unused sd_probe_types
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d8c04860eb7bf29617ca1754f1076fd9f5992e77
|
||||
d8c04860eb7bf29617ca1754f1076fd9f5992e77 [redhat] rh_messages.h: mark mlx5 on Bluefield-3 as unmaintained
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/496c64b4afece4ab525467a6be71ffe60d0c564f
|
||||
496c64b4afece4ab525467a6be71ffe60d0c564f [redhat] rh_messages.h: initial driver and device lists
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5cf456aaba6f5c9406421c04c65d43b2c71f5927
|
||||
5cf456aaba6f5c9406421c04c65d43b2c71f5927 arch/x86: Fix XSAVE check for x86_64-v2 check
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/252bf9586fca6e57a51966c0294a9a0cb33ff4f5
|
||||
252bf9586fca6e57a51966c0294a9a0cb33ff4f5 arch/x86/kernel/setup.c: fixup rh_check_supported
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/30faf17591afbd4230d590355351044294ad43d2
|
||||
30faf17591afbd4230d590355351044294ad43d2 lsm: update security_lock_kernel_down
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e88ee9e2e869e7259faa5bf3ff6689becabb53cb
|
||||
e88ee9e2e869e7259faa5bf3ff6689becabb53cb arch/x86: mark x86_64-v1 and x86_64-v2 processors as deprecated
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/26ebc304df38a49ce7cc69b4bdf220298cff2460
|
||||
26ebc304df38a49ce7cc69b4bdf220298cff2460 redhat: kABI: add missing RH_KABI_SIZE_ALIGN_CHECKS Kconfig option
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8c71392703448be8e8217592dd46ea1cc8b157e1
|
||||
8c71392703448be8e8217592dd46ea1cc8b157e1 redhat: rh_kabi: introduce RH_KABI_EXCLUDE_WITH_SIZE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d42afcb843fcc87e59ba39b5574c18d89fd07a91
|
||||
d42afcb843fcc87e59ba39b5574c18d89fd07a91 redhat: rh_kabi: move semicolon inside __RH_KABI_CHECK_SIZE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/95a56955f9ba6ef1e1dd2d99d8f98254da274267
|
||||
95a56955f9ba6ef1e1dd2d99d8f98254da274267 random: replace import_single_range() with import_ubuf()
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/92d6612578b79fd3a09e10504ed71209ba43c271
|
||||
92d6612578b79fd3a09e10504ed71209ba43c271 ext4: Mark mounting fs-verity filesystems as tech-preview
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5c51745b8aec113ff0605ab833c3e472d99c55c8
|
||||
5c51745b8aec113ff0605ab833c3e472d99c55c8 erofs: Add tech preview markers at mount
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6d687c70a7eda10eac0ddc6eedeaccc30eef5349
|
||||
6d687c70a7eda10eac0ddc6eedeaccc30eef5349 kernel/rh_messages.c: Mark functions as possibly unused
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/dfb09b1d833cad815ea2f5cb69505010de260c40
|
||||
dfb09b1d833cad815ea2f5cb69505010de260c40 crypto: rng - Override drivers/char/random in FIPS mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ddbe3667f2462817f3f936141fff08604dde1564
|
||||
ddbe3667f2462817f3f936141fff08604dde1564 random: Add hook to override device reads and getrandom(2)
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/92525a9129d85fa6400c9e653379862a67cb43b2
|
||||
92525a9129d85fa6400c9e653379862a67cb43b2 [redhat] kernel/rh_messages.c: move hardware tables to rh_messages.h
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/eacd81fdaf31d456a82c553735faf64c8efad2eb
|
||||
eacd81fdaf31d456a82c553735faf64c8efad2eb [redhat] kernel/rh_messages.c: Wire up new calls
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/32af8640a651c642ee5706dda0cf35ff508bcdcb
|
||||
32af8640a651c642ee5706dda0cf35ff508bcdcb [redhat] drivers/pci: Update rh_messages.c
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/db366977f9e13f903cc9b7f22936b581594a7731
|
||||
db366977f9e13f903cc9b7f22936b581594a7731 [redhat] drivers/pci: Remove RHEL-only pci_hw_*() functions
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/402504ff66e5d118b514253df5d55f8413e2e167
|
||||
402504ff66e5d118b514253df5d55f8413e2e167 scsi: sd: Add "probe_type" module parameter to allow synchronous probing
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5e96a345c6fb24e282ce1769223c1a339d0dbe94
|
||||
5e96a345c6fb24e282ce1769223c1a339d0dbe94 Revert "Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ce943989ae8cb2b8e0b4699c148584d3cd18ec9b
|
||||
ce943989ae8cb2b8e0b4699c148584d3cd18ec9b kernel/rh_messages.c: Another gcc12 warning on redundant NULL test
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c0624b3913d8c3f262e20910a2f2c4d2f99ce61f
|
||||
c0624b3913d8c3f262e20910a2f2c4d2f99ce61f Enable IO_URING for RHEL
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/861f2d38d82cfb374799ec517f18cc021701068e
|
||||
861f2d38d82cfb374799ec517f18cc021701068e Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e02ec93117d6eea21e80baf69e6f9848cf1a9774
|
||||
e02ec93117d6eea21e80baf69e6f9848cf1a9774 redhat: version two of Makefile.rhelver tweaks
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/964e830b4fae678dec5b8b93dcd402c73fdf2912
|
||||
964e830b4fae678dec5b8b93dcd402c73fdf2912 redhat: adapt to upstream Makefile change
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/60a4025a3b1cdec1c7bbdabf1e30278f615bb493
|
||||
60a4025a3b1cdec1c7bbdabf1e30278f615bb493 kernel/rh_messages.c: gcc12 warning on redundant NULL test
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a5c9e3c6e3dcda60b5f753d1bae86a686f3ac087
|
||||
a5c9e3c6e3dcda60b5f753d1bae86a686f3ac087 Change acpi_bus_get_acpi_device to acpi_get_acpi_dev
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/092e751fe418623c5ad04e77fa6c993d48d96533
|
||||
092e751fe418623c5ad04e77fa6c993d48d96533 ARK: Remove code marking devices unmaintained
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c27fa327fb3de69773568d211fd2f8f13a72e342
|
||||
c27fa327fb3de69773568d211fd2f8f13a72e342 rh_message: Fix function name
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c9b07fd3a141ad0283d7eaadf5a06aec9af2b8c9
|
||||
c9b07fd3a141ad0283d7eaadf5a06aec9af2b8c9 Add Partner Supported taint flag to kAFS
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6b0e3a47ec436527a736c0e7159b41624d176dd9
|
||||
6b0e3a47ec436527a736c0e7159b41624d176dd9 Add Partner Supported taint flag
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/3a4e2ad92c430d2f584f56ca686bc75a469d06c0
|
||||
3a4e2ad92c430d2f584f56ca686bc75a469d06c0 kabi: Add kABI macros for enum type
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/04fbd46f834f3a012ca9d5bef91db377a3dbaed0
|
||||
04fbd46f834f3a012ca9d5bef91db377a3dbaed0 kabi: expand and clarify documentation of aux structs
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/cf8df8ef88e094ebb049a7e1e6fec069aaf54faa
|
||||
cf8df8ef88e094ebb049a7e1e6fec069aaf54faa kabi: introduce RH_KABI_USE_AUX_PTR
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/31779ca0c6c9aab28184a42ac3f17ac219b37b2b
|
||||
31779ca0c6c9aab28184a42ac3f17ac219b37b2b kabi: rename RH_KABI_SIZE_AND_EXTEND to AUX
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/2e12a05d339ed936b9cd59f420b161d70b4a130a
|
||||
2e12a05d339ed936b9cd59f420b161d70b4a130a kabi: more consistent _RH_KABI_SIZE_AND_EXTEND
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b83556eebdc2efdc2d2c22610b7cd7c5cafb2bae
|
||||
b83556eebdc2efdc2d2c22610b7cd7c5cafb2bae kabi: use fixed field name for extended part
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4c9a3b306a34ed7017e35b0de26b2d98e1a04373
|
||||
4c9a3b306a34ed7017e35b0de26b2d98e1a04373 kabi: fix dereference in RH_KABI_CHECK_EXT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a961660df0a73bcf2dcd8cb8855c2f5d5ded0ae9
|
||||
a961660df0a73bcf2dcd8cb8855c2f5d5ded0ae9 kabi: fix RH_KABI_SET_SIZE macro
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9f9ef5e8b4694fa7fb6a8f941fb741121fe5aab3
|
||||
9f9ef5e8b4694fa7fb6a8f941fb741121fe5aab3 kabi: expand and clarify documentation
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/308d17beeaa6cb4a514f77319b636c9a2c15f5eb
|
||||
308d17beeaa6cb4a514f77319b636c9a2c15f5eb kabi: make RH_KABI_USE replace any number of reserved fields
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f3d12dffffeee8d6692be46044b9fc8448901692
|
||||
f3d12dffffeee8d6692be46044b9fc8448901692 kabi: rename RH_KABI_USE2 to RH_KABI_USE_SPLIT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/520e726b4e78101e73fa3d77cdcbc21d204a75a9
|
||||
520e726b4e78101e73fa3d77cdcbc21d204a75a9 kabi: change RH_KABI_REPLACE2 to RH_KABI_REPLACE_SPLIT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/7160868bd40d04e6d1a80f55d1bf9bb62ede0ba3
|
||||
7160868bd40d04e6d1a80f55d1bf9bb62ede0ba3 kabi: change RH_KABI_REPLACE_UNSAFE to RH_KABI_BROKEN_REPLACE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0b83063cf6c57dc20a80c35396fa425ec1963d53
|
||||
0b83063cf6c57dc20a80c35396fa425ec1963d53 kabi: introduce RH_KABI_ADD_MODIFIER
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d276c2393792e3eec80a73a4fe964f9ec11145a7
|
||||
d276c2393792e3eec80a73a4fe964f9ec11145a7 kabi: Include kconfig.h
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/28c30de9c771ff91994c9f0a42bdcc260fa97c2d
|
||||
28c30de9c771ff91994c9f0a42bdcc260fa97c2d kabi: macros for intentional kABI breakage
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9b671c725ac69c47874321e5636e6541bb6d219d
|
||||
9b671c725ac69c47874321e5636e6541bb6d219d kabi: fix the note about terminating semicolon
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6443eef17fb53f62886ecce519b6e12dd310e7f5
|
||||
6443eef17fb53f62886ecce519b6e12dd310e7f5 kabi: introduce RH_KABI_HIDE_INCLUDE and RH_KABI_FAKE_INCLUDE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/47746fc3837b476ec265e2a0c2aaa86de0d3994e
|
||||
47746fc3837b476ec265e2a0c2aaa86de0d3994e pci.h: Fix static include
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/67ce66385c6b619356c4030e6163c4fb18a50427
|
||||
67ce66385c6b619356c4030e6163c4fb18a50427 drivers/pci/pci-driver.c: Fix if/ifdef typo
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0dfd7feeadc964ef2a9d118218b54831381c8d7a
|
||||
0dfd7feeadc964ef2a9d118218b54831381c8d7a kernel/rh_taint.c: Update to new messaging
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/35e5ee153637e59c9297c9cc8ba7f3960277ffc2
|
||||
35e5ee153637e59c9297c9cc8ba7f3960277ffc2 redhat: Add mark_driver_deprecated()
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ff7aa8cae4c7e3e7bbc1bb5612efc2157c81fa7d
|
||||
ff7aa8cae4c7e3e7bbc1bb5612efc2157c81fa7d RHEL: disable io_uring support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/517351ed810bf2707e7fdb2ab22029aeb594db59
|
||||
517351ed810bf2707e7fdb2ab22029aeb594db59 bpf: Fix unprivileged_bpf_disabled setup
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/48fe2e5f40c901e92d1f8c62bc97f58af4b0906a
|
||||
48fe2e5f40c901e92d1f8c62bc97f58af4b0906a nvme: nvme_mpath_init remove multipath check
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/1c9bd09f303e2c9d2c67fdc46604d94e00cbf67c
|
||||
1c9bd09f303e2c9d2c67fdc46604d94e00cbf67c wireguard: disable in FIPS mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/57872981891fe8f3f7205daa4b78c8c0d676b171
|
||||
57872981891fe8f3f7205daa4b78c8c0d676b171 nvme: decouple basic ANA log page re-read support from native multipathing
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0561f5953431ff471193611cd73af65dd394c8cd
|
||||
0561f5953431ff471193611cd73af65dd394c8cd nvme: allow local retry and proper failover for REQ_FAILFAST_TRANSPORT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f801483d711fa5f83a0f9d4c479eeba702d1d477
|
||||
f801483d711fa5f83a0f9d4c479eeba702d1d477 nvme: Return BLK_STS_TARGET if the DNR bit is set
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4f2bc09956ad4829d139e9d69b86ba8b9ebc66e2
|
||||
4f2bc09956ad4829d139e9d69b86ba8b9ebc66e2 REDHAT: coresight: etm4x: Disable coresight on HPE Apollo 70
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/65a21d545cc43328ea00fdbd62e7b45f375adce8
|
||||
65a21d545cc43328ea00fdbd62e7b45f375adce8 redhat: remove remaining references of CONFIG_RH_DISABLE_DEPRECATED
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/1c1b5380b0b56d3be978997b128f84aeb9906656
|
||||
1c1b5380b0b56d3be978997b128f84aeb9906656 arch/x86: Remove vendor specific CPU ID checks
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f7c032c856ba6379a77b76179d0352929d6039ec
|
||||
f7c032c856ba6379a77b76179d0352929d6039ec redhat: Replace hardware.redhat.com link in Unsupported message
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9a6eb49603959cf0aab0198e13946eaee07801c3
|
||||
9a6eb49603959cf0aab0198e13946eaee07801c3 x86: Fix compile issues with rh_check_supported()
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8a605436efddfa7dbc6e007b2881fa81f17968a5
|
||||
8a605436efddfa7dbc6e007b2881fa81f17968a5 KEYS: Make use of platform keyring for module signature verify
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c7c191f662438423a23592db42838ff550c2bdda
|
||||
c7c191f662438423a23592db42838ff550c2bdda Input: rmi4 - remove the need for artificial IRQ in case of HID
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4ae139284600cd6fef133ce7a981485ea73381ab
|
||||
4ae139284600cd6fef133ce7a981485ea73381ab ARM: tegra: usb no reset
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8156e2102f753bbe0f0dd222a5f232e7f3d99883
|
||||
8156e2102f753bbe0f0dd222a5f232e7f3d99883 arm: make CONFIG_HIGHPTE optional without CONFIG_EXPERT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/823e733a88ddd21c735288dd3b08348e79872b91
|
||||
823e733a88ddd21c735288dd3b08348e79872b91 redhat: rh_kabi: deduplication friendly structs
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/61d2a751fe1b1305684d6c1899f26fa9e38ac0a9
|
||||
61d2a751fe1b1305684d6c1899f26fa9e38ac0a9 redhat: rh_kabi add a comment with warning about RH_KABI_EXCLUDE usage
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/7d09cb3ea3dd2f3cda5a6a31be429f259106ca61
|
||||
7d09cb3ea3dd2f3cda5a6a31be429f259106ca61 redhat: rh_kabi: introduce RH_KABI_EXTEND_WITH_SIZE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c0c51c6f123df02948e11680d9b90324593ba547
|
||||
c0c51c6f123df02948e11680d9b90324593ba547 redhat: rh_kabi: Indirect EXTEND macros so nesting of other macros will resolve.
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/96b20c70b39cd28efcec2336417cb0db9ff7853c
|
||||
96b20c70b39cd28efcec2336417cb0db9ff7853c redhat: rh_kabi: Fix RH_KABI_SET_SIZE to use dereference operator
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/198030a81d85dbac8f4030e69d3d376327433487
|
||||
198030a81d85dbac8f4030e69d3d376327433487 redhat: rh_kabi: Add macros to size and extend structs
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/695af00ed9e393abe88d9ee4de3702c15ded186d
|
||||
695af00ed9e393abe88d9ee4de3702c15ded186d Removing Obsolete hba pci-ids from rhel8
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/736038bd8039d1543468c1dc8925f20929645804
|
||||
736038bd8039d1543468c1dc8925f20929645804 mptsas: pci-id table changes
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/83cdf2924bdcc90c433a58129b4501e10b1295dc
|
||||
83cdf2924bdcc90c433a58129b4501e10b1295dc mptspi: pci-id table changes
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0b634d81ed7f0730e13d720508dbaa6ab94e54d2
|
||||
0b634d81ed7f0730e13d720508dbaa6ab94e54d2 qla2xxx: Remove PCI IDs of deprecated adapter
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0d11491f9e7fe0c8c301db3256cb47c66ae8450f
|
||||
0d11491f9e7fe0c8c301db3256cb47c66ae8450f hpsa: remove old cciss-based smartarray pci ids
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/75f69a4f7b8f9d38c5efb0231186ed8726e526f2
|
||||
75f69a4f7b8f9d38c5efb0231186ed8726e526f2 kernel: add SUPPORT_REMOVED kernel taint
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/50081b0865239d853d77bc71e54d13fad8bac9f0
|
||||
50081b0865239d853d77bc71e54d13fad8bac9f0 Rename RH_DISABLE_DEPRECATED to RHEL_DIFFERENCES
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/dc84f3cc1b19a0524e58a382c382f34081dc6c35
|
||||
dc84f3cc1b19a0524e58a382c382f34081dc6c35 s390: Lock down the kernel when the IPL secure flag is set
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/cb55378c04d6516f303e98061ec7ddd6563429a8
|
||||
cb55378c04d6516f303e98061ec7ddd6563429a8 efi: Lock down the kernel if booted in secure boot mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9b06e1f07c3cc9e1d0533b8615426d4d5d9e4ebb
|
||||
9b06e1f07c3cc9e1d0533b8615426d4d5d9e4ebb efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/db249925c6802b38d910927e4d032af1e00bee56
|
||||
db249925c6802b38d910927e4d032af1e00bee56 security: lockdown: expose a hook to lock the kernel down
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f9604bcd305aba2a94e713ee758a51143687ae9f
|
||||
f9604bcd305aba2a94e713ee758a51143687ae9f Make get_cert_list() use efi_status_to_str() to print error messages.
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b75eb3e922c93d78d4190a759f5725e856d35439
|
||||
b75eb3e922c93d78d4190a759f5725e856d35439 Add efi_status_to_str() and rework efi_status_to_err().
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/2f80042d6b8199fceadf3623243402066e0cd4ea
|
||||
2f80042d6b8199fceadf3623243402066e0cd4ea Add support for deprecating processors
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5a3b4f5754788e42db8ed550b359382b600f2b08
|
||||
5a3b4f5754788e42db8ed550b359382b600f2b08 arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/36cd5d0a0aa0a3be8ac385ca8991563c9e58227f
|
||||
36cd5d0a0aa0a3be8ac385ca8991563c9e58227f iommu/arm-smmu: workaround DMA mode issues
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ca34010e072550c8d5ea57f9436bab254c3521cc
|
||||
ca34010e072550c8d5ea57f9436bab254c3521cc rh_kabi: introduce RH_KABI_EXCLUDE
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/26054e2c4e2253fe955a351971dc6b931cb68961
|
||||
26054e2c4e2253fe955a351971dc6b931cb68961 ipmi: do not configure ipmi for HPE m400
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9cb0f734492a21a7e506d7145caf143ccd927b2a
|
||||
9cb0f734492a21a7e506d7145caf143ccd927b2a kABI: Add generic kABI macros to use for kABI workarounds
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4960e5ee4a0e9bb28e512eb35cfa633ac4552049
|
||||
4960e5ee4a0e9bb28e512eb35cfa633ac4552049 add pci_hw_vendor_status()
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/291c4e2878431fd6937c5b9248babe8ec8d4233e
|
||||
291c4e2878431fd6937c5b9248babe8ec8d4233e ahci: thunderx2: Fix for errata that affects stop engine
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/996869cc0b3e78cb9182a4ebced2c46ee2774935
|
||||
996869cc0b3e78cb9182a4ebced2c46ee2774935 Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c1c7a887998ab12c5a1180c4bca3b41c31fe4aa6
|
||||
c1c7a887998ab12c5a1180c4bca3b41c31fe4aa6 bpf: set unprivileged_bpf_disabled to 1 by default, add a boot parameter
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e40c9d10474d1a5b5f7f01175a72ba4a3c7f5e8e
|
||||
e40c9d10474d1a5b5f7f01175a72ba4a3c7f5e8e add Red Hat-specific taint flags
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/f23f446b724fbb79c1e09a278fcb427fc29c0c05
|
||||
f23f446b724fbb79c1e09a278fcb427fc29c0c05 tags.sh: Ignore redhat/rpm
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a68aa65a20fba1908a7326e5321ce8bc39a9ae14
|
||||
a68aa65a20fba1908a7326e5321ce8bc39a9ae14 put RHEL info into generated headers
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/80937f1973d73fccdc75db4026fbed7cba16f489
|
||||
80937f1973d73fccdc75db4026fbed7cba16f489 aarch64: acpi scan: Fix regression related to X-Gene UARTs
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/3362fd10fe075b48ff8af023da5643bc9477a4c6
|
||||
3362fd10fe075b48ff8af023da5643bc9477a4c6 ACPI / irq: Workaround firmware issue on X-Gene based m400
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ffc66b174954abecfb360dcc3b98c3139ef12d96
|
||||
ffc66b174954abecfb360dcc3b98c3139ef12d96 modules: add rhelversion MODULE_INFO tag
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/7e469c23b8f648d79e8a0e82ee41cda0e50b2f19
|
||||
7e469c23b8f648d79e8a0e82ee41cda0e50b2f19 ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/a0f49117d038de2d4db4940f5f039addb2f7231d
|
||||
a0f49117d038de2d4db4940f5f039addb2f7231d Add Red Hat tainting
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/fa67c16e780ed355f9847da90e8055ad1175c238
|
||||
fa67c16e780ed355f9847da90e8055ad1175c238 Introduce CONFIG_RH_DISABLE_DEPRECATED
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e7e1371803470a7840dc61da628cb912834ec149
|
||||
e7e1371803470a7840dc61da628cb912834ec149 Pull the RHEL version defines out of the Makefile
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/84d1d3e3d0c2c7ed1f571c8495bad3b4d97cfa8e
|
||||
84d1d3e3d0c2c7ed1f571c8495bad3b4d97cfa8e [initial commit] Add Red Hat variables in the top level makefile
|
||||
|
||||
25
README.rst
25
README.rst
|
|
@ -1,25 +0,0 @@
|
|||
===================
|
||||
The Kernel dist-git
|
||||
===================
|
||||
|
||||
The kernel is maintained in a `source tree`_ rather than directly in dist-git.
|
||||
The specfile is maintained as a `template`_ in the source tree along with a set
|
||||
of build scripts to generate configurations, (S)RPMs, and to populate the
|
||||
dist-git repository.
|
||||
|
||||
The `documentation`_ for the source tree covers how to contribute and maintain
|
||||
the tree.
|
||||
|
||||
If you're looking for the downstream patch set it's available in the source
|
||||
tree with "git log master..ark-patches" or
|
||||
`online`_.
|
||||
|
||||
Each release in dist-git is tagged in the source repository so you can easily
|
||||
check out the source tree for a build. The tags are in the format
|
||||
name-version-release, but note release doesn't contain the dist tag since the
|
||||
source can be built in different build roots (Fedora, CentOS, etc.)
|
||||
|
||||
.. _source tree: https://gitlab.com/cki-project/kernel-ark.git
|
||||
.. _template: https://gitlab.com/cki-project/kernel-ark/-/blob/os-build/redhat/kernel.spec.template
|
||||
.. _documentation: https://gitlab.com/cki-project/kernel-ark/-/wikis/home
|
||||
.. _online: https://gitlab.com/cki-project/kernel-ark/-/commits/ark-patches
|
||||
67
README.txt
Normal file
67
README.txt
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
Kernel package tips & tricks.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The kernel is one of the more complicated packages in the distro, and
|
||||
for the newcomer, some of the voodoo in the spec file can be somewhat scary.
|
||||
This file attempts to document some of the magic.
|
||||
|
||||
|
||||
Speeding up make prep
|
||||
---------------------
|
||||
The kernel is nearly 500MB of source code, and as such, 'make prep'
|
||||
takes a while. The spec file employs some trickery so that repeated
|
||||
invocations of make prep don't take as long. Ordinarily the %prep
|
||||
phase of a package will delete the tree it is about to untar/patch.
|
||||
The kernel %prep keeps around an unpatched version of the tree,
|
||||
and makes a symlink tree clone of that clean tree and than applies
|
||||
the patches listed in the spec to the symlink tree.
|
||||
This makes a huge difference if you're doing multiple make preps a day.
|
||||
As an added bonus, doing a diff between the clean tree and the symlink
|
||||
tree is slightly faster than it would be doing two proper copies of the tree.
|
||||
|
||||
|
||||
build logs.
|
||||
-----------
|
||||
There's a convenience helper script in scripts/grab-logs.sh
|
||||
that will grab the build logs from koji for the kernel version reported
|
||||
by make verrel
|
||||
|
||||
|
||||
config heirarchy.
|
||||
-----------------
|
||||
Instead of having to maintain a config file for every arch variant we build on,
|
||||
the kernel spec uses a nested system of configs. At the top level, is
|
||||
config-generic. Add options here that should be present in every possible
|
||||
config on all architectures.
|
||||
Beneath this are per-arch overrides. For example config-x86-generic add
|
||||
additional x86 specific options, and also _override_ any options that were
|
||||
set in config-generic.
|
||||
There exist two additional overrides, config-debug, and config-nodebug,
|
||||
which override -generic, and the per-arch overrides. It is documented
|
||||
further below.
|
||||
|
||||
debug options.
|
||||
--------------
|
||||
This is a little complicated, as the purpose & meaning of this changes
|
||||
depending on where we are in the release cycle.
|
||||
If we are building for a current stable release, 'make release' has
|
||||
typically been run already, which sets up the following..
|
||||
- Two builds occur, a 'kernel' and a 'kernel-debug' flavor.
|
||||
- kernel-debug will get various heavyweight debugging options like
|
||||
lockdep etc turned on.
|
||||
|
||||
If we are building for rawhide, 'make debug' has been run, which changes
|
||||
the status quo to:
|
||||
- We only build one kernel 'kernel'
|
||||
- The debug options from 'config-debug' are always turned on.
|
||||
This is done to increase coverage testing, as not many people actually
|
||||
run kernel-debug.
|
||||
|
||||
To add new debug options, add an option to _both_ config-debug and config-nodebug,
|
||||
and also new stanzas to the Makefile 'debug' and 'release' targets.
|
||||
|
||||
Sometimes debug options get added to config-generic, or per-arch overrides
|
||||
instead of config-[no]debug. In this instance, the options should have no
|
||||
discernable performance impact, otherwise they belong in the debug files.
|
||||
|
||||
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)
|
||||
682
add-appleir-driver.patch
Normal file
682
add-appleir-driver.patch
Normal file
|
|
@ -0,0 +1,682 @@
|
|||
commit 92c912df2a0725d719263357176f98b2201a2acd
|
||||
Author: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed Apr 21 14:51:58 2010 +0100
|
||||
|
||||
Input: add appleir USB driver
|
||||
|
||||
This driver was originally written by James McKenzie, updated by
|
||||
Greg Kroah-Hartman, further updated by myself, with suspend support
|
||||
added.
|
||||
|
||||
More recent versions of the IR receiver are also supported through
|
||||
a patch by Alex Karpenko.
|
||||
|
||||
Tested on a MacbookAir1,1
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
commit 6ffcbf68913840e9e882db14441576ffee6eba0c
|
||||
Author: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Fri Apr 16 17:19:50 2010 +0100
|
||||
|
||||
Add HID_QUIRK_HIDDEV_FORCE and HID_QUIRK_NO_IGNORE
|
||||
|
||||
Add two quirks to make it possible for usbhid module options to
|
||||
override whether a device is ignored (HID_QUIRK_NO_IGNORE) and
|
||||
whether to connect a hiddev device (HID_QUIRK_HIDDEV_FORCE).
|
||||
|
||||
Passing HID_QUIRK_NO_IGNORE for your device means that it will
|
||||
not be ignored by the HID layer, even if present in a blacklist.
|
||||
|
||||
HID_QUIRK_HIDDEV_FORCE will force the creation of a hiddev for that
|
||||
device, making it accessible from user-space.
|
||||
|
||||
Tested with an Apple IR Receiver, switching it from using appleir
|
||||
to using lirc's macmini driver.
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
diff --git a/Documentation/input/appleir.txt b/Documentation/input/appleir.txt
|
||||
new file mode 100644
|
||||
index 0000000..0267a4b
|
||||
--- /dev/null
|
||||
+++ b/Documentation/input/appleir.txt
|
||||
@@ -0,0 +1,45 @@
|
||||
+Apple IR receiver Driver (appleir)
|
||||
+----------------------------------
|
||||
+ Copyright (C) 2009 Bastien Nocera <hadess@hadess.net>
|
||||
+
|
||||
+The appleir driver is a kernel input driver to handle Apple's IR
|
||||
+receivers (and associated remotes) in the kernel.
|
||||
+
|
||||
+The driver is an input driver which only handles "official" remotes
|
||||
+as built and sold by Apple.
|
||||
+
|
||||
+Authors
|
||||
+-------
|
||||
+
|
||||
+James McKenzie (original driver)
|
||||
+Alex Karpenko (05ac:8242 support)
|
||||
+Greg Kroah-Hartman (cleanups and original submission)
|
||||
+Bastien Nocera (further cleanups and suspend support)
|
||||
+
|
||||
+Supported hardware
|
||||
+------------------
|
||||
+
|
||||
+- All Apple laptops and desktops from 2005 onwards, except:
|
||||
+ - the unibody Macbook (2009)
|
||||
+ - Mac Pro (all versions)
|
||||
+- Apple TV (all revisions)
|
||||
+
|
||||
+The remote will only support the 6 buttons of the original remotes
|
||||
+as sold by Apple. See the next section if you want to use other remotes
|
||||
+or want to use lirc with the device instead of the kernel driver.
|
||||
+
|
||||
+Using lirc (native) instead of the kernel driver
|
||||
+------------------------------------------------
|
||||
+
|
||||
+First, you will need to disable the kernel driver for the receiver.
|
||||
+
|
||||
+This can be achieved by passing quirks to the usbhid driver.
|
||||
+The quirk line would be:
|
||||
+usbhid.quirks=0x05ac:0x8242:0x40000010
|
||||
+
|
||||
+With 0x05ac being the vendor ID (Apple, you shouldn't need to change this)
|
||||
+With 0x8242 being the product ID (check the output of lsusb for your hardware)
|
||||
+And 0x10 being "HID_QUIRK_HIDDEV_FORCE" and 0x40000000 being "HID_QUIRK_NO_IGNORE"
|
||||
+
|
||||
+This should force the creation of a hiddev device for the receiver, and
|
||||
+make it usable under lirc.
|
||||
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
||||
index 5b4d66d..b0e1811 100644
|
||||
--- a/drivers/hid/hid-apple.c
|
||||
+++ b/drivers/hid/hid-apple.c
|
||||
@@ -353,10 +353,6 @@ static void apple_remove(struct hid_device *hdev)
|
||||
}
|
||||
|
||||
static const struct hid_device_id apple_devices[] = {
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL),
|
||||
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4),
|
||||
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE),
|
||||
.driver_data = APPLE_MIGHTYMOUSE | APPLE_INVERT_HWHEEL },
|
||||
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index 8455f3d..e795d8c 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -1170,6 +1170,8 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
|
||||
unsigned int i;
|
||||
int len;
|
||||
|
||||
+ if (hdev->quirks & HID_QUIRK_HIDDEV_FORCE)
|
||||
+ connect_mask |= (HID_CONNECT_HIDDEV_FORCE | HID_CONNECT_HIDDEV);
|
||||
if (hdev->bus != BUS_USB)
|
||||
connect_mask &= ~HID_CONNECT_HIDDEV;
|
||||
if (hid_hiddev(hdev))
|
||||
@@ -1250,8 +1252,6 @@ EXPORT_SYMBOL_GPL(hid_disconnect);
|
||||
static const struct hid_device_id hid_blacklist[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) },
|
||||
@@ -1545,6 +1545,9 @@ static const struct hid_device_id hid_ignore_list[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM)},
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM2)},
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) },
|
||||
@@ -1749,7 +1752,7 @@ int hid_add_device(struct hid_device *hdev)
|
||||
|
||||
/* we need to kill them here, otherwise they will stay allocated to
|
||||
* wait for coming driver */
|
||||
- if (hid_ignore(hdev))
|
||||
+ if (!(hdev->quirks & HID_QUIRK_NO_IGNORE) && hid_ignore(hdev))
|
||||
return -ENODEV;
|
||||
|
||||
/* XXX hack, any other cleaner solution after the driver core
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 793691f..9255c1a 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -93,6 +93,7 @@
|
||||
#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
|
||||
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
||||
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
||||
#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
|
||||
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
||||
|
||||
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
|
||||
index 2f84237..2de42e1 100644
|
||||
--- a/drivers/hid/usbhid/hid-core.c
|
||||
+++ b/drivers/hid/usbhid/hid-core.c
|
||||
@@ -1142,6 +1142,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
|
||||
hid->vendor = le16_to_cpu(dev->descriptor.idVendor);
|
||||
hid->product = le16_to_cpu(dev->descriptor.idProduct);
|
||||
hid->name[0] = 0;
|
||||
+ hid->quirks = usbhid_lookup_quirk(hid->vendor, hid->product);
|
||||
if (intf->cur_altsetting->desc.bInterfaceProtocol ==
|
||||
USB_INTERFACE_PROTOCOL_MOUSE)
|
||||
hid->type = HID_TYPE_USBMOUSE;
|
||||
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
|
||||
index 16ec523..4340986 100644
|
||||
--- a/drivers/input/misc/Kconfig
|
||||
+++ b/drivers/input/misc/Kconfig
|
||||
@@ -149,6 +149,19 @@ config INPUT_KEYSPAN_REMOTE
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called keyspan_remote.
|
||||
|
||||
+config INPUT_APPLEIR
|
||||
+ tristate "Apple infrared receiver (built in)"
|
||||
+ depends on USB_ARCH_HAS_HCD
|
||||
+ select USB
|
||||
+ help
|
||||
+ Say Y here if you want to use a Apple infrared remote control. All
|
||||
+ the Apple computers from 2005 onwards include such a port, except
|
||||
+ the unibody Macbook (2009), and Mac Pros. This receiver is also
|
||||
+ used in the Apple TV set-top box.
|
||||
+
|
||||
+ To compile this driver as a module, choose M here: the module will
|
||||
+ be called appleir.
|
||||
+
|
||||
config INPUT_POWERMATE
|
||||
tristate "Griffin PowerMate and Contour Jog support"
|
||||
depends on USB_ARCH_HAS_HCD
|
||||
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
|
||||
index a8b8485..041e6f5 100644
|
||||
--- a/drivers/input/misc/Makefile
|
||||
+++ b/drivers/input/misc/Makefile
|
||||
@@ -5,6 +5,7 @@
|
||||
# Each configuration option enables a list of files.
|
||||
|
||||
obj-$(CONFIG_INPUT_APANEL) += apanel.o
|
||||
+obj-$(CONFIG_INPUT_APPLEIR) += appleir.o
|
||||
obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
|
||||
obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
|
||||
obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
|
||||
diff --git a/drivers/input/misc/appleir.c b/drivers/input/misc/appleir.c
|
||||
new file mode 100644
|
||||
index 0000000..cff4df6
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/misc/appleir.c
|
||||
@@ -0,0 +1,453 @@
|
||||
+/*
|
||||
+ * appleir: USB driver for the apple ir device
|
||||
+ *
|
||||
+ * Original driver written by James McKenzie
|
||||
+ * Ported to recent 2.6 kernel versions by Greg Kroah-Hartman <gregkh@suse.de>
|
||||
+ *
|
||||
+ * Copyright (C) 2006 James McKenzie
|
||||
+ * Copyright (C) 2008 Greg Kroah-Hartman <greg@kroah.com>
|
||||
+ * Copyright (C) 2008 Novell 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, version 2.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/input.h>
|
||||
+#include <linux/usb/input.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/usb.h>
|
||||
+#include <linux/usb/input.h>
|
||||
+#include <asm/unaligned.h>
|
||||
+#include <asm/byteorder.h>
|
||||
+
|
||||
+#define DRIVER_VERSION "v1.2"
|
||||
+#define DRIVER_AUTHOR "James McKenzie"
|
||||
+#define DRIVER_DESC "Apple infrared receiver driver"
|
||||
+#define DRIVER_LICENSE "GPL"
|
||||
+
|
||||
+MODULE_AUTHOR(DRIVER_AUTHOR);
|
||||
+MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
+MODULE_LICENSE(DRIVER_LICENSE);
|
||||
+
|
||||
+#define USB_VENDOR_ID_APPLE 0x05ac
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
||||
+#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
||||
+
|
||||
+#define URB_SIZE 32
|
||||
+
|
||||
+#define MAX_KEYS 8
|
||||
+#define MAX_KEYS_MASK (MAX_KEYS - 1)
|
||||
+
|
||||
+#define dbginfo(dev, format, arg...) do { if (debug) dev_info(dev , format , ## arg); } while (0)
|
||||
+
|
||||
+static int debug;
|
||||
+module_param(debug, int, 0644);
|
||||
+MODULE_PARM_DESC(debug, "Enable extra debug messages and information");
|
||||
+
|
||||
+/* I have two devices both of which report the following */
|
||||
+/* 25 87 ee 83 0a + */
|
||||
+/* 25 87 ee 83 0c - */
|
||||
+/* 25 87 ee 83 09 << */
|
||||
+/* 25 87 ee 83 06 >> */
|
||||
+/* 25 87 ee 83 05 >" */
|
||||
+/* 25 87 ee 83 03 menu */
|
||||
+/* 26 00 00 00 00 for key repeat*/
|
||||
+
|
||||
+/* Thomas Glanzmann reports the following responses */
|
||||
+/* 25 87 ee ca 0b + */
|
||||
+/* 25 87 ee ca 0d - */
|
||||
+/* 25 87 ee ca 08 << */
|
||||
+/* 25 87 ee ca 07 >> */
|
||||
+/* 25 87 ee ca 04 >" */
|
||||
+/* 25 87 ee ca 02 menu */
|
||||
+/* 26 00 00 00 00 for key repeat*/
|
||||
+/* He also observes the following event sometimes */
|
||||
+/* sent after a key is release, which I interpret */
|
||||
+/* as a flat battery message */
|
||||
+/* 25 87 e0 ca 06 flat battery */
|
||||
+
|
||||
+/* Alexandre Karpenko reports the following responses for Device ID 0x8242 */
|
||||
+/* 25 87 ee 47 0b + */
|
||||
+/* 25 87 ee 47 0d - */
|
||||
+/* 25 87 ee 47 08 << */
|
||||
+/* 25 87 ee 47 07 >> */
|
||||
+/* 25 87 ee 47 04 >" */
|
||||
+/* 25 87 ee 47 02 menu */
|
||||
+/* 26 87 ee 47 ** for key repeat (** is the code of the key being held) */
|
||||
+
|
||||
+static const unsigned short appleir_key_table[] = {
|
||||
+ KEY_RESERVED,
|
||||
+ KEY_MENU,
|
||||
+ KEY_PLAYPAUSE,
|
||||
+ KEY_FORWARD,
|
||||
+ KEY_BACK,
|
||||
+ KEY_VOLUMEUP,
|
||||
+ KEY_VOLUMEDOWN,
|
||||
+ KEY_RESERVED,
|
||||
+};
|
||||
+
|
||||
+struct appleir {
|
||||
+ struct input_dev *input_dev;
|
||||
+ unsigned short keymap[ARRAY_SIZE(appleir_key_table)];
|
||||
+ u8 *data;
|
||||
+ dma_addr_t dma_buf;
|
||||
+ struct usb_device *usbdev;
|
||||
+ unsigned int flags;
|
||||
+ struct urb *urb;
|
||||
+ struct timer_list key_up_timer;
|
||||
+ int current_key;
|
||||
+ char phys[32];
|
||||
+};
|
||||
+
|
||||
+static DEFINE_MUTEX(appleir_mutex);
|
||||
+
|
||||
+enum {
|
||||
+ APPLEIR_OPENED = 0x1,
|
||||
+ APPLEIR_SUSPENDED = 0x2,
|
||||
+};
|
||||
+
|
||||
+static struct usb_device_id appleir_ids[] = {
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
+ {}
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(usb, appleir_ids);
|
||||
+
|
||||
+static void dump_packet(struct appleir *appleir, char *msg, u8 *data, int len)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ printk(KERN_ERR "appleir: %s (%d bytes)", msg, len);
|
||||
+
|
||||
+ for (i = 0; i < len; ++i)
|
||||
+ printk(" %02x", data[i]);
|
||||
+ printk("\n");
|
||||
+}
|
||||
+
|
||||
+static void key_up(struct appleir *appleir, int key)
|
||||
+{
|
||||
+ dbginfo(&appleir->input_dev->dev, "key %d up\n", key);
|
||||
+ input_report_key(appleir->input_dev, key, 0);
|
||||
+ input_sync(appleir->input_dev);
|
||||
+}
|
||||
+
|
||||
+static void key_down(struct appleir *appleir, int key)
|
||||
+{
|
||||
+ dbginfo(&appleir->input_dev->dev, "key %d down\n", key);
|
||||
+ input_report_key(appleir->input_dev, key, 1);
|
||||
+ input_sync(appleir->input_dev);
|
||||
+}
|
||||
+
|
||||
+static void battery_flat(struct appleir *appleir)
|
||||
+{
|
||||
+ dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
|
||||
+}
|
||||
+
|
||||
+static void key_up_tick(unsigned long data)
|
||||
+{
|
||||
+ struct appleir *appleir = (struct appleir *)data;
|
||||
+
|
||||
+ if (appleir->current_key) {
|
||||
+ key_up(appleir, appleir->current_key);
|
||||
+ appleir->current_key = 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void new_data(struct appleir *appleir, u8 *data, int len)
|
||||
+{
|
||||
+ static const u8 keydown[] = { 0x25, 0x87, 0xee };
|
||||
+ static const u8 keyrepeat[] = { 0x26, };
|
||||
+ static const u8 flatbattery[] = { 0x25, 0x87, 0xe0 };
|
||||
+
|
||||
+ if (debug)
|
||||
+ dump_packet(appleir, "received", data, len);
|
||||
+
|
||||
+ if (len != 5)
|
||||
+ return;
|
||||
+
|
||||
+ if (!memcmp(data, keydown, sizeof(keydown))) {
|
||||
+ /* If we already have a key down, take it up before marking
|
||||
+ this one down */
|
||||
+ if (appleir->current_key)
|
||||
+ key_up(appleir, appleir->current_key);
|
||||
+ appleir->current_key = appleir->keymap[(data[4] >> 1) & MAX_KEYS_MASK];
|
||||
+
|
||||
+ key_down(appleir, appleir->current_key);
|
||||
+ /* Remote doesn't do key up, either pull them up, in the test
|
||||
+ above, or here set a timer which pulls them up after 1/8 s */
|
||||
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!memcmp(data, keyrepeat, sizeof(keyrepeat))) {
|
||||
+ key_down(appleir, appleir->current_key);
|
||||
+ /* Remote doesn't do key up, either pull them up, in the test
|
||||
+ above, or here set a timer which pulls them up after 1/8 s */
|
||||
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!memcmp(data, flatbattery, sizeof(flatbattery))) {
|
||||
+ battery_flat(appleir);
|
||||
+ /* Fall through */
|
||||
+ }
|
||||
+
|
||||
+ dump_packet(appleir, "unknown packet", data, len);
|
||||
+}
|
||||
+
|
||||
+static void appleir_urb(struct urb *urb)
|
||||
+{
|
||||
+ struct appleir *appleir = urb->context;
|
||||
+ int status = urb->status;
|
||||
+ int retval;
|
||||
+
|
||||
+ switch (status) {
|
||||
+ case 0:
|
||||
+ new_data(appleir, urb->transfer_buffer, urb->actual_length);
|
||||
+ break;
|
||||
+ case -ECONNRESET:
|
||||
+ case -ENOENT:
|
||||
+ case -ESHUTDOWN:
|
||||
+ /* This urb is terminated, clean up */
|
||||
+ dbginfo(&appleir->input_dev->dev, "%s - urb shutting down with status: %d", __func__,
|
||||
+ urb->status);
|
||||
+ return;
|
||||
+ default:
|
||||
+ dbginfo(&appleir->input_dev->dev, "%s - nonzero urb status received: %d", __func__,
|
||||
+ urb->status);
|
||||
+ }
|
||||
+
|
||||
+ retval = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
+ if (retval)
|
||||
+ err("%s - usb_submit_urb failed with result %d", __func__,
|
||||
+ retval);
|
||||
+}
|
||||
+
|
||||
+static int appleir_open(struct input_dev *dev)
|
||||
+{
|
||||
+ struct appleir *appleir = input_get_drvdata(dev);
|
||||
+ struct usb_interface *intf = usb_ifnum_to_if(appleir->usbdev, 0);
|
||||
+ int r;
|
||||
+
|
||||
+ r = usb_autopm_get_interface(intf);
|
||||
+ if (r) {
|
||||
+ dev_err(&intf->dev,
|
||||
+ "%s(): usb_autopm_get_interface() = %d\n", __func__, r);
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+
|
||||
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC)) {
|
||||
+ r = -EIO;
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags |= APPLEIR_OPENED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ usb_autopm_put_interface(intf);
|
||||
+
|
||||
+ return 0;
|
||||
+fail:
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+ usb_autopm_put_interface(intf);
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+static void appleir_close(struct input_dev *dev)
|
||||
+{
|
||||
+ struct appleir *appleir = input_get_drvdata(dev);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+
|
||||
+ if (!(appleir->flags & APPLEIR_SUSPENDED)) {
|
||||
+ usb_kill_urb(appleir->urb);
|
||||
+ del_timer_sync(&appleir->key_up_timer);
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags &= ~APPLEIR_OPENED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+}
|
||||
+
|
||||
+static int appleir_probe(struct usb_interface *intf,
|
||||
+ const struct usb_device_id *id)
|
||||
+{
|
||||
+ struct usb_device *dev = interface_to_usbdev(intf);
|
||||
+ struct usb_endpoint_descriptor *endpoint;
|
||||
+ struct appleir *appleir = NULL;
|
||||
+ struct input_dev *input_dev;
|
||||
+ int retval = -ENOMEM;
|
||||
+ int i;
|
||||
+
|
||||
+ appleir = kzalloc(sizeof(struct appleir), GFP_KERNEL);
|
||||
+ if (!appleir)
|
||||
+ goto allocfail;
|
||||
+
|
||||
+ appleir->data = usb_buffer_alloc(dev, URB_SIZE, GFP_KERNEL,
|
||||
+ &appleir->dma_buf);
|
||||
+ if (!appleir->data)
|
||||
+ goto usbfail;
|
||||
+
|
||||
+ appleir->urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||
+ if (!appleir->urb)
|
||||
+ goto urbfail;
|
||||
+
|
||||
+ appleir->usbdev = dev;
|
||||
+
|
||||
+ input_dev = input_allocate_device();
|
||||
+ if (!input_dev)
|
||||
+ goto inputfail;
|
||||
+
|
||||
+ appleir->input_dev = input_dev;
|
||||
+
|
||||
+ usb_make_path(dev, appleir->phys, sizeof(appleir->phys));
|
||||
+ strlcpy(appleir->phys, "/input0", sizeof(appleir->phys));
|
||||
+
|
||||
+ input_dev->name = "Apple Infrared Remote Controller";
|
||||
+ input_dev->phys = appleir->phys;
|
||||
+ usb_to_input_id(dev, &input_dev->id);
|
||||
+ input_dev->dev.parent = &intf->dev;
|
||||
+ input_dev->keycode = appleir->keymap;
|
||||
+ input_dev->keycodesize = sizeof(unsigned short);
|
||||
+ input_dev->keycodemax = ARRAY_SIZE(appleir->keymap);
|
||||
+
|
||||
+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
|
||||
+
|
||||
+ memcpy(appleir->keymap, appleir_key_table, sizeof(appleir->keymap));
|
||||
+ for (i = 0; i < ARRAY_SIZE(appleir_key_table); i++)
|
||||
+ set_bit(appleir->keymap[i], input_dev->keybit);
|
||||
+ clear_bit(KEY_RESERVED, input_dev->keybit);
|
||||
+
|
||||
+ input_set_drvdata(input_dev, appleir);
|
||||
+ input_dev->open = appleir_open;
|
||||
+ input_dev->close = appleir_close;
|
||||
+
|
||||
+ endpoint = &intf->cur_altsetting->endpoint[0].desc;
|
||||
+
|
||||
+ usb_fill_int_urb(appleir->urb, dev,
|
||||
+ usb_rcvintpipe(dev, endpoint->bEndpointAddress),
|
||||
+ appleir->data, 8,
|
||||
+ appleir_urb, appleir, endpoint->bInterval);
|
||||
+
|
||||
+ appleir->urb->transfer_dma = appleir->dma_buf;
|
||||
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
+
|
||||
+ setup_timer(&appleir->key_up_timer,
|
||||
+ key_up_tick, (unsigned long) appleir);
|
||||
+
|
||||
+ retval = input_register_device(appleir->input_dev);
|
||||
+ if (retval)
|
||||
+ goto inputfail;
|
||||
+
|
||||
+ usb_set_intfdata(intf, appleir);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+inputfail:
|
||||
+ input_free_device(appleir->input_dev);
|
||||
+
|
||||
+urbfail:
|
||||
+ usb_free_urb(appleir->urb);
|
||||
+
|
||||
+usbfail:
|
||||
+ usb_buffer_free(dev, URB_SIZE, appleir->data,
|
||||
+ appleir->dma_buf);
|
||||
+
|
||||
+allocfail:
|
||||
+ kfree(appleir);
|
||||
+
|
||||
+ return retval;
|
||||
+}
|
||||
+
|
||||
+static void appleir_disconnect(struct usb_interface *intf)
|
||||
+{
|
||||
+ struct appleir *appleir = usb_get_intfdata(intf);
|
||||
+
|
||||
+ usb_set_intfdata(intf, NULL);
|
||||
+ input_unregister_device(appleir->input_dev);
|
||||
+ usb_free_urb(appleir->urb);
|
||||
+ usb_buffer_free(interface_to_usbdev(intf), URB_SIZE,
|
||||
+ appleir->data, appleir->dma_buf);
|
||||
+ kfree(appleir);
|
||||
+}
|
||||
+
|
||||
+static int appleir_suspend(struct usb_interface *interface,
|
||||
+ pm_message_t message)
|
||||
+{
|
||||
+ struct appleir *appleir = usb_get_intfdata(interface);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+ if (appleir->flags & APPLEIR_OPENED)
|
||||
+ usb_kill_urb(appleir->urb);
|
||||
+
|
||||
+ appleir->flags |= APPLEIR_SUSPENDED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int appleir_resume(struct usb_interface *interface)
|
||||
+{
|
||||
+ struct appleir *appleir;
|
||||
+ int r = 0;
|
||||
+
|
||||
+ appleir = usb_get_intfdata(interface);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+ if (appleir->flags & APPLEIR_OPENED) {
|
||||
+ struct usb_endpoint_descriptor *endpoint;
|
||||
+
|
||||
+ endpoint = &interface->cur_altsetting->endpoint[0].desc;
|
||||
+ usb_fill_int_urb(appleir->urb, appleir->usbdev,
|
||||
+ usb_rcvintpipe(appleir->usbdev, endpoint->bEndpointAddress),
|
||||
+ appleir->data, 8,
|
||||
+ appleir_urb, appleir, endpoint->bInterval);
|
||||
+ appleir->urb->transfer_dma = appleir->dma_buf;
|
||||
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
+
|
||||
+ /* And reset the USB device */
|
||||
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC))
|
||||
+ r = -EIO;
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags &= ~APPLEIR_SUSPENDED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+static struct usb_driver appleir_driver = {
|
||||
+ .name = "appleir",
|
||||
+ .probe = appleir_probe,
|
||||
+ .disconnect = appleir_disconnect,
|
||||
+ .suspend = appleir_suspend,
|
||||
+ .resume = appleir_resume,
|
||||
+ .reset_resume = appleir_resume,
|
||||
+ .id_table = appleir_ids,
|
||||
+};
|
||||
+
|
||||
+static int __init appleir_init(void)
|
||||
+{
|
||||
+ return usb_register(&appleir_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit appleir_exit(void)
|
||||
+{
|
||||
+ usb_deregister(&appleir_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(appleir_init);
|
||||
+module_exit(appleir_exit);
|
||||
diff --git a/include/linux/hid.h b/include/linux/hid.h
|
||||
index 8709365..662596b 100644
|
||||
--- a/include/linux/hid.h
|
||||
+++ b/include/linux/hid.h
|
||||
@@ -308,11 +308,13 @@ struct hid_item {
|
||||
#define HID_QUIRK_NOTOUCH 0x00000002
|
||||
#define HID_QUIRK_IGNORE 0x00000004
|
||||
#define HID_QUIRK_NOGET 0x00000008
|
||||
+#define HID_QUIRK_HIDDEV_FORCE 0x00000010
|
||||
#define HID_QUIRK_BADPAD 0x00000020
|
||||
#define HID_QUIRK_MULTI_INPUT 0x00000040
|
||||
#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000
|
||||
#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000
|
||||
#define HID_QUIRK_NO_INIT_REPORTS 0x20000000
|
||||
+#define HID_QUIRK_NO_IGNORE 0x40000000
|
||||
|
||||
/*
|
||||
* This is the global environment of the parser. This information is
|
||||
348
alsa-usbmixer-add-possibility-to-remap-dB-values.patch
Normal file
348
alsa-usbmixer-add-possibility-to-remap-dB-values.patch
Normal file
|
|
@ -0,0 +1,348 @@
|
|||
From 82ff9c3b767ec5bfaed3d99c9ed1160e44cbfd53 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Thu, 11 Feb 2010 17:50:44 +0100
|
||||
Subject: ALSA: usbmixer - add possibility to remap dB values
|
||||
|
||||
USB devices tends to represent dB ranges in different way than ALSA expects.
|
||||
Add possibility to override these values and add guessed values for
|
||||
SoundBlaster MP3+.
|
||||
|
||||
Also rename 'Capture Input Source' control to 'Capture Source' for
|
||||
SoundBlaster MP3+ and Extigy.
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
sound/usb/usbmixer.c | 125 +++++++++++++++++++++++++++------------------
|
||||
sound/usb/usbmixer_maps.c | 23 ++++++--
|
||||
2 files changed, 93 insertions(+), 55 deletions(-)
|
||||
|
||||
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
|
||||
index c998220..c72ad0c 100644
|
||||
--- a/sound/usb/usbmixer.c
|
||||
+++ b/sound/usb/usbmixer.c
|
||||
@@ -123,6 +123,7 @@ struct usb_mixer_elem_info {
|
||||
int channels;
|
||||
int val_type;
|
||||
int min, max, res;
|
||||
+ int dBmin, dBmax;
|
||||
int cached;
|
||||
int cache_val[MAX_CHANNELS];
|
||||
u8 initialized;
|
||||
@@ -194,42 +195,50 @@ enum {
|
||||
*/
|
||||
#include "usbmixer_maps.c"
|
||||
|
||||
-/* get the mapped name if the unit matches */
|
||||
-static int check_mapped_name(struct mixer_build *state, int unitid, int control, char *buf, int buflen)
|
||||
+static const struct usbmix_name_map *
|
||||
+find_map(struct mixer_build *state, int unitid, int control)
|
||||
{
|
||||
- const struct usbmix_name_map *p;
|
||||
+ const struct usbmix_name_map *p = state->map;
|
||||
|
||||
- if (! state->map)
|
||||
- return 0;
|
||||
+ if (!p)
|
||||
+ return NULL;
|
||||
|
||||
for (p = state->map; p->id; p++) {
|
||||
- if (p->id == unitid && p->name &&
|
||||
- (! control || ! p->control || control == p->control)) {
|
||||
- buflen--;
|
||||
- return strlcpy(buf, p->name, buflen);
|
||||
- }
|
||||
+ if (p->id == unitid &&
|
||||
+ (!control || !p->control || control == p->control))
|
||||
+ return p;
|
||||
}
|
||||
- return 0;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
-/* check whether the control should be ignored */
|
||||
-static int check_ignored_ctl(struct mixer_build *state, int unitid, int control)
|
||||
+/* get the mapped name if the unit matches */
|
||||
+static int
|
||||
+check_mapped_name(const struct usbmix_name_map *p, char *buf, int buflen)
|
||||
{
|
||||
- const struct usbmix_name_map *p;
|
||||
+ if (!p || !p->name)
|
||||
+ return 0;
|
||||
|
||||
- if (! state->map)
|
||||
+ buflen--;
|
||||
+ return strlcpy(buf, p->name, buflen);
|
||||
+}
|
||||
+
|
||||
+/* check whether the control should be ignored */
|
||||
+static inline int
|
||||
+check_ignored_ctl(const struct usbmix_name_map *p)
|
||||
+{
|
||||
+ if (!p || p->name || p->dB)
|
||||
return 0;
|
||||
- for (p = state->map; p->id; p++) {
|
||||
- if (p->id == unitid && ! p->name &&
|
||||
- (! control || ! p->control || control == p->control)) {
|
||||
- /*
|
||||
- printk(KERN_DEBUG "ignored control %d:%d\n",
|
||||
- unitid, control);
|
||||
- */
|
||||
- return 1;
|
||||
- }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+/* dB mapping */
|
||||
+static inline void check_mapped_dB(const struct usbmix_name_map *p,
|
||||
+ struct usb_mixer_elem_info *cval)
|
||||
+{
|
||||
+ if (p && p->dB) {
|
||||
+ cval->dBmin = p->dB->min;
|
||||
+ cval->dBmax = p->dB->max;
|
||||
}
|
||||
- return 0;
|
||||
}
|
||||
|
||||
/* get the mapped selector source name */
|
||||
@@ -466,20 +475,8 @@ static int mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
|
||||
|
||||
if (size < sizeof(scale))
|
||||
return -ENOMEM;
|
||||
- /* USB descriptions contain the dB scale in 1/256 dB unit
|
||||
- * while ALSA TLV contains in 1/100 dB unit
|
||||
- */
|
||||
- scale[2] = (convert_signed_value(cval, cval->min) * 100) / 256;
|
||||
- scale[3] = (convert_signed_value(cval, cval->max) * 100) / 256;
|
||||
- if (scale[3] <= scale[2]) {
|
||||
- /* something is wrong; assume it's either from/to 0dB */
|
||||
- if (scale[2] < 0)
|
||||
- scale[3] = 0;
|
||||
- else if (scale[2] > 0)
|
||||
- scale[2] = 0;
|
||||
- else /* totally crap, return an error */
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ scale[2] = cval->dBmin;
|
||||
+ scale[3] = cval->dBmax;
|
||||
if (copy_to_user(_tlv, scale, sizeof(scale)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
@@ -720,6 +717,7 @@ static int get_min_max(struct usb_mixer_elem_info *cval, int default_min)
|
||||
cval->min = default_min;
|
||||
cval->max = cval->min + 1;
|
||||
cval->res = 1;
|
||||
+ cval->dBmin = cval->dBmax = 0;
|
||||
|
||||
if (cval->val_type == USB_MIXER_BOOLEAN ||
|
||||
cval->val_type == USB_MIXER_INV_BOOLEAN) {
|
||||
@@ -787,6 +785,24 @@ static int get_min_max(struct usb_mixer_elem_info *cval, int default_min)
|
||||
|
||||
cval->initialized = 1;
|
||||
}
|
||||
+
|
||||
+ /* USB descriptions contain the dB scale in 1/256 dB unit
|
||||
+ * while ALSA TLV contains in 1/100 dB unit
|
||||
+ */
|
||||
+ cval->dBmin = (convert_signed_value(cval, cval->min) * 100) / 256;
|
||||
+ cval->dBmax = (convert_signed_value(cval, cval->max) * 100) / 256;
|
||||
+ if (cval->dBmin > cval->dBmax) {
|
||||
+ /* something is wrong; assume it's either from/to 0dB */
|
||||
+ if (cval->dBmin < 0)
|
||||
+ cval->dBmax = 0;
|
||||
+ else if (cval->dBmin > 0)
|
||||
+ cval->dBmin = 0;
|
||||
+ if (cval->dBmin > cval->dBmax) {
|
||||
+ /* totally crap, return an error */
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -912,6 +928,7 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
int nameid = desc[desc[0] - 1];
|
||||
struct snd_kcontrol *kctl;
|
||||
struct usb_mixer_elem_info *cval;
|
||||
+ const struct usbmix_name_map *map;
|
||||
|
||||
control++; /* change from zero-based to 1-based value */
|
||||
|
||||
@@ -920,7 +937,8 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
return;
|
||||
}
|
||||
|
||||
- if (check_ignored_ctl(state, unitid, control))
|
||||
+ map = find_map(state, unitid, control);
|
||||
+ if (check_ignored_ctl(map))
|
||||
return;
|
||||
|
||||
cval = kzalloc(sizeof(*cval), GFP_KERNEL);
|
||||
@@ -954,10 +972,11 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
}
|
||||
kctl->private_free = usb_mixer_elem_free;
|
||||
|
||||
- len = check_mapped_name(state, unitid, control, kctl->id.name, sizeof(kctl->id.name));
|
||||
+ len = check_mapped_name(map, kctl->id.name, sizeof(kctl->id.name));
|
||||
mapped_name = len != 0;
|
||||
if (! len && nameid)
|
||||
- len = snd_usb_copy_string_desc(state, nameid, kctl->id.name, sizeof(kctl->id.name));
|
||||
+ len = snd_usb_copy_string_desc(state, nameid,
|
||||
+ kctl->id.name, sizeof(kctl->id.name));
|
||||
|
||||
switch (control) {
|
||||
case USB_FEATURE_MUTE:
|
||||
@@ -995,6 +1014,7 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
kctl->vd[0].access |=
|
||||
SNDRV_CTL_ELEM_ACCESS_TLV_READ |
|
||||
SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK;
|
||||
+ check_mapped_dB(map, cval);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1122,8 +1142,10 @@ static void build_mixer_unit_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
unsigned int num_outs = desc[5 + input_pins];
|
||||
unsigned int i, len;
|
||||
struct snd_kcontrol *kctl;
|
||||
+ const struct usbmix_name_map *map;
|
||||
|
||||
- if (check_ignored_ctl(state, unitid, 0))
|
||||
+ map = find_map(state, unitid, 0);
|
||||
+ if (check_ignored_ctl(map))
|
||||
return;
|
||||
|
||||
cval = kzalloc(sizeof(*cval), GFP_KERNEL);
|
||||
@@ -1152,7 +1174,7 @@ static void build_mixer_unit_ctl(struct mixer_build *state, unsigned char *desc,
|
||||
}
|
||||
kctl->private_free = usb_mixer_elem_free;
|
||||
|
||||
- len = check_mapped_name(state, unitid, 0, kctl->id.name, sizeof(kctl->id.name));
|
||||
+ len = check_mapped_name(map, kctl->id.name, sizeof(kctl->id.name));
|
||||
if (! len)
|
||||
len = get_term_name(state, iterm, kctl->id.name, sizeof(kctl->id.name), 0);
|
||||
if (! len)
|
||||
@@ -1342,6 +1364,7 @@ static int build_audio_procunit(struct mixer_build *state, int unitid, unsigned
|
||||
int i, err, nameid, type, len;
|
||||
struct procunit_info *info;
|
||||
struct procunit_value_info *valinfo;
|
||||
+ const struct usbmix_name_map *map;
|
||||
static struct procunit_value_info default_value_info[] = {
|
||||
{ 0x01, "Switch", USB_MIXER_BOOLEAN },
|
||||
{ 0 }
|
||||
@@ -1371,7 +1394,8 @@ static int build_audio_procunit(struct mixer_build *state, int unitid, unsigned
|
||||
/* FIXME: bitmap might be longer than 8bit */
|
||||
if (! (dsc[12 + num_ins] & (1 << (valinfo->control - 1))))
|
||||
continue;
|
||||
- if (check_ignored_ctl(state, unitid, valinfo->control))
|
||||
+ map = find_map(state, unitid, valinfo->control);
|
||||
+ if (check_ignored_ctl(map))
|
||||
continue;
|
||||
cval = kzalloc(sizeof(*cval), GFP_KERNEL);
|
||||
if (! cval) {
|
||||
@@ -1402,8 +1426,9 @@ static int build_audio_procunit(struct mixer_build *state, int unitid, unsigned
|
||||
}
|
||||
kctl->private_free = usb_mixer_elem_free;
|
||||
|
||||
- if (check_mapped_name(state, unitid, cval->control, kctl->id.name, sizeof(kctl->id.name)))
|
||||
- ;
|
||||
+ if (check_mapped_name(map, kctl->id.name,
|
||||
+ sizeof(kctl->id.name)))
|
||||
+ /* nothing */ ;
|
||||
else if (info->name)
|
||||
strlcpy(kctl->id.name, info->name, sizeof(kctl->id.name));
|
||||
else {
|
||||
@@ -1542,6 +1567,7 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
|
||||
int err;
|
||||
struct usb_mixer_elem_info *cval;
|
||||
struct snd_kcontrol *kctl;
|
||||
+ const struct usbmix_name_map *map;
|
||||
char **namelist;
|
||||
|
||||
if (! num_ins || desc[0] < 5 + num_ins) {
|
||||
@@ -1557,7 +1583,8 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
|
||||
if (num_ins == 1) /* only one ? nonsense! */
|
||||
return 0;
|
||||
|
||||
- if (check_ignored_ctl(state, unitid, 0))
|
||||
+ map = find_map(state, unitid, 0);
|
||||
+ if (check_ignored_ctl(map))
|
||||
return 0;
|
||||
|
||||
cval = kzalloc(sizeof(*cval), GFP_KERNEL);
|
||||
@@ -1612,7 +1639,7 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
|
||||
kctl->private_free = usb_mixer_selector_elem_free;
|
||||
|
||||
nameid = desc[desc[0] - 1];
|
||||
- len = check_mapped_name(state, unitid, 0, kctl->id.name, sizeof(kctl->id.name));
|
||||
+ len = check_mapped_name(map, kctl->id.name, sizeof(kctl->id.name));
|
||||
if (len)
|
||||
;
|
||||
else if (nameid)
|
||||
diff --git a/sound/usb/usbmixer_maps.c b/sound/usb/usbmixer_maps.c
|
||||
index 77c3588..79e903a 100644
|
||||
--- a/sound/usb/usbmixer_maps.c
|
||||
+++ b/sound/usb/usbmixer_maps.c
|
||||
@@ -19,11 +19,16 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+struct usbmix_dB_map {
|
||||
+ u32 min;
|
||||
+ u32 max;
|
||||
+};
|
||||
|
||||
struct usbmix_name_map {
|
||||
int id;
|
||||
const char *name;
|
||||
int control;
|
||||
+ struct usbmix_dB_map *dB;
|
||||
};
|
||||
|
||||
struct usbmix_selector_map {
|
||||
@@ -72,7 +77,7 @@ static struct usbmix_name_map extigy_map[] = {
|
||||
{ 8, "Line Playback" }, /* FU */
|
||||
/* 9: IT mic */
|
||||
{ 10, "Mic Playback" }, /* FU */
|
||||
- { 11, "Capture Input Source" }, /* SU */
|
||||
+ { 11, "Capture Source" }, /* SU */
|
||||
{ 12, "Capture" }, /* FU */
|
||||
/* 13: OT pcm capture */
|
||||
/* 14: MU (w/o controls) */
|
||||
@@ -102,6 +107,9 @@ static struct usbmix_name_map extigy_map[] = {
|
||||
* e.g. no Master and fake PCM volume
|
||||
* Pavel Mihaylov <bin@bash.info>
|
||||
*/
|
||||
+static struct usbmix_dB_map mp3plus_dB_1 = {-4781, 0}; /* just guess */
|
||||
+static struct usbmix_dB_map mp3plus_dB_2 = {-1781, 618}; /* just guess */
|
||||
+
|
||||
static struct usbmix_name_map mp3plus_map[] = {
|
||||
/* 1: IT pcm */
|
||||
/* 2: IT mic */
|
||||
@@ -110,16 +118,19 @@ static struct usbmix_name_map mp3plus_map[] = {
|
||||
/* 5: OT digital out */
|
||||
/* 6: OT speaker */
|
||||
/* 7: OT pcm capture */
|
||||
- { 8, "Capture Input Source" }, /* FU, default PCM Capture Source */
|
||||
+ { 8, "Capture Source" }, /* FU, default PCM Capture Source */
|
||||
/* (Mic, Input 1 = Line input, Input 2 = Optical input) */
|
||||
{ 9, "Master Playback" }, /* FU, default Speaker 1 */
|
||||
/* { 10, "Mic Capture", 1 }, */ /* FU, Mic Capture */
|
||||
- /* { 10, "Mic Capture", 2 }, */ /* FU, Mic Capture */
|
||||
+ { 10, /* "Mic Capture", */ NULL, 2, .dB = &mp3plus_dB_2 },
|
||||
+ /* FU, Mic Capture */
|
||||
{ 10, "Mic Boost", 7 }, /* FU, default Auto Gain Input */
|
||||
- { 11, "Line Capture" }, /* FU, default PCM Capture */
|
||||
+ { 11, "Line Capture", .dB = &mp3plus_dB_2 },
|
||||
+ /* FU, default PCM Capture */
|
||||
{ 12, "Digital In Playback" }, /* FU, default PCM 1 */
|
||||
- /* { 13, "Mic Playback" }, */ /* FU, default Mic Playback */
|
||||
- { 14, "Line Playback" }, /* FU, default Speaker */
|
||||
+ { 13, /* "Mic Playback", */ .dB = &mp3plus_dB_1 },
|
||||
+ /* FU, default Mic Playback */
|
||||
+ { 14, "Line Playback", .dB = &mp3plus_dB_1 }, /* FU, default Speaker */
|
||||
/* 15: MU */
|
||||
{ 0 } /* terminator */
|
||||
};
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
From: Shi Weihua <shiwh@cn.fujitsu.com>
|
||||
Date: Tue, 18 May 2010 00:51:54 +0000 (+0000)
|
||||
Subject: Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
|
||||
X-Git-Tag: v2.6.35-rc3~3^2~3
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=731e3d1b
|
||||
|
||||
Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
|
||||
|
||||
when used Posix File System Test Suite(pjd-fstest) to test btrfs,
|
||||
some cases about setfacl failed when noacl mount option used.
|
||||
I simplified used commands in pjd-fstest, and the following steps
|
||||
can reproduce it.
|
||||
------------------------
|
||||
# cd btrfs-part/
|
||||
# mkdir aaa
|
||||
# setfacl -m m::rw aaa <- successed, but not expected by pjd-fstest.
|
||||
------------------------
|
||||
I checked ext3, a warning message occured, like as:
|
||||
setfacl: aaa/: Operation not supported
|
||||
Certainly, it's expected by pjd-fstest.
|
||||
|
||||
So, i compared acl.c of btrfs and ext3. Based on that, a patch created.
|
||||
Fortunately, it works.
|
||||
|
||||
Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>
|
||||
Signed-off-by: Chris Mason <chris.mason@oracle.com>
|
||||
---
|
||||
|
||||
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
|
||||
index 6b4d0cc..a372985 100644
|
||||
--- a/fs/btrfs/acl.c
|
||||
+++ b/fs/btrfs/acl.c
|
||||
@@ -163,6 +163,9 @@ static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
|
||||
if (!is_owner_or_cap(dentry->d_inode))
|
||||
return -EPERM;
|
||||
|
||||
+ if (!IS_POSIXACL(dentry->d_inode))
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
if (value) {
|
||||
acl = posix_acl_from_xattr(value, size);
|
||||
if (acl == NULL) {
|
||||
166
check-kabi
166
check-kabi
|
|
@ -1,166 +0,0 @@
|
|||
#!/usr/bin/python3
|
||||
#
|
||||
# check-kabi - Red Hat kABI reference checking tool
|
||||
#
|
||||
# We use this script to check against reference Module.kabi files.
|
||||
#
|
||||
# Author: Jon Masters <jcm@redhat.com>
|
||||
# Copyright (C) 2007-2009 Red Hat, Inc.
|
||||
#
|
||||
# This software may be freely redistributed under the terms of the GNU
|
||||
# General Public License (GPL).
|
||||
|
||||
# Changelog:
|
||||
#
|
||||
# 2018/06/01 - Update for python3 by Petr Oros.
|
||||
# 2009/08/15 - Updated for use in RHEL6.
|
||||
# 2007/06/13 - Initial rewrite in python by Jon Masters.
|
||||
|
||||
__author__ = "Jon Masters <jcm@redhat.com>"
|
||||
__version__ = "2.0"
|
||||
__date__ = "2009/08/15"
|
||||
__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc"
|
||||
__license__ = "GPL"
|
||||
|
||||
import getopt
|
||||
import string
|
||||
import sys
|
||||
|
||||
true = 1
|
||||
false = 0
|
||||
|
||||
|
||||
def load_symvers(symvers, filename):
|
||||
"""Load a Module.symvers file."""
|
||||
|
||||
symvers_file = open(filename, "r")
|
||||
|
||||
while true:
|
||||
in_line = symvers_file.readline()
|
||||
if in_line == "":
|
||||
break
|
||||
if in_line == "\n":
|
||||
continue
|
||||
checksum, symbol, directory, type, *ns = in_line.split()
|
||||
ns = ns[0] if ns else None
|
||||
|
||||
symvers[symbol] = in_line[0:-1]
|
||||
|
||||
|
||||
def load_kabi(kabi, filename):
|
||||
"""Load a Module.kabi file."""
|
||||
|
||||
kabi_file = open(filename, "r")
|
||||
|
||||
while true:
|
||||
in_line = kabi_file.readline()
|
||||
if in_line == "":
|
||||
break
|
||||
if in_line == "\n":
|
||||
continue
|
||||
checksum, symbol, directory, type, *ns = in_line.split()
|
||||
ns = ns[0] if ns else None
|
||||
|
||||
kabi[symbol] = in_line[0:-1]
|
||||
|
||||
|
||||
def check_kabi(symvers, kabi):
|
||||
"""Check Module.kabi and Module.symvers files."""
|
||||
|
||||
fail = 0
|
||||
warn = 0
|
||||
changed_symbols = []
|
||||
moved_symbols = []
|
||||
ns_symbols = []
|
||||
|
||||
for symbol in kabi:
|
||||
abi_hash, abi_sym, abi_dir, abi_type, *abi_ns = kabi[symbol].split()
|
||||
abi_ns = abi_ns[0] if abi_ns else None
|
||||
if symbol in symvers:
|
||||
sym_hash, sym_sym, sym_dir, sym_type, *sym_ns = symvers[symbol].split()
|
||||
sym_ns = sym_ns[0] if sym_ns else None
|
||||
if abi_hash != sym_hash:
|
||||
fail = 1
|
||||
changed_symbols.append(symbol)
|
||||
|
||||
if abi_dir != sym_dir:
|
||||
warn = 1
|
||||
moved_symbols.append(symbol)
|
||||
|
||||
if abi_ns != sym_ns:
|
||||
warn = 1
|
||||
ns_symbols.append(symbol)
|
||||
else:
|
||||
fail = 1
|
||||
changed_symbols.append(symbol)
|
||||
|
||||
if fail:
|
||||
print("*** ERROR - ABI BREAKAGE WAS DETECTED ***")
|
||||
print("")
|
||||
print("The following symbols have been changed (this will cause an ABI breakage):")
|
||||
print("")
|
||||
for symbol in changed_symbols:
|
||||
print(symbol)
|
||||
print("")
|
||||
|
||||
if warn:
|
||||
print("*** WARNING - ABI SYMBOLS MOVED ***")
|
||||
if moved_symbols:
|
||||
print("")
|
||||
print("The following symbols moved (typically caused by moving a symbol from being")
|
||||
print("provided by the kernel vmlinux out to a loadable module):")
|
||||
print("")
|
||||
for symbol in moved_symbols:
|
||||
print(symbol)
|
||||
print("")
|
||||
if ns_symbols:
|
||||
print("")
|
||||
print("The following symbols changed symbol namespaces:")
|
||||
print("")
|
||||
for symbol in ns_symbols:
|
||||
print(symbol)
|
||||
print("")
|
||||
|
||||
"""Halt the build, if we got errors and/or warnings. In either case,
|
||||
double-checkig is required to avoid introducing / concealing
|
||||
KABI inconsistencies."""
|
||||
if fail or warn:
|
||||
sys.exit(1)
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def usage():
|
||||
print("""
|
||||
check-kabi: check Module.kabi and Module.symvers files.
|
||||
|
||||
check-kabi [ -k Module.kabi ] [ -s Module.symvers ]
|
||||
|
||||
""")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
symvers_file = ""
|
||||
kabi_file = ""
|
||||
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'hk:s:')
|
||||
|
||||
for o, v in opts:
|
||||
if o == "-s":
|
||||
symvers_file = v
|
||||
if o == "-h":
|
||||
usage()
|
||||
sys.exit(0)
|
||||
if o == "-k":
|
||||
kabi_file = v
|
||||
|
||||
if (symvers_file == "") or (kabi_file == ""):
|
||||
usage()
|
||||
sys.exit(1)
|
||||
|
||||
symvers = {}
|
||||
kabi = {}
|
||||
|
||||
load_symvers(symvers, symvers_file)
|
||||
load_kabi(kabi, kabi_file)
|
||||
check_kabi(symvers, kabi)
|
||||
107
config-arm
Normal file
107
config-arm
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
# CONFIG_SMP 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
|
||||
78
config-debug
Normal file
78
config-debug
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
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_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_FUNCTION_TRACER=y
|
||||
CONFIG_STACK_TRACER=y
|
||||
CONFIG_DYNAMIC_FTRACE=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
|
||||
4316
config-generic
Normal file
4316
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
|
||||
215
config-ia64-generic
Normal file
215
config-ia64-generic
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
#
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
CONFIG_IA64=y
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_XEN is not set
|
||||
# CONFIG_ARCH_XEN is not set
|
||||
# CONFIG_XEN_PRIVILEGED_GUEST is not set
|
||||
# CONFIG_XEN_VT is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=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_IDE_MAX_HWIFS=4
|
||||
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_IA64_SGI_SN_XP=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_BAY is not set
|
||||
# CONFIG_ACPI_BATTERY is not set
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
CONFIG_ACPI_EC=y
|
||||
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_SYSTEM=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
# CONFIG_ACPI_TOSHIBA is not set
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
|
||||
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_BCM43XX is not set
|
||||
|
||||
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
|
||||
78
config-nodebug
Normal file
78
config-nodebug
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
CONFIG_SND_VERBOSE_PRINTK=y
|
||||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_FAILSLAB is not set
|
||||
# CONFIG_FAIL_PAGE_ALLOC is not set
|
||||
# CONFIG_FAIL_MAKE_REQUEST is not set
|
||||
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
|
||||
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
|
||||
# CONFIG_FAIL_IO_TIMEOUT is not set
|
||||
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
|
||||
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
# CONFIG_DEBUG_OBJECTS_FREE is not set
|
||||
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
# CONFIG_X86_PTDUMP is not set
|
||||
|
||||
# CONFIG_CAN_DEBUG_DEVICES is not set
|
||||
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
|
||||
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
|
||||
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
|
||||
# CONFIG_MMIOTRACE is not set
|
||||
|
||||
# CONFIG_DEBUG_CREDENTIALS is not set
|
||||
|
||||
# off in both production debug and nodebug builds,
|
||||
# on in rawhide nodebug builds
|
||||
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
|
||||
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
|
||||
# CONFIG_FUNCTION_TRACER is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_FTRACE is not set
|
||||
|
||||
# CONFIG_DEBUG_CFQ_IOSCHED is not set
|
||||
|
||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||
|
||||
# CONFIG_ATH_DEBUG is not set
|
||||
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
|
||||
|
||||
# CONFIG_DEBUG_OBJECTS_WORK is not set
|
||||
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
|
||||
345
config-powerpc-generic
Normal file
345
config-powerpc-generic
Normal file
|
|
@ -0,0 +1,345 @@
|
|||
# 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_PPC=y
|
||||
CONFIG_RTC_DRV_GENERIC=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ELECTRA_IDE=y
|
||||
|
||||
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_USB_HIDINPUT_POWERBOOK=y
|
||||
|
||||
# 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_IDEDISK=y
|
||||
CONFIG_IDEDISK_MULTI_MODE=y
|
||||
# CONFIG_BLK_DEV_IDECS is not set
|
||||
CONFIG_BLK_DEV_IDECD=m
|
||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||
CONFIG_BLK_DEV_IDEFLOPPY=m
|
||||
# CONFIG_BLK_DEV_IDESCSI 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_IDEPCI_SHARE_IRQ=y
|
||||
# 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_HPT34X 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_PMAC=y
|
||||
# CONFIG_IDE_ARM is not set
|
||||
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_MT9M001_PCA9536_SWITCH is not set
|
||||
# CONFIG_MT9V022_PCA9536_SWITCH is not set
|
||||
# CONFIG_KGDB_CONSOLE is not set
|
||||
|
||||
CONFIG_MDIO_OF_GPIO=m
|
||||
|
||||
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_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
|
||||
|
||||
190
config-powerpc32-generic
Normal file
190
config-powerpc32-generic
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
# 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_CLASSIC32=y
|
||||
CONFIG_CPU_FREQ_PMAC=y
|
||||
CONFIG_PPC_MULTIPLATFORM=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_GFAR_NAPI=y
|
||||
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_SENSORS_M41T00=m
|
||||
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_MAMBO 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_83xx_WDT=m
|
||||
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_BLK_DEV_HD_ONLY=y
|
||||
# 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_SBC8240 is not set
|
||||
|
||||
CONFIG_MTD_NAND_FSL_UPM=m
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
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
|
||||
197
config-powerpc64
Normal file
197
config-powerpc64
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_PPC_PMAC64=y
|
||||
CONFIG_PPC_MAPLE=y
|
||||
CONFIG_PPC_SYSTEMSIM=y
|
||||
CONFIG_BLK_DEV_SYSTEMSIM=m
|
||||
CONFIG_SYSTEMSIM_NET=m
|
||||
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_USE_LPAR_ADDR is not set
|
||||
CONFIG_PS3_ADVANCED=y
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_USE_LPAR_ADDR=y
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
CONFIG_PS3_STORAGE=m
|
||||
CONFIG_PS3_STORAGE_EXPECTED_NUM_DRIVES=3
|
||||
CONFIG_PS3_STORAGE_MAX_SPINUP_WAIT_TIME=10
|
||||
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_MAMBO=y
|
||||
CONFIG_MAMBO_DISK=m
|
||||
CONFIG_MAMBO_NET=m
|
||||
CONFIG_CBE_RAS=y
|
||||
|
||||
# iSeries device drivers
|
||||
#
|
||||
CONFIG_ISERIES_VETH=m
|
||||
# CONFIG_VIOCONS is not set
|
||||
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_SPU_TRACE=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_BLK_DEV_HD_ONLY=y
|
||||
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
|
||||
213
config-rhel-generic
Normal file
213
config-rhel-generic
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
# 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_CS4232 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_TIPAR 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_IFORCE_USB=y
|
||||
# CONFIG_JOYSTICK_IFORCE_232=y
|
||||
# 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_MIROPCM20_RDS 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_TUNER_3036 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_DPC 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_FB_TRIDENT_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
|
||||
|
||||
237
config-s390x
Normal file
237
config-s390x
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
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
|
||||
# See bug 496605
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_NO_IDLE_HZ=y
|
||||
CONFIG_NO_IDLE_HZ_INIT=y
|
||||
|
||||
CONFIG_SMP=y
|
||||
|
||||
#
|
||||
# I/O subsystem configuration
|
||||
#
|
||||
CONFIG_MACHCHK_WARNING=y
|
||||
CONFIG_QDIO=m
|
||||
# CONFIG_QDIO_DEBUG is not set
|
||||
|
||||
#
|
||||
# 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_VIRT_TIMER=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_SHAPER is not set
|
||||
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_QETH_VLAN=y
|
||||
CONFIG_CCWGROUP=m
|
||||
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 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_VMCP=m
|
||||
|
||||
# CONFIG_ATMEL is not set
|
||||
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_MII is not set
|
||||
|
||||
# CONFIG_BOOT_DELAY 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_SWITCH_AMODE=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_PAGE_STATES=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_PREEMPT_TRACER is not set
|
||||
215
config-sparc64-generic
Normal file
215
config-sparc64-generic
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
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_SPARC32_COMPAT=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_BINFMT_ELF32=y
|
||||
CONFIG_BINFMT_AOUT32=y
|
||||
CONFIG_SUNOS_EMUL=y
|
||||
CONFIG_SOLARIS_EMUL=m
|
||||
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_PVR150 is not set
|
||||
# CONFIG_LIRC_PARALLEL is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
# CONFIG_I2C_SAVAGE4 is not set
|
||||
# CONFIG_I2C_SIMTEC is not set
|
||||
# CONFIG_I2C_VOODOO3 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_XVR1000=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_PROM_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_SUN_MOSTEK_RTC=y
|
||||
CONFIG_OBP_FLASH=m
|
||||
# CONFIG_SUN_VIDEOPIX is not set
|
||||
# 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_HPT34X 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_SBA=y
|
||||
CONFIG_ATM_FORE200E_SBA_DEFAULT_FW=y
|
||||
# CONFIG_ATM_FORE200E_SBA_FW 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_SUN_BPP=m
|
||||
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
|
||||
513
config-x86-generic
Normal file
513
config-x86-generic
Normal file
|
|
@ -0,0 +1,513 @@
|
|||
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_PC is not set
|
||||
CONFIG_X86_GENERICARCH=y
|
||||
CONFIG_X86_EXTENDED_PLATFORM=y
|
||||
CONFIG_X86_32_NON_STANDARD=y
|
||||
|
||||
# CONFIG_X86_ELAN is not set
|
||||
# CONFIG_X86_VOYAGER 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_MWINCHIP2 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_CMPXCHG=y
|
||||
CONFIG_X86_L1_CACHE_SHIFT=7
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_X86_PPRO_FENCE=y
|
||||
CONFIG_X86_WP_WORKS_OK=y
|
||||
CONFIG_X86_INVLPG=y
|
||||
CONFIG_X86_BSWAP=y
|
||||
CONFIG_X86_POPAD_OK=y
|
||||
CONFIG_X86_GOOD_APIC=y
|
||||
CONFIG_X86_INTEL_USERCOPY=y
|
||||
CONFIG_X86_USE_PPRO_CHECKSUM=y
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_TIMER=y
|
||||
# CONFIG_HPET_RTC_IRQ is not set
|
||||
# CONFIG_HPET_MMAP is not set
|
||||
CONFIG_X86_LOCAL_APIC=y
|
||||
CONFIG_X86_IO_APIC=y
|
||||
CONFIG_X86_TSC=y
|
||||
CONFIG_X86_MCE=y
|
||||
# CONFIG_X86_MCE_NONFATAL is not set
|
||||
CONFIG_X86_MCE_P4THERMAL=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_X86_CPU_DEBUG is not set
|
||||
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
|
||||
|
||||
CONFIG_I2O=m
|
||||
CONFIG_I2O_BLOCK=m
|
||||
CONFIG_I2O_SCSI=m
|
||||
CONFIG_I2O_PROC=m
|
||||
CONFIG_I2O_CONFIG=y
|
||||
CONFIG_I2O_EXT_ADAPTEC=y
|
||||
CONFIG_I2O_EXT_ADAPTEC_DMA64=y
|
||||
CONFIG_I2O_CONFIG_OLD_IOCTL=y
|
||||
CONFIG_I2O_BUS=m
|
||||
|
||||
#
|
||||
# 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
|
||||
# CONFIG_APM_REAL_MODE_POWER_OFF is not set
|
||||
|
||||
#
|
||||
# Kernel debugging
|
||||
#
|
||||
CONFIG_X86_FIND_SMP_CONFIG=y
|
||||
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_BAY=y
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=1999
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_EC=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_SYSTEM=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# Disable in F9.
|
||||
CONFIG_ACPI_PROC_EVENT=y
|
||||
CONFIG_PNPACPI=y
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
|
||||
#
|
||||
# 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_ACPI_CPUFREQ_PROC_INTF is not set
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
CONFIG_X86_POWERNOW_K7=y
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
CONFIG_X86_POWERNOW_K8_ACPI=y
|
||||
# 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_SMP=y
|
||||
CONFIG_X86_HT=y
|
||||
CONFIG_X86_BIOS_REBOOT=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_I810=m
|
||||
CONFIG_I2C_ISCH=m
|
||||
CONFIG_I2C_NFORCE2=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
CONFIG_I2C_PROSAVAGE=m
|
||||
CONFIG_I2C_SAVAGE4=m
|
||||
CONFIG_I2C_SIS5595=m
|
||||
CONFIG_I2C_SIS630=m
|
||||
CONFIG_I2C_SIS96X=m
|
||||
|
||||
CONFIG_I2C_VIA=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
CONFIG_I2C_VOODOO3=m
|
||||
|
||||
CONFIG_SCx200_ACB=m
|
||||
|
||||
# CONFIG_X86_REBOOTFIXUPS is not set
|
||||
|
||||
CONFIG_DELL_RBU=m
|
||||
CONFIG_DCDBAS=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_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_USB_HIDINPUT_POWERBOOK=y
|
||||
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
CONFIG_ACERHDF=m
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_EEEPC_LAPTOP=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_TC1100_WMI=m
|
||||
CONFIG_HP_WMI=m
|
||||
CONFIG_DELL_WMI=m
|
||||
|
||||
# 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_KVM_TRACE=y
|
||||
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_BAY=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_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_OLD_MCE is not set
|
||||
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
|
||||
414
config-x86_64-generic
Normal file
414
config-x86_64-generic
Normal file
|
|
@ -0,0 +1,414 @@
|
|||
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_X86_CPU_DEBUG is not set
|
||||
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=256
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
CONFIG_X86_POWERNOW_K8_ACPI=y
|
||||
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_I2O=m
|
||||
CONFIG_I2O_BLOCK=m
|
||||
CONFIG_I2O_SCSI=m
|
||||
CONFIG_I2O_PROC=m
|
||||
CONFIG_I2O_CONFIG=y
|
||||
CONFIG_I2O_EXT_ADAPTEC=y
|
||||
CONFIG_I2O_EXT_ADAPTEC_DMA64=y
|
||||
CONFIG_I2O_CONFIG_OLD_IOCTL=y
|
||||
CONFIG_I2O_BUS=m
|
||||
|
||||
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_ACPI_CPUFREQ=m
|
||||
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
|
||||
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_BAY=m
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_EC=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_SYSTEM=y
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# Disable in F9.
|
||||
CONFIG_ACPI_PROC_EVENT=y
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
CONFIG_ACERHDF=m
|
||||
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_DELL_LAPTOP=m
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_HP_WMI=m
|
||||
CONFIG_DELL_WMI=m
|
||||
|
||||
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_BAY=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_HPET_RTC_IRQ 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_I810 is not set
|
||||
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_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_USB_HIDINPUT_POWERBOOK=y
|
||||
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_NMI_TIMEOUT=5
|
||||
|
||||
# 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_CC_STACKPROTECTOR_ALL is not set
|
||||
|
||||
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_KVM_TRACE=y
|
||||
|
||||
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_MEMTEST_BOOTPARAM=y
|
||||
CONFIG_MEMTEST_BOOTPARAM_VALUE=0
|
||||
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_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_NUMA_MIGRATE_IRQ_DESC=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
|
||||
9
crypto-aesni-kill-module_alias.patch
Normal file
9
crypto-aesni-kill-module_alias.patch
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
|
||||
index 49c552c..ae88694 100644
|
||||
--- a/arch/x86/crypto/aesni-intel_glue.c
|
||||
+++ b/arch/x86/crypto/aesni-intel_glue.c
|
||||
@@ -720,4 +720,3 @@ module_exit(aesni_exit);
|
||||
|
||||
MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized");
|
||||
MODULE_LICENSE("GPL");
|
||||
-MODULE_ALIAS("aes");
|
||||
8287
crystalhd-2.6.34-staging.patch
Normal file
8287
crystalhd-2.6.34-staging.patch
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,467 +0,0 @@
|
|||
packages:
|
||||
- name: modules-core
|
||||
depends-on: []
|
||||
- name: modules
|
||||
depends-on:
|
||||
- modules-core
|
||||
- name: modules-internal
|
||||
depends-on:
|
||||
- modules-core
|
||||
- modules
|
||||
- name: modules-extra
|
||||
depends-on:
|
||||
- modules-core
|
||||
- modules
|
||||
|
||||
|
||||
rules:
|
||||
- .*kunit.*: modules-internal
|
||||
exact_pkg: True
|
||||
- .*test[^/]*.ko: modules-internal
|
||||
|
||||
- arch/.*: modules-core
|
||||
- crypto/.*: modules-core
|
||||
|
||||
- drivers/accel/.*: modules-core
|
||||
- drivers/accessibility/.*: modules-core
|
||||
- drivers/acpi/video.*: modules
|
||||
- drivers/acpi/.*: modules-core
|
||||
- drivers/ata/.*: modules-core
|
||||
|
||||
- drivers/base/regmap/regmap-sdw.*: modules
|
||||
- drivers/base/.*: modules-core
|
||||
- drivers/block/floppy.*: modules-extra
|
||||
- drivers/block/rnbd.*: modules
|
||||
- drivers/block/.*: modules-core
|
||||
- drivers/bus/.*: modules-core
|
||||
|
||||
- drivers/cdx/.*: modules-core
|
||||
- drivers/char/mwave.*: modules
|
||||
- drivers/char/.*: modules-core
|
||||
- drivers/clk/.*: modules-core
|
||||
- drivers/counter/.*: modules-core
|
||||
- drivers/cpufreq/.*: modules-core
|
||||
- drivers/crypto/caam/.*: modules
|
||||
- drivers/crypto/cavium/.*: modules
|
||||
- drivers/crypto/chelsio/.*: modules
|
||||
- drivers/crypto/hisilicon/.*: modules
|
||||
- drivers/crypto/marvell/.*: modules
|
||||
- drivers/crypto/.*: modules-core
|
||||
- drivers/cxl/.*: modules-core
|
||||
|
||||
- drivers/dax/.*: modules-core
|
||||
- drivers/dca/.*: modules-core
|
||||
- drivers/devfreq/.*: modules-core
|
||||
- drivers/dma/.*: modules-core
|
||||
|
||||
- drivers/edac/.*: modules-core
|
||||
- drivers/extcon/.*: modules-core
|
||||
|
||||
- drivers/firmware/iscsi_ibft.*: modules
|
||||
- drivers/firmware/.*: modules-core
|
||||
- drivers/fsi/.*: modules-core
|
||||
|
||||
- drivers/gnss/.*: modules-core
|
||||
- drivers/gpio/gpio-dln2.*: modules-extra
|
||||
- drivers/gpio/gpio-ljca.*: modules
|
||||
- drivers/gpio/.*: modules-core
|
||||
- drivers/gpu/drm/display/drm_.*: modules-core
|
||||
- drivers/gpu/drm/drm.*: modules-core
|
||||
- drivers/gpu/drm/etnaviv/.*: modules-core
|
||||
- drivers/gpu/drm/gud/.*: modules-core
|
||||
- drivers/gpu/drm/hyperv/.*: modules-core
|
||||
- drivers/gpu/drm/imagination/.*: modules-core
|
||||
- drivers/gpu/drm/lima/.*: modules-core
|
||||
- drivers/gpu/drm/mxsfb/.*: modules-core
|
||||
- drivers/gpu/drm/panfrost/.*: modules-core
|
||||
- drivers/gpu/drm/qxl/.*: modules-core
|
||||
- drivers/gpu/drm/scheduler/.*: modules-core
|
||||
- drivers/gpu/drm/solomon/.*: modules-core
|
||||
- drivers/gpu/drm/tidss/.*: modules-core
|
||||
- drivers/gpu/drm/tiny/.*: modules-core
|
||||
- drivers/gpu/drm/ttm/.*: modules-core
|
||||
- drivers/gpu/drm/udl/.*: modules-core
|
||||
- drivers/gpu/drm/v3d/.*: modules-core
|
||||
- drivers/gpu/drm/vgem/.*: modules-core
|
||||
- drivers/gpu/drm/virtio/.*: modules-core
|
||||
- drivers/gpu/drm/vkms/.*: modules-core
|
||||
- drivers/gpu/drm/vmwgfx/.*: modules-core
|
||||
- drivers/gpu/drm/xlnx/.*: modules-core
|
||||
- drivers/gpu/host1x/.*: modules-core
|
||||
|
||||
- drivers/hid/hid-asus.*: modules
|
||||
- drivers/hid/hid-nintendo.*: modules
|
||||
- drivers/hid/hid-picolcd.*: modules
|
||||
- drivers/hid/hid-playstation.*: modules
|
||||
- drivers/hid/surface-hid.*: modules
|
||||
- drivers/hid/hid-prodikeys.*: modules
|
||||
- drivers/hid/.*: modules-core
|
||||
- drivers/hte/.*: modules-core
|
||||
- drivers/hv/.*: modules-core
|
||||
- drivers/hwmon/asus_wmi_sensors.*: modules
|
||||
- drivers/hwmon/dell-smm-hwmon.*: modules
|
||||
- drivers/hwmon/hp-wmi-sensors.*: modules
|
||||
- drivers/hwmon/intel-m10-bmc-hwmon.*: modules
|
||||
- drivers/hwmon/nct6775.*: modules
|
||||
- drivers/hwmon/.*: modules-core
|
||||
- drivers/hwspinlock/.*: modules-core
|
||||
- drivers/hwtracing/.*: modules-core
|
||||
|
||||
- drivers/i2c/busses/i2c-dln2.*: modules-extra
|
||||
- drivers/i2c/busses/i2c-ljca.*: modules
|
||||
- drivers/i2c/.*: modules-core
|
||||
- drivers/i3c/.*: modules-core
|
||||
- drivers/iio/adc/dln2-adc.*: modules-extra
|
||||
- drivers/iio/accel/.*: modules
|
||||
- drivers/iio/common/cros_ec_sensors/.*: modules
|
||||
- drivers/iio/light/.*: modules
|
||||
- drivers/iio/pressure/.*: modules
|
||||
- drivers/iio/proximity/.*: modules
|
||||
- drivers/iio/.*: modules-core
|
||||
- drivers/input/gameport/.*: modules
|
||||
- drivers/input/joystick/.*: modules-extra
|
||||
- drivers/input/misc/pcspkr.*: modules-extra
|
||||
- drivers/input/tablet/.*: modules
|
||||
- drivers/input/touchscreen/.*: modules
|
||||
- drivers/input/.*: modules-core
|
||||
- drivers/interconnect/.*: modules-core
|
||||
- drivers/iommu/.*: modules-core
|
||||
- drivers/irqchip/.*: modules-core
|
||||
|
||||
- drivers/mailbox/.*: modules-core
|
||||
- drivers/md/.*: modules-core
|
||||
- drivers/memory/dfl-emif.*: modules
|
||||
- drivers/memory/.*: modules-core
|
||||
- drivers/message/fusion/mptctl.*: modules-extra
|
||||
- drivers/message/fusion/mptfc.*: modules-extra
|
||||
- drivers/message/fusion/.*: modules
|
||||
- drivers/message/.*: modules-core
|
||||
- drivers/mfd/dln2.*: modules-extra
|
||||
- drivers/misc/.*: modules-core
|
||||
- drivers/mux/.*: modules-core
|
||||
|
||||
- drivers/net/amt.ko: modules-core
|
||||
- drivers/net/bareudp.ko: modules-core
|
||||
- drivers/net/bonding/.*: modules-core
|
||||
- drivers/net/can/slcan/slcan.*: modules-extra
|
||||
- drivers/net/can/usb/ems_usb.*: modules-extra
|
||||
- drivers/net/can/vcan.*: modules-extra
|
||||
- drivers/net/dummy.ko: modules-core
|
||||
- drivers/net/eql.ko: modules-core
|
||||
|
||||
- drivers/net/ethernet/8390/.*: modules-core
|
||||
- drivers/net/ethernet/adi/.*: modules-core
|
||||
- drivers/net/ethernet/agere/.*: modules-core
|
||||
- drivers/net/ethernet/altera/.*: modules-core
|
||||
- drivers/net/ethernet/amazon/.*: modules-core
|
||||
- drivers/net/ethernet/amd/.*: modules-core
|
||||
- drivers/net/ethernet/apm/.*: modules-core
|
||||
- drivers/net/ethernet/asix/.*: modules-core
|
||||
- drivers/net/ethernet/brocade/.*: modules-core
|
||||
- drivers/net/ethernet/cavium/.*: modules-core
|
||||
- drivers/net/ethernet/dnet.ko: modules-core
|
||||
- drivers/net/ethernet/engleder/.*: modules-core
|
||||
- drivers/net/ethernet/ethoc.ko: modules-core
|
||||
- drivers/net/ethernet/fealnx.ko: modules-core
|
||||
- drivers/net/ethernet/freescale/.*: modules-core
|
||||
- drivers/net/ethernet/fungible/.*: modules-core
|
||||
- drivers/net/ethernet/google/.*: modules-core
|
||||
- drivers/net/ethernet/hisilicon/.*: modules-core
|
||||
- drivers/net/ethernet/ibm/.*: modules-core
|
||||
- drivers/net/ethernet/intel/.*: modules-core
|
||||
- drivers/net/ethernet/jme.ko: modules-core
|
||||
- drivers/net/ethernet/litex/.*: modules-core
|
||||
- drivers/net/ethernet/mellanox/.*: modules-core
|
||||
- drivers/net/ethernet/microsoft/.*: modules-core
|
||||
- drivers/net/ethernet/natsemi/.*: modules-core
|
||||
- drivers/net/ethernet/netronome/.*: modules-core
|
||||
- drivers/net/ethernet/pensando/.*: modules-core
|
||||
- drivers/net/ethernet/rocker/rocker.*: modules-internal
|
||||
- drivers/net/ethernet/qualcomm/.*: modules-core
|
||||
- drivers/net/ethernet/realtek/.*: modules-core
|
||||
- drivers/net/ethernet/renesas/.*: modules-core
|
||||
- drivers/net/ethernet/socionext/.*: modules-core
|
||||
- drivers/net/ethernet/vertexcom/.*: modules-core
|
||||
- drivers/net/ethernet/wangxun/.*: modules-core
|
||||
- drivers/net/ethernet/xilinx/.*: modules-core
|
||||
|
||||
- drivers/net/fjes/.*: modules-core
|
||||
- drivers/net/geneve.ko: modules-core
|
||||
- drivers/net/gtp.ko: modules-core
|
||||
- drivers/net/hamradio/.*: modules-extra
|
||||
- drivers/net/hyperv/.*: modules-core
|
||||
- drivers/net/ifb.ko: modules-core
|
||||
- drivers/net/ipa/.*: modules-core
|
||||
- drivers/net/ipvlan/.*: modules-core
|
||||
- drivers/net/macsec.ko: modules-core
|
||||
- drivers/net/macvlan.ko: modules-core
|
||||
- drivers/net/macvtap.ko: modules-core
|
||||
- drivers/net/mctp/.*: modules-core
|
||||
- drivers/net/mdio.*: modules-core
|
||||
- drivers/net/mhi_net.ko: modules-core
|
||||
- drivers/net/mii.ko: modules-core
|
||||
- drivers/net/net_failover.ko: modules-core
|
||||
- drivers/net/netdevsim/netdevsim.*: modules-internal
|
||||
- drivers/net/netconsole.ko: modules-core
|
||||
- drivers/net/nlmon.ko: modules-core
|
||||
- drivers/net/pcs/.*: modules-core
|
||||
- drivers/net/phy/.*: modules-core
|
||||
- drivers/net/rionet.ko: modules-core
|
||||
- drivers/net/slip/slip.*: modules-extra
|
||||
- drivers/net/sungem_phy.ko: modules-core
|
||||
- drivers/net/tap.ko: modules-core
|
||||
- drivers/net/team/.*: modules-core
|
||||
- drivers/net/thunderbolt/.*: modules-core
|
||||
- drivers/net/tun.ko: modules-core
|
||||
- drivers/net/veth.ko: modules-core
|
||||
- drivers/net/virtio_net.ko: modules-core
|
||||
- drivers/net/vmxnet3/.*: modules-core
|
||||
- drivers/net/vrf.ko: modules-core
|
||||
- drivers/net/vsockmon.ko: modules-core
|
||||
- drivers/net/vxlan/.*: modules-core
|
||||
- drivers/net/wireguard/.*: modules-core
|
||||
- drivers/net/wireless/virtual/mac80211_hwsim.*: modules-internal
|
||||
- drivers/net/wwan/wwan_hwsim.*: modules-internal
|
||||
- drivers/net/wwan/.*: modules-core
|
||||
- drivers/net/xen.*: modules-core
|
||||
|
||||
- drivers/nvdimm/.*: modules-core
|
||||
- drivers/nvme/host/nvme-rdma.*: modules
|
||||
- drivers/nvme/target/nvmet-rdma.*: modules
|
||||
- drivers/nvme/.*: modules-core
|
||||
- drivers/nvmem/nvmem_u-boot-env.*: modules
|
||||
- drivers/nvmem/.*: modules-core
|
||||
|
||||
- drivers/parport/parport_serial.*: modules
|
||||
- drivers/parport/.*: modules-core
|
||||
- drivers/pci/pcie/aer_inject.*: modules-extra
|
||||
- drivers/pci/.*: modules-core
|
||||
- drivers/perf/.*: modules-core
|
||||
- drivers/phy/.*: modules-core
|
||||
- drivers/pinctrl/.*: modules-core
|
||||
- drivers/pmdomain/.*: modules-core
|
||||
- drivers/powercap/intel_rapl_tpmi.*: modules
|
||||
- drivers/powercap/.*: modules-core
|
||||
- drivers/pps/.*: modules-core
|
||||
- drivers/ptp/ptp_mock.*: modules-internal
|
||||
- drivers/ptp/ptp_dfl_tod.*: modules
|
||||
- drivers/ptp/.*: modules-core
|
||||
- drivers/pwm/.*: modules-core
|
||||
|
||||
- drivers/rapidio/.*: modules-core
|
||||
- drivers/regulator/arizona-micsupp.*: modules
|
||||
- drivers/regulator/.*: modules-core
|
||||
- drivers/remoteproc/.*: modules-core
|
||||
- drivers/reset/.*: modules-core
|
||||
- drivers/rpmsg/.*: modules-core
|
||||
- drivers/rtc/.*: modules-core
|
||||
|
||||
- drivers/s390/.*: modules-core
|
||||
|
||||
- drivers/scsi/3w.*: modules-core
|
||||
- drivers/scsi/BusLogic.ko: modules-core
|
||||
- drivers/scsi/a100u2w.ko: modules-core
|
||||
- drivers/scsi/advansys.ko: modules-core
|
||||
- drivers/scsi/am53c974.ko: modules-core
|
||||
- drivers/scsi/arcmsr.*: modules-core
|
||||
- drivers/scsi/atp870u.ko: modules-core
|
||||
- drivers/scsi/ch.ko: modules-core
|
||||
- drivers/scsi/cxlflash/.*: modules-core
|
||||
- drivers/scsi/dc395x.ko: modules-core
|
||||
- drivers/scsi/device_handler/.*: modules-core
|
||||
- drivers/scsi/dmx3191d.ko: modules-core
|
||||
- drivers/scsi/elx/.*: modules-core
|
||||
- drivers/scsi/esp_scsi.ko: modules-core
|
||||
- drivers/scsi/fdomain.*: modules-core
|
||||
- drivers/scsi/hpsa.ko: modules-core
|
||||
- drivers/scsi/hptiop.ko: modules-core
|
||||
- drivers/scsi/hv_storvsc.ko: modules-core
|
||||
- drivers/scsi/ibmvscsi.*: modules-core
|
||||
- drivers/scsi/initio.ko: modules-core
|
||||
- drivers/scsi/ipr.ko: modules-core
|
||||
- drivers/scsi/ips.ko: modules-core
|
||||
- drivers/scsi/iscsi_tcp.ko: modules-core
|
||||
- drivers/scsi/libfc/.*: modules-core
|
||||
- drivers/scsi/libiscsi.*: modules-core
|
||||
- drivers/scsi/mpi3mr/.*: modules-core
|
||||
- drivers/scsi/mvumi.ko: modules-core
|
||||
- drivers/scsi/myrb.ko: modules-core
|
||||
- drivers/scsi/myrs.ko: modules-core
|
||||
- drivers/scsi/raid_class.ko: modules-core
|
||||
- drivers/scsi/scsi_debug.ko: modules-core
|
||||
- drivers/scsi/scsi_transport_.*: modules-core
|
||||
- drivers/scsi/ses.ko: modules-core
|
||||
- drivers/scsi/smartpqi/.*: modules-core
|
||||
- drivers/scsi/snic/.*: modules-core
|
||||
- drivers/scsi/st.ko: modules-core
|
||||
- drivers/scsi/stex.ko: modules-core
|
||||
- drivers/scsi/virtio_scsi.ko: modules-core
|
||||
- drivers/scsi/vmw_pvscsi.ko: modules-core
|
||||
- drivers/scsi/wd719x.ko: modules-core
|
||||
- drivers/scsi/xen-scsifront.ko: modules-core
|
||||
|
||||
- drivers/slimbus/.*: modules-core
|
||||
- drivers/soc/.*: modules-core
|
||||
- drivers/spi/spi-altera-dfl.*: modules
|
||||
- drivers/spi/spi-dln2.*: modules-extra
|
||||
- drivers/spi/spi-ljca.*: modules
|
||||
- drivers/spi/.*: modules-core
|
||||
- drivers/spmi/.*: modules-core
|
||||
|
||||
- drivers/target/iscsi/cxgbit/cxgbit.*: modules
|
||||
- drivers/target/sbp/sbp_target.*: modules
|
||||
- drivers/target/target_core_user.*: modules
|
||||
- drivers/target/.*: modules-core
|
||||
- drivers/tee/.*: modules-core
|
||||
- drivers/thermal/intel/int340x_thermal/int3406_thermal.*: modules
|
||||
- drivers/thermal/.*: modules-core
|
||||
- drivers/thunderbolt/.*: modules-core
|
||||
|
||||
- drivers/ufs/.*: modules-core
|
||||
- drivers/usb/atm/.*: modules
|
||||
- drivers/usb/gadget/function/usb_f_midi2.*: modules
|
||||
- drivers/usb/image/.*: modules
|
||||
- drivers/usb/misc/trancevibrator.*: modules-extra
|
||||
- drivers/usb/misc/.*: modules
|
||||
- drivers/usb/serial/.*: modules
|
||||
- drivers/usb/typec/mux/nb7vpq904m.*: modules
|
||||
- drivers/usb/usbip/.*: modules-extra
|
||||
- drivers/usb/.*: modules-core
|
||||
|
||||
- drivers/vdpa/mlx5/mlx5_vdpa.*: modules
|
||||
- drivers/vdpa/pds/pds_vdpa.*: modules
|
||||
- drivers/vdpa/.*: modules-core
|
||||
- drivers/vfio/pci/mlx5/mlx5-vfio-pci.*: modules
|
||||
- drivers/vfio/pci/pds/pds-vfio-pc.*: modules
|
||||
- drivers/vfio/.*: modules-core
|
||||
- drivers/vhost/.*: modules-core
|
||||
- drivers/video/backlight/apple_bl.*: modules
|
||||
- drivers/video/.*: modules-core
|
||||
- drivers/virt/.*: modules-core
|
||||
- drivers/virtio/.*: modules-core
|
||||
|
||||
- drivers/watchdog/iTCO_wdt.*: modules
|
||||
- drivers/watchdog/.*: modules-core
|
||||
|
||||
- drivers/xen/.*: modules-core
|
||||
|
||||
- drivers/w1/masters/ds2482.*: modules-extra
|
||||
- drivers/w1/masters/ds2490.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2408.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2423.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2431.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2433.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2780.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2781.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds28e04.*: modules-extra
|
||||
- drivers/w1/slaves/w1_smem.*: modules-extra
|
||||
- drivers/w1/slaves/w1_therm.*: modules-extra
|
||||
|
||||
- fs/9p/.*: modules-core
|
||||
- fs/afs/.*: modules-core
|
||||
- fs/affs/affs.*: modules-extra
|
||||
- fs/bcachefs/.*: modules-core
|
||||
- fs/befs/befs.*: modules-extra
|
||||
- fs/binfmt_misc.ko: modules-core
|
||||
- fs/cachefiles/.*: modules-core
|
||||
- fs/ceph/.*: modules-core
|
||||
- fs/coda/coda.*: modules-extra
|
||||
- fs/dlm/.*: modules-extra
|
||||
- fs/erofs/.*: modules-core
|
||||
- fs/exfat/.*: modules-core
|
||||
- fs/f2fs/.*: modules-core
|
||||
- fs/fat/.*: modules-core
|
||||
- fs/fuse/cuse.*: modules-extra
|
||||
- fs/fuse/.*: modules-core
|
||||
- fs/gfs2/.*: modules-extra
|
||||
- fs/isofs/.*: modules-core
|
||||
- fs/lockd/.*: modules-core
|
||||
- fs/netfs/.*: modules-core
|
||||
- fs/nfs.*: modules-core
|
||||
- fs/nilfs2/nilfs2.*: modules-extra
|
||||
- fs/nls/.*: modules-core
|
||||
- fs/ntfs3/.*: modules-core
|
||||
- fs/ocfs2/.*: modules-extra
|
||||
- fs/orangefs/.*: modules-core
|
||||
- fs/overlayfs/.*: modules-core
|
||||
- fs/pstore/.*: modules-core
|
||||
- fs/smb/.*: modules-core
|
||||
- fs/squashfs/.*: modules-core
|
||||
- fs/sysv/.*: modules-extra
|
||||
- fs/ubifs/.*: modules-extra
|
||||
- fs/udf/.*: modules-core
|
||||
- fs/ufs/.*: modules-extra
|
||||
- fs/vboxsf/.*: modules-core
|
||||
- fs/xfs/.*: modules-core
|
||||
- fs/zonefs/.*: modules-core
|
||||
|
||||
- kernel/locking/locktorture.*: modules-internal
|
||||
- kernel/rcu/rcuscale.*: modules-internal
|
||||
- kernel/rcu/rcutorture.*: modules-internal
|
||||
- kernel/rcu/refscale.*: modules-internal
|
||||
- kernel/scftorture.*: modules-internal
|
||||
- kernel/torture.*: modules-internal
|
||||
- kernel/.*: modules-core
|
||||
|
||||
- lib/.*: modules-core
|
||||
|
||||
- net/802/.*: modules-core
|
||||
- net/8021q/.*: modules-core
|
||||
- net/9p/9pnet_rdma.ko: modules
|
||||
- net/9p/.*: modules-core
|
||||
- net/appletalk/appletalk.*: modules-extra
|
||||
- net/atm/br2684.*: modules-extra
|
||||
- net/atm/clip.*: modules-extra
|
||||
- net/atm/lec.*: modules-extra
|
||||
- net/atm/pppoatm.*: modules-extra
|
||||
- net/ax25/ax25.*: modules-extra
|
||||
- net/batman-adv/batman-adv.*: modules-extra
|
||||
- net/bridge/.*: modules-core
|
||||
- net/ceph/.*: modules-core
|
||||
- net/core/pktgen.*: modules-internal
|
||||
- net/core/.*: modules-core
|
||||
- net/dns_resolver/.*: modules-core
|
||||
- net/hsr/.*: modules-core
|
||||
- net/ife/.*: modules-core
|
||||
- net/ipv4/tcp_bic.*: modules-extra
|
||||
- net/ipv4/tcp_highspeed.*: modules-extra
|
||||
- net/ipv4/tcp_htcp.*: modules-extra
|
||||
- net/ipv4/tcp_hybla.*: modules-extra
|
||||
- net/ipv4/tcp_illinois.*: modules-extra
|
||||
- net/ipv4/tcp_lp.*: modules-extra
|
||||
- net/ipv4/tcp_scalable.*: modules-extra
|
||||
- net/ipv4/tcp_vegas.*: modules-extra
|
||||
- net/ipv4/tcp_veno.*: modules-extra
|
||||
- net/ipv4/tcp_westwood.*: modules-extra
|
||||
- net/ipv4/tcp_yeah.*: modules-extra
|
||||
- net/ipv4/.*: modules-core
|
||||
- net/ipv6/.*: modules-core
|
||||
- net/iucv/.*: modules-core
|
||||
- net/kcm/.*: modules-core
|
||||
- net/key/.*: modules-core
|
||||
- net/l2tp/l2tp_debugfs.*: modules-extra
|
||||
- net/l2tp/l2tp_eth.*: modules-extra
|
||||
- net/l2tp/l2tp_netlink.*: modules-extra
|
||||
- net/l2tp/l2tp_ppp.*: modules-extra
|
||||
- net/llc/.*: modules-core
|
||||
- net/netfilter/.*: modules-core
|
||||
- net/netrom/netrom.*: modules-extra
|
||||
- net/nsh/.*: modules-core
|
||||
- net/openvswitch/.*: modules-core
|
||||
- net/psample/.*: modules-core
|
||||
- net/qrtr/.*: modules-core
|
||||
- net/rds/rds.*: modules-extra
|
||||
- net/rose/rose.*: modules-extra
|
||||
- net/rxrpc/.*: modules-core
|
||||
- net/sched/.*: modules-core
|
||||
- net/sunrpc/xprtrdma/rpcrdma.*: modules
|
||||
- net/sunrpc/.*: modules-core
|
||||
- net/tipc/.*: modules-core
|
||||
- net/tls/.*: modules-core
|
||||
- net/vmw_vsock/.*: modules-core
|
||||
- net/xdp/.*: modules-core
|
||||
- net/xfrm/.*: modules-core
|
||||
|
||||
- virt/.*: modules-core
|
||||
|
||||
- default: modules
|
||||
|
|
@ -1,486 +0,0 @@
|
|||
packages:
|
||||
- name: modules-core
|
||||
depends-on: []
|
||||
- name: modules
|
||||
depends-on:
|
||||
- modules-core
|
||||
- name: modules-internal
|
||||
depends-on:
|
||||
- modules-core
|
||||
- modules
|
||||
- name: modules-extra
|
||||
depends-on:
|
||||
- modules-core
|
||||
- modules
|
||||
- name: modules-partner
|
||||
depends-on:
|
||||
- modules-core
|
||||
- modules
|
||||
|
||||
rules:
|
||||
- .*kunit.*: modules-internal
|
||||
exact_pkg: True
|
||||
- .*test[^/]*.ko: modules-internal
|
||||
|
||||
- arch/.*: modules-core
|
||||
- block/t10-pi.ko: modules-core
|
||||
- crypto/.*: modules-core
|
||||
|
||||
- drivers/accel/.*: modules-core
|
||||
- drivers/accessibility/.*: modules-core
|
||||
- drivers/acpi/video.*: modules
|
||||
- drivers/acpi/.*: modules-core
|
||||
- drivers/ata/.*: modules-core
|
||||
|
||||
- drivers/base/regmap/regmap-sdw.*: modules
|
||||
- drivers/base/.*: modules-core
|
||||
- drivers/block/floppy.*: modules-extra
|
||||
- drivers/block/rnbd.*: modules
|
||||
- drivers/block/.*: modules-core
|
||||
- drivers/bus/.*: modules-core
|
||||
|
||||
- drivers/cdrom/.*: modules-core
|
||||
- drivers/cdx/.*: modules-core
|
||||
- drivers/char/mwave.*: modules
|
||||
- drivers/char/.*: modules-core
|
||||
- drivers/clk/.*: modules-core
|
||||
- drivers/counter/.*: modules-core
|
||||
- drivers/cpufreq/amd-pstate-ut.ko: modules-internal
|
||||
- drivers/cpufreq/.*: modules-core
|
||||
- drivers/crypto/caam/.*: modules
|
||||
- drivers/crypto/cavium/.*: modules
|
||||
- drivers/crypto/chelsio/.*: modules
|
||||
- drivers/crypto/hisilicon/.*: modules
|
||||
- drivers/crypto/marvell/.*: modules
|
||||
- drivers/crypto/.*: modules-core
|
||||
- drivers/cxl/.*: modules-core
|
||||
|
||||
- drivers/dax/.*: modules-core
|
||||
- drivers/dca/.*: modules-core
|
||||
- drivers/devfreq/.*: modules-core
|
||||
- drivers/dma/.*: modules-core
|
||||
|
||||
- drivers/edac/.*: modules-core
|
||||
- drivers/extcon/.*: modules-core
|
||||
|
||||
- drivers/firmware/iscsi_ibft.*: modules
|
||||
- drivers/firmware/.*: modules-core
|
||||
- drivers/fsi/.*: modules-core
|
||||
|
||||
- drivers/gnss/.*: modules-core
|
||||
- drivers/gpio/gpio-dln2.*: modules-extra
|
||||
- drivers/gpio/gpio-ljca.*: modules
|
||||
- drivers/gpio/.*: modules-core
|
||||
- drivers/gpu/drm/display/drm_.*: modules-core
|
||||
- drivers/gpu/drm/drm.*: modules-core
|
||||
- drivers/gpu/drm/etnaviv/.*: modules-core
|
||||
- drivers/gpu/drm/gud/.*: modules-core
|
||||
- drivers/gpu/drm/hyperv/.*: modules-core
|
||||
- drivers/gpu/drm/imagination/.*: modules-core
|
||||
- drivers/gpu/drm/lima/.*: modules-core
|
||||
- drivers/gpu/drm/mxsfb/.*: modules-core
|
||||
- drivers/gpu/drm/panfrost/.*: modules-core
|
||||
- drivers/gpu/drm/qxl/.*: modules-core
|
||||
- drivers/gpu/drm/scheduler/.*: modules-core
|
||||
- drivers/gpu/drm/solomon/.*: modules-core
|
||||
- drivers/gpu/drm/tidss/.*: modules-core
|
||||
- drivers/gpu/drm/tiny/.*: modules-core
|
||||
- drivers/gpu/drm/ttm/.*: modules-core
|
||||
- drivers/gpu/drm/udl/.*: modules-core
|
||||
- drivers/gpu/drm/v3d/.*: modules-core
|
||||
- drivers/gpu/drm/vgem/.*: modules-core
|
||||
- drivers/gpu/drm/virtio/.*: modules-core
|
||||
- drivers/gpu/drm/vkms/.*: modules-core
|
||||
- drivers/gpu/drm/vmwgfx/.*: modules-core
|
||||
- drivers/gpu/drm/xlnx/.*: modules-core
|
||||
- drivers/gpu/host1x/.*: modules-core
|
||||
|
||||
- drivers/hid/hid-asus.*: modules
|
||||
- drivers/hid/hid-nintendo.*: modules
|
||||
- drivers/hid/hid-picolcd.*: modules
|
||||
- drivers/hid/hid-playstation.*: modules
|
||||
- drivers/hid/surface-hid.*: modules
|
||||
- drivers/hid/hid-prodikeys.*: modules
|
||||
- drivers/hid/.*: modules-core
|
||||
- drivers/hte/.*: modules-core
|
||||
- drivers/hv/.*: modules-core
|
||||
- drivers/hwmon/asus_wmi_sensors.*: modules
|
||||
- drivers/hwmon/dell-smm-hwmon.*: modules
|
||||
- drivers/hwmon/hp-wmi-sensors.*: modules
|
||||
- drivers/hwmon/intel-m10-bmc-hwmon.*: modules
|
||||
- drivers/hwmon/nct6775.*: modules
|
||||
- drivers/hwmon/ntc_thermistor.*: modules
|
||||
- drivers/hwmon/.*: modules-core
|
||||
- drivers/hwspinlock/.*: modules-core
|
||||
- drivers/hwtracing/.*: modules-core
|
||||
|
||||
- drivers/i2c/busses/i2c-dln2.*: modules-extra
|
||||
- drivers/i2c/busses/i2c-ljca.*: modules
|
||||
- drivers/i2c/.*: modules-core
|
||||
- drivers/i3c/.*: modules-core
|
||||
- drivers/iio/adc/dln2-adc.*: modules-extra
|
||||
- drivers/input/gameport/.*: modules
|
||||
- drivers/input/joystick/.*: modules-extra
|
||||
- drivers/input/tablet/.*: modules
|
||||
- drivers/input/touchscreen/.*: modules
|
||||
- drivers/input/.*: modules-core
|
||||
- drivers/interconnect/.*: modules-core
|
||||
- drivers/iommu/.*: modules-core
|
||||
- drivers/irqchip/.*: modules-core
|
||||
|
||||
- drivers/mailbox/.*: modules-core
|
||||
- drivers/md/.*: modules-core
|
||||
- drivers/memory/dfl-emif.*: modules
|
||||
- drivers/memory/.*: modules-core
|
||||
- drivers/message/fusion/mptctl.*: modules-extra
|
||||
- drivers/message/fusion/mptfc.*: modules-extra
|
||||
- drivers/message/fusion/.*: modules
|
||||
- drivers/message/.*: modules-core
|
||||
- drivers/mfd/dln2.*: modules-extra
|
||||
- drivers/misc/.*: modules-core
|
||||
- drivers/mux/.*: modules-core
|
||||
|
||||
- drivers/net/amt.ko: modules-core
|
||||
- drivers/net/bareudp.ko: modules-core
|
||||
- drivers/net/bonding/.*: modules-core
|
||||
- drivers/net/can/slcan/slcan.*: modules-extra
|
||||
- drivers/net/can/usb/ems_usb.*: modules-extra
|
||||
- drivers/net/can/vcan.*: modules-extra
|
||||
- drivers/net/dummy.ko: modules-core
|
||||
- drivers/net/eql.ko: modules-core
|
||||
|
||||
- drivers/net/ethernet/8390/.*: modules-core
|
||||
- drivers/net/ethernet/adi/.*: modules-core
|
||||
- drivers/net/ethernet/agere/.*: modules-core
|
||||
- drivers/net/ethernet/altera/.*: modules-core
|
||||
- drivers/net/ethernet/amazon/.*: modules-core
|
||||
- drivers/net/ethernet/amd/.*: modules-core
|
||||
- drivers/net/ethernet/apm/.*: modules-core
|
||||
- drivers/net/ethernet/asix/.*: modules-core
|
||||
- drivers/net/ethernet/brocade/.*: modules-core
|
||||
- drivers/net/ethernet/cavium/.*: modules-core
|
||||
- drivers/net/ethernet/dnet.ko: modules-core
|
||||
- drivers/net/ethernet/engleder/.*: modules-core
|
||||
- drivers/net/ethernet/ethoc.ko: modules-core
|
||||
- drivers/net/ethernet/fealnx.ko: modules-core
|
||||
- drivers/net/ethernet/freescale/.*: modules-core
|
||||
- drivers/net/ethernet/fungible/.*: modules-core
|
||||
- drivers/net/ethernet/google/.*: modules-core
|
||||
- drivers/net/ethernet/hisilicon/.*: modules-core
|
||||
- drivers/net/ethernet/huawei/.*: modules-core
|
||||
- drivers/net/ethernet/ibm/.*: modules-core
|
||||
- drivers/net/ethernet/intel/.*: modules-core
|
||||
- drivers/net/ethernet/jme.ko: modules-core
|
||||
- drivers/net/ethernet/litex/.*: modules-core
|
||||
- drivers/net/ethernet/mellanox/.*: modules-core
|
||||
- drivers/net/ethernet/microsoft/.*: modules-core
|
||||
- drivers/net/ethernet/myricom/.*: modules-core
|
||||
- drivers/net/ethernet/natsemi/.*: modules-core
|
||||
- drivers/net/ethernet/netronome/.*: modules-core
|
||||
- drivers/net/ethernet/pensando/.*: modules-core
|
||||
- drivers/net/ethernet/rocker/rocker.*: modules-internal
|
||||
- drivers/net/ethernet/qualcomm/.*: modules-core
|
||||
- drivers/net/ethernet/realtek/.*: modules-core
|
||||
- drivers/net/ethernet/renesas/.*: modules-core
|
||||
- drivers/net/ethernet/socionext/.*: modules-core
|
||||
- drivers/net/ethernet/vertexcom/.*: modules-core
|
||||
- drivers/net/ethernet/wangxun/.*: modules-core
|
||||
- drivers/net/ethernet/xilinx/.*: modules-core
|
||||
|
||||
- drivers/net/fjes/.*: modules-core
|
||||
- drivers/net/geneve.ko: modules-core
|
||||
- drivers/net/gtp.ko: modules-core
|
||||
- drivers/net/hamradio/.*: modules-extra
|
||||
- drivers/net/hyperv/.*: modules-core
|
||||
- drivers/net/ifb.ko: modules-core
|
||||
- drivers/net/ipa/.*: modules-core
|
||||
- drivers/net/ipvlan/.*: modules-core
|
||||
- drivers/net/macsec.ko: modules-core
|
||||
- drivers/net/macvlan.ko: modules-core
|
||||
- drivers/net/macvtap.ko: modules-core
|
||||
- drivers/net/mctp/.*: modules-core
|
||||
- drivers/net/mdio.*: modules-core
|
||||
- drivers/net/mhi_net.ko: modules-core
|
||||
- drivers/net/mii.ko: modules-core
|
||||
- drivers/net/net_failover.ko: modules-core
|
||||
- drivers/net/netdevsim/netdevsim.*: modules-internal
|
||||
- drivers/net/netconsole.ko: modules-core
|
||||
- drivers/net/nlmon.ko: modules-core
|
||||
- drivers/net/pcs/.*: modules-core
|
||||
- drivers/net/phy/.*: modules-core
|
||||
- drivers/net/rionet.ko: modules-core
|
||||
- drivers/net/slip/slip.*: modules-extra
|
||||
- drivers/net/sungem_phy.ko: modules-core
|
||||
- drivers/net/tap.ko: modules-core
|
||||
- drivers/net/team/.*: modules-core
|
||||
- drivers/net/thunderbolt/.*: modules-core
|
||||
- drivers/net/tun.ko: modules-core
|
||||
- drivers/net/veth.ko: modules-core
|
||||
- drivers/net/virtio_net.ko: modules-core
|
||||
- drivers/net/vmxnet3/.*: modules-core
|
||||
- drivers/net/vrf.ko: modules-core
|
||||
- drivers/net/vsockmon.ko: modules-core
|
||||
- drivers/net/vxlan/.*: modules-core
|
||||
- drivers/net/wan/hdlc.*: modules-core
|
||||
- drivers/net/wireguard/.*: modules-core
|
||||
- drivers/net/wireless/virtual/mac80211_hwsim.*: modules-internal
|
||||
- drivers/net/wwan/wwan_hwsim.*: modules-internal
|
||||
- drivers/net/wwan/.*: modules-core
|
||||
- drivers/net/xen.*: modules-core
|
||||
|
||||
- drivers/nvdimm/.*: modules-core
|
||||
- drivers/nvme/host/nvme-rdma.*: modules
|
||||
- drivers/nvme/target/nvmet-rdma.*: modules
|
||||
- drivers/nvme/.*: modules-core
|
||||
- drivers/nvmem/nvmem_u-boot-env.*: modules
|
||||
- drivers/nvmem/.*: modules-core
|
||||
|
||||
- drivers/parport/parport_serial.*: modules
|
||||
- drivers/parport/.*: modules-core
|
||||
- drivers/pci/pcie/aer_inject.*: modules-extra
|
||||
- drivers/pci/.*: modules-core
|
||||
- drivers/perf/.*: modules-core
|
||||
- drivers/phy/.*: modules-core
|
||||
- drivers/pinctrl/.*: modules-core
|
||||
- drivers/platform/x86/intel/intel_vsec.*: modules-core
|
||||
- drivers/pmdomain/.*: modules-core
|
||||
- drivers/powercap/intel_rapl_tpmi.*: modules
|
||||
- drivers/powercap/.*: modules-core
|
||||
- drivers/pps/.*: modules-core
|
||||
- drivers/ptp/ptp_mock.*: modules-internal
|
||||
- drivers/ptp/ptp_dfl_tod.*: modules
|
||||
- drivers/ptp/.*: modules-core
|
||||
- drivers/pwm/.*: modules-core
|
||||
|
||||
- drivers/rapidio/.*: modules-core
|
||||
- drivers/regulator/arizona-micsupp.*: modules
|
||||
- drivers/regulator/.*: modules-core
|
||||
- drivers/remoteproc/.*: modules-core
|
||||
- drivers/reset/.*: modules-core
|
||||
- drivers/rpmsg/.*: modules-core
|
||||
- drivers/rtc/.*: modules-core
|
||||
|
||||
- drivers/s390/net/ism.*: modules
|
||||
- drivers/s390/.*: modules-core
|
||||
|
||||
- drivers/scsi/3w.*: modules-core
|
||||
- drivers/scsi/BusLogic.ko: modules-core
|
||||
- drivers/scsi/a100u2w.ko: modules-core
|
||||
- drivers/scsi/advansys.ko: modules-core
|
||||
- drivers/scsi/am53c974.ko: modules-core
|
||||
- drivers/scsi/arcmsr.*: modules-core
|
||||
- drivers/scsi/atp870u.ko: modules-core
|
||||
- drivers/scsi/ch.ko: modules-core
|
||||
- drivers/scsi/cxlflash/.*: modules-core
|
||||
- drivers/scsi/dc395x.ko: modules-core
|
||||
- drivers/scsi/device_handler/.*: modules-core
|
||||
- drivers/scsi/dmx3191d.ko: modules-core
|
||||
- drivers/scsi/elx/.*: modules-core
|
||||
- drivers/scsi/esp_scsi.ko: modules-core
|
||||
- drivers/scsi/fdomain.*: modules-core
|
||||
- drivers/scsi/hpsa.ko: modules-core
|
||||
- drivers/scsi/hptiop.ko: modules-core
|
||||
- drivers/scsi/hv_storvsc.ko: modules-core
|
||||
- drivers/scsi/ibmvscsi.*: modules-core
|
||||
- drivers/scsi/initio.ko: modules-core
|
||||
- drivers/scsi/ipr.ko: modules-core
|
||||
- drivers/scsi/ips.ko: modules-core
|
||||
- drivers/scsi/iscsi_tcp.ko: modules-core
|
||||
- drivers/scsi/libfc/.*: modules-core
|
||||
- drivers/scsi/libiscsi.*: modules-core
|
||||
- drivers/scsi/mpi3mr/.*: modules-core
|
||||
- drivers/scsi/mvumi.ko: modules-core
|
||||
- drivers/scsi/myrb.ko: modules-core
|
||||
- drivers/scsi/myrs.ko: modules-core
|
||||
- drivers/scsi/raid_class.ko: modules-core
|
||||
- drivers/scsi/scsi_debug.ko: modules-core
|
||||
- drivers/scsi/scsi_transport_.*: modules-core
|
||||
- drivers/scsi/sd_mod.ko: modules-core
|
||||
- drivers/scsi/ses.ko: modules-core
|
||||
- drivers/scsi/sg.ko: modules-core
|
||||
- drivers/scsi/smartpqi/.*: modules-core
|
||||
- drivers/scsi/snic/.*: modules-core
|
||||
- drivers/scsi/sr_mod.ko: modules-core
|
||||
- drivers/scsi/st.ko: modules-core
|
||||
- drivers/scsi/stex.ko: modules-core
|
||||
- drivers/scsi/virtio_scsi.ko: modules-core
|
||||
- drivers/scsi/vmw_pvscsi.ko: modules-core
|
||||
- drivers/scsi/wd719x.ko: modules-core
|
||||
- drivers/scsi/xen-scsifront.ko: modules-core
|
||||
|
||||
- drivers/slimbus/.*: modules-core
|
||||
- drivers/soc/.*: modules-core
|
||||
- drivers/spi/spi-altera-dfl.*: modules
|
||||
- drivers/spi/spi-dln2.*: modules-extra
|
||||
- drivers/spi/spi-ljca.*: modules
|
||||
- drivers/spi/.*: modules-core
|
||||
- drivers/spmi/.*: modules-core
|
||||
|
||||
- drivers/target/iscsi/cxgbit/cxgbit.*: modules
|
||||
- drivers/target/sbp/sbp_target.*: modules
|
||||
- drivers/target/target_core_user.*: modules
|
||||
- drivers/target/.*: modules-core
|
||||
- drivers/tee/.*: modules-core
|
||||
- drivers/thermal/intel/int340x_thermal/int3406_thermal.*: modules
|
||||
- drivers/thermal/.*: modules-core
|
||||
- drivers/thunderbolt/.*: modules-core
|
||||
|
||||
- drivers/ufs/.*: modules-core
|
||||
- drivers/usb/atm/.*: modules
|
||||
- drivers/usb/gadget/function/usb_f_midi2.*: modules
|
||||
- drivers/usb/image/.*: modules
|
||||
- drivers/usb/misc/trancevibrator.*: modules-extra
|
||||
- drivers/usb/misc/.*: modules
|
||||
- drivers/usb/serial/.*: modules
|
||||
- drivers/usb/typec/mux/nb7vpq904m.*: modules
|
||||
- drivers/usb/usbip/.*: modules-internal
|
||||
- drivers/usb/.*: modules-core
|
||||
|
||||
- drivers/vdpa/mlx5/mlx5_vdpa.*: modules
|
||||
- drivers/vdpa/pds/pds_vdpa.*: modules
|
||||
- drivers/vdpa/.*: modules-core
|
||||
- drivers/vfio/pci/mlx5/mlx5-vfio-pci.*: modules
|
||||
- drivers/vfio/pci/pds/pds-vfio-pc.*: modules
|
||||
- drivers/vfio/.*: modules-core
|
||||
- drivers/vhost/.*: modules-core
|
||||
- drivers/video/backlight/apple_bl.*: modules
|
||||
- drivers/video/.*: modules-core
|
||||
- drivers/virt/.*: modules-core
|
||||
- drivers/virtio/.*: modules-core
|
||||
|
||||
- drivers/watchdog/.*: modules-core
|
||||
|
||||
- drivers/xen/.*: modules-core
|
||||
|
||||
- drivers/w1/masters/ds2482.*: modules-extra
|
||||
- drivers/w1/masters/ds2490.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2408.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2423.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2431.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2433.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2780.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds2781.*: modules-extra
|
||||
- drivers/w1/slaves/w1_ds28e04.*: modules-extra
|
||||
- drivers/w1/slaves/w1_smem.*: modules-extra
|
||||
- drivers/w1/slaves/w1_therm.*: modules-extra
|
||||
|
||||
- fs/9p/.*: modules-core
|
||||
- fs/afs/.*: modules-partner
|
||||
- fs/affs/affs.*: modules-extra
|
||||
- fs/bcachefs/.*: modules-core
|
||||
- fs/befs/befs.*: modules-extra
|
||||
- fs/binfmt_misc.ko: modules-core
|
||||
- fs/cachefiles/.*: modules-core
|
||||
- fs/ceph/.*: modules-core
|
||||
- fs/coda/coda.*: modules-extra
|
||||
- fs/dlm/.*: modules-core
|
||||
- fs/erofs/.*: modules-core
|
||||
- fs/exfat/.*: modules-core
|
||||
- fs/ext4/.*: modules-core
|
||||
- fs/f2fs/.*: modules-core
|
||||
- fs/fat/.*: modules-core
|
||||
- fs/fuse/cuse.*: modules-extra
|
||||
- fs/fuse/.*: modules-core
|
||||
- fs/gfs2/.*: modules-core
|
||||
- fs/isofs/.*: modules-core
|
||||
- fs/jbd2/.*: modules-core
|
||||
- fs/lockd/.*: modules-core
|
||||
- fs/mbcache.ko: modules-core
|
||||
- fs/netfs/.*: modules-core
|
||||
- fs/nfs.*: modules-core
|
||||
- fs/nilfs2/nilfs2.*: modules-extra
|
||||
- fs/nls/.*: modules-core
|
||||
- fs/ntfs3/.*: modules-core
|
||||
- fs/ocfs2/.*: modules-extra
|
||||
- fs/orangefs/.*: modules-core
|
||||
- fs/overlayfs/.*: modules-core
|
||||
- fs/pstore/.*: modules-core
|
||||
- fs/sysv/.*: modules-extra
|
||||
- fs/ubifs/.*: modules-extra
|
||||
- fs/udf/.*: modules-core
|
||||
- fs/ufs/.*: modules-extra
|
||||
- fs/vboxsf/.*: modules-core
|
||||
- fs/xfs/.*: modules-core
|
||||
- fs/zonefs/.*: modules-core
|
||||
|
||||
- kernel/locking/locktorture.*: modules-internal
|
||||
- kernel/rcu/rcuscale.*: modules-internal
|
||||
- kernel/rcu/rcutorture.*: modules-internal
|
||||
- kernel/rcu/refscale.*: modules-internal
|
||||
- kernel/scftorture.*: modules-internal
|
||||
- kernel/torture.*: modules-internal
|
||||
- kernel/.*: modules-core
|
||||
|
||||
- lib/.*: modules-core
|
||||
|
||||
- mm/zsmalloc.ko: modules-core
|
||||
|
||||
- net/802/.*: modules-core
|
||||
- net/8021q/.*: modules-core
|
||||
- net/9p/9pnet_rdma.ko: modules
|
||||
- net/9p/.*: modules-core
|
||||
- net/appletalk/appletalk.*: modules-extra
|
||||
- net/atm/br2684.*: modules-extra
|
||||
- net/atm/clip.*: modules-extra
|
||||
- net/atm/lec.*: modules-extra
|
||||
- net/atm/pppoatm.*: modules-extra
|
||||
- net/ax25/ax25.*: modules-extra
|
||||
- net/batman-adv/batman-adv.*: modules-extra
|
||||
- net/bridge/br_netfilter.*: modules-extra
|
||||
- net/bridge/netfilter/ebt.*: modules-extra
|
||||
- net/bridge/.*: modules-core
|
||||
- net/ceph/.*: modules-core
|
||||
- net/core/pktgen.*: modules-internal
|
||||
- net/core/.*: modules-core
|
||||
- net/dns_resolver/.*: modules-core
|
||||
- net/hsr/.*: modules-core
|
||||
- net/ife/.*: modules-core
|
||||
- net/ipv4/netfilter/arp.*: modules-extra
|
||||
- net/ipv4/netfilter/ip[_t].*: modules-extra
|
||||
- net/ipv4/tcp_bic.*: modules-extra
|
||||
- net/ipv4/tcp_highspeed.*: modules-extra
|
||||
- net/ipv4/tcp_htcp.*: modules-extra
|
||||
- net/ipv4/tcp_hybla.*: modules-extra
|
||||
- net/ipv4/tcp_illinois.*: modules-extra
|
||||
- net/ipv4/tcp_lp.*: modules-extra
|
||||
- net/ipv4/tcp_scalable.*: modules-extra
|
||||
- net/ipv4/tcp_vegas.*: modules-extra
|
||||
- net/ipv4/tcp_veno.*: modules-extra
|
||||
- net/ipv4/tcp_westwood.*: modules-extra
|
||||
- net/ipv4/tcp_yeah.*: modules-extra
|
||||
- net/ipv4/.*: modules-core
|
||||
- net/ipv6/netfilter/ebt.*: modules-extra
|
||||
- net/ipv6/netfilter/ip6[_t].*: modules-extra
|
||||
- net/ipv6/.*: modules-core
|
||||
- net/iucv/.*: modules-core
|
||||
- net/kcm/.*: modules-core
|
||||
- net/key/.*: modules-core
|
||||
- net/l2tp/.*: modules-extra
|
||||
- net/llc/.*: modules-core
|
||||
- net/netfilter/ipset/.*: modules-extra
|
||||
- net/netfilter/nft_compat.*: modules-extra
|
||||
- net/netfilter/xt_.*: modules-extra
|
||||
- net/netfilter/.*: modules-core
|
||||
- net/netrom/netrom.*: modules-extra
|
||||
- net/nsh/.*: modules-core
|
||||
- net/openvswitch/.*: modules-core
|
||||
- net/psample/.*: modules-core
|
||||
- net/qrtr/.*: modules-core
|
||||
- net/rds/rds.*: modules-extra
|
||||
- net/rose/rose.*: modules-extra
|
||||
- net/rxrpc/.*: modules-partner
|
||||
- net/sched/.*: modules-core
|
||||
- net/sctp/.*: modules-extra
|
||||
- net/sunrpc/xprtrdma/rpcrdma.*: modules
|
||||
- net/sunrpc/.*: modules-core
|
||||
- net/tipc/.*: modules-extra
|
||||
- net/tls/.*: modules-core
|
||||
- net/vmw_vsock/.*: modules-core
|
||||
- net/xdp/.*: modules-core
|
||||
- net/xfrm/.*: modules-core
|
||||
|
||||
- samples/.*: modules-internal
|
||||
|
||||
- virt/.*: modules-core
|
||||
|
||||
- default: modules
|
||||
18
die-floppy-die.patch
Normal file
18
die-floppy-die.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
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.
|
||||
|
||||
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
|
||||
index 91b7530..2ea84a6 100644
|
||||
--- a/drivers/block/floppy.c
|
||||
+++ b/drivers/block/floppy.c
|
||||
@@ -4631,7 +4631,7 @@ static const struct pnp_device_id floppy_pnpids[] = {
|
||||
{ "PNP0700", 0 },
|
||||
{ }
|
||||
};
|
||||
-MODULE_DEVICE_TABLE(pnp, floppy_pnpids);
|
||||
+/* MODULE_DEVICE_TABLE(pnp, floppy_pnpids); */
|
||||
|
||||
#else
|
||||
|
||||
58
disable-i8042-check-on-apple-mac.patch
Normal file
58
disable-i8042-check-on-apple-mac.patch
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
From d01268ff135052cd40c375c6b7ebadbee3281b4d Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed, 20 Jan 2010 18:23:13 +0000
|
||||
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 b54aee7..5e1e59c 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -1446,12 +1446,34 @@ 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)
|
||||
{
|
||||
int err;
|
||||
|
||||
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
|
||||
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
# generic + compressed please
|
||||
hostonly="no"
|
||||
compress="xz"
|
||||
|
||||
# VMs can't update microcode anyway
|
||||
early_microcode="no"
|
||||
|
||||
# modules: basics
|
||||
dracutmodules+=" dracut-systemd i18n shutdown "
|
||||
|
||||
# modules: storage support
|
||||
dracutmodules+=" dm lvm rootfs-block fs-lib "
|
||||
|
||||
# modules: tpm and crypto
|
||||
dracutmodules+=" crypt crypt-loop tpm2-tss systemd-pcrphase "
|
||||
|
||||
# dracut >= 102 separated systemd-cryptsetup into its own module
|
||||
CSMODULE=`dracut --list-modules --no-kernel | grep '^systemd-cryptsetup$'`
|
||||
dracutmodules+=" $CSMODULE "
|
||||
|
||||
# modules: support root on virtiofs
|
||||
dracutmodules+=" virtiofs "
|
||||
|
||||
# modules: use sysext images (see 'man systemd-sysext')
|
||||
dracutmodules+=" systemd-sysext "
|
||||
|
||||
# modules: root disk integrity protection
|
||||
dracutmodules+=" systemd-veritysetup "
|
||||
|
||||
# modules: root creation and encryption
|
||||
dracutmodules+=" systemd-repart "
|
||||
# FIXME: remove this once RHEL-103385 is merged
|
||||
install_items+=" /usr/sbin/mkfs.vfat /usr/sbin/mkfs.ext4 /usr/sbin/mkfs.xfs "
|
||||
|
||||
# modules: FIPS
|
||||
dracutmodules+=" fips "
|
||||
# FIPS mode requires early crypto drivers test
|
||||
drivers+=" =crypto "
|
||||
|
||||
# drivers: virtual buses, pci
|
||||
drivers+=" virtio-pci virtio-mmio " # qemu-kvm
|
||||
drivers+=" hv-vmbus pci-hyperv " # hyperv
|
||||
drivers+=" xen-pcifront " # xen
|
||||
|
||||
# drivers: storage
|
||||
drivers+=" ahci nvme sd_mod sr_mod " # generic
|
||||
drivers+=" virtio-blk virtio-scsi " # qemu-kvm
|
||||
drivers+=" hv-storvsc " # hyperv
|
||||
drivers+=" xen-blkfront " # xen
|
||||
|
||||
# root encryption
|
||||
drivers+=" dm_crypt "
|
||||
|
||||
# root disk integrity protection
|
||||
drivers+=" dm_verity overlay "
|
||||
|
||||
# filesystems
|
||||
filesystems+=" vfat ext4 xfs overlay "
|
||||
29
drm-1024x768-85.patch
Normal file
29
drm-1024x768-85.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
From 65a1d7cab62b4f514eaaf608b2f16e26a0e48042 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 13 May 2010 14:55:28 -0400
|
||||
Subject: [PATCH] drm/edid: Fix 1024x768@85Hz
|
||||
|
||||
Having hsync both start and end on pixel 1072 ain't gonna work very
|
||||
well. Matches the X server's list.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/drm_edid.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
|
||||
index 18f41d7..10348d3 100644
|
||||
--- a/drivers/gpu/drm/drm_edid.c
|
||||
+++ b/drivers/gpu/drm/drm_edid.c
|
||||
@@ -335,7 +335,7 @@ static struct drm_display_mode drm_dmt_modes[] = {
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
/* 1024x768@85Hz */
|
||||
{ DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 94500, 1024, 1072,
|
||||
- 1072, 1376, 0, 768, 769, 772, 808, 0,
|
||||
+ 1168, 1376, 0, 768, 769, 772, 808, 0,
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
/* 1152x864@75Hz */
|
||||
{ DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216,
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
65
drm-connection-cache.patch
Normal file
65
drm-connection-cache.patch
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
diff -up linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c.jx linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c
|
||||
--- linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c.jx 2009-09-09 08:57:39.000000000 -0400
|
||||
+++ linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c 2009-09-09 09:35:24.000000000 -0400
|
||||
@@ -92,6 +92,18 @@ int drm_helper_probe_single_connector_mo
|
||||
|
||||
connector->status = connector->funcs->detect(connector);
|
||||
|
||||
+ /* fast path if the driver tracks disconnection */
|
||||
+ if (connector->status == connector_status_cached) {
|
||||
+ DRM_DEBUG_KMS("%s still connected\n",
|
||||
+ drm_get_connector_name(connector));
|
||||
+ list_for_each_entry_safe(mode, t, &connector->modes, head) {
|
||||
+ count++;
|
||||
+ mode->status = MODE_OK;
|
||||
+ }
|
||||
+ connector->status = connector_status_connected;
|
||||
+ return count;
|
||||
+ }
|
||||
+
|
||||
if (connector->status == connector_status_disconnected) {
|
||||
DRM_DEBUG_KMS("%s is disconnected\n",
|
||||
drm_get_connector_name(connector));
|
||||
diff -up linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c.jx linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c
|
||||
--- linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c.jx 2009-09-09 08:57:39.000000000 -0400
|
||||
+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c 2009-09-09 09:56:18.000000000 -0400
|
||||
@@ -593,7 +593,14 @@ static void intel_lvds_mode_set(struct d
|
||||
*/
|
||||
static enum drm_connector_status intel_lvds_detect(struct drm_connector *connector)
|
||||
{
|
||||
- return connector_status_connected;
|
||||
+ static int done;
|
||||
+
|
||||
+ if (!done) {
|
||||
+ done = 1;
|
||||
+ return connector_status_connected;
|
||||
+ } else {
|
||||
+ return connector_status_cached;
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
diff -up linux-2.6.30.noarch/include/drm/drm_crtc.h.jx linux-2.6.30.noarch/include/drm/drm_crtc.h
|
||||
--- linux-2.6.30.noarch/include/drm/drm_crtc.h.jx 2009-09-09 08:57:39.000000000 -0400
|
||||
+++ linux-2.6.30.noarch/include/drm/drm_crtc.h 2009-09-09 09:35:24.000000000 -0400
|
||||
@@ -172,6 +172,7 @@ enum drm_connector_status {
|
||||
connector_status_connected = 1,
|
||||
connector_status_disconnected = 2,
|
||||
connector_status_unknown = 3,
|
||||
+ connector_status_cached = 4,
|
||||
};
|
||||
|
||||
enum subpixel_order {
|
||||
diff -up linux-2.6.30.x86_64/drivers/gpu/drm/drm_crtc.c.jx linux-2.6.30.x86_64/drivers/gpu/drm/drm_crtc.c
|
||||
--- linux-2.6.30.x86_64/drivers/gpu/drm/drm_crtc.c.jx 2009-09-09 10:10:44.000000000 -0400
|
||||
+++ linux-2.6.30.x86_64/drivers/gpu/drm/drm_crtc.c 2009-09-09 11:23:14.000000000 -0400
|
||||
@@ -185,7 +185,8 @@ EXPORT_SYMBOL(drm_get_connector_name);
|
||||
|
||||
char *drm_get_connector_status_name(enum drm_connector_status status)
|
||||
{
|
||||
- if (status == connector_status_connected)
|
||||
+ if (status == connector_status_connected ||
|
||||
+ status == connector_status_cached)
|
||||
return "connected";
|
||||
else if (status == connector_status_disconnected)
|
||||
return "disconnected";
|
||||
3494
drm-core-next.patch
Normal file
3494
drm-core-next.patch
Normal file
File diff suppressed because it is too large
Load diff
34
drm-i915-fix-edp-panels.patch
Normal file
34
drm-i915-fix-edp-panels.patch
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
diff -up linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_dp.c.dave linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_dp.c
|
||||
--- linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_dp.c.dave 2010-06-28 09:50:36.000000000 +1000
|
||||
+++ linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_dp.c 2010-06-28 09:53:24.000000000 +1000
|
||||
@@ -135,6 +135,12 @@ intel_dp_link_required(struct drm_device
|
||||
}
|
||||
|
||||
static int
|
||||
+intel_dp_max_data_rate(int max_link_clock, int max_lanes)
|
||||
+{
|
||||
+ return (max_link_clock * max_lanes * 8) / 10;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
intel_dp_mode_valid(struct drm_connector *connector,
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
@@ -144,7 +150,7 @@ intel_dp_mode_valid(struct drm_connector
|
||||
int max_lanes = intel_dp_max_lane_count(intel_encoder);
|
||||
|
||||
if (intel_dp_link_required(connector->dev, intel_encoder, mode->clock)
|
||||
- > max_link_clock * max_lanes)
|
||||
+ > intel_dp_max_data_rate(max_link_clock, max_lanes))
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
if (mode->clock < 10000)
|
||||
@@ -505,7 +511,7 @@ intel_dp_mode_fixup(struct drm_encoder *
|
||||
|
||||
for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
|
||||
for (clock = 0; clock <= max_clock; clock++) {
|
||||
- int link_avail = intel_dp_link_clock(bws[clock]) * lane_count;
|
||||
+ int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
|
||||
|
||||
if (intel_dp_link_required(encoder->dev, intel_encoder, mode->clock)
|
||||
<= link_avail) {
|
||||
43
drm-i915-fix-non-ironlake-965-class-crashes.patch
Normal file
43
drm-i915-fix-non-ironlake-965-class-crashes.patch
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
From 1918ad77f7f908ed67cf37c505c6ad4ac52f1ecf Mon Sep 17 00:00:00 2001
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Date: Fri, 23 Apr 2010 09:32:23 -0700
|
||||
Subject: drm/i915: fix non-Ironlake 965 class crashes
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
|
||||
commit 1918ad77f7f908ed67cf37c505c6ad4ac52f1ecf upstream.
|
||||
|
||||
My PIPE_CONTROL fix (just sent via Eric's tree) was buggy; I was
|
||||
testing a whole set of patches together and missed a conversion to the
|
||||
new HAS_PIPE_CONTROL macro, which will cause breakage on non-Ironlake
|
||||
965 class chips. Fortunately, the fix is trivial and has been tested.
|
||||
|
||||
Be sure to use the HAS_PIPE_CONTROL macro in i915_get_gem_seqno, or
|
||||
we'll end up reading the wrong graphics memory, likely causing hangs,
|
||||
crashes, or worse.
|
||||
|
||||
Reported-by: Zdenek Kabelac <zdenek.kabelac@gmail.com>
|
||||
Reported-by: Toralf Förster <toralf.foerster@gmx.de>
|
||||
Tested-by: Toralf Förster <toralf.foerster@gmx.de>
|
||||
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -1785,7 +1785,7 @@ i915_get_gem_seqno(struct drm_device *de
|
||||
{
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
|
||||
- if (IS_I965G(dev))
|
||||
+ if (HAS_PIPE_CONTROL(dev))
|
||||
return ((volatile u32 *)(dev_priv->seqno_page))[0];
|
||||
else
|
||||
return READ_HWSP(dev_priv, I915_GEM_HWS_INDEX);
|
||||
|
|
@ -0,0 +1,333 @@
|
|||
From e552eb7038a36d9b18860f525aa02875e313fe16 Mon Sep 17 00:00:00 2001
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Date: Wed, 21 Apr 2010 11:39:23 -0700
|
||||
Subject: drm/i915: use PIPE_CONTROL instruction on Ironlake and Sandy Bridge
|
||||
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
|
||||
commit e552eb7038a36d9b18860f525aa02875e313fe16 upstream.
|
||||
|
||||
Since 965, the hardware has supported the PIPE_CONTROL command, which
|
||||
provides fine grained GPU cache flushing control. On recent chipsets,
|
||||
this instruction is required for reliable interrupt and sequence number
|
||||
reporting in the driver.
|
||||
|
||||
So add support for this instruction, including workarounds, on Ironlake
|
||||
and Sandy Bridge hardware.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=27108
|
||||
|
||||
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Tested-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_drv.h | 4 +
|
||||
drivers/gpu/drm/i915/i915_gem.c | 145 ++++++++++++++++++++++++++++++++++++----
|
||||
drivers/gpu/drm/i915/i915_irq.c | 8 +-
|
||||
drivers/gpu/drm/i915/i915_reg.h | 11 +++
|
||||
4 files changed, 152 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -206,11 +206,14 @@ typedef struct drm_i915_private {
|
||||
|
||||
drm_dma_handle_t *status_page_dmah;
|
||||
void *hw_status_page;
|
||||
+ void *seqno_page;
|
||||
dma_addr_t dma_status_page;
|
||||
uint32_t counter;
|
||||
unsigned int status_gfx_addr;
|
||||
+ unsigned int seqno_gfx_addr;
|
||||
drm_local_map_t hws_map;
|
||||
struct drm_gem_object *hws_obj;
|
||||
+ struct drm_gem_object *seqno_obj;
|
||||
struct drm_gem_object *pwrctx;
|
||||
|
||||
struct resource mch_res;
|
||||
@@ -1090,6 +1093,7 @@ extern int i915_wait_ring(struct drm_dev
|
||||
|
||||
#define INTEL_PCH_TYPE(dev) (((struct drm_i915_private *)(dev)->dev_private)->pch_type)
|
||||
#define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT)
|
||||
+#define HAS_PIPE_CONTROL(dev) (IS_IRONLAKE(dev) || IS_GEN6(dev))
|
||||
|
||||
#define PRIMARY_RINGBUFFER_SIZE (128*1024)
|
||||
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -1559,6 +1559,13 @@ i915_gem_object_move_to_inactive(struct
|
||||
i915_verify_inactive(dev, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
+#define PIPE_CONTROL_FLUSH(addr) \
|
||||
+ OUT_RING(GFX_OP_PIPE_CONTROL | PIPE_CONTROL_QW_WRITE | \
|
||||
+ PIPE_CONTROL_DEPTH_STALL); \
|
||||
+ OUT_RING(addr | PIPE_CONTROL_GLOBAL_GTT); \
|
||||
+ OUT_RING(0); \
|
||||
+ OUT_RING(0); \
|
||||
+
|
||||
/**
|
||||
* Creates a new sequence number, emitting a write of it to the status page
|
||||
* plus an interrupt, which will trigger i915_user_interrupt_handler.
|
||||
@@ -1593,13 +1600,47 @@ i915_add_request(struct drm_device *dev,
|
||||
if (dev_priv->mm.next_gem_seqno == 0)
|
||||
dev_priv->mm.next_gem_seqno++;
|
||||
|
||||
- BEGIN_LP_RING(4);
|
||||
- OUT_RING(MI_STORE_DWORD_INDEX);
|
||||
- OUT_RING(I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT);
|
||||
- OUT_RING(seqno);
|
||||
+ if (HAS_PIPE_CONTROL(dev)) {
|
||||
+ u32 scratch_addr = dev_priv->seqno_gfx_addr + 128;
|
||||
|
||||
- OUT_RING(MI_USER_INTERRUPT);
|
||||
- ADVANCE_LP_RING();
|
||||
+ /*
|
||||
+ * Workaround qword write incoherence by flushing the
|
||||
+ * PIPE_NOTIFY buffers out to memory before requesting
|
||||
+ * an interrupt.
|
||||
+ */
|
||||
+ BEGIN_LP_RING(32);
|
||||
+ OUT_RING(GFX_OP_PIPE_CONTROL | PIPE_CONTROL_QW_WRITE |
|
||||
+ PIPE_CONTROL_WC_FLUSH | PIPE_CONTROL_TC_FLUSH);
|
||||
+ OUT_RING(dev_priv->seqno_gfx_addr | PIPE_CONTROL_GLOBAL_GTT);
|
||||
+ OUT_RING(seqno);
|
||||
+ OUT_RING(0);
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ scratch_addr += 128; /* write to separate cachelines */
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ scratch_addr += 128;
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ scratch_addr += 128;
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ scratch_addr += 128;
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ scratch_addr += 128;
|
||||
+ PIPE_CONTROL_FLUSH(scratch_addr);
|
||||
+ OUT_RING(GFX_OP_PIPE_CONTROL | PIPE_CONTROL_QW_WRITE |
|
||||
+ PIPE_CONTROL_WC_FLUSH | PIPE_CONTROL_TC_FLUSH |
|
||||
+ PIPE_CONTROL_NOTIFY);
|
||||
+ OUT_RING(dev_priv->seqno_gfx_addr | PIPE_CONTROL_GLOBAL_GTT);
|
||||
+ OUT_RING(seqno);
|
||||
+ OUT_RING(0);
|
||||
+ ADVANCE_LP_RING();
|
||||
+ } else {
|
||||
+ BEGIN_LP_RING(4);
|
||||
+ OUT_RING(MI_STORE_DWORD_INDEX);
|
||||
+ OUT_RING(I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT);
|
||||
+ OUT_RING(seqno);
|
||||
+
|
||||
+ OUT_RING(MI_USER_INTERRUPT);
|
||||
+ ADVANCE_LP_RING();
|
||||
+ }
|
||||
|
||||
DRM_DEBUG_DRIVER("%d\n", seqno);
|
||||
|
||||
@@ -1744,7 +1785,10 @@ i915_get_gem_seqno(struct drm_device *de
|
||||
{
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
|
||||
- return READ_HWSP(dev_priv, I915_GEM_HWS_INDEX);
|
||||
+ if (IS_I965G(dev))
|
||||
+ return ((volatile u32 *)(dev_priv->seqno_page))[0];
|
||||
+ else
|
||||
+ return READ_HWSP(dev_priv, I915_GEM_HWS_INDEX);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4576,6 +4620,49 @@ i915_gem_idle(struct drm_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * 965+ support PIPE_CONTROL commands, which provide finer grained control
|
||||
+ * over cache flushing.
|
||||
+ */
|
||||
+static int
|
||||
+i915_gem_init_pipe_control(struct drm_device *dev)
|
||||
+{
|
||||
+ drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
+ struct drm_gem_object *obj;
|
||||
+ struct drm_i915_gem_object *obj_priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ obj = drm_gem_object_alloc(dev, 4096);
|
||||
+ if (obj == NULL) {
|
||||
+ DRM_ERROR("Failed to allocate seqno page\n");
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err;
|
||||
+ }
|
||||
+ obj_priv = obj->driver_private;
|
||||
+ obj_priv->agp_type = AGP_USER_CACHED_MEMORY;
|
||||
+
|
||||
+ ret = i915_gem_object_pin(obj, 4096);
|
||||
+ if (ret)
|
||||
+ goto err_unref;
|
||||
+
|
||||
+ dev_priv->seqno_gfx_addr = obj_priv->gtt_offset;
|
||||
+ dev_priv->seqno_page = kmap(obj_priv->pages[0]);
|
||||
+ if (dev_priv->seqno_page == NULL)
|
||||
+ goto err_unpin;
|
||||
+
|
||||
+ dev_priv->seqno_obj = obj;
|
||||
+ memset(dev_priv->seqno_page, 0, PAGE_SIZE);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_unpin:
|
||||
+ i915_gem_object_unpin(obj);
|
||||
+err_unref:
|
||||
+ drm_gem_object_unreference(obj);
|
||||
+err:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
i915_gem_init_hws(struct drm_device *dev)
|
||||
{
|
||||
@@ -4593,7 +4680,8 @@ i915_gem_init_hws(struct drm_device *dev
|
||||
obj = drm_gem_object_alloc(dev, 4096);
|
||||
if (obj == NULL) {
|
||||
DRM_ERROR("Failed to allocate status page\n");
|
||||
- return -ENOMEM;
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err;
|
||||
}
|
||||
obj_priv = to_intel_bo(obj);
|
||||
obj_priv->agp_type = AGP_USER_CACHED_MEMORY;
|
||||
@@ -4601,7 +4689,7 @@ i915_gem_init_hws(struct drm_device *dev
|
||||
ret = i915_gem_object_pin(obj, 4096);
|
||||
if (ret != 0) {
|
||||
drm_gem_object_unreference(obj);
|
||||
- return ret;
|
||||
+ goto err_unref;
|
||||
}
|
||||
|
||||
dev_priv->status_gfx_addr = obj_priv->gtt_offset;
|
||||
@@ -4610,10 +4698,16 @@ i915_gem_init_hws(struct drm_device *dev
|
||||
if (dev_priv->hw_status_page == NULL) {
|
||||
DRM_ERROR("Failed to map status page.\n");
|
||||
memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
|
||||
- i915_gem_object_unpin(obj);
|
||||
- drm_gem_object_unreference(obj);
|
||||
- return -EINVAL;
|
||||
+ ret = -EINVAL;
|
||||
+ goto err_unpin;
|
||||
}
|
||||
+
|
||||
+ if (HAS_PIPE_CONTROL(dev)) {
|
||||
+ ret = i915_gem_init_pipe_control(dev);
|
||||
+ if (ret)
|
||||
+ goto err_unpin;
|
||||
+ }
|
||||
+
|
||||
dev_priv->hws_obj = obj;
|
||||
memset(dev_priv->hw_status_page, 0, PAGE_SIZE);
|
||||
I915_WRITE(HWS_PGA, dev_priv->status_gfx_addr);
|
||||
@@ -4621,6 +4715,30 @@ i915_gem_init_hws(struct drm_device *dev
|
||||
DRM_DEBUG_DRIVER("hws offset: 0x%08x\n", dev_priv->status_gfx_addr);
|
||||
|
||||
return 0;
|
||||
+
|
||||
+err_unpin:
|
||||
+ i915_gem_object_unpin(obj);
|
||||
+err_unref:
|
||||
+ drm_gem_object_unreference(obj);
|
||||
+err:
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+i915_gem_cleanup_pipe_control(struct drm_device *dev)
|
||||
+{
|
||||
+ drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
+ struct drm_gem_object *obj;
|
||||
+ struct drm_i915_gem_object *obj_priv;
|
||||
+
|
||||
+ obj = dev_priv->seqno_obj;
|
||||
+ obj_priv = obj->driver_private;
|
||||
+ kunmap(obj_priv->pages[0]);
|
||||
+ i915_gem_object_unpin(obj);
|
||||
+ drm_gem_object_unreference(obj);
|
||||
+ dev_priv->seqno_obj = NULL;
|
||||
+
|
||||
+ dev_priv->seqno_page = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -4644,6 +4762,9 @@ i915_gem_cleanup_hws(struct drm_device *
|
||||
memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
|
||||
dev_priv->hw_status_page = NULL;
|
||||
|
||||
+ if (HAS_PIPE_CONTROL(dev))
|
||||
+ i915_gem_cleanup_pipe_control(dev);
|
||||
+
|
||||
/* Write high address into HWS_PGA when disabling. */
|
||||
I915_WRITE(HWS_PGA, 0x1ffff000);
|
||||
}
|
||||
--- a/drivers/gpu/drm/i915/i915_irq.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_irq.c
|
||||
@@ -297,7 +297,7 @@ irqreturn_t ironlake_irq_handler(struct
|
||||
READ_BREADCRUMB(dev_priv);
|
||||
}
|
||||
|
||||
- if (gt_iir & GT_USER_INTERRUPT) {
|
||||
+ if (gt_iir & GT_PIPE_NOTIFY) {
|
||||
u32 seqno = i915_get_gem_seqno(dev);
|
||||
dev_priv->mm.irq_gem_seqno = seqno;
|
||||
trace_i915_gem_request_complete(dev, seqno);
|
||||
@@ -738,7 +738,7 @@ void i915_user_irq_get(struct drm_device
|
||||
spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
|
||||
if (dev->irq_enabled && (++dev_priv->user_irq_refcount == 1)) {
|
||||
if (HAS_PCH_SPLIT(dev))
|
||||
- ironlake_enable_graphics_irq(dev_priv, GT_USER_INTERRUPT);
|
||||
+ ironlake_enable_graphics_irq(dev_priv, GT_PIPE_NOTIFY);
|
||||
else
|
||||
i915_enable_irq(dev_priv, I915_USER_INTERRUPT);
|
||||
}
|
||||
@@ -754,7 +754,7 @@ void i915_user_irq_put(struct drm_device
|
||||
BUG_ON(dev->irq_enabled && dev_priv->user_irq_refcount <= 0);
|
||||
if (dev->irq_enabled && (--dev_priv->user_irq_refcount == 0)) {
|
||||
if (HAS_PCH_SPLIT(dev))
|
||||
- ironlake_disable_graphics_irq(dev_priv, GT_USER_INTERRUPT);
|
||||
+ ironlake_disable_graphics_irq(dev_priv, GT_PIPE_NOTIFY);
|
||||
else
|
||||
i915_disable_irq(dev_priv, I915_USER_INTERRUPT);
|
||||
}
|
||||
@@ -1034,7 +1034,7 @@ static int ironlake_irq_postinstall(stru
|
||||
/* enable kind of interrupts always enabled */
|
||||
u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT |
|
||||
DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE;
|
||||
- u32 render_mask = GT_USER_INTERRUPT;
|
||||
+ u32 render_mask = GT_PIPE_NOTIFY;
|
||||
u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG |
|
||||
SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;
|
||||
|
||||
--- a/drivers/gpu/drm/i915/i915_reg.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_reg.h
|
||||
@@ -210,6 +210,16 @@
|
||||
#define ASYNC_FLIP (1<<22)
|
||||
#define DISPLAY_PLANE_A (0<<20)
|
||||
#define DISPLAY_PLANE_B (1<<20)
|
||||
+#define GFX_OP_PIPE_CONTROL ((0x3<<29)|(0x3<<27)|(0x2<<24)|2)
|
||||
+#define PIPE_CONTROL_QW_WRITE (1<<14)
|
||||
+#define PIPE_CONTROL_DEPTH_STALL (1<<13)
|
||||
+#define PIPE_CONTROL_WC_FLUSH (1<<12)
|
||||
+#define PIPE_CONTROL_IS_FLUSH (1<<11) /* MBZ on Ironlake */
|
||||
+#define PIPE_CONTROL_TC_FLUSH (1<<10) /* GM45+ only */
|
||||
+#define PIPE_CONTROL_ISP_DIS (1<<9)
|
||||
+#define PIPE_CONTROL_NOTIFY (1<<8)
|
||||
+#define PIPE_CONTROL_GLOBAL_GTT (1<<2) /* in addr dword */
|
||||
+#define PIPE_CONTROL_STALL_EN (1<<1) /* in addr word, Ironlake+ only */
|
||||
|
||||
/*
|
||||
* Fence registers
|
||||
@@ -2111,6 +2121,7 @@
|
||||
#define DEIER 0x4400c
|
||||
|
||||
/* GT interrupt */
|
||||
+#define GT_PIPE_NOTIFY (1 << 4)
|
||||
#define GT_SYNC_STATUS (1 << 2)
|
||||
#define GT_USER_INTERRUPT (1 << 0)
|
||||
|
||||
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) {
|
||||
57
drm-intel-gen5-dither.patch
Normal file
57
drm-intel-gen5-dither.patch
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
From b44ee8a479c3adb22b818b8b6aff29c6a08c1cb1 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Mon, 19 Apr 2010 15:52:32 -0400
|
||||
Subject: [PATCH] drm/i915: Use spatio-temporal dithering on PCH
|
||||
|
||||
Spatial dither is better than nothing, but ST is even better.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
|
||||
drivers/gpu/drm/i915/intel_display.c | 10 ++++++----
|
||||
2 files changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
|
||||
index 527d30a..0bbbb77 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_reg.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_reg.h
|
||||
@@ -1922,7 +1922,10 @@
|
||||
/* Display & cursor control */
|
||||
|
||||
/* dithering flag on Ironlake */
|
||||
-#define PIPE_ENABLE_DITHER (1 << 4)
|
||||
+#define PIPE_ENABLE_DITHER (1 << 4)
|
||||
+#define PIPE_DITHER_TYPE_MASK (3 << 2)
|
||||
+#define PIPE_DITHER_TYPE_SPATIAL (0 << 2)
|
||||
+#define PIPE_DITHER_TYPE_ST01 (1 << 2)
|
||||
/* Pipe A */
|
||||
#define PIPEADSL 0x70000
|
||||
#define PIPEACONF 0x70008
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 58668c4..36ead0e 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -3676,14 +3676,16 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
|
||||
/* set the dithering flag */
|
||||
if (IS_I965G(dev)) {
|
||||
if (dev_priv->lvds_dither) {
|
||||
- if (HAS_PCH_SPLIT(dev))
|
||||
+ if (HAS_PCH_SPLIT(dev)) {
|
||||
pipeconf |= PIPE_ENABLE_DITHER;
|
||||
- else
|
||||
+ pipeconf |= PIPE_DITHER_TYPE_ST01;
|
||||
+ } else
|
||||
lvds |= LVDS_ENABLE_DITHER;
|
||||
} else {
|
||||
- if (HAS_PCH_SPLIT(dev))
|
||||
+ if (HAS_PCH_SPLIT(dev)) {
|
||||
pipeconf &= ~PIPE_ENABLE_DITHER;
|
||||
- else
|
||||
+ pipeconf &= ~PIPE_DITHER_TYPE_MASK;
|
||||
+ } else
|
||||
lvds &= ~LVDS_ENABLE_DITHER;
|
||||
}
|
||||
}
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
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.jx linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c.jx 2010-04-19 17:13:31.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c 2010-04-19 17:13:59.753994103 -0400
|
||||
@@ -4141,7 +4141,6 @@ void intel_release_load_detect_pipe(stru
|
||||
struct drm_connector *connector, 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;
|
||||
@@ -4151,7 +4150,6 @@ void intel_release_load_detect_pipe(stru
|
||||
connector->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 encoder back off if necessary */
|
||||
13624
drm-intel-next.patch
Normal file
13624
drm-intel-next.patch
Normal file
File diff suppressed because it is too large
Load diff
107
drm-intel-sdvo-fix-2.patch
Normal file
107
drm-intel-sdvo-fix-2.patch
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
From 4fd1c5ed73fc02d8bcabcb3a457c4c4efaef2099 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 29 Apr 2010 14:05:18 -0400
|
||||
Subject: [PATCH] drm/i915: Be extra careful about A/D matching for multifunction SDVO
|
||||
|
||||
If we're both RGB and TMDS capable, we'll have set up one connector for
|
||||
each. When determining connectivity, require analog/digital state in
|
||||
the EDID block to match analog/digital support in the connector.
|
||||
Otherwise, both DVI and VGA will appear to be connected.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_sdvo.c | 45 +++++++++++++++++-------------------
|
||||
1 files changed, 21 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
index f55c0d7..31ce975 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
@@ -1503,16 +1503,17 @@ intel_analog_is_connected(struct drm_device *dev)
|
||||
}
|
||||
|
||||
enum drm_connector_status
|
||||
-intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response)
|
||||
+intel_sdvo_hdmi_sink_detect(struct drm_connector *connector)
|
||||
{
|
||||
struct drm_encoder *encoder = intel_attached_encoder(connector);
|
||||
struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);
|
||||
struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv;
|
||||
+ struct intel_connector *intel_connector = to_intel_connector(connector);
|
||||
+ struct intel_sdvo_connector *sdvo_connector = intel_connector->dev_priv;
|
||||
enum drm_connector_status status = connector_status_connected;
|
||||
struct edid *edid = NULL;
|
||||
|
||||
- edid = drm_get_edid(connector,
|
||||
- intel_encoder->ddc_bus);
|
||||
+ edid = drm_get_edid(connector, intel_encoder->ddc_bus);
|
||||
|
||||
/* This is only applied to SDVO cards with multiple outputs */
|
||||
if (edid == NULL && intel_sdvo_multifunc_encoder(intel_encoder)) {
|
||||
@@ -1525,8 +1526,7 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response)
|
||||
*/
|
||||
while(temp_ddc > 1) {
|
||||
sdvo_priv->ddc_bus = temp_ddc;
|
||||
- edid = drm_get_edid(connector,
|
||||
- intel_encoder->ddc_bus);
|
||||
+ edid = drm_get_edid(connector, intel_encoder->ddc_bus);
|
||||
if (edid) {
|
||||
/*
|
||||
* When we can get the EDID, maybe it is the
|
||||
@@ -1543,28 +1543,25 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response)
|
||||
/* when there is no edid and no monitor is connected with VGA
|
||||
* port, try to use the CRT ddc to read the EDID for DVI-connector
|
||||
*/
|
||||
- if (edid == NULL &&
|
||||
- sdvo_priv->analog_ddc_bus &&
|
||||
+ if (edid == NULL && sdvo_priv->analog_ddc_bus &&
|
||||
!intel_analog_is_connected(connector->dev))
|
||||
- edid = drm_get_edid(connector,
|
||||
- sdvo_priv->analog_ddc_bus);
|
||||
+ edid = drm_get_edid(connector, sdvo_priv->analog_ddc_bus);
|
||||
+
|
||||
if (edid != NULL) {
|
||||
- /* Don't report the output as connected if it's a DVI-I
|
||||
- * connector with a non-digital EDID coming out.
|
||||
- */
|
||||
- if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) {
|
||||
- if (edid->input & DRM_EDID_INPUT_DIGITAL)
|
||||
- sdvo_priv->is_hdmi =
|
||||
- drm_detect_hdmi_monitor(edid);
|
||||
- else
|
||||
- status = connector_status_disconnected;
|
||||
- }
|
||||
+ bool is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL);
|
||||
+ bool need_digital = !!(sdvo_connector->output_flag & SDVO_TMDS_MASK);
|
||||
|
||||
- kfree(edid);
|
||||
- connector->display_info.raw_edid = NULL;
|
||||
+ /* DDC bus is shared, match EDID to connector type */
|
||||
+ if (is_digital && need_digital)
|
||||
+ sdvo_priv->is_hdmi = drm_detect_hdmi_monitor(edid);
|
||||
+ else if (is_digital != need_digital)
|
||||
+ status = connector_status_disconnected;
|
||||
|
||||
- } else if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1))
|
||||
+ connector->display_info.raw_edid = NULL;
|
||||
+ } else
|
||||
status = connector_status_disconnected;
|
||||
+
|
||||
+ kfree(edid);
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -1600,8 +1597,8 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect
|
||||
|
||||
if ((sdvo_connector->output_flag & response) == 0)
|
||||
ret = connector_status_disconnected;
|
||||
- else if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1))
|
||||
- ret = intel_sdvo_hdmi_sink_detect(connector, response);
|
||||
+ else if (response & SDVO_TMDS_MASK)
|
||||
+ ret = intel_sdvo_hdmi_sink_detect(connector);
|
||||
else
|
||||
ret = connector_status_connected;
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
114
drm-intel-sdvo-fix.patch
Normal file
114
drm-intel-sdvo-fix.patch
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
From ef59fcdd9d7fe818d36a0072c80770c0d1a3cc9c Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Fri, 23 Apr 2010 16:07:40 -0400
|
||||
Subject: [PATCH] drm/i915: Fix DDC bus selection for multifunction SDVO
|
||||
|
||||
Multifunction SDVO cards stopped working after 14571b4, and would report
|
||||
something that looked remarkably like an ADD2 SPD ROM instead of EDID.
|
||||
This appears to be because DDC bus selection was utterly horked by that
|
||||
commit; controlled_output was no longer always a single bit, so
|
||||
intel_sdvo_select_ddc_bus would pick bus 0, which is (unsurprisingly)
|
||||
the SPD ROM bus, not a DDC bus.
|
||||
|
||||
So, instead of that, let's just use the DDC bus the child device table
|
||||
tells us to use. I'm guessing at the bitmask and shifting from VBIOS
|
||||
dumps, but it can't possibly be worse.
|
||||
|
||||
cf. https://bugzilla.redhat.com/584229
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_drv.h | 1 +
|
||||
drivers/gpu/drm/i915/intel_bios.c | 1 +
|
||||
drivers/gpu/drm/i915/intel_sdvo.c | 41 ++++++++----------------------------
|
||||
3 files changed, 11 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index a43a4f5..5d609a8 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -135,6 +135,7 @@ struct sdvo_device_mapping {
|
||||
u8 slave_addr;
|
||||
u8 dvo_wiring;
|
||||
u8 initialized;
|
||||
+ u8 ddc_pin;
|
||||
};
|
||||
|
||||
struct drm_i915_error_state {
|
||||
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
|
||||
index f9ba452..4c748d8 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_bios.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_bios.c
|
||||
@@ -366,6 +366,7 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
|
||||
p_mapping->dvo_port = p_child->dvo_port;
|
||||
p_mapping->slave_addr = p_child->slave_addr;
|
||||
p_mapping->dvo_wiring = p_child->dvo_wiring;
|
||||
+ p_mapping->ddc_pin = p_child->ddc_pin;
|
||||
p_mapping->initialized = 1;
|
||||
} else {
|
||||
DRM_DEBUG_KMS("Maybe one SDVO port is shared by "
|
||||
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
index df9f997..f55c0d7 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
|
||||
@@ -2053,40 +2053,17 @@ static const struct drm_encoder_funcs intel_sdvo_enc_funcs = {
|
||||
* outputs, then LVDS outputs.
|
||||
*/
|
||||
static void
|
||||
-intel_sdvo_select_ddc_bus(struct intel_sdvo_priv *dev_priv)
|
||||
+intel_sdvo_select_ddc_bus(struct drm_i915_private *dev_priv,
|
||||
+ struct intel_sdvo_priv *sdvo, u32 reg)
|
||||
{
|
||||
- uint16_t mask = 0;
|
||||
- unsigned int num_bits;
|
||||
+ struct sdvo_device_mapping *mapping;
|
||||
|
||||
- /* Make a mask of outputs less than or equal to our own priority in the
|
||||
- * list.
|
||||
- */
|
||||
- switch (dev_priv->controlled_output) {
|
||||
- case SDVO_OUTPUT_LVDS1:
|
||||
- mask |= SDVO_OUTPUT_LVDS1;
|
||||
- case SDVO_OUTPUT_LVDS0:
|
||||
- mask |= SDVO_OUTPUT_LVDS0;
|
||||
- case SDVO_OUTPUT_TMDS1:
|
||||
- mask |= SDVO_OUTPUT_TMDS1;
|
||||
- case SDVO_OUTPUT_TMDS0:
|
||||
- mask |= SDVO_OUTPUT_TMDS0;
|
||||
- case SDVO_OUTPUT_RGB1:
|
||||
- mask |= SDVO_OUTPUT_RGB1;
|
||||
- case SDVO_OUTPUT_RGB0:
|
||||
- mask |= SDVO_OUTPUT_RGB0;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- /* Count bits to find what number we are in the priority list. */
|
||||
- mask &= dev_priv->caps.output_flags;
|
||||
- num_bits = hweight16(mask);
|
||||
- if (num_bits > 3) {
|
||||
- /* if more than 3 outputs, default to DDC bus 3 for now */
|
||||
- num_bits = 3;
|
||||
- }
|
||||
+ if (IS_SDVOB(reg))
|
||||
+ mapping = &(dev_priv->sdvo_mappings[0]);
|
||||
+ else
|
||||
+ mapping = &(dev_priv->sdvo_mappings[1]);
|
||||
|
||||
- /* Corresponds to SDVO_CONTROL_BUS_DDCx */
|
||||
- dev_priv->ddc_bus = 1 << num_bits;
|
||||
+ sdvo->ddc_bus = 1 << ((mapping->ddc_pin & 0xf0) >> 4);
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -2863,7 +2840,7 @@ bool intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
|
||||
goto err_i2c;
|
||||
}
|
||||
|
||||
- intel_sdvo_select_ddc_bus(sdvo_priv);
|
||||
+ intel_sdvo_select_ddc_bus(dev_priv, sdvo_priv, sdvo_reg);
|
||||
|
||||
/* Set the input timing to the screen. Assume always input 0. */
|
||||
intel_sdvo_set_target_input(intel_encoder, true, false);
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
1342
drm-nouveau-abi16.patch
Normal file
1342
drm-nouveau-abi16.patch
Normal file
File diff suppressed because it is too large
Load diff
239
drm-nouveau-acpi-edid-fallback.patch
Normal file
239
drm-nouveau-acpi-edid-fallback.patch
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
From 782468d6a9fb865677c166ceffc2271e1f709cc5 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Skeggs <bskeggs@redhat.com>
|
||||
Date: Fri, 16 Apr 2010 08:12:34 +1000
|
||||
Subject: [PATCH 2/3] drm-nouveau-acpi-edid-fallback
|
||||
|
||||
---
|
||||
drivers/gpu/drm/nouveau/nouveau_acpi.c | 81 ++++++++++++++++++++++++--
|
||||
drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +++
|
||||
drivers/gpu/drm/nouveau/nouveau_drv.h | 20 +++++--
|
||||
drivers/gpu/drm/nouveau/nouveau_state.c | 5 +-
|
||||
4 files changed, 98 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
|
||||
index 48227e7..ac7fd04 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
|
||||
@@ -2,11 +2,13 @@
|
||||
#include <linux/acpi.h>
|
||||
#include <acpi/acpi_drivers.h>
|
||||
#include <acpi/acpi_bus.h>
|
||||
+#include <acpi/video.h>
|
||||
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "drm_sarea.h"
|
||||
#include "drm_crtc_helper.h"
|
||||
+#include "nouveau_connector.h"
|
||||
#include "nouveau_drv.h"
|
||||
#include "nouveau_drm.h"
|
||||
#include "nv50_display.h"
|
||||
@@ -35,7 +37,7 @@ static int nouveau_dsm(struct drm_device *dev, int func, int arg, int *result)
|
||||
0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4,
|
||||
};
|
||||
|
||||
- struct pci_dev *pdev = dev->pdev;
|
||||
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||
struct acpi_handle *handle;
|
||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct acpi_object_list input;
|
||||
@@ -43,11 +45,11 @@ static int nouveau_dsm(struct drm_device *dev, int func, int arg, int *result)
|
||||
union acpi_object *obj;
|
||||
int err;
|
||||
|
||||
- handle = DEVICE_ACPI_HANDLE(&pdev->dev);
|
||||
-
|
||||
- if (!handle)
|
||||
+ if (!dev_priv->acpi_device)
|
||||
return -ENODEV;
|
||||
|
||||
+ handle = dev_priv->acpi_device->handle;
|
||||
+
|
||||
input.count = 4;
|
||||
input.pointer = params;
|
||||
params[0].type = ACPI_TYPE_BUFFER;
|
||||
@@ -62,7 +64,8 @@ static int nouveau_dsm(struct drm_device *dev, int func, int arg, int *result)
|
||||
|
||||
err = acpi_evaluate_object(handle, "_DSM", &input, &output);
|
||||
if (err) {
|
||||
- NV_INFO(dev, "failed to evaluate _DSM: %d\n", err);
|
||||
+ if (err != AE_NOT_FOUND)
|
||||
+ NV_INFO(dev, "failed to evaluate _DSM: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -86,7 +89,7 @@ static int nouveau_dsm(struct drm_device *dev, int func, int arg, int *result)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int nouveau_hybrid_setup(struct drm_device *dev)
|
||||
+static int nouveau_hybrid_setup(struct drm_device *dev)
|
||||
{
|
||||
int result;
|
||||
|
||||
@@ -110,7 +113,7 @@ int nouveau_hybrid_setup(struct drm_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-bool nouveau_dsm_probe(struct drm_device *dev)
|
||||
+static bool nouveau_dsm_probe(struct drm_device *dev)
|
||||
{
|
||||
int support = 0;
|
||||
|
||||
@@ -123,3 +126,67 @@ bool nouveau_dsm_probe(struct drm_device *dev)
|
||||
|
||||
return true;
|
||||
}
|
||||
+
|
||||
+int nouveau_acpi_get_edid(struct drm_device *dev,
|
||||
+ struct drm_connector *connector,
|
||||
+ struct edid **pedid)
|
||||
+{
|
||||
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||
+ void *edid;
|
||||
+ int connector_type = 0;
|
||||
+ int ret;
|
||||
+
|
||||
+ switch (connector->connector_type) {
|
||||
+ case DRM_MODE_CONNECTOR_VGA:
|
||||
+ connector_type = ACPI_VIDEO_DISPLAY_CRT;
|
||||
+ break;
|
||||
+ case DRM_MODE_CONNECTOR_Composite:
|
||||
+ case DRM_MODE_CONNECTOR_SVIDEO:
|
||||
+ case DRM_MODE_CONNECTOR_Component:
|
||||
+ case DRM_MODE_CONNECTOR_9PinDIN:
|
||||
+ connector_type = ACPI_VIDEO_DISPLAY_TV;
|
||||
+ break;
|
||||
+ case DRM_MODE_CONNECTOR_DVII:
|
||||
+ case DRM_MODE_CONNECTOR_DVID:
|
||||
+ case DRM_MODE_CONNECTOR_HDMIA:
|
||||
+ case DRM_MODE_CONNECTOR_HDMIB:
|
||||
+ case DRM_MODE_CONNECTOR_DisplayPort:
|
||||
+ connector_type = ACPI_VIDEO_DISPLAY_DVI;
|
||||
+ break;
|
||||
+ case DRM_MODE_CONNECTOR_LVDS:
|
||||
+ connector_type = ACPI_VIDEO_DISPLAY_LCD;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ ret = acpi_video_get_edid(dev_priv->acpi_device, connector_type, -1, &edid);
|
||||
+
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ *pedid = edid;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int nouveau_acpi_setup(struct drm_device *dev)
|
||||
+{
|
||||
+ struct pci_dev *pdev = dev->pdev;
|
||||
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||
+ acpi_handle handle;
|
||||
+ struct acpi_device *acpi_dev;
|
||||
+
|
||||
+ handle = DEVICE_ACPI_HANDLE(&pdev->dev);
|
||||
+
|
||||
+ if (!handle)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ if (acpi_bus_get_device(handle, &acpi_dev))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ dev_priv->acpi_device = acpi_dev;
|
||||
+ dev_priv->acpi_dsm = nouveau_dsm_probe(dev);
|
||||
+
|
||||
+ if (dev_priv->acpi_dsm)
|
||||
+ nouveau_hybrid_setup(dev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
index fb51958..5832b60 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
|
||||
@@ -356,6 +356,14 @@ nouveau_connector_detect_lvds(struct drm_connector *connector)
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Let's try ACPI */
|
||||
+ if (status != connector_status_connected &&
|
||||
+ !dev_priv->vbios.fp_no_ddc) {
|
||||
+ nouveau_acpi_get_edid(dev, connector, &nv_connector->edid);
|
||||
+ if (nv_connector->edid)
|
||||
+ status = connector_status_connected;
|
||||
+ }
|
||||
+
|
||||
out:
|
||||
#ifdef CONFIG_ACPI
|
||||
if (status == connector_status_connected &&
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
|
||||
index c31159a..675d7ac 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
|
||||
@@ -39,6 +39,8 @@
|
||||
#define NOUVEAU_FAMILY 0x0000FFFF
|
||||
#define NOUVEAU_FLAGS 0xFFFF0000
|
||||
|
||||
+#include <linux/acpi.h>
|
||||
+
|
||||
#include "ttm/ttm_bo_api.h"
|
||||
#include "ttm/ttm_bo_driver.h"
|
||||
#include "ttm/ttm_placement.h"
|
||||
@@ -615,7 +617,11 @@ struct drm_nouveau_private {
|
||||
} susres;
|
||||
|
||||
struct backlight_device *backlight;
|
||||
+
|
||||
+#ifdef CONFIG_ACPI
|
||||
bool acpi_dsm;
|
||||
+ struct acpi_device *acpi_device;
|
||||
+#endif
|
||||
|
||||
struct nouveau_channel *evo;
|
||||
|
||||
@@ -846,16 +852,20 @@ extern int nouveau_dma_wait(struct nouveau_channel *, int slots, int size);
|
||||
|
||||
/* nouveau_acpi.c */
|
||||
#ifdef CONFIG_ACPI
|
||||
-extern int nouveau_hybrid_setup(struct drm_device *dev);
|
||||
-extern bool nouveau_dsm_probe(struct drm_device *dev);
|
||||
+extern int nouveau_acpi_setup(struct drm_device *dev);
|
||||
+extern int nouveau_acpi_get_edid(struct drm_device *dev,
|
||||
+ struct drm_connector *connector,
|
||||
+ struct edid **edid);
|
||||
#else
|
||||
-static inline int nouveau_hybrid_setup(struct drm_device *dev)
|
||||
+static inline int nouveau_acpi_setup(struct drm_device *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
-static inline bool nouveau_dsm_probe(struct drm_device *dev)
|
||||
+static inline int nouveau_acpi_get_edid(struct drm_device *dev,
|
||||
+ struct drm_connector *connector,
|
||||
+ struct edid **edid)
|
||||
{
|
||||
- return false;
|
||||
+ return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
index 7c1d252..7ca9465 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
@@ -627,10 +627,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
||||
NV_DEBUG(dev, "vendor: 0x%X device: 0x%X class: 0x%X\n",
|
||||
dev->pci_vendor, dev->pci_device, dev->pdev->class);
|
||||
|
||||
- dev_priv->acpi_dsm = nouveau_dsm_probe(dev);
|
||||
-
|
||||
- if (dev_priv->acpi_dsm)
|
||||
- nouveau_hybrid_setup(dev);
|
||||
+ nouveau_acpi_setup(dev);
|
||||
|
||||
dev_priv->wq = create_workqueue("nouveau");
|
||||
if (!dev_priv->wq)
|
||||
--
|
||||
1.7.1
|
||||
|
||||
86
drm-nouveau-drm-fixed-header.patch
Normal file
86
drm-nouveau-drm-fixed-header.patch
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
From 841045c942be3fd2bf928a7de3e730a00665347e Mon Sep 17 00:00:00 2001
|
||||
From: Ben Skeggs <bskeggs@redhat.com>
|
||||
Date: Wed, 28 Apr 2010 15:19:10 +1000
|
||||
Subject: [PATCH 3/3] drm-nouveau-drm-fixed-header
|
||||
|
||||
---
|
||||
drivers/gpu/drm/nouveau/drm_fixed.h | 67 +++++++++++++++++++++++++++++++++++
|
||||
1 files changed, 67 insertions(+), 0 deletions(-)
|
||||
create mode 100644 drivers/gpu/drm/nouveau/drm_fixed.h
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/drm_fixed.h b/drivers/gpu/drm/nouveau/drm_fixed.h
|
||||
new file mode 100644
|
||||
index 0000000..4a08a66
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/nouveau/drm_fixed.h
|
||||
@@ -0,0 +1,67 @@
|
||||
+/*
|
||||
+ * Copyright 2009 Red Hat Inc.
|
||||
+ *
|
||||
+ * Permission is hereby granted, free of charge, to any person obtaining a
|
||||
+ * copy of this software and associated documentation files (the "Software"),
|
||||
+ * to deal in the Software without restriction, including without limitation
|
||||
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
+ * and/or sell copies of the Software, and to permit persons to whom the
|
||||
+ * Software is furnished to do so, subject to the following conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be included in
|
||||
+ * all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ *
|
||||
+ * Authors: Dave Airlie
|
||||
+ */
|
||||
+#ifndef DRM_FIXED_H
|
||||
+#define DRM_FIXED_H
|
||||
+
|
||||
+typedef union dfixed {
|
||||
+ u32 full;
|
||||
+} fixed20_12;
|
||||
+
|
||||
+
|
||||
+#define dfixed_const(A) (u32)(((A) << 12))/* + ((B + 0.000122)*4096)) */
|
||||
+#define dfixed_const_half(A) (u32)(((A) << 12) + 2048)
|
||||
+#define dfixed_const_666(A) (u32)(((A) << 12) + 2731)
|
||||
+#define dfixed_const_8(A) (u32)(((A) << 12) + 3277)
|
||||
+#define dfixed_mul(A, B) ((u64)((u64)(A).full * (B).full + 2048) >> 12)
|
||||
+#define dfixed_init(A) { .full = dfixed_const((A)) }
|
||||
+#define dfixed_init_half(A) { .full = dfixed_const_half((A)) }
|
||||
+#define dfixed_trunc(A) ((A).full >> 12)
|
||||
+
|
||||
+static inline u32 dfixed_floor(fixed20_12 A)
|
||||
+{
|
||||
+ u32 non_frac = dfixed_trunc(A);
|
||||
+
|
||||
+ return dfixed_const(non_frac);
|
||||
+}
|
||||
+
|
||||
+static inline u32 dfixed_ceil(fixed20_12 A)
|
||||
+{
|
||||
+ u32 non_frac = dfixed_trunc(A);
|
||||
+
|
||||
+ if (A.full > dfixed_const(non_frac))
|
||||
+ return dfixed_const(non_frac + 1);
|
||||
+ else
|
||||
+ return dfixed_const(non_frac);
|
||||
+}
|
||||
+
|
||||
+static inline u32 dfixed_div(fixed20_12 A, fixed20_12 B)
|
||||
+{
|
||||
+ u64 tmp = ((u64)A.full << 13);
|
||||
+
|
||||
+ do_div(tmp, B.full);
|
||||
+ tmp += 1;
|
||||
+ tmp /= 2;
|
||||
+ return lower_32_bits(tmp);
|
||||
+}
|
||||
+#endif
|
||||
--
|
||||
1.7.1
|
||||
|
||||
9174
drm-nouveau-updates.patch
Normal file
9174
drm-nouveau-updates.patch
Normal file
File diff suppressed because it is too large
Load diff
11726
drm-radeon-evergreen.patch
Normal file
11726
drm-radeon-evergreen.patch
Normal file
File diff suppressed because it is too large
Load diff
30
drm-radeon-firemv-pciid.patch
Normal file
30
drm-radeon-firemv-pciid.patch
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
From 79b9517a33a283c5d9db875c263670ed1e055f7e Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Mon, 19 Apr 2010 17:54:31 +1000
|
||||
Subject: [PATCH] drm/radeon/kms: add FireMV 2400 PCI ID.
|
||||
|
||||
This is an M24/X600 chip.
|
||||
|
||||
From RH# 581927
|
||||
|
||||
cc: stable@kernel.org
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
include/drm/drm_pciids.h | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
|
||||
index 04a6ebc..2d428b0 100644
|
||||
--- a/include/drm/drm_pciids.h
|
||||
+++ b/include/drm/drm_pciids.h
|
||||
@@ -6,6 +6,7 @@
|
||||
{0x1002, 0x3150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \
|
||||
{0x1002, 0x3152, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x3154, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
+ {0x1002, 0x3155, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x3E50, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x3E54, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x4136, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS100|RADEON_IS_IGP}, \
|
||||
--
|
||||
1.6.6.1
|
||||
|
||||
32
drm-radeon-fix-rs600-tlb.patch
Normal file
32
drm-radeon-fix-rs600-tlb.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
From 30f69f3fb20bd719b5e1bf879339914063d38f47 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Glisse <jglisse@redhat.com>
|
||||
Date: Fri, 16 Apr 2010 18:46:35 +0200
|
||||
Subject: [PATCH] drm/radeon/kms: fix rs600 tlb flush
|
||||
|
||||
Typo in in flush leaded to no flush of the RS600 tlb which
|
||||
ultimately leaded to massive system ram corruption, with
|
||||
this patch everythings seems to work properly.
|
||||
|
||||
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
|
||||
Cc: stable <stable@kernel.org>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/rs600.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
|
||||
index abf824c..a81bc7a 100644
|
||||
--- a/drivers/gpu/drm/radeon/rs600.c
|
||||
+++ b/drivers/gpu/drm/radeon/rs600.c
|
||||
@@ -159,7 +159,7 @@ void rs600_gart_tlb_flush(struct radeon_device *rdev)
|
||||
WREG32_MC(R_000100_MC_PT0_CNTL, tmp);
|
||||
|
||||
tmp = RREG32_MC(R_000100_MC_PT0_CNTL);
|
||||
- tmp |= S_000100_INVALIDATE_ALL_L1_TLBS(1) & S_000100_INVALIDATE_L2_CACHE(1);
|
||||
+ tmp |= S_000100_INVALIDATE_ALL_L1_TLBS(1) | S_000100_INVALIDATE_L2_CACHE(1);
|
||||
WREG32_MC(R_000100_MC_PT0_CNTL, tmp);
|
||||
|
||||
tmp = RREG32_MC(R_000100_MC_PT0_CNTL);
|
||||
--
|
||||
1.6.6.1
|
||||
|
||||
39
drm-radeon-kms-fix-dual-link-dvi.patch
Normal file
39
drm-radeon-kms-fix-dual-link-dvi.patch
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
From b317a9ce2259e64258a802a5ca70dec45ac15dda Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Thu, 15 Apr 2010 16:54:38 -0400
|
||||
Subject: [PATCH] drm/radeon/kms/atom: fix dual-link DVI on DCE3.2/4.0
|
||||
|
||||
Got broken during the evergreen merge.
|
||||
Fixes fdo bug 27001.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_encoders.c | 4 ++++
|
||||
1 files changed, 4 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
index c52fc30..9f7f56a 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
@@ -865,6 +865,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
|
||||
else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
|
||||
if (dig->coherent_mode)
|
||||
args.v3.acConfig.fCoherentMode = 1;
|
||||
+ if (radeon_encoder->pixel_clock > 165000)
|
||||
+ args.v3.acConfig.fDualLinkConnector = 1;
|
||||
}
|
||||
} else if (ASIC_IS_DCE32(rdev)) {
|
||||
args.v2.acConfig.ucEncoderSel = dig->dig_encoder;
|
||||
@@ -888,6 +890,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
|
||||
else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
|
||||
if (dig->coherent_mode)
|
||||
args.v2.acConfig.fCoherentMode = 1;
|
||||
+ if (radeon_encoder->pixel_clock > 165000)
|
||||
+ args.v2.acConfig.fDualLinkConnector = 1;
|
||||
}
|
||||
} else {
|
||||
args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL;
|
||||
--
|
||||
1.6.6.1
|
||||
|
||||
97
drm-radeon-ss-fix.patch
Normal file
97
drm-radeon-ss-fix.patch
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
From 7aac5b711ff4c64bad5a6027cf6d38f1bbd53efe Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Tue, 20 Apr 2010 18:30:37 +1000
|
||||
Subject: [PATCH] drm/radeon/kms: further spread spectrum fixes
|
||||
|
||||
Adjust modeset ordering to fix spread spectrum.
|
||||
The spread spectrum command table relies on the
|
||||
crtc routing to already be set in order to work
|
||||
properly on some asics.
|
||||
|
||||
Should fix fdo bug 25741.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
Conflicts:
|
||||
|
||||
drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
---
|
||||
drivers/gpu/drm/radeon/atombios_crtc.c | 5 +++++
|
||||
drivers/gpu/drm/radeon/radeon_encoders.c | 25 +++++++++++++++----------
|
||||
2 files changed, 20 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
index c076eac..e70b575 100644
|
||||
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
@@ -1115,6 +1115,11 @@ static bool atombios_crtc_mode_fixup(struct drm_crtc *crtc,
|
||||
|
||||
static void atombios_crtc_prepare(struct drm_crtc *crtc)
|
||||
{
|
||||
+ struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
|
||||
+
|
||||
+ /* pick pll */
|
||||
+ radeon_crtc->pll_id = radeon_atom_pick_pll(crtc);
|
||||
+
|
||||
atombios_lock_crtc(crtc, ATOM_ENABLE);
|
||||
atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
index cac9e06..ff28ad8 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
|
||||
@@ -1207,6 +1207,9 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
|
||||
}
|
||||
|
||||
atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
|
||||
+
|
||||
+ /* update scratch regs with new routing */
|
||||
+ radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1317,19 +1320,9 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
|
||||
struct drm_device *dev = encoder->dev;
|
||||
struct radeon_device *rdev = dev->dev_private;
|
||||
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
|
||||
- struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
|
||||
|
||||
- if (radeon_encoder->active_device &
|
||||
- (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) {
|
||||
- struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
|
||||
- if (dig)
|
||||
- dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder);
|
||||
- }
|
||||
radeon_encoder->pixel_clock = adjusted_mode->clock;
|
||||
|
||||
- radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
|
||||
- atombios_set_encoder_crtc_source(encoder);
|
||||
-
|
||||
if (ASIC_IS_AVIVO(rdev)) {
|
||||
if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT | ATOM_DEVICE_TV_SUPPORT))
|
||||
atombios_yuv_setup(encoder, true);
|
||||
@@ -1483,8 +1476,20 @@ radeon_atom_dac_detect(struct drm_encoder *encoder, struct drm_connector *connec
|
||||
|
||||
static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)
|
||||
{
|
||||
+ struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
|
||||
+
|
||||
+ if (radeon_encoder->active_device &
|
||||
+ (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) {
|
||||
+ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
|
||||
+ if (dig)
|
||||
+ dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder);
|
||||
+ }
|
||||
+
|
||||
radeon_atom_output_lock(encoder, true);
|
||||
radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
|
||||
+
|
||||
+ /* this is needed for the pll/ss setup to work correctly in some cases */
|
||||
+ atombios_set_encoder_crtc_source(encoder);
|
||||
}
|
||||
|
||||
static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
|
||||
--
|
||||
1.6.5.2
|
||||
|
||||
62
ext4-issue-discard-operation-before-releasing-blocks.patch
Normal file
62
ext4-issue-discard-operation-before-releasing-blocks.patch
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Tue, 20 Apr 2010 20:51:59 +0000 (-0400)
|
||||
Subject: ext4: Issue the discard operation *before* releasing the blocks to be reused
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=b90f687018e6d6c77d981b09203780f7001407e5
|
||||
|
||||
ext4: Issue the discard operation *before* releasing the blocks to be reused
|
||||
|
||||
[ backported to 2.6.33 ]
|
||||
|
||||
Otherwise, we can end up having data corruption because the blocks
|
||||
could get reused and then discarded!
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=15579
|
||||
|
||||
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|
||||
---
|
||||
|
||||
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
|
||||
index 54df209..e5ab41b 100644
|
||||
--- a/fs/ext4/mballoc.c
|
||||
+++ b/fs/ext4/mballoc.c
|
||||
@@ -2534,6 +2534,20 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn)
|
||||
mb_debug(1, "gonna free %u blocks in group %u (0x%p):",
|
||||
entry->count, entry->group, entry);
|
||||
|
||||
+ if (test_opt(sb, DISCARD)) {
|
||||
+ ext4_fsblk_t discard_block;
|
||||
+ struct ext4_super_block *es = EXT4_SB(sb)->s_es;
|
||||
+
|
||||
+ discard_block = (ext4_fsblk_t)entry->group *
|
||||
+ EXT4_BLOCKS_PER_GROUP(sb)
|
||||
+ + entry->start_blk
|
||||
+ + le32_to_cpu(es->s_first_data_block);
|
||||
+ trace_ext4_discard_blocks(sb,
|
||||
+ (unsigned long long)discard_block,
|
||||
+ entry->count);
|
||||
+ sb_issue_discard(sb, discard_block, entry->count);
|
||||
+ }
|
||||
+
|
||||
err = ext4_mb_load_buddy(sb, entry->group, &e4b);
|
||||
/* we expect to find existing buddy because it's pinned */
|
||||
BUG_ON(err != 0);
|
||||
@@ -2555,19 +2566,6 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn)
|
||||
page_cache_release(e4b.bd_bitmap_page);
|
||||
}
|
||||
ext4_unlock_group(sb, entry->group);
|
||||
- if (test_opt(sb, DISCARD)) {
|
||||
- ext4_fsblk_t discard_block;
|
||||
- struct ext4_super_block *es = EXT4_SB(sb)->s_es;
|
||||
-
|
||||
- discard_block = (ext4_fsblk_t)entry->group *
|
||||
- EXT4_BLOCKS_PER_GROUP(sb)
|
||||
- + entry->start_blk
|
||||
- + le32_to_cpu(es->s_first_data_block);
|
||||
- trace_ext4_discard_blocks(sb,
|
||||
- (unsigned long long)discard_block,
|
||||
- entry->count);
|
||||
- sb_issue_discard(sb, discard_block, entry->count);
|
||||
- }
|
||||
kmem_cache_free(ext4_free_ext_cachep, entry);
|
||||
ext4_mb_release_desc(&e4b);
|
||||
}
|
||||
BIN
fedoraimaca.x509
BIN
fedoraimaca.x509
Binary file not shown.
1097
filtermods.py
1097
filtermods.py
File diff suppressed because it is too large
Load diff
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)
|
||||
21
fix-9p-fscache.patch
Normal file
21
fix-9p-fscache.patch
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
Subject: [PATCH] 9p: fscache: fix build breakage introduced by 201a15428bd54f83eccec8b7c64a04b8f9431204
|
||||
|
||||
While building 2.6.32-rc8-git2 for Fedora I noticed the following thinko in
|
||||
201a15428bd54f83eccec8b7c64a04b8f9431204. Patch below looks to be correct?
|
||||
|
||||
Signed-off-by: Kyle McMartin <kyle@redhat.com>
|
||||
|
||||
---
|
||||
diff --git a/fs/9p/cache.c b/fs/9p/cache.c
|
||||
index bcc5357..e777961 100644
|
||||
--- a/fs/9p/cache.c
|
||||
+++ b/fs/9p/cache.c
|
||||
@@ -343,7 +343,7 @@ int __v9fs_fscache_release_page(struct page *page, gfp_t gfp)
|
||||
|
||||
BUG_ON(!vcookie->fscache);
|
||||
|
||||
- return fscache_maybe_release_page(vnode->cache, page, gfp);
|
||||
+ return fscache_maybe_release_page(vcookie->fscache, page, gfp);
|
||||
}
|
||||
|
||||
void __v9fs_fscache_invalidate_page(struct page *page)
|
||||
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
|
||||
2
flavors
2
flavors
|
|
@ -1,2 +0,0 @@
|
|||
rhel
|
||||
fedora
|
||||
14
gating.yaml
14
gating.yaml
|
|
@ -1,14 +0,0 @@
|
|||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-*
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: cki.tier1-aarch64.functional}
|
||||
- !PassingTestCaseRule {test_case_name: cki.tier1-ppc64le.functional}
|
||||
- !PassingTestCaseRule {test_case_name: cki.tier1-s390x.functional}
|
||||
- !PassingTestCaseRule {test_case_name: cki.tier1-x86_64.functional}
|
||||
- !PassingTestCaseRule {test_case_name: s1-aws-ci_x86_64.brew-build.tier1.functional}
|
||||
- !PassingTestCaseRule {test_case_name: s1-aws-ci_aarch64.brew-build.tier1.functional}
|
||||
- !PassingTestCaseRule {test_case_name: s1-azure-ci_x86_64.brew-build.tier1.functional}
|
||||
- !PassingTestCaseRule {test_case_name: s1-azure-ci_aarch64.brew-build.tier1.functional}
|
||||
- !PassingTestCaseRule {test_case_name: s1-gcp-ci.brew-build.tier1.functional}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Adjusts the configuration options to build the variants correctly
|
||||
|
||||
test -n "$RHTEST" && exit 0
|
||||
|
||||
DEBUGBUILDSENABLED=$1
|
||||
if [ -z "$DEBUGBUILDSENABLED" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$FLAVOR" ]; then
|
||||
FLAVOR=rhel
|
||||
fi
|
||||
|
||||
if [ "$FLAVOR" = "fedora" ]; then
|
||||
SECONDARY=rhel
|
||||
else
|
||||
SECONDARY=fedora
|
||||
fi
|
||||
|
||||
# The +1 is to remove the - at the end of the SPECPACKAGE_NAME string
|
||||
specpackage_name_len=$((${#SPECPACKAGE_NAME} + 1))
|
||||
for i in "${SPECPACKAGE_NAME}"*-"$FLAVOR".config; do
|
||||
# shellcheck disable=SC3057
|
||||
NEW=${SPECPACKAGE_NAME}-"$SPECRPMVERSION"-$(echo "${i:$specpackage_name_len}" | sed s/-"$FLAVOR"//)
|
||||
mv "$i" "$NEW"
|
||||
done
|
||||
|
||||
rm -f kernel-*-"$SECONDARY".config
|
||||
|
||||
if [ "$DEBUGBUILDSENABLED" -eq 0 ]; then
|
||||
for i in "${SPECPACKAGE_NAME}"-*debug*.config; do
|
||||
base=$(echo "$i" | sed -r s/-?debug//g)
|
||||
NEW=${SPECPACKAGE_NAME}-$(echo "$base" | cut -d - -f2-)
|
||||
mv "$i" "$NEW"
|
||||
done
|
||||
fi
|
||||
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
|
||||
319
git-bluetooth.patch
Normal file
319
git-bluetooth.patch
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
commit 711909b33d6fdee149b5cb58bd888e7c10407acb
|
||||
Author: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed Apr 21 15:24:56 2010 +0100
|
||||
|
||||
Add support for the Wacom Intuos 4 wireless
|
||||
|
||||
And to the HID blacklist.
|
||||
|
||||
Same command set as the Graphire Bluetooth tablet.
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
commit 1e03f3dc79ae5a9456545702f6dcac1023b06666
|
||||
Author: Antonio Ospite <ospite@studenti.unina.it>
|
||||
Date: Thu Apr 29 23:59:34 2010 +0200
|
||||
|
||||
hid/hid-sony: fix sony_set_operational_bt
|
||||
|
||||
Don't send the report type as part of the data, this prevents the
|
||||
controller from going into the operational state at all.
|
||||
|
||||
This is completely equivalent to what the code originally meant to accomplish:
|
||||
as per in net/bluetooth/hidp/core.c::hidp_output_raw_report(), by using
|
||||
HID_FEATURE_REPORT here, what will be actually sent is
|
||||
(HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE) which is exactly 0x53.
|
||||
|
||||
Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
|
||||
|
||||
commit ea42416024fb33c970dbc10a6c69c0831126d75e
|
||||
Author: Jiri Kosina <jkosina@suse.cz>
|
||||
Date: Wed Feb 3 15:52:31 2010 +0100
|
||||
|
||||
HID: make Wacom modesetting failures non-fatal
|
||||
|
||||
With Wacom tablet mode-setting moved from userspace into kernel,
|
||||
we don't have to consider failures of device queries through the
|
||||
_raw callback as hard failure, as the driver can safely continue
|
||||
anyway.
|
||||
|
||||
This is consistent with the current USB driver in wacom_sys.c
|
||||
|
||||
Reported-by: Ping Cheng <pinglinux@gmail.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
|
||||
commit a37234f5fcd6ad44ada8c477c2ab531f3ed9fbe5
|
||||
Author: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed Jan 20 12:01:53 2010 +0000
|
||||
|
||||
HID: Enable Sixaxis controller over Bluetooth
|
||||
|
||||
Now that hid_output_raw_report works, port the PS3 Sixaxis
|
||||
Bluetooth quirk from user-space, into kernel-space.
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
Acked-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
|
||||
commit 6bc702ac6551532774171d593a805c3565befb4e
|
||||
Author: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed Jan 20 12:00:53 2010 +0000
|
||||
|
||||
HID: Implement Wacom quirk in the kernel
|
||||
|
||||
The hid-wacom driver required user-space to poke at the tablet
|
||||
to make it send data about the cursor location.
|
||||
|
||||
This patch makes it do the same thing but in the kernel.
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
Acked-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
|
||||
commit 6fd920bdba1752fdd6411a55b3c17e0fda67b8d2
|
||||
Author: Jiri Kosina <jkosina@suse.cz>
|
||||
Date: Fri Jan 29 15:03:36 2010 +0100
|
||||
|
||||
HID: make raw reports possible for both feature and output reports
|
||||
|
||||
In commit 2da31939a42 ("Bluetooth: Implement raw output support for HIDP
|
||||
layer"), support for Bluetooth hid_output_raw_report was added, but it
|
||||
pushes the data to the intr socket instead of the ctrl one. This has been
|
||||
fixed by 6bf8268f9a91f1 ("Bluetooth: Use the control channel for raw HID reports")
|
||||
|
||||
Still, it is necessary to distinguish whether the report in question should be
|
||||
either FEATURE or OUTPUT. For this, we have to extend the generic HID API,
|
||||
so that hid_output_raw_report() callback provides means to specify this
|
||||
value so that it can be passed down to lower level hardware drivers (currently
|
||||
Bluetooth and USB).
|
||||
|
||||
Based on original patch by Bastien Nocera <hadess@hadess.net>
|
||||
Acked-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index 8455f3d..112568e 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -1340,6 +1340,7 @@ static const struct hid_device_id hid_blacklist[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
|
||||
@@ -1352,6 +1353,7 @@ static const struct hid_device_id hid_blacklist[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_TWINHAN, USB_DEVICE_ID_TWINHAN_IR_REMOTE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SMARTJOY_PLUS) },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH) },
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
|
||||
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 793691f..4ccd60b 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -428,6 +428,7 @@
|
||||
|
||||
#define USB_VENDOR_ID_WACOM 0x056a
|
||||
#define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH 0x81
|
||||
+#define USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH 0xbd
|
||||
|
||||
#define USB_VENDOR_ID_WISEGROUP 0x0925
|
||||
#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005
|
||||
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
|
||||
index 4e84502..e71da89 100644
|
||||
--- a/drivers/hid/hid-sony.c
|
||||
+++ b/drivers/hid/hid-sony.c
|
||||
@@ -48,7 +48,7 @@ static void sony_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
* to "operational". Without this, the ps3 controller will not report any
|
||||
* events.
|
||||
*/
|
||||
-static int sony_set_operational(struct hid_device *hdev)
|
||||
+static int sony_set_operational_usb(struct hid_device *hdev)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
struct usb_device *dev = interface_to_usbdev(intf);
|
||||
@@ -73,6 +73,12 @@ static int sony_set_operational(struct hid_device *hdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int sony_set_operational_bt(struct hid_device *hdev)
|
||||
+{
|
||||
+ unsigned char buf[] = { 0xf4, 0x42, 0x03, 0x00, 0x00 };
|
||||
+ return hdev->hid_output_raw_report(hdev, buf, sizeof(buf), HID_FEATURE_REPORT);
|
||||
+}
|
||||
+
|
||||
static int sony_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
{
|
||||
int ret;
|
||||
@@ -101,7 +107,17 @@ static int sony_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
- ret = sony_set_operational(hdev);
|
||||
+ switch (hdev->bus) {
|
||||
+ case BUS_USB:
|
||||
+ ret = sony_set_operational_usb(hdev);
|
||||
+ break;
|
||||
+ case BUS_BLUETOOTH:
|
||||
+ ret = sony_set_operational_bt(hdev);
|
||||
+ break;
|
||||
+ default:
|
||||
+ ret = 0;
|
||||
+ }
|
||||
+
|
||||
if (ret < 0)
|
||||
goto err_stop;
|
||||
|
||||
@@ -121,6 +137,7 @@ static void sony_remove(struct hid_device *hdev)
|
||||
|
||||
static const struct hid_device_id sony_devices[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE),
|
||||
.driver_data = VAIO_RDESC_CONSTANT },
|
||||
{ }
|
||||
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
|
||||
index 12dcda5..91dbae3 100644
|
||||
--- a/drivers/hid/hid-wacom.c
|
||||
+++ b/drivers/hid/hid-wacom.c
|
||||
@@ -156,7 +156,9 @@ static int wacom_probe(struct hid_device *hdev,
|
||||
struct hid_input *hidinput;
|
||||
struct input_dev *input;
|
||||
struct wacom_data *wdata;
|
||||
+ char rep_data[2];
|
||||
int ret;
|
||||
+ int limit;
|
||||
|
||||
wdata = kzalloc(sizeof(*wdata), GFP_KERNEL);
|
||||
if (wdata == NULL) {
|
||||
@@ -166,6 +168,7 @@ static int wacom_probe(struct hid_device *hdev,
|
||||
|
||||
hid_set_drvdata(hdev, wdata);
|
||||
|
||||
+ /* Parse the HID report now */
|
||||
ret = hid_parse(hdev);
|
||||
if (ret) {
|
||||
dev_err(&hdev->dev, "parse failed\n");
|
||||
@@ -178,6 +181,31 @@ static int wacom_probe(struct hid_device *hdev,
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * Note that if the raw queries fail, it's not a hard failure and it
|
||||
+ * is safe to continue
|
||||
+ */
|
||||
+
|
||||
+ /* Set Wacom mode2 */
|
||||
+ rep_data[0] = 0x03; rep_data[1] = 0x00;
|
||||
+ limit = 3;
|
||||
+ do {
|
||||
+ ret = hdev->hid_output_raw_report(hdev, rep_data, 2,
|
||||
+ HID_FEATURE_REPORT);
|
||||
+ } while (ret < 0 && limit-- > 0);
|
||||
+ if (ret < 0)
|
||||
+ dev_warn(&hdev->dev, "failed to poke device #1, %d\n", ret);
|
||||
+
|
||||
+ /* 0x06 - high reporting speed, 0x05 - low speed */
|
||||
+ rep_data[0] = 0x06; rep_data[1] = 0x00;
|
||||
+ limit = 3;
|
||||
+ do {
|
||||
+ ret = hdev->hid_output_raw_report(hdev, rep_data, 2,
|
||||
+ HID_FEATURE_REPORT);
|
||||
+ } while (ret < 0 && limit-- > 0);
|
||||
+ if (ret < 0)
|
||||
+ dev_warn(&hdev->dev, "failed to poke device #2, %d\n", ret);
|
||||
+
|
||||
hidinput = list_entry(hdev->inputs.next, struct hid_input, list);
|
||||
input = hidinput->input;
|
||||
|
||||
@@ -228,7 +256,7 @@ static void wacom_remove(struct hid_device *hdev)
|
||||
|
||||
static const struct hid_device_id wacom_devices[] = {
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH) },
|
||||
-
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(hid, wacom_devices);
|
||||
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
|
||||
index cdd1369..d044767 100644
|
||||
--- a/drivers/hid/hidraw.c
|
||||
+++ b/drivers/hid/hidraw.c
|
||||
@@ -134,7 +134,7 @@ static ssize_t hidraw_write(struct file *file, const char __user *buffer, size_t
|
||||
goto out;
|
||||
}
|
||||
|
||||
- ret = dev->hid_output_raw_report(dev, buf, count);
|
||||
+ ret = dev->hid_output_raw_report(dev, buf, count, HID_OUTPUT_REPORT);
|
||||
out:
|
||||
kfree(buf);
|
||||
return ret;
|
||||
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
|
||||
index 2f84237..83c9f94 100644
|
||||
--- a/drivers/hid/usbhid/hid-core.c
|
||||
+++ b/drivers/hid/usbhid/hid-core.c
|
||||
@@ -798,7 +798,8 @@ static int hid_alloc_buffers(struct usb_device *dev, struct hid_device *hid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t count)
|
||||
+static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t count,
|
||||
+ unsigned char report_type)
|
||||
{
|
||||
struct usbhid_device *usbhid = hid->driver_data;
|
||||
struct usb_device *dev = hid_to_usb_dev(hid);
|
||||
@@ -809,7 +810,7 @@ static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t co
|
||||
ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
|
||||
HID_REQ_SET_REPORT,
|
||||
USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
|
||||
- ((HID_OUTPUT_REPORT + 1) << 8) | *buf,
|
||||
+ ((report_type + 1) << 8) | *buf,
|
||||
interface->desc.bInterfaceNumber, buf + 1, count - 1,
|
||||
USB_CTRL_SET_TIMEOUT);
|
||||
|
||||
diff --git a/include/linux/hid.h b/include/linux/hid.h
|
||||
index 8709365..3661a62 100644
|
||||
--- a/include/linux/hid.h
|
||||
+++ b/include/linux/hid.h
|
||||
@@ -501,7 +501,7 @@ struct hid_device { /* device report descriptor */
|
||||
void (*hiddev_report_event) (struct hid_device *, struct hid_report *);
|
||||
|
||||
/* handler for raw output data, used by hidraw */
|
||||
- int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t);
|
||||
+ int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t, unsigned char);
|
||||
|
||||
/* debugging support via debugfs */
|
||||
unsigned short debug;
|
||||
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
|
||||
index fc6ec1e..280529a 100644
|
||||
--- a/net/bluetooth/hidp/core.c
|
||||
+++ b/net/bluetooth/hidp/core.c
|
||||
@@ -313,10 +313,21 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep
|
||||
return hidp_queue_report(session, buf, rsize);
|
||||
}
|
||||
|
||||
-static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count)
|
||||
+static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count,
|
||||
+ unsigned char report_type)
|
||||
{
|
||||
- if (hidp_send_ctrl_message(hid->driver_data,
|
||||
- HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE,
|
||||
+ switch (report_type) {
|
||||
+ case HID_FEATURE_REPORT:
|
||||
+ report_type = HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE;
|
||||
+ break;
|
||||
+ case HID_OUTPUT_REPORT:
|
||||
+ report_type = HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (hidp_send_ctrl_message(hid->driver_data, report_type,
|
||||
data, count))
|
||||
return -ENOMEM;
|
||||
return count;
|
||||
1812
git-linus.diff
Normal file
1812
git-linus.diff
Normal file
File diff suppressed because it is too large
Load diff
35
hda_intel-prealloc-4mb-dmabuffer.patch
Normal file
35
hda_intel-prealloc-4mb-dmabuffer.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
|
||||
index c8d9178..7d3bb15 100644
|
||||
--- a/sound/pci/hda/hda_intel.c
|
||||
+++ b/sound/pci/hda/hda_intel.c
|
||||
@@ -1774,6 +1774,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 >= AZX_MAX_PCMS) {
|
||||
snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n",
|
||||
@@ -1807,10 +1808,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;
|
||||
}
|
||||
|
||||
213
hdpvr-ir-enable.patch
Normal file
213
hdpvr-ir-enable.patch
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
diff -Naurp a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-core.c 2010-07-06 17:36:44.000000000 -0400
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-core.c 2010-07-06 17:38:13.000000000 -0400
|
||||
@@ -363,9 +363,8 @@ static int hdpvr_probe(struct usb_interf
|
||||
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;
|
||||
@@ -411,12 +410,9 @@ static void hdpvr_disconnect(struct usb_
|
||||
mutex_unlock(&dev->io_mutex);
|
||||
|
||||
/* deregister I2C adapter */
|
||||
-#ifdef CONFIG_I2C
|
||||
+#if defined(CONFIG_I2C) || defined(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 -Naurp a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
|
||||
--- a/drivers/media/video/hdpvr/hdpvr.h 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr.h 2010-07-06 17:42:20.000000000 -0400
|
||||
@@ -101,7 +101,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;
|
||||
|
||||
diff -Naurp a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-i2c.c 2010-07-06 17:36:51.000000000 -0400
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c 2010-07-06 17:45:50.000000000 -0400
|
||||
@@ -10,6 +10,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
|
||||
+
|
||||
#include <linux/i2c.h>
|
||||
|
||||
#include "hdpvr.h"
|
||||
@@ -19,10 +21,13 @@
|
||||
|
||||
#define REQTYPE_I2C_READ 0xb1
|
||||
#define REQTYPE_I2C_WRITE 0xb0
|
||||
-#define REQTYPE_I2C_WRITE_STATT 0xd0
|
||||
+#define REQTYPE_I2C_WRITE_STAT 0xd0
|
||||
+
|
||||
+#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, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+ char *data, int len, int bus)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -32,7 +37,7 @@ static int hdpvr_i2c_read(struct hdpvr_d
|
||||
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,7 +51,7 @@ static int hdpvr_i2c_read(struct hdpvr_d
|
||||
}
|
||||
|
||||
static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+ char *data, int len, int bus)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -57,17 +62,17 @@ static int hdpvr_i2c_write(struct hdpvr_
|
||||
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;
|
||||
|
||||
ret = usb_control_msg(dev->udev,
|
||||
usb_rcvctrlpipe(dev->udev, 0),
|
||||
- REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
|
||||
+ REQTYPE_I2C_WRITE_STAT, 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_ada
|
||||
|
||||
if (msgs[i].flags & I2C_M_RD)
|
||||
retval = hdpvr_i2c_read(dev, addr, msgs[i].buf,
|
||||
- msgs[i].len);
|
||||
+ msgs[i].len, 1);
|
||||
else
|
||||
retval = hdpvr_i2c_write(dev, addr, msgs[i].buf,
|
||||
- msgs[i].len);
|
||||
+ msgs[i].len, 1);
|
||||
}
|
||||
|
||||
mutex_unlock(&dev->i2c_mutex);
|
||||
@@ -114,31 +119,61 @@ static struct i2c_algorithm hdpvr_algo =
|
||||
.functionality = hdpvr_functionality,
|
||||
};
|
||||
|
||||
+static struct i2c_adapter hdpvr_i2c_adap_template = {
|
||||
+ .name = "Hauppauge HD PVR I2C",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .id = I2C_HW_B_HDPVR,
|
||||
+ .algo = &hdpvr_algo,
|
||||
+ .algo_data = NULL,
|
||||
+ .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, 0x54, buffer, 1, 0);
|
||||
+
|
||||
+ buffer[0] = 0;
|
||||
+ buffer[1] = 0x8;
|
||||
+ hdpvr_i2c_write(dev, 0x54, buffer, 2, 1);
|
||||
+
|
||||
+ buffer[1] = 0x18;
|
||||
+ hdpvr_i2c_write(dev, 0x54, buffer, 2, 1);
|
||||
+
|
||||
+ 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)
|
||||
+ hdpvr_activate_ir(dev);
|
||||
+
|
||||
+ memcpy(&dev->i2c_adapter, &hdpvr_i2c_adap_template,
|
||||
+ sizeof(struct i2c_adapter));
|
||||
+ dev->i2c_adapter.dev.parent = &dev->udev->dev;
|
||||
+
|
||||
+ i2c_set_adapdata(&dev->i2c_adapter, dev);
|
||||
+
|
||||
+ retval = i2c_add_adapter(&dev->i2c_adapter);
|
||||
+
|
||||
+ if (retval)
|
||||
goto error;
|
||||
|
||||
- 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;
|
||||
-
|
||||
- i2c_set_adapdata(i2c_adap, dev);
|
||||
-
|
||||
- retval = i2c_add_adapter(i2c_adap);
|
||||
-
|
||||
- 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 /* CONFIG_I2C */
|
||||
diff -Naurp a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
|
||||
--- a/drivers/media/video/hdpvr/Makefile 2010-07-06 17:36:38.000000000 -0400
|
||||
+++ b/drivers/media/video/hdpvr/Makefile 2010-07-06 17:35:17.000000000 -0400
|
||||
@@ -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-i2c.o hdpvr-video.o
|
||||
|
||||
obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
|
||||
|
||||
72
ibmvscsi-fix-DMA-API-misuse.patch
Normal file
72
ibmvscsi-fix-DMA-API-misuse.patch
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
From b395ecef0de15c10459856e56a590ac1fe16be76 Mon Sep 17 00:00:00 2001
|
||||
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
||||
Date: Fri, 2 Apr 2010 15:50:24 +0900
|
||||
Subject: [SCSI] ibmvscsi: fix DMA API misuse
|
||||
|
||||
ibmvscsi uses dma_unmap_single() for buffers mapped via
|
||||
dma_map_sg(). It works however it's the API violation. The DMA debug
|
||||
facility complains about it:
|
||||
|
||||
http://marc.info/?l=linux-scsi&m=127018555013151&w=2
|
||||
|
||||
Reported-by: Sachin Sant <sachinp@in.ibm.com>
|
||||
Tested-by: Sachin Sant <sachinp@in.ibm.com>
|
||||
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
||||
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
|
||||
|
||||
(cherry picked from a71fa1fc43a29133f13ae6ada1a389ca298c0934)
|
||||
---
|
||||
drivers/scsi/ibmvscsi/ibmvscsi.c | 29 ++---------------------------
|
||||
1 files changed, 2 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
|
||||
index e475b79..3b14bbe 100644
|
||||
--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
|
||||
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
|
||||
@@ -321,16 +321,6 @@ static void set_srp_direction(struct scsi_cmnd *cmd,
|
||||
srp_cmd->buf_fmt = fmt;
|
||||
}
|
||||
|
||||
-static void unmap_sg_list(int num_entries,
|
||||
- struct device *dev,
|
||||
- struct srp_direct_buf *md)
|
||||
-{
|
||||
- int i;
|
||||
-
|
||||
- for (i = 0; i < num_entries; ++i)
|
||||
- dma_unmap_single(dev, md[i].va, md[i].len, DMA_BIDIRECTIONAL);
|
||||
-}
|
||||
-
|
||||
/**
|
||||
* unmap_cmd_data: - Unmap data pointed in srp_cmd based on the format
|
||||
* @cmd: srp_cmd whose additional_data member will be unmapped
|
||||
@@ -348,24 +338,9 @@ static void unmap_cmd_data(struct srp_cmd *cmd,
|
||||
|
||||
if (out_fmt == SRP_NO_DATA_DESC && in_fmt == SRP_NO_DATA_DESC)
|
||||
return;
|
||||
- else if (out_fmt == SRP_DATA_DESC_DIRECT ||
|
||||
- in_fmt == SRP_DATA_DESC_DIRECT) {
|
||||
- struct srp_direct_buf *data =
|
||||
- (struct srp_direct_buf *) cmd->add_data;
|
||||
- dma_unmap_single(dev, data->va, data->len, DMA_BIDIRECTIONAL);
|
||||
- } else {
|
||||
- struct srp_indirect_buf *indirect =
|
||||
- (struct srp_indirect_buf *) cmd->add_data;
|
||||
- int num_mapped = indirect->table_desc.len /
|
||||
- sizeof(struct srp_direct_buf);
|
||||
|
||||
- if (num_mapped <= MAX_INDIRECT_BUFS) {
|
||||
- unmap_sg_list(num_mapped, dev, &indirect->desc_list[0]);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- unmap_sg_list(num_mapped, dev, evt_struct->ext_list);
|
||||
- }
|
||||
+ if (evt_struct->cmnd)
|
||||
+ scsi_dma_unmap(evt_struct->cmnd);
|
||||
}
|
||||
|
||||
static int map_sg_list(struct scsi_cmnd *cmd, int nseg,
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
25
inotify-fix-inotify-oneshot-support.patch
Normal file
25
inotify-fix-inotify-oneshot-support.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#607327
|
||||
|
||||
During the large inotify rewrite to fsnotify I completely dropped support
|
||||
for IN_ONESHOT. Reimplement that support.
|
||||
|
||||
Signed-off-by: Eric Paris <eparis@redhat.com>
|
||||
---
|
||||
|
||||
fs/notify/inotify/inotify_fsnotify.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/fs/notify/inotify/inotify_fsnotify.c b/fs/notify/inotify/inotify_fsnotify.c
|
||||
index daa666a..388a150 100644
|
||||
--- a/fs/notify/inotify/inotify_fsnotify.c
|
||||
+++ b/fs/notify/inotify/inotify_fsnotify.c
|
||||
@@ -126,6 +126,9 @@ static int inotify_handle_event(struct fsnotify_group *group, struct fsnotify_ev
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
+ if (entry->mask & IN_ONESHOT)
|
||||
+ fsnotify_destroy_mark_by_entry(entry);
|
||||
+
|
||||
/*
|
||||
* If we hold the entry until after the event is on the queue
|
||||
* IN_IGNORED won't be able to pass this event in the queue
|
||||
29
inotify-send-IN_UNMOUNT-events.patch
Normal file
29
inotify-send-IN_UNMOUNT-events.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#607327 ?
|
||||
|
||||
Since the .31 or so notify rewrite inotify has not sent events about
|
||||
inodes which are unmounted. This patch restores those events.
|
||||
|
||||
Signed-off-by: Eric Paris <eparis@redhat.com>
|
||||
---
|
||||
|
||||
fs/notify/inotify/inotify_user.c | 7 +++++--
|
||||
1 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
|
||||
index 44aeb0f..f381daf 100644
|
||||
--- a/fs/notify/inotify/inotify_user.c
|
||||
+++ b/fs/notify/inotify/inotify_user.c
|
||||
@@ -90,8 +90,11 @@ static inline __u32 inotify_arg_to_mask(u32 arg)
|
||||
{
|
||||
__u32 mask;
|
||||
|
||||
- /* everything should accept their own ignored and cares about children */
|
||||
- mask = (FS_IN_IGNORED | FS_EVENT_ON_CHILD);
|
||||
+ /*
|
||||
+ * everything should accept their own ignored, cares about children,
|
||||
+ * and should receive events when the inode is unmounted
|
||||
+ */
|
||||
+ mask = (FS_IN_IGNORED | FS_EVENT_ON_CHILD | FS_UNMOUNT);
|
||||
|
||||
/* mask off the flags used to open the fd */
|
||||
mask |= (arg & (IN_ALL_EVENTS | IN_ONESHOT));
|
||||
123
iwlwifi-fix-internal-scan-race.patch
Normal file
123
iwlwifi-fix-internal-scan-race.patch
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
From reinette.chatre@intel.com Thu May 13 17:49:59 2010
|
||||
Return-path: <reinette.chatre@intel.com>
|
||||
Envelope-to: linville@tuxdriver.com
|
||||
Delivery-date: Thu, 13 May 2010 17:49:59 -0400
|
||||
Received: from mga09.intel.com ([134.134.136.24])
|
||||
by smtp.tuxdriver.com with esmtp (Exim 4.63)
|
||||
(envelope-from <reinette.chatre@intel.com>)
|
||||
id 1OCgI1-0007H3-Eg
|
||||
for linville@tuxdriver.com; Thu, 13 May 2010 17:49:59 -0400
|
||||
Received: from orsmga002.jf.intel.com ([10.7.209.21])
|
||||
by orsmga102.jf.intel.com with ESMTP; 13 May 2010 14:48:04 -0700
|
||||
X-ExtLoop1: 1
|
||||
X-IronPort-AV: E=Sophos;i="4.53,224,1272870000";
|
||||
d="scan'208";a="517743256"
|
||||
Received: from rchatre-desk.amr.corp.intel.com.jf.intel.com (HELO localhost.localdomain) ([134.134.15.94])
|
||||
by orsmga002.jf.intel.com with ESMTP; 13 May 2010 14:49:12 -0700
|
||||
From: Reinette Chatre <reinette.chatre@intel.com>
|
||||
To: linville@tuxdriver.com
|
||||
Cc: linux-wireless@vger.kernel.org, ipw3945-devel@lists.sourceforge.net, Reinette Chatre <reinette.chatre@intel.com>
|
||||
Subject: [PATCH 1/2] iwlwifi: fix internal scan race
|
||||
Date: Thu, 13 May 2010 14:49:44 -0700
|
||||
Message-Id: <1273787385-9248-2-git-send-email-reinette.chatre@intel.com>
|
||||
X-Mailer: git-send-email 1.6.3.3
|
||||
In-Reply-To: <1273787385-9248-1-git-send-email-reinette.chatre@intel.com>
|
||||
References: <1273787385-9248-1-git-send-email-reinette.chatre@intel.com>
|
||||
X-Spam-Score: -4.2 (----)
|
||||
X-Spam-Status: No
|
||||
Status: RO
|
||||
Content-Length: 3370
|
||||
Lines: 91
|
||||
|
||||
From: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
It is possible for internal scan to race against itself if the device is
|
||||
not returning the scan results from first requests. What happens in this
|
||||
case is the cleanup done during the abort of the first internal scan also
|
||||
cleans up part of the new scan, causing it to access memory it shouldn't.
|
||||
|
||||
Here are details:
|
||||
* First internal scan is triggered and scan command sent to device.
|
||||
* After seven seconds there is no scan results so the watchdog timer
|
||||
triggers a scan abort.
|
||||
* The scan abort succeeds and a SCAN_COMPLETE_NOTIFICATION is received for
|
||||
failed scan.
|
||||
* During processing of SCAN_COMPLETE_NOTIFICATION we clear STATUS_SCANNING
|
||||
and queue the "scan_completed" work.
|
||||
** At this time, since the problem that caused the internal scan in first
|
||||
place is still present, a new internal scan is triggered.
|
||||
The behavior at this point is a bit different between 2.6.34 and 2.6.35
|
||||
since 2.6.35 has a lot of this synchronized. The rest of the race
|
||||
description will thus be generalized.
|
||||
** As part of preparing for the scan "is_internal_short_scan" is set to
|
||||
true.
|
||||
* At this point the completion work for fist scan is run. As part of this
|
||||
there is some locking missing around the "is_internal_short_scan"
|
||||
variable and it is set to "false".
|
||||
** Now the second scan runs and it considers itself a real (not internal0
|
||||
scan and thus causes problems with wrong memory being accessed.
|
||||
|
||||
The fix is twofold.
|
||||
* Since "is_internal_short_scan" should be protected by mutex, fix this in
|
||||
scan completion work so that changes to it can be serialized.
|
||||
* Do not queue a new internal scan if one is in progress.
|
||||
|
||||
This fixes https://bugzilla.kernel.org/show_bug.cgi?id=15824
|
||||
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-scan.c | 21 ++++++++++++++++++---
|
||||
1 files changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
index 2367286..a2c4855 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
@@ -560,6 +560,11 @@ static void iwl_bg_start_internal_scan(struct work_struct *work)
|
||||
|
||||
mutex_lock(&priv->mutex);
|
||||
|
||||
+ if (priv->is_internal_short_scan == true) {
|
||||
+ IWL_DEBUG_SCAN(priv, "Internal scan already in progress\n");
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+
|
||||
if (!iwl_is_ready_rf(priv)) {
|
||||
IWL_DEBUG_SCAN(priv, "not ready or exit pending\n");
|
||||
goto unlock;
|
||||
@@ -957,17 +962,27 @@ void iwl_bg_scan_completed(struct work_struct *work)
|
||||
{
|
||||
struct iwl_priv *priv =
|
||||
container_of(work, struct iwl_priv, scan_completed);
|
||||
+ bool internal = false;
|
||||
|
||||
IWL_DEBUG_SCAN(priv, "SCAN complete scan\n");
|
||||
|
||||
cancel_delayed_work(&priv->scan_check);
|
||||
|
||||
- if (!priv->is_internal_short_scan)
|
||||
- ieee80211_scan_completed(priv->hw, false);
|
||||
- else {
|
||||
+ mutex_lock(&priv->mutex);
|
||||
+ if (priv->is_internal_short_scan) {
|
||||
priv->is_internal_short_scan = false;
|
||||
IWL_DEBUG_SCAN(priv, "internal short scan completed\n");
|
||||
+ internal = true;
|
||||
}
|
||||
+ mutex_unlock(&priv->mutex);
|
||||
+
|
||||
+ /*
|
||||
+ * Do not hold mutex here since this will cause mac80211 to call
|
||||
+ * into driver again into functions that will attempt to take
|
||||
+ * mutex.
|
||||
+ */
|
||||
+ if (!internal)
|
||||
+ ieee80211_scan_completed(priv->hw, false);
|
||||
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return;
|
||||
--
|
||||
1.6.3.3
|
||||
|
||||
|
||||
|
||||
139
iwlwifi-fix-scan-races.patch
Normal file
139
iwlwifi-fix-scan-races.patch
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
commit 88be026490ed89c2ffead81a52531fbac5507e01
|
||||
Author: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Wed Apr 7 00:21:36 2010 -0700
|
||||
|
||||
iwlwifi: fix scan races
|
||||
|
||||
When an internal scan is started, nothing protects the
|
||||
is_internal_short_scan variable which can cause crashes,
|
||||
cf. https://bugzilla.kernel.org/show_bug.cgi?id=15667.
|
||||
Fix this by making the short scan request use the mutex
|
||||
for locking, which requires making the request go to a
|
||||
work struct so that it can sleep.
|
||||
|
||||
Reported-by: Peter Zijlstra <peterz@infradead.org>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
index e4c2e1e..ba0fdba 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
@@ -3330,6 +3330,7 @@ static void iwl_cancel_deferred_work(struct iwl_priv *priv)
|
||||
|
||||
cancel_delayed_work_sync(&priv->init_alive_start);
|
||||
cancel_delayed_work(&priv->scan_check);
|
||||
+ cancel_work_sync(&priv->start_internal_scan);
|
||||
cancel_delayed_work(&priv->alive_start);
|
||||
cancel_work_sync(&priv->beacon_update);
|
||||
del_timer_sync(&priv->statistics_periodic);
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
index 894bcb8..1459cdb 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
@@ -3357,7 +3357,6 @@ static void iwl_force_rf_reset(struct iwl_priv *priv)
|
||||
*/
|
||||
IWL_DEBUG_INFO(priv, "perform radio reset.\n");
|
||||
iwl_internal_short_hw_scan(priv);
|
||||
- return;
|
||||
}
|
||||
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
index 732590f..36940a9 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
@@ -506,7 +506,7 @@ void iwl_init_scan_params(struct iwl_priv *priv);
|
||||
int iwl_scan_cancel(struct iwl_priv *priv);
|
||||
int iwl_scan_cancel_timeout(struct iwl_priv *priv, unsigned long ms);
|
||||
int iwl_mac_hw_scan(struct ieee80211_hw *hw, struct cfg80211_scan_request *req);
|
||||
-int iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
||||
+void iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
||||
int iwl_force_reset(struct iwl_priv *priv, int mode);
|
||||
u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
|
||||
const u8 *ie, int ie_len, int left);
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
index 6054c5f..ef1720a 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
@@ -1296,6 +1296,7 @@ struct iwl_priv {
|
||||
struct work_struct tt_work;
|
||||
struct work_struct ct_enter;
|
||||
struct work_struct ct_exit;
|
||||
+ struct work_struct start_internal_scan;
|
||||
|
||||
struct tasklet_struct irq_tasklet;
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
index bd2f7c4..5062f4e 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
@@ -469,6 +469,8 @@ EXPORT_SYMBOL(iwl_init_scan_params);
|
||||
|
||||
static int iwl_scan_initiate(struct iwl_priv *priv)
|
||||
{
|
||||
+ WARN_ON(!mutex_is_locked(&priv->mutex));
|
||||
+
|
||||
IWL_DEBUG_INFO(priv, "Starting scan...\n");
|
||||
set_bit(STATUS_SCANNING, &priv->status);
|
||||
priv->is_internal_short_scan = false;
|
||||
@@ -546,24 +548,31 @@ EXPORT_SYMBOL(iwl_mac_hw_scan);
|
||||
* internal short scan, this function should only been called while associated.
|
||||
* It will reset and tune the radio to prevent possible RF related problem
|
||||
*/
|
||||
-int iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
+void iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
{
|
||||
- int ret = 0;
|
||||
+ queue_work(priv->workqueue, &priv->start_internal_scan);
|
||||
+}
|
||||
+
|
||||
+static void iwl_bg_start_internal_scan(struct work_struct *work)
|
||||
+{
|
||||
+ struct iwl_priv *priv =
|
||||
+ container_of(work, struct iwl_priv, start_internal_scan);
|
||||
+
|
||||
+ mutex_lock(&priv->mutex);
|
||||
|
||||
if (!iwl_is_ready_rf(priv)) {
|
||||
- ret = -EIO;
|
||||
IWL_DEBUG_SCAN(priv, "not ready or exit pending\n");
|
||||
- goto out;
|
||||
+ goto unlock;
|
||||
}
|
||||
+
|
||||
if (test_bit(STATUS_SCANNING, &priv->status)) {
|
||||
IWL_DEBUG_SCAN(priv, "Scan already in progress.\n");
|
||||
- ret = -EAGAIN;
|
||||
- goto out;
|
||||
+ goto unlock;
|
||||
}
|
||||
+
|
||||
if (test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
|
||||
IWL_DEBUG_SCAN(priv, "Scan request while abort pending\n");
|
||||
- ret = -EAGAIN;
|
||||
- goto out;
|
||||
+ goto unlock;
|
||||
}
|
||||
|
||||
priv->scan_bands = 0;
|
||||
@@ -576,9 +585,8 @@ int iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
set_bit(STATUS_SCANNING, &priv->status);
|
||||
priv->is_internal_short_scan = true;
|
||||
queue_work(priv->workqueue, &priv->request_scan);
|
||||
-
|
||||
-out:
|
||||
- return ret;
|
||||
+ unlock:
|
||||
+ mutex_unlock(&priv->mutex);
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_internal_short_hw_scan);
|
||||
|
||||
@@ -964,6 +972,7 @@ void iwl_setup_scan_deferred_work(struct iwl_priv *priv)
|
||||
INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed);
|
||||
INIT_WORK(&priv->request_scan, iwl_bg_request_scan);
|
||||
INIT_WORK(&priv->abort_scan, iwl_bg_abort_scan);
|
||||
+ INIT_WORK(&priv->start_internal_scan, iwl_bg_start_internal_scan);
|
||||
INIT_DELAYED_WORK(&priv->scan_check, iwl_bg_scan_check);
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_setup_scan_deferred_work);
|
||||
361
iwlwifi-manage-QoS-by-mac-stack.patch
Normal file
361
iwlwifi-manage-QoS-by-mac-stack.patch
Normal file
|
|
@ -0,0 +1,361 @@
|
|||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org, "John W. Linville" <linville@redhat.com>
|
||||
Subject: [PATCH 2/4 2.6.33.y] iwlwifi: manage QoS by mac stack
|
||||
Date: Fri, 11 Jun 2010 17:04:18 +0200
|
||||
|
||||
commit e61146e36b40fd9d346118c40285913236c329f3 upstream.
|
||||
|
||||
We activate/deactivate QoS and setup default queue parameters in iwlwifi
|
||||
driver. Mac stack do the same, so we do not need repeat that work here.
|
||||
Stack also will tell when disable QoS, this will fix driver when working
|
||||
with older APs, that do not have QoS implemented.
|
||||
|
||||
Patch make "force = true" in iwl_active_qos() assuming we always want
|
||||
to do with QoS what mac stack wish.
|
||||
|
||||
Patch also remove unused qos_cap bits, do not initialize qos_active = 0,
|
||||
as we have it initialized to zero by kzalloc.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-agn.c | 15 ---
|
||||
drivers/net/wireless/iwlwifi/iwl-core.c | 142 +++------------------------
|
||||
drivers/net/wireless/iwlwifi/iwl-core.h | 3 +-
|
||||
drivers/net/wireless/iwlwifi/iwl-dev.h | 21 ----
|
||||
drivers/net/wireless/iwlwifi/iwl3945-base.c | 7 --
|
||||
5 files changed, 17 insertions(+), 171 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
index 5622a55..9ba4207 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
@@ -2327,7 +2327,6 @@ void iwl_post_associate(struct iwl_priv *priv)
|
||||
{
|
||||
struct ieee80211_conf *conf = NULL;
|
||||
int ret = 0;
|
||||
- unsigned long flags;
|
||||
|
||||
if (priv->iw_mode == NL80211_IFTYPE_AP) {
|
||||
IWL_ERR(priv, "%s Should not be called in AP mode\n", __func__);
|
||||
@@ -2412,10 +2411,6 @@ void iwl_post_associate(struct iwl_priv *priv)
|
||||
if (priv->iw_mode == NL80211_IFTYPE_ADHOC)
|
||||
priv->assoc_station_added = 1;
|
||||
|
||||
- spin_lock_irqsave(&priv->lock, flags);
|
||||
- iwl_activate_qos(priv, 0);
|
||||
- spin_unlock_irqrestore(&priv->lock, flags);
|
||||
-
|
||||
/* the chain noise calibration will enabled PM upon completion
|
||||
* If chain noise has already been run, then we need to enable
|
||||
* power management here */
|
||||
@@ -2602,7 +2597,6 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
||||
void iwl_config_ap(struct iwl_priv *priv)
|
||||
{
|
||||
int ret = 0;
|
||||
- unsigned long flags;
|
||||
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return;
|
||||
@@ -2654,10 +2648,6 @@ void iwl_config_ap(struct iwl_priv *priv)
|
||||
/* restore RXON assoc */
|
||||
priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
|
||||
iwlcore_commit_rxon(priv);
|
||||
- iwl_reset_qos(priv);
|
||||
- spin_lock_irqsave(&priv->lock, flags);
|
||||
- iwl_activate_qos(priv, 1);
|
||||
- spin_unlock_irqrestore(&priv->lock, flags);
|
||||
iwl_add_bcast_station(priv);
|
||||
}
|
||||
iwl_send_beacon_cmd(priv);
|
||||
@@ -3195,11 +3185,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
|
||||
|
||||
iwl_init_scan_params(priv);
|
||||
|
||||
- iwl_reset_qos(priv);
|
||||
-
|
||||
- priv->qos_data.qos_active = 0;
|
||||
- priv->qos_data.qos_cap.val = 0;
|
||||
-
|
||||
priv->rates_mask = IWL_RATES_MASK;
|
||||
/* Set the tx_power_user_lmt to the lowest power level
|
||||
* this value will get overwritten by channel max power avg
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
index 6e9e156..d79b1e9 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
@@ -301,17 +301,13 @@ EXPORT_SYMBOL(iwl_hw_nic_init);
|
||||
/*
|
||||
* QoS support
|
||||
*/
|
||||
-void iwl_activate_qos(struct iwl_priv *priv, u8 force)
|
||||
+static void iwl_update_qos(struct iwl_priv *priv)
|
||||
{
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return;
|
||||
|
||||
priv->qos_data.def_qos_parm.qos_flags = 0;
|
||||
|
||||
- if (priv->qos_data.qos_cap.q_AP.queue_request &&
|
||||
- !priv->qos_data.qos_cap.q_AP.txop_request)
|
||||
- priv->qos_data.def_qos_parm.qos_flags |=
|
||||
- QOS_PARAM_FLG_TXOP_TYPE_MSK;
|
||||
if (priv->qos_data.qos_active)
|
||||
priv->qos_data.def_qos_parm.qos_flags |=
|
||||
QOS_PARAM_FLG_UPDATE_EDCA_MSK;
|
||||
@@ -319,118 +315,14 @@ void iwl_activate_qos(struct iwl_priv *priv, u8 force)
|
||||
if (priv->current_ht_config.is_ht)
|
||||
priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK;
|
||||
|
||||
- if (force || iwl_is_associated(priv)) {
|
||||
- IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
|
||||
- priv->qos_data.qos_active,
|
||||
- priv->qos_data.def_qos_parm.qos_flags);
|
||||
+ IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
|
||||
+ priv->qos_data.qos_active,
|
||||
+ priv->qos_data.def_qos_parm.qos_flags);
|
||||
|
||||
- iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
|
||||
- sizeof(struct iwl_qosparam_cmd),
|
||||
- &priv->qos_data.def_qos_parm, NULL);
|
||||
- }
|
||||
+ iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
|
||||
+ sizeof(struct iwl_qosparam_cmd),
|
||||
+ &priv->qos_data.def_qos_parm, NULL);
|
||||
}
|
||||
-EXPORT_SYMBOL(iwl_activate_qos);
|
||||
-
|
||||
-/*
|
||||
- * AC CWmin CW max AIFSN TXOP Limit TXOP Limit
|
||||
- * (802.11b) (802.11a/g)
|
||||
- * AC_BK 15 1023 7 0 0
|
||||
- * AC_BE 15 1023 3 0 0
|
||||
- * AC_VI 7 15 2 6.016ms 3.008ms
|
||||
- * AC_VO 3 7 2 3.264ms 1.504ms
|
||||
- */
|
||||
-void iwl_reset_qos(struct iwl_priv *priv)
|
||||
-{
|
||||
- u16 cw_min = 15;
|
||||
- u16 cw_max = 1023;
|
||||
- u8 aifs = 2;
|
||||
- bool is_legacy = false;
|
||||
- unsigned long flags;
|
||||
- int i;
|
||||
-
|
||||
- spin_lock_irqsave(&priv->lock, flags);
|
||||
- /* QoS always active in AP and ADHOC mode
|
||||
- * In STA mode wait for association
|
||||
- */
|
||||
- if (priv->iw_mode == NL80211_IFTYPE_ADHOC ||
|
||||
- priv->iw_mode == NL80211_IFTYPE_AP)
|
||||
- priv->qos_data.qos_active = 1;
|
||||
- else
|
||||
- priv->qos_data.qos_active = 0;
|
||||
-
|
||||
- /* check for legacy mode */
|
||||
- if ((priv->iw_mode == NL80211_IFTYPE_ADHOC &&
|
||||
- (priv->active_rate & IWL_OFDM_RATES_MASK) == 0) ||
|
||||
- (priv->iw_mode == NL80211_IFTYPE_STATION &&
|
||||
- (priv->staging_rxon.flags & RXON_FLG_SHORT_SLOT_MSK) == 0)) {
|
||||
- cw_min = 31;
|
||||
- is_legacy = 1;
|
||||
- }
|
||||
-
|
||||
- if (priv->qos_data.qos_active)
|
||||
- aifs = 3;
|
||||
-
|
||||
- /* AC_BE */
|
||||
- priv->qos_data.def_qos_parm.ac[0].cw_min = cpu_to_le16(cw_min);
|
||||
- priv->qos_data.def_qos_parm.ac[0].cw_max = cpu_to_le16(cw_max);
|
||||
- priv->qos_data.def_qos_parm.ac[0].aifsn = aifs;
|
||||
- priv->qos_data.def_qos_parm.ac[0].edca_txop = 0;
|
||||
- priv->qos_data.def_qos_parm.ac[0].reserved1 = 0;
|
||||
-
|
||||
- if (priv->qos_data.qos_active) {
|
||||
- /* AC_BK */
|
||||
- i = 1;
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_min = cpu_to_le16(cw_min);
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_max = cpu_to_le16(cw_max);
|
||||
- priv->qos_data.def_qos_parm.ac[i].aifsn = 7;
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
|
||||
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
||||
-
|
||||
- /* AC_VI */
|
||||
- i = 2;
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
||||
- cpu_to_le16((cw_min + 1) / 2 - 1);
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
||||
- cpu_to_le16(cw_min);
|
||||
- priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
|
||||
- if (is_legacy)
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
||||
- cpu_to_le16(6016);
|
||||
- else
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
||||
- cpu_to_le16(3008);
|
||||
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
||||
-
|
||||
- /* AC_VO */
|
||||
- i = 3;
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
||||
- cpu_to_le16((cw_min + 1) / 4 - 1);
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
||||
- cpu_to_le16((cw_min + 1) / 2 - 1);
|
||||
- priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
|
||||
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
||||
- if (is_legacy)
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
||||
- cpu_to_le16(3264);
|
||||
- else
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
||||
- cpu_to_le16(1504);
|
||||
- } else {
|
||||
- for (i = 1; i < 4; i++) {
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
||||
- cpu_to_le16(cw_min);
|
||||
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
||||
- cpu_to_le16(cw_max);
|
||||
- priv->qos_data.def_qos_parm.ac[i].aifsn = aifs;
|
||||
- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
|
||||
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
||||
- }
|
||||
- }
|
||||
- IWL_DEBUG_QOS(priv, "set QoS to default \n");
|
||||
-
|
||||
- spin_unlock_irqrestore(&priv->lock, flags);
|
||||
-}
|
||||
-EXPORT_SYMBOL(iwl_reset_qos);
|
||||
|
||||
#define MAX_BIT_RATE_40_MHZ 150 /* Mbps */
|
||||
#define MAX_BIT_RATE_20_MHZ 72 /* Mbps */
|
||||
@@ -2273,12 +2165,6 @@ int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
||||
cpu_to_le16((params->txop * 32));
|
||||
|
||||
priv->qos_data.def_qos_parm.ac[q].reserved1 = 0;
|
||||
- priv->qos_data.qos_active = 1;
|
||||
-
|
||||
- if (priv->iw_mode == NL80211_IFTYPE_AP)
|
||||
- iwl_activate_qos(priv, 1);
|
||||
- else if (priv->assoc_id && iwl_is_associated(priv))
|
||||
- iwl_activate_qos(priv, 0);
|
||||
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
@@ -2554,11 +2440,8 @@ int iwl_mac_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
|
||||
IWL_DEBUG_MAC80211(priv, "leave\n");
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
- iwl_reset_qos(priv);
|
||||
-
|
||||
priv->cfg->ops->lib->post_associate(priv);
|
||||
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_mac_beacon_update);
|
||||
@@ -2790,6 +2673,15 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
|
||||
if (priv->cfg->ops->hcmd->set_rxon_chain)
|
||||
priv->cfg->ops->hcmd->set_rxon_chain(priv);
|
||||
|
||||
+ if (changed & IEEE80211_CONF_CHANGE_QOS) {
|
||||
+ bool qos_active = !!(conf->flags & IEEE80211_CONF_QOS);
|
||||
+
|
||||
+ spin_lock_irqsave(&priv->lock, flags);
|
||||
+ priv->qos_data.qos_active = qos_active;
|
||||
+ iwl_update_qos(priv);
|
||||
+ spin_unlock_irqrestore(&priv->lock, flags);
|
||||
+ }
|
||||
+
|
||||
if (!iwl_is_ready(priv)) {
|
||||
IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
|
||||
goto out;
|
||||
@@ -2860,8 +2752,6 @@ void iwl_mac_reset_tsf(struct ieee80211_hw *hw)
|
||||
memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_config));
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
- iwl_reset_qos(priv);
|
||||
-
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
priv->assoc_id = 0;
|
||||
priv->assoc_capability = 0;
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
index b69e972..403f512 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
@@ -298,8 +298,7 @@ struct iwl_cfg {
|
||||
struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
|
||||
struct ieee80211_ops *hw_ops);
|
||||
void iwl_hw_detect(struct iwl_priv *priv);
|
||||
-void iwl_reset_qos(struct iwl_priv *priv);
|
||||
-void iwl_activate_qos(struct iwl_priv *priv, u8 force);
|
||||
+void iwl_activate_qos(struct iwl_priv *priv);
|
||||
int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
||||
const struct ieee80211_tx_queue_params *params);
|
||||
void iwl_set_rxon_hwcrypto(struct iwl_priv *priv, int hw_decrypt);
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
index 3822cf5..f2a9356 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
@@ -518,30 +518,9 @@ struct iwl_ht_config {
|
||||
u8 non_GF_STA_present;
|
||||
};
|
||||
|
||||
-union iwl_qos_capabity {
|
||||
- struct {
|
||||
- u8 edca_count:4; /* bit 0-3 */
|
||||
- u8 q_ack:1; /* bit 4 */
|
||||
- u8 queue_request:1; /* bit 5 */
|
||||
- u8 txop_request:1; /* bit 6 */
|
||||
- u8 reserved:1; /* bit 7 */
|
||||
- } q_AP;
|
||||
- struct {
|
||||
- u8 acvo_APSD:1; /* bit 0 */
|
||||
- u8 acvi_APSD:1; /* bit 1 */
|
||||
- u8 ac_bk_APSD:1; /* bit 2 */
|
||||
- u8 ac_be_APSD:1; /* bit 3 */
|
||||
- u8 q_ack:1; /* bit 4 */
|
||||
- u8 max_len:2; /* bit 5-6 */
|
||||
- u8 more_data_ack:1; /* bit 7 */
|
||||
- } q_STA;
|
||||
- u8 val;
|
||||
-};
|
||||
-
|
||||
/* QoS structures */
|
||||
struct iwl_qos_info {
|
||||
int qos_active;
|
||||
- union iwl_qos_capabity qos_cap;
|
||||
struct iwl_qosparam_cmd def_qos_parm;
|
||||
};
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
index adbb3ea..2280ba7 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
@@ -3127,8 +3127,6 @@ void iwl3945_post_associate(struct iwl_priv *priv)
|
||||
break;
|
||||
}
|
||||
|
||||
- iwl_activate_qos(priv, 0);
|
||||
-
|
||||
/* we have just associated, don't start scan too early */
|
||||
priv->next_scan_jiffies = jiffies + IWL_DELAY_NEXT_SCAN;
|
||||
}
|
||||
@@ -3841,11 +3839,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
|
||||
|
||||
priv->iw_mode = NL80211_IFTYPE_STATION;
|
||||
|
||||
- iwl_reset_qos(priv);
|
||||
-
|
||||
- priv->qos_data.qos_active = 0;
|
||||
- priv->qos_data.qos_cap.val = 0;
|
||||
-
|
||||
priv->rates_mask = IWL_RATES_MASK;
|
||||
priv->tx_power_user_lmt = IWL_DEFAULT_TX_POWER;
|
||||
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
||||
|
||||
13
iwlwifi-recover_from_tx_stall.patch
Normal file
13
iwlwifi-recover_from_tx_stall.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
https://bugzilla.redhat.com/show_bug.cgi?id=589777#c5
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig 2010-05-19 16:07:15.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c 2010-05-19 16:09:42.000000000 -0400
|
||||
@@ -2794,6 +2794,7 @@ static struct iwl_lib_ops iwl3945_lib =
|
||||
.post_associate = iwl3945_post_associate,
|
||||
.isr = iwl_isr_legacy,
|
||||
.config_ap = iwl3945_config_ap,
|
||||
+ .recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
};
|
||||
|
||||
static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
|
||||
48
iwlwifi_-Adjusting-PLCP-error-threshold-for-1000-NIC.patch
Normal file
48
iwlwifi_-Adjusting-PLCP-error-threshold-for-1000-NIC.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit 6c3872e1d52290dcd506473028867cacc6b7393d
|
||||
Author: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Date: Mon Feb 8 13:53:05 2010 -0800
|
||||
|
||||
iwlwifi: Adjusting PLCP error threshold for 1000 NIC
|
||||
|
||||
While testing the station with the NIC 1000 family, it is found that
|
||||
the plcp error can easily exceed 50 value in 100mSecs. This creates
|
||||
unneccessary radio reset/tuning. This patch raises the PLCP error
|
||||
threshold of the NIC 1000 from 50 to 200 error count.
|
||||
|
||||
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig 2010-04-13 13:44:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c 2010-04-13 13:45:51.000000000 -0400
|
||||
@@ -174,7 +174,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
- .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl1000_bg_cfg = {
|
||||
@@ -201,7 +201,7 @@ struct iwl_cfg iwl1000_bg_cfg = {
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.support_ct_kill_exit = true,
|
||||
- .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 13:44:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 13:45:06.000000000 -0400
|
||||
@@ -991,6 +991,7 @@ struct iwl_switch_rxon {
|
||||
#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (0)
|
||||
#define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50)
|
||||
#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
|
||||
+#define IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF (200)
|
||||
#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
|
||||
|
||||
enum iwl_reset {
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit d4d59e88cb746165c6fe33eacb6f582d525c6ef1
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Fri Jan 22 14:22:45 2010 -0800
|
||||
|
||||
iwlwifi: Logic to control how frequent radio should be reset if needed
|
||||
|
||||
Add additional logic for internal scan routine to control how
|
||||
frequent this function should be performed.
|
||||
|
||||
The intent of this function is to reset/re-tune the radio and bring the
|
||||
RF/PHY back to normal state, it does not make sense calling it too
|
||||
frequent,
|
||||
if reset the radio can not bring it back to normal state, it indicate
|
||||
there are other reason to cause the radio not operate correctly.
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 11:53:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 11:59:18.000000000 -0400
|
||||
@@ -1034,6 +1034,7 @@ struct iwl_priv {
|
||||
unsigned long scan_start;
|
||||
unsigned long scan_pass_start;
|
||||
unsigned long scan_start_tsf;
|
||||
+ unsigned long last_internal_scan_jiffies;
|
||||
void *scan;
|
||||
int scan_bands;
|
||||
struct cfg80211_scan_request *scan_request;
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig 2010-04-13 11:53:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c 2010-04-13 12:01:06.000000000 -0400
|
||||
@@ -204,7 +204,8 @@ static void iwl_rx_scan_results_notif(st
|
||||
#endif
|
||||
|
||||
priv->last_scan_jiffies = jiffies;
|
||||
- priv->next_scan_jiffies = 0;
|
||||
+ if (!priv->is_internal_short_scan)
|
||||
+ priv->next_scan_jiffies = 0;
|
||||
}
|
||||
|
||||
/* Service SCAN_COMPLETE_NOTIFICATION (0x84) */
|
||||
@@ -251,7 +252,11 @@ static void iwl_rx_scan_complete_notif(s
|
||||
}
|
||||
|
||||
priv->last_scan_jiffies = jiffies;
|
||||
- priv->next_scan_jiffies = 0;
|
||||
+ if (!priv->is_internal_short_scan)
|
||||
+ priv->next_scan_jiffies = 0;
|
||||
+ else
|
||||
+ priv->last_internal_scan_jiffies = jiffies;
|
||||
+
|
||||
IWL_DEBUG_INFO(priv, "Setting scan to off\n");
|
||||
|
||||
clear_bit(STATUS_SCANNING, &priv->status);
|
||||
@@ -559,6 +564,8 @@ EXPORT_SYMBOL(iwl_mac_hw_scan);
|
||||
* internal short scan, this function should only been called while associated.
|
||||
* It will reset and tune the radio to prevent possible RF related problem
|
||||
*/
|
||||
+#define IWL_DELAY_NEXT_INTERNAL_SCAN (HZ*1)
|
||||
+
|
||||
int iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -578,6 +585,13 @@ int iwl_internal_short_hw_scan(struct iw
|
||||
ret = -EAGAIN;
|
||||
goto out;
|
||||
}
|
||||
+ if (priv->last_internal_scan_jiffies &&
|
||||
+ time_after(priv->last_internal_scan_jiffies +
|
||||
+ IWL_DELAY_NEXT_INTERNAL_SCAN, jiffies)) {
|
||||
+ IWL_DEBUG_SCAN(priv, "internal scan rejected\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
priv->scan_bands = 0;
|
||||
if (priv->band == IEEE80211_BAND_5GHZ)
|
||||
priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
|
||||
131
iwlwifi_-Recover-TX-flow-failure.patch
Normal file
131
iwlwifi_-Recover-TX-flow-failure.patch
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit d5a0ffa3eaf9e898f25a925813f1a723be7808f8
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Thu Mar 4 13:38:59 2010 -0800
|
||||
|
||||
iwlwifi: Recover TX flow failure
|
||||
|
||||
Monitors the tx statistics to detect the drop in throughput.
|
||||
When the throughput drops, the ratio of the actual_ack_count and the
|
||||
expected_ack_count also drops. At the same time, the aggregated
|
||||
ba_timeout (the number of ba timeout retries) also rises. If the
|
||||
actual_ack_count/expected_ack_count ratio is 0 and the number of ba
|
||||
timeout retries rises to BA_TIMEOUT_MAX, no tx packets can be delivered.
|
||||
Reloading the uCode and bring the system back to normal operational
|
||||
state.
|
||||
|
||||
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig 2010-04-13 14:44:38.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c 2010-04-13 14:53:47.000000000 -0400
|
||||
@@ -2783,10 +2783,21 @@ static int iwl_mac_ampdu_action(struct i
|
||||
return ret;
|
||||
case IEEE80211_AMPDU_TX_START:
|
||||
IWL_DEBUG_HT(priv, "start Tx\n");
|
||||
- return iwl_tx_agg_start(priv, sta->addr, tid, ssn);
|
||||
+ ret = iwl_tx_agg_start(priv, sta->addr, tid, ssn);
|
||||
+ if (ret == 0) {
|
||||
+ priv->agg_tids_count++;
|
||||
+ IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
|
||||
+ priv->agg_tids_count);
|
||||
+ }
|
||||
+ return ret;
|
||||
case IEEE80211_AMPDU_TX_STOP:
|
||||
IWL_DEBUG_HT(priv, "stop Tx\n");
|
||||
ret = iwl_tx_agg_stop(priv, sta->addr, tid);
|
||||
+ if ((ret == 0) && (priv->agg_tids_count > 0)) {
|
||||
+ priv->agg_tids_count--;
|
||||
+ IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
|
||||
+ priv->agg_tids_count);
|
||||
+ }
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return 0;
|
||||
else
|
||||
@@ -3204,6 +3215,7 @@ static int iwl_init_drv(struct iwl_priv
|
||||
priv->band = IEEE80211_BAND_2GHZ;
|
||||
|
||||
priv->iw_mode = NL80211_IFTYPE_STATION;
|
||||
+ priv->agg_tids_count = 0;
|
||||
|
||||
/* initialize force reset */
|
||||
priv->force_reset[IWL_RF_RESET].reset_duration =
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 14:44:38.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 14:53:19.000000000 -0400
|
||||
@@ -1239,6 +1239,11 @@ struct iwl_priv {
|
||||
void *ict_tbl_vir;
|
||||
u32 inta;
|
||||
bool use_ict;
|
||||
+ /*
|
||||
+ * reporting the number of tids has AGG on. 0 means
|
||||
+ * no AGGREGATION
|
||||
+ */
|
||||
+ u8 agg_tids_count;
|
||||
|
||||
u32 inta_mask;
|
||||
/* Current association information needed to configure the
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 14:44:38.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 14:56:17.000000000 -0400
|
||||
@@ -593,9 +593,18 @@ static void iwl_accumulative_statistics(
|
||||
|
||||
#define REG_RECALIB_PERIOD (60)
|
||||
|
||||
+/* the threshold ratio of actual_ack_cnt to expected_ack_cnt in percent */
|
||||
+#define ACK_CNT_RATIO (50)
|
||||
+#define BA_TIMEOUT_CNT (5)
|
||||
+#define BA_TIMEOUT_MAX (16)
|
||||
+
|
||||
#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
||||
/*
|
||||
- * This function checks for plcp error.
|
||||
+ * This function checks for plcp error, ACK count ratios, aggregated BA
|
||||
+ * timeout retries.
|
||||
+ * - When the ACK count ratio is 0 and aggregated BA timeout retries is
|
||||
+ * exceeding the BA_TIMEOUT_MAX, it will recover the failure by resetting
|
||||
+ * the firmware.
|
||||
* - When the plcp error is exceeding the thresholds, it will reset the radio
|
||||
* to improve the throughput.
|
||||
*/
|
||||
@@ -605,6 +614,37 @@ void iwl_recover_from_statistics(struct
|
||||
int combined_plcp_delta;
|
||||
unsigned int plcp_msec;
|
||||
unsigned long plcp_received_jiffies;
|
||||
+ int actual_ack_cnt_delta;
|
||||
+ int expected_ack_cnt_delta;
|
||||
+ int ba_timeout_delta;
|
||||
+
|
||||
+ actual_ack_cnt_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.actual_ack_cnt) -
|
||||
+ le32_to_cpu(priv->statistics.tx.actual_ack_cnt);
|
||||
+ expected_ack_cnt_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.expected_ack_cnt) -
|
||||
+ le32_to_cpu(priv->statistics.tx.expected_ack_cnt);
|
||||
+ ba_timeout_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.agg.ba_timeout) -
|
||||
+ le32_to_cpu(priv->statistics.tx.agg.ba_timeout);
|
||||
+ if ((priv->agg_tids_count > 0) &&
|
||||
+ (expected_ack_cnt_delta > 0) &&
|
||||
+ (((actual_ack_cnt_delta * 100) / expected_ack_cnt_delta)
|
||||
+ < ACK_CNT_RATIO) &&
|
||||
+ (ba_timeout_delta > BA_TIMEOUT_CNT)) {
|
||||
+ IWL_DEBUG_RADIO(priv, "actual_ack_cnt delta = %d,"
|
||||
+ " expected_ack_cnt = %d\n",
|
||||
+ actual_ack_cnt_delta, expected_ack_cnt_delta);
|
||||
+
|
||||
+ IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
|
||||
+ ba_timeout_delta);
|
||||
+ if ((actual_ack_cnt_delta == 0) &&
|
||||
+ (ba_timeout_delta >= BA_TIMEOUT_MAX)) {
|
||||
+ IWL_DEBUG_RADIO(priv,
|
||||
+ "call iwl_force_reset(IWL_FW_RESET)\n");
|
||||
+ iwl_force_reset(priv, IWL_FW_RESET);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/*
|
||||
* check for plcp_err and trigger radio reset if it exceeds
|
||||
472
iwlwifi_-Recover-TX-flow-stall-due-to-stuck-queue.patch
Normal file
472
iwlwifi_-Recover-TX-flow-stall-due-to-stuck-queue.patch
Normal file
|
|
@ -0,0 +1,472 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit b74e31a9bc1013e69b85b139072485dc153453dd
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Mon Mar 1 17:23:50 2010 -0800
|
||||
|
||||
iwlwifi: Recover TX flow stall due to stuck queue
|
||||
|
||||
Monitors the internal TX queues periodically. When a queue is stuck
|
||||
for some unknown conditions causing the throughput to drop and the
|
||||
transfer is stop, the driver will force firmware reload and bring the
|
||||
system back to normal operational state.
|
||||
|
||||
The iwlwifi devices behave differently in this regard so this feature is
|
||||
made part of the ops infrastructure so we can have more control on how to
|
||||
monitor and recover from tx queue stall case per device.
|
||||
|
||||
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c 2010-04-13 14:34:23.000000000 -0400
|
||||
@@ -138,6 +138,7 @@ static struct iwl_lib_ops iwl1000_lib =
|
||||
.temperature = iwl5000_temperature,
|
||||
.set_ct_kill = iwl1000_set_ct_threshold,
|
||||
},
|
||||
+ .recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl1000_ops = {
|
||||
@@ -175,6 +176,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl1000_bg_cfg = {
|
||||
@@ -202,6 +204,7 @@ struct iwl_cfg iwl1000_bg_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.support_ct_kill_exit = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2010-04-13 14:33:49.000000000 -0400
|
||||
@@ -2483,6 +2483,13 @@ static void iwl3945_alive_start(struct i
|
||||
/* After the ALIVE response, we can send commands to 3945 uCode */
|
||||
set_bit(STATUS_ALIVE, &priv->status);
|
||||
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall) {
|
||||
+ /* Enable timer to monitor the driver queues */
|
||||
+ mod_timer(&priv->monitor_recover,
|
||||
+ jiffies +
|
||||
+ msecs_to_jiffies(priv->cfg->monitor_recover_period));
|
||||
+ }
|
||||
+
|
||||
if (iwl_is_rfkill(priv))
|
||||
return;
|
||||
|
||||
@@ -3768,6 +3775,13 @@ static void iwl3945_setup_deferred_work(
|
||||
|
||||
iwl3945_hw_setup_deferred_work(priv);
|
||||
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall) {
|
||||
+ init_timer(&priv->monitor_recover);
|
||||
+ priv->monitor_recover.data = (unsigned long)priv;
|
||||
+ priv->monitor_recover.function =
|
||||
+ priv->cfg->ops->lib->recover_from_tx_stall;
|
||||
+ }
|
||||
+
|
||||
tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
|
||||
iwl3945_irq_tasklet, (unsigned long)priv);
|
||||
}
|
||||
@@ -3780,6 +3794,8 @@ static void iwl3945_cancel_deferred_work
|
||||
cancel_delayed_work(&priv->scan_check);
|
||||
cancel_delayed_work(&priv->alive_start);
|
||||
cancel_work_sync(&priv->beacon_update);
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall)
|
||||
+ del_timer_sync(&priv->monitor_recover);
|
||||
}
|
||||
|
||||
static struct attribute *iwl3945_sysfs_entries[] = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c 2010-04-13 14:33:49.000000000 -0400
|
||||
@@ -2829,6 +2829,7 @@ static struct iwl_cfg iwl3945_bg_cfg = {
|
||||
.led_compensation = 64,
|
||||
.broken_powersave = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
static struct iwl_cfg iwl3945_abg_cfg = {
|
||||
@@ -2847,6 +2848,7 @@ static struct iwl_cfg iwl3945_abg_cfg =
|
||||
.led_compensation = 64,
|
||||
.broken_powersave = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct pci_device_id iwl3945_hw_card_ids[] = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c 2010-04-13 14:33:49.000000000 -0400
|
||||
@@ -2248,6 +2248,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
|
||||
.chain_noise_num_beacons = IWL4965_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
/* Module firmware */
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-04-13 14:35:01.000000000 -0400
|
||||
@@ -1506,6 +1506,7 @@ struct iwl_lib_ops iwl5000_lib = {
|
||||
.temperature = iwl5000_temperature,
|
||||
.set_ct_kill = iwl5000_set_ct_threshold,
|
||||
},
|
||||
+ .recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
};
|
||||
|
||||
static struct iwl_lib_ops iwl5150_lib = {
|
||||
@@ -1558,6 +1559,7 @@ static struct iwl_lib_ops iwl5150_lib =
|
||||
.temperature = iwl5150_temperature,
|
||||
.set_ct_kill = iwl5150_set_ct_threshold,
|
||||
},
|
||||
+ .recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl5000_ops = {
|
||||
@@ -1607,6 +1609,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_bgn_cfg = {
|
||||
@@ -1632,6 +1635,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_abg_cfg = {
|
||||
@@ -1655,6 +1659,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_agn_cfg = {
|
||||
@@ -1681,6 +1686,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5350_agn_cfg = {
|
||||
@@ -1707,6 +1713,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5150_agn_cfg = {
|
||||
@@ -1733,6 +1740,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5150_abg_cfg = {
|
||||
@@ -1756,6 +1764,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c 2010-04-13 14:36:12.000000000 -0400
|
||||
@@ -250,6 +250,7 @@ static struct iwl_lib_ops iwl6000_lib =
|
||||
.temperature = iwl5000_temperature,
|
||||
.set_ct_kill = iwl6000_set_ct_threshold,
|
||||
},
|
||||
+ .recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl6000_ops = {
|
||||
@@ -308,6 +309,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000i_2abg_cfg = {
|
||||
@@ -338,6 +340,7 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000i_2bg_cfg = {
|
||||
@@ -368,6 +371,7 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6050_2agn_cfg = {
|
||||
@@ -400,6 +404,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DYNAMIC,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6050_2abg_cfg = {
|
||||
@@ -430,6 +435,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000_3agn_cfg = {
|
||||
@@ -462,6 +468,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
+ .monitor_recover_period = IWL_MONITORING_PERIOD,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c 2010-04-13 14:37:04.000000000 -0400
|
||||
@@ -1912,6 +1912,13 @@ static void iwl_alive_start(struct iwl_p
|
||||
/* After the ALIVE response, we can send host commands to the uCode */
|
||||
set_bit(STATUS_ALIVE, &priv->status);
|
||||
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall) {
|
||||
+ /* Enable timer to monitor the driver queues */
|
||||
+ mod_timer(&priv->monitor_recover,
|
||||
+ jiffies +
|
||||
+ msecs_to_jiffies(priv->cfg->monitor_recover_period));
|
||||
+ }
|
||||
+
|
||||
if (iwl_is_rfkill(priv))
|
||||
return;
|
||||
|
||||
@@ -3126,6 +3133,13 @@ static void iwl_setup_deferred_work(stru
|
||||
priv->statistics_periodic.data = (unsigned long)priv;
|
||||
priv->statistics_periodic.function = iwl_bg_statistics_periodic;
|
||||
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall) {
|
||||
+ init_timer(&priv->monitor_recover);
|
||||
+ priv->monitor_recover.data = (unsigned long)priv;
|
||||
+ priv->monitor_recover.function =
|
||||
+ priv->cfg->ops->lib->recover_from_tx_stall;
|
||||
+ }
|
||||
+
|
||||
if (!priv->cfg->use_isr_legacy)
|
||||
tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
|
||||
iwl_irq_tasklet, (unsigned long)priv);
|
||||
@@ -3144,6 +3158,8 @@ static void iwl_cancel_deferred_work(str
|
||||
cancel_delayed_work(&priv->alive_start);
|
||||
cancel_work_sync(&priv->beacon_update);
|
||||
del_timer_sync(&priv->statistics_periodic);
|
||||
+ if (priv->cfg->ops->lib->recover_from_tx_stall)
|
||||
+ del_timer_sync(&priv->monitor_recover);
|
||||
}
|
||||
|
||||
static void iwl_init_hw_rates(struct iwl_priv *priv,
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c 2010-04-13 14:33:49.000000000 -0400
|
||||
@@ -3263,6 +3263,99 @@ int iwl_force_reset(struct iwl_priv *pri
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL(iwl_force_reset);
|
||||
+
|
||||
+/**
|
||||
+ * iwl_bg_monitor_recover - Timer callback to check for stuck queue and recover
|
||||
+ *
|
||||
+ * During normal condition (no queue is stuck), the timer is continually set to
|
||||
+ * execute every monitor_recover_period milliseconds after the last timer
|
||||
+ * expired. When the queue read_ptr is at the same place, the timer is
|
||||
+ * shorten to 100mSecs. This is
|
||||
+ * 1) to reduce the chance that the read_ptr may wrap around (not stuck)
|
||||
+ * 2) to detect the stuck queues quicker before the station and AP can
|
||||
+ * disassociate each other.
|
||||
+ *
|
||||
+ * This function monitors all the tx queues and recover from it if any
|
||||
+ * of the queues are stuck.
|
||||
+ * 1. It first check the cmd queue for stuck conditions. If it is stuck,
|
||||
+ * it will recover by resetting the firmware and return.
|
||||
+ * 2. Then, it checks for station association. If it associates it will check
|
||||
+ * other queues. If any queue is stuck, it will recover by resetting
|
||||
+ * the firmware.
|
||||
+ * Note: It the number of times the queue read_ptr to be at the same place to
|
||||
+ * be MAX_REPEAT+1 in order to consider to be stuck.
|
||||
+ */
|
||||
+/*
|
||||
+ * The maximum number of times the read pointer of the tx queue at the
|
||||
+ * same place without considering to be stuck.
|
||||
+ */
|
||||
+#define MAX_REPEAT (2)
|
||||
+static int iwl_check_stuck_queue(struct iwl_priv *priv, int cnt)
|
||||
+{
|
||||
+ struct iwl_tx_queue *txq;
|
||||
+ struct iwl_queue *q;
|
||||
+
|
||||
+ txq = &priv->txq[cnt];
|
||||
+ q = &txq->q;
|
||||
+ /* queue is empty, skip */
|
||||
+ if (q->read_ptr != q->write_ptr) {
|
||||
+ if (q->read_ptr == q->last_read_ptr) {
|
||||
+ /* a queue has not been read from last time */
|
||||
+ if (q->repeat_same_read_ptr > MAX_REPEAT) {
|
||||
+ IWL_ERR(priv,
|
||||
+ "queue %d stuck %d time. Fw reload.\n",
|
||||
+ q->id, q->repeat_same_read_ptr);
|
||||
+ q->repeat_same_read_ptr = 0;
|
||||
+ iwl_force_reset(priv, IWL_FW_RESET);
|
||||
+ } else {
|
||||
+ q->repeat_same_read_ptr++;
|
||||
+ IWL_DEBUG_RADIO(priv,
|
||||
+ "queue %d, not read %d time\n",
|
||||
+ q->id,
|
||||
+ q->repeat_same_read_ptr);
|
||||
+ mod_timer(&priv->monitor_recover, jiffies +
|
||||
+ msecs_to_jiffies(IWL_ONE_HUNDRED_MSECS));
|
||||
+ }
|
||||
+ return 1;
|
||||
+ } else {
|
||||
+ q->last_read_ptr = q->read_ptr;
|
||||
+ q->repeat_same_read_ptr = 0;
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void iwl_bg_monitor_recover(unsigned long data)
|
||||
+{
|
||||
+ struct iwl_priv *priv = (struct iwl_priv *)data;
|
||||
+ int cnt;
|
||||
+
|
||||
+ if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
+ return;
|
||||
+
|
||||
+ /* monitor and check for stuck cmd queue */
|
||||
+ if (iwl_check_stuck_queue(priv, IWL_CMD_QUEUE_NUM))
|
||||
+ return;
|
||||
+
|
||||
+ /* monitor and check for other stuck queues */
|
||||
+ if (iwl_is_associated(priv)) {
|
||||
+ for (cnt = 0; cnt < priv->hw_params.max_txq_num; cnt++) {
|
||||
+ /* skip as we already checked the command queue */
|
||||
+ if (cnt == IWL_CMD_QUEUE_NUM)
|
||||
+ continue;
|
||||
+ if (iwl_check_stuck_queue(priv, cnt))
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ /*
|
||||
+ * Reschedule the timer to occur in
|
||||
+ * priv->cfg->monitor_recover_period
|
||||
+ */
|
||||
+ mod_timer(&priv->monitor_recover,
|
||||
+ jiffies + msecs_to_jiffies(priv->cfg->monitor_recover_period));
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_bg_monitor_recover);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 14:38:21.000000000 -0400
|
||||
@@ -187,6 +187,8 @@ struct iwl_lib_ops {
|
||||
|
||||
/* temperature */
|
||||
struct iwl_temp_ops temp_ops;
|
||||
+ /* recover from tx queue stall */
|
||||
+ void (*recover_from_tx_stall)(unsigned long data);
|
||||
};
|
||||
|
||||
struct iwl_led_ops {
|
||||
@@ -292,6 +294,8 @@ struct iwl_cfg {
|
||||
u8 sm_ps_mode;
|
||||
const bool support_wimax_coexist;
|
||||
u8 plcp_delta_threshold;
|
||||
+ /* timer period for monitor the driver queues */
|
||||
+ u32 monitor_recover_period;
|
||||
};
|
||||
|
||||
/***************************
|
||||
@@ -579,6 +583,9 @@ static inline u16 iwl_pcie_link_ctl(stru
|
||||
pci_read_config_word(priv->pci_dev, pos + PCI_EXP_LNKCTL, &pci_lnk_ctl);
|
||||
return pci_lnk_ctl;
|
||||
}
|
||||
+
|
||||
+void iwl_bg_monitor_recover(unsigned long data);
|
||||
+
|
||||
#ifdef CONFIG_PM
|
||||
int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state);
|
||||
int iwl_pci_resume(struct pci_dev *pdev);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 14:38:52.000000000 -0400
|
||||
@@ -183,6 +183,10 @@ struct iwl_queue {
|
||||
int n_bd; /* number of BDs in this queue */
|
||||
int write_ptr; /* 1-st empty entry (index) host_w*/
|
||||
int read_ptr; /* last used entry (index) host_r*/
|
||||
+ /* use for monitoring and recovering the stuck queue */
|
||||
+ int last_read_ptr; /* storing the last read_ptr */
|
||||
+ /* number of time read_ptr and last_read_ptr are the same */
|
||||
+ u8 repeat_same_read_ptr;
|
||||
dma_addr_t dma_addr; /* physical addr for BD's */
|
||||
int n_window; /* safe queue window */
|
||||
u32 id;
|
||||
@@ -997,6 +1001,11 @@ struct iwl_switch_rxon {
|
||||
#define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3)
|
||||
#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
|
||||
|
||||
+/* timer constants use to monitor and recover stuck tx queues in mSecs */
|
||||
+#define IWL_MONITORING_PERIOD (1000)
|
||||
+#define IWL_ONE_HUNDRED_MSECS (100)
|
||||
+#define IWL_SIXTY_SECS (60000)
|
||||
+
|
||||
enum iwl_reset {
|
||||
IWL_RF_RESET = 0,
|
||||
IWL_FW_RESET,
|
||||
@@ -1295,6 +1304,7 @@ struct iwl_priv {
|
||||
u32 disable_tx_power_cal;
|
||||
struct work_struct run_time_calib_work;
|
||||
struct timer_list statistics_periodic;
|
||||
+ struct timer_list monitor_recover;
|
||||
bool hw_ready;
|
||||
/*For 3945*/
|
||||
#define IWL_DEFAULT_TX_POWER 0x0F
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-tx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-tx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-tx.c.orig 2010-04-13 14:33:10.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-tx.c 2010-04-13 14:33:49.000000000 -0400
|
||||
@@ -288,6 +288,8 @@ static int iwl_queue_init(struct iwl_pri
|
||||
q->high_mark = 2;
|
||||
|
||||
q->write_ptr = q->read_ptr = 0;
|
||||
+ q->last_read_ptr = 0;
|
||||
+ q->repeat_same_read_ptr = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
394
iwlwifi_-Tune-radio-to-prevent-unexpected-behavior.patch
Normal file
394
iwlwifi_-Tune-radio-to-prevent-unexpected-behavior.patch
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit 3e4fb5faefb57824f2e42305b3d5907845af978c
|
||||
Author: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Date: Fri Jan 22 14:22:46 2010 -0800
|
||||
|
||||
iwlwifi: Tune radio to prevent unexpected behavior
|
||||
|
||||
We have seen the throughput dropped due to external noisy environment
|
||||
and the radio is out of tune. There are lot of plcp errors indicating
|
||||
this condition. Eventually the station can get de-authenticated by the
|
||||
Access Point. By resetting and tuning the radio, the plcp errors are
|
||||
reduced or eliminated and the throughput starts to rise.
|
||||
|
||||
To prevent unexpected behavior such as drop in throughput or deauthentication,
|
||||
- The change provides the driver feature to monitor and tune the radio base on
|
||||
the statistics notification from the uCode.
|
||||
- It also allows the setting of the plcp error rate threshold via
|
||||
the plcp_delta under debugfs interface.
|
||||
|
||||
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -174,6 +174,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl1000_bg_cfg = {
|
||||
@@ -200,6 +201,7 @@ struct iwl_cfg iwl1000_bg_cfg = {
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.support_ct_kill_exit = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -2828,6 +2828,7 @@ static struct iwl_cfg iwl3945_bg_cfg = {
|
||||
.ht_greenfield_support = false,
|
||||
.led_compensation = 64,
|
||||
.broken_powersave = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
static struct iwl_cfg iwl3945_abg_cfg = {
|
||||
@@ -2845,6 +2846,7 @@ static struct iwl_cfg iwl3945_abg_cfg =
|
||||
.ht_greenfield_support = false,
|
||||
.led_compensation = 64,
|
||||
.broken_powersave = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct pci_device_id iwl3945_hw_card_ids[] = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -2247,6 +2247,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
|
||||
.led_compensation = 61,
|
||||
.chain_noise_num_beacons = IWL4965_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
/* Module firmware */
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -1606,6 +1606,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_bgn_cfg = {
|
||||
@@ -1630,6 +1631,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
|
||||
.led_compensation = 51,
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_abg_cfg = {
|
||||
@@ -1652,6 +1654,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
|
||||
.use_bsm = false,
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5100_agn_cfg = {
|
||||
@@ -1677,6 +1680,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5350_agn_cfg = {
|
||||
@@ -1702,6 +1706,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5150_agn_cfg = {
|
||||
@@ -1727,6 +1732,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
|
||||
.use_rts_for_ht = true, /* use rts/cts protection */
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl5150_abg_cfg = {
|
||||
@@ -1749,6 +1755,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
|
||||
.use_bsm = false,
|
||||
.led_compensation = 51,
|
||||
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c 2010-04-13 14:32:09.000000000 -0400
|
||||
@@ -307,6 +307,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000i_2abg_cfg = {
|
||||
@@ -336,6 +337,7 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
|
||||
.supports_idle = true,
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000i_2bg_cfg = {
|
||||
@@ -365,6 +367,7 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
|
||||
.supports_idle = true,
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6050_2agn_cfg = {
|
||||
@@ -396,6 +399,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DYNAMIC,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6050_2abg_cfg = {
|
||||
@@ -425,6 +429,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
|
||||
.supports_idle = true,
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
struct iwl_cfg iwl6000_3agn_cfg = {
|
||||
@@ -456,6 +461,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
|
||||
.adv_thermal_throttle = true,
|
||||
.support_ct_kill_exit = true,
|
||||
.sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
|
||||
+ .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -232,6 +232,8 @@ struct iwl_mod_params {
|
||||
* @support_ct_kill_exit: support ct kill exit condition
|
||||
* @sm_ps_mode: spatial multiplexing power save mode
|
||||
* @support_wimax_coexist: support wimax/wifi co-exist
|
||||
+ * @plcp_delta_threshold: plcp error rate threshold used to trigger
|
||||
+ * radio tuning when there is a high receiving plcp error rate
|
||||
*
|
||||
* We enable the driver to be backward compatible wrt API version. The
|
||||
* driver specifies which APIs it supports (with @ucode_api_max being the
|
||||
@@ -289,6 +291,7 @@ struct iwl_cfg {
|
||||
bool support_ct_kill_exit;
|
||||
u8 sm_ps_mode;
|
||||
const bool support_wimax_coexist;
|
||||
+ u8 plcp_delta_threshold;
|
||||
};
|
||||
|
||||
/***************************
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -1866,6 +1866,47 @@ static ssize_t iwl_dbgfs_internal_scan_w
|
||||
return count;
|
||||
}
|
||||
|
||||
+static ssize_t iwl_dbgfs_plcp_delta_read(struct file *file,
|
||||
+ char __user *user_buf,
|
||||
+ size_t count, loff_t *ppos) {
|
||||
+
|
||||
+ struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
|
||||
+ int pos = 0;
|
||||
+ char buf[12];
|
||||
+ const size_t bufsz = sizeof(buf);
|
||||
+ ssize_t ret;
|
||||
+
|
||||
+ pos += scnprintf(buf + pos, bufsz - pos, "%u\n",
|
||||
+ priv->cfg->plcp_delta_threshold);
|
||||
+
|
||||
+ ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
|
||||
+ const char __user *user_buf,
|
||||
+ size_t count, loff_t *ppos) {
|
||||
+
|
||||
+ struct iwl_priv *priv = file->private_data;
|
||||
+ char buf[8];
|
||||
+ int buf_size;
|
||||
+ int plcp;
|
||||
+
|
||||
+ memset(buf, 0, sizeof(buf));
|
||||
+ buf_size = min(count, sizeof(buf) - 1);
|
||||
+ if (copy_from_user(buf, user_buf, buf_size))
|
||||
+ return -EFAULT;
|
||||
+ if (sscanf(buf, "%d", &plcp) != 1)
|
||||
+ return -EINVAL;
|
||||
+ if ((plcp <= IWL_MAX_PLCP_ERR_THRESHOLD_MIN) ||
|
||||
+ (plcp > IWL_MAX_PLCP_ERR_THRESHOLD_MAX))
|
||||
+ priv->cfg->plcp_delta_threshold =
|
||||
+ IWL_MAX_PLCP_ERR_THRESHOLD_DEF;
|
||||
+ else
|
||||
+ priv->cfg->plcp_delta_threshold = plcp;
|
||||
+ return count;
|
||||
+}
|
||||
+
|
||||
DEBUGFS_READ_FILE_OPS(rx_statistics);
|
||||
DEBUGFS_READ_FILE_OPS(tx_statistics);
|
||||
DEBUGFS_READ_WRITE_FILE_OPS(traffic_log);
|
||||
@@ -1881,6 +1922,7 @@ DEBUGFS_READ_FILE_OPS(power_save_status)
|
||||
DEBUGFS_WRITE_FILE_OPS(clear_ucode_statistics);
|
||||
DEBUGFS_WRITE_FILE_OPS(clear_traffic_statistics);
|
||||
DEBUGFS_WRITE_FILE_OPS(internal_scan);
|
||||
+DEBUGFS_READ_WRITE_FILE_OPS(plcp_delta);
|
||||
|
||||
/*
|
||||
* Create the debugfs files and directories
|
||||
@@ -1932,6 +1974,7 @@ int iwl_dbgfs_register(struct iwl_priv *
|
||||
DEBUGFS_ADD_FILE(clear_ucode_statistics, debug, S_IWUSR);
|
||||
DEBUGFS_ADD_FILE(clear_traffic_statistics, debug, S_IWUSR);
|
||||
DEBUGFS_ADD_FILE(internal_scan, debug, S_IWUSR);
|
||||
+ DEBUGFS_ADD_FILE(plcp_delta, debug, S_IWUSR | S_IRUSR);
|
||||
if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) != CSR_HW_REV_TYPE_3945) {
|
||||
DEBUGFS_ADD_FILE(ucode_rx_stats, debug, S_IRUSR);
|
||||
DEBUGFS_ADD_FILE(ucode_tx_stats, debug, S_IRUSR);
|
||||
@@ -1990,6 +2033,7 @@ void iwl_dbgfs_unregister(struct iwl_pri
|
||||
DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.
|
||||
file_clear_traffic_statistics);
|
||||
DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.file_internal_scan);
|
||||
+ DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.file_plcp_delta);
|
||||
if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) != CSR_HW_REV_TYPE_3945) {
|
||||
DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.
|
||||
file_ucode_rx_stats);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -110,6 +110,7 @@ struct iwl_debugfs {
|
||||
struct dentry *file_clear_ucode_statistics;
|
||||
struct dentry *file_clear_traffic_statistics;
|
||||
struct dentry *file_internal_scan;
|
||||
+ struct dentry *file_plcp_delta;
|
||||
} dbgfs_debug_files;
|
||||
u32 sram_offset;
|
||||
u32 sram_len;
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -984,6 +984,15 @@ struct iwl_switch_rxon {
|
||||
__le16 channel;
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * This is the threshold value of plcp error rate per 100mSecs. It is
|
||||
+ * used to set and check for the validity of plcp_delta.
|
||||
+ */
|
||||
+#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (0)
|
||||
+#define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50)
|
||||
+#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
|
||||
+#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
|
||||
+
|
||||
struct iwl_priv {
|
||||
|
||||
/* ieee device used by generic ieee processing code */
|
||||
@@ -1012,6 +1021,9 @@ struct iwl_priv {
|
||||
/* ucode beacon time */
|
||||
u32 ucode_beacon_time;
|
||||
|
||||
+ /* storing the jiffies when the plcp error rate is received */
|
||||
+ unsigned long plcp_jiffies;
|
||||
+
|
||||
/* we allocate array of iwl4965_channel_info for NIC's valid channels.
|
||||
* Access via channel # using indirect index array */
|
||||
struct iwl_channel_info *channel_info; /* channel info array */
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 14:30:36.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 14:30:41.000000000 -0400
|
||||
@@ -593,11 +593,15 @@ static void iwl_accumulative_statistics(
|
||||
|
||||
#define REG_RECALIB_PERIOD (60)
|
||||
|
||||
+#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
||||
void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb)
|
||||
{
|
||||
int change;
|
||||
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||
+ int combined_plcp_delta;
|
||||
+ unsigned int plcp_msec;
|
||||
+ unsigned long plcp_received_jiffies;
|
||||
|
||||
IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
|
||||
(int)sizeof(priv->statistics),
|
||||
@@ -612,6 +616,56 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
||||
#endif
|
||||
+ /*
|
||||
+ * check for plcp_err and trigger radio reset if it exceeds
|
||||
+ * the plcp error threshold plcp_delta.
|
||||
+ */
|
||||
+ plcp_received_jiffies = jiffies;
|
||||
+ plcp_msec = jiffies_to_msecs((long) plcp_received_jiffies -
|
||||
+ (long) priv->plcp_jiffies);
|
||||
+ priv->plcp_jiffies = plcp_received_jiffies;
|
||||
+ /*
|
||||
+ * check to make sure plcp_msec is not 0 to prevent division
|
||||
+ * by zero.
|
||||
+ */
|
||||
+ if (plcp_msec) {
|
||||
+ combined_plcp_delta =
|
||||
+ (le32_to_cpu(pkt->u.stats.rx.ofdm.plcp_err) -
|
||||
+ le32_to_cpu(priv->statistics.rx.ofdm.plcp_err)) +
|
||||
+ (le32_to_cpu(pkt->u.stats.rx.ofdm_ht.plcp_err) -
|
||||
+ le32_to_cpu(priv->statistics.rx.ofdm_ht.plcp_err));
|
||||
+
|
||||
+ if ((combined_plcp_delta > 0) &&
|
||||
+ ((combined_plcp_delta * 100) / plcp_msec) >
|
||||
+ priv->cfg->plcp_delta_threshold) {
|
||||
+ /*
|
||||
+ * if plcp_err exceed the threshold, the following
|
||||
+ * data is printed in csv format:
|
||||
+ * Text: plcp_err exceeded %d,
|
||||
+ * Received ofdm.plcp_err,
|
||||
+ * Current ofdm.plcp_err,
|
||||
+ * Received ofdm_ht.plcp_err,
|
||||
+ * Current ofdm_ht.plcp_err,
|
||||
+ * combined_plcp_delta,
|
||||
+ * plcp_msec
|
||||
+ */
|
||||
+ IWL_DEBUG_RADIO(priv, PLCP_MSG,
|
||||
+ priv->cfg->plcp_delta_threshold,
|
||||
+ le32_to_cpu(pkt->u.stats.rx.ofdm.plcp_err),
|
||||
+ le32_to_cpu(priv->statistics.rx.ofdm.plcp_err),
|
||||
+ le32_to_cpu(pkt->u.stats.rx.ofdm_ht.plcp_err),
|
||||
+ le32_to_cpu(
|
||||
+ priv->statistics.rx.ofdm_ht.plcp_err),
|
||||
+ combined_plcp_delta, plcp_msec);
|
||||
+
|
||||
+ /*
|
||||
+ * Reset the RF radio due to the high plcp
|
||||
+ * error rate
|
||||
+ */
|
||||
+ iwl_force_rf_reset(priv);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
memcpy(&priv->statistics, &pkt->u.stats, sizeof(priv->statistics));
|
||||
|
||||
set_bit(STATUS_STATISTICS, &priv->status);
|
||||
374
iwlwifi_-add-function-to-reset_tune-radio-if-needed.patch
Normal file
374
iwlwifi_-add-function-to-reset_tune-radio-if-needed.patch
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit afbdd69af0e6a0c40676d4d4b94a0a4414708eaa
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Fri Jan 22 14:22:43 2010 -0800
|
||||
|
||||
iwlwifi: add function to reset/tune radio if needed
|
||||
|
||||
Adding "radio reset" function to help reset and stabilize the radio.
|
||||
|
||||
During normal operation, sometime for unknown reason, radio encounter
|
||||
problem and can not recover by itself; the best way to
|
||||
recover from it is to reset and re-tune the radio. Currently, there is
|
||||
no RF reset command available, but since radio will get reset when
|
||||
switching channel, use internal hw scan request to force radio
|
||||
reset and get back to normal operation state.
|
||||
|
||||
The internal hw scan will only perform passive scan on the first
|
||||
available channel (not the channel being used) in associated state. The
|
||||
request should be ignored if already performing scan operation or STA is
|
||||
not in associated state.
|
||||
|
||||
Also include an "internal_scan" debugfs file to help trigger the
|
||||
internal scan from user mode.
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig 2010-04-13 11:41:15.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c 2010-04-13 11:53:36.000000000 -0400
|
||||
@@ -3197,6 +3197,30 @@ void iwl_update_stats(struct iwl_priv *p
|
||||
EXPORT_SYMBOL(iwl_update_stats);
|
||||
#endif
|
||||
|
||||
+void iwl_force_rf_reset(struct iwl_priv *priv)
|
||||
+{
|
||||
+ if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
+ return;
|
||||
+
|
||||
+ if (!iwl_is_associated(priv)) {
|
||||
+ IWL_DEBUG_SCAN(priv, "force reset rejected: not associated\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ /*
|
||||
+ * There is no easy and better way to force reset the radio,
|
||||
+ * the only known method is switching channel which will force to
|
||||
+ * reset and tune the radio.
|
||||
+ * Use internal short scan (single channel) operation to should
|
||||
+ * achieve this objective.
|
||||
+ * Driver should reset the radio when number of consecutive missed
|
||||
+ * beacon, or any other uCode error condition detected.
|
||||
+ */
|
||||
+ IWL_DEBUG_INFO(priv, "perform radio reset.\n");
|
||||
+ iwl_internal_short_hw_scan(priv);
|
||||
+ return;
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_force_rf_reset);
|
||||
+
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 11:53:36.000000000 -0400
|
||||
@@ -497,6 +497,8 @@ void iwl_init_scan_params(struct iwl_pri
|
||||
int iwl_scan_cancel(struct iwl_priv *priv);
|
||||
int iwl_scan_cancel_timeout(struct iwl_priv *priv, unsigned long ms);
|
||||
int iwl_mac_hw_scan(struct ieee80211_hw *hw, struct cfg80211_scan_request *req);
|
||||
+int iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
||||
+void iwl_force_rf_reset(struct iwl_priv *priv);
|
||||
u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
|
||||
const u8 *ie, int ie_len, int left);
|
||||
void iwl_setup_rx_scan_handlers(struct iwl_priv *priv);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c.orig 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2010-04-13 11:56:15.000000000 -0400
|
||||
@@ -1845,6 +1845,27 @@ static ssize_t iwl_dbgfs_clear_ucode_sta
|
||||
return count;
|
||||
}
|
||||
|
||||
+static ssize_t iwl_dbgfs_internal_scan_write(struct file *file,
|
||||
+ const char __user *user_buf,
|
||||
+ size_t count, loff_t *ppos)
|
||||
+{
|
||||
+ struct iwl_priv *priv = file->private_data;
|
||||
+ char buf[8];
|
||||
+ int buf_size;
|
||||
+ int scan;
|
||||
+
|
||||
+ memset(buf, 0, sizeof(buf));
|
||||
+ buf_size = min(count, sizeof(buf) - 1);
|
||||
+ if (copy_from_user(buf, user_buf, buf_size))
|
||||
+ return -EFAULT;
|
||||
+ if (sscanf(buf, "%d", &scan) != 1)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ iwl_internal_short_hw_scan(priv);
|
||||
+
|
||||
+ return count;
|
||||
+}
|
||||
+
|
||||
DEBUGFS_READ_FILE_OPS(rx_statistics);
|
||||
DEBUGFS_READ_FILE_OPS(tx_statistics);
|
||||
DEBUGFS_READ_WRITE_FILE_OPS(traffic_log);
|
||||
@@ -1859,6 +1880,7 @@ DEBUGFS_READ_FILE_OPS(tx_power);
|
||||
DEBUGFS_READ_FILE_OPS(power_save_status);
|
||||
DEBUGFS_WRITE_FILE_OPS(clear_ucode_statistics);
|
||||
DEBUGFS_WRITE_FILE_OPS(clear_traffic_statistics);
|
||||
+DEBUGFS_WRITE_FILE_OPS(internal_scan);
|
||||
|
||||
/*
|
||||
* Create the debugfs files and directories
|
||||
@@ -1909,6 +1931,7 @@ int iwl_dbgfs_register(struct iwl_priv *
|
||||
DEBUGFS_ADD_FILE(power_save_status, debug, S_IRUSR);
|
||||
DEBUGFS_ADD_FILE(clear_ucode_statistics, debug, S_IWUSR);
|
||||
DEBUGFS_ADD_FILE(clear_traffic_statistics, debug, S_IWUSR);
|
||||
+ DEBUGFS_ADD_FILE(internal_scan, debug, S_IWUSR);
|
||||
if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) != CSR_HW_REV_TYPE_3945) {
|
||||
DEBUGFS_ADD_FILE(ucode_rx_stats, debug, S_IRUSR);
|
||||
DEBUGFS_ADD_FILE(ucode_tx_stats, debug, S_IRUSR);
|
||||
@@ -1966,6 +1989,7 @@ void iwl_dbgfs_unregister(struct iwl_pri
|
||||
file_clear_ucode_statistics);
|
||||
DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.
|
||||
file_clear_traffic_statistics);
|
||||
+ DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.file_internal_scan);
|
||||
if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) != CSR_HW_REV_TYPE_3945) {
|
||||
DEBUGFS_REMOVE(priv->dbgfs->dbgfs_debug_files.
|
||||
file_ucode_rx_stats);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h.orig 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-debug.h 2010-04-13 11:54:48.000000000 -0400
|
||||
@@ -109,6 +109,7 @@ struct iwl_debugfs {
|
||||
struct dentry *file_power_save_status;
|
||||
struct dentry *file_clear_ucode_statistics;
|
||||
struct dentry *file_clear_traffic_statistics;
|
||||
+ struct dentry *file_internal_scan;
|
||||
} dbgfs_debug_files;
|
||||
u32 sram_offset;
|
||||
u32 sram_len;
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 11:53:36.000000000 -0400
|
||||
@@ -1037,6 +1037,7 @@ struct iwl_priv {
|
||||
void *scan;
|
||||
int scan_bands;
|
||||
struct cfg80211_scan_request *scan_request;
|
||||
+ bool is_internal_short_scan;
|
||||
u8 scan_tx_ant[IEEE80211_NUM_BANDS];
|
||||
u8 mgmt_tx_ant;
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig 2010-02-24 13:52:17.000000000 -0500
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c 2010-04-13 11:53:36.000000000 -0400
|
||||
@@ -314,6 +314,72 @@ u16 iwl_get_passive_dwell_time(struct iw
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_get_passive_dwell_time);
|
||||
|
||||
+static int iwl_get_single_channel_for_scan(struct iwl_priv *priv,
|
||||
+ enum ieee80211_band band,
|
||||
+ struct iwl_scan_channel *scan_ch)
|
||||
+{
|
||||
+ const struct ieee80211_supported_band *sband;
|
||||
+ const struct iwl_channel_info *ch_info;
|
||||
+ u16 passive_dwell = 0;
|
||||
+ u16 active_dwell = 0;
|
||||
+ int i, added = 0;
|
||||
+ u16 channel = 0;
|
||||
+
|
||||
+ sband = iwl_get_hw_mode(priv, band);
|
||||
+ if (!sband) {
|
||||
+ IWL_ERR(priv, "invalid band\n");
|
||||
+ return added;
|
||||
+ }
|
||||
+
|
||||
+ active_dwell = iwl_get_active_dwell_time(priv, band, 0);
|
||||
+ passive_dwell = iwl_get_passive_dwell_time(priv, band);
|
||||
+
|
||||
+ if (passive_dwell <= active_dwell)
|
||||
+ passive_dwell = active_dwell + 1;
|
||||
+
|
||||
+ /* only scan single channel, good enough to reset the RF */
|
||||
+ /* pick the first valid not in-use channel */
|
||||
+ if (band == IEEE80211_BAND_5GHZ) {
|
||||
+ for (i = 14; i < priv->channel_count; i++) {
|
||||
+ if (priv->channel_info[i].channel !=
|
||||
+ le16_to_cpu(priv->staging_rxon.channel)) {
|
||||
+ channel = priv->channel_info[i].channel;
|
||||
+ ch_info = iwl_get_channel_info(priv,
|
||||
+ band, channel);
|
||||
+ if (is_channel_valid(ch_info))
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ for (i = 0; i < 14; i++) {
|
||||
+ if (priv->channel_info[i].channel !=
|
||||
+ le16_to_cpu(priv->staging_rxon.channel)) {
|
||||
+ channel =
|
||||
+ priv->channel_info[i].channel;
|
||||
+ ch_info = iwl_get_channel_info(priv,
|
||||
+ band, channel);
|
||||
+ if (is_channel_valid(ch_info))
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (channel) {
|
||||
+ scan_ch->channel = cpu_to_le16(channel);
|
||||
+ scan_ch->type = SCAN_CHANNEL_TYPE_PASSIVE;
|
||||
+ scan_ch->active_dwell = cpu_to_le16(active_dwell);
|
||||
+ scan_ch->passive_dwell = cpu_to_le16(passive_dwell);
|
||||
+ /* Set txpower levels to defaults */
|
||||
+ scan_ch->dsp_atten = 110;
|
||||
+ if (band == IEEE80211_BAND_5GHZ)
|
||||
+ scan_ch->tx_gain = ((1 << 5) | (3 << 3)) | 3;
|
||||
+ else
|
||||
+ scan_ch->tx_gain = ((1 << 5) | (5 << 3));
|
||||
+ added++;
|
||||
+ } else
|
||||
+ IWL_ERR(priv, "no valid channel found\n");
|
||||
+ return added;
|
||||
+}
|
||||
+
|
||||
static int iwl_get_channels_for_scan(struct iwl_priv *priv,
|
||||
enum ieee80211_band band,
|
||||
u8 is_active, u8 n_probes,
|
||||
@@ -421,6 +487,7 @@ static int iwl_scan_initiate(struct iwl_
|
||||
|
||||
IWL_DEBUG_INFO(priv, "Starting scan...\n");
|
||||
set_bit(STATUS_SCANNING, &priv->status);
|
||||
+ priv->is_internal_short_scan = false;
|
||||
priv->scan_start = jiffies;
|
||||
priv->scan_pass_start = priv->scan_start;
|
||||
|
||||
@@ -488,6 +555,45 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_mac_hw_scan);
|
||||
|
||||
+/*
|
||||
+ * internal short scan, this function should only been called while associated.
|
||||
+ * It will reset and tune the radio to prevent possible RF related problem
|
||||
+ */
|
||||
+int iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (!iwl_is_ready_rf(priv)) {
|
||||
+ ret = -EIO;
|
||||
+ IWL_DEBUG_SCAN(priv, "not ready or exit pending\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+ if (test_bit(STATUS_SCANNING, &priv->status)) {
|
||||
+ IWL_DEBUG_SCAN(priv, "Scan already in progress.\n");
|
||||
+ ret = -EAGAIN;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ if (test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
|
||||
+ IWL_DEBUG_SCAN(priv, "Scan request while abort pending\n");
|
||||
+ ret = -EAGAIN;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ priv->scan_bands = 0;
|
||||
+ if (priv->band == IEEE80211_BAND_5GHZ)
|
||||
+ priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
|
||||
+ else
|
||||
+ priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
|
||||
+
|
||||
+ IWL_DEBUG_SCAN(priv, "Start internal short scan...\n");
|
||||
+ set_bit(STATUS_SCANNING, &priv->status);
|
||||
+ priv->is_internal_short_scan = true;
|
||||
+ queue_work(priv->workqueue, &priv->request_scan);
|
||||
+
|
||||
+out:
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_internal_short_hw_scan);
|
||||
+
|
||||
#define IWL_SCAN_CHECK_WATCHDOG (7 * HZ)
|
||||
|
||||
void iwl_bg_scan_check(struct work_struct *data)
|
||||
@@ -551,7 +657,8 @@ u16 iwl_fill_probe_req(struct iwl_priv *
|
||||
if (WARN_ON(left < ie_len))
|
||||
return len;
|
||||
|
||||
- memcpy(pos, ies, ie_len);
|
||||
+ if (ies)
|
||||
+ memcpy(pos, ies, ie_len);
|
||||
len += ie_len;
|
||||
left -= ie_len;
|
||||
|
||||
@@ -654,7 +761,6 @@ static void iwl_bg_request_scan(struct w
|
||||
unsigned long flags;
|
||||
|
||||
IWL_DEBUG_INFO(priv, "Scanning while associated...\n");
|
||||
-
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
interval = priv->beacon_int;
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
@@ -672,7 +778,9 @@ static void iwl_bg_request_scan(struct w
|
||||
scan_suspend_time, interval);
|
||||
}
|
||||
|
||||
- if (priv->scan_request->n_ssids) {
|
||||
+ if (priv->is_internal_short_scan) {
|
||||
+ IWL_DEBUG_SCAN(priv, "Start internal passive scan.\n");
|
||||
+ } else if (priv->scan_request->n_ssids) {
|
||||
int i, p = 0;
|
||||
IWL_DEBUG_SCAN(priv, "Kicking off active scan\n");
|
||||
for (i = 0; i < priv->scan_request->n_ssids; i++) {
|
||||
@@ -753,24 +861,38 @@ static void iwl_bg_request_scan(struct w
|
||||
rx_chain |= rx_ant << RXON_RX_CHAIN_FORCE_SEL_POS;
|
||||
rx_chain |= 0x1 << RXON_RX_CHAIN_DRIVER_FORCE_POS;
|
||||
scan->rx_chain = cpu_to_le16(rx_chain);
|
||||
- cmd_len = iwl_fill_probe_req(priv,
|
||||
- (struct ieee80211_mgmt *)scan->data,
|
||||
- priv->scan_request->ie,
|
||||
- priv->scan_request->ie_len,
|
||||
- IWL_MAX_SCAN_SIZE - sizeof(*scan));
|
||||
+ if (!priv->is_internal_short_scan) {
|
||||
+ cmd_len = iwl_fill_probe_req(priv,
|
||||
+ (struct ieee80211_mgmt *)scan->data,
|
||||
+ priv->scan_request->ie,
|
||||
+ priv->scan_request->ie_len,
|
||||
+ IWL_MAX_SCAN_SIZE - sizeof(*scan));
|
||||
+ } else {
|
||||
+ cmd_len = iwl_fill_probe_req(priv,
|
||||
+ (struct ieee80211_mgmt *)scan->data,
|
||||
+ NULL, 0,
|
||||
+ IWL_MAX_SCAN_SIZE - sizeof(*scan));
|
||||
|
||||
+ }
|
||||
scan->tx_cmd.len = cpu_to_le16(cmd_len);
|
||||
-
|
||||
if (iwl_is_monitor_mode(priv))
|
||||
scan->filter_flags = RXON_FILTER_PROMISC_MSK;
|
||||
|
||||
scan->filter_flags |= (RXON_FILTER_ACCEPT_GRP_MSK |
|
||||
RXON_FILTER_BCON_AWARE_MSK);
|
||||
|
||||
- scan->channel_count =
|
||||
- iwl_get_channels_for_scan(priv, band, is_active, n_probes,
|
||||
- (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
|
||||
-
|
||||
+ if (priv->is_internal_short_scan) {
|
||||
+ scan->channel_count =
|
||||
+ iwl_get_single_channel_for_scan(priv, band,
|
||||
+ (void *)&scan->data[le16_to_cpu(
|
||||
+ scan->tx_cmd.len)]);
|
||||
+ } else {
|
||||
+ scan->channel_count =
|
||||
+ iwl_get_channels_for_scan(priv, band,
|
||||
+ is_active, n_probes,
|
||||
+ (void *)&scan->data[le16_to_cpu(
|
||||
+ scan->tx_cmd.len)]);
|
||||
+ }
|
||||
if (scan->channel_count == 0) {
|
||||
IWL_DEBUG_SCAN(priv, "channel count %d\n", scan->channel_count);
|
||||
goto done;
|
||||
@@ -831,7 +953,12 @@ void iwl_bg_scan_completed(struct work_s
|
||||
|
||||
cancel_delayed_work(&priv->scan_check);
|
||||
|
||||
- ieee80211_scan_completed(priv->hw, false);
|
||||
+ if (!priv->is_internal_short_scan)
|
||||
+ ieee80211_scan_completed(priv->hw, false);
|
||||
+ else {
|
||||
+ priv->is_internal_short_scan = false;
|
||||
+ IWL_DEBUG_SCAN(priv, "internal short scan completed\n");
|
||||
+ }
|
||||
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return;
|
||||
85
iwlwifi_-add-internal-short-scan-support-for-3945.patch
Normal file
85
iwlwifi_-add-internal-short-scan-support-for-3945.patch
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
commit 4f4d4088b05155d4904e29d5c00316395ce32f27
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Wed Feb 24 08:28:30 2010 -0800
|
||||
|
||||
iwlwifi: add internal short scan support for 3945
|
||||
|
||||
Add internal short scan support for 3945 NIC, This allows 3945 NIC
|
||||
to support radio reset request like the other series of NICs.
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
index dd33251..252df12 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
||||
@@ -2799,7 +2799,6 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
.len = sizeof(struct iwl3945_scan_cmd),
|
||||
.flags = CMD_SIZE_HUGE,
|
||||
};
|
||||
- int rc = 0;
|
||||
struct iwl3945_scan_cmd *scan;
|
||||
struct ieee80211_conf *conf = NULL;
|
||||
u8 n_probes = 0;
|
||||
@@ -2827,7 +2826,6 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
if (test_bit(STATUS_SCAN_HW, &priv->status)) {
|
||||
IWL_DEBUG_INFO(priv, "Multiple concurrent scan requests "
|
||||
"Ignoring second request.\n");
|
||||
- rc = -EIO;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -2862,7 +2860,7 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
priv->scan = kmalloc(sizeof(struct iwl3945_scan_cmd) +
|
||||
IWL_MAX_SCAN_SIZE, GFP_KERNEL);
|
||||
if (!priv->scan) {
|
||||
- rc = -ENOMEM;
|
||||
+ IWL_DEBUG_SCAN(priv, "Fail to allocate scan memory\n");
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
@@ -2905,7 +2903,9 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
scan_suspend_time, interval);
|
||||
}
|
||||
|
||||
- if (priv->scan_request->n_ssids) {
|
||||
+ if (priv->is_internal_short_scan) {
|
||||
+ IWL_DEBUG_SCAN(priv, "Start internal passive scan.\n");
|
||||
+ } else if (priv->scan_request->n_ssids) {
|
||||
int i, p = 0;
|
||||
IWL_DEBUG_SCAN(priv, "Kicking off active scan\n");
|
||||
for (i = 0; i < priv->scan_request->n_ssids; i++) {
|
||||
@@ -2952,13 +2952,20 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
goto done;
|
||||
}
|
||||
|
||||
- scan->tx_cmd.len = cpu_to_le16(
|
||||
+ if (!priv->is_internal_short_scan) {
|
||||
+ scan->tx_cmd.len = cpu_to_le16(
|
||||
iwl_fill_probe_req(priv,
|
||||
(struct ieee80211_mgmt *)scan->data,
|
||||
priv->scan_request->ie,
|
||||
priv->scan_request->ie_len,
|
||||
IWL_MAX_SCAN_SIZE - sizeof(*scan)));
|
||||
-
|
||||
+ } else {
|
||||
+ scan->tx_cmd.len = cpu_to_le16(
|
||||
+ iwl_fill_probe_req(priv,
|
||||
+ (struct ieee80211_mgmt *)scan->data,
|
||||
+ NULL, 0,
|
||||
+ IWL_MAX_SCAN_SIZE - sizeof(*scan)));
|
||||
+ }
|
||||
/* select Rx antennas */
|
||||
scan->flags |= iwl3945_get_antenna_flags(priv);
|
||||
|
||||
@@ -2980,8 +2987,7 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
|
||||
scan->len = cpu_to_le16(cmd.len);
|
||||
|
||||
set_bit(STATUS_SCAN_HW, &priv->status);
|
||||
- rc = iwl_send_cmd_sync(priv, &cmd);
|
||||
- if (rc)
|
||||
+ if (iwl_send_cmd_sync(priv, &cmd))
|
||||
goto done;
|
||||
|
||||
queue_delayed_work(priv->workqueue, &priv->scan_check,
|
||||
254
iwlwifi_-code-cleanup-for-connectivity-recovery.patch
Normal file
254
iwlwifi_-code-cleanup-for-connectivity-recovery.patch
Normal file
|
|
@ -0,0 +1,254 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit fa8f130c504223d25c116b3d23787f465dfb1317
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Fri Mar 5 14:22:46 2010 -0800
|
||||
|
||||
iwlwifi: code cleanup for connectivity recovery
|
||||
|
||||
Split the connectivity check and recovery routine into separated
|
||||
functions based on the types
|
||||
1. iwl_good_ack_health() - check for ack count
|
||||
2. iwl_good_plcp_health() - check for plcp error
|
||||
|
||||
Based on the type of errors being detected, different recovery methods
|
||||
will be used to bring the system back to normal operational state.
|
||||
|
||||
Because different NIC has different HW and uCode, the behavior is also
|
||||
different; these functions thus now form part of the ops infrastructure,
|
||||
so we can have more control on how to monitor and recover from error condition
|
||||
case per device.
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c 2010-04-13 15:01:00.000000000 -0400
|
||||
@@ -139,7 +139,8 @@ static struct iwl_lib_ops iwl1000_lib =
|
||||
.set_ct_kill = iwl1000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
- .recover_from_statistics = iwl_recover_from_statistics,
|
||||
+ .check_plcp_health = iwl_good_plcp_health,
|
||||
+ .check_ack_health = iwl_good_ack_health,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl1000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c 2010-04-13 15:02:23.000000000 -0400
|
||||
@@ -2213,7 +2213,7 @@ static struct iwl_lib_ops iwl4965_lib =
|
||||
.temperature = iwl4965_temperature_calib,
|
||||
.set_ct_kill = iwl4965_set_ct_threshold,
|
||||
},
|
||||
- .recover_from_statistics = iwl_recover_from_statistics,
|
||||
+ .check_plcp_health = iwl_good_plcp_health,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl4965_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-04-13 15:01:00.000000000 -0400
|
||||
@@ -1507,7 +1507,8 @@ struct iwl_lib_ops iwl5000_lib = {
|
||||
.set_ct_kill = iwl5000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
- .recover_from_statistics = iwl_recover_from_statistics,
|
||||
+ .check_plcp_health = iwl_good_plcp_health,
|
||||
+ .check_ack_health = iwl_good_ack_health,
|
||||
};
|
||||
|
||||
static struct iwl_lib_ops iwl5150_lib = {
|
||||
@@ -1561,7 +1562,8 @@ static struct iwl_lib_ops iwl5150_lib =
|
||||
.set_ct_kill = iwl5150_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
- .recover_from_statistics = iwl_recover_from_statistics,
|
||||
+ .check_plcp_health = iwl_good_plcp_health,
|
||||
+ .check_ack_health = iwl_good_ack_health,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl5000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c 2010-04-13 15:01:00.000000000 -0400
|
||||
@@ -251,7 +251,8 @@ static struct iwl_lib_ops iwl6000_lib =
|
||||
.set_ct_kill = iwl6000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
- .recover_from_statistics = iwl_recover_from_statistics,
|
||||
+ .check_plcp_health = iwl_good_plcp_health,
|
||||
+ .check_ack_health = iwl_good_ack_health,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl6000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 15:04:33.000000000 -0400
|
||||
@@ -189,8 +189,11 @@ struct iwl_lib_ops {
|
||||
struct iwl_temp_ops temp_ops;
|
||||
/* recover from tx queue stall */
|
||||
void (*recover_from_tx_stall)(unsigned long data);
|
||||
- /* recover from errors showed in statistics */
|
||||
- void (*recover_from_statistics)(struct iwl_priv *priv,
|
||||
+ /* check for plcp health */
|
||||
+ bool (*check_plcp_health)(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt);
|
||||
+ /* check for ack health */
|
||||
+ bool (*check_ack_health)(struct iwl_priv *priv,
|
||||
struct iwl_rx_packet *pkt);
|
||||
};
|
||||
|
||||
@@ -435,7 +438,9 @@ int iwl_tx_queue_reclaim(struct iwl_priv
|
||||
/* Handlers */
|
||||
void iwl_rx_missed_beacon_notif(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb);
|
||||
-void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
+bool iwl_good_plcp_health(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt);
|
||||
+bool iwl_good_ack_health(struct iwl_priv *priv,
|
||||
struct iwl_rx_packet *pkt);
|
||||
void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 14:57:34.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 15:01:00.000000000 -0400
|
||||
@@ -598,24 +598,18 @@ static void iwl_accumulative_statistics(
|
||||
#define BA_TIMEOUT_CNT (5)
|
||||
#define BA_TIMEOUT_MAX (16)
|
||||
|
||||
-#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
||||
-/*
|
||||
- * This function checks for plcp error, ACK count ratios, aggregated BA
|
||||
- * timeout retries.
|
||||
- * - When the ACK count ratio is 0 and aggregated BA timeout retries is
|
||||
- * exceeding the BA_TIMEOUT_MAX, it will recover the failure by resetting
|
||||
- * the firmware.
|
||||
- * - When the plcp error is exceeding the thresholds, it will reset the radio
|
||||
- * to improve the throughput.
|
||||
+/**
|
||||
+ * iwl_good_ack_health - checks for ACK count ratios, BA timeout retries.
|
||||
+ *
|
||||
+ * When the ACK count ratio is 0 and aggregated BA timeout retries exceeding
|
||||
+ * the BA_TIMEOUT_MAX, reload firmware and bring system back to normal
|
||||
+ * operation state.
|
||||
*/
|
||||
-void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
- struct iwl_rx_packet *pkt)
|
||||
+bool iwl_good_ack_health(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt)
|
||||
{
|
||||
- int combined_plcp_delta;
|
||||
- unsigned int plcp_msec;
|
||||
- unsigned long plcp_received_jiffies;
|
||||
- int actual_ack_cnt_delta;
|
||||
- int expected_ack_cnt_delta;
|
||||
+ bool rc = true;
|
||||
+ int actual_ack_cnt_delta, expected_ack_cnt_delta;
|
||||
int ba_timeout_delta;
|
||||
|
||||
actual_ack_cnt_delta =
|
||||
@@ -638,13 +632,27 @@ void iwl_recover_from_statistics(struct
|
||||
|
||||
IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
|
||||
ba_timeout_delta);
|
||||
- if ((actual_ack_cnt_delta == 0) &&
|
||||
- (ba_timeout_delta >= BA_TIMEOUT_MAX)) {
|
||||
- IWL_DEBUG_RADIO(priv,
|
||||
- "call iwl_force_reset(IWL_FW_RESET)\n");
|
||||
- iwl_force_reset(priv, IWL_FW_RESET);
|
||||
- }
|
||||
+ if (!actual_ack_cnt_delta &&
|
||||
+ (ba_timeout_delta >= BA_TIMEOUT_MAX))
|
||||
+ rc = false;
|
||||
}
|
||||
+ return rc;
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_good_ack_health);
|
||||
+
|
||||
+/**
|
||||
+ * iwl_good_plcp_health - checks for plcp error.
|
||||
+ *
|
||||
+ * When the plcp error is exceeding the thresholds, reset the radio
|
||||
+ * to improve the throughput.
|
||||
+ */
|
||||
+bool iwl_good_plcp_health(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt)
|
||||
+{
|
||||
+ bool rc = true;
|
||||
+ int combined_plcp_delta;
|
||||
+ unsigned int plcp_msec;
|
||||
+ unsigned long plcp_received_jiffies;
|
||||
|
||||
/*
|
||||
* check for plcp_err and trigger radio reset if it exceeds
|
||||
@@ -679,7 +687,8 @@ void iwl_recover_from_statistics(struct
|
||||
* combined_plcp_delta,
|
||||
* plcp_msec
|
||||
*/
|
||||
- IWL_DEBUG_RADIO(priv, PLCP_MSG,
|
||||
+ IWL_DEBUG_RADIO(priv, "plcp_err exceeded %u, "
|
||||
+ "%u, %u, %u, %u, %d, %u mSecs\n",
|
||||
priv->cfg->plcp_delta_threshold,
|
||||
le32_to_cpu(pkt->u.stats.rx.ofdm.plcp_err),
|
||||
le32_to_cpu(priv->statistics.rx.ofdm.plcp_err),
|
||||
@@ -687,15 +696,42 @@ void iwl_recover_from_statistics(struct
|
||||
le32_to_cpu(
|
||||
priv->statistics.rx.ofdm_ht.plcp_err),
|
||||
combined_plcp_delta, plcp_msec);
|
||||
- /*
|
||||
- * Reset the RF radio due to the high plcp
|
||||
- * error rate
|
||||
- */
|
||||
- iwl_force_reset(priv, IWL_RF_RESET);
|
||||
+ rc = false;
|
||||
+ }
|
||||
+ }
|
||||
+ return rc;
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_good_plcp_health);
|
||||
+
|
||||
+static void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt)
|
||||
+{
|
||||
+ if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
+ return;
|
||||
+ if (iwl_is_associated(priv)) {
|
||||
+ if (priv->cfg->ops->lib->check_ack_health) {
|
||||
+ if (!priv->cfg->ops->lib->check_ack_health(
|
||||
+ priv, pkt)) {
|
||||
+ /*
|
||||
+ * low ack count detected
|
||||
+ * restart Firmware
|
||||
+ */
|
||||
+ IWL_ERR(priv, "low ack count detected, "
|
||||
+ "restart firmware\n");
|
||||
+ iwl_force_reset(priv, IWL_FW_RESET);
|
||||
+ }
|
||||
+ } else if (priv->cfg->ops->lib->check_plcp_health) {
|
||||
+ if (!priv->cfg->ops->lib->check_plcp_health(
|
||||
+ priv, pkt)) {
|
||||
+ /*
|
||||
+ * high plcp error detected
|
||||
+ * reset Radio
|
||||
+ */
|
||||
+ iwl_force_reset(priv, IWL_RF_RESET);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
-EXPORT_SYMBOL(iwl_recover_from_statistics);
|
||||
|
||||
void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb)
|
||||
@@ -717,8 +753,7 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
||||
#endif
|
||||
- if (priv->cfg->ops->lib->recover_from_statistics)
|
||||
- priv->cfg->ops->lib->recover_from_statistics(priv, pkt);
|
||||
+ iwl_recover_from_statistics(priv, pkt);
|
||||
|
||||
memcpy(&priv->statistics, &pkt->u.stats, sizeof(priv->statistics));
|
||||
|
||||
140
iwlwifi_-iwl_good_ack_health-only-apply-to-AGN-device.patch
Normal file
140
iwlwifi_-iwl_good_ack_health-only-apply-to-AGN-device.patch
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit 872c8ddcbec06995c1c7caa3e41c921290a8b6df
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Tue Mar 16 10:46:31 2010 -0700
|
||||
|
||||
iwlwifi: iwl_good_ack_health() only apply to AGN device
|
||||
|
||||
iwl_good_ack_health() check for expected and actual ack count which only
|
||||
apply to aggregation mode. Move the function to iwlagn module.
|
||||
|
||||
Reported-by: Chantry Xavier <chantry.xavier@gmail.com>
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig 2010-04-13 15:15:47.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c 2010-04-13 15:20:00.000000000 -0400
|
||||
@@ -1316,6 +1316,52 @@ static void iwl_irq_tasklet(struct iwl_p
|
||||
iwl_enable_interrupts(priv);
|
||||
}
|
||||
|
||||
+/* the threshold ratio of actual_ack_cnt to expected_ack_cnt in percent */
|
||||
+#define ACK_CNT_RATIO (50)
|
||||
+#define BA_TIMEOUT_CNT (5)
|
||||
+#define BA_TIMEOUT_MAX (16)
|
||||
+
|
||||
+/**
|
||||
+ * iwl_good_ack_health - checks for ACK count ratios, BA timeout retries.
|
||||
+ *
|
||||
+ * When the ACK count ratio is 0 and aggregated BA timeout retries exceeding
|
||||
+ * the BA_TIMEOUT_MAX, reload firmware and bring system back to normal
|
||||
+ * operation state.
|
||||
+ */
|
||||
+bool iwl_good_ack_health(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt)
|
||||
+{
|
||||
+ bool rc = true;
|
||||
+ int actual_ack_cnt_delta, expected_ack_cnt_delta;
|
||||
+ int ba_timeout_delta;
|
||||
+
|
||||
+ actual_ack_cnt_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.actual_ack_cnt) -
|
||||
+ le32_to_cpu(priv->statistics.tx.actual_ack_cnt);
|
||||
+ expected_ack_cnt_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.expected_ack_cnt) -
|
||||
+ le32_to_cpu(priv->statistics.tx.expected_ack_cnt);
|
||||
+ ba_timeout_delta =
|
||||
+ le32_to_cpu(pkt->u.stats.tx.agg.ba_timeout) -
|
||||
+ le32_to_cpu(priv->statistics.tx.agg.ba_timeout);
|
||||
+ if ((priv->agg_tids_count > 0) &&
|
||||
+ (expected_ack_cnt_delta > 0) &&
|
||||
+ (((actual_ack_cnt_delta * 100) / expected_ack_cnt_delta)
|
||||
+ < ACK_CNT_RATIO) &&
|
||||
+ (ba_timeout_delta > BA_TIMEOUT_CNT)) {
|
||||
+ IWL_DEBUG_RADIO(priv, "actual_ack_cnt delta = %d,"
|
||||
+ " expected_ack_cnt = %d\n",
|
||||
+ actual_ack_cnt_delta, expected_ack_cnt_delta);
|
||||
+
|
||||
+ IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
|
||||
+ ba_timeout_delta);
|
||||
+ if (!actual_ack_cnt_delta &&
|
||||
+ (ba_timeout_delta >= BA_TIMEOUT_MAX))
|
||||
+ rc = false;
|
||||
+ }
|
||||
+ return rc;
|
||||
+}
|
||||
+
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 15:15:47.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 15:18:13.000000000 -0400
|
||||
@@ -584,6 +584,8 @@ void iwl_disable_ict(struct iwl_priv *pr
|
||||
int iwl_alloc_isr_ict(struct iwl_priv *priv);
|
||||
void iwl_free_isr_ict(struct iwl_priv *priv);
|
||||
irqreturn_t iwl_isr_ict(int irq, void *data);
|
||||
+bool iwl_good_ack_health(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt);
|
||||
|
||||
static inline u16 iwl_pcie_link_ctl(struct iwl_priv *priv)
|
||||
{
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 15:15:47.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 15:18:52.000000000 -0400
|
||||
@@ -593,53 +593,6 @@ static void iwl_accumulative_statistics(
|
||||
|
||||
#define REG_RECALIB_PERIOD (60)
|
||||
|
||||
-/* the threshold ratio of actual_ack_cnt to expected_ack_cnt in percent */
|
||||
-#define ACK_CNT_RATIO (50)
|
||||
-#define BA_TIMEOUT_CNT (5)
|
||||
-#define BA_TIMEOUT_MAX (16)
|
||||
-
|
||||
-/**
|
||||
- * iwl_good_ack_health - checks for ACK count ratios, BA timeout retries.
|
||||
- *
|
||||
- * When the ACK count ratio is 0 and aggregated BA timeout retries exceeding
|
||||
- * the BA_TIMEOUT_MAX, reload firmware and bring system back to normal
|
||||
- * operation state.
|
||||
- */
|
||||
-bool iwl_good_ack_health(struct iwl_priv *priv,
|
||||
- struct iwl_rx_packet *pkt)
|
||||
-{
|
||||
- bool rc = true;
|
||||
- int actual_ack_cnt_delta, expected_ack_cnt_delta;
|
||||
- int ba_timeout_delta;
|
||||
-
|
||||
- actual_ack_cnt_delta =
|
||||
- le32_to_cpu(pkt->u.stats.tx.actual_ack_cnt) -
|
||||
- le32_to_cpu(priv->statistics.tx.actual_ack_cnt);
|
||||
- expected_ack_cnt_delta =
|
||||
- le32_to_cpu(pkt->u.stats.tx.expected_ack_cnt) -
|
||||
- le32_to_cpu(priv->statistics.tx.expected_ack_cnt);
|
||||
- ba_timeout_delta =
|
||||
- le32_to_cpu(pkt->u.stats.tx.agg.ba_timeout) -
|
||||
- le32_to_cpu(priv->statistics.tx.agg.ba_timeout);
|
||||
- if ((priv->agg_tids_count > 0) &&
|
||||
- (expected_ack_cnt_delta > 0) &&
|
||||
- (((actual_ack_cnt_delta * 100) / expected_ack_cnt_delta)
|
||||
- < ACK_CNT_RATIO) &&
|
||||
- (ba_timeout_delta > BA_TIMEOUT_CNT)) {
|
||||
- IWL_DEBUG_RADIO(priv, "actual_ack_cnt delta = %d,"
|
||||
- " expected_ack_cnt = %d\n",
|
||||
- actual_ack_cnt_delta, expected_ack_cnt_delta);
|
||||
-
|
||||
- IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
|
||||
- ba_timeout_delta);
|
||||
- if (!actual_ack_cnt_delta &&
|
||||
- (ba_timeout_delta >= BA_TIMEOUT_MAX))
|
||||
- rc = false;
|
||||
- }
|
||||
- return rc;
|
||||
-}
|
||||
-EXPORT_SYMBOL(iwl_good_ack_health);
|
||||
-
|
||||
/**
|
||||
* iwl_good_plcp_health - checks for plcp error.
|
||||
*
|
||||
186
iwlwifi_-move-plcp-check-to-separated-function.patch
Normal file
186
iwlwifi_-move-plcp-check-to-separated-function.patch
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit beac5498b792ed8420885ee23e8d4f2885ee2d13
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Thu Mar 4 13:38:58 2010 -0800
|
||||
|
||||
iwlwifi: move plcp check to separated function
|
||||
|
||||
Move the plcp error checking into stand alone function and pointed by ops
|
||||
to accommodate devices not needing this recovery.
|
||||
|
||||
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-1000.c 2010-04-13 14:40:43.000000000 -0400
|
||||
@@ -139,6 +139,7 @@ static struct iwl_lib_ops iwl1000_lib =
|
||||
.set_ct_kill = iwl1000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
+ .recover_from_statistics = iwl_recover_from_statistics,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl1000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c 2010-04-13 14:41:23.000000000 -0400
|
||||
@@ -2213,6 +2213,7 @@ static struct iwl_lib_ops iwl4965_lib =
|
||||
.temperature = iwl4965_temperature_calib,
|
||||
.set_ct_kill = iwl4965_set_ct_threshold,
|
||||
},
|
||||
+ .recover_from_statistics = iwl_recover_from_statistics,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl4965_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-5000.c 2010-04-13 14:40:43.000000000 -0400
|
||||
@@ -1507,6 +1507,7 @@ struct iwl_lib_ops iwl5000_lib = {
|
||||
.set_ct_kill = iwl5000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
+ .recover_from_statistics = iwl_recover_from_statistics,
|
||||
};
|
||||
|
||||
static struct iwl_lib_ops iwl5150_lib = {
|
||||
@@ -1560,6 +1561,7 @@ static struct iwl_lib_ops iwl5150_lib =
|
||||
.set_ct_kill = iwl5150_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
+ .recover_from_statistics = iwl_recover_from_statistics,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl5000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-6000.c 2010-04-13 14:42:29.000000000 -0400
|
||||
@@ -251,6 +251,7 @@ static struct iwl_lib_ops iwl6000_lib =
|
||||
.set_ct_kill = iwl6000_set_ct_threshold,
|
||||
},
|
||||
.recover_from_tx_stall = iwl_bg_monitor_recover,
|
||||
+ .recover_from_statistics = iwl_recover_from_statistics,
|
||||
};
|
||||
|
||||
static struct iwl_ops iwl6000_ops = {
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 14:43:12.000000000 -0400
|
||||
@@ -189,6 +189,9 @@ struct iwl_lib_ops {
|
||||
struct iwl_temp_ops temp_ops;
|
||||
/* recover from tx queue stall */
|
||||
void (*recover_from_tx_stall)(unsigned long data);
|
||||
+ /* recover from errors showed in statistics */
|
||||
+ void (*recover_from_statistics)(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt);
|
||||
};
|
||||
|
||||
struct iwl_led_ops {
|
||||
@@ -432,6 +435,8 @@ int iwl_tx_queue_reclaim(struct iwl_priv
|
||||
/* Handlers */
|
||||
void iwl_rx_missed_beacon_notif(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb);
|
||||
+void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt);
|
||||
void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
struct iwl_rx_mem_buffer *rxb);
|
||||
void iwl_reply_statistics(struct iwl_priv *priv,
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 14:40:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 14:40:43.000000000 -0400
|
||||
@@ -594,28 +594,18 @@ static void iwl_accumulative_statistics(
|
||||
#define REG_RECALIB_PERIOD (60)
|
||||
|
||||
#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
||||
-void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
- struct iwl_rx_mem_buffer *rxb)
|
||||
+/*
|
||||
+ * This function checks for plcp error.
|
||||
+ * - When the plcp error is exceeding the thresholds, it will reset the radio
|
||||
+ * to improve the throughput.
|
||||
+ */
|
||||
+void iwl_recover_from_statistics(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_packet *pkt)
|
||||
{
|
||||
- int change;
|
||||
- struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||
int combined_plcp_delta;
|
||||
unsigned int plcp_msec;
|
||||
unsigned long plcp_received_jiffies;
|
||||
|
||||
- IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
|
||||
- (int)sizeof(priv->statistics),
|
||||
- le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK);
|
||||
-
|
||||
- change = ((priv->statistics.general.temperature !=
|
||||
- pkt->u.stats.general.temperature) ||
|
||||
- ((priv->statistics.flag &
|
||||
- STATISTICS_REPLY_FLG_HT40_MODE_MSK) !=
|
||||
- (pkt->u.stats.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)));
|
||||
-
|
||||
-#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
- iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
||||
-#endif
|
||||
/*
|
||||
* check for plcp_err and trigger radio reset if it exceeds
|
||||
* the plcp error threshold plcp_delta.
|
||||
@@ -636,11 +626,11 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
le32_to_cpu(priv->statistics.rx.ofdm_ht.plcp_err));
|
||||
|
||||
if ((combined_plcp_delta > 0) &&
|
||||
- ((combined_plcp_delta * 100) / plcp_msec) >
|
||||
+ ((combined_plcp_delta * 100) / plcp_msec) >
|
||||
priv->cfg->plcp_delta_threshold) {
|
||||
/*
|
||||
- * if plcp_err exceed the threshold, the following
|
||||
- * data is printed in csv format:
|
||||
+ * if plcp_err exceed the threshold,
|
||||
+ * the following data is printed in csv format:
|
||||
* Text: plcp_err exceeded %d,
|
||||
* Received ofdm.plcp_err,
|
||||
* Current ofdm.plcp_err,
|
||||
@@ -655,9 +645,8 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
le32_to_cpu(priv->statistics.rx.ofdm.plcp_err),
|
||||
le32_to_cpu(pkt->u.stats.rx.ofdm_ht.plcp_err),
|
||||
le32_to_cpu(
|
||||
- priv->statistics.rx.ofdm_ht.plcp_err),
|
||||
+ priv->statistics.rx.ofdm_ht.plcp_err),
|
||||
combined_plcp_delta, plcp_msec);
|
||||
-
|
||||
/*
|
||||
* Reset the RF radio due to the high plcp
|
||||
* error rate
|
||||
@@ -665,6 +654,31 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
iwl_force_reset(priv, IWL_RF_RESET);
|
||||
}
|
||||
}
|
||||
+}
|
||||
+EXPORT_SYMBOL(iwl_recover_from_statistics);
|
||||
+
|
||||
+void iwl_rx_statistics(struct iwl_priv *priv,
|
||||
+ struct iwl_rx_mem_buffer *rxb)
|
||||
+{
|
||||
+ int change;
|
||||
+ struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||
+
|
||||
+
|
||||
+ IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
|
||||
+ (int)sizeof(priv->statistics),
|
||||
+ le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK);
|
||||
+
|
||||
+ change = ((priv->statistics.general.temperature !=
|
||||
+ pkt->u.stats.general.temperature) ||
|
||||
+ ((priv->statistics.flag &
|
||||
+ STATISTICS_REPLY_FLG_HT40_MODE_MSK) !=
|
||||
+ (pkt->u.stats.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)));
|
||||
+
|
||||
+#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
+ iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
||||
+#endif
|
||||
+ if (priv->cfg->ops->lib->recover_from_statistics)
|
||||
+ priv->cfg->ops->lib->recover_from_statistics(priv, pkt);
|
||||
|
||||
memcpy(&priv->statistics, &pkt->u.stats, sizeof(priv->statistics));
|
||||
|
||||
172
iwlwifi_-multiple-force-reset-mode.patch
Normal file
172
iwlwifi_-multiple-force-reset-mode.patch
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit a93e7973d0983d22fcbe5f691244736211639fe7
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Wed Feb 3 11:47:19 2010 -0800
|
||||
|
||||
iwlwifi: multiple force reset mode
|
||||
|
||||
Provide the function to perform different type of uCode reset/reload operation.
|
||||
When uCode detect error and can not fix itself, this iwl_force_reset()
|
||||
function allow driver to perform the necessary reset/reload functions and help
|
||||
to bring uCode back to normal operation state.
|
||||
|
||||
Currently only 2 type of force reset are available:
|
||||
- reset radio
|
||||
- reload firmware
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig 2010-04-13 13:36:35.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c 2010-04-13 13:38:40.000000000 -0400
|
||||
@@ -3197,7 +3197,7 @@ void iwl_update_stats(struct iwl_priv *p
|
||||
EXPORT_SYMBOL(iwl_update_stats);
|
||||
#endif
|
||||
|
||||
-void iwl_force_rf_reset(struct iwl_priv *priv)
|
||||
+static void iwl_force_rf_reset(struct iwl_priv *priv)
|
||||
{
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return;
|
||||
@@ -3219,7 +3219,47 @@ void iwl_force_rf_reset(struct iwl_priv
|
||||
iwl_internal_short_hw_scan(priv);
|
||||
return;
|
||||
}
|
||||
-EXPORT_SYMBOL(iwl_force_rf_reset);
|
||||
+
|
||||
+#define IWL_DELAY_NEXT_FORCE_RESET (HZ*3)
|
||||
+
|
||||
+int iwl_force_reset(struct iwl_priv *priv, int mode)
|
||||
+{
|
||||
+ if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ if (priv->last_force_reset_jiffies &&
|
||||
+ time_after(priv->last_force_reset_jiffies +
|
||||
+ IWL_DELAY_NEXT_FORCE_RESET, jiffies)) {
|
||||
+ IWL_DEBUG_INFO(priv, "force reset rejected\n");
|
||||
+ return -EAGAIN;
|
||||
+ }
|
||||
+
|
||||
+ IWL_DEBUG_INFO(priv, "perform force reset (%d)\n", mode);
|
||||
+
|
||||
+ switch (mode) {
|
||||
+ case IWL_RF_RESET:
|
||||
+ iwl_force_rf_reset(priv);
|
||||
+ break;
|
||||
+ case IWL_FW_RESET:
|
||||
+ IWL_ERR(priv, "On demand firmware reload\n");
|
||||
+ /* Set the FW error flag -- cleared on iwl_down */
|
||||
+ set_bit(STATUS_FW_ERROR, &priv->status);
|
||||
+ wake_up_interruptible(&priv->wait_command_queue);
|
||||
+ /*
|
||||
+ * Keep the restart process from trying to send host
|
||||
+ * commands by clearing the INIT status bit
|
||||
+ */
|
||||
+ clear_bit(STATUS_READY, &priv->status);
|
||||
+ queue_work(priv->workqueue, &priv->restart);
|
||||
+ break;
|
||||
+ default:
|
||||
+ IWL_DEBUG_INFO(priv, "invalid reset request.\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ priv->last_force_reset_jiffies = jiffies;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h.orig 2010-04-13 13:36:50.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.h 2010-04-13 13:38:40.000000000 -0400
|
||||
@@ -501,7 +501,7 @@ int iwl_scan_cancel(struct iwl_priv *pri
|
||||
int iwl_scan_cancel_timeout(struct iwl_priv *priv, unsigned long ms);
|
||||
int iwl_mac_hw_scan(struct ieee80211_hw *hw, struct cfg80211_scan_request *req);
|
||||
int iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
||||
-void iwl_force_rf_reset(struct iwl_priv *priv);
|
||||
+int iwl_force_reset(struct iwl_priv *priv, int mode);
|
||||
u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
|
||||
const u8 *ie, int ie_len, int left);
|
||||
void iwl_setup_rx_scan_handlers(struct iwl_priv *priv);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 13:36:50.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 13:38:40.000000000 -0400
|
||||
@@ -993,6 +993,11 @@ struct iwl_switch_rxon {
|
||||
#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
|
||||
#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
|
||||
|
||||
+enum iwl_reset {
|
||||
+ IWL_RF_RESET = 0,
|
||||
+ IWL_FW_RESET,
|
||||
+};
|
||||
+
|
||||
struct iwl_priv {
|
||||
|
||||
/* ieee device used by generic ieee processing code */
|
||||
@@ -1024,6 +1029,9 @@ struct iwl_priv {
|
||||
/* storing the jiffies when the plcp error rate is received */
|
||||
unsigned long plcp_jiffies;
|
||||
|
||||
+ /* force reset */
|
||||
+ unsigned long last_force_reset_jiffies;
|
||||
+
|
||||
/* we allocate array of iwl4965_channel_info for NIC's valid channels.
|
||||
* Access via channel # using indirect index array */
|
||||
struct iwl_channel_info *channel_info; /* channel info array */
|
||||
@@ -1046,7 +1054,6 @@ struct iwl_priv {
|
||||
unsigned long scan_start;
|
||||
unsigned long scan_pass_start;
|
||||
unsigned long scan_start_tsf;
|
||||
- unsigned long last_internal_scan_jiffies;
|
||||
void *scan;
|
||||
int scan_bands;
|
||||
struct cfg80211_scan_request *scan_request;
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c.orig 2010-04-13 13:36:50.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-rx.c 2010-04-13 13:38:40.000000000 -0400
|
||||
@@ -662,7 +662,7 @@ void iwl_rx_statistics(struct iwl_priv *
|
||||
* Reset the RF radio due to the high plcp
|
||||
* error rate
|
||||
*/
|
||||
- iwl_force_rf_reset(priv);
|
||||
+ iwl_force_reset(priv, IWL_RF_RESET);
|
||||
}
|
||||
}
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig 2010-04-13 13:36:42.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c 2010-04-13 13:38:40.000000000 -0400
|
||||
@@ -254,8 +254,6 @@ static void iwl_rx_scan_complete_notif(s
|
||||
priv->last_scan_jiffies = jiffies;
|
||||
if (!priv->is_internal_short_scan)
|
||||
priv->next_scan_jiffies = 0;
|
||||
- else
|
||||
- priv->last_internal_scan_jiffies = jiffies;
|
||||
|
||||
IWL_DEBUG_INFO(priv, "Setting scan to off\n");
|
||||
|
||||
@@ -564,8 +562,6 @@ EXPORT_SYMBOL(iwl_mac_hw_scan);
|
||||
* internal short scan, this function should only been called while associated.
|
||||
* It will reset and tune the radio to prevent possible RF related problem
|
||||
*/
|
||||
-#define IWL_DELAY_NEXT_INTERNAL_SCAN (HZ*1)
|
||||
-
|
||||
int iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -585,12 +581,6 @@ int iwl_internal_short_hw_scan(struct iw
|
||||
ret = -EAGAIN;
|
||||
goto out;
|
||||
}
|
||||
- if (priv->last_internal_scan_jiffies &&
|
||||
- time_after(priv->last_internal_scan_jiffies +
|
||||
- IWL_DELAY_NEXT_INTERNAL_SCAN, jiffies)) {
|
||||
- IWL_DEBUG_SCAN(priv, "internal scan rejected\n");
|
||||
- goto out;
|
||||
- }
|
||||
|
||||
priv->scan_bands = 0;
|
||||
if (priv->band == IEEE80211_BAND_5GHZ)
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
Backport of the following upstream commit...
|
||||
|
||||
commit 8a472da431998b7357e6dc562e79a3061ed56cad
|
||||
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Thu Feb 18 22:03:06 2010 -0800
|
||||
|
||||
iwlwifi: separated time check for different type of force reset
|
||||
|
||||
Use different timing duration check for different type of force reset,
|
||||
force reset request can come from different source and based on
|
||||
different reason; one type of reset request should not block other type of
|
||||
reset request.
|
||||
|
||||
Adding structure to keep track of different force reset request.
|
||||
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c.orig 2010-04-13 13:44:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-agn.c 2010-04-13 13:47:34.000000000 -0400
|
||||
@@ -3189,6 +3189,12 @@ static int iwl_init_drv(struct iwl_priv
|
||||
|
||||
priv->iw_mode = NL80211_IFTYPE_STATION;
|
||||
|
||||
+ /* initialize force reset */
|
||||
+ priv->force_reset[IWL_RF_RESET].reset_duration =
|
||||
+ IWL_DELAY_NEXT_FORCE_RF_RESET;
|
||||
+ priv->force_reset[IWL_FW_RESET].reset_duration =
|
||||
+ IWL_DELAY_NEXT_FORCE_FW_RELOAD;
|
||||
+
|
||||
/* Choose which receivers/antennas to use */
|
||||
if (priv->cfg->ops->hcmd->set_rxon_chain)
|
||||
priv->cfg->ops->hcmd->set_rxon_chain(priv);
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c.orig 2010-04-13 13:44:14.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-core.c 2010-04-13 13:47:34.000000000 -0400
|
||||
@@ -3220,22 +3220,30 @@ static void iwl_force_rf_reset(struct iw
|
||||
return;
|
||||
}
|
||||
|
||||
-#define IWL_DELAY_NEXT_FORCE_RESET (HZ*3)
|
||||
|
||||
int iwl_force_reset(struct iwl_priv *priv, int mode)
|
||||
{
|
||||
+ struct iwl_force_reset *force_reset;
|
||||
+
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
return -EINVAL;
|
||||
|
||||
- if (priv->last_force_reset_jiffies &&
|
||||
- time_after(priv->last_force_reset_jiffies +
|
||||
- IWL_DELAY_NEXT_FORCE_RESET, jiffies)) {
|
||||
+ if (mode >= IWL_MAX_FORCE_RESET) {
|
||||
+ IWL_DEBUG_INFO(priv, "invalid reset request.\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ force_reset = &priv->force_reset[mode];
|
||||
+ force_reset->reset_request_count++;
|
||||
+ if (force_reset->last_force_reset_jiffies &&
|
||||
+ time_after(force_reset->last_force_reset_jiffies +
|
||||
+ force_reset->reset_duration, jiffies)) {
|
||||
IWL_DEBUG_INFO(priv, "force reset rejected\n");
|
||||
+ force_reset->reset_reject_count++;
|
||||
return -EAGAIN;
|
||||
}
|
||||
-
|
||||
+ force_reset->reset_success_count++;
|
||||
+ force_reset->last_force_reset_jiffies = jiffies;
|
||||
IWL_DEBUG_INFO(priv, "perform force reset (%d)\n", mode);
|
||||
-
|
||||
switch (mode) {
|
||||
case IWL_RF_RESET:
|
||||
iwl_force_rf_reset(priv);
|
||||
@@ -3252,12 +3260,7 @@ int iwl_force_reset(struct iwl_priv *pri
|
||||
clear_bit(STATUS_READY, &priv->status);
|
||||
queue_work(priv->workqueue, &priv->restart);
|
||||
break;
|
||||
- default:
|
||||
- IWL_DEBUG_INFO(priv, "invalid reset request.\n");
|
||||
- return -EINVAL;
|
||||
}
|
||||
- priv->last_force_reset_jiffies = jiffies;
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff -up linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h
|
||||
--- linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h.orig 2010-04-13 13:45:06.000000000 -0400
|
||||
+++ linux-2.6.33.noarch/drivers/net/wireless/iwlwifi/iwl-dev.h 2010-04-13 13:47:34.000000000 -0400
|
||||
@@ -994,9 +994,21 @@ struct iwl_switch_rxon {
|
||||
#define IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF (200)
|
||||
#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
|
||||
|
||||
+#define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3)
|
||||
+#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
|
||||
+
|
||||
enum iwl_reset {
|
||||
IWL_RF_RESET = 0,
|
||||
IWL_FW_RESET,
|
||||
+ IWL_MAX_FORCE_RESET,
|
||||
+};
|
||||
+
|
||||
+struct iwl_force_reset {
|
||||
+ int reset_request_count;
|
||||
+ int reset_success_count;
|
||||
+ int reset_reject_count;
|
||||
+ unsigned long reset_duration;
|
||||
+ unsigned long last_force_reset_jiffies;
|
||||
};
|
||||
|
||||
struct iwl_priv {
|
||||
@@ -1031,7 +1043,7 @@ struct iwl_priv {
|
||||
unsigned long plcp_jiffies;
|
||||
|
||||
/* force reset */
|
||||
- unsigned long last_force_reset_jiffies;
|
||||
+ struct iwl_force_reset force_reset[IWL_MAX_FORCE_RESET];
|
||||
|
||||
/* we allocate array of iwl4965_channel_info for NIC's valid channels.
|
||||
* Access via channel # using indirect index array */
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue