09 Sep, 2009

3 commits

  • Andy Whitcroft reported an oops in aoe triggered by use of an
    incorrectly initialised request_queue object:

    [ 2645.959090] kobject '' (ffff880059ca22c0): tried to add
    an uninitialized object, something is seriously wrong.
    [ 2645.959104] Pid: 6, comm: events/0 Not tainted 2.6.31-5-generic #24-Ubuntu
    [ 2645.959107] Call Trace:
    [ 2645.959139] [] kobject_add+0x5f/0x70
    [ 2645.959151] [] blk_register_queue+0x8b/0xf0
    [ 2645.959155] [] add_disk+0x8f/0x160
    [ 2645.959161] [] aoeblk_gdalloc+0x164/0x1c0 [aoe]

    The request queue of an aoe device is not used but can be allocated in
    code that does not sleep.

    Bruno bisected this regression down to

    cd43e26f071524647e660706b784ebcbefbd2e44

    block: Expose stacked device queues in sysfs

    "This seems to generate /sys/block/$device/queue and its contents for
    everyone who is using queues, not just for those queues that have a
    non-NULL queue->request_fn."

    Addresses http://bugs.launchpad.net/bugs/410198
    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=13942

    Note that embedding a queue inside another object has always been
    an illegal construct, since the queues are reference counted and
    must persist until the last reference is dropped. So aoe was
    always buggy in this respect (Jens).

    Signed-off-by: Ed Cashin
    Cc: Andy Whitcroft
    Cc: "Rafael J. Wysocki"
    Cc: Bruno Premont
    Cc: Martin K. Petersen
    Cc: Andrew Morton
    Signed-off-by: Jens Axboe

    Ed Cashin
     
  • Reinette Chatre reports a frozen system (with blinking keyboard LEDs)
    when switching from graphics mode to the text console, or when
    suspending (which does the same thing). With netconsole, the oops
    turned out to be

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000084
    IP: [] i915_driver_irq_handler+0x26b/0xd20 [i915]

    and it's due to the i915_gem.c code doing drm_irq_uninstall() after
    having done i915_gem_idle(). And the i915_gem_idle() path will do

    i915_gem_idle() ->
    i915_gem_cleanup_ringbuffer() ->
    i915_gem_cleanup_hws() ->
    dev_priv->hw_status_page = NULL;

    but if an i915 interrupt comes in after this stage, it may want to
    access that hw_status_page, and gets the above NULL pointer dereference.

    And since the NULL pointer dereference happens from within an interrupt,
    and with the screen still in graphics mode, the common end result is
    simply a silently hung machine.

    Fix it by simply uninstalling the irq handler before idling rather than
    after. Fixes

    http://bugzilla.kernel.org/show_bug.cgi?id=13819

    Reported-and-tested-by: Reinette Chatre
    Acked-by: Jesse Barnes
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • eDP is exclusive connector too, and add missing crtc_mask
    setting for TV.

    This fixes

    http://bugzilla.kernel.org/show_bug.cgi?id=14139

    Signed-off-by: Zhenyu Wang
    Reported-and-tested-by: Carlos R. Mafra
    Signed-off-by: Linus Torvalds

    Zhenyu Wang
     

08 Sep, 2009

4 commits


07 Sep, 2009

1 commit


06 Sep, 2009

10 commits

  • Reported by Michael Guntsche

    --------------------
    Commit
    38bddf04bcfe661fbdab94888c3b72c32f6873b3 gianfar: gfar_remove needs to call unregister_netdev()

    breaks the build of the gianfar driver because "dev" is undefined in
    this function. To quickly test rc9 I changed this to priv->ndev but I do
    not know if this is the correct one.
    --------------------

    Signed-off-by: David S. Miller

    David S. Miller
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: sbp2: fix freeing of unallocated memory
    firewire: ohci: fix Ricoh R5C832, video reception
    firewire: ohci: fix Agere FW643 and multiple cameras
    firewire: core: fix crash in iso resource management

    Linus Torvalds
     
  • * git://git.infradead.org/~dwmw2/mtd-2.6.31:
    JFFS2: add missing verify buffer allocation/deallocation
    mtd: nftl: fix offset alignments
    mtd: nftl: write support is broken
    mtd: m25p80: fix null pointer dereference bug

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
    tc: Fix unitialized kernel memory leak
    pkt_sched: Revert tasklet_hrtimer changes.
    net: sk_free() should be allowed right after sk_alloc()
    gianfar: gfar_remove needs to call unregister_netdev()
    ipw2200: firmware DMA loading rework

    Linus Torvalds
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Re-enable cpufreq suspend and resume code

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:
    dm snapshot: fix on disk chunk size validation
    dm exception store: split set_chunk_size
    dm snapshot: fix header corruption race on invalidation
    dm snapshot: refactor zero_disk_area to use chunk_io
    dm log: userspace add luid to distinguish between concurrent log instances
    dm raid1: do not allow log_failure variable to unset after being set
    dm log: remove incorrect field from userspace table output
    dm log: fix userspace status output
    dm stripe: expose correct io hints
    dm table: add more context to terse warning messages
    dm table: fix queue_limit checking device iterator
    dm snapshot: implement iterate devices
    dm multipath: fix oops when request based io fails when no paths

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI SR-IOV: correct broken resource alignment calculations

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: atkbd - add Compaq Presario R4000-series repeat quirk
    Input: i8042 - add Acer Aspire 5536 to the nomux list

    Linus Torvalds
     
  • The whole write-room thing is something that is up to the _caller_ to
    worry about, not the pty layer itself. The total buffer space will
    still be limited by the buffering routines themselves, so there is no
    advantage or need in having pty_write() artificially limit the size
    somehow.

    And what happened was that the caller (the n_tty line discipline, in
    this case) may have verified that there is room for 2 bytes to be
    written (for NL -> CRNL expansion), and it used to then do those writes
    as two single-byte writes. And if the first byte written (CR) then
    caused a new tty buffer to be allocated, pty_space() may have returned
    zero when trying to write the second byte (LF), and then incorrectly
    failed the write - leading to a lost newline character.

    This should finally fix

    http://bugzilla.kernel.org/show_bug.cgi?id=14015

    Reported-by: Mikael Pettersson
    Acked-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • When translating CR to CRNL in the n_tty line discipline, we did it as
    two tty_put_char() calls. Which works, but is stupid, and has caused
    problems before too with bad interactions with the write_room() logic.
    The generic USB serial driver had that problem, for example.

    Now the pty layer had similar issues after being moved to the generic
    tty buffering code (in commit d945cb9cce20ac7143c2de8d88b187f62db99bdc:
    "pty: Rework the pty layer to use the normal buffering logic").

    So stop doing the silly separate two writes, and do it as a single write
    instead. That's what the n_tty layer already does for the space
    expansion of tabs (XTABS), and it means that we'll now always have just
    a single write for the CRNL to match the single 'tty_write_room()' test,
    which hopefully means that the next time somebody screws up buffering,
    it won't cause weeks of debugging.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

05 Sep, 2009

17 commits

  • If a target writes invalid status (typically status of a command that
    already timed out), firewire-sbp2 attempts to put away an ORB that
    doesn't exist. https://bugzilla.redhat.com/show_bug.cgi?id=519772

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • In dual-buffer DMA mode, no video frames are ever received from R5C832
    by libdc1394. Fallback to packet-per-buffer DMA works reliably.
    http://thread.gmane.org/gmane.linux.kernel.firewire.devel/13393/focus=13476

    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • An Agere FW643 OHCI 1.1 card works fine for video reception from one
    camera but fails early if receiving from two cameras. After a short
    while, no IR IRQ events occur and the context control register does not
    react anymore. This happens regardless whether both IR DMA contexts are
    dual-buffer or one is dual-buffer and the other packet-per-buffer.

    This can be worked around by disabling dual buffer DMA mode entirely.
    http://sourceforge.net/mailarchive/message.php?msg_name=4A7C0594.2020208%40gmail.com
    (Reported by Samuel Audet.)

    In another report (by Jonathan Cameron), an FW643 works OK with two
    cameras in dual buffer mode. Whether this is due to different chip
    revisions or different usage patterns (different video formats) is not
    yet clear. However, as far as the current capabilities of
    firewire-core's isochronous I/O interface are concerned, simply
    switching off dual-buffer on non-working and working FW643s alike is not
    a problem in practice. We only need to revisit this issue if we are
    going to enhance the interface, e.g. so that applications can explicitly
    choose modes.

    Reported-by: Samuel Audet
    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This fixes a regression due to post 2.6.30 commit "firewire: core: do
    not DMA-map stack addresses" 6fdc03709433ccc2005f0f593ae9d9dd04f7b485.

    As David Moore noted, a previously correct sizeof() expression became
    wrong since the commit changed its argument from an array to a pointer.
    This resulted in an oops in ohci_cancel_packet in the shared workqueue
    thread's context when an isochronous resource was to be freed.

    Reported-by: Jonathan Cameron
    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Fix some problems seen in the chunk size processing when activating a
    pre-existing snapshot.

    For a new snapshot, the chunk size can either be supplied by the creator
    or a default value can be used. For an existing snapshot, the
    chunk size in the snapshot header on disk should always be used.

    If someone attempts to load an existing snapshot and has the 'default
    chunk size' option set, the kernel uses its default value even when it
    is incorrect for the snapshot being loaded. This patch ensures the
    correct on-disk value is always used.

    Secondly, when the code does use the chunk size stored on the disk it is
    prudent to revalidate it, so the code can exit cleanly if it got
    corrupted as happened in
    https://bugzilla.redhat.com/show_bug.cgi?id=461506 .

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

    Mikulas Patocka
     
  • Break the function set_chunk_size to two functions in preparation for
    the fix in the following patch.

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

    Mikulas Patocka
     
  • If a persistent snapshot fills up, a race can corrupt the on-disk header
    which causes a crash on any future attempt to activate the snapshot
    (typically while booting). This patch fixes the race.

    When the snapshot overflows, __invalidate_snapshot is called, which calls
    snapshot store method drop_snapshot. It goes to persistent_drop_snapshot that
    calls write_header. write_header constructs the new header in the "area"
    location.

    Concurrently, an existing kcopyd job may finish, call copy_callback
    and commit_exception method, that goes to persistent_commit_exception.
    persistent_commit_exception doesn't do locking, relying on the fact that
    callbacks are single-threaded, but it can race with snapshot invalidation and
    overwrite the header that is just being written while the snapshot is being
    invalidated.

    The result of this race is a corrupted header being written that can
    lead to a crash on further reactivation (if chunk_size is zero in the
    corrupted header).

    The fix is to use separate memory areas for each.

    See the bug: https://bugzilla.redhat.com/show_bug.cgi?id=461506

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

    Mikulas Patocka
     
  • Refactor chunk_io to prepare for the fix in the following patch.

    Pass an area pointer to chunk_io and simplify zero_disk_area to use
    chunk_io. No functional change.

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

    Mikulas Patocka
     
  • Device-mapper userspace logs (like the clustered log) are
    identified by a universally unique identifier (UUID). This
    identifier is used to associate requests from the kernel to
    a specific log in userspace. The UUID must be unique everywhere,
    since multiple machines may use this identifier when communicating
    about a particular log, as is the case for cluster logs.

    Sometimes, device-mapper/LVM may re-use a UUID. This is the
    case during pvmoves, when moving from one segment of an LV
    to another, or when resizing a mirror, etc. In these cases,
    a new log is created with the same UUID and loaded in the
    "inactive" slot. When a device-mapper "resume" is issued,
    the "live" table is deactivated and the new "inactive" table
    becomes "live". (The "inactive" table can also be removed
    via a device-mapper 'clear' command.)

    The above two issues were colliding. More than one log was being
    created with the same UUID, and there was no way to distinguish
    between them. So, sometimes the wrong log would be swapped
    out during the exchange.

    The solution is to create a locally unique identifier,
    'luid', to go along with the UUID. This new identifier is used
    to determine exactly which log is being referenced by the kernel
    when the log exchange is made. The identifier is not
    universally safe, but it does not need to be, since
    create/destroy/suspend/resume operations are bound to a specific
    machine; and these are the operations that make up the exchange.

    Signed-off-by: Jonathan Brassow
    Signed-off-by: Alasdair G Kergon

    Jonathan Brassow
     
  • This patch fixes a bug which was triggering a case where the primary leg
    could not be changed on failure even when the mirror was in-sync.

    The case involves the failure of the primary device along with
    the transient failure of the log device. The problem is that
    bios can be put on the 'failures' list (due to log failure)
    before 'fail_mirror' is called due to the primary device failure.
    Normally, this is fine, but if the log device failure is transient,
    a subsequent iteration of the work thread, 'do_mirror', will
    reset 'log_failure'. The 'do_failures' function then resets
    the 'in_sync' variable when processing bios on the failures list.
    The 'in_sync' variable is what is used to determine if the
    primary device can be switched in the event of a failure. Since
    this has been reset, the primary device is incorrectly assumed
    to be not switchable.

    The case has been seen in the cluster mirror context, where one
    machine realizes the log device is dead before the other machines.
    As the responsibilities of the server migrate from one node to
    another (because the mirror is being reconfigured due to the failure),
    the new server may think for a moment that the log device is fine -
    thus resetting the 'log_failure' variable.

    In any case, it is inappropiate for us to reset the 'log_failure'
    variable. The above bug simply illustrates that it can actually
    hurt us.

    Cc: stable@kernel.org
    Signed-off-by: Jonathan Brassow
    Signed-off-by: Alasdair G Kergon

    Jonathan Brassow
     
  • The output of 'dmsetup table' includes an internal field that should not
    be there. This patch removes it. To make the fix simpler, we first
    reorder a constructor argument

    The 'device size' argument is generated internally. Currently it is
    placed as the last space-separated word of the constructor string.
    However, we need to use a version of the string without this word, so we
    move it to the beginning instead so it is trivial to skip past it.

    We keep a copy of the arguments passed to userspace for creating a log,
    just in case we need to resend them. These are the same arguments that
    are desired in the STATUSTYPE_TABLE request, except for one. When
    creating the userspace log, the userspace daemon must know the size of
    the mirror, so that is added to the arguments given in the constructor
    table. We were printing this extra argument out as well, which is a
    mistake.

    Signed-off-by: Jonathan Brassow
    Signed-off-by: Alasdair G Kergon

    Jonathan Brassow
     
  • Fix 'dmsetup table' output.

    There is a missing ' ' at the end of the string causing two
    words to run together.

    Signed-off-by: Jonathan Brassow
    Signed-off-by: Alasdair G Kergon

    Jonathan Brassow
     
  • Set sensible I/O hints for striped DM devices in the topology
    infrastructure added for 2.6.31 for userspace tools to
    obtain via sysfs.

    Add .io_hints to 'struct target_type' to allow the I/O hints portion
    (io_min and io_opt) of the 'struct queue_limits' to be set by each
    target and implement this for dm-stripe.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • A couple of recent warning messages make it difficult for the reader to
    determine exactly what is wrong. This patch adds more information to
    those messages.

    The messages were added by these commits:
    5dea271b6d87bd1d79a59c1d5baac2596a841c37 ("dm table: pass correct dev area size
    to device_area_is_valid")
    ea9df47cc92573b159ef3b4fda516c32cba9c4fd ("dm table: fix blk_stack_limits arg
    to use bytes not sectors")

    The patch also corrects references to logical_block_size in printk format
    strings from %hu to %u.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • The logic to check for valid device areas is inverted relative to proper
    use with iterate_devices.

    The iterate_devices method calls its callback for every underlying
    device in the target. If any callback returns non-zero, iterate_devices
    exits immediately. But the callback device_area_is_valid() returns 0 on
    error and 1 on success. The overall effect without is that an error is
    issued only if every device is invalid.

    This patch renames device_area_is_valid to device_area_is_invalid and
    inverts the logic so that one invalid device is sufficient to raise
    an error.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Implement the .iterate_devices for the origin and snapshot targets.
    dm-snapshot's lack of .iterate_devices resulted in the inability to
    properly establish queue_limits for both targets.

    With 4K sector drives: an unfortunate side-effect of not establishing
    proper limits in either targets' DM device was that IO to the devices
    would fail even though both had been created without error.

    Commit af4874e03ed82f050d5872d8c39ce64bf16b5c38 ("dm target:s introduce
    iterate devices fn") in 2.6.31-rc1 should have implemented .iterate_devices
    for dm-snap.c's origin and snapshot targets.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Andrew Morton
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • The patch posted at http://marc.info/?l=dm-devel&m=124539787228784&w=2
    which was merged into cec47e3d4a861e1d942b3a580d0bbef2700d2bb2 ("dm:
    prepare for request based option") introduced a regression in
    request-based dm.

    If map_request() calls dm_kill_unmapped_request() to complete a cloned
    bio without dispatching it, clone->bio is still set when
    dm_end_request() is called and the BUG_ON(clone->bio) is incorrect.

    The patch fixes this bug by freeing bio in dm_end_request() if the clone
    has bio. I've redone my tests to cover all I/O paths and confirmed
    there's no other regression.

    Here is the oops I hit in request-based dm when I do I/O to a multipath
    device which doesn't have any active path nor queue_if_no_path setting:

    ------------[ cut here ]------------
    kernel BUG at /root/2.6.31-rc4.rqdm/drivers/md/dm.c:828!
    invalid opcode: 0000 [#1] SMP
    last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map
    CPU 1
    Modules linked in: autofs4 sunrpc cpufreq_ondemand acpi_cpufreq dm_mirror dm_region_hash dm_log dm_service_time dm_multipath scsi_dh dm_mod video output sbs sbshc battery ac sg sr_mod e1000e button cdrom serio_raw rtc_cmos rtc_core rtc_lib piix lpfc scsi_transport_fc ata_piix libata megaraid_sas sd_mod scsi_mod crc_t10dif ext3 jbd uhci_hcd ohci_hcd ehci_hcd [last unloaded: microcode]
    Pid: 7, comm: ksoftirqd/1 Not tainted 2.6.31-rc4.rqdm #1 Express5800/120Lj [N8100-1417]
    RIP: 0010:[] [] dm_softirq_done+0xbd/0x100 [dm_mod]
    RSP: 0018:ffff8800280a1f08 EFLAGS: 00010282
    RAX: ffffffffa02544e0 RBX: ffff8802aa1111d0 RCX: ffff8802aa1111e0
    RDX: ffff8802ab913e70 RSI: 0000000000000000 RDI: ffff8802ab913e70
    RBP: ffff8800280a1f28 R08: ffffc90005457040 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: 00000000fffffffb
    R13: ffff8802ab913e88 R14: ffff8802ab9c1438 R15: 0000000000000100
    FS: 0000000000000000(0000) GS:ffff88002809e000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: 0000003d54a98640 CR3: 000000029f0a1000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process ksoftirqd/1 (pid: 7, threadinfo ffff8802ae50e000, task ffff8802ae4f8040)
    Stack:
    ffff8800280a1f38 0000000000000020 ffffffff814f30a0 0000000000000004
    ffff8800280a1f58 ffffffff8116b245 ffff8800280a1f38 ffff8800280a1f38
    ffff8800280a1f58 0000000000000001 ffff8800280a1fa8 ffffffff810477bc
    Call Trace:

    [] blk_done_softirq+0x75/0x90
    [] __do_softirq+0xcc/0x210
    [] ? ksoftirqd+0x0/0x110
    [] call_softirq+0x1c/0x50

    [] do_softirq+0x65/0xa0
    [] ? ksoftirqd+0x0/0x110
    [] ksoftirqd+0x70/0x110
    [] kthread+0x99/0xb0
    [] child_rip+0xa/0x20
    [] ? restore_args+0x0/0x30
    [] ? kthread+0x0/0xb0
    [] ? child_rip+0x0/0x20
    Code: 44 89 e6 48 89 df e8 23 fb f2 e0 be 01 00 00 00 4c 89 f7 e8 f6 fd ff ff 5b 41 5c 41 5d 41 5e c9 c3 4c 89 ef e8 85 fe ff ff eb ed 0b eb fe 41 8b 85 dc 00 00 00 48 83 bb 10 01 00 00 00 89 83
    RIP [] dm_softirq_done+0xbd/0x100 [dm_mod]
    RSP
    ---[ end trace 16af0a1d8542da55 ]---

    Signed-off-by: Kiyoshi Ueda
    Signed-off-by: Jun'ichi Nomura
    Signed-off-by: Alasdair G Kergon

    Kiyoshi Ueda
     

04 Sep, 2009

1 commit


03 Sep, 2009

4 commits

  • Arithmetic conversion in the mask computation makes the upper word
    of the second argument passed down to mtd->read_oob(), be always 0
    (assuming 'offs' being a 64-bit signed long long type, and
    'mtd->writesize' being a 32-bit unsigned int type).

    This patch applies over the other one adding masking in nftl_write,
    "nftl: write support is broken".

    Signed-off-by: Dimitri Gorokhovik
    Cc: Tim Gardner
    Cc: Scott James Remnant
    Signed-off-by: David Woodhouse

    Dimitri Gorokhovik
     
  • Write support is broken in NFTL. Fix it.

    Signed-off-by:
    Cc: Tim Gardner
    Cc: Scott James Remnant
    Signed-off-by: Andrew Morton
    Signed-off-by: David Woodhouse

    Dimitri Gorokhovik
     
  • This patch fixes the following oops, observed with MTD_PARTITIONS=n:

    m25p80 spi32766.0: m25p80 (1024 Kbytes)
    Unable to handle kernel paging request for data at address 0x00000008
    Faulting instruction address: 0xc03a54b0
    Oops: Kernel access of bad area, sig: 11 [#1]
    Modules linked in:
    NIP: c03a54b0 LR: c03a5494 CTR: c01e98b8
    REGS: ef82bb60 TRAP: 0300 Not tainted (2.6.31-rc4-00167-g4733fd3)
    MSR: 00029000 CR: 24022022 XER: 20000000
    DEAR: 00000008, ESR: 00000000
    TASK = ef82c000[1] 'swapper' THREAD: ef82a000
    GPR00: 00000000 ef82bc10 ef82c000 0000002e 00001eb8 ffffffff c01e9824 00000036
    GPR08: c054ed40 c0542a08 00001eb8 00004000 22022022 1001a1a0 3ff8fd00 00000000
    GPR16: 00000000 00000001 00000000 00000000 ef82bddc c0530000 efbef500 ef8356d0
    GPR24: 00000000 ef8356d0 00000000 efbf7a00 c0530ec4 ffffffed efbf5300 c0541f98
    NIP [c03a54b0] m25p_probe+0x22c/0x354
    LR [c03a5494] m25p_probe+0x210/0x354
    Call Trace:
    [ef82bc10] [c03a5494] m25p_probe+0x210/0x354 (unreliable)
    [ef82bca0] [c024e37c] spi_drv_probe+0x2c/0x3c
    [ef82bcb0] [c01f1afc] driver_probe_device+0xa4/0x178
    [ef82bcd0] [c01f06e8] bus_for_each_drv+0x6c/0xa8
    [ef82bd00] [c01f1a34] device_attach+0x84/0xa8
    ...

    Signed-off-by: Anton Vorontsov
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Anton Vorontsov
     
  • New variant of IGDNG mobile chip has new host bridge id.

    [anholt: Note that this new PCI ID doesn't impact the DRM, which doesn't
    care about the PCI ID of the bridge]

    Signed-off-by: Zhenyu Wang
    Signed-off-by: Eric Anholt

    Zhenyu Wang