]> err.no Git - linux-2.6/log
linux-2.6
17 years agodrivers/char/ip2: separate polling and irq-driven work entry points
Jeff Garzik [Fri, 19 Oct 2007 19:38:40 +0000 (15:38 -0400)]
drivers/char/ip2: separate polling and irq-driven work entry points

Polling currently calls the irq handler, which loops through all the
boards, calling the work function for all polling boards with work.

irq handling loops through all the boards, finding the specific board
that applies to us, and calling the work just for that one board.

The two logics are sufficiently different to warrant different
functions, rather than being slack and calling the same function in two
different ways.

This serves to make the interrupt handler a -lot- more efficient.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years agodrivers/char/ip2: split out irq core logic into separate function
Jeff Garzik [Fri, 19 Oct 2007 19:24:59 +0000 (15:24 -0400)]
drivers/char/ip2: split out irq core logic into separate function

No changes besides code movement and glue.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years ago[NETDRVR] lib82596, netxen: delete pointless tests from irq handler
Jeff Garzik [Fri, 19 Oct 2007 07:14:03 +0000 (03:14 -0400)]
[NETDRVR] lib82596, netxen: delete pointless tests from irq handler

Remove always-false tests in irq handler.

Also a few other minor cleanups.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years agoEliminate pointless casts from void* in a few driver irq handlers.
Jeff Garzik [Fri, 19 Oct 2007 07:10:11 +0000 (03:10 -0400)]
Eliminate pointless casts from void* in a few driver irq handlers.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years ago[PARPORT] Remove unused 'irq' argument from parport irq functions
Jeff Garzik [Fri, 19 Oct 2007 06:54:26 +0000 (02:54 -0400)]
[PARPORT] Remove unused 'irq' argument from parport irq functions

None of the drivers with a struct pardevice's ->irq_func() hook ever
used the 'irq' argument passed to it, so remove it.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years ago[PARPORT] Kill useful 'irq' arg from parport_{generic_irq,ieee1284_interrupt}
Jeff Garzik [Fri, 19 Oct 2007 05:56:02 +0000 (01:56 -0400)]
[PARPORT] Kill useful 'irq' arg from parport_{generic_irq,ieee1284_interrupt}

parport_ieee1284_interrupt() was not using its first arg at all.
Delete.

parport_generic_irq()'s second arg makes its first arg completely
redundant.  Delete, and use port->irq in the one place where we actually
need it.

Also, s/__inline__/inline/ to make the code look nicer.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years ago[PARPORT] Consolidate code copies into a single generic irq handler
Jeff Garzik [Fri, 19 Oct 2007 05:42:14 +0000 (01:42 -0400)]
[PARPORT] Consolidate code copies into a single generic irq handler

Several arches used the exact same code for their parport irq handling.
Make that code generic, in parport_irq_handler().

Also, s/__inline__/inline/ in include/linux/parport.h.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
17 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh...
Linus Torvalds [Tue, 23 Oct 2007 19:04:01 +0000 (12:04 -0700)]
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  9p: v9fs_vfs_rename incorrect clunk order
  9p: fix memleak in fs/9p/v9fs.c
  9p: add virtio transport

17 years ago[PATCH] Fix breakage after SG cleanups
Ralf Baechle [Tue, 23 Oct 2007 18:42:11 +0000 (20:42 +0200)]
[PATCH] Fix breakage after SG cleanups

Commits

  58b053e4ce9d2fc3023645c1b96e537c72aa8d9a ("Update arch/ to use sg helpers")
  45711f1af6eff1a6d010703b4862e0d2b9afd056 ("[SG] Update drivers to use sg helpers")
  fa05f1286be25a8ce915c5dd492aea61126b3f33 ("Update net/ to use sg helpers")

converted many files to use the scatter gather helpers without ensuring
that the necessary headerfile <linux/scatterlist> is included.  This
happened to work for ia64, powerpc, sparc64 and x86 because they
happened to drag in that file via their <asm/dma-mapping.h>.

On most of the others this probably broke.

Instead of increasing the header file spider web I choose to include
<linux/scatterlist.h> directly into the affectes files.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years ago9p: v9fs_vfs_rename incorrect clunk order
Latchesar Ionkov [Tue, 23 Oct 2007 18:48:33 +0000 (13:48 -0500)]
9p: v9fs_vfs_rename incorrect clunk order

In v9fs_vfs_rename function labels don't match the fids that are clunked.
The correct clunk order is clunking newdirfid first and then olddirfid next.

Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
17 years ago9p: fix memleak in fs/9p/v9fs.c
Adrian Bunk [Tue, 23 Oct 2007 18:48:50 +0000 (13:48 -0500)]
9p: fix memleak in fs/9p/v9fs.c

This patch fixes a memory leak introduced by
commit ba17674fe02909fef049fd4b620a2805bdb8c693.

Spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
17 years ago9p: add virtio transport
Eric Van Hensbergen [Tue, 23 Oct 2007 18:47:31 +0000 (13:47 -0500)]
9p: add virtio transport

This adds a transport to 9p for communicating between guests and a host
using a virtio based transport.

Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
17 years agoxtensa: fix sg->page fallout
Emil Medve [Tue, 23 Oct 2007 18:38:41 +0000 (20:38 +0200)]
xtensa: fix sg->page fallout

Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agommc: fix sg->page fallout
Emil Medve [Tue, 23 Oct 2007 18:37:24 +0000 (20:37 +0200)]
mmc: fix sg->page fallout

Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years ago[SG] Add debug check for page alignment
Jens Axboe [Tue, 23 Oct 2007 18:35:58 +0000 (20:35 +0200)]
[SG] Add debug check for page alignment

