20 Jan, 2009

1 commit

  • Impact: remove potential circular lock dependency with cpu hotplug lock

    This has caused more problems than it solved, with a pile of cpu
    hotplug locking issues.

    Followup patches will get_online_cpus() in callers that need it, but
    if they don't do it they're no worse than before when they were using
    set_cpus_allowed without locking.

    Signed-off-by: Rusty Russell
    Signed-off-by: Mike Travis
    Signed-off-by: Ingo Molnar

    Rusty Russell
     

19 Jan, 2009

3 commits

  • The function setup_cpu_local_masks() has been marked __init, in
    order to remove the following section mismatch messages:

    WARNING: vmlinux.o(.text+0x3c2c7): Section mismatch in reference from the function setup_cpu_local_masks() to the function .init.text:alloc_bootmem_cpumask_var()
    The function setup_cpu_local_masks() references
    the function __init alloc_bootmem_cpumask_var().
    This is often because setup_cpu_local_masks lacks a __init
    annotation or the annotation of alloc_bootmem_cpumask_var is wrong.

    WARNING: vmlinux.o(.text+0x3c2d3): Section mismatch in reference from the function setup_cpu_local_masks() to the function .init.text:alloc_bootmem_cpumask_var()
    The function setup_cpu_local_masks() references
    the function __init alloc_bootmem_cpumask_var().
    This is often because setup_cpu_local_masks lacks a __init
    annotation or the annotation of alloc_bootmem_cpumask_var is wrong.

    WARNING: vmlinux.o(.text+0x3c2df): Section mismatch in reference from the function setup_cpu_local_masks() to the function .init.text:alloc_bootmem_cpumask_var()
    The function setup_cpu_local_masks() references
    the function __init alloc_bootmem_cpumask_var().
    This is often because setup_cpu_local_masks lacks a __init
    annotation or the annotation of alloc_bootmem_cpumask_var is wrong.

    WARNING: vmlinux.o(.text+0x3c2eb): Section mismatch in reference from the function setup_cpu_local_masks() to the function .init.text:alloc_bootmem_cpumask_var()
    The function setup_cpu_local_masks() references
    the function __init alloc_bootmem_cpumask_var().
    This is often because setup_cpu_local_masks lacks a __init
    annotation or the annotation of alloc_bootmem_cpumask_var is wrong.

    Signed-off-by: Leonardo Potenza
    Signed-off-by: Ingo Molnar

    Leonardo Potenza
     
  • Impact: add debug warning

    Fire off one message if two apic's discovered with different
    apic versions. (this code is only called during CPU init)

    The goal of this is to pave the way of the removal of the apic_version[]
    array. We dont expect any apic version incompatibilities in the x86
    landscape of systems [if so we dont handle them very well and probably
    never will handle deep apic version assymetries well], but it's prudent
    to have a debug check for one kernel cycle nevertheless.

    Signed-off-by: Mike Travis
    Signed-off-by: Ingo Molnar

    Mike Travis
     
  • Commit da4276b8299a6544dc41ac2485d3ffca5811b3fb changed a dependency
    for FRAME_POINTER from X86 to ARCH_WANT_FRAME_POINTERS, but didn't
    actually define it.

    This patch adds the definition for ARCH_WANT_FRAME_POINTERS. Without it,
    FRAME_POINTER can't be enabled on x86.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Ingo Molnar

    Jeff Mahoney
     

16 Jan, 2009

3 commits

  • Debugging and original patch from Nick Piggin

    The early fixmap pmd entry inserted at the very top of the KVA is causing the
    subsequent fixmap mapping code to not provide physically linear pte pages over
    the kmap atomic portion of the fixmap (which relies on said property to
    calculate pte addresses).

    This has caused weird boot failures in kmap_atomic much later in the boot
    process (initial userspace faults) on a 32-bit PAE system with a larger number
    of CPUs (smaller CPU counts tend not to run over into the next page so don't
    show up the problem).

    Solve this by attempting to clear out the page table, and copy any of its
    entries to the new one. Also, add a bug if a nonlinear condition is encountered
    and can't be resolved, which might save some hours of debugging if this fragile
    scheme ever breaks again...

    Once we have such logic, we can also use it to eliminate the early ioremap
    trickery around the page table setup for the fixmap area. This also fixes
    potential issues with FIX_* entries sharing the leaf page table with the early
    ioremap ones getting discarded by early_ioremap_clear() and not restored by
    early_ioremap_reset(). It at once eliminates the temporary (and configuration,
    namely NR_CPUS, dependent) unavailability of early fixed mappings during the
    time the fixmap area page tables get constructed.

    Finally, also replace the hard coded calculation of the initial table space
    needed for the fixmap area with a proper one, allowing kernels configured for
    large CPU counts to actually boot.

    Based-on: Nick Piggin
    Signed-off-by: Jan Beulich
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • The function uv_wait_completion() spins on reads of a memory-mapped
    register, waiting for completion of BAU hardware replies.

    It should call "cpu_relax()" between those reads to improve performance
    on hyperthreaded configurations.

    Signed-off-by: Cliff Wickman
    Acked-by: Jack Steiner
    Signed-off-by: Ingo Molnar

    Cliff Wickman
     
  • E.g. when called due to an early panic.

    Signed-off-by: Jan Beulich
    Signed-off-by: Ingo Molnar

    Jan Beulich
     

15 Jan, 2009

1 commit

  • Thierry Vignaud reported:
    > http://bugzilla.kernel.org/show_bug.cgi?id=12372
    >
    > On P4 with an SiS motherboard (video card is a SiS 651)
    > X server fails to start with error:
    > xf86MapVidMem: Could not mmap framebuffer (0x00000000,0x2000) (Invalid
    > argument)

    Here X is trying to map first 8KB of memory using /dev/mem. Existing
    code treats first 0-4KB of memory as non-RAM and 4KB-8KB as RAM. Recent
    code changes don't allow to map memory with different attributes
    at the same time.

    Fix this by treating the first 1MB legacy region as special and always
    track the attribute requests with in this region using linear linked
    list (and don't bother if the range is RAM or non-RAM or mixed)

    Reported-and-tested-by: Thierry Vignaud
    Signed-off-by: Suresh Siddha
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

14 Jan, 2009

1 commit

  • Impact: reduce kernel image size

    Hugh Dickins noticed that older gcc versions when the kernel
    is built for code size didn't inline some of the bitops.

    Mark all complex x86 bitops that have more than a single
    asm statement or two as always inline to avoid this problem.

    Probably should be done for other architectures too.

    Ingo then found a better fix that only requires
    a single line change, but it unfortunately only
    works on gcc 4.3.

    On older gccs the original patch still makes a ~0.3% defconfig
    difference with CONFIG_OPTIMIZE_INLINING=y.

    With gcc 4.1 and a defconfig like build:

    6116998 1138540 883788 8139326 7c323e vmlinux-oi-with-patch
    6137043 1138540 883788 8159371 7c808b vmlinux-optimize-inlining

    ~20k / 0.3% difference.

    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Andi Kleen
     

13 Jan, 2009

6 commits

  • Impact: fix potential boot crash on MAXSMP

    Remove code left over by:

    50c668d: Revert "cpumask: use work_on_cpu in acpi-cpufreq.c for drv_read

    That cmd.cpumask is not allocated anymore. No impact on default !MAXSMP
    kernels.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • This reverts commit e0c7317557c8fc8eacf611e30c2a80f4e24e47a3.

    This patch was wrong, as lockdep (and thus the irq state tracer)
    aren't nmi safe. People are already seeing lockdep warnings due
    to this.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • This reverts commit 7503bfbae89eba07b46441a5d1594647f6b8ab7d.

    Dieter Ries reported bootup soft-hangs and bisected it back to
    this commit, and reverting this commit gave him a working system.

    The commit introduces work_on_cpu() use into the cpufreq code,
    but that is subtly problematic from a lock hierarchy POV: the
    hotplug-cpu lock is an highlevel lock that is taken before
    lowlevel locks, and in this codepath we are called with the
    policy lock taken.

    Dieter did not have lockdep enabled so we dont have a nice stack
    trace proof for this, but using work_on_cpu() in such a lowlevel
    place certainly looks wrong, so we revert the patch.

    work_on_cpu() needs to be reworked to be more generally usable.

    Reported-by: Dieter Ries
    Tested-by: Dieter Ries
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Fix this by reintroducing asm/smp.h include in apic.c - later on
    I will fix this by removing non-smp data from smp.h

    Also fix the __inquire_remote_apic() prototype/inline.

    Signed-off-by: Jaswinder Singh Rajput
    Signed-off-by: Ingo Molnar

    Jaswinder Singh Rajput
     
  • Fix this by reintroducing asm/smp.h include in mpparse.c - later on
    I will fix this by removing non-smp data from smp.h.

    Reported-by: Petr Titera
    Signed-off-by: Jaswinder Singh Rajput
    Signed-off-by: Ingo Molnar

    Jaswinder Singh Rajput
     
  • Ajith Kumar noticed:

    I was going through the vmalloc fault handling for x86_64 and am unclear
    about the following lines in the vmalloc_fault() function.

    pgd = pgd_offset(current->mm ?: &init_mm, address);
    pgd_ref = pgd_offset_k(address);

    Here the intention is to get the pgd corresponding to the current process
    and sync it up with the pgd in init_mm(obtained from pgd_offset_k).
    However, for kernel threads current->mm is NULL and hence pgd =
    pgd_offset(init_mm, address) = pgd_ref which means the fault handler
    returns without setting the pgd entry in the MM structure in the context
    of which the kernel thread has faulted. This could lead to never-ending
    faults and busy looping of kernel threads like pdflush. So, shouldn't the
    pgd = pgd_offset(current->mm ?: &init_mm, address); be pgd =
    pgd_offset(current->active_mm ?: &init_mm, address);

    We can use active_mm unconditionally because it should be always set.

    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Andi Kleen
     

11 Jan, 2009

5 commits


10 Jan, 2009

20 commits

  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (36 commits)
    x86: fix section mismatch warnings in mcheck/mce_amd_64.c
    x86: offer frame pointers in all build modes
    x86: remove duplicated #include's
    x86: k8 numa register active regions later
    x86: update Alan Cox's email addresses
    x86: rename all fields of mpc_table mpc_X to X
    x86: rename all fields of mpc_oemtable oem_X to X
    x86: rename all fields of mpc_bus mpc_X to X
    x86: rename all fields of mpc_cpu mpc_X to X
    x86: rename all fields of mpc_intsrc mpc_X to X
    x86: rename all fields of mpc_lintsrc mpc_X to X
    x86: rename all fields of mpc_iopic mpc_X to X
    x86: irqinit_64.c init_ISA_irqs should be static
    Documentation/x86/boot.txt: payload length was changed to payload_length
    x86: setup_percpu.c fix style problems
    x86: irqinit_64.c fix style problems
    x86: irqinit_32.c fix style problems
    x86: i8259.c fix style problems
    x86: irq_32.c fix style problems
    x86: ioport.c fix style problems
    ...

    Linus Torvalds
     
  • * 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    [IA64] fix typo in cpumask_of_pcibus()
    x86: fix x86_32 builds for summit and es7000 arch's
    cpumask: use work_on_cpu in acpi-cpufreq.c for read_measured_perf_ctrs
    cpumask: use work_on_cpu in acpi-cpufreq.c for drv_read and drv_write
    cpumask: use cpumask_var_t in acpi-cpufreq.c
    cpumask: use work_on_cpu in acpi/cstate.c
    cpumask: convert struct cpufreq_policy to cpumask_var_t
    cpumask: replace CPUMASK_ALLOC etc with cpumask_var_t
    x86: cleanup remaining cpumask_t ops in smpboot code
    cpumask: update pci_bus_show_cpuaffinity to use new cpumask API
    cpumask: update local_cpus_show to use new cpumask API
    ia64: cpumask fix for is_affinity_mask_valid()

    Linus Torvalds
     
  • Commit c4be0c1dc4cdc37b175579be1460f15ac6495e9a added the ability for
    write_super_lockfs to return errors, and renamed them to match. But
    btrfs didn't get converted.

    Do the minimal conversion to make it compile again.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • The 'rb_first()', 'rb_last()', 'rb_next()' and 'rb_prev()' calls
    take a pointer to an RB node or RB root. They do not change the
    pointed objects, so add a 'const' qualifier in order to make life
    of the users of these functions easier.

    Indeed, if I have my own constant pointer &const struct my_type *p,
    and I call 'rb_next(&p->rb)', I get a GCC warning:

    warning: passing argument 1 of ‘rb_next’ discards qualifiers from pointer target type

    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse
    Signed-off-by: Linus Torvalds

    Artem Bityutskiy
     
  • The sensor can be accessed via various buses. In particular, SPI, I²C
    and, on HP laptops, via a specific ACPI API (the only one currently
    supported). Separate this latest platform from the core of the sensor
    driver to allow support for the other bus type. The second, and more
    direct goal is actually to be able to merge this part with the
    hp-disk-leds driver, which has the same ACPI PNP number.

    Signed-off-by: Pavel Machek
    Signed-off-by: Eric Piel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Piel
     
  • It removes XFS specific ioctl interfaces and request codes
    for freeze feature.

    This patch has been supplied by David Chinner.

    Signed-off-by: Dave Chinner
    Signed-off-by: Takashi Sato
    Cc: Dave Chinner
    Cc:
    Cc:
    Cc: Christoph Hellwig
    Cc: Dave Kleikamp
    Cc: Alasdair G Kergon
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Takashi Sato
     
  • The ioctls for the generic freeze feature are below.
    o Freeze the filesystem
    int ioctl(int fd, int FIFREEZE, arg)
    fd: The file descriptor of the mountpoint
    FIFREEZE: request code for the freeze
    arg: Ignored
    Return value: 0 if the operation succeeds. Otherwise, -1

    o Unfreeze the filesystem
    int ioctl(int fd, int FITHAW, arg)
    fd: The file descriptor of the mountpoint
    FITHAW: request code for unfreeze
    arg: Ignored
    Return value: 0 if the operation succeeds. Otherwise, -1
    Error number: If the filesystem has already been unfrozen,
    errno is set to EINVAL.

    [akpm@linux-foundation.org: fix CONFIG_BLOCK=n]
    Signed-off-by: Takashi Sato
    Signed-off-by: Masayuki Hamaguchi
    Cc:
    Cc:
    Cc: Christoph Hellwig
    Cc: Dave Kleikamp
    Cc: Dave Chinner
    Cc: Alasdair G Kergon
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Takashi Sato
     
  • Currently, ext3 in mainline Linux doesn't have the freeze feature which
    suspends write requests. So, we cannot take a backup which keeps the
    filesystem's consistency with the storage device's features (snapshot and
    replication) while it is mounted.

    In many case, a commercial filesystem (e.g. VxFS) has the freeze feature
    and it would be used to get the consistent backup.

    If Linux's standard filesystem ext3 has the freeze feature, we can do it
    without a commercial filesystem.

    So I have implemented the ioctls of the freeze feature.
    I think we can take the consistent backup with the following steps.
    1. Freeze the filesystem with the freeze ioctl.
    2. Separate the replication volume or create the snapshot
    with the storage device's feature.
    3. Unfreeze the filesystem with the unfreeze ioctl.
    4. Take the backup from the separated replication volume
    or the snapshot.

    This patch:

    VFS:
    Changed the type of write_super_lockfs and unlockfs from "void"
    to "int" so that they can return an error.
    Rename write_super_lockfs and unlockfs of the super block operation
    freeze_fs and unfreeze_fs to avoid a confusion.

    ext3, ext4, xfs, gfs2, jfs:
    Changed the type of write_super_lockfs and unlockfs from "void"
    to "int" so that write_super_lockfs returns an error if needed,
    and unlockfs always returns 0.

    reiserfs:
    Changed the type of write_super_lockfs and unlockfs from "void"
    to "int" so that they always return 0 (success) to keep a current behavior.

    Signed-off-by: Takashi Sato
    Signed-off-by: Masayuki Hamaguchi
    Cc:
    Cc:
    Cc: Christoph Hellwig
    Cc: Dave Kleikamp
    Cc: Dave Chinner
    Cc: Alasdair G Kergon
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Takashi Sato
     
  • The code was shifting the endianness appropriately everywhere, annotate
    the structs to avoid the sparse warnings when assigning the endian types
    to the struct members, or passing them to be[16|32]_to_cpu:

    drivers/memstick/core/mspro_block.c:331:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:333:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:335:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:337:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:341:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:347:4: warning: cast to restricted __be32
    drivers/memstick/core/mspro_block.c:356:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:358:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:364:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:367:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:369:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:371:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:377:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:478:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:480:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:482:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:484:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:486:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:689:22: expected unsigned int [unsigned] [assigned] data_address
    drivers/memstick/core/mspro_block.c:689:22: got restricted __be32 [usertype]
    drivers/memstick/core/mspro_block.c:697:3: warning: cast to restricted __be32
    drivers/memstick/core/mspro_block.c:960:17: warning: incorrect type in initializer (different base types)
    drivers/memstick/core/mspro_block.c:960:17: expected unsigned short [unsigned] data_count
    drivers/memstick/core/mspro_block.c:960:17: got restricted __be16 [usertype]
    drivers/memstick/core/mspro_block.c:993:6: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:995:28: warning: cast to restricted __be16

    Signed-off-by: Harvey Harrison
    Cc: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • Compilation of the HP WMI hotkeys code results in the following:

    CC [M] drivers/platform/x86/hp-wmi.o
    drivers/platform/x86/hp-wmi.c: In function hp_wmi_bios_setup:
    drivers/platform/x86/hp-wmi.c:431: warning: ignoring return value of rfkill_register,
    declared with attribute warn_unused_result
    drivers/platform/x86/hp-wmi.c:441: warning: ignoring return value of rfkill_register,
    declared with attribute warn_unused_result
    drivers/platform/x86/hp-wmi.c:450: warning: ignoring return value of rfkill_register,
    declared with attribute warn_unused_result

    Signed-off-by: Larry Finger
    Cc: Matthew Garrett
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Larry Finger
     
  • Requested by C. Lameter

    Signed-off-by: Andi Kleen
    Cc: Christoph Lameter
    Cc: Andi Kleen
    Cc: Rusty Russell
    Cc: Stephen Rothwell
    Cc: Mike Travis
    Cc: Ingo Molnar
    Cc: Richard Henderson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Kernels that don't support ELF coredumps at all surely can't be supporting
    new partial-segment flavored ELF coredumps ... don't make folk answer
    Kconfig questions about that flavor.

    Signed-off-by: David Brownell
    Acked-by: Roland McGrath
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async-2:
    async: make async a command line option for now
    partial revert of asynchronous inode delete

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6:
    Revert "driver core: create a private portion of struct device"
    Revert "driver core: move klist_children into private structure"
    Revert "driver core: move knode_driver into private structure"
    Revert "driver core: move knode_bus into private structure"

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: core: fix sleep in atomic context due to driver core change

    Linus Torvalds
     
  • * git://git.infradead.org/mtd-2.6:
    [JFFS2] remove junk prototypes

    Linus Torvalds
     
  • * 'for_2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6: (28 commits)
    mISDN: Add HFC USB driver
    mISDN: Add layer1 prim MPH_INFORMATION_REQ
    mISDN: Fix kernel crash when doing hardware conference with more than two members
    mISDN: Added missing create_l1() call
    mISDN: Add MODULE_DEVICE_TABLE() to hfcpci
    mISDN: Minor cleanups
    mISDN: Create /sys/class/mISDN
    mISDN: Add missing release functions
    mISDN: Add different different timer settings for hfc-pci
    mISDN: Minor fixes
    mISDN: Correct busy device detection
    mISDN: Fix deactivation, if peer IP is removed from l1oip instance.
    mISDN: Add ISDN_P_TE_UP0 / ISDN_P_NT_UP0
    mISDN: Fix irq detection
    mISDN: Add ISDN sample clock API to mISDN core
    mISDN: Return error on E-channel access
    mISDN: Add E-Channel logging features
    mISDN: Use protocol to detect D-channel
    mISDN: Fixed more indexing bugs
    mISDN: Make debug output a little bit more verbose
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:
    MAINTAINERS: squashfs entry
    Squashfs: documentation
    Squashfs: initrd support
    Squashfs: Kconfig entry
    Squashfs: Makefiles
    Squashfs: header files
    Squashfs: block operations
    Squashfs: cache operations
    Squashfs: uid/gid lookup operations
    Squashfs: fragment block operations
    Squashfs: export operations
    Squashfs: super block operations
    Squashfs: symlink operations
    Squashfs: regular file operations
    Squashfs: directory readdir operations
    Squashfs: directory lookup operations
    Squashfs: inode operations

    Linus Torvalds
     
  • This reverts commit 2831fe6f9cc4e16c103504ee09a47a084297c0f3.

    Turns out that device_initialize shouldn't fail silently.
    This series needs to be reworked in order to get into proper
    shape.

    Reported-by: Stefan Richter
    Cc: Alan Cox
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • This reverts commit 11c3b5c3e08f4d855cbef52883c266b9ab9df879.

    Turns out that device_initialize shouldn't fail silently.
    This series needs to be reworked in order to get into proper
    shape.

    Reported-by: Stefan Richter
    Cc: Alan Cox
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman