27 Oct, 2010

21 commits

  • Building with CONFIG_KALLSYMS=n gives following warning:

    /mnt/src/linux-git/kernel/module.c: In function ‘post_relocation’:
    /mnt/src/linux-git/kernel/module.c:2534:2: warning: passing argument 2 of ‘add_kallsyms’ discards qualifiers from pointer target type
    /mnt/src/linux-git/kernel/module.c:2038:13: note: expected ‘struct load_info *’ but argument is of type ‘const struct load_info *’

    Signed-off-by: Michał Mirosław
    Signed-off-by: Rusty Russell

    Michał Mirosław
     
  • * ima-memory-use-fixes:
    IMA: fix the ToMToU logic
    IMA: explicit IMA i_flag to remove global lock on inode_delete
    IMA: drop refcnt from ima_iint_cache since it isn't needed
    IMA: only allocate iint when needed
    IMA: move read counter into struct inode
    IMA: use i_writecount rather than a private counter
    IMA: use inode->i_lock to protect read and write counters
    IMA: convert internal flags from long to char
    IMA: use unsigned int instead of long for counters
    IMA: drop the inode opencount since it isn't needed for operation
    IMA: use rbtree instead of radix tree for inode information cache

    Linus Torvalds
     
  • Current logic looks like this:

    rc = ima_must_measure(NULL, inode, MAY_READ, FILE_CHECK);
    if (rc < 0)
    goto out;

    if (mode & FMODE_WRITE) {
    if (inode->i_readcount)
    send_tomtou = true;
    goto out;
    }

    if (atomic_read(&inode->i_writecount) > 0)
    send_writers = true;

    Lets assume we have a policy which states that all files opened for read
    by root must be measured.

    Lets assume the file has permissions 777.

    Lets assume that root has the given file open for read.

    Lets assume that a non-root process opens the file write.

    The non-root process will get to ima_counts_get() and will check the
    ima_must_measure(). Since it is not supposed to measure it will goto
    out.

    We should check the i_readcount no matter what since we might be causing
    a ToMToU voilation!

    This is close to correct, but still not quite perfect. The situation
    could have been that root, which was interested in the mesurement opened
    and closed the file and another process which is not interested in the
    measurement is the one holding the i_readcount ATM. This is just overly
    strict on ToMToU violations, which is better than not strict enough...

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Currently for every removed inode IMA must take a global lock and search
    the IMA rbtree looking for an associated integrity structure. Instead
    we explicitly mark an inode when we add an integrity structure so we
    only have to take the global lock and do the removal if it exists.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Since finding a struct ima_iint_cache requires a valid struct inode, and
    the struct ima_iint_cache is supposed to have the same lifetime as a
    struct inode (technically they die together but don't need to be created
    at the same time) we don't have to worry about the ima_iint_cache
    outliving or dieing before the inode. So the refcnt isn't useful. Just
    get rid of it and free the structure when the inode is freed.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • IMA always allocates an integrity structure to hold information about
    every inode, but only needed this structure to track the number of
    readers and writers currently accessing a given inode. Since that
    information was moved into struct inode instead of the integrity struct
    this patch stops allocating the integrity stucture until it is needed.
    Thus greatly reducing memory usage.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • IMA currently allocated an inode integrity structure for every inode in
    core. This stucture is about 120 bytes long. Most files however
    (especially on a system which doesn't make use of IMA) will never need
    any of this space. The problem is that if IMA is enabled we need to
    know information about the number of readers and the number of writers
    for every inode on the box. At the moment we collect that information
    in the per inode iint structure and waste the rest of the space. This
    patch moves those counters into the struct inode so we can eventually
    stop allocating an IMA integrity structure except when absolutely
    needed.

    This patch does the minimum needed to move the location of the data.
    Further cleanups, especially the location of counter updates, may still
    be possible.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • IMA tracks the number of struct files which are holding a given inode
    readonly and the number which are holding the inode write or r/w. It
    needs this information so when a new reader or writer comes in it can
    tell if this new file will be able to invalidate results it already made
    about existing files.

    aka if a task is holding a struct file open RO, IMA measured the file
    and recorded those measurements and then a task opens the file RW IMA
    needs to note in the logs that the old measurement may not be correct.
    It's called a "Time of Measure Time of Use" (ToMToU) issue. The same is
    true is a RO file is opened to an inode which has an open writer. We
    cannot, with any validity, measure the file in question since it could
    be changing.

    This patch attempts to use the i_writecount field to track writers. The
    i_writecount field actually embeds more information in it's value than
    IMA needs but it should work for our purposes and allow us to shrink the
    struct inode even more.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Currently IMA used the iint->mutex to protect the i_readcount and
    i_writecount. This patch uses the inode->i_lock since we are going to
    start using in inode objects and that is the most appropriate lock.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • The IMA flags is an unsigned long but there is only 1 flag defined.
    Lets save a little space and make it a char. This packs nicely next to
    the array of u8's.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Currently IMA uses 2 longs in struct inode. To save space (and as it
    seems impossible to overflow 32 bits) we switch these to unsigned int.
    The switch to unsigned does require slightly different checks for
    underflow, but it isn't complex.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • The opencount was used to help debugging to make sure that everything
    which created a struct file also correctly made the IMA calls. Since we
    moved all of that into the VFS this isn't as necessary. We should be
    able to get the same amount of debugging out of just the reader and
    write count.

    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • The IMA code needs to store the number of tasks which have an open fd
    granting permission to write a file even when IMA is not in use. It
    needs this information in order to be enabled at a later point in time
    without losing it's integrity garantees.

    At the moment that means we store a little bit of data about every inode
    in a cache. We use a radix tree key'd on the inode's memory address.
    Dave Chinner pointed out that a radix tree is a terrible data structure
    for such a sparse key space. This patch switches to using an rbtree
    which should be more efficient.

    Bug report from Dave:

    "I just noticed that slabtop was reporting an awfully high usage of
    radix tree nodes:

    OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
    4200331 2778082 66% 0.55K 144839 29 2317424K radix_tree_node
    2321500 2060290 88% 1.00K 72581 32 2322592K xfs_inode
    2235648 2069791 92% 0.12K 69864 32 279456K iint_cache

    That is, 2.7M radix tree nodes are allocated, and the cache itself is
    consuming 2.3GB of RAM. I know that the XFS inodei caches are indexed
    by radix tree node, but for 2 million cached inodes that would mean a
    density of 1 inode per radix tree node, which for a system with 16M
    inodes in the filsystems is an impossibly low density. The worst I've
    seen in a production system like kernel.org is about 20-25% density,
    which would mean about 150-200k radix tree nodes for that many inodes.
    So it's not the inode cache.

    So I looked up what the iint_cache was. It appears to used for
    storing per-inode IMA information, and uses a radix tree for indexing.
    It uses the *address* of the struct inode as the indexing key. That
    means the key space is extremely sparse - for XFS the struct inode
    addresses are approximately 1000 bytes apart, which means the closest
    the radix tree index keys get is ~1000. Which means that there is a
    single entry per radix tree leaf node, so the radix tree is using
    roughly 550 bytes for every 120byte structure being cached. For the
    above example, it's probably wasting close to 1GB of RAM...."

    Reported-by: Dave Chinner
    Signed-off-by: Eric Paris
    Acked-by: Mimi Zohar
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • * git://git.infradead.org/battery-2.6:
    power_supply: Makefile cleanup
    bq27x00_battery: Add missing kfree(di->bus) in bq27x00_battery_remove()
    power_supply: Introduce maximum current property
    power_supply: Add types for USB chargers
    ds2782_battery: Fix units
    power_supply: Add driver for TWL4030/TPS65950 BCI charger
    bq20z75: Add support for more power supply properties
    wm831x_power: Add missing kfree(wm831x_power) in wm831x_power_remove()
    jz4740-battery: Add missing kfree(jz_battery) in jz_battery_remove()
    ds2760_battery: Add missing kfree(di) in ds2760_battery_remove()
    olpc_battery: Fix endian neutral breakage for s16 values
    ds2760_battery: Fix W1 and W1_SLAVE_DS2760 dependency
    pcf50633-charger: Add missing sysfs_remove_group()
    power_supply: Add driver for TI BQ20Z75 gas gauge IC
    wm831x_power: Remove duplicate chg mask
    omap: rx51: Add support for USB chargers
    power_supply: Add isp1704 charger detection driver

    Linus Torvalds
     
  • * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/i7core: (34 commits)
    i7core_edac: return -ENODEV when devices were already probed
    i7core_edac: properly terminate pci_dev_table
    i7core_edac: Avoid PCI refcount to reach zero on successive load/reload
    i7core_edac: Fix refcount error at PCI devices
    i7core_edac: it is safe to i7core_unregister_mci() when mci=NULL
    i7core_edac: Fix an oops at i7core probe
    i7core_edac: Remove unused member channels in i7core_pvt
    i7core_edac: Remove unused arg csrow from get_dimm_config
    i7core_edac: Reduce args of i7core_register_mci
    i7core_edac: Introduce i7core_unregister_mci
    i7core_edac: Use saved pointers
    i7core_edac: Check probe counter in i7core_remove
    i7core_edac: Call pci_dev_put() when alloc_i7core_dev() failed
    i7core_edac: Fix error path of i7core_register_mci
    i7core_edac: Fix order of lines in i7core_register_mci
    i7core_edac: Always do get/put for all devices
    i7core_edac: Introduce i7core_pci_ctl_create/release
    i7core_edac: Introduce free_i7core_dev
    i7core_edac: Introduce alloc_i7core_dev
    i7core_edac: Reduce args of i7core_get_onedevice
    ...

    Linus Torvalds
     
  • * 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (22 commits)
    Add _addr_lsb field to ia64 siginfo
    Fix migration.c compilation on s390
    HWPOISON: Remove retry loop for try_to_unmap
    HWPOISON: Turn addr_valid from bitfield into char
    HWPOISON: Disable DEBUG by default
    HWPOISON: Convert pr_debugs to pr_info
    HWPOISON: Improve comments in memory-failure.c
    x86: HWPOISON: Report correct address granuality for huge hwpoison faults
    Encode huge page size for VM_FAULT_HWPOISON errors
    Fix build error with !CONFIG_MIGRATION
    hugepage: move is_hugepage_on_freelist inside ifdef to avoid warning
    Clean up __page_set_anon_rmap
    HWPOISON, hugetlb: fix unpoison for hugepage
    HWPOISON, hugetlb: soft offlining for hugepage
    HWPOSION, hugetlb: recover from free hugepage error when !MF_COUNT_INCREASED
    hugetlb: move refcounting in hugepage allocation inside hugetlb_lock
    HWPOISON, hugetlb: add free check to dequeue_hwpoison_huge_page()
    hugetlb: hugepage migration core
    hugetlb: redefine hugepage copy functions
    hugetlb: add allocate function for hugepage migration
    ...

    Linus Torvalds
     
  • * 'for_linus' of git://github.com/at91linux/linux-2.6-at91:
    AT91: rtc: enable built-in RTC in Kconfig for at91sam9g45 family
    at91/atmel-mci: inclusion of sd/mmc driver in at91sam9g45 chip and board
    AT91: pm: make sure that r0 is 0 when dealing with cache operations
    AT91: pm: use plain cpu_do_idle() for "wait for interrupt"
    AT91: reset: extend alternate reset procedure to several chips
    AT91: reset routine cleanup, remove not needed icache flush
    AT91: trivial: align comment of at91sam9g20_reset with one more tab
    AT91: Fix AT91SAM9G20 reset as per the errata in the data sheet
    AT91: add board support for Pcontrol_G20

    Linus Torvalds
     
  • * 'for-linus' of git://gitorious.org/linux-omap-dss2/linux:
    OMAP: DSS2: don't power off a panel twice
    OMAP: DSS2: OMAPFB: Allow usage of def_vrfb only for omap2,3
    OMAP: DSS2: OMAPFB: make VRFB depends on OMAP2,3
    OMAP: DSS2: OMAPFB: Allow FB_OMAP2 to build without VRFB
    arm/omap: simplify conditional
    OMAP: DSS2: DSI: Remove extra iounmap in error path
    OMAP: DSS2: Use dss_features framework on DSS2 code
    OMAP: DSS2: Introduce dss_features files
    video/omap: remove mux.h include
    ARM: omap/fb: move get_fbmem_region() to .init.text
    ARM: omap/fb: move omapfb_reserve_sram to .init.text
    ARM: omap/fb: move omap_init_fb to .init.text
    OMAP: DSS2: OMAPFB: swap front and back porches for both hsync and vsync
    OMAP: DSS2: make filter coefficient tables human readable
    OMAP: DSS2: Add SPI dependency to Kconfig of ACX565AKM panel

    Linus Torvalds
     
  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ]: x86, cpufreq: Mark longrun_get_policy with __cpuinit.
    [CPUFREQ] add sampling_down_factor tunable to improve ondemand performance
    [CPUFREQ] arch/x86/kernel/cpu/cpufreq: Fix unsigned return type
    [CPUFREQ] drivers/cpufreq: Adjust confusing if indentation

    Linus Torvalds
     
  • * 'for-2.6.37' of git://linux-nfs.org/~bfields/linux: (99 commits)
    svcrpc: svc_tcp_sendto XPT_DEAD check is redundant
    svcrpc: no need for XPT_DEAD check in svc_xprt_enqueue
    svcrpc: assume svc_delete_xprt() called only once
    svcrpc: never clear XPT_BUSY on dead xprt
    nfsd4: fix connection allocation in sequence()
    nfsd4: only require krb5 principal for NFSv4.0 callbacks
    nfsd4: move minorversion to client
    nfsd4: delay session removal till free_client
    nfsd4: separate callback change and callback probe
    nfsd4: callback program number is per-session
    nfsd4: track backchannel connections
    nfsd4: confirm only on succesful create_session
    nfsd4: make backchannel sequence number per-session
    nfsd4: use client pointer to backchannel session
    nfsd4: move callback setup into session init code
    nfsd4: don't cache seq_misordered replies
    SUNRPC: Properly initialize sock_xprt.srcaddr in all cases
    SUNRPC: Use conventional switch statement when reclassifying sockets
    sunrpc/xprtrdma: clean up workqueue usage
    sunrpc: Turn list_for_each-s into the ..._entry-s
    ...

    Fix up trivial conflicts (two different deprecation notices added in
    separate branches) in Documentation/feature-removal-schedule.txt

    Linus Torvalds
     
  • * 'nfs-for-2.6.37' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
    net/sunrpc: Use static const char arrays
    nfs4: fix channel attribute sanity-checks
    NFSv4.1: Use more sensible names for 'initialize_mountpoint'
    NFSv4.1: pnfs: filelayout: add driver's LAYOUTGET and GETDEVICEINFO infrastructure
    NFSv4.1: pnfs: add LAYOUTGET and GETDEVICEINFO infrastructure
    NFS: client needs to maintain list of inodes with active layouts
    NFS: create and destroy inode's layout cache
    NFSv4.1: pnfs: filelayout: introduce minimal file layout driver
    NFSv4.1: pnfs: full mount/umount infrastructure
    NFS: set layout driver
    NFS: ask for layouttypes during v4 fsinfo call
    NFS: change stateid to be a union
    NFSv4.1: pnfsd, pnfs: protocol level pnfs constants
    SUNRPC: define xdr_decode_opaque_fixed
    NFSD: remove duplicate NFS4_STATEID_SIZE

    Linus Torvalds
     