Suggested by Boaz Harrosh <bharrosh@panasas.com>

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
Linus Torvalds [Tue, 23 Oct 2007 16:56:11 +0000 (09:56 -0700)]
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
  mlx4_core: Increase command timeout for INIT_HCA to 10 seconds
  IPoIB/cm: Use common CQ for CM send completions
  IB/uverbs: Fix checking of userspace object ownership
  IB/mlx4: Sanity check userspace send queue sizes
  IPoIB: Rewrite "if (!likely(...))" as "if (unlikely(!(...)))"
  IB/ehca: Enable large page MRs by default
  IB/ehca: Change meaning of hca_cap_mr_pgsize
  IB/ehca: Fix ehca_encode_hwpage_size() and alloc_fmr()
  IB/ehca: Fix masking error in {,re}reg_phys_mr()
  IB/ehca: Supply QP token for SRQ base QPs
  IPoIB: Use round_jiffies() for ah_reap_task
  RDMA/cma: Fix deadlock destroying listen requests
  RDMA/cma: Add locking around QP accesses
  IB/mthca: Avoid alignment traps when writing doorbells
  mlx4_core: Kill mlx4_write64_raw()

17 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest
Linus Torvalds [Tue, 23 Oct 2007 16:03:07 +0000 (09:03 -0700)]
Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest

* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest: (45 commits)
  Use "struct boot_params" in example launcher
  Loading bzImage directly.
  Revert lguest magic and use hook in head.S
  Update lguest documentation to reflect the new virtual block device name.
  generalize lgread_u32/lgwrite_u32.
  Example launcher handle guests not being ready for input
  Update example launcher for virtio
  Lguest support for Virtio
  Remove old lguest I/O infrrasructure.
  Remove old lguest bus and drivers.
  Virtio helper routines for a descriptor ringbuffer implementation
  Module autoprobing support for virtio drivers.
  Virtio console driver
  Block driver using virtio.
  Net driver using virtio
  Virtio interface
  Boot with virtual == physical to get closer to native Linux.
  Allow guest to specify syscall vector to use.
  Rename "cr3" to "gpgdir" to avoid x86-specific naming.
  Pagetables to use normal kernel types
  ...

17 years agoFix synchronize_irq races with IRQ handler
Herbert Xu [Tue, 23 Oct 2007 03:26:25 +0000 (11:26 +0800)]
Fix synchronize_irq races with IRQ handler

As it is some callers of synchronize_irq rely on memory barriers
to provide synchronisation against the IRQ handlers.  For example,
the tg3 driver does

tp->irq_sync = 1;
smp_mb();
synchronize_irq();

and then in the IRQ handler:

if (!tp->irq_sync)
netif_rx_schedule(dev, &tp->napi);

Unfortunately memory barriers only work well when they come in
pairs.  Because we don't actually have memory barriers on the
IRQ path, the memory barrier before the synchronize_irq() doesn't
actually protect us.

In particular, synchronize_irq() may return followed by the
result of netif_rx_schedule being made visible.

This patch (mostly written by Linus) fixes this by using spin
locks instead of memory barries on the synchronize_irq() path.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
Linus Torvalds [Tue, 23 Oct 2007 15:59:46 +0000 (08:59 -0700)]
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6:
  SELinux: always check SIGCHLD in selinux_task_wait

17 years agoMerge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
Linus Torvalds [Tue, 23 Oct 2007 15:57:35 +0000 (08:57 -0700)]
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
  [POWERPC] Add Vitaly Bordug as PPC8xx maintainer
  [POWERPC] 4xx: Enable EMAC on Bamboo board
  [POWERPC] 4xx: Enable EMAC for PPC405 Walnut board
  [POWERPC] 4xx: Fix timebase clock selection on Walnut
  [POWERPC] 4xx: Enable EMAC on the PPC 440GP Ebony board
  [POWERPC] 4xx: Split early debug output and early boot console for 44x
  [POWERPC] 4xx: Enable NEW EMAC support for Sequoia 440EPx.
  [POWERPC] 4xx: Add RGMII support for Sequoia 440EPx

17 years agoMerge git://git.infradead.org/mtd-2.6
Linus Torvalds [Tue, 23 Oct 2007 15:56:50 +0000 (08:56 -0700)]
Merge git://git.infradead.org/mtd-2.6

* git://git.infradead.org/mtd-2.6:
  [MTD] [NOR] Fix deadlock in Intel chip driver caused by get_chip recursion
  [JFFS2] Fix return value from jffs2_write_end()
  [MTD] [OneNAND] Fix wrong free the static address in onenand_sim
  [MTD] [NAND] Replace -1 with -EBADMSG in nand error correction code
  [RSLIB] BUG() when passing illegal parameters to decode_rs8() or decode_rs16()
  [MTD] [NAND] treat any negative return value from correct() as an error
  [MTD] [NAND] nandsim: bugfix in initialization
  [MTD] Fix typo in Alauda config option help text.
  [MTD] [NAND] add s3c2440-specific read_buf/write_buf
  [MTD] [OneNAND] onenand-sim: fix kernel-doc and typos
  [JFFS2] Tidy up fix for ACL/permissions problem.

17 years agoMerge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/hskinnem...
Linus Torvalds [Tue, 23 Oct 2007 15:55:56 +0000 (08:55 -0700)]
Merge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6

* 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
  [AVR32] ARRAY_SIZE() cleanup
  [AVR32] Implement at32_add_device_cf()
  [AVR32] Implement more at32_add_device_foo() functions
  [AVR32] Fix a couple of sparse warnings
  [AVR32] Wire up AT73C213 sound driver on ATSTK1000 board
  [AVR32] Platform code for pata_at32

17 years agoMerge branch 'sg' of git://git.kernel.dk/linux-2.6-block
Linus Torvalds [Tue, 23 Oct 2007 15:53:41 +0000 (08:53 -0700)]
Merge branch 'sg' of git://git.kernel.dk/linux-2.6-block

* 'sg' of git://git.kernel.dk/linux-2.6-block:
  sparc64: zero out dma_length
  fvr32: fixup dma-mapping for new sg layout
  sh/sh64: fixup dma-mapping for new sg layout
  Fix sctp compile
  m68knommu: remove sg_address()
  frv: update comment in scatterlist to reflect new setup
  blackfin: remove sg_address()
  arm: sg fallout
  mips: sg_page() fallout
  alpha: sg_virt() fallout
  intel-iommu: fix sg_page()
  parisc: fix sg_page() fallout
  ide: build fix
  net: fix xfrm build - missing scatterlist.h include
  [BLOCK] blk_rq_map_sg: force clear termination bit
  [BLOCK] Don't clear sg_dma_len/addr() in blk_rq_map_sg()
  s390 zfcp: sg fixups
  powerpc: Fix fallout from sg_page() changes
  IB/ehca: Fix sg_page() fallout
  arm: build fix

17 years agoMerge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa
Linus Torvalds [Tue, 23 Oct 2007 15:37:23 +0000 (08:37 -0700)]
Merge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa

* 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa:
  [ALSA] version 1.0.15
  [ALSA] hda-codec - Fix possible array overflow
  [ALSA] sound/core/control.c: hard-irq-safe -> hard-irq-unsafe lock warning
  [ALSA] usb-audio: Another USB mic quirk for Logitech Communicator webcam
  [ALSA] hda-codec - Fix build without CONFIG_SND_HDA_GENERIC
  [ALSA] hda-codec - Fix Conexant 5045 volumes
  [ALSA] hda-codec - Fix conflict of Master volume in STAC92xx codec
  [ALSA] snd-bt87x: Make the load_all option work correctly
  [ALSA] protect Dreamcast PCM driver (AICA) from G2 bus effects
  [ALSA] bt87x - Fix section mismatch
  [ALSA] hda-codec - Fix AD1986A Lenovo auto-mute
  [ALSA] This simplifies and fixes waiting loops of the mce_down()

17 years agom68knommu: cleanup m68knommu timer code
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: cleanup m68knommu timer code

Reduce the function pointer mess of the m68knommu timer code by calling
directly to the local hardware's timer setup, and expose the local
common timer interrupt handler to the lower level hardware timer.

Ultimately this will save definitions of all these functions across all
the platform code to setup the function pointers (which for any given
m68knommu CPU family member can be only one set of hardware timer
functions).

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: new style ColdFire UART driver
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: new style ColdFire UART driver

A new style serial driver for the Freescale ColdFire UART to replace
the old style one currently in the tree (drivers/serial/mcfserial.c).

Currently this UART is only found in the ColdFire CPU family of parts
(thus I prefixed this patch [M68KNOMMU]).

This has been around for a long while now, tested on all available
platforms.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: fix make archclean
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: fix make archclean

Remove build reference to arch/m68knommu/boot directory, it doesn't
exist.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: remove use of undefined symbols in setup.c
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: remove use of undefined symbols in setup.c

Remove use of undefined symbols CONFIG_TELOS, CONFIG_M68EZ328ADS
and CONFIG_ALMA_ANS.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: improve mii_do_cmd code in FEC driver
Philippe De Muyter [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: improve mii_do_cmd code in FEC driver

Improve the readability of mii_do_cmd().

Signed-off-by: Philippe De Muyter <phdm@macqel.be>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: fix syscall restart handling
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: fix syscall restart handling

Fix system call restart handling. We can call directly to the
restart handler, no need to back track through trap that isn't
even implemented on m68knommu.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: add make support for Savant/Rosie1 board
Wilson Callan [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: add make support for Savant/Rosie1 board

Add make support for the Savant/Rosie1 board.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: no separate stack region to report at startup
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: no separate stack region to report at startup

There is no separate stack region addresses to print at startup time,
so remove it from the debug listing

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: add config support for Savant/Rosie1 board
Wilson Callan [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: add config support for Savant/Rosie1 board

Add configure support for the Savant/Rosie1 board.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: updated defconfig
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: updated defconfig

Updated defconfig with new options for m68knommu.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: local module/elf definitions
Greg Ungerer [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: local module/elf definitions

Up to now m68knommu has been using the asm-m68k/module.h instead of
defining its own. There are recent changes there that we don't need
(fixups specifically). We don't need much support here so it makes
sense to have an m68knommu specific one now.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: define __clear_user macro
Matt Waddel [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: define __clear_user macro

Define __clear_user macro, consistent with other architectures.
fs/signalfd.c won't compile without it.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: fix syscall tracing
Matt Waddel [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: fix syscall tracing

Fix the system call code for handling syscall tracing, so strace
and gdbserver work properly.

This fix originally developed by Philippe De Muyter and Stuart Hughes.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agom68knommu: improve code formating FEC driver
Philippe De Muyter [Tue, 23 Oct 2007 04:37:54 +0000 (14:37 +1000)]
m68knommu: improve code formating FEC driver

Indent all the `else' the same way.
Remove some unecesary white space.

Signed-off-by: Philippe De Muyter <phdm@macqel.be>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agoChar: cyclades, fix potential NULL dereference
Jiri Slaby [Tue, 23 Oct 2007 03:45:13 +0000 (20:45 -0700)]
Char: cyclades, fix potential NULL dereference

ztxdone is jumped to even if tty is NULL and tty_wakeup placed after
this label doesn't expect NULLed parameter, so this will cause an oops
in some situations (why they scheduled a wakeup there before remove
bottom half processing patch?).

wakeup only in the case when we have non-null tty struct.

Spotted by Adrian Bunk.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agofix mprotect vma_wants_writenotify prot
Hugh Dickins [Tue, 23 Oct 2007 03:45:12 +0000 (20:45 -0700)]
fix mprotect vma_wants_writenotify prot

Fix mprotect bug in recent commit 3ed75eb8f1cd89565966599c4f77d2edb086d5b0
(setup vma->vm_page_prot by vm_get_page_prot()): the vma_wants_writenotify
case was setting the same prot as when not.

Nothing wrong with the use of protection_map[] in mmap_region(),
but use vm_get_page_prot() there too in the same ~VM_SHARED way.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Cc: Coly Li <coyli@suse.de>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agomd: raid5: fix clearing of biofill operations
Dan Williams [Tue, 23 Oct 2007 03:45:11 +0000 (20:45 -0700)]
md: raid5: fix clearing of biofill operations

ops_complete_biofill() runs outside of spin_lock(&sh->lock) and clears the
'pending' and 'ack' bits.  Since the test_and_ack_op() macro only checks
against 'complete' it can get an inconsistent snapshot of pending work.

Move the clearing of these bits to handle_stripe5(), under the lock.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Joel Bertrand <joel.bertrand@systella.fr>
Signed-off-by: Neil Brown <neilb@suse.de>
Cc: Stable <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agomd: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata
NeilBrown [Tue, 23 Oct 2007 03:45:11 +0000 (20:45 -0700)]
md: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata

As page->index is unsigned, this all becomes an unsigned comparison,
which almost always returns an error.

Signed-off-by: Neil Brown <neilb@suse.de>
Cc: Stable <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 years agoMerge branch 'for-2.6.24' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer...
Paul Mackerras [Tue, 23 Oct 2007 12:20:51 +0000 (22:20 +1000)]
Merge branch 'for-2.6.24' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge

17 years ago[MTD] [NOR] Fix deadlock in Intel chip driver caused by get_chip recursion
Alexey Korolev [Mon, 22 Oct 2007 16:55:20 +0000 (17:55 +0100)]
[MTD] [NOR] Fix deadlock in Intel chip driver caused by get_chip recursion

This patch solves kernel deadlock issue seen on JFFF2 simultaneous
operations. Detailed investigation of the issue showed that the kernel
deadlock is caused by tons of recursive get_chip calls.

Signed-off-by: Alexey Korolev <akorolev@infradead.org>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
17 years agosparc64: zero out dma_length
FUJITA Tomonori [Tue, 23 Oct 2007 10:58:39 +0000 (12:58 +0200)]
sparc64: zero out dma_length

zero out dma_length in the entry immediately following the last mapped
entry for unmap_sg.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agofvr32: fixup dma-mapping for new sg layout
Jens Axboe [Tue, 23 Oct 2007 10:54:14 +0000 (12:54 +0200)]
fvr32: fixup dma-mapping for new sg layout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agosh/sh64: fixup dma-mapping for new sg layout
Jens Axboe [Tue, 23 Oct 2007 10:52:48 +0000 (12:52 +0200)]
sh/sh64: fixup dma-mapping for new sg layout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoFix sctp compile
Christian Borntraeger [Tue, 23 Oct 2007 10:46:32 +0000 (12:46 +0200)]
Fix sctp compile

sctp fails to compile with
net/sctp/sm_make_chunk.c: In function 'sctp_pack_cookie':
net/sctp/sm_make_chunk.c:1516: error: implicit declaration of function 'sg_init_table'
net/sctp/sm_make_chunk.c:1517: error: implicit declaration of function 'sg_set_page'

use the proper include file.

SCTP maintainers Vlad Yasevich and Sridhar Samudrala  are CCed.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agom68knommu: remove sg_address()
Jens Axboe [Tue, 23 Oct 2007 10:41:57 +0000 (12:41 +0200)]
m68knommu: remove sg_address()

I would have replaced it with sg_virt(), but it doesn't appear to be
used at all.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agofrv: update comment in scatterlist to reflect new setup
Jens Axboe [Tue, 23 Oct 2007 10:39:41 +0000 (12:39 +0200)]
frv: update comment in scatterlist to reflect new setup

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoblackfin: remove sg_address()
Jens Axboe [Tue, 23 Oct 2007 10:42:44 +0000 (12:42 +0200)]
blackfin: remove sg_address()

I would have replaced it with sg_virt(), but it doesn't appear to be
used at all.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoarm: sg fallout
Jens Axboe [Tue, 23 Oct 2007 10:37:59 +0000 (12:37 +0200)]
arm: sg fallout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agomips: sg_page() fallout
Jens Axboe [Tue, 23 Oct 2007 10:32:34 +0000 (12:32 +0200)]
mips: sg_page() fallout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoalpha: sg_virt() fallout
Jens Axboe [Tue, 23 Oct 2007 10:31:05 +0000 (12:31 +0200)]
alpha: sg_virt() fallout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years ago[AVR32] ARRAY_SIZE() cleanup
Alejandro Martinez Ruiz [Mon, 22 Oct 2007 19:18:24 +0000 (21:18 +0200)]
[AVR32] ARRAY_SIZE() cleanup

Signed-off-by: Alejandro Martinez Ruiz <alex@flawedcode.org>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years ago[AVR32] Implement at32_add_device_cf()
Haavard Skinnemoen [Mon, 22 Oct 2007 16:32:14 +0000 (18:32 +0200)]
[AVR32] Implement at32_add_device_cf()

Implement at32_add_device_cf() which will add a platform_device for
the at32_cf driver (not merged yet). Separate out most of the
at32_add_device_ide() code and use it to implement
at32_add_device_cf() as well.

This changes the API in the following ways:
  * The board code must initialize data->cs to the chipselect ID to
    use before calling any of these functions.
  * The board code must use GPIO_PIN_NONE to indicate unused CF pins.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years ago[AVR32] Implement more at32_add_device_foo() functions
Haavard Skinnemoen [Mon, 22 Oct 2007 15:42:35 +0000 (17:42 +0200)]
[AVR32] Implement more at32_add_device_foo() functions

Implement functions for adding platform devices for TWI, MCI, AC97C
and ABDAC. They may need to be modified to cope with platform data,
etc. when the corresponding drivers are ready to be merged, but such
changes are much less likely to conflict than adding support for a
whole new type of device.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years ago[AVR32] Fix a couple of sparse warnings
Haavard Skinnemoen [Mon, 22 Oct 2007 13:51:04 +0000 (15:51 +0200)]
[AVR32] Fix a couple of sparse warnings

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years ago[AVR32] Wire up AT73C213 sound driver on ATSTK1000 board
Hans-Christian Egtvedt [Mon, 16 Jul 2007 14:13:33 +0000 (16:13 +0200)]
[AVR32] Wire up AT73C213 sound driver on ATSTK1000 board

Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years ago[AVR32] Platform code for pata_at32
Kristoffer Nyborg Gregertsen [Thu, 16 Aug 2007 11:45:00 +0000 (13:45 +0200)]
[AVR32] Platform code for pata_at32

This patch adds platform code for PATA devices on the AP7000.

[hskinnemoen@atmel.com: board code left out for now since stk1000
doesn't support IDE out of the box]
Signed-off-by: Kristoffer Nyborg Gregertsen <kngregertsen@norway.atmel.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agointel-iommu: fix sg_page()
FUJITA Tomonori [Tue, 23 Oct 2007 07:32:25 +0000 (09:32 +0200)]
intel-iommu: fix sg_page()

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoparisc: fix sg_page() fallout
FUJITA Tomonori [Tue, 23 Oct 2007 07:30:28 +0000 (09:30 +0200)]
parisc: fix sg_page() fallout

arch/parisc/kernel/pci-dma.c: In function 'pa11_dma_map_sg':
arch/parisc/kernel/pci-dma.c:487: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c: In function 'pa11_dma_unmap_sg':
arch/parisc/kernel/pci-dma.c:508: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c:508: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c: In function 'pa11_dma_sync_sg_for_cpu':
arch/parisc/kernel/pci-dma.c:535: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c:535: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c: In function 'pa11_dma_sync_sg_for_device':
arch/parisc/kernel/pci-dma.c:545: error: 'struct scatterlist' has no member named 'page'
arch/parisc/kernel/pci-dma.c:545: error: 'struct scatterlist' has no member named 'page'

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoide: build fix
FUJITA Tomonori [Tue, 23 Oct 2007 07:29:58 +0000 (09:29 +0200)]
ide: build fix

git-drivers/ide/ide-probe.c: In function 'hwif_init':
drivers/ide/ide-probe.c:1327: error: implicit declaration of function
'sg_init_table'

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agonet: fix xfrm build - missing scatterlist.h include
Heiko Carstens [Tue, 23 Oct 2007 07:28:34 +0000 (09:28 +0200)]
net: fix xfrm build - missing scatterlist.h include

net/xfrm/xfrm_algo.c: In function 'skb_icv_walk':
net/xfrm/xfrm_algo.c:555: error: implicit declaration of function
'sg_set_page'
make[2]: *** [net/xfrm/xfrm_algo.o] Error 1

Cc: David Miller <davem@davemloft.net>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years ago[BLOCK] blk_rq_map_sg: force clear termination bit
Jens Axboe [Tue, 23 Oct 2007 07:49:25 +0000 (09:49 +0200)]
[BLOCK] blk_rq_map_sg: force clear termination bit

Since blk_rq_map_sg() sets the termination bit at the end of the sg
table, we could see it prematurely on the next mapping unless we
force drivers to do a full sg_init_table() prior to each mapping. So
force clear the termination bit to avoid having to put that clear in
the driver for every mapping.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years ago[BLOCK] Don't clear sg_dma_len/addr() in blk_rq_map_sg()
Jens Axboe [Tue, 23 Oct 2007 07:27:05 +0000 (09:27 +0200)]
[BLOCK] Don't clear sg_dma_len/addr() in blk_rq_map_sg()

It's not a proper lvalue on all archs.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agos390 zfcp: sg fixups
Jens Axboe [Tue, 23 Oct 2007 07:17:53 +0000 (09:17 +0200)]
s390 zfcp: sg fixups

Based on initial patch from Heiko Carstens <heiko.carstens@de.ibm.com>

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agopowerpc: Fix fallout from sg_page() changes
Olof Johansson [Tue, 23 Oct 2007 07:13:14 +0000 (09:13 +0200)]
powerpc: Fix fallout from sg_page() changes

Fix fallout from 18dabf473e15850c0dbc8ff13ac1e2806d542c15:

In file included from include/linux/dma-mapping.h:52,
                 from drivers/base/dma-mapping.c:10:
include/asm/dma-mapping.h: In function 'dma_map_sg':
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:289: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:290: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h: In function 'dma_sync_sg_for_cpu':
include/asm/dma-mapping.h:331: error: 'struct scatterlist' has no member named 'page'

drivers/scsi/ps3rom.c: In function 'fetch_to_dev_buffer':
drivers/scsi/ps3rom.c:150: error: 'struct scatterlist' has no member named 'page'

Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoIB/ehca: Fix sg_page() fallout
Olof Johansson [Tue, 23 Oct 2007 07:12:52 +0000 (09:12 +0200)]
IB/ehca: Fix sg_page() fallout

More fallout from sg_page changes:

drivers/infiniband/hw/ehca/ehca_mrmw.c: In function 'ehca_set_pagebuf_user1':
drivers/infiniband/hw/ehca/ehca_mrmw.c:1779: error: 'struct scatterlist' has no member named 'page'
drivers/infiniband/hw/ehca/ehca_mrmw.c: In function 'ehca_check_kpages_per_ate':
drivers/infiniband/hw/ehca/ehca_mrmw.c:1835: error: 'struct scatterlist' has no member named 'page'
drivers/infiniband/hw/ehca/ehca_mrmw.c: In function 'ehca_set_pagebuf_user2':
drivers/infiniband/hw/ehca/ehca_mrmw.c:1870: error: 'struct scatterlist' has no member named 'page'

Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years agoarm: build fix
FUJITA Tomonori [Tue, 23 Oct 2007 07:11:41 +0000 (09:11 +0200)]
arm: build fix

arch/arm/common/dmabounce.c: In function 'dma_map_sg':
arch/arm/common/dmabounce.c:445: error: implicit declaration of function 'sg_page'

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
17 years ago[ALSA] version 1.0.15
Jaroslav Kysela [Tue, 23 Oct 2007 06:09:20 +0000 (08:09 +0200)]
[ALSA] version 1.0.15

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] hda-codec - Fix possible array overflow
Takashi Iwai [Mon, 22 Oct 2007 15:20:10 +0000 (17:20 +0200)]
[ALSA] hda-codec - Fix possible array overflow

dac_nids arrays in each codec support code may have up to 5 items
when assigned from the auto-configurator.  Some codec codes have
less numbers than the possible max.  This patch defines the constant
and fixes the array definitions.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] sound/core/control.c: hard-irq-safe -> hard-irq-unsafe lock warning
Borislav Petkov [Mon, 22 Oct 2007 15:11:09 +0000 (17:11 +0200)]
[ALSA] sound/core/control.c: hard-irq-safe -> hard-irq-unsafe lock warning

The lock grabbed in snd_ctl_empty_read_queue() is hardirq-unsafe but we hold
an hardirq-safe one already, so make the &ctl->read_lock also hard-irq-safe.

Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] usb-audio: Another USB mic quirk for Logitech Communicator webcam
Dawid Wrobel [Mon, 22 Oct 2007 09:57:17 +0000 (11:57 +0200)]
[ALSA] usb-audio: Another USB mic quirk for Logitech Communicator webcam

The patch adds the USB microphone quirk for Logitech Communicator
(046d:08f5 Logitech, Inc.) webcam.

Signed-off-by: Dawid Wrobel <dawid@klej.net>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] hda-codec - Fix build without CONFIG_SND_HDA_GENERIC
Takashi Iwai [Fri, 19 Oct 2007 06:13:40 +0000 (08:13 +0200)]
[ALSA] hda-codec - Fix build without CONFIG_SND_HDA_GENERIC

Fixed the build error from patch_sigmatel.c when built without
CONFIG_SND_HDA_GENERIC by defining a dummy function to return error.
Also, clean up hda_codec.c by removing unneeded ifdefs (the compiler
will optimize out).

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] hda-codec - Fix Conexant 5045 volumes
Takashi Iwai [Fri, 19 Oct 2007 06:06:21 +0000 (08:06 +0200)]
[ALSA] hda-codec - Fix Conexant 5045 volumes

Fixed the init verbs and added the missing volume controls so that
the driver works again with Conexant 5045 codec chip.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] hda-codec - Fix conflict of Master volume in STAC92xx codec
Takashi Iwai [Thu, 18 Oct 2007 15:33:27 +0000 (17:33 +0200)]
[ALSA] hda-codec - Fix conflict of Master volume in STAC92xx codec

The addition of volume knob as Master volume resulted in conflict with
the existing one by stac92xx_auto_create_hp_ctls().
This patch fixes the conflict, and still keeps the Master control for
codecs without volume knob as much as possible.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] snd-bt87x: Make the load_all option work correctly
Trent Piepho [Thu, 18 Oct 2007 08:48:43 +0000 (10:48 +0200)]
[ALSA] snd-bt87x: Make the load_all option work correctly

If the load_all option was turned on all cards would be treated as unknown,
even those which are in the database.  Of course, if the card is in the
database there is no reason to use the load_all option.  It's there to force
loading when the card isn't in the database.  But there are out of date wikis
that say to do this and some distros might turn this option on by default.
So, we keep the load_all option from turning known cards into unknown cards.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] protect Dreamcast PCM driver (AICA) from G2 bus effects
Adrian McMenamin [Thu, 18 Oct 2007 08:46:59 +0000 (10:46 +0200)]
[ALSA] protect Dreamcast PCM driver (AICA) from G2 bus effects

The G2 bus on the SEGA Dreamcast connects both the maple peripheral
bus and the AICA sound memory. DMA requests on one can cause the other
to timeout on memory operations.
This patch prevents maple interrupts from causing hiccoughs in the
AICA sound (maple bus code will land in 2.6.24).
There are other cleanups for this (AICA) code - but this is in effect
a regression fix rather than a cleanup.

Signed-off-by: Adrian McMenamin <adrian@mcmen.demon.co.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] bt87x - Fix section mismatch
Takashi Iwai [Wed, 17 Oct 2007 08:35:58 +0000 (10:35 +0200)]
[ALSA] bt87x - Fix section mismatch

const and __devinit aren't a good pair, resulting in a section
mismatch error.  Let's remove const as a temporary solution.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] hda-codec - Fix AD1986A Lenovo auto-mute
Takashi Iwai [Wed, 17 Oct 2007 08:09:32 +0000 (10:09 +0200)]
[ALSA] hda-codec - Fix AD1986A Lenovo auto-mute

The jack detection bit on AD1986A Lenovo N100 seems inverse from
the standard definition.  Now fixed the detection properly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years ago[ALSA] This simplifies and fixes waiting loops of the mce_down()
Krzysztof Helt [Tue, 16 Oct 2007 12:54:58 +0000 (14:54 +0200)]
[ALSA] This simplifies and fixes waiting loops of the mce_down()

function after Trent Piepho's patch for AD1848.
It also makes busy_wait() function call not atomic.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
17 years agoUse "struct boot_params" in example launcher
Rusty Russell [Mon, 22 Oct 2007 01:29:57 +0000 (11:29 +1000)]
Use "struct boot_params" in example launcher

Now that the "struct boot_params" is userspace accessible, we don't need
magic numbers.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoLoading bzImage directly.
Rusty Russell [Mon, 22 Oct 2007 01:29:56 +0000 (11:29 +1000)]
Loading bzImage directly.

Now arch/i386/boot/compressed/head.S understands the hardware_platform field,
we can directly execute bzImages.  No more horrific unpacking code.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoRevert lguest magic and use hook in head.S
Rusty Russell [Mon, 22 Oct 2007 01:29:44 +0000 (11:29 +1000)]
Revert lguest magic and use hook in head.S

Version 2.07 of the boot protocol uses 0x23C for the hardware_subarch
field, that for lguest is "1".  This allows us to use the standard
boot entry point rather than the "GenuineLguest" string hack.

The standard entry point also clears the BSS and copies the boot parameters
and commandline for us, saving more code.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoUpdate lguest documentation to reflect the new virtual block device name.
Chris Malley [Mon, 22 Oct 2007 01:27:54 +0000 (11:27 +1000)]
Update lguest documentation to reflect the new virtual block device name.

Signed-off-by: Chris Malley <mail@chrismalley.co.uk>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agogeneralize lgread_u32/lgwrite_u32.
Rusty Russell [Mon, 22 Oct 2007 01:24:24 +0000 (11:24 +1000)]
generalize lgread_u32/lgwrite_u32.

Jes complains that page table code still uses lgread_u32 even though
it now uses general kernel pte types.  The best thing to do is to
generalize lgread_u32 and lgwrite_u32.

This means we lose the efficiency of getuser().  We could potentially
regain it if we used __copy_from_user instead of copy_from_user, but
I'm not certain that our range check is equivalent to access_ok() on
all platforms.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Jes Sorensen <jes@sgi.com>
17 years agoExample launcher handle guests not being ready for input
Rusty Russell [Mon, 22 Oct 2007 01:24:23 +0000 (11:24 +1000)]
Example launcher handle guests not being ready for input

We currently discard console and network input when the guest has no
input buffers.  This patch changes that, so that we simply stop
listening to that fd until the guest refills its input buffers.

This is particularly important because hvc_console without interrupts
does backoff polling and so often lose characters if we discard.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoUpdate example launcher for virtio
Rusty Russell [Mon, 22 Oct 2007 01:24:22 +0000 (11:24 +1000)]
Update example launcher for virtio

Implements virtio-based console, network and block servers.  The block
server uses a thread so it's async, which is an improvement over the
old synchronous implementation (but a little more complex).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoLguest support for Virtio
Rusty Russell [Mon, 22 Oct 2007 01:24:21 +0000 (11:24 +1000)]
Lguest support for Virtio

This makes lguest able to use the virtio devices.

We change the device descriptor page from a simple array to a variable
length "type, config_len, status, config data..." format, and
implement virtio_config_ops to read from that config data.

We use the virtio ring implementation for an efficient Guest <-> Host
virtqueue mechanism, and the new LHCALL_NOTIFY hypercall to kick the
host when it changes.

We also use LHCALL_NOTIFY on kernel addresses for very very early
console output.  We could have another hypercall, but this hack works
quite well.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoRemove old lguest I/O infrrasructure.
Rusty Russell [Mon, 22 Oct 2007 01:24:10 +0000 (11:24 +1000)]
Remove old lguest I/O infrrasructure.

This patch gets rid of the old lguest host I/O infrastructure and
replaces it with a single hypercall "LHCALL_NOTIFY" which takes an
address.

The main change is the removal of io.c: that mainly did inter-guest
I/O, which virtio doesn't yet support.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoRemove old lguest bus and drivers.
Rusty Russell [Mon, 22 Oct 2007 01:20:02 +0000 (11:20 +1000)]
Remove old lguest bus and drivers.

This gets rid of the lguest bus, drivers and DMA mechanism, to make
way for a generic virtio mechanism.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoVirtio helper routines for a descriptor ringbuffer implementation
Rusty Russell [Mon, 22 Oct 2007 01:03:40 +0000 (11:03 +1000)]
Virtio helper routines for a descriptor ringbuffer implementation

These helper routines supply most of the virtqueue_ops for hypervisors
which want to use a ring for virtio.  Unlike the previous lguest
implementation:

1) The rings are variable sized (2^n-1 elements).
2) They have an unfortunate limit of 65535 bytes per sg element.
3) The page numbers are always 64 bit (PAE anyone?)
4) They no longer place used[] on a separate page, just a separate
   cacheline.
5) We do a modulo on a variable.  We could be tricky if we cared.
6) Interrupts and notifies are suppressed using flags within the rings.

Users need only get the ring pages and provide a notify hook (KVM
wants the guest to allocate the rings, lguest does it sanely).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Dor Laor <dor.laor@qumranet.com>
17 years agoModule autoprobing support for virtio drivers.
Rusty Russell [Mon, 22 Oct 2007 01:03:39 +0000 (11:03 +1000)]
Module autoprobing support for virtio drivers.

This adds the logic to convert the virtio ids into module aliases, and
includes a modalias entry in sysfs and the env var to make probing work.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoVirtio console driver
Rusty Russell [Mon, 22 Oct 2007 01:03:39 +0000 (11:03 +1000)]
Virtio console driver

This is an hvc-based virtio console driver.  It's suboptimal becuase
hvc expects to have raw access to interrupts and virtio doesn't assume
that, so it currently polls.

There are two solutions: expose hvc's "kick" interface, or wean off hvc.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoBlock driver using virtio.
Rusty Russell [Mon, 22 Oct 2007 01:03:38 +0000 (11:03 +1000)]
Block driver using virtio.

The block driver uses scatter-gather lists with sg[0] being the
request information (struct virtio_blk_outhdr) with the type, sector
and inbuf id.  The next N sg entries are the bio itself, then the last
sg is the status byte.  Whether the N entries are in or out depends on
whether it's a read or a write.

We accept the normal (SCSI) ioctls: they get handed through to the other
side which can then handle it or reply that it's unsupported.  It's
not clear that this actually works in general, since I don't know
if blk_pc_request() requests have an accurate rq_data_dir().

Although we try to reply -ENOTTY on unsupported commands, ioctl(fd,
CDROMEJECT) returns success to userspace.  This needs a separate
patch.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jens Axboe <jens.axboe@oracle.com>
17 years agoNet driver using virtio
Rusty Russell [Mon, 22 Oct 2007 01:03:37 +0000 (11:03 +1000)]
Net driver using virtio

The network driver uses two virtqueues: one for input packets and one
for output packets.  This has nice locking properties (ie. we don't do
any for recv vs send).

TODO:
1) Big packets.
2) Multi-client devices (maybe separate driver?).
3) Resolve freeing of old xmit skbs (Christian Borntraeger)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: netdev@vger.kernel.org
17 years agoVirtio interface
Rusty Russell [Mon, 22 Oct 2007 01:03:36 +0000 (11:03 +1000)]
Virtio interface

This attempts to implement a "virtual I/O" layer which should allow
common drivers to be efficiently used across most virtual I/O
mechanisms.  It will no-doubt need further enhancement.

The virtio drivers add buffers to virtio queues; as the buffers are consumed
the driver "interrupt" callbacks are invoked.

There is also a generic implementation of config space which drivers can query
to get setup information from the host.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Dor Laor <dor.laor@qumranet.com>
Cc: Arnd Bergmann <arnd@arndb.de>
17 years agoBoot with virtual == physical to get closer to native Linux.
Rusty Russell [Mon, 22 Oct 2007 01:03:36 +0000 (11:03 +1000)]
Boot with virtual == physical to get closer to native Linux.

1) This allows us to get alot closer to booting bzImages.

2) It means we don't have to know page_offset.

3) The Guest needs to modify the boot pagetables to create the
   PAGE_OFFSET mapping before jumping to C code.

4) guest_pa() walks the page tables rather than using page_offset.

5) We don't use page_offset to figure out whether to emulate: it was
   always kinda quesationable, and won't work for instructions done
   before remapping (bzImage unpacking in particular).

6) We still want the kernel address for tlb flushing: have the initial
   hypercall give us that, too.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
17 years agoAllow guest to specify syscall vector to use.
Rusty Russell [Mon, 22 Oct 2007 01:03:35 +0000 (11:03 +1000)]
Allow guest to specify syscall vector to use.

(Based on Ron Minnich's LGUEST_PLAN9_SYSCALL patch).

This patch allows Guests to specify what system call vector they want,
and we try to reserve it.  We only allow one non-Linux system call
vector, to try to avoid DoS on the Host.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>