26 Aug, 2012

2 commits

  • Pull block-related fixes from Jens Axboe:

    - Improvements to the buffered and direct write IO plugging from
    Fengguang.

    - Abstract out the mapping of a bio in a request, and use that to
    provide a blk_bio_map_sg() helper. Useful for mapping just a bio
    instead of a full request.

    - Regression fix from Hugh, fixing up a patch that went into the
    previous release cycle (and marked stable, too) attempting to prevent
    a loop in __getblk_slow().

    - Updates to discard requests, fixing up the sizing and how we align
    them. Also a change to disallow merging of discard requests, since
    that doesn't really work properly yet.

    - A few drbd fixes.

    - Documentation updates.

    * 'for-linus' of git://git.kernel.dk/linux-block:
    block: replace __getblk_slow misfix by grow_dev_page fix
    drbd: Write all pages of the bitmap after an online resize
    drbd: Finish requests that completed while IO was frozen
    drbd: fix drbd wire compatibility for empty flushes
    Documentation: update tunable options in block/cfq-iosched.txt
    Documentation: update tunable options in block/cfq-iosched.txt
    Documentation: update missing index files in block/00-INDEX
    block: move down direct IO plugging
    block: remove plugging at buffered write time
    block: disable discard request merge temporarily
    bio: Fix potential memory leak in bio_find_or_create_slab()
    block: Don't use static to define "void *p" in show_partition_start()
    block: Add blk_bio_map_sg() helper
    block: Introduce __blk_segment_map_sg() helper
    fs/block-dev.c:fix performance regression in O_DIRECT writes to md block devices
    block: split discard into aligned requests
    block: reorganize rounding of max_discard_sectors

    Linus Torvalds
     
  • Pull libata fixes from Jeff Garzik:
    - libata-acpi regression fix
    - additional or corrected drive quirks for ata_blacklist
    - Kconfig text tweaking
    - new PCI IDs
    - pata_atiixp: quirk for MSI motherboard
    - export ahci_dev_classify for an ahci_platform driver

    * tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    libata: Add a space to " 2GB ATA Flash Disk" DMA blacklist entry
    [libata] new quirk, lift bridge limits for Buffalo DriveStation Quattro
    [libata] Kconfig: Elaborate that SFF is meant for legacy and PATA stuff
    [libata] acpi: call ata_acpi_gtm during ata port init time
    ata_piix: Add Device IDs for Intel Lynx Point-LP PCH
    ahci: Add Device IDs for Intel Lynx Point-LP PCH
    pata_atiixp: override cable detection on MSI E350DM-E33
    ahci: un-staticize ahci_dev_classify

    Linus Torvalds
     

25 Aug, 2012

1 commit


24 Aug, 2012

8 commits

  • Pull crypto fixes from Herbert Xu:
    "This push fixes a build error on 32-bit archs in the hifn driver as
    well as a potential deadlock in the caam driver."

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: caam - fix possible deadlock condition
    crypto: hifn_795x - fix 64bit division and undefined __divdi3 on 32bit archs

    Linus Torvalds
     
  • Pull UDF, ext3 & reiserfs fixes from Jan Kara:
    "A couple of fixes (udf, reiserfs, ext3) that accumulated over my
    vacation."

    * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    udf: fix retun value on error path in udf_load_logicalvol
    jbd: don't write superblock when unmounting an ro filesystem
    reiserfs: fix deadlocks with quotas
    quota: Move down dqptr_sem read after initializing default warn[] type at __dquot_alloc_space().
    UDF: During mount free lvid_bh before rescanning with different blocksize
    udf: fix udf_setsize() for file data in ICB

    Linus Torvalds
     
  • Pull UBIFS fixes from Artem Bityutskiy:
    - Fix crash on error which prevents emulated power-cut testing.
    - Fix log reply regression introduced in 3.6-rc1.
    - Fix UBIFS complaints about too small debug buffer size which.
    - Fix error message spelling, and remove incorrect commentary.

    * tag 'upstream-3.6-rc3' of git://git.infradead.org/linux-ubifs:
    UBIFS: fix error messages spelling
    UBIFS: fix complaints about too small debug buffer size
    UBIFS: fix replay regression
    UBIFS: fix crash on error path
    UBIFS: remove stale commentary

    Linus Torvalds
     
  • Pull IDE power management bugfix from David S. Miller.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide:
    ide: fix generic_ide_suspend/resume Oops

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "This tree contains misc fixlets: a perf script python binding fix, a
    uprobes fix and a syscall tracing fix."

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf tools: Add missing files to build the python binding
    uprobes: Fix mmap_region()'s mm->mm_rb corruption if uprobe_mmap() fails
    tracing/syscalls: Fix perf syscall tracing when syscall_nr == -1

    Linus Torvalds
     
  • Pull x86 fixes from Ingo Molnar:
    "This tree contains assorted fixlets: an alternatives patching crash
    fix, an irq migration/hotplug interaction fix, a fix for large AMD
    microcode images and a comment fixlet."

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, microcode, AMD: Fix broken ucode patch size check
    x86/alternatives: Fix p6 nops on non-modular kernels
    x86/fixup_irq: Use cpu_online_mask instead of cpu_all_mask
    x86/spinlocks: Fix comment in spinlock.h

    Linus Torvalds
     
  • Pull timer fixes from Thomas Gleixner:
    "Mostly small fixes for the fallout of the timekeeping overhaul in 3.6
    along with stable fixes to address an accumulation problem and missing
    sanity checks for RTC readouts and user space provided values."

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    time: Avoid making adjustments if we haven't accumulated anything
    time: Avoid potential shift overflow with large shift values
    time: Fix casting issue in timekeeping_forward_now
    time: Ensure we normalize the timekeeper in tk_xtime_add
    time: Improve sanity checking of timekeeping inputs

    Linus Torvalds
     
  • Pull HID fix from Jiri Kosina:
    "Fix for one particular device not being properly claimed by
    hid-multitouch driver"

    * 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    HID: Remove QUANTA from special drivers list

    Linus Torvalds
     

23 Aug, 2012