26 Oct, 2010

19 commits

  • Enable built-in RTC IP in Kconfig and modify comments and help messages.
    RTT as RTC is still available but should not be selected in common case.

    Reported-by: Yegor Yefremov
    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • This adds the support of atmel-mci sd/mmc driver in at91sam9g45 devices and
    board files. This also configures the DMA controller slave interface for
    at_hdmac dmaengine driver.

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • When using CP15 cache operations (c7), we make sure that Rd (r0)
    is actually 0 as ARM 926 TRM is saying.

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • For power management at91_pm_enter() routine, use the cpu_do_idle() for a
    rock solid "wait for interrupt" implementation.
    For AT91SAM9 ARM 926 based chips, we can exceed the cache line length as
    we can access RAM even while in self-refresh mode.
    We keep plain access to CP15 for at91rm9200 as this feature is not
    available: instructions have to be in a single cache line.

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • Several at91sam9 chips need the alternate reset procedure to be sure to halt
    SDRAM smoothly before resetting the chip.
    This is an extension of previous patch "Fix AT91SAM9G20 reset" to all chips
    affected.

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • Generalize assembler reset routine to allow use on several at91sam9 chips.
    This patch replace double definitions of SDRAM controller registers and RSTC
    registers with use of classical header files.

    For this rework, we remove the not needed icache flush as it is already
    done in the calling function: arm_machine_restart().

    Rename at91sam9g20_reset.S to generalize to several chips.

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • Preparing next patch with longer names

    Signed-off-by: Nicolas Ferre

    Nicolas Ferre
     
  • If the SDRAM is not cleanly shutdown before reset it can be left driving
    the bus, which then stops the bootloader booting from NAND.

    Signed-off-by: Peter Horton
    [nicolas.ferre@atmel.com: change file header line order]
    Signed-off-by: Nicolas Ferre

    Peter Horton
     
  • Board is a carrier board for Stamp9G20, with additional peripherals
    for a building automation system

    Signed-off-by: Peter Gsellmann
    [nicolas.ferre@atmel.com: remove machine_desc.io_pg_offst and .phys_io]
    Signed-off-by: Nicolas Ferre

    Peter Gsellmann
     
  • Signed-off-by: Joe Perches
    Signed-off-by: Trond Myklebust

    Joe Perches
     
  • The sanity checks here are incorrect; in the worst case they allow
    values that crash the client.

    They're also over-reliant on the preprocessor.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Trond Myklebust

    J. Bruce Fields
     
  • * 'for-next' of git://android.git.kernel.org/kernel/tegra:
    spi: tegra: fix error setting on timeout
    spi: add spi_tegra driver
    tegra: harmony: enable PCI Express
    tegra: add PCI Express support
    tegra: add PCI Express clocks
    [ARM] tegra: Add APB DMA support
    [ARM] tegra: Add cpufreq support
    [ARM] tegra: common: Update common clock init table
    [ARM] tegra: clock: Add dvfs support, bug fixes, and cleanups
    [ARM] tegra: Add support for reading fuses
    [ARM] tegra: gpio: Add suspend and wake support
    [ARM] tegra: pinmux: add safe values, move tegra2, add suspend
    [ARM] tegra: add suspend and mirror irqs to legacy controller
    [ARM] tegra: Add legacy irq support
    [ARM] tegra: update iomap

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin:
    Blackfin: fix inverted anomaly 05000481 logic
    Blackfin: drop unused irq_panic()/DEBUG_ICACHE_CHECK
    Blackfin: ppi/spi/twi headers: add missing __BFP undef
    Blackfin: update defconfigs
    Blackfin: bfin_twi.h: start a common TWI header
    netdev: bfin_mac: push settings to platform resources

    Linus Torvalds
     
  • avoids derefencing an uninitialized pointer

    Change-Id: Icf528441ae481e9f6f5ddc0be32c7c217fa49701
    Signed-off-by: Erik Gilling

    Erik Gilling
     
  • * 'next' of git://git.monstr.eu/linux-2.6-microblaze: (42 commits)
    microblaze: Fix build with make 3.82
    fbdev/xilinxfb: Microblaze driver support
    microblaze: Support C optimized lib functions for little-endian
    microblaze: Separate library optimized functions
    microblaze: Support timer on AXI lite
    microblaze: Add support for little-endian Microblaze
    microblaze: KGDB little endian support
    microblaze: Add PVR for endians plus detection
    net: emaclite: Add support for little-endian platforms
    microblaze: trivial: Add comment for AXI pvr
    microblaze: pci-common cleanup
    microblaze: Support early console on uart16550
    microblaze: Do not compile early console support for uartlite if is disabled
    microblaze: Setup early console dynamically
    microblaze: Rename all uartlite early printk functions
    microblaze: remove early printk uarlite console dependency from header
    microblaze: Remove additional compatible properties
    microblaze: Remove hardcoded asm instraction for PVR loading
    microblaze: Use static const char * const where possible
    microblaze: Define VMALLOC_START/END
    ...

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/staging: (24 commits)
    hwmon: lis3: Release resources in case of failure
    hwmon: lis3: Short explanations of platform data fields
    hwmon: lis3: Enhance lis3 selftest with IRQ line test
    hwmon: lis3: use block read to access data registers
    hwmon: lis3: Adjust fuzziness for 8 bit device
    hwmon: lis3: New parameters to platform data
    hwmon: lis3: restore axis enabled bits
    hwmon: lis3: Power on corrections
    hwmon: lis3: Update coordinates at polled device open
    hwmon: lis3: Cleanup interrupt handling
    hwmon: lis3: regulator control
    hwmon: lis3: pm_runtime support
    Kirkwood: add fan support for Network Space Max v2
    hwmon: add generic GPIO fan driver
    hwmon: (coretemp) fix reading of microcode revision (v2)
    hwmon: ({core, pkg, via-cpu}temp) remove unnecessary CONFIG_HOTPLUG_CPU ifdefs
    hwmon: (pkgtemp) align driver initialization style with coretemp
    hwmon: LTC4261 Hardware monitoring driver
    hwmon: (lis3) add axes module parameter for custom axis-mapping
    hwmon: (hp_accel) Add HP Mini 510x family support
    ...

    Linus Torvalds
     
  • In the MN10300 arch, we occasionally see an assertion being tripped in
    alloc_cwqs() at the following line:

    /* just in case, make sure it's actually aligned */
    ---> BUG_ON(!IS_ALIGNED(wq->cpu_wq.v, align));
    return wq->cpu_wq.v ? 0 : -ENOMEM;

    The values are:

    wa->cpu_wq.v => 0x902776e0
    align => 0x100

    and align is calculated by the following:

    const size_t align = max_t(size_t, 1 << WORK_STRUCT_FLAG_BITS,
    __alignof__(unsigned long long));

    This is because the pointer in question (wq->cpu_wq.v) loses some of its
    lower bits to control flags, and so the object it points to must be
    sufficiently aligned to avoid the need to use those bits for pointing to
    things.

    Currently, 4 control bits and 4 colour bits are used in normal
    circumstances, plus a debugging bit if debugging is set. This requires
    the cpu_workqueue_struct struct to be at least 256 bytes aligned (or 512
    bytes aligned with debugging).

    PERCPU() alignment on MN13000, however, is only 32 bytes as set in
    vmlinux.lds.S. So we set this to PAGE_SIZE (4096) to match most other
    arches and stick a comment in alloc_cwqs() for anyone else who triggers
    the assertion.

    Reported-by: Akira Takeuchi
    Signed-off-by: David Howells
    Acked-by: Mark Salter
    Cc: Tejun Heo
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The only caller (svc_send) has already checked XPT_DEAD.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • If any xprt marked DEAD is also left BUSY for the rest of its life, then
    the XPT_DEAD check here is superfluous--we'll get the same result from
    the XPT_BUSY check just after.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields