13 Jan, 2012

12 commits

  • Recent tools do not want to use /proc to retrieve module information. A few
    values are currently missing from sysfs to replace the information available
    in /proc/modules.

    This adds /sys/module/*/{coresize,initsize,taint} attributes.

    TAINT_PROPRIETARY_MODULE (P) and TAINT_OOT_MODULE (O) flags are both always
    shown now, and do no longer exclude each other, also in /proc/modules.

    Replace the open-coded sysfs attribute initializers with the __ATTR() macro.

    Add the new attributes to Documentation/ABI.

    Cc: Lucas De Marchi
    Signed-off-by: Kay Sievers
    Signed-off-by: Rusty Russell

    Kay Sievers
     
  • Use more flexible pr_debug. This allows:

    echo "module params +p" > /dbg/dynamic_debug/control

    to turn on debug messages when needed.

    Signed-off-by: Jim Cromie
    Signed-off-by: Rusty Russell

    Jim Cromie
     
  • Use more flexible pr_debug. This allows:

    echo "module module +p" > /dbg/dynamic_debug/control

    to turn on debug messages when needed.

    Signed-off-by: Jim Cromie
    Signed-off-by: Rusty Russell

    Jim Cromie
     
  • module_ref contains two "unsigned int" fields.

    Thats now too small, since some machines can open more than 2^32 files.

    Check commit 518de9b39e8 (fs: allow for more than 2^31 files) for
    reference.

    We can add an aligned(2 * sizeof(unsigned long)) attribute to force
    alloc_percpu() allocating module_ref areas in single cache lines.

    Signed-off-by: Eric Dumazet
    CC: Rusty Russell
    CC: Tejun Heo
    CC: Robin Holt
    CC: David Miller
    Signed-off-by: Rusty Russell

    Eric Dumazet
     
  • Looking at /proc/kallsyms, one starts to ponder whether all of the extra
    strtab-related complexity in module.c is worth the memory savings.

    Instead of making the add_kallsyms() loop even more complex, I tried the
    other route of deleting the strmap logic and naively copying each string
    into core_strtab with no consideration for consolidating duplicates.

    Performance on an "already exists" insmod of nvidia.ko (runs
    add_kallsyms() but does not actually initialize the module):

    Original scheme: 1.230s
    With naive copying: 0.058s

    Extra space used: 35k (of a 408k module).

    Signed-off-by: Kevin Cernekee
    Signed-off-by: Rusty Russell
    LKML-Reference:

    Kevin Cernekee
     
  • Signed-off-by: Kevin Cernekee
    Signed-off-by: Rusty Russell

    Kevin Cernekee
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: bcm5974 - set BUTTONPAD property
    Input: serio_raw - return proper result when serio_raw_write fails
    Input: serio_raw - really signal HUP upon disconnect
    Input: serio_raw - remove stray semicolon
    Input: revert some over-zealous conversions to module_platform_driver()

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
    FUSE: Notifying the kernel of deletion.
    fuse: support ioctl on directories
    fuse: Use kcalloc instead of kzalloc to allocate array
    fuse: llseek optimize SEEK_CUR and SEEK_SET

    Linus Torvalds
     
  • * tag 'to-linus' of git://github.com/rustyrussell/linux: (24 commits)
    lguest: Make sure interrupt is allocated ok by lguest_setup_irq
    lguest: move the lguest tool to the tools directory
    lguest: switch segment-voodoo-numbers to readable symbols
    virtio: balloon: Add freeze, restore handlers to support S4
    virtio: balloon: Move vq initialization into separate function
    virtio: net: Add freeze, restore handlers to support S4
    virtio: net: Move vq and vq buf removal into separate function
    virtio: net: Move vq initialization into separate function
    virtio: blk: Add freeze, restore handlers to support S4
    virtio: blk: Move vq initialization to separate function
    virtio: console: Disable callbacks for virtqueues at start of S4 freeze
    virtio: console: Add freeze and restore handlers to support S4
    virtio: console: Move vq and vq buf removal into separate functions
    virtio: pci: add PM notification handlers for restore, freeze, thaw, poweroff
    virtio: pci: switch to new PM API
    virtio_blk: fix config handler race
    virtio: add debugging if driver doesn't kick.
    virtio: expose added descriptors immediately.
    virtio: avoid modulus operation.
    virtio: support unlocked queue kick
    ...

    Linus Torvalds
     
  • It appears that you can only read the sprom contents with aligned 16-bit
    reads: anything else causes at least some versions of the broadcom
    chipset to abort the PCI transaction, returning 0xff.

    This apparently doesn't trigger very often, because most setups don't
    use an external srom chip, and the OTP sprom loading doesn't have this
    issue. But at least the current 11" Macbook Air does trigger it, and
    wireless communications were broken as a result.

    Acked-by: Arend van Spriel
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This very noisy sparse warning appears on almost every file in the
    kernel:

    CHECK init/main.c
    arch/x86/include/asm/thread_info.h:43:55: error: dubious one-bit signed bitfield
    arch/x86/include/asm/thread_info.h:44:46: error: dubious one-bit signed bitfield

    This patch changes sig_on_uaccess_error and uaccess_err flags to unsigned
    type and thus fixes the warning.

    Signed-off-by: Anton Vorontsov
    Acked-by: Andy Lutomirski
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (526 commits)
    ASoC: twl6040 - Add method to query optimum PDM_DL1 gain
    ALSA: hda - Fix the lost power-setup of seconary pins after PM resume
    ALSA: usb-audio: add Yamaha MOX6/MOX8 support
    ALSA: virtuoso: add S/PDIF input support for all Xonars
    ALSA: ice1724 - Support for ooAoo SQ210a
    ALSA: ice1724 - Allow card info based on model only
    ALSA: ice1724 - Create capture pcm only for ADC-enabled configurations
    ALSA: hdspm - Provide unique driver id based on card serial
    ASoC: Dynamically allocate the rtd device for a non-empty release()
    ASoC: Fix recursive dependency due to select ATMEL_SSC in SND_ATMEL_SOC_SSC
    ALSA: hda - Fix the detection of "Loopback Mixing" control for VIA codecs
    ALSA: hda - Return the error from get_wcaps_type() for invalid NIDs
    ALSA: hda - Use auto-parser for HP laptops with cx20459 codec
    ALSA: asihpi - Fix potential Oops in snd_asihpi_cmode_info()
    ALSA: hdsp - Fix potential Oops in snd_hdsp_info_pref_sync_ref()
    ALSA: hda/cirrus - support for iMac12,2 model
    ASoC: cx20442: add bias control over a platform provided regulator
    ALSA: usb-audio - Avoid flood of frame-active debug messages
    ALSA: snd-usb-us122l: Delete calls to preempt_disable
    mfd: Put WM8994 into cache only mode when suspending
    ...

    Fix up trivial conflicts in:
    - arch/arm/mach-s3c64xx/mach-crag6410.c:
    renamed speyside_wm8962 to tobermory, added littlemill right
    next to it
    - drivers/base/regmap/{regcache.c,regmap.c}:
    duplicate diff that had already come in with other changes in
    the regmap tree

    Linus Torvalds
     

12 Jan, 2012

28 commits

  • We only need amd_bus.o for AMD systems with PCI. arch/x86/pci/Makefile
    already depends on CONFIG_PCI=y, so this patch just adds the dependency
    on CONFIG_AMD_NB.

    Cc: Yinghai Lu
    Cc: stable@kernel.org # 2.6.34+ (needs adjustment for k8 -> amd rename)
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • Takashi Iwai
     
  • Takashi Iwai
     
  • …sound into topic/asoc

    Takashi Iwai
     
  • SH/R-Mobile updates for 3.3 merge window.

    * tag 'rmobile-for-linus' of git://github.com/pmundt/linux-sh: (32 commits)
    arm: mach-shmobile: add a resource name for shdma
    ARM: mach-shmobile: r8a7779 SMP support V3
    ARM: mach-shmobile: Add kota2 defconfig.
    ARM: mach-shmobile: Add marzen defconfig.
    ARM: mach-shmobile: r8a7779 power domain support V2
    ARM: mach-shmobile: Fix up marzen build for recent GIC changes.
    ARM: mach-shmobile: r8a7779 PFC function support
    ARM: mach-shmobile: Flush caches in platform_cpu_die()
    ARM: mach-shmobile: Allow SoC specific CPU kill code
    ARM: mach-shmobile: Fix headsmp.S code to use CPUINIT
    ARM: mach-shmobile: clock-r8a7779: clkz/clkzs support
    ARM: mach-shmobile: clock-r8a7779: add DIV4 clock support
    ARM: mach-shmobile: Marzen LAN89218 support
    ARM: mach-shmobile: Marzen SCIF2/SCIF4 support
    ARM: mach-shmobile: r8a7779 PFC GPIO-only support V2
    ARM: mach-shmobile: r8a7779 and Marzen base support V2
    sh: pfc: Unlock register support
    sh: pfc: Variable bitfield width config register support
    sh: pfc: Add config_reg_helper() function
    sh: pfc: Convert index to field and value pair
    ...

    Linus Torvalds
     
  • SuperH updates for 3.3 merge window.

    * tag 'sh-for-linus' of git://github.com/pmundt/linux-sh: (38 commits)
    sh: magicpanelr2: Update for parse_mtd_partitions() fallout.
    sh: mach-rsk: Update for parse_mtd_partitions() fallout.
    sh: sh2a: Improve cache flush/invalidate functions
    sh: also without PM_RUNTIME pm_runtime.o must be built
    sh: add a resource name for shdma
    sh: Remove redundant try_to_freeze() invocations.
    sh: Ensure IRQs are enabled across do_notify_resume().
    sh: Fix up store queue code for subsys_interface changes.
    sh: clkfwk: sh_clk_init_parent() should be called after clk_register()
    sh: add platform_device for renesas_usbhs in board-sh7757lcr
    sh: modify clock-sh7757 for renesas_usbhs
    sh: pfc: ioremap() support
    sh: use ioread32/iowrite32 and mapped_reg for div6
    sh: use ioread32/iowrite32 and mapped_reg for div4
    sh: use ioread32/iowrite32 and mapped_reg for mstp32
    sh: extend clock struct with mapped_reg member
    sh: clkfwk: clock-sh73a0: all div6_clks use SH_CLK_DIV6_EXT()
    sh: clkfwk: clock-sh7724: all div6_clks use SH_CLK_DIV6_EXT()
    sh: clock-sh7723: add CLKDEV_ICK_ID for cleanup
    serial: sh-sci: Handle GPIO function requests.
    ...

    Linus Torvalds
     
  • * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched: Fix lockup by limiting load-balance retries on lock-break
    sched: Fix CONFIG_CGROUP_SCHED dependency
    sched: Remove empty #ifdefs

    Linus Torvalds
     
  • Make sure the interrupt is allocated correctly by lguest_setup_irq (check the
    return value of irq_alloc_desc_at for -ENOMEM)

    Signed-off-by: Stratos Psomadakis
    Signed-off-by: Rusty Russell (cleanups and commentry)

    Stratos Psomadakis
     
  • This is a better location instead of having it in Documentation.

    Signed-off-by: Davidlohr Bueso
    Signed-off-by: Rusty Russell (fixed compile)

    Davidlohr Bueso
     
  • When studying lguest's x86 segment descriptor code, it is not longer
    necessary to have the Intel x86 architecture manual open on the page
    with the segment descriptor illustration to understand the crazy
    numbers assigned to both descriptor structure halves a/b.
    Now the struct desc_struct's fields, like suggested by
    Glauber de Oliveira Costa in 2008, are used.

    Signed-off-by: Jacek Galowicz
    Signed-off-by: Rusty Russell

    Jacek Galowicz
     
  • Handling balloon hibernate / restore is tricky. If the balloon was
    inflated before going into the hibernation state, upon resume, the host
    will not have any memory of that. Any pages that were passed on to the
    host earlier would most likely be invalid, and the host will have to
    re-balloon to the previous value to get in the pre-hibernate state.

    So the only sane thing for the guest to do here is to discard all the
    pages that were put in the balloon. When to discard the pages is the
    next question.

    One solution is to deflate the balloon just before writing the image to
    the disk (in the freeze() PM callback). However, asking for pages from
    the host just to discard them immediately after seems wasteful of
    resources. Hence, it makes sense to do this by just fudging our
    counters soon after wakeup. This means we don't deflate the balloon
    before sleep, and also don't put unnecessary pressure on the host.

    This also helps in the thaw case: if the freeze fails for whatever
    reason, the balloon should continue to remain in the inflated state.
    This was tested by issuing 'swapoff -a' and trying to go into the S4
    state. That fails, and the balloon stays inflated, as expected. Both
    the host and the guest are happy.

    Finally, in the restore() callback, we empty the list of pages that were
    previously given off to the host, add the appropriate number of pages to
    the totalram_pages counter, reset the num_pages counter to 0, and
    all is fine.

    As a last step, delete the vqs on the freeze callback to prepare for
    hibernation, and re-create them in the restore and thaw callbacks to
    resume normal operation.

    The kthread doesn't race with any operations here, since it's frozen
    before the freeze() call and is thawed after the thaw() and restore()
    callbacks, so we're safe with that.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • The probe and PM restore functions will share this code.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • Remove all the vqs, disable napi and detach from the netdev on
    hibernation.

    Re-create vqs after restoring from a hibernated image, re-enable napi
    and re-attach the netdev. This keeps networking working across
    hibernation.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • The remove and PM freeze functions will share this code.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • The probe and PM restore functions will share this code.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • Delete the vq and flush any pending requests from the block queue on the
    freeze callback to prepare for hibernation.

    Re-create the vq in the restore callback to resume normal function.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • The probe and PM restore functions will share this code.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • To ensure we don't receive any more interrupts from the host after we
    enter the freeze function, disable all vq interrupts.

    There wasn't any problem seen due to this in tests, but applying this
    patch makes the freeze case more robust.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • Remove all vqs and associated buffers in the freeze callback which
    prepares us to go into hibernation state. On restore, re-create all the
    vqs and populate the input vqs with buffers to get to the pre-hibernate
    state.

    Note: Any outstanding unconsumed buffers are discarded; which means
    there's a possibility of data loss in case the host or the guest didn't
    consume any data already present in the vqs. This can be addressed in a
    later patch series, perhaps in virtio common code.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • This common code will be shared with the PM freeze function.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • Handle thaw, restore and freeze notifications from the PM core. Expose
    these to individual virtio drivers that can quiesce and resume vq
    operations. For drivers not implementing the thaw() method, use the
    restore method instead.

    These functions also save device-specific data so that the device can be
    put in pre-suspend state after resume, and disable and enable the PCI
    device in the freeze and resume functions, respectively.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • The older PM API doesn't have a way to get notifications on hibernate
    events. Switch to the newer one that gives us those notifications.

    Signed-off-by: Amit Shah
    Signed-off-by: Rusty Russell

    Amit Shah
     
  • Fix a theoretical race related to config work
    handler: a config interrupt might happen
    after we flush config work but before we
    reset the device. It will then cause the
    config work to run during or after reset.

    Two problems with this:
    - if this runs after device is gone we will get use after free
    - access of config while reset is in progress is racy
    (as layout is changing).

    As a solution
    1. flush after reset when we know there will be no more interrupts
    2. add a flag to disable config access before reset

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     
  • Under the existing #ifdef DEBUG, check that they don't have more than
    1/10 of a second between an add_buf() and a
    virtqueue_notify()/virtqueue_kick_prepare() call.

    We could get false positives on a really busy system, but good for
    development.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • A virtio driver does virtqueue_add_buf() multiple times before finally
    calling virtqueue_kick(); previously we only exposed the added buffers
    in the virtqueue_kick() call. This means we don't need a memory
    barrier in virtqueue_add_buf(), but it reduces concurrency as the
    device (ie. host) can't see the buffers until the kick.

    In the unusual (but now possible) case where a driver does add_buf()
    and get_buf() without doing a kick, we do need to insert one before
    our counter wraps. Otherwise we could wrap num_added, and later on
    not realize that we have passed the marker where we should have
    kicked.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • Since we know vq->vring.num is a power of 2, modulus is lazy (it's asserted
    in vring_new_virtqueue()).

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • Based on patch by Christoph for virtio_blk speedup:

    Split virtqueue_kick to be able to do the actual notification
    outside the lock protecting the virtqueue. This patch was
    originally done by Stefan Hajnoczi, but I can't find the
    original one anymore and had to recreated it from memory.
    Pointers to the original or corrections for the commit message
    are welcome.

    Stefan's patch was here:

    https://github.com/stefanha/linux/commit/a6d06644e3a58e57a774e77d7dc34c4a5a2e7496
    http://www.spinics.net/lists/linux-virtualization/msg14616.html

    Third time's the charm!

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • Remove wrapper functions. This makes the allocation type explicit in
    all callers; I used GPF_KERNEL where it seemed obvious, left it at
    GFP_ATOMIC otherwise.

    Signed-off-by: Rusty Russell
    Reviewed-by: Christoph Hellwig

    Rusty Russell