18 Dec, 2009

2 commits

  • …/rusty/linux-2.6-for-linus

    * 'cpumask-cleanups' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
    cpumask: rename tsk_cpumask to tsk_cpus_allowed
    cpumask: don't recommend set_cpus_allowed hack in Documentation/cpu-hotplug.txt
    cpumask: avoid dereferencing struct cpumask
    cpumask: convert drivers/idle/i7300_idle.c to cpumask_var_t
    cpumask: use modern cpumask style in drivers/scsi/fcoe/fcoe.c
    cpumask: avoid deprecated function in mm/slab.c
    cpumask: use cpu_online in kernel/perf_event.c

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    hwmon: (w83627hf) Fix for "No such device"
    hwmon: (sht15) Off-by-one error in array index + incorrect constants
    hwmon: Add driver for VIA CPU core temperature
    hwmon: (smsc47m1) Enable device if needed
    hwmon: (smsc47m1) Fail module loading on error
    hwmon: (smsc47m1) Only request I/O ports we really use
    hwmon: New driver for AMD Family 10h/11h CPUs

    Linus Torvalds
     

17 Dec, 2009

12 commits

  • * 'for-33' of git://repo.or.cz/linux-kbuild: (29 commits)
    net: fix for utsrelease.h moving to generated
    gen_init_cpio: fixed fwrite warning
    kbuild: fix make clean after mismerge
    kbuild: generate modules.builtin
    genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}()
    score: add asm/asm-offsets.h wrapper
    unifdef: update to upstream revision 1.190
    kbuild: specify absolute paths for cscope
    kbuild: create include/generated in silentoldconfig
    scripts/package: deb-pkg: use fakeroot if available
    scripts/package: add KBUILD_PKG_ROOTCMD variable
    scripts/package: tar-pkg: use tar --owner=root
    Kbuild: clean up marker
    net: add net_tstamp.h to headers_install
    kbuild: move utsrelease.h to include/generated
    kbuild: move autoconf.h to include/generated
    drop explicit include of autoconf.h
    kbuild: move compile.h to include/generated
    kbuild: drop include/asm
    kbuild: do not check for include/asm-$ARCH
    ...

    Fixed non-conflicting clean merge of modpost.c as per comments from
    Stephen Rothwell (modpost.c had grown an include of linux/autoconf.h
    that needed to be changed to generated/autoconf.h)

    Linus Torvalds
     
  • Signed-off-by: Rusty Russell
    Cc: Gautham R Shenoy
    Cc: Ashok Raj

    Rusty Russell
     
  • * 'next' of git://git.secretlab.ca/git/linux-2.6: (23 commits)
    powerpc: fix up for mmu_mapin_ram api change
    powerpc: wii: allow ioremap within the memory hole
    powerpc: allow ioremap within reserved memory regions
    wii: use both mem1 and mem2 as ram
    wii: bootwrapper: add fixup to calc useable mem2
    powerpc: gamecube/wii: early debugging using usbgecko
    powerpc: reserve fixmap entries for early debug
    powerpc: wii: default config
    powerpc: wii: platform support
    powerpc: wii: hollywood interrupt controller support
    powerpc: broadway processor support
    powerpc: wii: bootwrapper bits
    powerpc: wii: device tree
    powerpc: gamecube: default config
    powerpc: gamecube: platform support
    powerpc: gamecube/wii: flipper interrupt controller support
    powerpc: gamecube/wii: udbg support for usbgecko
    powerpc: gamecube/wii: do not include PCI support
    powerpc: gamecube/wii: declare as non-coherent platforms
    powerpc: gamecube/wii: introduce GAMECUBE_COMMON
    ...

    Fix up conflicts in arch/powerpc/mm/fsl_booke_mmu.c.

    Hopefully even close to correctly.

    Linus Torvalds
     
  • This adds a driver for the internal temperature sensor of AMD Family 10h
    and 11h CPUs.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Jean Delvare

    Clemens Ladisch
     
  • * 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (34 commits)
    HWPOISON: Remove stray phrase in a comment
    HWPOISON: Try to allocate migration page on the same node
    HWPOISON: Don't do early filtering if filter is disabled
    HWPOISON: Add a madvise() injector for soft page offlining
    HWPOISON: Add soft page offline support
    HWPOISON: Undefine short-hand macros after use to avoid namespace conflict
    HWPOISON: Use new shake_page in memory_failure
    HWPOISON: Use correct name for MADV_HWPOISON in documentation
    HWPOISON: mention HWPoison in Kconfig entry
    HWPOISON: Use get_user_page_fast in hwpoison madvise
    HWPOISON: add an interface to switch off/on all the page filters
    HWPOISON: add memory cgroup filter
    memcg: add accessor to mem_cgroup.css
    memcg: rename and export try_get_mem_cgroup_from_page()
    HWPOISON: add page flags filter
    mm: export stable page flags
    HWPOISON: limit hwpoison injector to known page types
    HWPOISON: add fs/device filters
    HWPOISON: return 0 to indicate success reliably
    HWPOISON: make semantics of IGNORED/DELAYED clear
    ...

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (117 commits)
    ACPI processor: Fix section mismatch for processor_add()
    ACPI: Add platform-wide _OSC support.
    ACPI: cleanup pci_root _OSC code.
    ACPI: Add a generic API for _OSC -v2
    msi-wmi: depend on backlight and fix corner-cases problems
    msi-wmi: switch to using input sparse keymap library
    msi-wmi: replace one-condition switch-case with if statement
    msi-wmi: remove unused field 'instance' in key_entry structure
    msi-wmi: remove custom runtime debug implementation
    msi-wmi: rework init
    msi-wmi: remove useless includes
    X86 drivers: Introduce msi-wmi driver
    Toshiba Bluetooth Enabling driver (RFKill handler v3)
    ACPI: fix for lapic_timer_propagate_broadcast()
    acpi_pad: squish warning
    ACPI: dock: minor whitespace and style cleanups
    ACPI: dock: add struct dock_station * directly to platform device data
    ACPI: dock: dock_add - hoist up platform_device_register_simple()
    ACPI: dock: remove global 'dock_device_name'
    ACPI: dock: combine add|alloc_dock_dependent_device (v2)
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (88 commits)
    Blackfin: Convert BUG() to use unreachable()
    Blackfin: define __NR_recvmmsg
    Blackfin: drop duplicate sched_clock
    Blackfin: NOMPU: skip DMA ICPLB hole when it is redundant
    Blackfin: MPU: add missing __init markings
    Blackfin: add support for TIF_NOTIFY_RESUME
    Blackfin: kgdb_test: clean up code a bit
    Blackfin: convert kgdbtest to proc_fops
    Blackfin: convert cyc2ns() to clocksource_cyc2ns()
    Blackfin: ip0x: pull in asm/portmux.h for P_xxx defines
    Blackfin: drop unused ax88180 resources
    Blackfin: bf537-stamp: add ADF702x network driver resources
    Blackfin: bf537-stamp: add CAN resources
    Blackfin: bf537-stamp: add AD5258 i2c address
    Blackfin: bf537-stamp: add adau1761 i2c address
    Blackfin: bf537-stamp: add adau1371 i2c address
    Blackfin: bf537-stamp: add ADP8870 resources
    Blackfin: bf537-stamp: kill AD714x board-specific Kconfigs
    Blackfin: bf537-stamp: update ADP5520 resources
    Blackfin: bf537-stamp: add ADXL346 orientation sensing support
    ...

    Linus Torvalds
     
  • * 'for-2.6.33' of git://linux-nfs.org/~bfields/linux: (42 commits)
    nfsd: remove pointless paths in file headers
    nfsd: move most of nfsfh.h to fs/nfsd
    nfsd: remove unused field rq_reffh
    nfsd: enable V4ROOT exports
    nfsd: make V4ROOT exports read-only
    nfsd: restrict filehandles accepted in V4ROOT case
    nfsd: allow exports of symlinks
    nfsd: filter readdir results in V4ROOT case
    nfsd: filter lookup results in V4ROOT case
    nfsd4: don't continue "under" mounts in V4ROOT case
    nfsd: introduce export flag for v4 pseudoroot
    nfsd: let "insecure" flag vary by pseudoflavor
    nfsd: new interface to advertise export features
    nfsd: Move private headers to source directory
    vfs: nfsctl.c un-used nfsd #includes
    lockd: Remove un-used nfsd headers #includes
    s390: remove un-used nfsd #includes
    sparc: remove un-used nfsd #includes
    parsic: remove un-used nfsd #includes
    compat.c: Remove dependence on nfsd private headers
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (26 commits)
    net: sh_eth alignment fix for sh7724 using NET_IP_ALIGN V2
    ixgbe: allow tx of pre-formatted vlan tagged packets
    ixgbe: Fix 82598 premature copper PHY link indicatation
    ixgbe: Fix tx_restart_queue/non_eop_desc statistics counters
    bcm63xx_enet: fix compilation failure after get_stats_count removal
    packet: dont call sleeping functions while holding rcu_read_lock()
    tcp: Revert per-route SACK/DSACK/TIMESTAMP changes.
    ipvs: zero usvc and udest
    netfilter: fix crashes in bridge netfilter caused by fragment jumps
    ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery
    sky2: leave PCI config space writeable
    sky2: print Optima chip name
    x25: Update maintainer.
    ipvs: fix synchronization on connection close
    netfilter: xtables: document minimal required version
    drivers/net/bonding/: : use pr_fmt
    can: CAN_MCP251X should depend on HAS_DMA
    drivers/net/usb: Correct code taking the size of a pointer
    drivers/net/cpmac.c: Correct code taking the size of a pointer
    drivers/net/sfc: Correct code taking the size of a pointer
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (45 commits)
    RDMA/cxgb3: Fix error paths in post_send and post_recv
    RDMA/nes: Fix stale ARP issue
    RDMA/nes: FIN during MPA startup causes timeout
    RDMA/nes: Free kmap() resources
    RDMA/nes: Check for zero STag
    RDMA/nes: Fix Xansation test crash on cm_node ref_count
    RDMA/nes: Abnormal listener exit causes loopback node crash
    RDMA/nes: Fix crash in nes_accept()
    RDMA/nes: Resource not freed for REJECTed connections
    RDMA/nes: MPA request/response error checking
    RDMA/nes: Fix query of ORD values
    RDMA/nes: Fix MAX_CM_BUFFER define
    RDMA/nes: Pass correct size to ioremap_nocache()
    RDMA/nes: Update copyright and branding string
    RDMA/nes: Add max_cqe check to nes_create_cq()
    RDMA/nes: Clean up struct nes_qp
    RDMA/nes: Implement IB_SIGNAL_ALL_WR as an iWARP extension
    RDMA/nes: Add additional SFP+ PHY uC status check and PHY reset
    RDMA/nes: Correct fast memory registration implementation
    IB/ehca: Fix error paths in post_send and post_recv
    ...

    Linus Torvalds
     
  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    ppc440spe-adma: adds updated ppc440spe adma driver
    iop-adma.c: use resource_size()
    dmaengine: clarify the meaning of the DMA_CTRL_ACK flag
    sh: stylistic improvements for the DMA driver
    dmaengine: fix dmatest to verify minimum transfer length and test buffer size
    sh: DMA driver has to specify its alignment requirements
    Add COH 901 318 DMA block driver v5

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (116 commits)
    V4L/DVB (13698): pms: replace asm/uaccess.h to linux/uaccess.h
    V4L/DVB (13690): radio/si470x: #include
    V4L/DVB (13688): au8522: modify the attributes of local filter coefficients
    V4L/DVB (13687): cx231xx: use NULL when pointer is needed
    V4L/DVB: Davinci VPFE Capture: remove unused #include
    V4L/DVB (13685): Correct code taking the size of a pointer
    V4L/DVB (13684): Fix some cut-and-paste noise in dib0090.h
    V4L/DVB (13683): sanio-ms: clean up init, exit and id_table
    V4L/DVB (13682): dib8000: make some constant static
    V4L/DVB: lgs8gxx: Use shifts rather than multiply/divide when possible
    V4L/DVB (13680b): DocBook/media: create links for included sources
    V4L/DVB (13680a): DocBook/media: copy images after building HTML
    V4L/DVB (13678): Add support for yet another DvbWorld, TeVii and Prof USB devices
    V4L/DVB (13676): configurable IRQ mode on NetUP Dual DVB-S2 CI; IRQ from CAM processing (CI interface works faster)
    V4L/DVB (13674): stv090x: Add DiSEqC envelope mode
    V4L/DVB (13673): lnbp21: Implement 22 kHz tone control
    V4L/DVB (13671): sh_mobile_ceu_camera: Remove frame size page alignment
    V4L/DVB (13670): soc-camera: Add mt9t112 camera driver
    V4L/DVB (13669): tw9910: Add sync polarity support
    V4L/DVB (13668): tw9910: remove cropping
    ...

    Linus Torvalds
     

16 Dec, 2009

26 commits

  • Using create_proc_entry() + ->proc_fops assignment is racy because
    ->proc_fops will be NULL for some time, use proc_create() to avoid race.

    Signed-off-by: Alexey Dobriyan
    Cc: Randy Dunlap
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Example is outdated, it still uses old ->read_proc interfaces and "fb"
    example is plain racy. There are better examples all over the tree.

    Docbook itself says almost nothing about /proc and contain quite a number
    of simply wrong facts, e.g. device nodes support. What it does is
    describing at great length interface which are going to be removed.

    There are Documentation/filesystems/seq_file.txt in exchange.

    Signed-off-by: Alexey Dobriyan
    Acked-by: Erik Mouw
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • If a patch adds ioctls, then Documentation/ioctl/ioctl-number.txt
    should also be updated.

    Remove reference to the OSDL PLM build farm.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • We now support the VX855, and the VX800 is no longer unaccellerated.
    viafb_video_dev was removed as it was useless.

    Signed-off-by: Harald Welte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Joseph Chan
    Cc: Scott Fang
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • Drivers may use gpiolib sysfs as part of their public user space
    interface. The GPIO number and polarity might change from board to
    board. The gpio_export_link() call can be used to hide the GPIO number
    from user space. Add support for also hiding the GPIO line polarity
    changes from user space.

    Signed-off-by: Jani Nikula
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jani Nikula
     
  • For embedded systems, the blinking cursor at startup time can be annoying
    and unintended. Add a new kernel parameter to change the default cursor
    shape.

    Signed-off-by: Clemens Ladisch
    Cc: Daniel Mack
    Acked-by: Pavel Machek
    Cc: David Newall
    Cc: Alan Cox
    Cc: Greg Kroah-Hartman
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Clemens Ladisch
     
  • If docs are being built in a separate directory, xmlto and xsltproc
    can't find included sources. Make links back to the source directory.

    I would much prefer to have xmlto and xsltproc look in the source
    directory for included entities but couldn't see how to do that. This
    needs to be solved in some way for 2.6.32, even if this patch isn't the
    right way to do it.

    Signed-off-by: Ben Hutchings
    Signed-off-by: Mauro Carvalho Chehab

    Ben Hutchings
     
  • The rule for %.html removes the output directory, so there is no point
    in copying images before building HTML.

    Documentation/DocBook/Makefile | 10 +++++-----

    Signed-off-by: Ben Hutchings
    Signed-off-by: Mauro Carvalho Chehab

    Ben Hutchings
     
  • The sh_mobile_ceu_camera driver implements an advanced algorithm, combining
    scaling and cropping on the client and on the host. Due to its complexity the
    algorithm deserves separate documentation.

    create mode 100644 Documentation/video4linux/sh_mobile_ceu_camera.txt

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Guennadi Liakhovetski
     
  • This is a simpler, gentler variant of memory_failure() for soft page
    offlining controlled from user space. It doesn't kill anything, just
    tries to invalidate and if that doesn't work migrate the
    page away.

    This is useful for predictive failure analysis, where a page has
    a high rate of corrected errors, but hasn't gone bad yet. Instead
    it can be offlined early and avoided.

    The offlining is controlled from sysfs, including a new generic
    entry point for hard page offlining for symmetry too.

    We use the page isolate facility to prevent re-allocation
    race. Normally this is only used by memory hotplug. To avoid
    races with memory allocation I am using lock_system_sleep().
    This avoids the situation where memory hotplug is about
    to isolate a page range and then hwpoison undoes that work.
    This is a big hammer currently, but the simplest solution
    currently.

    When the page is not free or LRU we try to free pages
    from slab and other caches. The slab freeing is currently
    quite dumb and does not try to focus on the specific slab
    cache which might own the page. This could be potentially
    improved later.

    Thanks to Fengguang Wu and Haicheng Li for some fixes.

    [Added fix from Andrew Morton to adapt to new migrate_pages prototype]
    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Signed-off-by: Andi Kleen

    Andi Kleen
     
  • The hwpoison test suite need to inject hwpoison to a collection of
    selected task pages, and must not touch pages not owned by them and
    thus kill important system processes such as init. (But it's OK to
    mis-hwpoison free/unowned pages as well as shared clean pages.
    Mis-hwpoison of shared dirty pages will kill all tasks, so the test
    suite will target all or non of such tasks in the first place.)

    The memory cgroup serves this purpose well. We can put the target
    processes under the control of a memory cgroup, and tell the hwpoison
    injection code to only kill pages associated with some active memory
    cgroup.

    The prerequisite for doing hwpoison stress tests with mem_cgroup is,
    the mem_cgroup code tracks task pages _accurately_ (unless page is
    locked). Which we believe is/should be true.

    The benefits are simplification of hwpoison injector code. Also the
    mem_cgroup code will automatically be tested by hwpoison test cases.

    The alternative interfaces pin-pfn/unpin-pfn can also delegate the
    (process and page flags) filtering functions reliably to user space.
    However prototype implementation shows that this scheme adds more
    complexity than we wanted.

    Example test case:

    mkdir /cgroup/hwpoison

    usemem -m 100 -s 1000 &
    echo `jobs -p` > /cgroup/hwpoison/tasks

    memcg_ino=$(ls -id /cgroup/hwpoison | cut -f1 -d' ')
    echo $memcg_ino > /debug/hwpoison/corrupt-filter-memcg

    page-types -p `pidof init` --hwpoison # shall do nothing
    page-types -p `pidof usemem` --hwpoison # poison its pages

    [AK: Fix documentation]
    [Add fix for problem noticed by Li Zefan ;
    dentry in the css could be NULL]

    CC: KOSAKI Motohiro
    CC: Hugh Dickins
    CC: Daisuke Nishimura
    CC: Balbir Singh
    CC: KAMEZAWA Hiroyuki
    CC: Li Zefan
    CC: Paul Menage
    CC: Nick Piggin
    CC: Andi Kleen
    Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • When specified, only poison pages if ((page_flags & mask) == value).

    - corrupt-filter-flags-mask
    - corrupt-filter-flags-value

    This allows stress testing of many kinds of pages.

    Strictly speaking, the buddy pages requires taking zone lock, to avoid
    setting PG_hwpoison on a "was buddy but now allocated to someone" page.
    However we can just do nothing because we set PG_locked in the beginning,
    this prevents the page allocator from allocating it to someone. (It will
    BUG() on the unexpected PG_locked, which is fine for hwpoison testing.)

    [AK: Add select PROC_PAGE_MONITOR to satisfy dependency]

    CC: Nick Piggin
    Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Wu Fengguang
     
  • __memory_failure()'s workflow is

    set PG_hwpoison
    //...
    unset PG_hwpoison if didn't pass hwpoison filter

    That could kill unrelated process if it happens to page fault on the
    page with the (temporary) PG_hwpoison. The race should be big enough to
    appear in stress tests.

    Fix it by grabbing the page and checking filter at inject time. This
    also avoids the very noisy "Injecting memory failure..." messages.

    - we don't touch madvise() based injection, because the filters are
    generally not necessary for it.
    - if we want to apply the filters to h/w aided injection, we'd better to
    rearrange the logic in __memory_failure() instead of this patch.

    AK: fix documentation, use drain all, cleanups

    CC: Haicheng Li
    Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Wu Fengguang
     
  • Filesystem data/metadata present the most tricky-to-isolate pages.
    It requires careful code review and stress testing to get them right.

    The fs/device filter helps to target the stress tests to some specific
    filesystem pages. The filter condition is block device's major/minor
    numbers:
    - corrupt-filter-dev-major
    - corrupt-filter-dev-minor
    When specified (non -1), only page cache pages that belong to that
    device will be poisoned.

    The filters are checked reliably on the locked and refcounted page.

    Haicheng: clear PG_hwpoison and drop bad page count if filter not OK
    AK: Add documentation

    CC: Haicheng Li
    CC: Nick Piggin
    Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Wu Fengguang
     
  • The unpoisoning interface is useful for stress testing tools to
    reclaim poisoned pages (to prevent OOM)

    There is no hardware level unpoisioning, so this
    cannot be used for real memory errors, only for software injected errors.

    Note that it may leak pages silently - those who have been removed from
    LRU cache, but not isolated from page cache/swap cache at hwpoison time.
    Especially the stress test of dirty swap cache pages shall reboot system
    before exhausting memory.

    AK: Fix comments, add documentation, add printks, rename symbol

    Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Wu Fengguang
     
  • Signed-off-by: Wu Fengguang
    Signed-off-by: Andi Kleen

    Wu Fengguang
     
  • Len Brown
     
  • David S. Miller
     
  • Len Brown
     
  • Signed-off-by: Henrique de Moraes Holschuh
    Signed-off-by: Len Brown

    Henrique de Moraes Holschuh
     
  • Add the basic ALSA mixer functionality. The mixer is event-driven,
    and will work fine on IBM ThinkPads. I expect Lenovo ThinkPads will
    cause some trouble with the event interface.

    Heavily based on work by Lorne Applebaum
    and ideas from Matthew Garrett .

    Signed-off-by: Henrique de Moraes Holschuh
    Cc: Lorne Applebaum
    Cc: Matthew Garrett
    Signed-off-by: Len Brown

    Henrique de Moraes Holschuh
     
  • Disable volume control by default. It can be enabled at module load
    time by a module parameter (volume_control=1).

    The audio control mixer that thinkpad-acpi interacts with is fully
    functional without any drivers, and operated by hotkeys.

    The idea behind the console audio control is that the human operator
    is the only one that can interact with it. The ThinkVantage suite in
    Windows does not allow any software-based overrides, and only does OSD
    (on-screen-display) functions.

    The Linux driver will, with the addition of the ALSA interface, try to
    follow and enforce the ThinkVantage UI design:

    The user is supposed to use the keyboard hotkeys to interact with the
    console audio control. The kernel and the desktop environment is
    supposed to cooperate to provide proper user feedback through
    on-screen-display functions.

    Distros are urged to not to enable volume control by default.
    Enabling this must be a local admin's decision. This is the reason
    why there is no Kconfig option.

    Keep in mind that all ThinkPads have a normal, main mixer (AC97 or
    HDA) for regular software-based audio control. We are not talking
    about that mixer here.

    Advanced users are, of course, free to enable volume control and do as
    they please.

    Signed-off-by: Henrique de Moraes Holschuh
    Cc: Lorne Applebaum
    Cc: Matthew Garrett
    Signed-off-by: Len Brown

    Henrique de Moraes Holschuh
     
  • Lenovo removed the extra mixer since the T61 and thereabouts.
    Newer Lenovo models only have the mute gate function, and leave
    the volume control to the HDA mixer.

    Until a way to automatically query the firmware about its audio
    control capabilities is discovered (there might not be any), use a
    white/black list.

    We will likely need to ask T60 (old and new model) and Z60/Z61 users
    whether they have volume control to populate the black/white list.
    Meanwhile, provide a volume_capabilities parameter that can be used to
    override the defaults.

    Signed-off-by: Henrique de Moraes Holschuh
    Cc: Lorne Applebaum
    Cc: Matthew Garrett
    Signed-off-by: Len Brown

    Henrique de Moraes Holschuh
     
  • I don't trust the coupled EC writes and SMI calls the current volume
    control code does very much, although it is exactly what the IBM DSDTs
    seem to do (they never do more than a single step though).

    Change the driver to stop issuing SMIs, and just drive the EC directly
    to the desired level (DSDTs seem to confirm this will work even on
    very old models like the 570 and 600e/x).

    We checkpoint directly to NVRAM (this can be turned off) at
    suspend/shutdown/driver unload, which from what I can see in tbp,
    should also work on every ThinkPad.

    Signed-off-by: Henrique de Moraes Holschuh
    Cc: Lorne Applebaum
    Cc: Matthew Garrett
    Signed-off-by: Len Brown

    Henrique de Moraes Holschuh
     
  • Len Brown