10 commits

  • Commit 91f68c89d8f3 ("block: fix infinite loop in __getblk_slow")
    is not good: a successful call to grow_buffers() cannot guarantee
    that the page won't be reclaimed before the immediate next call to
    __find_get_block(), which is why there was always a loop there.

    Yesterday I got "EXT4-fs error (device loop0): __ext4_get_inode_loc:3595:
    inode #19278: block 664: comm cc1: unable to read itable block" on console,
    which pointed to this commit.

    I've been trying to bisect for weeks, why kbuild-on-ext4-on-loop-on-tmpfs
    sometimes fails from a missing header file, under memory pressure on
    ppc G5. I've never seen this on x86, and I've never seen it on 3.5-rc7
    itself, despite that commit being in there: bisection pointed to an
    irrelevant pinctrl merge, but hard to tell when failure takes between
    18 minutes and 38 hours (but so far it's happened quicker on 3.6-rc2).

    (I've since found such __ext4_get_inode_loc errors in /var/log/messages
    from previous weeks: why the message never appeared on console until
    yesterday morning is a mystery for another day.)

    Revert 91f68c89d8f3, restoring __getblk_slow() to how it was (plus
    a checkpatch nitfix). Simplify the interface between grow_buffers()
    and grow_dev_page(), and avoid the infinite loop beyond end of device
    by instead checking init_page_buffers()'s end_block there (I presume
    that's more efficient than a repeated call to blkdev_max_block()),
    returning -ENXIO to __getblk_slow() in that case.

    And remove akpm's ten-year-old "__getblk() cannot fail ... weird"
    comment, but that is worrying: are all users of __getblk() really
    now prepared for a NULL bh beyond end of device, or will some oops??

    Signed-off-by: Hugh Dickins
    Cc: stable@vger.kernel.org # 3.0 3.2 3.4 3.5
    Signed-off-by: Jens Axboe

    Hugh Dickins
     
  • This issue was recently observed on an AMD C-50 CPU where a patch of
    maximum size was applied.

    Commit be62adb49294 ("x86, microcode, AMD: Simplify ucode verification")
    added current_size in get_matching_microcode(). This is calculated as
    size of the ucode patch + 8 (ie. size of the header). Later this is
    compared against the maximum possible ucode patch size for a CPU family.
    And of course this fails if the patch has already maximum size.

    Cc: [3.3+]
    Signed-off-by: Andreas Herrmann
    Signed-off-by: Borislav Petkov
    Link: http://lkml.kernel.org/r/1344361461-10076-1-git-send-email-bp@amd64.org
    Signed-off-by: H. Peter Anvin

    Andreas Herrmann
     
  • Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Intel: edid fixes, power consumption fix, s/r fix, haswell fix

    Radeon: BIOS loading fixes for UEFI and Thunderbolt machines, better
    MSAA validation, lockup timeout fixes, modesetting fixes

    One udl dpms fix, one vmwgfx fix, a couple of trivial core changes.

    There is an export added to ACPI as part of the radeon bios fixes.

    I've also included the fbcon flashing cursor vs deinit race fix, that
    seems the simplest place to start"

    Trivial conflict in drivers/video/console/fbcon.c due to me having
    already applied the fbcon flashing cursor vs deinit race fix, and Dave
    had added a comment in there too.

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (22 commits)
    fbcon: fix race condition between console lock and cursor timer (v1.1)
    drm: Add missing static storage class specifiers in drm_proc.c file
    drm/udl: dpms off the crtc when disabled.
    drm: Remove two unused fields from struct drm_display_mode
    drm: stop vmgfx driver explosion
    drm/radeon/ss: use num_crtc rather than hardcoded 6
    Revert "drm/radeon: fix bo creation retry path"
    drm/i915: use hsw rps tuning values everywhere on gen6+
    drm/radeon: split ATRM support out from the ATPX handler (v3)
    drm/radeon: convert radeon vfct code to use acpi_get_table_with_size
    ACPI: export symbol acpi_get_table_with_size
    drm/radeon: implement ACPI VFCT vbios fetch (v3)
    drm/radeon/kms: extend the Fujitsu D3003-S2 board connector quirk to cover later silicon stepping
    drm/radeon: fix checking of MSAA renderbuffers on r600-r700
    drm/radeon: allow CMASK and FMASK in the CS checker on r600-r700
    drm/radeon: init lockup timeout on ring init
    drm/radeon: avoid turning off spread spectrum for used pll
    drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads
    drm/i915: extract connector update from intel_ddc_get_modes() for reuse
    drm/i915: fix hsw uncached pte
    ...

    Linus Torvalds
     
  • Pull SCSI target fixes from Nicholas Bellinger:
    "The executive summary includes:

    - Post-merge review comments for tcm_vhost (MST + nab)
    - Avoid debugging overhead when not debugging for tcm-fc(FCoE) (MDR)
    - Fix NULL pointer dereference bug on alloc_page failulre (Yi Zou)
    - Fix REPORT_LUNs regression bug with pSCSI export (AlexE + nab)
    - Fix regression bug with handling of zero-length data CDBs (nab)
    - Fix vhost_scsi_target structure alignment (MST)

    Thanks again to everyone who contributed a bugfix patch, gave review
    feedback on tcm_vhost code, and/or reported a bug during their own
    testing over the last weeks.

    There is one other outstanding bug reported by Roland recently related
    to SCSI transfer length overflow handling, for which the current
    proposed bugfix has been left in queue pending further testing with
    other non iscsi-target based fabric drivers.

    As the patch is verified with loopback (local SGL memory from SCSI
    LLD) + tcm_qla2xxx (TCM allocated SGL memory mapped to PCI HW) fabric
    ports, it will be included into the next 3.6-rc-fixes PULL request."

    * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
    target: Remove unused se_cmd.cmd_spdtl
    tcm_fc: rcu_deref outside rcu lock/unlock section
    tcm_vhost: Fix vhost_scsi_target structure alignment
    target: Fix regression bug with handling of zero-length data CDBs
    target/pscsi: Fix bug with REPORT_LUNs handling for SCSI passthrough
    tcm_vhost: Change vhost_scsi_target->vhost_wwpn to char *
    target: fix NULL pointer dereference bug alloc_page() fails to get memory
    tcm_fc: Avoid debug overhead when not debugging
    tcm_vhost: Post-merge review changes requested by MST
    tcm_vhost: Fix incorrect IS_ERR() usage in vhost_scsi_map_iov_to_sgl

    Linus Torvalds
     
  • Pull i2c-embedded fixes from Wolfram Sang:
    "Some bugfixes for the "embedded" part of the I2C subsystem. The fixes
    affect mostly drivers which have been largely reworked lately and
    where regressions appeared."

    * 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux:
    i2c: tegra: protect suspend/resume callbacks with CONFIG_PM_SLEEP
    i2c: diolan-u2c: Fix master_xfer return code
    I2C: OMAP: xfer: fix runtime PM get/put balance on error
    i2c: nomadik: Add default configuration into the Nomadik I2C driver

    Linus Torvalds
     
  • Pull pwm fixes from Thierry Reding:
    "These patches fix the Samsung PWM driver and perform some minor
    cleanups like fixing checkpatch and sparse warnings.

    Two redundant error messages are removed and the Kconfig help text for
    the PWM subsystem is made more descriptive."

    * tag 'for-3.6-rc3' of git://gitorious.org/linux-pwm/linux-pwm:
    pwm: Improve Kconfig help text
    pwm: core: Fix coding style issues
    pwm: vt8500: Fix coding style issue
    pwm: Remove a redundant error message when devm_request_and_ioremap fails
    pwm: samsung: add missing device pointer to struct pwm_chip
    pwm: Add missing static storage class specifiers in core.c file

    Linus Torvalds
     
  • Pull ceph fixes from Sage Weil:
    "Jim's fix closes a narrow race introduced with the msgr changes. One
    fix resolves problems with debugfs initialization that Yan found when
    multiple client instances are created (e.g., two clusters mounted, or
    rbd + cephfs), another one fixes problems with mounting a nonexistent
    server subdirectory, and the last one fixes a divide by zero error
    from unsanitized ioctl input that Dan Carpenter found."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
    ceph: avoid divide by zero in __validate_layout()
    libceph: avoid truncation due to racing banners
    ceph: tolerate (and warn on) extraneous dentry from mds
    libceph: delay debugfs initialization until we learn global_id

    Linus Torvalds
     
  • Pull NFS client bugfixes from Trond Myklebust:
    - NFSv3 mounts need to fail if the FSINFO rpc call fails
    - Ensure that the NFS commit cache gets torn down when we unload the
    NFS module.
    - Fix memory scribble issues when interrupting a LAYOUTGET rpc call
    - Fix NFSv4 legacy idmapper regressions
    - Fix issues with the NFSv4 getacl command
    - Fix a regression when using the legacy "mount -t nfs4"

    * tag 'nfs-for-3.6-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv3: Ensure that do_proc_get_root() reports errors correctly
    NFSv4: Ensure that nfs4_alloc_client cleans up on error.
    NFS: return -ENOKEY when the upcall fails to map the name
    NFS: Clear key construction data if the idmap upcall fails
    NFSv4: Don't use private xdr_stream fields in decode_getacl
    NFSv4: Fix the acl cache size calculation
    NFSv4: Fix pointer arithmetic in decode_getacl
    NFS: Alias the nfs module to nfs4
    NFS: Fix a regression when loading the NFS v4 module
    NFSv4.1: Remove a bogus BUG_ON() in nfs4_layoutreturn_done
    pnfs-obj: Better IO pattern in case of unaligned offset
    NFS41: add pg_layout_private to nfs_pageio_descriptor
    pnfs: nfs4_proc_layoutget returns void
    pnfs: defer release of pages in layoutget
    nfs: tear down caches in nfs_init_writepagecache when allocation fails

    Linus Torvalds
     
  • Pull assorted fixes - mostly vfs - from Al Viro:
    "Assorted fixes, with an unexpected detour into vfio refcounting logics
    (fell out when digging in an analog of eventpoll race in there)."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    task_work: add a scheduling point in task_work_run()
    fs: fix fs/namei.c kernel-doc warnings
    eventpoll: use-after-possible-free in epoll_create1()
    vfio: grab vfio_device reference *before* exposing the sucker via fd_install()
    vfio: get rid of vfio_device_put()/vfio_group_get_device* races
    vfio: get rid of open-coding kref_put_mutex
    introduce kref_put_mutex()
    vfio: don't dereference after kfree...
    mqueue: lift mnt_want_write() outside ->i_mutex, clean up a bit

    Linus Torvalds
     

22 Aug, 2012

19 commits

  • This QUANTA device is driven by the generic hid-multitouch.ko driver, and
    therefore shouldn't be in the special drivers list.

    This has been an oversight in 4fa3a58 ("HID: hid-multitouch: Switch to
    device groups").

    Signed-off-by: Simon Farnsworth
    Signed-off-by: Jiri Kosina

    Simon Farnsworth
     
  • Corruptio -> corruption.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • It seems commit 4a9d4b02 (switch fput to task_work_add) reintroduced
    the problem addressed in commit 944be0b2 (close_files(): add scheduling
    point)

    If a server process with a lot of files (say 2 million tcp sockets)
    is killed, we can spend a lot of time in task_work_run() and trigger
    a soft lockup.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Al Viro

    Eric Dumazet
     
  • Fix kernel-doc warnings in fs/namei.c:

    Warning(fs/namei.c:360): No description found for parameter 'inode'
    Warning(fs/namei.c:672): No description found for parameter 'nd'

    Signed-off-by: Randy Dunlap
    Cc: Alexander Viro
    Cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Al Viro

    Randy Dunlap
     
  • As soon as we'd installed the file into descriptor table, it can
    get closed by another thread. Freeing ep in process...

    Signed-off-by: Al Viro

    Al Viro
     
  • It's not critical (anymore) since another thread closing the file will block
    on ->device_lock before it gets to dropping the final reference, but it's
    definitely cleaner that way...

    Acked-by: Alex Williamson
    Signed-off-by: Al Viro

    Al Viro
     
  • we really need to make sure that dropping the last reference happens
    under the group->device_lock; otherwise a loop (under device_lock)
    might find vfio_device instance that is being freed right now, has
    already dropped the last reference and waits on device_lock to exclude
    the sucker from the list.

    Acked-by: Alex Williamson
    Signed-off-by: Al Viro

    Al Viro
     
  • Acked-by: Alex Williamson
    Signed-off-by: Al Viro

    Al Viro
     
  • equivalent of
    mutex_lock(mutex);
    if (!kref_put(kref, release))
    mutex_unlock(mutex);

    Signed-off-by: Al Viro

    Al Viro
     
  • Acked-by: Alex Williamson
    Signed-off-by: Al Viro

    Al Viro
     
  • Probably a leftover from the early days of self-patching, p6nops
    are marked __initconst_or_module, which causes them to be
    discarded in a non-modular kernel. If something later triggers
    patching, it will overwrite kernel code with garbage.

    Reported-by: Tomas Racek
    Signed-off-by: Avi Kivity
    Cc: Michael Tokarev
    Cc: Borislav Petkov
    Cc: Marcelo Tosatti
    Cc: qemu-devel@nongnu.org
    Cc: Anthony Liguori
    Cc: H. Peter Anvin
    Cc: Alan Cox
    Cc: Alan Cox
    Link: http://lkml.kernel.org/r/5034AE84.90708@redhat.com
    Signed-off-by: Ingo Molnar

    Avi Kivity
     
  • When debugging is enabled, we use a temporary on-stack buffer for formatting
    the key strings like "(11368871, direntry, 0xcd0750)". The buffer size is
    32 bytes and sometimes it is not enough to fit the key string - e.g., when
    inode numbers are high. This is not fatal, but the key strings are incomplete
    and UBIFS complains like this:

    UBIFS assert failed in dbg_snprintf_key at 137 (pid 1)

    This is a regression caused by "515315a UBIFS: fix key printing".

    Fix the issue by increasing the buffer to 48 bytes.

    Reported-by: Michael Hench
    Signed-off-by: Artem Bityutskiy
    Tested-by: Michael Hench
    Cc: stable@vger.kernel.org [v3.3+]

    Artem Bityutskiy
     
  • If update_wall_time() is called and the current offset isn't large
    enough to accumulate, avoid re-calling timekeeping_adjust which may
    change the clock freq and can cause 1ns inconsistencies with
    CLOCK_REALTIME_COARSE/CLOCK_MONOTONIC_COARSE.

    Signed-off-by: John Stultz
    Cc: Prarit Bhargava
    Cc: Ingo Molnar
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1345595449-34965-5-git-send-email-john.stultz@linaro.org
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • Andreas Schwab noticed that the 1 << tk->shift could overflow if the
    shift value was greater than 30, since 1 would be a 32bit long on
    32bit architectures. This issue was introduced by 1e75fa8be (time:
    Condense timekeeper.xtime into xtime_sec)

    Use 1ULL instead to ensure we don't overflow on the shift.

    Reported-by: Andreas Schwab
    Signed-off-by: John Stultz
    Cc: Prarit Bhargava
    Cc: Ingo Molnar
    Link: http://lkml.kernel.org/r/1345595449-34965-4-git-send-email-john.stultz@linaro.org
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • arch_gettimeoffset returns a u32 value which when shifted by tk->shift
    can overflow. This issue was introduced with 1e75fa8be (time: Condense
    timekeeper.xtime into xtime_sec)

    Cast it to u64 first.

    Signed-off-by: Andreas Schwab
    Signed-off-by: John Stultz
    Cc: Prarit Bhargava
    Cc: Ingo Molnar
    Link: http://lkml.kernel.org/r/1345595449-34965-3-git-send-email-john.stultz@linaro.org
    Signed-off-by: Thomas Gleixner

    Andreas Schwab
     
  • Andreas noticed problems with resume on specific hardware after commit
    1e75fa8b (time: Condense timekeeper.xtime into xtime_sec) combined
    with commit b44d50dca (time: Fix casting issue in tk_set_xtime and
    tk_xtime_add)

    After some digging I realized we aren't normalizing the timekeeper
    after the add. Add the missing normalize call.

    Reported-by: Andreas Schwab
    Tested-by: Andreas Schwab
    Signed-off-by: John Stultz
    Cc: Prarit Bhargava
    Cc: Ingo Molnar
    Link: http://lkml.kernel.org/r/1345595449-34965-2-git-send-email-john.stultz@linaro.org
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • When one CPU is going down and this CPU is the last one in irq
    affinity, current code is setting cpu_all_mask as the new
    affinity for that irq.

    But for some systems (such as in Medfield Android mobile) the
    firmware sends the interrupt to each CPU in the irq affinity
    mask, averaged, and cpu_all_mask includes all potential CPUs,
    i.e. offline ones as well.

    So replace cpu_all_mask with cpu_online_mask.

    Signed-off-by: liu chuansheng
    Acked-by: Yanmin Zhang
    Acked-by: Thomas Gleixner
    Link: http://lkml.kernel.org/r/27240C0AC20F114CBF8149A2696CBE4A137286@SHSMSX101.ccr.corp.intel.com
    Signed-off-by: Ingo Molnar

    Liu, Chuansheng
     
  • This comment is no longer true. We support up to 2^16 CPUs
    because __ticket_t is an u16 if NR_CPUS is larger than 256.

    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Richard Weinberger
     
  • So we've had a fair few reports of fbcon handover breakage between
    efi/vesafb and i915 surface recently, so I dedicated a couple of
    days to finding the problem.

    Essentially the last thing we saw was the conflicting framebuffer
    message and that was all.

    So after much tracing with direct netconsole writes (printks
    under console_lock not so useful), I think I found the race.

    Thread A (driver load) Thread B (timer thread)
    unbind_con_driver -> |
    bind_con_driver -> |
    vc->vc_sw->con_deinit -> |
    fbcon_deinit -> |
    console_lock() |
    | |
    | fbcon_flashcursor timer fires
    | console_lock()
    del_timer_sync
    (BOOM)

    Of course because all of this is under the console lock,
    we never see anything, also since we also just unbound the active
    console guess what we never see anything.

    Hopefully this fixes the problem for anyone seeing vesafb->kms
    driver handoff.

    v1.1: add comment suggestion from Alan.

    Cc: stable@vger.kernel.org
    Signed-off-by: Dave Airlie

    Dave Airlie