27 Jul, 2012

9 commits

  • Rx Error interrupt(E.G. parity error) is not enabled.
    So, when parity error occurs, error interrupt is not occurred.
    As a result, the received data is not dropped.

    This patch adds enable/disable rx error interrupt code.

    Signed-off-by: Tomoya MORINAGA
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Tomoya MORINAGA
     
  • Otherwise we fall back to the wrong value.

    Reported-by:
    Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44091
    Signed-off-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Alan Cox
     
  • Commit acfa747b introduced the TTY_HUPPING flag to distinguish
    closed TTY from currently closing ones. The test in tty_set_ldisc
    still remained pointing at the old flag. This causes pppd to
    sometimes lapse into uninterruptible sleep when killed and
    restarted.

    Signed-off-by: Shachar Shemesh
    Signed-off-by: Greg Kroah-Hartman

    Shachar Shemesh
     
  • pch_uart_interrupt() takes priv->port.lock which leads to two recursive
    spinlock calls if low_latency==1 or CONFIG_PREEMPT_RT_FULL=y (one
    otherwise):

    pch_uart_interrupt
    spin_lock_irqsave(priv->port.lock, flags)
    case PCH_UART_IID_RDR_TO (data ready)
    handle_rx_to
    push_rx
    tty_port_tty_get
    spin_lock_irqsave(&port->lock, flags) buf.lock)
    spin_lock_irqsave(&tty->buf.lock)
    disc->ops->receive_buf(tty, char_buf)
    n_tty_receive_buf
    tty->ops->flush_chars()
    uart_flush_chars
    uart_start
    spin_lock_irqsave(&port->lock) lock is always take prior to priv->port.lock when
    taken at the same time.

    V2: Remove inadvertent whitespace change.
    V3: Account for oops_in_progress for the private lock in
    pch_console_write().

    Note: Like the 8250 driver, if a printk is introduced anywhere inside
    the pch_console_write() critical section, the kernel will hang
    on a recursive spinlock on the private lock. The oops case is
    handled by using a trylock in the oops_in_progress case.

    Signed-off-by: Darren Hart
    CC: Tomoya MORINAGA
    CC: Feng Tang
    CC: Alexander Stein
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Darren Hart
     
  • pm_restore_console() is called from the suspend/resume path, and this
    calls vt_move_to_console(), which calls vt_waitactive().

    There's a race in this path which causes the process which requests the
    suspend to sleep indefinitely waiting for an event which already
    happened:

    P1 P2
    vt_move_to_console()
    set_console()
    schedule_console_callback()
    vt_waitactive()
    check n == fg_console +1
    console_callback()
    switch_screen()
    vt_event_post() // no waiters

    vt_event_wait() // forever

    Fix the race by ensuring we're registered for the event before we check
    if it's already completed.

    Signed-off-by: Rabin Vincent
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Rabin Vincent
     
  • This patch adds a "compatible" string for the new 8250 UART type PORT_LPC3220.
    This is necessary for initializing LPC32xx UARTs via DT.

    Signed-off-by: Roland Stigge
    Signed-off-by: Greg Kroah-Hartman

    Roland Stigge
     
  • LPC32xx has "Standard" UARTs that are actually 16550A compatible but have
    bigger FIFOs. Since the already supported 16X50 line still doesn't match here,
    we agreed on adding a new type.

    Signed-off-by: Roland Stigge
    Acked-by: Alan Cox
    Acked-by: Arnd Bergmann
    Signed-off-by: Greg Kroah-Hartman

    Roland Stigge
     
  • Currently, serial drivers don't report buffer overruns. When a buffer overrun
    occurs, tty_insert_flip_char returns 0, and no attempt is made to insert that
    same character again (i.e. it is lost). This patch reports buffer overruns via
    the buf_overrun field in the port's icount structure.

    Signed-off-by: Corbin Atkinson
    Cc: Jiri Slaby
    Cc: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Corbin
     
  • port->baudclk_rate should be compared to the rate of port->baudclk,
    because port->baudclk_rate was assigned as the rate of port->baudclk previously.
    So to check that the current baudclk rate is same as previous rate,
    the target of comparison sholud be the rate of port->baudclk.

    Signed-off-by: Jun-Ho, Yoon
    Signed-off-by: Kyoungil Kim
    Signed-off-by: Greg Kroah-Hartman

    Kyoungil Kim
     

22 Jul, 2012

7 commits

  • Linus Torvalds
     
  • The SYSTEM_SUSPEND_DISK system state is never used, so drop it.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Merge emailed kgdb dmesg fixups patches from Anton Vorontsov:
    "The dmesg command appears to be broken after the printk rework. The
    old logic in the kdb code makes no sense in terms of current
    printk/logging storage format, and KDB simply hangs forever upon
    entering 'dmesg' command.

    The first patch revives the command by switching to kmsg_dumper
    iterator. As a side-effect, the code is now much more simpler.

    A few changes were needed in the printk.c: we needed unlocked variant
    of the kmsg_dumper iterator, but these can surely wait for 3.6.

    It's probably too late even for the first patch to go to 3.5, but I'll
    try to convince otherwise. :-) Here we go:

    - The current code is broken for sure, and has no hope to work at
    all. It is a regression
    - The new code works for me, and probably works for everyone else;
    - If it compiles (and I urge everyone to compile-test it on your
    setup), it hardly can make things worse."

    * Merge emailed patches from Anton Vorontsov: (4 commits)
    kdb: Switch to nolock variants of kmsg_dump functions
    printk: Implement some unlocked kmsg_dump functions
    printk: Remove kdb_syslog_data
    kdb: Revive dmesg command

    Linus Torvalds
     
  • The locked variants are prone to deadlocks (suppose we got to the
    debugger w/ the logbuf lock held), so let's switch to nolock variants.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • If used from KDB, the locked variants are prone to deadlocks (suppose we
    got to the debugger w/ the logbuf lock held).

    So, we have to implement a few routines that grab no logbuf lock.

    Yet we don't need these functions in modules, so we don't export them.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • The function is no longer needed, so remove it.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • The kgdb dmesg command is broken after the printk rework. The old logic
    in kdb code makes no sense in terms of current printk/logging storage
    format, and KDB simply hangs forever.

    This patch revives the command by switching to kmsg_dumper iterator.

    The code is now much more simpler and shorter.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     

21 Jul, 2012

4 commits

  • Pull late MIPS fixes from Ralf Baechle:
    "This fixes a number of lose ends in the MIPS code and various bug
    fixes.

    Aside of dropping some patch that should not be in this pull request
    everything has sat in -next for quite a while and there are no known
    issues.

    The biggest patch in this patch set moves the allocation of an array
    that is aliased to a function (for runtime generated code) to
    assembler code. This avoids an issue with certain toolchains when
    building for microMIPS."

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (35 commits)
    MIPS: PCI: Move fixups from __init to __devinit.
    MIPS: Fix bug.h MIPS build regression
    MIPS: sync-r4k: remove redundant irq operation
    MIPS: smp: Warn on too early irq enable
    MIPS: call set_cpu_online() on cpu being brought up with irq disabled
    MIPS: call ->smp_finish() a little late
    MIPS: Yosemite: delay irq enable to ->smp_finish()
    MIPS: SMTC: delay irq enable to ->smp_finish()
    MIPS: BMIPS: delay irq enable to ->smp_finish()
    MIPS: Octeon: delay enable irq to ->smp_finish()
    MIPS: Oprofile: Fix build as a module.
    MIPS: BCM63XX: Fix BCM6368 IPSec clock bit
    MIPS: perf: Fix build error caused by unused counters_per_cpu_to_total()
    MIPS: Fix Magic SysRq L kernel crash.
    MIPS: BMIPS: Fix duplicate header inclusion.
    mips: mark const init data with __initconst instead of __initdata
    MIPS: cmpxchg.h: Add missing include
    MIPS: Malta may also be equipped with MIPS64 R2 processors.
    MIPS: Fix typo multipy -> multiply
    MIPS: Cavium: Fix duplicate ARCH_SPARSEMEM_ENABLE in kconfig.
    ...

    Linus Torvalds
     
  • Pull device-mapper discard fixes from Alasdair G Kergon:
    - avoid a crash in dm-raid1 when discards coincide with mirror
    recovery;
    - avoid discarding shared data that's still needed in dm-thin;
    - don't guarantee that discarded blocks will be wiped in dm-raid1.

    * tag 'dm-3.5-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:
    dm raid1: set discard_zeroes_data_unsupported
    dm thin: do not send discards to shared blocks
    dm raid1: fix crash with mirror recovery and discard

    Linus Torvalds
     
  • Pull pnfs/ore fixes from Boaz Harrosh:
    "These are catastrophic fixes to the pnfs objects-layout that were just
    discovered. They are also destined for @stable.

    I have found these and worked on them at around RC1 time but
    unfortunately went to the hospital for kidney stones and had a very
    slow recovery. I refrained from sending them as is, before proper
    testing, and surly I have found a bug just yesterday.

    So now they are all well tested, and have my sign-off. Other then
    fixing the problem at hand, and assuming there are no bugs at the new
    code, there is low risk to any surrounding code. And in anyway they
    affect only these paths that are now broken. That is RAID5 in pnfs
    objects-layout code. It does also affect exofs (which was not broken)
    but I have tested exofs and it is lower priority then objects-layout
    because no one is using exofs, but objects-layout has lots of users."

    * 'for-linus' of git://git.open-osd.org/linux-open-osd:
    pnfs-obj: Fix __r4w_get_page when offset is beyond i_size
    pnfs-obj: don't leak objio_state if ore_write/read fails
    ore: Unlock r4w pages in exact reverse order of locking
    ore: Remove support of partial IO request (NFS crash)
    ore: Fix NFS crash by supporting any unaligned RAID IO

    Linus Torvalds
     
  • Pull UBIFS free space fix-up bugfix from Artem Bityutskiy:
    "It's been reported already twice recently:

    http://lists.infradead.org/pipermail/linux-mtd/2012-May/041408.html
    http://lists.infradead.org/pipermail/linux-mtd/2012-June/042422.html

    and we finally have the fix. I am quite confident the fix is correct
    because I could reproduce the problem with nandsim and verify the fix.
    It was also verified by Iwo (the reporter).

    I am also confident that this is OK to merge the fix so late because
    this patch affects only the fixup functionality, which is not used by
    most users."

    * tag 'upstream-3.5-rc8' of git://git.infradead.org/linux-ubifs:
    UBIFS: fix a bug in empty space fix-up

    Linus Torvalds
     

20 Jul, 2012

10 commits

  • We can't guarantee that REQ_DISCARD on dm-mirror zeroes the data even if
    the underlying disks support zero on discard. So this patch sets
    ti->discard_zeroes_data_unsupported.

    For example, if the mirror is in the process of resynchronizing, it may
    happen that kcopyd reads a piece of data, then discard is sent on the
    same area and then kcopyd writes the piece of data to another leg.
    Consequently, the data is not zeroed.

    The flag was made available by commit 983c7db347db8ce2d8453fd1d89b7a4bb6920d56
    (dm crypt: always disable discard_zeroes_data).

    Signed-off-by: Mikulas Patocka
    Cc: stable@kernel.org
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • When process_discard receives a partial discard that doesn't cover a
    full block, it sends this discard down to that block. Unfortunately, the
    block can be shared and the discard would corrupt the other snapshots
    sharing this block.

    This patch detects block sharing and ends the discard with success when
    sending it to the shared block.

    The above change means that if the device supports discard it can't be
    guaranteed that a discard request zeroes data. Therefore, we set
    ti->discard_zeroes_data_unsupported.

    Thin target discard support with this bug arrived in commit
    104655fd4dcebd50068ef30253a001da72e3a081 (dm thin: support discards).

    Signed-off-by: Mikulas Patocka
    Cc: stable@kernel.org
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • This patch fixes a crash when a discard request is sent during mirror
    recovery.

    Firstly, some background. Generally, the following sequence happens during
    mirror synchronization:
    - function do_recovery is called
    - do_recovery calls dm_rh_recovery_prepare
    - dm_rh_recovery_prepare uses a semaphore to limit the number
    simultaneously recovered regions (by default the semaphore value is 1,
    so only one region at a time is recovered)
    - dm_rh_recovery_prepare calls __rh_recovery_prepare,
    __rh_recovery_prepare asks the log driver for the next region to
    recover. Then, it sets the region state to DM_RH_RECOVERING. If there
    are no pending I/Os on this region, the region is added to
    quiesced_regions list. If there are pending I/Os, the region is not
    added to any list. It is added to the quiesced_regions list later (by
    dm_rh_dec function) when all I/Os finish.
    - when the region is on quiesced_regions list, there are no I/Os in
    flight on this region. The region is popped from the list in
    dm_rh_recovery_start function. Then, a kcopyd job is started in the
    recover function.
    - when the kcopyd job finishes, recovery_complete is called. It calls
    dm_rh_recovery_end. dm_rh_recovery_end adds the region to
    recovered_regions or failed_recovered_regions list (depending on
    whether the copy operation was successful or not).

    The above mechanism assumes that if the region is in DM_RH_RECOVERING
    state, no new I/Os are started on this region. When I/O is started,
    dm_rh_inc_pending is called, which increases reg->pending count. When
    I/O is finished, dm_rh_dec is called. It decreases reg->pending count.
    If the count is zero and the region was in DM_RH_RECOVERING state,
    dm_rh_dec adds it to the quiesced_regions list.

    Consequently, if we call dm_rh_inc_pending/dm_rh_dec while the region is
    in DM_RH_RECOVERING state, it could be added to quiesced_regions list
    multiple times or it could be added to this list when kcopyd is copying
    data (it is assumed that the region is not on any list while kcopyd does
    its jobs). This results in memory corruption and crash.

    There already exist bypasses for REQ_FLUSH requests: REQ_FLUSH requests
    do not belong to any region, so they are always added to the sync list
    in do_writes. dm_rh_inc_pending does not increase count for REQ_FLUSH
    requests. In mirror_end_io, dm_rh_dec is never called for REQ_FLUSH
    requests. These bypasses avoid the crash possibility described above.

    These bypasses were improperly implemented for REQ_DISCARD when
    the mirror target gained discard support in commit
    5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4 (dm raid1: support discard).

    In do_writes, REQ_DISCARD requests is always added to the sync queue and
    immediately dispatched (even if the region is in DM_RH_RECOVERING). However,
    dm_rh_inc and dm_rh_dec is called for REQ_DISCARD resusts. So it violates the
    rule that no I/Os are started on DM_RH_RECOVERING regions, and causes the list
    corruption described above.

    This patch changes it so that REQ_DISCARD requests follow the same path
    as REQ_FLUSH. This avoids the crash.

    Reference: https://bugzilla.redhat.com/837607

    Signed-off-by: Mikulas Patocka
    Cc: stable@kernel.org
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • It is very common for the end of the file to be unaligned on
    stripe size. But since we know it's beyond file's end then
    the XOR should be preformed with all zeros.

    Old code used to just read zeros out of the OSD devices, which is a great
    waist. But what scares me more about this situation is that, we now have
    pages attached to the file's mapping that are beyond i_size. I don't
    like the kind of bugs this calls for.

    Fix both birds, by returning a global zero_page, if offset is beyond
    i_size.

    TODO:
    Change the API to ->__r4w_get_page() so a NULL can be
    returned without being considered as error, since XOR API
    treats NULL entries as zero_pages.

    [Bug since 3.2. Should apply the same way to all Kernels since]
    CC: Stable Tree
    Signed-off-by: Boaz Harrosh

    Boaz Harrosh
     
  • [Bug since 3.2 Kernel]
    CC: Stable Tree
    Signed-off-by: Boaz Harrosh

    Boaz Harrosh
     
  • The read-4-write pages are locked in address ascending order.
    But where unlocked in a way easiest for coding. Fix that,
    locks should be released in opposite order of locking, .i.e
    descending address order.

    I have not hit this dead-lock. It was found by inspecting the
    dbug print-outs. I suspect there is an higher lock at caller that
    protects us, but fix it regardless.

    Signed-off-by: Boaz Harrosh

    Boaz Harrosh
     
  • Do to OOM situations the ore might fail to allocate all resources
    needed for IO of the full request. If some progress was possible
    it would proceed with a partial/short request, for the sake of
    forward progress.

    Since this crashes NFS-core and exofs is just fine without it just
    remove this contraption, and fail.

    TODO:
    Support real forward progress with some reserved allocations
    of resources, such as mem pools and/or bio_sets

    [Bug since 3.2 Kernel]
    CC: Stable Tree
    CC: Benny Halevy
    Signed-off-by: Boaz Harrosh

    Boaz Harrosh
     
  • In RAID_5/6 We used to not permit an IO that it's end
    byte is not stripe_size aligned and spans more than one stripe.
    .i.e the caller must check if after submission the actual
    transferred bytes is shorter, and would need to resubmit
    a new IO with the remainder.

    Exofs supports this, and NFS was supposed to support this
    as well with it's short write mechanism. But late testing has
    exposed a CRASH when this is used with none-RPC layout-drivers.

    The change at NFS is deep and risky, in it's place the fix
    at ORE to lift the limitation is actually clean and simple.
    So here it is below.

    The principal here is that in the case of unaligned IO on
    both ends, beginning and end, we will send two read requests
    one like old code, before the calculation of the first stripe,
    and also a new site, before the calculation of the last stripe.
    If any "boundary" is aligned or the complete IO is within a single
    stripe. we do a single read like before.

    The code is clean and simple by splitting the old _read_4_write
    into 3 even parts:
    1._read_4_write_first_stripe
    2. _read_4_write_last_stripe
    3. _read_4_write_execute

    And calling 1+3 at the same place as before. 2+3 before last
    stripe, and in the case of all in a single stripe then 1+2+3
    is preformed additively.

    Why did I not think of it before. Well I had a strike of
    genius because I have stared at this code for 2 years, and did
    not find this simple solution, til today. Not that I did not try.

    This solution is much better for NFS than the previous supposedly
    solution because the short write was dealt with out-of-band after
    IO_done, which would cause for a seeky IO pattern where as in here
    we execute in order. At both solutions we do 2 separate reads, only
    here we do it within a single IO request. (And actually combine two
    writes into a single submission)

    NFS/exofs code need not change since the ORE API communicates the new
    shorter length on return, what will happen is that this case would not
    occur anymore.

    hurray!!

    [Stable this is an NFS bug since 3.2 Kernel should apply cleanly]
    CC: Stable Tree
    Signed-off-by: Boaz Harrosh

    Boaz Harrosh
     
  • UBIFS has a feature called "empty space fix-up" which is a quirk to work-around
    limitations of dumb flasher programs. Namely, of those flashers that are unable
    to skip NAND pages full of 0xFFs while flashing, resulting in empty space at
    the end of half-filled eraseblocks to be unusable for UBIFS. This feature is
    relatively new (introduced in v3.0).

    The fix-up routine (fixup_free_space()) is executed only once at the very first
    mount if the superblock has the 'space_fixup' flag set (can be done with -F
    option of mkfs.ubifs). It basically reads all the UBIFS data and metadata and
    writes it back to the same LEB. The routine assumes the image is pristine and
    does not have anything in the journal.

    There was a bug in 'fixup_free_space()' where it fixed up the log incorrectly.
    All but one LEB of the log of a pristine file-system are empty. And one
    contains just a commit start node. And 'fixup_free_space()' just unmapped this
    LEB, which resulted in wiping the commit start node. As a result, some users
    were unable to mount the file-system next time with the following symptom:

    UBIFS error (pid 1): replay_log_leb: first log node at LEB 3:0 is not CS node
    UBIFS error (pid 1): replay_log_leb: log error detected while replaying the log at LEB 3:0

    The root-cause of this bug was that 'fixup_free_space()' wrongly assumed
    that the beginning of empty space in the log head (c->lhead_offs) was known
    on mount. However, it is not the case - it was always 0. UBIFS does not store
    in it the master node and finds out by scanning the log on every mount.

    The fix is simple - just pass commit start node size instead of 0 to
    'fixup_leb()'.

    Signed-off-by: Artem Bityutskiy
    Cc: stable@vger.kernel.org [v3.0+]
    Reported-by: Iwo Mergler
    Tested-by: Iwo Mergler
    Reported-by: James Nute

    Artem Bityutskiy
     
  • Pull last minute Ceph fixes from Sage Weil:
    "The important one fixes a bug in the socket failure handling behavior
    that was turned up in some recent failure injection testing. The
    other two are minor bug fixes."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
    rbd: endian bug in rbd_req_cb()
    rbd: Fix ceph_snap_context size calculation
    libceph: fix messenger retry

    Linus Torvalds
     

19 Jul, 2012

10 commits

  • Pull three md bugfixes from NeilBrown:
    "One of the bugs was introduced in 3.5-rc1. Others have been there for
    longer."

    * tag 'md-3.5-fixes' of git://neil.brown.name/md:
    md/raid1: close some possible races on write errors during resync
    md: avoid crash when stopping md array races with closing other open fds.
    md: fix bug in handling of new_data_offset

    Linus Torvalds
     
  • Pull networking changes from David Miller:
    "Ok, we should be good to go now"

    1) We have to statically initialize the init_net device list head rather
    than do so in an initcall, otherwise netprio_cgroup crashes if it's
    built statically rather than modular (Mark D. Rustad)

    2) Fix SKB null oopser in CIPSO ipv4 option processing (Paul Moore)

    3) Qlogic maintainers update (Anirban Chakraborty)

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net: Statically initialize init_net.dev_base_head
    MAINTAINERS: Changes in qlcnic and qlge maintainers list
    cipso: don't follow a NULL pointer when setsockopt() is called

    Linus Torvalds
     
  • Pull HID update from Jiri Kosina:
    "A final round of changes for HID for 3.5: just device ID additions."

    * 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    HID: hid-multitouch: add support for Zytronic panels
    HID: add Sennheiser BTD500USB device support
    HID: add battery quirk for Apple Wireless ANSI

    Linus Torvalds
     
  • The strcpy was being used to set the name of the board. Since the
    destination char* was read-only and the name is set statically at
    compile time; this was both wrong and redundant.

    The type of char* is changed to const char* to prevent future errors.

    Reported-by: Radek Masin
    Signed-off-by: Ezequiel Garcia
    [ Taking directly due to vacations - Linus ]
    Signed-off-by: Linus Torvalds

    Ezequiel Garcia
     
  • Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     
  • Fixups are executed once the pci-device is found which is during boot
    process so __init seems fine as long as the platform does not support
    hotplug.
    However it is possible to remove the PCI bus at run time and have it
    rediscovered again via "echo 1 > /sys/bus/pci/rescan" and this will call
    the fixups again.

    [ralf@linux-mips.org: Made piixirqmap[] in malta_piix_func0_fixup()
    __initdata.]

    Signed-off-by: Sebastian Andrzej Siewior
    Cc: linux-mips@linux-mips.org
    Signed-off-by: Ralf Baechle

    Sebastian Andrzej Siewior
     
  • Commit: 3777808873b0c49c5cf27e44c948dfb02675d578 [bug.h: need linux/kernel.h
    for TAINT_WARN.] breaks all MIPS builds.

    CC arch/mips/kernel/machine_kexec.o
    In file included from include/linux/kernel.h:20:0,
    from include/asm-generic/bug.h:35,
    from /home/yuasa/src/linux/kernel/git/linux-2.6/arch/mips/include/asm/bug.h:41,
    from /home/yuasa/src/linux/kernel/git/linux-2.6/arch/mips/include/asm/bitops.h:20,
    from include/linux/bitops.h:22,
    from include/linux/signal.h:38,
    from include/linux/elfcore.h:5,
    from include/linux/kexec.h:60,
    from arch/mips/kernel/machine_kexec.c:9:
    include/linux/log2.h: In function '__ilog2_u32':
    include/linux/log2.h:34:2: error: implicit declaration of function 'fls' [-Werror=implicit-function-declaration]
    include/linux/log2.h: In function '__ilog2_u64':
    include/linux/log2.h:42:2: error: implicit declaration of function 'fls64' [-Werror=implicit-function-declaration]
    include/linux/log2.h: In function '__roundup_pow_of_two':
    include/linux/log2.h:63:2: error: implicit declaration of function 'fls_long' [-Werror=implicit-function-declaration]
    In file included from include/linux/bitops.h:22:0,
    from include/linux/signal.h:38,
    from include/linux/elfcore.h:5,
    from include/linux/kexec.h:60,
    from arch/mips/kernel/machine_kexec.c:9:
    /home/yuasa/src/linux/kernel/git/linux-2.6/arch/mips/include/asm/bitops.h: At top level:
    /home/yuasa/src/linux/kernel/git/linux-2.6/arch/mips/include/asm/bitops.h:615:19: error: static declaration of 'fls' follows non-static declaration
    include/linux/log2.h:34:9: note: previous implicit declaration of 'fls' was here
    In file included from /home/yuasa/src/linux/kernel/git/linux-2.6/arch/mips/include/asm/bitops.h:651:0,
    from include/linux/bitops.h:22,
    from include/linux/signal.h:38,
    from include/linux/elfcore.h:5,
    from include/linux/kexec.h:60,
    from arch/mips/kernel/machine_kexec.c:9:
    include/asm-generic/bitops/fls64.h:18:28: error: static declaration of 'fls64' follows non-static declaration
    include/linux/log2.h:42:9: note: previous implicit declaration of 'fls64' was here
    In file included from include/linux/signal.h:38:0,
    from include/linux/elfcore.h:5,
    from include/linux/kexec.h:60,
    from arch/mips/kernel/machine_kexec.c:9:
    include/linux/bitops.h:160:24: error: conflicting types for 'fls_long'
    include/linux/log2.h:63:16: note: previous implicit declaration of 'fls_long' was here
    cc1: all warnings being treated as errors

    make[2]: *** [arch/mips/kernel/machine_kexec.o] Error 1

    Signed-off-by: Yoichi Yuasa
    Cc: Geert Uytterhoeven
    Cc: Paul Mundt
    Cc: yuasa@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Linuxppc-dev
    Cc: Linux MIPS Mailing List
    Cc: Linux-sh list
    Cc: Chris Zankel
    Patchwork: https://patchwork.linux-mips.org/patch/4000/
    Tested-by: John Crispin
    Signed-off-by: Ralf Baechle

    Yoichi Yuasa
     
  • Since we have delayed irq enabling to ->smp_finish()

    Signed-off-by: Yong Zhang
    Cc: Sergei Shtylyov
    Cc: David Daney
    Acked-by: David Daney
    Signed-off-by: Ralf Baechle

    Yong Zhang
     
  • Just to catch a potential issue.

    Signed-off-by: Yong Zhang
    Cc: Sergei Shtylyov
    Cc: David Daney
    Acked-by: David Daney
    Patchwork: https://patchwork.linux-mips.org/patch/3852/
    Signed-off-by: Ralf Baechle

    Yong Zhang
     
  • To prevent a problem as commit 5fbd036b [sched: Cleanup cpu_active madness]
    and commit 2baab4e9 [sched: Fix select_fallback_rq() vs cpu_active/cpu_online]
    try to resolve, move set_cpu_online() to the brought up CPU and with irq
    disabled.

    Signed-off-by: Yong Zhang
    Cc: Sergei Shtylyov
    Cc: David Daney
    Acked-by: David Daney
    Patchwork: https://patchwork.linux-mips.org/patch/3851/
    Signed-off-by: Ralf Baechle

    Yong Zhang