1. 26 7月, 2008 18 次提交
  2. 25 7月, 2008 22 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus · 832fe9c2
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
        virtio: Add transport feature handling stub for virtio_ring.
        virtio: Rename set_features to finalize_features
        virtio: Formally reserve bits 28-31 to be 'transport' features.
        s390: use virtio_console for KVM on s390
        virtio: console as a config option
        virtio_console: use virtqueue notification for hvc_console
        hvc_console: rework setup to replace irq functions with callbacks
        virtio_blk: check for hardsector size from host
        virtio: Use bus_type probe and remove methods
        virtio: don't always force a notification when ring is full
        virtio: clarify that ABI is usable by any implementations
        virtio: Recycle unused recv buffer pages for large skbs in net driver
        virtio net: Allow receiving SG packets
        virtio net: Add ethtool ops for SG/GSO
        virtio: fix virtio_net xmit of freed skb bug
      832fe9c2
    • R
      Label kthread_create() with printf attribute tag. · ed9559d3
      Rusty Russell 提交于
      Obvious misc patch been in my queue (& linux-next) for over a cycle.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ed9559d3
    • R
      virtio: Add transport feature handling stub for virtio_ring. · e34f8725
      Rusty Russell 提交于
      To prepare for virtio_ring transport feature bits, hook in a call in
      all the users to manipulate them.  This currently just clears all the
      bits, since it doesn't understand any features.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      e34f8725
    • R
      virtio: Rename set_features to finalize_features · c624896e
      Rusty Russell 提交于
      Rather than explicitly handing the features to the lower-level, we just
      hand the virtio_device and have it set the features.  This make it clear
      that it has the chance to manipulate the features of the device at this
      point (and that all feature negotiation is already done).
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      c624896e
    • R
      virtio: Formally reserve bits 28-31 to be 'transport' features. · dd7c7bc4
      Rusty Russell 提交于
      We assign feature bits as required, but it makes sense to reserve some
      for the particular transport, rather than the particular device.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      dd7c7bc4
    • C
      s390: use virtio_console for KVM on s390 · faeba830
      Christian Borntraeger 提交于
      This patch enables virtio_console as the default console on kvm for
      s390. We currently use the same notify hack as lguest for early
      console output. I will try to address this for lguest and s390 later.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      faeba830
    • C
      virtio: console as a config option · 7721c494
      Christian Borntraeger 提交于
      I also added a small Kconfig change that allows the user to specify the
      virtio console in menuconfig.
      
      (Fixes to export symbols from Stephen Rothwell <sfr@canb.auug.org.au>)
      (Fixes for CONFIG_VIRTIO_CONSOLE=y vs CONFIG_VIRTIO=m from Christian himself)
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      7721c494
    • C
      virtio_console: use virtqueue notification for hvc_console · 91fcad19
      Christian Borntraeger 提交于
      This patch exploits the new notifier callbacks of the hvc_console. We can
      use the virtio callbacks instead of the polling code.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      91fcad19
    • C
      hvc_console: rework setup to replace irq functions with callbacks · 611e097d
      Christian Borntraeger 提交于
      This patch tries to change hvc_console to not use request_irq/free_irq if
      the backend does not use irqs. This allows virtio_console to use hvc_console
      without having a linker reference to request_irq/free_irq.
      
      In addition, together with patch 2/3 it improves the performance for virtio
      console input. (an earlier version of this patch was tested by Yajin on lguest)
      
      The irq specific code is moved to hvc_irq.c and selected by the drivers that
      use irqs (System p, System i, XEN).
      
      I replaced "int irq" with the opaque "int data". The request_irq and
      free_irq calls are replaced with notifier_add and notifier_del. I have also
      changed the code a bit to call the notifier_add and notifier_del inside the
      spinlock area as the callbacks are found via hp->ops.
      
      Changes since last version:
      o remove ifdef
      o reintroduce "irq_requested" as "notified"
      o cleanups, sparse..
      
      I did not move the timer based polling into a separate polling scheme. I
      played with several variants, but it seems we need to sleep/schedule in
      a thread even for irq based consoles, as there are throttleing and buffer
      size constraints.
      
      I also kept hvc_struct defined in hvc_console.h so that hvc_irq.c can access
      the irq_requested element.
      
      Feedback is appreciated. virtio_console is currently the only available console
      for kvm on s390. I plan to push this change as soon as all affected parties
      agree on it. I would love to get test results from System p, Xen etc.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      611e097d
    • C
      virtio_blk: check for hardsector size from host · 066f4d82
      Christian Borntraeger 提交于
      Currently virtio_blk assumes a 512 byte hard sector size. This can cause
      trouble / performance issues if the backing has a different block size
      (like a file on an ext3 file system formatted with 4k block size or a dasd).
      
      Lets add a feature flag that tells the guest to use a different hard sector
      size than 512 byte.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      066f4d82
    • M
      virtio: Use bus_type probe and remove methods · e962fa66
      Mark McLoughlin 提交于
      Hook up to the probe() and remove() methods in bus_type
      rather than device_driver. The latter has been preferred
      since 2.6.16.
      Signed-off-by: NMark McLoughlin <markmc@redhat.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      e962fa66
    • R
      virtio: don't always force a notification when ring is full · 44653eae
      Rusty Russell 提交于
      We force notification when the ring is full, even if the host has
      indicated it doesn't want to know.  This seemed like a good idea at
      the time: if we fill the transmit ring, we should tell the host
      immediately.
      
      Unfortunately this logic also applies to the receiving ring, which is
      refilled constantly.  We should introduce real notification thesholds
      to replace this logic.  Meanwhile, removing the logic altogether breaks
      the heuristics which KVM uses, so we use a hack: only notify if there are
      outgoing parts of the new buffer.
      
      Here are the number of exits with lguest's crappy network implementation:
      Before:
      	network xmit 7859051 recv 236420
      After:
      	network xmit 7858610 recv 118136
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      44653eae
    • R
      virtio: clarify that ABI is usable by any implementations · 674bfc23
      Rusty Russell 提交于
      We want others to implement and use virtio, so it makes sense to BSD
      license the non-__KERNEL__ parts of the headers to make this crystal
      clear.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Acked-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Acked-by: NMark McLoughlin <markmc@redhat.com>
      Acked-by: NRyan Harper <ryanh@us.ibm.com>
      Acked-by: NEric Van Hensbergen <ericvh@gmail.com>
      Acked-by: NAnthony Liguori <aliguori@us.ibm.com>
      674bfc23
    • R
      virtio: Recycle unused recv buffer pages for large skbs in net driver · fb6813f4
      Rusty Russell 提交于
      If we hack the virtio_net driver to always allocate full-sized (64k+)
      skbuffs, the driver slows down (lguest numbers):
      
        Time to receive 1GB (small buffers): 10.85 seconds
        Time to receive 1GB (64k+ buffers): 24.75 seconds
      
      Of course, large buffers use up more space in the ring, so we increase
      that from 128 to 2048:
      
        Time to receive 1GB (64k+ buffers, 2k ring): 16.61 seconds
      
      If we recycle pages rather than using alloc_page/free_page:
      
        Time to receive 1GB (64k+ buffers, 2k ring, recycle pages): 10.81 seconds
      
      This demonstrates that with efficient allocation, we don't need to
      have a separate "small buffer" queue.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      fb6813f4
    • H
      virtio net: Allow receiving SG packets · 97402b96
      Herbert Xu 提交于
      Finally this patch lets virtio_net receive GSO packets in addition
      to sending them.  This can definitely be optimised for the non-GSO
      case.  For comparison the Xen approach stores one page in each skb
      and uses subsequent skb's pages to construct an SG skb instead of
      preallocating the maximum amount of pages per skb.
      
      Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (added feature bits)
      97402b96
    • H
      virtio net: Add ethtool ops for SG/GSO · a9ea3fc6
      Herbert Xu 提交于
      This patch adds some basic ethtool operations to virtio_net so
      I could test SG without GSO (which was really useful because TSO
      turned out to be buggy :)
      
      Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (remove MTU setting)
      a9ea3fc6
    • M
      virtio: fix virtio_net xmit of freed skb bug · 9953ca6c
      Mark McLoughlin 提交于
      On Mon, 2008-05-26 at 17:42 +1000, Rusty Russell wrote:
      > If we fail to transmit a packet, we assume the queue is full and put
      > the skb into last_xmit_skb.  However, if more space frees up before we
      > xmit it, we loop, and the result can be transmitting the same skb twice.
      >
      > Fix is simple: set skb to NULL if we've used it in some way, and check
      > before sending.
      ...
      > diff -r 564237b31993 drivers/net/virtio_net.c
      > --- a/drivers/net/virtio_net.c	Mon May 19 12:22:00 2008 +1000
      > +++ b/drivers/net/virtio_net.c	Mon May 19 12:24:58 2008 +1000
      > @@ -287,21 +287,25 @@ again:
      >  	free_old_xmit_skbs(vi);
      >
      >  	/* If we has a buffer left over from last time, send it now. */
      > -	if (vi->last_xmit_skb) {
      > +	if (unlikely(vi->last_xmit_skb)) {
      >  		if (xmit_skb(vi, vi->last_xmit_skb) != 0) {
      >  			/* Drop this skb: we only queue one. */
      >  			vi->dev->stats.tx_dropped++;
      >  			kfree_skb(skb);
      > +			skb = NULL;
      >  			goto stop_queue;
      >  		}
      >  		vi->last_xmit_skb = NULL;
      
      With this, may drop an skb and then later in the function discover that
      we could have sent it after all. Poor wee skb :)
      
      How about the incremental patch below?
      
      Cheers,
      Mark.
      
      Subject: [PATCH] virtio_net: Delay dropping tx skbs
      
      Currently we drop the skb in start_xmit() if we have a
      queued buffer and fail to transmit it.
      
      However, if we delay dropping it until we've stopped the
      queue and enabled the tx notification callback, then there
      is a chance space might become available for it.
      Signed-off-by: NMark McLoughlin <markmc@redhat.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      9953ca6c
    • A
      fix fs/nfs/nfsroot.c compilation · fb2e405f
      Adrian Bunk 提交于
      This fixes the following compile error caused by commit
      f9247273 ("UFS: add const to parser
      token table"):
      
          CC      fs/nfs/nfsroot.o
        /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/nfs/nfsroot.c:130: error: tokens causes a section type conflict
        make[3]: *** [fs/nfs/nfsroot.o] Error 1
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fb2e405f
    • L
      x86/oprofile/nmi_int: add Nehalem to list of ppro cores · 4b9f12a3
      Linus Torvalds 提交于
      ..otherwise oprofile will fall back on that poor timer interrupt.
      
      Also replace the unreadable chain of if-statements with a "switch()"
      statement instead. It generates better code, and is a lot clearer.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4b9f12a3
    • L
      x86-64: Clean up 'save/restore_i387()' usage · b30f3ae5
      Linus Torvalds 提交于
      Suresh Siddha wants to fix a possible FPU leakage in error conditions,
      but the fact that save/restore_i387() are inlines in a header file makes
      that harder to do than necessary.  So start off with an obvious cleanup.
      
      This just moves the x86-64 version of save/restore_i387() out of the
      header file, and moves it to the only file that it is actually used in:
      arch/x86/kernel/signal_64.c.  So exposing it in a header file was wrong
      to begin with.
      
      [ Side note: I'd like to fix up some of the games we play with the
        32-bit version of these functions too, but that's a separate
        matter.  The 32-bit versions are shared - under different names
        at that! - by both the native x86-32 code and the x86-64 32-bit
        compatibility code ]
      Acked-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b30f3ae5
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 · b5684b83
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (76 commits)
        ide: use proper printk() KERN_* levels in ide-probe.c
        ide: fix for EATA SCSI HBA in ATA emulating mode
        ide: remove stale comments from drivers/ide/Makefile
        ide: enable local IRQs in all handlers for TASKFILE_NO_DATA data phase
        ide-scsi: remove kmalloced struct request
        ht6560b: remove old history
        ht6560b: update email address
        ide-cd: fix oops when using growisofs
        gayle: release resources on ide_host_add() failure
        palm_bk3710: add UltraDMA/100 support
        ide: trivial sparse annotations
        ide: ide-tape.c sparse annotations and unaligned access removal
        ide: drop 'name' parameter from ->init_chipset method
        ide: prefix messages from IDE PCI host drivers by driver name
        it821x: remove DECLARE_ITE_DEV() macro
        it8213: remove DECLARE_ITE_DEV() macro
        ide: include PCI device name in messages from IDE PCI host drivers
        ide: remove <asm/ide.h> for some archs
        ide-generic: remove ide_default_{io_base,irq}() inlines (take 3)
        ide-generic: is no longer needed on ppc32
        ...
      b5684b83
    • L
      Merge branch 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-acpi-2.6 · 1481b910
      Linus Torvalds 提交于
      * 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-acpi-2.6:
        acpi: fix crash in core ACPI code, triggered by CONFIG_ACPI_PCI_SLOT=y
        ACPI: thinkpad-acpi: don't misdetect in get_thinkpad_model_data() on -ENOMEM
        ACPI: thinkpad-acpi: bump up version to 0.21
        ACPI: thinkpad-acpi: add bluetooth and WWAN rfkill support
        ACPI: thinkpad-acpi: WLSW overrides other rfkill switches
        ACPI: thinkpad-acpi: prepare for bluetooth and wwan rfkill support
        ACPI: thinkpad-acpi: consolidate wlsw notification function
        ACPI: thinkpad-acpi: minor refactor on radio switch init
        Revert "ACPI: don't walk tables if ACPI was disabled"
        Revert "dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled."
        Revert "Fix FADT parsing"
        ACPI : Set FAN device to correct state in boot phase
        ACPI: Ignore _BQC object when registering backlight device
        ACPI: stop complaints about interrupt link End Tags and blank IRQ descriptors
      1481b910