21 Aug, 2010

1 commit

  • Sysrq operations do not accept tty argument anymore so no need to pass
    it to us.

    [Stephen Rothwell : fix build breakage in drm code
    caused by sysrq using bool but not including linux/types.h]

    [Sachin Sant : fix build breakage in s390 keyboadr
    driver]

    Acked-by: Alan Cox
    Acked-by: Jason Wessel
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     

20 Aug, 2010

1 commit


16 Aug, 2010

2 commits

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
    gcc-4.6: ACPI: fix unused but set variables in ACPI
    ACPI thermal: make procfs I/F depend on CONFIG_ACPI_PROCFS
    ACPI video: make procfs I/F depend on CONFIG_ACPI_PROCFS
    ACPI processor: remove deprecated ACPI procfs I/F
    ACPI power_resource: remove unused procfs I/F
    ACPI: remove deprecated ACPI procfs I/F
    ACPI: introduce drivers/acpi/sysfs.c
    ACPI: introduce module parameter acpi.aml_debug_output
    ACPI: introduce drivers/acpi/debugfs.c
    ACPI, APEI, ERST debug support
    ACPI, APEI, Manage GHES as platform devices
    ACPI, APEI, Rename CPER and GHES severity constants
    ACPI, APEI, Fix a typo of error path of apei_resources_request
    ACPI / ACPICA: Fix reference counting problems with GPE handlers
    ACPI: Add the check of ADR flag in course of finding ACPI handle for PCI device
    ACPI / Sleep: Drop acpi_suspend_finish()
    ACPI / Sleep: Consolidate suspend and hibernation routines
    ACPI / Wakeup: Simplify enabling of wakeup devices
    ACPI / Sleep: Rework enabling wakeup devices
    ACPI / Sleep: Free NVS copy if suspending of devices fails

    Fixed up totally buggered "ACPI: fix unused but set variables in ACPI"
    patch that doesn't even compile in the merge.

    Thanks to Sedat Dilek for noticing the
    breakage before I even pulled. And a big "Grrr.." at Len for not even
    bothering to compile the tree before asking me to pull.

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    arch/tile: don't validate CROSS_COMPILE needlessly
    arch/tile: export only COMMAND_LINE_SIZE to userspace.
    arch/tile: rename ARCH_KMALLOC_MINALIGN to ARCH_DMA_MINALIGN
    arch/tile: Rename the hweight() implementations to __arch_hweight()
    arch/tile: extend syscall ABI to set r1 on return as well.
    arch/tile: Various cleanups.
    arch/tile: support backtracing on TILE-Gx
    arch/tile: Fix a couple of issues with the COMPAT code for TILE-Gx.
    arch/tile: Use separate, better minsec values for clocksource and sched_clock.
    arch/tile: correct a bug in freeing bootmem by VA for the optional second initrd.
    arch: tile: mm: pgtable.c: Removed duplicated #include
    arch: tile: kernel/proc.c Removed duplicated #include
    Add fanotify syscalls to .
    arch/tile: support new kunmap_atomic() naming convention.
    tile: remove unused ISA_DMA_THRESHOLD define

    Conflicts in arch/tile/configs/tile_defconfig (pick the mainline version
    with the reduced defconfig).

    Linus Torvalds
     

15 Aug, 2010

10 commits

  • Conflicts:
    drivers/acpi/debug.c

    Signed-off-by: Len Brown

    Len Brown
     
  • Remove deprecated ACPI processor procfs I/F, including:
    /proc/acpi/processor/CPUX/power
    /proc/acpi/processor/CPUX/limit
    /proc/acpi/processor/CPUX/info

    /proc/acpi/processor/CPUX/throttling still exists,
    as we don't have sysfs I/F available for now.

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     
  • Len Brown
     
  • Len Brown
     
  • Introduce module parameter acpi.aml_debug_output.

    With acpi.aml_debug_output set, we can get AML debug object output
    (Store (AAA, Debug)), even with CONFIG_ACPI_DEBUG cleared.

    Together with the runtime custom method mechanism,
    we can debug AML code problems without rebuilding the kernel.

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/cleanup:
    defconfig reduction
    kbuild: drop unifdef-y support
    archs: replace unifdef-y with header-y
    include: replace unifdef-y with header-y

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: (22 commits)
    hwmon: (via-cputemp) Remove bogus "SHOW" global variable
    hwmon: jc42 depends on I2C
    hwmon: (pc87427) Add a maintainer
    hwmon: (pc87427) Move sysfs file removal to a separate function
    hwmon: (pc87427) Add temperature monitoring support
    hwmon: (pc87427) Add support for the second logical device
    hwmon: (pc87427) Add support for manual fan speed control
    hwmon: (pc87427) Minor style cleanups
    hwmon: (pc87427) Handle disabled fan inputs properly
    hwmon: (w83627ehf) Add support for W83667HG-B
    hwmon: (w83627ehf) Driver cleanup
    hwmon: Add driver for SMSC EMC2103 temperature monitor and fan controller
    hwmon: Remove in[0-*]_fault from sysfs-interface
    hwmon: Add 4 current alarm/beep attributes to sysfs-interface
    hwmon: Add 3 critical limit attributes to sysfs-interface
    hwmon: (asc7621) Clean up and improve detect function
    hwmon: (it87) Export labels for internal sensors
    hwmon: (lm75) Add suspend/resume feature
    hwmon: (emc1403) Add power support
    hwmon: (ltc4245) Expose all GPIO pins as analog voltages
    ...

    Linus Torvalds
     
  • unifdef-y and header-y has same semantic.
    So there is no need to have both.

    Drop the unifdef-y variant and sort all lines again

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Add support for exposing all GPIO pins as analog voltages. Though this is
    not an ideal use of the chip, some hardware engineers may decide that the
    LTC4245 meets their design requirements when studying the datasheet.

    The GPIO pins are sampled in round-robin fashion, meaning that a slow
    reader will see stale data. A userspace application can detect this,
    because it will get -EAGAIN when reading from a sysfs file which contains
    stale data.

    Users can choose to use this feature on a per-chip basis by using either
    platform data or the OF device tree (where applicable).

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Jean Delvare

    Ira W. Snyder
     
  • * 'next-spi' of git://git.secretlab.ca/git/linux-2.6:
    spi/amba_pl022: Fix probe and remove hook section annotations.
    spi/mpc5121: change annotations for probe and remove functions
    spi/bitbang: reinitialize transfer parameters for every message
    spi/spi-gpio: add support for controllers without MISO or MOSI pin
    spi/bitbang: add support for SPI_MASTER_NO_{TX, RX} modes
    SPI100k: Fix 8-bit and RX-only transfers
    spi/mmc_spi: mmc_spi adaptations for SPI bus locking API
    spi/mmc_spi: SPI bus locking API, using mutex

    Fix trivial conflict in drivers/spi/mpc512x_psc_spi.c due to 'struct
    of_device' => 'struct platform_device' rename and __init/__exit to
    __devinit/__devexit fix.

    Linus Torvalds
     

14 Aug, 2010

6 commits

  • * 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
    bkl: Remove locked .ioctl file operation
    v4l: Remove reference to bkl ioctl in compat ioctl handling
    logfs: kill BKL

    Linus Torvalds
     
  • Chris Metcalf
     
  • Mark arguments to certain system calls as being const where they should be but
    aren't. The list includes:

    (*) The filename arguments of various stat syscalls, execve(), various utimes
    syscalls and some mount syscalls.

    (*) The filename arguments of some syscall helpers relating to the above.

    (*) The buffer argument of various write syscalls.

    Signed-off-by: David Howells
    Acked-by: David S. Miller
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The last user is gone, so we can safely remove this

    Signed-off-by: Arnd Bergmann
    Cc: John Kacur
    Cc: Al Viro
    Cc: Thomas Gleixner
    Signed-off-by: Frederic Weisbecker

    Arnd Bergmann
     
  • commit 4565f0170dfc849b3629c27d769db800467baa62 "dma-mapping: unify
    dma_get_cache_alignment implementations" causes build errors on
    !HAS_DMA architectures/platforms like s390 and sun3:

    include/linux/dma-mapping.h:145: error: static declaration of 'dma_get_cache_alignment' follows non-static declaration
    include/asm-generic/dma-mapping-broken.h:73: error: previous declaration of 'dma_get_cache_alignment' was here

    Fix this by adding an explicit ifdef.

    Cc: Geert Uytterhoeven
    Acked-by: FUJITA Tomonori
    Signed-off-by: Heiko Carstens
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (30 commits)
    ctcm: rename READ/WRITE defines to avoid redefinitions
    claw: rename READ/WRITE defines to avoid redefinitions
    phylib: available for any speed ethernet
    can: add limit for nframes and clean up signed/unsigned variables
    pkt_sched: Check .walk and .leaf class handlers
    pkt_sched: Fix sch_sfq vs tc_modify_qdisc oops
    caif-spi: Bugfix SPI_DATA_POS settings were inverted.
    caif: Bugfix - Increase default headroom size for control channel.
    net: make netpoll_rx return bool for !CONFIG_NETPOLL
    Bluetooth: Use 3-DH5 payload size for default ERTM max PDU size
    Bluetooth: Fix incorrect setting of remote_tx_win for L2CAP ERTM
    Bluetooth: Change default L2CAP ERTM retransmit timeout
    Bluetooth: Fix endianness issue with L2CAP MPS configuration
    net: Use NET_XMIT_SUCCESS where possible.
    isdn: mISDN: call pci_disable_device() if pci_probe() failed
    isdn: avm: call pci_disable_device() if pci_probe() failed
    isdn: avm: call pci_disable_device() if pci_probe() failed
    usbnet: rx_submit() should return an error code.
    pkt_sched: Add some basic qdisc class ops verification. Was: [PATCH] sfq: add dummy bind/unbind handles
    pkt_sched: sch_sfq: Add dummy unbind_tcf and put handles. Was: [PATCH] sfq: add dummy bind/unbind handles
    ...

    Linus Torvalds
     

13 Aug, 2010

15 commits

  • Signed-off-by: Chris Metcalf
    Signed-off-by: Andrew Morton
    Acked-by: Arnd Bergmann
    Cc: Eric Paris

    Chris Metcalf
     
  • This reverts commit 3bcf3860a4ff9bbc522820b4b765e65e4deceb3e (and the
    accompanying commit c1e5c954020e "vfs/fsnotify: fsnotify_close can delay
    the final work in fput" that was a horribly ugly hack to make it work at
    all).

    The 'struct file' approach not only causes that disgusting hack, it
    somehow breaks pulseaudio, probably due to some other subtlety with
    f_count handling.

    Fix up various conflicts due to later fsnotify work.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (33 commits)
    dm mpath: support discard
    dm stripe: support discards
    dm: split discard requests on target boundaries
    dm stripe: optimize sector division
    dm stripe: move sector translation to a function
    dm: error return error for discards
    dm delay: support discard
    dm: zero silently drop discards
    dm: use dm_target_offset macro
    dm: factor out max_io_len_target_boundary
    dm: use common __issue_target_request for flush and discard support
    dm: linear support discard
    dm crypt: simplify crypt_ctr
    dm crypt: simplify crypt_config destruction logic
    dm: allow autoloading of dm mod
    dm: rename map_info flush_request to target_request_nr
    dm ioctl: refactor dm_table_complete
    dm snapshot: implement merge
    dm: do not initialise full request queue when bio based
    dm ioctl: make bio or request based device type immutable
    ...

    Linus Torvalds
     
  • * 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6:
    hugetlb: add missing unlock in avoidcopy path in hugetlb_cow()
    hwpoison: rename CONFIG
    HWPOISON, hugetlb: support hwpoison injection for hugepage
    HWPOISON, hugetlb: detect hwpoison in hugetlb code
    HWPOISON, hugetlb: isolate corrupted hugepage
    HWPOISON, hugetlb: maintain mce_bad_pages in handling hugepage error
    HWPOISON, hugetlb: set/clear PG_hwpoison bits on hugepage
    HWPOISON, hugetlb: enable error handling path for hugepage
    hugetlb, rmap: add reverse mapping for hugepage
    hugetlb: move definition of is_vm_hugetlb_page() to hugepage_inline.h

    Fix up trivial conflicts in mm/memory-failure.c

    Linus Torvalds
     
  • * 'for-linus' of git://neil.brown.name/md:
    Further tidyup of raid6 naming in lib/raid6
    Make lib/raid6/test build correctly.
    Rename raid6 files now they're in a 'raid6' directory.

    Linus Torvalds
     
  • * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    i2c: I2C bus multiplexer driver pca954x
    i2c: Multiplexed I2C bus core support
    i2c: Use a separate mutex for userspace client lists
    i2c: Make i2c_default_probe self-sufficient
    i2c: Drop dummy variable
    i2c: Move adapter locking helpers to i2c-core
    V4L/DVB: Use custom I2C probing function mechanism
    i2c: Add support for custom probe function
    i2c-dev: Use memdup_user
    i2c-dev: Remove unnecessary kmalloc casts

    Linus Torvalds
     
  • * 'params' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (22 commits)
    param: don't deref arg in __same_type() checks
    param: update drivers/acpi/debug.c to new scheme
    param: use module_param in drivers/message/fusion/mptbase.c
    ide: use module_param_named rather than module_param_call
    param: update drivers/char/ipmi/ipmi_watchdog.c to new scheme
    param: lock if_sdio's lbs_helper_name and lbs_fw_name against sysfs changes.
    param: lock myri10ge_fw_name against sysfs changes.
    param: simple locking for sysfs-writable charp parameters
    param: remove unnecessary writable charp
    param: add kerneldoc to moduleparam.h
    param: locking for kernel parameters
    param: make param sections const.
    param: use free hook for charp (fix leak of charp parameters)
    param: add a free hook to kernel_param_ops.
    param: silence .init.text references from param ops
    Add param ops struct for hvc_iucv driver.
    nfs: update for module_param_named API change
    AppArmor: update for module_param_named API change
    param: use ops in struct kernel_param, rather than get and set fns directly
    param: move the EXPORT_SYMBOL to after the definitions.
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6: (22 commits)
    regulator: Remove default DEBUG define from TPS6586x
    regulator: tps6507x - add missing platform_set_drvdata in tps6507x_pmic_probe
    regulator: tps6586x - add regulator_unregister() in tps6586x_regulator_remove()
    mfd: max8998 - fix incorrect kfree(i2c) in i2c_driver probe callback handler
    regulator: lp3971 - remove unnecessary ret value checking in lp3971_i2c_write()
    regulator: max8660 - fix a memory leak in max8660_remove()
    regulator: max1586 - fix a memory leak in max1586_pmic_remove()
    regulator: Default GPIO controlled WM8994 regulators to disabled
    regulator: lp3971 - remove unnecessary ret value checking in lp3971_i2c_write()
    max8998: fix off-by-one value range checking
    regulator: tps6586x: fix millivolt return values and SM2 table
    regulator: tps6586x: add dependancy on MFD_TPS6585x
    regulator: add TPS6586X regulator driver
    regulator: MAX8998: set_voltage bugfix. ramp_up delay and min/max voltage
    regulator: add support for regulators on the ab8500 MFD
    ab8500-mfd: add regulator support to ab8500 mfd device
    tps65023: Allow registering similar TPS65021
    drivers: regulators: depend on MFD_MAX8998
    drivers: regulator: add Maxim 8998 driver
    ISL6271A voltage regulator support.
    ...

    Linus Torvalds
     
  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (40 commits)
    mfd: Fix incorrect kfree(i2c) in wm8994-core i2c_driver probe
    mfd: Fix incorrect kfree(i2c) in wm831x-core i2c_driver probe
    mfd: Fix incorrect kfree(i2c) in tps6507x i2c_driver probe
    mfd: Add TPS6586x driver
    mfd: Use macros instead of some constant magic numbers for menelaus
    mfd: Fix menelaus mmc slot 2 misconfiguration
    mfd: Missing slab.h includes
    mfd: Fix wrong wm8350-core kfree in error path
    mfd: Fix wm8994_device_init() return value
    mfd: Avoid calling platform_device_put() twice in ucb1400 probe error path
    mfd: Annotate tc6387xb probe/remove routines with __devinit/__devexit
    mfd: Fix tc6387xb resource reclaim
    mfd: Fix wrong goto labels for tc6393xb error handling
    mfd: Get rid of now unused mc13783 private header
    hwmon: Don't access struct mc13783 directly from mc13783-adc
    mfd: New mc13783 function exposing flags
    mfd: Check jz4740-adc kmalloc() result
    mfd: Fix jz4740-adc resource reclaim in probe error path
    mfd: Add WM8321 support
    mfd: Add stmpe auto sleep feature
    ...

    Linus Torvalds
     
  • * git://git.infradead.org/battery-2.6:
    intel_mid_battery: Fix battery scaling
    intel_mid_battery: Fix the argument order to intel_scu_ipc_command
    olpc_battery: Fix build failure caused by sysfs changes
    Add s3c-adc-battery driver
    Intel MID platform battery driver

    Fix up trivial conflicts (battery drivers added from different branches)
    in drivers/power/{Kconfig,Makefile}

    Linus Torvalds
     
  • The current computation, introduced with f12a15be63, of FSEC_PER_SEC using
    the multiplication of (FSEC_PER_NSEC * NSEC_PER_SEC) is performed only
    with 32bit integers on small machines, resulting in an overflow and a
    *very* short intervals being programmed. An interrupt storm follows.

    Note that we also have to specify FSEC_PER_SEC as being long long to
    overcome the same limitations.

    Signed-off-by: Chris Wilson
    Signed-off-by: John Stultz
    Cc: Thomas Gleixner
    Acked-by: Ingo Molnar
    Acked-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    Chris Wilson
     
  • Add a dummy printk function for the maintenance of unused printks through gcc
    format checking, and also so that side-effect checking is maintained too.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • * 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (55 commits)
    io-mapping: move asm include inside the config option
    vgaarb: drop vga.h include
    drm/radeon: Add probing of clocks from device-tree
    drm/radeon: drop old and broken mesa warning
    drm/radeon: Fix pci_map_page() error checking
    drm: Remove count_lock for calling lastclose() after 58474713 (v2)
    drm/radeon/kms: allow FG_ALPHA_VALUE on r5xx
    drm/radeon/kms: another r6xx/r7xx CS checker fix
    DRM: Replace kmalloc/memset combos with kzalloc
    drm: expand gamma_set
    drm/edid: Split mode lists out to their own header for readability
    drm/edid: Rewrite mode parse to use the generic detailed block walk
    drm/edid: Add detailed block walk for VTB extensions
    drm/edid: Add detailed block walk for CEA extensions
    drm: Remove unused fields from drm_display_info
    drm: Use ENOENT consistently for the error return for an unmatched handle.
    drm/radeon/kms: mark 3D power states as performance
    drm: Only set DPMS once on the CRTC not after every encoder.
    drm/radeon/kms: add additional quirk for Acer rv620 laptop
    drm: Propagate error code from fb_create()
    ...

    Fix up trivial conflicts in drivers/gpu/drm/drm_edid.c

    Linus Torvalds
     
  • * 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6:
    mmc_spi: Fix unterminated of_match_table
    of/sparc: fix build regression from of_device changes
    of/device: Replace struct of_device with struct platform_device

    Linus Torvalds
     
  • * 'stable/xen-swiotlb-0.8.6' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    x86: Detect whether we should use Xen SWIOTLB.
    pci-swiotlb-xen: Add glue code to setup dma_ops utilizing xen_swiotlb_* functions.
    swiotlb-xen: SWIOTLB library for Xen PV guest with PCI passthrough.
    xen/mmu: inhibit vmap aliases rather than trying to clear them out
    vmap: add flag to allow lazy unmap to be disabled at runtime
    xen: Add xen_create_contiguous_region
    xen: Rename the balloon lock
    xen: Allow unprivileged Xen domains to create iomap pages
    xen: use _PAGE_IOMAP in ioremap to do machine mappings

    Fix up trivial conflicts (adding both xen swiotlb and xen pci platform
    driver setup close to each other) in drivers/xen/{Kconfig,Makefile} and
    include/xen/xen-ops.h

    Linus Torvalds
     

12 Aug, 2010

5 commits

  • Secure discard is the same as discard except that all copies of the
    discarded sectors (perhaps created by garbage collection) must also be
    erased.

    Signed-off-by: Adrian Hunter
    Acked-by: Jens Axboe
    Cc: Kyungmin Park
    Cc: Madhusudhan Chikkature
    Cc: Christoph Hellwig
    Cc: Ben Gardiner
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Hunter
     
  • SD/MMC cards tend to support an erase operation. In addition, eMMC v4.4
    cards can support secure erase, trim and secure trim operations that are
    all variants of the basic erase command.

    SD/MMC device attributes "erase_size" and "preferred_erase_size" have been
    added.

    "erase_size" is the minimum size, in bytes, of an erase operation. For
    MMC, "erase_size" is the erase group size reported by the card. Note that
    "erase_size" does not apply to trim or secure trim operations where the
    minimum size is always one 512 byte sector. For SD, "erase_size" is 512
    if the card is block-addressed, 0 otherwise.

    SD/MMC cards can erase an arbitrarily large area up to and
    including the whole card. When erasing a large area it may
    be desirable to do it in smaller chunks for three reasons:

    1. A single erase command will make all other I/O on the card
    wait. This is not a problem if the whole card is being erased, but
    erasing one partition will make I/O for another partition on the
    same card wait for the duration of the erase - which could be a
    several minutes.

    2. To be able to inform the user of erase progress.

    3. The erase timeout becomes too large to be very useful.
    Because the erase timeout contains a margin which is multiplied by
    the size of the erase area, the value can end up being several
    minutes for large areas.

    "erase_size" is not the most efficient unit to erase (especially for SD
    where it is just one sector), hence "preferred_erase_size" provides a good
    chunk size for erasing large areas.

    For MMC, "preferred_erase_size" is the high-capacity erase size if a card
    specifies one, otherwise it is based on the capacity of the card.

    For SD, "preferred_erase_size" is the allocation unit size specified by
    the card.

    "preferred_erase_size" is in bytes.

    Signed-off-by: Adrian Hunter
    Acked-by: Jens Axboe
    Cc: Kyungmin Park
    Cc: Madhusudhan Chikkature
    Cc: Christoph Hellwig
    Cc: Ben Gardiner
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Hunter
     
  • Commit 83ba7b071f3 ("writeback: simplify the write back thread queue")
    broke writeback_in_progress() as in that commit we started to remove work
    items from the list at the moment we start working on them and not at the
    moment they are finished. Thus if the flusher thread was doing some work
    but there was no other work queued, writeback_in_progress() returned
    false. This could in particular cause unnecessary queueing of background
    writeback from balance_dirty_pages() or writeout work from
    writeback_sb_if_idle().

    This patch fixes the problem by introducing a bit in the bdi state which
    indicates that the flusher thread is processing some work and uses this
    bit for writeback_in_progress() test.

    NOTE: Both callsites of writeback_in_progress() (namely,
    writeback_inodes_sb_if_idle() and balance_dirty_pages()) would actually
    need a different information than what writeback_in_progress() provides.
    They would need to know whether *the kind of writeback they are going to
    submit* is already queued. But this information isn't that simple to
    provide so let's fix writeback_in_progress() for the time being.

    Signed-off-by: Jan Kara
    Cc: Christoph Hellwig
    Cc: Wu Fengguang
    Acked-by: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Split get_dirty_limits() into global_dirty_limits()+bdi_dirty_limit(), so
    that the latter can be avoided when under global dirty background
    threshold (which is the normal state for most systems).

    Signed-off-by: Wu Fengguang
    Cc: Peter Zijlstra
    Cc: Christoph Hellwig
    Cc: Dave Chinner
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wu Fengguang
     
  • The ACPI_PREEMPTION_POINT() logic was introduced in commit 8bd108d
    (ACPICA: add preemption point after each opcode parse). The follow up
    commits abe1dfab6, 138d15692, c084ca70 tried to fix the preemption logic
    back and forth, but nobody noticed that the usage of
    in_atomic_preempt_off() in that context is wrong.

    The check which guards the call of cond_resched() is:

    if (!in_atomic_preempt_off() && !irqs_disabled())

    in_atomic_preempt_off() is not intended for general use as the comment
    above the macro definition clearly says:

    * Check whether we were atomic before we did preempt_disable():
    * (used by the scheduler, *after* releasing the kernel lock)

    On a CONFIG_PREEMPT=n kernel the usage of in_atomic_preempt_off() works by
    accident, but with CONFIG_PREEMPT=y it's just broken.

    The whole purpose of the ACPI_PREEMPTION_POINT() is to reduce the latency
    on a CONFIG_PREEMPT=n kernel, so make ACPI_PREEMPTION_POINT() depend on
    CONFIG_PREEMPT=n and remove the in_atomic_preempt_off() check.

    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16210

    [akpm@linux-foundation.org: fix build]
    Signed-off-by: Thomas Gleixner
    Cc: Len Brown
    Cc: Francois Valenduc
    Cc: Lin Ming
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner