22 Jul, 2013

2 commits

  • Linus Torvalds
     
  • Pull ACPI video support fixes from Rafael Wysocki:
    "I'm sending a separate pull request for this as it may be somewhat
    controversial. The breakage addressed here is not really new and the
    fixes may not satisfy all users of the affected systems, but we've had
    so much back and forth dance in this area over the last several weeks
    that I think it's time to actually make some progress.

    The source of the problem is that about a year ago we started to tell
    BIOSes that we're compatible with Windows 8, which we really need to
    do, because some systems shipping with Windows 8 are tested with it
    and nothing else, so if we tell their BIOSes that we aren't compatible
    with Windows 8, we expose our users to untested BIOS/AML code paths.

    However, as it turns out, some Windows 8-specific AML code paths are
    not tested either, because Windows 8 actually doesn't use the ACPI
    methods containing them, so if we declare Windows 8 compatibility and
    attempt to use those ACPI methods, things break. That occurs mostly
    in the backlight support area where in particular the _BCM and _BQC
    methods are plain unusable on some systems if the OS declares Windows
    8 compatibility.

    [ The additional twist is that they actually become usable if the OS
    says it is not compatible with Windows 8, but that may cause
    problems to show up elsewhere ]

    Investigation carried out by Matthew Garrett indicates that what
    Windows 8 does about backlight is to leave backlight control up to
    individual graphics drivers. At least there's evidence that it does
    that if the Intel graphics driver is used, so we've decided to follow
    Windows 8 in that respect and allow i915 to control backlight (Daniel
    likes that part).

    The first commit from Aaron Lu makes ACPICA export the variable from
    which we can infer whether or not the BIOS believes that we are
    compatible with Windows 8.

    The second commit from Matthew Garrett prepares the ACPI video driver
    by making it initialize the ACPI backlight even if it is not going to
    be used afterward (that is needed for backlight control to work on
    Thinkpads).

    The third commit implements the actual workaround making i915 take
    over backlight control if the firmware thinks it's dealing with
    Windows 8 and is based on the work of multiple developers, including
    Matthew Garrett, Chun-Yi Lee, Seth Forshee, and Aaron Lu.

    The final commit from Aaron Lu makes us follow Windows 8 by informing
    the firmware through the _DOS method that it should not carry out
    automatic brightness changes, so that brightness can be controlled by
    GUI.

    Hopefully, this approach will allow us to avoid using blacklists of
    systems that should not declare Windows 8 compatibility just to avoid
    backlight control problems in the future.

    - Change from Aaron Lu makes ACPICA export a variable which can be
    used by driver code to determine whether or not the BIOS believes
    that we are compatible with Windows 8.

    - Change from Matthew Garrett makes the ACPI video driver initialize
    the ACPI backlight even if it is not going to be used afterward
    (that is needed for backlight control to work on Thinkpads).

    - Fix from Rafael J Wysocki implements Windows 8 backlight support
    workaround making i915 take over bakclight control if the firmware
    thinks it's dealing with Windows 8. Based on the work of multiple
    developers including Matthew Garrett, Chun-Yi Lee, Seth Forshee,
    and Aaron Lu.

    - Fix from Aaron Lu makes the kernel follow Windows 8 by informing
    the firmware through the _DOS method that it should not carry out
    automatic brightness changes, so that brightness can be controlled
    by GUI"

    * tag 'acpi-video-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / video: no automatic brightness changes by win8-compatible firmware
    ACPI / video / i915: No ACPI backlight if firmware expects Windows 8
    ACPI / video: Always call acpi_video_init_brightness() on init
    ACPICA: expose OSI version

    Linus Torvalds
     

21 Jul, 2013

8 commits

  • Pull ext[34] tmpfile bugfix from Ted Ts'o:
    "Fix regression caused by commit af51a2ac36d1f which added ->tmpfile()
    support (along with a similar fix for ext3)"

    * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext3: fix a BUG when opening a file with O_TMPFILE flag
    ext4: fix a BUG when opening a file with O_TMPFILE flag

    Linus Torvalds
     
  • When we try to open a file with O_TMPFILE flag, we will trigger a bug.
    The root cause is that in ext4_orphan_add() we check ->i_nlink == 0 and
    this check always fails because we set ->i_nlink = 1 in
    inode_init_always(). We can use the following program to trigger it:

    int main(int argc, char *argv[])
    {
    int fd;

    fd = open(argv[1], O_TMPFILE, 0666);
    if (fd < 0) {
    perror("open ");
    return -1;
    }
    close(fd);
    return 0;
    }

    The oops message looks like this:

    kernel: kernel BUG at fs/ext3/namei.c:1992!
    kernel: invalid opcode: 0000 [#1] SMP
    kernel: Modules linked in: ext4 jbd2 crc16 cpufreq_ondemand ipv6 dm_mirror dm_region_hash dm_log dm_mod parport_pc parport serio_raw sg dcdbas pcspkr i2c_i801 ehci_pci ehci_hcd button acpi_cpufreq mperf e1000e ptp pps_core ttm drm_kms_helper drm hwmon i2c_algo_bit i2c_core ext3 jbd sd_mod ahci libahci libata scsi_mod uhci_hcd
    kernel: CPU: 0 PID: 2882 Comm: tst_tmpfile Not tainted 3.11.0-rc1+ #4
    kernel: Hardware name: Dell Inc. OptiPlex 780 /0V4W66, BIOS A05 08/11/2010
    kernel: task: ffff880112d30050 ti: ffff8801124d4000 task.ti: ffff8801124d4000
    kernel: RIP: 0010:[] [] ext3_orphan_add+0x6a/0x1eb [ext3]
    kernel: RSP: 0018:ffff8801124d5cc8 EFLAGS: 00010202
    kernel: RAX: 0000000000000000 RBX: ffff880111510128 RCX: ffff8801114683a0
    kernel: RDX: 0000000000000000 RSI: ffff880111510128 RDI: ffff88010fcf65a8
    kernel: RBP: ffff8801124d5d18 R08: 0080000000000000 R09: ffffffffa00d3b7f
    kernel: R10: ffff8801114683a0 R11: ffff8801032a2558 R12: 0000000000000000
    kernel: R13: ffff88010fcf6800 R14: ffff8801032a2558 R15: ffff8801115100d8
    kernel: FS: 00007f5d172b5700(0000) GS:ffff880117c00000(0000) knlGS:0000000000000000
    kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    kernel: CR2: 00007f5d16df15d0 CR3: 0000000110b1d000 CR4: 00000000000407f0
    kernel: Stack:
    kernel: 000000000000000c ffff8801048a7dc8 ffff8801114685a8 ffffffffa00b80d7
    kernel: ffff8801124d5e38 ffff8801032a2558 ffff88010ce24d68 0000000000000000
    kernel: ffff88011146b300 ffff8801124d5d44 ffff8801124d5d78 ffffffffa00db7e1
    kernel: Call Trace:
    kernel: [] ? journal_start+0x8c/0xbd [jbd]
    kernel: [] ext3_tmpfile+0xb2/0x13b [ext3]
    kernel: [] path_openat+0x11f/0x5e7
    kernel: [] ? list_del+0x11/0x30
    kernel: [] ? __dequeue_entity+0x33/0x38
    kernel: [] do_filp_open+0x3f/0x8d
    kernel: [] ? __alloc_fd+0x50/0x102
    kernel: [] do_sys_open+0x13b/0x1cd
    kernel: [] SyS_open+0x1e/0x20
    kernel: [] system_call_fastpath+0x16/0x1b
    kernel: Code: 39 c7 0f 85 67 01 00 00 0f b7 03 25 00 f0 00 00 3d 00 40 00 00 74 18 3d 00 80 00 00 74 11 3d 00 a0 00 00 74 0a 83 7b 48 00 74 04 0b eb fe 49 8b 85 50 03 00 00 4c 89 f6 48 c7 c7 c0 99 0e a0
    kernel: RIP [] ext3_orphan_add+0x6a/0x1eb [ext3]
    kernel: RSP

    Here we couldn't call clear_nlink() directly because in d_tmpfile() we
    will call inode_dec_link_count() to decrease ->i_nlink. So this commit
    tries to call d_tmpfile() before ext4_orphan_add() to fix this problem.

    Signed-off-by: Zheng Liu
    Signed-off-by: "Theodore Ts'o"
    Cc: Jan Kara
    Cc: Al Viro

    Zheng Liu
     
  • When we try to open a file with O_TMPFILE flag, we will trigger a bug.
    The root cause is that in ext4_orphan_add() we check ->i_nlink == 0 and
    this check always fails because we set ->i_nlink = 1 in
    inode_init_always(). We can use the following program to trigger it:

    int main(int argc, char *argv[])
    {
    int fd;

    fd = open(argv[1], O_TMPFILE, 0666);
    if (fd < 0) {
    perror("open ");
    return -1;
    }
    close(fd);
    return 0;
    }

    The oops message looks like this:

    kernel BUG at fs/ext4/namei.c:2572!
    invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in: dlci bridge stp hidp cmtp kernelcapi l2tp_ppp l2tp_netlink l2tp_core sctp libcrc32c rfcomm tun fuse nfnetli
    nk can_raw ipt_ULOG can_bcm x25 scsi_transport_iscsi ipx p8023 p8022 appletalk phonet psnap vmw_vsock_vmci_transport af_key vmw_vmci rose vsock atm can netrom ax25 af_rxrpc ir
    da pppoe pppox ppp_generic slhc bluetooth nfc rfkill rds caif_socket caif crc_ccitt af_802154 llc2 llc snd_hda_codec_realtek snd_hda_intel snd_hda_codec serio_raw snd_pcm pcsp
    kr edac_core snd_page_alloc snd_timer snd soundcore r8169 mii sr_mod cdrom pata_atiixp radeon backlight drm_kms_helper ttm
    CPU: 1 PID: 1812571 Comm: trinity-child2 Not tainted 3.11.0-rc1+ #12
    Hardware name: Gigabyte Technology Co., Ltd. GA-MA78GM-S2H/GA-MA78GM-S2H, BIOS F12a 04/23/2010
    task: ffff88007dfe69a0 ti: ffff88010f7b6000 task.ti: ffff88010f7b6000
    RIP: 0010:[] [] ext4_orphan_add+0x299/0x2b0
    RSP: 0018:ffff88010f7b7cf8 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffff8800966d3020 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffff88007dfe70b8 RDI: 0000000000000001
    RBP: ffff88010f7b7d40 R08: ffff880126a3c4e0 R09: ffff88010f7b7ca0
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801271fd668
    R13: ffff8800966d2f78 R14: ffff88011d7089f0 R15: ffff88007dfe69a0
    FS: 00007f70441a3740(0000) GS:ffff88012a800000(0000) knlGS:00000000f77c96c0
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000002834000 CR3: 0000000107964000 CR4: 00000000000007e0
    DR0: 0000000000780000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000600
    Stack:
    0000000000002000 00000020810b6dde 0000000000000000 ffff88011d46db00
    ffff8800966d3020 ffff88011d7089f0 ffff88009c7f4c10 ffff88010f7b7f2c
    ffff88007dfe69a0 ffff88010f7b7da8 ffffffff8125cfac ffff880100000004
    Call Trace:
    [] ext4_tmpfile+0x12c/0x180
    [] path_openat+0x238/0x700
    [] ? native_sched_clock+0x24/0x80
    [] do_filp_open+0x47/0xa0
    [] ? __alloc_fd+0xaf/0x200
    [] do_sys_open+0x124/0x210
    [] ? syscall_trace_enter+0x25/0x290
    [] SyS_open+0x1e/0x20
    [] tracesys+0xdd/0xe2
    [] ? start_thread_common.constprop.6+0x1/0xa0
    Code: 04 00 00 00 89 04 24 31 c0 e8 c4 77 04 00 e9 43 fe ff ff 66 25 00 d0 66 3d 00 80 0f 84 0e fe ff ff 83 7b 48 00 0f 84 04 fe ff ff 0b 49 8b 8c 24 50 07 00 00 e9 88 fe ff ff 0f 1f 84 00 00 00

    Here we couldn't call clear_nlink() directly because in d_tmpfile() we
    will call inode_dec_link_count() to decrease ->i_nlink. So this commit
    tries to call d_tmpfile() before ext4_orphan_add() to fix this problem.

    Reported-by: Dave Jones
    Signed-off-by: Zheng Liu
    Tested-by: Darrick J. Wong
    Tested-by: Dave Jones
    Signed-off-by: "Theodore Ts'o"
    Acked-by: Al Viro

    Zheng Liu
     
  • Pull staging tree fixes from Greg KH:
    "Here are a few iio driver fixes for 3.11-rc2. They are still spread
    across drivers/iio and drivers/staging/iio so they are coming in
    through this tree.

    I've also removed the drivers/staging/csr/ driver as the developers
    who originally sent it to me have moved on to other companies, and CSR
    still will not send us the specs for the device, making the driver
    pretty much obsolete and impossible to fix up. Deleting it now
    prevents people from sending in lots of tiny codingsyle fixes that
    will never go anywhere.

    It also helps to offset the large lustre filesystem merge that
    happened in 3.11-rc1 in the overall 3.11.0 diffstat. :)"

    * tag 'staging-3.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: csr: remove driver
    iio: lps331ap: Fix wrong in_pressure_scale output value
    iio staging: fix lis3l02dq, read error handling
    staging:iio:ad7291: add missing .driver_module to struct iio_info
    iio: ti_am335x_adc: add missing .driver_module to struct iio_info
    iio: mxs-lradc: Remove useless check in read_raw
    iio: mxs-lradc: Fix misuse of iio->trig
    iio: inkern: fix iio_convert_raw_to_processed_unlocked
    iio: Fix iio_channel_has_info
    iio:trigger: device_unregister->device_del to avoid double free
    iio: dac: ad7303: fix error return code in ad7303_probe()

    Linus Torvalds
     
  • Pull vfs fixes from Al Viro:
    "The sget() one is a long-standing bug and will need to go into -stable
    (in fact, it had been originally caught in RHEL6), the other two are
    3.11-only"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    vfs: constify dentry parameter in d_count()
    livelock avoidance in sget()
    allow O_TMPFILE to work with O_WRONLY

    Linus Torvalds
     
  • Pull ext4 bugfixes from Ted Ts'o:
    "Fixes for 3.11-rc2, sent at 5pm, in the professoinal style. :-)"

    I'm not sure I like this new level of "professionalism".
    9-5, people, 9-5.

    * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: call ext4_es_lru_add() after handling cache miss
    ext4: yield during large unlinks
    ext4: make the extent_status code more robust against ENOMEM failures
    ext4: simplify calculation of blocks to free on error
    ext4: fix error handling in ext4_ext_truncate()

    Linus Torvalds
     
  • Pull NFS client bugfixes from Trond Myklebust:
    - Fix a regression against NFSv4 FreeBSD servers when creating a new
    file
    - Fix another regression in rpc_client_register()

    * tag 'nfs-for-3.11-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv4: Fix a regression against the FreeBSD server
    SUNRPC: Fix another issue with rpc_client_register()

    Linus Torvalds
     
  • Pull btrfs fixes from Josef Bacik:
    "I'm playing the role of Chris Mason this week while he's on vacation.
    There are a few critical fixes for btrfs here, all regressions and
    have been tested well"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-next:
    Btrfs: fix wrong write offset when replacing a device
    Btrfs: re-add root to dead root list if we stop dropping it
    Btrfs: fix lock leak when resuming snapshot deletion
    Btrfs: update drop progress before stopping snapshot dropping

    Linus Torvalds
     

20 Jul, 2013

13 commits

  • so that it can be used in places like d_compare/d_hash
    without causing a compiler warning.

    Signed-off-by: Peng Tao
    Signed-off-by: Al Viro

    Peng Tao
     
  • Eric Sandeen has found a nasty livelock in sget() - take a mount(2) about
    to fail. The superblock is on ->fs_supers, ->s_umount is held exclusive,
    ->s_active is 1. Along comes two more processes, trying to mount the same
    thing; sget() in each is picking that superblock, bumping ->s_count and
    trying to grab ->s_umount. ->s_active is 3 now. Original mount(2)
    finally gets to deactivate_locked_super() on failure; ->s_active is 2,
    superblock is still ->fs_supers because shutdown will *not* happen until
    ->s_active hits 0. ->s_umount is dropped and now we have two processes
    chasing each other:
    s_active = 2, A acquired ->s_umount, B blocked
    A sees that the damn thing is stillborn, does deactivate_locked_super()
    s_active = 1, A drops ->s_umount, B gets it
    A restarts the search and finds the same superblock. And bumps it ->s_active.
    s_active = 2, B holds ->s_umount, A blocked on trying to get it
    ... and we are in the earlier situation with A and B switched places.

    The root cause, of course, is that ->s_active should not grow until we'd
    got MS_BORN. Then failing ->mount() will have deactivate_locked_super()
    shut the damn thing down. Fortunately, it's easy to do - the key point
    is that grab_super() is called only for superblocks currently on ->fs_supers,
    so it can bump ->s_count and grab ->s_umount first, then check MS_BORN and
    bump ->s_active; we must never increment ->s_count for superblocks past
    ->kill_sb(), but grab_super() is never called for those.

    The bug is pretty old; we would've caught it by now, if not for accidental
    exclusion between sget() for block filesystems; the things like cgroup or
    e.g. mtd-based filesystems don't have anything of that sort, so they get
    bitten. The right way to deal with that is obviously to fix sget()...

    Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • Pull UML fixes from Richard Weinberger:
    "Special thanks goes to Toralf Föster for continuously testing UML and
    reporting issues!"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
    um: remove dead code
    um: siginfo cleanup
    uml: Fix which_tmpdir failure when /dev/shm is a symlink, and in other edge cases
    um: Fix wait_stub_done() error handling
    um: Mark stub pages mapping with VM_PFNMAP
    um: Fix return value of strnlen_user()

    Linus Torvalds
     
  • Pull MIPS fixes from Ralf Baechle:
    "MIPS fixes for 3.11. Half of then is for Netlogic the remainder
    touches things across arch/mips.

    Nothing really dramatic and by rc1 standards MIPS will be in fairly
    good shape with this applied. Tested by building all MIPS defconfigs
    of which with this pull request four platforms won't build. And yes,
    it boots also on my favorite test systems"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: kvm: Kconfig: Drop HAVE_KVM dependency from VIRTUALIZATION
    MIPS: Octeon: Fix DT pruning bug with pip ports
    MIPS: KVM: Mark KVM_GUEST (T&E KVM) as BROKEN_ON_SMP
    MIPS: tlbex: fix broken build in v3.11-rc1
    MIPS: Netlogic: Add XLP PIC irqdomain
    MIPS: Netlogic: Fix USB block's coherent DMA mask
    MIPS: tlbex: Fix typo in r3000 tlb store handler
    MIPS: BMIPS: Fix thinko to release slave TP from reset
    MIPS: Delete dead invocation of exception_exit().

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:
    - Post -rc1 update to the common reboot infrastructure.
    - Fixes (user cache maintenance fault handling, !COMPAT compilation,
    CPU online and interrupt hanlding).

    * tag 'arm64-stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
    arm64: use common reboot infrastructure
    arm64: mm: don't treat user cache maintenance faults as writes
    arm64: add '#ifdef CONFIG_COMPAT' for aarch32_break_handler()
    arm64: Only enable local interrupts after the CPU is marked online

    Linus Torvalds
     
  • Pull s390 fixes from Martin Schwidefsky:
    "An update for the BFP jit to the latest and greatest, two patches to
    get kdump working again, the random-abort ptrace extention for
    transactional execution, the z90crypt module alias for ap and a tiny
    cleanup"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/zcrypt: Alias for new zcrypt device driver base module
    s390/kdump: Allow copy_oldmem_page() copy to virtual memory
    s390/kdump: Disable mmap for s390
    s390/bpf,jit: add pkt_type support
    s390/bpf,jit: address randomize and write protect jit code
    s390/bpf,jit: use generic jit dumper
    s390/bpf,jit: call module_free() from any context
    s390/qdio: remove unused variable
    s390/ptrace: PTRACE_TE_ABORT_RAND

    Linus Torvalds
     
  • Miao Xie reported the following issue:

    The filesystem was corrupted after we did a device replace.

    Steps to reproduce:
    # mkfs.btrfs -f -m single -d raid10 ..
    # mount
    # btrfs replace start -rfB 1
    # umount
    # btrfsck

    The reason for the issue is that we changed the write offset by mistake,
    introduced by commit 625f1c8dc.

    We read the data from the source device at first, and then write the
    data into the corresponding place of the new device. In order to
    implement the "-r" option, the source location is remapped using
    btrfs_map_block(). The read takes place on the mapped location, and
    the write needs to take place on the unmapped location. Currently
    the write is using the mapped location, and this commit changes it
    back by undoing the change to the write address that the aforementioned
    commit added by mistake.

    Reported-by: Miao Xie
    Cc: # 3.10+
    Signed-off-by: Stefan Behrens
    Signed-off-by: Josef Bacik

    Stefan Behrens
     
  • If we stop dropping a root for whatever reason we need to add it back to the
    dead root list so that we will re-start the dropping next transaction commit.
    The other case this happens is if we recover a drop because we will add a root
    without adding it to the fs radix tree, so we can leak it's root and commit root
    extent buffer, adding this to the dead root list makes this cleanup happen.
    Thanks,

    Cc: stable@vger.kernel.org
    Reported-by: Alex Lyakas
    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • We aren't setting path->locks[level] when we resume a snapshot deletion which
    means we won't unlock the buffer when we free the path. This causes deadlocks
    if we happen to re-allocate the block before we've evicted the extent buffer
    from cache. Thanks,

    Cc: stable@vger.kernel.org
    Reported-by: Alex Lyakas
    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • Alex pointed out a problem and fix that exists in the drop one snapshot at a
    time patch. If we decide we need to exit for whatever reason (umount for
    example) we will just exit the snapshot dropping without updating the drop
    progress. So the next time we go to resume we will BUG_ON() because we can't
    find the extent we left off at because we never updated it. This patch fixes
    the problem.

    Cc: stable@vger.kernel.org
    Reported-by: Alex Lyakas
    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • Pull KVM fix from Paolo Bonzini:
    "This single patch fixes a regression caused by one of the
    optimizations introduced in 3.11, which is generally visible only on
    AMD processors"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: MMU: avoid fast page fault fixing mmio page fault

    Linus Torvalds
     
  • Pull power management and ACPI fixes from Rafael Wysocki:
    "These are fixes collected over the last week, most importnatly two
    cpufreq reverts fixing regressions introduced in 3.10, an autoseelp
    fix preventing systems using it from crashing during shutdown and two
    ACPI scan fixes related to hotplug.

    Specifics:

    - Two cpufreq commits from the 3.10 cycle introduced regressions.
    The first of them was buggy (it did way much more than it needed to
    do) and the second one attempted to fix an issue introduced by the
    first one. Fixes from Srivatsa S Bhat revert both.

    - If autosleep triggers during system shutdown and the shutdown
    callbacks of some device drivers have been called already, it may
    crash the system. Fix from Liu Shuo prevents that from happening
    by making try_to_suspend() check system_state.

    - The ACPI memory hotplug driver doesn't clear its driver_data on
    errors which may cause a NULL poiter dereference to happen later.
    Fix from Toshi Kani.

    - The ACPI namespace scanning code should not try to attach scan
    handlers to device objects that have them already, which may
    confuse things quite a bit, and it should rescan the whole
    namespace branch starting at the given node after receiving a bus
    check notify event even if the device at that particular node has
    been discovered already. Fixes from Rafael J Wysocki.

    - New ACPI video blacklist entry for a system whose initial backlight
    setting from the BIOS doesn't make sense. From Lan Tianyu.

    - Garbage string output avoindance for ACPI PNP from Liu Shuo.

    - Two Kconfig fixes for issues introduced recently in the s3c24xx
    cpufreq driver (when moving the driver to drivers/cpufreq) from
    Paul Bolle.

    - Trivial comment fix in pm_wakeup.h from Chanwoo Choi"

    * tag 'pm+acpi-3.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / video: ignore BIOS initial backlight value for Fujitsu E753
    PNP / ACPI: avoid garbage in resource name
    cpufreq: Revert commit 2f7021a8 to fix CPU hotplug regression
    cpufreq: s3c24xx: fix "depends on ARM_S3C24XX" in Kconfig
    cpufreq: s3c24xx: rename CONFIG_CPU_FREQ_S3C24XX_DEBUGFS
    PM / Sleep: Fix comment typo in pm_wakeup.h
    PM / Sleep: avoid 'autosleep' in shutdown progress
    cpufreq: Revert commit a66b2e to fix suspend/resume regression
    ACPI / memhotplug: Fix a stale pointer in error path
    ACPI / scan: Always call acpi_bus_scan() for bus check notifications
    ACPI / scan: Do not try to attach scan handlers to devices having them

    Linus Torvalds
     

19 Jul, 2013

17 commits

  • Commit 7b6d864b48d9 (reboot: arm: change reboot_mode to use enum
    reboot_mode) changed the way reboot is handled on arm, which has a
    direct impact on arm64 as we share the reset driver on the VE platform.

    The obvious fix is to move arm64 to use the same infrastructure.

    Signed-off-by: Marc Zyngier
    [catalin.marinas@arm.com: removed reboot_mode = REBOOT_HARD default setting]
    Signed-off-by: Catalin Marinas

    Marc Zyngier
     
  • On arm64, cache maintenance faults appear as data aborts with the CM
    bit set in the ESR. The WnR bit, usually used to distinguish between
    faulting loads and stores, always reads as 1 and (slightly confusingly)
    the instructions are treated as reads by the architecture.

    This patch fixes our fault handling code to treat cache maintenance
    faults in the same way as loads.

    Signed-off-by: Will Deacon
    Cc:
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • If 'COMPAT' not defined, aarch32_break_handler() cannot pass compiling,
    and it can work independent with 'COMPAT', so remove dummy definition.

    The related error:

    arch/arm64/kernel/debug-monitors.c:249:5: error: redefinition of ‘aarch32_break_handler’
    In file included from arch/arm64/kernel/debug-monitors.c:29:0:
    /root/linux-next/arch/arm64/include/asm/debug-monitors.h:89:12: note: previous definition of ‘aarch32_break_handler’ was here

    Signed-off-by: Chen Gang
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Chen Gang
     
  • There is a slight chance that (timer) interrupts are triggered before a
    secondary CPU has been marked online with implications on softirq thread
    affinity.

    Signed-off-by: Catalin Marinas
    Reported-by: Kirill Tkhai

    Catalin Marinas
     
  • Virtualization does not always need KVM capabilities so drop the
    dependency. The KVM symbol already depends on HAVE_KVM.

    Fixes the following problem on a randconfig:
    warning: (REMOTEPROC && RPMSG) selects VIRTUALIZATION which has unmet direct
    dependencies (HAVE_KVM)
    warning: (REMOTEPROC && RPMSG) selects VIRTUALIZATION which has unmet
    direct dependencies (HAVE_KVM)

    Signed-off-by: Markos Chandras
    Acked-by: Steven J. Hill
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/5443/
    Signed-off-by: Ralf Baechle

    Markos Chandras
     
  • "me" is not used.

    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • Currently we use both struct siginfo and siginfo_t.
    Let's use struct siginfo internally to avoid ongoing
    compiler warning. We are allowed to do so because
    struct siginfo and siginfo_t are equivalent.

    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • During the pruning of the device tree octeon_fdt_pip_iface() is called
    for each PIP interface and every port up to the port count is removed
    from the device tree. However, the count was set to the return value of
    cvmx_helper_interface_enumerate() which doesn't actually return the
    count but just returns zero on success. This effectively removed *all*
    ports from the tree.

    Use cvmx_helper_ports_on_interface() instead to fix this. This
    successfully restores the 3 ports of my ERLite-3 and fixes the "kernel
    assigns random MAC addresses" issue.

    Signed-off-by: Faidon Liambotis
    Tested-by: Aaro Koskinen
    Acked-by: David Daney
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/5587/
    Signed-off-by: Ralf Baechle

    Faidon Liambotis
     
  • which_tmpdir did the wrong thing if /dev/shm was a symlink (e.g., to /run/shm),
    if there were multiple mounts on top of each other, if the mount(s) were
    obscured by a later mount, or if /dev/shm was a prefix of another mount point.
    This fixes these cases. Applies to 3.9.6.

    Signed-off-by: Tristan Schmelcher
    Signed-off-by: Richard Weinberger

    Tristan Schmelcher
     
  • If we die within a stub handler we only way to reliable
    kill the (obviously) dying uml guest process is killing
    it's host twin on the host side.

    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • Ensure that a process cannot destroy his stub pages with
    using MADV_DONTNEED and friends.

    Reported-by: toralf.foerster@gmx.de
    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • In case of an error it must not return -EFAULT.
    Return 0 like all other archs do.

    Reported-by: toralf.foerster@gmx.de
    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • Make KVM_GUEST depend on BROKEN_ON_SMP so that it cannot be enabled with
    SMP.

    SMP kernels use ll/sc instructions for an atomic section in the tlb fill
    handler, with a tlbp instruction contained in the middle. This cannot be
    emulated with trap & emulate KVM because the tlbp instruction traps and
    the eret to return to the guest code clears the LLbit which makes the sc
    instruction always fail.

    Signed-off-by: James Hogan
    Cc: Sanjay Lal
    Cc: Ralf Baechle
    Cc: David Daney
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/5588/
    Signed-off-by: Ralf Baechle

    James Hogan
     
  • Commit 6ba045f9fbdafb48da42aa8576ea7a3980443136 (MIPS: Move generated code
    to .text for microMIPS) deleted tlbmiss_handler_setup_pgd_array, but some
    references were not converted. Fix that to enable building a MIPS kernel.

    Signed-off-by: Aaro Koskinen
    Acked-by: Jayachandran C.
    Acked-by: David Daney
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/5589/
    Signed-off-by: Ralf Baechle

    Aaro Koskinen
     
  • Add a legacy irq domain for the XLP PIC interrupts. This will be used
    when interrupts are assigned from the device tree. This change is required
    after commit c5cdc67 "irqdomain: Remove temporary MIPS workaround code".

    Signed-off-by: Jayachandran C
    Cc: linux-mips@linux-mips.org
    Cc: Jayachandran C
    Patchwork: https://patchwork.linux-mips.org/patch/5597/
    Signed-off-by: Ralf Baechle

    Jayachandran C
     
  • The on-chip USB controller on Netlogic XLP does not suppport
    DMA beyond 32-bit physical address. Set the coherent_dma_mask
    of the USB in its PCI fixup to support this.

    Signed-off-by: Ganesan Ramalingam
    Signed-off-by: Jayachandran C.
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/5596/
    Signed-off-by: Ralf Baechle

    Ganesan Ramalingam
     
  • commit 6ba045f (MIPS: Move generated code to .text for microMIPS)
    causes a panic at boot. The handler builder should test against
    handle_tlbs_end, not handle_tlbs.

    Signed-off-by: Tony Wu
    Acked-by: Jayachandran C.
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/5600/
    Signed-off-by: Ralf Baechle

    Tony Wu